传授压箱绝技:从SoC设计人员那都了解不到的功耗管理问题
当今的系统设计人员受益于芯片系统(SoC)设计人员在芯片级功耗管理上的巨大投入。但是对于实际能耗非常小的系统,系统设计团队必须要知道,实际是怎样进行SoC功耗管理的。他们必须对整个系统进行功耗规划。他们必须针对最终用户体验到的系统使用模式建立精确的模型。这些都不是简单的任务,把所有这些方法合在一起也还不够。系统设计人员必须要理解片内功耗管理过程以及系统其它部分之间的相互作用,或者,他们会发现,尽可能降低功耗会导致效率降低,甚至是严重的故障。
这些难题并不会随时间变化而逐渐变得简单。芯片设计人员在提高能效方面尝试了很多方法,提出了听起来非常激进的想法。在今年的设计自动化大会(DAC)的一次小组讨论中,TI专家Clive Bittlestone说:“有很多种方法,我们正在尝试全部使用它们。芯片设计人员要尽可能降低功耗而忽略了回报,可能导致加重系统设计人员的工作。而对于节能,系统设计是一个新的前沿领域。Bittlestone承认:“在晶体管级,我们已经达到了饱和。下一最关键的问题是在系统级。”
SoC设计人员所做的工作
正如Bittlestone所建议的,SoC功耗管理技术所采用的方法一直在不断增加。这包括一些很普通的方法,对管芯之外的任何东西都是透明的。但是,也有需要系统其它部分主动参与的方法,有些对外部电路还会产生重要影响。
有几种门级功耗管理方法,应用在IC设计流程中,对于系统设计人员而言是透明的。例如,对于基于单元设计的设计工具——至少一个FPGA品牌,可以在具有较大泄漏的高速单元和低泄漏电流慢速单元之间自动进行选择。综合工具可以分析逻辑,插入时钟逻辑门,关断任何寄存器的时钟,使得在其工作周期中看不到明显的数据变化。这类方法能够显著降低功耗,不需要来自系统其它部分的任何输入,对性能也不会有任何影响。
其它方法则需要来自系统管理硬件或者软件的大量帮助。一个例子是动态电压频率调整(DVFS)。在DVFS中,软件估算系统在某一模式下,模块所需要的最佳性能。然后,软件指导模块——通常是CPU或者加速器,以足够的时钟频率运行,满足系统要求,而电压则刚好满足该频率要求。同一原理更严格的方法是模块级电源选通。在这个例子中,软件确定目前还不需要模块,切断模块的电源。
很显然,这些方法需要系统软件知道某一模式下系统的资源需求,例如 图1 所示。这些知识要求两类很难获得的信息:实际最终用户将在系统中采用的使用模式,每一模式中的系统资源和性能要求。例如,用户的智能电话要求蜂窝射频和GPS接收器同时工作吗?如果是,那么,GPS能够进入低功耗近似跟踪模式,或者,它需要进行恰当的实时纠正吗?确定模块在一定时间内需要以多快的速度运行——即使它可能会被关断,这并不是一个简单的任务。
图1.视频/播放/录像模式(顶部)、DVR回放模式(中间),以及空闲模式(底部)所需要的系统资源。
除了上面的信息,系统设计人员必须理解SoC各种功耗模式的延时和开销成本。相对而言,这可能需要很长的时间来改变CPU的时钟频率,使其能够保持状态,关断,然后重新恢复。系统中的其他器件能够承受这些延时吗?当系统空闲时,CPU内核能够关断吗,或者需要电源失效以及唤醒等监控功能吗?
对于专用标准产品和微控制器,一般在数据表中很好的记录了序列和延时信息。不一定记录状态改变时的能耗成本。即使有记录,并不是一直能够掌握SoC中的哪些模块在一定时间内工作在哪一级。
SoC规划人员提醒说:“这些芯片非常复杂。会有很多不同的功耗管理方法同时在工作。坦白的说,对于芯片而言最重要的方法是保密的——我们并没有记录它们。”
只要您使用供应商的参考设计,按照其设计人员提供的方法进行工作,那么,朋友之间最好保持一些秘密。但是,如
评论