Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ShiDianNao: Shifting vision processing closer to the sensor(ISCA15) #12

Open
meton-robean opened this issue Nov 10, 2019 · 6 comments
Open

Comments

@meton-robean
Copy link
Owner

meton-robean commented Nov 10, 2019

ShiDianNao: Shifting vision processing closer to the sensor

这篇论文在创新方面比不上 Diannao , Cambricon等等, 但是相对于之前论文,他在加速器设计细节上讲的非常详细!!

Repository owner locked and limited conversation to collaborators Nov 10, 2019
@meton-robean
Copy link
Owner Author

Selection_084
Selection_085

@meton-robean
Copy link
Owner Author

1. 片上缓存设计原理

根据CNN计算任务的特点(一组input neurons通过一层数学计算,生成一组output neurons),设计了三类SRAM存储:
NBin:存取input neurons。
NBout:存放输出output neurons。
SB:存放完整的模型参数。
在这三类存储中,SB要求能够hold住模型的全部参数,而NBin/NBout要求能够hold住神经网络一个layer的完整input/output neurons。原因是因为,模型参数会被反复使用,所以需要放在SRAM里以减少从DRAM里加载模型参数的时间开销,而作为CNN模型输入数据的一张特定的图片/视频帧的raw data被模型处理完毕后不会被反复使用,所以只需要确保每个神经层计算过程中所需的input/output neurons都hold在SRAM里,就足以满足性能要求。

作者:杨军
链接:https://www.zhihu.com/question/41216802/answer/124409366
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

@meton-robean
Copy link
Owner Author

meton-robean commented Nov 10, 2019

2. NFU的PE阵列设计里,值得一提的是对Inter-PE data propagation的支持。

Selection_086

一个NFU(Neural Functional Unit),这是一个由若干个PE组成的计算阵列。每个PE内部由一个乘法器、一个加法器、若干个寄存器、两组用于在PE阵列水平/垂直方向进行数据交互的FIFO以及一些辅助的控制逻辑组成

NFU的计算结果会输出到一个ALU,通过ALU最终写入到NBOut里。ALU里实现了一些并行度要求不那么高的运算支持,比如average pooling会用到的除法操作,以及非线性激活函数的硬件实现等。其中非线性激活函数的实现,使用了分段函数进行插值近似[8],以求在精度损失较小的情况下,获取功耗和性能的收益。

引入这层支持的考虑是减少NFU与SRAM的数据通讯量。我们回顾一下卷积层Feature Map的计算细节,会注意到同一个feature map里不同的output neuron,在stride没有超过kernel size的前提下,其输入数据存在一定的overlap,这实际上就是Inter-PE data propagation的引入动机,通过将不同的output neuron之间overlap的那部分input neuron直接在PE之间进行传播,从而减少访问SRAM的频次,可以在性能和功耗上都获得一定的收益。这个收益,会随着卷积核尺寸的增加而变得更加明显。

作者:杨军
链接:https://www.zhihu.com/question/41216802/answer/124409366
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

论文中例子:
Selection_088

从图中可以看的出, 一个PE算的是一个3*3卷积的最终结果,也就是一系列乘加运算结果。这里例子有四个PE,所以最后四个PE的结果是那四种不同颜色区域的四个卷积运算结果。 这种方式和TPU中的脉动整列中的PE类似,算的都是一系列乘加运算的结果,而不是四个PE算四个乘法,最后将其中三个PE的乘法结果累加到一个PE上

@meton-robean
Copy link
Owner Author

3. buffer controler 提供多种模式的数据访问

Selection_087

(a)/(b)/(e)模式主要用于为卷积层提供数据读取,读取的每个input neuron会对应于一个output neuron(注意:在ShiDianNao里,这些已经通过Buffer Controller读取到PE中作为输入的input neuron接下来会通过Inter-PE data propagation的机制进行传递,从而节省了SRAM的访问带宽),其中(e)对应于卷积核step size > 1的情形。(d)对应于全连接层,读取一个input neuron,会用作多个output neuron的输入。

@meton-robean
Copy link
Owner Author

4.结合神经网络不同层功能分类,提出两层状态机twolevel Hierarchical Finite State Machine (HFSM)

Selection_089

  1. 每一个一级状态 需要一条61-bits的指令在制定, 这一条指令携带了控制信号了必要参数信息,译码执行后会变成多个cycles来执行其对应的二级状态间的跳转。

  2. 一次神经网络训练需要在多次一级状态间仿佛跳转很多次

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant