微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何优化嵌入式DSP应用的功耗

如何优化嵌入式DSP应用的功耗

时间:06-06 来源:互联网 点击:

可的技术中的一个子集已包括在 RTOS 中,相关技术包括:闲置、关闭活动电源、器件驱动器通知、内存管理、V/F 缩放。由于设计目标不尽相同,将这些技术构建到 RTOS 中需要很多技巧。设计师必须可以选择混合或匹配子集。关键的设计目标就是高效性、灵活性以及操作系统的松耦合。

TI 的 DSP/BIOS™ 操作系统的电源管理器 (PWRM) 非常适于用作现有 RTOS 的电源管理模块 [参考资料 4]。尽管以下描述的实施是就特定 DSP/BIOS 而言的,但其概念可简单地运用其他操作系统,甚至用于无操作系统的应用环境。

电源管理器的要求

电源管理器实施的关键要求如下:

  1. 管理决策必须由应用触发,而不是操作系统触发;
  2. 电源管理活动应当针对大部分应用代码透明;
  3. 电源管理器必须支持电压与频率 (V/F) 缩放,并充分利用芯片空闲与睡眠模式;
  4. 电源管理器必须在应用代码、驱动器以及操作系统本身范围内协调电源事件处理,并在发生特定事件时向客户端发出通知;
  5. 电源管理特性必须在任何线程环境中可用,并且还必须对特定客户端的多个实例可用(如一个器件驱动器的多个实例);
  6. 在向客户端发出电源事件通知时,电源管理器必须支持事件处理的延迟完成,并在等待延迟客户端的完成信号的同时通知其他客户端;
  7. 对具有不同功能的不同平台,电源管理器必须是可扩展的和便携性的。

为满足上述的关键要求,可将电源管理器作为 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

使

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top