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

嵌入式系統中軟件優化的低功耗研究

發布時間:2010-7-10 23:30    發布者:conniede
引言   

從20世紀70年代世界上第一個為嵌入式應用而設計的微處理器Intel 4004誕生以來,嵌入式系統已經發展了30多年。近幾年,嵌入式系統(embedded system)已經成為電子信息產業中最具增長力的一個分支。隨著手機、PDA、GPS、機頂盒等新興產品的大量應用,嵌入式系統的市場正在以每年30%的速度遞增,嵌入式系統的設計也成為軟硬件工程師越來越關心的話題。   

嵌入式系統是以應用為中心、以計算機技術為基礎,并且軟硬件可裁減,適用于應用系統對功能、可靠性、成本、體積、功耗等有嚴格要求的專用計算機系統。在嵌入式系統的設計中,低功耗設計(Low-Power Design)是必須面對的問題。其原因在于嵌入式系統被廣泛應用于便攜式和移動性較強的產品中,而這些產品不是一直都有充足的電源供應,往往靠電池來供電,所以應從每一個細節來考慮降低功率消耗,盡可能地延長電池的使用時間。事實上,從全局來考慮低功耗設計已經成為了一個越來越迫切的問題。   

低功耗是便攜式電子設備必須具備的一個關鍵特性。過去幾年的研究主要針對硬件部分,而現在人們則更注重通過優化軟件部分來降低系統功耗。要想對軟件進行優化,必須了解每條指令所產生的功耗,并選擇正確的編譯方法,以降低程序執行的功耗。由于各種微處理器架構不同,指令集和功耗也不一樣。因此,適用于某一處理器的優化方式并不一定適用于其他處理器。這樣,選擇與可降低功耗的軟件相匹配的微處理器便十分重要。
   
1 編譯優化   

編譯器的作用是將由高級語言編寫的程序,如C/C++等,翻譯成能夠在目標機上執行的程序。換句話說,編譯器為高級語言程序員提供了一個抽象層,使得程序員能夠通過編寫與實際問題相近的高級語言代碼(而不用匯編或者機器語言),方便地解決實際問題;同時,也使得程序的可讀性和可維護性得到保證,提高軟件開發的效率。另外,將程序移植到新的目標機,也只要用相應的編譯器對程序進行重新編譯,而不必重新編寫程序。   

但是某些情況下,這樣的做法是以犧牲程序的執行性能為代價的。編譯器的有效性以及它所生成的代碼效率,可以與專家級的匯編/機器語言程序員所編寫的代碼相比較得出,因此可以通過對編譯器的優化,生成效率更高的代碼。   

通過優化編譯器可以有效地降低嵌入式設備的功耗。在一個程序中,每一條指令都將激活微處理器中的某些硬件部件,因此,正確選擇指令可降低處理器的功耗。通過建立特定處理器架構下指令集的功耗信息,利用“減少跳轉的指令重排序”等方法,可以進行有效的軟件低功率優化。   

這里作兩點假設:① 每一條指令都有一個固定量的功率;② 每條指令的散熱與它的操作數及其他指令無關。從圖1可以看到,通過對指令的重新排序,可以把一段程序的初始功率狀況,如圖1(a)所示,轉換成圖1(b)所示的那樣?梢缘贸鲞@樣的結論:盡管兩種情況中局部區域的散熱狀況不一樣,但是它們所消耗的總電能是一致的。換句話說,可以在不影響總耗電的情況下,對程序的局部散熱情況作出某些調整,以符合實際的需要。下面通過將指令進行重新排序來實現系統功耗的降低。

                                                             圖1程序內局部區域功率的兩種可能性
   
2 指令排序   

我們知道,運行某一特定程序的處理器的功率P=I×Vdd(I為平均電流,Vdd為給定的電壓),則程序的功耗E=P×t(t為程序的執行時間);同時,t=N×T(T為指令周期),即為主頻的倒數,N為程序執行的周期數)。在嵌入式系統,尤其是在移動設備中,一般都通過電池供電,故系統的功耗是一個非常重要的指標,F在,Vdd和T都是已知量,因此程序消耗的電能E與電流I和程序周期數N的乘積成正比。這里通過引用參考文獻[3]中所建立的模型來進行闡述。該模型中通過示波器等設備,測量并估計執行每條指令所需要的電流I。綜上所述,可以利用嵌入式處理器中的多數據存儲區域的特性,實現數據的并行處理,通過對指令的排序,減少指令的執行周期,從而達到降低功耗的目的。  

2.1 舉例
  
假設有一段C語言程序,如圖2(a)所示。圖2(b)是其相應的匯編代碼,圖2(c)表示每個結點帶有兩個權值的數據依賴圖(Data Dependence Graph,DDG)。第一個權值表示結點在DDG中的深度,如V10的第一個權值為1,V0的第一個權值為6。假設這個權值越大,表示其優先級越高,如圖2(c)中V0和V1具有最高的優先級。

                                                        圖2C語言代碼、匯編代碼與數據依賴圖

圖3為未使用文中的算法前指令的執行順序。注意,圖中的黑體字,即V2、V6以及V9,與其他指令不同。它們是ADD或者MPY指令,需要用到系統的ALU部件。在同一指令周期中,可以同時執行ALU運算以及MOVE操作,但是不可以同時執行兩個ALU操作。

                                                                     圖3指令排序前結點的執行順序
  
節點的第二個權值,表示相關寄存器的生命周期。如圖4所示,V0所依賴的寄存器是r0,它的生命周期為1到3,即為2。從圖中可以得出以下結論:此段程序總共需要11個指令周期和最少同時使用2個寄存器。

                                                                    圖4指令排序前的狀況
  
圖5為基于本文的算法,將指令重新排序后的情況。程序總的執行周期變為6,但是所占用的寄存器個數增加到3。由此也可以看到,程序的執行周期與寄存器的個數之間也是一個折衷權衡的結果。

                                                         圖5基于排序算法后的情況 2.1 舉例
  
假設有一段C語言程序,如圖2(a)所示。圖2(b)是其相應的匯編代碼,圖2(c)表示每個結點帶有兩個權值的數據依賴圖(Data Dependence Graph,DDG)。第一個權值表示結點在DDG中的深度,如V10的第一個權值為1,V0的第一個權值為6。假設這個權值越大,表示其優先級越高,如圖2(c)中V0和V1具有最高的優先級。

                                           圖2C語言代碼、匯編代碼與數據依賴圖
  
圖3為未使用文中的算法前指令的執行順序。注意,圖中的黑體字,即V2、V6以及V9,與其他指令不同。它們是ADD或者MPY指令,需要用到系統的ALU部件。在同一指令周期中,可以同時執行ALU運算以及MOVE操作,但是不可以同時執行兩個ALU操作。

                                                                    圖3指令排序前結點的執行順序
  
節點的第二個權值,表示相關寄存器的生命周期。如圖4所示,V0所依賴的寄存器是r0,它的生命周期為1到3,即為2。從圖中可以得出以下結論:此段程序總共需要11個指令周期和最少同時使用2個寄存器。

                                                                    圖4指令排序前的狀況
  
圖5為基于本文的算法,將指令重新排序后的情況。程序總的執行周期變為6,但是所占用的寄存器個數增加到3。由此也可以看到,程序的執行周期與寄存器的個數之間也是一個折衷權衡的結果。

                                                         圖5基于排序算法后的情況 2.1 舉例
  
假設有一段C語言程序,如圖2(a)所示。圖2(b)是其相應的匯編代碼,圖2(c)表示每個結點帶有兩個權值的數據依賴圖(Data Dependence Graph,DDG)。第一個權值表示結點在DDG中的深度,如V10的第一個權值為1,V0的第一個權值為6。假設這個權值越大,表示其優先級越高,如圖2(c)中V0和V1具有最高的優先級。

                                           圖2C語言代碼、匯編代碼與數據依賴圖
  
圖3為未使用文中的算法前指令的執行順序。注意,圖中的黑體字,即V2、V6以及V9,與其他指令不同。它們是ADD或者MPY指令,需要用到系統的ALU部件。在同一指令周期中,可以同時執行ALU運算以及MOVE操作,但是不可以同時執行兩個ALU操作。

                                                                     圖3指令排序前結點的執行順序
  
節點的第二個權值,表示相關寄存器的生命周期。如圖4所示,V0所依賴的寄存器是r0,它的生命周期為1到3,即為2。從圖中可以得出以下結論:此段程序總共需要11個指令周期和最少同時使用2個寄存器。

                                                            圖4指令排序前的狀況
  
圖5為基于本文的算法,將指令重新排序后的情況。程序總的執行周期變為6,但是所占用的寄存器個數增加到3。由此也可以看到,程序的執行周期與寄存器的個數之間也是一個折衷權衡的結果。

                                                         圖5基于排序算法后的情況文中借用了參考文獻[3]中所建立的模型,用以計算程序的耗電量。

在圖5中,程序執行時所需要的總電流I=780 mA,總的執行周期數為N=6,因此消耗電路E=N×I=6×780 mA="4" 680 mA。不使用任何算法的情況,即圖2所示,E=N×I=1 080×11=11 880 mA。通過使用文中的算法,將程序執行周期減少了,同時程序的功耗也降低了。也就是說,通過使用文中的算法,程序的執行性能得到提高,系統的功耗也最大程度地得到了優化。由此可見,在這一層面上,采用何種算法是非常重要的。
      
2.2 算法描述   

文中的算法是基于文獻[5]中提出的以串列為基礎的排序機制,主要是以減少程序的執行周期為目的,同時考慮到使用盡量少的寄存器。程序的描述如下:  

       ① 構造數據依賴圖DDG! 
       ② 構造帶權的元組,其中第一個權值為結點在DDG中的深度,設為P;第二個權值為生命周期,設為L! 
       ③ 查找就緒表R(如圖3所示)。  
       ④ while就緒表R不為空 do
      

在以上的算法中,結點的深度是最為重要的。它用于控制整個程序所需的指令周期數,從而使程序的功耗得到有效的控制。另外,結點的生命周期也是相當重要的,它可以控制程序中所用到的寄存器的個數。這在DSP處理器中顯得尤為重要。同時,該算法也充分利用了處理器的數據并行處理能力,為在同一指令周期內執行不同的操作提供了可能。      

3 結論
  

近年來,功耗成為嵌入式應用領域的一個越來越令人關注的問題。尤其是在移動設備中,由于通過電池供電,功耗顯得尤為重要。當前的編譯器很少能夠充分利用處理器的各種特性,因此編譯生成的代碼不能與那些專家級匯編程序員寫出的代碼相提并論。本文從軟件角度出發,提出了一個優化編譯器,對指令進行重新排序的算法,通過優化編譯器來實現降低系統的功耗。下一步工作則要選擇和研究某種特定的微處理器,然后創建相關工具,產生這種微處理器的指令集功耗信息,再進一步運用該算法實現編譯優化,最終實現功耗的優化。
本文地址:http://www.qingdxww.cn/thread-14934-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節省時間和空間
  • Dev Tool Bits——使用DVRT協議查看項目中的數據
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監視
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99热这里只有精品9 99热这里只有精品88 | 国产自精品在线 | 日韩免费高清一级毛片 | 日韩精品影视 | 噜噜噜私人影院 | 中国大陆高清aⅴ毛片 | 欧美另类亚洲一区二区 | 四虎影视在线永久免费观看 | 日韩在线视频网 | 精品资源| 操穴网| 亚洲黄色在线播放 | 2021国产麻豆剧果冻传媒入 | 青青草原伊人网 | 黄色成人一级片 | 日本黄色高清网站 | 欧美四虎影院 | 欧美高清一区 | 色综合久久久高清综合久久久 | 精品国产一区二区三区不卡在线 | 日韩欧美视频一区 | 亚洲国产日韩欧美在线a乱码 | 亚洲网视频 | 日韩视频免费一区二区三区 | 亚洲欧美日韩中文字幕在线 | 国内91视频| 97视频在线播放 | 亚洲日本国产 | 97在线播放视频 | 久久久久久久久久久9精品视频 | 国产91在 | 日本一区二区成人教育 | 狠狠色丁香婷婷综合橹不卡 | 视频一区 精品自拍 | 色中色综合网 | 国产麻豆91在线 | 久九九久福利精品视频视频 | 日本不卡高清免费v日本 | 无限看动漫片的视频高清免费 | 91麻豆精品激情在线观看最新 | 国产亚洲欧美另类第一页 |