💡
原文中文,约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,但在其他模式下可能会降低。
➡️