神经网络加速器及神经网络加速方法、装置

文档序号:36502296发布日期:2023-12-28 06:00阅读:24来源:国知局
神经网络加速器及神经网络加速方法

本发明涉及人工智能(artificial intelligence,ai)芯片,尤其涉及一种神经网络加速器及神经网络加速方法、装置。


背景技术:

1、人工智能领域中,通过神经网络加速器来对神经网络进行加速计算已经得到广泛应用,但是,目前神经网络加速器的设计面临着主要的两个问题,即计算引擎(processingengine,pe)利用率低和数据带宽低,当数据带宽过低时,不能及时提供输入数据时,pe经常进入空闲状态,导致计算资源的利用率低。因此,如何实现数据带宽与计算资源的平衡是目前业界亟待解决的重要课题。


技术实现思路

1、本发明提供一种神经网络加速器及神经网络加速方法、装置,用以解决现有技术中数据带宽与计算资源不平衡的问题,实现数据带宽与计算资源的平衡。

2、本发明提供一种神经网络加速器,包括:加速计算模块,直接内存访问控制器,数据重排模块以及数据规整与控制模块;所述加速计算模块包括多个计算单元;

3、所述直接内存访问控制器用于将外部存储器中按照数据排列顺序存储的神经网络当前层加速计算所需的目标数据连续读取并发送给所述数据规整与控制模块,所述目标数据的数据排列顺序是按照如下方式获得的:针对n通道*r行*c列的第一立体结构的目标数据,以所述神经网络当前层加速计算所需的f通道*e行*d列的第二立体结构为单位,按照所述第一立体结构中各个所述第二立体结构的第一排列顺序进行数据存储;针对每个所述第二立体结构,按照所述第二立体结构中所有数据的第二排列顺序进行数据存储;

4、所述数据规整与控制模块用于根据所述数据规整与控制模块的位宽、所述计算单元的位宽和卷积参数,基于接收的数据生成至少一个目标数据段,将每个所述目标数据段分发到所述加速计算模块中;

5、所述加速计算模块用于基于至少部分所述计算单元对来自所述数据规整与控制模块的所述目标数据段进行加速计算,并输出所述计算单元的计算结果至所述数据重排模块;

6、所述数据重排模块用于将各所述计算单元的计算结果按照神经网络下一层的加速计算所需的数据排列顺序合并以作为所述下一层的加速计算的输入。

7、根据本发明提供的一种神经网络加速器,所述目标数据段的数据长度与所述计算单元的位宽和所述卷积参数相匹配,所述目标数据段的数据长度为第一数据长度;所述数据规整与控制模块具体用于:

8、缓存所述接收的数据,所述接收的数据的数据长度小于或者等于所述数据规整与控制模块的位宽;

9、以第二数据长度为单位每次从所述接收的数据中选择一个数据段,作为主数据段,直至所述接收的数据被选择完毕,所述第二数据长度为预先设置的数据长度;

10、当所述主数据段的数据长度小于所述第一数据长度时,获取第一拼接数据和第二拼接数据,所述第一拼接数据为预设的填充数据或者所述接收的数据中与所述主数据段的起始位置相邻的数据,所述第二拼接数据为预设的填充数据或者所述接收的数据中与所述主数据段的结束位置相邻的数据;将所述第一拼接数据、所述主数据段和所述第二拼接数据拼接,得到所述目标数据段;

11、当所述主数据段的数据长度等于所述第一数据长度时,将所述主数据段作为所述目标数据段;

12、将所述目标数据段分发到所述加速计算模块中。

13、根据本发明提供的一种神经网络加速器,所述数据重排模块,具体用于:

14、收集各所述计算单元的计算结果并存储到第一组存储空间中的不同存储空间;

15、按照所述下一层的加速计算所需的数据排列顺序,为第二组存储空间的各存储空间,分别从所述第一组存储空间中选择一个相应的所述计算单元的计算结果进行存储,以得到所述下一层的加速计算所需的数据排列顺序。

16、根据本发明提供的一种神经网络加速器,所述计算单元包括第一乘积累加模块以及第二乘积累加模块;

17、所述第一乘积累加模块用于基于来自所述数据规整与控制模块的行方向的l+(x-1)个特征数据以及x个权重数据进行并行乘积累加计算,所述并行乘积累加计算包括按顺序依次选择x个权重数据中的每个权重数据作为当前计算的权重数据w[i],i的取值包括0~x-1,w[i]表示当前计算的权重数据为x个权重数据中第i+1个权重数据,并执行如下计算操作:计算l+(x-1)个特征数据中第i+1个特征数据到第i+l个特征数据分别与w[i]的乘积,并将计算的每个乘积分别累加到对应的第一中间存储器中;其中,x表示卷积核的大小参数;

18、所述第二乘积累加模块用于基于来自所述数据规整与控制模块的一个通道方向的k个特征数据以及k个权重数据进行串行乘积累加计算,所述串行乘积累加计算包括按顺序依次选择k个权重数据中的每个权重数据作为当前计算的权重数据w[j],j的取值包括0~k-1,w[j]表示当前计算的权重数据为k个权重数据中第j+1个权重数据,并执行如下进行计算操作:计算k个特征数据中第j+1个特征数据与w[j]的乘积,并将计算的乘积累加到第二中间存储器中;

19、所述计算单元用于采用所述第一乘积累加模块以及所述第二乘积累加模块中与所述当前层的加速计算匹配的一者进行乘积累加计算。

20、根据本发明提供的一种神经网络加速器,所述目标数据的数据排列顺序的获得方式具体包括:

21、以所述第二立体结构为单位,对所述第一立体结构的所述目标数据进行分块,得到z1*z2*z3个所述第二立体结构;当所述第一立体结构的部分数据不足以形成所述第二立体结构时,在所述第一立体结构的部分数据的基础上进行数据填充以得到所述第二立体结构;其中,f不大于n,e不大于r,d不大于c,z1的取值是n与f的比值向上取整,z2的取值是r与e的比值向上取整,z3的取值是c与d的比值向上取整;

22、按照所述第一立体结构对应的扫描方式,从各个所述第二立体结构中依次选择当前需要扫描的所述第二立体结构以得到所述第一排列顺序,并对当前选择的所述第二立体结构执行如下步骤:

23、按照所述第二立体结构对应的扫描方式扫描所述第二立体结构内的数据进行存储以得到所述第二排列顺序。

24、根据本发明提供的一种神经网络加速器,所述第一排列顺序是所述目标数据中各所述第二立体结构按照通道方向、行方向和列方向的优先级顺序形成的排列顺序,其中的优先级顺序为以下顺序中的一种:行方向、列方向和通道方向;列方向、行方向和通道方向;通道方向、行方向和列方向;通道方向、列方向和行方向;行方向、通道方向和列方向;列方向、通道方向和行方向;

25、所述第二排列顺序是所述第二立体结构中各数据按照通道方向、行方向和列方向的优先级顺序形成的排列顺序,其中的优先级顺序为以下顺序中的一种:行方向、列方向和通道方向;列方向、行方向和通道方向;通道方向、行方向和列方向;通道方向、列方向和行方向;行方向、通道方向和列方向;列方向、通道方向和行方向。

26、根据本发明提供的一种神经网络加速器,还包括调度器;所述调度器分别与所述数据规整与控制模块、所述加速计算模块、所述数据重排模块和所述直接内存访问控制器相连,用于解析指令序列,并根据所述指令序列的解析结果协调所述数据规整与控制模块、所述加速计算模块、所述数据重排模块和所述直接内存访问控制器工作。

27、根据本发明提供的一种神经网络加速器,所述第二立体结构与神经网络的结构对应;和/或,所述第二立体结构中的数据被读取一次后完成需要参与的所有计算。

28、本发明还提供一种基于上述任一种所述的神经网络加速器的神经网络加速方法,包括:

29、直接内存访问控制器将外部存储器中按照数据排列顺序存储的神经网络当前层加速计算所需的目标数据连续读取并发送给数据规整与控制模块;

30、所述数据规整与控制模块根据所述数据规整与控制模块的位宽、计算单元的位宽和卷积参数,基于接收的数据生成至少一个目标数据段,将每个所述目标数据段分发到加速计算模块中;

31、所述加速计算模块基于至少部分计算单元对来自所述数据规整与控制模块的所述目标数据段进行加速计算,并输出所述计算单元的计算结果至所述数据重排模块;

32、所述数据重排模块将各所述计算单元的计算结果按照神经网络下一层的加速计算所需的数据排列顺序合并以作为所述下一层的加速计算的输入。

33、本发明还提供一种神经网络加速装置,包括外部存储器和如上述任一种所述的神经网络加速器。

34、本发明提供的神经网络加速器,由于外部存储器中可以对第一立体结构的数据格式的目标数据按照数据排列顺序存储,该数据排列顺序是按照如下方式获得的:针对n通道*r行*c列的第一立体结构的目标数据,以神经网络的加速计算所需的f通道*e行*d列的第二立体结构为单位,按照所述第一立体结构中各个所述第二立体结构的第一排列顺序进行数据存储;针对每个所述第二立体结构,按照所述第二立体结构中所有数据的第二排列顺序进行数据存储。神经网络加速器中的直接内存访问控制器可以将外部存储器中存储的神经网络当前层加速计算所需的目标数据连续读取并发送到数据规整与控制模块中,数据规整与控制模块可以根据所述数据规整与控制模块的位宽、所述计算单元的位宽和卷积参数,基于接收的数据生成至少一个目标数据段,将每个目标数据段分发到所述加速计算模块中,加速计算模块可以基于至少部分所述计算单元对来自所述数据规整与控制模块的各所述目标数据段进行加速计算,并输出各计算单元的计算结果至所述数据重排模块;所述数据重排模块可以将各计算单元的计算结果按照神经网络下一层的加速计算所需的数据排列顺序合并以作为所述下一层的加速计算的输入。如此,将神经网络当前层的数据读取并生成目标数据段,数据带宽最高,神经网络每一层的加速计算都采用合适的数据排列方式,完成数据高效交互,可以大大提升数据带宽能力,充分利用加速计算模块的计算资源,解决计算资源与数据带宽不平衡的问题,提高神经网络加速器整体性能,降低功耗。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1