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

arm neon 优化技巧

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
' J( ^5 O9 L' Y' @  [- W
1. 去除数据依赖 . \( K1 N' O) T9 O8 Z
不要将当前指令的目的寄存器作为下一条指令的源寄存器!
2 D' B" R# N6 g, B0 H& H原因:ARM架构采用的是多级流水线技术,如果下一条指令的源寄存器是当前指令的目的寄存器,就需要当前指令执行完之后,下一条指令才能取指执行,这样会产生很大的延迟,影响性能。
' b2 Z# V# }7 h' Z: A, s9 P5 `9 h- F& a8 a2 B! F
2. 减少分支跳转
. E0 C5 j- q+ ZARM处理器中广泛使用分支预测技术。但是一旦分支预测失败,性能就会损失很大。所以, - {9 U1 T+ j+ Q6 n
尽量不要用分支跳转!可以采用逻辑运算指令替代分支跳转! ( U8 A: @( {4 l: ]7 k
比如: ; F, L' D. N3 P: |2 Z
VCEQ, VCGE, VCGT, VCLE, VCLT……
/ s3 M+ {# g+ i2 t; NVBIT, VBIF, VBSL…… ! a6 C( x$ b7 v7 R& [% i" q7 E
另外,可以使用条件执行指令,比如addgt,suble等减少分支跳转! . h0 e' w. W. M9 e5 a7 z, g
建议一次性多处理几行数据,从而减少循环跳转的次数,提升性能。; S0 Y  g8 ^: K) y0 P0 e1 l0 P! k

. X9 {! K1 ]' u0 O3. 建议使用预载指令PLD & y5 @. ^1 d/ a% Z4 L' }" L
PLD允许处理器告知内存系统在不久的将来会从指定地址读取数据,若数据提取加载到cache中,将会提高cache hit,从而提升性能。 7 w  D& d7 f5 v; Z4 C
风险:不过最新架构对PLD指令的支持并不好,在不确定的情况下使用,可能会损失性能!8 y( I0 H6 T7 n) l2 t7 c' [

' k, S7 Q. a: m0 V, x2 U0 ^
  • 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.
    0 I/ h" Q. ?* d4 G( T

9 G) S; S, q# \2 Y  q1 s& ^- n7 _
2 t" M5 O: M; ^3 C6 c4. 关注指令周期延迟
( z$ H$ n; b5 IVMLA指令可以替代VMUL+VADD,但是由于VMLA的指令延迟比较大,在后面没有并行指令时,可能性能并不如VMUL+VADD。
/ R% p- a  I0 K% q  F+ }0 ~& e% @2 V( i4 z
5. NEON assembly and NEON intrinsic PeRFormance Contrast $ |% G; C* i4 F; `
NEON assembly:
' J4 `- F2 E/ b* U: n* j' gAlways shows the best performance for the specified platform for an experienced developer.
0 Q: j+ J: ^: U$ v& |; i' G% E4 ANEON intrinsic:
" Q# o& D* I: {3 a) M7 v7 pDepends heavily on the toolchain that is used.

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 13:42 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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