第 24 卷 第 4 期
2007 年 4 月
计 算 机 应 用 研 究
Application Research of Computers
Vol. 24, No. 4
April 2007
嵌 入 式 处 理 器 微 内 核 低 功 耗 设 计 *
张 骏, 樊晓桠, 刘松鹤
( 西 北工业 大学 航 空微 电子 中心 , 陕西 西 安 710072)
摘 要: 针 对嵌 入式 处理 器微 内核 的结 构特 点, 结合 32 位微 处 理 器 “龙 腾 C1”, 提 出 了 一 种 微 内核 的 低 功 耗 设
计方 法。在 体系 结构 层次 上, 分别 从微 操作 ROM、微 堆 栈和 微 操 作 编 码 几 个 不同 角 度 出 发, 对 嵌入 式 处 理 器 的
微内 核进 行了 功耗优 化设 计。 在几 乎不 影响 速度和 面积 的前 提下 , 微 内核 的功 耗有 19% 的降 低。
关键 词: 微 内核 ; 微 操作 ; 微堆 栈; 低功 耗
中图 分类 号: TP368. 1
文 章编 号: 1001- 3695( 2007) 04- 0265- 03
文 献标 志码 : A
Design of Power Awared Micro-kernel in Embedded Microprocessor
ZHANG Jun, FAN Xiao-ya, LIU Song-he
( Micro-electronics Center, Northwestern Polytechnical University, Xi’an Shanxi 710072, China)
Abstract: According to the structure characteristics of micro-kernel in embedded microprocessor, and combined with 32 bits
microprocessor “LongTium C1”, proposed a series of low power techniques to design the micro-operation-ROM, micro-stack
and the micro-operation coding at architecture level. As a result, the power consumption of the micro-kernel in “LongTium
C1”decreases 19% , almost without any impact on area and clock frequency.
Key words: micro-kernel; micro-operation; micro-stack;
low power
0 引言
嵌入式处理器的应用已日趋普及, 而在它众多的应用领域
中有不少地方是 对 嵌入 式处 理 器的 功率 消 耗有 严格 要 求的。
许多嵌入式系统, 或因为 电池可 供给的 电能有 限, 或 因为长 期
连续工作积累的电能消耗不菲, 减少系统的电能消耗成为系统
的重要性能指标之一。而微内核是嵌入式处理器的核心部件,
因此嵌入式处理器的微内核的 低功耗 设计是 系统绿 色化设 计
的重要环节。许多嵌入式处理 器的微 内核都 是基于 微操作 来
完成机器指令的执行, 这意味着增加一条机器指令只需改变译
码电路和增加一段新的微操作即可, 具有规整性、灵活性、可维
护性等一系列优点。
数字系统的低功耗设计 方法可 以分为 若干层 次。按照 抽
象层次 的 不 同, 可 以 分 为 系 统 级 ( System) 、结 构 级 ( Architec-
ture) 、寄 存 器 传 输 级 ( Register Transfer) 、逻 辑 门 级 ( Gate / Lo-
gic) 、版图级( Layout) 和电 路级 ( Circuit) 。每 个级 别可 以达 到
的低 功 耗 设 计 效 果 也 完 全 不 同, 在 体 系 结 构 级 可 降 低 电 路
40% ~70% 的 功耗, 而 在电 路级 功耗 只能降 低 5% ~10% , 所
以在体系结构级对微内核进行低功耗设计更有优势。
“龙腾 C1”是西北工业大学航空微电子中心自行研究设计
的 32 位嵌入式 处理 器, 目 前, 已 经采 用 0. 18μmCMOS 工 艺 流
片成功。
1 微内核的结构设计
微内核的基本思想就是把 操作控 制信号 编成所 谓的微 操
作, 存放到一个只读存储器里, 依次读出这些微操作, 从而完成
整个处理器所需要的各种控制信号, 使相应的部件执行所规定
的操作。一个微操作一般由操 作控制 和顺序 控制两 大部分 组
成。操作控制部分用来发出处 理器中 各个部 件的操 作控制 信
号; 顺序控制部分用来决定产生下一条微操作的地址。图 1 是
“龙腾 C1”的微内核的结构图。
Micro_ADDR
fromMicroinstruction
Micro_ADDR
fromDecoder
MUX
PredictAddress
1
uPC+1
uPC
uSTACK
Exception
MUX
Test_Feedback
PredictSymbol
Micro_ADDR_REG
MICROROM
MUX
NOP
Micro_Instruction_REG
Address
Mode
Micro_
Instruction
Type
Micro_Command_REG
图 1 野龙腾 C1冶的微内核的结构图
微内核主要由存放 微操 作的 微操 作 ROM、微 操作 寄存 器
和微地址产生 逻辑 三部 分 构成。 微操 作 ROM 用来 存放 实 现
全部指令系统的所有微操作, 微地址寄存器决定将要访问的下
一条微操作的地址。微操作寄 存器用 来存放 由控制 存储器 读
收 稿日期 : 2005- 11- 13; 修 返日期 : 2006- 03- 07
基 金项 目: 国 家“十五 ”预研资 助项 目( 41308010307)
作 者简介 : 张骏( 1978- ) , 男, 陕西西安人, 博士研究生, 主要研究方向为先进微处理器体系结构 ( freakfriend@ 126. com) ; 樊晓桠( 1962- ) , 男, 湖南人, 教
授, 博导, 主要研究方向为专用集成电路、计算机系统结构; 刘松鹤( 1979- ) , 女, 吉林松原人, 硕士研究生, 主要研究方向为计算机软件、计算机网络.
·662·
计 算 机 应 用 研 究
2007 年
出的一条微操作信息, 而微命令寄存器则保存一条微操作的操
作控制字段和判别测试字 段信息。微 地址产 生转移 逻辑负 责
产生访问微操作 ROM 的微地址。“龙腾 C1”处理器 的微内 核
还加入了微操作预取逻辑, 提高了微操作流水线的效率。
低 10 bits 作为段内 地址。这 种方 案通 过将 ROM 分 区降 低 了
每次访问时只读存储器的功耗, 虽然前端增加了一个三八译码
器, 后端增加了 44 bits 的八选一电路, 但 电路整体的 功耗还 是
有明显下降的。
2 微操作控制器的功耗优化设计
在数 字 CMOS 电 路 中, 动 态 功 耗 占 整 个 功 耗 的 80% ~
90% 。在无法改变电压的情况下, 设计者只能通过降低电 路的
跳变次数和频率来达到降低功耗的目的。
在“龙腾 C1”处理器微内核 的设计 过程中, 考虑 到微操 作
ROM 和微堆栈包含大量 的存 储单元, 如 果能 减少 这些 存储 单
元工作时的跳变次数, 将大 大降低 功耗。另外, 在一 段微操 作
中, 通过合理的微操作编 码也能 降低微 操作寄 存器的 翻转率,
从而达到降低功耗 的目 的。所以 主要 应该 从微 操作 ROM、微
堆栈、微操作编码几个方面来进行功耗优化设计。
2. 1 微操作 ROM 的分区设计
在“龙腾 C1”中由一个 44 bits ×8 KB 的片 上 ROM 来 存放
微操作。每个 ROM 字分为两部分: 27 bits 为微操作内容, 剩余
的 17 bits 中有 4 bits 是控制 下地址 转移逻 辑的工 作命 令字 和
供转移的 13 bits 下地址。“龙腾 C1”的 微操作共分 为三大类,
即存储管理部件的微操作、整数 执行单 元的微 操作、浮点部 件
类微操作。微操作格式是根据 数据通 路的具 体控制 要求设 计
的。其中存储管理部 件的 微操 作用 于控 制 MMU 计 算存 储 操
作的地址及向 Cache 发出访存请求, 整数执行单元的微操 作主
要控制整数单元进行算术、逻辑 运算, 保护测 试和对 各种内 部
寄存器的操作, 浮点部件类微操作控制 FPU 进行运算。微操作
ROM 工作在同步方式, 输出的微操作完全由输入的地址决定。
如果采用整块 ROM 存放微 操作, 只读存 储器的 输入地 址
将有 13 bits, 在每次访问 中, 一 个 13 bits 输入 8 192 输 出的 译
码电路均将工作, 这将会 产生很 大的功 耗, 在 这里可 以考虑 分
区访问 ROM 的工作方式。
根据 SPEC 程序的测试, 整数指令有 39% 使用存储器 操作
数, 浮点指令中有 72% 使用 存储 器操作 数。在 整个 微操 作 系
统中, 存储管理部件的微操作所占的地址空间小于 1 024, 也就
是整个 ROM 空间的 12. 5% , 但它占 了所有 ROM 访问 的 33%
左右。浮点部件类微操作所占 的地址 空间也 小于 1 024, 笔 者
设计时将微操作 ROM 分为八块 44 bits ×1 024 的分区, 将存储
管理部件的微操作放在一个分区中, 将浮点部件类微操作放在
一个分区中, 将整数执行 单元的 微操作 放在其 余六个 分区中。
在访存期间其他七个分区均处于完全不工作状态, 即使在整数
部件执行期间, 也只有一个分区处于活动状态。采用这种结构
后, 每个分区的地址位 将下降 到 10 bits, 可以降 低分区 译码 器
消耗的功耗, 同时因为存储器深度的减小, ROM 中数据位 线所
串联存储单元的数目也将减小为原来的 1/ 8, 该连 线的负载 电
容将大幅缩小, 因此 ROM 本身的功耗也会降低。
将被经常访问的微操作存放在同一个分区中, 可以降低数
据输出端选择电路选择信号的翻转频率, 因为这是一个 44 bits
的八选一电路, 所以这种措施对选择器功耗的降低还是较为有
效的。
2. 2 下地址转移逻辑中微堆栈的优化设计
下地址产生逻辑是微内核的核心部分, 主要用来产生下一
条微操作的地址, 从而决定微操作序列的执行。在每个时钟周
期, 它都要产生 一个 访 问微 操作 ROM 的 地址, 因此 降低 这 部
分电路的功耗对于降低整 个微内 核的功 耗具有 重要意 义。 微
堆栈就位于下地址转移逻辑中。
微堆栈是为了实现在微操作级调用和返回设置的结构, 它
模拟指令系统中的堆栈结 构。 如果当 前执行 的微操 作是调 用
微操作, 则将 μIP 寄存器中 的值压 入堆栈 中, 实现保 存下一 条
微操作地址。如果当前指令的微操作是返回微操作, 则弹栈读
出以前保存微操作地址, 实现返回调用处继续微操作执行。只
要电路能实现后进先出的数据结构就可以达到要求, 因此可以
采用以下两种不同的实现方式:
( 1) 采用指针的 变化 来完 成数 据的 后进 先 出。在这 种 结
构中需要用一个计数器作为写入指针, 使用写指针减 1 作为 读
指针, 空满信号利用读写指 针产生, 构 成堆栈 的寄存 器组无 需
进行移位操作, 各组寄存器 之间没 有连线, 但 这种结 构写入 时
需要译码, 读出时需要选择电路。
( 2) 输出的出口和 入口 均在 堆栈 顶端, 当 发 生压 栈、出 栈
操作时构成堆栈的寄存器 组进行 移位操 作。 这种结 构也需 要
一个计数器来标记堆栈的空满状态, 它的优点在于堆栈的写入
读出不需要多选电路。
针对两种不同的电路笔者都作了具体实验, 当采用第二种
结构时, 下地址转移逻辑中堆栈所占的功耗大约占到整个下地
址转移逻辑的 46% , 因此 降低 这部分 电路 的功 耗具 有重 要 意
义。在这种固定读写入口的方案中, 对堆栈进行的任何一次操
作均会导致整个堆栈中所有的寄存器进行一次移位, 并且其中
的许多寄存器均会产生翻转, 这将消耗大量的功耗。如果采用
指针进行读写控制, 只有进 行写操 作时, 才会 对其中 一组寄 存
器进行更新, 实际翻转的寄 存器更 少, 虽然读 出的选 择电路 增
加了部分功耗, 但总体 功耗具 有明显 下降。所以, 应该 选用 指
针读写控制的微堆栈结构来进行功耗优化。
2. 3 微操作编码的优化设计
基于微内核的嵌入式处理器每拍都是由微操作来控制的,
微操作 ROM 总是处在被读取的状 态, 微操作 寄存器 几乎每 拍
都要被更新, 因此合理的安排微操作编码将有效地降低微操作
寄存器和微操作总线的翻转频率并最终降低它们的功耗; 同时
合理的编码也可以降低每次读取微操作 ROM 时的功耗。
如前所述, “龙腾 C1”微处理器的微操作分为三大类, 即存
储管理部件微操作、整数部件微操作和浮点部件微操作。它们
的基本结构如表 1 所示。
表 1 “龙腾 C1”的微 操作格 式
2
13
4
8
1
1
TYPE Ne xt A ddress
CONTROL USER DEF W B LINKB
7
B
1
7
LINKA A
13 bits 地址的最高 3 bits 作为 片选和数据 输出选 择信号,
表 1 列 出 了 所 有 微 操 作 的 格 式, TYPE、Next Address 和
第 4 期
张 骏 等: 嵌入 式处 理器 微内核 低功 耗设 计
CONTROL 意义分别是当前 微操作 的类型、下地 址和控 制转 移
段部分编码结果如表 4 所示。
·762·
字段。 A 和 B 字 段 表 示 源 操 作 数 和 目 的 操 作 数, LINKO、
LINKB 和 LINKA 分别为 相应 字段 的译 码器 拼 接指 示位。 WB
表示 运 算 结 果 是 否 写 回 B。 三 类 微 操 作 的 不 同 之 处 在 于
USERDEF 字段可以根据不同类型微操作的不同控制方式 来定
义。
只读存储器单元存储信息 的方式 是通过 在数据 线与地 址
之间是否存在充 放电 通 路决 定的。 “龙 腾 C1”所使 用微 操 作
ROM 的数据线连接在 VCC 上, 那么 所有 存储 的数 据缺 省为 1,
如果设计者希望在该位存储信息为 0 时, 那么就需要在该数据
线与地址之间存在一条放电 通路, 当地 址线选 中该地 址时, 数
据线和地址之间存在一条通 路, 数据线 的输出 被拉低, 输出 数
据为 0。所以, 当“龙 腾 C1”的微 操作 ROM 要 输出 一个 0 时,
就必然存在一次放电过程, 因此 在相同 条件下, 一条 微操作 中
包含的 0 位越多, ROM 在完 成这 次读出 操作 时需 要的 功耗 也
就越大。在确定“龙腾 C1”的微 操作编 码时, 本文遵 循了两 个
原则来进行功耗的优化: ①每条微操作中应 该尽量多地 包含 1
的个数; ②在执行时, 相邻输出 的两条 微操作 应该尽 量保证 具
有较多的相同位, 这样可以降低微操作寄存器和微操作总线的
翻转频率。
在三类微操作中, 整数部件类微操作和存储管理部件类微
操作被执行的频率要高于浮点 部件类 微操作, 因此 对于 TYPE
字段可以规定如表 2 所示。
根据仿真, 整数部件类微操 作占总 微操作 ROM 访问量 的
60% , 存储管理部件类微操作占 33% , 而浮点 类微操 作只占 访
问量的 7% 。两类最常用的微操作占到了总访问量的 93% , 而
TYPE 字段只有一位翻转, 这种 方式很 好地满 足了编 码的两 个
表 4 操作 数字段 部分编 码
寄 存 器
地 址
寄 存 器
地 址
寄 存 器
地 址
AX
BX
CX
DX
1111111
1111110
1111101
1111011
FLA G
1110111
IP
1101111
A L
BL
CL
DL
A H
BH
1011111
0111111
1111100
1111001
1110011
1100111
CH
DH
SP
BP
SI
DI
100111
001111
111010
110110
101110
011110
微操作的下地址字段 采用分段格雷码, 也就 是高 3 btis 的
分区地址采用二进制编 码, 10 bits 的 段内地 址采用 格雷 码, 这
样当两条微操 作 切 换时, 13 bits 的 下 地 址最 多 只 有 2 bits 翻
转, 同类微操作切换时只有 1 bit 翻转。
操作码字段用来控制功能单元的工作, 应按照各种操作使
用频率的高低来进行编码。对于微操作中其他的控制字段, 也
应按照上面两个原则进行编码。
3 优化结果
使 用 SYNOPSYS 综 合 工 具 DESGIN _ COMPILER 在
0. 18μmCMOS 工艺库下对优化前 后的微 内核设 计分别 进行 综
合, 全局电压 1. 5 V。优化结果如表 5 所示。
表 5 优化 前后 的微内 核性 能
动 态 功 耗 ( mW )
工 作 频 率 ( MH z)
优 化 前
优 化 后
136 . 791 4
110 . 813 6
840
831
面 积
652 240
661 352
4 结束语
本文结合嵌入式处理器微内核的结构特点和“龙腾 C1”处
理器微内核设计, 从微操作 ROM、微堆栈和微操 作编码三方 面
入手进行功耗优化设计。使用 综合工 具分别 对优化 前后设 计
的速度、面积和功耗进行了考察。结果证明经过功耗优化设计
的微内核在性能基本不变的前 提下比 原来的 设计节 省了大 约
19% 的功耗。这些优化的设计方法已经在“龙腾 C1”处理器中
成功实现, 为低功耗微内核的设计积累了经验。
原则。
参考文献:
对控制转移字段的编码根 据各种 转移方 式的使 用频率 来
[ 1 ] 俞颖, 周磊 , 闵 昊. 采用 异 步电 路 的 低 功耗 微 控 制 器的 VLSI 设 计
确定, 同时考虑一些经常 会连续 执行指 令之间 的关系, 控制 转
移字段的部分编码结果如表 3 所示。
对操作数字段的编码也是 根据该 寄存器 或者内 部数据 端
口使用频率的高 低来 确定 的。根 据 X86 的 指令 系统, 寄 存 器
AX 是使用频率最高的一个寄存器, 将它 编码为 1111111, 另 外
BX、CX、DX、AL、BL、FLAG、IP 的使 用 频率 也较 高。操 作 数 字
与实现 [ J] . 半 导体学 报, 2001, 22( 10) : 1346-1351.
[ 2] 王国平 , 周 端. 高性 能低功 耗微 控 制器 IP 软 核设 计 综 述 [ J] . 计
算机应 用研究 , 2003, 20( 2) : 1- 3.
[ 3] 杨波, 高 德远. 微程 序控 制器的 设计与 实现 [ J] . 计 算机 工 程与 应
用, 2001, 37( 7) : 27 -29.
[ 4] 张旭, 李 斌桥, 李 树 荣 , 等. 一 种 低 功 耗 八 位 MCU 的 设 计 与 实 现
[ J] . 微处 理机 , 2003( 4) : 7- 9.
[ 5] CHO S Y, PARK S Y, KIM S W. CalmRISC- 32: a 32-BIT low-
power MCU core: proc. of the 2nd IEEE Asia Pacific Conference on
ASIC[ C] . [ S. l. ] : [ s. n. ] , 2000: 285 - 289.
[ 6] HU Yueli, CAO Jialin, RAN Feng, et al. Desgin of a high perform-
ance microcontroller: proceedings of HDP’04[ C] . [ S. l. ] : [ s. n. ] ,
2004 : 25- 28.
[ 7] YU Gong, DR L. Embedded microcontroller implementation of a class
of condition systems[ J] . IEEE, 2003: 167-171.