所有的事物都应该尽量简单,但是不能太过简单。
--阿尔伯特·爱因斯坦
继续上上周的话题,今天来看看ARM的主要IP在PCSA下是如何配合工作的。忘了PCSA是什么的,可以往前翻翻《ARM系列 -- PCSA(一)》。
首当其冲,必须是处理器。开始前先介绍一个集群(cluster)的概念。根据百度百科,“集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性”。
简单说,就是把一些CPU core打包在一起,构成一个CPU集群。集群包含内核外部的逻辑,包括一个共享缓存、snoop控制逻辑、支持通过核心断电进行调试,以及其他基础结构逻辑。所以,cluster的电源域必须在内部所有core打开之前打开,并且只有在所有core关闭后才可以关闭。
下面是ARM给的部分A系列内核的功耗特性:
Core的上电唤醒通常是下面几个事件触发的:
- 系统启动
- 中断控制器(generic interrupt controller,GIC)的中断请求
- OSPM请求
- Always-on域的唤醒
- 调试请求
Cluster的上电唤醒可以是由core上电请求触发,也可以是外部其他请求,比如snoop。
图1 cluster的电源控制
ACINACTM(ACE)或SINACT(CHI)被拉高后,通知cluster不会再发送任何事务给处理器。AINACTS被拉高后,告诉cluster不必通过ACP(accelerator coherency port)接收任何事务。Cluster随后通过缓存清空接口告诉SCP或其它控制逻辑,可以进行缓存清空处理。
STANDBYWFIL2指示cluster处于idle状态,可以做下电操作。当STANDBYWFIL2拉高,意味着:
- 所有core处于WFI
- ACINACTM或SINACT为高
- AINACTS为高
- Cluster内部为静止状态
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发中断给SCP
9)SCP拉低AINACTS
图2 cluster上电顺序
Cluster的下电顺序基本上跟上电相反,但是下电前需要通过软件检查cache是否清空等问题。
图3 cluster下电顺序
Core的电源控制和cluster差不多。
图4 Core的电源控制
STANDBYWFI指示core是否处于WFI(wait for interrupt)状态;WARMRSTREQ和DBGRSTREQ是core的复位请求;DBGPWRDUP表明core是否上电,core上电后该信号需要被拉高,core下电前该信号需要被拉低。
Core的上电和下电顺序如下图,大家自行分析。
图5 core上电顺序
图6 core下电顺序
在ARM的SoC设计中,有一个重要的组件/IP,就是中断控制器(generic interrupt controller,简称GIC)。目前中断架构发展到GICv3,符合GICv3架构的IP有两个,分别是GIC-500和GIC-600。GIC-600采用分布式设计,符合大规模SoC物理实现,我们只看GIC-600跟PCSA相关的内容。关于GIC-600的详细介绍放到以后。
图7 GIC600在系统中的功耗管理
上图是一个2个cluster,每个cluster包含4个core的例子。上图的Distributor,Redistributor,ITS,Collator和Wake Request都是GIC-600的组件。Distributor相当于一个中央处理单元,可以通过Wake Request组件发唤醒请求给SCP;SCP会把core的状态通过cpu\_active信号发给Redistributor,其中redistributor是负责跟cluster通信的组件;除了这些,还有控制时钟和电源的Q-channel。wake\_request和cpu\_active信号是每个core各自一根。
时钟控制的Q-channel可以给SCP,也可以给其它的控制模块,取决于GIC-600在SoC中的逻辑层次和时钟控制策略。电源控制的Q-channel要接给SCP。
ARM体系中,SMMU也是重要的组成部分,对应的IP是MMU-600。其时钟和电源的控制分别如下图:
图8 MMU-600的时钟控制连接
图9 MMU-600电源控制连接
CMN-600是ARM目前最新的SoC内部一致性网格式网络IP,在PCSA下给出的连接建议如下图:
图10 CMN-600电源控制连接
其它设备略去不表了。在PCSA文档的最后,给出了一个设计例子,如下图,不同颜色表示不同电压域,虚线框包围的部分表示可以开关电源,实线框包围的部分表示没有电源开关。
图11 系统案例
Core的power state如下:
Cluster的power state:
GPU的power state:
整个SoC的power state:
作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/uRUSCHWYzH_aSXw6hK-akw
作者微信公众号
相关文章推荐
欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术专栏。