【问题标题】:Page Table and Cache Hit Rates页表和缓存命中率
【发布时间】:2021-03-03 06:36:41
【问题描述】:

我发表了一篇关于页表和多级页表所需的寄存器数量的帖子,并发现每个页表,无论级别如何,都只需要一个寄存器来访问页表的顶部。但是我的第二个问题没有得到回答。

处理器中的缓存(L1-L3)将如何影响对页表的内存引用访问?大多数人会错过或受到打击吗?为什么会发生?有人告诉我,这个主题可能会根据所使用的架构有不同的答案,所以一般的答案可能会很好。

我试图找到这方面的参考资料,但我找不到。可能会说我真的是操作系统的初学者。

我上一个问题的链接: Page Table Registers and Cache

编辑:由于TLB,内存引用对页表的访问可以减少,使其获得更多的命中。这是正确的吗?请帮忙:D

【问题讨论】:

    标签: caching operating-system page-tables


    【解决方案1】:

    基本思想(没有任何类型的缓存)是当您访问内存时 CPU:

    • 找到最高级别的页表(例如,从虚拟地址和控制寄存器中)并从 RAM 中获取最高级别​​的页表条目

    • 查找下一级页表(例如,从虚拟地址和最高级别页表条目)并从 RAM 中获取下一级页表条目;以此类推(对每一级页表重复),直到 CPU 到达最低级页表条目。

    • 找到物理地址(例如,从虚拟地址和最低级别的页表条目中),并从该物理地址获取数据

    这显然很慢。为了加快速度,有多个“类似缓存的东西”:

    a) 缓存本身。例如。 CPU 可以从缓存中获取而不是从 RAM 中获取任何内容(包括当 CPU 获取页表条目时)。请注意,通常有多个级别的缓存(例如 L1 数据缓存、L2 统一缓存……),这可能适用于某些缓存而不适用于其他缓存(例如 CPU 不会从“L1 指令缓存”获取页表条目,但可能将从“L3 统一缓存”中获取它们)。

    b) TLB(翻译后备缓冲区);它主要缓存最低级别的页表条目。这允许跳过几乎所有的工作(如果有“TLB 命中”)。

    c) 更高级别的翻译缓存。现代 CPU 具有额外的缓存来缓存页表层次结构的中间级别(例如,如果有 4 个或更多级别,则可能是第 3 级页表条目,而不是最高或最低级别条目)。这些通过允许跳过一些工作来降低“TLB 未命中”(如果存在“更高级别的翻译命中”)的成本。

    【讨论】:

    • 我明白了。这使得它在概念上更加清晰。所以基本上页表很慢,为了加快速度,我们使用缓存系统。但是,如果我们将普通缓存系统与 Page Table 一起使用,会不会比命中更多?如果是,为什么,如果不是,为什么?我猜它会丢失更多,这就是我们最终需要 TLB 甚至更高级别的翻译缓存的原因,对吧?
    • @Errata:我认为您需要更多地考虑延迟和带宽。对于缓存(和 TLB); “更大更复杂”意味着更慢,这就是为什么有多个级别(例如 L1 缓存、L2 缓存……)。如果您有 5 次缓存访问突发(4 个不同级别的页表加上一次用于最终物理地址),那么您将需要 5 倍的缓存带宽来维持它(使其更复杂,因此更慢)并且不会无法隐藏乱序执行背后的 5 倍延迟(使其变慢)。专用的 TLB 几乎消除了普通缓存的所有负担。
    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多