本章的要点记录如下:
运算子系统和存储子系统是设计数字电路模块时必须考虑的细节,神经网络加速器也不例外。
对于神经网络加速器来说,需要具备以下几个模块:
DMA直接存储器访问,加速器与外界交流的渠道。
Memory给运算单元提供数据,实现数据重用。
Conv神经网络中最重要的算子,运算量巨大,参数量巨大。
Pool仅次于Conv算子。
DMA模块从外部存储空间搬运数据到内部的Memory模块,Conv模块从内部Memory模块中读取数据进行卷积运算,并将结果传递给Pool模块。
Pool模块进行池化计算,并将结果给Activation模块。Activation模块计算完后将结果给Memory模块,DMA将结果写到外部空间。
算力包括很多内容,比如总面积运算、池化运算、激活函数运算、归一化运算等。带宽也是如此包括权得,输入特征图,输出特征图、中间结果,子模块之间传递。
卷积乘法阵列,这部分我觉得太复杂。包括以下内容:
Conv算法:
NVDLA的乘法阵列。
TPU乘法阵列。
GPU的乘法阵列。
华为的DaVinci乘法阵列。
池化比较简单,2*2池化过程是输出第个当中最大的。