CN111985628B - 计算装置及包括所述计算装置的神经网络处理器 - Google Patents
计算装置及包括所述计算装置的神经网络处理器 Download PDFInfo
- Publication number
- CN111985628B CN111985628B CN201910440000.6A CN201910440000A CN111985628B CN 111985628 B CN111985628 B CN 111985628B CN 201910440000 A CN201910440000 A CN 201910440000A CN 111985628 B CN111985628 B CN 111985628B
- Authority
- CN
- China
- Prior art keywords
- computing
- input
- data
- parameters
- computing device
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种计算装置以及包括该计算装置的神经网络处理器。计算装置包括阵列排布的一列或多列计算单元,每列计算单元中的至少一个计算单元包括:运算参数存储器,用于存储一个或多个运算参数;运算器,用于接收输入数据,并且利用所述运算参数存储器中存储的运算参数对所述输入数据进行运算;以及地址控制器,其用于向所述运算参数存储器提供地址控制信号以控制所述运算参数的存储与输出。
Description
技术领域
本申请涉及神经网络技术领域,更具体地,涉及一种具有分布式运算参数存储的计算装置及神经网络处理器。
背景技术
随着深度学习以及人工智能的发展,神经网络技术被应用在很多领域。卷积神经网络是一种代表性的人工神经网络,它在图像处理、语音识别、自然语言处理等领域中都得到了广泛的应用。
卷积神经网络通常使用神经网络处理器来执行矩阵或张量的卷积计算。在进行计算时,神经网络处理器需要将集中存储在处理器外部存储器中的权重参数读取到处理器中,以用来与其他数据进行乘加计算。然而,权重参数的数据量较大,处理器每次仅能获取一部分权重参数参与计算,因而需要从外部存储器中反复读取权重参数,这导致了计算时间的浪费,并且降低了计算速度。
因此,有必要提供一种改进的计算装置以及神经网络处理器。
发明内容
本申请的一个目的在于提供一种具有分布式运算参数存储的计算装置及神经网络处理器,以减少计算过程中读取运算参数所需的时间。
在本申请的一个方面,提供了一种计算装置,包括阵列排布的一列或多列计算单元,每列计算单元中的至少一个计算单元包括:运算参数存储器,用于存储一个或多个运算参数;运算器,用于接收输入数据,并且利用所述运算参数存储器中存储的运算参数对所述输入数据进行运算;以及地址控制器,其用于向所述运算参数存储器提供地址控制信号以控制所述运算参数的存储与输出。
在一些实施例中,所述一个或多个运算参数是权重参数,所述运算器包括:用于接收所述输入数据的数据输入端;用于接收所述运算参数的参数输入端;耦接到同列相邻前级计算单元的传递输入端;以及耦接到同列相邻后级计算单元的传递输出端;其中所述运算器用于对所述输入数据和所述运算参数求积,将所述求积运算结果与经由所述传递输入端接收的传递参数求和,并经由所述传递输出端输出所述求和运算结果。
在一些实施例中,所述运算参数存储器包括:用于接收所述运算参数的输入端;用于接收所述地址控制信号的地址控制端;以及用于输出所述运算参数的参数输出端;其中,所述运算参数存储器用于在所述地址控制信号的控制下存储经由所述输入端接收的所述运算参数,并且在所述地址控制信号的控制下经由所述参数输出端将所述运算参数输出给所述运算器;并且其中所述地址控制器耦接到所述运算参数存储器的地址控制端以提供所述地址控制信号。
在一些实施例中,所述地址控制器还包括读取使能端与输入使能端,所述地址控制器还被用于响应于经由所述读取使能端接收的读取使能信号和经由所述输入使能端接收的输入使能信号来生成所述地址控制信号。
在一些实施例中,所述至少一个计算单元还包括:读取使能缓冲器,其用于缓冲在同列相邻的两级计算单元之间传递的读取使能信号。
在一些实施例中,所述阵列排布的一列或多列计算单元包括至少两列计算单元,其中,所述至少一个计算单元还包括:输出使能缓冲器,其用于缓冲在同一行相邻的计算单元之间传递的读取使能信号;以及输出数据缓冲器,其用于缓冲在同一行相邻的计算单元之间传递的输入数据。
在一些实施例中,所述计算装置还包括一个或多个累加器,其中每个累加器用于对一列计算单元的计算结果进行累加。
在一些实施例中,所述计算装置还包括一个或多个偏置单元,其中每个偏置单元用于向一列计算单元提供偏置参数。
在一些实施例中,所述计算装置还包括:
多个数据缓冲器,其中每个数据缓冲器对应于一行计算单元,用于向该行计算单元提供所述输入数据。
在一些实施例中,所述地址控制器还包括读取使能端与输入使能端,所述地址控制器还被用于响应于经由所述读取使能端接收的读取使能信号和经由所述输入使能端接收的输入使能信号来生成所述地址控制信号;其中,所述数据缓冲器耦接到所述输入使能端,并且根据所述数据缓冲器中的数据存储状态向所述地址控制器提供所述输入使能信号。
在一些实施例中,所述数据缓冲器是FIFO缓冲器。
在一些实施例中,所述计算装置还包括控制器,所述控制器用于向所述一列或多列计算单元中的每个运算参数存储器分配对应的运算参数。
根据本申请的另一方面,还提供了一种神经网络处理器,包括根据前述方面所述的计算装置。
根据本申请的又一方面,还提供了一种计算方法,所述计算方法由阵列排布的一列或多列计算单元实施,其中,每列计算单元中的至少一个计算单元包括用于存储一个或多个运算参数的运算参数存储器,以及用于控制所述运算参数的存储和输出的地址控制器;对于所述至少一个计算单元中的每个计算单元,所述计算方法执行下述步骤:接收输入数据;在所述地址控制器的控制下,从所述计算单元的所述运算参数存储器获取对应的运算参数,其中所述运算参数是在所述地址控制器的控制下存储到所述运算参数存储器中一个或多个运算参数中的一个运算参数;以及利用所述运算参数对所述输入数据进行运算。
以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。
附图说明
通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图仅描绘了本申请内容的若干实施方式,因此不应认为是对本申请内容范围的限定。通过采用附图,本申请内容将会得到更加明确和详细地说明。
图1是根据本申请一个实施例的神经网络的一层进行计算处理的流程示意图;
图2示出了根据本申请一个实施例的神经网络处理系统;
图3示出了图2的神经网络处理系统中一个计算单元的示例性结构;
图4示出了图2的神经网络处理系统中一个偏置单元的示例性结构;
图5示出了根据本申请一个实施例的计算方法;
图6示例性地示出了被存储在图2所示的计算阵列中部分计算单元的运算参数存储器中的权重参数。
具体实施方式
在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
在实际应用中,神经网络可以具有按一定顺序排列的多层来计算推断(inference),并且每层具有对应的一组权重参数,这一组权重参数构造为矩阵或张量。在进行计算时,神经网络的每层可以接收输入数据,并且根据该层的权重参数处理输入数据,从而生成计算结果。在一些实施例中,神经网络的任意一层可以接收多个输入数据,和/或生成多个计算结果输出。可选地,一层输出的计算结果可以作为输入反馈给前一层。根据在神经网络中具体位置的不同,不同的层可以具有不同的功能(例如输入层、输出层、隐含层等),并且接收不同的数据。
图1是根据本申请一个实施例的神经网络的一层进行计算处理的流程示意图。在一些实施例中,神经网络的每一层都可以执行该流程以根据其接收的输入数据来计算推断。其中,神经网络的每一层可以包括一定数量的单元(神经元)以进行卷积计算。
在步骤S102,神经网络接收一组权重参数。在一些实施例中,权重参数例如是基于卷积核确定的,其可以是一个二维n*m矩阵(n和m为自然数,并且n和m中的至少一个大于1),或者是更高维的张量,例如三维张量。例如,卷积核的尺寸可以是3*3*32,其中32表示通道数,而3*3则表示每个通道是一个3*3的滤波矩阵。在一些实施例中,滤波矩阵可以是1*1的,相应地,n和m也可以等于1,例如卷积核的尺寸可以是1*1*32。在一些实施例中,权重参数可以预先存储在神经网络的主存储器中(例如图2所示的神经网络处理系统200的主存储器214),或者也可以不预先存储而是在进行计算处理时直接从外部接收。
在步骤S104,神经网络接收输入数据。在一些实施例中,输入数据例如是一个二维N*M矩阵(N和M为自然数,并且N和M中的至少一个大于1)。例如,输入数据可以是图像数据。输入数据可以预先存储在主存储器中,或者存储在数据缓冲器中。
在步骤S106,神经网络由输入数据和该组权重参数计算生成累计值。在进行矩阵卷积计算时,该组权重参数需要遍历输入数据的矩阵,并且在遍历时与矩阵中的各个子矩阵进行矢量计算(求点积),从而得到累计值。例如,对于一组权重参数,神经网络可以将每个权重参数与每个输入数据相乘,并且对乘积求和以得到累计值。
在步骤S108,神经网络由累计值生成计算结果。该计算结果可以存储在缓存器中,或者可以输出以供后续处理。
需要说明的是,在上述的计算处理过程中,神经网络主要用于进行矩阵或张量乘法运算,因此其需要利用权重参数对输入数据进行运算。在一些其他的数据处理和计算方法中,神经网络或其他计算装置可以对输入数据进行其他类型的运算(例如求和等数值计算,或求与等逻辑运算),相应地,这些运算可以具有不同于权重参数的其他类型的运算参数。在本申请的实施例中,均以运算参数为权重参数为例进行说明,但是本领技术人员可以理解本申请的方法也可以用于其他运算处理中。
图2示出了根据本申请一个实施例的神经网络处理系统200。该神经网络处理系统200例如可以执行图1所示的流程。
如图2所示,该神经网络处理系统200包括计算装置202,该计算装置202用于执行输入数据与权重参数的计算。在一些实施例中,计算装置202包括计算阵列204,其被构造为包括阵列排布的一列或多列计算单元(MAC)206。其中,每列计算单元206相互串联耦接以传递中间计算结果,具体地,前一级的计算单元将其得到的中间计算结果传递给后一级的计算单元以作为传递输入。在一些实施例中,每一列计算单元的最前级计算单元可以耦接到偏置单元(BIAS)207。该偏置单元207可以向其耦接的最前级计算单元的传递输入端提供偏置值。关于偏置单元207的具体结构将在下文中详述。在另一些实施例中,每一列计算单元的最前级计算单元的传递输入端也可以直接置为0。
每一列计算单元的最后级计算单元可以耦接到累加器208,用于对该列计算单元的计算结果进行累加。在一些实施例中,特别是权重参数的矩阵(卷积核)的列数量超过计算阵列204的列数量,或者输入数据的矩阵的行数量超过计算阵列204的行数量时,累加器208可以存储并累加对应列的结果。在一些实施例中,权重参数的矩阵的列数量小于或等于计算阵列204的列数量,或者输入数据的矩阵的行数量小于或等于计算阵列204的行数量时,累加器208可以不进行累加。每列计算单元的计算结果可以被提供给矢量计算单元(图中未示出),其可以处理多列的计算结果,并且将处理的计算结果以矢量形式输出,例如存储到主存储器中。
在一些实施例中,计算阵列204包括多列计算单元,其中每列计算单元可以利用不同的权重参数来进行计算。相应地,每列计算单元中的一个计算单元与其他列计算单元中对应的计算单元耦接为一行。在一行计算单元中,每个计算单元可以向与其相邻的后一级计算单元传递输入数据,这样,每列计算单元可以依序对相应的权重参数与输入数据进行矢量计算。在一个例子中,计算阵列204可以包括6列计算单元,其中每列计算单元对应于一个具有对应一组权重参数的滤波矩阵(其可以是卷积核的一个通道)。相应地,输入数据的矩阵至多可以与这6个滤波矩阵进行卷积,而无需重新向每列计算单元重复提供输入数据。如果输入数据的矩阵需要与12个滤波矩阵进行卷积,那么输入数据需要被重复一次提供给每列计算单元,并且每列计算单元需要读取两次权重参数(对应于2个滤波矩阵)以用于计算。
在一些实施例中,计算装置202通过数据总线210耦接到微控制器212与主存储器214。微控制器212控制整个神经网络处理系统200的运行,其指示将权重参数从主存储器214中读取出来并且通过数据总线210传递给计算装置202。不同于现有的神经网络处理器,计算装置202中的计算单元206可以设置有运算参数存储器(图中未示出)。在一些实施例中,每个计算单元206均设置有一个运算参数存储器。由主存储器214读取出的权重参数可以在向计算装置202提供输入数据之前预先存储在对应的运算参数存储器中。换言之,微控制器212可以控制向一列或多列计算单元中的每个运算参数存储器分配对应的权重参数。在一些实施例中,微控制器212也可以是其他类型的控制器,例如硬件状态机。当计算所需的所有权重参数被正确写入到运算参数存储器中之后,微控制器212进一步指示将输入数据从主存储器214中读取出来并且通过数据总线210传递给计算装置202。在一些实施例中,计算装置202可以具有多个数据缓冲器216,其中每个数据缓冲器216对应于一行计算单元,用于缓冲由主存储器214提供的输入数据,并且进一步向该行计算单元提供该输入数据。在一些实施例中,数据缓冲器216可以是先入先出(FIFO)缓冲器。
在一些实施例中,计算阵列204在检测到数据缓冲器216中的输入数据后,便启动计算单元206依次执行计算。正如前述,多个计算结果分别按列方向向下(后级)传递,最后在累加器208处累加形成卷积结果。在一些实施例中,神经网络处理系统200还可以包括计算后处理模块218,其耦接在计算装置202与数据总线210之间,用于对计算装置202生成的卷积结果进行批归一化处理(batch normalization)、加法处理(add)、激活处理(activation)、池化处理(pooling)、填充处理(padding)等计算后处理中的一个或多个。在计算后处理之后,计算后处理模块218可以将处理结果通过数据总线210输出,或者进一步地写回给数据缓冲器216,作为神经网络的下一层的输入数据。
在一些实施例中,图2所示的计算装置可以用于神经网络处理器。
可以看出,对于图2所示的神经网络处理系统200,由于其在计算单元206中设置了运算参数存储器以预先存储主存储器提供的权重参数,因此在实际卷积计算过程中计算单元204无需再从主存储器214多次获取权重参数,这使得数据总线能够主要用于传输输入数据,从而减少了延迟。此外,在计算过程中,权重参数分散存储于每个计算单元内部的运算参数存储器中,这在一定程度上有利于芯片功耗的均匀分布,有利于芯片散热,进而可以支持较高的芯片运行频率。
图3示出了图2的神经网络处理系统中一个计算单元的示例性结构。
如图3所示,该计算单元包括运算器302,其包括用于输入数据的数据输入端A、用于输入权重参数的参数输入端B、耦接到同列相邻前级计算单元的传递输入端C以及耦接到同列相邻后级计算单元(MAC)的传递输出端C’。运算器302利用权重参数对输入数据进行运算,具体地,例如对输入数据A和权重参数B求积,将求积运算结果A*B与经由所述传递输入端输入的传递参数C求和。之后,运算器302可以经由传递输出端输出求和运算结果C’。换言之,运算器302执行由下述等式(1)定义的运算:
C’=A*B+C(1)
其中,等式(1)中的参数A、B、C以及C’均为矢量。
对于一行计算单元,最前级的计算单元的数据输入端A耦接到数据缓冲器,以接收经由数据缓冲器缓冲的输入数据;对于一行计算单元的其他计算单元,其数据输入端A均耦接到相邻的前一级计算单元,并且接收经由其提供的输入数据。对于一列计算单元,最前级的计算单元的传递输入端C耦接到偏置单元,以接收偏置值;对于一列计算单元的其他计算单元,其传递输入端C耦接到前一级计算单元的传递输出端C’。
在一些实施例中,计算单元还可以包括输出使能缓冲器310,其耦接在同一行相邻的计算单元的输入使能端之间,用于缓冲在同一行相邻的计算单元之间传递的输入使能信号。类似地,计算单元还包括输出数据缓冲器312,其耦接在同一行相邻的计算单元的数据输入端之间,用于缓冲在同一行相邻的计算单元之间传递的输入数据。输出使能缓冲器310与输出数据缓冲器312可以受预设的时钟控制信号控制,以使得不同列计算单元按照所需的时序来进行运算。在一些实施例中,使能缓冲器310和输出数据缓冲器312均可以是寄存器。
该计算单元还包括运算参数存储器304和地址控制器306。在地址控制器306生成的地址控制信号的控制下,运算参数存储器304接收并存储一个或多个权重参数,以及将其中存储的权重参数输出给运算器302。
具体地,运算参数存储器304具有用于输入权重参数的输入端、用于输入地址控制信号的地址控制端以及用于输出权重参数的参数输出端。其中,地址控制端耦接到地址控制器306,而参数输出端耦接到运算器302的参数输入端。在图3所示的示例性结构中,运算参数存储器304的输入端通过输出数据缓冲器312耦接到数据输入端,从而借由该数据输入端输入权重参数。正如前面结合图2所示的实施例所述,由于权重参数存储在运算参数存储器304是在数据输入端输入数据之前进行的,因此分时复用数据输入端来输入数据以及权重参数可以有效减少信号线的数量,从而降低制造成本。可以理解,在一些另外的实施例中,运算参数存储器304的输入端也可以通过单独的信号线耦接到数据缓冲器或相邻的前级计算单元,以经由这些元件接收主存储器提供的权重参数。
地址控制器306耦接到运算参数存储器304的地址控制端,向运算参数存储器304提供地址控制信号以控制权重参数的存储和输出。在一些实施例中,在向运算参数存储器304中写入权重参数时,地址控制器306可以生成用于控制权重参数写入的地址控制信号,其中该地址控制信号包括与权重参数对应的存储地址,其指示了权重参数在运算参数存储器中的存储位置。另一方面,在从运算参数存储器304中读取权重参数时,地址控制器306可以生成控制权重参数输出的地址控制信号,其中该地址控制信号包括了与写入时相应的存储地址,从而运算参数存储器304可以根据该存储地址输出权重参数。可以理解,主控制器可以在计算前向运算参数存储器304存储多个权重参数,那么每个权重参数都具有对应的存储地址。例如,多个权重参数可以顺序地存储在运算参数存储器304中。在一些实施例中,每个运算参数存储器可以连续地或间隔地存储其接收到的多个权重参数。在另一些实施例中,多个权重参数可以连同对应的识别标识一并存储在运算参数存储器中,例如被存储为查找表的形式。这样,在计算单元进行计算时,其可以通过查询识别标识来查找所需的权重参数。
可以理解,计算阵列中不同位置的计算单元可以被分配不同的权重参数值,以按照矩阵或张量的计算规则与输入数据的矩阵进行计算。图6示例性示出了被存储在图2所示的计算阵列中部分计算单元的运算参数存储器中的权重参数。但是需要说明的是,图6所示的权重参数值的存储仅仅是示例性的,根据具体应用的不同,权重参数可以以不同方式进行存储。
如图6所示,假设计算阵列共有N行M列个计算单元(从计算单元MAC00直至MAC(N-1)(M-1)(图中未示出)),权重参数可以是构成卷积核的元素。此外,假设共有2M个卷积核(filter0至filter(2M-1))参与运算,每个卷积核是3*3*2N的张量,其中2N表示卷积核的通道数。为了与对应的输入数据(例如图像数据)进行计算,这些卷积核中包括的元素即是权重参数。
具体地,由于卷积核的数量2M是计算阵列的列数M的两倍,因此每个计算单元都存储两个卷积核的权重参数。例如,计算单元MAC00存储卷积核0与卷积核M的部分权重参数,而计算单元MAC01存储卷积核1与卷积核M+1的部分权重参数,依次类推,计算单元MAC0(M-1)存储卷积核M-1和卷积核2M-1的部分权重参数。计算单元MAC(N-1)(M-1)存储卷积核M-1和卷积核2M-1的部分权重参数。
对于每个卷积核,其共有2N个3*3矩阵,因此每个计算单元存储一个卷积核中的两个3*3矩阵,从而每个卷积核中的2N个3*3矩阵被依次分配到1列计算单元中的N个计算单元中。具体地,对于卷积核filter0,其通道0的3*3矩阵(9个元素)和通道N的3*3矩阵被依次存储在计算单元MAC00的运算参数存储器地址0-8;其通道1的3*3矩阵和通道N+1的3*3矩阵被依次存储在计算单元MAC10的运算参数存储器地址0-8;依次类推,其通道N-1的3*3矩阵和通道2N-1的3*3矩阵被依次存储在计算单元MAC(N-1)0的运算参数存储器地址0-8。
在进行矩阵运算时,每个计算单元的地址控制器会根据时序从其耦接的运算参数存储器中获取一个权重参数,并且与对应输入数据进行乘法运算。经过多个时序后,运算参数存储器中的每个权重参数均可根据需要被调取,从而实现对应的运算。由此,卷积核可以与输入数据的矩阵实现卷积运算。
在一些实施例中,地址控制器306还包括读取使能端与输入使能端,其中读取使能端耦接到同列前级计算单元的读取使能缓冲器308,而输入使能端则耦接到数据缓冲器或同行相邻计算单元。这样,地址控制器306能够响应于经由读取使能端接收的读取使能信号和经由输入使能端接收的输入使能信号生成地址控制信号。读取使能缓冲器308可以是寄存器。具体地,输入使能信号与经由数据输入端提供的输入数据同步传送,其与读取使能信号共同指示权重参数的存储/写入或输出。例如,在输入使能信号有效时,数据输入端上传送了相应的权重参数或输入数据,此时,如果读取使能信号指示向运算参数存储器306中存储权重参数,那么地址控制器306可以响应于这两个信号来生成控制权重参数存储的地址控制信号;然而,如果此时读取使能信号指示运算参数存储器306将其中存储的权重参数提供给运算器302,那么地址控制器306可以响应于这两个信号来生成控制权重参数输出的地址控制信号。另一方面,如果输入使能信号无效,那么地址控制器306可以不进行操作。
在一些实施例中,数据缓冲器可以根据其中的数据存储状态向地址控制器提供所述输入使能信号。例如,在数据缓冲器中缓冲了数据(输入数据或权重参数)时,其可以向地址控制器提供有效的输入使能信号,否则可以提供无效的输入使能信号。
在一些实施例中,该计算单元还包括读取使能缓冲器308,其用于缓冲在同列相邻的两级计算单元之间传递的读取使能信号。通过设置读取使能缓冲器308的时钟控制信号,读取使能信号可以依序在同列的计算单元之间传递,从而使得这些计算单元能够依序进行权重参数的写入与输出。
图4示出了图2的神经网络处理系统中一个偏置单元的示例性结构。
如图4所示,该偏置单元包括偏置存储器402,其用于存储偏置参数,例如0或者其他数值。偏置参数可以被预先写入到偏置存储器402中,例如经由数据输入端写入。偏置参数的写入控制可以参考图3所示的权重参数的写入控制。在图2所示的计算装置执行卷积计算的过程中,偏置参数可以被输出给偏置单元耦接的计算单元,也即同一列计算单元中的最前级计算单元的传递输入端,以使得该计算单元的C被置为偏置参数。
偏置单元还包括地址控制器404,其具有读取使能端和输入使能端。与图3所示的计算单元类似,读取使能端可以用于接收读取使能信号,而输入使能端可以接收输入使能信号。根据接收到的读取使能信号与输入使能信号,地址控制器404可以生成用于控制偏置参数是否输出的控制信号,以及输出哪个偏置参数的控制信号。在一些实施例中,地址控制器404可以被构造为一计数器,其可以依序存储偏置参数并依序输出偏置参数。可以理解,在用于卷积计算时,每次卷积计算仅需要提供一次偏置参数。
偏置单元还包括使能缓冲器406,其耦接在相邻的偏置单元之间,以缓冲在相邻的计算单元之间传递的输入使能信号。关于输入使能信号、读取使能信号、输入使能信号的更多细节,可以参考结合图3所示的相关描述。
图5示出了根据本申请一个实施例的计算方法。该计算方法可以由图2至图4所示的计算装置实施,以执行例如矩阵卷积运算。
如图5所示,在步骤S502,计算装置的一个或多个计算单元接收输入数据。输入数据例如是图像数据中的一列像素中的一个或多个像素值。换言之,计算装置接收到的输入数据整体被构造为一矩阵。
在步骤S504,在一个或多个计算单元的分别的地址控制器的控制下,从这些计算单元的分别的运算参数存储器获取对应的运算参数。每个计算单元可以获取一个运算参数,并且这个运算参数是运算参数存储器中存储的一个或多个运算参数中的一个。这些运算参数可以是在地址控制器的控制下预先存储到运算参数存储器中的。根据矩阵的不同,每个计算单元可以被分配对应的运算参数,并且存储在其运算参数存储器中。
在步骤S506中,利用运算参数对输入数据进行运算。在一些实施例中,计算装置进行的运算是矩阵卷积运算,那么运算参数可以是权重参数。相应地,对于每个计算单元,其还需要从同列相邻前级计算单元接收传递参数,并且由对输入数据和权重参数求积,以及将求积运算结果与传递参数求和。这样得到的求和结果可以作为提供给同列后级计算单元作为其传递参数的输入。
可以理解,本申请的实施例的计算装置和计算方法可以被应用于神经网络处理器中,并且这种神经网络处理器也可以被用于不同的计算机系统中。
应当注意,尽管在上文详细描述中提及了计算装置的若干模块或子模块,但是这种划分仅仅是示例性的而非强制性的。实际上,根据本申请的实施例,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本申请的计算方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本申请的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。
Claims (20)
1.一种计算装置,包括阵列排布的一列或多列计算单元,其特征在于,每列计算单元中的每一个计算单元包括:
运算参数存储器,用于存储一个或多个运算参数,所述运算参数存储器包括用于接收所述运算参数的输入端;
运算器,用于接收输入数据,并且利用所述运算参数存储器中存储的运算参数对所述输入数据进行运算,所述运算器包括用于接收所述输入数据的数据输入端;以及
地址控制器,其用于向所述运算参数存储器提供地址控制信号以控制所述运算参数的存储与输出,
其中所述一个或多个运算参数是在所述计算装置接收所述输入数据之前被预先存储在所述运算参数存储器中,
其中,所述运算器的数据输入端和所述运算参数存储器的输入端共同连接至所述每一个计算单元的数据输入端。
2.根据权利要求1所述的计算装置,其特征在于,所述一个或多个运算参数是权重参数,所述运算器还包括:
用于接收所述运算参数的参数输入端;
耦接到同列相邻前级计算单元的传递输入端;以及
耦接到同列相邻后级计算单元的传递输出端;
其中所述运算器用于对所述输入数据和所述运算参数求积,将所述求积运算结果与经由所述传递输入端接收的传递参数求和,并经由所述传递输出端输出所述求和运算结果。
3.根据权利要求2所述的计算装置,其特征在于,所述运算参数存储器还包括:
用于接收所述地址控制信号的地址控制端;以及
用于输出所述运算参数的参数输出端;
其中,所述运算参数存储器用于在所述地址控制信号的控制下存储经由所述输入端接收的所述运算参数,并且在所述地址控制信号的控制下经由所述参数输出端将所述运算参数输出给所述运算器;并且
其中所述地址控制器耦接到所述运算参数存储器的地址控制端以提供所述地址控制信号。
4.根据权利要求3所述的计算装置,其特征在于,所述运算参数存储器的输入端通过输出数据缓冲器连接至所述每一个计算单元的数据输入端。
5.根据权利要求3所述的计算装置,其特征在于,所述地址控制器还包括读取使能端与输入使能端,所述地址控制器还被用于响应于经由所述读取使能端接收的读取使能信号和经由所述输入使能端接收的输入使能信号来生成所述地址控制信号。
6.根据权利要求2所述的计算装置,其特征在于,所述每一个计算单元还包括:
读取使能缓冲器,其用于缓冲在同列相邻的两级计算单元之间传递的读取使能信号。
7.根据权利要求2所述的计算装置,其特征在于,所述阵列排布的一列或多列计算单元包括至少两列计算单元,其中,所述每一个计算单元还包括:
输出使能缓冲器,其用于缓冲在同一行相邻的计算单元之间传递的读取使能信号;以及
输出数据缓冲器,其用于缓冲在同一行相邻的计算单元之间传递的输入数据。
8.根据权利要求2所述的计算装置,其特征在于,所述计算装置还包括一个或多个累加器,其中每个累加器用于对一列计算单元的计算结果进行累加。
9.根据权利要求2所述的计算装置,其特征在于,所述计算装置还包括一个或多个偏置单元,其中每个偏置单元用于向一列计算单元提供偏置参数。
10.根据权利要求1所述的计算装置,其特征在于,所述计算装置还包括:
多个数据缓冲器,其中每个数据缓冲器对应于一行计算单元,用于向该行计算单元提供所述输入数据。
11.根据权利要求10所述的计算装置,其特征在于,所述地址控制器还包括读取使能端与输入使能端,所述地址控制器还被用于响应于经由所述读取使能端接收的读取使能信号和经由所述输入使能端接收的输入使能信号来生成所述地址控制信号;
其中,所述数据缓冲器耦接到所述输入使能端,并且根据所述数据缓冲器中的数据存储状态向所述地址控制器提供所述输入使能信号。
12.根据权利要求10所述的计算装置,其特征在于,所述数据缓冲器是FIFO缓冲器。
13.根据权利要求1所述的计算装置,其特征在于,所述计算装置还包括控制器,所述控制器用于向所述一列或多列计算单元中的每个运算参数存储器分配对应的运算参数。
14.一种神经网络处理器,其特征在于,包括根据权利要求1至13中任一项所述的计算装置。
15.一种计算方法,其特征在于,所述计算方法由阵列排布的一列或多列计算单元实施,其中,每列计算单元中的每一个计算单元包括用于存储一个或多个运算参数的运算参数存储器,以及用于控制所述运算参数的存储和输出的地址控制器;对于所述每一个计算单元,所述计算方法执行下述步骤:
接收输入数据;
在所述地址控制器的控制下,从所述计算单元的所述运算参数存储器获取对应的运算参数,其中所述运算参数是在所述地址控制器的控制下存储到所述运算参数存储器中一个或多个运算参数中的一个运算参数,其中所述一个或多个运算参数是在所述接收输入数据之前被预先存储在所述运算参数存储器中,所述一个或多个运算参数和所述输入数据共同接收自所述每一个计算单元的数据输入端;以及
利用所述运算参数对所述输入数据进行运算。
16.根据权利要求15所述的计算方法,其特征在于,所述一个或多个运算参数是权重参数,所述计算方法还包括执行下述步骤:
接收传递参数,其中所述传递参数是由所述计算单元的同列相邻前级计算单元输出的;
其中,利用所述运算参数对所述输入数据进行运算的步骤包括:由所述计算单元对所述输入数据和所述权重参数求积;以及将所述求积运算结果与所述传递参数求和。
17.根据权利要求15所述的计算方法,其特征在于,所述阵列排布的一列或多列计算单元包括至少两列计算单元,所述计算方法还包括下述步骤:
缓冲所述输入数据以向相邻一列计算单元的对应计算单元提供所述输入数据。
18.根据权利要求15所述的计算方法,其特征在于,在执行所述运算参数的获取步骤之前,所述计算方法还包括下述步骤:
向所述一列或多列计算单元中的每个运算参数存储器分配对应的运算参数。
19.根据权利要求15所述的计算方法,其特征在于,所述计算方法用于矩阵卷积计算。
20.根据权利要求15所述的计算方法,其特征在于,其中,所述一个或多个运算参数接收自所述数据输入端,经由输出数据缓冲器,存储在所述运算参数存储器中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910440000.6A CN111985628B (zh) | 2019-05-24 | 2019-05-24 | 计算装置及包括所述计算装置的神经网络处理器 |
US16/876,133 US11132195B2 (en) | 2019-05-24 | 2020-05-18 | Computing device and neural network processor incorporating the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910440000.6A CN111985628B (zh) | 2019-05-24 | 2019-05-24 | 计算装置及包括所述计算装置的神经网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111985628A CN111985628A (zh) | 2020-11-24 |
CN111985628B true CN111985628B (zh) | 2024-04-30 |
Family
ID=73437093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910440000.6A Active CN111985628B (zh) | 2019-05-24 | 2019-05-24 | 计算装置及包括所述计算装置的神经网络处理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11132195B2 (zh) |
CN (1) | CN111985628B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3087907B1 (fr) * | 2018-10-24 | 2021-08-06 | St Microelectronics Grenoble 2 | Microcontroleur destine a executer un traitement parametrable |
US20240103875A1 (en) * | 2022-09-19 | 2024-03-28 | Texas Instruments Incorporated | Neural network processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5337395A (en) * | 1991-04-08 | 1994-08-09 | International Business Machines Corporation | SPIN: a sequential pipeline neurocomputer |
US10621486B2 (en) * | 2016-08-12 | 2020-04-14 | Beijing Deephi Intelligent Technology Co., Ltd. | Method for optimizing an artificial neural network (ANN) |
US10565492B2 (en) * | 2016-12-31 | 2020-02-18 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with segmentable array width rotator |
US10565494B2 (en) * | 2016-12-31 | 2020-02-18 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with segmentable array width rotator |
US11157287B2 (en) * | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
GB2568776B (en) * | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US10990650B1 (en) * | 2018-03-22 | 2021-04-27 | Amazon Technologies, Inc. | Reducing computations for data including padding |
-
2019
- 2019-05-24 CN CN201910440000.6A patent/CN111985628B/zh active Active
-
2020
- 2020-05-18 US US16/876,133 patent/US11132195B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108171317A (zh) * | 2017-11-27 | 2018-06-15 | 北京时代民芯科技有限公司 | 一种基于soc的数据复用卷积神经网络加速器 |
Non-Patent Citations (1)
Title |
---|
一种基于FPGA的CNN加速器设计;赵彤;乔庐峰;陈庆华;;通信技术(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20200371785A1 (en) | 2020-11-26 |
US11132195B2 (en) | 2021-09-28 |
CN111985628A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10915297B1 (en) | Hardware accelerator for systolic matrix multiplication | |
EP3579150B1 (en) | Operation apparatus and method for a neural network | |
US10949380B2 (en) | MxN systolic array and processing system that inputs weights to rows or columns based on mode to increase utilization of processing elements | |
US9384168B2 (en) | Vector matrix product accelerator for microprocessor integration | |
EP2017743B1 (en) | High speed and efficient matrix multiplication hardware module | |
US20240265234A1 (en) | Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
EP3654208A1 (en) | Chip device and related products | |
US11017290B2 (en) | Signal processing module, especially for a neural network and a neuronal circuit | |
US20210241071A1 (en) | Architecture of a computer for calculating a convolution layer in a convolutional neural network | |
US10713214B1 (en) | Hardware accelerator for outer-product matrix multiplication | |
CN111353126A (zh) | 分块矩阵乘法运算系统 | |
KR20190107766A (ko) | 계산 장치 및 방법 | |
US8706791B2 (en) | Low power fir filter in multi-MAC architecture | |
CN115552523A (zh) | 使用存储器内处理的基于计数器的乘法 | |
WO2021232422A1 (zh) | 神经网络的运算装置及其控制方法 | |
CN111626413A (zh) | 一种计算装置及方法 | |
CN111985628B (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
US5422836A (en) | Circuit arrangement for calculating matrix operations in signal processing | |
CN111160541A (zh) | 集成电路芯片装置及相关产品 | |
CN110909872A (zh) | 集成电路芯片装置及相关产品 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
US20220004363A1 (en) | Semiconductor device, data generation methods used for the same, and method of controlling the same | |
KR20220134035A (ko) | 컨볼루션 연산을 위한 프로세싱 인 메모리 방법 | |
US12072799B2 (en) | Programmable multi-level data access address generator |
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 |