You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Neoverse N1中带LSL移位的adds指令流水线归属的疑问

Neoverse N1带移位操作的adds指令流水线疑问验证

我对Neoverse N1架构中带移位操作的adds指令(例如adds x3, x4, x5, lsl #32)的流水线分配存在疑问。根据Neoverse N1软件优化手册描述,该指令应分配到M流水线,但在基于Neoverse N1的Graviton 2平台上的实验结果,与文档描述不符。

M流水线饱和验证实验

首先编写饱和M流水线的测试代码:

.rep 1000
    mul x7, x8, x9
.endr

测得平均时钟周期为3.117,与MADD的文档描述一致。

随后在上述代码中加入目标adds指令:

.rep 1000
    mul x7, x8, x9
    adds x3, x4, x5, lsl #32
.endr

观测到平均时钟周期仍为3.13,说明mul与adds可并行执行,由此推测该adds指令实际使用的是I流水线。

I流水线饱和验证实验

为验证上述推测,进行I流水线饱和实验:

.rep 1000
    add x1, x0, x0; add x1, x0, x0; add x1, x0, x0 // 三条add指令:饱和I流水线
.endr

测得平均时钟周期为1.14;加入目标adds指令后:

.rep 1000
    add x1, x0, x0; add x1, x0, x0; add x1, x0, x0
    adds x2, x3, x4, lsl #32
.endr

平均时钟周期升至1.51,间接验证了该adds指令确实使用I流水线的推测。


内容的提问来源于stack exchange,提问作者aqjune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:22:19