揭秘CPU和GPU区别到底有多大?

作者: Hardy
来源:架构师技术联盟

CPU (Central Processing Unit,中央处理器)就是机器的“大脑”,是完成布局谋略、发号施令、控制行动的“总司令官”。CPU的结构主要包括运算器(ALU,Arithmetic and Logic Unit)、控制单元(CU,Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。

GPU(Graphics Processing Unit,中文为图形处理器),就如其名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。

CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。

而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

于是CPU和GPU就呈现出非常不同的架构(示意图):


从架构图我们就能很明显的看出,GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理量大且统一的数据(如图像数据)。

GPU的主要工作就是3D图像处理和特效处理,通俗地说就是一种图像呈现的工作。对于2D图形,CPU可以轻松处理,但是对于复杂的3D图像,CPU就要花费很多的资源去处理,这显然会降低其他方面的工作效率,于是就将这类工作交给GPU去处理。

一些高帧率的游戏画面和高质量的特效也交给GPU去处理,分担CPU的工作。除此以外,GPU凭借并行处理处理的能力,在密码破译、大数据处理、金融分析等领域应用广泛。

为什么GPU特别擅长处理图像数据呢?这是因为图像上的每一个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,此类场景也就成了GPU的天然温床。

但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。

GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下GPU计算能力只是CPU很小的一部分。

CPU 基于低延时的设计,CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。


相比之下,GPU是基于大的吞吐量设计,Cache比较小、控制单元简单,但GPU的核数很多,适合于并行高吞吐量运算。


GPU中有很多的运算器ALU和很少的缓存Cache,缓存的目的不是保存后面需要访问的数据(这点和CPU不同),而是为线程Thread提供服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问后再去访问内存DRAM。

总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有较大的区别。而某些任务和GPU最初用来解决的问题的方式比较相似,所以采用GPU来计算。

打个比方,GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。

GPU就是用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生之间的工作没有什么依赖性,是互相独立的。

这就回答了GPU能做什么的问题。图形运算和大型矩阵运算,如机器学习算法等领域,GPU就能大显身手。简而言之,CPU擅长统领全局等复杂操作,GPU擅长对大数据进行简单重复操作。CPU是从事复杂脑力劳动的教援,而GPU是进行大量并行计算的体力劳动者(小学生)。

GPU的工作的特点是计算量大,没什么技术含量,需要重复很多很多次,还需要CPU来把数据喂到嘴边才能开始干活,最终还是靠CPU来管理的。

为什么在人工智能领域GPU十分盛行?深度学习是模拟人脑神经系统而建立的数学网络模型,这个模型的最大特点是需要大数据来训练。

因此,人工智能领域对计算能力的要求就是需要大量的并行的重复计算,GPU正好有这个专长,时势造英雄,因此GPU就出山担此重任。在人工智能领域(深度学习),GPU具有如下主要特点:

1 、提供了多核并行计算的基础结构,且核心数非常多,可以支撑大量数据的并行计算。并行计算是一种一次可执行多个指令的算法,目的是提高计算速度,通过扩大问题求解规模,解决大型而复杂的计算问题。

2、 拥有更高的访存带宽和速度。

3、具备更高的浮点运算能力。浮点运算能力是关系到处理器的多媒体、3D图形处理的一个重要指标。现在的计算机技术中,由于大量多媒体技术的应用,浮点数的计算大大增加了,比如3D图形的渲染等工作,因此浮点运算的能力是考察处理器计算能力的重要指标。

需要强调一点,虽然GPU是为了图像处理而生,但是我们通过前面的介绍可以发现,GPU在结构上并没有专门为图像服务的部件,只是对CPU的结构的优化与调整,所以现在GPU不仅可以在图像处理领域大显身手,它还被用做科学计算、密码破解、数值分析,海量数据处理(排序、Map-Reduce等),金融分析等需要大规模并行计算的领域。因此,GPU也可以认为是一种较通用的芯片。

简单总结:CPU和GPU是两种不同的处理器,CPU是程序控制、顺序执行等操作的最高级通用处理器,而GPU是用来做图像处理、特定领域分析的专用型处理器,GPU受CPU的控制。在很多终端设备中,CPU和GPU往往集成在一个芯片内,同时具备CPU或GPU处理能力。

本文转自:架构师技术联盟,作者:Hardy,转载此文目的在于传递更多信息,版权归原作者所有。

最新文章