<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > DSP系統(tǒng)電源管理技術(shù)

          DSP系統(tǒng)電源管理技術(shù)

          作者: 時間:2011-10-08 來源:網(wǎng)絡(luò) 收藏

          在便攜式應(yīng)用中,低功耗是產(chǎn)品能否獨樹一幟的關(guān)鍵所在,其決定著產(chǎn)品的尺寸大小與操作時間。舉例來說,如果您在跨越大洋的飛行時選擇便攜式DVD播放器作為消遣,那么電池壽命將會成為您的首選標準之一。在本文中,我們將集中討論許多更為常用的基于軟件的。首先,我們從講解某些可用于嵌入式開始,并談?wù)勂湓趯崟r應(yīng)用中會遇到的諸多難題。效率既由硬件設(shè)計與組件選擇決定,同時也由基于軟件的運行時決定。本文后半部分將集中展示如何將技術(shù)子集成到用于數(shù)字信號處理器()的實時操作(RTOS)中,從而使應(yīng)用開發(fā)人員選擇出可滿足其應(yīng)用要求的專用技術(shù)。我們將以德州儀器公司(TI)的(TI) /BIOS操作為作為實例,顯示運行時電源軟件技術(shù)的實施方法。   運行時電源管理技術(shù)

          本文引用地址:http://www.ex-cimer.com/article/150132.htm

            盡管我們討論的是某些可擴大標準多線程讀取操作系統(tǒng)(OS)的特定電源管理技術(shù),但應(yīng)當強調(diào)指出的是,采用搶先式(preemptive)的多線程讀取OS本身常常能夠?qū)崿F(xiàn)顯著的電源節(jié)約。不利用OS的實時應(yīng)用常常要求應(yīng)用周期性探詢接口以檢測事件。從電源角度看,這樣的效率是相當?shù)偷?。使用OS可使應(yīng)用能夠利用中斷驅(qū)動模式,其中程序就會在需要的時候開始執(zhí)行,以響應(yīng)外部事件。此外,當基于OS的應(yīng)用沒有可做的事情時,其就會進入空閑線程,這時則可啟動低功率操作模式,以減少功耗。

            但是,操作系統(tǒng)除了能簡單地為內(nèi)核啟用空閑模式之外,其還需要提供復(fù)雜得多的電源管理支持。在實踐中,大量功率被周邊設(shè)備所消耗,可能是片上器件,也可能是外部設(shè)備,此外存儲器也會消耗大量功率。任何電源管理方法都應(yīng)當具備管理外設(shè)功耗的支持,這是至關(guān)重要的。此外,電壓與功耗之間的平方關(guān)系意味著,更高效的方法是在要求較低電壓的較低時鐘速率上執(zhí)行代碼,而不是先以最高的時鐘速率執(zhí)行而后再轉(zhuǎn)為空閑。我們將概括講解在操作系統(tǒng)中實施電源管理支持的眾多機遇:

            系統(tǒng)上電行為:

            處理器及其片上外設(shè)一般均以最高時鐘速率全面上電啟動。不可避免的是,有些資源的供電啟動還尚不需要,或者根本就不會在應(yīng)用過程中用到。舉例而言,MP3播放器就很少使用其USB端口與PC進行通信。在啟動時,操作系統(tǒng)必須為應(yīng)用提供一種調(diào)節(jié)系統(tǒng)的機制,從而關(guān)閉不必要的電源消耗器件或使之處于空閑狀態(tài)。

            空閑模式:

            CMOS電路中的有效功耗只有在當電路進行時鐘計時的情況下才發(fā)生。通過關(guān)閉不需要的時鐘,可以消除不必要的有效功耗。在等待外部事件時,大多數(shù)DSP都融入了暫時終止CPU有效功耗的機制。CPU時鐘的閑置通常由停止或閑置指令觸發(fā),其在應(yīng)用或操作系統(tǒng)閑置時進行調(diào)用。一些DSP進行多個時鐘域分區(qū),可以使這些域分別處于空閑狀態(tài),以中止未使用模塊中的有效功耗。例如,在TI的TMS320C5510 DSP中,可以有選擇性地使6個時鐘域閑置,其中包括CPU、高速緩存、DMA、外設(shè)時鐘、時鐘生成器,以及外部存儲器接口。

            除了支持閑置DSP及其片上外設(shè)之外,操作系統(tǒng)還必須提供用于閑置外部周邊設(shè)備的機制。例如,一些編碼譯碼器具備可以被激活的內(nèi)置低功率模式。我們面臨的一個挑戰(zhàn)是類似看門狗定時器這樣的外設(shè)。通常情況下,看門狗定時器應(yīng)根據(jù)預(yù)定義的時間間隔提供服務(wù),以避免其激活。這樣,減緩或中止處理的電源管理技術(shù)就可能無意中導(dǎo)致應(yīng)用故障。因此,該OS應(yīng)當使應(yīng)用在睡眠模式期間禁用此類外設(shè)。

            斷電:

            盡管空閑模式消除了有效功耗,但靜態(tài)功耗即便在電路不進行切換的情況下也會出現(xiàn),這主要是由于逆向偏壓泄漏(reverse-bias leakage)造成的。如果系統(tǒng)包括的某個模塊不必隨時供電,那么我們就可以通過讓操作系統(tǒng)僅在需要時才為子系統(tǒng)上電,從而減少功耗。到目前為止,嵌入式系統(tǒng)開發(fā)商對最小化靜態(tài)功耗投入的工作極少,因為CMOS電路的靜態(tài)功耗非常低。但是,新型、具有更高性能的晶體管使電流泄漏顯著增加,這就要求我們對可降低靜態(tài)功耗及更復(fù)雜的睡眠模式給予新的關(guān)注。

            電壓與頻率縮放(frequency scaling)有效功耗與切換頻率成線性比例,但與電源電壓成平方比。以較低的頻率運行應(yīng)用與在全時鐘頻率上運行該應(yīng)用并轉(zhuǎn)入閑置相比,談不上節(jié)約了多少功率。但是,如果頻率與平臺上可用的更低操作電壓兼容的話,那么我們就可能通過降低電壓來實現(xiàn)顯著的節(jié)約,這正是由于上述平方關(guān)系的緣故。這也使人們就如何通過電壓縮放來節(jié)約功率進行了大量的學(xué)術(shù)研究。

            盡管電壓縮放是一種潛在的、非常誘人的、降低功耗的方法,但在現(xiàn)實世界的應(yīng)用中我們對其加以利用時應(yīng)當小心。這是由于我們需要完全了解該系統(tǒng)是否仍能滿足它的實時最后期限。降低電壓(進而降低CPU頻率)將改變給定任務(wù)的執(zhí)行時間,從而有可能導(dǎo)致人物錯過實時最后期限。即便新頻率與最后期限兼容,但如果開關(guān)頻率及電壓的等待時間太長,還是會出現(xiàn)問題。影響等待時間的因素包括如下:

            * 對穩(wěn)壓器進行再編程所需時間

            * DSP能否在電壓更改期間繼續(xù)執(zhí)行其他任何代碼

            需要對外設(shè)進行再編程,如串行端口或外部存儲器接口,與接收不同始終來源的周邊外設(shè)相接。例如,CPU 時鐘速率降低可能要求減少訪問外部存儲器的等待狀態(tài)數(shù)量。

            對用于生成操作系統(tǒng)時鐘報時信號的計時器進行再編程的可能性,將影響操作系統(tǒng)時基的絕對正確性。

            盡管電壓縮放實際等待時間會根據(jù)所選DSP以及需要再編程外設(shè)的數(shù)量而不同,但在許多系統(tǒng)中,等待時間僅為幾百微秒甚至幾毫秒。在許多實時應(yīng)用中,這將使電壓縮放不切實際。盡管存在上述弱點,但僅在某些可事先預(yù)見的模式下,那些需要完全處理功率的應(yīng)用,還是有可能利用電壓縮放的。例如,便攜式音樂播放機可利用DSP進行MP3譯碼及用戶接口要求的一般控制處理。如果僅MP3譯碼要求完全時鐘速率,那么DSP便可在執(zhí)行用戶接口功能時降低其電壓,而僅在音樂數(shù)據(jù)開始流向DSP時才以完全功率工作。

            在DSP RTOS中實施電源管理

            上述電源管理技術(shù)的一個子集已包括在DSP的RTOS中。為了更好地說明如何將電源管理構(gòu)建到RTOS中,我們將更詳細地對實施進行總體討論。

            正如我們在前面討論中看到的那樣,特定系統(tǒng)減小功耗的方法主要取決于應(yīng)用的性質(zhì)以及DSP和周邊外設(shè)提供的選項。因此,關(guān)鍵的設(shè)計目標就是高效性及靈活性。盡管下面所描述的實施是就特定RTOS而言的,但其概念可簡單地運用其它操作系統(tǒng),甚至用于無操作系統(tǒng)的應(yīng)用環(huán)境。

            電源管理器(PWRM)的要求

            首款電源管理器實施的關(guān)鍵要求如下:

            * 電源管理動作是應(yīng)用觸發(fā)而不是操作系統(tǒng)觸發(fā)的。更改DSP操作模式或功能的主要決策由應(yīng)用作出,并由PWRM調(diào)用推動執(zhí)行。但操作系統(tǒng)可以(也應(yīng)當)自動采取行動以節(jié)電,只要該行動不影響應(yīng)用即可。例如,PWRM應(yīng)當在CPU閑置時自動閑置CPU時鐘。

            * 電源管理動作由應(yīng)用的控制部分觸發(fā),但應(yīng)當對大部分應(yīng)用代碼均為透明的。例如,具有極高價值的、優(yōu)化的DSP算法不必重寫便可在管理的電源環(huán)境中工作。

            * 電源管理器必須支持電壓與頻率(V/F)縮放,還必須充分利用芯片閑置與睡眠模式。

            * 電源管理器必須協(xié)調(diào)整個應(yīng)用過程中的電源事件處理(如應(yīng)用代碼、驅(qū)動器以及操作系統(tǒng)本身),并在特定事件發(fā)生時向已注冊要求獲得通知的客戶發(fā)出通知。

            * 電源管理特性必須在任何線程環(huán)境中可用,還必須對特定客戶的多個實例可用(如一個編碼譯碼器驅(qū)動器的多個實例)。

            * 在向客戶發(fā)出電源事件通知時,電源管理器必須支持事件處理的延遲完成,并在等待延遲客戶的完成信號同時通知其他客戶。

            * 電源管理器必須對具有不同功能的不同平臺是可擴展的和便攜性的。

            電源管理模塊(PWRM)

            稱作PWRM的電源管理器作為DSP/BIOS的一個附屬模塊被添加,如圖1所示。




            從概念上說,電源管理器與內(nèi)核并行;其并非系統(tǒng)中的另一項任務(wù),而是作為一系列在應(yīng)用控制線程以及器件驅(qū)動器環(huán)境中執(zhí)行的API而存在的。無需進行內(nèi)核修改便可合并到PWRM中;但在CPU時鐘與操作系統(tǒng)計時器時鐘相聯(lián)結(jié)的平臺上,DSP/BIOS時鐘模塊(CLK)要進行補充例行程序,以使其根據(jù)頻率縮放事件調(diào)整操作系統(tǒng)時鐘(作為PWRM的客戶)。PWRM寫入并讀取時鐘空閑配置寄存器,并通過控制CPU時鐘速率及穩(wěn)壓電路的針對不同平臺的功率擴展庫(PSL)直接與DSP硬件相連接。PSL將PWRM及應(yīng)用的其他部分與頻率及電壓控制硬件的低級實施細節(jié)相隔離。

            電源管理器的作用在于管理DSP/BIOS應(yīng)用中所有與電源相關(guān)的事項,既有應(yīng)用開發(fā)人員靜態(tài)配置的,也有在運行時動態(tài)調(diào)用的:

            電源管理操作的靜態(tài)配置。PWRM支持DSP/BIOS配置工具為一些電源管理操作提供設(shè)計時選項。例如,開發(fā)人員可配置閑置功能,插入DSP/BIOS閑置環(huán)路中,以自動閑置DSP緩存及CPU;或配置節(jié)電功能,在導(dǎo)入時自動調(diào)用,以便閑置不必要的外設(shè)或子系統(tǒng)。

            電源管理API:

            PWRM提供了API,使開發(fā)人員能夠閑置特定的時鐘域,以調(diào)用定制睡眠模式,并動態(tài)更改DSP CPU的操作電壓及頻率。憑借新型API系列,應(yīng)用還可指定是否應(yīng)將電壓與頻率同時縮放,是否可在電壓降低轉(zhuǎn)換過程中繼續(xù)執(zhí)行,以及V/F設(shè)置點屬性及等待時間的查詢。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();