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

arm neon 优化技巧

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
& A. Q" z0 H/ x3 S  t. n& F& P' f: g! U
1. 去除数据依赖 ' d. g& c+ M6 @. a7 B+ R* Q9 S
不要将当前指令的目的寄存器作为下一条指令的源寄存器!
; k1 v2 [+ j( r& S) B原因:ARM架构采用的是多级流水线技术,如果下一条指令的源寄存器是当前指令的目的寄存器,就需要当前指令执行完之后,下一条指令才能取指执行,这样会产生很大的延迟,影响性能。& u9 ]7 J( }- n* W  N5 n  w
- t5 _4 {6 p8 t+ [. r% w
2. 减少分支跳转 ) S' p. c& G/ |, \
ARM处理器中广泛使用分支预测技术。但是一旦分支预测失败,性能就会损失很大。所以,
6 R* P. Q. H* S  o, z8 z/ b尽量不要用分支跳转!可以采用逻辑运算指令替代分支跳转! " P. }; v1 s' I% I. s3 b
比如: 0 v+ F% E" P( A" o' Z$ d
VCEQ, VCGE, VCGT, VCLE, VCLT……
0 a7 M* J4 n- s& f4 v) XVBIT, VBIF, VBSL……
: n9 \& F1 a- ~5 I4 }另外,可以使用条件执行指令,比如addgt,suble等减少分支跳转!
8 [, G  ]3 `; c1 p建议一次性多处理几行数据,从而减少循环跳转的次数,提升性能。
# Y( i# i6 s" S/ [0 h2 K3 B! w% a: M' b5 t8 g* l
3. 建议使用预载指令PLD
; `8 n5 G# c. D, T9 J, ePLD允许处理器告知内存系统在不久的将来会从指定地址读取数据,若数据提取加载到cache中,将会提高cache hit,从而提升性能。
2 W7 K- t! K! q" ]6 \, T风险:不过最新架构对PLD指令的支持并不好,在不确定的情况下使用,可能会损失性能!3 u" _7 K0 s/ \
2 b6 n- I# N  w% A
  • 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.8 n- c% g- p, Q3 N1 x5 C
: k% Z4 n0 p5 l2 f4 D  K
4 v( ]# |* }& V4 \4 E
4. 关注指令周期延迟
1 d4 _3 i6 T: P$ F( i9 zVMLA指令可以替代VMUL+VADD,但是由于VMLA的指令延迟比较大,在后面没有并行指令时,可能性能并不如VMUL+VADD。4 V$ e5 ^# V2 G! F4 d. z" r

8 }& ]' ~$ F. x  r+ ~1 Y5. NEON assembly and NEON intrinsic PeRFormance Contrast 5 M# @# I! Z; b; V; L
NEON assembly: 6 E& Y' T. r# u: _: q. V% ]  Q
Always shows the best performance for the specified platform for an experienced developer.
, `4 t7 s8 ]' h0 o0 q8 D2 ~NEON intrinsic:
6 i3 q) D5 |4 J1 hDepends heavily on the toolchain that is used.

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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