Caching 页表是否会放入CPU缓存?
根据我的理解,Caching 页表是否会放入CPU缓存?,caching,cpu-cache,tlb,page-tables,Caching,Cpu Cache,Tlb,Page Tables,根据我的理解,加载/存储操作将访问虚拟内存地址(vaddr)的一些数据,并且该vaddr将被转换为物理地址(paddr),以便由内存层次结构实现。 翻译过程将首先在TLB中查找,如果未找到匹配项,则触发多级(?)页表查找 我的问题是:除了非常有限的TLB条目之外,页表还会放在L1D缓存、L2缓存或LLC中吗?这是特定于实现的,但通常在许多CPU上完成,无论是在普通缓存上还是在专用缓存上。例如,请参见-PTE-页面表的单个转换元素-从该虚拟页面到某个物理页面的特定转换将存储在TLB缓冲区(作为TL
加载
/存储
操作将访问虚拟内存地址
(vaddr)的一些数据,并且该vaddr
将被转换为物理地址
(paddr),以便由内存层次结构实现。
翻译过程将首先在TLB中查找,如果未找到匹配项,则触发多级(?)页表查找
我的问题是:除了非常有限的TLB条目之外,页表还会放在L1D缓存、L2缓存或LLC中吗?这是特定于实现的,但通常在许多CPU上完成,无论是在普通缓存上还是在专用缓存上。例如,请参见-PTE-页面表的单个转换元素-从该虚拟页面到某个物理页面的特定转换将存储在TLB缓冲区(作为TLB条目)中,以便更快地访问(ld/st需要phys addr在缓存或内存中查找数据)。来自页面的数据将部分缓存在数据缓存(LLC/L2/L1D)中,但单个加载/存储操作不会将整个页面加载到缓存中。如果您的程序对页面的所有数据执行线性操作,则页面中的数据可能会被某些硬件预取程序预取到某些缓存中。这是否回答了您的问题?这是特定于实现的,但通常在许多CPU上完成,无论是在普通缓存上还是在专用缓存上。例如,请参见-PTE-页面表的单个转换元素-从该虚拟页面到某个物理页面的特定转换将存储在TLB缓冲区(作为TLB条目)中,以便更快地访问(ld/st需要phys addr在缓存或内存中查找数据)。来自页面的数据将部分缓存在数据缓存(LLC/L2/L1D)中,但单个加载/存储操作不会将整个页面加载到缓存中。如果您的程序对页面的所有数据执行线性操作,则页面中的数据可能会被某些硬件预取程序预取到某些缓存中。这是否回答了您的问题?