首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TLB包括在内吗?

TLB包括在内吗?
EN

Stack Overflow用户
提问于 2020-04-12 20:11:54
回答 1查看 581关注 0票数 2

TLB层次结构是否包含在现代x86 CPU上(例如Skylake,或者其他湖泊)?

例如,prefetchtn将数据带到级别缓存n + 1以及DTLB中相应的TLB条目。它是否也包含在STLB中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 20:22:34

AFAIK,Intel SnB-家庭二级TLB是一级iTLB和dTLB.的受害者缓存(我找不到这个和IDK的源代码,我原来读它的地方)。所以,用一粒盐,,把这个拿去。我本来以为这是一个众所周知的事实,但这可能是我发明的一个误解!)

我以为这是在英特尔优化手册的某个地方记录下来的,但似乎并不是这样。

如果这是正确的,那么在条目从dTLB中被逐出一段时间后,您就会得到与STLB相同的好处,但是不会在重复条目上浪费空间。

因此,例如,如果您将代码和数据保存在同一个页面中,则在执行代码时可以得到一个iTLB遗漏,然后在STLB中也没有得到一个dTLB缺失,如果该代码从同一个页面加载数据,则执行另一个页面遍历。(这是因为我们没有将只读数据与x86上的代码保持在同一个页面上;它没有代码大小的优势,并且通过在两个TLB中使用相同的页面而浪费了iTLB + dTLB覆盖范围。)

但也许我错了;Travis (@BeeOnRope)建议使用数据预取来降低iTLB丢失成本;他假设页面遍历器填充了STLB和dTLB中的一个条目。(关于核心2(?)然后,TLB-错过软件-预取可以触发步行而不是放弃。)

我认为L2预取对于那些否则会错过DRAM的代码来说是非常有效的。是的,您没有温暖ITLB或L1I,但是您温暖了L2和STLB,所以在第一次执行时需要花费大约十几个周期。

这对于一个 STLB是有效的;它不一定是包含性的,只是不具有排他性或受害者缓存。(例如,L2缓存是9个wrt。L1i缓存和L1d缓存。它们从中提取,但行可以从L2中驱逐,而不必强制从任何L1缓存中驱逐。)

有指向源的链接的详细信息:

核心2是不同的:https://www.realworldtech.com/nehalem/8/说只有一个小小的16条目L1dTLB只用于加载,而L2 DTLB用于存储和L1dTLB-漏载。

Nehalem改变了这一点(64条目DTLB),并将内存层次结构重组为客户机(非服务器)芯片上仍然使用的内容:大型共享包容LLC和256 k私有L2。(当然,仍然是通常的32k L1i/d) 在英特尔核心i7处理器中使用了哪种缓存映射技术?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61177500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档