首页 文章

使用TLB设计虚拟内存

提问于
浏览
4

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

考虑具有以下属性的虚拟内存系统:·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 回答

  • 4

    页面偏移由在页面内寻址并且不由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) .

相关问题