CN112970036A - 用于实施神经网络应用的卷积块阵列及其使用方法、和卷积块电路 - Google Patents

用于实施神经网络应用的卷积块阵列及其使用方法、和卷积块电路 Download PDF

Info

Publication number
CN112970036A
CN112970036A CN201980073061.1A CN201980073061A CN112970036A CN 112970036 A CN112970036 A CN 112970036A CN 201980073061 A CN201980073061 A CN 201980073061A CN 112970036 A CN112970036 A CN 112970036A
Authority
CN
China
Prior art keywords
convolution
circuit
block
circuits
convolution block
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
Application number
CN201980073061.1A
Other languages
English (en)
Other versions
CN112970036B (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.)
Genesys Logic Inc
Original Assignee
Genesys Logic Inc
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 Genesys Logic Inc filed Critical Genesys Logic Inc
Publication of CN112970036A publication Critical patent/CN112970036A/zh
Application granted granted Critical
Publication of CN112970036B publication Critical patent/CN112970036B/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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • 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/50Adding; Subtracting
    • 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
    • G06F7/523Multiplying only
    • 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
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Analysis (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Logic Circuits (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

本申请提供一种用于实施神经网络应用的卷积块阵列及其使用方法、和卷积块电路。卷积块阵列包括多个卷积块电路,其被配置为处理神经网络应用的卷积运算,其中每个卷积块电路包括:多个乘法电路,被配置为执行卷积运算;和至少一加法电路连接到多个乘法电路,并配置为执行卷积运算的多个结果的加法运算并生成输出信号,其中至少一所述多个卷积块电路被配置为执行所述神经网络应用的一偏置运算。

Description

用于实施神经网络应用的卷积块阵列及其使用方法、和卷积 块电路
技术领域
本揭示涉及神经网络应用领域,尤其是涉及一种用于实施神经网络应用的卷积块阵列及其使用方法、和卷积块电路。
背景技术
人工神经网络(artificial neural network)是参照生物脑的计算模型。在神经网络中,被称为神经元的节点可以互连并共同操作以处理输入资料。不同类型的神经网络的范例包括但不限于卷积神经网络(convolutional neural network,CNN)、递归神经网络(recurrent neural network)、深度信念网络(deep belief network),受限玻尔兹曼机(restricted Boltzman machine)等。在前馈神经网络中,神经网络的神经元与其他神经元有链接,且链路仅在一个方向上延伸(即向前方向)通过神经网络。
可以利用神经网络从复杂的输入资料中提取“特征值”。神经网络可以包括多个层。每个层接收输入资料并通过处理层的输入资料生成输出资料。输出资料可以是神经网络通过将输入图像或特征值图与卷积核(convolution kernel)卷积运算而产生的输入资料的特征值图。
神经网络的卷积块电路是卷积神经网络加速器的主要核心。为了在硬件中实现卷积块电路的操作,必须在最终滤波运算后执行偏置运算。然而,根据卷积的比特的组合,难以实现用于硬件输出的偏置运算的硬件。现有方法是通过外部加法电路和外部存储器来执行加法运算,所述方法使得以硬件操作CNN的机制变得容易理解,但是,需要额外硬件资源和存储器的操作来执行偏置运算。
有鉴于此,有必要提供一种用于实施神经网络应用的卷积块阵列及其使用方法、和卷积块电路,以解决现有技术的技术问题。
发明内容
为了解决上述技术问题,本揭示的目的在于提供一种用于实施神经网络应用的卷积块阵列及其使用方法、和卷积块电路。本揭示的卷积块阵列可以支持各种比特尺寸,并且可以通过卷积块阵列来执行偏置系数的加法操作,而无需使用额外的加法电路。
为了达到上述目的,本揭示提供一种用于实施神经网络应用的卷积块阵列,包括:多个卷积块电路,用于处理所述神经网络应用的一卷积运算,其中每一所述多个卷积块电路包括:多个乘法电路,用于执行所述卷积运算;以及至少一加法电路,与所述多个乘法电路连接,用于执行所述卷积运算的多个结果的加法运算并且生成一输出信号;其中至少一所述多个卷积块电路被配置为执行所述神经网络应用的一偏置运算。
在本揭示的一优选实施例中,每一所述多个卷积块电路包括四个乘法电路、一第一卷积加法电路、一第二卷积加法电路、以及一块加法电路;其中所述四个乘法电路中的两个乘法电路连接到所述第一卷积加法电路,并且所述四个多个乘法电路的另外两个乘法电路连接到所述第二卷积加法电路;以及所述块加法电路连接所述第一卷积加法电路和所述第二卷积加法电路。
在本揭示的一优选实施例中,所述卷积块电路还包括一锁存器,其连接到所述至少一加法电路并且还连接到至少一下游卷积块电路,以及其中所述锁存器被配置为将所述输出信号传送到所述至少一下游卷积块电路或者是将所述输出信号送回所述至少一加法电路。
在本揭示的一优选实施例中,所述卷积块阵列还包括:多个多路多工器,分别连接到所述多个乘法电路,其中所述多个乘法电路通过各自的所述多路多工器连接到所述至少一加法电路;以及一路径控制器,连接到所述多个多路多工器并且还连接到至少一上游卷积块电路,其中当所述路径控制器的相应路径被启用时,来自所述至少一上游卷积块的输出信号通过所述路径控制器传送到所述至少一加法电路。
在本揭示的一优选实施例中,所述卷积运算的执行是通过将多个特征值乘以多个权重系数并与一偏置系数相加。
本揭示还提供一种在卷积块阵列中实施神经网络应用的方法,其中所述卷积块阵列包括多个卷积块电路,并且每一所述多个卷积块电路包括多个乘法电路和至少一加法电路,并且所述方法包括:S10,在一第一维度中分配一组的多个卷积块电路来处理所述神经网络应用的一卷积运算;S20,将一控制信号输入到所述组的所述多个卷积块电路以控制所述组的所述多个卷积块电路执行基于涉及N比特的M×M滤波器窗口的所述卷积运算,其中M是奇数且N是大于1的整数;S30,将多个特征值和多个滤波值输入到所述组的所述多个卷积块电路;S40,通过所述卷积块电路的所述多个乘法电路执行所述多个特征值和所述多个滤波值的N比特乘法运算,其中所述多个特征值和所述多个滤波值对应于多个输入图像的多个数值;S50,通过所述至少一加法电路将从所述多个乘法电路获得的多个结果相加;以及S60,产生一卷积输出信号。
在本揭示的一优选实施例中,步骤S10还包括:根据基于涉及所述N比特的所述M×M滤波器窗口的所述卷积运算的组合,确定所使用的所述多个卷积块电路的数量来执行所述多个卷积块电路的一个像素的所述卷积运算,其中所述多个卷积块电路是以一条线为基础排列。
在本揭示的一优选实施例中,所述一个像素的所述多个滤波值包括多个权重系数和一偏置系数,并且在用于执行每个像素的所述卷积运算的最后一个卷积块电路中,所述偏置系数通过所述最后一个卷积块电路的所述多个乘法电路的一闲置乘法电路传递到所述至少一加法电路。
在本揭示的一优选实施例中,在步骤S50之后,所述方法还包括:S51,通过每一所述卷积块电路的所述至少一加法电路将所述多个结果相加以产生一部分输出信号;S52,将所有的所述部分输出信号发送到所述最后一个卷积块电路;以及S53,通过所述最后一个卷积块电路的所述至少一加法电路将所有的所述部分输出信号相加,并生成表示所述一个像素的所述卷积输出信号。
在本揭示的一优选实施例中,每一所述多个卷积块电路包括一锁存器,所述锁存器连接到所述至少一加法电路并且还连接到所述最后一个卷积块电路,并且其中在步骤S51之后,所述最后一个卷积块电路暂时将所述部分输出信号存储在所述锁存器中,以及在步骤S52中,所述最后一个卷积块电路将所述部分输出信号反馈给所述最后一个卷积块电路的所述至少一加法电路。
本揭示还提供一种卷积块电路,包含:四个乘法电路,用于执行基于涉及N比特的M×M滤波器窗口的一卷积运算;一第一卷积加法电路,连接到所述四个乘法电路中的两个乘法电路,并配置为将所述两个乘法电路执行所述卷积运算获得的多个结果相加;一第二卷积加法电路,连接到所述四个乘法电路的另外两个乘法电路,并配置为将所述另外两个乘法电路执行所述卷积运算获得的多个结果相加;一块加法电路,连接到所述第一卷积加法电路和所述第二卷积加法电路,并配置为执行一第一加法运算和一第二加法运算,其中在所述第一加法运算中,所述块加法电路将所述第一卷积加法电路和所述第二卷积加法电路执行所述卷积运算获得的多个结果与一偏置系数相加,并产生一第一卷积值,其中所述偏置系数通过所述四个乘法电路的一闲置乘法电路传送到所述块加法电路;以及一锁存器,连接到所述块加法电路,并配置为将所述第一卷积值反馈给所述块加法电路;其中当所述块加法电路接收所述第一卷积值和来自上游的多个卷积块电路的其他部分输出信号后,所述块加法电路执行所述第二加法运算以将所述第一卷积值和所述其他部分输出信号相加,并产生一卷积输出信号。
相较于现有技术,当CNN运算以硬件实现时,不须配备任何用于偏置运算的硬件,且所有二维卷积的滤波器大小都是奇数。本揭示提供一种卷积块电路,由四个乘法电路组成。根据滤波器大小和卷积运算的比特大小的组合,将剩余像素的乘法结果输入到卷积块阵列的必要卷积块电路的最后部分的未使用的加法电路。最后,通过给出空滤波器输入的偏置值,通过这种设计,可以获得除了激活(activation)运算之外的所有成功的结果。这节省了硬件资源并且消除了对单独的存储器操作的需要,从而提高了性能。
附图说明
图1显示根据本揭示优选实施例的卷积块电路的示意图。
图2显示用于并行地处理不同滤波器组合的卷积块阵列的示意图。
图3显示卷积块电路执行基于涉及2比特的3×3滤波器窗口的卷积运算的示意图。
图4显示显示CNN的激活函数。
图5显示以一条线为基础排列的多个卷积块电路,其执行基于涉及8比特的3×3滤波器窗口的卷积运算的示意图。
图6显示图5中多个卷积块电路的A部分的示意图。
图7显示以一条线为基础排列的多个卷积块电路,其执行基于涉及8比特的5×5滤波器窗口的卷积运算的示意图。
具体实施方式
为了让本揭示的上述及其他目的、特征、优点能更明显易懂,下文将特举本揭示优选实施例,并配合所附图式,作详细说明如下。
请参照图1,其显示根据本揭示优选实施例的卷积块电路10的示意图。卷积块电路10包括四个乘法电路110、四个多路多工器120、第一卷积加法电路131、第二卷积加法电路132、块加法电路133、锁存器140、和路径控制器150。四个乘法电路110被配置为执行神经网络应用的卷积运算。四个乘法电路110中的每一个连接到四个多路多工器120中的一个,并且两个乘法电路110通过相应的多路多工器120连接到第一卷积加法电路131。以及,其他两个乘法电路110通过相应的多路多工器120连接到第二卷积加法电路132。此外,第一卷积加法电路131和第二卷积加法电路132连接到块加法电路133。锁存器140连接到多个下游卷积块电路并且还连接到块加法电路133。路径控制器150连接到多个上游卷积块电路,并且还连接到四个多路多工器120。
在本揭示中,卷积块电路10可以被设置在包括控制器和存储器的集成电路(integrated circuit,IC)上。如图1所示,IC的控制器可以将控制信号SCON输入到卷积块电路10,并将多个输入图像Im(1)-Im(4)送入卷积块电路10,以控制卷积块电路10用有关于多个输入图像Im(1)-Im(4)的多个特征值P(1)-P(4)和多个滤波值f(1)-f(4)来执行卷积运算,其中多个滤波值f(1)-f(4)包括多个权重系数和/或偏置系数,进而输出一个输出信号SOUT。多个输入图像Im(1)-Im(4)的数值可以存储在IC的存储器中。在本揭示中,锁存器140可以将输出信号SOUT发送到多个下游卷积块电路,或者可以将输出信号SOUT反馈到卷积块电路10的块加法电路133。此外,路径控制器150可以从多个上游卷积块电路接收输出信号SOUT,并将它们传递给相应的加法电路。可以理解的是,卷积块电路10的各种操作可以由IC的控制器控制,即,实施卷积块电路10的全部或部分过程可以由用于指示相关硬件(例如处理器,控制器等)的计算机程序完成。程序可以保存在计算机可读存储介质中,并且程序可以包括上述和下述的方法的实施例的流程,其中所述的存储介质可以是存储器等。
请参照图2,其显示用于并行地处理不同滤波器组合的卷积块阵列1的示意图。卷积块阵列1包括以多排和多栏排列的多个卷积块电路10。在本实施例中,卷积块阵列1是通过以16排和16栏的组合排列的多个卷积块电路10而形成。然而,在其他实施例中可以采用不同的阵列,惟不限于此。如图2所示,同一栏的所述多个卷积块电路10彼此相互连接,例如通过总线等。多个卷积块电路10的每栏是串联结构。“串联”是指将可以计算出的数值传递给同一栏的其他卷积块电路10而不需要存储在外部存储器。
应当注意的是,本揭示的乘法电路可处理的比特(bit)是可配置的,使得多路多工器120适用于执行具有多个滤波值的不同比特的各种卷积运算。因此,如图2所示,不同栏的卷积块电路10可以并行地执行不同的卷积运算。卷积运算的滤波器大小和比特大小的组合确定了执行一个像素的卷积运算所要采用的卷积块电路10的数量,以及确定最后一个卷积块电路10使用的乘法电路的数量,其中所述多个卷积块电路10是以一条线为基础排列。举例来说,以执行基于涉及8比特的3×3滤波器窗口的卷积运算为例,需要三个卷积块电路10来执行一个像素的卷积运算,其中最后一个卷积块电路10仅使用一个乘法电路。如图2所示,在同一栏的所述多个卷积块电路中,相同图案表示卷积块电路10正在执行同一像素的卷积运算,并且空白无图案部分表示卷积块电路或乘法电路是闲置的。另外,同一栏的所述多个卷积块电路可以并行地执行不同像素的卷积运算。
如图2所示,一个卷积块电路10中的一个或多个乘法电路是闲置的,例如卷积块电路10’。对于卷积块电路10’而言,剩余的乘法电路的操作没有意义。因此,在本揭示中,预先准备的多个滤波值被操纵为包括偏置系数的值。此外,偏置系数的值可以通过剩余的乘法电路发送到存在于卷积块电路中的加法电路,以执行偏置系数的加法操作。应当注意的是,偏置系数的加法操作由卷积块电路通过卷积运算的滤波器大小和比特大小的组合来确定。相应的偏置系数被输入到卷积块电路而不是输入权重系数。偏置系数的具体加法操作将在后面详述。此外,由于本揭示的卷积块电路10可以支持各种比特尺寸,所以可以通过卷积块电路10执行偏置系数的加法操作,而无需使用设置在卷积块阵列1外部的额外的加法电路。因此,不需要单独的存储器访问操作,也不需要单独的硬件。根据本揭示,通过使用卷积块电路10,可以减少CNN中的硬件的大小,并且可以实现操作性能的改进。
请参照图3,其显示卷积块电路10执行基于涉及2比特的3×3滤波器窗口的卷积运算的示意图。在本实施例中,卷积块电路10只需要一个周期即可完成一个像素的卷积运算。在这个周期中,控制信号SCON被输入到卷积块电路10,乘法电路111-114配置为执行2比特的乘法运算。多个特征值(即Px(1)-Px(9))和多个滤波值(即多个权重系数Wfx(1)-Wfx(9)和偏置系数b)被送入卷积块电路10,接着执行3×3的卷积运算,从而产生输出信号SOUT
具体来说,如图3所示,第一乘法电路111利用权重系数Wfx(1)-Wfx(4)和特征值Px(1)-Px(4)执行第一部分卷积运算,第二乘法电路112利用权重系数Wfx(5)-Wfx(8)和特征值Px(5)-Px(8)执行第二部分卷积运算,第三乘法电路113利用权重系数Wfx(9和特征值Px(9)执行第三部分卷积运算。在本揭示中,由于所有CNN卷积运算数据ID都需要奇数个乘法电路的操作,卷积块电路10将不使用第四乘法电路114。也就是说,第四乘法电路114将不执行任何卷积运算,并且乘法电路111-113的相应部分卷积运算同时被执行。
接着,第一乘法电路111和第二乘法电路112将对应的部分卷积运算的结果发送到第一加法电路131,使得第一加法电路131执行加法运算以将那些来自第一乘法电路111和第二乘法电路112的结果相加。并且,第三乘法电路113将对应的部分卷积运算的结果发送到第二加法电路132,并且偏置值b将通过第四乘法电路114直接传递到第二加法电路132。这样,第二加法电路132将执行另一个加法运算以将两个数值相加。然后,由第一加法电路131和第二加法电路132计算的相加的数值被传递到块加法电路133,其加上这两个数值,从而输出输出信号SOUT。应当理解的是,对于一个像素,基于涉及2比特的3×3滤波器窗口的卷积运算可以通过一个卷积块电路10来实现,即,从卷积块电路10输出的输出信号SOUT相当于一个像素的卷积输出值。
在本揭示中,如果权重系数的比特大小与偏置系数的比特大小不同,则将偏置的值调整为对应的权重系数的比特大小,并且可以通过划分来解决,因为偏置的值通常远大于或等于权重系数的值。在所述过程中,偏置值可能导致一些错误,但这不足以影响整体CNN操作,因为大多数CNN硬件实现是可容忍的。如果所有的卷积操作在输入图像的相同比特精度下工作,则偏置值将被用作输入图像的相同比特精度而不操纵它的值。
请参照图4。其显示显示CNN的激活函数200,其中函数200的一部分201可以通过本揭示的卷积块阵列1来计算获得。除了激活运算(即,符号「f」)之外,卷积块阵列1将覆盖所有单元神经元操作201。如上所述,将在像素的最终操作期间执行偏置运算。
如图2所示,取决于卷积块阵列1的一栏的所述多个卷积块电路10中的每个卷积块电路的物理位置,输出信号将被反馈到连接的所述多个卷积块电路10的最后一个。具体来说,请参照图5,其显示以一条线为基础排列的多个卷积块电路,其执行基于涉及8比特的3×3滤波器窗口的卷积运算的示意图。在卷积块阵列1中实现神经网络应用的方法包括以下步骤:在步骤S10中,在第一维度中分配一组的多个卷积块电路来处理神经网络应用的卷积运算,其中所述卷积运算执行基于涉及8比特的3×3滤波器窗口。在所述实施例中,一个像素的卷积运算由三个卷积块电路10执行。在这种情况下,这三个卷积块电路10需要两个周期才能完成一个像素的卷积运算。在第一周期中,这三个卷积块电路使用多个特征值和多个滤波值(包括多个权重系数和/或偏置系数b)执行相应的部分卷积运算。接着,分别生成部分输出信号。在第二周期中,将所有的部分输出信号发送到最后一个卷积块电路10,并且在最后一个卷积块电路10上执行最终加法操作,从而输出表示一个像素的卷积输出信号。具体的信号传输和卷积运算将于后详述。
请参照图6,其显示图5中多个卷积块电路11-13的A部分的示意图。在第一周期中,执行步骤S20,并且将控制信号输入到卷积块电路11-13,卷积块电路的乘法电路被配置为执行8比特的乘法函数。在步骤S30中,将特征值Px(1)-Px(4)和滤波值(即权重系数Wfx(1)-Wfx(4))输入到第一卷积块电路11,将特征值Px(5)-Px(8)和滤波值(即权重系数Wfx(5)-Wfx(8))输入到第二卷积块电路12,以及将特征值Px(9)和滤波值(即权重系数Wfx(9)和偏置系数b)输入到第三卷积块电路13。在本实施例中,由于所有CNN卷积运算数据ID都需要奇数的乘法电路的操作,所以最终卷积块电路(即第三卷积块电路13)只会使用一个乘法电路,而其余三个乘法电路将不会使用。然后,在步骤S40中,多个卷积块电路11-13同时执行3×3卷积运算并生成相应的部分输出信号Sconv1-Sconv3。具体地,在第一周期中,执行步骤S50,第三卷积块电路13的块加法电路执行第一加法运算,以将来自第二卷积加法电路的相应部分卷积运算和来自第一卷积加法电路的偏置系数的结果相加,接着产生第一卷积值(即,部分输出信号Sconv3),其中偏置系数通过四个乘法电路中的闲置乘法电路发送到块加法电路。可选地,部分输出信号Sconv1-Sconv3可以暂时存储在各自的锁存器140中。
如图6所示,在第二周期中,第一和第二卷积块电路11、12将相应的部分输出信号Sconv1-Sconv2发送到第三卷积块电路13的路径控制器150。路径控制器150的相应路径被启用,使得部分输出信号Sconv1-Sconv2可以被发送到第三卷积块电路13的第一加法电路或第二加法电路。此时,第三卷积块电路13将部分输出信号Sconv3反馈回其块加法电路。接着,执行步骤S60,第三卷积块电路13的块加法电路从上游卷积块电路11-12接收其他部分输出信号Sconv1-Sconv2和第一卷积值(即部分输出信号Sconv3),然后执行第二加法运算以将所有部分输出信息的Sconv1-Sconv3相加,从而输出表示一个像素的完整的卷积输出信号SOUT
应当理解的是,如图2所示,其他实施例的一个像素的卷积运算(例如,基于涉及2比特的5×5滤波器窗口的卷积运算、基于涉及4比特的3×3滤波器窗口的卷积运算、基于涉及4比特的5×5滤波器窗口的卷积运算等)都是通过两个周期来实现,这里不加以赘述。
请参照图7,其显示以一条线为基础排列的多个卷积块电路,其执行基于涉及8比特的5×5滤波器窗口的卷积运算的示意图。一个像素的卷积运算由八个卷积块电路执行。在这种情况下,这八个卷积块电路需要三个周期来完成一个像素的卷积运算。在第一周期中,第一至第七卷积块电路执行相应的部分卷积运算,其使用多个特征值和多个滤波值(包括多个权重系数和/或偏置系数b),然后分别产生部分输出信号。优选地,偏置系数b应用于第四卷积块电路。
如图7所示,在第二周期中,第一至第三卷积块电路将相应的部分输出信号发送到第四卷积块电路的路径控制器。启用路径控制器的相应路径,使得部分输出信号发送到第四卷积块电路的加法电路。同时,第四卷积块电路将部分输出信号反馈给自己的块加法电路。接着,所有的部分输出信号由第四卷积块电路的块加法电路相加,从而产生另一部分输出信号。
如图7所示,在第三周期中,第四至第七卷积块电路将相应的部分输出信号发送到第八卷积块电路的路径控制器。启用路径控制器的相应路径,使得部分输出信号发送到第八卷积块电路的加法电路。接着,所有的部分输出信号由第八卷积块电路的块加法电路相加,从而输出表示一个像素的完整的卷积输出信号。
综上所述,当CNN运算以硬件实现时,不须配备任何用于偏置运算的硬件,且所有二维卷积的滤波器大小都是奇数。本揭示提供一种卷积块电路,由四个乘法电路组成。根据滤波器大小和卷积运算的比特大小的组合,将剩余像素的乘法结果输入到卷积块阵列的必要卷积块电路的最后部分的未使用的加法电路。最后,通过给出空滤波器输入的偏置值,通过这种设计,可以获得除了激活运算之外的所有成功的结果。这节省了硬件资源并且消除了对单独的存储器操作的需要,从而提高了性能。
以上仅是本揭示的优选实施方式,应当指出,对于所属领域技术人员,在不脱离本揭示原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本揭示的保护范围。

Claims (11)

1.一种用于实施神经网络应用的卷积块阵列,其特征在于,包括:
多个卷积块电路,用于处理所述神经网络应用的一卷积运算,其中每一所述多个卷积块电路包括:
多个乘法电路,用于执行所述卷积运算;以及
至少一加法电路,与所述多个乘法电路连接,用于执行所述卷积运算的多个结果的加法运算并且生成一输出信号;
其中至少一所述多个卷积块电路被配置为执行所述神经网络应用的一偏置运算。
2.如权利要求1所述的卷积块阵列,其特征在于,每一所述多个卷积块电路包括四个乘法电路、一第一卷积加法电路、一第二卷积加法电路、以及一块加法电路;
其中所述四个乘法电路中的两个乘法电路连接到所述第一卷积加法电路,并且所述四个多个乘法电路的另外两个乘法电路连接到所述第二卷积加法电路;以及
所述块加法电路连接所述第一卷积加法电路和所述第二卷积加法电路。
3.如权利要求1所述的卷积块阵列,其特征在于,所述卷积块电路还包括一锁存器,其连接到所述至少一加法电路并且还连接到至少一下游卷积块电路,以及其中所述锁存器被配置为将所述输出信号传送到所述至少一下游卷积块电路或者是将所述输出信号送回所述至少一加法电路。
4.如权利要求3所述的卷积块阵列,其特征在于,所述卷积块阵列还包括:
多个多路多工器,分别连接到所述多个乘法电路,其中所述多个乘法电路通过各自的所述多路多工器连接到所述至少一加法电路;以及
一路径控制器,连接到所述多个多路多工器并且还连接到至少一上游卷积块电路,其中当所述路径控制器的相应路径被启用时,来自所述至少一上游卷积块的输出信号通过所述路径控制器传送到所述至少一加法电路。
5.如权利要求1所述的卷积块阵列,其特征在于,所述卷积运算的执行是通过将多个特征值乘以多个权重系数并与一偏置系数相加。
6.一种在卷积块阵列中实施神经网络应用的方法,其特征在于,所述卷积块阵列包括多个卷积块电路,并且每一所述多个卷积块电路包括多个乘法电路和至少一加法电路,并且所述方法包括:
S10,在一第一维度中分配一组的多个卷积块电路来处理所述神经网络应用的一卷积运算;
S20,将一控制信号输入到所述组的所述多个卷积块电路以控制所述组的所述多个卷积块电路执行基于涉及N比特的M×M滤波器窗口的所述卷积运算,其中M是奇数且N是大于1的整数;
S30,将多个特征值和多个滤波值输入到所述组的所述多个卷积块电路;
S40,通过所述卷积块电路的所述多个乘法电路执行所述多个特征值和所述多个滤波值的N比特乘法运算,其中所述多个特征值和所述多个滤波值对应于多个输入图像的多个数值;
S50,通过所述至少一加法电路将从所述多个乘法电路获得的多个结果相加;以及
S60,产生一卷积输出信号。
7.如权利要求6所述的方法,其特征在于,步骤S10还包括:根据基于涉及所述N比特的所述M×M滤波器窗口的所述卷积运算的组合,确定所使用的所述多个卷积块电路的数量来执行所述多个卷积块电路的一个像素的所述卷积运算,其中所述多个卷积块电路是以一条线为基础排列。
8.如权利要求7所述的方法,其特征在于,所述一个像素的所述多个滤波值包括多个权重系数和一偏置系数,并且在用于执行每个像素的所述卷积运算的最后一个卷积块电路中,所述偏置系数通过所述最后一个卷积块电路的所述多个乘法电路的一闲置乘法电路传递到所述至少一加法电路。
9.如权利要求8所述的方法,其特征在于,在步骤S50之后,所述方法还包括:
S51,通过每一所述卷积块电路的所述至少一加法电路将所述多个结果相加以产生一部分输出信号;
S52,将所有的所述部分输出信号发送到所述最后一个卷积块电路;以及
S53,通过所述最后一个卷积块电路的所述至少一加法电路将所有的所述部分输出信号相加,并生成表示所述一个像素的所述卷积输出信号。
10.如权利要求8所述的方法,其特征在于,每一所述多个卷积块电路包括一锁存器,所述锁存器连接到所述至少一加法电路并且还连接到所述最后一个卷积块电路,并且其中在步骤S51之后,所述最后一个卷积块电路暂时将所述部分输出信号存储在所述锁存器中,以及在步骤S52中,所述最后一个卷积块电路将所述部分输出信号反馈给所述最后一个卷积块电路的所述至少一加法电路。
11.一种卷积块电路,其特征在于,包含:
四个乘法电路,用于执行基于涉及N比特的M×M滤波器窗口的一卷积运算;
一第一卷积加法电路,连接到所述四个乘法电路中的两个乘法电路,并配置为将所述两个乘法电路执行所述卷积运算获得的多个结果相加;
一第二卷积加法电路,连接到所述四个乘法电路的另外两个乘法电路,并配置为将所述另外两个乘法电路执行所述卷积运算获得的多个结果相加;
一块加法电路,连接到所述第一卷积加法电路和所述第二卷积加法电路,并配置为执行一第一加法运算和一第二加法运算,其中在所述第一加法运算中,所述块加法电路将所述第一卷积加法电路和所述第二卷积加法电路执行所述卷积运算获得的多个结果与一偏置系数相加,并产生一第一卷积值,其中所述偏置系数通过所述四个乘法电路的一闲置乘法电路传送到所述块加法电路;以及
一锁存器,连接到所述块加法电路,并配置为将所述第一卷积值反馈给所述块加法电路;
其中当所述块加法电路接收所述第一卷积值和来自上游的多个卷积块电路的其他部分输出信号后,所述块加法电路执行所述第二加法运算以将所述第一卷积值和所述其他部分输出信号相加,并产生一卷积输出信号。
CN201980073061.1A 2018-11-06 2019-04-30 用于实施神经网络应用的卷积块阵列及其使用方法 Active CN112970036B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862756095P 2018-11-06 2018-11-06
US62/756095 2018-11-06
PCT/CN2019/085197 WO2020093669A1 (en) 2018-11-06 2019-04-30 Convolution block array for implementing neural network application and method using the same, and convolution block circuit

Publications (2)

Publication Number Publication Date
CN112970036A true CN112970036A (zh) 2021-06-15
CN112970036B CN112970036B (zh) 2024-02-23

Family

ID=70610684

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201980073119.2A Active CN112970037B (zh) 2018-11-06 2019-04-10 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质
CN201980073061.1A Active CN112970036B (zh) 2018-11-06 2019-04-30 用于实施神经网络应用的卷积块阵列及其使用方法
CN201980073120.5A Active CN112955878B (zh) 2018-11-06 2019-05-16 实施神经网络的激活逻辑的装置及其方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201980073119.2A Active CN112970037B (zh) 2018-11-06 2019-04-10 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201980073120.5A Active CN112955878B (zh) 2018-11-06 2019-05-16 实施神经网络的激活逻辑的装置及其方法

Country Status (4)

Country Link
US (3) US20220004856A1 (zh)
CN (3) CN112970037B (zh)
TW (3) TWI715281B (zh)
WO (3) WO2020093654A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210130470A (ko) * 2020-04-22 2021-11-01 에스케이하이닉스 주식회사 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템
CN113902111A (zh) * 2021-12-09 2022-01-07 绍兴埃瓦科技有限公司 多芯片互连系统及神经网络加速处理方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103985083A (zh) * 2014-05-21 2014-08-13 西安交通大学 一种可重构的一维卷积处理器
CN106779060A (zh) * 2017-02-09 2017-05-31 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN106845635A (zh) * 2017-01-24 2017-06-13 东南大学 基于级联形式的cnn卷积核硬件设计方法
GB201718358D0 (en) * 2017-11-06 2017-12-20 Imagination Tech Ltd Exploiting sparsity in a neural network
CN107633297A (zh) * 2017-03-10 2018-01-26 南京大学 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
CN107844826A (zh) * 2017-10-30 2018-03-27 中国科学院计算技术研究所 神经网络处理单元及包含该处理单元的处理系统
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
US20180129935A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
CN108205701A (zh) * 2016-12-20 2018-06-26 联发科技股份有限公司 一种执行卷积计算的系统及方法
US10049323B1 (en) * 2017-10-13 2018-08-14 StradVision, Inc. Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752417B2 (en) * 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
CN101256536B (zh) * 2007-03-01 2010-05-26 创惟科技股份有限公司 闪存地址转换层系统
US7685355B2 (en) * 2007-05-07 2010-03-23 Microsoft Corporation Hardware memory management unit simulation using concurrent lookups for address translation data
CN101661438B (zh) * 2008-08-29 2013-08-28 鸿富锦精密工业(深圳)有限公司 电子装置及中央处理器寻址空间扩展方法
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US20160019161A1 (en) * 2013-03-12 2016-01-21 Hewlett-Packard Development Company, L.P. Programmable address mapping and memory access operations
CN104333435B (zh) * 2014-09-30 2017-11-07 扬智科技股份有限公司 迭代解映射译码装置
CN105844330B (zh) * 2016-03-22 2019-06-28 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
WO2017185248A1 (zh) * 2016-04-27 2017-11-02 北京中科寒武纪科技有限公司 用于执行人工神经网络自学习运算的装置和方法
CN106056211B (zh) * 2016-05-25 2018-11-23 清华大学 神经元计算单元、神经元计算模块及人工神经网络计算核
GB2550859B (en) * 2016-05-26 2019-10-16 Advanced Risc Mach Ltd Address translation within a virtualised system
CN106201651A (zh) * 2016-06-27 2016-12-07 鄞州浙江清华长三角研究院创新中心 神经形态芯片的模拟器
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
CN107992942B (zh) * 2016-10-26 2021-10-01 上海磁宇信息科技有限公司 卷积神经网络芯片以及卷积神经网络芯片操作方法
US11205120B2 (en) * 2016-12-22 2021-12-21 Samsung Electronics Co., Ltd System and method for training deep learning classification networks
TWI630544B (zh) * 2017-02-10 2018-07-21 耐能股份有限公司 卷積神經網路的運算裝置及方法
CN108171317B (zh) * 2017-11-27 2020-08-04 北京时代民芯科技有限公司 一种基于soc的数据复用卷积神经网络加速器
CN108334942B (zh) * 2017-12-22 2020-08-04 清华大学 神经网络的数据处理方法、装置、芯片和存储介质
CN111061655B (zh) * 2017-12-28 2022-06-17 贵阳忆芯科技有限公司 存储设备的地址转换方法与设备
CN108229671B (zh) * 2018-01-16 2022-03-04 华南理工大学 一种降低加速器外部数据存储带宽需求的系统和方法
CN108647045B (zh) * 2018-03-20 2021-10-01 科大讯飞股份有限公司 激活函数的实现方法及装置、存储介质、电子设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103985083A (zh) * 2014-05-21 2014-08-13 西安交通大学 一种可重构的一维卷积处理器
US20180129935A1 (en) * 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
CN108205701A (zh) * 2016-12-20 2018-06-26 联发科技股份有限公司 一种执行卷积计算的系统及方法
CN106845635A (zh) * 2017-01-24 2017-06-13 东南大学 基于级联形式的cnn卷积核硬件设计方法
CN106779060A (zh) * 2017-02-09 2017-05-31 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN107633297A (zh) * 2017-03-10 2018-01-26 南京大学 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器
US10049323B1 (en) * 2017-10-13 2018-08-14 StradVision, Inc. Method and device for performing activation and convolution operation at the same time and learning method and learning device for the same
CN107844826A (zh) * 2017-10-30 2018-03-27 中国科学院计算技术研究所 神经网络处理单元及包含该处理单元的处理系统
CN107862374A (zh) * 2017-10-30 2018-03-30 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法
GB201718358D0 (en) * 2017-11-06 2017-12-20 Imagination Tech Ltd Exploiting sparsity in a neural network

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
HARUYOSHI YONEKAWA等: "On-chip Memory Based Binarized Convolutional Deep Neural Network Applying Batch Normalization Free Technique on an FPGA", 2017 IEEE INTERNATIONAL PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM WORKSHOPS (IPDPSW), pages 98 - 105 *
YUFEI MA等: "Optimizing the Convolution Operation to Accelerate Deep Neural Networks on FPGA", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 26, no. 7, pages 1354 - 1367, XP011686179, DOI: 10.1109/TVLSI.2018.2815603 *
王昆;周骅;: "深度学习中的卷积神经网络系统设计及硬件实现", 电子技术应用, no. 05 *
肖皓;祝永新;汪宁;田犁;汪辉;: "面向卷积神经网络的FPGA硬件加速器设计", 工业控制计算机, no. 06 *

Also Published As

Publication number Publication date
CN112970036B (zh) 2024-02-23
WO2020093676A1 (en) 2020-05-14
US20220027714A1 (en) 2022-01-27
US20220004850A1 (en) 2022-01-06
TWI715281B (zh) 2021-01-01
TW202038142A (zh) 2020-10-16
TW202038143A (zh) 2020-10-16
CN112970037A (zh) 2021-06-15
US20220004856A1 (en) 2022-01-06
CN112955878B (zh) 2023-10-27
CN112955878A (zh) 2021-06-11
WO2020093669A1 (en) 2020-05-14
WO2020093654A1 (en) 2020-05-14
TW202018597A (zh) 2020-05-16
CN112970037B (zh) 2024-02-02
TWI766203B (zh) 2022-06-01
TWI726476B (zh) 2021-05-01

Similar Documents

Publication Publication Date Title
KR102415576B1 (ko) 컨벌루션 뉴럴 네트워크의 계산 복잡성을 감소시키기 위한 방법 및 시스템
EP3373210B1 (en) Transposing neural network matrices in hardware
CN111247527B (zh) 在卷积神经网络模型中确定特征图像的方法和装置
WO2019201657A1 (en) Accelerator and system for accelerating operations
WO2019201656A1 (en) Method for accelerating operations and accelerator apparatus
CN108845828B (zh) 一种协处理器、矩阵运算加速方法及系统
CN108073549B (zh) 卷积运算装置及方法
EP3584719A1 (en) Method and device for multiplying matrices with vectors
CN112970036B (zh) 用于实施神经网络应用的卷积块阵列及其使用方法
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
CN113344172A (zh) 将卷积映射到通道卷积引擎
CN113392953A (zh) 用于对神经网络中卷积层进行剪枝的方法和装置
RU2373564C2 (ru) Модулярный вычислитель систем булевых функций
JP2006154992A (ja) ニューロプロセッサ
JP2017027314A (ja) 並列演算装置、画像処理装置及び並列演算方法
CN111047025B (zh) 一种卷积计算方法及装置
Li et al. Case studies of logical computation on stochastic bit streams
JP4947983B2 (ja) 演算処理システム
US20210034956A1 (en) Minimum memory digital convolver
CN111985628B (zh) 计算装置及包括所述计算装置的神经网络处理器
Gopalakrishnan et al. Finding linear building-blocks for RTL synthesis of polynomial datapaths with fixed-size bit-vectors
CN112861453B (zh) 近似算术逻辑电路的最大绝对输出误差的计算方法
KR20200095163A (ko) 가속 회로에 적합한 합성곱 신경망의 Conv-XP 프루닝 장치
JP6741159B1 (ja) 推論装置及び推論方法
JP2021144519A (ja) データ処理装置及びデータ処理方法

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