神经网络加速器及神经网络加速方法技术

技术编号:39847087 阅读:8 留言:0更新日期:2023-12-29 16:45
本发明专利技术涉及人工智能芯片领域,提供一种神经网络加速器及神经网络加速方法

【技术实现步骤摘要】
神经网络加速器及神经网络加速方法、装置


[0001]本专利技术涉及人工智能
(Artificial Intelligence

AI)
芯片
,尤其涉及一种神经网络加速器及神经网络加速方法

装置


技术介绍

[0002]人工智能领域中,通过神经网络加速器来对神经网络进行加速计算已经得到广泛应用,但是,目前神经网络加速器的设计面临着主要的两个问题,即计算引擎
(Processing Engine

PE)
利用率低和数据带宽低,当数据带宽过低时,不能及时提供输入数据时,
PE
经常进入空闲状态,导致计算资源的利用率低

因此,如何实现数据带宽与计算资源的平衡是目前业界亟待解决的重要课题


技术实现思路

[0003]本专利技术提供一种神经网络加速器及神经网络加速方法

装置,用以解决现有技术中数据带宽与计算资源不平衡的问题,实现数据带宽与计算资源的平衡

[0004]本专利技术提供一种神经网络加速器,包括:加速计算模块,直接内存访问控制器,数据重排模块以及数据规整与控制模块;所述加速计算模块包括多个计算单元;
[0005]所述直接内存访问控制器用于将外部存储器中按照数据排列顺序存储的神经网络当前层加速计算所需的目标数据连续读取并发送给所述数据规整与控制模块,所述目标数据的数据排列顺序是按照如下方式获得的:针对
>N
通道
*R

*C
列的第一立体结构的目标数据,以所述神经网络当前层加速计算所需的
F
通道
*E

*D
列的第二立体结构为单位,按照所述第一立体结构中各个所述第二立体结构的第一排列顺序进行数据存储;针对每个所述第二立体结构,按照所述第二立体结构中所有数据的第二排列顺序进行数据存储;
[0006]所述数据规整与控制模块用于根据所述数据规整与控制模块的位宽

所述计算单元的位宽和卷积参数,基于接收的数据生成至少一个目标数据段,将每个所述目标数据段分发到所述加速计算模块中;
[0007]所述加速计算模块用于基于至少部分所述计算单元对来自所述数据规整与控制模块的所述目标数据段进行加速计算,并输出所述计算单元的计算结果至所述数据重排模块;
[0008]所述数据重排模块用于将各所述计算单元的计算结果按照神经网络下一层的加速计算所需的数据排列顺序合并以作为所述下一层的加速计算的输入

[0009]根据本专利技术提供的一种神经网络加速器,所述目标数据段的数据长度与所述计算单元的位宽和所述卷积参数相匹配,所述目标数据段的数据长度为第一数据长度;所述数据规整与控制模块具体用于:
[0010]缓存所述接收的数据,所述接收的数据的数据长度小于或者等于所述数据规整与控制模块的位宽;
[0011]以第二数据长度为单位每次从所述接收的数据中选择一个数据段,作为主数据
段,直至所述接收的数据被选择完毕,所述第二数据长度为预先设置的数据长度;
[0012]当所述主数据段的数据长度小于所述第一数据长度时,获取第一拼接数据和第二拼接数据,所述第一拼接数据为预设的填充数据或者所述接收的数据中与所述主数据段的起始位置相邻的数据,所述第二拼接数据为预设的填充数据或者所述接收的数据中与所述主数据段的结束位置相邻的数据;将所述第一拼接数据

所述主数据段和所述第二拼接数据拼接,得到所述目标数据段;
[0013]当所述主数据段的数据长度等于所述第一数据长度时,将所述主数据段作为所述目标数据段;
[0014]将所述目标数据段分发到所述加速计算模块中

[0015]根据本专利技术提供的一种神经网络加速器,所述数据重排模块,具体用于:
[0016]收集各所述计算单元的计算结果并存储到第一组存储空间中的不同存储空间;
[0017]按照所述下一层的加速计算所需的数据排列顺序,为第二组存储空间的各存储空间,分别从所述第一组存储空间中选择一个相应的所述计算单元的计算结果进行存储,以得到所述下一层的加速计算所需的数据排列顺序

[0018]根据本专利技术提供的一种神经网络加速器,所述计算单元包括第一乘积累加模块以及第二乘积累加模块;
[0019]所述第一乘积累加模块用于基于来自所述数据规整与控制模块的行方向的
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
表示卷积核的大小参数;
[0020]所述第二乘积累加模块用于基于来自所述数据规整与控制模块的一个通道方向的
K
个特征数据以及
K
个权重数据进行串行乘积累加计算,所述串行乘积累加计算包括按顺序依次选择
K
个权重数据中的每个权重数据作为当前计算的权重数据
W[j],
j
的取值包括0~
K
‑1,
W[j]表示当前计算的权重数据为
K
个权重数据中第
j+1
个权重数据,并执行如下进行计算操作:计算
K
个特征数据中第
j+1
个特征数据与
W[j]的乘积,并将计算的乘积累加到第二中间存储器中;
[0021]所述计算单元用于采用所述第一乘积累加模块以及所述第二乘积累加模块中与所述当前层的加速计算匹配的一者进行乘积累加计算

[0022]根据本专利技术提供的一种神经网络加速器,所述目标数据的数据排列顺序的获得方式具体包括:
[0023]以所述第二立体结构为单位,对所述第一立体结构的所述目标数据进行分块,得到
Z1*Z2*Z3
个所述第二立体结构;当所述第一立体结构的部分数据不足以形成所述第二立体结构时,在所述第一立体结构的部分数据的基础上进行数据填充以得到所述第二立体结构;其中,
F
不大于
N

E
不大于
R

D
不大于
C...

【技术保护点】

【技术特征摘要】
1.
一种神经网络加速器,其特征在于,包括:加速计算模块,直接内存访问控制器,数据重排模块以及数据规整与控制模块;所述加速计算模块包括多个计算单元;所述直接内存访问控制器用于将外部存储器中按照数据排列顺序存储的神经网络当前层加速计算所需的目标数据连续读取并发送给所述数据规整与控制模块,所述目标数据的数据排列顺序是按照如下方式获得的:针对
N
通道
*R

*C
列的第一立体结构的目标数据,以所述神经网络当前层加速计算所需的
F
通道
*E

*D
列的第二立体结构为单位,按照所述第一立体结构中各个所述第二立体结构的第一排列顺序进行数据存储;针对每个所述第二立体结构,按照所述第二立体结构中所有数据的第二排列顺序进行数据存储;所述数据规整与控制模块用于根据所述数据规整与控制模块的位宽

所述计算单元的位宽和卷积参数,基于接收的数据生成至少一个目标数据段,将每个所述目标数据段分发到所述加速计算模块中;所述加速计算模块用于基于至少部分所述计算单元对来自所述数据规整与控制模块的所述目标数据段进行加速计算,并输出所述计算单元的计算结果至所述数据重排模块;所述数据重排模块用于将各所述计算单元的计算结果按照神经网络下一层的加速计算所需的数据排列顺序合并以作为所述下一层的加速计算的输入
。2.
根据权利要求1所述的神经网络加速器,其特征在于,所述目标数据段的数据长度与所述计算单元的位宽和所述卷积参数相匹配,所述目标数据段的数据长度为第一数据长度;所述数据规整与控制模块具体用于:缓存所述接收的数据,所述接收的数据的数据长度小于或者等于所述数据规整与控制模块的位宽;以第二数据长度为单位每次从所述接收的数据中选择一个数据段,作为主数据段,直至所述接收的数据被选择完毕,所述第二数据长度为预先设置的数据长度;当所述主数据段的数据长度小于所述第一数据长度时,获取第一拼接数据和第二拼接数据,所述第一拼接数据为预设的填充数据或者所述接收的数据中与所述主数据段的起始位置相邻的数据,所述第二拼接数据为预设的填充数据或者所述接收的数据中与所述主数据段的结束位置相邻的数据;将所述第一拼接数据

所述主数据段和所述第二拼接数据拼接,得到所述目标数据段;当所述主数据段的数据长度等于所述第一数据长度时,将所述主数据段作为所述目标数据段;将所述目标数据段分发到所述加速计算模块中
。3.
根据权利要求1所述的神经网络加速器,其特征在于,所述数据重排模块,具体用于:收集各所述计算单元的计算结果并存储到第一组存储空间中的不同存储空间;按照所述下一层的加速计算所需的数据排列顺序,为第二组存储空间的各存储空间,分别从所述第一组存储空间中选择一个相应的所述计算单元的计算结果进行存储,以得到所述下一层的加速计算所需的数据排列顺序
。4.
根据权利要求1至3任一项所述的神经网络加速器,其特征在于,所述计算单元包括第一乘积累加模块以及第二乘积累加模块;所述第一乘积累加模块用于基于来自所述数据规整与控制模块的行方向的
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
表示卷积核的大小参数;所述第二乘积累加模块用于基于来自所述数据规整与控制模块的一个通道方向的
K
个特征数据以及
K
个权重数据进行串行乘积累加计算,所述串行乘积累加计算包括按顺序依次选择
K
个权重数据中的每个权重数据作为当前计算的权重数据
W[j]

j
的取值包括0~
K
‑1,
W[j]
表示当前计算的权重数据为
K
个权重数据中第<...

【专利技术属性】
技术研发人员:徐健何金钟覃鸿张明李卫军
申请(专利权)人:中国科学院半导体研究所
类型:发明
国别省市:

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

1