什么是PDE缓存?

时间:2014-11-15 11:44:44

标签: arm computer-architecture tlb cpu-cache mmu

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

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

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

答案
似乎PDE(页面目录条目)是Intermediate table walk cache,它确实可以与TLB分开实现。

  

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:4)

PDE("页面目录条目")是顶级 * 页表条目的x86架构术语 - 相当于"第一级描述符&# 34;在ARM VMSA术语中。

假设this是问题中数据的来源,它可能是指Cortex-A15的"intermediate table walk cache",它不是完全合适,因为它实际上可以缓存any level of translation

至少在IA-32中

* - 64位模式的级别高于此

答案 2 :(得分:2)

这很有意思。 ARM没有在Cortex-A15,Cortex-A57文档以及ARMv7和ARMv8编程指南中列出此PDE缓存的存在。

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

ARM有一些"中间表行走缓存"与ASID字段(地址空间标识符)和VMID字段(虚拟机标识符)相关联,因此看起来PDE缓存和中间表行走缓存是相关的。在文档中,"中间表行走缓存"存储翻译表条目的中间级别 ...所以这可能是页面目录条目