AMD Zen 1 的 BTB 结构分析

AMD Zen 1 的 BTB 结构分析

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

AMD Zen 1 的 BTB 结构分为三级:L0 BTB 保存4条前向和4条后向分支,延迟1周期;L1 BTB 有256个条目,延迟2周期;L2 BTB 有4096个条目,延迟5周期。测试表明,分支模式对性能有影响,L2 BTB 在特定条件下表现出不同的容量。

🎯

关键要点

  • AMD Zen 1 的 BTB 结构分为三级:L0、L1 和 L2。
  • L0 BTB 保存4条前向和4条后向分支,延迟1周期。
  • L1 BTB 有256个条目,延迟2周期,可能不支持每个条目保存两条分支。
  • L2 BTB 有4096个条目,延迟5周期,实际容量可能只有2048条分支。
  • BTB entry 可以保存两条分支,前提是它们在同一个64B缓存行中,且第一条是条件分支。
  • 测试表明,分支模式对性能有影响,L2 BTB 在特定条件下表现出不同的容量。
  • 在不同的stride情况下,L1和L2 BTB的容量会发生变化,且可能采用组相连结构。
  • 在mix (uncond + cond)模式下,L2 BTB的容量可以达到4096,但在其他模式下可能会降低。
  • L0 BTB的行为不随stride变化,L1和L2 BTB的容量随着stride变化而变化。

延伸问答

AMD Zen 1 的 BTB 结构分为几个级别?

AMD Zen 1 的 BTB 结构分为三级:L0、L1 和 L2。

L0 BTB 的容量和延迟是多少?

L0 BTB 保存4条前向和4条后向分支,延迟为1周期。

L2 BTB 的实际容量是多少?

L2 BTB 的实际容量可能只有2048条分支,尽管它可以保存4096个条目。

BTB entry 可以保存多少条分支?

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

不同的stride对L1和L2 BTB的容量有什么影响?

L1和L2 BTB的容量会随着stride的变化而变化,可能采用组相连结构。

在mix模式下,L2 BTB的容量表现如何?

在mix (uncond + cond)模式下,L2 BTB的容量可以达到4096,但在其他模式下可能会降低。

🏷️

标签

➡️

继续阅读