繁体   English   中英

缓存行是否刷新访问TLB?

[英]Does a cache line flush access the TLB?

假设我们故意破坏了DTLB,并且希望继续使用clflushclflush刷新特定的高速缓存行,该内存区域(很可能)与TLB条目指向的地址不相交; 这实际上会把我们正在刷新的缓存行的页面基地址带回TLB吗?

简而言之, clflush是否clflush接触TLB? 我假设由于这条指令尊重一致性,它随后将该行写回内存(显然需要TLB查找。)

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

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

虽然有可能避免加载TLB这样的访问,这样的特殊情况下处理额外的复杂性几乎肯定不会被视为值得费心考虑到CLFLUSH不常用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM