CPU和GPU的区别


=Start=

缘由:

自从 chatGPT 横空出世之后,关于 AI 的讨论层出不穷,为了避免信息脱节,需要主动去学习了解相关知识。在看了一些文章之后,发现我有太多的基础知识要补充,只能一点一点来,先从基础的开始。这次先学习整理一下CPU和GPU的区别,才好去了解为什么深度学习等机器学习算法的介绍基本离不开GPU,为什么NVIDIA英伟达会和GPT产生如此紧密的联系?

正文:

参考解答:
CPU和GPU都是处理器,两者有什么不同

设计目标不同导致接下来的一系列不同。

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

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

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

CPU (Central Processing Unit,中央处理器)就是机器的“大脑”,是完成布局谋略、发号施令、控制行动的“总司令官”。CPU的结构主要包括运算器(ALU,Arithmetic and Logic Unit)、控制单元(CU,Control Unit)、寄存器(Register)、高速缓存器(Cache)和之间通讯的数据、控制及状态的总线。

GPU(Graphics Processing Unit,中文为图形处理器),又称显示核心、视觉处理器、显示芯片。就如其名字一样,GPU最初是用在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。

CPU 基于低延时的设计(latency oriented design)。

GPU是基于大的吞吐量设计(throughput oriented design)。

与CPU擅长逻辑控制,串行的运算和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多地参与到计算当中来。

一个简单的类比——教授vs小学生

CPU和GPU的最大不同在于架构,CPU适用于广泛的应用场景(学识渊博),可以执行任意程序,而GPU则专为多任务而生,并发能力强,具体来讲就是多核,一般的CPU有2核、4核、8核等,而GPU则可能会有成百上千核。

GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。

总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。

为什么GPU需要这么多核心?

想一想计算机上的一张图是怎么表示的?无非就是屏幕上的一个个像素。

我们需要为每个像素进行计算,而且是相同的运算,就好比刚才例子中的小学生计算计加法一样,注意,对于屏幕来说一般会有上百万个像素,如果我们要串行的为每一个像素进行运算效率就太低了,因此我们可以让GPU中的每一个核心去为相应的像素进行计算,由于GPU中有很多核心,因此并行计算可以大幅提高速度。

现在你应该明白为什么GPU要这样工作了吧。

不同的工作方式

对CPU来说,不同的核心可以执行不同的机器指令,coreA在运行word线程的同时coreB上可以运行浏览器线程,这就是所谓的多指令多数据,MIMD,(Multiple Instruction, Multiple Data)。

而GPU则不同,GPU上的这些核心必须整齐划一的运行相同的机器指令,只是可以操作不同的数据,这就好比这些小学生在某个时刻必须都进行加法计算,不同的地方在于有的小学生可能需要计算1+1,有的要计算2+6等等,变化的地方仅在于操作数,这就是所谓的单指令多数据,SIMD,(Single Instruction, Multiple Data)。

因此我们可以看到GPU的工作方式和CPU是截然不同的。

除了这种工作方式之外,GPU的指令集还非常简单,不像CPU这种复杂的处理器,如果你去看CPU的编程手册就会发现,CPU负责的事情非常多:中断处理、内存管理、IO等等,这些对于GPU来说都是不存在的,可以看到GPU的定位非常简单,就是纯计算,GPU绝不是用来取代CPU的,CPU只是把一些GPU非常擅长的事情交给它,GPU仅仅是用来分担CPU工作的配角。

GPU擅长什么

什么类型的程序适合在GPU上运行?

(1)计算密集型的程序。所谓计算密集型(Compute-intensive)的程序,就是其大部分运行时间花在了寄存器运算上,寄存器的速度和处理器的速度相当,从寄存器读写数据几乎没有延时。可以做一下对比,读内存的延迟大概是几百个时钟周期;读硬盘的速度就不说了,即便是SSD, 也实在是太慢了。

(2)易于并行的程序。GPU其实是一种SIMD(Single Instruction Multiple Data)架构, 他有成百上千个核,每一个核在同一时间最好能做同样的事情。

CPU会利用较高的主频、cache、分支预测等技术,使处理每条指令所需的时间尽可能少,从而降低具有复杂跳转分支程序执行所需的时间。GPU则通过数量丧心病狂的流处理器实现大量线程并行,使同时走一条指令的数据变多,从而提高数据的吞吐量。

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

因此对于图形图像计算、天气预报以及神经网络等都适用于GPU,哦对了,GPU还适合用来挖矿。

为什么在人工智能领域GPU十分盛行?

深度学习是模拟人脑神经系统而建立的数学网络模型,这个模型的最大特点是需要大数据来训练。

因此,人工智能领域对计算能力的要求就是需要大量的并行的重复计算,GPU正好有这个专长,时势造英雄,因此GPU就出山担此重任。

讲到这里,也不妨提一下最近几年市场上很火的AI芯片。这个市场目前主流分为GPGPU(GeneralPurposeGPU)派、FPGA派和ASIC派,特别是在训练方面目前GPGPU占据绝对主导地位:

在众多的GPU厂商中,Nvidia以其产品高度的通用性(支持几乎所有主流AI算法)、成熟的软件生态(CUDA几乎成为深度学习算法设计必备工具)及不断迭代优化的产品矩阵,成为顶级的GPGPU供应商;GoogleTPU在支持某些固化的AI算法时可达到极高的性能/功耗比。

从长期来看,GPGPU的高度通用性和可编程性,无疑对于高速迭代的AI和其他新型算法具备更好的适应性和发展潜力,加上其产品经过长期的迭代和优化设计更加成熟,因此GPGPU成为近年来算法公司的主流硬件加速工具(特别是规模较大的NN加速)。

当GPU遇到人工智能后,开始大放异彩。2006年,英伟达推出基于GPU的CUDA开发平台,开发者可以通过这一平台,使用C语言编写程序以解决复杂的计算问题,换言之,原本只用做3D渲染的GPU变得更加通用,可执行的任务更加多样。

2009年,斯坦福大学的Raina、Madhavan及吴恩达在一篇论文中论述了GPU在深度学习方面相对CPU的大幅优势(http://robotics.stanford.edu/~ang/papers/icml09-LargeScaleUnsupervisedDeepLearningGPU.pdf),将AI训练时间从几周缩短至几小时。这篇论文为人工智能的硬件实现指明了方向。GPU大大加速了AI从论文走向现实的过程。

参考链接:

CPU和GPU的不同
https://mp.weixin.qq.com/s/w_g35fttdhX1V6YUiujYDw

CPU与GPU到底有什么区别?
https://mp.weixin.qq.com/s/fCuifWU-9tXMJLW_fLZRew

简单聊聊CPU和GPU的区别
https://mp.weixin.qq.com/s/dBn_Uiln4wacRsqpFXMuGg

FPGA、 CPU、GPU、ASIC的区别
https://mp.weixin.qq.com/s/8d6QU4AVuXRJRk4l2KEdQg

什么是GPU?跟CPU有什么区别?终于有人讲明白了
https://mp.weixin.qq.com/s/MqgWdCuPTyJqFkJdLrB9pg

特斯拉的AI野心:向人类预警,给硅基带路
https://mp.weixin.qq.com/s/zV1HUgIQTAVkxmZDbWKPPw

=END=


《“CPU和GPU的区别”》 有 2 条评论

  1. NVIDIA introduces A800 GPU chips to replace banned A100 chips for China
    https://analyticsdrift.com/nvidia-introduces-a800-gpu-chips-to-replace-banned-a100-chips-for-china/
    `
    The A100 processor has been used to power supercomputers, artificial intelligence, and high-performance data centers in sectors ranging from biotech to finance to manufacturing. A100 and NVIDIA’s enterprise AI chip H100 were added to the U.S. export control list in order to address the possibility that the listed products may be routed to or utilized by a “military end use” or “military end user” in China and Russia. Although the Biden administration has pushed for “tech decoupling,” NVIDIA’s introduction of A800 to the Chinese market highlights the US chipmakers’ dependency on China.

    Except for their connection speeds, the A100 and A800 are nearly similar. The A800 works at 400 gigabytes per second, while the A100 operates at 600 gigabytes per second. As per the performance barrier set by the new rules, NVIDIA cannot sell chips with rates of 600 gigabytes per second and up.
    `

    Nvidia tweaks flagship H100 chip for export to China as H800
    https://www.reuters.com/technology/nvidia-tweaks-flagship-h100-chip-export-china-h800-2023-03-21/

    Nvidia creates pared back H100 GPU for export to China, called H800
    https://www.datacenterdynamics.com/en/news/nvidia-creates-pared-back-h100-gpu-for-export-to-china-called-h800/

    NVIDIA Prepares H800 Adaptation of H100 GPU for the Chinese Market
    https://www.techpowerup.com/306390/nvidia-prepares-h800-adaptation-of-h100-gpu-for-the-chinese-market
    `
    简单来说就是A800和H800分别是当前Nvidia最强GPU芯片A100和H100的阉割替代版本,降低了芯片间的互联带宽大小,而在大模型训练时芯片间的数据传递是非常常见且频繁的,这样在训练同样一套模型时就需要花费更多的时间,从而减缓中国在半导体和人工智能等关键技术领域的发展。

    H100 是 NVIDIA 的企业级 AI 芯片,比 A100 要更强一些。

    A100 – 600GBps带宽
    A800 – 400GBps带宽

    H100 – 600GBps带宽
    H800 – 300GBps带宽
    `
    英伟达H800可供货,国产AI芯片企业被列入实体清单,应该如何应对
    https://baijiahao.baidu.com/s?id=1761572097338163710&wfr=spider&for=pc
    `
    近日,英伟达在GTC发布了特供版的H800,这是其旗舰芯片H100的替代版,那么通过“阉割”掉部分性能,这款H800可以合法出口到中国。

    美国以国家安全问题为由,禁止英伟达向中国客户出售其两款最先进的芯片,即A100和更先进的H100,其背后的目的是减缓中国在半导体和人工智能等关键技术领域的发展。

    随后,英伟达发布了A800,同样也是一款阉割芯片,那么目前国内主要使用的就是A800,他与A100的主要差距就是在互联速度上,相差了200GB。

    在对大量数据进行人工智能模型训练时,传输速度是相当重要的指标,因此美国要求必须将芯片的传输速率控制在600GB以内。

    那么新款H800也是一样的处理方式,将芯片到芯片的数据传输速率降低到旗舰H100速率的一半,而较慢的传输速率也意味着,使用这款芯片就需要花费更多的训练时间。

    制程工艺
    算力
    显存带宽互联速度(bi-directional chip-to-chip interconnect bandwidth speed)
    `
    NVIDIA特供中国显卡 腾讯确认用上H800 售价或超20万元一块
    https://baijiahao.baidu.com/s?id=1763141308764784236&wfr=spider&for=pc

  2. 7、CPU 制造过程图解(英文)
    https://blog.robertelder.org/how-to-make-a-cpu/
    `
    作者使用大量图片,简明通俗解释如何从石头制造出 CPU。读了以后,对于 CPU 的制造流程就有一个大致的了解。

    1) Get a rock.
    1) 找一块石头。

    2) Smash the rock.
    2) 敲碎石头。

    3) Now you have 98% concentrated silicon dioxide. Purify it to 99.9% pure silicon dioxide.
    3) 现在你有 98% 的浓缩二氧化硅。将其提纯至 99.9% 的纯二氧化硅。

    4) Purify it further to 99.9999999% polysilicon metal.
    4) 再提纯成 99.9999999% 的金属多晶硅。

    5) Put the polysilicon ingots into a crucible.
    5) 将多晶硅锭放入坩埚。

    6) Heat the silicon ingots to 1698 °K.
    6) 将硅锭加热至 1698°K。

    7) Take a small seed monocrystal and dip it into the vat of molten silicon.
    7) 取一小块单晶种子,将其浸入硅熔池中。

    8) Slowly pull the crystal out as it cools.
    8) 当晶体冷却时,慢慢将其拉出。

    9) Now, you’ve got a monocrystal of pure silicon. Cut it into thin slices.
    9) 现在,你已经得到了一块纯硅单晶。把它切成薄片。

    10) Now, you’ve got pristine freshly-cut silicon wafers. Optionally, dope them with Boron, Phosphorus or another dopant.
    10) 现在,你已经得到了纯净的新切硅片。可以选择掺入硼、磷或其他掺杂剂。

    11) Put photoresist on the wafer.
    11) 在硅片上涂上光刻胶。

    12) Take a chromium-etched photo-lithographic quartz mask with your desired circuit pattern and shine a laser beam through it to project the circuit pattern onto the wafer.
    12) 用铬蚀刻光刻石英掩膜刻上所需的电路图案,然后用激光束照射,将电路图案投射到硅片上。

    13) The locations of the shadows produced by the photo-mask will control where the photo-resist is chemically changed on the surface of the silicon wafer (depending on whether you used positive or negative photoresist).
    13) 光掩膜产生阴影的位置将控制硅晶片表面光阻发生化学变化的位置(取决于使用的是正性光阻还是负性光阻)。

    14) Now, develop the photoresist.
    14) 现在,显影光阻。

    15) Acid etch the exposed parts of the wafer.
    15) 对硅片的曝光部分进行酸性蚀刻。

    16) Perform countless iterations and repetitions of homo-epitaxy, hetero-epitaxy, pseudo-epitaxy, diffusion doping, copper interconnect layers, chemical mechanical polishing, photoresist applications, acid etching, and photomask exposing to build up the desired features on the wafer.
    16) 进行无数次同外延、异外延、伪外延、扩散掺杂、铜互连层、化学机械抛光、光刻胶应用、酸蚀刻和光掩膜曝光的反复和重复,在硅片上建立起所需的特征。

    17) Now you’ve got a finished silicon wafer. Cut it into pieces.
    17) 现在你已经得到了一个完成的硅晶片。将其切割成碎片。

    18) Now you’ve got un-packaged silicon dies. Locate the pads on the silicon chip, and attach bond wires, or use the flip-chip method as is done now for most modern processors.
    18) 现在你有了未包装的硅芯片。找到硅芯片上的焊盘,接上键合线,或者使用倒装芯片的方法,现在大多数现代处理器都是这样做的。

    19) Use the bond wires or solder balls to provide an electrical connection between the pins on the chip package, and the pads on the silicon die.
    19) 使用键合线或焊球在芯片封装上的引脚和硅芯片上的焊盘之间建立电气连接。
    `

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注