IC低功耗优化必须在设计的各个层次和不同模块中同时实施,虽然不同层次与不同模块功耗优化的目标与效果不尽相同,但是整体目标却是一致的。
近年来,随着IC工作频率、集成度、复杂度的不断提高,IC的功耗快速增加,以Intel处理器为例,处理器的最大功耗每4年增加1倍;功耗的提高带来了一系列的现实问题:首先,功耗增加引起的IC运行温度上升会引起半导体电路的运行参数漂移,影响IC的正常工作;其次,功耗增加引起的IC运行温度上升会缩短芯片寿命;而且对系统冷却的要求也相应提高,不仅增加了系统成本,而且限制了系统性能的进一步提高;尤其是对现在流行的移动计算,系统的低功耗设计及其IC的低功耗设计,是其生存的关键,需要在保证性能的前提下,尽可能地节省IC功耗。当前,低功耗设计技术已在微型DSP芯片到复杂的高性能处理器的各种IC中得到了广泛的应用。
IC的低功耗设计涉及IC初期开发到生产工艺的各个阶段;在现实IC设计中,通常采用的设计方法是按不同的设计层次采用相应的功耗优化设计技术,而其重点主要集中在IC的系统结构级设计、RTL级设计,以及版图设计阶段。实践证明,按照自顶向下的电路设计方法,在不同设计层次上对功耗进行优化时,改善的程度是不同的:设计层次越高,优化所能达到的效果越好。以微处理器设计为例,设计时应尽量在诸如系统结构级上进行优化,它们的优化程度从20%~90%不等,RTL(寄存器传输)级优化程度为10%~15%,而到版图级时优化程度则小于5%。
IC功耗的来源
从宏观结构上看,IC功耗来自IC内部的各个功能模块及功能模块间总线的功耗,而功能模块的划分、功能特性、数量和相互关系是在系统结构级设计时确定的。IC的功耗是各功能模块的功耗的总和。对性能的不同要求,对模块的功能要求就不同,从而影响IC的实现规模。功能越复杂,实现规模越大,IC的功耗就越高,所以系统结构级的设计从根本上关系到IC功耗的大小。
从微观电路实现上看,集成电路(IC)的功耗主要由以下两个方面组成:
● 动态功耗。动态功耗主要包括:开关功耗,它是对电路中的电容充放电形成的;短路功耗,它是由于输入信号不是理想的方波,在输入信号上升或下降的过程中引起开关过程中附加的短路功耗。
● 静态功耗。静态功耗主要包括:静态直流功耗,是指在电路稳定时由于各种泄漏电流的存在,使得电路存在静态功耗,它是由电源到地的电流所形成的功耗;漏电流功耗,是由亚阈值电流和反向偏压电流造成的。
目前集成电路主要以静态CMOS为主,在这类电路中,开关功耗是整个电路功耗的主要组成部分;其次是短路功耗,漏电流功耗一般较小(但在深亚微米电路中产生的功耗会急剧增加,成为IC功耗的主要来源之一);而静态功耗在大多数情况下可忽略。实际IC电路中,功耗主要来自于时钟单元和数据通路上的各个功能单元,其次是片内存储器(Cache)阵列,其他部件如组合控制部分和I/O部分则相对较小。
集成电路的设计是一个追求性能、面积和功耗等多个设计目标的过程。功耗的优化不是孤立地局限于某一设计层次或某几个功能模块,功耗优化的技术和方法是与其他设计目标相互约束并有机结合的,不同设计层次从不同的角度对功耗进行优化,各个层次的优化方法既具有自己的优点,又具有各自的局限性。而系统结构级的低功耗设计处在设计的较高抽象层次上,具有较大的优化和选择余地,能有效地对IC总功耗进行优化。
系统结构级的低功耗技术
1. 系统软硬件的划分
软硬件划分是从系统功能的抽象描述(如SystemC语言)着手,把系统功能分解为硬件和软件来实现。一个系统应具有的功能,既可通过在IC上运行软件来实现,也可通过IC内建的专用电路来实现,比较两者的功耗得出一个低功耗的实现方案。软硬件的划分处于设计的起始阶段,为降低功耗带来更大的可能。
2. 可变电压和多电压技术
从IC功耗来源分析可以看出,芯片功耗与电源电压成正比,降低工作电压是最直接有效的降低功耗方法。通常IC电路都工作于相同的电压,而可变电压技术根据系统的不同工作状态对系统性能的不同要求,以及不同的功能模块,动态地改变电压或采用多电压供电,以最大限度地降低功耗。动态改变电压技术的制约因素是电压转换电路的功耗和电压转换时延;而多电压方式则在许多规模和复杂度较高的IC中得到了较多的应用,例如,在处理器核心,采用较低的工作电压,降低核心运行功耗,而在I/O部分则采用较高电压,有较强的驱动能力和抗干扰能力。
RTL级设计时双开启电压(多开启电压)电路的使用,也应在系统结构级设计时加以考虑,以均衡速度和功耗的要求;低开启电压电路信号翻转速度快,但漏电流功耗高(在深亚微米电路中,漏电流功耗已成为IC功耗的主要组成部分);高开启电压电路信号翻转速度慢,但漏电流功耗低。可在关键的速度要求高的模块或路径上采用低开启电压电路,而在速度要求不高的部分采用高开启电压电路,以节省功耗。
3. 动态功耗管理
由于IC的功耗正比于IC的运行频率,动态功耗管理的一种方法是在IC不工作时,将其时钟频率由最大降至一个容许的较低的频率,进入低功耗的休眠状态,以降低功耗。由于系统在正常工作状态和休眠状态之间的转换需要时间,因此转换将影响系统性能。该技术的核心是如何根据系统的状态信息决定系统何时进入低功耗的休眠状态,现在主要使用基于预测算法的技术和基于随机控制的技术。
另一种是使用门控时钟,虽然它在RTL级设计时加以实现,但由于它在现代IC低功耗设计中起着十分关键的作用,在系统结构级设计时,也应该加以充分考虑。门控时钟是在IC的某些功能单元不工作时,阻断该功能单元的时钟输入,停止该单元的工作(停止单元内部信号翻转),从而降低IC的运行功耗。门控时钟就是在IC时钟分配网络中加入门控逻辑,控制功能单元的时钟输入;功能模块存在关闭和重新开启的时间开销,不可避免地会整体降低系统性能;由于使用该技术时,功能单元关闭速度快(<1微秒),开启速度慢,会引起时序上的问题,所以IC中过多使用门控时钟,会导致逻辑错误增加。Toshiba的用于PDA和数码摄像机的多媒体SoC的MPEG-4解码单元、DMA及RISC核,都使用软件控制实现门控时钟,通过相应指令设定特定控制寄存器的相应位、控制相应模块的时钟输入,门控时钟也存在着何时进入低功耗状态和何时重新运行的问题。
4.片内多频
芯片内不同的功能模块之间有着不同的速度和性能要求,在速度和性能要求较高的核心模块和关键路径上,可采用较高的时钟频率,而在其他一些模块中,可使用相对较低的时钟频率,该技术有助于降低非核心模块和关键路径的功耗,从而降低芯片的总功耗。
5. 控制-数据流图低功耗变换
高层综合技术中,设计说明(算法)通常被表达成控制-数据流图的形式,进行优化后映射到特定的硬件实现结构上。在考虑系统性能和系统费用优化的基础上,可将一个高层的功耗模型加入到优化算法中,在保证性能和系统费用的同时,获得低功耗的实现方案。
6.指令级优化
在嵌入式CPU和微处理器设计中,可在系统结构级设计时采用指令级优化,优化包括几个方面:对于确定的处理器,执行每条指令所需功耗是一定的,应选择一个在实现系统功能的前提下运行功耗最小的指令集。
选择合理的指令长度 (如16位、32位或可变长度),提高程序的代码密度,以减少对存储器访问的功耗。指令编码优化是通过对应用程序指令相关性的统计,对指令进行编码优化,使读取指令时总线上的信号翻转最少。
在CMOS工艺的大规模IC中(非深亚微米工艺),电路的开关功耗占整个芯片功耗的90%,软件模拟证明编码优化能在现有指令编码的基础上,减少指令序列的指令操作码域、寄存器域和无用位域信号翻转的百分比分别是62.1%、14.8%、4.2%,采用指令编码优化对功能部件运行和内部总线通信来说,能有效地降低功耗。
7.存储器的优化
在嵌入式CPU和微处理器设计中,存储器(或Cache)是IC的重要组成部分,存储器(或Cache)的功耗包括存储器本身功耗和IC内部各功能单元与存储器(或Cache)之间的总线通信功耗。研究包括低功耗存储结构的构造方法,采用更好的电路结构;同时考虑了各种类型的存储元件,对它们的大小、组织结构进行优化;在使用Cache时,应采用好的装填和回写策略,在尽可能有限的容量上提高Cache命中率,节省硬件开销,避免附加的Cache装填和总线操作,降低IC能耗。
8.内部总线的低功耗设计
IC内部总线由于电容较大、数据传输密度高,因此功耗较大。总线的低功耗设计包括:减小总线上信号的电压摆幅(通常为几百毫伏)对降低具有较大电容总线系统的功耗非常有效,它的额外代价是总线和功能模块之间的信号电平的变换电路对内部总线进行分段控制;总线的低电压摆幅,需要良好电路和布局布线设计来减小外部噪声的影响。根据总线和功能模块连接的物理结构,在信号传输时,隔断总线的无关部分,从而减小总线的实际电容,以达到降低功耗的作用;通过对总线数据进行编码(如格雷码),减少总线的电平翻转 (即减小了活动因子),也能降低总线功耗。
9.系统结构级的功耗模拟
将IC中某一功能执行时的功耗与该功能的执行频率相乘,得到该功能的功耗要求,统计IC的所有功能的功耗要求,就能得到IC的总功耗。IC的某一功能的执行能耗是由设计决定的,其数值可在现有的数据基础上进行预估,而该功能的执行频率则由实际应用程序决定。系统结构级的功耗模拟必须重点考虑功耗占用量大的功能的模拟计算,可适当忽略次要部分的影响;能够在从功能模块到整个芯片系统的各个层次上进行功耗模拟。系统结构级的功耗模拟能够在设计的初期做出相应的功耗预估,并随设计的不断细化而深化,为设计的各个阶段提供功耗模拟数据,作为该阶段设计的反馈信息,并为下一步低功耗设计提供指导。在Intel的P4设计过程中,采用了系统结构级功耗模拟,并使用了功耗预估软件ALPS(Architectural-Level Power Simulalor),能够让P4设计人员在FUB(功能模块)到整个芯片的各个层次上进行功耗估算;估算时采用的功耗模拟应用程序可以是简单的汇编测试程序,也可以是实际系统上运行的用户程序。
在当今的一些EDA工具软件中,提供了系统结构级以下的RTL级、门级和晶体管电路级的功耗模拟工具,为设计人员在进一步设计时提供更加具体和精确的功耗模拟信息,以便设计人员及时改进设计以优化功耗。
随着工艺技术水平的不断提高与IC集成度的不断提高,功耗已经开始成为深亚微米IC设计所面临的一个严峻的挑战,功耗优化应得到充分的重视。在实际IC低功耗设计中,降低电源电压、双电压供电、门控时钟、利用综合工具进行门级和电路级优化、选择先进工艺是通常采用的直接有效的方法,而在一些节能要求高的IC和功耗要求严格的高性能微处理器中,则采用了更加全面的低功耗设计技术,从高层的系统方案制订、系统结构级设计、RTL级设计、门级设计、晶体管电路级设计到流片工艺选择的各个层次上加以优化。IC低功耗优化必须在设计的各个层次和不同模块中同时实施,在设计的各个环节上进行功耗优化,才能更有效地降低芯片功耗。
在IC设计中,总的来说,功耗和性能往往是相互矛盾的,高性能伴随着高功耗。低功耗设计的目标就是采用各种优化技术和方法,在性能和功耗之间找到最佳的结合点,在保证总体性能的前提下,在两者之间进行权衡。系统结构级的低功耗优化设计在设计的较高抽象层次上,能够在较宽的范围内,有效地优化功耗设计;尤其在低功耗要求较高且结构复杂的IC设计中,系统结构级的功耗优化作用尤为明显。
小资料4:AMD 64位微处理器发展计划
AMD公司与Intel一样是专业芯片生产商,但在Intel、IBM、Sun等巨头面前则显得有些身单力薄,它一直走一条与Intel在PC市场分一杯羹的路线。近几年,AMD试图进入高端64位计算市场,但它并没有放弃传统的x86结构,另起炉灶,而是将IA32结构自然扩展到64位。这个名为x86-64结构的最大优势在于完全与IA32兼容,可以继承原有的软件资源,因此对普通客户有着巨大的吸引力。
x86-64的发展得到了业界的广泛关注,AMD第一款采用此结构的处理器编号为K8,即Hammer处理器。2003年中期,面向高端服务器市场的64位产品Opteron上市。AMD Opteron成为世界上第一个兼容32位和64位计算的处理器。高端商用服务器的市场总量虽然只有10%左右,但销售额却占整个市场的近50%,AMD Opteron的愿望可想而知。在IA服务器领域,AMD的32位处理器所占份额仅为5.5%,Opteron通过帮助用户从目前IA-32架构服务器产品平滑升级到64位,必将对服务器市场产生一定的冲击。
Opteron处理器面对的主要问题是64位系统软件和市场因素,尽管微软已经表明会推出64位Windows XP来支持AMD,但在大型服务器市场迎合Opteron的并不多。但是,Opteron的32位兼容性、突出的性价比、革命性架构设计,对用户来说有着极大的诱惑。
(计算机世界报 第06期 B9、B10)