GPU与CPU的区别
转载自:https://www.cnblogs.com/biglucky/p/4223565.html
如介意请联系我。
我觉得这个是我看到的比较清晰的介绍了CPU与GPU区别的了,关于文章中cache、buffer等概念的解释,我会另开一篇,如已经了解可直接看这篇。
1.2CPU和GPU的设计区别
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
于是CPU和GPU就呈现出非常不同的架构(示意图):
转存失败重新上传取消
转存失败重新上传取消
转存失败重新上传取消
图片来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。
GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分
从上图可以看出:
Cache, local memory: CPU > GPU
Threads(线程数): GPU > CPU
Registers: GPU > CPU 多寄存器可以支持非常多的Thread,thread需要用到register,thread数目大,register也必须得跟着很大才行。
SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU。
CPU 基于低延时的设计:
CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。
当今的CPU可以达到64bit 双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。
CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方).
大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。
复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。
数据转发。 当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。
GPU是基于大的吞吐量设计。
GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。
GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。
GPU的虽然有dram延时,却有非常多的ALU和非常多的thread. 为啦平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads.通常来看GPU ALU会有非常重的pipeline就是因为这样。
所以与CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。
GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。
总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。
什么类型的程序适合在GPU上运行?
(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。
(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
GPU与CPU的区别相关推荐
- GPU和CPU芯片区别:为何要用GPU挖矿?
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理.这些都使得C ...
- 深度学习中:使用GPU和CPU的区别
深度学习框架:Tensorflow 显卡型号:GTX 1060 CPU型号:i5-8300H 深度学习:使用GPU和CPU的区别 前言 代码 结果 总结 前言 这几天在做深度学习,想看看为什么 G ...
- 计算机的GPU和CPU,gpu和cpu的区别
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. gpu和cpu的区别:CPU在电脑中起着控制计算机运行的作用,是电脑的中央处理器.GPU是一个附属型的处理器,主要处理计算机中与图 ...
- GPU和CPU的区别
原作者:Magnum Programm Life 原出处:博客园 原文链接: Magnum Programm Life 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 以下为正式 ...
- GPU与CPU简单区别
GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授.教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多.当然现在的GPU也能做一些稍微复杂的工作 ...
- gpu和显卡的关系,gpu和cpu的区别
参考:https://baijiahao.baidu.com/s?id=1607965696317204020&wfr=spider&for=pc 一.GPU是什么?与显卡是什么关系? ...
- CPU(中央处理器)和GPU(图像处理器)区别大揭秘
有网友在网上提问:"为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码? "以下是比较准确靠谱的回答: 1.现在更多被需要的依然是CPU,只是GPU在大规模并发 ...
- 【CS231n 课程笔记】第八讲-----常见的深度学习框架,以及GPU和CPU介绍。
目录 0.写在前面 1.CPU VS GPU 1.1GPU 与CPU的比较 1.2性能测试 1.3实践中的问题 2.深度学习框架 2.1 计算图思想和深度学习框架 2.2 tensorflow 2.2 ...
- 详解GPU、CPU差异
简介:CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景.CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理.这些都 ...
- GPU编程--CPU和GPU的设计区别
本篇结构 前言 概论 CPU简介 GPU简介 并行计算 CPU/GPU对比 适于GPU计算的场景 GPU开发环境 参考博文 一.前言 因为工作需要,需要从github上找一个CUDA的DBSCAN聚类 ...
最新文章
- leetcode-86 分隔链表
- Career Essentials from Career Service
- Is this a MS EnterLib DAAB BUG or not?
- Node.js模块之Buffer
- ROS学习笔记九:用C++编写ROS发布与订阅
- 第二章 数学运算、数组、文字处理
- 数据库连接软件SQLyog 13.1.7 免费下载安装
- 教你如何挑选趁手的笔记本电脑!
- 51单片机多线程神器:Tiny-51操作系统
- 【简单利用函数实现多条件求和】
- 视频超分修复,让重温经典影片有了新的可能
- 关于QQBot机器人掉线问题修复
- 长角牛网络监听 arp欺骗
- 阳台这样装洗衣柜更漂亮
- 极验验证码破解之selenium
- echarts基准线
- openCV minMaxLoc
- js中iif的真假条件的判断方式
- 前端打印功能css print
- java里precision,int precision()
热门文章
- 基于Java的课堂派应用--学生端
- 《Robust Consistent Video Depth Estimation》论文笔记
- 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---JavaScript篇
- 樱花树下的约定歌词用计算机,樱花树下的约定歌词 可泽、夏凌兮_晴格歌词网...
- (附源码)计算机毕业设计ssm大学生体检管理系统
- c++游戏服务器方向需要多少功底?
- 【安全】如何防止他人恶意调试你的web程序
- 电脑不停自动安装垃圾软件怎么办
- wince tfp telnet
- Flurry、友盟、TalkingData,Google analytic移动应用统计分析对比