一、2018年清华论文《An Asynchronous Energy-Efficient CNN Accelerator with Reconfigurable Architecture 》
platform:Xilinx VC707
摘要:
1.全局时钟被局部时钟替代,在时钟下形成异步流水线
2.每个计算单元全连接5*5的寄存器,保证输入数据被重复使用
3.提出集成化 卷积和池化,减少访问中间数据,减少访问片外内存
二、网络结构()
1、为了获得良好的灵活性和能源效率;一些CNN加速器采用粗粒度,动态可重构的异步加速器;
缺点:FPGA显示良好性能,但其细粒度的计算和路由资源,限制了不同的CNN能效和运行时重新配置。
2、数据和控制流在异步电路控制下运算,这不同于全局时钟驱动的同步设计,这不同于全局时钟驱动的同步设计流程。这个特性使异步电路的不同模块能够在各自理想频率下运行,在需要的时候工作或停止;时钟选通,只有在需要的时候才选通,异步逻辑,被看作一种降功耗的方法
三、计算结构(why)
Mesh Network 它是一个动态的可以不断扩展的网络架构
1、每个计算核心有25个寄存器阵列;每个计算单元包括:一个寄存器和一个乘法器;每个运算单元都能实现乘法和存储;所有的PE都是网状连接,每个PE可以从它临近单元的任意方向接受数据;全连接网络使数据重用成为可能;计算核心的数据size和通路可以根据不同模型和卷积层配置,每个PE单元可以单独工作或者一起协同工作;使用握手协议代替全局时钟确保数据流正常,由于异步握手协议的特性,当没收到请求信号时,处理单元会被关闭;因此会降低功耗;将每个乘法器结果累加,并产生请求信号,将数据发送到可配置的池化单元做下次计算
2、Bundled-data是这种机制的一个标准术语,其含义是数据和控制信号捆绑在一起,而其中控制信号则起到了在同步电路中时钟信号所起的作用;(http://www.elecfans.com/d/662787.html)采用两阶段异步握手协议,在四阶段协议中,请求和确认信号需要返回到零,而在两阶段协议中,请求和确认的每个转换都代表一个事件,两阶段在速度和功耗上胜过四阶段;当请求信号到来,产生门控并使能寄存器;
3、点击之间的延迟匹配电路(图5中未示出。使每个阶段都是自计时的,而不管。通过匹配组合逻辑的延迟来实现整个电路。
没有请求信号,异步电路将被关闭;当请求信号到达,信号fire1有效,配置数据被写到DFF1;——》中间的click电路使fire2信号有效,从其中一个方向读取输入数据存入DFF2。并同时将其作为操作数发送到乘法器;——》最终,fire3信号有效,使输入数据存入DFF3。以便相邻PE单元可以复用。
*************
Fire信号产生逻辑没搞懂(电路图没搞懂)
没搞清楚运算单元电路在计算核心框图中的位置;
*************
4、从一个核中所有PE单元的输出req信号都连接到异步Muller电路(当两个输入同时为0或者同时为1时,输出才变化成两个输入值,否则维持原输出值。) 换句话说,当所有request信号到来,Muller单元会产生下一个request信号;确保PE单元准备好乘法结果,然后池化单元开始工作;激活函数,池化方式和size根据配置信息动态修改, 最后采用256KB的ROM存储激活函数的结果,通过激活函数,输入定点数据被认为地址去寻找输出数值;因为避免了复杂计算过程,所以此方法会更快
四、卷积-池化集成计算和数据重用方法
1、在传统加速器中,卷积核需要按从左到右和从上到下的顺序读取输入数据;卷积结果必须临时存储并等待池化
2、相反,在异步电路中,使用事件驱动功能。读取输入数据的方向与每个池化结果相匹配。
3、池化时需要A、B、H、G;A,B先被存储等H,G准备;当卷积池化集成后,通过设置卷积核的移动方式,四个操作数会同时进行池化,换句话说,没有存储中间数据过程;当四个卷积后,每个池化结果将被计算;最大值池化时,最大的卷积结果将代替最小的;平均池化时,我们需要一个个求和,在求和之前已经一个个被划分了,因此最终求和结果是平均池化结果,总之,池化层的中间结果减少为0
B:数据复用
1、在两个相邻的卷积运算中,相邻的输入数据,可以复用,一次卷积,权重是固定的,只需要读入一次;所以我们选择权重不变方法,四次卷积后得到四个结果,因为这四个PE单元由Mesh网络连接,没有数据复用时,需要读取数据66.4KB,采用卷积-池化集成计算和数据重用方法,读取数据7.8 KB,降幅88%
**********
1、在oblivious算法中每个电路元件会在每一个模拟时刻进行求值。而在事件驱动算法中 电路中元件状态的改变被记录下来 并且在给定的模拟时刻只有这些元件
<