无聊的时候看到一个CPU和GPU感觉长得好像,CPU与GPU一个字母之差,但是在实物上去相差很多。CPU是电脑的中央处理器,GPU是图形处理器。但有网友会问,到底CPU是什么?GPU是什么?GPU与CPU的区别有哪些?下面小编带大家走进CPU,走进GPU,来更多的了解一下GPU与CPU的区别。
GPU与CPU的区别 图1
一、CPU是什么?
CPU全称Central Processing Unit中文名:中央处理器
CPU一般由逻辑运算单元、控制单元和存储单元组成。在逻辑运算和控制单元中包括一些寄存器,这些寄存器用于CPU在处理数据过程中数据的暂时保存。
GPU与CPU的区别 图2
CPU虽然有多核,但总数没有超过两位数,每个核都有足够大的缓存;CPU有足够多的数字和逻辑运算单元,并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件。CPU拥有超强的逻辑能力。CPU擅长处理具有复杂计算步骤和复杂数据依赖的计算任务,如分布式计算,数据压缩,人工智能,物理模拟,以及其他很多很多计算任务等。
GPU与CPU的区别 图3
二、GPU是什么?
GPU全称Graphic Processing Unit中文名为:图形处理器
GPU能够从硬件上支持T&L(TransformandLighting,多边形转换与光源处理)的显示芯片,因为T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置和处理动态光线效果,也可以称为“几何处理”。一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只不过大多数PC中,T&L的大部分运算是交由CPU处理的(这也就是所谓的软件T&L),由于CPU的任务繁多,除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作,因此在实际运算的时候性能会大打折扣,常常出现显卡等待CPU数据的情况,其运算速度远跟不上复杂三维游戏的要求。即使CPU的工作频率超过3GHz或更高,对它的帮助也不大,由于这是PC本身设计造成的问题,与CPU的速度无太大关系。
GPU与CPU的区别 图4
GPU是作为一个附属型处理器出现存在的,它主要处理计算机中与图形计算有关的工作。
GPU的核数远超CPU,被称为众核,但每个核拥有的缓存大小相对小。GPU的数字逻辑运算单元也少而简单(GPU初始时在浮点计算上一直弱于CPU)。gpu拥有超高的运算速度。GPU擅长于图像处理,所以gpu主要是用在图像、视频游戏等领域。GPU的功耗远远超过CPU。
GPU与CPU的区别 图5
三、GPU与CPU的区别
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
GPU与CPU的区别 图6
1、CPU和GPU的架构不同
GPU与CPU的区别 图7
其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。
GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。
GPU如何加快软件应用程序的运行速度
GPU加速计算可以提供非凡的应用程序性能,能将应用程序计算密集部分的工作负载转移到GPU,同时仍由CPU运行其余程序代码。从用户的角度来看,应用程序的运行速度明显加快。
GPU与CPU的区别 图8
GPU与CPU的区别 图9
2、GPU与CPU性能比较
理解GPU和CPU之间区别的一种简单方式是比较它们如何处理任务。CPU由专为顺序串行处理而优化的几个核心组成,而GPU则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。
GPU与CPU的区别 图10
从上图可以看出:
Cache, local memory:CPU>GPU
Threads(线程数): GPU>CPU
Registers: GPU>CPU多寄存器可以支持非常多的Thread,thread需要用到register,thread数目大,register也必须得跟着很大才行。
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU>CPU。
CPU基于低延时的设计:
GPU与CPU的区别 图11
CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。
当今的CPU可以达到64bit双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。
CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方)。
大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。
复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。
数据转发。当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。
GPU是基于大的吞吐量设计
GPU与CPU的区别 图12
GPU的特点是有很多的ALU和很少的cache。缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。
GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。
GPU的虽然有dram延时,却有非常多的ALU和非常多的thread. 为拉平衡内存延时的问题,可以充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads。通常来看GPU ALU会有非常重的pipeline就是因为这样。
所以与CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码pojie等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。
GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。
总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。
什么类型的程序适合在GPU上运行?
(1)计算密集型的程序。
所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)易于并行的程序。
GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
CPU会利用较高的主频、cache、分支预测等技术,使处理每条指令所需的时间尽可能少,从而减低具有复杂跳转分支程序执行所需的时间。GPU则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量。
通过以上介绍,想必大家对CPU和GPU有个更多的了解,都知道GPU与CPU的区别了吧。简单的说就是,一个是通用计算,一个是专用计算。CPU主要负责操作系统和应用程序,GPU主要负责跟显示相关的数据处理,GPU的活CPU一般都可以干,但是效率低下,现在也有GPGPU,可以干点CPU的活。
|