深入理解CPU和异构计算芯片(GPU/FPGA/ASIC)

热度53票  浏览1196次 【共0条评论】【我要评论 时间:2017年10月24日 17:38

一、异构计算:WHY


  明明CPU用的好好的,为什么我们要考虑异构计算芯片呢?



  随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS加密等各类应用对计算的需求已远远超出了传统CPU处理器的能力所及。


  历史上,受益于半导体技术的持续演进,计算机体系结构的吞吐量和系统性能不断提高,处理器的性能每18个月就能翻倍(众所周知的“摩尔定律”),使得处理器的性能可以满足应用软件的需求。但是,近几年半导体技术改进达到了物理极限,电路越来越复杂,每一个设计的开发成本高达数百万美元,数十亿美元才能形成新产品投产能力。2016年3月24日,英特尔宣布正式停用“Tick-Tock”处理器研发模式,未来研发周期将从两年周期向三年期转变。至此,摩尔定律对英特尔几近失效。


  一方面处理器性能再无法按照摩尔定律进行增长,另一方面数据增长对计算性能要求超过了按“摩尔定律”增长的速度。处理器本身无法满足高性能计算(HPC:High PerformanceCompute)应用软件的性能需求,导致需求和性能之间出现了缺口(参见图1)。


  一种解决方法是通过硬件加速,采用专用协处理器的异构计算方式来提升处理性能。


图1 计算需求和计算能力的缺口发展形式


二、异构计算:STANDARDS


  通常我们在为业务提供解决方案的时候,部署平台会有四种选择CPU、GPU、FPGA、ASIC。那有什么标准来评判计算平台的优劣呢?


我是法官,标准我说了算


  当今理想的协处理器应该是基于硬件的设计,具备三种基本能力。第一是设计能够提供专门的硬件加速实现各种应用中需要的关键处理功能。其次是协处理器设计在性能上非常灵活,使用流水线和并行结构,跟上算法更新以及性能的需求变化。最后,协处理器能够为主处理器和系统存储器提供宽带、低延迟接口。


  除了硬件要求以外,理想的协处理器还应该满足HPC市场的“4P”要求:性能(performance)、效能(productivity)、功耗(power)和价格(price)。


  HPC市场对性能的最低要求是全面加速实现算法,而不仅仅是某一步骤,并能够加速实现整个应用软件。


  效能需求来自最终用户。在现有的计算机系统中,协处理器必须安装起来很方便,提供简单的方法来配置系统,加速实现现有的应用软件。


  HPC市场的功耗需求来自计算系统安装和使用上的功耗限制。对于大部分用户,能够提供给计算机的空间有限。计算系统的功耗越小,那么可以采取更少的散热措施来保持计算机不会过热。因此,低功耗协处理器不但能够为计算系统提供更低的运转成本,而且还提高了计算系统的空间利用率。


  价格因素在HPC市场上显得越来越重要。十几年前,某些应用软件对性能的需求超出了单个处理器能力范围,这促使人们采用专用体系结构,例如密集并行处理(MPP)和对称多处理(SMP)等。然而,这类系统要求使用定制处理器单元和专用数据通路,开发和编程都非常昂贵。


  现在的HPC市场抛弃了如此昂贵的方法,而是采用性价比更高的集群计算方法。集群计算采用商用标准体系结构,例如Intel和AMD;采用工业标准互联,例如万兆以太网和InfiniBand;采用标准程序语言,例如运行在低成本Linux操作系统上的C语言等。当今的协 处理器设计必须能够平滑集成到商用集群计算环境中,其成本和在集群中加入另一个节点 大致相当。


  了解了基本的评判标准之后,我们以当今最火的深度学习为例,从芯片架构、计算性能、功耗、开发难度几个方面来对几种不同的芯片进行分析对比。



三、异构计算:WHICH


1、芯片特性


  对常用的处理器芯片进行分类,有一个明显的特点:CPU&GPU需要软件支持,而FPGA&ASIC则是软硬件一体的架构,软件就是硬件。这个特点是处理器芯片中最重要的一个特征。


图2 处理器芯片对比


  图2可以从两个角度来说明:从ASIC->CPU的方向,沿着这个方向芯片的易用性越来越强,CPU&GPU的编程需要编译系统的支持,编译系统的作用是把高级软件语言翻译成机器可以识别的指令(也叫机器语言)。高级语言带来了极大的便利性和易用性,因此用CPU&GPU实现同等功能的软件开发周期要远低于FPGA&ASIC芯片。沿着CPU->ASIC的方向,芯片中晶体管的效率越来越高。因为FPGA&ASIC等芯片实现的算法直接用晶体管门电路实现,比起指令系统,算法直接建筑在物理结构之上,没有中间层次,因此晶体管的效率最高。


  本质上软件的操作对象是指令,而CPU&GPU则扮演高速执行指令的角色。指令的存在将程序执行变成了软件和硬件两部分,指令的存在也决定了各种处理器芯片的一些完全不同的特点以及各自的优劣势。


  FPGA&ASIC等芯片的功能是固定的,它们实现的算法直接用门电路实现,因此FPGA&ASIC编程就是用门电路实现算法的过程,软件完成意味着门电路的组织形式已经确定了,从这个意义上,FPGA&ASIC的软件就是硬件,软件就决定了硬件的组织形式。软硬件一体化的特点决定了FPGA&ASIC设计中极端重要的资源利用率特征。利用率指用门电路实现算法的过程中,算法对处理器芯片所拥有的门电路资源的占用情况。如果算法比较庞大,可能出现门电路资源不够用或者虽然电路资源够用,但实际布线困难无法进行的情况。


  存在指令系统的处理器芯片CPU&GPU不存在利用率的情况。它们执行指令的过程是不断从存储器读入指令,然后由执行器执行。由于存储器相对于每条指令所占用的空间几乎是无限的,即使算法再庞大也不存在存储器空间不够,无法把算法读入的情况。而且计算机系统还可以外挂硬盘等扩展存储,通过把暂时不执行的算法切换到硬盘保存更增加了指令存储的空间。


2、芯片计算性能


  深度学习的学名又叫深层神经网络(DeepNeural Networks),是从人工神经网络(Artificial Neural Networks)模型发展而来。我们以深度学习作为切入点来分析各个芯片的性能。图3是神经网络的基本结构,模型中每一层的大量计算是上一层的输出结果和其对应的权重值这两个矩阵的乘法运算。


图3 神经网络基本结构


  横向对比CPU,GPU,FPGA,ASIC计算能力,实际对比的是:


1、硬件芯片的乘加计算能力。


2、为什么有这样乘加计算能力?


3、是否可以充分发挥硬件芯片的乘加计算能力?


  带着这三个问题,我们进行硬件芯片的计算能力对比。


CPU计算能力分析


  这里CPU计算能力用Intel的Haswell架构进行分析,Haswell架构上计算单元有2个FMA(fused multiply-add),每个FMA可以对256bit数据在一个时钟周期中做一次乘运算和一次加运算,所以对应32bit单精度浮点计算能力为:


(256bit/32bit)* 2(FMA) * 2(乘和加) = 32 SP FLOPs/cycle,即每个时钟周期可以做32个单精度浮点计算。


  CPU峰值浮点计算性能 = CPU核数 * CPU频率 * 每周期执行的浮点操作数。已Intel的CPU型号E5-2620V3来计算峰值计算能力为 =6(CPU核数) * 2.4GHz(CPU频率) * 32 SP FLOPs/cycle = 460.8 GFLOPs/s 即每秒460G峰值浮点计算能力。


  CPU芯片结构是否可以充分发挥浮点计算能力?CPU的指令执行过程是:取指令 -> 指令译码 -> 指令执行,只有在指令执行的时候,计算单元才发挥作用,这样取指令和指令译码的两段时间,计算单元是不在工作的,如图4所示。




图4 CPU指令执行流程


  CPU为了提高指令执行的效率,在当前指令执行过程的时候,预先读取后面几条指令,使得指令流水处理,提高指令执行效率,如图5所示。指令预先读取并流水执行的前提是指令之间不具有相关性,不能一个指令的如何执行需要等到前面一个指令执行完的结果才可以获知。


图5 CPU指令流水执行


  CPU作为通用处理器,兼顾计算和控制,70%晶体管用来构建Cache 还有一部分控制单元,用来处理复杂逻辑和提高指令的执行效率,如图6所示,所以导致计算通用性强,可以处理计算复杂度高,但计算性能一般。


3_20171024174235159Nj3_20171024174235159Nj

3_20171024174235159Nj3_20171024174235159Nj

3_20171024174235159Nj3_20171024174235159Nj

3_20171024174235159Nj3_20171024174235159Nj

3_20171024174235159Nj3_20171024174235159Nj

对本篇资讯内容的质量打分:
当前平均分:-1.07 (27次打分)
【已经有26人表态】
上一篇 下一篇
查看全部回复【已有0位网友发表了看法】