CPU与GPU的区别

CPU与GPU的区别,第1张

CPU是英文“central processing unit”的缩写,翻译成中文是“中央处理器”,它是电脑(计算机)的控制核心,从用户按下电脑的开机键那一刻起,电脑进行的每一步 *** 作,都离不开CPU的参与,它是电脑的核心部件,主要负责电脑系统的运算、控制、处理、执行,无论用户使用计算机干什么,哪怕是打一个字母或一个汉字,都必须通过CPU来完成。
而显卡又不一样,虽然是电脑基础组成零件之一,但它的作用并没有CPU那么大,它的主要作用集中在“显示”方面,它起到桥梁的作用,将CPU通过主板发送的显示信息转化成能够让显示器直接显示的信号,我们可以将其作用理解为帮助电脑“显示输出图形”的设备,他只负责图像处理。
显卡主要有集成显卡、独立显卡、核心显卡三种,有些品牌、类型的CPU里直接搭载了核心显卡,而集成显卡直接焊接在主板上,只有独立显卡以“刀卡”的形式额外安装在主板提供的显卡扩展插槽上。忽略种类只谈结性能和结构,独立显卡的性能是三种显卡中最高的,而她的结构样式有点像刀片。
而CPU的结构、样式与显卡又不太一样,一般都是薄片、方形设计,分AMD和Interner两个品牌,AMD为针脚触点,Interner为d簧针脚触点,虽然结构上有所差异、性能针对领域也不尽相同,但如果与显卡相比,它的结构与显卡有本质上的区别,CPU的插槽为针脚式设计,而显卡的插槽和接口为金手指边设计。

CPU 和 GPU 的区别:

CPU:中央处理器(英文Central Processing Unit)是一台计算机的运算核心和控制核心;

GPU称图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备上图像运算工作的微处理器;

CPU内部存储器和输入/输出设备是电子计算机三大核心部件;

GPU是显示卡的“大脑”,决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据;

CPU功能主要是解释计算机指令以及处理计算机软件中的数据, 并执行指令。在微型计算机中又称微处理器,计算机的所有 *** 作都受CPU控制,CPU的性能指标直接决定了微机系统的性能指标。

GPU用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,显卡作为电脑主机里的一个重要组成部分,承担输出显示图形的任务。

在说明两者之间的区别之前,我们现在了解一下什么事CPU,什么事GPU,两者各代表什么。CPU即中央处理器,GPU即图形处理器。其次,要解释两者的区别,要先明白两者的相同之处:两者都有总线和外界联系,有自己的缓存体系,以及数字和逻辑运算单元。一句话,两者都为了完成计算任务而设计。

两者的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;GPU的核数远超CPU,被称为众核(NVIDIA Fermi有512个核)。每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(GPU初始时在浮点计算上一直弱于CPU)。从结果上导致CPU擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如分布式计算,数据压缩,人工智能,物理模拟,以及其他很多很多计算任务等。GPU由于历史原因,是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场),在三维游戏中常常出现的一类 *** 作是对海量数据进行相同的 *** 作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行。在2003-2004年左右,图形学之外的领域专家开始注意到GPU与众不同的计算能力,开始尝试把GPU用于通用计算(即GPGPU)。之后NVIDIA发布了CUDA,AMD和Apple等公司也发布了OpenCL,GPU开始在通用计算领域得到广泛应用,包括:数值分析,海量数据处理(排序,Map-Reduce等),金融分析等等。

简而言之,当程序员为CPU编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间,即Latency。当程序员为GPU编写程序时,则利用其处理海量数据的优势,通过提高总的数据吞吐量(Throughput)来掩盖Lantency。目前,CPU和GPU的区别正在逐渐缩小,因为GPU也在处理不规则任务和线程间通信方面有了长足的进步。另外,功耗问题对于GPU比CPU更严重。

总的来讲,GPU和CPU的区别是个很大的话题,甚至可以花一个学期用32个学时十几次讲座来讲,所以如果提问者有更具体的问题,可以进一步提出。我会在我的知识范围内尝试回答。

一、作用不同

1、CPU:作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

2、GPU:是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。

二、功能不同

1、CPU:主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。

2、GPU:使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。

三、特点不同

1、CPU:是对计算机的所有硬件资源(如存储器、输入输出单元) 进行控制调配、执行通用运算的核心硬件单元。CPU 是计算机的运算和控制核心。计算机系统中所有软件层的 *** 作,最终都将通过指令集映射为CPU的 *** 作。

2、GPU:显示缓冲存储器用来存储将要显示的图形信息以及保存图形运算的中间数据;显示缓存的大小和速度直接影响着主芯片性能的发挥。

参考资料来源:百度百科-图形处理器

参考资料来源:百度百科-中央处理器

随着大数据、云计算、人工智能等技术的成熟与在各行各业的应用,在人工智能时代,AI服务器这个新兴名词也频繁地出现在人们的视线范围内,有人预测在人工智能时代,AI服务器将会广泛的应用于各个行业,那么AI服务器与普通服务器有什么区别呢?为什么AI服务器在人工智能时代能替代大多数的普通服务器呢?

从服务器的硬件架构来看,AI服务器是采用异构形式的服务器,在异构方式上可以根据应用的范围采用不同的组合方式,如CPU+GPU、CPU+TPU、CPU+其他的加速卡等。与普通的服务器相比较,在内存、存储、网络方面没有什么差别,主要在是大数据及云计算、人工智能等方面需要更大的内外存,满足各种数据的收集与整理。


戴尔(DELL)Poweredge R730/R740机架式服务器主机数据库/虚拟化服务器电脑整机
¥
16099
购买
京东
我们都知道普通的服务器是以CPU为算力的提供者,采用的是串行架构,在逻辑计算、浮点型计算等方面很擅长。因为在进行逻辑判断时需要大量的分支跳转处理,使得CPU的结构复杂,而算力的提升主要依靠堆砌更多的核心数来实现。


戴尔T640 GPU服务器AI主机深度学习人工智能大数据分析高性能技术计算
¥
27000
购买
京东
但是在大数据、云计算、人工智能及物联网等网络技术的应用,充斥在互联网中的数据呈现几何倍数的增长,这对以CPU为主要算力来源的传统服务提出了严重的考验,并且在目前CPU的制程工艺、单个CPU的核心数已经接近极限,但数据的增加却还在持续,因此必须提升服务器的数据处理能力。因此在这种大环境下,AI服务器应运而生。


戴尔(DELL)R740服务器主机2U机架式R730升级款AI人工智能深度学习
¥
13900
购买
京东
已下架
现在市面上的AI服务器普遍采用CPU+GPU的形式,因为GPU与CPU不同,采用的是并行计算的模式,擅长梳理密集型的数据运算,如图形渲染、机器学习等。在GPU上,NVIDIA具有明显优势,GPU的单卡核心数能达到近千个,如配置16颗NVIDIA Tesla V100 Tensor Core 32GB GPUs的核心数可过10240个,计算性能高达每秒2千万亿次。且经过市场这些年的发展,也都已经证实CPU+GPU的异构服务器在当前环境下确实能有很大的发展空间。

为什么二者会有如此的不同呢?首先要从CPU和GPU的区别说起。

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

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

来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙**的是控制单元。

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

所以与CPU擅长逻辑控制和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

2、很久以前,大概2000年那时候,显卡还被叫做图形加速卡。一般叫做加速卡的都不是什么核心组件,和现在苹果使用的M7协处理器地位差不多。这种东西就是有了更好,没有也不是不行,只要有个基本的图形输出就可以接显示器了。在那之前,只有一些高端工作站和家用游戏机上才能见到这种单独的图形处理器。后来随着PC的普及,游戏的发展和Windows这样的市场霸主出现,简化了图形硬件厂商的工作量,图形处理器,或者说显卡才逐渐普及起来。

想要理解GPU与CPU的区别,需要先明白GPU被设计用来做什么。现代的GPU功能涵盖了图形显示的方方面面,我们只取一个最简单的方向作为例子。

大家可能都见过上面这张图,这是老版本Direct X带的一项测试,就是一个旋转的立方体。显示出一个这样的立方体要经过好多步骤,我们先考虑简单的,想象一下他是个线框,没有侧面的“X”图像。再简化一点,连线都没有,就是八个点(立方体有八个顶点的)。那么问题就简化成如何让这八个点转起来。首先,你在创造这个立方体的时候,肯定有八个顶点的坐标,坐标都是用向量表示的,因而至少也是个三维向量。然后“旋转”这个变换,在线性代数里面是用一个矩阵来表示的。向量旋转,是用向量乘以这个矩阵。把这八个点转一下,就是进行八次向量与矩阵的乘法而已。这种计算并不复杂,拆开来看无非就是几次乘积加一起,就是计算量比较大。八个点就要算八次,2000个点就要算2000次。这就是GPU工作的一部分,顶点变换,这也是最简单的一部分。剩下还有一大堆比这更麻烦的就不说了。
GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。

总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。

3、就目前的计算机架构,GPU只能称作是小众。GPU作为后来者,出现的太晚了,计算机架构已经定型,不太可能撼动 Intel 的霸主地位,而且Intel 一定会借着先天优势打压其他竞争对手。 最近bitcoin被媒体炒作的太过了,出现在了公众的视野中。媒体写新闻的那群人只要是写点和技术沾边的文章,就能暴露他们的无知,倒霉的还是无辜的群众。

笔者简单提一下为什么GPU只能算作是小众。在计算机上运行的程序从性能的角度来说大致可分为三类:(1) I/O intensive; (2) Memory intensive 以及 (3) Compute-intensive。

(1)I/O intensive的程序其性能瓶颈是I/O,也就是说程序运行的大部分时间花在了硬盘读写/网络通信上,而I/O处在计算机体系结构金字塔的最底层,速度非常慢。最近炒的很火的big data 讨论的就是这一类应用程序。几百TB 甚至到PB级别的数据往哪搁,只能放在硬盘上。一台机器容量太小CPU太少怎么办,搞几百台甚至上千台机器用网线连起来分布处理。所以这块全是I/O, 现在大的互联网公司不多搞几个上千节点的集群肯定撑不住。

(2)Memory intensive的程序其性能瓶颈在内存访问,程序中有大量的随机访问内存的 *** 作,但是基本没有I/O, 这类程序已经比第一类程序快一个数量级了,但是和寄存器的速度还是没法比。目前大部分应用程序都属于这类。个人电脑里装的的各种软件基本就是这类,如果有点I/O, 立刻就会非常得卡。

以上提到的这两类程序的应用最广泛,涵盖了大部分有用的计算机软件,但遗憾的是GPU在这两块毫无用处, GPU只有在计算密集型的程序有些作用。I/O是瓶颈的程序,花在计算的时间可以忽略不计,再怎么用GPU加速也没用。 含有大量内存随机访问的程序也不适合在GPU上执行,大量的随机访问甚至可以使GPU的行为由并行变为串行。

什么类型的程序适合在GPU上运行?

(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。

(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。

满足以上两点,就可以用GPU做运算了。 不过你还得先用CUDA或者Open CL 把能在GPU上运行的程序写出来, 这也是很麻烦的,写一下就知道了。 而且GPU的架构比较特殊,要想写出高效率的程序,要花很多很多时间。笔者想说写GPU程序是一件很蛋疼的事情。

GPU在某些地方很有用,但应用面比较窄,远远没有某公司声称的那么有用。当今还是Intel的天下, 现在计算机的速度已经很快了,计算其实已经不是什么大问题。I/O才是最需要解决的问题。 记得曾经看过N家的GTC峰会,黄某人吹得神乎其神,连笔者都被感动了,多少多少T FLOPS的计算速度。 程序运行时间从100 秒 变成 1秒 其实没多重要,你倒杯水的功夫就100秒了。运行时间从100天缩短到1天才是大贡献。 前者就是GPU做的事情,后者才是我们真正需要的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13196686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-19
下一篇 2023-06-19

发表评论

登录后才能评论

评论列表(0条)

保存