CN111666255A - 脉动阵列和处理系统 - Google Patents
脉动阵列和处理系统 Download PDFInfo
- Publication number
- CN111666255A CN111666255A CN201911286293.3A CN201911286293A CN111666255A CN 111666255 A CN111666255 A CN 111666255A CN 201911286293 A CN201911286293 A CN 201911286293A CN 111666255 A CN111666255 A CN 111666255A
- Authority
- CN
- China
- Prior art keywords
- data
- column
- processing system
- mode
- systolic array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8046—Systolic arrays
-
- 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
- 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
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/386—Special constructional features
- G06F2207/3884—Pipelining
- G06F2207/3892—Systolic array
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本公开涉及一种处理系统。该处理系统可以包括脉动阵列,该脉动阵列包括排列成M行和N列的多个处理元件(PE),其中M和N是自然数,且M不等于N。该处理系统可以进一步包括行缓冲器和列缓冲器,其中行缓冲器在行方向上将行数据传送到脉动阵列,列缓冲器在列方向上将列数据传送到脉动阵列。当处理系统处于第一模式时,行数据是输入数据,列数据是权重。当处理系统处于第二模式时,行数据是权重,列数据是输入数据。
Description
相关申请的交叉引用
本申请要求于2019年3月7日提交的申请号为10-2019-0026198的韩国专利申请的优先权,其全部内容通过引用整体并入本文。
技术领域
示例性实施例涉及一种脉动阵列和包括该脉动阵列的处理系统。
背景技术
卷积神经网络(CNN)是一种常用于图像识别和分析的处理系统。这样的处理系统执行卷积运算,例如通过应用特定滤波器从图像中提取特征。脉动阵列可以用于这种操作。
脉动阵列包括布置成多个行和多个列的多个处理元件(PE)。因为在许多情况下可只用到多个PE中的一些PE,脉动阵列的利用率可能较低。
发明内容
各个实施例涉及提供一种增加脉动阵列的利用率的技术。
在实施例中,一种处理系统可以包括:脉动阵列,包括排列成M行和N列的多个处理元件(PE),其中M和N是自然数,并且M不等于N;行缓冲器,被配置为在行方向上将行数据传送到脉动阵列,其中当处理系统处于第一模式时,行数据是输入数据,当处理系统处于第二模式时,行数据是权重;以及列缓冲器,被配置为在列方向上将列数据传送到脉动阵列,其中当处理系统处于第一模式时,列数据是权重,以及当处理系统处于第二模式时,列数据是输入数据。
在实施例中,一种脉动阵列可以包括:M个行输入,被配置为在第一模式下将输入数据作为行数据传送,在第二模式下将权重作为行数据传送,其中M是自然数;N个列输入,被配置为在第一模式下将权重作为列数据传送,在第二模式下将输入数据作为列数据传送,其中N为自然数,并且N不等于M;以及M*N个处理元件(PE),每个PE被配置为对传送到M个行输入之中与PE相对应的行输入的行数据和传送到N个列输入之中与PE相对应的列输入的列数据执行乘法运算,然后将乘法运算的结果与先前运算的结果相加。
附图说明
图1示出根据实施例的脉动阵列。
图2示出可以使用脉动阵列执行的说明性的矩阵乘法运算。
图3示出如何将输入数据矩阵和权重矩阵输入到脉动阵列,以使用4X2脉动阵列执行图2的矩阵乘法运算。
图4示出使用图3的脉动阵列执行图2的矩阵乘法运算的运算结果。
图5示出可以使用脉动阵列执行的另一说明性的矩阵乘法运算。
图6示出当使用4X2脉动阵列执行图5的矩阵乘法运算时,如何将输入数据矩阵和权重矩阵输入到脉动阵列。
图7示出使用图6的脉动阵列执行图5的矩阵乘法运算的运算结果。
图8示出根据实施例的处理系统800。
图9示出当使用图8的处理系统的第二模式执行将2X3输入数据矩阵和3X4权重矩阵相乘的诸如图5所示的矩阵乘法运算时,如何将输入数据矩阵和权重矩阵输入到图8的脉动阵列。
图10示出使用图8的脉动阵列执行图5的矩阵乘法运算的运算结果。
图11示出在被输出转换器转换之后,使用图8的脉动阵列执行图5的矩阵乘法运算的运算结果。
具体实施方式
下面将参照附图更详细地描述各个实施例。然而,本发明可以以不同的形式实施,并且不应解释为限于本文阐述的实施例。相反,提供这些实施例使得本公开将是彻底和完整的,并将向本领域技术人员充分传达本发明的范围。在整个公开中,相同的附图标记在本发明的各个附图和实施例中指代相同的部分。
图1是示出根据实施例的脉动阵列100的示图。
脉动阵列100可以包括多个行输入IN_R_1、IN_R_2和IN_R_3、多个列输入IN_C_1、IN_C_2和IN_C_3,多个输出OUT_1、OUT_2和OUT_3以及多个处理元件(PE)PE11至PE33(即PE11、PE12、PE13、PE21、PE22、PE23、PE31、PE32和PE33)。
多个行输入IN_R_1至IN_R_3可以将输入数据传送到多个PE PE11到PE33。多个行输入IN_R_1至IN_R_3可分别将输入数据传送到与其自身相对应的行的多个PE PE11至PE33。例如,行输入IN_R_2可以将输入数据传送到多个PE PE21、PE22和PE23。例如,输入数据可以是图像数据。
多个列输入IN_C_1至IN_C_3可以将权重传送到多个PE PE11到PE33。多个列输入IN_C_1至IN_C_3可分别将权重传送到与其自身相对应的列的多个PE PE11至PE33。例如,列输入IN_C_3可以将权重传送到PE PE13、PE23和PE33。
多个输出OUT_1至OUT_3在与多个行输入IN_R_1至IN_R_3相同的方向上排列,并且可以使用PE PE11至PE33的运算结果进行输出。多个输出OUT_1至OUT_3可以分别输出与自身相对应的行的PE PE11至PE33的运算结果。例如,输出OUT_1可以输出多个PE PE11、PE12和PE13中的任意一个的运算结果。
多个PE PE11至PE33可以对传送到多个行输入IN_R_1至IN_R_3之中的与多个PE自身相对应的行输入的输入数据和传送到多个列输入IN_C_1至IN_C_3之中的与多个PE自身相对应的列输入的权重执行乘法运算,并且可以将乘法运算的结果与前一运算结果相加。例如,PE PE23可以将输入到行输入IN_R_2的输入数据和输入到列输入IN_C_3的权重相乘,并且可以将相乘的结果与先前运算结果相加。
PE的结构将以多个PE PE11至PE33中的PE PE12为示例进行描述。PE PE12可以包括:乘法器M12,加法器A12,第一至第四寄存器R12_1、R12_2、R12_3和R12_4以及复用器MUX12。乘法器M12可以对经由行输入IN_R_1提供的输入数据和经由列输入IN_C_2提供的权重执行乘法运算。加法器A12可以对乘法器M12的乘法结果和第一寄存器R12_1中存储的值执行加法运算,并且可以将加法运算的结果存储在第一寄存器R12_1中。第三寄存器R12_3可以是用于将通过前一列的PE PE11从行输入IN_R_1接收的输入数据传送到下一列的PEPE13的寄存器。第二寄存器R12_2可以是用于将从列输入IN_C_2接收的权重传送到下一行的PE PE22的寄存器。复用器MUX12可以从下一列的PE PE13传送的另一PE的运算结果和第一寄存器R12_1中存储的运算结果中选择一个运算结果。第四寄存器R12_4可以存储复用器MUX12的输出值,并将该输出值传送到前一列的PE PE11。其他PE PE11、PE13、PE21、PE22、PE23、PE31、PE32和PE33分别包括各自的乘法器M11、M13、M21、M22、M23、M31、M32和M33;各自的加法器A11、A13、A21、A22、A23、A31、A32和A33;各自的第一寄存器R11_1、R13_1、R21_1、R22_1、R23_1、R31_1、R32_1和R33_1;各自的第二寄存器R11_2、R13_2、R21_2、R22_2、R23_2、R31_2、R32_2和R33_2;各自的第三寄存器R11_3、R13_3、R21_3、R22_3、R23_3、R31_3、R32_3和R33_3;各自的第四寄存器R11_4、R13_4、R21_4、R22_4、R23_4、R31_4、R32_4和R33_4;以及各自的复用器MUX11、MUX13、MUX21、MUX22、MUX23、MUX31、MUX32和MUX33;它们中的每一个都按照PE PE12的相应元件所描述的方式操作。
将描述执行诸如图2所示的将4X3输入数据矩阵INPUT与3X4权重矩阵WEIGHT相乘的矩阵乘法运算的示例。图2示出输入数据矩阵INPUT被配置为四个批次。在这种情况下,批次可以意味着数据的数量。例如,在图2的输入数据矩阵INPUT中,批次可以是四行中的每一行的图像。即,输入数据矩阵可以包括四个图像(批次)(I11,I12,I13)、(I21,I22,I23)、(I31,I32,I33)和(I41,I42,I43)。
图3是示出如何将输入数据矩阵INPUT和权重矩阵WEIGHT输入到4X2脉动阵列300的行输入IN_R_1至IN_R_4以及列输入IN_C_1和IN_C_2以执行图2的矩阵乘法运算的示图。
在图3中,CLK1可以指示在第一周期中输入到脉动阵列300的值,CLK2可以指示在第二周期中输入到脉动阵列300的值,依此类推。例如,在第一周期CLK1中,可以将I11和W11输入到PE PE11,并计算出相应的结果(例如I11和W11的乘积)。在第二周期CLK2中,可以将I12和W21输入到PE PE11并计算出相应的结果(例如I12和W21的乘积与在第一周期CLK1中由PEPE11执行的计算I11〃W11的结果相加),可以将I11和W12输入到PE PE12并计算出相应的结果(例如I11和W12的乘积),并且可以将I21和W11输入到PE PE21并计算出相应的结果(例如I21和W11的乘积)。即,PE PE12可以在第二周期CLK2中接收在第一周期CLK1中由前一列的PE PE11接收的输入数据I11。PE PE21可以在第二周期CLK2中接收在第一周期CLK1中由前一行的PEPE11接收的权重W11。
在图3中,边界B1或B2可以指示操作范围。脉动阵列300的PE PE11、PE12、PE21、PE22、PE31、PE32、PE41和PE42可以在边界单元B1或B2中加上输入数据和权重的相乘值,并且可以输出相加的结果。当PE完成每个边界单元的计算时(例如,对于PE11为第三周期之后,对于PE12和PE21为第四周期之后,依此类推),结果可以存储在PE的第四寄存器Rxx_4中,然后在处理下一边界单元的同时输出。如果从图3的边界单元B1或B2中的脉动阵列300输出运算结果,则可以导出诸如图4的结果值。可以看出的是,图4示出图2的输入数据矩阵INPUT和权重矩阵WEIGHT的矩阵乘法结果。
在图2至图4中描述的操作中,使用了脉动阵列300的所有PE PE11、PE12、PE21、PE22、PE31、PE32、PE41和PE42。在这种情况下,脉动阵列300的利用率可以是100%。
将考虑执行诸如图5所示的将2X3阵列的输入数据矩阵INPUT与3X4阵列的权重矩阵WEIGHT相乘的矩阵乘法运算的示例。图5示出输入数据矩阵INPUT被配置为两个批次。
图6是示出如何将输入数据矩阵INPUT和权重矩阵WEIGHT输入到4X2脉动阵列600以执行图5的矩阵乘法运算的示图。与图3类似,在图6中,CLK1、CLK2等可以指示输入周期,B1或B2可以指示操作的边界。如果从在图6的边界单元B1或B2中的脉动阵列600输出操作结果,则可以得到诸如图7的结果值。可以看出的是,图7示出图5的输入数据矩阵INPUT和权重矩阵WEIGHT的矩阵乘法结果。
在图5至图7中描述的操作中,仅使用了脉动阵列600内的PE PE11、PE12、PE21和PE22进行计算,而不使用PE31、PE32、PE41和PE42进行计算。在这种情况下,脉动阵列600的利用率为50%。如果脉动阵列600的利用率为50%,则这可意味着脉动阵列600的性能与最大性能相比降低了50%,并且使用了不必要的电流。
图8示出根据实施例的处理系统800。
处理系统800包括脉动阵列850、主机接口(IF)801、控制器803、存储器805、存储器控制器807、数据缓冲器809、行缓冲器811、列缓冲器813、模式转换寄存器815、输出转换器817和后处理器819。在这种情况下,处理系统800可以具有多种形式,诸如将处理系统插入高速PCI插槽中的卡类型、多个元件集成在单个芯片内的片上系统(SoC)以及各种芯片集成在单个封装内的系统化封装(SiP)。
主机IF801可以是用于与主机通信的接口。待由处理系统800处理的各种命令和数据可以通过主机IF801从主机,例如中央处理单元(CPU)传送。
控制器803可以响应于来自主机的指令控制处理系统800的全部操作,使得处理系统800可以执行各种类型的操作。总线804可以是使处理系统800内的元件能够交换各种信号和数据的总线。
存储器805可以是处理系统800使用的存储器。存储器805可以存储与需要由脉动阵列850所执行的操作有关的数据,例如输入数据和权重。存储器控制器807可以访问存储器805。
模式转换寄存器815可以是设置第一模式和第二模式中的一种模式的寄存器。处理系统800可以基于模式转换寄存器815中存储的设置值,以第一模式和第二模式中的一种模式操作。可以通过来自主机的指令来设置模式转换寄存器815,该主机指令可以通过主机IF801接收。主机可以基于确定在第一模式下执行操作可以比在第二模式下更有效,将模式转换寄存器815的模式设置为第一模式,并且可以基于确定第二模式下执行操作可以比第一模式下更有效,将模式转换寄存器815的模式设置为第二模式。
数据缓冲器809可以存储通过存储器控制器807从存储器805接收的数据,即输入数据和权重。数据缓冲器809可以将数据加载到行缓冲器811和列缓冲器813。在第一模式下,数据缓冲器809可以将输入数据加载到行缓冲器811,将权重加载到列缓冲器813。与第一模式相反,在第二模式下,数据缓冲器809可以将权重加载到行缓冲器811,将输入数据加载到列缓冲器813。
行缓冲器811可以将行数据传送到脉动阵列850的行输入IN_R_1、IN_R_2、IN_R_3和IN_R_4。在第一模式下,因为数据缓冲器809将输入数据加载到行缓冲器811,行数据可以是输入数据。在第二模式下,因为数据缓冲器809将权重加载到行缓冲器811,行数据可以是权重。行缓冲器811可以用于将从脉动阵列850的OUT_1、OUT_2、OUT_3和OUT_4传送的运算数据传送到数据缓冲器809。
列缓冲器813可以将列数据传送到脉动阵列850的列输入IN_C_1和IN_C_2。在第一模式下,因为数据缓冲器809将权重加载到行缓冲器811,列数据可以是权重。在第二模式下,因为数据缓冲器809将输入数据加载到列缓冲器813,列数据可以是输入数据。
输出转换器817可以将在第二模式下由脉动阵列850输出的运算结果的类型转换为与在第一模式下相同的类型。在第二模式下,输入到脉动阵列850的输入数据和权重的方向发生了改变。因此,在第一模式和第二模式下,从脉动阵列850输出的运算结果的类型(例如,结果中的值的排序)可以不同。输出转换器817可以将第二模式下从脉动阵列850输出的运算结果的类型转换成与第一模式下相同的类型。在这种情况下,第一模式被设置为参考。如果将第二模式设置为参考,则输出转换器817可以将第一模式下从脉动阵列850输出的运算结果的类型转换为与第二模式下相同的类型。后面将参照图11具体描述输出转换器817的转换操作。
后处理器819可以对脉动阵列850的运算结果进行后处理。后处理器819可以执行诸如用于搜索每个像素的平均值或最大值的池化、用于基于阈值过滤数据的修正线性单元(ReLU)功能、以及用于从诸如sigmoid的激活函数中筛选出值的归一化的功能以产生结果值。
脉动阵列850可以包括行数不同于列数的PE PE11、PE12、PE21、PE22、PE31、PE32、PE41和PE42(图示为4X2阵列)。在第一模式下,脉动阵列850可以通过行输入IN_R_1至IN_R_4接收输入数据,通过列输入IN_C_1、IN_C_2接收权重,并对所接收的输入数据和权重执行操作。在第二模式下,脉动阵列850可以通过行输入IN_R_1至IN_R_4接收权重,通过列输入IN_C_1、IN_C_2接收输入数据,并对所接收的权重和输入数据执行操作。因此,根据脉动阵列850执行的操作的类型,第一模式可以是有优势的,或者第二模式可以是有优势的。在以上实施例中,行和列的阵列被示为在脉动阵列850中具有4X2阵列,但是实施例不限于此,行和列的阵列可以不同于4X2阵列。
在图8的处理系统800中,如果执行诸如图2的将4X3阵列的输入数据矩阵INPUT与3X4阵列的权重矩阵WEIGHT相乘的矩阵乘法运算,则通过将处理系统800设置为第一模式并如图3所示将输入数据矩阵和权重矩阵输入到脉动阵列850,可以将脉动阵列850的利用率保持在100%。
在图8的处理系统800中,如果执行诸如图5的将2X3阵列的输入数据矩阵INPUT与3X4阵列的权重矩阵WEIGHT相乘的矩阵乘法运算,则如果在第一模式下由处理系统800执行该操作,如参照图5至图7所述,脉动阵列850的利用率将变为50%。在这种情况下,将脉动阵列850的模式设置为第二模式可以是有利的。
图9是示出当将处理系统800的模式设置为第二模式时,执行诸如图5所示的将2X3阵列的输入数据矩阵INPUT和3X4阵列的权重矩阵WEIGHT相乘的矩阵乘法运算时,如何将输入数据矩阵和权重矩阵输入到脉动阵列850的示图。与图6类似,在图9中,CLK1、CLK2等可以指示输入周期,B可以指示操作的边界。从图9中可以看出的是,在第二模式下,可以基于单个边界B来执行图5的操作。如果从图9的边界单元B中的脉动阵列850输出操作结果,则可以得到诸如图10的结果值。
从图10可以看出的是,图5的输入数据矩阵INPUT和权重矩阵WEIGHT的矩阵乘法结果的行和列相对于图7所示的结果已经改变;特别地,图10所示的结果是图7所示结果的转置,其中对于X在1…4和Y在1…2来说,图10中X行和Y列的结果为图7中Y行和X列的结果。输出转换器817可以将图10的结果值的类型转换成图11的结果值的类型。输出转换器817可以通过简单地改变图10的结果值的行和列来执行转换运算。例如,输出转换器817可以将位置12处的值改变为位置21处的值,可以将位置23处的值改变为位置32处的值,并且可以不改变位置11处的值。图11与图7相同。可以看出的是,图11示出图5的输入数据矩阵INPUT和权重矩阵WEIGHT的矩阵乘法结果。
参照图9至图11,通过在第二模式下驱动处理系统800,可以使用脉动阵列内的所有PE PE11、PE12、PE21、PE22、PE31、PE32、PE41和PE42执行图5的矩阵乘法。即,可以看到的是,可以将利用率提高到100%,并且可以减少操作所花费的时间。
如上所述,根据待由处理系统800执行的矩阵运算的类型,通过以第一模式和第二模式之中的一种模式驱动处理系统800,可以提高脉动阵列的利用率,并且可以防止不必要的时间和不必要的电流的浪费。
根据各种实施例,可以提高脉动阵列的利用率。
尽管出于说明性目的描述了各个实施例,但是对于本领域技术人员显而易见的是,在不脱离所附权利要求书所限定的本发明的精神和范围的情况下,可以进行各种改变和修改。
Claims (13)
1.一种处理系统,包括:
脉动阵列,包括排列成M行和N列的多个处理元件即多个PE,其中M和N为自然数,且M不等于N;
行缓冲器,在行方向上将行数据传送到所述脉动阵列,其中当所述处理系统处于第一模式时,所述行数据是输入数据,当所述处理系统处于第二模式时,所述行数据是权重;以及
列缓冲器,在列方向上将列数据传送到所述脉动阵列,其中当所述处理系统处于所述第一模式时,所述列数据是所述权重,当所述处理系统处于所述第二模式时,所述列数据是所述输入数据。
2.根据权利要求1所述的处理系统,进一步包括数据缓冲器,当所述处理系统处于所述第一模式时,所述数据缓冲器将所述输入数据加载到所述行缓冲器并且将所述权重加载到所述列缓冲器,以及当所述处理系统处于所述第二模式时,所述数据缓冲器将所述权重加载到所述行缓冲器并且将所述输入数据加载到所述列缓冲器。
3.根据权利要求1所述的处理系统,进一步包括输出转换器,当所述处理系统处于所述第二模式时,所述输出转换器将从所述脉动阵列输出的运算结果的类型转换成与所述处理系统处于所述第一模式时从所述脉动阵列输出的类型相同的类型。
4.根据权利要求1所述的处理系统,进一步包括输出转换器,当所述处理系统处于所述第一模式时,所述输出转换器将从所述脉动阵列输出的运算结果的类型转换成与所述处理系统处于所述第二模式时从所述脉动阵列输出的类型相同的类型。
5.根据权利要求1所述的处理系统,其中所述多个PE中的PE包括:
乘法器,将所述行数据与所述列数据相乘;
第一寄存器,存储结果值;以及
加法器,对由所述乘法器执行的乘法运算的结果和所述第一寄存器中存储的值执行加法运算,并且将所述加法运算的结果存储在所述第一寄存器中。
6.根据权利要求5所述的处理系统,其中所述多个PE中的PE进一步包括:
第二寄存器,将所述列数据传送到下一行的PE;以及
第三寄存器,将所述行数据传送到下一列的PE。
7.根据权利要求6所述的处理系统,其中所述多个PE中的PE进一步包括:
复用器,选择从所述下一列传送的结果值和所述第一寄存器中存储的结果值中的一个结果值;以及
第四寄存器,存储所述复用器的输出值并将所述输出值传送到前一列。
8.根据权利要求1所述的处理系统,进一步包括:
主机接口,与主机通信;
存储器,存储数据;
存储器控制器,访问所述存储器的所述数据并将所述数据加载到所述数据缓冲器中;
控制器,根据通过所述主机接口从所述主机传送的指令控制所述处理系统;
模式转换寄存器,设置所述第一模式和所述第二模式;以及
后处理器,对所述脉动阵列执行的运算结果进行后处理。
9.根据权利要求1所述的处理系统,其中所述输入数据包括图像数据。
10.一种脉动阵列,包括:
M个行输入,在第一模式下将输入数据作为行数据传送,在第二模式下将权重作为所述行数据传送,其中M是自然数;
N个列输入,在所述第一模式下将所述权重作为列数据传送,在所述第二模式下将所述输入数据作为所述列数据传送,其中,N为自然数,并且N不等于M;以及
M*N个处理元件即M*N个PE,每个PE对传送到所述M个行输入之中与PE相对应的行输入的行数据和传送到所述N个列输入之中与PE相对应的列输入的列数据执行乘法运算,并且将所述乘法运算的结果与先前运算的结果相加。
11.根据权利要求10所述的脉动阵列,其中所述M*N个PE中的PE包括:
乘法器,将所述行数据与所述列数据相乘;
第一寄存器,存储结果值;以及
加法器,对所述乘法器的乘法运算的结果和所述第一寄存器中存储的值执行加法运算,并将所述加法运算的结果存储在所述第一寄存器中。
12.根据权利要求11所述的脉动阵列,其中所述M*N个PE中的PE进一步包括:
第二寄存器,将所述列数据传送到下一行的PE;以及
第三寄存器,将所述行数据传送到下一列的PE。
13.根据权利要求12所述的脉动阵列,其中所述M*N个PE中的PE进一步包括:
复用器,选择从所述下一列传送的结果值和所述第一寄存器中存储的结果值中的一个结果值;以及
第四寄存器,存储所述复用器的输出值并将所述输出值传送到前一列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190026198A KR20200107295A (ko) | 2019-03-07 | 2019-03-07 | 시스톨릭 어레이 및 프로세싱 시스템 |
KR10-2019-0026198 | 2019-03-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111666255A true CN111666255A (zh) | 2020-09-15 |
CN111666255B CN111666255B (zh) | 2023-03-10 |
Family
ID=72335282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911286293.3A Active CN111666255B (zh) | 2019-03-07 | 2019-12-13 | 脉动阵列和处理系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10949380B2 (zh) |
JP (1) | JP7414515B2 (zh) |
KR (1) | KR20200107295A (zh) |
CN (1) | CN111666255B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360934B1 (en) | 2017-09-15 | 2022-06-14 | Groq, Inc. | Tensor streaming processor architecture |
US11868804B1 (en) | 2019-11-18 | 2024-01-09 | Groq, Inc. | Processor instruction dispatch configuration |
US11114138B2 (en) | 2017-09-15 | 2021-09-07 | Groq, Inc. | Data structures with multiple read ports |
US11243880B1 (en) | 2017-09-15 | 2022-02-08 | Groq, Inc. | Processor architecture |
US11170307B1 (en) | 2017-09-21 | 2021-11-09 | Groq, Inc. | Predictive model compiler for generating a statically scheduled binary with known resource constraints |
US11537687B2 (en) | 2018-11-19 | 2022-12-27 | Groq, Inc. | Spatial locality transform of matrices |
US20200175355A1 (en) * | 2018-11-30 | 2020-06-04 | Electronics And Telecommunications Research Institute | Neural network accelerator with systolic array structure |
CN114930351A (zh) * | 2019-11-26 | 2022-08-19 | 格罗克公司 | 使用仅单个侧从多维阵列加载操作数并输出结果 |
US11467806B2 (en) | 2019-11-27 | 2022-10-11 | Amazon Technologies, Inc. | Systolic array including fused multiply accumulate with efficient prenormalization and extended dynamic range |
TWI746126B (zh) * | 2020-08-25 | 2021-11-11 | 創鑫智慧股份有限公司 | 矩陣乘法裝置及其操作方法 |
JP7261774B2 (ja) | 2020-08-28 | 2023-04-20 | 大王製紙株式会社 | マスク用耳掛け部、マスク、マスク用耳掛け部の製造方法、及びマスクの製造方法 |
US20230004523A1 (en) * | 2021-06-30 | 2023-01-05 | Amazon Technologies, Inc. | Systolic array with input reduction to multiple reduced inputs |
US11880682B2 (en) | 2021-06-30 | 2024-01-23 | Amazon Technologies, Inc. | Systolic array with efficient input reduction and extended array performance |
US11494627B1 (en) | 2021-07-08 | 2022-11-08 | Hong Kong Applied Science and Technology Research Institute Company Limited | Dynamic tile parallel neural network accelerator |
CN117743250A (zh) * | 2022-09-13 | 2024-03-22 | 英业达科技有限公司 | 处理单元数组及其运作方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5138695A (en) * | 1989-10-10 | 1992-08-11 | Hnc, Inc. | Systolic array image processing system |
US5317755A (en) * | 1991-04-10 | 1994-05-31 | General Electric Company | Systolic array processors for reducing under-utilization of original design parallel-bit processors with digit-serial processors by using maximum common divisor of latency around the loop connection |
US5719642A (en) * | 1996-05-07 | 1998-02-17 | National Science Council Of R.O.C. | Full-search block matching motion estimation processor |
US20160342892A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Prefetching weights for use in a neural network processor |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
US20180314671A1 (en) * | 2017-04-27 | 2018-11-01 | Falcon Computing | Systems And Methods For Systolic Array Design From A High-Level Program |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080133879A1 (en) * | 2006-12-05 | 2008-06-05 | Electronics And Telecommunications Research Institute | SIMD parallel processor with SIMD/SISD/row/column operation modes |
WO2008129900A1 (ja) * | 2007-04-12 | 2008-10-30 | Nec Corporation | アレイプロセッサ型データ処理装置 |
US8620984B2 (en) | 2009-11-23 | 2013-12-31 | Xilinx, Inc. | Minimum mean square error processing |
JP6387913B2 (ja) | 2015-07-08 | 2018-09-12 | 株式会社デンソー | 演算処理装置 |
US10241972B2 (en) * | 2017-03-16 | 2019-03-26 | International Business Machines Corporation | Matrix multiplication on a systolic array |
TWI685757B (zh) * | 2017-05-17 | 2020-02-21 | 美商谷歌有限責任公司 | 低延遲矩陣乘法單元 |
US11328037B2 (en) * | 2017-07-07 | 2022-05-10 | Intel Corporation | Memory-size- and bandwidth-efficient method for feeding systolic array matrix multipliers |
CN111149090B (zh) * | 2017-09-21 | 2023-12-01 | 华为技术有限公司 | 多线程脉动阵列 |
US10459876B2 (en) * | 2018-01-31 | 2019-10-29 | Amazon Technologies, Inc. | Performing concurrent operations in a processing element |
US10445638B1 (en) * | 2018-02-28 | 2019-10-15 | Amazon Technologies, Inc. | Restructuring a multi-dimensional array |
US10831702B2 (en) * | 2018-09-20 | 2020-11-10 | Ceva D.S.P. Ltd. | Efficient utilization of systolic arrays in computational processing |
-
2019
- 2019-03-07 KR KR1020190026198A patent/KR20200107295A/ko active Search and Examination
- 2019-11-14 US US16/684,246 patent/US10949380B2/en active Active
- 2019-12-13 CN CN201911286293.3A patent/CN111666255B/zh active Active
- 2019-12-24 JP JP2019232627A patent/JP7414515B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5138695A (en) * | 1989-10-10 | 1992-08-11 | Hnc, Inc. | Systolic array image processing system |
US5317755A (en) * | 1991-04-10 | 1994-05-31 | General Electric Company | Systolic array processors for reducing under-utilization of original design parallel-bit processors with digit-serial processors by using maximum common divisor of latency around the loop connection |
US5719642A (en) * | 1996-05-07 | 1998-02-17 | National Science Council Of R.O.C. | Full-search block matching motion estimation processor |
US20160342892A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Prefetching weights for use in a neural network processor |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
US20180314671A1 (en) * | 2017-04-27 | 2018-11-01 | Falcon Computing | Systems And Methods For Systolic Array Design From A High-Level Program |
CN108805262A (zh) * | 2017-04-27 | 2018-11-13 | 美国飞通计算解决方案有限公司 | 用于根据高级程序进行脉动阵列设计的系统及方法 |
Non-Patent Citations (1)
Title |
---|
BOSHENG LIU ET AL: "Addressing the issue of processing element under-utilization in general-purpose systolic deep learning accelerators", 《THE 24TH ASIA AND SOUTH PACIFIC DESIGN AUTOMATION CONFERENCE》 * |
Also Published As
Publication number | Publication date |
---|---|
US20200285605A1 (en) | 2020-09-10 |
KR20200107295A (ko) | 2020-09-16 |
JP7414515B2 (ja) | 2024-01-16 |
JP2020144843A (ja) | 2020-09-10 |
CN111666255B (zh) | 2023-03-10 |
US10949380B2 (en) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111666255B (zh) | 脉动阵列和处理系统 | |
CN107704922B (zh) | 人工神经网络处理装置 | |
CN107679620B (zh) | 人工神经网络处理装置 | |
CN107679621B (zh) | 人工神经网络处理装置 | |
US10824934B2 (en) | Methods and apparatus for matrix processing in a convolutional neural network | |
US20220292049A1 (en) | Neural processing accelerator | |
CN108304922B (zh) | 用于神经网络计算的计算设备和计算方法 | |
US20180046903A1 (en) | Deep processing unit (dpu) for implementing an artificial neural network (ann) | |
US20180046894A1 (en) | Method for optimizing an artificial neural network (ann) | |
EP0390907B1 (en) | Parallel data processor | |
EP2017743B1 (en) | High speed and efficient matrix multiplication hardware module | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
KR20170126997A (ko) | 신경망 프로세서의 벡터 컴퓨테이션 유닛 | |
CN112989267A (zh) | 用于执行卷积运算的方法和系统 | |
US20200167405A1 (en) | Convolutional operation device with dimensional conversion | |
CN114781632B (zh) | 基于动态可重构脉动张量运算引擎的深度神经网络加速器 | |
WO2021232422A1 (zh) | 神经网络的运算装置及其控制方法 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
US20070074001A1 (en) | Reconfigurable integrated circuit device | |
CN110377874B (zh) | 卷积运算方法及系统 | |
CN111985628B (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
JP6906622B2 (ja) | 演算回路および演算方法 | |
CN112561943B (zh) | 一种基于脉动阵列卷积运算数据复用的图像处理方法 | |
US20220101083A1 (en) | Methods and apparatus for matrix processing in a convolutional neural network |
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 |