通常,页面大小为4KB,因此页面偏移位数为12位。然后,如果我们使用VIPT缓存,则如何确定标签,如果计算机使用变量页面大小(即变量偏移位点)?
几乎所有L1 CPU缓存物几乎具有物理标记(VIPT)设计是常见的;和标记。-however
,L2和L3(LLC或最后级缓存)缓存通常都是物理索引的
相对于L2和L3缓存而言,L1缓存非常小,并且大小如此。这将允许L1集索引从标准(即4KIB)基本页面的偏移位中检索。
,例如,在我的系统上,L1为每个核心32KIB,具有8种方法(关联),64组,每个缓存线是64个字节的标准大小。如果我们进行数学数,则需要考虑到4KIB基本页面大小,这是完全足够的,log2(64) = 6
位确定了您提到的页面偏移,并且不会受到虚拟页面到物理帧翻译过程的影响。
请参阅本文的图1理论和寻找驱逐集的实践
澄清,
,然后,如果我们使用VIPT缓存,则如何确定标签,如果计算机使用变量页面大小(即变量偏移位点)?
就CPU缓存而言,页面大小在检索标签方面没有影响。首先,MMU并不固有地知道虚拟地址是基本页面还是大型页面的一部分。它是在TLB查找或页面步行之后(在所有TLB级别的错过)之后,页面的类型变得清晰。一旦解决了物理地址,高速缓存的标签比较确定在给定的高速缓存级别中的命中率或错过。有了一个2MIB的巨大页面,页面偏移有
log2(64) = 6
位,这又不足以揭露标签比较所需的所有高阶位。因此,无论页面尺寸如何,页面翻译过程都需要以相同的方式完成(尽管它可能会更快),以获取标签。