嵌入式多處理器叢集的電源管理技術 智慧應用 影音
資策會
IC975

嵌入式多處理器叢集的電源管理技術

MIPS32® 1004K™ 同步處理系統 (CPS)架構圖。MIPS
MIPS32® 1004K™ 同步處理系統 (CPS)架構圖。MIPS

前言:
同步(coherent)微處理器叢集已朝高階嵌入式應用發展。若欲將其建置於SoC中,設計人員必須滿足嚴苛的電源供應和散熱條件,以滿足操作需求。一個可達成低功耗要求的典型方法,是依照應用需求來進行效能縮放(scaling)。對稱式多處理器叢集特別適合這項技巧。近來設計方法的進展,已可實現SoC元件的功率閘控(power gating)和電壓/頻率縮放。在本文中,將利用MIPS科技的MIPS32 R1004K同步處理系統(CPS)來說明嵌入式多處理器系統的電源管理技巧。

本文:
在同步處理器叢集中,每個CPU都有各自的指令集快取(cache)和資料快取,所以同步處理器叢集需要採用特殊技巧來維持每個快取記憶體的內容,以及其共通位址區域間內容的一致性。對嵌入式系統來說,設計人員通常採用snoop-based的方法,來維持記憶體的同步性。此方法是利用局域快取線路(cache line)的擁有權特性,也就是說,當要使用或更改某個局域快取線路時,先對整個叢集進行宣告。

CPU效能縮放能夠最佳化電源運用。MIPS

CPU效能縮放能夠最佳化電源運用。MIPS

CPU電源管理模式中的同步模式架構圖。MIPS

CPU電源管理模式中的同步模式架構圖。MIPS

CPU電源管理模式中的非同步模式架構圖。MIPS

CPU電源管理模式中的非同步模式架構圖。MIPS

CPU電源管理模式中的時脈關閉模式架構圖。MIPS

CPU電源管理模式中的時脈關閉模式架構圖。MIPS

CPU電源管理模式中的電源暫停模式架構圖。MIPS

CPU電源管理模式中的電源暫停模式架構圖。MIPS

叢集CPU狀態與CPU效能轉變對於功耗的影響。MIPS

叢集CPU狀態與CPU效能轉變對於功耗的影響。MIPS

在SoC中,由OS效能等級驅動的頻率和電壓控制的狀態。

在SoC中,由OS效能等級驅動的頻率和電壓控制的狀態。

舉例來說,當一個核心由於執行一個等待儲存的指令操作而取得特定快取線路的擁有權,並打算更改它時,其他CPU也會被通知,並依需求更新其快取線路的內容。與此類似的情況是,若擁有權的特性被允許,在等待中的載入指令集所需執行的局域快取線路存取,其存取的資料仍可維持局域狀態。

當有數個CPU幾乎同時到同一個特定快取線路去存取資料時,他們必須被要求保持資料的一致性。導入的snoop協定需支援“MESI”格式的快取現線路特性,可依修改、排除、分享、或失效等4種不同的需求在每個快取線路上進行標示。複製每個CPU中L1快取的標記(tag),有助於執行管路(pipeline)和snoop請求處理的平行操作。

嵌入式多處理器叢集電源管理技術叢理論到實作

MIPS科技的1004K同步處理系統(CPS)最多可包含4個微處理器核心,每個核心提供兩個獨立的虛擬處理器(VPE)環境和執行緒(thread)。為了促進核心間的snoop流量,路徑請求、命令和序列化作業, CPS採用了一個集中式的同步管理單元(CM)。此CM亦可管理和更高層級的記憶體架構(如L2 快取)之間的資料來回存取。

為了提升資料處理的流量(throughput),設計人員可採用一種特殊的I/O同步單元,以流暢同步區域中資料的進出。一個可程式中斷控制器會負責管理外部中斷到CPU的分佈。此控制器最多能安排256個到CPU的中斷源。

設計人員能為叢集內部事件編程,同時,也能根據可選的活動等級,依edge或 level敏感度,以不同的嚴重度等級,將中斷事件對各個核心進行遮罩或分佈處理。其嚴重度等級包括了遮罩或非遮罩中斷,或用來作為執行緒合格啟動裝置,以支援執行緒通訊。

像是SMP Linux這類的作業系統可直接透過分配虛擬處理器或隨選執行緒(thread on-demand)來支援對稱同步叢集,並在叢集資源間移動執行程序。負載平衡和電源管理特性是這些軟體系統所不可或缺的,並可透過專屬的裝置驅動器與硬體資源進行通訊。一般來說,應用都有效能需求,例如標準化位元率、還有其他的外顯(explicit)需求,諸如顯示品質或格式的使用者選擇、和決定OS提供給應用程式的整體效能等。OS將針對不同的應用需求隨機調整硬體執行緒分配與處理頻率。

根據暫時的需求來調整效能會顯著影響整個CPS的能量消耗。個別CPU的停止活動會以線性方式縮減叢集電源。但是,如果供應電壓是依矽晶載子移動率(carrier mobility)(速度)需求降低的話,降低頻率會對電源造成指數級的影響。除了動態功率減少之外,這也與CMOS技術寄生電容(P ~ CfV2) 的再充電有關,較低的電壓也會減少因為奈米CMOS技術引起的漏電流。

執行緒分配與處理頻率可作為在叢集內的兩個用來調整效能等級的獨立變數,並為CPS的電源管理奠定基礎。因此,CPS中駐留的可程式電源控制器可提供個別CPS元件的作業系統存取和電源管理特性。

CPU電源管理模式

從作業系統的觀點來看,叢集CPUs的特性在於其效能等級和處理器狀態。這兩者是互相連結的,但為了控制目的,對其進行個別處理會比較好。效能等級能被用來調整頻率和電壓,還有,處理器狀態可控制諸如電源狀態和同步行為的CPU活動等級。

在同步叢集中,每個CPU都能設定在某一個電源狀態範圍,此狀態可由叢集電源控制器(CPC)硬體來管理,並根據作業系統的建議執行。這些電源狀態反映了CPU活動和環境互動的不同等級,設計人員能夠依照這些以硬體為基礎的電源模式,直接為操作系統處理器狀態進行建模。一個叢集CPU可提供四種不同的操作模式:同步、非同步、時脈關閉(clock-off)、以及電源暫停(power-down)。

1、同步模式:

此CPU是作為L1快取同步區域的成員,並與於其他處理器交換同步訊息,以維持快取記憶體的同步性。同步管理器會對此CPU以外的核心群針對某特定快取的線路提出snoop的請求。而全域中斷控制器能夠對此CPU送出中斷指令。為維持最佳效能,此CPU和CM、以及此同步區域中其他成員間的溝通,必須保持在一樣的速度。

在同步模式中,設計人員能透過改變頻率,來調整同步區域中所有成員的效能等級。整個叢集的電壓調整,可根據一給定的叢集頻率來進行。電源控制器可防止電源暫停,而由於持續的snoop回應任務,軟體則試圖停用此CPU。利用軟體便能退出同步模式,轉到非同步操作模式。

2、非同步模式:

在此模式中,CPU在同步叢集外執行,同時也未對核心群發送snoop訊息。此外,同步管理器也不會轉送其他同步CPU產生的snoop訊息,但會持續處理對記憶體存取的請求。作為一獨立CPU,其snoop埠未被啟用。一般來說,使用同步區域並在此CPU 上執行的應用程式,會在非同步模式啟動前,就先被暫停或遷移到其他的CPU去執行。全域中斷控制器會持續對此核心執行中斷指令路由。

因為不用與其他CPU耦合,非同步模式中的CPU操作頻率會根據應用程式需求進行個別調整。供應電壓能伴隨頻率一起變更。與叢集電源控制器互動的軟體,能依照作業系統需求將此CPU變為時脈關閉或電源暫停模式。非同步模式特別適合於控制功能運作,以及與同步資料處理系統活動相關的一般任務。這樣的CPU也能夠採用低功率狀態,或甚至電源暫停的執行模式。隨著同步區域中的處理需求增加,在非同步模式中的獨立CPU能夠隨時再回到同步叢集中。

3、時脈關閉模式:

在同步區域外部執行的CPU都能夠採用時脈關閉模式。針對此CPU的時脈分佈在時脈產生器層級就被截斷,並使此CPU和其時脈樹完全停用。因此,CPU對外部事件沒有回應,但仍維持其內部在未時脈關閉前的狀態。而叢集電源控制器能根據系統事件,執行CPU的快速喚醒。

在喚醒後,CPU又重新回到非同步模式操作。在時脈關閉模式中,電源消耗被降低到僅剩漏電流,但漏電流仍能透過調整電壓供應進一步降低。電壓降低的程度是由標準單元暫存器和快取RAM的狀態保留(retention)需求所決定,但也可以依喚醒請求所需的啟動時間而定。如果沒有保留或快速喚醒需求,時脈關閉模式中的CPU就能被轉為電源暫停模式。

4、電源暫停模式:

此CPU會被隔離在週遭環境外,而其他未處於電源暫停模式的核心群仍能繼續運作。晶片上的電源閘控單元與能把供應電壓的連結截斷,因此不需要由外部切斷電源供應。此CPU在電源暫停時會喪失內部狀態,同時在重新供電時,需要一重置和初始化程序才能運作。此時,此CPU都沒有消耗任何動態和漏電流。

設計人員能對叢集電源控制器進行電源暫停順序的程式撰寫,以讓整個系統維持邏輯和電氣功能上的一致性。這包括防止在同步模式中的CPU在離開同步區域前就進入電源暫停模式,以及依據其他核心的請求或系統層級的硬體裝置的干擾就啟動初始化供電順序。當所有CPU都處於電源暫停模式時,叢集電源控制器亦會知道此一情況,並會對目前未使用的同步管理器實施電源暫停程序。此模式中,亦會使像是L2快取的高階記憶體,也同時進入關閉或時脈關閉模式。

CPU模式間轉換

CPU模式間轉變的起始是透過作業系統向同步管理程式暫存器交談、遷移CPU間的執行緒,以及透過在叢集電源控制器(CPC)佇列(queue)中置入指令來進行的。CPC提供有關每個元件的電源狀態回饋,並能通知執行緒所執行的起始程序是否完成。

CPC也能提供硬體互鎖(interlock) over-command 順序,以確保任何時刻都能保持電源和CPU回應的完整性。若所有的CPU都進入電源暫停模式,同步管理器以及L2快取(視情況而定)也會暫停電源。但是,CPC仍必須保持活動,以便在需要時發出恢復供電(power-up)和重置順序的執行命令。

CPS的恢復供電程序包含了數個階段。除了需要的起始化和SMP作業系統的bootstrap執行之外、系統的階段性開啟亦提供了最低的電源使用量,並可在電源開啟重置(power-on-reset)時限制湧入(inrush)電流的流量。

首先,CPU0被供電,並實施一重置順序。之後,CPU0執行啟動碼,並進行同步管理器的程式初始化。當作業系統達到多工執行層級時,OS便能選擇將更多的CPU恢復供電。這些CPU可能會維持非同步模式,以便在獨立的位址空間中執行任務,或是它們會結合位址空間並加入同步區域。其他核心可能仍會保持在隔離與電源暫停狀態。

CPU與CPS效能等級

如之前所述,作業系統可利用CPU效能等級與處理器狀態,來滿足運算處理需求並進行電源管理。每個處理器狀態將決定此CPU可達到的效能等級。顯然,電源暫停和時脈關閉模式代表最低的效能等級。作業系統所需求的不同效能等級直接與CPU操作頻率有關。

同步區域中的成員需以相同的頻率等級來運行,使snoop所造成的延遲能最佳化。然而,對某些應用來說,系統架構可能會在同步執行緒和操作頻率間進行設計上的折衷(tradeoff),以得到最佳化的整體功率消耗。功率與電壓和頻率間的指數相關性,亦即(P~fV2; f=F(V) => P~V(2+k)),能用來決定這些設計上的折衷。更進一步,同步叢集CPU的執行緒的精細度(granularity),(CPS可為每個實體核心提供兩個執行緒),亦能用來決定是否要在低電壓條件下增加執行緒,使運行的耗能最佳化。

設計折衷的其他考量包括處理負載中的動態變更,這可透過增加額外的硬體執行緒、或是電壓/頻率依需求增加來達到運行效果。針對每個特定應用,設計人員必須同時考慮前述兩種選擇的時間常數。為快速達到效能需求,在一個實體CPU核心中的一兩個虛擬CPU可以全速運行,另外一個虛擬CPU則能維持在睡眠狀態,並提早準備以便快速加入同步區域。如此,可觸發更多CPU從其電源暫停狀態中開始恢復供電,或是提高處於時脈關閉狀態CPU的電壓,此CPU之前是維持在電壓保留供應等級。

非同步模式中的CPU能被與同步管理器和同步區域內CPU相關的操作頻率進行單獨控制,設計人員能夠跟著調整操作電壓。

降低CPU中的操作頻率亦有助於減少高階記憶體架構中的運行功率。L2快取對L1快取的重?請求的反應時間的需求變得較鬆散。同樣地,匯流排向SoC的請求也會變得需求較低。針對某給定的效能等級,作業系統能評估L2快取和匯流排橋接器流量的整體需求,並因應需求為這些元件進行時脈產生的重新編程。

OS因應頻率和電壓變更效能等級請求的傳遞,以達到SoC能量消耗的最佳化。OS針對叢集或單一核心效能等級的決定,將會轉換為預定的運行頻率和期待的處理器狀態。CPC、電壓控制、頻率合成、以及時脈分佈可被重新編程,以達到所期待的新的效能等級。可程式時脈準備電路可安排和分割 PLL合成頻率,並決定CPU和介面時脈的速度。操作電壓可從所需的頻率請求、以及所需的復原速度求得。因此,任何短時間的效能等級下滑並不會影響電壓供應。

實體建置的考量

隨機改變SoC子元件間的時脈和電源供應,會對SoC整合工具帶來新的挑戰。先進的EDA設計流程、增強的標準單元和記憶體庫能幫忙實現之前討論的電源管理技巧。在其核心中有四種標準單元的需求─電源閘(power gate)、隔離單元、電平位移(level-shifting)單元和保持電路(retention flops)。

電源閘單元是一種可切換CMOS電晶體,銜接於供應或接地電軌和某設計區域的供應電壓閘之間,能夠對某設計區域進行供應電壓的閘控。這些可透過叢集電源管理器(CPC)來控制。為確保將適當的邏輯等級驅動至主動晶片區域,需以預先定義的隔離值將電源暫停區域的輸出連接到隔離單元。

CPC在暫停一個區域的電源之前,必須先執行那個區域的隔離。它會維持隔離狀態直到穩定電壓又重新建立,同時CPC也會確保該區域能執行適當的功能。

不同電壓供應的區域需要邏輯層電位的轉換才能通訊,因此需要電平位移單元。此外,透過保持電路可以維持電路的狀態。這些保持電路都是具有小驅動力,單獨供電,並具備較高的阻抗值。

保持電路的技巧能消除標準單元區域的漏電流。然而,保持電路的應用會稍微增加矽晶面積。快速喚醒也需要保持指令和數據快取內容,這些會引起漏電流。

EDA設計流程可支援整個設計過程中會用到的這些電源管理技巧的應用。透過這些流程,每個區域的電源意圖(power intent),都會在邏輯設計中以標準化格式個別描述。邏輯模擬會將未供電區域視為高阻抗,並將隔離單元的效應模擬為供電區域。同樣地,邏輯模擬也支援保持電路的行為模式。

設計合成與實體建置可重複使用電源意圖的描述,並可插入相關的標準單元。正規比較工具(Formal comparison tool)可確保實體建置、原始電源意圖、和設計語言三者之間的一致性。CPS使用遵從這些電源意圖的格式來描述其電源意圖,同時與高階控制裝置保持一致,如CPC支援SoC整合工具。

SoC建置人員必須特別注意電軌的大小與電源的一致性。晶片上需要大面積的電軌切換的地方特別需要進行壓降分析,而且必須將焊墊(pad)、接合(bonding)、和封裝特性考慮在內。此外,電壓縮放技巧的應用必須能反映實際的板級電壓網絡的建置(包括可程式穩壓器),以符合系統的設計尺寸。

結論

在MIPS科技1004K CPS這類的嵌入式多處理器叢集中,功率消耗可依照需求透過效能縮放來管理。功耗的降低可藉由動態電壓與頻率變更,以及CPU電源閘控來達成。對稱處理器叢集允許任務和執行緒在實體處理器核心間遷移。

暫時未使用的核心能夠離開同步區域、暫停電源,或是將其電壓降低到保留狀態。此外,核心也可在同步區域外運作,以便在非同步位址空間中完成運作。透過效能等級和處理器狀態,作業系統亦可有效的管理電源。

這些變數能被用來驅動系統的實體電源管理特性。電源控制器可促進實體叢集建置與作業系統間的互動。(本文作者Matthias Knoth是MIPS科技公司設計工程師,擁有德國Chemnitz技術大學電子工程碩士學位。)