另一层设计考量——混合技术降低动态功耗
随着行动装置成为市场主流,以及不断攀升的能源成本和环保意识的提高,功耗(power consumption)已成为设计人员最关心的议题。功耗大抵可分为两部分,其一是静态(static)或漏电(leakage)功耗,当元件处于待机状态时该情况自然会产生;其二是动态功耗(dynamic power),指的是元件切换过程中所产生的功率消耗。就降低功耗而言,两者都是设计上重要的议题;而这份报告主要是探讨动态功耗及如何改善其相关的度量(metric)。
传统设计中的另一层考量
过去数十年来,设计人员运用合成(synthesis)设计塬则进行设计,如此可产生同步时脉(synchronous clock-based)的架构。在这样的设计方法下,所有的逻辑电路转换由透过时脉网路分配的主时脉所支配。若最长的逻辑路径(logic path)超过主时脉的週期时间,则设计人员必须设法减缓时脉,或者加快长路径的速度。为了最有效地权衡两者,设计人员会使用静态时序分析工具,进行最长路径的运算及逻辑电路的最佳化,直到他们达成所预定的时序频率。
以上所述是当今设计所运用的基本方法论,它的效果不错、能达成每个技术节点的速度优化,而且极为可靠。然而就当今的设计环境来说,其主要的缺点是它把面积(area)和功率列为第二和第叁考量顺位,但以目前消费者对于更小、更快速且强调功能特色装置的迫切需求而言,设计人员不能再把面积与功率视作次要的设计目标,而是必须审慎评估及改善这两项度量,以满足当今的设计要求。
当我们在进行同步设计分析并将动态功耗纳入考虑时,可以辨识出两种造成过度功率耗损的塬因。其中之一是时脉分配(clock distribution),它能确保所有的逻辑电路与主时脉同步。整个时脉结构上的时脉偏移对于晶片的效能有直接的影响,因此必须设法将时脉延迟及偏移的发生降至最低。儘管上述架构允许设计人员提高时脉频率(及效能),但它也会消耗掉20%到60%的晶片功率,且需要大量的半导体空间。换句话说,这种设计方法虽然效率高但成本也高,特别是在功率方面。
同步设计也意味着电路中的所有转换会「聚集(bunch up)」在时脉边缘。举例来说,在每个有效时脉边缘上,所有发生在逻辑路径的转换会同时被执行,而当条件顺着组合逻辑链(combinatorial logic chain)被满足后,这些转换就会逐渐停止。若以图示表示,该现象可用锯齿波形来呈现。而大多数的动态功率就是在这样的执行过程中被消耗掉的,直到路径末端几乎没有功率被消耗为止。若是在最佳时序的状态下,则最后的转换应当在下一个时脉进行前就减弱。
就时序(timing)而言,该方法论的效果不错,若能妥善分配週期中的转换以及消除锯齿波形,则在任何时间点所需的最大功率将会大幅降低,幅度约30%到50%左右。这是因为电源供应线不需要处理每个时脉周期(clock cycle)一开始产生的众多元件切换所带来的电流突波(power surge),也因此可以减少面积并降低功率的浪费。
有一个简单但不切实际的解决方式是,建立一个带有适当延迟的客製逻辑电路(custom logic)去达成每个输出点所欲达到的功能,藉此妥善调整功率的分派。这个做法可以让速度变得很快,有点类似让单一印表机对上单一电脑,而不是透过区域网路让多个使用者共享一台印表机的资源。然而这样的架构需要大量的面积、逻辑电路及功率才能恰当的运作。我们相信一定有其他更好的方式能达成时序、效能、功率及面积的目标,同时又能符合经测试且有效率的合成设计方法(methodology of synthesis-based design)。
提升省电效率的方法
时脉闸控(clock gating)是用来在同步设计环境中,达成较佳动态功耗效能的最常见技术。时脉闸控本身即是违反传统的同步设计规则,而当今很多工具便是利用这样的「漏洞(loophole)」成功地改善功耗的问题。利用时脉闸控技术,除非输入至正反器(flip-flop)的资料遭到改变,否则正反器将不会接收到时脉讯号, 如此一来可以避免把功率浪费在正反器单元中,以及避免把功率用在受到闸控的任何时脉树部分。因此,当前的设计工具大量利用时脉闸控达成大幅降低动态功耗的目的。
在任何复杂的逻辑锥(cone of logic)中,当路径进一步到达逻辑锥区时,很多转换便会被封锁住,而无法透过时脉闸控来抑制。其中有些转换可作为「资料闸控(data gating)」用,而这个时候便能识别出,那些在不影响电路输出情况下进行转换的逻辑电路。常见的例子像是在某些时间点未被使用的操作输入,或是在週期中进行改变的记忆体读取地址。平息这类型的转换将大幅降低电路中
- 射频识别芯片设计中时钟树功耗的优化与实现(02-24)