03.05 cpu和gpu在芯片上都是由二极管组成的,它们之间有什么区别?

我屮浪好大


(在下才疏浅薄或有理解不当的,说错举例错误敬请谅解)

CPU、GPU芯片内晶体管是由二极管、三极管、电容、电阻等组成的集合体,属于一个总称,不全是纯二极管组成。

二极管是晶体管的一种,但晶体管并不单指二极管。二极管具有仅允许电流从正极到负极单方向通过的特性,所以可以用二极管作为芯片的电流控制“逆止阀”。

CPU和GPU发展那么多年,都有很详细的工作原理图,所以不再说明其工作过程。

这里主要说他们的计算区别。


英伟达在CUDA文档里有提到:CPU和GPU之间浮点能力差异背后的原因是GPU专门用于计算密集型,高度并行计算 ,这正是图形渲染的关键 。 因此GPU设计更多晶体管用于数据处理而不是数据缓存和流量控制。

△GPU为数据处理提供了更多的晶体管(绿色是计算单元,橙色是存储单元,黄色是控制单元)

从上图可以看出,CPU内单个ALU比GPU的ALU更为强大,所以在一个时钟周期计算能力更为强大。CPU不仅被存储单元占据了大量空间,并且还拥有强大的控制单元(控制逻辑单元),相较而言计算能力只是CPU很小的一部分。这些设计和各种优化电路让CPU拥有非常全面并且强大的计算能力,但有个缺点是无论简单还是复杂的任务CPU都会一视同仁用心去完成,采用任务排队的顺序处理的串行计算方式——即每个时钟周期只处理一个任务直到完成后才执行下个任务的计算。

GPU的设计是一个时钟周期尽可能完成多而简单的任务,计算方式是非常多的任务同时处理的计算方式。更详细地说,GPU特别适合解决数据并行计算的问题 , 在许多数据上并行执行相同的程序 。因为对每个数据执行相同的程序,所以对复杂控制要求较低,并且因为它在许多数据上执行拥有高计算强度,所以可以不需要存储单元来降低访问延迟。

GPU并行计算将数据映射到并行处理线程,在3D渲染中大量像素和顶点被映射到并行线程。类似诸如渲染图像的后处理、视频编码和解码、图像缩放、立体视觉和模式识别的图像和媒体处理应用可以将图像块和像素映射到并行处理线程。

因为GPU和GPU计算方式差异,所以CPU的计算范围几乎无所不能并且高质高量,而GPU计算范围较为单一但简单快速粗暴。

此段来自英伟达官方:理解 GPU 和 CPU 之间区别的一种简单方式是比较它们如何处理任务。CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。

CPU是通用计算,GPU是专用计算。不过随着GPU计算方式更新改进优化,目前已经实现了图像渲染和处理领域之外的更多领域的计算应用。

唔~网友形容的CPU就是学校里的老教授,微分积分啥都懂啥都会。GPU就是一大群小学生只会简单的加减。

这天学校派了个任务,要求计算十万个100个加减法的结果。老教授那是搞微积分怎能掉份呢?虽然转念一想就可以搞定一个,但尼玛有十万个得花费多少时间呀。于是老教授把这些计算任务交给了那群小学生去计算,每个小学生各负责计算一部分不能互相干涉,最后把结果汇总呈报上来等待下一个多数量的简单计算任务即可。

在大学教授丰富渊博的知识影响熏陶下,那群小学生慢慢地已经不止会做简单的加减,还会做简单的乘法除法……再再再后来,大学教授发现那群小学生已经成长为高中生了,正在攻读《三年高考五年模拟》……

△深度学习图示


IT数码大排档


芯片里的CPU和GPU就像人体的器官一样,起着很重要的作用,它们应用在不同的场景,处理不同的任务。

GPU的诞生是为了更好的处理图形数据,比CPU更快

3D游戏兴起后,CPU就要处理大量图形数据,还是无法达到画面的显示要求。于是将图形计算的功能分离出来成为一块芯片,减轻CPU的负担,这就是我们所说的GPU。CPU开始是串行的运算方式,有很大的局限性,而现在已发展成并行的运算模式多核心处理,这种模式也在向GPU的芯片上发展,GPU处理图形渲染的能力比CPU快了21.6倍。


CPU和GPU运算方式的区别

CPU的控制单元、逻辑单元和存储单元用来完成运算并进行控制协调。在运算时,从控制单元就开始工作,中间经过逻辑单元来执行指令,把数据输入到CPU,运算结果传输到存储单元就表示任务已经完成了。而GPU可以直接接收更多的指令并执行,处理图形数据可以独立输出,图像加载比CPU更快捷。

CPU和GPU架构的区别

GPU的图形运算已经超越了CPU,采用软硬件架构的方式,工程人员可以直接用C语言输入代码调用GPU的处理架构,开发门槛降低,运算时间大大提升。GPU的线程数和寄存器要多于CPU,缓存却比CPU少。而CPU的架构更复杂,处理数据需要逻辑判断,还会出现中断或跳转,不仅被缓存占用了大量的空间。


CPU和GPU设计上的区别

CPU的设计是低延时的方式,需要在很短的时间内完成运算,现在的CPU可以达到64bit的精度。这种设计方式,运算乘法和加法的周期频率非常高,数据保存在缓存里,随时都可以调用。 GPU就是巨大的周转量设计,没有多少缓存,直接为寄存器提供服务,它的数据存在内存里,要获取可直接访问内存,所以CPU擅长逻辑运算,GPU擅长大规模的图形处理。


综上所述,GPU的目的就是为图形处理而生,虽然是CPU附属的一颗芯片,但处理图形数据更强大,它减轻了CPU的运算压力,两者相互协作,发挥着不同的作用,让芯片的性能达到最佳化。


星河方舟


CPU(central processing unit)叫做中央处理器,它是一块超大规模的集成电路,是一台计算机的控制于运算的核心,它的主要功能是解释计算机指令和处理计算机软件中的数据,相当于计算机的大脑。

GPU(graphics processing unit)叫做图形处理器,又可称为显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。GPU能够把计算机所需要显示的信息进行转换,并向显示器提供扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,是人机对话的重要设备之一。

它们两者由于针对不同的应用场景,因此设计目标不同,架构也大不相同。CPU的内部结构异常复杂,因为CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断、又会引入大量的分支跳转和中断的处理。而GPU面对计算环境相对来说结构单一,因而架构比CPU要简单些。两者架构如下图。

其中绿色的是计算单元,红色的是存储单元,橙黄色的是控制单元。

缓存:

CPU缓存结构庞大,目前主流的CPU芯片上都有三级缓存,缓存结构消耗了大量的晶体管,在运行的时候耗电非常厉害。而GPU芯片最多两级缓存,多出来的晶体空间GPU都可以用来做成ALU单元,也因此GPU比CPU的效率要高一些。

浮点运算:

CPU除了负责浮点整形运算外,还有很多其他的指令集的负载,比如硬件解码、多媒体解码等,所以CPU是个多面手。而GPU基本上就是只做浮点运算的,也正是因为如此,所以架构简单,因而速度更快。

响应方式:

CPU要求的是实时响应,对单任务的速度要求很高,所以就要用很多层缓存的办法来保证单任务的速度。对GPU来说大家不关心第一个像素什么时候计算完成,而是都关心最后一个像素什么时候计算出来,所以GPU就把所有的任务都排好,然后再批处理,这样对缓存的要求就很低了。举个不恰当的例子,你敲击10次键盘,CPU要每一次敲击都要及时响应,而GPU会等第10次全部敲击完成后,再一次性批处理响应。

应用方向:

像操作系统这一类应用,需要快速响应实时信息,需要针对延迟优化,所以晶体管数量和能耗都需要用在分支预测,乱序执行上,低延迟缓存等控制部分,而这都是CPU的所擅长的。对于像矩阵一类的运算,具有极高的可预测性和大量相似运算的,这种高延迟,高吞吐的架构运算,就非常适合GPU。

总结一下,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。CPU擅长处理复杂问题,但是对于某些机械化程度较高且又繁重的任务,GPU比CPU更有优势。


分享到:


相關文章: