通俗易懂的告诉你CPU和GPU的区别
转自 https://www.sohu.com/a/201309334_468740
CPU
CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、发号施令、控制行动的“总司令官”。
CPU的结构主要包括运算器(ALU, Arithmetic and Logic Unit)、控制单元(CU, Control Unit)、寄存器(Register)、高速缓存器(Cache)和它们之间通讯的数据、控制及状态的总线。
简单来说就是:计算单元、控制单元和存储单元,架构如下图所示:
图:CPU微架构示意图
什么?架构记不住?来,我们换种表示方法:
图:CPU微架构示意图(改)
嗯,大概就是这个意思。
从字面上我们也很好理解,计算单元主要执行算术运算、移位等操作以及地址运算和转换;存储单元主要用于保存运算中产生的数据以及指令等;控制单元则对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。
所以一条指令在CPU中执行的过程是这样的:读取到指令后,通过指令总线送到控制器(黄色区域)中进行译码,并发出相应的操作控制信号;然后运算器(绿色区域)按照操作指令对数据进行计算,并通过数据总线将得到的数据存入数据缓存器(大块橙色区域)。过程如下图所示:
图:CPU执行指令图
是不是有点儿复杂?没关系,这张图完全不用记住,我们只需要知道,CPU遵循的是冯诺依曼架构,其核心就是:存储程序,顺序执行。
讲到这里,有没有看出问题,没错——在这个结构图中,负责计算的绿色区域占的面积似乎太小了,而橙色区域的缓存Cache和黄色区域的控制单元占据了大量空间。
高中化学有句老生常谈的话叫:结构决定性质,放在这里也非常适用。
因为CPU的架构中需要大量的空间去放置存储单元(橙色部分)和控制单元(黄色部分),相比之下计算单元(绿色部分)只占据了很小的一部分,所以它在大规模并行计算能力上极受限制,而更擅长于逻辑控制。
另外,因为遵循冯诺依曼架构(存储程序,顺序执行),CPU就像是个一板一眼的管家,人们吩咐的事情它总是一步一步来做。但是随着人们对更大规模与更快处理速度的需求的增加,这位管家渐渐变得有些力不从心。
于是,大家就想,能不能把多个处理器放在同一块芯片上,让它们一起来做事,这样效率不就提高了吗?
没错,GPU便由此诞生了。
GPU
在正式讲解GPU之前,我们先来讲讲上文中提到的一个概念——并行计算。
并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来共同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。
并行计算可分为时间上的并行和空间上的并行。
时间上的并行是指流水线技术,比如说工厂生产食品的时候分为四步:清洗-消毒-切割-包装。
如果不采用流水线,一个食品完成上述四个步骤后,下一个食品才进行处理,耗时且影响效率。但是采用流水线技术,就可以同时处理四个食品。这就是并行算法中的时间并行,在同一时间启动两个或两个以上的操作,大大提高计算性能。
图:流水线示意图
空间上的并行是指多个处理机并发的执行计算,即通过网络将两个以上的处理机连接起来,达到同时计算同一个任务的不同部分,或者单个处理机无法解决的大型问题。
比如小李准备在植树节种三棵树,如果小李1个人需要6个小时才能完成任务,植树节当天他叫来了好朋友小红、小王,三个人同时开始挖坑植树,2个小时后每个人都完成了一颗植树任务,这就是并行算法中的空间并行,将一个大任务分割成多个相同的子任务,来加快问题解决速度。
所以说,如果让CPU来执行这个种树任务的话,它就会一棵一棵的种,花上6个小时的时间,但是让GPU来种树,就相当于好几个人同时在种。
GPU全称为Graphics Processing Unit,中文为图形处理器,就如它的名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。
为什么GPU特别擅长处理图像数据呢?这是因为图像上的每一个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,也就成了GPU的天然温床。
GPU简单架构如下图所示:
图:GPU微架构示意图
从架构图我们就能很明显的看出,GPU的构成相对简单,有数量众多的计算单元和超长的流水线,特别适合处理大量的类型统一的数据。
但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。
注:GPU中有很多的运算器ALU和很少的缓存cache,缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为线程thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram。
再把CPU和GPU两者放在一张图上看下对比,就非常一目了然了。
GPU的工作大部分都计算量大,但没什么技术含量,而且要重复很多很多次。
借用知乎上某大神的说法,就像你有个工作需要计算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已;而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?
GPU就是用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。
但有一点需要强调,虽然GPU是为了图像处理而生的,但是我们通过前面的介绍可以发现,它在结构上并没有专门为图像服务的部件,只是对CPU的结构进行了优化与调整,所以现在GPU不仅可以在图像处理领域大显身手,它还被用来科学计算、密码破解、数值分析,海量数据处理(排序,Map-Reduce等),金融分析等需要大规模并行计算的领域。
所以GPU也可以认为是一种较通用的芯片。
通俗易懂的告诉你CPU和GPU的区别相关推荐
- CPU和GPU的区别
个人认为CPU和GPU各有自己的适应领域.CPU(Central Processing Unit)计算核心较少,通常是双核.四核.八核,但是拥有大量的共享缓存.预测.乱序执行等优化,可以做逻辑非常复杂 ...
- CPU与GPU的区别
CPU和GPU主要由以下5个方面的区别: 一.概念 1.CPU(Central Processing Unit-中央处理器),是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( ...
- 计算机的CPU和GPU的区别,CPU 和 GPU 有什么区别
CPU主要是解释计算机指令以及处理计算机软件中的数据,相当于是一台计算机的"大脑",而GPU是一个专门的图形核心处理器,是显示卡的"大脑",决定显卡的档次和大部 ...
- 详解服务器CPU和GPU技术区别和联系
CPU (Central Processing Unit,中央处理器)就是机器的"大脑",是完成布局谋略.发号施令.控制行动的"总司令官".CPU的结构主要包括 ...
- 计算机的CPU和GPU的区别,CPU和GPU有什么区别?
原标题:CPU和GPU有什么区别? 在台式计算机和笔记本电脑中,在其硬件组件之间,有一个CPU和另一个GPU.在智能手机和平板电脑中也会重复的配置. 我们都非常清楚,两者都是处理器,但它们彼此之间有何 ...
- tensorflow的CPU和GPU的区别
最近深度学习CPU根本不够用,老板配置了GPU 怎么能不会用呢? 原来从来没有关注过的底层东西,于是乎痛下决心搞清楚原理和操作 先来看看第一部分 为什么GPU比CPU更diao呢? 这里就需要从他么的 ...
- Tensorflow 使用cpu和gpu的区别
在Tensorflow中使用gpu和cpu是有很大的差别的.在小数据集的情况下,cpu和gpu的性能差别不大.不过在大数据集的情况下,cpu的时间显著增加,而gpu变化并不明显.不过,我的笔记本电脑的 ...
- CPU和GPU的区别,以及CUDA的定义
CPU(Central Processing Unit)中央处理器 GPU(Graphics Processing Unit)图像处理器 CPU是一块超大规模的集成电路,计算机的控制和运算核心,它的主 ...
- 用最通俗易懂的话告诉你交换机和路由器的区别
特意声明:本文为本人拙劣的见解,写给自己备忘用的 交换机: 你家里5台电脑,你5台电脑要能互相通信,交换数据,你要用网线,把5台电脑连接到一个交换机,具体如下图 但是这5台电脑只能互相玩,某一天他们想 ...
最新文章
- Adobe把GAN搞成了缝合怪,凭空P出一张1024分辨率全身人像 | CVPR 2022
- hadoop +hbase +zookeeper 完全分布搭建 (版本一)
- FAST UA API
- 2017年秋季个人阅读计划
- linux c通过文件描述符以及write和read方法对文件进行读写
- Android之Broadcast, BroadcastReceiver(广播)
- 网页浏览器 市面上存在的网页浏览器
- PostgreSQL的使用-01-创建一个table
- 商城系统学习总结(1)——订单与库存在高并发场景下案例解析
- STL常用函数总结-set
- 组件加name属性_从零开始学习React-属性绑定(三)
- 5. Browser 对象 - Screen 对象
- Atitit 图像处理 halcon类库的使用 范例边缘检测 attilax总结
- 【人工智能】无人车系统仿真软件-PreScan
- 记录开发内容demo-java支付宝提现
- console接口配置登录密码
- NShape(开源矢量图形编辑器) 入门(三)
- linux怎么修改ftp虚拟用户账号密码,Linux下FTP虚拟账户配置
- 【微信小程序】史上最全的《Java面试题及解析》,理论+实战双管齐下!
- 度阴山先生的《知行合一王阳明》有感