1、基 于 嵌 入 式 Linux 的 智 能 手 机 省 电 设 计2013 年 2 月 22 日 来 源 :大 比 特 半 导 体 器 件 网 每 个 系 统 要 正 常 运 行 都 有 赖 于 CPU 的 性 能 , 系 统 软 件 , 中 间 件 一 集 各种 系 统 策 略 等 等 , 智 能 手 机 也 是 一 样 。这 篇 文 章 主 要 探 讨 了 给 智 能 手 机 选 择 合 适 的 CPU, 以 及 在 手 机 电 源 管 理中 的 动 态 电 源 管 理 (DPM) 和 自 适 应 电 压 调 整 (AVS) 技 术 。 最 后 , 我 还 对 手机 软 件 设 计 进 行
2、 一 点 优 化 工 作 , 实 现 了 软 件 的 节 能 设 计 。引 言智 能 手 机 中 包 含 了 很 多 耗 能 设 备 , 诸 如 MP3、 MPEG- 4、 Wi-Fi、 数 码相 机 、 3D 游 戏 等 等 。 在 手 机 电 池 容 量 还 没 有 实 现 质 的 飞 跃 的 前 提 下 , 我们 不 得 不 考 虑 手 机 电 源 节 能 的 问 题 。 我 主 要 通 过 了 以 下 四 个 方 面 来 阐 述 在 基 于Linux 平 台 上 的 智 能 手 机 的 解 决 方 案 。CPU 的 选 择尽 管 现 在 有 了 各 种 在 不 过 多 加 重 功 耗
3、负 担 的 前 提 下 提 高 性 能 的 技 术 , 但 用 一 个 芯 片 来 处 理 这 么 多 各 种 各 样 的 任 务 , 恐 怕 已 经 不 是 一 个 很 好 的 选 择了 。 一 是 因 为 这 些 功 能 对 芯 片 处 理 功 能 的 要 求 可 能 各 不 相 同 , 二 是 因 为 一个 负 担 着 如 此 众 多 任 务 的 芯 片 势 必 需 要 很 高 的 速 度 , 降 低 功 耗 变 得 很 困 难 。在 这 种 情 况 下 , 多 CPU 系 统 (MPCore)成 为 一 个 必 然 的 趋 势 。 多 CPU 系 统 的 一 个 明 显 的 优 势 是
4、 : 针 对 不 同 的 任 务 处 理 需 要 , 不 同 的 CPU 可 以各 尽 其 职 , 将 自 身 的 优 势 充 分 发 挥 , 由 此 带 给 手 机 最 优 化 的 性 能 表 现 。 另 一 个优 势 显 然 还 是 体 现 在 对 功 耗 的 控 制 上 : 假 如 用 单 CPU 来 完 成 所 有 的 功 能 , 不 可 避 免 地 需 要 一 个 很 高 的 CPU 速 度 , 从 而 造 成 很 高 的 功 耗 。 用 一 颗 高 速CPU 来 完 成 这 样 的 任 务 , 无 疑 是 大 牛 拉 小 车 , 同 时 浪 费 很 多 能 源 。 多CPU 系 统
5、 可 以 根 据 不 同 的 任 务 需 要 合 理 地 启 动 、 停 止 相 应 的 CPU 来 完 成任 务 ,不 需 要 的 时 候 处 于 停 歇 状 态 , 实 现 最 大 限 度 地 控 制 功 耗 。既 然 我 们 选 择 了 多 CPU 的 架 构 , 那 么 接 下 来 CPU 的 性 能 就 是 我 们 要考 虑 的 第 二 大 问 题 。 一 般 的 情 况 下 , 我 们 是 在 CPU 的 性 能 ( Performance) 和 功 耗 ( Power Consumption) 方 面 进 行 比 较 和 选 择 。 通 常 可 以 采 用 每 执 行1M 次 指
6、 令 所 消 耗 的 能 量 来 进 行 衡 量 , 即 Watt/MIPS。我 们 把 CPU 的 功 率 消 耗 分 为 两 大 部 分 : 内 核 消 耗 功 率 PCORE 和 外 部接 口 控 制 器 消 耗 功 率 PI/O, 总 的 功 率 等 于 两 者 之 和 , 即 PPCORE+PI/O。 对于 PCORE, 关 键 在 于 其 供 电 电 压 和 时 钟 频 率 的 高 低 ; 对 于 PI/O 来 讲 , 除了 留 意 各 个 专 门 I/O 控 制 器 的 功 耗 外 , 还 必 须 关 注 地 址 和 数 据 总 线 宽 度 。在 数 字 集 成 电 路 设 计
7、中 , CMOS 电 路 的 静 态 功 耗 很 低 , 与 其 动 态 功 耗 相比 基 本 可 以 忽 略 不 计 。 CMOS 电 路 动 态 功 耗 的 计 算 公 式 如 下 :Pd=CT*V2*f, 其 中 Pd 是 CMOS 芯 片 的 动 态 功 耗 , C 是 CMOS 芯 片 的负 载 电 容 , V 是 CMOS 芯 片 的 工 作 电 压 , f 是 CMOS 芯 片 的 工 作 频 率 。由 上 可 见 , 当 CPU 确 定 后 , 我 可 以 通 过 降 低 频 率 和 电 压 来 减 少 系 统 的 功耗 。在 CPU 的 选 择 方 面 , 我 们 推 荐 采
8、 用 Intel 的 Xscale 芯 片 , 以 及 IBM的 PowerPC405G 芯 片 。动 态 电 源 管 理 (DPM)系 统 不 可 能 始 终 处 于 满 负 荷 状 态 , 因 为 系 统 的 工 作 量 随 时 都 在 改 变 。 动 态电 源 管 理 (DPM) 通 过 选 择 性 的 将 空 闲 的 系 统 组 件 置 于 低 能 耗 状 态 实 现 了 系 统 整体 能 耗 的 最 优 化 。我 们 更 为 关 注 的 是 DPM 在 Linux 框 架 结 构 下 的 实 现 。 图 1 展 示 了 电源 管 理 和 嵌 入 式 Linux 堆 栈 之 间 的 关
9、 系 。以 下 是 一 些 于 电 源 管 理 相 关 的 接 口 以 及 API:内 核 接 口 。在 针 对 Linux 的 DPM 架 构 中 , 内 核 中 的 DPM 子 系 统 负 责 维 持 系 统 的电 源 状 态 , 并 把 DPM 系 统 的 各 个 电 源 得 到 管 理 的 元 件 联 系 在 一 起 。 DPM 子 系 统 通 过 多 个 API 直 接 与 设 备 驱 动 程 序 通 信 , 这 些 API 把 驱 动 程 序 从 完全 运 行 状 态 转 为 各 种 电 源 得 到 管 理 的 状 态 。 策 略 管 理 器 ( 或 应 用 软 件 自 身 ) 通
10、 过 多 个 API 向 DPM 子 系 统 提 供 指 导 , 这 些 API 定 义 各 种 策 略 , 并 在 定义 好 的 运 行 点 之 间 转 移 整 个 系 统 。驱 动 程 序 接 口 。启 用 了 DPM 的 设 备 驱 动 程 序 比 默 认 驱 动 程 序 具 有 更 多 “状 态 ”: 由 外部 事 件 通 过 各 种 状 态 来 驱 动 它 们 , 或 通 过 来 自 内 核 DPM 子 系 统 的 回 调 来 驱动 它 们 , 从 而 反 映 并 遵 循 运 行 策 略 。 驱 动 程 序 API 还 允 许 驱 动 程 序 登 记 它们 连 接 和 管 理 的 各
11、 个 设 备 的 基 本 运 行 特 征 , 从 而 实 现 更 精 细 的 策 略 决 策 。用 户 程 序 API, 用 户 程 序 ( 应 用 软 件 ) 分 为 三 类 :(1)可 感 知 电 源 管 理 的 应 用 软 件 ;(2)可 感 知 电 源 管 理 的 “包 装 器 ”中 的 传 统 应 用 软 件 ;(3)不 带 电 源 管 理 的 传 统 应 用 软 件 。可 感 知 电 源 管 理 的 应 用 软 件 能 够 充 分 利 用 来 自 策 略 管 理 器 的 API, 从而 建 立 各 自 的 基 础 约 束 , 并 强 制 电 源 管 理 策 略 发 生 变 化 ,
12、以 便 匹 配 各 自 的 执行 要 求 。 不 直 接 带 有 电 源 管 理 功 能 的 传 统 应 用 软 件 可 以 “包 装 ”到 代 码 或 补丁 中 , 从 而 实 现 相 当 的 效 果 , 它 们 还 可 以 按 照 默 认 行 为 来 运 行 , 这 取 决 于更 宽 范 围 的 默 认 策 略 管 理 。嵌 入 式 LinuxDPM 下 的 实 际 机 制 包 括 各 种 API, 比 如 dpm_set_os ()( 内 核 ) 、 assert_constraint ()、 remove_constraint () 和 set_operating_state () (
13、 内 核 和 驱 动 程 序 ) 、 set_policy () 和 set_task_state()( 经 由 系 统 调 用 的用 户 级 接 口 ) , 以 及 /proc 接 口 。电 源 管 理 策 略 在 系 统 电 源 管 理 中 扮 演 了 极 为 关 键 的 角 色 。 DPM 的 策 略抽 象 模 型 的 执 行 体 系 类 似 于 状 态 机 。 在 DPM 中 有 2 个 概 念 很 重 要 : 一 个 是执 行 点 (operating points), 另 一 个 是 执 行 状 态 ( operating states) 。 DPM 的执 行 点 来 自 一 些
14、独 立 的 系 统 参 数 , 包 括 执 行 电 压 , 频 率 , 以 及 总 线 带 宽 等 等 。随 着 事 件 的 改 变 , 系 统 的 状 态 也 不 断 的 改 变 ( 如 图 2 所 示 ) 。 在 DPM 中 , 每 个 系 统 状 态 都 是 一 个 执 行 状 态 , 包 括 空 闲 态 、 活 动 态 和 睡 眠 态 。自 适 应 电 压 调 整 (AVS)在 CPU 的 选 择 部 分 , 我 们 知 道 了 系 统 能 耗 是 与 电 压 和 频 率 紧 密 相 关 的 。现 在 我 们 来 探 讨 一 下 调 整 电 压 在 降 低 能 耗 方 面 的 作 用
15、。 在 电 压 调 整 方 面 , 自 适 应 电 压 调 整 是 一 种 很 有 效 的 方 法 。 自 适 应 电 压 调 整 AVS(Adaptive Voltage Scaling)是 通 过 反 馈 机 制 将 电 源 电 压 调 整 到 给 定 工 作 负 载 (处 理 量 )所 需 的 最 小 值 。 这 种 闭 环 方 式 可 进 一 步 减 小 功 耗 , 但 需 要 将 部 分 电 源 管 理 电路 置 入 主 处 理 器 。成 功 实 现 AVS 的 关 键 是 在 基 带 芯 片 中 集 成 部 分 系 统 电 源 管 理 电 路 , 即 内 置 AVS 控 制 器 (
16、图 3)。 这 一 关 键 模 块 包 含 专 门 的 电 路 和 算 法 , 用 来 确定 给 定 处 理 量 下 的 最 优 电 压 。 通 过 向 电 压 调 整 器 的 参 考 端 输 入 馈 送 误 差 信 号 , 可以 生 成 最 优 的 VDD, 无 需 提 供 不 必 要 的 电 压 余 量 , 从 而 减 少 了 电 能 损 耗 。 对任 何 闭 环 方 法 来 说 , 环 路 带 宽 都 是 很 重 要 的 。 环 路 快 速 跟 踪 并 稳 定 的 能 力 决 定了 基 带 电 源 动 态 调 整 以 自 适 应 工 作 负 载 突 变 的 能 力 。通 过 软 件 方
17、法 降 低 设 备 功 耗低 能 耗 软 件 优 化 对 于 基 于 处 理 器 系 统 的 应 用 程 序 而 言 , 是 最 有 发 展 前 途的 降 低 系 统 能 耗 的 技 术 方 法 。 这 种 方 法 对 于 那 些 计 算 复 杂 度 较 高 的 应 用 程 序 最 为有 效 。 因 为 只 有 在 应 用 程 序 执 行 的 时 候 , 才 会 消 耗 大 量 电 源 。这 项 技 术 的 最 终 目 的 是 在 执 行 较 为 复 杂 的 应 用 程 序 时 , 尽 量 降 低 能 耗 。我 们 的 程 序 用 于 降 低 计 算 的 复 杂 度 , 但 不 能 改 变 程
18、 序 原 本 的 行 为 。 现 在 我 们通 过 图 4(A) 中 的 例 子 , 来 阐 述 一 下 一 些 有 关 软 件 优 化 的 想 法 。考 虑 主 函 数 中 第 一 次 调 用 过 程 test。 如 果 档 参 数 a 和 差 数 k 都 是 0 的概 率 为 90%, 我 们 可 以 将 源 代 码 改 写 为 图 4(B) , 通 过 改 写 , 我 们 减 少 了test 过 程 中 的 循 环 数 。 但 在 现 实 中 , 参 数 a 和 k 并 不 是 总 是 为 0。 那 么test 的 过 程 调 用 不 能 被 新 的 过 程 sp_test 所 完 全
19、替 代 。 我 们 用 一 个 条 件 语 句来 限 定 过 程 的 调 用 , 所 有 的 过 程 调 用 依 赖 于 cvd_test()的 结 果 。 当 过 程cvd_test()检 测 为 一 般 情 况 ( a,k 同 时 为 0) , 符 合 此 条 件 的 修 正 后 的 代 码 被 执行 。 如 果 当 过 程 cvd_test()检 测 为 非 一 般 情 况 ( a,k 非 同 时 为 0) , 原 有 的 代码 被 执 行 。 在 另 一 方 面 , 当 过 程 cvd_test()检 测 为 非 一 般 情 况 , 我 们 提 升 了程 序 的 计 算 复 杂 度 ,
20、 也 相 应 提 高 了 能 耗 。一 般 而 言 , 对 代 码 优 化 有 各 种 各 样 不 同 的 方 法 。 如 果 我 不 考 虑 参 数 k, 我 们 可 以 将 源 代 码 转 化 为 图 4(C) 所 示 。 a 为 0 的 概 率 大 于 a 和 k 同 时为 0 的 概 率 。 在 不 同 情 况 下 , 对 原 有 代 码 所 做 的 修 改 有 不 同 的 效 果 。最 后 , 我 们 必 须 检 验 修 改 过 的 代 码 对 原 有 代 码 的 影 响 , 是 不 是 改 变 了 原有 代 码 的 行 为 , 在 任 何 条 件 下 我 们 都 不 能 去 擅 自
21、 改 变 原 有 代 码 的 行 为 。 代 码 质量 的 提 升 也 是 相 当 的 重 要 的 。 对 于 C 语 言 来 说 , 将 一 些 简 单 的 函 数 转 换 为宏 定 义 时 一 种 比 较 有 效 的 方 法 。综 上 所 述 , 我 们 可 以 将 一 般 情 况 下 代 码 优 化 分 为 4 个 步 骤 :(1)一 般 案 例 的 选 择 。 选 择 最 有 效 的 、 最 长 被 调 用 的 案 例 。(2)一 般 案 例 的 提 炼 。 为 给 出 的 一 般 案 例 建 立 一 个 过 程 。(3)全 局 检 测 。 检 测 改 变 后 的 调 用 对 于 全
22、局 的 影 响 。(4)提 高 代 码 质 量 。 使 用 一 些 编 程 语 言 中 的 基 本 技 巧 , 以 提 高 代 码 质 量 。总 结在 移 动 终 端 设 备 设 计 方 面 , 节 能 成 为 了 一 个 很 重 要 的 设 计 指 标 。 我 们 选 取了 更 高 效 的 CPU 以 降 低 能 耗 。 对 于 交 互 式 应 用 程 序 而 言 , 我 们 使 用 DPM策 略 降 低 处 于 空 闲 态 的 能 耗 , 这 种 方 法 主 要 使 用 于 OS 层 。 而 AVS 技 术是 通 过 电 压 调 整 来 实 现 减 少 能 耗 。 在 应 用 程 序 层 , 我 们 通 过 对 软 件 的 优 化 来达 到 降 低 能 耗 的 目 的 。 在 Intel? PXA27x 处 理 芯 片 环 境 下 , 通 过 以 上 方 法 , 我 们 降 低 了 26%的 能 耗 , 提 高 了 30%的 系 统 性 能 以 及 增 加 了 7%的 代 码 量 。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。