TLB structure in intel

6
我从Patterson & Hennessy的书开始学习基本定义,然后参考英特尔编程参考文档了解有关TLB的更多信息。
通过英特尔文档,我了解了TLB的高级设计,如行大小、关联性和缓存级别。但是我需要详细解释现代CPU中TLB缓存与缓存未命中之间的工作方式及其替换机制。哪些页面从L1 TLB移动到L2 TLB?单个TLB条目可以访问多少页面?TLB中有多少条目?(特别是DTLB)
任何信息或参考资料都将对我有很大帮助。 (如果这不是适当的论坛来提出问题,请建议正确的论坛)
谢谢。

即使它没有回答你提出的所有问题,你可能会喜欢https://lwn.net/Articles/379748/。 - Jeff Hammond
3
一个TLB没有“行”,它有条目。一个条目将一个虚拟页面映射到一个物理页面。 TLB未命中与L1高速缓存未命中是分开的。(即使该行的翻译已从TLB中删除,L1 D高速缓存中仍可能存在热行,并没有明显的原因说明这是不可能的。) - Peter Cordes
2
David Kanter在他的Haswell文章中稍微提到了TLBs,但没有详细说明TLB条目的替换策略。我认为L2 DTLB(8路组相联)是从L1 DTLB中驱逐出来的条目的受害者缓存。在他的SnB文章中,他说L1 DTLB是完全相联的,但现在他说是4路?当L1 DTLB未命中且在L2 DTLB中存在时,条目会从L2 DTLB移动到L1 DTLB。x86标签wiki上的一些链接可能有用,但可能只有David Kanter的Haswell文章有用。 - Peter Cordes
L1 DTLB缓存到底是缓存什么?具体来说,L1 DTLB中的每个条目是否都缓存了缓存内存中的数据行(获取的数据行)或获取数据的整个页面。L2 TLB缓存是什么,它是页面条目吗? - 77H3jjuu
TLB缓存页面表项,这些表项由操作系统定义的页面表提供。 - Peter Cordes
1个回答

6
TLB可以称为翻译缓存,因此其功能与芯片上的缓存几乎相同,例如,排他/包容层次结构、多/单级、私有/共享的权衡与缓存中的相同。关于关联性、页面大小等也是如此。
一个TLB条目仅将一个虚拟页面映射到物理页面,但页面大小可以变化,例如,处理器可以使用2MB或2GB而不是4kB,这被称为超级页或大页。或者处理器可以使用多个页面大小。
由于您要求参考,请参阅我的TLB调查论文,其中回答了所有这些问题并评论了85篇以上的论文。具体而言,该论文的第2节引用了讨论商业处理器中的TLB设计的论文。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接