子墨祭 · 2023年10月26日 · 四川

【CMN-700】Power management

更多内容:
ARM硬件开发专栏

CMN-700包括几种电源管理能力,要么由外部控制,要么由SoC辅助。CMN-700具有以下电源管理功能:
1.几个不同的预定义电源状态。这些状态包括SLC Tag和Data ram的all/half/none能否被powered up, powered down, or in retention。
retention:数据被保留,但是不能正常读写。
这些power状态降低了静态和动态的功率消耗。
2.支持HNF中的static retention,其中SoC使SLC和SF ram处于retention状态。这样降低了静态功耗。
3.支持in-pipeline的低延迟Data RAM retention控制,可用一个可编程的idle计数器来使SLC RAMs进入到retention状态。(也就是动态retention)

一、Power domains

CMN-700中的power domains包括:
Logic
除HNF SLC Tag和Data ram和HNF SF ram外的所有逻辑。
System Level Cache RAM0
HN-F中的SLC Tag 和 Data RAMs way[7:0]。每个HN-F分区中的RAM可以独立控制。
System Level Cache RAM1
HN-F中的SLC Tag 和 Data RAMs way[15:8]。每个HN-F分区中的RAM可以独立控制。
Snoop filter only mode
只有SF RAM,没有SLC RAM。每个HN-F分区中的RAM可以独立控制。
下图显示了一个电源域配置示例:
1.png
下图显示了另一个电源域配置示例,其中CXSDB组件位于同一个电源域中:
2.png

二、Power domain control

CMN-700逻辑P-Channel控制除RAM和CXS电源域之外的所有电源域。除了控制逻辑域之外,P-Channel还允许HNF软件控制的电源域和逻辑域之间的同步。这个同步是通过一个配置状态来实现的,如下图所示:
3.png
有两条路径转换从OFF到ON状态:
Cold reset
逻辑PSTATE OFF到ON转换也启动所有HNF分区的NOSFSLC到FAM转换。
Exit from HN-F Static Retention state
逻辑PSTATE从OFF转换到CONFIG,这表明CMN-700正在退出Memory Retention状态,并且不启动任何HNF分区power转换。下表包含了域内组件的power模式和相关的PSTATE值。

三、HN-F power domains

HNF有不同的 power状态。不同状态之间的转换就是使能或禁用HNF的不同部分。HNF有三种功率状态:

1.操作状态Operational states,,其中逻辑是打开的和启用的ram是正常运行的
2.功能保留状态Functional retention states,其中logic功能打开,启用的ram处于retention状态。
3.内存保留状态Memory Retention states,其中logic功能关闭,启用的ram处于retention状态。
在这些电源状态下,HNFs以四种模式运行:
FAM
Full Associativity Mode (FAM), SF、SLC全部使能。
HAM
Half-Associativity Mode (HAM), SF使能,SLC的lower half ways([7:0])使能,way[15:8]禁用且处于断电状态。
SFONLY
Snoop filter only mode (SFONLY), SF使能,SLC处于 powered off。
NOSFSLC
SF和SLC全部处于powered off。
(也就是对HN-F内部RAM(SLC0,SLC1,SF)的不同部分使能/禁用)
还有疑问可以看下表:
5.png
状态转换图如下:
6.png
当HNF处于NOSFSLC状态时,SF不跟踪RNF的一致性。因此,由于功率状态转换到NOSFSLC,RNF在flush前必须处于静默。在从NOSFSLC转换到SFONLY、HAM或FAM状态之前,必须刷新RNF cache。
这些HNF功率状态使用配置寄存器写入来进行转换,它必须针对SCG区域中的所有HNF。此外,逻辑域的P-Channel可以启动一个nosfslc的FAM转换。
注:CMN-700在SLC初始化完成之前不接受请求。

四、相关寄存器

cmn_hns_ppu_pwpr:power状态配置寄存器
7.png
cmn_hns_ppu_pwsr:power状态上报寄存器
8.png
:动态retention转换时idle计数器的阈值寄存器
9.png

PS:如何实现power management模块的代码设计呢?
CMN文档描述的很清楚了,可以通过寄存器配置,使其进入不同的power state,然后控制HN-F不同的组件power on/power off/retention。那么核心代码就是设计一个状态机,具体转换条件这里就不详细描述了。
咱们下期见~

推荐阅读
关注数
5
内容数
6
分享IC、FPGA相关知识,找一找,或许有你需要的~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息