基于NICE指令扩展--->可重构 CNN 加速器
CICC2033——【RISC-V机床佬】队员:陈挺然/程科勋/李昌昱
###模块示意图
该系统中每个模块具体功能如下:
1.接口控制模块
与NICE接口相连接的是接口控制模块,此控制模块用于接收输入数据、发送输出数据并接收控制信号。
在NICE接口对扩展指令信号进行初步解码后,便会通过接口控制模块控制控制硬件加速器的计算与数据流通。
2.卷积控制模块
卷积控制模块用于控制卷积计算。从数据交流角度来说,卷积控制模块可以控制所需计算数据的地址,从而控制输入到卷积计算模块内的数据,进而控制卷积计算。
3.输入数据存储器
输入数据存储器用于存储输入数据。存储容量为4096*16bit。
4.权重数据存储器
权重数据存储器分为8个,对应于8个不同的卷积核。存储容量为8*4096*16bit。
5.卷积计算模块
卷积计算模块负责计算输入数据与权重数据的乘加。卷积计算模块包含8个并行乘加计算子模块,对应于8个卷积核的并行计算。卷积控制模块会控制输入到卷积计算模块内的输入与权重数据,卷积计算模块仅负责乘加计算。
6.卷积结果存储器
卷积结果存储器分为8个,对应于8个卷积核的计算结果。存储容量为8*4096*48bit。
7.池化+量化模块
池化+量化模块可以执行池化和量化操作。池化+量化模块可以将卷积计算的结果直接进行激活、池化、量化,从而减小数据搬移的开销。此模块支持平均池化和最值池化,激活支持ReLU激活方式。
8.池化结果存储器
池化结果存储器分为8个,用于存储池化后的计算结果。存储容量为8*4096*16bit。
此卷积加速器可以执行卷积、池化、激活、量化功能。从数据复用层面上来说,此卷积加速器实现的是卷积核复用形式。卷积层中卷积核会在输入的二维图像上沿着行和列的方向进行滑窗。
********控制方式完成一次卷积+池化的计算方式如下:
1.使用Custom_Clr指令,清除运行状态,使加速器的正常运行;
2.使用Custom_Dtrans指令,将输入数据以及权重数据导入加速器存储器内;
3.使用Custom_Ldata_Para、Custom_Lweight_Param、Custom_Pooling_ Param、Custom_Lbias指令,将计算相关参数送入加速器内进行锁存;
4.使用Custom_Run指令,使加速器开始执行计算;
5.使用Custom_Dtrans指令,将结果数据导出到存储器内。