资料介绍
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断,还会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂,而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
这个视频,非常具象的表述了CPU和GPU在图像处理时的不同的原理和方法。看到GPU的模型喷射出的一瞬间,你就秒懂了。
根据上面视频中的比喻,你应该很清楚CPU和GPU就呈现出非常不同的架构:
绿色的是计算单元橙红色的是存储单元橙黄色的是控制单元
GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分。
GPU 如何加快软件应用程序的运行速度
GPU 加速计算可以提供非凡的应用程序性能,能将应用程序计算密集部分的工作负载转移到 GPU,同时仍由 CPU 运行其余程序代码。从用户的角度来看,应用程序的运行速度明显加快。
如何利用 GPU 实现加速
GPU 拥有数以千计的核心,可高效地处理并行任务
GPU 与 CPU 性能比较
理解 GPU 和 CPU 之间区别的一种简单方式是比较它们如何处理任务。CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。
从上图可以看出:
Cache, local memory: CPU > GPU
Threads(线程数): GPU > CPU
Registers: GPU > CPU
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)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。
CPU会利用较高的主频、cache、分支预测等技术,使处理每条指令所需的时间尽可能少,从而减低具有复杂跳转分支程序执行所需的时间。GPU则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 程序是如何在 CPU 中运行的(二)
- 我们在谈论音质的时候在谈论什么资料下载
- 从单片机上电程序运行开始...资料下载
- CPU是怎样访问内存的?资料下载
- 用51单片机点亮灯管的程序资料下载
- 单片机程序到底是如何运行的?资料下载
- CPU上的晶体管有多少个?资料下载
- 蓝牙mesh网络为何适合商业照明资料下载
- 在执行程序及产生中断时CPU内会发生什么变化?资料下载
- 单片机仅靠CPU和内存是无法运行的!资料下载
- 机器视觉应用,CPU还是FPGA?资料下载
- C语言与VB语言联合在Proteus上的仿真资料合集 10次下载
- VCO-108和108TC额定运行参数的详细资料免费下载
- CPU-GPU异构系统下的片上网络仲裁机制研究 1次下载
- 用JMX连接本地JVM上运行的Java程序 4次下载
- CPU渲染和GPU渲染优劣分析 403次阅读
- gpu是什么和cpu的区别 1.4w次阅读
- 详解GPU硬件架构及运行机制 1932次阅读
- 为什么GPU比CPU更快? 1717次阅读
- CPU和GPU之间的主要区别 605次阅读
- CPU、GPU和内存知识科普 1532次阅读
- CPU、GPU、TPU、NPU等的讲解 1w次阅读
- 一文知道CPU和GPU的区别 5273次阅读
- GPU与CPU间的比较 4533次阅读
- GPU如何加快软件应用程序的运行速度 1w次阅读
- 适合在GPU上运行的程序 挖矿为何只用GPU 4873次阅读
- GPU优势大于CPU?CPU将消失? 1845次阅读
- FPGA比CPU和GPU快的原因 9.5w次阅读
- 简单解析GPU和CPU在并行计算方面的5个不同 8315次阅读
- GPU还是CPU?看完这个你就懂了 4.7w次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1489次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 91次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 9次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 3次下载 | 免费
- 8基于单片机的红外风扇遥控
- 0.23 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30319次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多