学术咨询

让论文发表更省时、省事、省心

专用处理器比较分析

时间:2022年01月21日 分类:电子论文 次数:

摘要微处理器是现代信息系统的核心基础设施.大数据、人工智能、5G等技术的快速发展催生了数据量的爆发性增长,随之对数据处理能力的需求也急剧增长.专用计算技术被广泛认为是后摩尔时代的计算机体系结构演化的重要方向.专用处理器技术的发展一直伴生着通用处理器的发展,

  摘要微处理器是现代信息系统的核心基础设施.大数据、人工智能、5G等技术的快速发展催生了数据量的爆发性增长,随之对数据处理能力的需求也急剧增长.专用计算技术被广泛认为是后摩尔时代的计算机体系结构演化的重要方向.专用处理器技术的发展一直伴生着通用处理器的发展,数字信号处理技术甚至早于传统意义上的通用处理器.通用处理器技术的发展,不仅在商业上取得了巨大的成功,很多关键技术也被专用处理器吸收借鉴用于提升专用计算的性能、优化可编程性等.本文主要分析了数字信号处理器(DSP)、图像处理器(GPU)、深度学习处理器(AI芯片)和网络处理器(NPU)的关键技术特征,并进一步对专用计算架构未来发展可能涉及的关键点作出了简要的评述.

  关键词专用处理器,数字信号处理,图像处理,深度学习,网络处理

电子处理器

  1引言

  如果不考虑成本因素,一颗理想的处理器应该可以像CPU(centralprocessingunit)一样通用,像DSP(digitalsignalprocessor)一样处理数字信号,像GPU(graphicsprocessingunit)一样处理图像数据,像NPU(networkprocessingunit,网络处理器,也简称NP)一样处理网络数据包,像“矿机”一样竞争加密货币共识算力,像神经网络芯片一样运行深度神经网络训练和推理等.

  但是,实现如此万能的处理器芯片是不现实的,至少从经济成本角度不具备可行性,专用化就成为了发展的必然[1].专用处理器并不是通用CPU完全改弦易辙,而更像是基于通用处理器技术的一种分化.所以我们看到现代DSP、基带处理器、网络处理器的很多成功产品都包含一个甚至多个通用RISC(reducedinstructionsetcomputer)核来做系统管理、运行操作系统、与主机通信,将协处理器也变成一个具备自我管理能力的主动设备.从时间上看,DSP可能也是出现最早的计算芯片,在集成电路发明(1958年)之前,德州仪器(TI)公司已经在大批量生产硅晶体管器件.

  TI公司在1967年发明手持计算器,1971年研制了单芯片微型计算机.在此之前的“DSP”只能称为利用分立器件信号处理(processing),还不是名副其实的“processor”.DSP没有被冠名某个“PU”的称呼也许正是由于出现过早,当时“PU”的称呼还没流行起来.CPU最早出现在1971年,GPU出现在1993年(虽然当时的名称还不叫GPU),网络处理器(NPU)出现在1999年.从这些时间关系上看,我们大体可以看出人们首先是对信号处理有需求,然后才扩展到其他更普遍的数据处理需求上,因此有了对通用CPU的需求.再由于应用的驱动,CPU难以满足性能要求,进而发展出了GPU,NPU等更专用的计算芯片.

  从这个意义上看,通用CPU技术可以视为处理芯片的基本技术,在此基础上发展了高性能CPU、现代高效能DSP[2]、高吞吐GPU、高通量NPU[3]等各种“XPU”.个人认为分析这些XPU的结构特征有助于更深刻地理解“通用”和“专用”的本质差异.针对专用处理器有很多关键问题,包括:芯片在架构上有什么差异,各自具备什么样的软件生态,能否取得商业上的成功的决定性因素是什么等,而答案也莫衷一是.本文的重点是试图从架构层面去看待这些不同类别的专用处理器芯片的差异,帮助我们预测未来架构的发展趋势,对于专用处理器技术未来的发展做了些许开放性的讨论,抛砖引玉.

  其次,本文主要讨论经典专用处理器的演化,而把通用CPU的发展作为背景而暂不加以专门讨论.同时,本文主要以DSP、GPU、AI芯片和NPU(网络处理器)为主要参考对象,其中DSP以TI公司的C6000系列为主要参考,GPU以英伟达(Nvidia)公司的Tesla架构为主要参考[4],AI芯片以寒武纪的DianNao[5]深度学习处理器和Google公司的TPU(tensorprocessingunit)[6]为主要参考,NPU以迈络思(Mellanox)公司(已经被Nvidia公司收购)的NP-5和因特尔(Intel)的IXP[3]为主要参考,均为各个公司比较有代表性的产品.限于篇幅,本文尚未将新出现DPU(dataprocessingunit)[7]芯片架构纳入讨论,相关内容将作为未来工作.专用计算架构的设计难度不亚于通用CPU,核心目标就是“有条件地”高性能.

  无论是一个3W的DSP,还是一个300W的GPU,也无论是面向哪一个专用领域定制化的设计,都追求在给定的功耗、芯片面积约束下实现高性能.然而,这个问题的复杂性在于专用计算并不仅仅是设计几个运算单元,配合几条数据通路那么简单,它涉及到IO子系统、操作系统内核、网络协议栈、访问安全、虚拟化、二次开发的方便程度等层面的问题,其中任何一个层面的问题的专业性都极强,要能融汇贯通并能系统地组织起来是一个巨大的挑战.挂一漏万,本文的内容只代表笔者的观点.本文余下内容安排如下:

  第2节阐述了专用处理器的基本概念,第3∼6节分别介绍了数字信号处理器(DSP)、图形处理器(GPU)、AI芯片和网络处理器(NPU)4类重要的专用处理器的基本特征,第7节表述了笔者对于专用处理器的几点思考,据此在第8节提出了构建专用处理器系统结构的关键点,第9节总结全文.

  2专用处理器的基本概念专用处理器(或专用加速器),顾名思义,就是用于处理“特定应用”的处理器,相对于通用处理器而言,这类处理器性能更高、功耗更低、通常价格也更便宜,但是使用范围也相对有限.计算芯片产业在过去50年的发展历程中,比较成功的专用处理器门类只有数字信号处理器(DSP)、图形处理器(GPU)和网络处理器(NPU),这是20世纪90年代就已经基本定型的格局.在过去5年中,用于处理深度学习的神经网络处理器(AI芯片)也开始快速发展,比较成功的案例包括Google公司的张量处理器TPU[6]、寒武纪公司的DianNao系列深度学习处理器[5]等.

  专用处理器的最终目标不是替代通用CPU,而是与现有的通用CPU技术协作,即将部分CPU运行效率低下的应用卸载(offloading)到专用加速器上运行,通过构建异构计算平台来高效地处理计算任务.从产业生态的视角来看,相比于通用处理器的硬件与软件分离的“水平”模式,专用加速器更注重软硬协同的“垂直”发展模式.

  这里效能指的是单位功耗下提供的计算能力,适应性就是通常意义下的通用性.业界通常将数据处理芯片大体分为三大类:

  处理器芯片、ASIC(applicationspecificintegratedcircuit)芯片和FPGA(fieldprogrammablegatearray)芯片.处理器芯片包括CPU,GPU,DSP等,是用户可编程的芯片;ASIC是面向特定应用(application-specific)的专用集成电路[8],通常也称之为全定制芯片,不可编程;FPGA器件属于专用集成电路中的一种半定制电路,是可“编程”的逻辑列阵,利用查找表来实现组合逻辑,但FPGA的“编程”与处理器芯片的软件编程不同,主要是配置逻辑,可以理解为硬件编程.从相对性能来看,ASIC芯片最好,处理器芯片最差,FPGA介于二者之间;但是从应用的适应性来看,处理器芯片最好,FPGA次之,ASIC芯片最差.

  值得注意的是这种分类标准并不是按照电路制造工艺,例如处理器芯片和ASIC芯片本质上都是全定制的集成电路,处理器芯片本质也是一种ASIC,但与通常意义上ASIC的最大差别还在于是否具有指令集,有指令集的就更类似传统的处理器,反之就归类为ASIC.此外,处理器芯片由于其使用广泛、出货量大,与软件生态联系尤其紧密,所以将其独立为一个大的类别.专用处理器芯片的研发追求达到效能和适应性的一个新的帕累托最优(Paretooptimality):效能接近ASIC,但是适应性向处理器芯片靠近.

  在效能上,专用加速器通过定制化实现远高于通用处理器芯片的效能;在适应性上,从面向特定应用(application-specific)的ASIC范式进化为面向特定领域(domain-specific)的新范式,不妨称之为“DSIC(domain-specificintegratedcirucuit)”.DSIC与处理器芯片相比虽然弱化了通用性,但与ASIC相比也强化了适应性. 无论是DSP、GPU、AI芯片、NPU,还是现在更新的各种“XPU”,都是处理数据的芯片,最终都需要执行二进制代码的程序来完成计算.因此专用处理器设计也大都需要涉及如下6方面内容:

  (1)约定二进制代码的格式,即指令;(2)需要将指令变换为机器码,即汇编;(3)为了提高编程方便程度,需要将高层程序语言转换为汇编语言,即编译;(4)为了提高编程的效率,提供了各种编程环境,即集成开发环境(integrateddevelopmentenvironment,IDE);(5)充分复用高度优化的代码,即应用程序库;(6)为了方便程序调试,还需要提供各种仿真工具,即仿真器(emulator).

  所以,从系统抽象层次来看,与通用处理器几乎没有区别.但是不同的DSIC侧重点不同,有些DSIC只提供API(applicationprogramminginterface)方式的调用,例如早期的GPU,将编译、汇编等过程全都凝结在运行时库中,从用户角度看,调用过程与使用OpenCL[9]中的“内建核函数(built-inkernels)”类似,与调用普通的库函数过程相同;虽弱化的可编程性,但是强化了用户使用的便利性.但也有些DSIC,如DSP,使用了大量底层编程,虽编程难度高,但方便精确地性能调优.

  3DSP:灵活的数据格式

  DSP也许是最早出现的专用集成电路.DSP的使用范围非常广,从简单的MP3播放器到最新一代的5G通信都有使用场景.常见的DSP大多带有丰富的外设接口,例如PCIe、以太网、UART、I2C等,尤其在很多嵌入式设备中,丰富的外设接口对于提高系统的集成度、降低成本和功耗都有很大帮助,所以很多DSP产品也演变成带有丰富外设接口的SoC(systemonchip)芯片.

  但是DSP最大的特点还是进行数字信号处理的核.大多数DSP由于使用场景多为移动设备,或者只是作为CPU系统的数据输入前端,在系统中的地位并不高,通常在功耗、散热等方面都不可能给予太高容限,所以功耗敏感、计算位宽对DSP很重要,定点、浮点,半精度、单精度、双精度,16位、24位、32位、40位等各种数据格式规范“五花八门”.在寻址上,DSP对于数据对齐方式也最灵活,设置了大量专门的指令对数据进行对齐操作.TI公司是DSP芯片的龙头,被媒体评为是半导体行业利润率最高的公司.2019财年营业总收入144亿美金,税后净利润高达50亿美金,利润率高达35%.作为比较,同期Intel收入720亿美金,利润率29%;英伟达总营收110亿美金,利润率25%.TI公司的DSP主要分为3大系列:

  C2000系列,集成了AD转换、Flash存储等,主要用于控制马达、变频器等工控产品;C5000系列,16位定点,主要用于便携声音、视频、机顶盒等设备;C6000系列,采用了VLIW(verylonginstructionword)架构,每秒执行指令峰值可达百亿条,主要用于数字通信、图像增强、传输、加密解密等对性能要求更高的场景.粗略观察DSP核其实与通常的RISC核没有太多区别:都包括了取指令、指令分发、译码、寄存器读写、Load/Store、计算执行等环节,但微体系结构有非常显著的特色.例如,普通采用超长指令字(VLIW)架构、突出的浮点处理能力、指令与数据分离等,分析如下.

  3.1通过VLIW架构提高性能

  在C6000系列的DSP中,采用了超长指令字(VLIW)技术,性能的提升主要是通过引入SIMD(singleinstructionmultipledata)来实现.

  从2路16位、4路8位SIMD操作,到8路16位、4路32位向量操作.为了支持较宽的向量化操作,C66x系列DSP设置了8个功能单元、两组寄存器堆文件、两条独立数据通路;每组寄存器文件包含32个32位通用寄存器,而且可以支持8,16,32,40,64位等非常灵活的数据位宽打包存储.例如一个完整32位寄存器连同相邻寄存器的低8位存储一个40位的浮点数,同时相邻寄存器的高24位还可以用于存其他的数.乘法器支持128,40,64位数据.显然支持那么多“非标”的定点和浮点数,如何来安排寄存器的分配成为一个很有挑战的问题.

  3.2浮点乘性能突出

  功能单元的乘法计算能力极强,8个功能单元的每一个都能做到单个周期完成一条指令的执行,包括乘法(.M).单精度浮点乘在1个周期内完成,双精度浮点乘在4个周期内完成,而且可以支持不同精度的浮点数直接相乘.算术(.S)、逻辑(.L)指令用来处理算术、分支计算、逻辑运算,此外,逻辑指令还可以在两个周期内完成对复数进行90◦,270◦旋转操作,计算复数共轭等操作.作为比较,2006年Sparc-T1处理器的浮点单元(floatingpointunit,FPU)执行一个单精度乘需要7个时钟周期.其实,乘法器的性能对于浮点性能至关重要,现在FPGA芯片为了突出计算性能,甚至把乘法器硬核的数量作为一个重要指标(FPGA中通常将其称之为DSP核).

  3.3指令缓存和程序缓存分离

  将指令与数据分离也就是著名的“哈佛结构”,一级程序缓存(L1P)采用直接映射,一级数据缓存(L1D)采用多路组相连.这样导致了缓存替换策略的不同,L1P采用新缓存行替换同一位置的旧缓存行,采用读–分配(read-allocate)策略.相较而言,L1D复杂的多,采用了最近最少使用(leastrecentlyused,LRU)替换策略和回写(writeback)机制:当数据被更新时,并不立即更新相应的缓存位置和存储器地址,而只做“dirty”标记,只有数据被替换出缓存,或者手动启动一致性操作指令,或出现长距离访问(此时所有高速缓存的局部性都极有可能被破坏),才会写回到存储器.

  这也说明指令的局部性是比数据的局部性显著得多,而且对于核而言,指令缓存是只读的,而数据缓存可读可写,从这个意义上看,将二者分开也是有好处的.此外,DSP的缓存还支持很多先进的管理功能,例如强制冻结模式(freezemode),可以防止中断程序破坏已经建立在缓存中的数据局部性,降低中断恢复后“冷启动”性能开销.这些操作也全都由程序员来完成.

  3.4硬件指令支持一致性管理

  多核并不是CPU的“专利”,C6000系列也提供多核的DSP,由于多核引入会导致数据一致性的问题,C66x系列DSP也提供了栅栏指令(MFENCE)来处理缓存回写,强制或阻止一致性操作的执行等,方便程序员管理数据一致性.

  3.5硬件化的带宽管理防止运行阻塞

  DSP核中还设置了硬件化带宽管理,负责管理一级数据缓存(L1D)、一级程序缓存(L1P)、二级缓存(L2)、寄存器配置总线等4类资源的访问优先级.访问发起方包括DSP、外部DMA(enhanceddirectmemoryaccess,EDMA)、内部DMA(internaldirectmemoryaccess,IDMA)、数据一致性操作.管理按照每次访问授予优先级,而不是按照访问类型固定优先级,通过设置竞争强度计数器来反映对资源的“饥渴”程度,即便是最低优先级的访问,随着等待时间增加,优先级就会逐渐升高,当达到最长等待周期数,就会强制授予一次访问.

  而这些都是硬件管理的,程序员只能设置最长等待时间,不能设置竞争计数器.这样的硬件化维护资源公平性的设置在CPU中并不常见.由以上分析可以看出,DSP作为一类典型的专用处理器,其结构与数字信号处理需要丰富的IO接口便于集成,强大的浮点处理能力支持高带宽的信号处理,还提供了丰富的底层数据通路的控制手段方便专业用户的性能调优.

  4GPU:数据并行的典型代表

  GPU是专为图形(graphic)处理设计的专用处理器.随着多媒体可视化需求的爆发,传统的CPU是无法应对每秒动辄数百兆的视频渲染等任务.高清图像、视频数据天然具备数据并行的特征,可以通过高度的并行性来同时计算像素块中所有像素的色度、亮度等数据.之所以经典,是因为从这一代架构开始,GPU开始朝着通用GPU(即GPGPU)发展,为后续GPU在深度学习领域的广泛应用奠定了基础.

  4.1采用了单指令多线程(SIMT)的结构

  单指令多线程(singleinstructionmultiplethread,SIMT)是英伟达针对其GPGPU提出来的一种处理器执行模型,与传统的单指令多数据(SIMD)略有差别.SIMT具备了动态调度机制,每个线程(thread)都可以独立处理分支,而SIMD更像VLIW,需要软件来管理批量取数(batchload)和分支.其实这点灵活性给GPU的优化带来了很多麻烦,之所以要使每个线程都可以独立分支,本质是为了更好地服务于通用GPU(即GPGPU).因为在图像处理之外的计算负载很少能找到能同时成千上万个同构的线程,否者直接采用SIMD就满足要求了.

  但是为了控制管理这些线程的复杂度,GPU将这些线程组织成群(在英伟达公司的GPU技术里称之为Warp,在AMD公司的GPU体系中称之为Wavefront,若无特殊说明,后文均以Warp为例),调度是以Warp为单位,这就意味着同一个Warp中的线程必须以分支范围为界,所有分支必须在同步前汇合(converge),这就很容易导致其他线程等待而不能充分利用GPU的运算资源.这在运行控制密集型负载时负面影响尤为突出.为了降低由于同一Warp内某些线程分叉(diverge)带来的同步开销,在Tesla架构下,每个Warp的大小被限制在32线程,只有上代产品的一半.

  4.2GPU对于AI的支持

  由AI以及渲染需求带来的GPU架构变化,以NVIDIAAmpere架构和AMDRDNA/CDNA为例.首先,支持多精度/混合精度训练.大多数深度学习模型使用32位单精度浮点数(FP32)进行训练,而混合精度训练的方法则通过如16位浮点数(FP16)进行深度学习模型训练,从而减少了训练深度学习模型所需的内存.同时由于FP16运算比FP32运算更快,进一步提高了硬件效率.AMD设计“matrixfusedmultiply-add”指令集进行混合精度计算,支持8位整型(INT8)、16位半精度浮点FP(FP16)、16位“brain”FP(BF16)和32位单精度浮点(FP32).NVIDIAAmpere架构进一步提升了FP32的计算速度,GeForceRTX3090实现35TFLOPS(采用FP32),是其上一代Turing的两倍.其次,引入新的计算资源.NVIDIAAmpere架构包括:

  可编程的shadingcores(由NVIDIACUDAcore组成),新一代raytracingcore(RTcore)用于加速光线追踪时的boundingvolumehierarchy(BVH)遍历,以及场景划分.其中tensorcores用于提升神经网络的计算和推理性能.AMD的RDNA架构最主要的核心改动就是将原先的矢量集架构改成了标量集架构.之前AMD的Wavefront是64个线程,这一代的架构改成了32个线程.这一点与Tesla架构采用32线程的Warp设置是一致的.采用32个线程的配置的优点是可以减少Warp内分支的性能开销,单个Warp也只需要更少的寄存器,同等的硬件资源可以支持更多的Warp(wavefront),从而有效地提高吞吐量和隐藏延迟.

  4.3现场调度做到

  “零开销(zero-overhead)”传统意义上线程的调度涉及保护现场、上下文切换、指令重新载入等环节,通常来看线程的调度会破坏缓存内数据的局部性,导致缓存缺失率的上升,而且现场状态保存等也需要消耗时间,所以理论上看是不可能零开销的.但是GPU中线程由于量级很轻,同一个Warp内的线程调度并不需要换入、换出现场的状态(主要是寄存器内容),所以可以做到近似零开销.在Tesla架构下,Warp是调度的最小单位,指令的调度也就是Warp的调度,在Warp间调度开销也很低.

  每个Warp由32个执行同一指令的线程组成,每一个线程(thread)都有自己的寄存器状态,独立判断分支的状态执行,由于分支决策依赖于数据,所以同一个Warp中的不同的线程可能会“分道扬镳”(diverge),同一个Warp中的线程通过Barrier来同步,只需要执行一条流式多处理器(streamingmultiprocessor)指令.每一条线程从创建、调度、同步的效率都很高.具体的调度机制采用记分板机制来实现,调度的优先级涉及到Warp类型、指令类型和公平性,由于涉及到技术机密,Nvidia公司没有公开更细节的内容.类似的降低指令调度开销的技术在网络处理器(NPU)里也常见到.调度做到“零开销”对于优化公平性很有帮助,不会因为计算资源轮询共享而牺牲性能.

  4.4引入特殊超越函数处理单元

  GPU中的特殊功能单元(special-functionunit,SFU)用于计算超越函数,例如倒数、平方根、幂函数、对数、三角函数等.基本方法是采用查表结合二次插值的方法来计算,做到了性能、误差和面积的平衡.性能上做到了每周期出一个结果,误差上界可控,面积远小于单纯的查表方案.GPU中的SFU和现在流行的神经网络处理器里用到的“Sigmoid”函数有类似的地方,SFU中的计算方法用来处理Sigmoid计算是足够用的.此外,之所以现在GPU被广泛应用于神经网络计算并不单纯因为性能高,而是GPU中的流式处理器(streamingmultiprocessor)的结构与神经网络的矩阵–向量–Sigmoid的操作比较匹配.

  5AI加速器:大规模张量处理

  随着深度学习算法效果在图像处理中取得突破,深度学习在越来越多的应用领域被应用.在过去5年中,用于处理深度学习的神经网络处理器(AI芯片)快速发展,其中比较成功的案例包括寒武纪的DianNao系列深度学习处理器[5]、Google的张量处理器TPU[6] 等.AI加速器大多针对机器学习中张量运算展开加速,多基于SIMD方式实现,单条指令通常可以完成一个矩阵的乘法运算,因此也称为张量处理器.除了张量处理之外,还会伴有一些激活函数处理等非线性操作,运算量相对较小,实现起来也相对简单.此类加速器重在张量处理,控制相对简单,通常不会集成通用处理核.

  6NPU:为网络数据包处理而生

  计算机网络是计算机系统发展过程中的一个伟大发明,网络是大规模并行计算、分布式计算的必要条件.IBM于1974年发布SNA(systemnetworkarchitecture)系列网络协议,主要解决IBM的大型机与外围节点的通信问题.这些节点并不是完整的计算机,而是像用于ASCII图像显示终端的IBM-3174控制器、打印机等设备.1974年之前程序还写在纸带上,主要处理模式还是批处理;SNA引入以后,开启了事务处理的先河,把网络通信中容错任务交给了网络协议来处理,并且基于SNA后来发展出了应用程序接口(API)等概念.

  随着后续几年越来越多的设备开始采用网络来连接,不同厂商提供了不同的网络,为了解决不同网络间的互连互通(internetworkcommunication),美国标准化组织于1981年提出了经典了开放系统互连(opensystemsinterconnection,OSI)7层模型[13],这个参考模型一直沿用至今,仍未过时.网络处理器的出现是网络技术发展的必然.随着OSI模型的普及和广泛接受,在2000年前后,NPU还是学术界研究的热点领域.

  第1颗网络处理器于1999年问世,随后得到了许多半导体公司、网络设备厂商的关注,据不完全统计,前后有30余家厂商完成了500余款NPU的设计,和现在的各种“XPU”的多样性相比有过之而无不及.IBM、因特尔、思科、EZChip(于2015年被Mellanox收购)都推出了相应的系列产品,典型如Intel的IXP系列和Mellanox的NP系列网络处理器.各家NPU产品虽然各有差异,覆盖不同的协议层次,面向不同的协议内容,但是它们的结构模块具有相似性,例如都包含的模块包括通用处理器核、队列管理单元、路由管理、缓存管理、IO接口管理等.值得一提的是,最近兴起的DPU架构,有很多特征借鉴了NPU技术,特别是在对路由、交换、数据包处理的高效支持上,相关讨论将作为未来工作开展.

  6.1控制平面与数据平面相分离

  网络处理器的功能可以从控制平面和数据平面来区分.判断一个任务属于控制平面还是数据平面的一个简单的方法就是看数据包的路径:如果一个数据包需要穿过处理器,就属于数据平面,如果是由处理器发起,或者终结在某个处理器,就属于控制平面.其中数据平面的计算主要由专用计算引擎完成,而控制平面的计算主要由通用处理器核完成.不同于GPU,浮点处理性能不是网络处理器的重点,可以灵活支持OSI7层协议中不同层次的各种网络协议的高效卸载才是网络处理器比拼的焦点.

  NP-5的上一代NP-4是业界首个100Gbps电信级以太网网络处理器,到了NP-5已经把标称性能提高到了240Gbps的高度.任务优化处理器(taskoptimizedprocessor,TOP)是NP系列专用处理器的核心,是以流水线方式排列的超标量处理器.NP-1声称专为处理第2∼7层数据包而设计处理速度为10Gbps.有一个单独用于控制处理器来处理控制平面操作的接口.EZchip采用微码编程,具有用于NP-1的软件开发环境,包括汇编器、调试器和仿真器,此外还提供常用的交换、路由、分片、组包、组播、QoS等应用程序库.

  7关于专用处理器的几点思考

  对前述的DSP,GPU,AI芯片和NPU从架构特征、编程特点和性能刻画3个维度进行了比较,概述了这4类专用处理器的主要区别.分析可以看出,专用处理器的设计相比于通用CPU而言,侧重点非常不同.比如,不太强调指令集,也没过多的突出应用生态,但是非常注重极致的性能优化,注重与具体计算模式的匹配.以下是笔者关于专用处理器的本质特征的几点思考,抛砖引玉.

  7.1专用处理器的指令集架构没有最好的,只有最合适的指令级体系结构(instructionsetarchitecture,ISA)特征,通常分为CISC,RISC,VLIW三个大类,前两类大家都比较熟悉,在此略过.VLIW一直未在通用市场上取得成功,在20世纪80年代,最有名的一家希望在通用市场推广VLIW的公司应该是Multiflow,由耶鲁大学(YaleUniversity)的计算机科学家JoshFisher创立于1984年,他们在VLIW的编译优化方面做了很多研究,这家公司只生存了6年,总共只卖了一百多台VLIW机器,随后Fisher教授加入了惠普(Hewlett-Packard)公司.

  虽然公司没有成功,但对VLIW的贡献为其赢得了计算机体系结构领域最高奖Eckert-MauchlyAward.20世纪90年代正值摩尔定律飞速发展的时代,Multiflow研发的VLIW处理器的性能一直跟不上RISC和CISC的微处理器,最后被淘汰出局.即便是Intel和惠普提出安腾(Itanium)架构,即IA-64系列,又发起了VLIW的尝试.

  第1颗IA-64架构的处理器发布于1999年,虽然与X86师出同门,但仍未动摇到RISC的ARM和CISC的X86的市场地位,2017年安腾彻底退出历史舞台.VLIW处理器优势使得控制结构大幅消减,提升了单位面积的有效计算的密度,功耗效率也得到了提升,但与CISC和RISC相比最大的差异是编译依赖.VLIW的性能对编译优化极其敏感,将开发指令集并行(instructionlevelparallelism,ILP)的责任交由编译器来完成,不仅导致编译器的复杂度大大提高,而且还带来了一系列兼容性的问题:VLIW的代码都有很强的机器依赖(machinedependence),更新代际的机器执行之前的代码并不会获得性能的明显提升.

  此外,理论性能与实际性能的落差过大始终是VLIW绕不过去的坎,这也许是VLIW未获得广泛市场认可的重要原因.然而,如果把VLIW的目标范围缩小到仅仅是数字信号处理的范畴,对编译优化的要求也会随之降低,这就有可能在一个可接受的编译优化复杂度下,比较充分地利用VLIW架构的计算资源.TI的C6000系列DSP已经用事实证明了这一技术路线的可行性.所以,脱离了实际的应用范畴谈体系结构的优劣都很容易“刻舟求剑”.VLIW没有成功代替X86,并不能说明VLIW就是失败的;X86服务器出货量占到了所有通用服务器出货量的90%以上,也不能证伪其他技术存在的合理性.

  8讨论:构建专用处理器系统结构的几个关键点

  专用处理器与通用处理器是处理器发展的两个互补的方向,虽然单独一类专用处理器的市场要远小于通用处理器,但是多类专用处理器的市场总和将远远大于通用处理器的市场.而且,专用处理器的发展将会在很多增量的应用市场中占有绝对的性能优势,且受到通用计算的生态限制更少,有利于专用架构逐步扩展去覆盖更长尾端的应用.在过去处理器芯片发展的60年里,前50年都是通用处理器的发展以绝对优势占据了处理器芯片的市场份额,相信在接下来的30年,随着数据的爆发和“端、边、云一体”这种计算范式的继续渗透,将形成通用处理器与专用处理器并行的新局面,在2020年7月的CommunicationsoftheACM中,有一篇文章提出了一个新概念:“ASICclouds”,全文标题是“ASICclouds:specializingthedatacenterforplanet-scaleapplications”[8],这里的“ASIC”就是各种专用处理器的呈现形式,我们相信专用处理器将迎来空前的增长机遇.

  9结论

  采用专用处理器芯片是计算系统提升算力、提高效率的有效手段,业界对于“XPU”概念的广泛关注反映了人们对新型计算芯片期望.本文以经典的数字信号处理器DSP、图形处理器GPU、AI芯片、网络处理器(NPU)作为案例,以这4类专用处理器的结构特征为分析重点,总结得出DSP最重要的结构特征是支持灵活的数据格式,能效比优化极致;GPU是充分利用数据并行的典型,并且正在朝着通用化的方向发展;AI芯片围绕大规模张量处理,支持可变精度来优化性能;NPU聚焦网络数据包处理,构造高通量的流水线.

  笔者发现一些在通用CPU中没有得到成功发展的技术,如VLIW,在专用处理器中发挥了重要作用;而通用处理器体系下最重要维度,如指令系统,在专用处理器中反而被弱化了.这些差异进一步引发了笔者从经典体系结构的角度对专用处理器的几点思考.最后,本文讨论构建专用处理器系统结构的4个关键点:即针对数据平面的架构,融合新存储、传输、封装等新技术,面向领域专用语言和充分利用好“专用”这个特征来简化系统设计.

  参考文献

  1HennessyJL,PattersonDA.Anewgoldenageforcomputerarchitecture.CommunACM,2019,62:48–60

  2WalravensC,DehaeneW.Low-powerdigitalsignalprocessorarchitectureforwirelesssensornodes.IEEETransVLSISyst,2014,22:313–321

  3GeorgeL,BlumeM.TamingtheIXPnetworkprocessor.SIGPLANNot,2003,38:26–37

  4LindholmE,NickollsJ,ObermanS,etal.NVIDIATesla:aunifiedgraphicsandcomputingarchitecture.IEEEMicro,2008,28:39–55

  5ChenTS,DuZD,SunNH,etal.DianNao:asmall-footprinthigh-throughputacceleratorforubiquitousmachinelearning.SIGARCHComputArchitNews,2014,42:269–284

  6JouppiNP,YoungC,PatilN,etal.In-datacenterperformanceanalysisofatensorprocessingunit.In:Proceedingsofthe44thAnnualInternationalSymposiumonComputerArchitecture(ISCA),2017

  7YanGH,LuWY,LiXW,etal.DPU:data-centricdomain-specificprocessor.CommunCCF,2021,17:51–56[鄢贵海,卢文岩,李晓维,等.DPU:以数据为中心的专用处理器.中国计算机学会通讯,2021,17:51–56]

  8TaylorMB,VegaL,KhazraeeM,etal.ASICclouds:specializingthedatacenterforplanet-scaleapplications.CommunACM,2020,63:103–109

  9StoneJE,GoharaD,ShiG.OpenCL:aparallelprogrammingstandardforheterogeneouscomputingsystems.ComputSciEng,2010,12:66–73

  作者:鄢贵海*,卢文岩,李晓维,孙凝晖