你分得清CPU和GPU吗?

GPU在现在的应用中越来越重要,对于GPU,我们都具备些许了解,因为不论是手机中、还是电脑里面,都有GPU的身影。

为增进大家对GPU的认识程度,本文将探讨一下GPU和CPU,看看谁的优势更大。

一、GPU与CPU孰强孰弱?

GPU是替代不了CPU的,同样,CPU也替代不了GPU。如果形象点理解,GPU就像一群蚂蚁,这些蚂蚁都做着同样的事,而CPU就像一只猴子,这只猴子做着各种不同的事。

从根本上说CPU和GPU它们的目的不同,且有不同侧重点,也有着不同的性能特性,在某些工作中CPU执行得更快,另一工作中或许GPU能更好。


当你需要对大量数据做同样的事情时,GPU更合适,当你需要对同一数据做很多事情时,CPU正好。

然而在实际应用中,后一种情形更多,也就是CPU更为灵活能胜任更多的任务。

GPU能做什么?关于图形方面的以及大型矩阵运算,如机器学习算法、挖矿、暴力破解密码等,GPU会有所帮助。

简单地说,CPU擅长分支预测等复杂操作,GPU擅长对大量数据进行简单操作。一个是复杂的劳动,一个是大量并行的工作。

其实GPU可以看作是一种专用的CPU,专为单指令在大块数据上工作而设计,这些数据都是进行相同的操作。

要知道处理一大块数据比处理一个一个数据更有效,执行指令开销也会大大降低,因为要处理大块数据,意味着需要更多的晶体管来并行工作,现在旗舰级显卡都是百亿以上的晶体管。

CPU呢,它的目的是尽可能快地在单个数据上执行单个指令。由于它只需要使用单个数据单条指令,因此所需的晶体管数量要少得多。

目前主流桌面CPU晶体管都是十亿以下,和顶级GPU相差十倍以上,但它需要更大的指令集,更复杂的ALU(算术逻辑单元),更好的分支预测,更好的虚拟化架构、更低的延迟等等。

另外,像我们的操作系统Windows,它是为x86处理器编写的,它需要做的任务执行的进程,在CPU上肯定更为高效,你想每个线程的任务并不相同,基本上难以并行化,完全发挥不了GPU的长处。

那么,可以预见在未来,随着CPU进一步强化处理数据块的能力,我们将看到CPU和GPU架构之间的融合,而且随着制造技术的进步和芯片的缩小,GPU也可以承担更复杂的指令。

二、GPU加速原理

GPU一推出就包含了比CPU更多的处理单元,更大的带宽,使得其在多媒体处理过程中能够发挥更大的效能。

例如:当前最顶级的CPU只有4核或者6核,模拟出8个或者12个处理线程来进行运算,但是普通级别的GPU就包含了成百上千个处理单元,高端的甚至更多,这对于多媒体计算中大量的重复处理过程有着天生的优势。

下图展示了CPU和GPU架构的对比。


从硬件设计上来讲,CPU由专为顺序串行处理而优化的几个核心组成。另一方面,GPU则由数以千计的更小、更高效的核心组成,这些核心专为同时处理多任务而设计。


通过上图我们可以较为容易地理解串行运算和并行运算之间的区别。

传统的串行编写软件具备以下几个特点:
1) 要运行在一个单一的具有单一中央处理器(CPU)的计算机上;
2) 一个问题分解成一系列离散的指令;
3) 指令必须一个接着一个执行;
4) 只有一条指令可以在任何时刻执行。

而并行计算则改进了很多重要细节:
1) 要使用多个处理器运行;
2) 一个问题可以分解成可同时解决的离散指令;
3) 每个部分进一步细分为一系列指示;
4) 每个部分的问题可以同时在不同处理器上执行。

举个生活中的例子来说,你要点一份餐馆的外卖,CPU型餐馆用一辆大货车送货,每次可以拉很多外卖,但是送完一家才能到下一家送货,每个人收到外卖的时间必然很长;

而GPU型餐馆用十辆小摩托车送货,每辆车送出去的不多,但是并行处理的效率高,点餐之后收货就会比大货车快很多。

出处:https://eda365.com/thread-500123-1-1.html

最新文章