AI芯片学习小结1-DianNao

AI芯片学习小结1-DianNao

文章:DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning
发表时间:2014

由于现有的AI加速器大多都专注于计算部分的硬件优化,但是却没有在内存的吞吐量以及能耗比方面进行太多优化。因此本文提出了一种新的专注于大规模深度学习算法的芯片架构DianNao。与其他已有的芯片相比,在相同尺寸下DianNao具有更高的吞吐量以及更低的能耗;并且其主要针对内存方面进行优化,而非计算部分。
为了实现更低的能耗,DianNao充分使用了数据复用的优势。以下为数据复用的机会:

卷积层:
  1. 滑动窗口在特征图上滑动后与上一次的数据重叠部分。
  2. 相同的输入特征图在不同被滤波器处理。
  3. 相同的滤波器将在同一组输入特征图上进行滤波·。
全连接层:
  1. 对于每一个输入神经元,在计算N个输出神经元值的时候其最多会被复用N次。
  2. 全连接层之间的权值保持不变。

硬件实现上图为神经网络的完整硬件实现。但是如果需要处理大规模的具有大量参数的神经网络,由于布线复杂以及需要保存所有的网络参数,这样的硬件结构将会使用占用很大的面积。为了解决这个问题,专注于解决大规模神经网络的芯片结构DianNao便应运而生。
在这里插入图片描述
上图即为DianNao的架构示意图。其中NBin代表input buffer for input neurons,NBout代表output buffer for output neurons,SB代表buffer for synaptic weights。中间的淡蓝色方块部分为NFU(Neural Functional Unit),是整个架构中负责计算的部分。NFU的核心设计思想是将输入神经元和输出神经元分块处理。在这里我们引用evolone博主在他的文章AI芯片:寒武纪NPU设计分析(DianNao)的评论回复来更好理解NFU的工作方式。

可以看到,NBin的TN代表一次输入数据有TN个,这个指的是输入图像数据;这个TN指的是一组输入数据由TN个数据组成,比如卷积是3X3,那么就有9个数据,此时,TN就是9,在实际的DianNao中,这个TN是16。
SB的TN×TN,代表一次输入TN×TN个数据,这个指的是权重。第一个TN可以表示一组输入数据由TN个数据组成,比如卷积是3X3,那么就有9个数据,此时,TN就是9,在实际的DianNao中,这个TN是16。第二个TN表示,一次可处理TN组数据,在DianNao中,实际一次可处理16组数据,故这个TN是16。
所以,可以看出,同一份输入图像数据,会和TN组不同的权重同时进行卷积等计算。 也就是说,复用了输入的图像数据。

文章接下来分析了将SRAM拆分成三块的优势:

  1. 可以依据不同SRAM的功能需要为其分配不同的内存大小。
  2. 可以在保证小的储存单元尺寸以及高速读写的同时,降低缓存之间的关联度从而减少能耗并降低成本。出于能耗以及能量损失的考虑,我们希望储存器的尺寸尽可能小,但由于同时需要高速的缓存,所以需要提高关联度;然而高关联度会带来更高的能耗,因此用提高关联度的方式来保证储存器的较小尺寸和高速读写的方法不可取。

DianNao所使用的dataflow属于NLR类型。这里我们引用了一段Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks中对NLR dataflow的定义来解释说明何为NLR:

Definition: The NLR dataflow has two major characteristics: (1) it does not exploit data reuse at the RF level, and (2) it uses inter-PE communication for ifmap reuse and psum accumulation.
Processing: NLR divides the PE array into groups of PEs. PEs within the same group read the same ifmap pixel but with different filter weights from the same input channel. Different PE groups read ifmap pixels and filter weights from different input channels. The generated psums are accumulated across PE groups in the whole array.
Hardware Usage: There is no RF storage required by the NLR dataflow. Since the PE array is simply composed of ALU datapaths, it leaves a large area for the global buffer, which is used to store psums as well as input data for reuse.

简单来说,NLR dataflow就是在PE单元中没有用于特别设置寄存器来储存及复用数据,而是使用了Global Buffer来储存数据。在DianNao架构中,有一个专门用于存储psum的寄存器被放置在了NFU-2中,这是因为考虑到当输入数据被从NBin中加载到NFU并被计算出中间和之后,如果让这些psum从pipeline脱离然后再次被发送回pipeline中参与运算是极其低效且耗能的;而如果这些psum被保存在了NFU-2的寄存器中,则它们直接被保存而不用经过耗能的传输。接着,当复用所有的NBin中的输入神经元去计算下一组输出神经元时,这些psum将会被发送到NBout中而非NBin中,这样可以减少数据传输带来的能耗;同时,在实际测试中研究人员发现当部分和没有被全部计算出来后并被整合到输出神经元上时,NBout储存器是闲置的;因此将NBout作为psum的临时存储器与其用于存储输出神经元的数值并不冲突。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值