在X86-64 System上的大页面支持上的页面偏移

问题描述 投票:0回答:1
X86-64 ISA除默认的4 kb页面大小外,还具有2 MB和1 GB页面的扩展。

通常,页面大小为4KB,因此页面偏移位数为12位。然后,如果我们使用VIPT缓存,则如何确定标签,如果计算机使用变量页面大小(即变量偏移位点)?

几乎所有L1 CPU缓存物几乎具有物理标记(VIPT)设计是常见的;

-however

,L2和L3(LLC或最后级缓存)缓存通常都是物理索引的
和标记。

相对于L2和L3缓存而言,L1缓存非常小,并且大小如此。这将允许L1集索引从标准(即4KIB)基本页面的偏移位中检索。

,例如,在我的系统上,L1为每个核心32KIB,具有8种方法(关联),64组,每个缓存线是64个字节的标准大小。如果我们进行数学数,则需要
operating-system x86-64 virtual-memory paging page-tables
1个回答
0
投票
位才能用于缓存线偏移量,而另一个位则需要索引L1 Cache的集合。考虑到页面的前6位是要解决高速字节内的字节,我们还有另外6位专门用于索引L1 CACHES。

考虑到4KIB基本页面大小,这是完全足够的,log2(64) = 6位确定了您提到的页面偏移,并且不会受到虚拟页面到物理帧翻译过程的影响。 请参阅本文的图1理论和寻找驱逐集的实践

在不同页面尺寸的位布局上进行了很好的可视化。

澄清,


,然后,如果我们使用VIPT缓存,则如何确定标签,如果计算机使用变量页面大小(即变量偏移位点)?

就CPU缓存而言,页面大小在检索标签方面没有影响。首先,MMU并不固有地知道虚拟地址是基本页面还是大型页面的一部分。它是在TLB查找或页面步行之后(在所有TLB级别的错过)之后,页面的类型变得清晰。一旦解决了物理地址,高速缓存的标签比较确定在给定的高速缓存级别中的命中率或错过。有了一个2MIB的巨大页面,页面偏移有
log2(64) = 6
位,这又不足以揭露标签比较所需的所有高阶位。因此,无论页面尺寸如何,页面翻译过程都需要以相同的方式完成(尽管它可能会更快),以获取标签。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.