1. 写了啥
CPU和GPU作为电子计算机的重要部件,在近年来受到工业界的广泛关注,正处于高速迭代的发展期。发展到今日,CPU与GPU同作为计算部件,在应用场景上已经出现明显的区别,与之对应的,二者在结构上,也大不相同。
CPU全称为中央处理器,是一块超大规模的集成电路板,与内部储存器和输入输出设备一起被称为计算机的三大核心部件。从最早的Intel4004和Intel8008,经历数个阶段的发展迭代,现在已经成为集处理指令顺序,执行操作,控制时间,进行复杂计算为一体的运算核心和控制核心,电子计算机的“大脑”。目前工业界的主流产品是Intel i5和i7系列。
GPU全称为图形处理器,是计算机显卡的核心部件。在个人电脑上,GPU通常被用于2D和3D图形处理,即进行复杂的数学和几何计算。但近几年来,由于GPU在浮点计算和并行计算上,拥有极其出色的性能,甚至超越了CPU的数十倍,使其被广泛使用在数据挖掘,深度学习等需要大量重复计算的工程之中。目前,主流GPU厂商NVIDIA生产的GTX和GT系列显卡占据了市场较大份额,而同为NVIDIA生产的Titan V目前性能最为强大。
本文立足于目前CPU和GPU的发展现状,讨论了CPU和GPU的物理结构之间的异同。事实上,CPU与GPU在构造上有很大的区别,由于GPU需要满足大量重复的图形计算,计算单元占据了绝大部分体积,CPU由于综合性能的要求,还需要一定数量的存储单元和控制单元。除了在物理结构上的不同,本文还将讨论两者在性能和应用场景的具体区别。除此之外,还将简要介绍CPU和GPU协同工作的并行处理机制,这是当前本领域的研究热点。
2. 物理结构
2.1 计算单元
如图1所示[1],在CPU与GPU中,都存在一种结构占据了大量的体积空间,即ALU(arithmetic and logic unit),算术逻辑单元为CPU和GPU提供了强大的逻辑计算能力,满足基本的计算功能。但其中不同在于,GPU的计算单元占比远高于CPU,这导致了GPU拥有在单一的逻辑运算中性能远高于CPU的特性。除此之外,如图2所示[2],GPU在计算核心的数量上也远高于CPU,所以其并行处理能力强悍,而CPU更适合做一些小型的串行计算,当然,多核CPU的出现,也使现在的CPU[1]拥有了一定的并行处理能力,但其ALU数量的限制依然存在。
图1 CPU与GPU物理结构对比[1]
2.2 控制单元和储存单元
除了在ALU上的差异之外,CPU和GPU在控制单元和储存单元上也有很大区别,如图一所示。CPU作为中央处理器,要处理指令顺序,安排操作执行的顺序,所以有很大体积的控制单元和储存单元,其中储存单元Cache为CPU提供了快速I/O的能力,I/O的速度将影响CPU处理指令集的速度,从而影响计算机的响应速度。而GPU仅具有少量的简单控制单元和小型储存单元,其作用是控制多线程合并处理和储存少量的并行运行指令。
图2 CPU与GPU计算核心数量示意图[2]
特性和应用场景对比
特性
由于物理结构的不同,CPU和GPU具有完全不同的特性。CPU存在大量的控制和储存单元,导致其拥有强大的分支处理能力,可以将来自不同地方的指令调整顺序,使命令按次序顺利和高效运行。同时由于具有一定的计算单元,所以也可以处理一些串行计算任务,多核CPU则可以处理一些简单的并行任务。
GPU仅具有极大数量的ALU,和少量用于辅助的控制和储存单元,所以其特性也是单一的强大计算能力。又因为ALU往往被划分为多个计算核心,所以GPU适合于处理大型的重复计算任务,因为重复计算任务往往更容易并行化。
事实上,CPU和GPU在计算方面的差异正是复杂程度和规模程度,对于复杂的逻辑计算,往往在逻辑上难以并行划分,只能按照逻辑顺序串行处理,这种情况下因为CPU具有更快的内存读写速度,往往表现更加优异。相反,对于逻辑简单但规模庞大的计算问题,例如大型矩阵的运算,往往易于并行化,自然GPU在性能上的表现更加优异。在(刘进锋,郭雷;2011)中,比较了CPU和GPU在矩阵乘法运算上的性能。对于矩阵规模为1024的矩阵乘法,GPU上的最佳实现比CPU上的最佳实现快了大约6倍[3]。同样的,在(刘勇,苏军; 2010)中,在快速傅里叶变换上比较了CPU和GPU的运算时间,CPU耗时高达GPU的40倍[4]。
应用场景
由于特性上的差异,CPU与GPU适用于不同的应用场景,从适用范围上来看,CPU要更胜一筹。
CPU拥有强大的指令处理和计算能力,往往用于进行电子计算机的核心工作,即解释计算机指令和处理计算机软件中的数据。事实上,在大多数的个人电脑中,用户和软件都会不断地产生指令流,而处理指令流之间执行的先后顺序,就是CPU要完成的一个重要工作。CPU将从I/O设备接收到的指令集储存在储存单元中,然后按照一定的规则,取出相应的指令,并转化成对应的操作控制信号,发送给所属的计算机部件。
除此之外,CPU还要负责处理计算机软件所产生的数据。考虑到软件数据类型多样而且处理逻辑复杂,所以CPU往往在这类数据上表现出更优异的性能。
GPU相对于CPU而言,拥有单一的强大并行计算能力,所以用途往往是需要大规模并行计算的场景。早期GPU多被用于2D和3D图形的计算和处理,因为图形数据的处理往往涉及到大量的大型矩阵运算,计算量大但易于并行化。在近些年来,由于大数据成为了计算机学术界的研究热点。所以GPU也常常被用于需要大量重复计算的数据挖掘领域,如研究机器学习,深度学习,云计算等方向的研究机构,往往使用以GPU为计算核心的大型服务器作为硬件平台。
联合CPU和GPU的并行处理机制
事实上,由于CPU和GPU各自在处理和计算上有着强大的性能,关于CPU和GPU的联合处理方案一直是学术界和工业界研究的热点。在(卢风顺,宋君强等; 2011)中提出,CPU/GPU异构混合并行系统以其强劲计算能力、高性价比和低能耗等特点成为新型高性能计算平台[5]。在(张云雷,李轲等; 2017)中,研究了基于CPU/GPU的雷达脉冲压缩算法并行机制[6]。除了学术界,在工业界,使用GPU加速计算机软件运行也是一大课题。GPU厂商NVIDIA一直致力于研究科学,工程,消费和企业应用程序的GPU加速计算,并取得了显著的成果。
但正如(卢风顺,宋君强等; 2011)中所言,CPU/GPU协同并行计算属于新兴研究领域,其中还有很多挑战有待解决。同时,目前主流的个人计算机软件并没有很好的并行工作能力,这仍然需要技术和行业的持续发展。
总结
CPU和GPU作为电子计算机的重要部件,无论是从物理结构上,还是从性能特性以及应用场景上,都有着很大的区别。相较于担负计算机核心大脑功能,负责处理调配计算机指令的CPU,GPU提供单一强劲的多计算核心用于满足图形处理,数据挖掘等大规模并行重复计算的需要。CPU和GPU作为不同应用场景的处理器,在目前的科技水平下,都是个人计算机中不可缺少的组成部分。
而根据二者的特点以及当下的发展趋势,未来可能会出现成熟的CPU与GPU并行处理方案,在CPU与GPU互补的情况下,可以极大的提高计算机的计算能力和软件响应速度,同时也将大大降低计算产生的功耗,从而大大降低个人计算机的体积重量,带来更好的用户体验。
参考文献
[1] NVIDIA. NVIDIA CUDA Documentation[DB/OL].http://www.nvidia.cn/object/cuda_develop_cn_old.html, 2018-03-08
[2] NVIDIA. 加速计算[DB/OL].http://www.nvidia.cn
/object/what-is-gpu-computing-cn.html,2018-03-08
[3] 刘进锋, 郭雷. CPU与GPU上几种矩阵乘法的比较与分析[J]. 计算机工程与应用, 2011, 47(19):9-11.
[4]刘勇, 苏军. 基于CPU与GPU/OpenCL的快速傅里叶变换的实现和性能比较[J]. 科技信息, 2010, 2(17):545+600.
[5]卢风顺, 宋君强, 银福康,等. CPU/GPU协同并行计算研究综述[J]. 计算机科学, 2011, 38(3):5-9.
[6]彭培, 张云雷, 李轲,等. 基于CPU/GPU处理器的雷达脉冲压缩算法并行机制研究[J]. 舰船电子工程, 2017(10):30-32.