超能课堂(149):再谈TDP,处理器真实功耗与它完全无关吗?
对于TDP功耗,我们之前在超能课堂(55):揭开功耗面纱,TDP/TBP/SDP/ACP有什么不同?一文中介绍过TDP功耗、TBP及GCP功耗的区别,但是到了2018年的今天,依然有很多人对TDP功耗有误解,不只是把TDP功耗当作处理器标称功耗,还有个关键的问题——处理器的实际功耗要比TDP功耗低还是高?能够回答对这个问题的人还真不多。
对于TDP功耗,常看超能网文章的读者很多都知道TDP功耗不等于处理器功耗,对于有些不太明白TDP意义的读者,我们热心的读者都开始给他们科普TDP的含义了,比如下面这位同学:
拔刀斋同学说的不错,TDP不是最大功耗,它是热设计功耗,250W TDP的处理器峰值功耗肯定远超TDP功耗,他评论的这篇文章中说的就是32核Threadripper 2990WX处理器超频之后峰值功耗超过1000W,这个数值要比TDP功耗高太多了。
今天这篇超能课堂中我们再深入谈谈TDP功耗与处理器功耗的问题,看完这篇文章之后大家对TDP功耗就不会再有什么误解了。
处理器的TDP功耗是什么?它怎么来的?
先来说第一个问题,TDP功耗是什么——TDP是Thermal Design Power热设计功耗,还有一个说法是Thermal Design Point,后者几乎没什么存在感,所以TDP绝大多数还是跟功耗联系在一起,但这个功耗指标主要是给散热器用的,以Core i7-8700K处理器为例,它的TDP是95W,指的就是散热器需要提供不低于95W的散热能力。
TDP作为热设计功耗,是有明确的测试条件的,以英特尔为例,TDP是在基础配置下、最大Tcase温度(Tcase温度是处理器IHS允许的最高温度,比核心温度要低一些)、VDD电压下测量的,在八代酷睿处理器中具体的TDP测试条件如下:
还是以Core i7-8700K处理器为例,它的TDP测试条件是3.6到3.7GHz频率、核显1.15到1.2GHz,但是这里的TDP功耗没有说Tcase温度,这个指标对TDP影响很大,而且Tcase的温度并不固定,继续翻英特尔的官方文档,八代酷睿处理器在LPM低功耗模式下的TTV TDP(Thermal Test Vehicle TDP)功耗如下:
这里的TTV Tcase温度最高就是65°C,也就是说低功耗模式下的Core i7-8700K是在不超过65°C情况下用基础频率实现95W TDP的。
还有一点要特别说明,TDP功耗测试不仅是跑基础频率,还不会涉及处理器的AVX浮点测试,而浮点单元现在是CPU功耗的大头,跑不同的应用功耗差距极大就是这个因素导致的。
综合来看,我们对TDP可以有如下认知:
·TDP是热设计功耗,不等于处理器功耗,是处理器损耗的热功耗,英特尔特别强调它不是处理器的最大功耗
·TDP功耗是算出来的,不同的处理器有不同的算法,跑的主要是基础配置下非AVX应用。
·Tcase温度对TDP影响很大,因为TDP本来就是跟散热相关的。
·TDP测试的持续时间很短,跟平时跑压力测试并不一样。
·TDP功耗的高低不能判断处理器好坏,有时候更好的TDP意味着更高的性能。
TDP功耗能不能代表处理器功耗?真实功耗比它低还是高?
虽然我们多次强调TDP功耗不代表处理器实际功耗,但很多人还是用它来指代处理器的功耗,这种说法其实也不能完全说错,导致这个问题的根源在于现在并没有公认的指标来衡量处理器功耗,而TDP功耗某种程度上也确实代表了处理器的功耗极限,因为TDP差不多就是处理器在最坏情况下的功耗,日常使用中对处理器的负载还真不一定比TDP测试中的负载高,所以多数情况下处理器的实际功耗比TDP功耗要低一些。
上海交通大学的一篇论文里把TDP功耗说的很全面了
当然,这个情况成立的前提是用户不涉及TDP测试没考虑到的情况,而现代的高性能处理器非常复杂,支持的浮点指令集不同,处理器也不是简单的CPU了,还有GPU核心,而且有Turbo Boost后加速频率也不同,比如Core i7-8700K加速频率可达4.7GHz,Core i7-8086K加速频率可达5GHz,而TDP测试中则是使用基础频率,这中间可就差了至少1GHz,这对处理器的发热、真实功耗影响就大多了。
英特尔的Core i7-2600K是4核8线程,频率3.4到3.8GHz,TDP功耗也是95W,而Core i7-8700K是6核12线程,频率3.6到4.7GHz,TDP功耗还是95W,但是大家都知道这两款处理器不论功耗还是发热都有很大不同,95W散热器理论上不仅能压得住Core i7-2600K,也能压制住Core i7-8700K,但大家都知道Core i7-8700K的真正发热要高得多。
处理器的功耗都用在哪里了?
大家关注处理器TDP功耗,实际上还是关注处理器的实际功耗,谁都希望处理器功耗越低越好,英特尔、AMD也是这样想的,因为功耗几乎成了限制处理器进一步发展的关键,尤其是在半导体制程工艺逐渐逼近终点的情况下,如何降低功耗是考验未来高性能计算发展的关键问题之一。
那么现代的处理器都是哪些单元消耗功耗的呢?前几年英特尔在一篇讲述高性能计算的演讲中提到了处理器功耗的分布问题,这要分为两部分来看:
核心层面的处理器功耗分布
如果不涉及浮点运算,那么处理器中Cache缓存部分消耗了45%的功耗,OOO乱序执行/预测单元消耗21%的功耗,再次就是TLB单元了。但是运算要是涉及到了FP浮点单元,情况就不一样了,FP浮点单元的功耗能占到75%,剩下的部分才是缓存、OOO以及TLB等等。
芯片层面的功耗分布
如果是看整个芯片的功耗分布,那么FP浮点单元依然是大头,占比达到了45%,Uncore非核心部分的功耗占比达到了40%,整数单元、OOO、预读、TLB之类的单元就更微不足道了。
在当前的处理器中,计算性能最主要的来源都是FP浮点单元,英特尔这多年来推出的AVX/AVX2/AVX-512都是加强了浮点指令集,性能越来越强大,但是如上所示,FP浮点单元已经成为处理器功耗中的大头,而TDP功耗测试中英特尔明确了测试都是非AVX负载的,也就是浮点单元参与不多,不然功耗就真的完全不一样了。
Xeon Scalable系列的非AVX加速频率
Xeon Scalable系列的AVX-512加速频率
以支持AVX-512的Skylake-SP架构为例,28核Xeon Platium 8180在非AVX下基础频率2.5GHz,单核加速频率3.8GHz,全核加速频率也有3.2GHz,但是跑AVX-512指令集基础频率1.7GHz,单核加速频率降至3.5GHz,多核直接降到了2.3GHz,这就是同样205W TDP下的区别,涉及AVX指令与否对频率的影响非常大。
处理器功耗影响因素:频率、电压
处理器也是CMOS电路,在这方面有个通用的公式来计算处理器功耗,简单来CMOS电路的功耗可以分为动态功耗及静态功耗,静态功耗(Static Power)主要是漏电流引起的,这部分功耗是无用功耗,会变成废热,但现有技术又无法杜绝漏电流,而且它所占的功耗比例有越来越高的趋势。
至于动态功耗(Dynamic Power),在不同的技术文档中它也是由不同功耗组成的,其中有充电/放电导致的开关功耗,可以用1/2*CV2F这个公式来计算,该公式也有不同的变种描述,决定转换功耗高低的主要是运行电压和频率,这也是减少电路功耗的重点。
对某个具体的处理器来说,它的实际功耗高低主要就是动态功耗了,这方面的例子我们还是以Core i7-8700K的功耗为例,Overclock.ru网站之前在Core i7-8700K首发评测中做了详细的测试:
Core i7-8700K对比其他处理器的功耗
在这个测试中,他们对比了不同频率、电压下的处理器功耗,可以看出来同样的电压,频率提升之后功耗也在增加,而同样的频率下,提升电压之后功耗会大幅增加,4.0GHz从1.1V提高到1.3V,功耗从180W增加到了251W,毕竟动态功耗跟电压平方成正比。
总结:
处理器的TDP功耗本质上是给散热器厂商参考的,但它也确实顶着“Power”功耗这个名字,也是货真价实的功耗,是处理器在某些限定条件下的功耗,因此用它来衡量处理器的功耗还是有些参考意义的。
如果不超频不跑FP高负载,处理器的真实功耗多数情况下还是不会高于TDP功耗的,但TDP功耗在复杂情况下就不能跟处理器真实功耗挂钩了,这个要涉及到处理器的制程工艺、频率、电压甚至运行的测试,真实功耗远超TDP功耗的情况并不少见。
对普通消费者来说,使用TDP功耗对比处理器功耗也是不得已为之,因为现在业界就缺少一个通用的指标来衡量处理器功耗,显卡那边近年来开始使用TBP典型主板功耗及GCP显卡功耗这两个指标,但CPU上AMD、英特尔还没有共识,这个问题暂时无解。