在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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


            2.4 選擇字節(jié)

            對于習(xí)慣使用高級語言編程的開發(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ù)賦值,相當(dāng)于c語言中的4個條件運算符語句。

            表3 SEL指令


            2.5寄存器倒轉(zhuǎn)

            一些強調(diào)算法(如FFT)的程序通常要求把源寄存器的hit[n]賦值到目標(biāo)寄存器的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,分別對應(yīng)字節(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ù)的相關(guān)指令(前文已經(jīng)說明,ARM指令中的12位立即數(shù)的有效位數(shù)是8)。ThurIlb-2技術(shù)提供2條12位立即數(shù)參與加法和減法運算的指令,指令格式如表5所示,利用這2條指令能夠改善數(shù)據(jù)處理速度。

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


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

            2.8最大限度地使用寄存器

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

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

            2.9其他

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

            3 結(jié)束語

            在一個應(yīng)用程序中,要實現(xiàn)最好的性能.就需要編寫優(yōu)化的匯編程序。只不過是對性能影響最大的關(guān)鍵程序才值得優(yōu)化??梢允褂眯阅芊治銎骰蛘咧噶钪芷谟嫈?shù)工具來找這些敏感的關(guān)鍵程序段。優(yōu)化程序的基本思想就是盡可能地壓縮代碼尺寸以節(jié)省存儲空間,盡可能提高程序的執(zhí)行效率以獲得更高的性能,并降低功耗。

            上一頁 1 2 下一頁

            關(guān)鍵詞: ARM處理器軟件優(yōu)

            評論


            技術(shù)專區(qū)

            關(guān)閉