首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM Profiler显示SMLAxy在Cortex-A9中消耗2个周期。它与“技术参考手册”相冲突

ARM Profiler显示SMLAxy在Cortex-A9中消耗2个周期。它与“技术参考手册”相冲突
EN

Stack Overflow用户
提问于 2013-11-28 02:19:28
回答 1查看 231关注 0票数 1

我发现SMLAxy在ARM分析器ARM1176 (RVDS4.0)下消耗了一个周期。

ARM1176

http://goo.gl/aS9N0t

但是在Cortex-A9MPx1.下,SMLAxy消耗了两个周期

CortexA9

http://goo.gl/1kNAoA

它与Cortex-A9的技术参考手册相冲突:

SMULxy,SMLAxy,SMULWy,SMLAWy: Cycles=1 & Result latency=3

谢谢你提前帮忙。

EN

回答 1

Stack Overflow用户

发布于 2013-11-28 05:36:01

这是正确的。SMLAxy在ARMv7上消耗两个周期。

但是,重要的是要知道SMULxy只消耗一个周期。

假设您通过展开来提高ILP,那么最好将SMLAxy分离到SMULxy中,并经常添加/订阅,因为SMULxy只能通过ALU指令双发。

例如:

代码语言:javascript
复制
loop
ldmia r0!, {r4,r5}
ldmia r1!, {r6,r7}
subs r3, #4
smlabb r9, r4, r6, r14
smlatt r10, r4, r6, r14
smlabb r11, r5, r7, r14
smlatt r12, r5, r7, r14
stmia r2!, {r9-r12}
bgt loop

明显慢于:

代码语言:javascript
复制
loop
ldmia r0!, {r4,r5}
ldmia r1!, {r6,r7}
subs r3, #4
smulbb r9, r4, r6
smultt r10, r4, r6
smulbb r11, r5, r7
smultt r12, r5, r7
add  r9, r14
add  r10, r14
add  r11, r14
add  r12, r14
stmia r2!, {r9-r12}
bgt loop

在CA9或以上。

然而,在CA8上,由于缺乏无序执行能力,您必须手动优化后者。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20256585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档