AMD Zen 2 的 BTB 结构分析

AMD Zen 2 的 BTB 结构分析

💡 原文中文,约5800字,阅读约需14分钟。
📝

内容提要

AMD Zen 2 的 BTB 结构与 Zen 1 相似,但容量有所增加,具有三级 BTB(L0、L1 和 L2),容量分别为 8+8、512 和 7168 条分支。与 ARM Neoverse N1 相比,Zen 2 在 BTB 容量上占优,但延迟更长,且两者均未实现单周期预测两条分支。

🎯

关键要点

  • AMD Zen 2 的 BTB 结构与 Zen 1 相似,但容量有所增加,具有三级 BTB(L0、L1 和 L2)。
  • Zen 2 的 L0 BTB 可以保存 8 条前向分支和 8 条后向分支,预测不会带来流水线气泡。
  • Zen 2 的 L1 BTB 可以保存 512 个 entry,预测会产生单个气泡,意味着延迟是两个周期。
  • Zen 2 的 L2 BTB 可以保存 7168 个 entry,预测会产生四个气泡,意味着延迟是五个周期。
  • Zen 2 的 BTB entry 有压缩能力,一个 entry 最多保存两条分支,但未实现单周期预测两条分支。
  • 在不同的分支模式下,Zen 2 的 L1 BTB 显示出不同的容量表现,原因尚不明确。
  • Zen 2 的 L2 BTB 依然具有压缩特性,只有在特定模式下才能充分利用其容量。
  • 与 Zen 1 相比,Zen 2 在 BTB 容量上有所扩展,但机制上保持一致。
  • AMD Zen 2 在 BTB 容量上优于 ARM Neoverse N1,但延迟更长。
  • 两者均未实现单周期预测两条分支,需等待后续的处理器版本。

延伸问答

AMD Zen 2 的 BTB 结构有什么特点?

AMD Zen 2 的 BTB 结构具有三级,分别是 L0、L1 和 L2,容量分别为 8+8、512 和 7168 条分支,且与 Zen 1 相似,但容量有所增加。

Zen 2 的 L0 BTB 和 L1 BTB 的延迟分别是多少?

Zen 2 的 L0 BTB 延迟为 1 个周期,L1 BTB 延迟为 2 个周期。

Zen 2 的 L2 BTB 有什么压缩特性?

Zen 2 的 L2 BTB 具有压缩特性,最多可以保存两条分支,但仅在特定模式下才能充分利用其容量。

AMD Zen 2 和 ARM Neoverse N1 的 BTB 有什么比较?

AMD Zen 2 在 BTB 容量上优于 ARM Neoverse N1,但延迟更长,两者均未实现单周期预测两条分支。

Zen 2 的 L1 BTB 在不同分支模式下表现如何?

Zen 2 的 L1 BTB 在不同分支模式下显示出不同的容量表现,具体原因尚不明确。

Zen 2 的 BTB entry 有什么压缩能力?

Zen 2 的 BTB entry 可以保存最多两条分支,前提是两条分支在同一个 64B 缓存行中,并且第一条是条件分支。

➡️

继续阅读