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。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !