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

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

評論