记录 FPGA加速器设计CNN(论文笔记)

这篇博客探讨了基于FPGA的CNN加速器设计,重点关注异步能量效率和数据重用策略。文章介绍了清华大学的研究,其中提出了异步流水线和集成卷积池化的计算结构,减少了对片外内存的访问。此外,讨论了事件驱动计算和卷积-池化集成计算方法,显著降低了数据存储需求。论文还涉及定点数运算、权重和激活的量化,以及针对不同滤波器优化的位精度,以提高能效。复旦大学和大阪大学的工作也强调了数据量化、硬件优化和目标检测的加速方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一、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算法中每个电路元件会在每一个模拟时刻进行求值。而在事件驱动算法中 电路中元件状态的改变被记录下来 并且在给定的模拟时刻只有这些元件

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值