如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
关于CPU功耗的问题讨论,绝对比IT人士专业Re这条微博:http://weibo.com/1886211194/z0TrzsJuX最近实在空,看到又有人在玩x86vsarm功耗性能的比较,再上一段简单的功耗科普把。(看完可能需要10分钟)既然又提到了功耗比较(从功耗还可以延伸到性能功耗比、效率等其他指标),有必要再次提醒一下功耗比较的一些前提,说是再次提醒,因为其实很多人都知道这个问题,但是在使用中又往往不经意间忽略这个问题,这里我顺手多写一点资料,希望大家记忆更深刻一点。只是博客聊聊,详细数据我就不去考证了,权作概念解释吧。核心问题是:CPU的功耗指标是一笔糊涂账,CPU在运行不同的软件时所花费的功耗是不一样的。那么,倒底怎么标称功耗指标呢?每家公司的功耗值又是怎么测量得出的呢?大家知道比较多的,Intel一直用TDP功耗数据来标称CPU功耗。所谓TDP,英文全称ThermalDesignPower,直译就是散热设计功耗,意思是系统设计中必须具备的散热能力值。也就是说Intel告诉给他的客户,我的CPU可能的发热量(即功耗)最大会达到这个数值。因此Intel给出的功耗数据是极端上限值,是CPU在极大满负荷运转下的耗电。我估计如果谁测到比Intel标称值大的功耗情况,应该可以向Intel去索赔的。而在CPUIP行业中,因为各种条件的限制和制约(比如IP交付时还根本不知道具体的工艺实现),大家约定俗成使用另外的功耗测量手段,不光是ARM,MIPS也一样,其他CPUIP公司也一样。就是找一个比较常见的程序跑一下,然后报这个情况下的功耗数据。很多年来,不成文的规矩,行内大家都用Dhrystone来作为这个测试软件。这个可怜的Dhrystone,就这样一边被大家骂、一边被众人用,它的最新版本2.1也是1988年的事情了,显然连作者都失去了维护它的兴趣,奇怪它还是那么长命,可见惯性的力量!回到功耗的话题,这里既然谈Intel和ARM的功耗,就拿ARM来说吧。ARM所有的标称功耗值,都是指:(1)内核在运行Dhrystone程序过程中的平均功耗;(2)除非特殊说明,测量是在电脑仿真环境下进行的(因为ARM不卖芯片、也没有芯片)。这样的功耗数据跟实际芯片和系统下面的真实功耗应该是有比较大差距的;明显的一点是,既然运行的程序不一样,功耗肯定不一样。那问题是,一般情况下,实际功耗是比ARM标称值大还是小呢?这一点我不敢下绝对的结论,只能说一句,一般情况下,实际功耗会比标称功耗大!引起功耗变化的原因有很多,比如(但不完全):(1)不同ARM芯片的物理实现基本是不一样的(从前端约束到后端设计到工艺制程),即使同一个内核,不同家的芯片之间功耗表现也会相差很多;(2)Dhrystone属于一个较“轻”的程序(也是为什么被批评不适合于作为现代CPU的测试向量),Dhrystone对CPU的负载压力不大,自然使得相应功耗也偏小;(3)特别地,Dhrystone自身的指令和数据量太小,基本上在L1cache里面就装下了,因此运行过程中CPU基本不需要跟内存之间有吞吐交互,没有覆盖到这一点,无论从性能测试还是功耗测试上,都是一个极大的缺失。我们知道CPU跟内存之间的交互,早已是现代CPU的性能瓶颈,也是能量的一大消耗。不过这样的功耗数据,并非ARM有意美化其低功耗的名声,实际上MIPS和其他同行也都是这么做的,在各自材料中也应该都是用小字体有标注说明,哈哈。作为一种“参考”指标,这并没有问题,不过大家应该记住,这只是一种相对的“参考”指标,不是绝对值。因此在使用时要注意。Dhrystone测试给CPU的压力比多数实际应用场景要小。一般在实际系统中,芯片公司不太给出单独CPU的功耗数值,确实其意义也不大,都有芯片了,你关心整个芯片的功耗就是了。在很多的测评报告中,直接把ARM官网的性能和功耗数值套用在比如Tegra这样的芯片上面,这是非常不对的,无论功耗还是性能,ARM给出的仿真数据和一个芯片的实际数据会有一定差别的。比如A9性能的官方标称是2.5DMIPS/MHz,据我所知,现在还没有一款A9芯片,可以真实达到2.5DMIPS/MHz的成绩,2.3是到现在为止我看到过最高的实测分数了。原因有点类似于功耗测量中的问题,DMIPS/MHz恰恰也是这个Dhrystone测试向量干的事情。在Dhrystone测试下面,高分低能是很常见的现象——指DMIPS/MHz跑很高分,而实际处理器性能表现一般。关于Dhrystone有两个问题大家需要注意:(1)Dhrystone自身的设计缺陷;(2)欺骗性优化。已经有很多小文章讲述Dhrystone的缺点了,主要的大致有以下几点:(1)