CN110188869B - 一种基于卷积神经网络算法的集成电路加速计算的方法及*** - Google Patents

一种基于卷积神经网络算法的集成电路加速计算的方法及*** Download PDF

Info

Publication number
CN110188869B
CN110188869B CN201910368448.1A CN201910368448A CN110188869B CN 110188869 B CN110188869 B CN 110188869B CN 201910368448 A CN201910368448 A CN 201910368448A CN 110188869 B CN110188869 B CN 110188869B
Authority
CN
China
Prior art keywords
data
convolution kernel
unit
input
multiplication
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.)
Active
Application number
CN201910368448.1A
Other languages
English (en)
Other versions
CN110188869A (zh
Inventor
王成
龙舟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongke Huicheng Technology Co ltd
Original Assignee
Beijing Zhongke Huicheng Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Huicheng Technology Co ltd filed Critical Beijing Zhongke Huicheng Technology Co ltd
Priority to CN201910368448.1A priority Critical patent/CN110188869B/zh
Publication of CN110188869A publication Critical patent/CN110188869A/zh
Application granted granted Critical
Publication of CN110188869B publication Critical patent/CN110188869B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明属于人工智能技术领域,尤其涉及一种基于卷积神经网络算法的集成电路加速计算的方法及***,其中,该***包括将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列,乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理,并分别输出于数据存储单元,本发明解决了现有技术存在由于卷积神经网络的一个缺点是其运算量巨大,在集成电路或嵌入式设备上不容易实时运算,以串行架构为主的传统处理器不容易达到要求,因此,如何快速完成卷积神经网络运算就是需要解决的重要问题,本发明具有读取次数少和运算吞吐率高、宽带要求低的特点,并大幅提高了卷积神经网络运算的实时性的有益技术效果。

Description

一种基于卷积神经网络算法的集成电路加速计算的方法及 ***
技术领域
本发明属于人工智能技术领域,尤其涉及一种基于卷积神经网络算法的集成电路加速计算的方法,同时,本发明还提供一种基于卷积神经网络算法的集成电路加速计算的***。
背景技术
卷积神经网络是一种前馈神经网络,常应用于图像识别,一般包括卷积层、池化层和全连接层,卷积层的卷积操作是,卷积核中的每一个权值与其对应的输入数据点对点相乘,然后将点乘结果累加,得到输出的一个数据,之后,根据卷积层的步长设定,滑动卷积核,重复上述操作,现有技术存在由于卷积神经网络的一个缺点是其运算量巨大,在集成电路或嵌入式设备上不容易实时运算,以串行架构为主的传统处理器不容易达到要求,因此,如何快速完成卷积神经网络运算就是需要解决的重要问题。
发明内容
本发明提供一种基于卷积神经网络算法的集成电路加速计算的方法及***,以解决上述背景技术中提出现有技术存在由于卷积神经网络的一个缺点是其运算量巨大,在集成电路或嵌入式设备上不容易实时运算,以串行架构为主的传统处理器不容易达到要求,因此,如何快速完成卷积神经网络运算就是需要解决的重要问题。
本发明所解决的技术问题采用以下技术方案来实现:一种基于卷积神经网络算法的集成电路加速计算的方法,包括:
将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列;
乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理,并分别输出于数据存储单元。
进一步,所述方法还包括:
将至少一个卷积核数据分别输入相应的乘法累加器单元;
将输入队列中的外部数据按照队列顺序分别输入相应的乘法累加器单元;
通过多级流水线技术,将每列乘法累加器单元中的卷积核数据和外部数据同时并行地进行卷积运算。
进一步,所述方法还包括:
所述卷积核数据为预先设计的卷积核矩阵,所述外部数据为外部输入设备连续产生的数据;
将预先设计的卷积核矩阵和外部输入设备连续产生的数据经外部存储读取引擎读入,将读取引擎读入的数据中的卷积核和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列,卷积核数据输入队列将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元,数据预处理缓冲区将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元,相应的数据输入队列将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元,乘法累加器单元队列的相应的乘法累加器进行相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储。
进一步,所述外部输入设备连续产生的数据为外部数据,则卷积神经网络CNN运算函数为:
卷积运算的结果=卷积核矩阵x外部数据矩阵;
卷积核矩阵:线性关系的卷积核数据矩阵;
外部数据矩阵:具有二维数据结构的外部数据矩阵,其中包含MxN个外部数据;
卷积运算的结果:具有二维数据结构的卷积运算结果矩阵,其中包含MxN个卷积运算结果,所述卷积运算结果为卷积核数据与其相应的外部数据的乘积。
进一步,所述乘法累加器单元仅限一列乘法累加器单元队列。
进一步,所述乘法累加器单元组成一个数据矩阵顺序数据处理,所述顺序数据处理方式包括:
按照由上到下的顺序处理数据,或者;
按照由下到上的顺序处理数据,或者;
按照由左到右的顺序处理数据,或者;
按照由右到左的顺序处理数据。
进一步,所述乘法累加器单元的输入处理包括初始化阶段和后续阶段,所述初始化阶段包括第1个时钟周期到第N*N个时钟周期,所述后续阶段包括第N*N个时钟周期以后的时钟周期。
所述初始化阶段采用外部数据流动闭环的第一输入规则,所述后续阶段采用外部数据流动闭环的第二输入规则;
所述第一输入规则包括:
一个乘法累加器单元运算以前;
若为第1个乘法累加器单元的第1次到第N-M次,则读取外部数据首部预处理缓冲区,所述预处理缓冲区数据来自第1列到第N列与第1行到第N-M行数据;
若为第1个乘法累加器单元的第N-M+1次到第N次,则读取第一数据输入队列并按照顺序重复循环;
若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;
若不是第1个的乘法累加器的第N-M+1次到第N次,则读取对应的数据的输入队列并按照顺序重复循环。
所述第二输入规则包括:
一个乘法累加器单元运算以前;
若第1个乘法累加器单元的第1次到第N-M次,则读取最后一个乘法累加器单元输出的数据;
若第1个乘法累加器单元的第N-M+1次到第N次,则读取数据的输入队列1并按照顺序重复循环;
若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;
若不是第1个的乘法累加器,第N-M+1次到第N次,读取相应的数据的输入队列,按照顺序重复循环。
若一个乘法累加器单元完成运算,则按照一个数据流动闭环的完成运算规则处理当前输入数据:
所述完成运算规则包括:
若为第1次到第M次输入数据,则直接丢弃;
若为第M+1次到第N次输入的数据,如果不是最后一个乘法累加器,顺序向下移动到临近的乘法累加器单元;
若为第M+1次到第N次输入的数据,如果是最后一个乘法累加器,移动到第一个乘法累加器单元。
同时,本发明还提供一种基于卷积神经网络算法的集成电路加速计算的***,包括:外部存储器、外部存储器读取引擎、输入数据分配控制器、输入数据首部预处理缓冲单元、一列乘法累加器单元队列、卷积核数据输入队列单元、数据输入队列单元、输出数据存储单元;
所述外部存储器用于存储预先设计的卷积核矩阵和外部输入设备连续产生的数据;
所述外部存储器读取引擎用于将外部存储器中的卷积核矩阵和外部数据读取并输出至输入数据分配控制器;
所述输入数据分配控制器用于将读取引擎读入的数据中的卷积核矩阵和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列;
所述输入数据首部预处理缓冲单元用于将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元;
所述卷积核数据输入队列单元用于将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元;
所述数据输入队列单元用于将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元;
所述一列乘法累加器单元队列包括乘法累加器单元,所述乘法累加器单元用于相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储。
进一步,所述外部存储器输出连接于外部存储器读取引擎,所述外部存储器读取引擎输出连接于输入数据分配控制器,所述输入数据分配控制器一输出端输出连接于卷积核数据输入队列单元,其另一输出端输出连接于输入数据首部预处理缓冲单元和相应的数据输入队列单元,所述卷积核数据输入队列单元输出连接于一列乘法累加器单元队列卷积核输入端,所述一列乘法累加器单元队列的每一个乘法累加器单元依次连接,所述输入数据首部预处理缓冲单元连接于一列乘法累加器单元队列的数据输入端,所述一列乘法累加器单元队列的相应的乘法累加器单元分别连接于相应的数据输入队列单元,所述一列乘法累加器单元队列的相应的乘法累加器单元分别输出于输出数据存储单元相应输入端。
进一步,所述乘法累加器单元包括卷积核寄存器、外部数据寄存器、乘法器、加法器、激活函数模块;
所述卷积核寄存器和乘法器的一输入端共同接收每一个卷积核数据,所述外部数据寄存器和乘法器的另一输入端共同接收每一个外部数据,乘法器输出于加法器,所述加法器输出于激活函数模块,所述激活函数模块输出于输出数据存储单元相应端口,所述卷积核寄存器输出到下一个乘法累加器的卷积核数据输入端,所述外部数据寄存器输出到下一个乘法累加器的外部数据输入端。
本发明的有益效果为:
本专利采用将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列;乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理,并分别输出于数据存储单元,由于本发明公开了一种用于加速计算大数据量的卷积神经网络CNN运算的集成电路的设计方法,它属于实时处理大数据量(如图像处理,声音数据处理等)的一种集成电路的加速计算的设计方法,卷积核数据和数据从不同方向并行地输入到乘法累加器单元队列,各个乘法累加器单元同时并行地对流经它的数据进行处理并输出,本发明多次重复利用已经输入的数据,构造数据流动闭环,大幅减少读取外部存储器的次数,本发明通过多级流水线技术大幅提高了乘法累加器单元利用率,实现了很高的运算吞吐率,本发明的电路,能够大幅减少数据计算过程中,对读取外部存储器的数据的带宽要求,而且加速数据的卷积神经网络CNN运算,因此,本发明由于具有读取次数少和运算吞吐率高、宽带要求低的特点,因此,大幅提高了卷积神经网络运算的实时性。
附图说明
图1是本发明一种基于卷积神经网络算法的集成电路加速计算的方法的总流程图;
图2是本发明一种基于卷积神经网络算法的集成电路加速计算的方法的具体流程图;
图3是本发明一种基于卷积神经网络算法的集成电路加速计算的方法的详细流程图;
图4是本发明一种基于卷积神经网络算法的集成电路加速计算的***的***结构图;
图5是本发明一种基于卷积神经网络算法的集成电路加速计算的***的单个乘法累加器单元的示例性图示架构图;
图6是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第1个时钟周期示例性图示架构图;
图7是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第2个时钟周期示例性图示架构图;
图8是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第3个时钟周期示例性图示架构图;
图9是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第4个时钟周期示例性图示架构图;
图10是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第5个时钟周期示例性图示架构图;
图11是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第6个时钟周期示例性图示架构图;
图12是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第7个时钟周期示例性图示架构图;
图13是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第8个时钟周期示例性图示架构图;
图14是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第9个时钟周期示例性图示架构图;
图15是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第10个时钟周期示例性图示架构图;
图16是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第11个时钟周期示例性图示架构图;
图17是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第12个时钟周期示例性图示架构图;
图18是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第13个时钟周期示例性图示架构图;
图19是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第14个时钟周期示例性图示架构图;
图20是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第15个时钟周期示例性图示架构图;
图21是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第16个时钟周期示例性图示架构图;
图22是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第17个时钟周期示例性图示架构图;
图23是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第18个时钟周期示例性图示架构图;
图24是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第19个时钟周期示例性图示架构图;
图25是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第20个时钟周期示例性图示架构图;
图26是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第21个时钟周期示例性图示架构图;
图27是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第22个时钟周期示例性图示架构图;
图28是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第23个时钟周期示例性图示架构图;
图29是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第24个时钟周期示例性图示架构图;
图30是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第25个时钟周期示例性图示架构图;
图31是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第26个时钟周期示例性图示架构图;
图32是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第27个时钟周期示例性图示架构图;
图33是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第28个时钟周期示例性图示架构图;
图34是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第29个时钟周期示例性图示架构图;
图35是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第30个时钟周期示例性图示架构图;
图36是本发明一种基于卷积神经网络算法的集成电路加速计算的***的第31个时钟周期示例性图示架构图。
具体实施方式
以下结合附图对本发明做进一步描述:
图中:
S101-将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列;
S102-乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理;
S103-并分别输出于数据存储单元;
S201-将至少一个卷积核数据分别输入相应的乘法累加器单元;
S202-将输入队列中的外部数据按照队列顺序分别输入相应的乘法累加器单元;
S203-通过多级流水线技术,将每列乘法累加器单元中的卷积核数据和外部数据同时并行地进行卷积运算;
S301-将预先设计的卷积核矩阵和外部输入设备连续产生的数据经外部存储读取引擎读入;
S302-将读取引擎读入的数据中的卷积核和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列;
S303-其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列;
S304-卷积核数据输入队列将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元;
S305-数据预处理缓冲区将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元;
S306-相应的数据输入队列将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元;
S307-乘法累加器单元队列的相应的乘法累加器进行相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储;
实施例:
实施例一:如图1所示,一种基于卷积神经网络算法的集成电路加速计算的方法,包括:将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列S101;乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理S102,并分别输出于数据存储单元S103;
由于采用将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列;乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理,并分别输出于数据存储单元,由于本发明公开了一种用于加速计算大数据量的卷积神经网络CNN运算的集成电路的设计方法,它属于实时处理大数据量(如图像处理,声音数据处理等)的一种集成电路的加速计算的设计方法,卷积核数据和数据从不同方向并行地输入到乘法累加器单元队列,各个乘法累加器单元同时并行地对流经它的数据进行处理并输出,本发明多次重复利用已经输入的数据,构造数据流动闭环,大幅减少读取外部存储器的次数,本发明通过多级流水线技术大幅提高了乘法累加器单元利用率,实现了很高的运算吞吐率,本发明的电路,能够大幅减少数据计算过程中,对读取外部存储器的数据的带宽要求,而且加速数据的卷积神经网络CNN运算,因此,本发明由于具有读取次数少和运算吞吐率高、宽带要求低的特点,因此,大幅提高了卷积神经网络运算的实时性。
如图2所示,所述方法还包括:
将至少一个卷积核数据分别输入相应的乘法累加器单元S201;
将输入队列中的外部数据按照队列顺序分别输入相应的乘法累加器单元S202;
通过多级流水线技术,将每列乘法累加器单元中的卷积核数据和外部数据同时并行地进行卷积运算S203;
由于采用将至少一个卷积核数据分别输入相应的乘法累加器单元;将输入队列中的外部数据按照队列顺序分别输入相应的乘法累加器单元;通过多级流水线技术,将每列乘法累加器单元中的卷积核数据和外部数据同时并行地进行卷积运算,由于通过构造具有多个零的稀疏矩阵压缩数据,加快读取数据,构造一列乘法累加器单元队列,通过多级流水线技术,同时并行地进行卷积运算,构造多个数据的输入队列,按照特定顺序同时为多个乘法累加器单元输入数据,保证多个乘法累加器单元同时并行地进行卷积运算。
如图3所示,所述方法还包括:
所述卷积核数据为预先设计的卷积核矩阵,所述外部数据为外部输入设备连续产生的数据;将预先设计的卷积核矩阵和外部输入设备连续产生的数据经外部存储读取引擎读入S301,将读取引擎读入的数据中的卷积核和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列S302,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列S303,卷积核数据输入队列将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元S304,数据预处理缓冲区将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元S305,相应的数据输入队列将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元S306,乘法累加器单元队列的相应的乘法累加器进行相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储S307;
由于采用所述卷积核数据为预先设计的卷积核矩阵,所述外部数据为外部输入设备连续产生的数据;将预先设计的卷积核矩阵和外部输入设备连续产生的数据经外部存储读取引擎读入,将读取引擎读入的数据中的卷积核和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列,卷积核数据输入队列将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元,数据预处理缓冲区将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元S305,相应的数据输入队列将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元,乘法累加器单元队列的相应的乘法累加器进行相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储,通过上述流程卷积核数据和输入数据从不同方向并行地输入到乘法累加器单元队列,各个乘法累加器单元同时并行地对流经它的数据进行处理,通过一种用于加速计算大数据量的卷积神经网络CNN运算的集成电路的设计方法,实现了实时处理大数据量(如图像处理,声音数据处理等)的一种集成电路的加速计算的设计实现。
所述外部输入设备连续产生的数据为外部数据,则卷积神经网络CNN运算函数为:
卷积运算的结果=卷积核矩阵x外部数据矩阵;
卷积核矩阵:线性关系的卷积核数据矩阵;
外部数据矩阵:具有二维数据结构的外部数据矩阵,其中包含MxN个外部数据;
卷积运算的结果:具有二维数据结构的卷积运算结果矩阵,其中包含MxN个卷积运算结果,所述卷积运算结果为卷积核数据与其相应的外部数据的乘积。
由于采用所述外部输入设备连续产生的数据为外部数据,则卷积神经网络CNN运算函数为:卷积运算的结果=卷积核矩阵x外部数据矩阵;
举例说明:
关于图像的卷积神经网络CNN运算的,其公式为:卷积运算的结果=卷积核数据*像素矩阵,其中:
卷积核数据:
卷积核数据1 卷积核数据4 卷积核数据7
卷积核数据2 卷积核数据5 卷积核数据8
卷积核数据3 卷积核数据6 卷积核数据9
像素矩阵:
像素1 像素11 像素21
像素2 像素12 像素22
像素3 像素13 像素23
卷积运算是累加下表的乘法结果,然后通过激活函数,输出结果。
卷积核数据1*像素1 卷积核数据4*像素11 卷积核数据7*像素21
卷积核数据2*像素2 卷积核数据5*像素12 卷积核数据8*像素22
卷积核数据3*像素3 卷积核数据6*像素13 卷积核数据9*像素23
所述乘法累加器单元仅限一列乘法累加器单元队列。
由于采用所述乘法累加器单元仅限一列乘法累加器单元队列,由于只存在一列乘法累加器单元队列,电路实现简单清晰。
所述乘法累加器单元组成一个数据矩阵顺序数据处理。
所述顺序数据处理方式包括:
按照由上到下的顺序处理数据,或者;
按照由下到上的顺序处理数据,或者;
按照由左到右的顺序处理数据,或者;
按照由右到左的顺序处理数据。
由于采用所述乘法累加器单元组成一个数据矩阵顺序数据处理,所述顺序数据处理方式包括:按照由上到下的顺序处理数据,或者按照由下到上的顺序处理数据,或者按照由左到右的顺序处理数据,或者按照由右到左的顺序处理数据,由于处理数据组成一个数据矩阵,按照由上到下的顺序处理数据或者由下到上的顺序处理数据,按照由左到右的顺序处理数据或者按照由右到左的顺序处理数据,所以这个架构适合实时处理采集数据。
所述乘法累加器单元的输入处理包括初始化阶段和后续阶段,所述初始化阶段包括第1个时钟周期到第N*N个时钟周期,所述后续阶段包括第N*N个时钟周期以后的时钟周期。
所述初始化阶段采用输入数据流动闭环的第一输入规则,所述后续阶段采用输入数据流动闭环的第二输入规则;
所述第一输入规则包括:
一个乘法累加器单元运算以前;
若为第1个乘法累加器单元的第1次到第N-M次,则读取输入数据首部预处理缓冲区,所述预处理缓冲区数据来自第1列到第N列,第1行到第N-M行数据;
若为第1个乘法累加器单元的第N-M+1次到第N次,则读取数据的输入队列1并按照顺序重复循环;
若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;
若不是第1个的乘法累加器的第N-M+1次到第N次,则读取对应的数据的输入队列并按照顺序重复循环。
由于采用所述乘法累加器单元的输入处理包括初始化阶段和后续阶段,所述初始化阶段包括第1个时钟周期到第N*N个时钟周期,所述初始化阶段采用输入数据流动闭环的第一输入规则,所述后续阶段采用输入数据流动闭环的第二输入规则,由于所述第一输入规则包括一个乘法累加器单元运算以前;若为第1个乘法累加器单元的第1次到第N-M次,则读取输入数据首部预处理缓冲区,所述预处理缓冲区数据来自第1列到第N列,第1行到第N-M行数据;若为第1个乘法累加器单元的第N-M+1次到第N次,则读取数据的输入队列1并按照顺序重复循环;若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;若不是第1个的乘法累加器的第N-M+1次到第N次,则读取对应的数据的输入队列并按照顺序重复循环,由于第1个时钟周期到第N*N个时钟周期,作为初始化阶段,设计特定的图像数据流动闭环的输入规则,一个乘法累加器单元运算以前,按照以下4条规则读取数据:规则(a):对于第1个乘法累加器单元,第1次到第N-M次,读取输入数据首部预处理缓冲区。预处理缓冲区数据来自第1列到第N列,第1行到第N-M行数据;规则(b):对于第1个乘法累加器单元,第N-M+1次到第N次,读取数据的输入队列1。按照这个顺序重复循环;规则(c):对于不是第1个的乘法累加器,第1次到第N-M次,读取上一级乘法累加器单元输出的数据,如果没有则停止运算;规则(d):对于不是第1个的乘法累加器,第N-M+1次到第N次,读取对应的数据的输入队列。按照这个顺序重复循环。
所述第二输入规则包括:
一个乘法累加器单元运算以前;
若第1个乘法累加器单元的第1次到第N-M次,则读取最后一个乘法累加器单元输出的数据;
若第1个乘法累加器单元的第N-M+1次到第N次,则读取数据的输入队列1并按照顺序重复循环;
若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;
若不是第1个的乘法累加器,第N-M+1次到第N次,读取对应的数据的输入队列,按照顺序重复循环。
由于采用所述乘法累加器单元的输入处理包括初始化阶段和后续阶段,所述后续阶段包括第N*N个时钟周期以后的时钟周期,所述后续阶段采用输入数据流动闭环的第二输入规则;所述第二输入规则包括:一个乘法累加器单元运算以前;若第1个乘法累加器单元的第1次到第N-M次,则读取最后一个乘法累加器单元输出的数据;若第1个乘法累加器单元的第N-M+1次到第N次,则读取数据的输入队列1并按照顺序重复循环;若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;若不是第1个的乘法累加器,第N-M+1次到第N次,读取对应的数据的输入队列,按照顺序重复循环,由于第N*N个时钟周期以后,设计特定的数据流动闭环的输入规则。一个乘法累加器单元运算以前,按照以下4条规则读取数据:规则(a):对于第1个乘法累加器单元,第1次到第N-M次,读取最后一个乘法累加器单元输出的数据;规则(b):对于第1个乘法累加器单元,第N-M+1次到第N次,读取数据的输入队列1。按照这个顺序重复循环;规则(c):对于不是第1个的乘法累加器,第1次到第N-M次,读取上一级乘法累加器单元输出的数据,如果没有则停止运算;规则(d):对于不是第1个的乘法累加器,第N-M+1次到第N次,读取对应的数据的输入队列。按照这个顺序重复循环。
若一个乘法累加器单元完成运算,则按照一个数据流动闭环的完成运算规则处理当前输入数据:
所述完成运算规则包括:
若为第1次到第M次的输入数据,则直接丢弃;
若为第M+1次到第N次输入的数据,如果不是最后一个乘法累加器,顺序向下移动到临近的乘法累加器单元;
若为第M+1次到第N次输入的数据,如果是最后一个乘法累加器,移动到第一个乘法累加器单元。
由于采用若一个乘法累加器单元完成运算,则按照一个数据流动闭环的完成运算规则处理当前输入数据:所述完成运算规则包括:若为第1次到第M次的输入数据,则直接丢弃;若为第M+1次到第N次输入的数据,如果不是最后一个乘法累加器,顺序向下移动到临近的乘法累加器单元;若为第M+1次到第N次输入的数据,如果是最后一个乘法累加器,移动到第一个乘法累加器单元,由于假设卷积核是N*N的正方形矩阵,卷积核的宽度是N,移动步长是M,而且N>M。假设乘法累加器单元队列里的每个单元,按照由上到下的顺序排列,第一个乘法累加器在最上面,最后一个乘法累加器在最下面,一个乘法累加器单元完成运算以后,按照以下3条规则处理当前输入的数据:规则(a):对于第1次到第M次输入的数据,直接丢弃;规则(b):对于第M+1次到第N次输入的数据,如果不是最后一个乘法累加器,顺序向下移动到临近的乘法累加器单元;规则(c):对于第M+1次到第N次输入的数据,如果是最后一个乘法累加器,移动到第一个乘法累加器单元,这样构造了一个数据流动闭环。
同时,本发明还提供一种基于卷积神经网络算法的集成电路加速计算的***,包括:外部存储器、外部存储器读取引擎、输入数据分配控制器、输入数据首部预处理缓冲单元、一列乘法累加器单元队列、卷积核数据输入队列单元、数据输入队列单元、输出数据存储单元;
所述外部存储器用于存储预先设计的卷积核矩阵和外部输入设备连续产生的数据;
所述外部存储器读取引擎用于将外部存储器中的卷积核矩阵和外部数据读取并输出至输入数据分配控制器;
所述输入数据分配控制器用于将读取引擎读入的数据中的卷积核矩阵和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列;
所述输入数据首部预处理缓冲单元用于将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元;
所述卷积核数据输入队列单元用于将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元;
所述数据输入队列单元用于将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元;
所述一列乘法累加器单元队列包括乘法累加器单元,所述乘法累加器单元用于相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储
如图4所示,所述外部存储器输出连接于外部存储器读取引擎,所述外部存储器读取引擎输出连接于输入数据分配控制器,所述输入数据分配控制器一输出端输出连接于卷积核数据输入队列单元,其另一输出端输出连接于输入数据首部预处理缓冲单元和相应的数据输入队列单元,所述卷积核数据输入队列单元输出连接于一列乘法累加器单元队列卷积核输入端,所述一列乘法累加器单元队列的每一个乘法累加器单元依次连接,所述输入数据首部预处理缓冲单元连接于一列乘法累加器单元队列的数据输入端,所述一列乘法累加器单元队列的相应的乘法累加器单元分别连接于相应的数据输入队列单元,所述一列乘法累加器单元队列的相应的乘法累加器单元分别输出于输出数据存储单元相应输入端。
同时,本发明还提供一种基于卷积神经网络算法的集成电路加速计算的***,包括:外部存储器、外部存储器读取引擎、输入数据分配控制器、输入数据首部预处理缓冲区、乘法累加器单元、卷积核数据输入队列、输入数据的输入队列、输出数据存储单元;所述外部存储器用于存储预先设计的卷积核矩阵和外部输入设备连续产生的数据;所述外部存储器读取引擎用于将外部存储器中的卷积核和外部数据读取并输出至输入数据分配控制器;所述输入数据分配控制器用于将卷积核和外部数据分别分配于相应的卷积核数据输入队列和相应的输入数据首部预处理缓冲区;所述乘法累加器单元包括乘法累加器,所述乘法累加器单元的每一个乘法累加器用于进行相应的乘法累加运算并将乘法累加运算的结果分别输出于输出数据存储单元,由于该电路包括:1-外部存储器读取引擎;2-输入数据分配控制器;3-输出数据存储单元;4-输入数据首部预处理缓冲区;5-一列乘法累加器单元队列;6-卷积核数据输入队列;7-数据的输入队列,实现了卷积核数据和数据从不同方向并行地输入到乘法累加器单元队列,各个乘法累加器单元同时并行地对流经它的数据进行处理,因此,实现了实时处理大数据量(如图像处理,声音数据处理等)的一种集成电路的加速计算。
所述乘法累加器单元为一列乘法累加器单元队列。
如图5所示,所述乘法累加器单元包括卷积核寄存器、外部数据寄存器、乘法器、加法器、激活函数模块;
所述卷积核寄存器和乘法器的一输入端共同接收每一个卷积核数据,所述外部数据寄存器和乘法器的另一输入端共同接收每一个外部数据,乘法器输出于加法器,所述加法器输出于激活函数模块,所述激活函数模块输出于输出数据存储单元相应端口,所述卷积核寄存器输出到下一个乘法累加器的卷积核数据输入端,所述外部数据寄存器输出到下一个乘法累加器的外部数据输入端。
由于采用所述乘法累加器包括卷积核寄存器、外部数据寄存器、乘法器、加法器、激活函数模块;所述卷积核寄存器和乘法器的一输入端共同接收每一个卷积核数据,所述外部数据寄存器和乘法器的另一输入端共同接收每一个外部数据,乘法器输出于加法器,所述加法器输出于激活函数模块,所述激活函数模块输出于输出数据存储单元相应端口,所述卷积核寄存器输出到下一个乘法累加器的卷积核数据输入端,所述外部数据寄存器输出到下一个乘法累加器的外部数据输入端,由于构造多个数据的输入队列,按照特定顺序同时为多个乘法累加器单元输入数据,保证多个乘法累加器单元同时并行地进行卷积运算。
实施例二:
以下是以图像处理为例来说明一种基于卷积神经网络算法的集成电路加速计算的方法及***,如下:
步骤1:假设卷积核数据矩阵是N*N,滑动步长是M。例如:N=3,M=1;
预先设计的卷积核数据矩阵放入外部存储器。例如:
卷积核数据1 卷积核数据4 卷积核数据7
卷积核数据2 卷积核数据5 卷积核数据8
卷积核数据3 卷积核数据6 卷积核数据9
步骤2:处理摄像头连续输出的图像数据,把相邻图像的像素相减,产生更多的零,压缩稀疏矩阵,放入外部存储器。例如摄像头输出一幅图像,这是前3列数据:
像素1 像素11 像素21
像素2 像素12 像素22
像素3 像素13 像素23
像素4 像素14 像素24
像素5 像素15 像素25
像素6 像素16 像素26
像素7 像素17 像素27
像素8 像素18 像素28
像素9 像素19 像素29
像素10 像素20 像素30
像素31 像素41 像素51
像素32 像素42 像素52
像素33 像素43 像素53
像素34 像素44 像素54
像素35 像素45 像素55
像素36 像素46 像素56
步骤3:
读取引擎把外部存储器的数据读入缓冲区,解压缩稀疏矩阵。
步骤4:
输入数据分配控制器把卷积核数据放入队列。例如:
卷积核数据9
卷积核数据8
卷积核数据7
卷积核数据6
卷积核数据5
卷积核数据4
卷积核数据3
卷积核数据2
卷积核数据1
步骤5:
输入数据分配控制器,把第1列到第N列,第1行到第N-1行的图像数据,放入首部预处理缓冲区。例如:
像素1 像素2 像素11 像素12 像素21 像素22
步骤6:
输入数据分配控制器,把第1列到第N列,第N行的图像数据,放入图像数据的输入队列1。例如:
Figure BDA0002049037950000171
步骤7:
输入数据分配控制器,把第1列到第N列,第N+1行的图像数据,放入图像数据的输入队列2。例如:
Figure BDA0002049037950000172
步骤8:
输入数据分配控制器,把第1列到第N列,第N+2行的图像数据,放入图像数据的输入队列3。例如:
Figure BDA0002049037950000173
步骤9:
输入数据分配控制器,把第1列到第N列,第N+3行的图像数据,放入图像数据的输入队列4。例如:
Figure BDA0002049037950000174
步骤10:
输入数据分配控制器,把第1列到第N列,第N+4行的图像数据,放入图像数据的输入队列5。例如:
Figure BDA0002049037950000175
步骤11:
如图6所示,该图是初始化以后的,第1个时钟周期,示例性图示架构;
步骤12:
如图7所示,该图是第2个时钟周期;
单元1读入卷积核数据队列的卷积核数据1;
单元1读入数据首部预处理缓冲区的像素1;
单元1开始乘法运算,累加结果:卷积核数据1*像素1;
一个乘法累加器单元完成运算以后,按照以下3条规则处理当前输入的图像数据:
假设卷积核是3*3的正方形矩阵,卷积核的宽度是3,移动步长是1,
规则(a):对于第1次输入的图像数据,直接丢弃。
规则(b):对于第2次到第3次输入的图像数据,如果不是最后一个乘法累加器,顺序向下移动到临近的乘法累加器单元。
规则(c):对于第2次到第3次输入的图像数据,如果是最后一个乘法累加器,移动到第一个乘法累加器单元,这样构造了一个图像数据流动闭环。
该图的这个箭头的数字1表示第1次。所以运算完成以后,直接丢弃像素1。
步骤13:
如图8所示,该图是第3个时钟周期;
卷积核数据1移动到缓冲寄存器;
单元1读入卷积核数据2;
单元1读入像素2;
单元1开始乘法运算,累加结果:卷积核数据2*像素2;
该图的这个箭头的数字2表示第2次。所以运算完成以后,像素2将移动到乘法累加单元2。
步骤14:
如图9所示,下图是第4个时钟周期,卷积核数据2移动到缓冲寄存器;
单元1读入卷积核数据3,单元2读入卷积核数据1;
单元1读入像素3,单元2读入像素2;
单元1,2开始乘法运算,累加结果;
卷积核数据3*像素3,卷积核数据1*像素2;
步骤15:
如图10所示,该图是第5个时钟周期,卷积核数据1,3移动到缓冲寄存器;
单元1读入卷积核数据4,单元2读入卷积核数据2;
单元1读入像素11,单元2读入像素3;
单元1,2开始乘法运算,累加结果;
卷积核数据4*像素11,卷积核数据2*像素3;
步骤16:
如图11所示,该图是第6个时钟周期,卷积核数据2,4移动到缓冲寄存器;
单元1读入卷积核数据5,单元2读入卷积核数据3,单元3读入卷积核数据1,
单元1读入像素12,单元2读入像素4,单元3读入像素3,
单元1,2,3开始乘法运算,累加结果;
卷积核数据5*像素12,卷积核数据3*像素4,卷积核数据1*像素3;
步骤17:
如图12所示,该图是第7个时钟周期,卷积核数据1,3,5移动到缓冲寄存器;
单元1读入卷积核数据6,单元2读入卷积核数据4,单元3读入卷积核数据2;
单元1读入像素13,单元2读入像素12,单元3读入像素4;
单元1,2,3开始乘法运算,累加结果;
卷积核数据6*像素13,卷积核数据4*像素12,卷积核数据2*像素4;
步骤18:
如图13所示,该图是第8个时钟周期,卷积核数据2,4,6移动到缓冲寄存器;
单元1读入卷积核数据7,单元2读入卷积核数据5,单元3读入卷积核数据3,单元4读入卷积核数据1;
单元1读入像素21,单元2读入像素13,单元3读入像素5,单元4读入像素4;
单元1,2,3,4开始乘法运算,累加结果;
卷积核数据7*像素21,卷积核数据5*像素13,卷积核数据3*像素5,卷积核数据1*像素4;
步骤19:
如图14所示,该图是第9个时钟周期,卷积核数据1,3,5,7移动到缓冲寄存器;
单元1读入卷积核数据8,单元2读入卷积核数据6,单元3读入卷积核数据4,单元4读入卷积核数据2;
单元1读入像素22,单元2读入像素14,单元3读入像素13,单元4读入像素5,
单元1,2,3,4开始乘法运算,累加结果;
卷积核数据8*像素22,卷积核数据6*像素14,卷积核数据4*像素13,卷积核数据2*像素5;
步骤20:
如图15所示,该图是第10个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据9,单元2读入卷积核数据7,单元3读入卷积核数据5,单元4读入卷积核数据3,单元5读入卷积核数据1;
单元1读入像素23,单元2读入像素22,单元3读入像素14,单元4读入像素6,单元2读入像素5;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据9*像素23,卷积核数据7*像素22,卷积核数据5*像素14,卷积核数据3*像素6,卷积核数据1*像素5;
步骤21:
如图16所示,该图是第11个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元2读入卷积核数据8,单元3读入卷积核数据6,单元4读入卷积核数据4,单元5读入卷积核数据2;
单元2读入像素23,单元3读入像素15,单元4读入像素14,单元5读入像素6,
单元1的累加结果通过激活函数,输出;
单元2,3,4,5开始乘法运算,累加结果:卷积核数据8*像素23,卷积核数据6*像素15,卷积核数据4*像素14,卷积核数据2*像素6;
步骤22:
如图17所示,该图是第12个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据1,单元2读入卷积核数据9,单元3读入卷积核数据7,单元4读入卷积核数据5,单元5读入卷积核数据3;
单元1读入像素6,单元2读入像素24,单元3读入像素23,单元4读入像素15,单元5读入像素7;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据1*像素6,卷积核数据9*像素24,卷积核数据7*像素23,卷积核数据5*像素15,卷积核数据3*像素7;
步骤23:
如图18所示,该图是第13个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据2,单元3读入卷积核数据8,单元4读入卷积核数据6,单元5读入卷积核数据4;
单元1读入像素7,单元3读入像素24,单元4读入像素16,单元5读入像素15,
单元2的累加结果通过激活函数,输出;
单元1,3,4,5开始乘法运算,累加结果:卷积核数据2*像素7,卷积核数据8*像素24,卷积核数据6*像素16,卷积核数据4*像素15;
步骤24:
如图19所示,该图是第14个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据3,单元2读入卷积核数据1,单元3读入卷积核数据9,单元4读入卷积核数据7,单元5读入卷积核数据5;
单元1读入像素8,单元2读入像素7,单元3读入像素25,单元4读入像素24,单元5读入像素16;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据3*像素8,卷积核数据1*像素7,卷积核数据9*像素25,卷积核数据7*像素24,卷积核数据5*像素16;
步骤25:
如图20所示,该图是第15个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据4,单元2读入卷积核数据2,单元4读入卷积核数据8,单元5读入卷积核数据6;
单元1读入像素16,单元2读入像素8,单元4读入像素25,单元5读入像素17,
单元3的累加结果通过激活函数,输出;
单元1,2,4,5开始乘法运算,累加结果:卷积核数据4*像素16,卷积核数据2*像素8,卷积核数据8*像素25,卷积核数据6*像素17;
步骤26:
如图21所示,该图是第16个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据5,单元2读入卷积核数据3,单元3读入卷积核数据1,单元4读入卷积核数据9,单元5读入卷积核数据7;
单元1读入像素17,单元2读入像素9,单元3读入像素8,单元4读入像素26,单元5读入像素25;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据5*像素17,卷积核数据3*像素9,卷积核数据1*像素8,卷积核数据9*像素26,卷积核数据7*像素25;
步骤27:
如图22所示,该图是第17个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据6,单元2读入卷积核数据4,单元3读入卷积核数据2,单元5读入卷积核数据8;
单元1读入像素18,单元2读入像素17,单元3读入像素9,单元5读入像素26;
单元4的累加结果通过激活函数,输出;
单元1,2,3,5开始乘法运算,累加结果:卷积核数据6*像素18,卷积核数据4*像素17,卷积核数据2*像素9,卷积核数据8*像素26;
步骤28:
如图23所示,该图是第18个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据7,单元2读入卷积核数据5,单元3读入卷积核数据3,单元4读入卷积核数据1,单元5读入卷积核数据9;
单元1读入像素26,单元2读入像素18,单元3读入像素10,单元4读入像素9,单元5读入像素27;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据7*像素26,卷积核数据5*像素18,卷积核数据3*像素10,卷积核数据1*像素9,卷积核数据9*像素27;
步骤29:
如图24所示,该图是第19个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据8,单元2读入卷积核数据6,单元3读入卷积核数据4,单元4读入卷积核数据2;
单元1读入像素27,单元2读入像素19,单元3读入像素18,单元4读入像素10,
单元5的累加结果通过激活函数,输出;
单元1,2,3,5开始乘法运算,累加结果:卷积核数据8*像素27,卷积核数据6*像素19,卷积核数据4*像素18,卷积核数据2*像素10;
步骤30:
如图25所示,该图是第20个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据9,单元2读入卷积核数据7,单元3读入卷积核数据5,单元4读入卷积核数据3,单元5读入卷积核数据1;
单元1读入像素28,单元2读入像素27,单元3读入像素19,单元4读入像素31,单元5读入像素10;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据9*像素28,卷积核数据7*像素27,卷积核数据5*像素19,卷积核数据3*像素31,卷积核数据1*像素10;
步骤31:
如图26所示,该图是第21个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元2读入卷积核数据8,单元3读入卷积核数据6,单元4读入卷积核数据4,单元5读入卷积核数据2;
单元2读入像素28,单元3读入像素20,单元4读入像素19,单元5读入像素31,
单元1的累加结果通过激活函数,输出;
单元2,3,4,5开始乘法运算,累加结果:卷积核数据8*像素28,卷积核数据6*像素20,卷积核数据4*像素19,卷积核数据2*像素31;
步骤32:
如图27所示,下图是第22个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据1,单元2读入卷积核数据9,单元3读入卷积核数据7,单元4读入卷积核数据5,单元5读入卷积核数据3;
单元1读入像素31,单元2读入像素29,单元3读入像素28,单元4读入像素20,单元5读入像素32;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据1*像素31,卷积核数据9*像素29,卷积核数据7*像素28,卷积核数据5*像素20,卷积核数据3*像素32;
步骤33:
如图28所示,该图是第23个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据2,单元3读入卷积核数据8,单元4读入卷积核数据6,单元5读入卷积核数据4;
单元1读入像素32,单元3读入像素29,单元4读入像素41,单元5读入像素20,
单元2的累加结果通过激活函数,输出;
单元1,3,4,5开始乘法运算,累加结果:卷积核数据2*像素32,卷积核数据8*像素29,卷积核数据6*像素41,卷积核数据4*像素20;
步骤34:
如图29所示,该图是第24个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据3,单元2读入卷积核数据1,单元3读入卷积核数据9,单元4读入卷积核数据7,单元5读入卷积核数据5;
单元1读入像素33,单元2读入像素32,单元3读入像素30,单元4读入像素29,单元5读入像素41;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据3*像素33,卷积核数据1*像素32,卷积核数据9*像素30,卷积核数据7*像素29,卷积核数据5*像素41;
步骤35:
如图30所示,下图是第25个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据4,单元2读入卷积核数据2,单元4读入卷积核数据8,单元5读入卷积核数据6;
单元1读入像素41,单元2读入像素33,单元4读入像素30,单元5读入像素42,
单元3的累加结果通过激活函数,输出;
单元1,2,4,5开始乘法运算,累加结果:卷积核数据4*像素41,卷积核数据2*像素33,卷积核数据8*像素30,卷积核数据6*像素42;
步骤36:
如图31所示,该图是第26个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据5,单元2读入卷积核数据3,单元3读入卷积核数据1,单元4读入卷积核数据9,单元5读入卷积核数据7;
单元1读入像素42,单元2读入像素34,单元3读入像素33,单元4读入像素51,单元5读入像素30;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据5*像素42,卷积核数据3*像素34,卷积核数据1*像素33,卷积核数据9*像素51,卷积核数据7*像素30;
步骤37:
如图32所示,该图是第27个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据6,单元2读入卷积核数据4,单元3读入卷积核数据2,单元5读入卷积核数据8;
单元1读入像素43,单元2读入像素42,单元3读入像素34,单元5读入像素51,
单元4的累加结果通过激活函数,输出;
单元1,2,3,5开始乘法运算,累加结果:卷积核数据6*像素43,卷积核数据4*像素42,卷积核数据2*像素34,卷积核数据8*像素51;
步骤38:
如图33所示,该图是第28个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据7,单元2读入卷积核数据5,单元3读入卷积核数据3,单元4读入卷积核数据1,单元5读入卷积核数据9;
单元1读入像素51,单元2读入像素43,单元3读入像素35,单元4读入像素34,单元5读入像素52;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据7*像素51,卷积核数据5*像素43,卷积核数据3*像素35,卷积核数据1*像素34,卷积核数据9*像素52;
步骤39:
如图34所示,该图是第29个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元1读入卷积核数据8,单元2读入卷积核数据6,单元3读入卷积核数据4,单元4读入卷积核数据2;
单元1读入像素52,单元2读入像素44,单元3读入像素43,单元4读入像素35,
单元5的累加结果通过激活函数,输出;
单元1,2,3,4开始乘法运算,累加结果:卷积核数据8*像素52,卷积核数据6*像素44,卷积核数据4*像素43,卷积核数据2*像素35;
步骤40:
如图35所示,该图是第30个时钟周期,卷积核数据2,4,6,8移动到缓冲寄存器;
单元1读入卷积核数据9,单元2读入卷积核数据7,单元3读入卷积核数据5,单元4读入卷积核数据3,单元5读入卷积核数据1;
单元1读入像素53,单元2读入像素52,单元3读入像素44,单元4读入像素36,单元5读入像素35;
单元1,2,3,4,5开始乘法运算,累加结果:卷积核数据9*像素53,卷积核数据7*像素52,卷积核数据5*像素44,卷积核数据3*像素36,卷积核数据1*像素35;
步骤41:
如图36所示,该图是第31个时钟周期,卷积核数据1,3,5,7,9移动到缓冲寄存器;
单元2读入卷积核数据8,单元3读入卷积核数据6,单元4读入卷积核数据4,单元5读入卷积核数据2;
单元2读入像素53,单元3读入像素45,单元4读入像素44,单元5读入像素36,
单元1的累加结果通过激活函数,输出;
单元2,3,4,5开始乘法运算,累加结果:卷积核数据8*像素53,卷积核数据6*像素45,卷积核数据4*像素44,卷积核数据2*像素36。
工作原理:
本专利通过将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列;乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理,并分别输出于数据存储单元,由于本发明公开了一种用于加速计算大数据量的卷积神经网络CNN运算的集成电路的设计方法,它属于实时处理大数据量(如图像处理,声音数据处理等)的一种集成电路的加速计算的设计方法,卷积核数据和数据从不同方向并行地输入到乘法累加器单元队列,各个乘法累加器单元同时并行地对流经它的数据进行处理并输出,本发明多次重复利用已经输入的数据,构造数据流动闭环,大幅减少读取外部存储器的次数,本发明通过多级流水线技术大幅提高了乘法累加器单元利用率,实现了很高的运算吞吐率,本发明的电路,能够大幅减少数据计算过程中,对读取外部存储器的数据的带宽要求,而且加速数据的卷积神经网络CNN运算,本发明解决了现有技术存在由于卷积神经网络的一个缺点是其运算量巨大,在集成电路或嵌入式设备上不容易实时运算,以串行架构为主的传统处理器不容易达到要求,因此,如何快速完成卷积神经网络运算就是需要解决的重要问题,具有读取次数少和运算吞吐率高、宽带要求低的特点,并大幅提高了卷积神经网络运算的实时性的有益技术效果。
利用本发明的技术方案,或本领域的技术人员在本发明技术方案的启发下,设计出类似的技术方案,而达到上述技术效果的,均是落入本发明的保护范围。

Claims (10)

1.一种基于卷积神经网络算法的集成电路加速计算的方法,其特征在于,包括:
将卷积核数据和外部数据从不同方向并行地输入到乘法累加器单元队列;
乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理,并分别输出于数据存储单元;
所述乘法累加器单元队列中每个乘法累加器单元同时并行地对流经其内部的卷积核数据和外部数据分别进行相应的乘法累加处理进一步包括:
将至少一个卷积核数据分别输入相应的乘法累加器单元;
将输入队列中的外部数据按照队列顺序分别输入相应的乘法累加器单元;
通过多级流水线技术,将每列乘法累加器单元中的卷积核数据和外部数据同时并行地进行卷积运算;
所述卷积核数据为预先设计的卷积核矩阵,所述外部数据为外部输入设备连续产生的数据;
将预先设计的卷积核矩阵和外部输入设备连续产生的数据经外部存储读取引擎读入,将读取引擎读入的数据中的卷积核和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列,卷积核数据输入队列将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元,数据预处理缓冲区将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元,相应的数据输入队列将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元,乘法累加器单元队列的相应的乘法累加器进行相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储。
2.根据权利要求1所述的方法,其特征在于,所述外部输入设备连续产生的数据为外部数据,则卷积神经网络CNN运算函数为:
卷积运算的结果=卷积核矩阵x外部数据矩阵;
卷积核矩阵:线性关系的卷积核数据矩阵;
外部数据矩阵:具有二维数据结构的外部数据矩阵,其中包含MxN个外部数据;
卷积运算的结果:具有二维数据结构的卷积运算结果矩阵,其中包含MxN个卷积运算结果,所述卷积运算结果为卷积核数据与其相应的外部数据的乘积。
3.根据权利要求1所述的方法,其特征在于,所述乘法累加器单元仅限一列乘法累加器单元队列。
4.根据权利要求1所述的方法,其特征在于,所述乘法累加器单元组成一个数据矩阵顺序数据处理,所述顺序数据处理方式包括:
按照由上到下的顺序处理数据,或者;
按照由下到上的顺序处理数据,或者;
按照由左到右的顺序处理数据,或者;
按照由右到左的顺序处理数据。
5.根据权利要求1所述的方法,其特征在于,所述乘法累加器单元的输入处理包括初始化阶段和后续阶段,所述初始化阶段包括第1个时钟周期到第N*N个时钟周期,所述后续阶段包括第N*N个时钟周期以后的时钟周期。
6.根据权利要求5所述的方法,其特征在于,所述初始化阶段采用外部数据流动闭环的第一输入规则,所述第一输入规则包括:
一个乘法累加器单元运算以前;
若为第1个乘法累加器单元的第1次到第N-M次,则读取外部数据首部预处理缓冲区,所述预处理缓冲区数据来自第1列到第N列与第1行到第N-M行数据;
若为第1个乘法累加器单元的第N-M+1次到第N次,则读取第一数据输入队列并按照顺序重复循环;
若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;
若不是第1个的乘法累加器的第N-M+1次到第N次,则读取对应的数据的输入队列并按照顺序重复循环。
7.根据权利要求5所述的方法,其特征在于,所述后续阶段采用外部数据流动闭环的第二输入规则,所述第二输入规则包括:
一个乘法累加器单元运算以前;
若第1个乘法累加器单元的第1次到第N-M次,则读取最后一个乘法累加器单元输出的数据;
若第1个乘法累加器单元的第N-M+1次到第N次,则读取数据的输入队列1并按照顺序重复循环;
若不是第1个的乘法累加器的第1次到第N-M次,则读取上一级乘法累加器单元输出的数据,如果没有,则停止运算;
若不是第1个的乘法累加器,第N-M+1次到第N次,读取相应的数据的输入队列,按照顺序重复循环。
8.根据权利要求7所述的方法,其特征在于,若一个乘法累加器单元完成运算,则按照一个数据流动闭环的完成运算规则处理当前输入数据;
所述完成运算规则包括:
若为第1次到第M次输入数据,则直接丢弃;
若为第M+1次到第N次输入的数据,如果不是最后一个乘法累加器,顺序向下移动到临近的乘法累加器单元;
若为第M+1次到第N次输入的数据,如果是最后一个乘法累加器,移动到第一个乘法累加器单元。
9.一种基于卷积神经网络算法的集成电路加速计算的***,其特征在于,包括:外部存储器、外部存储器读取引擎、输入数据分配控制器、输入数据首部预处理缓冲单元、一列乘法累加器单元队列、卷积核数据输入队列单元、数据输入队列单元、输出数据存储单元;
所述外部存储器用于存储预先设计的卷积核矩阵和外部输入设备连续产生的数据;
所述外部存储器读取引擎用于将外部存储器中的卷积核矩阵和外部数据读取并输出至输入数据分配控制器;
所述输入数据分配控制器用于将读取引擎读入的数据中的卷积核矩阵和外部数据通过数据分配分别分配于卷积核数据输入队列和首部数据预处理缓冲区以及相应的数据输入队列,其中,外部数据的首部数据分配于首部数据预处理缓冲区,其非首部数据分配于相应的数据输入队列;
所述输入数据首部预处理缓冲单元用于将外部数据的首部数据输出于乘法累加器单元队列的相应的乘法累加器单元;
所述卷积核数据输入队列单元用于将每一个卷积核相应分配于一列乘法累加器单元队列的相应的乘法累加器单元;
所述数据输入队列单元用于将外部数据的非首部数据循环输出于乘法累加器单元队列的相应的乘法累加器单元;
所述一列乘法累加器单元队列包括乘法累加器单元,所述乘法累加器单元用于相应的乘法累加运算并将相应的乘法累加运算的结果分别输出于输出数据存储;
所述外部存储器输出连接于外部存储器读取引擎,所述外部存储器读取引擎输出连接于输入数据分配控制器,所述输入数据分配控制器一输出端输出连接于卷积核数据输入队列单元,其另一输出端输出连接于输入数据首部预处理缓冲单元和相应的数据输入队列单元,所述卷积核数据输入队列单元输出连接于一列乘法累加器单元队列卷积核输入端,所述一列乘法累加器单元队列的每一个乘法累加器单元依次连接,所述输入数据首部预处理缓冲单元连接于一列乘法累加器单元队列的数据输入端,所述一列乘法累加器单元队列的相应的乘法累加器单元分别连接于相应的数据输入队列单元,所述一列乘法累加器单元队列的相应的乘法累加器单元分别输出于输出数据存储单元相应输入端。
10.根据权利要求9所述的***,其特征在于,所述乘法累加器单元包括卷积核寄存器、外部数据寄存器、乘法器、加法器、激活函数模块;
所述卷积核寄存器和乘法器的一输入端共同接收每一个卷积核数据,所述外部数据寄存器和乘法器的另一输入端共同接收每一个外部数据,乘法器输出于加法器,所述加法器输出于激活函数模块,所述激活函数模块输出于输出数据存储单元相应端口,所述卷积核寄存器输出到下一个乘法累加器的卷积核数据输入端,所述外部数据寄存器输出到下一个乘法累加器的外部数据输入端。
CN201910368448.1A 2019-05-05 2019-05-05 一种基于卷积神经网络算法的集成电路加速计算的方法及*** Active CN110188869B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910368448.1A CN110188869B (zh) 2019-05-05 2019-05-05 一种基于卷积神经网络算法的集成电路加速计算的方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910368448.1A CN110188869B (zh) 2019-05-05 2019-05-05 一种基于卷积神经网络算法的集成电路加速计算的方法及***

Publications (2)

Publication Number Publication Date
CN110188869A CN110188869A (zh) 2019-08-30
CN110188869B true CN110188869B (zh) 2021-08-10

Family

ID=67715675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910368448.1A Active CN110188869B (zh) 2019-05-05 2019-05-05 一种基于卷积神经网络算法的集成电路加速计算的方法及***

Country Status (1)

Country Link
CN (1) CN110188869B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110796250A (zh) * 2019-10-11 2020-02-14 浪潮电子信息产业股份有限公司 应用于卷积神经网络的卷积处理方法、***及相关组件
CN110807521B (zh) * 2019-10-29 2022-06-24 中昊芯英(杭州)科技有限公司 支持向量运算的处理装置、芯片、电子设备和方法
CN112784207B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算方法及相关产品
TWI733334B (zh) * 2020-02-15 2021-07-11 財團法人工業技術研究院 卷積神經網路運算裝置及其運算的方法
CN112051981B (zh) * 2020-09-15 2023-09-01 厦门壹普智慧科技有限公司 一种数据流水线计算路径结构及单线程数据流水线***
CN112328962B (zh) * 2020-11-27 2021-12-31 深圳致星科技有限公司 矩阵运算优化方法、装置、设备和可读存储介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662623A (zh) * 2012-04-28 2012-09-12 电子科技大学 基于单fpga的并行矩阵乘法器及其实现方法
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN105589677A (zh) * 2014-11-17 2016-05-18 沈阳高精数控智能技术股份有限公司 一种基于fpga的脉动结构矩阵乘法器及其实现方法
CN107704921A (zh) * 2017-10-19 2018-02-16 北京智芯原动科技有限公司 基于Neon指令的卷积神经网络的算法优化方法及装置
CN107844826A (zh) * 2017-10-30 2018-03-27 中国科学院计算技术研究所 神经网络处理单元及包含该处理单元的处理***
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理***和处理方法
CN108182471A (zh) * 2018-01-24 2018-06-19 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
US10073816B1 (en) * 2017-05-11 2018-09-11 NovuMind Limited Native tensor processor, and partitioning of tensor contractions
CN108537330A (zh) * 2018-03-09 2018-09-14 中国科学院自动化研究所 应用于神经网络的卷积计算装置及方法
CN108665059A (zh) * 2018-05-22 2018-10-16 中国科学技术大学苏州研究院 基于现场可编程门阵列的卷积神经网络加速***
CN108764466A (zh) * 2018-03-07 2018-11-06 东南大学 基于现场可编程门阵列的卷积神经网络硬件及其加速方法
CN109086867A (zh) * 2018-07-02 2018-12-25 武汉魅瞳科技有限公司 一种基于fpga的卷积神经网络加速***
CN109146067A (zh) * 2018-11-19 2019-01-04 东北大学 一种基于FPGA的Policy卷积神经网络加速器
CN109190756A (zh) * 2018-09-10 2019-01-11 中国科学院计算技术研究所 基于Winograd卷积的运算装置及包含该装置的神经网络处理器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662623A (zh) * 2012-04-28 2012-09-12 电子科技大学 基于单fpga的并行矩阵乘法器及其实现方法
CN105589677A (zh) * 2014-11-17 2016-05-18 沈阳高精数控智能技术股份有限公司 一种基于fpga的脉动结构矩阵乘法器及其实现方法
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
US10073816B1 (en) * 2017-05-11 2018-09-11 NovuMind Limited Native tensor processor, and partitioning of tensor contractions
CN107704921A (zh) * 2017-10-19 2018-02-16 北京智芯原动科技有限公司 基于Neon指令的卷积神经网络的算法优化方法及装置
CN107844826A (zh) * 2017-10-30 2018-03-27 中国科学院计算技术研究所 神经网络处理单元及包含该处理单元的处理***
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理***和处理方法
CN108182471A (zh) * 2018-01-24 2018-06-19 上海岳芯电子科技有限公司 一种卷积神经网络推理加速器及方法
CN108764466A (zh) * 2018-03-07 2018-11-06 东南大学 基于现场可编程门阵列的卷积神经网络硬件及其加速方法
CN108537330A (zh) * 2018-03-09 2018-09-14 中国科学院自动化研究所 应用于神经网络的卷积计算装置及方法
CN108665059A (zh) * 2018-05-22 2018-10-16 中国科学技术大学苏州研究院 基于现场可编程门阵列的卷积神经网络加速***
CN109086867A (zh) * 2018-07-02 2018-12-25 武汉魅瞳科技有限公司 一种基于fpga的卷积神经网络加速***
CN109190756A (zh) * 2018-09-10 2019-01-11 中国科学院计算技术研究所 基于Winograd卷积的运算装置及包含该装置的神经网络处理器
CN109146067A (zh) * 2018-11-19 2019-01-04 东北大学 一种基于FPGA的Policy卷积神经网络加速器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《Real-time meets approximate computing: An elastic CNN inference accelerator with adaptive trade-off between QoS and QoR》;Ying Wang 等;《2017 54th ACM/EDAC/IEEE Design Automation Conference》;20171031;第1-6页 *
《一种简洁高效的加速卷积神经网络的方法》;刘进锋等;《科学技术与工程》;20141130;第14卷(第33期);第240-244页 *

Also Published As

Publication number Publication date
CN110188869A (zh) 2019-08-30

Similar Documents

Publication Publication Date Title
CN110188869B (zh) 一种基于卷积神经网络算法的集成电路加速计算的方法及***
CN106970896B (zh) 面向向量处理器的二维矩阵卷积的向量化实现方法
CN111684473B (zh) 提高神经网络阵列的性能
EP3659051B1 (en) Accelerated mathematical engine
US20190095776A1 (en) Efficient data distribution for parallel processing
Yepez et al. Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks
CN110458279B (zh) 一种基于fpga的二值神经网络加速方法及***
US10585621B2 (en) Statically-schedulable feed and drain structure for systolic array architecture
CN108537330B (zh) 应用于神经网络的卷积计算装置及方法
CN111758107B (zh) 用于基于硬件的池化的***和方法
CN112292694A (zh) 用于加速操作的方法和加速器装置
CN108629406B (zh) 用于卷积神经网络的运算装置
CN112334885A (zh) 加速器和用于加速操作的***
CN108388537B (zh) 一种卷积神经网络加速装置和方法
CN110989920B (zh) 能量高效的存储器***和方法
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
CN102411558A (zh) 面向向量处理器的大矩阵相乘的向量化实现方法
CN110851779B (zh) 用于稀疏矩阵运算的脉动阵列架构
CN107680028B (zh) 用于缩放图像的处理器和方法
CN110738308A (zh) 一种神经网络加速器
CN110674927A (zh) 一种用于脉动阵列结构的数据重组方法
CN110580519B (zh) 一种卷积运算装置及其方法
CN115310037A (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