基于嵌入式DSP系統(tǒng)的低功耗優(yōu)化設(shè)計
無線系統(tǒng)及有線系統(tǒng)設(shè)計師均必須重視電源效率問題,盡管雙方的出發(fā)點不盡相同:對于移動設(shè)備而言,更長的電池使用壽命、更長的通話時間或更長的工作時間都是明顯的優(yōu)勢,降低電源要求意味著使用體積更小的電池或選擇不同的電池技術(shù),這在一定程度上也緩解了電池發(fā)熱問題;對于有線系統(tǒng)而言,設(shè)計師可通過減小電源體積、減少冷卻需求以及降低風(fēng)扇噪聲來提高電池效率。人們很少會提到這樣一個事實:提高電源效率還可節(jié)省空間,而節(jié)省的空間可以用來增加能夠提高系統(tǒng)性能的組件,尤其是設(shè)計小組希望添加一個以上處理器時,這一點非常重要。
設(shè)計嵌入式DSP處理器或系統(tǒng)功耗要求嚴(yán)格的系統(tǒng)時,采用DSP專用技術(shù)、操作系統(tǒng)及其支持軟件可以降低功耗。超越傳統(tǒng)技術(shù)的DSP或雙處理器設(shè)計在節(jié)約能量方面表現(xiàn)出色。
功耗基礎(chǔ)知識
互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)電路的總功耗是動態(tài)功耗與靜態(tài)功耗之和:
當(dāng)門發(fā)生邏輯狀態(tài)轉(zhuǎn)換并產(chǎn)生內(nèi)部結(jié)點充電所需的開關(guān)電流以及P通道及N通道同時暫態(tài)開啟引起直通電流時,就會出現(xiàn)動態(tài)功耗。通過以下公式可以估算其近似值:
其中,Cpd為動態(tài)電容,F(xiàn)為開關(guān)頻率,Vcc為電源電壓,而Nsw為轉(zhuǎn)換的比特數(shù)。另外,電壓(Vcc)決定著穩(wěn)定工作狀態(tài)下的最大開關(guān)頻率(F)。上述關(guān)系中包含兩個重要概念:動態(tài)功耗與開關(guān)頻率呈線性關(guān)系,與電源電壓呈二次關(guān)系;最大安全開關(guān)頻率取決于電源電壓。為便于本文討論,將特定的頻率及電壓對稱為“設(shè)定點”。
很顯然,降低CPU時鐘速率將相應(yīng)成比例地降低動態(tài)功耗,由于動態(tài)功耗與電源電壓成二次關(guān)系,在不影響系統(tǒng)性能的前提下,通過降低電壓就可能大大降低功耗。不過,對于特定任務(wù)集,降低CPU時鐘速率也會成比例地延長執(zhí)行該任務(wù)集的時間,因此必須仔細(xì)分析應(yīng)用以確保滿足其實時需求。
靜態(tài)功耗主要是由于晶體管漏電流造成的。一般說來,CMOS電路的靜態(tài)功耗很低,與其動態(tài)功耗相比可以忽略不計。嵌入式應(yīng)用在不工作期間通常會“閑置”CPU時鐘以減少動態(tài)功耗,從而顯著降低總體功耗。而在未來的設(shè)計中必須特別關(guān)注靜態(tài)功耗問題,因為更高性能的新型晶體管的漏電流將顯著提高。
嵌入式系統(tǒng)常用技術(shù)
常用電源管理技術(shù)可以分為兩類:通過早期硬件設(shè)計決策時實現(xiàn),或在系統(tǒng)運(yùn)行時實現(xiàn)。設(shè)計早期的決策對滿足性能及功耗至關(guān)重要,下面列出了設(shè)計中需要考慮的十大要素,其中包括硬件選擇、設(shè)計策略及架構(gòu)選擇。大多數(shù)要素都是嵌入式系統(tǒng)的基本要求,其他要素則需要單獨考慮。盡管下列決策是在設(shè)計早期制定的,但有些仍需在整個設(shè)計周期中進(jìn)行再驗證。如下所列:
1. 選擇低功耗組件;
2. 分割電壓與時鐘域;
3. 支持電壓及頻率調(diào)節(jié)功能;
4. 啟用保持電壓門控功能;
5. 通過軟件利用中斷減少輪詢;
6. 采用分級存儲器模型;
7. 降低輸出負(fù)載;
8. 系統(tǒng)啟動時關(guān)閉非關(guān)鍵資源供電;
9. 盡量減少活動PLL數(shù)量;
10. 使用時鐘分頻器快速變換頻率。
確定系統(tǒng)架構(gòu)以后,設(shè)計團(tuán)隊需要將注意力轉(zhuǎn)向系統(tǒng)運(yùn)行時環(huán)境。以下列出的14項,在設(shè)計過程中要始終關(guān)注其中大部分內(nèi)容:
1. 不需要時則關(guān)閉門控時鐘;
2. 引導(dǎo)過程中主動關(guān)閉不必要的功耗;
3. 僅在需要時用向子系統(tǒng)供電;
4. 激活外設(shè)低功耗模式;
5. 充分利用外設(shè)活動狀態(tài)檢測器;
6. 使用自動刷新模式;
7. 對應(yīng)用進(jìn)行基準(zhǔn)測試來確定必需的最小頻率及電壓;
8. 根據(jù)總體活動情況調(diào)整CPU頻率及電壓;
9. 動態(tài)調(diào)節(jié)CPU頻率及電壓以匹配預(yù)計的工作負(fù)載;
10. 優(yōu)化代碼的執(zhí)行速度;
11. 使用低功耗代碼序列及數(shù)據(jù)模式;
12. 使用代碼覆蓋技術(shù)減少對高速內(nèi)存的需求;
13. 更換電源時進(jìn)入簡化功能模式;
14. 平衡精確度與功耗的關(guān)系。
有經(jīng)驗的設(shè)計團(tuán)隊必須至少在概念上熟悉上述嵌入式系統(tǒng)應(yīng)用設(shè)計要點(其中部分與DSP電路有關(guān))。任何降低功耗的設(shè)計都有可能對性能產(chǎn)生負(fù)面影響或?qū)е孪到y(tǒng)不穩(wěn)定。
DSP RTOS如何滿足低功耗設(shè)計要求
一部分最重要的并得到普遍認(rèn)可的技術(shù)方法可以融合到RTOS中,相關(guān)的技術(shù)包括:閑置、關(guān)閉活動電源、器件驅(qū)動程序通知、內(nèi)存管理、電壓/頻率調(diào)節(jié)。然而,由于設(shè)計目標(biāo)不盡相同,將這些技術(shù)構(gòu)建到RTOS中并不容易。設(shè)計師需要在這些方法中做出選擇,設(shè)計的關(guān)鍵目標(biāo)就是高效性、靈活性以及與操作系統(tǒng)本身的松散關(guān)系。
TI的DSP/BIOS操作系統(tǒng)的電源管理器(PWRM)非常適于用作現(xiàn)有RTOS的電源管理模塊。盡管以下描述的設(shè)計實現(xiàn)是針對DSP/BIOS,但其概念可很容易地運(yùn)用到其他操作系統(tǒng),甚至用于無操作系統(tǒng)的應(yīng)用環(huán)境。
電源管理器的要求
電源管理器設(shè)計的關(guān)鍵要求如下:
1. 管理決策必須由應(yīng)用觸發(fā),而不是操作系統(tǒng)觸發(fā);
2. 電源管理活動應(yīng)當(dāng)針對大部分應(yīng)用代碼透明;
3. 電源管理器必須支持電壓與頻率(V/F)調(diào)節(jié),并充分利用芯片的空閑與睡眠模式;
4. 電源管理器必須在應(yīng)用代碼、驅(qū)動程序以及操作系統(tǒng)本身范圍內(nèi)協(xié)調(diào)電源事件處理,并在發(fā)生特定事件時向客戶端發(fā)出通知;
5. 電源管理特性必須在任何線程環(huán)境中可用,并且還必須對特定客戶端的多個實例可用(如一個器件驅(qū)動程序的多個實例);
6. 在向客戶端發(fā)出電源事件通知時,電源管理器必須支持事件處理的延遲完成,并在等待延遲客戶端的完成信號的同時通知其他客戶端;
7. 對具有不同功能的不同平臺,電源管理器必須是可擴(kuò)展的和可移植的。
為滿足上述的關(guān)鍵要求,可將電源管理器作為DSP/BIOS的附屬模塊添加,如圖1所示。電源管理器位于內(nèi)核之外,它不是系統(tǒng)中的一項任務(wù),而是一組可在應(yīng)用控制線程以及器件驅(qū)動程序環(huán)境中執(zhí)行的API。[!--empirenews.page--]
圖1. 電源管理器分區(qū)
這意味著無需修改內(nèi)核,但在CPU時鐘與操作系統(tǒng)定時器時鐘相結(jié)合的平臺上,DSP/BIOS時鐘模塊(CLK)需要補(bǔ)充例程(routine),這對頻率縮放非常重要,因為這些例程能夠使OS時鐘適應(yīng)PWRM的客戶端。
電源管理器通過寫入并讀取時鐘空閑配置寄存器,并通過控制CPU時鐘速率及穩(wěn)壓電路的特定平臺功率擴(kuò)展庫(PSL),直接與DSP硬件相連接。PSL將電源管理器及應(yīng)用的其他部分與頻率和電壓控制硬件的低層實現(xiàn)細(xì)節(jié)相隔離。
電源管理器擁有若干個與應(yīng)用相關(guān)的任務(wù)。由設(shè)計工程師對其進(jìn)行靜態(tài)配置,并在運(yùn)行時進(jìn)行動態(tài)調(diào)用:
1.空閑時鐘域—電源管理器提供的接口可使特定時鐘域處于空閑狀態(tài),從而降低功耗。此外,它還可以在OS空閑循環(huán)的適當(dāng)點提供能自動使DSP CPU和高速緩存處于空閑狀態(tài)的機(jī)制。
2.降低引導(dǎo)時間的功耗—電源管理器包含一個鉤子機(jī)制(hook mechanism),這使開發(fā)人員能夠設(shè)定省函數(shù),以便在引導(dǎo)時間實現(xiàn)自動調(diào)用。
3.電壓及頻率(V/F)調(diào)節(jié)—電源管理器提供的接口可使應(yīng)用程序動態(tài)更改DSP內(nèi)核的工作電壓及頻率。因此,應(yīng)用程序可利用該特性根據(jù)相關(guān)的處理要求相應(yīng)調(diào)整功耗。電源管理器API可設(shè)定應(yīng)用中的電壓是否應(yīng)隨同頻率進(jìn)行調(diào)節(jié),以及在降壓轉(zhuǎn)換過程中是否可繼續(xù)執(zhí)行任務(wù),轉(zhuǎn)換時延由負(fù)載而定,有可能會較長;如果處理器在降壓轉(zhuǎn)換期間工作正常,則允許繼續(xù)執(zhí)行應(yīng)用;此外,電源管理器還包含用于查詢V/F設(shè)定點屬性及時延的API。
4.睡眠模式—電源管理器包含的配置及運(yùn)行時接口使開發(fā)人員可產(chǎn)生自定義睡眠模式,以便在非工作狀態(tài)期間節(jié)省電能。
5.電源事件的注冊及通知—為了調(diào)整整個應(yīng)用中的V/F調(diào)節(jié)比例、睡眠模式以及其他事件,電源管理擁有一套記錄及通知機(jī)制,以使諸如應(yīng)用代碼、外設(shè)驅(qū)動程序、打包的內(nèi)容以及OS時鐘模塊能針對會影響到他們的特定事件進(jìn)行記錄,以便通知。這些電源事件如“即將更改 V/F 設(shè)定點”、“完成更改V/F 設(shè)定點”、“進(jìn)入睡眠模式”、“從睡眠模式中喚醒”以及出現(xiàn)“電源故障”等。通知進(jìn)程(notification process)是電源管理器的重要特性。當(dāng)無需通知時可使用“未登記”功能。
策略實施
上面已經(jīng)建立了提高電源效率的基礎(chǔ),下一步工作就應(yīng)該確定開發(fā)高效率應(yīng)用的策略,并充分利用OS中的部分方法及支持。
所建議的策略包括以下11個步驟。該策略具有可重復(fù)性:當(dāng)無法滿足電源管理目標(biāo),或者需要采用額外的運(yùn)行時方法才能滿足應(yīng)用的電源預(yù)算時,就可重復(fù)這些步驟。
1. 從最初就考慮到電源效率;
2. 選擇低功耗組件;
3. 對電源進(jìn)行建模和估測,并進(jìn)行相應(yīng)的硬件測試;
4. 針對電源管理和測量設(shè)計具備鉤子機(jī)制的硬件;
5. 構(gòu)建可大幅提高工作效率的軟件;
6. 啟用簡單的電源管理開/關(guān)機(jī)切換;
7. 在無電源管理的情況下也可先進(jìn)入工作;
8. 重復(fù)開啟“開機(jī)”特性,并測量功耗開銷(payoff);
9. 開啟代碼生成優(yōu)化功能、重置代碼及數(shù)據(jù),并調(diào)整“熱點”監(jiān)測;
10. 進(jìn)行校準(zhǔn),以實現(xiàn)頻率及電壓的最低;
11. 激活并應(yīng)用所有的電源管理特性。
選用現(xiàn)成的DSP*估板5509A EVM PLUS板作為測試平臺,該*估板不僅支持V/F調(diào)節(jié),還包含針對DSP內(nèi)核與總體系統(tǒng)電源測量的鉤子機(jī)制。
需要注意的是,EVM作為易于使用的*估平臺,并未在出廠時提供最佳功耗配置。另外,在*估效果時應(yīng)謹(jǐn)記由于其易于配置,所以EVM上測量的總體系統(tǒng)電源數(shù)量就應(yīng)多于通常情況下部署的平臺。EVM還能以DSP內(nèi)核級與系統(tǒng)級兩種方法測量各種技術(shù)的有效性。
步驟1無需解釋。步驟2及4基本上都由這種特殊EVM完成,這充分表明了該平臺的廣泛適用性。步驟3(試驗)在EVM上進(jìn)行,目的是測量各種技術(shù)的效果(如片上與片外存取的內(nèi)核及系統(tǒng)電源、DMA與CPU傳輸?shù)谋容^、空閑外設(shè)及時鐘域的作用等等)。
架構(gòu)
應(yīng)用范例如圖2所示。音頻信號經(jīng)過采樣通過多聲道緩沖串行端口(McBSP)回放到DSP。DSP DMA引擎向McBSP輸入或讀出采樣信號。立體聲音頻數(shù)據(jù)通過RxSplit任務(wù)分離為兩個數(shù)據(jù)流,并在Processing Task中進(jìn)行處理。DIP開關(guān)用于選擇G726編碼/解碼處理或簡單音量控制。兩個聲道隨后在TxJoin任務(wù)中組合,然后輸出至揚(yáng)聲器。
圖2:音頻應(yīng)用范例。
Control(控制)任務(wù)被周期性觸發(fā),以檢查DIP開關(guān)以確定是否需要進(jìn)行模式切換,如改變處理模式或進(jìn)入睡眠狀態(tài)。根據(jù)應(yīng)用模式的不同,Control任務(wù)可能會檢查CPU負(fù)載,如果合適還會更改V/F設(shè)定點。
與電源相關(guān)的關(guān)鍵設(shè)計決定包括:
1. 使用OS線程及阻塞原語(blocking primitive)使時鐘空閑;
2. 使用DMA提高后臺數(shù)據(jù)(background data)傳輸效率。只有在DMA塊中完成傳輸后即中斷CPU,而不是在每次從串行端口導(dǎo)入或讀出數(shù)據(jù)采樣時;
3. 使用共享的外部時鐘控制串行端口(無需對串行端口進(jìn)行重新編程,即可進(jìn)行DSP CPU的頻率調(diào)節(jié));
4. 記錄一次回叫,以便為編解碼器驅(qū)動程序設(shè)定鉤子機(jī)制,這樣當(dāng)應(yīng)用進(jìn)入深度睡眠模式時關(guān)斷編解碼器;
5. 在音頻質(zhì)量下降前使用校準(zhǔn)功能恢復(fù)設(shè)定點頻率(及電壓);
6. 使用電源管理器的時鐘適應(yīng)功能,使周期函數(shù)以特定速率工作跟隨頻率的調(diào)節(jié);
7. 在DSP再引導(dǎo)之間使用電源管理器“深度睡眠”接口。
本文結(jié)論
上面的低功耗設(shè)計策略的總體效果總結(jié)如表1所示,其中:
模式#1為基準(zhǔn)測量,全部使用片外代碼;
模式#2消除所有片上代碼,DSP級節(jié)電效果較小,但板級節(jié)電達(dá)到19%;
模式#3包括一些引導(dǎo)時間節(jié)電配置(如關(guān)閉DSP的CLKOUT信號、未用計時器的自動空閑配置以及關(guān)閉板上LED),以及在BIOS空閑環(huán)路中的閑置,從而可實現(xiàn)25%的DSP內(nèi)核節(jié)電;
模式#4為設(shè)定點在1.4V的條件下降至144MHz時的功耗,在該模式下可進(jìn)行音頻處理,同時仍能滿足實時最低要求,從而實現(xiàn)52%的DSP內(nèi)核節(jié)電;
模式#5為應(yīng)用處于待機(jī)模式下的功耗,該模式配置包括外部編解碼器關(guān)斷、設(shè)定點支持以最小電壓最大頻率快速啟動驅(qū)動、DSP處于門控時鐘深度睡眠模式,該模式下的待機(jī)功耗僅為361?W。
設(shè)計人員可根據(jù)特定應(yīng)用的要求選擇適用的技術(shù)。利用OS的這些支持功能,設(shè)計人員能夠以低開銷方便而可靠地提高應(yīng)用的電源效率。本文討論的電源優(yōu)化策略是一種從嵌入式項目之初即可用于降低與調(diào)節(jié)應(yīng)用功耗的通用模型。當(dāng)測量功耗無法滿足要求或需要采用額外的運(yùn)行時技術(shù)時,上述策略可重復(fù)使用,先期步驟也可重復(fù)進(jìn)行。