内容提要
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的分支。
延伸解读
BTB 结构的复杂性
ARM Neoverse N1 的 BTB 结构包含多个层次,主要由 Nano BTB、Micro BTB 和 Main BTB 组成。每个层次的延迟和容量不同,影响整体性能。特别是 Main BTB 的 6144 条容量在不同步幅下表现不一,显示出其设计的复杂性和潜在的性能瓶颈。
性能波动的原因
在不同的步幅下,CPI 的变化反映了 BTB 的命中率和 ICache 的瓶颈。步幅为 8B 和 16B 时,CPI 分别为 2.75 和 2.5,显示出 Main BTB 的性能未能达到预期。这种波动可能源于分支指令的分布和 BTB 的组相连特性,值得开发者关注。
设计优化的潜在影响
Neoverse N1 的 BTB 设计中,可能通过将多个分支信息存储在同一条条目中来优化性能。这种设计虽然可以提高存储效率,但在高负载情况下可能导致命中率下降,影响整体性能。因此,在实际应用中,需谨慎评估其对性能的影响。
延伸问答
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的瓶颈。