AI芯片:指令集架构处理器Diannao分析

DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning

一、早期类脑架构(直接映射方案)

  如图1所示,ASIC芯片最早的设计思路是将神经元和突触直接平铺到硬件芯片上,神经元映射为逻辑单元,突触映射为锁存器或者RAM。这种设计方法最早可以追溯到1900s的Intel ETANN芯片(浅层神经网络硬件处理器)。这种神经形态架构可以在保持低功耗和紧凑尺寸的基础上,实现一个类脑架构,使得ASIC芯片可以应用于计算密集型,实时性要求高的实际任务。类脑架构与传统的冯诺依曼结构相比,能够将计算(神经元)和存储(突触)紧耦合在一起。这使得芯片能够以自然并行和事件驱动的方式实现高效的扇出(通信),从而达到超低功耗。
  目前小规模的网络可以采用上述直接映射的方法,能够实现高速低功耗的目标。但是如果采用上述方法实现大规模网络,是不可接受的。如图2所示,当并行乘法单元为16*16时,芯片面积小于0.71mm2;当并行乘法单元为32*32时,芯片面积为2.66mm2。如果按照上述方法实现一个并行乘法单元为1024*1024的硬件单元时,会使得能耗,芯片面积大幅提升。这对于实际应用来说是不可接受的。

AI芯片:指令集架构处理器Diannao分析_第1张图片 AI芯片:指令集架构处理器Diannao分析_第2张图片

二、Diannao架构思路

  为了能够实现大规模深度学习网络的专用硬件执行。2014年,Diannao架构被提出了。Diannao这篇文章是率先探索机器学习加速设计的先驱文章之一,开创了专用处理器实现深度学习的先河。Diannnao这篇文章在65nm工艺,0.98Ghz的频率,面积为3.02mm2的ASIC芯片上针对机器学习算法(DNN,CNN)实现了一个高性能的Diannao处理器架构,相比于128bit 2GHz的4发射SIMD处理器,达到了117.87x的加速比,21.08x能耗比。
  Diannao架构主要包含控制、计算和存储三部分。与上面直接映射的方法不同,Diannao架构中控制、计算和存储都是彼此分离的模块,模块化设计思想,可以从图4清楚的看到这一点。Diannao架构的设计很大程度上参考了CPU的设计思想,都是采用指令集控制执行的。目前深度学习网络参数量非常大,如果想要一次性将整个网络全部映射到整个芯片上执行,是不现实的。由此,Diannao架构采用了分时复用硬件单元的方法,每次执行网络一部分。

AI芯片:指令集架构处理器Diannao分析_第3张图片 AI芯片:指令集架构处理器Diannao分析_第4张图片

下面我们列举分析一下Diannao这篇文章的设计细节:
(1)网络层访存特性:文章主要分析了计算密集型的卷积层和通信密集型的全连接层优化的循环展开方法。对于控制流的专用处理器来说,这里是非常有重要的。片上缓存区一般大小为100KB~300KB之间,无法将整个网络参数全部放入。由此尽可能的复用片上缓存区的数据,减少片外访存消耗是很有意义的。
(2)NFU计算单元:NFU计算单元划分为3个阶段,NFU-1是16x16的并行乘法单元;NFU-2是大小为16x15的加法树以及用于池化层的移位器;NFU-3是激活函数处理,用线性函数拟合实现的。不同网络层的执行会进入不同阶段,例如:卷积层会进入NFU1,2,3三个阶段,池化层只需要进入NFU-2阶段执行。NFU的3个阶段在实际调度执行时,会被继续拆分为8段,以流水线形式执行,使得最终其时钟周期为1.02ns,频率为0.98GHz。
(3)专用存储设计
a 利用Scratchpad存储替代Cache存储,减少了访问冲突和复杂的匹配查找过程;
b 输入存储(NBin),权值存储(SB),输出存储(NBout)各自单独实现,方便设置独有的数据传输宽度,减少访存冲突。
c 针对输出数据,配备了的专用寄存器和临时缓存用于存储产生的临时数据。
(4)数据预取:每个存储单元配备有一个DMA和一个指令缓存FIFO。这使得计算过程和数据传输过程解耦。这里的数据预期是指只要前一条指令使用完了传输的数据,后一条指令即可开启数据传输,不需要等待前一条指令的计算完成,从而达到数据预取的效果。
(5)16bit定点数(6 for integer+10 for fractional):保证网络精度的同时,降低硬件单元消耗。
(6)指令集:这里指令集粒度与CPU的指令集粒度相当,是load,store,mul,add粒度的。

实验分析
1.加速比
  作者选取了4发射超标量128bit的SIMD处理器作为对比,该处理器理论上每个周期能执行8次16bit的定点数运算。Diannao架构每周期可以执行496次(16x16+16x15=496)16bit的定点数操作。仅仅从运算次数角度来看,Diannao相比SIMD,有496/8=62x的加速比,但实际测量时能够达到117.87x的加速比。也就是说实际加速比高于理论操作数加速比,作者将其归结于两个原因:(1)预取和重用—从大小网络层加速比实验结果分析可知,大网络层预取和重用更好。 (2)调度开销。 总结来说缓存结构设计对于Diannao性能起到了重要的作用。
2.能耗
  在能耗上,Diannao相比于SIMD处理器,节省了21.08x。虽然前面一些研究中能耗比可以节省达到500x,974x,这是因为它们没有考虑访存的能耗,仅考虑了运算单元上的能耗,间接说明片外访存能耗影响达到10x(图5是在45nm CMOS上测量的不同操作的能耗,可以看出片外访存能耗远高于运算和片上访存)。这也给未来的研究指出了一个方向。比如说在Dadiannao中,取消了片外DRAM访存过程,而是将数据全部存储在多核片上的eDRAM缓存中;在Shidiannao中,通过将处理器放置于感知采集装置附近,取消了DRAM访存过程。

AI芯片:指令集架构处理器Diannao分析_第5张图片

Finished.

你可能感兴趣的:(ASIC芯片论文阅读,芯片,深度学习)