【发布时间】:2017-12-11 06:54:11
【问题描述】:
以下是问题:
我们有 64 位虚拟和物理内存系统 48位地址。 L1 TLB 与 64 个条目完全关联。 虚拟内存中的页面大小为 16KB。 L1 缓存为 32KB 和 2-way set associative,L2 缓存为 2MB 和 4-way set associative。堵塞 L1 和 L2 缓存的大小均为 64B。 L1 缓存实际上正在使用 索引物理标记 (VIPT) 方案。
我们需要计算标签、索引和偏移量。这是我目前制定的解决方案:
- 页面偏移 = 日志基数 2(页面大小)=14 位
- 块偏移=日志基数 2(块大小)= 6 位
- 虚拟页码=虚拟地址-pageoffset=64-14=50位
- L1 缓存索引 = 页偏移量 - 块偏移量 = 8 位
- L1 标签=物理地址-L1 索引块偏移= 50 位
- TLB index= log base 2 (64/64)=0 bits {因为它是完全关联的,整个缓存可以被认为是一个集合。}
- TLBtag= 虚拟页码 - 索引=50 位
- L2 缓存索引 = 日志基数 2(缓存大小/(块大小 * 路数))13 位
- L2 标签= 21 位
这是我计算出来的解,如有错误请指正。 在此先感谢:)
【问题讨论】:
-
页偏移量是地址的低14位:16kiB = 2^14字节。
-
你应该留下如何你计算出每个缓存参数的值;这样一来,人们就可以更轻松地了解您是否正确,而无需真正在他们的脑海中完成所有工作。
-
@PeterCordes 刚刚添加了完整的计算。希望这有助于更好地理解它:)
标签: computer-science cpu-architecture virtual-memory cpu-cache