Arm 什么是PDE缓存?

Arm 什么是PDE缓存?,arm,computer-architecture,tlb,cpu-cache,mmu,Arm,Computer Architecture,Tlb,Cpu Cache,Mmu,我有以下基于ARM的SoC规范: 一级数据缓存=32 KB,64 B/行,双向,LRU 二级缓存=1 MB,64 B/行,16路 L1数据TLB(用于荷载):32个条目,完全关联 二级数据TLB:512个条目,4路 PDE缓存:16个条目(每1 MB虚拟空间一个条目) 我想知道什么是PDE缓存?我想这和TLB有些相似,但我不确定 回答 PDE(页面目录条目)似乎是一个可以与TLB分开实现的工具 Cortex-A15 MPCore处理器实现专用缓存,作为表格漫游的一部分存储中间级别的翻译表格条

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

  • 一级数据缓存=32 KB,64 B/行,双向,LRU
  • 二级缓存=1 MB,64 B/行,16路
  • L1数据TLB(用于荷载):32个条目,完全关联
  • 二级数据TLB:512个条目,4路
  • PDE缓存:16个条目(每1 MB虚拟空间一个条目)
我想知道什么是PDE缓存?我想这和TLB有些相似,但我不确定

回答
PDE(页面目录条目)似乎是一个可以与TLB分开实现的工具

Cortex-A15 MPCore处理器实现专用缓存,作为表格漫游的一部分存储中间级别的翻译表格条目


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

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

访问TLB(在其任何级别)不需要该数据,但TLB未命中将触发pagewalk,这将从pagemap发出内存读取-如果缓存中包含pagemap数据,这些读取可能会命中缓存,而不必一直访问内存

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

假设是问题中数据的来源,它大概是指Cortex-A15,这并不完全合适,因为它实际上可以缓存数据


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

,这很有趣。ARM没有在Cortex-A15、Cortex-A57文档以及ARMv7和ARMv8编程指南中说明此PDE缓存的存在

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


ARM具有一些与ASID字段(地址空间标识符)和VMID字段(虚拟机标识符)关联的“中间表漫游缓存”,因此PDE缓存和中间表漫游缓存似乎是相关的。在文档中,“中间表漫游缓存”“存储中间级别的翻译表条目。。。因此,这很可能是页面目录条目

,尽管作为一名经过培训的数学家,我确实喜欢想象一个CPU缓存偏微分方程:D