gpt4 book ai didi

caching - 缓存行刷新是否访问 TLB?

转载 作者:行者123 更新时间:2023-12-01 10:46:46 24 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

关于caching - 缓存行刷新是否访问 TLB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com