百科问答小站 logo
百科问答小站 font logo



为什么 GPU 的浮点运算性能远远强于 CPU? 第1页

  

user avatar   xie-feng-91-98-10 网友的相关建议: 
      

这就好比F1赛车和重型卡车的区别。一个追求绝对速度,另一个追求最大载重量。如果以每公里时速比,那F1赛车绝对优势,如果以单位油耗载重(或者说单位重量货物运输成本)重卡是绝对优势。两者应用领域不同,设计思路也不同。

这个要从半导体的两个定律开始说起,一个是摩尔定律,另一个是Dennard scaling。摩尔定律说的是工艺改进时单位面积晶体管价格不变,也就是说,每次工艺革新,同样的钱可以买到成倍多的晶体管;Dennard Scaling说的是,工艺革新,单位面积晶体管功耗不变,也就是说晶体管翻倍了,但他们总功耗不变。

这两个定律支撑了过去几十年随工艺革新计算性能成倍提升。有Dennard scaling和摩尔定律,可以通过不断堆晶体管,提升频率提高性能。

后来Dennard Scaling首先失效,也就是说,单位面积晶体管功耗会上升,虽然工艺进步有更多晶体管,但单位面积功耗上升,要维持总功耗不变,必然不是所有晶体管都能同时工作,也就是说虽然晶体管多了,但它们不能同时计算,就是所谓dark silicon,也就是说狂堆晶体管的作用就大打折扣。


堆晶体管依然有用,但是远远不如过去那种成比例提升来得爽。比方说,我可以用更多的晶体管来提升执行效率,比方说乱序执行,然后通过降电压,降频控制功耗。再或者就是粗放型的堆多核,这样因为峰值性能提升,也可以降压降频控制功耗。

扯了那么多,还没回答问题。回到正题,在给定功耗和晶体管的约束下,就在于如何分配晶体管给计算或者控制逻辑。GPU侧重浮点计算,晶体管和功耗主要向浮点计算倾斜;CPU侧重控制流,和降低延迟,晶体管和功耗侧重优化延迟。

CPU注重单线程性能,也就是低延迟,那么对CPU来讲,需要保证指令流不中断,消灭流水线中的气泡,于是CPU需要消耗更多的晶体管和功耗在控制部分,包括:指令多发射,分支预测,乱序执行等等,其中reorder buffer是耗电大户,于是CPU能分配在浮点计算上的功耗就会少,因为很大一部分功耗被分配在控制部分,如下示意图(不是真实面积比例):


GPU不同是,注重吞吐量,单指令能驱动更多计算,比如一条指令驱动三十二路浮点计算,于是相比较而言GPU消耗在控制部分功耗相对较少,由于GPU注重吞吐量,所以GPU也不需要复杂的分支预测,乱序执行之类,也进一步把电省下来给浮点运算。


所以,他们的不同只是在于如何去分配晶体管和功耗完成不同的工作,侧重点不同。不同的应用特征不同,需要不同的架构,像操作系统这一类,需要快速响应实时信息,需要针对延迟优化,于是晶体管资源都要用在控制部分,分支预测,乱序执行上,低延迟缓存。而像矩阵运算一类,程序具有极高的可预测性和大量相似的运算,那些针对单线程优化的策略反而是累赘,比如低延迟缓存通常更昂贵、reorder buffer占用大量晶体管和耗电。这类应用就非常适合GPU,这种高延迟高吞吐的架构。

最后,摩尔定律接下来也会失效,这时候,针对应用的优化就会变得越来越重要,也就是说需要软件硬件从上到下的完全协同设计。所以像苹果那样从软件到硬件全部自己做也是有道理的。


user avatar   yan-zhang-93-91-18 网友的相关建议: 
      

楼上所有的回答只有

@王洋子豪

的回答提到的关键点,他的回答信息很多,大家都没有理解到。

首先说GPU比CPU快,需要有个归一化的标准,不能拿着100美元功耗80瓦的CPU和2000美元功耗300瓦的GPU比,这肯定不公平,也不能CPU上的单线程和GPU的多线程比较,这都不公平。归一化的标准用什么呢?用价格肯定不是很合理,毕竟影响价格的因素太多。考虑现在计算机的瓶颈 power wall,用功率来归一化是最合理的。现在的情况是,在归一化到功率,即每瓦特的情况下,GPU的运算的能力也比CPU也要好,我们应该讨论的是,为什么GPU的power efficiency要CPU要高?或者说为什么CPU的效率低于GPU,CPU的效率被“浪费”到什么地方去了?回答很简单,重要的事情说三遍:

缓存,缓存,缓存

CPU有大量的缓存结构,现在流行的PC芯片上都有四级缓存,这些缓存结构消耗了大量的晶体管,在运行的时候,自然要消耗大量的电力。但是GPU的缓存很简单,现在最多有两层,而CPU消耗在晶体管上的费用和能耗,GPU都可以用来做成ALU单元,这就是GPU比CPU效率高的根本原因。

为什么GPU可以这么设计但是CPU不行?这是因为任务不一样的原因。对CPU来说,要求的是实时响应,对单任务的速度要求很高,所以就要用很多层缓存的办法来保证单任务的高速度。而对GPU来说,大部分任务的性质都是看“那个部分最后一个完成”,比如说,对GPU做显卡来说,没有人关心显示器上的第一个像素什么计算完成,大家都只关心什么时候把显示器上的最后一个像素算出来,对深度学习了,没人关系第一个参数算出来,都关系什么时候做完最后一个,所以GPU可以把所有的任务都排好,对缓存就的要求就很低。对CPU来说,比如处理点鼠标这种任务,要求的是点第一下时候就能及时响应,如果电脑说,等你点100下鼠标,我来批量处理,效率能提高一倍,你回作何感想。




  

相关话题

  CPU不满载的时候,晶体管在干什么? 
  RTX3070可以完美运行2k144hz的3A大作吗? 
  如何看待PS5(PlayStation5)的soc内核照片(die shot)? 
  为什么大多数显卡都提供三个 DisplayPort 接口和一个 HDMI 接口? 
  为什么时至今日还有这么多人纠结于CPU指令集? 
  为什么市面上没有山寨的 CPU 卖? 
  CPU 为什么那么多引脚?都是什么作用的? 
  同样是12核24线程,AMD锐龙9 5900x和E5 2650v4差距有多大?价钱差十倍性能差多少? 
  如何看待 Larrabee 之父 Tom Forsyth 重加入 Intel?英特尔为何下注独立显卡? 
  请问电脑显示器数据线转接头怎么选择? 

前一个讨论
如何看待一些车主全款买车却被销售不尊重的情况?
下一个讨论
PLC、DCS和FCS实质上一样的,对吗?





© 2025-04-02 - tinynew.org. All Rights Reserved.
© 2025-04-02 - tinynew.org. 保留所有权利