概念:
CPU全称是central processing unit,CPU是一块超大规模的集成电路,是一台计算机的运算和控制核心,它的主要功能是解释计算机指令和处理计算机软件中的数据。
GPU全称是graphics processing unit,GPU是将计算机系统所需要的显示信息进行转换的驱动,并向显示器提供扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,是人机对话的重要设备之一。
缓存:
CPU有大量的缓存结构,目前主流的CPU芯片上都有四级缓存,这些缓存结构消耗了大量的晶体管,在运行的时候需要大量的电力。反观GPU的缓存就很简单,目前主流的GPU芯片最多有两层缓存。CPU消耗在晶体管上的空间和能耗,GPU都可以用来做成ALU单元,也因此GPU比CPU的效率要高一些。
响应方式:
对CPU来说,要求的是实时响应,对单任务的速度要求很高,所以就要用很多层缓存的办法来保证单任务的速度。对GPU来说大家不关心第一个像素什么时候计算完成,而是都关心最后一个像素什么时候计算出来,所以GPU就把所有的任务都排好,然后再批处理,这样对缓存的要求就很低了。举个不恰当的例子,在点击10次鼠标的时候,CPU要每一次点击都要及时响应,而GPU会等第10次点击后,再一次性批处理响应。
浮点运算:
CPU除了负责浮点整形运算外,还有很多其他的指令集的负载,比如像多媒体解码,硬件解码等,所以CPU是个多才多艺的东西,而GPU基本上就是只做浮点运算的,也正是因为只做浮点运算,所以设计结构简单,也就可以做的更快。 另外显卡的GPU和单纯为了跑浮点高性能运算的GPU还是不太一样,显卡的GPU还要考虑配合图形输出显示等方面,而有些专用GPU设备,就是一个PCI卡上面有一个性能很强的浮点运算GPU,没有显示输出的,这样的GPU就是为了加快某些程序的浮点计算能力。CPU注重的是单线程的性能,也就是延迟,对于CPU来说,要保证指令流不中断,所以CPU需要消耗更多的晶体管和能耗用在控制部分,于是CPU分配在浮点计算的功耗就会变少。GPU注重的是吞吐量,单指令能驱动更多的计算,所以相比较而言GPU消耗在控制部分的能耗就比较少,因此也就可以把电省下来的资源给浮点计算使用。
应用方向:
像操作系统这一类应用,需要快速响应实时信息,需要针对延迟优化,所以晶体管数量和能耗都需要用在分支预测,乱序执行上,低延迟缓存等控制部分,而这都是CPU的所擅长的。对于像矩阵一类的运算,具有极高的可预测性和大量相似运算的,这种高延迟,高吞吐的架构运算,就非常适合GPU。
本文参考:
https://www.toutiao.com/i6519387357685219847/
供稿单位:网络中心 撰稿人:姜长荣 审核人:王德民