CN110717588B - 用于卷积运算的装置和方法 - Google Patents

用于卷积运算的装置和方法 Download PDF

Info

Publication number
CN110717588B
CN110717588B CN201910977395.3A CN201910977395A CN110717588B CN 110717588 B CN110717588 B CN 110717588B CN 201910977395 A CN201910977395 A CN 201910977395A CN 110717588 B CN110717588 B CN 110717588B
Authority
CN
China
Prior art keywords
matrix
read control
distributed
control signal
elements
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
CN201910977395.3A
Other languages
English (en)
Other versions
CN110717588A (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.)
Apollo Intelligent Technology Beijing Co Ltd
Original Assignee
Apollo Intelligent Technology Beijing 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 Apollo Intelligent Technology Beijing Co Ltd filed Critical Apollo Intelligent Technology Beijing Co Ltd
Priority to CN201910977395.3A priority Critical patent/CN110717588B/zh
Publication of CN110717588A publication Critical patent/CN110717588A/zh
Priority to JP2021545885A priority patent/JP7244660B2/ja
Priority to PCT/CN2020/083574 priority patent/WO2021073053A1/zh
Priority to EP20876067.8A priority patent/EP3893166A4/en
Priority to US17/697,917 priority patent/US11556614B2/en
Application granted granted Critical
Publication of CN110717588B publication Critical patent/CN110717588B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

公开了用于卷积运算的装置和方法。该装置包括:多个乘法器,被配置为接收两个矩阵的矩阵元素,并将相应矩阵元素分别相乘以生成多个乘积元素;多个分布式缓存,各自包括多个缓存单元,并且被配置为将多个乘积元素分别存储在相应缓存单元中;寄存器延迟链,包括串联耦合的多个寄存器,并且被配置为接收读取控制信号,对读取控制信号进行逐级延迟以输出逐级延迟的读取控制信号,并向多个分布式缓存分别提供读取控制信号和逐级延迟的读取控制信号;累加电路,被配置为接收与读取控制信号和逐级延迟的读取控制信号相对应的缓存单元中的乘积元素,并基于所接收的乘积元素生成累加数据。本方案可用于人工智能领域,尤其是自动驾驶(包括自主泊车)领域。

Description

用于卷积运算的装置和方法
技术领域
本公开的实施例主要涉及数据处理领域,并且更具体地涉及用于卷积运算的装置和方法。
背景技术
随着深度学习理论的提出和发展,卷积神经网络受到了越来越多的关注并且得到了发展。卷积算法是卷积神经网络的核心算法,其占据卷积神经网络的90%的运算时间。因此,卷积运算是设计基于现场可编程门阵列(FPGA)的神经网络硬件加速器的主要优化对象。对于卷积算法的硬件电路设计直接关系到硬件加速器的资源使用量以及能够达到的算力。
一种传统方案采用了基于卷积算法定义的加法树结构。在卷积的加法树实现中,根据卷积算法的6层循环特点,将卷积计算的6个维度充分展开。即,先对滤波器矩阵与输入数据矩阵中的对应点进行乘法,然后在滤波器矩阵的窗口内以及通道(Channel)的方向进行逐点累加,该实现简单并且直接。然而,该实现的缺点也很明显,如果增加计算的维度,那么加法器的深度需要增加,并且所耗费的资源也呈指数级增加,这对于资源敏感的FPGA来说是不可接受的。
发明内容
根据本公开的实施例提供了具有改进性能的用于卷积运算的装置和方法。
在本公开的第一方面,提供了一种用于卷积运算的装置。所述装置包括:多个乘法器,被配置为分别从第一矩阵和第二矩阵接收矩阵元素,并且将所述第一矩阵和所述第二矩阵中的彼此对应的相应矩阵元素分别相乘以生成多个乘积元素;多个分布式缓存,分别耦合至所述多个乘法器并且各自包括多个缓存单元,所述多个分布式缓存被配置为将所述多个乘积元素分别存储在所述多个分布式缓存中的相应缓存单元中;寄存器延迟链,耦合至所述多个分布式缓存并且包括串联耦合的多个寄存器,所述寄存器延迟链被配置为接收读取控制信号,对所述读取控制信号进行逐级延迟以输出经过逐级延迟的多个读取控制信号,并且向所述多个分布式缓存分别提供所述读取控制信号和所述经过逐级延迟的多个读取控制信号;以及累加电路,耦合至所述多个分布式缓存,并且所述累加电路被配置为从所述多个分布式缓存接收与所述读取控制信号和所述经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素,并且基于所接收的多个分布式缓存的相应缓存单元中的乘积元素生成累加数据。
在本公开的第二方面,提供了用于卷积运算的方法。所述方法包括:从第一矩阵和第二矩阵接收矩阵元素,并且将所述第一矩阵和所述第二矩阵中的彼此对应的相应矩阵元素分别相乘以生成多个乘积元素;将所述多个乘积元素分别存储在多个分布式缓存中的相应缓存单元中;接收读取控制信号,对所述读取控制信号进行逐级延迟以输出经过逐级延迟的多个读取控制信号,并且向所述多个分布式缓存分别提供所述读取控制信号和所述经过逐级延迟的多个读取控制信号;从所述多个分布式缓存接收与所述读取控制信号和所述经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素;以及基于所接收的多个分布式缓存的相应缓存单元中的乘积元素生成累加数据。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,并且在附图中:
图1是示出卷积运算的模型的示意图;
图2是示出根据本公开的实施例的用于卷积运算的装置的框图;
图3是示出根据本公开的实施例的用于卷积运算的装置的示意图;
图4是示出根据本公开的实施例的在各个时钟周期内输入的矩阵元素和生成的乘积元素的示意图;
图5是示出根据本公开的实施例的在各个时钟周期内读取的乘积元素的示意图;以及
图6是示出根据本公开的实施例的用于卷积运算的方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
与如上提及的卷积的加法树实现相比,为了节约资源,另一种传统方案采用了脉动阵列结构。在脉动阵列实现中,对卷积计算的5个维度进行空间展开,对通道的维度进行时间上展开。这种方案可以有效利用资源,因为当卷积计算的维度增加时,脉动阵列实现所需要的资源并不用增加,只是对通道的方向上的累加在时间维度上延长。该传统方案通过FPGA中的寄存器资源实现通道的维度上的延迟链。例如,该传统方案利用寄存器对中间计算数据延迟6个时钟周期,再进行累加。但这种方案也存在一个缺点,其过分消耗寄存器资源。FPGA总体资源一般包括LUT(查找表)、LUTM(LUT存储器)、寄存器、DSP(数字信号处理器)。寄存器资源的过分消耗会造成FPGA总体资源的使用不平衡,从而导致“木桶效应”。
为了解决至少上述问题,根据本公开的实施例提供了能够节约硬件资源并且所需要的硬件资源均衡的卷积运算方案。根据本公开的实施例,两个矩阵中的彼此对应的各个矩阵元素的乘积分别存储在多个分布式缓存的相应缓存单元中,用于多个分布式缓存的相应缓存单元的读取控制信号被寄存器延迟链逐级延迟,以及基于从多个分布式缓存接收的与各个读取控制信号相对应的缓存单元中的乘积来生成累加结果。
在根据本公开的实施例中,通过配置多个分布式缓存和针对用于多个分布式缓存的读取控制信号的寄存器延迟链,来实现与脉动阵列结构中的针对中间计算数据的寄存器延迟链相类似的功能,以便实现卷积运算。因此,在各个分布式缓存中保持乘积的情况下仅逐级延迟读取控制信号,以避免如脉动阵列结构中那样由寄存器延迟链传递中间计算数据。以此方式,根据本公开的实施例的卷积运算方案在节约寄存器资源的同时降低整体功耗。在一些实施例中,利用一般被闲置的分布式缓存,例如FPGA中的LUTM,能够节省总体设计资源并且实现资源均衡。
下文中将结合附图参考各种实施例来详细描述本公开。
图1是示出卷积运算的模型100的示意图。如图1所示,输入数据集合矩阵包括多个输入数据矩阵102,并且滤波器集合矩阵包括多个滤波器矩阵104。输入数据矩阵102为由传感器输出的各种数据的矩阵,并且滤波器矩阵104为用于进行卷积运算的窗口矩阵。例如,
图1所示的C表示输入数据集合矩阵中的输入数据矩阵102的通道的数目以及滤波器集合矩阵中的滤波器矩阵104的通道的数目。此外,每个输入数据矩阵102的维度为H×W,每个滤波器矩阵104的维度为R×S。
参考图1,每个滤波器集合矩阵中的多个滤波器矩阵104与输入数据集合矩阵中的多个输入数据矩阵102进行卷积运算,以生成1个输出矩阵106。因此,当使用多个滤波器集合矩阵用于卷积运算时,生成多个输出通道的输出矩阵106。例如,当使用M个滤波器集合矩阵时,生成M个通道的输出矩阵106,每个输出矩阵106的维度为E×F。
在卷积运算中,当一个滤波器矩阵104在一个窗口处与对应一个输入数据矩阵102进行卷积运算时,输入数据矩阵102的与该窗口相对应的子矩阵中的各个矩阵元素与滤波器矩阵104的对应矩阵元素被相乘以生成乘积元素,这些乘积元素被相加以生成累加数据。例如,如图1所示,C个滤波器矩阵104在所示的窗口处与C个输入数据矩阵102进行卷积运算以生成C个累加数据,这些C个累加数据又被相加以生成一个输出矩阵106中的一个矩阵元素。通过窗口在输入数据矩阵102内的移位,生成一个输出矩阵106中的全部矩阵元素。当进一步使用M个滤波器集合矩阵时,如上所述地生成M个输出矩阵106,以用于下一步的其他计算。
下文中,将以多个滤波器矩阵104在一个窗口处分别与多个输入数据矩阵102的对应子矩阵进行卷积运算的情况作为示例进行描述。
图2是示出根据本公开的实施例的用于卷积运算的装置200的框图。如图2所示,装置200包括多个乘法器202、多个分布式缓存204、寄存器延迟链206和累加电路208。
多个乘法器202被配置为分别从第一矩阵和第二矩阵接收矩阵元素,并且将第一矩阵和第二矩阵中的彼此对应的相应矩阵元素分别相乘以生成多个乘积元素。在一些实施例中,第一矩阵为包括多个通道的输入数据矩阵的输入数据集合矩阵,并且第二矩阵为包括多个通道的滤波器矩阵的滤波器集合矩阵。在一些实施例中,多个乘法器202在多个时钟周期中的每个时钟周期接收矩阵元素并且生成多个乘积元素。在一些实施例中,输入数据集合矩阵包括C个通道的输入数据矩阵,滤波器集合矩阵包括C个通道的滤波器矩阵,多个乘法器202在C个时钟周期中的每个时钟周期接收来自一个通道的输入数据矩阵和对应一个通道的滤波器矩阵的矩阵元素,并且生成多个乘积元素。
多个分布式缓存204分别耦合至多个乘法器202,并且各自包括多个缓存单元。多个分布式缓存204被配置为将多个乘积元素分别存储在多个分布式缓存204中的相应缓存单元中。在一些实施例中,多个分布式缓存204在多个时钟周期中的每个时钟周期从多个乘法器202接收多个乘积元素,并且将多个乘积元素分别存储在相应分布式缓存的与该时钟周期相对应的缓存单元中。在一些实施例中,多个分布式缓存204中的每个分布式缓存在多个时钟周期中将乘积元素顺序地存储在各个缓存单元中。
寄存器延迟链206耦合至多个分布式缓存204并且包括串联耦合的多个寄存器。寄存器延迟链206被配置为接收读取控制信号,对读取控制信号进行逐级延迟以输出经过逐级延迟的多个读取控制信号,并且向多个分布式缓存204分别提供该读取控制信号和经过逐级延迟的多个读取控制信号。在一些实施例中,寄存器延迟链206在多个时钟周期中的每个时钟周期接收读取控制信号,该读取控制信号与每个分布式缓存的某个缓存单元相对应。在一些实施例中,多个分布式缓存204中的第一分布式缓存在多个时钟周期中的每个时钟周期接收未经延迟的读取控制信号。在一些实施例中,寄存器延迟链206中的每个寄存器在多个时钟周期中的每个时钟周期对该寄存器接收到的读取控制信号进行延迟,并且将经过延迟的读取控制信号在下一个时钟周期提供至对应的缓存单元以及下一级的寄存器。
累加电路208耦合至多个分布式缓存204。累加电路208被配置为从多个分布式缓存204接收与读取控制信号和经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素,并且基于所接收的多个分布式缓存的相应缓存单元中的乘积元素生成累加数据。在一些实施例中,累加电路208在多个时钟周期中的每个时钟周期从多个分布式缓存204分别接收与各个分布式缓存接收到的读取控制信号相对应的各个缓存单元中的乘积元素。在一些实施例中,累加电路208对从多个分布式缓存204的与同一时钟周期相对应的各个缓存单元接收到的乘积元素进行累加。在一些实施例中,累加电路208对在相同时钟周期中生成的乘积元素进行累加。在一些实施例中,当输入数据集合矩阵包括C个通道的输入数据矩阵、并且滤波器集合矩阵包括C个通道的滤波器矩阵时,在C个时钟周期之后,累加电路208输出一个通道的输入数据矩阵和对应一个通道的滤波器矩阵在某个窗口处进行卷积运算的结果,并且再经过一个时钟周期之后,累加电路208输出另一个通道的输入数据矩阵和对应一个通道的滤波器矩阵在某个窗口处进行卷积运算的结果,以此类推。
参考图2,在一些实施例中,装置200可以进一步包括读取控制信号生成电路210。读取控制信号生成电路210被配置为依次生成与多个分布式缓存204中的多个缓存单元分别相对应的读取控制信号。在一些实施例中,读取控制信号生成电路210在多个时钟周期中的每个时钟周期生成与多个分布式缓存204中的相应缓存单元相对应的读取控制信号。在一些实施例中,读取控制信号生成电路210在多个时钟周期中的每个时钟周期生成包括针对多个缓存单元中的一个缓存单元的读取地址的读取控制信号,并且在下一个时钟周期将读取地址增加一个地址单位。在一些实施例中,读取地址与某个缓存单元、某个时钟周期相以及该时钟周期生成的乘积元素相对应。
在一些实施例中,响应于多个分布式缓存204中的各个分布式缓存接收到读取控制信号和经过逐级延迟的多个读取控制信号,多个分布式缓存204将与读取控制信号中的读取地址相对应的缓存单元中的乘积元素输出到累加电路208。
根据本公开的实施例,通过配置多个分布式缓存和针对用于多个分布式缓存的读取控制信号的寄存器延迟链,在各个分布式缓存中保持乘积的情况下仅逐级延迟读取控制信号,以避免如脉动阵列结构中那样由寄存器延迟链传递中间计算数据。以此方式,根据本公开的实施例的装置200在节约寄存器资源的同时降低整体功耗。
在一些实施例中,装置200被包含在FPGA中。在替代实施例中,装置200被包含在专用集成电路中。
在一些实施例中,每个分布式缓存为FPGA中的LUTM资源。例如,该FGPA为赛灵思(Xilinx)FPGA。以此方式,通过利用FPGA中的一般被闲置的LUTM作为分布式缓存,节省总体设计资源并且实现资源均衡。此外,由于LUTM的操作简单,并不涉及到复杂控制逻辑,从而可以支持更高的设计主频,并且提高神经网络加速器的整体算力。
图3是示出根据本公开的实施例的用于卷积运算的装置300的示意图。图3的装置300示出了多个乘法器202、多个分布式缓存204、寄存器延迟链206和累加电路208的具体配置。可以认为装置300是装置200的一种具体实现方式。应当理解的是,为了简化图示,图3中未示出读取控制信号生成电路210的具体配置,而示出了读取控制信号ADDR_n。读取控制信号生成电路210可以由任何已知的电路来实现。
参照图3,多个乘法器202包括乘法器M0至M15,多个分布式缓存204包括分布式缓存LUTM0至LUTM15,寄存器延迟链206包括多个寄存器reg1至reg15,并且累加电路208包括多路选择模块MUL和累加器ACC0至ACC15。此外,滤波器矩阵中的矩阵元素w0至w15分别输入到乘法器M0至M15,并且输入数据矩阵中的对应矩阵元素i0至i15分别输入到乘法器M0至M15。此外,分布式缓存LUTM0至LUTM15中的每个分布式缓存各自包括多个缓存单元Data0至Data15。应当理解的是,尽管在图3中示出了各个部件的具体数目,根据本公开的实施例的装置300可以包括其他任意数目的各个部件。
在一些实施例中,乘法器M0至M15的数目等于滤波器矩阵中的矩阵元素的数目。在一些实施例中,分布式缓存LUTM0至LUTM15的数目等于滤波器矩阵中的矩阵元素的数目。在一些实施例中,分布式缓存LUTM0至LUTM15中的每个分布式缓存的缓存单元Data0至Data15的数目等于滤波器矩阵的通道的数目。在一些实施例中,累加器ACC0至ACC15的数目等于缓存单元Data0至Data15的数目。在一些实施例中,寄存器reg1至reg15的数目比分布式缓存LUTM0至LUTM15的数目小预定值。例如,该预定值为1。作为示例,在图3中,滤波器矩阵中的矩阵元素的数目R×S等于16,并且滤波器矩阵的通道的数目C等于16。
参照图3,乘法器M0至M15分别耦合至分布式缓存LUTM0至LUTM15。寄存器reg1至reg15彼此串联耦合以形成延迟链,寄存器reg1接收读取控制信号ADDR_n作为延迟链的输入,并且寄存器reg1至reg15的输出分别耦合至分布式缓存LUTM1至LUTM15。分布式缓存LUTM0至LUTM15耦合至多路选择模块MUL。在一些实施例中,分布式缓存LUTM0至LUTM15中的每一个为循环(ring)缓存。多路选择模块MUL耦合至累加器ACC0至ACC15。每个累加器包括加法器和寄存器,加法器的输出耦合到寄存器,并且寄存器的输出作为加法器的一个输入耦合到加法器,以实现累加的功能。多路选择模块MUL的输出分别耦合到对应加法器的另一个输入。累加器ACC0包括加法器dsp0和寄存器Reg0,累加器ACC1包括加法器dsp1和寄存器Reg1。以此类推,累加器ACC15包括加法器dsp15和寄存器Reg15。
下面结合图4和图5描述图3所示的用于卷积运算的装置300的具体操作。图4是示出根据本公开的实施例的在各个时钟周期内输入的矩阵元素和生成的乘积元素的示意图。图5是示出根据本公开的实施例的在各个时钟周期内读取的乘积元素的示意图。
参照图3和图4,乘法器M0至M15在多个时钟周期clock0至clock15中的每个时钟周期分别接收矩阵元素w0至w15以及矩阵元素i0至i15,以生成乘积元素wo*i0至w15*i15。分布式缓存LUTM0至LUTM15在多个时钟周期clock0至clock15中的每个时钟周期将乘积元素wo*i0至w15*i15分别存储在相应分布式缓存的缓存单元Data0至Data15中的与时钟周期相对应的缓存单元中。作为示例,分布式缓存LUTM0至LUTM15将在时钟周期clock0中生成的乘积元素wo*i0至w15*i15分别存储在各个分布式缓存的缓存单元Data0中,分布式缓存LUTM0至LUTM15将在时钟周期clock1中生成的乘积元素wo*i0至w15*i15分别存储在各个分布式缓存的缓存单元Data1中。以此类推,分布式缓存LUTM0至LUTM15将在时钟周期clock15中生成的乘积元素wo*i0至w15*i15分别存储在各个分布式缓存的缓存单元Data15中。
在图4中,示出了在时钟周期clock16生成乘积元素wo*i0至w15*i15。该第17个时钟周期clock16可以被认为是滤波器矩阵移位到下一个窗口位置处时与输入数据矩阵的卷积运算的周期的开始。
参考图3和图4,在多个时钟周期clock0至clock15中的每个时钟周期生成读取控制信号ADDR_n,其中n大于等于15小于等于0。作为示例,在时钟周期clock0生成读取控制信号ADDR_0,其对应于缓存单元Data0,并且用于读取各个分布式缓存的缓存单元Data0中的乘积元素,以及在时钟周期clock1生成读取控制信号ADDR_1,其对应于缓存单元Data1,并且用于读取各个分布式缓存的缓存单元Data1中的乘积元素。以此类推,在时钟周期clock15生成读取控制信号ADDR_15,其对应于缓存单元Data15,并且用于读取各个分布式缓存的缓存单元Data15中的乘积元素。
参考图3和图5,在时钟周期clock0生成的读取控制信号ADDR_0被提供至分布式缓存LUTM0,并且分布式缓存LUTM0的缓存单元Data0中的乘积元素wo*i0在时钟周期clock0被读取。在时钟周期clock0生成的读取控制信号ADDR_0输入到寄存器reg1,寄存器reg1对读取控制信号ADDR_0进行延迟,即,寄存器reg1在时钟周期clock0存储读取控制信号ADDR_0,并且在下一个时钟周期clock1输出读取控制信号ADDR_0。寄存器reg1在下一个时钟周期clock1将经延迟的读取控制信号ADDR_0提供至分布式缓存LUTM1,并且分布式缓存LUTM1的缓存单元Data0中的乘积元素w1*i1在时钟周期clock1被读取。此外,在时钟周期clock1生成的读取控制信号ADDR_1被提供至分布式缓存LUTM0,并且分布式缓存LUTM0的缓存单元Data1中的乘积元素wo*i0在时钟周期clock1被读取。此外,在时钟周期clock1,读取控制信号ADDR_0输入到寄存器reg2,寄存器reg2对读取控制信号ADDR_0进行延迟,并且读取控制信号ADDR_1输入到寄存器reg1,寄存器reg1对读取控制信号ADDR_1进行延迟。
以此类推,在时钟周期clock2,分布式缓存LUTM2的缓存单元Data0中的乘积元素w2*i2、分布式缓存LUTM1的缓存单元Data1中的乘积元素w1*i1、以及分布式缓存LUTM0的缓存单元Data2中的乘积元素w0*i0被读取。此外,在时钟周期clock15,分布式缓存LUTM15的缓存单元Data0中的乘积元素w15*i15、分布式缓存LUTM14的缓存单元Data1中的乘积元素w14*i14……以及分布式缓存LUTM0的缓存单元Data15中的乘积元素w0*i0被读取。图3示出了在该时钟周期clock15由多路选择模块MUL接收各个缓存单元Data15、Data14、……Data0中的乘积元素。
参照图3和图5,在时钟周期clock0,多路选择模块MUL接收分布式缓存LUTM0的缓存单元Data0中的乘积元素wo*i0,并且将乘乘积元素wo*i0提供至与缓存单元Data0相对应的累加器ACC0。在时钟周期clock0,累加器ACC0中的加法器dsp0将乘积元素wo*i0与空数据相加,并且将累加结果存储在寄存器Reg0中。在时钟周期clock1,多路选择模块MUL接收分布式缓存LUTM1的缓存单元Data0中的乘积元素w1*i1以及分布式缓存LUTM0的缓存单元Data1中的乘积元素wo*i0,以及将分布式缓存LUTM1的缓存单元Data0中的乘积元素w1*i1提供至与缓存单元Data0相对应的累加器ACC0,并且将分布式缓存LUTM0的缓存单元Data1中的乘积元素wo*i0提供至与缓存单元Data1相对应的累加器ACC1。在时钟周期clock1,累加器ACC0中的加法器dsp0将乘积元素w1*i1与在时钟周期clock0生成的累加数据相加,并且将新的累加数据存储在寄存器Reg0中,以及累加器ACC1中的加法器dsp1将乘积元素wo*i0与空数据相加,并且将累加结果存储在寄存器Reg1中。
以此类推,在时钟周期clock15,累加器ACC0中的加法器dsp0将乘积元素w15*i15与在时钟周期clock14生成的累加数据相加,并且将新的累加数据存储在寄存器Reg0中,从而获得在时钟周期clock0生成的乘积元素w0*i0至w15*i15之和,即,卷积运算的结果。在16个时钟周期之后的时钟周期clock16,累加器ACC0输出针对在时钟周期clock0输入的两个矩阵的相应矩阵元素的卷积运算的结果。此外,在时钟周期clock16,累加器ACC1中的加法器dsp1将乘积元素w15*i15与在时钟周期clock15生成的累加数据相加,并且将新的累加数据存储在寄存器Reg1中,从而获得在时钟周期clock1生成的乘积元素w0*i0至w15*i15之和,即,卷积运算的结果。在17个时钟周期之后的时钟周期clock17,累加器ACC1输出针对在时钟周期clock1输入的两个矩阵的相应矩阵元素的卷积运算的结果,以此类推。
参照图5,累加器ACC0至ACC15分别对彼此延迟一个时钟周期读取的相应缓存单元的各个乘积元素进行累加,即,对图中所示的各个斜线中的乘积元素分别累加,以分别生成与各个乘积元素所生成的时钟周期相对应的卷积运算的结果。
根据本公开的实施例,通过配置多个分布式缓存和针对用于多个分布式缓存的读取控制信号的寄存器延迟链,来实现卷积运算。由于在各个分布式缓存中保持乘积的情况下仅逐级延迟读取控制信号,避免如脉动阵列结构中那样由寄存器延迟链传递中间计算数据。以此方式,根据本公开的实施例的用于卷积运算的装置在节约寄存器资源的同时降低整体功耗。进一步地,利用一般被闲置的分布式缓存,例如FPGA中的LUTM,能够节省总体设计资源并且实现资源均衡。
图6是示出根据本公开的实施例的用于卷积运算的方法600的流程图。如图6所示,方法600包括框602至610。
在框602处,方法600包括从第一矩阵和第二矩阵接收矩阵元素,并且将第一矩阵和第二矩阵中的彼此对应的相应矩阵元素分别相乘以生成多个乘积元素。
在框604处,方法600包括将多个乘积元素分别存储在多个分布式缓存中的相应缓存单元中。
在框606处,方法600包括接收读取控制信号,对读取控制信号进行逐级延迟以输出经过逐级延迟的多个读取控制信号,并且向多个分布式缓存分别提供该读取控制信号和经过逐级延迟的多个读取控制信号。
在框608处,方法600包括从多个分布式缓存接收与该读取控制信号和经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素。
在框610处,方法600包括基于所接收的多个分布式缓存的相应缓存单元中的乘积元素生成累加数据。
在一些实施例中,方法600可以进一步包括依次生成与多个分布式缓存中的多个缓存单元分别相对应的读取控制信号。
在一些实施例中,将多个乘积元素存储包括:在多个时钟周期中的每个时钟周期将多个乘积元素分别存储在多个分布式缓存中的与时钟周期相对应的缓存单元中,并且生成读取控制信号包括:在多个时钟周期中的每个时钟周期生成与多个分布式缓存中的相应缓存单元相对应的读取控制信号。
在一些实施例中,将多个乘积元素存储包括:将各个时钟周期生成的多个乘积元素分别顺序地存储在多个分布式缓存中的相应缓存单元中,并且生成读取控制信号包括:在多个时钟周期中的每个时钟周期生成包括针对多个缓存单元中的一个缓存单元的读取地址的读取控制信号,并且在下一个时钟周期将读取地址增加一个地址单位。
在一些实施例中,生成累加数据包括:基于与读取地址相对应的缓存单元中的乘积元素来生成累加数据。
应当理解的是,用于实施本公开的实施例的方法可以采用一个或多个编程语言的任何组合来编写,以适用于片上***(SoC)架构。此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。
虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (20)

1.一种用于卷积运算的装置,包括:
多个乘法器,被配置为分别从第一矩阵和第二矩阵接收矩阵元素,并且将所述第一矩阵和所述第二矩阵中的彼此对应的相应矩阵元素分别相乘以生成多个乘积元素,所述第一矩阵为输入数据集合矩阵,所述第二矩阵为滤波器集合矩阵;
多个分布式缓存,分别耦合至所述多个乘法器并且各自包括多个缓存单元,所述多个分布式缓存被配置为将所述多个乘积元素分别存储在所述多个分布式缓存中的相应缓存单元中;
寄存器延迟链,耦合至所述多个分布式缓存并且包括串联耦合的多个寄存器,所述寄存器延迟链被配置为接收读取控制信号,对所述读取控制信号进行逐级延迟以输出经过逐级延迟的多个读取控制信号,并且向所述多个分布式缓存分别提供所述读取控制信号和所述经过逐级延迟的多个读取控制信号;以及
累加电路,耦合至所述多个分布式缓存,并且所述累加电路被配置为从所述多个分布式缓存接收与所述读取控制信号和所述经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素,并且基于所接收的多个分布式缓存的相应缓存单元中的乘积元素生成累加数据。
2.根据权利要求1所述的装置,其中所述累加电路包括:
多路选择模块,耦合至所述多个分布式缓存,并且被配置为接收与所述读取控制信号和所述经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素;以及
多个累加器,分别耦合至所述多路选择模块,所述多个累加器中的每个累加器被配置为从所述多路选择模块接收所述多个分布式缓存中的与所述累加器相对应的缓存单元的乘积元素,并且基于所接收的乘积元素生成所述累加数据。
3.根据权利要求2所述的装置,其中所述多个累加器的数目等于所述多个分布式缓存中的每个分布式缓存的所述多个缓存单元的数目。
4.根据权利要求1所述的装置,进一步包括:
读取控制信号生成电路,被配置为依次生成与所述多个分布式缓存中的所述多个缓存单元分别相对应的读取控制信号。
5.根据权利要求4所述的装置,其中所述多个分布式缓存被配置为在多个时钟周期中的每个时钟周期将所述多个乘积元素分别存储在所述多个分布式缓存中的与所述时钟周期相对应的缓存单元中,以及
所述读取控制信号生成电路被配置为在所述多个时钟周期中的每个时钟周期生成与所述多个分布式缓存中的相应缓存单元相对应的读取控制信号。
6.根据权利要求5所述的装置,其中所述多个分布式缓存被配置为将各个时钟周期生成的所述多个乘积元素分别顺序地存储在所述多个分布式缓存中的相应缓存单元中,以及
所述读取控制信号生成电路被配置为在所述多个时钟周期中的每个时钟周期生成包括针对所述多个缓存单元中的一个缓存单元的读取地址的所述读取控制信号,并且在下一个时钟周期将所述读取地址增加一个地址单位。
7.根据权利要求6所述的装置,其中所述多个分布式缓存中的每个分布式缓存被配置为将与所述读取地址相对应的缓存单元中的乘积元素输出到所述累加电路。
8.根据权利要求1所述的装置,其中所述装置被包含在现场可编程门阵列中。
9.根据权利要求8所述的装置,其中所述多个分布式缓存中的每个分布式缓存为查找表存储器(LUTM)。
10.根据权利要求1所述的装置,其中所述装置被包含在专用集成电路中。
11.根据权利要求1至10中任一项所述的装置,其中,
所述输入数据集合矩阵包括多个通道的输入数据矩阵,并且所述滤波器集合矩阵包括多个通道的滤波器矩阵,以及
所述输入数据矩阵的通道的数目等于所述滤波器矩阵的通道的数目。
12.根据权利要求11所述的装置,其中所述多个分布式缓存中的每个分布式缓存的所述多个缓存单元的数目等于所述滤波器矩阵的通道的数目。
13.根据权利要求11所述的装置,其中在多个时钟周期中的每个时钟周期一个通道的滤波器矩阵和对应一个通道的输入数据矩阵中的彼此对应的相应矩阵元素分别输入到所述多个乘法器。
14.根据权利要求11所述的装置,其中所述多个分布式缓存的数目等于所述滤波器矩阵中的矩阵元素的数目。
15.根据权利要求14所述的装置,其中所述多个寄存器的数目比所述多个分布式缓存的数目小预定值。
16.一种用于卷积运算的方法,包括:
从第一矩阵和第二矩阵接收矩阵元素,并且将所述第一矩阵和所述第二矩阵中的彼此对应的相应矩阵元素分别相乘以生成多个乘积元素,所述第一矩阵为输入数据集合矩阵,所述第二矩阵为滤波器集合矩阵;
将所述多个乘积元素分别存储在多个分布式缓存中的相应缓存单元中;
接收读取控制信号,对所述读取控制信号进行逐级延迟以输出经过逐级延迟的多个读取控制信号,并且向所述多个分布式缓存分别提供所述读取控制信号和所述经过逐级延迟的多个读取控制信号;
从所述多个分布式缓存接收与所述读取控制信号和所述经过逐级延迟的多个读取控制信号相对应的缓存单元中的乘积元素;以及
基于所接收的多个分布式缓存的相应缓存单元中的乘积元素生成累加数据。
17.根据权利要求16所述的方法,进一步包括:
依次生成与所述多个分布式缓存中的多个缓存单元分别相对应的读取控制信号。
18.根据权利要求17所述的方法,其中
将所述多个乘积元素存储包括:在多个时钟周期中的每个时钟周期将所述多个乘积元素分别存储在所述多个分布式缓存中的与所述时钟周期相对应的缓存单元中,以及
生成所述读取控制信号包括:在所述多个时钟周期中的每个时钟周期生成与所述多个分布式缓存中的相应缓存单元相对应的读取控制信号。
19.根据权利要求18所述的方法,其中
将所述多个乘积元素存储包括:将各个时钟周期生成的所述多个乘积元素分别顺序地存储在所述多个分布式缓存中的相应缓存单元中,以及
生成所述读取控制信号包括:在所述多个时钟周期中的每个时钟周期生成包括针对所述多个缓存单元中的一个缓存单元的读取地址的所述读取控制信号,并且在下一个时钟周期将所述读取地址增加一个地址单位。
20.根据权利要求19所述的方法,其中
生成所述累加数据包括:基于与所述读取地址相对应的缓存单元中的乘积元素来生成所述累加数据。
CN201910977395.3A 2019-10-15 2019-10-15 用于卷积运算的装置和方法 Active CN110717588B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201910977395.3A CN110717588B (zh) 2019-10-15 2019-10-15 用于卷积运算的装置和方法
JP2021545885A JP7244660B2 (ja) 2019-10-15 2020-04-07 畳み込み演算のための装置及び方法
PCT/CN2020/083574 WO2021073053A1 (zh) 2019-10-15 2020-04-07 用于卷积运算的装置和方法
EP20876067.8A EP3893166A4 (en) 2019-10-15 2020-04-07 CONVOLUTION OPERATION DEVICE AND METHOD
US17/697,917 US11556614B2 (en) 2019-10-15 2022-03-17 Apparatus and method for convolution operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910977395.3A CN110717588B (zh) 2019-10-15 2019-10-15 用于卷积运算的装置和方法

Publications (2)

Publication Number Publication Date
CN110717588A CN110717588A (zh) 2020-01-21
CN110717588B true CN110717588B (zh) 2022-05-03

Family

ID=69211698

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910977395.3A Active CN110717588B (zh) 2019-10-15 2019-10-15 用于卷积运算的装置和方法

Country Status (5)

Country Link
US (1) US11556614B2 (zh)
EP (1) EP3893166A4 (zh)
JP (1) JP7244660B2 (zh)
CN (1) CN110717588B (zh)
WO (1) WO2021073053A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110717588B (zh) * 2019-10-15 2022-05-03 阿波罗智能技术(北京)有限公司 用于卷积运算的装置和方法
CN112580787B (zh) * 2020-12-25 2023-11-17 北京百度网讯科技有限公司 神经网络加速器的数据处理方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN106447037A (zh) * 2015-10-08 2017-02-22 上海兆芯集成电路有限公司 具有多个可选择输出的神经网络单元
CN106844294A (zh) * 2016-12-29 2017-06-13 华为机器有限公司 卷积运算芯片和通信设备
CN106940815A (zh) * 2017-02-13 2017-07-11 西安交通大学 一种可编程卷积神经网络协处理器ip核
CN107301455A (zh) * 2017-05-05 2017-10-27 中国科学院计算技术研究所 用于卷积神经网络的混合立方体存储***及加速计算方法
CN109784489A (zh) * 2019-01-16 2019-05-21 北京大学软件与微电子学院 基于fpga的卷积神经网络ip核
CN110070178A (zh) * 2019-04-25 2019-07-30 北京交通大学 一种卷积神经网络计算装置及方法
CN110135554A (zh) * 2019-03-25 2019-08-16 电子科技大学 一种基于fpga的卷积神经网络硬件加速架构
CN110175670A (zh) * 2019-04-09 2019-08-27 华中科技大学 一种基于FPGA实现YOLOv2检测网络的方法及***

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03201817A (ja) * 1989-12-28 1991-09-03 Sony Corp デジタルフイルタ及び内積演算回路
JP2945487B2 (ja) * 1990-12-26 1999-09-06 株式会社日立製作所 行列乗算器
JP4442644B2 (ja) * 2007-06-15 2010-03-31 株式会社デンソー パイプライン演算装置
US8117247B1 (en) * 2007-07-19 2012-02-14 Xilinx, Inc. Configurable arithmetic block and method of implementing arithmetic functions in a device having programmable logic
JP6700712B2 (ja) * 2015-10-21 2020-05-27 キヤノン株式会社 畳み込み演算装置
CN106127302A (zh) * 2016-06-23 2016-11-16 杭州华为数字技术有限公司 处理数据的电路、图像处理***、处理数据的方法和装置
KR20180060149A (ko) * 2016-11-28 2018-06-07 삼성전자주식회사 컨볼루션 처리 장치 및 방법
US11775313B2 (en) * 2017-05-26 2023-10-03 Purdue Research Foundation Hardware accelerator for convolutional neural networks and method of operation thereof
CN108804139B (zh) * 2017-06-16 2020-10-20 上海兆芯集成电路有限公司 可编程设备及其操作方法和计算机可用介质
CN108805276B (zh) * 2017-06-16 2020-09-22 上海兆芯集成电路有限公司 处理器、用于操作处理器的方法和计算机可用介质
US10671349B2 (en) * 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
CN109993272B (zh) * 2017-12-29 2019-12-06 北京中科寒武纪科技有限公司 卷积及降采样运算单元、神经网络运算单元和现场可编程门阵列集成电路
CN110210610B (zh) * 2018-03-27 2023-06-20 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
US11216532B2 (en) * 2018-09-26 2022-01-04 Intel Corporation Circuitry for high-bandwidth, low-latency machine learning
CN110717588B (zh) * 2019-10-15 2022-05-03 阿波罗智能技术(北京)有限公司 用于卷积运算的装置和方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN106447037A (zh) * 2015-10-08 2017-02-22 上海兆芯集成电路有限公司 具有多个可选择输出的神经网络单元
CN106485319A (zh) * 2015-10-08 2017-03-08 上海兆芯集成电路有限公司 具有神经处理单元可动态配置以执行多种数据尺寸的神经网络单元
CN106503797A (zh) * 2015-10-08 2017-03-15 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元以及集体将接收自神经存储器的数据列进行移位的神经处理单元阵列
CN106844294A (zh) * 2016-12-29 2017-06-13 华为机器有限公司 卷积运算芯片和通信设备
CN106940815A (zh) * 2017-02-13 2017-07-11 西安交通大学 一种可编程卷积神经网络协处理器ip核
CN107301455A (zh) * 2017-05-05 2017-10-27 中国科学院计算技术研究所 用于卷积神经网络的混合立方体存储***及加速计算方法
CN109784489A (zh) * 2019-01-16 2019-05-21 北京大学软件与微电子学院 基于fpga的卷积神经网络ip核
CN110135554A (zh) * 2019-03-25 2019-08-16 电子科技大学 一种基于fpga的卷积神经网络硬件加速架构
CN110175670A (zh) * 2019-04-09 2019-08-27 华中科技大学 一种基于FPGA实现YOLOv2检测网络的方法及***
CN110070178A (zh) * 2019-04-25 2019-07-30 北京交通大学 一种卷积神经网络计算装置及方法

Also Published As

Publication number Publication date
JP2022519314A (ja) 2022-03-22
WO2021073053A1 (zh) 2021-04-22
EP3893166A4 (en) 2022-11-30
US20220207106A1 (en) 2022-06-30
CN110717588A (zh) 2020-01-21
EP3893166A1 (en) 2021-10-13
US11556614B2 (en) 2023-01-17
JP7244660B2 (ja) 2023-03-22

Similar Documents

Publication Publication Date Title
CN111242289B (zh) 一种规模可扩展的卷积神经网络加速***与方法
Sudhashree et al. Analysis of Low Complexity Memory Footprint Reduction for Delay and Area Efficient Realization of 2D FIR Filters
Wu et al. A high-throughput reconfigurable processing array for neural networks
CN109284824B (zh) 一种基于可重构技术的用于加速卷积和池化运算的装置
US20240152197A1 (en) Power optimization in an artificial intelligence processor
CN110717588B (zh) 用于卷积运算的装置和方法
US11842199B2 (en) Controlling the operating speed of stages of an asynchronous pipeline
US11593907B2 (en) System and methods for computing 2-D convolutions and cross-correlations
Farrukh et al. Optimization for efficient hardware implementation of CNN on FPGA
US20220253668A1 (en) Data processing method and device, storage medium and electronic device
CN110580519A (zh) 一种卷积运算结构及其方法
Liu et al. A heterogeneous processor design for CNN-based AI applications on IoT devices
CN114780481A (zh) 用于深度学习的可重构处理单元
Nelson et al. Reconfigurable ASIC implementation of asynchronous recurrent neural networks
Dai et al. An energy-efficient bit-split-and-combination systolic accelerator for nas-based multi-precision convolution neural networks
Ayhan et al. Approximate fully connected neural network generation
KR20210131417A (ko) 데이터 처리 장치 및 인공 지능 칩
US11580191B1 (en) Method and system for convolution
CN115081600A (zh) 执行Winograd卷积的变换单元、集成电路装置及板卡
Ogawa et al. Deep learning acceleration with a look-up-table based memory logic conjugated system
Goel et al. An efficient hardwired realization of embedded neural controller on system-on-programmable-chip (SOPC)
Chen et al. A Reconfigurable Process Engine for Flexible Convolutional Neural Network Acceleration
Wan et al. ADS-CNN: Adaptive Dataflow Scheduling for lightweight CNN accelerator on FPGAs
Zhou et al. A low power FIR filter structure based on a modified distributed arithmetic algorithm
CN114237551A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211015

Address after: 105 / F, building 1, No. 10, Shangdi 10th Street, Haidian District, Beijing 100085

Applicant after: Apollo Intelligent Technology (Beijing) Co.,Ltd.

Address before: 100080 No.10, Shangdi 10th Street, Haidian District, Beijing

Applicant before: BAIDU ONLINE NETWORK TECHNOLOGY (BEIJING) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant