aud*_*tic 4 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字节的缓存.
但是在这些步骤之后我迷失了.任何帮助,将不胜感激.

页面偏移由在页面内寻址并且不由TLB翻译的位组成.使用16 KiB页面时,页面偏移量将为14位.
使用35位虚拟地址,这将留下21位来索引TLB中的集合并标记该集合中的条目.由于TLB有256个条目,每个集合有8个条目(8路关联),因此有32个集合,需要5个位来索引集合.这为标签留下了16位.
物理页面编号的大小等于物理地址的大小减去页面偏移的大小:32 - 14 = 18位.
说明既不是直接映射也不是完全关联的TLB比示例完全关联TLB更复杂,因此增加了集合索引的维度.这可以通过重叠方式来处理,以便单向(索引维度)完全可见.这是一个4向结构的ASCII艺术版本,每个方式有8个条目:
+----------+----------+
+----------+----------+ |
+----------+----------+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+ |
| | |-+ |-+
+----------+----------+ |-+
| | |-+
+----------+----------+
Run Code Online (Sandbox Code Playgroud)
对于32组,人们可能希望使用省略号(...)来暗示它们中的大多数.类似地,省略号可用于暗示某种方式中的条目(而不是必须绘制数百条条目).
对于高速缓存,假设4字节访问,字节偏移将是2位.块偏移用于索引高速缓存块内的4字节块.使用128字节高速缓存块,索引特定字节需要7位,因此索引4字节块只需要5位.
双向关联64 KiB将在每种方式中具有32 KiB.使用128字节高速缓存块,这意味着每种方式将具有256个块,因此需要8位物理地址 - 超出块和字节偏移 - 来索引特定集(每种方式中的高速缓存块).这是缓存索引.
给定32位物理地址,8位高速缓存索引,5位块偏移和2位字节偏移,标签将为17位(32 - 8 - 5 - 2).