立即注册
查看: 635|回复: 1

[转载] CPU、GPU、ASIC、FPGA区别在哪?为什么AI计算用GPU?

已绑定手机
发表于 2024-1-6 15:39:16 | 显示全部楼层 |阅读模式 来自 广东省汕头市

行业里通常会把半导体芯片分为数字芯片和模拟芯片。其中,数字芯片的市场规模占比较大,达到70%左右。

数字芯片,还可以进一步细分,分为:逻辑芯片、存储芯片以及微控制单元(MCU)。 微信图片_20240106152157.png

存储芯片和MCU以后再介绍,今天重点讲讲逻辑芯片

逻辑芯片,其实说白了就是计算芯片。它包含了各种逻辑门电路,可以实现运算与逻辑判断功能,是最常见的芯片之一。

大家经常听说的CPU、GPU、FPGA、ASIC,全部都属于逻辑芯片。而现在特别火爆的AI,用到的所谓“AI芯片”,也主要是指它们。

CPU(中央处理器)

先说说大家最熟悉的CPU,英文全称Central Processing Unit,中央处理器。 CPU

但凡是个人都知道,CPU是计算机的心脏。

现代计算机,都是基于1940年代诞生的冯·诺依曼架构。在这个架构中,包括了运算器(也叫逻辑运算单元,ALU)、控制器(CU)、存储器、输入设备、输出设备等组成部分。 冯·诺依曼架构

数据来了,会先放到存储器。然后,控制器会从存储器拿到相应数据,再交给运算器进行运算。运算完成后,再把结果返回到存储器。

这个流程,还有一个更有逼格的叫法:“Fetch(取指)-Decode(译码)- Execute(执行)-Memory Access(访存)-Write Back(写回)”。

大家看到了,运算器和控制器这两个核心功能,都是由CPU负责承担的。

具体来说,运算器(包括加法器、减法器、乘法器、除法器),负责执行算术和逻辑运算,是真正干活的。控制器,负责从内存中读取指令、解码指令、执行指令,是指手画脚的。

除了运算器和控制器之外,CPU还包括时钟模块和寄存器(高速缓存)等组件。 微信图片_20240106152407.png

时钟模块负责管理CPU的时间,为CPU提供稳定的时基。它通过周期性地发出信号,驱动CPU中的所有操作,调度各个模块的工作。

寄存器是CPU中的高速存储器,用于暂时保存指令和数据。它的CPU与内存(RAM)之间的“缓冲”,速度比一般的内存更快,避免内存“拖累”CPU的工作。

寄存器的容量和存取性能,可以影响CPU到对内存的访问次数,进而影响整个系统的效率。后面我们讲存储芯片的时候,还会提到它。

CPU一般会基于指令集架构进行分类,包括x86架构和非x86架构。x86基本上都是复杂指令集(CISC),而非x86基本为精简指令集(RISC)。

PC和大部分服务器用的是x86架构,英特尔和AMD公司占据主导地位。非x86架构的类型比较多,这些年崛起速度很快,主要有ARM、MIPS、Power、RISC-V、Alpha等。以后会专门介绍。

GPU(图形处理器)

再来看看GPU。

GPU是显卡的核心部件,英文全名叫Graphics Processing Unit,图形处理单元(图形处理器)。

GPU并不能和显卡划等号。显卡除了GPU之外,还包括显存、VRM稳压模块、MRAM芯片、总线、风扇、外围设备接口等。 显卡

1999年,英伟达(NVIDIA)公司率先提出了GPU的概念。

之所以要提出GPU,是因为90年代游戏和多媒体业务高速发展。这些业务给计算机的3D图形处理和渲染能力提出了更高的要求。传统CPU搞不定,所以引入了GPU,分担这方面的工作。

根据形态,GPU可分为独立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常说的独显、集显。

GPU也是计算芯片。所以,它和CPU一样,包括了运算器、控制器和寄存器等组件。

但是,因为GPU主要负责图形处理任务,所以,它的内部架构和CPU存在很大的不同。 微信图片_20240106152518.png

如上图所示,CPU的内核(包括了ALU)数量比较少,最多只有几十个。但是,CPU有大量的缓存(Cache)和复杂的控制器(CU)。

这样设计的原因,是因为CPU是一个通用处理器。作为计算机的主核心,它的任务非常复杂,既要应对不同类型的数据计算,还要响应人机交互。

复杂的条件和分支,还有任务之间的同步协调,会带来大量的分支跳转和中断处理工作。它需要更大的缓存,保存各种任务状态,以降低任务切换时的时延。它也需要更复杂的控制器,进行逻辑控制和调度。

CPU的强项是管理和调度。真正干活的功能,反而不强(ALU占比大约5%~20%)。

如果我们把处理器看成是一个餐厅的话,CPU就像一个拥有几十名高级厨师的全能型餐厅。这个餐厅什么菜系都能做,但是,因为菜系多,所以需要花费大量的时间协调、配菜,上菜的速度相对比较慢。

而GPU则完全不同。

GPU为图形处理而生,任务非常明确且单一。它要做的,就是图形渲染。图形是由海量像素点组成的,属于类型高度统一、相互无依赖的大规模数据。

所以,GPU的任务,是在最短的时间里,完成大量同质化数据的并行运算。所谓调度和协调的“杂活”,反而很少。

并行计算,当然需要更多的核啊。

如前图所示,GPU的内核数,远远超过CPU,可以达到几千个甚至上万个(也因此被称为“众核”)。

RTX4090有16384个流处理器

GPU的核,称为流式多处理器(Stream Multi-processor,SM),是一个独立的任务处理单元。

在整个GPU中,会划分为多个流式处理区。每个处理区,包含数百个内核。每个内核,相当于一颗简化版的CPU,具备整数运算和浮点运算的功能,以及排队和结果收集功能。

GPU的控制器功能简单,缓存也比较少。它的ALU占比,可以达到80%以上。

虽然GPU单核的处理能力弱于CPU,但是数量庞大,非常适合高强度并行计算。同等晶体管规模条件下,它的算力,反而比CPU更强。

还是以餐厅为例。GPU就像一个拥有成千上万名初级厨师的单一型餐厅。它只适合做某种指定菜系。但是,因为厨师多,配菜简单,所以大家一起炒,上菜速度反而快。 CPUvsGPU

ASIC(专用集成电路)

上篇提到,GPU的并行算力能力很强,但是它也有缺点,就是功耗高,体积大,价格贵。

进入21世纪后,算力需求呈现两个显著趋势:一,算力的使用场景,开始细分;二,用户对算力性能的要求,越来越高。通用的算力芯片,已经无法满足用户的需求。

于是,越来越多的企业,开始加强对专用计算芯片的研究和投资力度。而ASIC(Application Specific Integrated Circuit,专用集成电路),就是一种专用于特定任务的芯片。 ASIC

ASIC的官方定义,是指:应特定用户的要求,或特定电子系统的需要,专门设计、制造的集成电路。

ASIC起步于上世纪70-80年代。早期的时候,曾用于计算机。后来,主要用于嵌入式控制。这几年,如前面所说,开始崛起,用于AI推理、高速搜索以及视觉和图像处理等。

说到ASIC,我们就不得不提到Google公司大名鼎鼎的TPU

TPU

TPU,全称Tensor Processing Unit,张量处理单元。所谓“张量(tensor)”,是一个包含多个数字(多维数组)的数学实体。

目前,几乎所有的机器学习系统,都使用张量作为基本数据结构。所以,张量处理单元,我们可以简单理解为“AI处理单元”。

2015年,为了更好地完成自己的深度学习任务,提升AI算力,Google推出了一款专门用于神经网络训练的芯片,也就是TPU v1。

相比传统的CPU和GPU,在神经网络计算方面,TPU v1可以获得15~30倍的性能提升,能效提升更是达到30~80倍,给行业带来了很大震动。

2017年和2018年,Google又再接再厉,推出了能力更强的TPU v2和TPU v3,用于AI训练和推理。2021年,他们推出了TPU v4,采用7nm工艺,晶体管数达到220亿,性能相较上代提升了10倍,比英伟达的A100还强1.7倍。

除了Google之外,还有很多大厂这几年也在捣鼓ASIC。

英特尔公司在2019年底收购了以色列AI芯片公司Habana Labs,2022年,发布了Gaudi 2 ASIC芯片。IBM研究院,则于2022年底,发布了AI ASIC芯片AIU。

三星早几年也搞过ASIC,当时做的是矿机专用芯片。没错,很多人认识ASIC,就是从比特币挖矿开始的。相比GPU和CPU挖矿,ASIC矿机的效率更高,能耗更低。 ASIC矿机

除了TPU和矿机之外,另外两类很有名的ASIC芯片,是DPUNPU

DPU是数据处理单元(Data Processing Unit),主要用于数据中心。

NPU的话,叫做神经网络处理单元(Neural Processing Unit),在电路层模拟人类神经元和突触,并用深度学习指令集处理数据。

NPU专门用于神经网络推理,能够实现高效的卷积、池化等操作。一些手机芯片里,经常集成这玩意。

说到手机芯片,值得一提的是,我们手机现在的主芯片,也就是常说的SoC芯片,其实也是一种ASIC芯片。

手机SoC芯片

ASIC作为专门的定制芯片,优点体现在哪里?只是企业独享,专用logo和命名?

不是的。

定制就是量体裁衣。基于芯片所面向的专项任务,芯片的计算能力和计算效率都是严格匹配于任务算法的。芯片的核心数量,逻辑计算单元和控制单元比例,以及缓存等,整个芯片架构,也是精确定制的。

所以,定制专用芯片,可以实现极致的体积、功耗。这类芯片的可靠性、保密性、算力、能效,都会比通用芯片(CPU、GPU)更强。

大家会发现,前面我们提到的几家ASIC公司,都是谷歌、英特尔、IBM、三星这样的大厂。

这是因为,对芯片进行定制设计,对一家企业的研发技术水平要求极高,且耗资极为巨大。

做一款ASIC芯片,首先要经过代码设计、综合、后端等复杂的设计流程,再经过几个月的生产加工以及封装测试,才能拿到芯片来搭建系统。

大家都听说过“流片(Tape-out)”。像流水线一样,通过一系列工艺步骤制造芯片,就是流片。简单来说,就是试生产。 微信图片_20240106153327.png

ASIC的研发过程是需要流片的。14nm工艺,流片一次需要300万美元左右。5nm工艺,更是高达4725万美元。

流片一旦失败,钱全部打水漂,还耽误了大量的时间和精力。一般的小公司,根本玩不起。

那么,是不是小公司就无法进行芯片定制了呢?

当然不是。接下来,就轮到另一个神器出场了,那就是——FPGA。

FPGA(现场可编程门阵列)

FPGA,英文全称Field Programmable Gate Array,现场可编程门阵列。

FPGA这些年在行业里很火,势头比ASIC还猛,甚至被人称为“万能芯片”

其实,简单来说,FPGA就是可以重构的芯片。它可以根据用户的需要,在制造后,进行无限次数的重复编程,以实现想要的数字逻辑功能。

之所以FPGA可以实现DIY,是因为其独特的架构。

FPGA由可编程逻辑块(Configurable Logic Blocks,CLB)、输入/输出模块(I/O Blocks,IOB)、可编程互连资源(Programmable Interconnect Resources,PIR)等三种可编程电路,以及静态存储器SRAM共同组成。 微信图片_20240106153253.png

CLB是FPGA中最重要的部分,是实现逻辑功能的基本单元,承载主要的电路功能。

它们通常规则排列成一个阵列(逻辑单元阵列,LCA,Logic Cell Array),散布于整个芯片中。

IOB主要完成芯片上的逻辑与外部引脚的接口,通常排列在芯片的四周。

PIR提供了丰富的连线资源,包括纵横网状连线、可编程开关矩阵和可编程连接点等。它们实现连接的作用,构成特定功能的电路。

静态存储器SRAM,用于存放内部IOB、CLB和PIR的编程数据,并形成对它们的控制,从而完成系统逻辑功能。

CLB本身,又主要由查找表(Look-Up Table,LUT)、多路复用器(Multiplexer)和触发器(Flip-Flop)构成。它们用于承载电路中的一个个逻辑“门”,可以用来实现复杂的逻辑功能。

简单来说,我们可以把LUT理解为存储了计算结果的RAM。当用户描述了一个逻辑电路后,软件会计算所有可能的结果,并写入这个RAM。每一个信号进行逻辑运算,就等于输入一个地址,进行查表。LUT会找出地址对应的内容,返回结果。

这种“硬件化”的运算方式,显然具有更快的运算速度。

用户使用FPGA时,可以通过硬件描述语言(Verilog或VHDL),完成的电路设计,然后对FPGA进行“编程”(烧写),将设计加载到FPGA上,实现对应的功能。

加电时,FPGA将EPROM(可擦编程只读存储器)中的数据读入SRAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失。如此反复,就实现了“现场”定制。

FPGA的功能非常强大。理论上,如果FPGA提供的门电路规模足够大,通过编程,就能够实现任意ASIC的逻辑功能。

FPGA开发套件,中间那个是FPGA芯片

我们再看看FPGA的发展历程。

FPGA是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上发展起来的产物,属于一种半定制电路。

它诞生于1985年,发明者是Xilinx公司(赛灵思)。后来,Altera(阿尔特拉)、Lattice(莱迪思)、Microsemi(美高森美)等公司也参与到FPGA这个领域,并最终形成了四巨头的格局。

2015年5月,Intel(英特尔)以167亿美元的天价收购了Altera,后来收编为PSG(可编程解决方案事业部)部门。

2020年,Intel的竞争对手AMD也不甘示弱,以350亿美元收购了Xilinx。

于是,就变成了Xilinx(AMD旗下)、Intel、Lattice和Microsemi四巨头(换汤不换药)。

2021年,这四家公司的市占率分别为51%、29%、7%和6%,加起来是全球总份额的93%。

不久前,2023年10月,Intel宣布计划拆分PSG部门,独立业务运营。

国内FPGA厂商的话,包括复旦微电、紫光国微、安路科技、东土科技、高云半导体、京微齐力、京微雅格、智多晶、遨格芯等。看上去数量不少,但实际上技术差距很大。

ASIC和FPGA的区别

接下来,我们重点说说ASIC和FPGA的区别,还有它们和CPU、GPU之间的区别。

ASIC和FPGA,本质上都是芯片。AISC是全定制芯片,功能写死,没办法改。而FPGA是半定制芯片,功能灵活,可玩性强。

我们还是可以通过一个例子,来说明两者之间的区别。

ASIC就是用模具来做玩具。事先要进行开模,比较费事。而且,一旦开模之后,就没办法修改了。如果要做新玩具,就必须重新开模。

而FPGA呢,就像用乐高积木来搭玩具。上手就能搭,花一点时间,就可以搭好。如果不满意,或者想搭新玩具,可以拆开,重新搭。

ASIC和FPGA的区别

ASIC与FPGA的很多设计工具是相同的。在设计流程上,FPGA没有ASIC那么复杂,去掉了一些制造过程和额外的设计验证步骤,大概只有ASIC流程的50%-70%。最头大的流片过程,FPGA是不需要的。

这就意味着,开发ASIC,可能需要几个月甚至一年以上的时间。而FPGA,只需要几周或几个月的时间。

刚才说到FPGA不需要流片,那么,是不是意味着FPGA的成本就一定比ASIC低呢?

不一定。

FPGA可以在实验室或现场进行预制和编程,不需要一次性工程费用 (NRE)。但是,作为“通用玩具”,它的成本是ASIC(压模玩具)的10倍。

如果生产量比较低,那么,FPGA会更便宜。如果生产量高,ASIC的一次性工程费用被平摊,那么,ASIC反而便宜。

这就像开模费用。开模很贵,但是,如果销量大,开模就划算了。

如下图所示,40W片,是ASIC和FPGA成本高低的一个分界线。产量少于40W,FPGA便宜。多于40W,ASIC便宜。 微信图片_20240106153549.jpg

从性能和功耗的角度来看,作为专用定制芯片,ASIC是比FPGA强的。

FPGA是通用可编辑的芯片,冗余功能比较多。不管你怎么设计,都会多出来一些部件。

前面也说了,ASIC是贴身定制,没什么浪费,且采用硬连线。所以,性能更强,功耗更低。

FPGA和ASIC,不是简单的竞争和替代关系,而是各自的定位不同。

FPGA现在多用于产品原型的开发、设计迭代,以及一些低产量的特定应用。它适合那些开发周期必须短的产品。FPGA还经常用于ASIC的验证。

ASIC用于设计规模大、复杂度高的芯片,或者是成熟度高、产量比较大的产品。

FPGA还特别适合初学者学习和参加比赛。现在很多大学的电子类专业,都在使用FPGA进行教学。

从商业化的角度来看,FPGA的主要应用领域是通信、国防、航空、数据中心、医疗、汽车及消费电子。

FPGA在通信领域用得很早。很多基站的处理芯片(基带处理、波束赋形、天线收发器等),都是用的FPGA。核心网的编码和协议加速等,也用到它。数据中心之前在DPU等部件上,也用。

后来,很多技术成熟了、定型了,通信设备商们就开始用ASIC替代,以此减少成本。

值得一提的是,最近这些年很热门的Open RAN,其实很多都是采用通用处理器(Intel CPU)进行计算。这种方案的能耗远远不如FPGA和ASIC。这也是包括华为等设备商不愿意跟进Open RAN的主要原因之一。

汽车和工业领域,主要是看中了FPGA的时延优势,所以会用在ADAS(高级驾驶辅助系统)和伺服电机驱动上。

消费电子用FPGA,是因为产品迭代太快。ASIC的开发周期太长了,等做出东西来,黄花菜都凉了。

FPGA、ASIC、GPU,谁是最合适的AI芯片?

最后,我们还是要绕回到AI芯片的话题。

首先,大家要记住,单纯从理论和架构的角度,ASIC和FPGA的性能和成本,肯定是优于CPU和GPU的。 微信图片_20240106153653.png

CPU、GPU遵循的是冯·诺依曼体系结构,指令要经过存储、译码、执行等步骤,共享内存在使用时,要经历仲裁和缓存。

而FPGA和ASIC并不是冯·诺依曼架构(是哈佛架构)。以FPGA为例,它本质上是无指令、无需共享内存的体系结构。

FPGA的逻辑单元功能在编程时已确定,属于用硬件来实现软件算法。对于保存状态的需求,FPGA中的寄存器和片上内存(BRAM)属于各自的控制逻辑,不需要仲裁和缓存。

从ALU运算单元占比来看,GPU比CPU高,FPGA因为几乎没有控制模块,所有模块都是ALU运算单元,比GPU更高。

所以,综合各个角度,FPGA的运算速度会比GPU更快。

再看看功耗方面。

GPU的功耗,是出了名的高,单片可以达到250W,甚至450W(RTX4090)。而FPGA呢,一般只有30~50W。

这主要是因为内存读取。GPU的内存接口(GDDR5、HBM、HBM2)带宽极高,大约是FPGA传统DDR接口的4-5倍。但就芯片本身来说,读取DRAM所消耗的能量,是SRAM的100倍以上。GPU频繁读取DRAM的处理,产生了极高的功耗。

另外,FPGA的工作主频(500MHz以下)比CPU、GPU(1~3GHz)低,也会使得自身功耗更低。FPGA的工作主频低,主要是受布线资源的限制。有些线要绕远,时钟频率高了,就来不及。

最后看看时延。

GPU时延高于FPGA。

GPU通常需要将不同的训练样本,划分成固定大小的“Batch(批次)”,为了最大化达到并行性,需要将数个Batch都集齐,再统一进行处理。

FPGA的架构,是无批次(Batch-less)的。每处理完成一个数据包,就能马上输出,时延更有优势。

那么,问题来了。GPU这里那里都不如FPGA和ASIC,为什么还会成为现在AI计算的大热门呢?

很简单,在对算力性能和规模的极致追求下,现在整个行业根本不在乎什么成本和功耗。

在英伟达的长期努力下,GPU的核心数和工作频率一直在提升,芯片面积也越来越大,属于硬刚算力。功耗靠工艺制程,靠水冷等被动散热,反而不着火就行。

除了硬件之外,英伟达在软件和生态方面很会布局。

他们捣鼓出来的CUDA,是GPU的一个核心竞争力。基于CUDA,初学者都可以很快上手,进行GPU的开发。他们苦心经营多年,也形成了群众基础。

相比之下,FPGA和ASIC的开发还是太过复杂,不适合普及。

在接口方面,虽然GPU的接口比较单一(主要是PCIe),没有FPGA灵活(FPGA的可编程性,使其能轻松对接任何的标准和非标准接口),但对于服务器来说,足够了,插上就能用。

除了FPGA之外,ASIC之所以在AI上干不过GPU,和它的高昂成本、超长开发周期、巨大开发风险有很大关系。现在AI算法变化很快,ASIC这种开发周期,很要命。

综合上述原因,GPU才有了现在的大好局面。

在AI训练上,GPU的算力强劲,可以大幅提升效率。

在AI推理上,输入一般是单个对象(图像),所以要求要低一点,也不需要什么并行,所以GPU的算力优势没那么明显。很多企业,就会开始采用更便宜、更省电的FPGA或ASIC,进行计算。

其它一些算力场景,也是如此。看重算力绝对性能的,首选GPU。算力性能要求不那么高的,可以考虑FPGA或ASIC,能省则省。

最后的话

关于CPU、GPU、FPGA、ASIC的知识,就介绍到这里了。

它们是计算芯片的典型代表。人类目前所有的算力场景,基本上都是由它们在负责。

随着时代的发展,计算芯片也有了新的趋势。例如,不同算力芯片进行混搭,互相利用优势。我们管这种方式,叫做异构计算。另外,还有IBM带头搞的类脑芯片,类似于大脑的神经突触,模拟人脑的处理过程,也获得了突破,热度攀升。以后有机会,我再和大家专门介绍。

以上文章来源于微信公众号(鲜枣课堂)

已绑定手机
发表于 2024-1-16 16:19:22 | 显示全部楼层 来自 河北省石家庄市
不错的资料,技术普及好文章
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表