【发布时间】:2017-03-10 12:27:55
【问题描述】:
想知道我应该如何处理转换虚拟地址的信息
(0x10002400)
其中包含值 floor(n/2^10) 到物理地址
给出的细节是 32 位地址总线 512 KB 物理内存和 页面大小为 32 KB
【问题讨论】:
标签: caching memory virtual-machine cpu-architecture cpu-cache
想知道我应该如何处理转换虚拟地址的信息
(0x10002400)
其中包含值 floor(n/2^10) 到物理地址
给出的细节是 32 位地址总线 512 KB 物理内存和 页面大小为 32 KB
【问题讨论】:
标签: caching memory virtual-machine cpu-architecture cpu-cache
内存位置的内容不会影响虚拟地址到物理地址的转换。
您的虚拟地址有 8 个十六进制值,这表明这是一个 32 位虚拟地址。 您的物理内存大小为 512KB,这意味着有 2^19 字节(512 * 1024 字节)。 在这种情况下,虚拟到物理映射涉及将 32 位地址映射到 19 位地址。 在您的示例中,页面大小为 32KB,这意味着有 16 个物理页面 (512/32)。我们需要 4 位来索引 16 个物理页面。 从 32 位虚拟地址开始,我们使用最后 4 位来索引物理页面。我们可以使用剩余的 28 位来进行比较。 有一个称为“页表”的结构保存这些信息。 这基本上是虚拟地址的前 28 位 (32-4) 到前 15 位 (19-4) 物理地址的映射。
在给定的示例中,虚拟地址是 0x10002400。 最后 4 位由十六进制 0 表示。因此索引为 0。因此我们从页表中获取第 0 个条目。然后我们检查页表中的虚拟标签是否与我们的虚拟标签 1000240 匹配(注意:最后一个十六进制值被删除)。如果条目中的虚拟标签匹配 1000240,那么我们使用第 0 个条目的物理标签,并通过附加相同的索引来构造我们的物理地址,即 0。
【讨论】: