当前位置: 首页 > 专利查询>复旦大学专利>正文

一种面向神经网络处理的运算单元阵列结构制造技术

技术编号:26420274 阅读:70 留言:0更新日期:2020-11-20 14:16
本发明专利技术为一种面向神经网络处理的运算单元阵列结构。由运算单元模块和局部总线模块组成。单个运算单元模块负责完成一维卷积运算,局部总线模块将中间结果向上传输,进行中间结果累加,完成二维卷积的运算,减少中间结果的写回,提升系统整体能效比。运算单元模块内部设置若干个寄存器堆,同时进行多个卷积核的超二维卷积运算,进一步提升数据复用度和减少中间结果的写回。运算单元阵列采用自组织模式,接收来自顶层的控制信号,并由局部总线模块根据相邻运算单元的ID配置自动计算完成二维卷积运算所需要的当前运算单元的空间位置,之后自动完成数据的收发以及相关运算操作,具有一定的自主性。本发明专利技术能够较高的提升神经网络处理中计算效率。

【技术实现步骤摘要】
一种面向神经网络处理的运算单元阵列结构
本专利技术属于集成电路设计
,具体涉及一种面向神经网络处理的运算单元阵列结构。
技术介绍
深度卷积神经网络在计算机视觉、语音识别以及机器人控制等重要领域都得到了良好应用,但是各类应用也对神经网络算法的精度和复杂度不断提出更高的要求,导致算法的实现面临一系列挑战性问题。虽然传统处理器架构取得了一定进步,但是存在运算单元之间数据的直接通信导致数据复用度低以及能效比差等问题。为改善上述问题,近年来研究人员设计了基于阵列并行的空间型处理器架构,搭配适当的数据流策略,可以显著的提升神经网络算法的数据复用度和运算速度。卷积运算是神经网络算法中最基本的运算操作,对于当前深度卷积神经网络来说,通常需要面临计算量巨大的卷积运算。卷积运算,即张量运算,用数学表达式描述就是,,其实现的关键的是多个卷积核的权重与输入特征图的数值进行乘累加运算。如果直接按照上述运算公式的方式直接求解,随着神经网络算法复杂度的提升,数据计算量的增大,这种直接求解的方法会频繁的从外部存储读写数据,极大降低系统的能效比。另一种方法是采用适配的数据流策略,固定某种数据类型,减少数据读写次数。这种适配的数据流能够选择合适的存储层次来去访问数据,最小化访存带来的能耗。搭配数据流策略的运算单元阵列是常见的硬件实现方式,并且有利于输入总线和输出总线的实现,从而大大提升数据的传输效率。常见的数据流策略有权重固定(WS,WeightStationary),输出固定(OS,OutputStationary),行固定(RowStationary)三种,对比这三种数据流策略,使用权重固定数据流策略只能提升权重的数据复用度,输出固定数据流策略只能减少中间结果的读写次数,而行固定数据流策略不仅能同时提升三种类型数据的复用度,同时还能减少数据的读写次数。并且行固定数据流策略可以在运算单元内部引入多个卷积核进行超二维运算,进一步提升数据复用度和中间结果的写回次数。本设计提出了基于行固定数据流策略,采用二维运算单元阵列结构,完成神经网络算法的实现。
技术实现思路
为了克服先用技术的不足,本专利技术的目的在于提供一种面向神经网络处理的运算单元阵列结构,其采用行固定数据流策略和二维运算单元阵列排布,能实现数据复用度的最大化,本专利技术提出的一种面向神经网络处理的运算单元阵列结构,其中:包括运算单元模块和局部总线模块,局部总线模块的输入端连接ID数值;运算单元模块分为顶部运算单元模块、中间运算单元模块和底部运算单元模块,局部总线模块位于运算单元模块的垂直方向上;运算单元模块由状态机,寄存器堆和乘累加单元模块组成,寄存器堆包括输入激励寄存器堆、权重寄存器堆和中间结果寄存器堆,状态机的数据请求输入端连接寄存器堆的输入端,寄存器堆与乘累加单元进行双向交互;运算单元模块完成卷积运算的最基本单元,负责接收来自输入局部总线模块的输入数据,并完成一维卷积运算,并根据在运算单元模块阵列位置的不同,将中间结果发送至局部总线模块向上传输以及完成中间结果的累加,最终得到输出激励;局部总线模块,负责垂直方向上相邻运算单元之间中间结果的单向交互,并根据相邻运算单元模块的ID数值计算运算单元的空间位置;局部总线模块根据垂直方向上运算单元模块的ID数值得到一组使能信号,并反馈给与之连接的运算单元模块,由此计算出每个运算单元模块的空间位置。根据使能信号,运算单元模块读取输入数据,进行卷积运算单元得到一维卷积运算的中间结果;然后位于底部运算单元模块将中间结果沿着局部总线向上传输到中间运算单元模块,中间运算单元模块将自身的中间结果与输入的中间结果进行累加,并将累加后的中间结果向上传输至位于顶部运算单元模块;顶部运算单元模块将自身中间结果与来自存储系统和底部运算单元模块的中间结果进行累加,最终得到输出激励。本专利技术中,运算单元模块内部包含三种数据类型的寄存器堆,构成处理器架构的最低级存储层次,将输入数据固定在寄存器内部,提升了数据复用度,减少输入数据的读写次数,从而降低了因访存带来的功耗。并暂时存储乘累加运算得到的中间结果,减少中间结果的读写次数,从而进一步提升系统能效比。本专利技术的有益效果在于:在本设计中,采用了行固定数据流策略,避免了二维卷积运算过程中中间结果的写回,是的中间结果读写次数减少,实现高能效比。同时,在运算单元的实现过程中,引入寄存器堆这一存储层次,在保证功能正确的同时,进一步提升数据复用度和减少中间结果的写回次数,使得系统能效比进一步提升。附图说明图1为运算单元阵列结构基本框图。图2为运算单元模块结构图。图3为运算单元空间位置排布图。图4为运算单元内部窗口滑动数据重排示意图。其中:(a)为运算单元输入激励寄存器,(b)为运算单元输入激励寄存器移位操作。图中标号:1为运算单元模块,2为局部总线模块,3为寄存器堆,4为输入激励寄存器堆,5为权重寄存器堆,6为中间结果寄存器堆,7为状态机,8为乘累加单元模块,9为顶部运算单元模块,10为中间运算单元模块,11为底部运算单元模块。具体实施方式下面通过实施例结合附图进一步说明本专利技术。实施例1:运算单元阵列结构基本框图如图1所示。该设计的工作过程如下:首先局部总线模块2根据垂直方向上运算单元模块1的ID数值得到一组使能信号,并反馈给与之连接的运算单元模块1,由此计算出每个运算单元模块1的空间位置。根据使能信号,运算单元模块1读取输入数据,进行卷积运算单元得到一维卷积运算的中间结果;然后位于底部运算单元模块11将中间结果沿着局部总线向上传输到中间运算单元模块10,中间运算单元模块10将自身的中间结果与输入的中间结果进行累加,并将累加后的中间结果向上传输至位于顶部运算单元模块9;顶部运算单元模块9将自身中间结果与来自存储系统和底部运算单元模块11的中间结果进行累加,最终得到输出激励。运算单元模块1结构如图2所示,共包含6个FIFO接口,其中读FIFO接口分别对应输入激励,权重,通道方向上的中间结果以及来自底部运算单元模块11的中间结果,写FIFO接口对应向上传输的中间结果和写回存储系统的中间结果,所有这些FIFO构成了运算单元模块1与局部总线模块2的数据传输通道。自局部总线模块2的使能信号控制运算单元模块1进行中间结果FIFO的读写,通过使能信号的混合搭配就可以实现软件模型中运算单元模块1在空间阵列中的相对位置,图3列出了运算单元空间位置对应使能信号搭配的组合。需要注意的是,任何非图2样式的使能搭配组合都是非法的。运算单元模块1内部引入三种数据类型的寄存器堆3,构成存储系统的最底层,可以提升数据复用度,减少高层次存储单元的读写次数,减少数据访问功耗开销。表1为卷积运算单元内部寄存器堆信息表。表1列出了三种寄存器堆的数据位宽和深度。其中输入激励寄存器堆4的数据深度为12,此数值等于卷积运算阵列的高度,也就是卷积核的最大尺寸,对应每次卷积运算的最大窗口宽度,可以根据设计需要进行扩展。权重寄存器堆5的深度为2本文档来自技高网
...

【技术保护点】
1.一种面向神经网络处理的运算单元阵列结构,其特征在于:包括运算单元模块和局部总线模块,局部总线模块的输入端连接ID数值;/n运算单元模块分为顶部运算单元模块、中间运算单元模块和底部运算单元模块,局部总线模块位于运算单元模块的垂直方向上;运算单元模块由状态机,寄存器堆和乘累加单元模块组成,寄存器堆包括输入激励寄存器堆、权重寄存器堆和中间结果寄存器堆,状态机的数据请求输入端连接寄存器堆的输入端,寄存器堆与乘累加单元进行双向交互;/n运算单元模块完成卷积运算的最基本单元,负责接收来自输入局部总线模块的输入数据,并完成一维卷积运算,并根据在运算单元模块阵列位置的不同,将中间结果发送至局部总线模块向上传输以及完成中间结果的累加,最终得到输出激励;/n局部总线模块,负责垂直方向上相邻运算单元之间中间结果的单向交互,并根据相邻运算单元模块的ID数值计算运算单元的空间位置;/n局部总线模块根据垂直方向上运算单元模块的ID数值得到一组使能信号,并反馈给与之连接的运算单元模块,由此计算出每个运算单元模块的空间位置;根据使能信号,运算单元模块读取输入数据,进行卷积运算单元得到一维卷积运算的中间结果;然后位于底部运算单元模块将中间结果沿着局部总线向上传输到中间运算单元模块,中间运算单元模块将自身的中间结果与输入的中间结果进行累加,并将累加后的中间结果向上传输至位于顶部运算单元模块;顶部运算单元模块将自身中间结果与来自存储系统和底部运算单元模块的中间结果进行累加,最终得到输出激励。/n...

【技术特征摘要】
1.一种面向神经网络处理的运算单元阵列结构,其特征在于:包括运算单元模块和局部总线模块,局部总线模块的输入端连接ID数值;
运算单元模块分为顶部运算单元模块、中间运算单元模块和底部运算单元模块,局部总线模块位于运算单元模块的垂直方向上;运算单元模块由状态机,寄存器堆和乘累加单元模块组成,寄存器堆包括输入激励寄存器堆、权重寄存器堆和中间结果寄存器堆,状态机的数据请求输入端连接寄存器堆的输入端,寄存器堆与乘累加单元进行双向交互;
运算单元模块完成卷积运算的最基本单元,负责接收来自输入局部总线模块的输入数据,并完成一维卷积运算,并根据在运算单元模块阵列位置的不同,将中间结果发送至局部总线模块向上传输以及完成中间结果的累加,最终得到输...

【专利技术属性】
技术研发人员:韩军张权张永亮
申请(专利权)人:复旦大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1