版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、如何在 ARM 平臺上開發(fā)低功耗的軟件系統(tǒng)我們這些軟件工程師都熱衷于為我們遇到的問題找出完美的解決方案。但奇怪的是,我們會發(fā)現(xiàn)在這個特定的領(lǐng)域,沒有一個完美的解決方案。聰明的技巧可能會節(jié)省一些功率,但是這個領(lǐng)域是由其他更簡單的因素支配的。就象房間里有幾頭很大的大象,我們必須要先小心翼翼地獵取我們可以看到的大象,然后再花精力去獵捕體型小的動物。在考量某個系統(tǒng)的功耗時,重要的是要弄清楚我們實際測量的對象是什么。我們說的節(jié)省功耗可能意味著幾個方面。它意味著 功率”還是 能量”實際上,我們既需要功率也需要能 量。大多數(shù)手持便攜式設(shè)備均具有以下兩個不同的預(yù)算:功率預(yù)算一一它管理著瞬間功耗、避免過熱或產(chǎn)生
2、熱應(yīng)力, 而能量預(yù)算則管理著長期使用的能量總數(shù)。而軟件則需要滿足短期的功率預(yù)算和長期的能量預(yù)算。很明顯,我們可以把任何設(shè)備的功耗降低到接近零,只要不讓它做任何操作或任何有意義的操作即可!不得已的是,實現(xiàn)有用的功能就需要耗費能量。因此,我們只能在有意義的操作和節(jié)能二者中不斷采取折衷方案。為了實現(xiàn)所需的功能,我們必須耗能;但我們必須盡量確保以節(jié)能的方式來實現(xiàn)這些功能。功耗時間積有關(guān)該主題的學(xué)術(shù)材料中常用的更好度量方式是采用功耗時間積”盡管既沒有標準單位也沒有具體方法,但是這種度量方式將能耗和性能度量結(jié)合到了一起。增加能耗或降低性能會增加功耗時間積的值,因此我們的目標是找出最低的可接受的功耗時間積的
3、 值,換句話說,最低的能耗要與允許的時間內(nèi)所需任務(wù)的執(zhí)行保持一致。能量去哪兒了?所有計算器械均會執(zhí)行兩個基本功能。這兩個功能都是必需的,沒有這兩個功能就不能完成任何有意義的任務(wù)。我們首先想到的自然是計算或數(shù)據(jù)處理。通常,計算是對機器寄存器中保存的值實施的操作。為了盡可能高效地實施計算任務(wù),我們需要在最短的時間內(nèi)執(zhí)行最少的指令。最重要的是,高效計算允許以下二選一:要么我們可以早點完成計算去睡覺,要么我們調(diào)慢時鐘且仍然在規(guī)定時間內(nèi)完成計算任務(wù)。這里經(jīng)常被人忽視的是數(shù)據(jù)通信(數(shù)據(jù)移動)。在大多數(shù)架構(gòu)中(A A R R M M 采用加載/ /存儲架構(gòu),也不例外),數(shù)據(jù)移動是必需的。 如果不將信息從一個
4、位置移動到另一個位置且經(jīng)常返 回原來的位置,用戶就無法處理任何信息。 例如,內(nèi)存中的值需要移動到寄存器中進行處理, 然后把結(jié)果寫回到內(nèi)存中。但是哪個耗用的能量更多呢?最大的償付在哪兒?圖 1 1 顯示了普遍存在的事實,與程序有關(guān)的內(nèi)存存取操作中有大約60%60%是指令抓取,另外40%40%才是數(shù)據(jù)存取。Instruction Fetch Data Aocess圖 i i :內(nèi)存存取分布廠E norgy圖 2 2:內(nèi)存存取能耗圖 2 2 顯示了 A A R R M M 進行的一些研究。如果執(zhí)行一條指令的能耗是 1 1,那么,緊耦合存儲器(TCMTCM) 存取的能耗約為 1/251/25,緩存存取
5、的能耗大約為1/61/6。而外部 R R A A M M 存取的能耗則是指令執(zhí)行能耗的 7 7 倍。換言之,對于每次外部 R R A A M M 存取所用的能耗,我們可以執(zhí)行 7 7 條指令,4040 次緩存存取或 大約 170170 次 TCMTCM 存取。計算廉價但通信昂貴 因此,似乎數(shù)據(jù)移動要比數(shù)據(jù)處理更昂貴。因此,第一頭大象就是數(shù)據(jù)效率。我們可以為內(nèi)存存取的能耗管理提出兩個規(guī)則。近距離- -從能量角度講,內(nèi)存越靠近核心,訪問內(nèi)存的相對能耗越低。少存取- -減少內(nèi)存存取次數(shù)比減少指令數(shù)量更加重要。充分利用片上存儲器從我們的能量圖可以清楚地看出,TCMTCM 是到目前為止系統(tǒng)具有的最高效存
6、儲器類型。不是所有的系統(tǒng)均具有 A A R R M M 稱為 TCMTCM 的存儲器(通過專用和優(yōu)化的接口連接到內(nèi)核),但是大部分系統(tǒng)至少具有某種片上快速存儲器類型。為了便于討論,我們指的是常見的片上存儲器(SPM(SPM) )。假定 S S PMPM 單次存取能耗大約是外部 R R A A M M 存取能耗的 1/1701/170,充分利用這種 SPMSPM 存儲器應(yīng)該是首選。圖 3 3: SPMSPM 的能量優(yōu)勢圖 3 3 中的圖表顯示了簡單的 多類”基準,甚至 128128 個字節(jié)的 S S PMPM 區(qū)域都可以減少大約一半 的功耗。1k1k 字節(jié)的存儲器最大可減少70%70%的功耗。本
7、次研究(Mar(Mar wedel,wedel, 2004)2004)中采用的方法是從外部 R R AMAM 到 S S PMPM 動態(tài)重定位代碼和數(shù)據(jù)片段。甚至在按需移動各項開銷方面,不僅降低了能耗,性能也提高了大約60%60%。很顯然,我們在某個點上正在損失回報。這種情況下,S S PMPM 超過 1k1k 時,性能提升幅度變緩,系統(tǒng)總能耗也會稍微升高。 在這里,我們實際上在承擔(dān)這種特定應(yīng)用無法使用的S S P P M M能耗,因為這種應(yīng)用程序本身并不夠大。您還可以注意到,在結(jié)合了所使用的分配算法時,這種特定的應(yīng)用無法使用小于6464 字節(jié)的SPMSPM 區(qū)域,因為沒有足夠小的可用片段與之
8、相配。本次研究中還展示了一個更加成熟的算法,可以在最佳狀況下節(jié)省能耗可以超過80%80%。永遠做緩存友好的事分析緩存優(yōu)點有時可能比分析 S S PMPM 優(yōu)點更加復(fù)雜。一方面,緩存基本上是自我管理的。另一方面,緩存不是對單個存儲位置進行操作,而是對固定大小的線路”進行操作。因此,訪問單個可緩存的存儲位置可能加載整條線路, 從未被訪問過,則所消耗的能量就浪費了。另一個不利之處是緩存所需的其他邏輯成本(就硅片面積和功耗而言)。Chart Title EDP IPCPower圖 4 4:緩存的能量優(yōu)勢圖 4 4 摘自普林斯頓(BrooksBrooks,20002000 )份論文,顯示了針對某簡單應(yīng)用
9、基準的三套數(shù)據(jù)。針對不同的緩存大小,這些條塊分別代表性能IPIP C C (單位周期指令數(shù))、功耗和功耗時間積(EDED P P)??偟膩碚f,性能會隨著緩存大小的增加而提升。但是,系統(tǒng)的功耗也會增加,因 為增大緩存單元會相應(yīng)增加功耗。功耗時間積允許我們在性能和緩存大小之間取得平衡。在這個例子里,存在一個最佳點,即緩存大小為64k64k 時,此時的功耗時間積最小。最大限度減少數(shù)據(jù)內(nèi)存存取A A RMRM 架構(gòu)的一個特性是其常量是不確定的,特別是,不可能用單條指令把一個任意3232 位常量放到一個寄存器中。 實際上,所有內(nèi)存存取必須按寄存器中的地址操作,這就意味著程序需要把這些地址和其他常量頻繁地
10、放到寄存器中,而這一點很難做到。解決此問題的標準方法是把常量作為文字數(shù)據(jù)嵌入到代碼段中,在運行時使用PCPC 相關(guān)的加載進行加載。因此,這種最大限度減少常量影響的方法很實用。確保在編譯時這些常量是已知的,如果可能,最好能把這些常量嵌入到單條 ARMARM 指令中。為了存取全局變量,盡可能減少加載基址 指針的需求。這就需要確保全局變量在運行時都在內(nèi)存中,這樣才能使用單個指針存取多個變量。實現(xiàn)這個目標最簡單的方式是將全局變量放到一個結(jié)構(gòu)中。盡管 A A R R M M 的堆棧訪問相對高效(堆棧訪問可較好地加載和存儲多條指令),但是程序員 還可以通過很多方式從而造成突發(fā)的內(nèi)存存取。如果該附加的數(shù)據(jù)6
11、4k來減少堆棧訪問:減少活動變量、避免占用本地變量地址、可能時充分利用尾部調(diào)用優(yōu)化、將傳遞到函數(shù)的參數(shù)數(shù)量減少到四個以下、允許編譯器主動內(nèi)聯(lián)函數(shù)等。遞歸情形和避免遞歸情形的做法更加復(fù)雜。通常編譯器可以對歸函數(shù)很好地進行尾部優(yōu)化。實際上將所有數(shù)據(jù)存儲到堆棧中可以比其他做法獲得更好的局部性?;蛟S建議可能最好表達為除非其他做法讓數(shù)據(jù)局部性更糟或您確信編譯器可以對遞歸調(diào)用進行尾部優(yōu)化,否則不 要使用遞歸算法”。應(yīng)編寫異常處理程序,增加尾部連鎖的機會,進而避免堆棧環(huán)境內(nèi)不必 要的保存和恢復(fù)?,F(xiàn)在我們把注意力轉(zhuǎn)到這個問題的第二頭大象,即指令執(zhí)行。最大限度減少指令數(shù)目事實上,減少指令執(zhí)行次數(shù)本質(zhì)上與性能優(yōu)化
12、是相同的,執(zhí)行的指令數(shù)越少,能耗就越低。 另外,還要增加一些明顯的指針。首先,正確地配置工具。在編譯器和鏈接器完全了解目標平臺,甚至無法實施一些基本的優(yōu)化。編寫代碼時要保持敏銳,才能避免不必要的操作。對于A A R R M M 架構(gòu),3232 位數(shù)據(jù)類型是高效的:一般 8 8 位和 1616 位數(shù)據(jù)類型,盡管占用的存儲空間較少,但是處理效率也較低。在v6v6和 v7v7 架構(gòu)中,打包和接包指令以及 S S IMIM D D 操作一定程序上對此有些幫助,但是要注意, 在主程序中無法從 C C訪問這些指令。編寫循環(huán)時要當(dāng)心可以按照以下一些簡單的規(guī)則來編寫循環(huán):使用無符號的整數(shù)計數(shù)器,向下倒數(shù),并把
13、是否等于零作為終止條件。這可以讓循環(huán)更短,速度更快,使用的寄存器更少。還要記住,要采 用矢量化來編寫循環(huán)。即使在嘗試展開和矢量化最簡單的循環(huán)時,有關(guān)控制結(jié)構(gòu)和數(shù)據(jù)聲明的一些簡單規(guī)則都可以讓編譯器的作業(yè)變得更簡單。10.90.80.7060.50.40.3圖 5 5 :循環(huán)展開圖 5 5 顯示了與一個特定循環(huán)優(yōu)化有關(guān)的一些數(shù)據(jù),這個循環(huán)優(yōu)化就是循環(huán)展開(BrooksBrooks ,20002000 )。按照預(yù)期,隨著展開因子的增加,執(zhí)行時間和指令數(shù)目會減少。我們看到了減少 循環(huán)開銷和減少地址計算的效果。 功率結(jié)果更加有趣, 但不太明顯。 因為預(yù)測器可用來訓(xùn)練 其行為的分支更少且針對循環(huán)結(jié)束失敗的
14、最終錯誤預(yù)測比例大增,所以隨著循環(huán)進一步展 開,分支預(yù)測器的準確性出現(xiàn)下降。 但是,因為順序取指的連續(xù)數(shù)據(jù)流不經(jīng)常被中斷, 所以 取指階段的效率可以提升。組合的結(jié)果是減少了每條指令的凈能耗。因此盡管執(zhí)行時間基本上低于展開因子4 4,但是因為功耗持續(xù)降低, 所以所有重要的功耗時間積也隨之降低。 因此有能耗意識的編譯器或開發(fā)人員與只考慮執(zhí)行時間的編譯器或開發(fā)人 員相比,會更傾向于展開循環(huán)。精度滿足需求即可還必須考慮輸出要求的精度。 即使有浮點硬件可用, 定點實現(xiàn)的計算通常比浮點實現(xiàn)的計算 更有效率。 如果您正在渲染一個供屏幕查看的圖像, 可能并不需要完全符合標準, 您只需要 渲染出可以接受的圖像。
15、對標準 M M P P E E G-G- 4 4 解碼函數(shù)進行遞進優(yōu)化的一項研究 (S(S h h i i n,2002)n,2002) 已經(jīng)表明,把軟浮點切 換為定點二進制可以把能耗降低 72%72% 。精度損失意味著該結(jié)果不再符合標準,但是在所研 究的系統(tǒng)上仍然足以滿足渲染用途。關(guān)于 ThumbThumbT T humbhumb 指令集專門設(shè)計用于改進代碼密度,還可以提升窄內(nèi)存系統(tǒng)的性能。但是,在代碼 密度確實改進的同時,指令數(shù)也同時增加了。這是因為,與 A A R R M M 指令相比,減少了個別 ThumbThumb 指令的功能。 因此 ThumbThumb 重新編譯會造成能耗增加,
16、這看起來是合理的, 而我們看 到的事實也的確是這樣。上述研究表明,如果代碼大小減少 4%4% ,指令執(zhí)行數(shù)增加 38%38% ,而能耗增加 28%28% 。為了找 到第三頭大象, 我們需要走出處理器及其內(nèi)存的領(lǐng)域, 著眼于范圍更大的系統(tǒng)。 我們這些天 使用的系統(tǒng)已經(jīng)被我們的硬件設(shè)計同事組合到了一起,這個系統(tǒng)提供了大量節(jié)能選項。Power* Time* Instructions EOF更廣系統(tǒng)中的節(jié)能顯而易見,沒有使用的組件應(yīng)盡可能置于低功耗狀態(tài)。這也是所有敏銳的設(shè)計系統(tǒng)不可 分割的組成部分,這些組件應(yīng)包括內(nèi)存和緩存系統(tǒng)、甚至是處理器本身。在多核系統(tǒng)中,我 們必須考慮在處理要求相對低時中止一個或
17、多個內(nèi)核運行的可能性。首先, 一個很小但值得考慮的問題是:處理外設(shè)時,要始終嘗試使用中斷機制,而不是輪詢 機制。輪詢循環(huán)只會耗用能量而無任何目的。幾乎所有架構(gòu)均包括了某種等待中斷的指令,可以把這種情況下的系統(tǒng)置于待機狀態(tài)。對于 A A R R M M 系統(tǒng),內(nèi)核通常帶有時鐘門控,只保 留靜態(tài)漏電。通過設(shè)計中斷架構(gòu)來增加拖尾連鎖, 架構(gòu)可以自動實現(xiàn)這一點。般可以避免不必要的睡眠喚醒循環(huán)。 ARMARM Cortex-M3Cortex-M3對于個別計算單元, 選擇一種關(guān)機方案是很容易的。對于可以預(yù)測需要與否的單元,在不需要時通過應(yīng)用程序或操作系統(tǒng)就可以停止運行這些單元。對于不可預(yù)測需要與否的單元,
18、可以通過按需通電啟動系統(tǒng), 也可以在空閑超過某段時間之后再自動斷電。子系統(tǒng)斷電的時標可以通過以下兩方面來得出:通電但處于空閑狀態(tài)時的功耗以及睡眠喚醒循環(huán)的能耗。從根本上講,這取決于應(yīng)用場合。但是,動力循環(huán)代碼的簡單循環(huán)計數(shù)將是最明顯的起點。測量數(shù)據(jù)表明,N N e e onon 引擎相比 C C o o r r tex-A9tex-A9 等內(nèi)核的運行功率要高大約10%10%。但是,對于傳統(tǒng)的信號處理算法,其性能提升了 40%40% -150%-150%。在任務(wù)期間啟用 NeONNeON 而在不需要時切斷 NeonNeon 的好處很明顯。很常見的是,不但N N e e onon 引擎可以在任務(wù)完
19、成時切斷,而且整個處理器系統(tǒng)可以節(jié)省更多功耗。通常一個比較難的選擇是啟用計算組件提前完成計算(且因此切斷時間更長)還是完成計算時及時降低處理器速度以減少功耗。圖6 6 顯示了每次迭代的能耗數(shù)據(jù),這是簡單的基準(Domeika,Domeika, 20092009)。采用不同的指令緩存和浮點協(xié)處理器組合,對于兩個時鐘速度,每個 時鐘速度均要運行此基準四次。有兩個清晰的重點。首先,盡管指令緩存和浮點單元均減少 了能耗,但是浮點單元比指令緩存的表現(xiàn)更優(yōu)異。圖 6 6 :系統(tǒng)組件電源利用其次,對于所有配置而言,每次迭代的能耗從本質(zhì)上講是相同的,與時鐘速度無關(guān)。因此, 為了更快地完成任務(wù)而啟用所有功能并全
20、速運行要比調(diào)慢時鐘速度更加高效。多重處理眾所周知,與調(diào)高單核的功率相比,采用多核可以獲得更高的性能和更好的能效。使用多核系統(tǒng)時,我們必須考慮在不需要時選擇中止一個或多個內(nèi)核。A A R R M M 的研究表明,S S M M 13MH2PLinuxPLinux 系統(tǒng)中單核循環(huán)的成本是 5000050000 個周期(大部分周期用于清除一級緩存),這意味 著此操作將在幾百毫秒內(nèi)完成,而不是更短的時間內(nèi)完成,否則其能耗成本將超過其具有的優(yōu)勢。ARMARM 是主動研究型架構(gòu),其包含兩個內(nèi)核,一個高性能的內(nèi)核用于全功能操作,一個較小 的配套內(nèi)核則以較低的性能完成低功率操作。 需要較高的處理功率時, 系統(tǒng)
21、運行較大的內(nèi)核。 任務(wù)完成時, 系統(tǒng)可以把所有信息傳遞給小內(nèi)核并關(guān)閉大內(nèi)核。需要逆向信息移動時,再切 換回大內(nèi)核。如果這兩個內(nèi)核相連成為相關(guān)系統(tǒng),則切換的能耗成本可降到最低。關(guān)于操作系統(tǒng)不巧的是,在操作系統(tǒng)上運行時,應(yīng)用程序員無法這樣靈活處理。緩存配置、 S S PMPM 使用與 否、組件的電源周期等很大程度上都是操作系統(tǒng)架構(gòu)和設(shè)備驅(qū)動程序來專門決定的。 但是,應(yīng)用程序員仍然有很多東西需要考慮。研究已經(jīng)表明, 設(shè)計不良的進程間通信 (I(I P P C)C) 會大大增加系統(tǒng)的能耗。 一個簡單的技術(shù)稱為 “矢量化 ”進程間通信, 這種技術(shù)批量處理小的消息并把大量小的消息作為一個大的消息來發(fā) 送,這樣通???/p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度出租車承包運營人力資源配置合同3篇
- 2025年度智能電網(wǎng)建設(shè)與運營管理協(xié)議4篇
- 2025年度數(shù)字化車間承包經(jīng)營合作協(xié)議4篇
- 方形母端快接式端子行業(yè)深度研究報告
- 2025年叉車電器項目可行性研究報告
- 2025年度個人股權(quán)分割與轉(zhuǎn)讓合同范本3篇
- 2025年度個人心理咨詢服務(wù)合同范本4篇
- 2025年度個人房源信息在線交易安全保障協(xié)議4篇
- 2025年江蘇國經(jīng)控股集團有限公司招聘筆試參考題庫含答案解析
- 2025年福建中閩海上風(fēng)電有限公司招聘筆試參考題庫含答案解析
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年資格考試-WSET二級認證考試近5年真題集錦(頻考類試題)帶答案
- 試卷中國電子學(xué)會青少年軟件編程等級考試標準python三級練習(xí)
- 公益慈善機構(gòu)數(shù)字化轉(zhuǎn)型行業(yè)三年發(fā)展洞察報告
- 飼料廠現(xiàn)場管理類隱患排查治理清單
- 2024年公需科目培訓(xùn)考試題及答案
- 【名著閱讀】《紅巖》30題(附答案解析)
- Starter Unit 2 同步練習(xí)人教版2024七年級英語上冊
- 分數(shù)的加法、減法、乘法和除法運算規(guī)律
- 2024年江蘇鑫財國有資產(chǎn)運營有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
評論
0/150
提交評論