TI DSP应用系统低功耗设计方案
- 应当针对大部分应用代码透明;
- 电源管理器必须支持电压与频率 (V/F) 缩放,并充分利用芯片空闲与睡眠模式;
- 电源管理器必须在应用代码、驱动器以及操作系统本身范围内协调电源事件处理,并在发生特定事件时向客户端发出通知;
- 电源管理特性必须在任何线程环境中可用,并且还必须对特定客户端的多个实例可用(如一个器件驱动器的多个实例);
- 在向客户端发出电源事件通知时,电源管理器必须支持事件处理的延迟完成,并在等待延迟客户端的完成信号的同时通知其他客户端;
- 对具有不同功能的不同平台,电源管理器必须是可扩展的和便携性的。
为满足上述的关键要求,可将电源管理器作为 DSP/BIOS 的附属模块被添加,如图 1 所示。
图 1. 电源管理器分区
电源管理器位于内核之外,其不是系统中的一项任务,而是一系列可在应用控制线程以及器件驱动器环境中执行任务的 API。
这意味着无需修改内核。但在 CPU 时钟与操作系统定时器时钟相耦合的平台上,DSP/BIOS 时钟模块 (CLK) 需要补充例行程序,这对频率缩放非常重要,因为这些例行程序能够作为 PWRM 的客户端程序适应操作系统时钟。
电源管理器写入并读取时钟空闲配置寄存器,并通过控制 CPU 时钟速率及稳压电路的平台特定型功率扩展库 (PSL) [参考资料. 5]直接与 DSP 硬件相连接。PSL 将电源管理器及应用的其他部分与频率和电压控制硬件的低级实施细节相隔离。
电源管理器拥有若干个与应用相关的任务。由设计工程师对其进行静态配置,并在运行时进行动态调用:
- 空闲时钟域 —— 电源管理器提供的接口可使特定时钟域处于空闲状态,从而降低有效功耗。此外,其还可以在 OS 空闲环路 (idle loop) 的适当点提供能自动使 DSP CPU 和高速缓存处于空闲状态的机制。
- 降低引导时间的功耗——电源管理器包含一个钩子机制 (hook mechanism),这使开发人员能够设定省电功能,以便在引导时间实现自动调用。
- 电压及频率 (V/F) 缩放——电源管理器提供的接口可使应用动态更改 DPS 内核的工作电压及频率。因此,应用可利用该特性根据相关的处理要求相应调整功耗。电源管理器 API 可设定应用中的电压是否应随同频率进行缩放,以及在降压 (down-voltage transition) 转换过程中是否可继续执行任务,转换时延由负载而定,有可能会较长;如果处理器在降压转换期间工作正常,则允许继续执行应用;此外,电源管理器还包含用于查询 V/F 设定点属性及时延的 API。
- 睡眠模式——电源管理器包含的配置接口及运行时接口使开发人员可唤醒自定义睡眠模式,以便在非工作状态期间节省电能。
- 电源事件的注册及通知——为了调整整个应用中的 V/F 缩放比例、睡眠模式以及其他事件,电源管理拥有一套注册及通知机制 (registration and notification mechanism),以使诸如应用代码、外设驱动器、封装内容以及 OS 时钟模块等实体能够进行注册,用于通知会影响这些实体的特定事件,例如“即将更改 V/F 设定点”、“完成更改V/F 设定点”、“进入睡眠模式”、“从睡眠模式中唤醒”以及出现“电源故障”等。通知进程 (notification process) 是电源管理器的重要特性。当无需通知时可使用“未登记”功能。
电源管理器 API
表 4 对运行时应用编程接口进行了汇总。
函 数
功 能
PWRM_changeSetpoint
对最新的 V/F 设定点进行初始化更改
PWRM_configure
为 PWRM 设置新的配置参数
PWRM_getCapabilities
在该平台上获取有关 PWRM 性能的信息
PWRM_getCurrentSetpoint
获取当前的有效设定点
PWRM_getNumSetpoints
获取该平台上可用设定点的数量
PWRM_getSetpointInfo
获取设定点的相应频率及电压值
PWRM_getTransitionLatency
获取两个设定点之间比例缩放的时延
PWRM_idleClocks
使特定时钟域立即进入空闲模式
函 数
功 能
PWRM_changeSetpoint
对最新的 V/F 设定点进行初始化更改
PWRM_configure
为 PWRM 设置新的配置参数
PWRM_getCapabilities
在该平台上获取有关 PWRM 性能的信息
PWRM_getCurrentSetpoint
获取当前的有效设定点
PWRM_getNumSetpoints
获取该平台上可用设定点的数量
PWRM_getSetpointInfo
获取设定点的相应频率及电压值
PWRM_getTransitionLatency
获取两个设定点之间比例缩放的时延
PWRM_idleClocks
使特定时钟域立即进入空闲模式
PWRM_registerNotify
注册可在发生特定功耗事件时进行调用的函数
PWRM_sleepDSP
将 DSP 转换至新的睡眠状态
PWRM_releaseDependency
解除此前声明的资源依赖性
PWRM_setDependency
声明对电源的可管理资源具有依赖性
PWRM_unregisterNotify
未注册来自 PWRM 的事件通知
表
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)