我有基于ARM的SoC的以下规范:
我想知道什么是PDE缓存?我想这与TLB类似,但我不确定。
答案
似乎PDE(页面目录条目)是Intermediate table walk cache,它确实可以与TLB分开实现。
Cortex-A15 MPCore处理器实现了专用缓存,可以存储中间级别的转换表条目,作为表格遍历的一部分。
答案 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缓存和中间表行走缓存是相关的。在文档中,"中间表行走缓存"存储翻译表条目的中间级别 ...所以这可能是页面目录条目。