内容提要
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,但延迟更长。
-
两者均未实现单周期预测两条分支,需等待后续的处理器版本。
延伸解读
BTB 结构的演进
AMD Zen 2 的 BTB 结构在容量上有所提升,但机制与 Zen 1 保持一致。这种设计使得 Zen 2 在处理分支预测时,能够更有效地利用缓存行内的分支信息,尽管未实现单周期预测两条分支。了解这一点有助于评估其在实际应用中的性能表现。
与 ARM Neoverse N1 的比较
虽然 Zen 2 在 BTB 容量上优于 ARM Neoverse N1,但其延迟更长。这意味着在高负载情况下,Zen 2 可能面临更大的性能瓶颈。用户在选择处理器时,应考虑到这一延迟差异对特定应用场景的影响。
分支预测的局限性
Zen 2 和 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 缓存行中,并且第一条是条件分支。