[发明专利]一种卷积神经网络加速器的内部存储带宽优化方法有效
申请号: | 202011102647.7 | 申请日: | 2020-10-15 |
公开(公告)号: | CN112070217B | 公开(公告)日: | 2023-06-06 |
发明(设计)人: | 李幼萌;王亚博 | 申请(专利权)人: | 天津大学 |
主分类号: | G06N3/0464 | 分类号: | G06N3/0464 |
代理公司: | 天津市北洋有限责任专利代理事务所 12201 | 代理人: | 韩帅 |
地址: | 300072*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 卷积 神经网络 加速器 内部 存储 带宽 优化 方法 | ||
1.一种卷积神经网络加速器的内部存储带宽优化方法,其特征在于,所述神经网络的卷积层中设置有对加速器减少带宽需求的优化模块,所述优化模块采用如下步骤:
步骤1、在存放待计算特征数据的内部存储RAM与计算单元之间设置一块与计算单元数相同大小的CACHE,CACHE中的各个数据直连在计算单元上,在每个计算周期先将CACHE中数据传入计算单元;
步骤2、由内存读写控制单元用读取并准备好下一周期所用数据:缓存块相对于内存区优先上下移动,每次移动将缓存块中不同于上一周期的一行数据丢弃,其他数据顺序前移,将缓存块新覆盖到的数据加入到空行;
步骤3、当纵向移动到边界时,横向移动一步,将缓存块中不同于上一周期的一列数据丢弃,其他数据顺序侧移,将缓存块新覆盖到的数据加入到空列,其中,所述优化模块采用如下步骤实现二维特征数据缓存:
步骤0,初始化CACHE,准备好第一个计算周期所用数据;此过程开始,由内存读写控制单元将CACHE第一行应存入的数据的地址向量传给内部存储RAM,在下一周期提交第二行地址向量,并将收到的第一行数据向量放入CACHE第一行,如此重复,直到将CACHE填满,标志初始化完成,此时CACHE中的数据与内部存储RAM的左上角数据一一对应;其中:设置了维护地址的变量AddrBase,AddrBase的第一个值等于CoreLen减1,每一个地址向量的最后一个元素等于AddrBase的值,其它元素依次递减得出,之后AddrBase的值改变为Addr0,Addr0的计算如公式(1)所示,公式1中InMapCol为超参数,是二维特征数据的列数;
Addr0=AddrBase+InMapCol (1)
步骤1:当初始化完成之后,计算单元开始工作,利用CACHE中的数据完成第一次运算,内存读写控制单元继续执行上述地址的计算及传递,接收到的数据向量将被放置于CACHE的最后一行,原有的最后一行转移到倒数第二行,以此规律将数据上移,抛弃原有的第一行数据,同时计数器Counter1开始工作,每执行一次地址向量的传递便自增,直到其不小于InMapRow减CoreLen;
步骤2:步骤1结束时相当于CACHE相对于二维特征数据的滑动已经到达此列的底部,此时将CACHE向右移动一列;此时地址向量的计算方式改变,AddrBase的值加1作为地址向量的最后一个元素,其他元素向前依次递减InMapCol,由此地址向量得到的数据向量以新方式放入CACHE:将CACHE的各行数据向前移动一个元素的位置,舍弃各行的行首元素,之后将新的数据向量的第一个元素填充在CACHE的第一行的最后一个元素位置上,数据向量的第二个元素填充在CACHE的第二行的最后一个元素位置上,依次进行;之后,将AddrBase的值纠正为Addr1,Addr1的计算如公式(2)所示,同时变量Counter2自增,并进入步骤3:
Addr1=AddrBase-CoreLen×InMapCol (2)
步骤3:本步骤类似步骤1,本步骤于每次地址向量计算完后,变量AddrBase的值改变为Addr2,Addr2的计算方式如公式(2)所示,接收到的数据向量将被放置在CACHE的第一行,原第一行向下移动成为新的第二行,其他行依次下移,抛弃最后一行数据;同时计数器Counter1将每次自减1,直到其不大于1时,进入步骤4;
Addr2=AddrBase-InMapCol (3)
步骤4:本步骤类似步骤2,本步骤地址向量的计算方式变为AddrBase的值加1作为地址向量的最后一个元素,其他元素向前依次递增InMapCol,然后将CACHE的各行数据向前移动一个元素的位置,舍弃各行的行首元素,之后将新的数据向量的最后一个元素填充在CACHE的第一行的最后一个元素位置上,数据向量的倒数第二个元素填充在CACHE的第二行的最后一个元素位置上,依次进行,填充完毕后对计数器Counter2进行判断,如果Counter2小于Counter,则Counter2自增1,将AddrBase的值纠正为Addr3,Addr3的计算如公式(5)所示,并进入步骤1;否则,表示此特征数据已经被扫描一遍了,这时需要判断是否还有其他卷积核需要与其进行卷积计算,ScanIndex变量则记录一组二维特征数据被扫描的次数,如ScanIndex不小于CoreGroup,则表示此二维特征数据已使用完毕,需初始化相关的各变量,否则纠正AddrBase的值为Addr4,Addr4的计算如公式(6)所示,并进入步骤5:
Counter=InMapCol-CoreLen (4)
Addr3=AddrBase+CoreLen×InMapCol (5)
Addr4=AddrBase-CoreLen+CoreLen×InMapCol (6)
步骤5:为了省去初始化CACHE的步骤,此时可以沿着CACHE滑动的路径反向移动回去,由于一个卷积核对应一组二维特征数据,因此滑动的初始位置可以在任意位置;此时CACHE相当于和二维特征数据的右上角数据一一对应;总体上类似于步骤1,不同的是地址向量的第一个元素等于变量AddrBase的值,其他元素依次递增;同时计数器Counter1的状态与条件与步骤1相同,其不小于Counter′时进入步骤6,Counter′的计算如公式(7)所示:
Counter′=InMapRow-CoreLen (7)
步骤6:此步骤与步骤2相似,不同的是AddrBase的值自减1作为地址向量的第一个元素,其他元素向后依次递减InMapCol;将CACHE的各行数据向后移动一个元素的位置,舍弃各行的行尾元素,之后将新的数据向量的第一个元素填充在CACHE的最后一行的第一个元素位置上,数据向量的第二个元素填充在CACHE的倒数第二行的第一个元素位置上,依次进行;之后,将AddrBase的值纠正为Addr1;计数器Counter2自减1,并进入步骤7;
步骤7:此步骤与步骤3基本相同,不同的是此步骤中地址向量的计算方式与步骤5相同,地址向量的第一个元素等于变量AddrBase的值,其他元素依次递增;当计数器Counter1不大于1时,进入步骤8;
步骤8:本步骤类似步骤4,本步骤地址向量的计算方式为AddrBase的值自减1作为地址向量的第一个元素,其他元素向后依次递减InMapCol,将CACHE的各行数据向后移动一个元素的位置,舍弃各行的行尾元素,之后将新的数据向量的第一个元素填充在CACHE的第一行的第一个元素位置上,数据向量的第二个元素填充在CACHE的第二行的第一个元素位置上,依次进行;填充完毕后对计数器Counter2进行判断,如果Counter2大于1,则Counter2自减1,将AddrBase的值纠正为Addr3,进入步骤5;否则,表示此特征数据已经被扫描一遍了,这时如果ScanIndex不小于CoreGroup,则表示此二维特征数据已使用完毕,需初始化相关的各变量,否则纠正变量AddrBase的值为Addr5,Addr5的计算方法如公式(8)所示,之后进入步骤1;
Addr5=AddrBase+CoreLen+CoreLen×InMapCol (8)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津大学,未经天津大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011102647.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于大规模多中心问题的路径规划方法
- 下一篇:一种变电站智能降温装置