ARM assembly instruction set 汇总(一)
??? ARM Core指令現(xiàn)在越來越強大,同時又因此能耗低,現(xiàn)在越來越廣泛地應(yīng)用于移動設(shè)備中。隨著3G時代的到來,各種移動終端設(shè)備中都有多媒體功能,而且是功能越多且性能越優(yōu).很多smartphone上都能播放高清的視頻了。在這就把ARM assembly instruction sets 進行次總結(jié),也好讓自己對相關(guān)的指令更加地靈活應(yīng)用。
??? 目前由指令集來看,主要有以下幾種:ARMv4, ARMv5E, ARMv6 and Neon.
??? 各種ARM CPU core都有其對應(yīng)的指令集,其體的型號可查ARM 公司資料(在公司主頁可以找到很有用的infos),如:ARM7TDMI, ARM720T,ARM920T等用ARMv4 ISA; ARM7EJ-S, AMR926EJ-S, ARM1020E 等用ARMv5E, ARM1036J-S, ARM1136J-S等用ARMv6 ISA, Cortex-A8 等用Neon. 所有的ARM core都有向下兼容性。
本文基于ARMv4,來對ARMv5E, ARMv6 和Neon ISAs增加部分進行匯總,并分析新增指令會帶來什么樣的性能提升。
?? ARMv5E 擴展提供了許多新的指令。
?? (1) CLZ? Rd, Rm??? ---- 零計數(shù)指令用于計算最高符號位與第一個1之間的零的個數(shù)
?? 這個指令在Speech/Audio codec 歸一化運算中很有用,如用ARMv4 ISA實現(xiàn)前向零計數(shù)會有用到好幾第指令來實現(xiàn)。
?? (2) QADD Rd, Rm, Rn?? --- Rd = Sat(Rm + Rn)
??????? QDADD Rd, Rm, Rn? ---- Rd = Sat(Rm + Rn << 1)
??????? QSUB??? Rd, Rm, Rn? ---- Rd = Sat(Rm - Rn)
??????? QDSUB? Rd, Rm, Rn? ---- Rd = Sat(Rm - Rn << 1)
??????? 由于代碼的定點化過程中,對很多運算都有飽和保護,用C或ARMv4 ISA來實現(xiàn)這個功能效率會很低。但用ARMv5只照一條指令就行了。
???(3) 乘累加指令
??????? ARMv5E在音頻算法方面的optimization效果會很好,主要是有新增加了16bits*16bits,32bits*16bits乘累加指令。而音頻很多源數(shù)據(jù)是16bits,同時也有可能一些filter coefs 是32bits,這時ARMv5E指令就能很好的發(fā)揮其威力.
??????? SMLAxy??? Rd, Rm, Rs, Rn??? --- Rd = (Rm.x * Rs.y) + Rn
??????? SMLALxy?? RdHi, RdLo, Rm, Rs --- [RdHi, RdLo] += Rm.x * Rs.y
??????? SMLAWy??? Rd, Rm, Rs, Rn??? ---- Rd = ((Rm*Rs.y) >> 16) + Rn
????????SMULxy???? Rd, Rm, Rs????????? ---- Rd = Rm.x + Rs. y
??????? SMULWy??? Rd, Rm, Rs????????? ---- Rd = ((Rm*Rs.y) >> 16)
???????
?
???????
轉(zhuǎn)載于:https://www.cnblogs.com/huaping-audio/archive/2010/07/31/1789062.html
總結(jié)
以上是生活随笔為你收集整理的ARM assembly instruction set 汇总(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows服务程序的调试
- 下一篇: 学会理财不做穷人