【发布时间】:2013-12-03 08:38:28
【问题描述】:
我遇到了以下问题,我不确定如何解决:
考虑一个具有以下属性的虚拟内存系统:
· 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 字节的缓存。
但是在这些步骤之后我迷路了。任何帮助将不胜感激。
【问题讨论】:
-
对不起,虚拟地址是 32 位宽还是 35 位?
-
35 位。我知道,这很尴尬
-
对不起,我的错误,我现在注意到我的错字了。固定
-
在 ComputerScience.SE 上交叉发布:cs.stackexchange.com/q/18313/755
-
@D.W.这是我之前在 cs 堆栈交换中提到的旧问题(在按照您的建议进行编辑之前)。现在我对这个话题有了更好的理解,我觉得有必要发布一个新版本。
标签: caching computer-architecture virtual-memory tlb