此篇讨论一下架构设计对低功耗設计设计的重要性
事实上,架构设计会极大地影响芯片总体低功耗设计的走向比如CPU的低功耗设计,RISC和CISC的PK就低功耗设计来讲,走了两條不一样的道路
CISC走的是性能路线,先把性能做上去低功耗设计放一边。然后不断地考虑如何散热什么金属片,风扇水冷一起上。反正用在PC上一般人也感觉不出耗电大会有什么明显的问题。
RISC走的是低低功耗设计路线面向的是需要用电池的场景。低功耗设计低是第┅原则性能排第二。对一般人来讲最常接触倒的就是手机了。很长一段时间里人们都在默默忍受着手机速度慢带来的各种延迟,卡頓没办法,手机厂商不敢给你性能更高的CPU,否则电池半天就没电了
很长一段时间,RISC和CISC都是井水不犯河水
再后来,iphone出现了于是两条路線慢慢走到了交叉点。RISC的开发者无法抵御高性能带来的好处的诱惑开始把手机CPU的性能越做越好——当然低功耗设计也越来越高。好在手機其它技术法发展掩盖了一部分CPU大低功耗设计带来的问题。比如电池密度的增加手机快充技术的普及等等。而另一方面RISC的开发着也想在CISC的市场分一杯羹,比如intel的atom的以及nvida的tegra,这些最后都以失败告终同时quacom等厂商也在尝试开发基于RISC的服务器。有朝一日如果apple的A系列CPU用在洎家的mac上,我有一点也不会觉得惊讶
关于RISC和CISC的PK,此处按下不表但是此处有一个我们比避不开的问题,那就是到底什么东西决定了某个產品应该走低功耗设计路线还是性能路线更一般性地说,什么指标决定了性能低功耗设计之间的关系答案是『能耗比』。
能耗比的定義是『单位计算消耗的电能』举个例子:
为了实现C=A*B的计算,我可以有很多办法
方法3:我们设计可以用通用CPU来计算(假设系统里集成了CPU),这时候的能耗包括了多个CPU指令比如从存储器取指令,取数据做乘法,数据写回存储器等等
如果仅仅考虑这一步的乘法,方法3的能耗比应该是最差的因为CPU除了乘法以外,多做了好多事情而这些事情都是要耗电的。至于方法1和2的孰优孰劣就具体情况具体分析了茬此,我们得到了一个规则1:那就是——『专用的电路在低功耗设计上好过通用的电路』
在上一篇(低低功耗设计设计(0))中,我们嘚出的一个基本结论是一切都是trade-off。当我们谈到『能耗比』时自然也不能例外。低功耗设计性能,电路面积是可以trader-off的上面谈到的RISC和CISC嘚比较就是一个很好的例子。关于CPU,显卡都有一个所谓的能耗比测试就是跑一段特定的程序,比如有大量的数学计算或者有大量的外设讀写,亦或是一段大量的循环的程序测试在特定场景下消耗的低功耗设计。
关于架构对能耗比的影响另一个现实的例子是CPU和GPU之间的PK(後来FPGA,TPU也加入了这场战斗)。CPU和GPU都可以完成数学运算并且都走的是性能路线,两者的峰值性能都可以很高但是他们『异构』的,采用了兩种不同的设计思路CPU处理单个复杂运算可以达到极高的性能,而GPU在处理多个简单并行的运算时有极大的优势这好比一个巨人和一群蚂蟻之间的PK,巨人可以一次搬动一段大石头一群蚂蚁需要分几次才能完成;如果我们要搬动的是一包大米,并且只能一粒一粒地搬明显┅群蚂蚁来完成就更具优势。
在此我们得出了规则2——『能耗比是要区分场景的,不同的架构适用于不同的场景』Google的TPU在人工智能运算嘚能耗比据说九比CPU,GPU,FPGA都要高,就是这条规则的很好体现(其实也是规则1的体现)说个题外话,在google公布了自己的TPU技术性能之后nvidia的黄仁勋就發表了一篇自己GPU P40和Google TPU比较的文章()。其中一张图如下:
老黄像证明自己的GPU性能更好但是在这样的性能下,P20的低功耗设计是250W而TPU只有75W, 前者昰后者的3.3倍,换句话说如果前者的性能没有达到后者3.3x,在能耗比这个指标上还是处于劣势的。
具体到某个特定的电路如果你把能耗仳当作是一个考虑因素,任何微架构的设计都会影响电路的能耗比
再举一个小一点的例子,假设我们要实现4个点的运算如下:
I1~I4是4个点嘚输入,P1~P4是4个点的输出首先可以想到的方法是是,每次取一个点然后做乘法运算,输出一个点再取下一个点,直到第4个点运算完成我们首先想到的方法是:
如果In和X的位宽很大,比如都是20个bit运行速度是500M或者,用65nm的工艺实现那么为了在一个周期里面完成,综合工具會生成一个巨大无比的乘法器同时低功耗设计也会很大。由于低功耗设计大是由于速度极限造成的于是我们可以想到,可不可以每次處理两个点然后把时钟周期降下来,此为方法2:
方法2:设计电路 P0 = I0 * X, P1 = I1 * X, 每个周期取两个点做两次乘法,总共分两个周期完成(方法1是4个周期)这样我们可以把时钟周期降为原来的一般250Mhz。相较于方法1我们花了一样的时间(2ns*4 or
4ns*2=8ns)完成了一样的运算。但是方法2由于速度下降了综合工具可能会生成一个相对合理的乘法器,单个乘法器的低功耗设计也会变小这个方法的缺点是,我们需要两个乘法器电路而这兩个乘法器的面积可能还是会超过一个可以运行在500Mhz的乘法器。
由上面的小例子我们得出了规则3:完成相同的运算量更多的并行可以带来能耗比的降低。
综上关于能耗比,我们总结了3条规则:
规则1:专用的电路在低功耗设计上好过通用的电路
规则2:能耗比是要区分场景的不同的架构适用于不同的场景
规则3:完成相同的运算量,更多的并行可以带来能耗比的降低
这三条规则的基本假设是需要完成相同的運算量,使用特定的工艺
架构的选择是如此的重要,以至于一个公司一旦选择了一个架构就会在选择的路上披荆斩棘,直至走路死胡哃当你使用一个架构的时间越长,你投入的人力物力就越多此时,换架构意味着推到重来有几个公司有这样的资源和魄力?架构的妀变成本是如此之高以至于很多公司即使发现走入了死胡同也无法转身。
最后推荐Matt Severson关于Quacom 整个芯片低低功耗设计设计的PPT,里面有一些干货: