摘 要: 对片上系统的设计方法进行了分析与探讨,给出了目前比较适用的SOC低功耗设计方法和一种新的SOC低功耗设计流程。对影响片上系统功耗的因素进行了深入分析,在此基础上从不同的层次讨论了SOC系统较为有效的低功耗设计技术,通过对这些不同层次低功耗设计技术的比较,指明了SOC系统低功耗设计的发展方向。
关键词: 集成电路 片上系统 低功耗
近年来集成电路技术发展迅速,片上系统(System On Chip,SOC)技术已经非常流行。基于深亚微米的超大规模片上系统芯片需求日益扩大,使传统的数字IC设计方法已不能适应现代产业界的IC产品需求。虽然IC设计者的设计能力每年以大约18%的速率提高[1],但还是不能跟上摩尔定律所显示的芯片规模增长。IC产品面临上市时间的压力,使得设计者必须从设计方法来提高设计效率。
由于设计规模和集成度的不断提高,功耗问题也正日益成为片上系统实现的一个限制因素。对便携式应用来说,其主要原因在于电池寿命;而对固定应用则在于最高工作温度。既要解决电池寿命和芯片散热问题,又要提高电路的运行速度和稳定性,所能采取的根本措施就是降低功耗。
1 SOC的设计方法
SOC的设计方法灵活多变,种类繁多。目前,可以用于SOC设计的设计方法主要有:全定制系统设计方法、基于处理器核的系统设计方法、基于平台的系统设计方法和系统级综合设计方法。除第1种设计方法外,后3种均为基于IP模块可重用设计的SOC设计方法。下面将对各种设计方法进行阐述,并给出目前比较合适的SOC低功耗设计方法和一种新的低功耗设计流程。
(1)全定制系统设计方法。采用传统的ASIC设计方法来完全或大部分定制系统的各个部分。该设计方法的优点是设计灵活性大、系统结构紧凑、芯片的特性好、面积小。缺点是设计周期长、可重用性差,一般SOC的设计都不采用这种方法。
(2)基于处理器核的系统设计方法。是在基于某种特定处理器的基础上,通过添加外设模块来完成系统设计。由于其处理器内核是确定的,因此只能在有限范围内选择挂接的外设模块。系统一般由可以综合的处理器内核和符合处理器内核的设计标准的外设模块和定制逻辑组成。其缺点是不能满足系统设计的重用需求,SOC设计中较少采用。
(3)基于集成平台的系统设计方法。是通过架构可重用的、有效的体系结构,在其中加入经过选择的软件或硬件IP模块来实现设计。系统中所有的模块都是可选部分,通过对体系结构中的各个部件进行客户化设计来实现不同的需求。该设计方法由于其体系结构易于集成IP模块,满足了高度可重用的需要,是目前一种切实可行的设计方案。
(4)基于系统综合的系统设计方法。是在系统级设计流程中加入算法设计,通过高层的设计表述选择应用算法,调用可配置的IP,根据需要加以改变,并以此将系统划分为新的IP和已有的可配置外设来满足系统需求。由于目前相关系统设计工具的欠缺和不足,因此该设计方法离实际应用还较远。
随着技术的进步和需求的提升,未来片上系统的设计除了需要强有力的IP库和EDA工具支持外,还需要在设计方法上有所突破,这就是软硬件协同设计,其流程如图1所示。由图可以看出,这种设计方法是在多个层面上同时开始设计,增强了设计的竞争力。
通过对比SOC的各种设计方法,基于集成平台的系统设计方法是当前SOC的主流设计方法。同时,随着SOC技术的发展,基于系统综合的系统设计方法和软硬件协调设计的方法将会有所突破和发展。
2 SOC的低功耗设计
目前,很多片上系统的设计都是先进行功耗分析,根据分析的结果再来划分设计结构、改进设计和优化方案。功耗已成为整个SOC设计的一个重点,也是整个设计成功与否的关键因素。因此,探讨如何进行片上系统的低功耗设计是十分有意义的。下面将从片上系统的功耗分析入手,详细讨论不同层次的低功耗设计方法。
2.1 SOC的功耗分析
大规模集成电路多采用CMOS电路,对于CMOS电路来说,在执行某一任务期间,1个时钟周期的能量消耗为:
式(1)中:M为系统中门电路的个数,Ck为第k个门电路的负载电容,SWk为第k个门电路每个时钟周期的开关次数,VDD为电路的电源电压值。假设执行第j个任务所需的总时钟数为Nj,则执行第n个任务的能量消耗为:
由式(2)可以看出,影响系统功耗的主要因素有工作电压、负载电容、门电路的开关次数和时钟数。这些参数就是进行SOC系统低功耗设计的出发点。
2.2 SOC不同层次的低功耗设计
影响系统功耗的参数调整主要是从系统级到物理级来进行。下面将针对各种不同层次中较为有效的设计方法进行阐述与探讨。
2.2.1 系统级
在系统级进行低功耗设计的主要方法有:
(1)软硬件划分
软硬件划分是从系统功能的抽象描述着手,把系统功能分解为硬件和软件来实现。通过比较采用硬件方式和软件方式实现系统功能的功耗,得出一个比较合理的低功耗实现方案。由于软硬件的划分处于设计的起始阶段,所以能为降低功耗带来更大的可能。
(2)功耗管理
功耗管理的核心思想是设计并区分不同的工作模式。其管理方式可分为动态功耗管理和静态功耗管理2种。动态功耗管理的思想就是有选择地将不被调用的模块挂起,从而降低功耗。静态功耗管理是对待机工作模式的功耗进行管理,它所要监测的是整个系统的工作状态,而不是只针对某个模块。如果系统在一段时间内一直处于空闲状态,则静态功耗管理就会把整个芯片挂起,系统进入睡眠状态,以减少功耗。
(3)软件代码优化
软件代码的功耗优化主要包括:①在确定算法时,对所需算法的复杂性、并发性进行分析,尽可能利用算法的规整性和可重用性,减少所需的运算操作和运算资源。②把算法转换为可执行代码时,尽可能针对特定的硬件体系结构进行优化。例如,由于访问寄存器比访问内存需要更少功耗,所以,可以通过合理有效地利用寄存器来减少对内存的访问。③在操作系统中充分利用硬件提供的节电模式。随着动态电压缩放技术的出现,操作系统可以通过合理地设置工作状态来减少功耗。
2.2.2 结构级
在结构级进行低功耗设计的主要方法有:
(1)并行结构
并行结构是将1条数据通路的工作分解到2条通路上完成。并行结构降低功耗的主要原因是其获得与参考结构相同的计算速度的前提下,其工作频率可以降低为原来的1/2,同时电源电压也可降低。二分频并行电路参考结构如图2所示。
由图可以看出,并行电路结构是以牺牲芯片的面积来降低功耗。假定参考结构中的工作频率为fref,电源电压为Vref,最坏情况下的延迟为τ,则:
由式(4)可以看出,并行结构下功耗有明显的降低。
(2)流水结构
电路流水就是采用插入寄存器的办法降低组合路径的长度,达到降低功耗的目的。一个先相加再比较的电路中间插入流水线寄存器的流水结构如图3所示。
由图可知,加法器和选择器处在2条不同的组合路径上,电路的工作频率没有改变,但每一级的电路减少,使电源电压可以降低。假设电源电压为Vref /1.8,由于加入了流水线寄存器,等效电容变为原来的1.2Cref。则:
由式(5)可见,采用流水线结构也可以显著地降低功耗。
电路流水化和并行化可以达到降低功耗的目的,这是因为设计者可以选择电路的工作电压。如果电路工作电压固定,2种方法只能提高电路的工作速度,但功耗将相应地有所增加。
(3)编码优化
一般可采用One-Hot码、格雷码和总线反转码降低片上系统总线的功耗。One-Hot码在一个二进制数中只允许1个数位不同于其他各数位的值;格雷码在任何2个连续的数字其对应的二进制码只有1位的数值不同。由于在访问相邻的2个地址的内容时,其跳变次数比较少,从而有效地减少了总线功耗。
总线反转码是在传输数据时考虑相邻数据之间的关系来决定传输的格式。当发送部件向总线上传输第Si+1个数据时,会将它和Si进行比较,根据比较的结果来决定发送Si+1还是Si,从而减少总线的有效翻转数,进而减少系统的功耗。
除了这几种编码外还有一些更为复杂的低功耗编码,如窄总线编码、部分总线反转编码和自适应编码等,这些编码方式的最终目的就是通过改变编码来降低不同数据切换时的平均翻转次数。在采用这些编码时,设计者应该综合考虑它们带来的其他代价,如增加的编码解码电路等。
2.2.3 寄存器级
在寄存器级进行低功耗设计的主要方法有三种。
(1)门控时钟
门控时钟有2种:门控到达逻辑模块的时钟和门控到达每个触发器的时钟。但不管是哪一种,都能起到降低功耗的作用。门控到达逻辑模块的时钟控制方法如图4所示。中心模块提供给模块A和模块B不同的门控时钟,当模块不工作时,可以关闭该模块,从而达到减少功耗的目的。
门控到达每个触发器的时钟控制方法如图5所示。当寄存器保持数据时,可以关闭寄存器时钟输入,减少功耗。
(2)存储分区访问
存储分区访问是将一个大的存储模块分成不同的小的存储模块,通过译码器输出的高位地址来区分不同的存储模块。工作中,只有被访问的存储器才工作,其他几块存储器不工作。多模块RAM的架构如图6所示。
根据参考文献[4],采用此种方法可以将RAM的功耗减少12.5%。
(3)预计算
预计算是提前进行位宽较小的计算工作,如果这些操作得到的信息可以代表实际的运算结果,就可以避免再进行位宽较大的计算工作,降低电路的有效翻转率,从而达到降低功耗的目的。例如,2个8位操作数进行大小比较,如果最高位就不同,则这2位的比较结果就可以代表实际的结果,而不需要再进行8位操作数的比较,可显著降低位数较多的比较器的功耗。
2.2.4 逻辑门级
在逻辑门级进行低功耗设计的主要方法有:
(1)逻辑优化
逻辑优化设计的主要目的是减少信号的翻转活动。通过将逻辑电路的逻辑功能尽可能地分解,使翻转活动最小。然后将翻转活动高的结点隐藏到复杂的门里,以此来降低这些结点的等效电容。
(2)多阈值电压
多电压技术的思路与可变电压技术类似。可变电压技术在时间上改变电压,而多电压技术则在空间上使用不同的电压,根据系统不同部分的性能要求差异,使其工作于不同的电压,从而降低系统功耗。
2.2.5 版图和物理级
在版图和物理级进行低功耗设计的主要方法有:
(1)布局布线优化
布局布线优化设计主要集中在寄生电容与翻转活动这2个相关的因素。通过将连线合理地安排在不同的层面上达到降低功耗的目的。这一部分与使用的EDA工具有关。
(2)TFSOI设计技术
薄膜SOI器件采用绝缘介质作为隔离,与普通的CMOS器件相比,具有良好的特性:没有自锁效应,具有高集成度、低寄生电容和理想的亚阈值漏电流。采用SOI器件,电路的电容可以降低约30%,再加上较低的工作电压,可以大大降低电路的功耗。
以上从不同的层面系统地介绍了一些行之有效的低功耗设计方法。实践证明,在不同设计层次上采用不同的措施对功耗的改善程度是不同的,层次越高,改善的程度越大。各层次低功耗设计方法的效果比较如表1所示。
3 结束语
本文对SOC设计方法和不同层次的低功耗设计进行了深入探讨,给出了目前比较适用的SOC低功耗设计方法和新的软硬件协同设计流程。随着SOC技术的发展,软件设计占据的地位将会越来越重要,与软硬件协同设计相关的新的设计方法和低功耗设计技术必将得到快速发展。
参考文献
1 Keating M,Bricaud P.片上系统-可重用设计方法学(第三版).北京:电子工业出版社,2004
2 Okuma T,Ishihara T,Yasuura H.Software Energy Reduction Techniques for Variable-Voltage Processors.Design and Test of Computer,2001
3 Emnett F,Biege1 M.Power Reduction through RTL Clock Gating[Z].Synopsys Users Group,San Jose,2000
4 Jiann S Y,Jia D.Teaching Low-Power Electronic Design in Electrical and Computer Engineering.IEEE Transactions on Education,2005;48(1)
5 Aghaghiri Y,Fallah F,Pedram M.Transition Reduction in Memory Buses Using Sector-Based Encoding Techniques. IEEE Transactions on Computer-Aided Design of Intergraded Circuits and Systems,2004;23(8)
6 Rabaey J M,Chandrakasan A,Nikolic B.数字集成电路——电路、系统与设计(第二版).北京:电子工业出版社,2004