首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缓存行刷新是否访问TLB?

缓存行刷新是否访问TLB?
EN

Stack Overflow用户
提问于 2014-08-14 18:32:47
回答 1查看 555关注 0票数 3

假设我们有意地击打DTLB,并希望使用内存区域上的clflush (很可能)与TLB条目所指向的地址不相交,继续从L1-3中刷新特定的缓存行;这是否会将我们正在刷新的缓存行的页面基地址带回TLB?

简单地说,clflush是否会触及TLB?我假设,由于这个指令符合一致性,它随后会将该行写回内存(显然需要TLB查找)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-14 19:58:53

来自Intel 64和IA-32架构软件开发人员手册,第2A卷:指令集引用,all:“使包含由处理器缓存层次结构(数据和指令)的所有级别的源操作数指定的线性地址的缓存行无效。”

由于它使用的是线性(虚拟)地址,因此需要对地址进行转换,这意味着在TLB未命中时需要进行页表遍历。(即使是不同类型的指令也是如此,这种指令将缓存条目推到更高的缓存级别,因为L1缓存通常是为x86进行物理标记的。一般来说,用虚拟地址进行标记已经不受欢迎了。对标记使用物理地址意味着需要物理地址来检查缓存是否命中,因此即使没有发送到内存,也需要翻译。)

虽然可以避免为这样的访问加载TLB,但考虑到CLFLUSH并不常用,这种特殊情况处理的额外复杂性几乎肯定不会被视为值得一试。

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

https://stackoverflow.com/questions/25315195

复制
相关文章

相似问题

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