搜索

发布供求信息

FPGA异构计算芯片的特性

来源:互联网

随着互联网用户的快速增长和数据量的快速扩张,数据中心的计算需求也在迅速增长。对深度学习在线预测,直播中的视频转码,图像压缩和解压缩以及HTTPS加密等计算的需求远远超过了传统CPU处理器的能力。从历史上看,由于半导体技术的不断发展,计算机体系结构的吞吐量和系统性能不断提高,处理器的性能每18个月就会翻一番(称为“摩尔定律”),从而使处理器的性能更上一层楼可以满足应用软件的需求。然而,近年来,半导体技术的改进已达到物理极限,并且电路变得越来越复杂。每种设计的开发成本为数百万美元,数十亿美元可以形成新的产品生产能力。 2016年3月24日,英特尔宣布正式暂停“Tick-Tock”处理器开发模式,未来的开发周期将从两年周期变为三年周期。在这一点上,摩尔定律几乎对英特尔无效。一方面,根据摩尔定律,处理器性能不再增长。另一方面,数据增长需要比“摩尔定律”更多的计算性能。处理器本身无法满足HPC(高性能计算)应用的性能要求,导致需求与性能之间存在差距(参见图1)。一种解决方案是通过硬件加速和使用专用协处理器的异构计算来提高处理性能。

图1用于计算需求和计算能力的差距发展形式

2.异构计算:标准通常,当我们为业务提供解决方案时,部署平台有四种选择:CPU,GPU,FPGA和ASIC。判断计算平台的优缺点有什么标准?今天理想的协处理器应该是基于硬件的设计,具有三种基本功能。首先是设计提供专门的硬件加速,以实现各种应用所需的关键处理功能。其次,协处理器设计在性能上非常灵活,使用流水线和并行结构来跟上算法更新和性能要求的变化。最后,协处理器为主处理器和系统存储器提供宽带,低延迟接口。除硬件要求外,理想的协处理器还应满足HPC市场的“4P”要求:性能,生产率,功耗和价格。 HPC市场的最低性能要求是加速算法的实施,而不仅仅是一步,并加速整个应用程序的实施。性能要求来自最终用户。在现有的计算机系统中,协处理器必须易于安装,提供了一种配置系统和加速现有应用程序实现的简便方法。 HPC市场的功率要求来自计算系统安装和使用中的功耗限制。对于大多数用户来说,计算机的可用空间有限。计算系统的功耗越低,可以减少用于防止计算机过热的热量。结果,低功率协处理器可以为计算系统提供较低的操作成本并增加计算系统的空间利用率。价格因素在HPC市场中变得越来越重要。十多年前,某些应用程序的性能要求超出了单个处理器的能力,促使采用密集并行处理(MPP)和对称多处理(SMP)等专有体系结构。然而,这样的系统需要使用定制处理器单元和专用数据路径,这些开发和编程是昂贵的。 目前的HPC市场已经放弃了这种昂贵的方法,而是采用了更具成本效益的集群计算方法。集群计算使用商业标准架构,如Intel和AMD;工业标准互连,如万兆以太网和InfiniBand;标准编程语言,例如在低成本Linux操作系统上运行的C语言。今天的协处理器设计必须能够以与向集群添加另一个节点大致相同的成本顺利地集成到商业集群计算环境中。在了解了基本标准后,我们以最流行的深度学习为例,从芯片架构,计算性能,功耗和开发难度等方面分析和比较几种不同的芯片。 3.异构计算:3.1芯片特性常用的处理器芯片是分类的。有一个明显的特征:CPU& GPU需要软件支持,而FPGA和FPGA则需要软件支持。 ASIC是一种软硬件集成架构,软件是硬件。此功能是处理器芯片最重要的功能之一。

图2处理器芯片比较

图2可以从两个角度来解释:从ASIC-> CPU的方向来看,芯片沿这个方向的易用性越来越强。 CPU和GPU的编程需要编译系统的支持。编译系统的功能是将高级软件语言翻译成机器可识别的指令(也称为机器语言)。高级语言带来了极大的便利性和易用性,因此用CPU和GPU实现等效功能的软件开发周期远低于FPGA和FPGA。 ASIC芯片。在CPU-> ASIC的方向上,芯片中晶体管的效率越来越高。由于FPGA和ASIC实现的算法直接由晶体管门实现,因此与指令系统相比,算法直接建立在物理结构上。没有中间水平,因此晶体管是最有效的。本质上,软件的操作对象是指令,而CPU和GPU则扮演高速执行指令的角色。指令的存在将程序执行分为两部分:软件和硬件。指令的存在还确定了各种处理器芯片的一些完全不同的特征及其各自的优点和缺点。 FPGA和ASIC等芯片的功能是固定的。它们实现的算法直接由门实现。因此,FPGA和ASIC编程是使用门实现算法的过程。软件完成意味着已确定门的组织。从某种意义上说,FPGA和FPGA的软件。 ASIC是硬件,软件决定了硬件的组织。硬件和软件集成的特性决定了FPGA和FPGA的极其重要的资源利用特性。 ASIC设计。利用率是指在门电路实现算法的过程中处理器芯片所拥有的门电路资源的占用率。如果算法相对较大,则可能存在门电路资源不足或者电路资源充足的情况,但是不能执行实际的布线困难。没有使用指令系统的处理器芯片CPU和GPU。它们执行指令的过程是不断从内存中读取指令,然后由执行程序执行它们。 由于存储器相对于每条指令占用的空间几乎是无限的,即使算法很大,也不存在存储空间不足并且无法读取算法的情况。此外,计算机系统还可以扩展诸如外部硬盘的存储,并且通过将临时执行的算法切换到硬盘存储器来增加指令存储空间。 ◢3.2芯片计算性能深度学习的深度学习,也称为深度神经网络,是从人工神经网络模型演变而来的。我们使用深度学习作为分析每个芯片性能的切入点。图3是神经网络的基本结构。模型中每层的大量计算是前一层输出的两个矩阵的乘法及其对应的权重值。

图3神经网络的基本结构

CPU,GPU,FPGA,ASIC计算能力的横向比较,实际比较是:1。乘以并增加硬件芯片的运算能力。 2.为什么有这样的乘法和计算能力?你能充分发挥硬件芯片的累积计算能力吗?通过这三个问题,我们比较了硬件芯片的计算能力。 ●3.2.1 CPU计算能力分析CPU的计算能力由Intel的Haswell架构进行分析。 Haswell架构上的计算单元有两个FMA(融合乘法 - 加法)。每个FMA可以在一个时钟周期内完成256位数据。乘法运算和一个加法运算,因此相应的32位单精度浮点计算能力为:(256bit/32bit)* 2(FMA)* 2(乘法和加法)=32 SP FLOPs/cycle,即每个时钟周期可以完成32次单精度浮点计算。 CPU峰值浮点计算性能=CPU核心数* CPU频率*每个周期执行的浮点操作数。英特尔的CPU型号E5-2620V3计算峰值运算功率=6(CPU核心)* 2.4GHz(CPU频率)* 32 SP FLOPs /周期=460.8 GFLOPs/s 460G峰值浮点运算能力每秒。 CPU芯片结构能否充分利用浮点计算能力? CPU的指令执行过程为:取指令 - >指令译码 - >指令执行,计算单元仅在执行指令时起作用,使得计算单元不处于指令取指和指令译码的两个阶段。工作,如图4所示。

图4 CPU指令执行流程

为了提高指令执行的效率,CPU在执行当前指令期间预先读取以下指令,从而使指令流水线化并提高指令执行效率,如图4所示。 5.指令的预读和流水线执行基于指令之间没有相关性的前提。如何执行指令不能等到执行前一条指令的结果。

图5 CPU指令流水线执行

CPU充当通用处理器,同时考虑计算和控制。 70%的晶体管用于构建Cache,一些控制单元用于处理复杂的逻辑并提高指令的执行效率。如图6所示,计算多功能性很强。处理复杂性很高,但计算性能是平均的。

图6 CPU结构

通过CPU计算性能分析,直接提高计算性能方向:增加CPU核心数,增加CPU频率,修改CPU架构,增加计算单元数FMA(融合乘法加)。在这三个方向上,直接增加CPU内核的数量具有最高的计算能力,但它会导致芯片功耗和价格的增加,因为每个物理内核中只有30%的晶体管是计算单元。增加CPU频率,改进空间有限,CPU频率过高,这将导致功耗过大和芯片过热。因此,像英特尔这样的芯片制造商正在采用多核路由,这限制了单个微处理器的频率。集成多个处理器内核以提高处理性能。修改CPU架构以增加计算单元FMA的数量。目前,英特尔根据“Tick-Tock”两年周期调整CPU架构。它从2016年开始减缓到三年,更新迭代期更长。 ●3.2.2 GPU计算能力分析GPU主要擅长类似于图像处理的并行计算,即所谓的“粗粒度并行”。图形处理计算的特征以高密度计算为特征,并且所需数据之间的相关性较小。 GPU提供大量计算单元(高达数千个计算单元)和大量高速存储器,可同时锁定许多像素。执行并行处理。图7是GPU的设计结构。 GPU设计的出发点是GPU更适合计算密集型,多并行计算。因此,GPU使用更多晶体管来计算单元,而不是CPU用于数据高速缓存和过程控制器。这种设计是因为每个数据单元在并行计算中执行相同的程序,不需要繁琐的流控制并且需要高计算能力,因此不需要大的高速缓存容量。

图7 GPU结构

GPU中的逻辑控制单元对应于多个计算单元。同时,如果计算单元完全并联,则逻辑控制不会太复杂。太复杂的逻辑控制不能发挥计算单元的并行性,例如,如果......如果......其他如果......分支计算不能提高计算单元的并行性,所以逻辑控制单元在GPU中不需要能够快速处理复杂的控件。在这里,使用Nvidia的Tesla K40分析GPU计算能力。 K40包含2,880个流处理器,它们是GPU计算单元。每个流处理器都包含一个32位单精度浮点乘法和加法单元,每个时钟周期允许两次单精度浮点计算。 GPU峰值浮点性能=流处理器数量* GPU频率*每个周期执行的浮点操作数。以K40为例,K40峰值浮点计算性能=2880(流处理器)* 745MHz * 2(乘法和加法)=4.29T FLOPs/s是每秒4.29T峰值浮点运算能力。 GPU芯片结构能否充分利用浮点计算能力? GPU与CPU相同。指令执行过程:取指令 - >指令解码 - >指令执行,计算单元仅在指令执行时有效。 GPU的逻辑控制单元比CPU简单。因此,如果指令流水线处理是为了提高指令执行效率,则处理算法本身必须具有低复杂度并且处理后的数据彼此独立,因此算法本身的串行处理将导致显着减少在GPU浮点计算能力。 ●3.2.3 FPGA计算能力分析FPGA是一种高性能,低功耗的可编程芯片,可根据客户的定制进行定制。因此,在处理海量数据时,与CPU和GPU相比,FPGA的优势在于FPGA更高效,FPGA更接近IO。 FPGA不使用指令和软件,是一种结合了软件和硬件的设备。对FPGA进行编程使用硬件描述语言,并且硬件描述语言描述的逻辑可以直接编译成晶体管电路的组合。因此,FPGA实际上直接用晶体管电路实现用户的算法,而不是通过指令系统转换。 FPGA的英文缩写名称已翻译。全名是现场可编程逻辑门阵列。这个名字揭示了FPGA的功能。它是一组逻辑门的组合,可以编程并可以重复编程。图8显示了可编程FPGA的内部原理图。

图8 FPGA内部结构图

在这里,Xilinx的V7-690T分析了FPGA的计算能力。 V7-690T包含3600个DSP(数字信号处理),DSP是FPGA的计算单元。每个DSP可以在每个时钟周期内进行2次单精度浮点计算(乘法和加法)。 FPGA峰值浮点计算性能=DSP数量* FPGA频率*每个周期执行的浮点操作数。 V7-690T运行频率已经计算为250MHz,V7-690T峰值浮点计算性能=3600(DSP数量)* 250MHz * 2(乘法和加法)=1.8T FLOPs/s是1.8T峰值浮点计算能力每秒。 FPGA芯片结构能否充分利用浮点运算能力?由于算法是自定义的,因此没有CPU和GPU指令获取和指令解码过程。根据定制算法直接修复数据流。计算单元可以在每个时钟周期执行,因此可以充分利用浮点。计算能力,计算效率高于CPU和GPU。 ●3.2.4 ASIC计算能力分析ASIC是一种特殊芯片,不同于传统的通用芯片。专为特定需求量身定制的芯片。 ASIC芯片的计算能力和计算效率可以根据算法的需要定制。因此,与通用芯片相比,ASIC具有以下优点:体积小,功耗低,计算性能高,计算效率高,芯片输出体积越大,成本越低。但缺点也很明显:算法是固定的,一旦算法改变就可能无法使用。目前,人工智能属于大爆炸时期,大量算法不断涌现。它远离算法的静止期。如何使各种算法适应ASIC专用芯片是最大的问题。如果当前的CPU和GPU架构用于适应各种算法,那么特定于ASIC的芯片就会变成像CPU和GPU这样的通用芯片,并且在性能和功耗方面没有优势。 我们来看看FPGA和ASIC之间的区别。 FPGA的基本原理是在芯片中集成大量数字电路基本门和存储器,用户可以通过在FPGA配置文件中刻录来定义这些门和存储器之间的连接。这种老化不是一次性的,也就是说,用户现在可以将FPGA配置为微控制器MCU,并且明天可以编辑配置文件以配置与音频编解码器相同的FPGA。 ASIC是ASIC。设计完成后,电路固定,无法更改。比较FPGA和ASIC就像比较乐高积木和模型。例如,如果你发现尤达大师在最近的星球大战中非常热,想要卖一个尤达大师的玩具,你会怎么做?有两种方法,一种是使用乐高积木,另一种是找工厂打开模具定制。如果你使用乐高积木,你可以在设计玩具的形状后购买一套乐高积木。如果你想找工厂打开模具,你仍然需要做很多事情来设计玩具的形状。例如,玩具的材料是否会散发气味,玩具是否会在高温下熔化等,因此使用乐高积木作为玩具所需的工作前效率找工厂进行模具制作所需的费用要少得多从乐高到上市所需的时间要快得多。 FPGA和ASIC也是如此。使用FPGA,只要编写Verilog代码,就可以使用FPGA供应商提供的工具实现硬件加速器。要设计ASIC,您需要进行大量的验证和物理设计(ESD,封装等)。时间。如果您想针对特殊场合(例如具有高可靠性要求的军事和工业应用),ASIC需要更多时间专门设计以满足需求,但使用FPGA,您可以直接购买军用级高稳定性FPGA。影响开发时间。 然而,虽然设计时间相对较短,但乐高积木制作的玩具比工厂制造的玩具(下图)更粗糙(性能较差),毕竟工厂开放是量身定制的。此外,如果出货量很大,工厂大规模生产玩具的成本将比使用乐高积木便宜得多。 FPGA和ASIC也是如此。同时,采用最佳工艺实现的ASIC加速器将比使用相同工艺FPGA的加速器快5-10倍,并且ASIC的成本将远远超过批量生产。低于FPGA解决方案。 FPGA速度快,ASIC上市缓慢,需要大量时间开发,一次性成本(光刻掩模制造成本)远远高于FPGA,但性能高于FPGA和质量后的平均成本产量低于FPGA。就目标市场而言,FPGA价格昂贵,因此它们适用于对价格不太敏感的地方,例如企业应用,军事和工业电子等。(在这些领域确实需要重新配置)。虽然ASIC由于低成本而适用于消费电子应用,并且可配置性是否是消费电子产品中的伪需求仍有待讨论。我们看到的市场情况也是如此:用于深度学习加速的FPGA主要用于企业用户。百度,微软,IBM等公司都有专门的FPGA团队来加速服务器,而FPGA解决方案启动Teradeep它的目标市场也是一台服务器。 ASIC主要针对消费类电子产品,如Movidius。由于移动终端属于消费电子领域,因此未来使用的解决方案应该是基于ASIC的。 ◢3.3平台性能和功耗比较由于芯片生产过程不同,它会对芯片的功耗和性能产生影响。这里,使用相同的过程或接近过程,ASIC芯片中没有商用芯片。谷歌的TPU也只是没有自己提供的外部信息。这里,ASIC芯片由学术论文中发表的《DianNao: A Small-Footprint High-Throughput Acceleratorfor Ubiquitous Machine-Learning》表示。从以上比较,能量消耗比:ASIC> FPGA> GPU> CPU,这种结果的根本原因:对于计算密集型算法,数据传输效率越高,计算效率越高。 ASIC和FPGA都更接近底层IO,因此计算效率高,数据移动高。然而,FPGA具有冗余晶体管和导线,并且工作频率低,因此没有ASIC功耗比。 GPU和CPU都属于通用处理器,并且都需要执行指令获取,指令解码和指令执行的过程。通过这种方式,底层IO的处理被屏蔽,从而硬件和软件被解耦,但数据被移动和操作。无法实现更高的效率,因此没有ASIC或FPGA能耗比。 GPU与CPU之间的功耗差异主要是由于CPU中的大多数晶体管用于高速缓存和控制逻辑单元,因此CPU具有冗余,用于计算密集型算法,与计算复杂度相比较低GPU。晶体管不工作,功耗低于CPU上的GPU。 4.总结和展望在处理器芯片的长期发展中,形成了一些使用和市场的特征。 CPU和CPU中有大量的开源软件和应用软件。 GPU领域。任何新技术都将首先用CPU实现算法,因此CPU编程资源丰富且易于获取,开发成本低,开发周期短。 FPGA的实现由底层硬件描述语言(如Verilog/VHDL)实现。开发人员需要深入了解FPGA的芯片特性,但其高并行性通常可以提高业务性能。与此同时,FPGA是动态的。可重新配置,在数据中心部署后,可以根据业务表单配置不同的逻辑,实现不同的硬件加速功能;例如,当前服务器上的FPGA板部署图像压缩逻辑以提供QQ服务。此时,需要扩展广告的实时预测以获得更多的FPGA计算资源。通过简单的FPGA重新配置过程,FPGA板可以转换为“新”硬件,以进行实时广告预测,非常适合批量部署。 ASIC芯片可以实现最佳性能,即高面积利用率,高速度和低功耗。然而,AISC的发展风险极大,而且有足够大的市场来保证成本价格,从研发到市场的时间很长。它不适用于深度学习CNN等算法快速迭代的领域。话虽如此,当您遇到需要异构计算芯片的业务瓶颈时,您能否根据业务特征和芯片特性选择合适的芯片?