国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于ARM處理器的軟件優化設計

發布時間:2010-4-12 21:49    發布者:我芯依舊
關鍵詞: arm , 處理器 , 軟件 , 設計
引言

隨著嵌入式系統在工業控制、汽車系統、家庭網絡、醫療衛生、無線技術等領域內的大量應用,嵌入式系統開發者必須面對務種復雜的挑戰,其中就包括如何在代碼性能和系統成本之間進行平衡。在這方面,ARM處理器可以提供給開發者業界領先的技術方案ARM Cortex系列提供了一個標準的體系結構來滿足各種技術的不同性能要求,是專門針對功耗和成本敏感的嵌入式應用領域實現高性能而設計的,它大大簡化了編程的復雜性,其成熟的技術使ARM架構成為各種應用的上佳選擇。

ARM Cortex處理器的統一技術是Thumb-2技術,它以現有的ARM技術為基礎,綜合了ARM指令和Thumb指令的優勢,對優化嵌人式軟件設計具有獨到的優勢,提供了最佳的代碼密度,能更合理地使用存儲器,對于靠近處理器內核的高速存儲器至關重要,即使只節省小部分內存,也將大大提高系統的性能,大幅降低功耗。

1 Thumb-2 指令簡介

并非所有的運算都能夠映射到Thumb指令集,有時需要多條Thumb指令來模擬一條32位指令的任務。而且Thumb指令不能訪問協處理器,不能使用異常中斷指令,不支持媒體功能,當應用中有這些需求而且對存儲器窄問要求較高時,必須混合使用ARM指令和Thumb指令,處理器內核根據需要切換到Thumb狀態以獲取高代碼密度或切換到ARM狀態以獲取出色的性能。在開發階段,為r充分利用存儲器,需要反復調整哪些代碼使用ARM指令、哪些代碼使用Thumb指令。往往只有等到軟件和硬件完成后,才能最終決定ARM/Thumb指令的使用方式,這些因素會使開發流程變得非常復雜。

Thumb-2技術足對ARM架構的非常重要的擴展,它可以改善Thumb指令集的性能。Thumb-2指令集在現有的Thumb指令的基礎上做了如下的擴充:

· 增加了一些新的16位Thumb指令來改進程序的執行流程

· 增加了一些新的32位Thumb指令以實現一些ARM指令的專有功能。

· 擴充原有的ARM指令,增加了一些新的指令來改善代碼性能和數據處理的效率。

使用Thumb-2指令就不需要在ARM/Thumb狀態之間反復切換了,代碼密度和性能得到的顯著的提高。

2 使用Thumb-2指令優化設計

對于已經有ARM處理器開發經驗的嵌入式開發工程師析言,使用Thumb-2技術是非常簡單的,因為Thumb-2技術是在ARM和Thumb基礎上經過創新后發展起來的,它繼承了原有的基本編程方法,同時具備ARM/Thumb不可比擬的優越性。開發人員在設計嵌入式軟件時,只需要重點關注對整體性能影響最大的那部分代碼設計,就能夠平衡好性能、代碼密度和功耗之間的關系。

2.1 減小漢名(Hamming)距離

表1漢名距離變化對比


如表1所示,兩組代碼都是用于計算表達式(x1+x2)x(x3-x4)的值,分別使用3條指令束實現。每條指令先成的功能、字書數、寄存器的使用數目、操作碼都完全一樣,不同之處就是各寄存器操作數的二進制編碼不同。

Rd代表目標寄存器,Rn和Rm代表源操作數寄存器。執行原代碼時,Rd的比特位變化4次,Rn和Rm分別變化3次和5次,操作數總的比特位變化12次。執行優化后的代碼時,操作數總的比特位變化為6次,僅為原代碼的一半,能有效地降低指令執行時的功耗。

2.2擅用16位常數指令

Thumb-2指令集中增加了2條關于16位常數的新指令。MOVW可以把一個16位常數加載到寄存器中,并用0填充寄存器的高16位;另一條指令MOVT可以把一個16位常數加載到寄存器的高16位中。這兩條指令組合使用就可以把一個32位常數加載到寄存器中。

操作32位立即數或是訪問外設,都需要把32位常數加載到寄存器中。對于原來的ARM/Thumb指令系統,因指令編碼位數限制.最多只能使用12位常數,且其有效位數只有8位,另外4位用于移位。對任意一個32位的立即數或者一個地址值讀取到寄存器需要使用到LDR偽指令,編澤器把該32位數據放在數據緩沖區中,同時用基于PC的LDR指令讀取該數據,程序執行時,會在處理器中引起額外的開銷,這些開銷來自于需要額外的時鐘周期使數據端口能夠對指令流進行訪問。

用兩條指令把32位常數分成兩個16位常數分兩次加載到寄存器中,意味著數據直接在指令流內部,不再需要通過數據端口來訪問。相對于LDR偽指令方式,這種解決辦法可以消除通過數據端口訪問指令流的額外開銷,進而提高性能,降低功耗。

2.3靈活應用位操作指令

嵌入式軟件開發者經常會碰到位操作方面的問題,如需要對某個變量中的某幾位賦值或復位。提取寄存器的部分數據位信息,寄存器中插入固定比特信息等,開發人員往往采用邏輯運算指令和移位操作指令的組合來實現。如表2所爾,兩組代碼完成的功能一樣,把寄存器R1和寄存器R2的有用信息集中壓縮到寄存器R0中,以節省寄存器。R1的有用信息為R1[15:0],R2的有用信息為R2[24:8]。對于原代碼,因為需要屏蔽寄存器R1和R2的16位數據,需要16位常數參與,所以使用MOVW指令把16位常數引入,完成程序功能共用了4條指令,還額外使用寄存器R3來存放中間變量。優化后的代碼只需要一條指令即可實現,而且不需要額外的寄存器參與計算。

表2位操作指令對比


除PKHBT指令外。Thumb-2技術還提供PKHTB、BFC、BFI、SBFX、UBFX等位操作指令。這樣,開發者進行比特位的插入和抽取所需的指令數目就可以明顯減少,使用壓縮的數據結構也會更加方便。而代碼對寄存器的需求也會降低。

2.4 選擇字節

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

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

表3 SEL指令


2.5寄存器倒轉

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

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

表4倒轉指令集


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

2.6實現跳轉表

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

Thumb-2指令集引入了兩條跳轉表指令TBB和TBH,分別對應字節分支跳轉和半字分支跳轉。它綜合了ARM/Thumb的優點,在壓縮的數據表上可以使用最少的指令來實現跳轉表功能,最終可以以最小的代碼和數據實現最優的性能。

2.7 改善小額數值運算速度

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

表5 12位立即數的算術運算


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

2.8最大限度地使用寄存器

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

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

2.9其他

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

3 結束語

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

本文作者創新點:結合Thumb-2指令特點來優化嵌入式軟件設計。


作者:謝川      來源:《微計算機信息》(嵌入式與SOC)2009年第4-2期
本文地址:http://m.qingdxww.cn/thread-10361-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品入口在线看麻豆 | 99久热只有精品视频免费看 | 国产高清在线观看 | 亚洲人成绝费网站色ww | 欧美一区二区三区在线观看 | 在线观看亚洲视频 | 在线观看视频国产 | 亚洲卡一卡2卡三卡4麻豆 | 一级特黄国产高清毛片97看片 | 两个人的视频在线观看www | 国产在线原创剧情麻豆 | 免费看黄的视频网站 | 久久精品欧美一区二区 | 精品国产香蕉伊思人在线 | 婷婷综合视频 | 精品视频在线观看免费 | 四虎在线视频观看大全影视 | 欧洲色网站 | 欧美日本在线一区二区三区 | 免费一区二区三区免费视频 | 国产夫妻精品 | 青草香蕉精品视频在线观看 | 精品日韩在线视频 | 国产成人福利在线视频下载 | 力王国语在线观看完整国语版免费 | 春日迟迟再出发最新一期在线观看 | 亚洲国产欧美久久香综合 | 精品一成人岛国片在线观看 | 亚洲小视频在线观看 | 男女男在线观看视频网站 | 青青青国产成人久久111网站 | 欧美中文字幕 | 免费播放的美国大片 | 青青青国产免费 | 黄片毛片免费在线观看 | 国产a视频精品免费观看 | 欧洲视频一区 | 亚洲综合91社区精品福利 | 99精品国产三级在线观看 | 色蜜蜜精品视频在线视频 | 免费在线观看污网站 |