💡
原文中文,约6200字,阅读约需15分钟。
📝
内容提要
AMD Zen 3 的 BTB 结构经过优化,采用两级设计,降低了延迟。L1 BTB 容量为 1024,延迟为 1 周期;L2 BTB 容量为 6656,延迟为 4 周期。通过利用之前的 fetch block,提升了性能和容量。
🎯
关键要点
- AMD Zen 3 的 BTB 结构经过优化,采用两级设计,降低了延迟。
- L1 BTB 容量为 1024,延迟为 1 周期;L2 BTB 容量为 6656,延迟为 4 周期。
- BTB 通过使用之前的 fetch block 地址来查询,减少了访问延迟。
- Zen 3 的 BTB entry 具有压缩能力,一个 entry 最多保存两条分支。
- L1 BTB 对条件和无条件直接分支的预测不产生气泡,延迟为一个周期。
- L2 BTB 的预测会产生三个气泡,延迟为四个周期。
- Zen 3 相比 Zen 1 和 Zen 2 去掉了 L0 BTB,扩大了 L1 BTB,缩短了延迟。
- 在不同的分支模式下,L1 BTB 和 L2 BTB 的性能表现有所不同。
- Zen 3 的 BTB 在 stride=4B 的情况下表现一般,主要依赖 L2 BTB。
- L2 BTB 的实际容量可能为 5120,剩余的 1536 个分支来自于压缩。
- Zen 3 在微架构上做了较多改动,减少了 L1 和 L2 BTB 的延迟。
- AMD Zen 3 和 ARM Neoverse V1 的 BTB 进行对比,Zen 3 在 L1 BTB 容量上有优势,但在 L2 BTB 上不及 Neoverse V1。
- ARM Neoverse V1 实现了一个周期预测两条分支,AMD 在 Zen 4 中也实现了类似功能。
❓
延伸问答
AMD Zen 3 的 BTB 结构有什么优化?
AMD Zen 3 的 BTB 结构经过优化,采用两级设计,降低了延迟。
Zen 3 的 L1 和 L2 BTB 的容量和延迟分别是多少?
L1 BTB 容量为 1024,延迟为 1 周期;L2 BTB 容量为 6656,延迟为 4 周期。
Zen 3 的 BTB entry 有什么特点?
Zen 3 的 BTB entry 具有压缩能力,一个 entry 最多保存两条分支。
Zen 3 的 BTB 在不同分支模式下表现如何?
在不同的分支模式下,L1 BTB 和 L2 BTB 的性能表现有所不同,主要依赖 L2 BTB。
AMD Zen 3 和 Zen 2 的 BTB 有什么主要区别?
Zen 3 去掉了 L0 BTB,扩大了 L1 BTB,缩短了延迟,而 L2 BTB 的容量有所调整。
AMD Zen 3 的 BTB 与 ARM Neoverse V1 的 BTB 有何不同?
Zen 3 在 L1 BTB 容量上有优势,但在 L2 BTB 上不及 Neoverse V1,后者的延迟和容量更优。
➡️