找回密码
 注册
关于网站域名变更的通知
查看: 569|回复: 1
打印 上一主题 下一主题

arm neon 优化技巧

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-4-29 17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

$ m; M2 C) F& c( L) _9 N1. 去除数据依赖 + R7 u5 p9 e2 a5 t9 X
不要将当前指令的目的寄存器作为下一条指令的源寄存器! 1 b' k3 I+ H2 W& w: l  A/ _
原因:ARM架构采用的是多级流水线技术,如果下一条指令的源寄存器是当前指令的目的寄存器,就需要当前指令执行完之后,下一条指令才能取指执行,这样会产生很大的延迟,影响性能。9 L& Q' b( B2 o+ {: s

+ X2 {( b: W0 v2. 减少分支跳转 1 i' @8 t% i+ x; k3 J7 p9 W
ARM处理器中广泛使用分支预测技术。但是一旦分支预测失败,性能就会损失很大。所以,
, N; ~7 U2 g6 @; s1 h! w尽量不要用分支跳转!可以采用逻辑运算指令替代分支跳转! ! `8 e( F* Z6 }0 d  [' f. \/ v, [6 j
比如: + ]5 }8 |- r( j' U7 w
VCEQ, VCGE, VCGT, VCLE, VCLT…… % z  O2 p4 q. X0 q
VBIT, VBIF, VBSL……   d9 c. j$ i0 X
另外,可以使用条件执行指令,比如addgt,suble等减少分支跳转! & C  l! S4 w( P0 g
建议一次性多处理几行数据,从而减少循环跳转的次数,提升性能。
7 ?* W6 ?/ Y2 d2 @& E) }
) R  w% @+ G2 \3 F5 h! [. X3. 建议使用预载指令PLD
9 |( I: u  U2 {3 D6 @PLD允许处理器告知内存系统在不久的将来会从指定地址读取数据,若数据提取加载到cache中,将会提高cache hit,从而提升性能。 * s8 J/ c" m; k& l5 d6 f+ R
风险:不过最新架构对PLD指令的支持并不好,在不确定的情况下使用,可能会损失性能!
: }% L1 j( _: E, o, D0 g( q# {7 a" n6 g. M9 P
  • PLD syntax:
  • PLD{cond} [Rn {, #offset}]
  • PLD{cond} [Rn, +/-Rm {, shift}]
  • PLD{cond} label
  • Where:
  • Cond - is an optional condition code.
  • Rn - is the register on which the memory address is based.
  • Offset - is an immediate offset. If offset is omitted, the address is the value in Rn.
  • Rm - contains an offset value and must not be PC (or SP, in Thumb state).
  • Shift - is an optional shift.
  • Label - is a PC-relative expression.
    7 u% C: p! ~/ Z: w" P& p, }! ~( ~0 v

3 e1 y' U% M: T* A- t9 \
( e" V1 h8 x7 x% f4. 关注指令周期延迟 2 L7 M, {, u0 a% o) x+ ?
VMLA指令可以替代VMUL+VADD,但是由于VMLA的指令延迟比较大,在后面没有并行指令时,可能性能并不如VMUL+VADD。
4 |5 C9 d( d% ~  ]( ?8 k# @7 d2 F- f. |- M
5. NEON assembly and NEON intrinsic PeRFormance Contrast ; C4 p2 Q: }! s
NEON assembly:
. ~$ b) p, Z, `4 FAlways shows the best performance for the specified platform for an experienced developer. 8 C' v: Z- c  K9 z0 D
NEON intrinsic:
4 o3 k8 i8 o! M1 w+ [/ V5 L: bDepends heavily on the toolchain that is used.

该用户从未签到

2#
发表于 2021-4-30 09:48 | 只看该作者
减少分支跳转
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 08:02 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表