1. 關(guān)于PCSA和SCP
SCP直接控制SoC的電源和時鐘,而AP通過硬件和軟件接口協(xié)同管理。
芯片設(shè)計,要完成整個芯片的電源管理,需要軟硬件結(jié)合。一般上層軟件部分交給操作系統(tǒng)(Linux和Android等);下層軟件由SCP固件(Firmware)實現(xiàn),其由MHU,PPU這些模塊構(gòu)成,當(dāng)然Core也需要有相關(guān)的硬件支持。這也就是所謂的分層管理機制。
在PCSA里面,主要規(guī)范的是邏輯實現(xiàn),物理實現(xiàn)部分并沒有在文檔中過多的體現(xiàn)。換句話說,PCSA是給芯片架構(gòu)師和前端設(shè)計師看的。至于物理實現(xiàn),遵循S家和C家的流程。
在SCP中完成SoC的功耗管理(當(dāng)然,SCP不僅僅完成這個工作)。為此,ARM又定義了一大堆的接口,組件和協(xié)議來配合,統(tǒng)稱為“功耗控制框架(power control framework,以下簡稱PCF)”。
上層的應(yīng)用處理器(application processor,簡稱AP)可以通過軟件來給SCP發(fā)起服務(wù)(service)請求,左邊Agent我們可以理解為其它子系統(tǒng)或者IP。作為中間層的SCP是由一個M系列的處理器構(gòu)成的子系統(tǒng),負責(zé)運行固件軟件(firmware),向上可與AP通過設(shè)定好的接口/協(xié)議通信,接收服務(wù)請求,向下控制硬件單元,監(jiān)控傳感器,控制時鐘和復(fù)位,管理電源等等。有了SCP,就能把一些任務(wù)從OSPM中抽離出來,更好的把軟件和硬件隔離,增加了靈活性和安全性。
上圖中的電源管理軟件協(xié)議棧主要分為兩部分,AP的功耗管理和設(shè)備的功耗管理。其中AP的功耗管理又分為idle管理和DVFS兩部分。首先看idle管理,當(dāng)AP處于idle狀態(tài)時,OSPM可以根據(jù)需要關(guān)斷時鐘,下電且retention,或完全斷電等多種操作。
此時要保證斷電的內(nèi)核仍然可由操作系統(tǒng)進行調(diào)度,并且可以被中斷喚醒。還有另外一種技術(shù)hot-plug。在這種情況下,AP核心將從操作系統(tǒng)可用于調(diào)度的池中移除。通過這種技術(shù),內(nèi)核被關(guān)閉,所有中斷和軟件線程被遷移到其它內(nèi)核。這種技術(shù)既可以按需求比例使用,也可以在計算能力因功耗或散熱受到限制的情況下使用。
根據(jù)ARM的定義,功耗控制框架(PCF)是標(biāo)準(zhǔn)基礎(chǔ)設(shè)施組件、接口和相關(guān)方法的集合,可用于構(gòu)建SoC功耗管理所需的基礎(chǔ)設(shè)施。標(biāo)準(zhǔn)的基礎(chǔ)設(shè)施組件包括電源、時鐘和接口組件。上圖中的LPI(low power interface)主要是指ARM的Q-channel和P-channel,PPU(power policy unit)是一個硬件組件,支持SCP通過軟件接口編程。
對于不同的設(shè)備,可能需要的電源控制場景不盡相同,比如有的模塊可能只做時鐘關(guān)斷(clock gating),有的模塊需要實現(xiàn)電源關(guān)斷(power gating),在關(guān)閉設(shè)備電源的情況下,又可以區(qū)分多種細分需求,比如是不是要做邏輯或者存儲的狀態(tài)保留(retention);邏輯和存儲是不是可以分別關(guān)斷等等。各種條件做一下排列組合,可能會有很多種需求。
舉個例子,拿CMN中的系統(tǒng)緩存(HN-F)來說,邏輯部分,snoop filter(SF)部分,SLC RAM部分的電源可以分別控制;SLC RAM部分支持ON/OFF/RET三種電源狀態(tài),而且SLC RAM在物理上分為兩個bank,可以選擇開一個bank,也可以選擇兩個bank全開;SF部分也支持MEM_RET。
從上圖可以看出,SCP是一個完整的小系統(tǒng),該有的組件一個都不少。首先,SCP里面要有一個處理器,并且要具備足夠的處理能力。比如要能夠管理AP在idle狀態(tài)下的功耗;要能支持中斷,以及中斷優(yōu)先級排序;要支持調(diào)試功能;要能夠可信操作,等等。既然有了處理器,那就要有ROM,用于安全啟動,還要有RAM,運行固件時需要。
如果要支持DVS,就要有圖中的Voltage Regulator Control單元。為了配合DFS,還要有時鐘控制單元,用于管理PLL以及輸出時鐘信號。Messaging interface適用于OSPM和SCP之間通信的接口,常用的有mailbox和doorbell兩種方式。關(guān)于AP與SCP通信,有一套完整的協(xié)議來支持
PPU是為了控制SoC電源域用的,具體的數(shù)量和位置可以根據(jù)實際需要來定,比如可以做成分級式的或者分布式的。首先,PPU要提供一個配置接口給SCP,用于功耗策略控制和配置,目前用的是APB。其次,PPU與設(shè)備之間的控制接口,包括低功耗接口(low power interface,簡稱LPI),若干組Q-channel和一組P-channel,還有時鐘/復(fù)位控制。最后,還有一個與功耗狀態(tài)機之間的接口,P-channel。
PPU支持的power mode如下,其中ON/OFF/Warm Reset是必須支持的,其它備選。各種mode之間的切換,PPU配置,寄存器說明等細節(jié)請參考PPU的文檔。
電源控制部分和時鐘部分類似,就是多了一個上面提到的PPU。多提一句,PPU可以與被控制部分放在一起,也就是分布式設(shè)計。
Cluster的上電過程如下上圖,圖中的delay取決于具體設(shè)計需要:
SCP發(fā)出喚醒;
SCP拉低ACINACTM或SINACT;
SCP對PPU操作:
1)PPU打開cluster的電源開關(guān)
2)PPU拉高ISOLATEn,無效isolation cell
3)PPU拉高CLKEN,使能clock gating
4)PPU拉低RESETn,使cluster進入復(fù)位
5)PPU發(fā)出Q-channel靜止退出的請求
6)PPU拉高RESETn
7)PPU等待Q-channel握手返回
8)PPU發(fā)中斷給SCP9)SCP拉低AINACTS
關(guān)于SCP的系統(tǒng)啟動:
2. 關(guān)于PSCI和SCMI
PSCI(Power State Coordination Interface),翻譯一下就是“電源狀態(tài)協(xié)作接口”。從名字就能直觀看出來,PSCI是一套電源管理的標(biāo)準(zhǔn)接口,可用于操作系統(tǒng)在ARM設(shè)備上以不同權(quán)限級別監(jiān)控管理電源。
PSCI提供一套API來協(xié)調(diào)電源管理,如下:
PSCI_VERSION:可以調(diào)用此API得到當(dāng)前PSCI的版本信息;
CPU_SUSPEND:OSPM調(diào)用此API使處理器核進入低功耗模式;
CPU_OFF:此API用于hotplug,從系統(tǒng)中動態(tài)移除某個處理器核。被CPU_OFF移除的處理器核只能通過CPU_ON再次加載。與CPU_SUSPEND不同的是,這個接口函數(shù)不需要返回值;
CPU_ON:此API用于動態(tài)加載處理器核;
AFFINITY_INFO:此API允許調(diào)度方查詢親和實體(affinity instance)的狀態(tài);
MIGRATE:用于將受信任的操作系統(tǒng)(trusted OS)遷移到另一個處理器核,從而原處理器核可以調(diào)用CPU_OFF關(guān)閉電源;
MIGRATE_INFO_TYPE:允許調(diào)用方識別受信任操作系統(tǒng)中存在的多核支持級別,通過返回值可以判定受信任操作系統(tǒng)是否必須運行在單一處理器上,是否支持遷移;
MIGRATE_INFO_UP_CPU:指示受信任的操作系統(tǒng)當(dāng)前的位置;
SYSTEM_OFF:系統(tǒng)關(guān)閉;
SYSTEM_RESET:系統(tǒng)冷復(fù)位;
SYSTEM_RESET2:此API是對SYSTEM_RESET的擴展;
MEM_PROTECT:此API確保內(nèi)存在交給操作系統(tǒng)加載程序之前被重寫,從而提供防止冷重啟攻擊的保護;
MEM_PROTECT_CHECK_RANGE:此API用于檢查某段內(nèi)存范圍是否受MEM_PROTECT保護;
PSCI_FEATURES:此API允許調(diào)用方檢測已實現(xiàn)的PSCI函數(shù)及其屬性;
CPU_FREEZE:此API將處理器核設(shè)置于低功耗狀態(tài)(依賴具體設(shè)計實現(xiàn))。與CPU_SUSPEND和CPU_DEFAULT_SUSPEND不同,中斷不能喚醒該處理器;與CPU_OFF也不同,不需要遷移;
CPU_DEFAULT_SUSPEND:此API將處理器核設(shè)置于低功耗狀態(tài)(依賴具體設(shè)計實現(xiàn)),與CPU_FREEZE的調(diào)用參數(shù)不同;
NODE_HW_STATE:此API允許直接從電源控制器或電源控制邏輯確定節(jié)點的電源狀態(tài)。與AFFINITY_INFO不同,此API返回電源狀態(tài)的物理視圖;
SYSTEM_SUSPEND:此API相當(dāng)于CPU_SUSPEND到最深的低功耗狀態(tài),但實際系統(tǒng)中有可能實現(xiàn)比CPU_SUSPEND更深的低功耗狀態(tài),比如支持RAM掛起;
PSCI_SET_ SUSPEND_MODE:此API允許設(shè)置CPU_SUSPEND用于協(xié)調(diào)電源狀態(tài)的模式;
PSCI_STAT_RESIDENCY:此API返回自冷啟動后平臺處于某個電源狀態(tài)的時間;
PSCI_STAT_COUNT:此API返回自冷啟動后平臺使用某個電源狀態(tài)的次數(shù);
SCP和AP之間有一個通信接口。這個通信接口在硬件上可以通過共享存儲和MHU(Message Handling Unit)實現(xiàn);在軟件上,通過定義一組通信協(xié)議來實現(xiàn)。關(guān)于MHU需要查硬件寄存器手冊。
SCMI(System Control and Management Interface)。SCMI是用于系統(tǒng)管理的一組獨立于操作系統(tǒng)的軟件接口,包括以下幾個方面:
電源域管理
性能管理
時鐘管理
傳感器管理
復(fù)位管理
電壓域管理
關(guān)于傳輸,可以用共享存儲方式來保存AP與SCP之間的消息。通信的流程可以采用中斷,doorbell的方式,也可以采用輪詢的方式去主動查詢消息通道的狀態(tài)。采用中斷方式的通信流程如下圖:
image.png
3. 關(guān)于芯片SoC設(shè)計中的一些要點
SCP子系統(tǒng)一般是在Always-on區(qū)域,也就是休眠的時候不下電,除非整機關(guān)機才下電。
SCP有獨立的M核硬件,所以需要設(shè)計中斷,RAM內(nèi)存映射區(qū)域的使用
SCP會通過I2C連接PMIC硬件對系統(tǒng)中其他硬件模塊上電,一般按照電源域為單位,按一定順序上電
SCP通過Mailbox跟AP或者其他異構(gòu)核子系統(tǒng)通信,軟件上使用SCMI+SMT協(xié)議,硬件上使用MHU或者PL320,主要就是為了觸發(fā)中斷+共享內(nèi)存
設(shè)計SCP的硬件接口,例如I2C四根線,占四個接口
低功耗主要就是休眠和省電模式的設(shè)計,需要分析出來耗電多的子系統(tǒng)進行關(guān)閉,一般通過PMIC電源開關(guān),clock的開關(guān),硬件模塊自己支持的低功耗模式設(shè)置等
對于A核的休眠需要注意DDR中的數(shù)據(jù),可以有DDR PHY硬件控制進入retention mode,一些開機DDR訓(xùn)練參數(shù)輸出保存到Always-on的RAM中去。
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19100瀏覽量
228815 -
電源管理
+關(guān)注
關(guān)注
115文章
6140瀏覽量
144106 -
RAM
+關(guān)注
關(guān)注
8文章
1354瀏覽量
114444 -
芯片設(shè)計
+關(guān)注
關(guān)注
15文章
993瀏覽量
54773 -
PCF
+關(guān)注
關(guān)注
0文章
32瀏覽量
20865
原文標(biāo)題:電源管理入門-21 芯片設(shè)計中的電源管理
文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論