FPGA和CPU、GPU有什么区别?为什么越来越重要?

1. 为什么会有这么多的XPU?——“配角们”的时代

近年来, 诸如 TPU、MPU、DPU 等的”X”PU 们似乎层出不穷,市场经常会对这些新创造出的名词感到困惑: 为什么会出现这么多的单元?本质上是由于 CPU 的算力到达瓶颈了,背后是通用计算时代的终结。从发明 以来, CPU 算力的提升主要依靠两大法宝:一是提高时钟频率,但时钟频率提升面临瓶颈了。 因为越高的时 钟频率, 意味着每秒可执行的运算次数越高,但随着电压下降到 0.6v 的“底限”,Dennard 缩放定律(Dennard Scaling) 在 05 年开始崩溃, 再提高时钟频率就会使得功耗以指数级别增长,因此我们在 05 年后遇到了频 率墙;二是增加处理器内核数,换取频率降低带来的功耗预算,但由于核间调度同样需要时延和功耗花销, 很快,核数的增长又遇到了瓶颈, 由于数据中心的散热技术约束了功率增长,导致处理器上许多核无法同时 工作, 这就是暗硅效应。 因此, 人们开始放弃使用一个超强的 CPU 完成所有事情,而是对某些重复的场景, 卸载到专用的加速器, 以达到新一阶段的降低功耗,提升性能的目的, 这就是“XPU”等加速器兴起的原因。

1CPU 面临算力瓶颈的原因

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第1张图片

同时, 自 2010 年 AI 兴起, AI 模型的训练所需的算力是爆发式的增长,且 “加&乘”的本质使得算力要求愈 发偏向高并行而不是高串行。CPU 越来越难以胜任高算力的场景,,将需要大规模、高密度的计算任务卸载 到在某一方向做了优化的专用处理器,就产生了这些不同的“X”PU,他们之间区别在于在某些场景的专用性。

22010年兴起以来,AI模型对算力的要求呈现爆发式增长,速度远超摩尔定律

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第2张图片

通用计算时代终结,数据中心走向加速器时代。未来10年,FPGA的重要性不断上升。随着 CPU 算力逐渐达到瓶颈,越来越无法满足神经网络指数级增长的算力需求。在数据中心这一人类算力需求最高的设施中,算力发展的方向愈发转向专用性,以寻求更高的性能、更低的能耗和成本。我们看到,未来 10 年,在数据中心高性能计算及 AI 训练中,CPU 这一“主角”的重要性下降,而以往的“配角们”,即 GPU、FPGA、TPU、DPU 等的加速器的重要性在上升。

3MLP网络本质是并行的乘法和累加,非常适合在FPGA中实现

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第3张图片

因此, 从2017年开始, 越来越多的大型公有云开始正式使用FPGAGPU作为加速器,以获得数百倍于CPU的性能提升。例如,微软的Catapult 项目就使用了 FPGA 以加速 Bing 的搜索速度,AWS 的 F1 Instances 将 FPGA 的算力作为服务提供给客户,阿里云使用了 FPGA 为其“双十一”进行了零售交易系统的加速。

4:微软的Azure使用FPGA加速Bing搜索, 网络吞吐量大幅上升, 时延下降了 80%

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第4张图片

2.相比CPUFPGA的并行性和灵活性更高,能提供确定性的时延

处理器负责对外界输入的数据进行处理,CPUGPUFPGA等处理器的区别在于处理流程,CPU 的处理 流程使其擅长串行计算,以复杂的控制为特征,GPU 和 FPGA 的则更擅长大规模的并行计算:

CPU是冯诺依曼架构下的处理器,遵循“Fetch (取指) -Decode (译码) - Execute (执行) - Memory Access (访存) -Write Back (写回)”的处理流程, 数据要先通过控制单元获取存在 RAM 中的指令, 再解码得知用户需要对数据做何种运算,然后再将数据送到 ALU 进行对应的处理,结束运算后存回 RAM, 再获取下一个指令。这一处理流程,即 SISD (Single Instruction Single Data),决定了CPU擅长决策 和控制,但在多数据处理任务中效率较低。现代的 CPU 可以同时做到 SISD 和 SIMD 的处理,但在并 行规模上依然不如 GPU 和 FPGA。

GPU遵循的是 SIMD (Single Instruction Multiple Data)的处理方式, 通过在多个线程上运行统一的处理方式, 即 Kernel,来达到将 CPU 发送过来的数据做高并行处理的目的。由于去除了现代 CPU 中分支 预测、乱序执行、存储预取等模块,也减少了许多 cache 的空间, GPU 中经过简化后的“核”能实现 非常大规模的并行运算, 并且节省了大部分 CPU 需要花费在分支预测、重排的时间, 但缺点是需要数 据适应 GPU 的处理框架,例如需要数据做批次对准,因此依然无法达到最大的实时性。

FPGA则是由用户自定义处理流程,可以直接决定片上的 CLB 是如何相连的,数十万个 CLB 可以独立运算,即 SIMD、MISD (Multiple Instruction Single Data) 和 MIMD (Multiple Instruction Multiple Data) 的处理都可以在 FPGA 实现,由于处理流程已经映射到硬件上,不需要再额外花费时间获取和编译指令, 同样不需要像CPU一样花费时间在乱序执行等步骤,这使得 FPGA 在数据处理中具有非常高的实时性。

5FPGA能完成SIMDMISDMIMD的处理,特别适合并行计算

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第5张图片

因此,GPUFPGA都是作为CPU的任务卸载单元,在并行计算的效率都高于CPU。在数据中心高性能 计算的场景中, GPU 和 FPGA 往往以分立的加速卡形式存在,即 CPU 将部分密集计算的任务“卸载”到 GPU 或者 FPGA,这些“器件”通过 PCIe 和 CPU 互联,以完成高并行的计算加速。

6:将CPU的核心简化以加快执行速度,是GPU设计的思想

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第6张图片

FPGA相比CPU的巨大优势在于确定性的低时延,这是架构差异造成的。CPU 的时延是不确定的, 当利用 率升高时, CPU 需要处理更多的任务,这就需要 CPU 进行任务调度重排, 因此造成处理时延往往是不可控 制地变大,即任务越多算得越慢。 而 FPGA 的时延之所以是确定的, 是因为在布局布线阶段, 设计工具就已 经确保能够让最差路径满足时序要求,不需要再花费时间在获取指令、解码指令等通用处理器需要的步骤, 也避免了随之而来的重排执行顺序、指令调度等待的问题。

7FPGA的时延远低于CPU,是因为其架构不需要在获取指令、编译指令、 分支预测等方面花费时间

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第7张图片

CPU的利用率越高,处理时延便越大,而FPGA无论利用率大小,其处理时延是稳定的。FPGA 可以提供纳秒级的处理时延,而 CPU 通常在毫秒级。例如,在自动驾驶系统中,将摄像头的数据直接传输到 FPGA的 MIPI 接口中,其最好和最差情况下的处理时延差距仅为 22ns,而在有 CPU 参与数据传输的情况下,这一差距在 23ms 以上,相当于 CPU 在繁忙情况下时延翻倍。此外,当利用率上升到 90%时,CPU 的处理时

8FPGA确定性的低时延,使其在工业和汽车上具有非常大的优势

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第8张图片

间长达 46ms,对于以 100km/h 的速度行驶的汽车, 46ms 意味着摄像头从看到障碍物,到汽车系统采取制 动措施时,车子已经开出了至少 1 .28 米的距离,而 FPGA 仅有 3毫米, 即可以等同为瞬间就能反应,省去的 这 1 .28m 的距离, 就可能减少许多碰撞事故的发生概率。 因此, 在汽车和工业这些需要确定低时延的场景,FPGA具有非常大的优势。

FPGA相比CPU,具有更高的灵活性。 在工业现场往往有许多需要细微调整, 例如, 根据传送带磨损情况对 马达进行细微的控制调整,为设备更新新的协议等等, CPU 往往难以做到, 由于 FPGA 是动态可重构的, 可以在使用现场调整,随时适应新的变化。此外, FPGA 还可以同时融合工业现场的 PLC、网关、传感器、 马达、 HMI 等设备, 实现不同设备的实时控制和通信。

3.相比GPUFPGA的时延和功耗更有优势

GPU的功耗非常高,因为其无法很好地利用片上内存,需要频繁读取片外的DRAM。尽管在吞吐量上的优 势使得 GPU 几乎垄断了深度学习领域, 但 GPU 依赖片外存储的处理流程,使其在功耗和时延上对比 FPGA 有非常大的弱势。 以英伟达的 GPU 为例, 使用 CUDA 进行训练,主要有四个步骤: 1) 将数据从 CPU 的外 部存储 (DRAM) 复制到 GPU 的存储中;2) CPU 加载(Lauch) 需要进行的计算, 即 Kernel 到 GPU 中; 3) GPU 执行 CPU 发送过来的指令;4) GPU 将结果最终存回 CPU 的 DRAM 中,再进行下一个 Kernel 的 计算。因此,CUDA 涉及了两次存储读写。而FPGA 可以将第一个 Kernel 的结果缓存到片上星罗棋布的 BRAM 中, 完全可以不需要读写外部存储就能完成整个算法。由于读取 DRAM 所消耗的能量是 SRAM 的 100 倍以 上, 是加法的 6400 倍,GPU 这一需要频繁读取 DRAM 的处理,使其功耗远高于 FPGA,而且 DRAM 的带 宽往往成为了性能的瓶颈。一片 FPGA 的典型功耗通常是 30W ~ 50W,而单片 GPU 功耗就可以高达250W ~ 400W,使得单机柜的功率密度可能高达 28kw,这对数据中心的现有的散热造成了巨大压力,往往 需要专门更改制冷和供电系统, 以适应单柜 15kw 以上的功率密度, 而 FPGA 数十瓦的功耗可以和现有数据 中心散热兼容,不需要额外改造。

9FPGA可以灵活利用片上内存,不需要像CUDA一样从DRAM来回读写数据

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第9张图片

FPGA可以灵活运用片上存储, 因此功耗远低于GPU。FPGA 完全可以不需要读 DRAM,整个算法在片上 完成。 例如, 深鉴科技利用 FPGA 做出了 ESE 的模型并在不同的处理器 (CPU/GPU/FPGA) 上运行, 发现 FPGA 上训练时长最短, 能耗最小。在能耗上, CPU Dense 耗能 11W、CPU Sparse 耗能 38W、GPU Dense 耗能 202W,这是耗能最大的一种情况、 GPU Spare 耗能 136W,相比之下 FPGA 仅需41W;在训练时延 上, FPGA 用时 82.7μs,远小于 CPU 的 6017.3μs,也仅为 GPU 训练时长的三分之一。

10FPGA仅用200MHz,就可以实现比CPU43倍、比GPU3倍的效果,而且功耗仅为GPU20%

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第10张图片

FPGA无批次 (Batch-less)“的架构, 使其在 AI推理中具有非常强的时延优势。受限于网络条件和时延, 许多决策来不及上传云端, 只能本地执行,这就是边缘计算。边缘计算通常面临时延和功耗两大约束。GPU 需要等待批次的特点,使其时延要高于 FPGA。GPU 通常需要将不同的训练样本划分成固定大小的“Batch (批次)”,为了最大化达到并行性,需要将数个 Batch 都集齐,再统一进行处理,每个 Batch 的数据一般有 近百个。这使得 GPU 在训练大型样本时非常有优势,但在做涉及小样本的推理时,这一优点成为了劣势, 因为推理通常只需要很小的输入数据,而 GPU 的架构额外引入了时延。FPGA 的架构是无批次(Batch-less) 的,可以根据数据特点确定处理方式,不需要像 GPU 一样将输入的数据划分成 Batch,因此可以做到最低的 时延,使得 FPGA 在进行 AI 推理时具有非常大的优势。

FPGA在接口灵活性上具有无可比拟的优势,特别适合工业场景。工业实质是高度分散的小批量场景, 存在 大量的非标准的接口,例如,工业的图像传感器的 LVDS 编码格式往往没有统一的标准,工程师很难找到对 应的专用芯片去对接。 GPU 的接口单一, 只有 PCIe 一种,而 FPGA 的可编程性使其能与任何的器件进行通 信,能够适应任何的标准和非标准的接口,这种硬件可编程带来的高度灵活性是 FPGA 在工业场景的优势。

目前,阻碍FPGA市场进一步扩大的原因是其较高的使用门槛,正通过HLS等工具解决。CPU 使用人员更 多是软件工程师,语言基本为 C/C++等编程语言, GPU 亦有 CUDA 等非常完善的开发框架, 而 FPGA 的使 用者更多像是硬件工程师,需要自行定义电路功能、进行时序优化等步骤,语言基本为 Verilog/VHDL 这两种硬件描述语言,需要使用者精通软件和硬件, 难度因此更大。 因此, 为了降低使用门槛,FPGA 学界和业内 合作推出了 HLS (High-level Synthesis,高层次综合) 的工具,可以通过 C/C++语言直接生成能供 FPGA 使用的 RTL 网表,跳过中间的硬件描述环节,让工程师更加专注AI 算法的开发和迭代。

11: FPGA的时延低于GPU,无批次的结构,使其在AI推理特别有优势

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第11张图片

12FPGA更适合AI推理,在低时延、非标准化的场景非常有优势

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第12张图片

4.FPGA的战略意义:AI&Space

为什么FPGA是战略芯片?我们认为, 未来科技发展有两个领域处于战略地位: 一是 AI,二是太空。AI 代 表人类更高级别的生产力工具,而太空是可供人类开发探索的广阔而未知领域。 FPGA 凭借其架构带来的时 延和功耗优势,在 AI 推理中具有非常大的优势。 同样, FPGA 独特的优势使其在航空航天领域有非常广泛的 应用。

全球地缘政治紧张下, 各国自有卫星星座需求激增, 太空活动进入新活跃期。上一个太空发射活跃期在 1957- 1977 年,美苏在太空领域展开激烈竞争,两国年平均发射活动均超 40 次。随着美苏太空竞赛结束, 20 年间太空发射数大幅回落。而在近年地缘政治紧张态势下, 各国部署自有通信卫星星座需求激增。中美两 国在近 3 年的太空发射活动剧升,仅去年全年, 中美发射次数合计占全球 76%。由于频段和低轨空间是不可 再生资源,各国的低轨卫星计划实际承担“占频保轨”的任务。随着大批的低轨卫星计划在未来 4-5 年内完成 发射组网,太空活动实际已进入新的活跃期。

13:近5年来, 在地缘政治紧张的态势下, 中美两国太空发射次数迅速增长

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第13张图片

目前, 我们看到太空活动发生了三大新变化, 背后反映的是太空不断增长的算力需求 。美国 JPL (Jet Propulsion Laboratory,喷气推进实验室) 是美国国家航空航天局 (NASA) 负责无人太空探测的机构,我 们统计了 JPL 目前的所有任务目标,发现了以下三大变化:1) 地球观测、探火活动在增加。 以地球为目标 的太空活动占比 35%, 目的主要有气象和环境观测, 构建与外太空交流的深太空网络(DSN) ,利用合成孔 径雷达对地面进行高精度观测等,主要是出于军事及科研目的;而火星相关的活动占比高达 15%,是因为火 星是与地球最相似的行星,了解火星表面的岩石、气候, 目的是了解火星在过去是否有生命存在,可以为人 类探索和开发火星做准备。

2)寻求扩大AI在太空的应用,以及宽带卫星通信的快速增长,提高了算力要求。 以观测卫星为例,地球 60%以上的面积常年被云层覆盖, 只有 10%的区域是晴空无云的状态, 以往观察卫星都是不加甄别, 将拍摄的照 片全部回传地面处理。如今, 在观察卫星上使用 AI 识别出含有云层的照片并丢弃,只回传清晰的照片, 可以 节省本就有限的星地通信的带宽。除此之外,宽带卫星通信要求卫星具备星上处理和转发数据的能力,以降 低时延,减少对地面站的依赖;

14:美国太空活动的新变化,反映出航空航天领域不断增长的算力需求

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第14张图片

3) 航天级器件的代际差在缩小,处理能力越来越接近目前最高水平。过去,航天级 FPGA 的推出时间一般晚 于对应商业级器件 3-5 年,长期落后于当时最领先的器件 1-2 个代际, 10-15 年前的 FPGA 依然在航天器上广 泛使用。然而,近两年来,我们看到 FPGA 龙头赛灵思加快了宇航级 FPGA 的推出。目前, 赛灵思最先进的 FPGA 产品是 19 年推出的 Versal (7nm),而赛灵思在 21 年初就推出了宇航级的 Versal XQR,做到了和商业级 同代际。Versal XQR 不仅逻辑单元数相比往代大幅增加,还嵌入了 AI 处理单元、高速的收发器等,大幅提高 了低轨卫星的处理能力和反应时间。

15FPGA在航天项目的参与度非常高

FPGA和CPU、GPU有什么区别?为什么越来越重要?_第15张图片

 转自:FPGA和CPU、GPU有什么区别?为什么越来越重要? - 知乎

(13 封私信 / 81 条消息) 绝对牛网络科技 - 知乎 (zhihu.com) 

你可能感兴趣的:(ISP专栏,fpga开发)