Amiya · 2021年06月01日

ARM系列 -- PCSA(二)

 所有的事物都应该尽量简单,但是不能太过简单。
--阿尔伯特·爱因斯坦

继续上上周的话题,今天来看看ARM的主要IP在PCSA下是如何配合工作的。忘了PCSA是什么的,可以往前翻翻《ARM系列 -- PCSA(一)》。

首当其冲,必须是处理器。开始前先介绍一个集群(cluster)的概念。根据百度百科,“集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性”。

简单说,就是把一些CPU core打包在一起,构成一个CPU集群。集群包含内核外部的逻辑,包括一个共享缓存、snoop控制逻辑、支持通过核心断电进行调试,以及其他基础结构逻辑。所以,cluster的电源域必须在内部所有core打开之前打开,并且只有在所有core关闭后才可以关闭。

下面是ARM给的部分A系列内核的功耗特性:

1.png

Core的上电唤醒通常是下面几个事件触发的:

  • 系统启动
  • 中断控制器(generic interrupt controller,GIC)的中断请求
  • OSPM请求
  • Always-on域的唤醒
  • 调试请求

Cluster的上电唤醒可以是由core上电请求触发,也可以是外部其他请求,比如snoop。

2.png
图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取决于具体设计需要:

  1. SCP发出唤醒;
  2. SCP拉低ACINACTM或SINACT;
  3. 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

3.png
图2  cluster上电顺序

Cluster的下电顺序基本上跟上电相反,但是下电前需要通过软件检查cache是否清空等问题。

4.png
图3  cluster下电顺序

 Core的电源控制和cluster差不多。

5.png
图4  Core的电源控制

STANDBYWFI指示core是否处于WFI(wait for interrupt)状态;WARMRSTREQ和DBGRSTREQ是core的复位请求;DBGPWRDUP表明core是否上电,core上电后该信号需要被拉高,core下电前该信号需要被拉低。

Core的上电和下电顺序如下图,大家自行分析。

6.png
图5  core上电顺序

7.png
图6  core下电顺序

 在ARM的SoC设计中,有一个重要的组件/IP,就是中断控制器(generic interrupt controller,简称GIC)。目前中断架构发展到GICv3,符合GICv3架构的IP有两个,分别是GIC-500和GIC-600。GIC-600采用分布式设计,符合大规模SoC物理实现,我们只看GIC-600跟PCSA相关的内容。关于GIC-600的详细介绍放到以后。

8.png
图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。其时钟和电源的控制分别如下图:

9.png
图8  MMU-600的时钟控制连接

10.png
图9  MMU-600电源控制连接

CMN-600是ARM目前最新的SoC内部一致性网格式网络IP,在PCSA下给出的连接建议如下图:

11.png
图10  CMN-600电源控制连接

其它设备略去不表了。在PCSA文档的最后,给出了一个设计例子,如下图,不同颜色表示不同电压域,虚线框包围的部分表示可以开关电源,实线框包围的部分表示没有电源开关。

12.png
图11  系统案例

Core的power state如下:

13.png

Cluster的power state:

14.png

GPU的power state:

15.png

整个SoC的power state:

16.png

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/uRUSCHWYzH_aSXw6hK-akw
作者微信公众号
qrcode_LaoQinTanXin_1.jpg

相关文章推荐

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术专栏
推荐阅读
关注数
23561
内容数
1010
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息