【问题标题】:Calculating Virtual Memory page table and translation lookaside buffer计算虚拟内存页表和转换后备缓冲区
【发布时间】:2013-11-15 16:03:12
【问题描述】:

我正在回答一些与虚拟内存相关的问题,并希望得到一些帮助,以澄清或确认我对这些东西是如何完成的理解。

问题如下:

给定一个具有 32 位字的字节寻址系统、4 GB 的虚拟地址空间、1 GB 的物理地址空间和 4 KB 的页面大小。假设页表项被四舍五入到 4 个字节。

a) 页表的大小(以字节为单位)?

b) 现在假设实现了一个 4 路集合关联转换后备缓冲区,总共有 256 个地址转换。计算其标签和索引字段的大小。

我的回答如下:

答:

页表的大小等于页表中的条目数乘以条目的大小。

页表中的条目数等于内存大小除以页大小:2^32/2^12=2^20。

条目的大小等于字大小减去用于页表中条目数的位:32-20=12。

因此,页表大小为:(2^20) * 12 位 = 12582912 位 = 1572864 字节

但是,我发现this(在“页表大小”标题下)使用基本相同的数字。

页表大小 = ((虚拟地址空间大小)/(页大小)) * (页表项大小) = (4 GB/4 KB) * 4 B = 4 MB

哪个答案是正确的?

接下来,乙:

我不确定如何计算part B。我相信Tag是通过添加块数,加上偏移量,加上索引来计算的。这是一个 4 路集合关联,因此每个集合中有 4 个块。索引是 8 位,因为基本索引大小是 10 位并且减少了 2,也因为它是 4 路组关联。但是,我不知道如何计算偏移量,这是帮助计算标签所必需的。

任何帮助将不胜感激。

【问题讨论】:

    标签: computer-science virtual-memory computer-architecture


    【解决方案1】:

    对于 a 部分,您犯了两个错误。首先,问题特别指出“页表条目四舍五入为4字节”。其次,PTE 包含根据页面对齐的地址确定物理地址所需的位。在所描述的系统中,物理地址只有 30 位 (1 GiB)。由于该系统使用 4KiB 页面,因此 PTE 中物理地址的最低有效 12 位将全为零,因此可以是隐式的。所以只需要 18 位 (30-12) 的物理地址。

    除了需要四舍五入到两个字节数的幂之外,大多数 PTE 还包括附加数据,例如有效位、修改位、访问位以及用户和主管模式的权限位;所以即使有 512 MiB 的物理地址空间和 8 KiB 页面(需要 16 位来指示物理地址),也不能使用 2 字节的 PTE。

    (需要注意的是,没有 32 位处理器会使用平面页表。对于 32 位地址,通常使用分层或线性页表。这些会为完全占用引入一点额外的空间开销,并且可能需要多个内存访问以找到翻译,但在部分占用和密集分配的常见情况下,它们使用的内存要少得多。这尤其重要,因为大多数处理器都是为多地址空间操作系统设计的,其中每个进程都有自己的页表。使用几乎一半可以理解,页表中的物理内存 [400 MiB] 仅支持 100 个进程没有吸引力。)

    对于 b 部分,您是正确的,4 路组关联意味着每个组中有 4 个块,因此根据条目数从索引所需的位数中减去 2 位。但是 log2(256) 是 8 而不是 10,所以只有 6 位用于索引 TLB。

    在数据缓存中,标签大小等于地址位数减去索引位数,再减去偏移位数(在缓存块内)。

    对于 TLB,虚拟地址与页面大小对齐(页面中的最低有效位未翻译)。对于 4 KiB 页面,这意味着 12 个最低有效位被忽略。对于 32 位的虚拟地址,剩下 20 位。

    已经确定了其中 6 位用于索引,所以剩下 14 位。

    对于非集群 TLB,每个标签都与一个翻译相关联。这相当于 1 个字节的数据高速缓存块大小(即 0 个偏移位)。因此,标签(不包括任何地址空间 ID)将为 14 位。

    (在集群 TLB [类似于扇区缓存块] 中,为每个“条目”提供两个或多个翻译——条目变得不太清楚,因为它可以引用翻译条目或标记的组合以及与该标签相关的多个翻译。[我怀疑您理解这些复杂性不是这些问题的一部分。])

    【讨论】:

    • 非常感谢您的评论。我现在完全理解了b部分。我对你对我的错误的解释有点困惑。我是否在计算页表中的条目数?
    • @basil 不,关于所需的 PTE 数量(对于假设的平面页表),您是正确的,但是从问题中所述的假设和数量来看,每个 PTE 的位数都是错误的表示页的物理地址所需的位数。 (我确实提到过平面页表是极不可能的;从这个意义上说,页表的大小是不正确的,但这是问题的假设而不是您的理解的问题。)
    • 我想我明白了。因此,根据您对上述物理地址的解释,您是说条目大小为 18 位?然后这会影响我对页表的计算(我的计算方法是否正确?)。关于舍入页表条目的问题仍然让我感到厌烦,这将如何影响整体大小、条目大小和页表条目的数量?
    • @basil PTE 的物理地址 portion 为 18 位,但 PTE 包含其他数据(如答案中所述)。 PTE 大小向上取整为 2 的幂,以便索引页表很简单(移位与乘法)并且访问与访问大小对齐。即使仅使用 20 位,32 位 PTE 仍将占用 32 位。 (其他位可能会保留以供将来使用,例如,扩展物理地址空间或添加缓存属性,或留给操作系统使用。)显然 2^20*32bits 不是 2^20*18bits。
    • 感谢您的解释。我想这是有道理的。那么页表将是 (2^20)*32 位呢?这种事情(向上舍入页表条目)是否经常发生?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2023-03-31
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多