11

棋子 · 2022年02月28日

ARM系列 -- PPU

这篇是ARM电源管理系列文章中的一篇。 

之前在讲PCSA的时候提到过PPU(Power Policy Unit),这是一个用于电源管理的组件(也可以说是一个小IP)。系统控制器通过这个组件来管理SoC中其它设备的电源。

image.png

对于PPU在SoC中的集成,可以在前面PCSA的文章中看到,今天重点是看一下PPU里面到底包含哪些内容。

PPU作为一个电源管理的组件,提供了系统控制与设备间的电源握手协议,真正的底层控制部分放在了外面,需要一个额外的状态机辅助完成。这也好理解,对于不同的设备,可能需要的电源控制场景不尽相同,比如有的模块可能只做时钟关断(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。所有的情况如下图:
image.png

上面只是举了一个例子,实际系统中的不同设备的电源控制会更复杂,所以也很难让一个IP顾全这么多。因此需要根据实际需求单独实现底层控制,也就是下图中的PCSM(Power Control State Machine)。诸如电源开关,retention控制(save/restore)这些控制逻辑都是PCSM完成的。

image.png

从上图我们也能看出PPU的接口:

  • 首先,要有系统控制器的配置通路,也就是要有一个寄存器访问接口,这个接口可能是APB或者其它的总线接口
  • 其次,PPU要具备发送中断的能力,处理完一次电源管理事件后要能够通知给系统控制器,没有中断途径的话,系统控制器只能不断的去查询PPU状态,无疑会降低效率
  • PPU与被管理的设备间需要一个通信接口,就是上图中的LPI(Low Power Interface),要么是Q-channel,要么是P-channel,取决于需要实现的具体功能是什么。如果PPU与设备间的接口是Q-channel,那么这个PPU也可以被称作Q-channel PPU;如果PPU与设备间的接口是P-channel,那么这个PPU也可以被称作Q-channel PPU。之所以要加以区分,是因为这两种PPU的配置是不一样的,且支持的模式也不一样,后面会讲
  • PPU还会提供时钟控制,复位和隔离控制(如果需要实现电源关断)给被管理的设备,如果PPU只是辅助完成时钟管理,那么isolation是不需要的
  • 最后,就是与PCSM的接口,PPU通过P-channel来告诉PCSM当前的状态,PCSM根据PPU的状态决定何时控制电源关断,retention控制(如果需要的话)

PPU里面有两个模式:电源模式(power mode)和操作模式(operating mode)。电源模式是一个电源域里逻辑和RAM电源状态的正常组合,以及相关的时钟、复位和隔离控制。而操作模式代表电源模式的配置。这话听起来有点拗口,通俗一点的解释,电源模式就是我们常说的ON/OFF/RET(retention)这些。那为什么还要操作模式呢?对于OFF来说没啥可以再细分的了,但是对于ON或者RET来说,情况也许会复杂,回想一下前面提到的HN-F例子。把这些细分的场景也归入电源模式行不行呢?可以是可以,但是会把事情搞的复杂,还不如用操作模式去描述这些细分场景。PPU里面的电源模式和操作模式是为了理清PPU设计,与UPF里面的power state完全不是一码事,不要混淆(不要问我为什么会混淆…)。

接下来慢慢扒一扒电源模式和操作模式。PPU支持的电源模式见下表,除了ON/WARM_RST/OFF是必须支持的,其它都是可选。大部分电源模式都是比较直观的,除了OFF_EMU和MEM_RET_EMU特别一点。

image.png

  • OFF,logic和RAM电源关闭,全部状态消失,对应的工作场景就是芯片下电停止工作
  • ON,logic和RAM的电源开启,对应的场景是芯片正常工作状态
  • WARM_RST,电源开启,但是logic处于复位状态,对应的场景是芯片某些模块刚刚完成上电启动,等待复位信号被释放,或者芯片工作过程中某些模块需要热复位,恢复到初始状态
  • OFF_EMU,logic和RAM的电源开启,但是电源模式是OFF状态,也就是字面意义的“模拟OFF”,可能的场景之一是,在芯片调试时,某些模块需要被置于OFF状态,但是又不能断电,否则这些模块不能被访问了
  • FULL_RET,logic和RAM处于retention状态
  • LOGIC_RET,logic处于retention,RAM关闭
  • MEM_RET,logic关闭,RAM处于retention
  • 其它的就不一一分析了

再来看操作模式,以下图为例,纵轴是电源模式,横轴是操作模式。绿色代表电源开启,黄色代表retention,红色代表电源关闭,网格代表复位,其中RAM可以分成两个部分,分别以及控制。也就是说RAM可以全开,可以全关,也可以开一半关一半,或者开一半而另一半retention,等等(是不是有点像前面提到的CMN的SLC例子)。比如在电源模式是ON的时候,如果模块全速工作,也就是全部RAM打开,操作模式为OPMODE_02;如果RAM开一半关一半(为了省电),操作模式为OPMODE_01;RAM全部关闭,只保留逻辑部分能正常工作,操作模式是OPMODE_00。相信有了这些讲解,大家都能看懂这张图。

image.png

对于不同的电源模式下,操作模式的编码含义也不一样。有些电源模式没有操作模式,比如OFF,都已经关电了,就没必要再细分了。

PPU的电源模式和操作模式编码如下,PSTATE的低4bit代表电源模式,高4bit代表操作模式。
image.png
image.png

介绍完两种模式,一个自然而然的问题就是,模式间怎么转换?还是分开来说,电源模式的转换分为静态转换和动态转换两种。所谓静态转换,就是通过软件来设置电源策略(power policy),PPU按照设置来执行;动态转换就是通过软件设置一个最小的电源模式,PPU可以动态变换电源模式。前面说过,不管是Q-channel PPU还是P-channel PPU,都支持电源模式,但是在电源模式转换上还是有一些不同,大家可以想想是为什么。

image.png
image.png

作为输入信号,用于结合软件设置启动和控制电源模式转换。在静态转换时,对于Q-channel PPU,除去ON和WARM_RST之间,其它电源状态转换都要求DEVACTIVE为低;对于P-channel PPU,需要遵守优先级规则。动态电源模式转换时,除了更改编程策略外,还可以通过更改电源模式DEVACTIVE输入来实现模式转换。在动态电源模式转换时,PPU还提供一种“锁定”功能。具体的软件操作就不讲了,感兴趣的去看手册。

操作模式的转换只发生在特定的电源模式转换中。有些电源模式没有操作模式。
image.png

关于电源模式和操作模式的设定,系统控制器通过前面提到过的配置接口,写PPU_PWPR(Power Policy Register)这个寄存器来完成。有一些模式组合不被PPU支持,手册里有具体的描述。

重点再来看看PPU的中断,PPU会在下列事件发生后产生中断,当然这些中断也可以通过事先写PPU_IMR(Interrupt Mask Register)寄存器来屏蔽掉。
image.png

前面也提到过,PPU与设备间的LPI接口类型决定了PPU的类型。如果是Q-channel PPU,可以配置有1-8个Q-channel来连接多个设备;如果是P-channel PPU,那么只能配置1个P-channel,连接一个设备。说到这,不得不再唠叨一下PPU在系统中的用法了。PPU与设备间的控制信号有时钟,复位和隔离,关于电源控制部分(power switch和retention)则是在PCSM。在电源控制角度来说,控制模块的电源开关必然要控制这个模块的时钟和复位,但是反过来就不必须。所以,如果只用PPU做时钟管理,不考虑电源开关,在这种情况下,Q-channel就足够了,而且一个PPU最好能够控制多个关联设备;如果是用PPU做电源管理,且场景复杂的话,就必须用P-channel来通信,支持更多的状态,而且一个PPU只能控制一个模块,否则多个模块状态混在一起,其状态数量不可控了。PPU与设备间的控制接口可以通过两种方式设置delay,第一种是在配置产生PPU的时候设置好,第二种是系统控制器在运行过程中写PPU_DCDR(Device Control Delay Configuration Register)寄存器。

对于不太大的SoC,全部的PPU可以全部直接挂在系统控制器下面;SoC设计规模比较大的话,也可以把PPU与被控制设备放在一起,必要的时候,PPU的软件接口可以挂在系统总线上。
image.png

综上,PPU的功能还是挺强大的,尤其是再考虑PPU级联方式,是能够胜任大SoC的电源管理工作的。

原文链接:老秦谈芯
作者:老秦谈芯

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
12469
内容数
1237
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息