Caching 缓存线刷新是否访问TLB?

Caching 缓存线刷新是否访问TLB?,caching,assembly,x86,cpu-architecture,tlb,Caching,Assembly,X86,Cpu Architecture,Tlb,假设我们有意重击DTLB,并希望继续使用clflush在与TLB条目的地址(很可能)不相交的内存区域上从L1-3刷新特定缓存线;这实际上会将我们正在刷新的缓存线的页面基址带回TLB吗 简而言之,clflush是否接触到TLB?我假设由于该指令尊重一致性,它随后会将该行写回内存(显然需要TLB查找)。摘自《英特尔64和IA-32体系结构软件开发人员手册》,第2A卷:指令集参考,a-L:“使包含由处理器缓存层次结构(数据和指令)所有级别的源操作数指定的线性地址的缓存线无效。” 因为它使用线性(虚拟)

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


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

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

因为它使用线性(虚拟)地址,所以需要转换地址,这意味着TLB未命中时需要页表遍历。(通常情况下,即使对于将缓存项推出到更高级别缓存的不同类型的指令也是如此,因为一级缓存通常都是针对x86进行物理标记的。一般来说,使用虚拟地址进行标记已不再受欢迎。使用物理地址进行标记意味着需要物理地址来检查缓存命中,因此即使未将其发送到内存,也需要进行翻译。)

虽然可以避免为此类访问加载TLB,但考虑到CLFLUSH并不常用,这种特殊情况处理的额外复杂性几乎肯定不值得这么麻烦