PDE缓存是什么?

5
我有一个基于ARM的SoC的以下规格:
  • L1数据缓存=32 KB,每行64 B,2-WAY,LRU
  • L2缓存=1 MB,每行64 B,16-WAY
  • L1数据TLB(用于加载):32个条目,完全关联
  • L2数据TLB:512个条目,4-WAY
  • PDE缓存:16个条目(每1 MB虚拟空间一个条目)
我想知道PDE缓存是什么?我猜它类似于TLB,但我不确定。 答案
看起来PDE(页目录项)是中间表步骤高速缓存,确实可以与TLB分开实现。

Cortex-A15 MPCore处理器实现了专用缓存,用于存储作为表步骤的中间级别的翻译表条目。

3个回答

5

但是,页面映射本身确实驻留在内存中,因此 - 它的每个部分也可以被缓存,无论是在通用缓存层次结构中还是在专用缓存(例如PDE缓存)中。这是实现特定的,不同的CPU可能会决定如何做到这一点。

命中TLB(在其任何级别上)的访问不需要该数据,但TLB未命中将触发页行走,该页行走将从页面映射中发出内存读取 - 如果包括页面映射数据,则这些读取可能会命中缓存,而不必全部到达内存。

由于页行走是长,串行,关键的访问链(如果您有虚拟化,则更是如此),因此您可以想象优化这些访问的延迟对于性能有多么重要。因此,为任何页面映射级别提供专用缓存,可以帮助它们与正常数据线竞争(这些数据线更经常地抛弃缓存),通常非常有用。


5

PDE(“Page Directory Entry”)是x86架构术语,指的是顶级页表项-在ARM VMSA术语中相当于“第一级描述符”。

假设这里是问题数据的来源,则可能指的是Cortex-A15的“中间表行走缓存”,这并不完全合适,因为它实际上可以缓存任何级别的翻译

*至少在IA-32中-64位模式具有以上级别


3
尽管我是一名受过数学训练的数学家,但我很喜欢想象 CPU 缓存偏微分方程:D。 - Notlikethat

3
很有意思。在Cortex-A15、Cortex-A57文档和ARMv7、ARMv8编程指南中,ARM都没有提到PDE缓存的存在。
通常,PDE代表页目录条目,因此这可能是一个专用缓存,用于存储这些条目,并在进行地址转换时写入TTBR寄存器。
ARM有一些与ASID字段(地址空间标识符)和VMID字段(虚拟机标识符)相关联的“中间表步进缓存”,因此PDE缓存和中间表步进缓存可能是相关的。在文档中,“中间表步进缓存”存储中间级别的翻译表条目...因此这很可能是页目录条目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接