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 中也实现了类似功能。

🔎

延伸解读

BTB 结构的演变

AMD Zen 3 的 BTB 结构相较于前代产品进行了显著优化,采用了两级设计,去掉了 L0 BTB。这种设计不仅提升了 L1 BTB 的容量,还将延迟降低到一个周期,增强了处理器在高负载下的性能表现。

性能与延迟的权衡

Zen 3 的 L2 BTB 虽然容量较大,但在预测不准确时会产生三个气泡,导致延迟增加到四个周期。这意味着在设计时需要权衡容量与延迟,尤其是在高密度分支的场景下,可能会影响整体性能。

与竞争对手的比较

在与 ARM Neoverse V1 的比较中,Zen 3 在 L1 BTB 的容量上占优,但在 L2 BTB 的延迟和容量方面则不及对手。这显示出 AMD 在微架构设计上的进步,但也提醒我们关注竞争对手的技术进步。

延伸问答

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

🏷️

标签

➡️

继续阅读