翻译:翻译后的文本: 转换后查询缓冲区(TLB)与CPU的L1缓存级别相同吗?因此,我可以将虚拟地址转换与L1缓存访问重叠吗?

4

我正在试图理解有关缓存的整个结构和概念。由于我们使用TLB将虚拟地址快速映射到物理地址,因此如果我们使用虚拟索引、物理标记的L1缓存,是否可以将虚拟地址转换与L1缓存访问重叠?


请参阅我的关于TLB的调查论文第2.1节。它讨论了VIPT / PIPT / VIVT / PIVT设计及其权衡。 VIPT设计通常被使用,因为它允许与L1访问重叠的VA转换。虽然VIVT设计可以减少TLB访问,但它会遇到同义词问题。 - user984260
1个回答

7
是的,这就是 VIPT 缓存的全部意义。
由于虚拟地址和物理地址在低位上匹配(页偏移相同),因此不需要对它们进行翻译。大多数 VIPT 缓存都是基于此构建的(请注意,这限制了可用的集数,但可以增加它们的关联性),因此您甚至可以在找到 TLB 中的翻译之前使用低位在该缓存中进行查找。
这很关键,因为 TLB 查找本身需要时间,而 L1 缓存通常被设计成尽可能提供更高的带宽和低延迟,以避免阻塞常常更快的执行。
如果你错过了 TLB,并遭受更大的延迟(无论是某个 level2 TLB 还是一次页面行走),那么情况就不那么紧急,因为在比较标签之前你实际上不能在缓存查找中做任何事情,但是你在 TLB 命中 + 缓存命中情况下节省的几个周期通常会在许多应用程序中被认为值得优化和对齐流水线。

正如你所暗示的,处理VIPT高速缓存中的别名问题有一些方法,而这些方法在PIPT中并不存在。通过路径预测,可以增加翻译延迟,同时仍然使用物理标记;使用部分虚拟标记可以进一步延迟翻译。当然,还有双重标记的选项,如果处理器而不仅仅是一致性系统使用物理标记,那么这个选项可能在技术上仍然被认为是VIPT。当然,这样有趣的复杂性可能超出了这个问题的范围。 - user2467198

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接