CN109948787A - 用于神经网络卷积层的运算装置、芯片及方法 - Google Patents
用于神经网络卷积层的运算装置、芯片及方法 Download PDFInfo
- Publication number
- CN109948787A CN109948787A CN201910142474.2A CN201910142474A CN109948787A CN 109948787 A CN109948787 A CN 109948787A CN 201910142474 A CN201910142474 A CN 201910142474A CN 109948787 A CN109948787 A CN 109948787A
- Authority
- CN
- China
- Prior art keywords
- pixel
- coefficient
- clock cycle
- work
- pipelining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 24
- 239000011159 matrix material Substances 0.000 claims description 134
- 239000000872 buffer Substances 0.000 claims description 53
- 238000012545 processing Methods 0.000 claims description 11
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 6
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 230000008569 process Effects 0.000 description 8
- 238000001914 filtration Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000001186 cumulative effect Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000005265 energy consumption Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 239000011248 coating agent Substances 0.000 description 2
- 238000000576 coating method Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
- Image Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开公开了用于神经网络卷积层的运算装置、芯片及方法,在第一个时钟周期内,只有第一个流水步骤开始工作;在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
Description
技术领域
本公开属于芯片电路设计领域,尤其涉及用于神经网络卷积层的运算装置、芯片及方法。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
针对图像特征提取的应用需要,目前的传统DSP芯片以及基于RISC架构的芯片没有考虑CNN等卷积神经网络的卷积运算(矩阵之间)以及频繁存储器访问(像素数据以及权重系数)的时间开销。
发明人认为现有技术中存在一定的问题,主要体现在:人工智能AI应用的矩阵卷积计算量可能更大,需要的进行的像素数据与系数的存储访问有可能更大,并且传统的CPU,DSP硬件架构没有考虑新的图像AI应用场景,不满足快速,低延迟,吞吐量很大的实际要求,同时满足效率情况下,也要进行功耗开销优化,目前存在的传统CPU、DSP处理器不适合进行图像的神经网络网络参数训练与实际测试。
中国发明专利申请,申请公布号为“CN 108701015 A”,申请公布日为2018年10月23日的深圳市大疆创新科技有限公司的“用于神经网络的运算装置、芯片、设备及相关方法”,它可以进行神经网络卷积处理,但其也存在一定的不足,不具备流水处理与吞吐自适应的特点。
发明内容
为了解决现有技术的不足,本公开提供了用于神经网络卷积层的运算装置、芯片及方法,其提供了一种针对图像AI任务处理的卷积层的卷积运算的硬件加速器,该加速器以纯硬件电路实现,以流水化方法进行处理,单个周期完成每个阶段任务,每个时钟吞吐量即为一个像素矩阵与一个系数矩阵的卷积结果。如果想降低单位时间的吞吐率,则可以降低最大时钟频率。并且很多硬件资源最大化的复用,提高资源利用效率,降低硬件资源开销,降低芯片面积。
第一个方面,本实施例提供了用于神经网络卷积层的运算装置;
用于神经网络卷积层的运算装置,包括:
控制器,所述控制器分别与像素矩阵存储器、系数矩阵存储器、若干个像素缓冲器、若干个系数缓冲器和若干个乘累加器连接;
在控制器中设置时钟周期,每个流水步骤对应一个时钟周期;
第一个流水步骤:所述像素矩阵存储器接收像素矩阵的存储访问,将像素矩阵存储到像素矩阵存储器中;所述系数矩阵存储器接收系数矩阵的存储访问,将系数矩阵存储到系数矩阵存储器中;
第二个流水步骤:所述控制器从像素矩阵存储器中调取一个M行乘以M列的像素矩阵块,将调取的像素矩阵块按照1行乘以M2列的形式存储到像素缓冲器中;所述控制器从系数矩阵存储器中调取M行乘以M列的单个系数矩阵块;将调取的单个系数矩阵按照M2行乘以1列的形式存储到系数缓冲器中;
第三个流水步骤:所述控制器每次从像素缓冲器中读取第i个像素点,从系数缓冲器中读取第i个系数,控制器控制乘累加器将第i个像素点与对应第i个系数进行乘法运算,第i个像素属于被乘数,第i个系数属于乘数,被乘数与乘数的每一位逐次进行乘法,产生多个部分积,再把部分积进行累加;一共进行M2次单个像素点数据与对应卷积核系数的乘法运算;
第四个流水步骤:把生成的M2个乘法运算结果,进行加法操作,得到像素映射特征数值;其中,i是正整数;i的取值范围是1到M2;M2表示像素矩阵块中像素的个数;
第五个流水步骤:将得到像素映射特征数值回写到像素映射特征矩阵存储器中;
在第一个时钟周期内,只有第一个流水步骤开始工作;
在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;
在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;
在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;
在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;
在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
有益效果,可以让所有的流水步骤均保持工作的状态,避免现有技术中仅仅一个步骤工作,其余四个步骤等待的状态,提升工作效率,节省工作时间。
作为一种实施例,所述控制器设置流水线时钟周期,流水充满后,每个时钟周期,当所有乘积均进行完累加运算后,单个时钟周期才吞吐一次乘累加结果。
该流水结构单个时钟周期完成每个步骤具体任务,可以通过改变时钟频率达到吞吐量自适应;
流水处理的结果,延长了数据路径的总时间长度,但是通过提高时钟周期频率,保证每个运算步骤都在工作,保证输出实时性、提高输出效率。
运算处理流水化处理后,通过提高数据运算的时钟频率,以提高吞吐能力;通过降低频率,在满足吞吐的前提下,降低能耗。
系数缓冲器数据共享,仅仅更新像素缓冲器的数值,系数缓冲器的数据不进行更新。
所述像素映射特征数值为每个像素矩阵与系数矩阵卷积运算后的单个中心像素。
所述控制器将乘累加器的求和运算结果进行数据缓存,以及回写,回写到卷积后的特征映射像素矩阵存储器中。保留原来输入像素矩阵,而不会对原来像素矩阵进行数据更新。
第二方面,本公开提供了用于神经网络卷积层的芯片;
用于神经网络卷积层的芯片,包括所述运算装置,还包括通信接口,所述通信接口用于获取待所述运算装置处理的输入数据,还用于输出所述运算装置的运算结果。
第三方面,本公开提供了用于神经网络卷积层的方法;
用于神经网络卷积层的方法,运用于运算装置中,所述运算装置,包括:控制器,所述控制器分别与像素矩阵存储器、系数矩阵存储器、若干个像素缓冲器、若干个系数缓冲器和若干个乘累加器连接;
所述方法包括:在控制器中设置时钟周期,每个流水步骤对应一个时钟周期;
第一个流水步骤:所述像素矩阵存储器接收像素矩阵的存储访问,将像素矩阵存储到像素矩阵存储器中;所述系数矩阵存储器接收系数矩阵的存储访问,将系数矩阵存储到系数矩阵存储器中;
第二个流水步骤:所述控制器从像素矩阵存储器中调取一个M行乘以M列的像素矩阵块,将调取的像素矩阵块按照1行乘以M2列的形式存储到像素缓冲器中;所述控制器从系数矩阵存储器中调取M行乘以M列的单个系数矩阵块;将调取的单个系数矩阵按照M2行乘以1列的形式存储到系数缓冲器中;
第三个流水步骤:所述控制器每次从像素缓冲器中读取第i个像素点,从系数缓冲器中读取第i个系数,控制器控制乘累加器将第i个像素点与对应第i个系数进行乘法运算,第i个像素属于被乘数,第i个系数属于乘数,被乘数与乘数的每一位逐次进行乘法,产生多个部分积,再把部分积进行累加;一共进行M2次单个像素点数据与对应卷积核系数的乘法运算;
第四个流水步骤:把生成的M2个乘法运算结果,进行加法操作,得到像素映射特征数值;其中,i是正整数;i的取值范围是1到M2;M2表示像素矩阵块中像素的个数;
第五个流水步骤:将得到像素映射特征数值回写到像素映射特征矩阵存储器中;
在第一个时钟周期内,只有第一个流水步骤开始工作;
在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;
在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;
在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;
在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;
在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
与现有技术相比,本公开的有益效果是:
把整个任务划分为5个流水步骤,尽管每个任务(输入像素卷积滤波以及滤波后结果回写)仍然需要5个时钟周期,但是,当整个流水线充满后,保证每个时钟周期,均完成将吞吐出来的一个滤波后的数据回写;流水线没有充满时候,一些模块电路不工作,即空操作,当流水线充满后,所有步骤对应的电路都会同时工作,功耗增大,但是效率最优。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为提出的神经网络加速器结构。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
第一个实施例,本实施例提供了用于神经网络卷积层的运算装置;
用于神经网络卷积层的运算装置,包括:
控制器,所述控制器分别与像素矩阵存储器、系数矩阵存储器、若干个像素缓冲器、若干个系数缓冲器和若干个乘累加器连接;
在控制器中设置时钟周期,每个流水步骤对应一个时钟周期;
第一个流水步骤:所述像素矩阵存储器接收像素矩阵的存储访问,将像素矩阵存储到像素矩阵存储器中;所述系数矩阵存储器接收系数矩阵的存储访问,将系数矩阵存储到系数矩阵存储器中;
第二个流水步骤:所述控制器从像素矩阵存储器中调取一个M行乘以M列的像素矩阵块,将调取的像素矩阵块按照1行乘以M2列的形式存储到像素缓冲器中;所述控制器从系数矩阵存储器中调取M行乘以M列的单个系数矩阵块;将调取的单个系数矩阵按照M2行乘以1列的形式存储到系数缓冲器中;
第三个流水步骤:所述控制器每次从像素缓冲器中读取第i个像素点,从系数缓冲器中读取第i个系数,控制器控制乘累加器将第i个像素点与对应第i个系数进行乘法运算,第i个像素属于被乘数,第i个系数属于乘数,被乘数与乘数的每一位逐次进行乘法,产生多个部分积,再把部分积进行累加;一共进行M2次单个像素点数据与对应卷积核系数的乘法运算;
第四个流水步骤:把生成的M2个乘法运算结果,进行加法操作,得到像素映射特征数值;其中,i是正整数;i的取值范围是1到M2;M2表示像素矩阵块中像素的个数;
第五个流水步骤:将得到像素映射特征数值回写到像素映射特征矩阵存储器中;
在第一个时钟周期内,只有第一个流水步骤开始工作;
在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;
在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;
在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;
在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;
在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
有益效果,可以让所有的流水步骤均保持工作的状态,避免现有技术中仅仅一个步骤工作,其余四个步骤等待的状态,提升工作效率,节省工作时间。
作为一种实施例,所述控制器设置流水线时钟周期,流水充满后,每个时钟周期,当所有乘积均进行完累加运算后,单个时钟周期才吞吐一次乘累加结果。
该流水结构单个时钟周期完成每个步骤具体任务,可以通过改变时钟频率达到吞吐量自适应;
流水处理的结果,延长了数据路径的总时间长度,但是通过提高时钟周期频率,保证每个运算步骤都在工作,保证输出实时性、提高输出效率。
运算处理流水化处理后,通过提高数据运算的时钟频率,以提高吞吐能力;通过降低频率,在满足吞吐的前提下,降低能耗。
系数缓冲器数据共享,仅仅更新像素缓冲器的数值,系数缓冲器的数据不进行更新。
所述像素映射特征数值为每个像素矩阵与系数矩阵卷积运算后的单个中心像素。
所述控制器将乘累加器的求和运算结果进行数据缓存,以及回写,回写到卷积后的特征映射像素矩阵存储器中。保留原来输入像素矩阵,而不会对原来像素矩阵进行数据更新。
第二方面,本公开提供了用于神经网络卷积层的芯片;
用于神经网络卷积层的芯片,包括所述运算装置,还包括通信接口,所述通信接口用于获取待所述运算装置处理的输入数据,还用于输出所述运算装置的运算结果。
第三方面,本公开提供了用于神经网络卷积层的方法;
用于神经网络卷积层的方法,运用于运算装置中,所述运算装置,包括:控制器,所述控制器分别与像素矩阵存储器、系数矩阵存储器、若干个像素缓冲器、若干个系数缓冲器和若干个乘累加器连接;
所述方法包括:在控制器中设置时钟周期,每个流水步骤对应一个时钟周期;
第一个流水步骤:所述像素矩阵存储器接收像素矩阵的存储访问,将像素矩阵存储到像素矩阵存储器中;所述系数矩阵存储器接收系数矩阵的存储访问,将系数矩阵存储到系数矩阵存储器中;
第二个流水步骤:所述控制器从像素矩阵存储器中调取一个M行乘以M列的像素矩阵块,将调取的像素矩阵块按照1行乘以M2列的形式存储到像素缓冲器中;所述控制器从系数矩阵存储器中调取M行乘以M列的单个系数矩阵块;将调取的单个系数矩阵按照M2行乘以1列的形式存储到系数缓冲器中;
第三个流水步骤:所述控制器每次从像素缓冲器中读取第i个像素点,从系数缓冲器中读取第i个系数,控制器控制乘累加器将第i个像素点与对应第i个系数进行乘法运算,第i个像素属于被乘数,第i个系数属于乘数,被乘数与乘数的每一位逐次进行乘法,产生多个部分积,再把部分积进行累加;一共进行M2次单个像素点数据与对应卷积核系数的乘法运算;
第四个流水步骤:把生成的M2个乘法运算结果,进行加法操作,得到像素映射特征数值;其中,i是正整数;i的取值范围是1到M2;M2表示像素矩阵块中像素的个数;
第五个流水步骤:将得到像素映射特征数值回写到像素映射特征矩阵存储器中;
在第一个时钟周期内,只有第一个流水步骤开始工作;
在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;
在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;
在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;
在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;
在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
把需要处理的矩阵像素与矩阵系数预先调入到缓存中,利用寄存器堆具有多个端口PORTS,可以实现像素点与系数点的乘法并行执行;
MAC中的被乘数与乘数的乘操作,部分积产生基于改进的BOOTH算法,达到减少部分积的数量,即后续的累加次数就降低了。
MAC中的部分积累加实现基于成熟的加法树(Wallace-Tree Adder算法),既可以降低进位链关键路径的时序要求,又可以把累加整列的电路进行规整对齐,减小电路版图面积。
单个MAC单元的输出进行加,利用快速加法器实现。
本公开提供的快速卷积层,最大化的利用硬件资源,以减少海量卷积运算中的电路资源(MAC单元,加法器单元,存储器单元)的开销。
本公开的流水段时钟周期可以更改,以进行吞吐效率,工作频率与动态功耗的自适应调整。
卷积完成的运算C1=Matrix_Pixel*Matrix_Weight;
如图1所示,其为卷积层的矩阵卷积加速电路。
对于图1中名词的解释:
控制器(HOST Controller):负责整个卷积实现加速器的控制器,负责整个流水线加速器的参数配置与开关使能/禁止控制工作;
像素/系数矩阵存储器(Pixel/Weight memory access):像素,权重系数的存储器读访问;
像素矩阵(Matrix_Pixel):像素矩阵数据;
系数矩阵(Matrix_Weight):系数矩阵数据;
像素/系数预先调入Pixel/Weight Preload:像素,权重系数预取,存在缓冲器(寄存器组成);
乘加阵列(MACs_Array):进行乘累计:乘法器产生需要后续累加的部分积(partialproduct);部分积累加器(把乘数不同位与被乘数相乘得到的结果进行累加);累加器阵列:并行MACs;
加法树(Adder_Tree):部分积的加法快速进位版图面积小的实现;
求和(SUM_Again):完成乘加MAC运算后的像素的再求和计算,利用超前快速进位加法器实现;
回写(Write_Back):数据回写,把计算完成的数据写回到新的像素memory中,进行更新;
部分乘积结果Multiplier1_Partial_Product_Arrays:部分积累加,完成单个像素与某系数的乘法,部分积基于成熟的booth乘法器,累加器基于成熟的加法树算法,优化关键路径时序与降低面积开销;
像素线Pixel_Line:像素缓冲器;
系数线Weight_Line:权重系数缓冲器;
加法树阵列Adder_Tree_Arrays:加法树阵列;
进一步的,对于图1的卷积加速器的工作原理解释:
第一步:单个时钟周期内,控制器(HOST Controller)访问像素矩阵存储器(Pixel_Matrix_Memory)读出;同时,像素数据(pixel)预先调入到像素线缓冲器1/2(Pixel_Line1/2),访问系数矩阵存储器(Weight_Matrix_Memory)读出,权重系数(weight)预先调入到系数线缓冲器1/2(Weight_Line1/2);
第二步:然后控制器(HOST Controller)控制参数,使能像素线缓冲器Pixel_Line的某通道像素数据与系数线缓冲器Weight_Line权重系数进行卷积运算:利用乘累加器MAC单元,被乘数(单个像素)与乘数(系数)的不同二进制位进行基于booth乘法操作,得到最少的部分积(Partial Product),再进行基于加法树(Adder_Tree)部分积累加,完成单个像素与系数的乘法;同时,其余像素与对应的系数进行乘累加MAC操作,使用其余的并行的MAC阵列的单元;
第三步:其次,将乘加矩阵(MAC_Arrays)计算的累加结果进行再求和,得到原来某通道像素矩阵的中心像素;
第四步:数据回写:把得到的最新数据回写到特征像素存储器(First_Feature_Pixel_Matrix_Memory)矩阵的中心位置,进行数据更新;特征像素存储器,用于存储像素矩阵与卷积核进行卷积滤波后的特征值。
最终矩阵卷积操作结束。且卷积层后面跟随着激活层,比如ReLU激活层。
表1矩阵卷积加速器的流水线结构
整个数据处理包括5个步骤:
流水步骤1,像素/系数存储访问(获取像素,系数);
流水步骤2,像素/系数线缓冲器访问(把需要卷积的像素矩阵与系数矩阵调入到像素,系数缓冲器);
流水步骤3,乘累加运算阵列(单个像素点数据与系数的卷积,并且MAC阵列单元同时工作);
流水步骤4,快速加法阵列(把多个像素点与对应系数的乘法结果进行相加);
流水步骤5,回写(将第一次卷积滤波后的结果写到特征存储器,准备后面进行降采样池化操作)。
即把整个任务划分为5个流水步骤,尽管每个任务(输入像素卷积滤波以及滤波后结果回写)仍然需要5个时钟周期,但是,当整个流水线充满后,保证每个时钟周期,均完成将吞吐出来的一个滤波后的数据回写;
流水线没有充满时候,一些模块电路不工作,即空操作,当流水线充满后,所有步骤对应的电路都会同时工作,功耗增大,但是效率最优。
表1是矩阵卷积加速器的流水线结构示意图,表1说明了,本公开的加速器在5个时钟CLCOK周期内,具体任务的流水执行情况,开始的NULL说明流水线没有被充满,等到流水线充满后,每个CLOCK周期吞吐出一个矩阵与矩阵卷积后的计算任务。
进一步的,如果想降低吞吐速度,可以通过降时钟CLOCK频率实现,此时,加速器流水线的动态能耗也得到降低,而不需要重新修改设计。
通过改变运算时钟CLOCK的频率,可以达到吞吐效率与动态功耗的折中设计:CLOCK频率越快,单位时间吞吐量越大,反而,CLOCK频率越慢,单位时间吞吐量越小。
(1)本公开提供了快速低延迟的卷积处理硬件加速电路;优化设计基本乘累加器MAC单元的速度,电路资源开销等指标,进行部分积的生成,以减少后续相加的部分积数量;把单个像素与单个系数乘的结果进行超前进位快速相加操作。
(2)本公开提供了快速卷积处理具有流水段化的特点;保证整个运算过程流程多个步骤流水化处理,单个周期完成每个流水段任务,吞吐量能满足使用要求(吞吐出像素矩阵与系数矩阵一次卷积/单个时钟CLOCK周期),并且硬件资源复用率很高;
(3)本公开提供了快速卷积处理可以根据任务吞吐要求,进行自适应升频率以及降频处理,以降低动态功耗;
(4)本公开提供了快速卷积处理具有IP(intellectual property)可以移植特点,方便移植到不同芯片***架构,应用于不同的人工智能处理的矩阵卷积任务。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (4)
1.用于神经网络卷积层的运算装置,其特征是,包括:
控制器,所述控制器分别与像素矩阵存储器、系数矩阵存储器、若干个像素缓冲器、若干个系数缓冲器和若干个乘累加器连接;
在控制器中设置时钟周期,每个流水步骤对应一个时钟周期;
第一个流水步骤:所述像素矩阵存储器接收像素矩阵的存储访问,将像素矩阵存储到像素矩阵存储器中;所述系数矩阵存储器接收系数矩阵的存储访问,将系数矩阵存储到系数矩阵存储器中;
第二个流水步骤:所述控制器从像素矩阵存储器中调取一个M行乘以M列的像素矩阵块,将调取的像素矩阵块按照1行乘以M2列的形式存储到像素缓冲器中;所述控制器从系数矩阵存储器中调取M行乘以M列的单个系数矩阵块;将调取的单个系数矩阵按照M2行乘以1列的形式存储到系数缓冲器中;
第三个流水步骤:所述控制器每次从像素缓冲器中读取第i个像素点,从系数缓冲器中读取第i个系数,控制器控制乘累加器将第i个像素点与对应第i个系数进行乘法运算,第i个像素属于被乘数,第i个系数属于乘数,被乘数与乘数的每一位逐次进行乘法,产生多个部分积,再把部分积进行累加;一共进行M2次单个像素点数据与对应卷积核系数的乘法运算;
第四个流水步骤:把生成的M2个乘法运算结果,进行加法操作,得到像素映射特征数值;其中,i是正整数;i的取值范围是1到M2;M2表示像素矩阵块中像素的个数;
第五个流水步骤:将得到像素映射特征数值回写到像素映射特征矩阵存储器中;
在第一个时钟周期内,只有第一个流水步骤开始工作;
在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;
在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;
在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;
在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;
在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
2.如权利要求1所述的装置,其特征是,所述控制器设置流水线时钟周期,流水充满后,每个时钟周期,当所有乘积均进行完累加运算后,单个时钟周期才吞吐一次乘累加结果。
3.用于神经网络卷积层的芯片,其特征是,包括所述运算装置,还包括通信接口,所述通信接口用于获取待所述运算装置处理的输入数据,还用于输出所述运算装置的运算结果。
4.用于神经网络卷积层的方法,其特征是,运用于运算装置中,所述运算装置,包括:控制器,所述控制器分别与像素矩阵存储器、系数矩阵存储器、若干个像素缓冲器、若干个系数缓冲器和若干个乘累加器连接;
所述方法包括:在控制器中设置时钟周期,每个流水步骤对应一个时钟周期;
第一个流水步骤:所述像素矩阵存储器接收像素矩阵的存储访问,将像素矩阵存储到像素矩阵存储器中;所述系数矩阵存储器接收系数矩阵的存储访问,将系数矩阵存储到系数矩阵存储器中;
第二个流水步骤:所述控制器从像素矩阵存储器中调取一个M行乘以M列的像素矩阵块,将调取的像素矩阵块按照1行乘以M2列的形式存储到像素缓冲器中;所述控制器从系数矩阵存储器中调取M行乘以M列的单个系数矩阵块;将调取的单个系数矩阵按照M2行乘以1列的形式存储到系数缓冲器中;
第三个流水步骤:所述控制器每次从像素缓冲器中读取第i个像素点,从系数缓冲器中读取第i个系数,控制器控制乘累加器将第i个像素点与对应第i个系数进行乘法运算,第i个像素属于被乘数,第i个系数属于乘数,被乘数与乘数的每一位逐次进行乘法,产生多个部分积,再把部分积进行累加;一共进行M2次单个像素点数据与对应卷积核系数的乘法运算;
第四个流水步骤:把生成的M2个乘法运算结果,进行加法操作,得到像素映射特征数值;其中,i是正整数;i的取值范围是1到M2;M2表示像素矩阵块中像素的个数;
第五个流水步骤:将得到像素映射特征数值回写到像素映射特征矩阵存储器中;
在第一个时钟周期内,只有第一个流水步骤开始工作;
在第二个时钟周期内,第二流水步骤开始工作;第一个流水步骤继续工作;
在第三个时钟周期内,第三流水步骤开始工作;第一和第二流水步骤继续工作;
在第四个时钟周期内,第四流水步骤开始工作,第一、第二和第三流水步骤继续工作;
在第五个时钟周期内,第五流水步骤开始工作,第一、第二、第三和第四流水步骤继续工作;
在后续的每个时钟周期内,所有的流水步骤均开始工作,从而实现每个时钟周期均有像素映射特征数值回写到像素映射特征矩阵存储器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910142474.2A CN109948787B (zh) | 2019-02-26 | 2019-02-26 | 用于神经网络卷积层的运算装置、芯片及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910142474.2A CN109948787B (zh) | 2019-02-26 | 2019-02-26 | 用于神经网络卷积层的运算装置、芯片及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109948787A true CN109948787A (zh) | 2019-06-28 |
CN109948787B CN109948787B (zh) | 2021-01-08 |
Family
ID=67007737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910142474.2A Expired - Fee Related CN109948787B (zh) | 2019-02-26 | 2019-02-26 | 用于神经网络卷积层的运算装置、芯片及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109948787B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111126580A (zh) * | 2019-11-20 | 2020-05-08 | 复旦大学 | 采用Booth编码的多精度权重系数神经网络加速芯片运算装置 |
WO2021078210A1 (zh) * | 2019-10-25 | 2021-04-29 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
US20160019455A1 (en) * | 2014-07-16 | 2016-01-21 | Qualcomm Incorporated | Decomposing convolution operation in neural networks |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN107517046A (zh) * | 2017-06-27 | 2017-12-26 | 山东师范大学 | 一种多时钟选择切换电路、时钟切换芯片及方法 |
CN107729994A (zh) * | 2017-11-28 | 2018-02-23 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
CN108304923A (zh) * | 2017-12-06 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
CN108416434A (zh) * | 2018-02-07 | 2018-08-17 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
CN108701015A (zh) * | 2017-11-30 | 2018-10-23 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、芯片、设备及相关方法 |
-
2019
- 2019-02-26 CN CN201910142474.2A patent/CN109948787B/zh not_active Expired - Fee Related
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160019455A1 (en) * | 2014-07-16 | 2016-01-21 | Qualcomm Incorporated | Decomposing convolution operation in neural networks |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN108268422A (zh) * | 2016-12-31 | 2018-07-10 | 英特尔公司 | 用于处理非常稀疏和超稀疏矩阵数据的硬件加速器架构 |
CN107517046A (zh) * | 2017-06-27 | 2017-12-26 | 山东师范大学 | 一种多时钟选择切换电路、时钟切换芯片及方法 |
CN107729994A (zh) * | 2017-11-28 | 2018-02-23 | 北京地平线信息技术有限公司 | 执行卷积神经网络中的卷积层的运算的方法和装置 |
CN108701015A (zh) * | 2017-11-30 | 2018-10-23 | 深圳市大疆创新科技有限公司 | 用于神经网络的运算装置、芯片、设备及相关方法 |
CN108304923A (zh) * | 2017-12-06 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 卷积运算处理方法及相关产品 |
CN108416434A (zh) * | 2018-02-07 | 2018-08-17 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
Non-Patent Citations (2)
Title |
---|
SOLOVYEV等: "FPGA implementation of convolutional neural networks with fixed-point calculations", 《HTTPS://ARXIV.ORG/PDF/1808.09945.PDF》 * |
方睿等: "卷积神经网络的FPGA并行加速方案设计", 《计算机工程与应用》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021078210A1 (zh) * | 2019-10-25 | 2021-04-29 | 安徽寒武纪信息科技有限公司 | 用于神经网络运算的计算装置、方法、集成电路和设备 |
CN111126580A (zh) * | 2019-11-20 | 2020-05-08 | 复旦大学 | 采用Booth编码的多精度权重系数神经网络加速芯片运算装置 |
CN111126580B (zh) * | 2019-11-20 | 2023-05-02 | 复旦大学 | 采用Booth编码的多精度权重系数神经网络加速芯片运算装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109948787B (zh) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106951395B (zh) | 面向压缩卷积神经网络的并行卷积运算方法及装置 | |
CN110909869B (zh) | 一种基于脉冲神经网络的类脑计算芯片 | |
CN108108809B (zh) | 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法 | |
CN107578095B (zh) | 神经网络计算装置及包含该计算装置的处理器 | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
WO2020134824A1 (zh) | 一种类脑计算*** | |
CN110084739A (zh) | 一种基于cnn的画质增强算法的fpga并行加速*** | |
CN107729989A (zh) | 一种用于执行人工神经网络正向运算的装置及方法 | |
CN109472356A (zh) | 一种可重构神经网络算法的加速装置及方法 | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
CN107145939A (zh) | 一种神经网络优化方法及装置 | |
Wu et al. | A flexible and efficient FPGA accelerator for various large-scale and lightweight CNNs | |
CN112465110B (zh) | 一种卷积神经网络计算优化的硬件加速装置 | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速***与方法 | |
CN106875011A (zh) | 二值权重卷积神经网络加速器的硬件架构及其计算流程 | |
CN110852428A (zh) | 基于fpga的神经网络加速方法和加速器 | |
CN108647773A (zh) | 一种可重构卷积神经网络的硬件互连架构 | |
CN108665063A (zh) | 用于bnn硬件加速器的双向并行处理卷积加速*** | |
CN113128675B (zh) | 一种基于脉冲神经网络的无乘法卷积调度器及其硬件实现方法 | |
CN113033794B (zh) | 基于深度可分离卷积的轻量级神经网络硬件加速器 | |
CN109948787A (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
CN110321997A (zh) | 高并行度计算平台、***及计算实现方法 | |
CN110147252A (zh) | 一种卷积神经网络的并行计算方法及装置 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN108320018A (zh) | 一种人工神经网络运算的装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210108 |