💡
原文中文,约11600字,阅读约需28分钟。
📝
内容提要
ARM Neoverse N1 处理器的 BTB 结构分析显示,Main BTB 容量为6144条,但在不同的步幅下命中率表现不一。步幅为8B时,CPI为2.75,未达到预期;步幅为16B时,CPI为2.5,显示出64KB ICache的瓶颈。整体性能受限于BTB的组相连特性和分支指令分布,导致性能波动。
🎯
关键要点
- ARM Neoverse N1 处理器的 Main BTB 容量为6144条,但在不同步幅下命中率表现不一。
- 步幅为8B时,CPI为2.75,未达到预期;步幅为16B时,CPI为2.5,显示出64KB ICache的瓶颈。
- 整体性能受限于BTB的组相连特性和分支指令分布,导致性能波动。
- Nano BTB 是16-entry,1 cycle latency,不随stride变化。
- Micro BTB 是64-entry,2 cycle latency,也不随stride变化。
- Main BTB 是6K-entry,3 cycle latency,容量随stride变化。
- 在stride=4B时,Main BTB未能如预期工作,导致性能下降。
- 在stride=8B时,只观察到4096的Main BTB容量,而不是6144。
- 在stride=16B时,CPI为2.5,显示出Main BTB的6144容量。
- 在stride=32B及以上时,CPI稳定在2,表明Main BTB的性能受限。
- Main BTB的预测能力在2或3周期内提供,2周期的条件是找到一条VA大于或等于输入VA的分支。
❓
延伸问答
ARM Neoverse N1 的 Main BTB 容量是多少?
Main BTB 的容量为6144条。
在不同步幅下,CPI 的表现如何?
步幅为8B时,CPI为2.75;步幅为16B时,CPI为2.5;步幅为32B及以上时,CPI稳定在2。
为什么在步幅为8B时只观察到4096的 Main BTB 容量?
因为在步幅为8B的情况下,分支指令的排布导致部分 set 出现溢出,无法存储6144条分支。
Nano BTB 和 Micro BTB 的特点是什么?
Nano BTB 是16-entry,1 cycle latency;Micro BTB 是64-entry,2 cycle latency。
ARM Neoverse N1 的 BTB 结构对性能有什么影响?
BTB 的组相连特性和分支指令分布限制了整体性能,导致性能波动。
在步幅为16B时,CPI为何为2.5?
在步幅为16B时,CPI为2.5是因为此时命中Main BTB,但遇到了64KB ICache的瓶颈。
🏷️
标签
➡️