通過軟件降低便攜式產(chǎn)品的功耗_第1頁
通過軟件降低便攜式產(chǎn)品的功耗_第2頁
通過軟件降低便攜式產(chǎn)品的功耗_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、    通過軟件降低便攜式產(chǎn)品的功耗    通過軟件降低便攜式產(chǎn)品的功耗    類別:電源技術(shù)                              &nbsp降低功耗是每個(gè)便攜

2、式產(chǎn)品開發(fā)人員的設(shè)計(jì)目標(biāo)之一,但功耗不僅僅與硬件設(shè)計(jì)有關(guān),控制軟件也會(huì)對產(chǎn)品的功耗產(chǎn)生很大影響。不管是操作系統(tǒng)、BIOS控制程序還是外設(shè)驅(qū)動(dòng)程序,這些軟件編寫的方式?jīng)Q定了最終產(chǎn)品的功耗水平,因此在開發(fā)時(shí)必須加以考慮。本文介紹四種通過軟件降低功耗的方法,可供中國的設(shè)計(jì)工程師們參考。   &nbsp作為嵌入式軟件工程師,我們需要在質(zhì)量與效率之間尋求平衡。為此,我們要優(yōu)化軟件性能,使之能在速度較慢而價(jià)格低廉的處理器上運(yùn)行;我們要調(diào)整軟件大小,這樣就能使用更小且更便宜的存儲器?,F(xiàn)在隨著為手持式和無線裝置編寫的軟件越來越多,我們還需要優(yōu)化產(chǎn)品的功耗,以延長小型低成本

3、電源的壽命。   &nbsp有個(gè)好消息是,無論你在開發(fā)操作系統(tǒng)、外設(shè)驅(qū)動(dòng)程序還是應(yīng)用程序,現(xiàn)在已有多種軟件設(shè)計(jì)技術(shù)可以幫助降低功耗,下面我們重點(diǎn)討論其中的四種方法。   &nbsp智能等待   &nbsp很多最新的嵌入式處理器都具有能降低功耗的電源工作模式,最常用的是空閑模式,此時(shí)處理器內(nèi)核指令執(zhí)行部分關(guān)閉,而所有外設(shè)和中斷信號仍有電并起作用??臻e模式比處理器執(zhí)行指令時(shí)的功耗要小得多。   &nbsp空閑模式一個(gè)主要特點(diǎn)是其進(jìn)入退出基本上不需要

4、額外開銷,通常一個(gè)毫秒可以反復(fù)很多次。任何時(shí)候只要操作系統(tǒng)檢查到所有線程都處于阻塞狀態(tài)如等待中斷、事件或定時(shí)時(shí)間,它都可以把處理器置于空閑模式以省電。由于任何中斷都能把處理器從空閑模式中喚醒,所以采用這種模式可使軟件智能等待系統(tǒng)事件,不過為最大程度提高電源效率,該工具要求我們認(rèn)真地設(shè)計(jì)軟件。   &nbsp我們都編寫過這樣的代碼,如記錄狀態(tài)寄存器內(nèi)容并等待設(shè)定標(biāo)記出現(xiàn),也許是檢查串口的FIFO狀態(tài)標(biāo)記,看是否收到數(shù)據(jù);也許是監(jiān)測一個(gè)雙端口存儲器看系統(tǒng)中是否有另外處理器寫入一個(gè)變量,使我們能控制共享資源。盡管從表面上看這樣的代碼沒有什么問題,但在每個(gè)時(shí)鐘周期

5、里不斷記錄寄存器狀態(tài)將無法有效延長手持裝置的電池壽命。   &nbsp更好的解決辦法是使用一個(gè)外部中斷來表明狀態(tài)何時(shí)改變。在單線程軟件環(huán)境里,你可以調(diào)用處理器空閑模式降低功耗直到發(fā)生實(shí)際事件,出現(xiàn)中斷時(shí),處理器自動(dòng)喚醒然后繼續(xù)執(zhí)行后面的代碼。   &nbsp空閑模式甚至能用于事件不能直接連接到外部中斷的場合,在這種情況下,用一個(gè)系統(tǒng)定時(shí)器定期喚醒處理器是個(gè)很好的方法。例如你在等待一個(gè)事件并且知道只要事件發(fā)生后在一毫秒內(nèi)能檢測到都能迅速做出處理,那么可以啟動(dòng)1ms定時(shí)器并把處理器置于空閑模式,每次中斷時(shí)檢查事件狀態(tài),如果

6、狀態(tài)沒有變化,就立刻回到空閑模式。   &nbsp這種等待機(jī)理應(yīng)用很普遍,現(xiàn)今大多數(shù)PDA和智能電話都是由具有空閑模式功能的處理器和操作系統(tǒng)控制。事實(shí)上,很多這些設(shè)備每秒會(huì)多次進(jìn)出空閑模式,只要有觸摸、按鍵或時(shí)間到就會(huì)被喚醒。   &nbsp減少事件   &nbsp另一種可以考慮的技術(shù)是減少事件。智能等待是使處理器盡可能高頻率地進(jìn)入空閑模式,減少事件則是盡可能長時(shí)間地將處理器置于空閑模式,它通過分析代碼和系統(tǒng)要求來決定你是否能改變處理中斷的方式實(shí)現(xiàn)。  

7、0;&nbsp例如一個(gè)通過時(shí)隙安排線程的多任務(wù)操作系統(tǒng),一般設(shè)定的定時(shí)中斷通常在只有1ms的時(shí)隙間隔發(fā)生。假定你的代碼很好利用了智能等待技術(shù),操作系統(tǒng)會(huì)頻繁使處理器置于空閑模式,并一直維持直到被中斷喚醒。當(dāng)然,在這種情形下,最有可能喚醒處理器的中斷是定時(shí)器中斷本身。即使所有其它線程被阻塞,在其它中斷、內(nèi)部事件及長時(shí)間延遲之前,定時(shí)器中斷也會(huì)以每秒1,000次的頻率把處理器從空閑模式中喚醒,以運(yùn)行調(diào)度安排程序。   &nbsp但就算調(diào)度安排程序確定所有線路都被阻塞,并很快將處理器回復(fù)到空閑模式,這樣頻繁操作也會(huì)浪費(fèi)大量電源。在這樣的情況下,進(jìn)入空閑模

8、式時(shí)應(yīng)關(guān)閉時(shí)隙中斷信號,只有再次出現(xiàn)中斷信號時(shí)才被喚醒。   &nbsp當(dāng)然把時(shí)隙中斷完全關(guān)閉通常不太合適。盡管多數(shù)阻塞的線程可以直接或間接等待外部中斷,有些在特定時(shí)間還是服從于操作系統(tǒng)。例如一個(gè)驅(qū)動(dòng)器會(huì)在等待外設(shè)時(shí)睡眠500ms,這時(shí)空閑模式下如果完全關(guān)閉系統(tǒng)定時(shí)器,可能意味著線路不能按時(shí)恢復(fù)工作。   &nbsp操作系統(tǒng)最好能為調(diào)度安排程序進(jìn)行可變超時(shí)設(shè)定。操作系統(tǒng)知道每個(gè)線程是否無法確定等待的是外部還是內(nèi)部事件,或者計(jì)劃在某特定時(shí)間再次運(yùn)行,操作系統(tǒng)可算出第一個(gè)線程預(yù)定何時(shí)運(yùn)行,并相應(yīng)地在處理器置于空閑模式之前設(shè)

9、定定時(shí)器工作。可變超時(shí)設(shè)定不會(huì)對調(diào)度安排程序造成很大的負(fù)擔(dān),但卻能節(jié)省電源和處理時(shí)間。   &nbsp可變計(jì)劃超時(shí)限定只是減少事件的一種方法,存儲器直接存取(DMA)也可讓處理器長時(shí)間處于空閑模式,即使數(shù)據(jù)正在發(fā)送至外設(shè)或從外設(shè)收取。所以只要可能,都應(yīng)在外圍驅(qū)動(dòng)器中使用DMA,省電效果相當(dāng)令人滿意。   &nbsp例如英特爾公司StrongARM處理器串口接收FIFO時(shí),大約每收到8個(gè)字節(jié)發(fā)生一次中斷,在115,200bps速度下,發(fā)送到這個(gè)端口的11KB脈沖數(shù)據(jù)會(huì)引起處理器內(nèi)核每秒中斷1,500次,很可能使其從空閑模

10、式中喚醒,但如果實(shí)際上你不需要在這些小的8字節(jié)設(shè)備中處理數(shù)據(jù),浪費(fèi)是很驚人的。DMA最好與大容量緩沖器一起使用,以使中斷發(fā)生的水平更加容易管理,或許是每秒10次或100次,讓處理器在兩次中斷之間空閑。事實(shí)證明,在這些場合應(yīng)用DMA能減少使用率達(dá)20%,可降低CPU功耗并提高供其它線程使用的處理器帶寬。   &nbsp性能控制   &nbsp動(dòng)態(tài)時(shí)鐘和電壓調(diào)整代表了微控制器在降低功耗方面的最新進(jìn)展,電源管理的這種進(jìn)展是基于以下觀察,即處理器消耗的能量與驅(qū)動(dòng)處理器的時(shí)鐘頻率以及應(yīng)用其內(nèi)核上的電壓平方成正比。 &#

11、160; &nbsp處理器允許動(dòng)態(tài)降低時(shí)鐘速度為節(jié)省電源邁出了第一步,降低一半時(shí)鐘速度,功耗將成比例下降。但是光采用這種技術(shù)有效實(shí)現(xiàn)節(jié)能需要一些技巧,因?yàn)閳?zhí)行的代碼可能要兩倍長的時(shí)間才能完成,那樣的話也不會(huì)省電。   &nbsp動(dòng)態(tài)降低電壓是另一種做法。越來越多的處理器允許降低電壓,以適應(yīng)處理器時(shí)鐘速度的下降,這樣在降低時(shí)鐘速度時(shí)也能省電。事實(shí)上,只要處理器不飽和,頻率和電壓就能不斷減少,這樣還是能完成工作,而消耗的電源總體上卻比較低。   &nbsp考慮到并不是所有線程都消耗同樣多處理器帶寬,所以即

12、使這些方法也還是可以改進(jìn)的。有效應(yīng)用處理器帶寬的線程會(huì)隨著處理器時(shí)鐘速度下降而花更長的時(shí)間才能完成,這些線程使用分配給它們的每一個(gè)周期。另一方面,I/O約束線程采用分配給它的所有處理器周期,即便處理器時(shí)鐘速率下降也要用同樣長的時(shí)間才能完成。   &nbsp舉一個(gè)例子,像很多PDA使用的PC卡(以前稱為PCMCIA卡)接口,當(dāng)數(shù)據(jù)寫入快閃存儲卡時(shí),系統(tǒng)瓶頸不是處理器的速度,而是物理總線接口以及卡的固件為擦掉和重新編程閃存所花的時(shí)間。理想情況下,上面討論的智能等待技術(shù)可在這里應(yīng)用以最大程度降低功耗,但是等待時(shí)間經(jīng)常變化很大,遠(yuǎn)小于操作系統(tǒng)運(yùn)行時(shí)間,所以智能等待

13、會(huì)影響到性能。這些驅(qū)動(dòng)程序常常檢測狀態(tài)寄存器,此時(shí)降低時(shí)鐘速度將節(jié)省一部分電源,但會(huì)對數(shù)據(jù)寫入卡時(shí)間產(chǎn)生輕微影響(多數(shù)處理器循環(huán)用于查詢)。   &nbsp當(dāng)然,問題是要知道何時(shí)能降低時(shí)鐘頻率和電壓而不會(huì)顯著影響性能。作為軟件開發(fā)商,考慮什么時(shí)候降低驅(qū)動(dòng)器和應(yīng)用代碼的時(shí)鐘速度比較難處理,該技術(shù)在多任務(wù)處理環(huán)境中更加富有技巧性。   &nbsp智能關(guān)機(jī)   &nbsp迄今為止,我們只討論了設(shè)備在運(yùn)行時(shí)能做什么,現(xiàn)在讓我們來考慮關(guān)閉時(shí)會(huì)出現(xiàn)什么情況。我們很多人都希望,打開PDA后它會(huì)處

14、于我們上次使用結(jié)束時(shí)的狀態(tài),假如我們正在輸入一個(gè)新的聯(lián)系信息時(shí)關(guān)機(jī),那么我們一周或一月以后重新打開還將在這個(gè)地方。這可以采用智能關(guān)機(jī)程序?qū)崿F(xiàn),該程序能有效地“騙過”任何執(zhí)行應(yīng)用軟件,使其以為設(shè)備根本就沒有關(guān)閉。   &nbsp在用戶按下電源按鈕關(guān)閉設(shè)備時(shí),有一個(gè)中斷給操作系統(tǒng)發(fā)出關(guān)機(jī)信號,然后的動(dòng)作包括保存系統(tǒng)最底層寄存器內(nèi)容。操作系統(tǒng)實(shí)際上沒有關(guān)閉程序,只是把其內(nèi)容(代碼、棧、堆、靜態(tài)數(shù)據(jù))留在存儲器里,然后把處理器置于睡眠模式,關(guān)閉處理器內(nèi)核和外設(shè),但繼續(xù)供電給重要的內(nèi)部電路,如實(shí)時(shí)時(shí)鐘。此外,靠電池支持的DRAM在睡眠模式期間保持自刷新狀態(tài),以使其內(nèi)

15、容完整無缺。   &nbsp再次按下電源按鈕時(shí),一個(gè)中斷發(fā)信號喚醒處理器。喚醒中斷服務(wù)程序(ISR)采用求校驗(yàn)和程序來驗(yàn)證處理器內(nèi)部狀態(tài)恢復(fù)之前DRAM的內(nèi)容仍然保持原樣。由于DRAM應(yīng)含有與關(guān)機(jī)時(shí)一樣的數(shù)據(jù),所以操作系統(tǒng)能直接回到設(shè)備關(guān)閉時(shí)運(yùn)行的線程,就應(yīng)用而言,它甚至根本不知道發(fā)生了什么。   &nbsp說這個(gè)方法省電主要原因是它避免了需要處理器大量計(jì)算且耗時(shí)的重啟工作。一個(gè)復(fù)雜設(shè)備重新啟動(dòng)要花好幾秒時(shí)間,其間系統(tǒng)裝載驅(qū)動(dòng)程序。從用戶的立場來看,這個(gè)時(shí)間是浪費(fèi),因?yàn)樗谶@段時(shí)間實(shí)際上不能用設(shè)備。考慮到需要多次開關(guān)的

16、這種電池驅(qū)動(dòng)裝置,智能關(guān)機(jī)程序有很大意義,一是降低了功耗,二是提高了可用性。   &nbsp智能關(guān)機(jī)另一個(gè)重要特性是在睡眠模式期間可最大程度降低功耗。由于電池驅(qū)動(dòng)設(shè)備會(huì)一整夜或整個(gè)周末放在一邊的桌上,需要電源刷新DRAM和部分處理器外設(shè)接口,所以電池實(shí)際上在睡眠期間也會(huì)損失一些能量,最大限度減少睡眠模式下的功耗可以一次充電用上數(shù)周,而不用每天都給電池充電。   &nbsp減少睡眠模式下的功耗需要分析系統(tǒng)硬件,并確定如何將其設(shè)置為盡可能最低的電源狀態(tài)。大多數(shù)電池驅(qū)動(dòng)系統(tǒng)在睡眠模式期間仍然要給通用I/O引出端供電。這些I/

17、O引出端作為輸入可用做中斷以喚醒設(shè)備,作為輸出則用于給外接外設(shè)進(jìn)行配置。認(rèn)真考慮這些引出端如何配置將對睡眠模式下的功耗產(chǎn)生很大影響。   &nbsp例如把某個(gè)I/O引腳配置成輸出,它將被上拉到Vcc,但如果在關(guān)機(jī)時(shí)把引出端設(shè)置為邏輯0將會(huì)導(dǎo)致電流穿過睡眠模式下的上拉電阻。另外,如果把一個(gè)引腳設(shè)置為輸入而不與輸出端連接,它將會(huì)漂浮引起虛假的邏輯變換,從而增加功耗。重要的是,應(yīng)分析這些情況并適當(dāng)配置引腳。   &nbsp本文結(jié)論   &nbsp有很多技術(shù)可以用來降低電池驅(qū)動(dòng)裝置的功耗,有些簡單易懂,有些則不是如此。幸運(yùn)的是,由于嵌入式裝置中的電源管理越來越重要,設(shè)計(jì)人員未來在很多地方都能得到支持,如已經(jīng)出現(xiàn)的軟件技術(shù)就可以有助于降低功耗。同時(shí),研究人員還在研究能優(yōu)化代碼的編譯器,以進(jìn)一步降低功耗,而且你還可以讓軟件開發(fā)工具自動(dòng)考慮這些電源管理技術(shù)。  &

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論