AMD Zen 3 的 BTB 结构分析

AMD Zen 3 的 BTB 结构分析

💡 原文中文,约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,后者的延迟和容量更优。

🏷️

标签

➡️

继续阅读