ARM Neoverse N1 (代号 Ares) 的 BTB 结构分析

ARM Neoverse N1 (代号 Ares) 的 BTB 结构分析

💡 原文中文,约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的瓶颈。

🏷️

标签

➡️

继续阅读