5

我有以下基于 ARM 的 SoC 的规格:

  • L1 数据缓存 = 32 KB,64 B/行,2-WAY,LRU
  • L2 缓存 = 1 MB,64 B/行,16 路
  • L1 数据 TLB(用于加载):32 个条目,完全关联
  • L2 数据 TLB:512 个条目,4 路
  • PDE 缓存:16 个条目(每 1 MB 虚拟空间一个条目)

我想知道 PDE 缓存是什么?我想这类似于 TLB,但我不确定。

回答
PDE(Page Directory Entry)似乎是中间表遍历缓存,确实可以与TLB分开实现。

Cortex-A15 MPCore 处理器实现了专用缓存,将中间级别的转换表条目存储为表遍历的一部分。

4

3 回答 3

5

TLB 缓存完整的翻译,它本身并不反映内存的连贯部分(虽然不是连贯的,但如果页面映射发生变化,它可能会导致失去连贯性,因此 SW 必须通过刷新显式地强制执行连贯性)。

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

访问 TLB(在其任何级别)将不需要该数据,但 TLB 未命中将触发页面遍历,这将从页面映射发出内存读取 - 如果这些读取包含页面映射数据,则这些读取可能会在缓存中命中,而不必一路去记忆。

由于 pagewalk 是一个长的、序列化的、关键的访问链(如果您有虚拟化更是如此),您可以想象通过缓存这些访问来优化这些访问的延迟是多么重要。因此,任何页面映射级别的专用缓存可以帮助它们与普通数据线(更频繁地颠簸缓存)竞争,通常对性能非常有用

于 2014-11-15T12:32:32.203 回答
5

PDE(“页面目录条目”)是顶级*页表条目的 x86 体系结构术语 - 相当于 ARM VMSA 术语中的“第一级描述符”。

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

* 至少在 IA-32 中 - 64 位模式的级别高于此

于 2014-11-15T12:35:22.577 回答
2

那很有意思。ARM 并未在 Cortex-A15、Cortex-A57 文档以及 ARMv7 和 ARMv8 编程指南中提及此 PDE 缓存的存在。

PDE 通常代表页面目录条目,因此这可能是一个专用缓存,用于存储这些条目并在进行地址转换时写入 TTBR 寄存器。

ARM 有一些“中间表遍历缓存”,它们与 ASID 字段(地址空间标识符)和 VMID 字段(虚拟机标识符)相关联,因此 PDE 缓存和中间表遍历缓存似乎是相关的。在文档中,“中间表遍历缓存”存储转换表条目的中间级别......所以这很可能是页面目录条目

于 2014-11-15T12:49:50.320 回答