ARM的处理器,在power架构,根据cluster的架构的变化而发生了变化。
一、big-little的power架构
如下图,是big-little的power 架构,整个cluster的所有组件,均使用相同的电压域。用虚线框包围的区域,表示该模块,有单独的power domain。
二、DynamlQ的power架构
arm在推出DynamlQ架构之后,也推出了新的power架构,不然,无法精细化的控制power。如下图所示:
不同的颜色,表示不同的电压域,用虚线框包围的,表示该模块,有单独的power domain。 可以看出,采用DynamlQ架构之后,每个core,有自己的电压域。 相比之前的big-little架构,取消了,很多信号。
左边,是big-little架构下,core与power controller(以下简称PMU)的信号连接:
三、P-Channel 对于P-Channel,有以下的一些信号:
PMU就是通过P-Channel,来和core以及cluster来通信,实现power的控制。
四、power mode
power mode,表示硬件power的状态,分为core的power mode和cluster的power mode。
1、core的power mode
power mode有以下一些模式: 可见,在DynamiQ架构下的power,core的power模式,有多种模式。定义这么多模式,也是为了能够精细化的控制。
比如,core要进入OFF状态,那么core会驱动P-Channel上的PACTIVE信号的0bit为1,PMU发现该bit为1,表示core要进入OFF状态。于是驱动PSTATE为4'b0000,并设置PREQ为1,发起power mode切换请求。core接收到该请求后,如果允许外部的PMU对core下电,会将PACCEPT信号拉高,PMU检测到该信号为高后,就可以将core断电了。 如果core不允许外部的PMU对core下电,会将PDENY信号拉高,PMU检测到该信号为高后,就知道不能对core断电。
2、cluster的power mode
cluster的power mode有如下4种:
比如,cluster要进入OFF状态,那么core会驱动P-Channel上的PACTIVE信号的0bit为1,PMU发现该bit为1,表示cluster要进入OFF状态。于是驱动PSTATE为4'b0000,并设置PREQ为1,发起power mode切换请求。cluster接收到该请求后,如果允许外部的PMU对core下电,会将PACCEPT信号拉高,PMU检测到该信号为高后,就可以将cluster断电了。
如果cluster不允许外部的PMU对cluster下电,会将PDENY信号拉高,PMU检测到该信号为高后,就知道不能对cluster断电。
五、寄存器
为了支持DnyamlQ架构的power精细化控制,arm定义了一些系统寄存器,用来软件控制硬件的power mode。
寄存器分为,对core和cluster。 1、对core
CPUWRCTLR_EL1和 DBGPRCR_EL1,两个系统寄存器。 软件如果写bit0为1,表示要将core下电。当后续的程序执行wfi指令之后,core就会通过P-Channel的pactive,向PMU,发送off请求。
2、对cluster
cluster有以下寄存器: cluster-down寄存器,控制power off和memory retention power 控制寄存器:控制function retention,L3 cache RAM size performance monitor:控制cache部分power off
六、cache的power
DynamlQ架构的cache的power mode,是多种组合。如下图:
就是看tag ram和data ram的上电状态。至于为什么cache,会有这么多种power mode,是因为DynamlQ架构下,cache变大很大。L2 cache成每个core私有的,并且还增加了L3 cache。如果不对cache的power,做精细化的管理,那么功耗,也就上去了。
下图是power mode的转换图:
以下是power mode的编码:
七、总结
为了适应复杂的DynamIQ架构,arm将power的架构也做了很大的修改。其中一点,是引入了P-Channel,实现更负责的power状态控制。以及对硬件,定义了很多的power mode,用于软件来方便的控制,从而实现低功耗。
|