多核嵌入式系統(tǒng)的節(jié)能機(jī)遇與策略
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文列舉了多核嵌入式系統(tǒng)存在的一些主要局限,并對(duì)解決這些局限的可行方案進(jìn)行了探討。將以一些嵌入式系統(tǒng)為例,指出利用現(xiàn)有架構(gòu)改進(jìn)系統(tǒng)節(jié)能效果的機(jī)遇。多核處理器與新興的嵌入式平臺(tái)的結(jié)合能夠滿足現(xiàn)代嵌入式應(yīng)用所需的高計(jì)算能力。但是,此類嵌入式應(yīng)用需要進(jìn)行高頻切換,這將導(dǎo)致功耗較大、芯片溫度過高,以及電源接地噪聲。開發(fā)人員可以通過本文找出改進(jìn)現(xiàn)代嵌入式系統(tǒng)節(jié)能效果的機(jī)會(huì),并了解實(shí)現(xiàn)電源效率最大化的可行方案。
多核處理器的自主節(jié)能
本文以甲骨文(Oracle)/SunMicrosystem公司的UltraSPARC T1處理器為例展開論述。圖1所示為一款UltraSPARC T1多核嵌入式處理器中的一個(gè)硬件線程的流水線微架構(gòu)。選擇UltraSPARC T1的原因是,其設(shè)計(jì)源代碼、仿真工具及設(shè)計(jì)驗(yàn)證套件均為開源,而且可以從Oracle公司網(wǎng)站上下載。本文將利用此案例討論從哪方面以及通過何種方式實(shí)現(xiàn)節(jié)能。
圖1:Ultra-SPARC T1嵌入式處理器的流水線微架構(gòu)。
圖2顯示了與處理器每個(gè)內(nèi)核相關(guān)的陷阱邏輯單元。陷阱實(shí)現(xiàn)了軟件從低級(jí)到高級(jí)特權(quán)模式(例如從用戶模式到管理或監(jiān)督模式)的控制矢量傳遞。就UltraSPARC T1處理器而言,Tcc指令以及因指令引起的異常、復(fù)位、異步錯(cuò)誤或中斷請(qǐng)求均會(huì)導(dǎo)致陷阱的發(fā)生。
圖2:陷阱邏輯單元。
通常,陷阱會(huì)導(dǎo)致SPARC流水線被沖刷(Flush)。處理器狀態(tài)將被存儲(chǔ)在陷阱寄存器堆棧中,而陷阱處理程序代碼則將被執(zhí)行。控制的實(shí)際傳遞是通過含有每個(gè)陷阱處理程序前八個(gè)指令的陷阱表來實(shí)現(xiàn)的。用于將陷阱傳遞到特權(quán)模式中的表格的虛擬基址在陷阱基址(TBA)寄存器中被指定。表格中的位移則取決于陷阱的類型和當(dāng)前的陷阱級(jí)別。當(dāng)遇到DONE(完成)或RETRY(重試)指令時(shí),陷阱處理程序代碼執(zhí)行完畢。陷阱可能與SPARC內(nèi)核流水線同步或異步。圖2顯示了與SPARC內(nèi)核其他硬件模塊相關(guān)的TLU中的陷阱控制和數(shù)據(jù)流。從IFU、EXU、LSU及TLU傳入的陷阱的優(yōu)先級(jí)最先被解析,解析的陷阱類型被確定。根據(jù)陷阱類型,以及在隊(duì)列中沒有其他更高優(yōu)先級(jí)的中斷或異步陷阱待處理的情況下,系統(tǒng)將向LSU發(fā)送沖刷信號(hào),以提交之前未完成的所有命令。此外,陷阱類型也決定了什么樣的處理器狀態(tài)寄存器需要被存儲(chǔ)到陷阱寄存器堆棧中。之后,將選擇陷阱基址并將其發(fā)往流水線做進(jìn)一步執(zhí)行。
圖3:芯片框圖。
圖3顯示了多核嵌入式處理器的芯片布局。該處理器有可變數(shù)量的內(nèi)核、L2緩存體(bank)、內(nèi)核外浮點(diǎn)單元(FPU)及輸入輸出邏輯,而且它們通過芯片上的網(wǎng)絡(luò)互連。在CASPER仿真環(huán)境中,設(shè)計(jì)師可以對(duì)各種架構(gòu)參數(shù)進(jìn)行修改。
節(jié)能機(jī)遇
對(duì)于上述多核嵌入式處理器,已確定了以下內(nèi)核級(jí)和芯片級(jí)節(jié)能候選元素(PSC):
1.寄存器文件,即線程專用單元。每個(gè)線程都有一個(gè)160雙字(64位)的寄存器文件,而且當(dāng)線程的某個(gè)任務(wù)被阻塞或空轉(zhuǎn)時(shí)可以節(jié)省大量功耗。
2.數(shù)據(jù)緩存未命中時(shí),用以排列數(shù)據(jù)的加載未命中隊(duì)列(LMQ)。線程之間可以共享加載未命中隊(duì)列,但通過這種方法節(jié)省的功耗較少。
3.分支預(yù)測(cè)器。分支歷史表可以是線程專用的,因此可以節(jié)省大量功耗。
4.當(dāng)內(nèi)核中所有線程的所有任務(wù)發(fā)生阻塞或空閑時(shí),或沒有任務(wù)被調(diào)度到內(nèi)核中的任何線程時(shí),整個(gè)內(nèi)核可以節(jié)省大量功耗。
5.內(nèi)核中用于硬件和軟件中斷的陷阱單元。研究結(jié)果顯示,在UltraSPARC T1處理器中,用于典型SPECJBB網(wǎng)絡(luò)處理應(yīng)用的陷阱指令在所有指令中所占的百分比還不到1%。這表明,陷阱單元是非常好的潛在節(jié)能元素。請(qǐng)注意,雖然在大部分時(shí)間內(nèi)其余的陷阱邏輯可能處在節(jié)能模式下,接收陷阱的輸入接收隊(duì)列需一直保持在活躍狀態(tài),但隊(duì)列的功耗可以忽略不計(jì)。
6.在緩存體和輸入輸出緩沖器之間控制數(shù)據(jù)流的用于L2緩存的DMA控制器。
7.內(nèi)核和L2緩存體之間的命令和數(shù)據(jù)隊(duì)列。
8.當(dāng)需要訪問片外緩存或主存儲(chǔ)器時(shí),只有在片上L2緩存有緩存未命中時(shí)才會(huì)被激活的緩存未命中路徑邏輯。
節(jié)能策略
基于上述PSC制定出的自主硬件節(jié)能方案包括電源門控(數(shù)據(jù)不被保留)、時(shí)鐘門控(數(shù)據(jù)在正常操作時(shí)被保留)和DVFS(同步電壓及頻率調(diào)整)。DVFS僅用于整個(gè)內(nèi)核,或類似于DMS控制器、互連網(wǎng)絡(luò)、緩存體、輸入輸出緩沖器或FPU的片上計(jì)算單元這樣的一個(gè)芯片級(jí)組件(圖3)。但是,對(duì)于內(nèi)核中的組件和芯片級(jí)組件而言,電源和時(shí)鐘門控均適用。圖4顯示了推薦的核內(nèi)(局部電源管理)級(jí)和全局芯片級(jí)分層節(jié)能架構(gòu)。在圖4中的虛線上方,局部電源管理單元在內(nèi)核中運(yùn)行,對(duì)電源狀態(tài)寄存器(PSR,與不同的PSC相關(guān))中的內(nèi)容進(jìn)行監(jiān)控,執(zhí)行節(jié)能算法,以及對(duì)相應(yīng)電源控制寄存器(PCR)當(dāng)中的數(shù)值進(jìn)行修改以激活或關(guān)閉節(jié)能模式。片上模擬電壓調(diào)節(jié)器和時(shí)鐘調(diào)節(jié)器將讀取PCR中的內(nèi)容,并通過讀取的數(shù)據(jù)對(duì)PSC上的DVFS、電源門控、時(shí)鐘門控進(jìn)行控制。請(qǐng)注意,LPMU并不直接控制整個(gè)內(nèi)核中的節(jié)能單元(如DVFS)。反之,LPMU將通過內(nèi)核控制狀態(tài)寄存器(CSR)向全局電源管理單元(GPMU)發(fā)送信號(hào),CSR轉(zhuǎn)而通過內(nèi)核控制寄存器(CCR)實(shí)現(xiàn)內(nèi)核級(jí)節(jié)能。內(nèi)核中的電源狀態(tài)寄存器通過陷阱邏輯和解碼器進(jìn)行更新,當(dāng)需要進(jìn)行特定中斷服務(wù)或要對(duì)特定指令進(jìn)行解碼時(shí),陷阱邏輯和解碼器將會(huì)發(fā)出PSC即將激活的信號(hào)。同樣,PSC也可以對(duì)自身的PSR進(jìn)行更新,從而在系統(tǒng)長(zhǎng)時(shí)間不工作(空閑或阻塞狀態(tài),最好在內(nèi)核中對(duì)其進(jìn)行局部監(jiān)控)時(shí)發(fā)出即將節(jié)能的信號(hào)。
圖4:自主硬件節(jié)能邏輯的架構(gòu)。
圖5:全局電源管理單元。
在圖4中的虛線下方及內(nèi)核外部是芯片級(jí)GPMU,它將會(huì)讀取片上傳感器上熱點(diǎn)和電源接地噪聲(它們是全局可觀測(cè)現(xiàn)象)的數(shù)據(jù),并為內(nèi)核及其他芯片級(jí)組件做出相應(yīng)的智能節(jié)能決定。GPMU通過內(nèi)核狀態(tài)寄存器(CSR)和內(nèi)核控制寄存器(CCR)與內(nèi)核及其他組件進(jìn)行交互。整個(gè)內(nèi)核的電源門控、時(shí)鐘門控以及DVFS通過GPMU進(jìn)行控制。圖5展示了GPMU的交互(CR和SR分別表示控制寄存器和狀態(tài)寄存器)。請(qǐng)注意,本文在邏輯上將所有芯片級(jí)組件都視為內(nèi)核。
案例研究:英特爾迅馳中的節(jié)能
英特爾迅馳雙核處理器(Core Duo)局部采用了自主電源管理方案,它是英特爾公司針對(duì)移動(dòng)市場(chǎng)開發(fā)的首款通用芯片多處理(CMP)商用嵌入式處理器。這種內(nèi)核可實(shí)現(xiàn)兩個(gè)主要目標(biāo):首先,在平臺(tái)所能承受的最高溫度下實(shí)現(xiàn)性能的最大化;其次,電池的續(xù)航能力比前幾代處理器更強(qiáng)。
操作系統(tǒng)將英特爾雙核處理器視為兩個(gè)獨(dú)立的執(zhí)行單元,但在與電源管理相關(guān)的所有操作中,平臺(tái)則將整個(gè)處理器視為單一實(shí)體。英特爾選擇將內(nèi)核電源管理與整個(gè)CPU和平臺(tái)的電源管理分開。為了實(shí)現(xiàn)這個(gè)目標(biāo),必須讓電源及溫度控制單元成為內(nèi)核邏輯單元的一部分,而不是像以往那樣作為芯片組的一部分。將電源及溫度管理數(shù)據(jù)流遷移至處理器后,就可以采用一種允許所有內(nèi)核根據(jù)自身需求請(qǐng)求節(jié)能狀態(tài)的硬件協(xié)調(diào)機(jī)制,從而最大化單個(gè)內(nèi)核的節(jié)能效果。CPU將按照兩個(gè)內(nèi)核請(qǐng)求中的最低標(biāo)準(zhǔn)確定并進(jìn)入相應(yīng)的節(jié)能狀態(tài),例如芯片組電源管理硬件和數(shù)據(jù)流的單一CPU實(shí)體。由此,軟件可以按照ACPI協(xié)議對(duì)每個(gè)內(nèi)核單獨(dú)進(jìn)行管理,而實(shí)際的電源管理則遵守平臺(tái)和CPU的共享資源限制條件。多核處理器內(nèi)核之間的相關(guān)性較復(fù)雜,內(nèi)核對(duì)系統(tǒng)級(jí)參數(shù)的作用還不確定,而且ACPI電源管理協(xié)議也不是針對(duì)如此復(fù)雜的多核處理器而開發(fā)的。因此,需要開發(fā)一種新型的電源管理方案,這樣的方案必須能在新興的多核嵌入式處理器中將硬件節(jié)能邏輯和由操作系統(tǒng)控制的調(diào)度更好地整合到一起。
英特爾推出的雙核處理器被分割成三個(gè)域。內(nèi)核、各內(nèi)核的一級(jí)緩存以及局部溫度管理邏輯單元作為電源管理域獨(dú)立運(yùn)行。此外,包括二級(jí)緩存、總線接口及中斷控制器在內(nèi)的共享資源形成另一個(gè)電源管理域。所有域?qū)⒐蚕硗粋€(gè)電源平面和同一個(gè)單核PLL,因此均在相同的頻率和電平下運(yùn)行。與細(xì)粒度節(jié)能方案相比,這是一個(gè)基本限制。但是,每個(gè)域都有獨(dú)立的時(shí)鐘分配(主干(spine))。內(nèi)核的時(shí)鐘分布主線單獨(dú)進(jìn)行門控,從而實(shí)現(xiàn)最基本的內(nèi)核級(jí)節(jié)能方案。只有在兩個(gè)內(nèi)核都處在空閑狀態(tài)且沒有共享操作(總線操作和緩存訪問)的情況下,才能對(duì)資源共享主干進(jìn)行門控。若需要,即使在兩個(gè)內(nèi)核的時(shí)鐘都停止的情況下,也可以將資源共享時(shí)鐘保持在活躍狀態(tài),以便進(jìn)行L2偵聽和中斷控制器信息分析。英特爾Core Duo技術(shù)還引入了包括L2動(dòng)態(tài)調(diào)整在內(nèi)的增強(qiáng)型電源管理特性。為了實(shí)現(xiàn)節(jié)能,系統(tǒng)必須進(jìn)入更低電壓的空閑狀態(tài),而為了達(dá)到這一目的,必須動(dòng)態(tài)地調(diào)整/關(guān)閉L2緩存,從而為DeepC4狀態(tài)做準(zhǔn)備。