gpt4 book ai didi

caching - 使用 TLB 设计虚拟内存

转载 作者:行者123 更新时间:2023-12-05 01:06:24 26 4
gpt4 key购买 nike

我遇到了以下问题,我不确定如何解决它:

Consider a virtual memory system with the following properties:

· 35-bit virtual address

· 16 KB pages

· 32-bit physical address

Assume that this virtual memory system is implemented with an eight-way set associative TLB. The TLB has total of 256 TLB entries, with each TLB entry representing one virtual-to-physical page number translation.

A 64 KB data cache is a two-way set associative cache. The data cache’s block size is 128 Bytes.

Show the virtual to physical mapping with a figure drawn in a way similar to the figure below (but with all necessary changes required for the TLB and the data cache specified in this question).

Specify the width of all fields and signals coming in and out of (as well as the number of comparisons done by) the TLB and the data cache for each memory address.



我对如何计算一些参数有点想法,但除此之外,我迷路了。

例如,由于虚拟地址是 35 位宽,我知道我有 2^35 个可能的虚拟地址。

由于我有 16KB 页面(16*1KB = 2^4 * 2^10 = 2^14KB),我知道我必须有 (3^35)/(2^14) = 2^21 个页表条目。

最后,我知道我的缓存大小是 64 * 1KB = 2^16 字节的缓存。

但是在这些步骤之后我迷路了。任何帮助,将不胜感激。

Figure

最佳答案

页偏移量由页内寻址的位组成,不由 TLB 转换。对于 16 KiB 页,页偏移量为 14 位。

对于 35 位虚拟地址,这将留下 21 位来索引 TLB 中的一个集合并标记该集合中的条目。由于 TLB 有 256 个条目,每个集合有 8 个条目(8 路关联),因此有 32 个集合,需要 5 位来索引一个集合。这为标签留下了 16 位。

物理页号的大小等于物理地址的大小减去页偏移量的大小:32 - 14 = 18 位。

说明既不是直接映射也不是完全关联的 TLB 比示例完全关联的 TLB 更复杂,因为这样增加了集合索引的维度。这可以通过叠加方式来处理,以便一种方式(索引维度)完全可见。这是 4 路结构的 ASCII 艺术版本,每路 8 个条目:

               +----------+----------+
+----------+----------+ |
+----------+----------+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+
| | |-+
+----------+----------+

对于 32 个集合,可能希望使用省略号 (...) 来表示其中的大部分。类似地,省略号可用于暗示某种方式中的条目(而不是必须绘制数百个条目)。

对于缓存,假设访问 4 字节,字节偏移量将是 2 位。块偏移用于索引缓存块内的 4 字节块。对于 128 字节的缓存块,索引一个特定的字节需要 7 位,所以索引一个 4 字节的块只需要 5 位。

2 路关联 64 KiB 将在每路 32 KiB。对于 128 字节的缓存块,这意味着每条路将有 256 个块,因此需要 8 位物理地址——超出块和字节偏移量——来索引特定的集合(每条路中的缓存块)。这是缓存索引。

给定 32 位物理地址、8 位缓存索引、5 位块偏移和 2 位字节偏移,标签将为 17 位(32 - 8 - 5 - 2)。

关于caching - 使用 TLB 设计虚拟内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20077549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com