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

電源管理入門:驅(qū)動(dòng)Runtime PM管理

電源管理入門:Power Domain管理

電源管理入門:Hypervisor中的電源管理

電源管理芯片的芯片選擇
介紹電源管理技術(shù)的主要分類
電源管理芯片是什么_電源管理芯片介紹
電源管理芯片的作用
介紹八種常見(jiàn)的電源管理IC芯片
模擬芯片之電源管理芯片介紹

評(píng)論