计算机为什么有GPU和cpu之分?
GPU和CPU十分类似于社会的分工。
我来做一个比喻,GPU是一群***茶女,CPU是最棒的男性登山者。
这个社会大部分时间大部分事情都是需要普通人联合起来一起完成,简单重复而又非常繁重,但是极个别时候需要冲击一些只有天才才能完成的任务就需要CPU来做,此时***茶女就会显得无能为力。
这些人正在***摘茶叶:
我们不知道它们中的任何一个是否都非常出色,但这并不重要。即使您在***茶方面获得了诺贝尔奖,这名工作人员完成定量比赛的速度也比您快上几倍,仅仅是因为他们的人数比您多十比一。
这个家伙正在爬山:
他为此进行了单独的训练,由十个人组成的随机***茶团队无法在他之前到达峰顶,甚至可能无人可以到达,因为他们无法将任务叠加。
GPU比CPU处理更多的普通任务,因为GPU具有更多数量的相对非凡的处理内核。我们不会将它们用于所有方面,因为它们需要集体工作的类型,在这种工作中,数量上的压倒优势转化为绩效的提高,而CPU是计算机中的爱因斯坦。
其实它们在本质上都是一个东西,都是一堆沙子的精雕细刻再加上一点点其它元素。
PC在刚诞生的时候,其实是没有GPU的,所有的图形计算都由CPU来计算。后来人们意识到CPU做图形计算太慢了,于是他们设计了专门的图形加速卡用来帮忙处理图形计算,再后来,NVIDIA提出了GPU的概念,将GPU提升到了一个单独的计算单元的地位。
图片来自于NVIDIA由于两者面向的计算不同,CPU面对的是人们各种各样的需求,比如你打开一个网页的时候,CPU要负责网络交互,要解析HTML文件和JS脚本,要构建DOM树,要加载各种各样的***,而最后才轮到GPU的事情:渲染画面并输出。
再举个例子,玩游戏的时候,CPU负责完成游戏程序的逻辑、从硬盘里面加载游戏数据,然后才开始把图形相关的东西挑出来交给GPU做,而游戏中的各种运算还是离不开CPU的帮助,比如常见的NPC,他们怎么运动,还是需要CPU来运算。
从上述两个例子中就可以看出,CPU负责的是各种各样的计算,为了应对这么多种类的计算,它的通用性要求非常高,而这就必定会造成设计上的复杂,比如要支持if-else这类条件语句就要针对性加入一些控制单元。而GPU从诞生开始,面对的就是单一种类的计算,早期的GPU为了更好的应对单一的图形计算任务,采用的是流水管线形式的设计,通过在芯片规模上的大量堆叠,就可以获得在图形处理速度上的提升,从而提供更好的画质,简单粗暴。
所以问题的答案很明显了,在计算上,CPU的通用性更强,什么活都能接,但是速度都不咋地;GPU只能接图形计算这类活,速度非常快,或者也可以接特别写给它来计算的任务,这也就是GPGPU(在图形计算单元上进行的通用计算)的由来。
二者都是芯片,功能和用途有所不同。
CPU,英文全称是Central Processing Unit,的缩写,中文名为中央处理器。
中央,就是核心,是计算机整个系统的“大脑”,没有CPU,计算机系统就失去指挥,没法工作了。
CPU主要包括运算器、控制单元、若干寄存器、高速缓存器和它们之间通讯的数据、控制及状态的总线。
它的工作逻辑:存储程序,按顺序执行。它最擅长于逻辑控制。由于CPU需要大量的空间去放置存储单元和控制逻辑,计算能力就受限制,当遇到大量简单重新性质的运算时,就需要GPU出场。
GPU,英文全称是Graphics Processing Unit, 中文名是图像处理器;
GPU主要解决并行运算问题。举个生活中的例子。火车站售票口前,顾客有1000人排队。如果只有一个售票员,那么即使他买票再熟练,手再快,也要人们排队,费时费力。如果有100个售票员同时售票,很快就解决问题。GPU解决的就是这个问题。这个问题在图形图处理时问题最突出,故改变算法规则,由GPU芯片来解决。
GPU不能独立工作,必须由CPU进行指挥,在CPU指挥下才能工作。
现在是大数据时代,GPU的地位越来越重要了。
cpu和GPU的不同之处在于CPU是负责高级逻辑计算,就是类似于我们程序当中的各种循环判断带有逻辑性的计算方式,但是GPU也是负责计算的,但是GPU的计算方式是属于并行的大规模的简单运算就类似于简单的加减乘除一样,这是他们最大的区别。
CPU主要用来处理不同的数据类型,比如各种整型、浮点型、字符型等等的数据处理,同时还要引入各种复杂的逻辑判断跳转等,比方说游戏里面的各种坐标计算,各种动作的处理这都是需要CPU来完成的,这就使得CPU内部设计是十分复杂的,而GPU基本上处理的数据都是重复单一的类型相同,但是需要大量的重复计算,计算不复杂,尤其是类似于各种密码解密一样,比方说前段时间的的挖矿计算,这种计算本身不需要很复杂的计算就是需要大量的并行计算而已。GPU***用了超级多的计算单元和超长的流水线,因为其计算的数据都很简单并且没有复杂的逻辑控制,因此省去了各种的CACHE,由于CPU需要复杂的逻辑运算因此CPU内部被各种缓存设计占据了一定的空间,这就决定了CPU内部的电路复杂性,相比较GPU而言,CPU的运算力只是其中一部分的能力。
可以有这样的一个列子作为很好的说明,GPU的计算都是重复的工作计算量很大,这个就相当于有几万个算术题,都是简单的加减乘除,这些简单的计算小学生就可以解决了,因此你要瞬间完成这些算数量可以雇佣几百个小学生来计算这些题目,而CPU的运算由于比较复杂还要各种逻辑判断,因此让大学生来解答的,因此你让大学生去解答小学生的这些算术题,虽然单个速度快但是对于大学生来说没有任何挑战性,还占用了大学生的***,因为计算这些用大批量的小学生即可完成的事情,为啥非要用大学生来搞定呢?GPU的计算题目之间并没有什么相关新,也就是说GPU的各个算数单元和流水线之间都是独立运算的只要把运算结果算出来即可,但是CPU不一样,CPU算的每个步骤之间都是有联系内部之间都是有关联的,并不能单独进行计算。
以上各种说明,其实都是解释了GPU和CPU的不同之处,GPU就是计算简单的问题流水线较长,其中的运算单元很多,而CPU就是内复杂有各种缓存设计,有各种的寄存器等等,因为其需要进行各种复杂的逻辑运算,其算力只是其中的一个功能,并不能代表其最终的性能。