<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM處理器的軟件優(yōu)化設計

          基于ARM處理器的軟件優(yōu)化設計

          作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏


          2.4 選擇字節(jié)

          對于習慣使用高級語言編程的開發(fā)者,大都喜歡用if-then-else語句來控制程序流程.但高級語苦編寫的程序最終都要轉(zhuǎn)換為體現(xiàn)機器指令的匯編程序,往往一條高級語占語句需要轉(zhuǎn)換成很多條匯編指令,除編程方便外,高級語言在執(zhí)行效率和存儲空間上都沒有優(yōu)勢。Thumb-2指令中提供一條類似于if-then-else語句的指令,具體格式如表3所示。

          使用SEL指令能夠?qū)崿F(xiàn)程序的流程控制,而且一條匯編指令實現(xiàn)了4條if-then-else語句的功能,只是每條分支只能為字符型數(shù)據(jù)賦值,相當于c語言中的4個條件運算符語句。

          表3 SEL指令


          2.5寄存器倒轉(zhuǎn)

          一些強調(diào)算法(如FFT)的程序通常要求把源寄存器的hit[n]賦值到目標寄存器的bit[31-n],比特倒轉(zhuǎn)指令RBIT就能夠很好地實現(xiàn)。如果不使用該指令,實現(xiàn)同樣的功能會需要很多條移位指令和邏輯操作指令才能完成,同時還需要一個保存中間變量的寄存器。而使用比特反轉(zhuǎn)指令能明顯降低需要的指令的數(shù)目和節(jié)約寄存器。

          Thumb-2指令中的寄存器倒轉(zhuǎn)語句如表4所示,包含比特倒轉(zhuǎn)、字節(jié)倒轉(zhuǎn)及帶符號倒轉(zhuǎn)。

          表4倒轉(zhuǎn)指令集


          對于一些編碼/解碼或加密/解密程序通常要求對數(shù)據(jù)進行高低字節(jié)互換,字節(jié)倒轉(zhuǎn)指令REV就能夠很好地實現(xiàn)。既降低指令條目數(shù)量,又節(jié)省寄存器空間,提高軟件執(zhí)行效率。

          2.6實現(xiàn)跳轉(zhuǎn)表

          使用跳轉(zhuǎn)表來控制程序的執(zhí)行方向足高級語言的一個常見特性,使用ARM和Thumb指令集都可以很好的實現(xiàn)這個功能。使用ARM指令集一般是為了生成高性能的代碼,編澤器會以代碼密度為代價對性能進行優(yōu)化。而Thumb編譯器則會使用壓縮的數(shù)據(jù)表來盡可能的降低代碼大小。

          Thumb-2指令集引入了兩條跳轉(zhuǎn)表指令TBB和TBH,分別對應字節(jié)分支跳轉(zhuǎn)和半字分支跳轉(zhuǎn)。它綜合了ARM/Thumb的優(yōu)點,在壓縮的數(shù)據(jù)表上可以使用最少的指令來實現(xiàn)跳轉(zhuǎn)表功能,最終可以以最小的代碼和數(shù)據(jù)實現(xiàn)最優(yōu)的性能。

          2.7 改善小額數(shù)值運算速度

          對于普通的控制系統(tǒng)或數(shù)據(jù)采集系統(tǒng),精度往往并不要求很高,12位數(shù)據(jù)已經(jīng)足夠,但ARM指令和Thumb指令都不提供12位立即數(shù)的相關指令(前文已經(jīng)說明,ARM指令中的12位立即數(shù)的有效位數(shù)是8)。ThurIlb-2技術提供2條12位立即數(shù)參與加法和減法運算的指令,指令格式如表5所示,利用這2條指令能夠改善數(shù)據(jù)處理速度。

          表5 12位立即數(shù)的算術運算


          特別是閉環(huán)控制系統(tǒng),需要根據(jù)預設值和反饋值計算偏移量,并根據(jù)偏移量來控制被控對象。預設值通常是一個常量,在系統(tǒng)運行過程中都不會改變。習慣于高級語言編程的開發(fā)者喜歡使用宏定義的方式來設置該常量,但讀取保存在內(nèi)存中的常量會降低數(shù)據(jù)處理速度,如果把常量保存在寄存器當中則浪費一個非常宗貴寄存器。針對預設值不易改變的情況,直接使用12位立即數(shù)來表示該預設常量并直接參與算術運算的方式既可以節(jié)約存儲空間,還能夠改善數(shù)據(jù)處理速度,而且與12位AD轉(zhuǎn)換器做反饋采樣環(huán)節(jié)剛好對應。

          2.8最大限度地使用寄存器

          像ARM這樣的load-store體系結構的處理器上,訪問寄存器中的數(shù)據(jù)要比訪問存儲器中的數(shù)據(jù)效率高很多,為軟件變量分配寄存器要遠比分配存儲空間性能優(yōu)越。

          ARM Cortex處理器共有14個通用寄存器,實際工程應用軟件巾的變量數(shù)大多超出14個,但數(shù)值較小,可以把多個變量存放在一個寄存器當中。還可以讓不同函數(shù)的局部變量對寄存器進行時分復用,以充分發(fā)揮寄存器的優(yōu)勢。

          2.9其他

          Thumb-2技術提供2條過零檢測并跳轉(zhuǎn)的指令CBZ和CBNZ。分別對應檢測到零跳轉(zhuǎn)或檢測到非零跳轉(zhuǎn)。該指令可以被用來替換常用的一個指令序列:與零比較,以及隨后的跳轉(zhuǎn)指令,這樣的指令序列通常被用來檢查指針是否為空。Thumb-2指令集中還增加了訪問協(xié)處理器的指令,這樣Thumb-2代碼就可以直接支持欠量浮點防處理器,以及其他的協(xié)處理器。配合其他訪問系統(tǒng)寄存器的指令。整個應用程序就都可以用Thumb-2指令來實現(xiàn),不必再切換的ARM狀態(tài)才能實現(xiàn)一些特殊的功能。

          3 結束語

          在一個應用程序中,要實現(xiàn)最好的性能.就需要編寫優(yōu)化的匯編程序。只不過是對性能影響最大的關鍵程序才值得優(yōu)化。可以使用性能分析器或者指令周期計數(shù)工具來找這些敏感的關鍵程序段。優(yōu)化程序的基本思想就是盡可能地壓縮代碼尺寸以節(jié)省存儲空間,盡可能提高程序的執(zhí)行效率以獲得更高的性能,并降低功耗。

          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();