1, 介紹
隨著芯片的集成化程度提升,很多模塊都做到芯片的內部,比如isp、dsp、gpu,這樣做成片上系統(System on Chip,簡稱SoC),好處是整個系統功能更內聚,板級面積會減少,但是芯片的體積卻越來越大。為了減少芯片面積、降低芯片成本、減少芯片功耗,逐漸地提升了芯片的工藝,從而降低了功耗,提升了能耗比。光靠工藝的提升來減少功耗,還不夠。為了更好地功耗管理,ARM提出了功耗控制系統架構(power control system architecture,簡稱PCSA),用來規范芯片功耗控制的邏輯實現。
PCSA基于ARM的組件實現,規范包括:電壓、電源和時鐘的劃分;電源的狀態和模式;ARM電源控制框架和集成規范;ARM特定組件的電源和時鐘集成;帶有低功耗Q-channel和P-channel接口的IP。
前面的文章講述了linux側的功耗軟件管理框架(詳見前面的文章《一文搞懂linux電源管理(合集)》),但是這些軟件功耗管理都是基于芯片的相應功能實現的,接下來我們看一看這個PCSA具體由哪些部分組成,通過這些組成與整個功耗控制框架的學習,了解芯片上的低功耗是如何設計的。
2, 框架
2.1 基于ARM的軟硬件管理框架
基于ARM的功耗軟、硬件管理框圖:
首先用戶發起的一些操作,通過用戶空間的各service處理,會經過內核提供的sysfs,操作cpu hotplug、device pm、EAS、IPA等。在linux內核中,EAS(energy aware scheduling)通過感知到當前的負載及相應的功耗,經過cpu idle、cpu dvfs及調度選擇idle等級、cpu頻率及大核或者小核上運行。IPA(intrlligent power allocation)經過與EAS的交互,做熱相關的管理。
Linux kernel中發起的操作,會經過電源狀態協調接口(Power State Coordination Interface,簡稱PSCI),由操作系統無關的framework(ARM Trusted Firmware,簡稱ATF)做相關的處理后,通過系統控制與管理接口(System Control and Management Interface,簡稱SCMI),向系統控制處理器(system control processor,簡稱SCP)發起低功耗操作。SCP最終會控制芯片上的sensor、clock、power domain、及板級的pmic做低功耗相關的處理。
2.2 功耗控制框架
在SoC設計中,需要一個硬件模塊能夠配合操作系統的功耗管理軟件或驅動,來完成頂層的功耗控制,這個硬件模塊可以是硬件電路,也可以是一個低功耗的處理器。考慮到靈活性,這個硬件模塊一般是一個微處理器核(比如cortex-M0)加上一些外圍邏輯電路做成的功耗控制單元(SCP)。為了SCP能夠完成SoC的功耗管理,又定義了一個功耗控制框架(power control framework,簡稱PCF),PCF包含了一些接口、組件、協議來配合SCP做整個SoC的功耗管理。
PCF是用于構建SoC功耗管理所需的標準基礎設施組件、接口和相關操作方法集合。其中,標準基礎設計組件包括電源、時鐘和接口組件。比如:支持SCP通過軟件接口編程的電源策略單元(power policy unit,簡稱PPU),用于低功耗控制的低功耗接口(low power interface,簡稱LPI)。
1) PPU
PPU實現了軟件控制power domain開關控制的功能,SCP向PPU發起對power domain的開、關操作,其中PPU會通過LPI向power domain發起復位/解復位、時鐘開/關、電源隔離開/關的操作,然后PPU經由電源控制系統狀態機(power control state machine,簡稱PCSM)控制power domain電的開、關。
2) LPI
LPI主要是指ARM的Q-channel和P-channel。Q-channel是ARM公司定義的一個低功耗接口,接口很簡單,只有四根線。從AXI的低功耗接口演變過來的,其用處是控制設備靜止狀態時的時鐘和電源。
控制器可以根據設備的工作狀態或系統狀態,發起低功耗請求。設備可以根據自己的工作狀態,從而決定是否接受請求。相比Q-channel,P-channel把PACTIVE信號加寬了,不再是一根信號,設備可以傳遞更多的工作狀態給控制器。控制器會額外多發出一組PSTATE信號,描述切換power狀態的請求。
2.3 電源域和電壓域
為了更好地對電進行控制,ARM劃分了兩個電相關的概念:電源域(power domain)和電壓域(voltage domain)。電壓域指使用同一個電壓源的模塊合集,如果幾個模塊使用相同的電壓源,就認為這幾個模塊屬于同一個電壓域。電源域指的是在同一個電壓域內,共享相同電源開關邏輯的模塊合集。即在同一個電源域的模塊被相同的電源開關邏輯控制,同時上、下電。一個電壓域內的模塊,可以根據設計需求,拆分到不同電源域。因此,電壓域對應的是功能是dvfs,而電源域的概念對應的是power gating。
如下圖,不同顏色表示不同的電壓域,VBIG是大核處理器的電源供電,VLITTLE是小核處理器的電源供電,VGPU是圖形處理器的電源供電,VSYS是系統電源。虛線框包圍的模塊表示可以做電源開關處理,比如處理器核。實線框包圍的模塊表示不能做電源開關,比如SCP。
審核編輯:湯梓紅
-
ARM
+關注
關注
134文章
9084瀏覽量
367387 -
soc
+關注
關注
38文章
4161瀏覽量
218165 -
Linux
+關注
關注
87文章
11292瀏覽量
209330
原文標題:一文搞懂ARM SoC功耗控制架構
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論