K230_功耗管理适配指南
1. 概述
k230平台功耗管理框架分为大核功耗管理和小核功耗管理,两个核独立控制。 大核(rt-smart)主要控制CPU1、AI模块、显示模块、多媒体模块等,小核(linux)主要控制CPU0等。 芯片上电后默认使能所有电源域及时钟,为了减少功耗,因此在uboot-spl阶段关闭了以下电源域及时钟:
- KPU电源、KPU clk、KPU aclk
- VPU电源、VPU clk、VPU aclk、VPU cfgclk
- DPU电源、DPU clk、DPU aclk、DPU pclk
- DISP电源、disp clk
- mclk
同时各设备驱动负责相应的时钟及电源域管理,当用户打开设备时,驱动应打开电源域和时钟,当用户关闭设备时,驱动应关闭时钟和电源域。对于不支持电源域管理的设备,只需要控制时钟。
2. 大核功耗控制
2.1 控制框架介绍
2.1.1 电源管理域
大核功耗控制主要围绕几个电源管理域:
- CPU1
- KPU
- DPU
- VPU
- DISP
每个电源管理域可分别设置频率,其中CPU1和KPU还支持DVFS,其它电源管理域只支持设置频率。电源管理域支持频率为驱动内置,用户可根据自己实际场景进行更改。
2.1.2 控制策略
每个电源管理域可分别设置功耗控制策略,分为四种策略:
- 手动模式,用户可在程序中调用接口手 动配置频率
- 性能模式,锁定最高频率
- 省电模式,锁定最低频率
- 自动模式,根据负载自动切换频率(仅支持CPU1)
2.1.3 热保护
功耗控制支持两级热保护,第一级是超过指定温度后对模块进行频率限制,第二级是超过指定温度后强制模块关闭电源域,两级均支持用户配置。
2.1.4 电源和时钟
功耗控制支持手动对每个电源管理域进行上下电和时钟控制,用户一般不需要手动调用,使用设备时设备驱动会打开电源和时钟,关闭设备时设备驱动会关闭电源和时钟。
2.1.5 CPU1
cpu支持4种策略:手动模式
、性能模式
、省电模式
、自动模式
针对目前门锁和词典笔POC的CPU1功耗优化,主要还是采用手动模式,用户在计算量大的程序段前设置高频,运行完成后设置为低频。对于多进程或多线程应用,每个应用可以锁定最低运行频率。 可通过查看cpu统计信息来调整应用以达到最佳功耗。
2.1.6 KPU
kpu支持3种策略:手动模式
、性能模式
、省电模式
KPU功耗控制主要是通过调整KPU频率和开关电源时钟,通过nncase调用kd_mpi_pm_runtime_runstage
接口告知目前KPU的运行阶段,用户可通过各阶段控制各模块时钟和电源,如在AI使用KPU时,可打开KPU时钟,使用完成后立即关闭时钟(AI2D时钟的控制默认由硬件自动控制)。用户也可根据实际场景,手动设置KPU频率,如要求模型高帧率则设置最大频率,帧率无要求或可满足需求,则设置较低的频率来降低功耗。
2.1.7 DPU
参考 KPU
2.1.8 VPU
参考 KPU
2.1.9 DISPLAY
显示相关部分,内置几种频率组合,如60fps、30fps等,启动时根据不同场景设置好,不支持运行时调整频率,仅支持关闭时钟和关闭电源域
2.2 使用方式
功耗管理框架默认使能,所有域初始为手动模式
,并且频率为系统默认初始值,不影响原系统功能。
2.2.1 使用手动模式
用户可参考以下流程使用