0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GPU和CPU芯片的区别

h1654155973.6121 来源:fqj 2019-05-10 09:04 次阅读

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

这个视频,非常具象的表述了CPU和GPU在图像处理时的不同的原理和方法。看到GPU的模型喷射出的一瞬间,你就秒懂了。

根据上面视频中的比喻,你应该很清楚CPU和GPU就呈现出非常不同的架构:

绿色的是计算单元

橙红色的是存储单元

橙黄色的是控制单元

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

GPU 如何加快软件应用程序的运行速度

GPU 加速计算可以提供非凡的应用程序性能,能将应用程序计算密集部分的工作负载转移到 GPU,同时仍由 CPU 运行其余程序代码。从用户的角度来看,应用程序的运行速度明显加快.

GPU 与 CPU 性能比较

理解 GPU 和 CPU 之间区别的一种简单方式是比较它们如何处理任务。CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。

从上图可以看出:

Cache, local memory:CPU > GPU

Threads(线程数): GPU > CPU

Registers: GPU > CPU

SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU > CPU。

CPU 基于低延时的设计:

GPU和CPU芯片的区别

CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。

当今的CPU可以达到64bit 双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。

CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方).

大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。

复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。

数据转发。当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。

GPU是基于大的吞吐量设计

GPU和CPU芯片的区别

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则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量。

举个GPU通用计算教材上比较常见的例子,一个向量相加的程序,你可以让CPU跑一个循环,每个循环对一个分量做加法,也可以让GPU同时开大量线程,每个并行的线程对应一个分量的相加。CPU跑循环的时候每条指令所需时间一般低于GPU,但GPU因为可以开大量的线程并行地跑,具有SIMD(准确地说是SIMT)的优势。

再以挖BIT币举例:

比特币的挖矿和节点软件是基于P2P网络、数字签名、密码学证据来发起和验证交易的。节点向网络广播交易,这些广播出来的|中国半导体论坛|在经过矿工的验证后,矿工用自己的工作证明结果来表达确认,确认后的交易会被打包到数据块中,数据块会串起来形成连续的数据块链。

每一个比特币的节点都会收集所有尚未确认的交易,并将其归集到一个数据块中,这个数据块会和前面一个数据块集成在一起。矿工节点会附加一个随机调整数,并计算前一个数据块的SHA-256哈希运算值。挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。

GPU和CPU芯片的区别

如果希望判定一个人提供的的信息是本着正常使用,具备一定价值的。那么我们倾向认为提供这个信息的人,愿意为此付出一定工作量来证明他的诚实。假如有一种机制,能够容易的证明提供信息的人为此付出了一定工作量,那么此信息是可以接受,并被认为合理的。

比如,我收邮件的时候,做了一个规定:“把邮件内容数据,加入一个随机数,求一个sha256散列数值。这个散列值一共256bit 。前20bit 必须都为0”.

这样,要给我发信的人,就必须反复尝试一个随机数,以保证邮件内容数据加上这个随机数,能够产生sha256 的结果------前20bit 都是0.(这个计算过程本身毫无意义)。如何产生出指定要求的整数?完全靠运气和CPU 运算时间。这就是一个工作量。工作本身毫无意义。但是如果谁愿意付出这个工作量,就意味着他给我的邮件多半是有意义的。这就叫“工作量证明”。也就是意味着这个人很有可能是诚实的。这里把邮件换成Block也是等效的。这个机制被广泛用于防止垃圾邮件等。因为群发垃圾邮件的人,不可能有那么多时间去给每个人算一个毫无意义的数字,浪费时间,降低发垃圾邮件的效率。挖矿的目的是确认交易。寻找随机数的过程是为了保证每一个挖矿节点不会往外发送垃圾block。发送的BlockId是这个Block的Hash,它必然是首20bit为0的。

可以预见的是对于比特币的Hash计算而言,它几乎都是独立并发的整数计算,GPU简直就是为了这个而设计生产出来的。相比较CPU可怜的2-8线程和长度惊人的控制判断和调度分支,GPU可以轻易的进行数百个线程的整数计算并发(无需任何判断的无脑暴力破解乃是A卡的强项)。

OpenCL可以利用GPU在片的大量unified shader都可以用来作为整数计算的资源。而A卡的shader(流处理器)资源又是N的数倍(同等级别的卡)。

比特币早期通过CPU来获取,而随着GPU通用计算的优势不断显现以及GPU速度的不断发展,矿工们逐渐开始使用GPU取代CPU进行挖矿。前面我们已经介绍,比特币挖矿采用的是SHA-256哈希值运算,这种算法会进行大量的32位整数循环右移运算。有趣的是,这种算法操作在AMD GPU里可以通过单一硬件指令实现,而在NVIDIA GPU里则需要三次硬件指令来模拟,仅这一条就为AMD GPU带来额外的1.7倍的运算效率优势。凭借这种优势,AMD GPU因此深受广大矿工青睐。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10794

    浏览量

    210664
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4661

    浏览量

    128528

原文标题:GPU和CPU芯片区别:为何要用GPU挖矿?

文章出处:【微信号:xinlun99,微信公众号:芯论】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GPUCPU区别是什么

    GPU是如何工作的GPU与DSP区别GPUCPU区别是什么
    发表于 01-05 06:15

    请问GPU与DSP、CPU区别在哪里?

    GPU工作原理是什么?GPU主要作用有哪些?GPU与DSP区别在哪里?GPUCPU
    发表于 04-19 09:16

    ai芯片gpu区别

    ai芯片gpu区别▌车载芯片的发展趋势(CPU-GPU-FPGA-ASIC)过去汽车电子芯片
    发表于 07-27 07:29

    CPUGPU之间有什么区别

    CPUGPU之间有什么区别
    发表于 11-05 07:58

    什么是GPUGPU的主要作用和工作原理以及GPUCPU区别

    GPU的作用、原理及与CPU、DSP的区别 GPU是显示卡的心脏,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也
    发表于 09-13 09:43 13次下载

    一文了解CPUGPU和TPU的区别

    很多读者可能分不清楚 CPUGPU 和 TPU 之间的区别,因此 Google Cloud 将在这篇博客中简要介绍它们之间的区别,并讨论为什么 TPU 能加速深度学习。
    的头像 发表于 09-06 16:53 2.8w次阅读

    一文知道CPUGPU区别

    对于GPU,大家想必也十分熟悉。但是,大家真的了解GPU吗?譬如,GPU和显卡是同一个东西吗?CPUGPU有什么
    的头像 发表于 11-23 10:14 5397次阅读

    GPUCPU有什么区别GPU的详细介绍

    对于GPU,大家想必也十分熟悉。但是,大家真的了解GPU吗?譬如,GPU和显卡是同一个东西吗?CPUGPU有什么
    的头像 发表于 11-28 11:23 2.3w次阅读

    CPUGPU区别有哪些

    CPUGPU区别有哪些呢?接下来简单给大家介绍一下关于GPUCPU区别
    的头像 发表于 01-06 17:07 3.1w次阅读

    恒讯科技分析:GPU是什么和CPU区别

    GPU是什么和CPU区别?CPU是计算机的中央处理单元,可以以最小的延迟执行算术和逻辑运算。相比之下,GPU是一种嵌入式或外部图形处理单元
    的头像 发表于 05-25 17:23 2228次阅读

    CPUGPU之间的主要区别

    以下是以表格形式提供的 CPUGPU 之间的一些区别
    发表于 06-06 15:51 807次阅读

    gpucpu有什么区别

    gpucpu有什么区别GPUCPU是电脑中两个重要的计算器件。如果想要了解这两个设备的区别
    的头像 发表于 08-09 16:15 1.3w次阅读

    cpu gpu npu的区别 NPU与GPU哪个好?gpu是什么意思?

    cpu gpu npu的区别 NPU与GPU哪个好?gpu是什么意思? 在当今数字化和人工智能的时代,高效的计算能力是现代技术发展的重要基础
    的头像 发表于 08-27 17:03 1w次阅读

    CPUGPU之间的主要区别

    以下是以表格形式提供的CPUGPU之间的一些区别:中央处理器图形处理器CPU代表中央处理器。GPU代表图形处理单元。
    的头像 发表于 12-14 08:28 726次阅读
    <b class='flag-5'>CPU</b>和<b class='flag-5'>GPU</b>之间的主要<b class='flag-5'>区别</b>

    gpu是什么和cpu区别

    GPUCPU是两种常见的计算机处理器,它们在结构和功能上有很大的区别。在这篇文章中,我们将探讨GPUCPU
    的头像 发表于 02-20 11:24 1.8w次阅读