使用TLB设计虚拟内存

时间:2013-11-19 17:02:41

标签: caching computer-architecture virtual-memory tlb

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

  

考虑具有以下属性的虚拟内存系统:

     

·35位虚拟地址

     

·16 KB页面

     

·32位物理地址

     

假设这个虚拟内存系统是用一个实现的   八路组关联TLB。 TLB共有256个TLB条目,   每个TLB条目代表一个虚拟到物理页码   翻译。

     

64 KB数据缓存是双向集关联缓存。数据   缓存的块大小为128字节。

     

使用以某种方式绘制的图形显示虚拟到物理的映射   类似于下图(但需要进行所有必要的更改)   对于此问题中指定的TLB和数据缓存。)

     

指定进出的所有字段和信号的宽度(如   以及由TLB和数据缓存完成的比较次数   对于每个内存地址。

我对如何计算某些参数有所了解,但除此之外,我已经迷失了。

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

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

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

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

Figure

1 个答案:

答案 0 :(得分:5)

页面偏移由页面内的地址组成,并且不由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位。

双向关联64 KiB将在每种方式中具有32 KiB。使用128字节高速缓存块,这意味着每种方式将具有256个块,因此需要8位物理地址 - 超出块和字节偏移 - 来索引特定集(每种方式中的高速缓存块)。这是缓存索引。

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

相关问题