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

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

Open
meton-robean opened this issue Oct 27, 2019 · 5 comments

Comments

@meton-robean
Copy link
Owner

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

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

Selection_015

@meton-robean
Copy link
Owner Author

meton-robean commented Oct 29, 2019

论文贡献:

1、对大规模的CNNs和DNNs最先进机器学习算法的综合硬件设计
之前的加速器将神经网络每一层一次性全部实现到了硬件上,这种做法只适合规模小的网络结构。而且可拓展性很差(改动新的网络参数或者结构发生变化那么这个加速器就用不了了)。DianNao的利用计算单元的复用来适应大规模的网络。

2、专注于优化访存的性能,着重解决”存储墙”的问题。

  • 不用cache,用sratchpad作为buffer。因为cache的数据冲突问题会带来高功耗。

  • 将输入数据split成两个独立的输入buffer。因为对于神经网络来说,输入数据和权重是两类很明显独立的数据,分开的话就不用混在一起,这样更加容易处理。考虑reuse的话,例如一个Nbin中一列输入数据Tn需要和实际中权重矩阵中多列进行相同的运算(也就是输入数据的重用),那么SB中的一列的位宽可以做的大一些(NBin一列是Tn=16宽度,也就是一列放16个输入特征; 那么SB一列可以设置成TnTn,也就是SB的一列代表权重矩阵Tn列,每列Tn个权重值,一共TnTn个数)。 从这个角度来说,将NBin和SB分开可以方便的根据reuse模式裁剪不同的位宽,如果是只用一个统一的buffer的话就做不到这点(一个buffer只能用一种位宽)。

  • NBout在输出最后结果之前,大部分时间可以用来缓存中间结果,这样中间结果先不回去memory。NBout缓存的中间结果可以回去NFU2进一步计算得到最终结果。

  • NBin和SB在DMA控制下进行preload,也就是每次计算单元取数时候数已经preload在buffer中了。

  • 三个buffer用三个DMA控制,这样方便三个buffer中各自的取数写数操作。例如在计算过程中,SB和NBin的DMA要负责 preload放数据给计算单元这两类任务。 NBout的DMA负责将中间结果wirte进NBout缓存 以及 将最终结果load回内存 这两类任务。可见DMA分开可以各自干各自事,比较灵活。

@meton-robean
Copy link
Owner Author

meton-robean commented Oct 29, 2019

重要段摘录
image

老板言:看明白这一段和下一段,你们就能明白这种buffer设计,跟采用向量寄存器的区别和优势。

???黑人问号脸

@meton-robean
Copy link
Owner Author

@meton-robean
Copy link
Owner Author

DianNao中对于loop tile 和对应硬件的映射

Selection_043
Selection_041
Selection_042

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