CN114443146A - 基于存算一体存储器的矢量处理器及其运行方法 - Google Patents
基于存算一体存储器的矢量处理器及其运行方法 Download PDFInfo
- Publication number
- CN114443146A CN114443146A CN202011187585.4A CN202011187585A CN114443146A CN 114443146 A CN114443146 A CN 114443146A CN 202011187585 A CN202011187585 A CN 202011187585A CN 114443146 A CN114443146 A CN 114443146A
- Authority
- CN
- China
- Prior art keywords
- vector
- input
- module
- mode
- input vector
- 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.)
- Pending
Links
Images
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种基于存算一体存储器的矢量处理器,包括:乘法存算一体模块,其被配置为计算第一输入向量X与第一输入矩阵W的乘积,所述乘积为第一输出向量Y’;以及加法模块,其被配置为将第一输入向量X或第一输出向量Y’与第二输入向量B相加。本发明还涉及这样的矢量处理器的运行方法。通过本发明,可以在处理器芯片内完成加法和乘法以及乘加操作,由此显著地扩展矢量处理器的应用场景并降低其执行上述计算所需的硬件和软件成本。此外,本发明通过将加法运算集成到矢量存储器内,使得本发明的矢量存储器可以较好地适用于矢量空间运算,例如可完全地执行神经网络计算中的乘加运算,由此大大提高运算速度和效率。
Description
技术领域
本发明总的来说涉及集成电路领域,具体而言,涉及一种基于存算一体存储器的矢量处理器。此外,本发明还涉及一种用于运行这样的矢量处理器的方法。
背景技术
近年来,矢量处理器得到了迅速发展。矢量处理器是一种用于处理矢量和矩阵运算的处理器。目前,矢量处理器在处理矢量与矩阵的乘法以及矢量加法时效率较低、延迟较高且硬件成本较高,使得其应用场景受限。
发明内容
本发明的任务是,提供一种基于存算一体存储器的矢量处理器及其运行方法,通过所述存储器和/或方法,可以在处理器芯片内完成加法和乘法以及乘加操作,由此显著地扩展矢量处理器的应用场景并降低其执行上述计算所需的硬件和软件成本。
在本发明的第一方面,该任务通过一种基于存算一体存储器的矢量处理器来解决,该存储器包括:
乘法存算一体模块,其被配置为计算第一输入向量X与第一输入矩阵W的乘积,所述乘积为第一输出向量Y’;以及
加法模块,其被配置为将第一输入向量X或第一输出向量Y’与第二输入向量B相加。
在本发明中,术语“向量”或“矢量”是指具有n个分量或元素的数组,也可以用1xn矩阵来表示,其中n为自然数。例如,向量的每个元素或分量可以分别存储在一个存储单元中,并且由多个存储单元来共同存储单个向量。在本发明中,术语“矩阵”可以视为包含nxm个元素的数组,m为自然数。向量和矩阵的乘法按照矩阵乘法规则来计算。例如,n维向量(即1xn矩阵)与nxm矩阵的乘积为n维向量、即nx1矩阵。在本发明中,除特别指出以外,能够相乘或相加的向量或矩阵满足相应的维度要求。
在本发明的一个优选方案中规定,该矢量处理器还包括存储控制器,所述存储控制器被配置为执行下列动作中的一个或多个:
启用乘法存算一体模块并停用加法模块以进入乘法模式,其中在乘积模式下,计算第一输入向量X与第一输入矩阵W的乘积Y’:
Y’=XW;
启用乘法存算一体模块并启用加法模块以进入乘加模式,其中在乘加模式下,计算所述乘积与第二输入向量B之和Y:
Y=XW+B;以及
停用乘法存算一体模块并启用加法模块以进入加法模式,其中在加法模式下,计算第一输入向量X与第二输入向量B之和Y”:
Y”=X+B。
通过该优选方案,可以实现多种运算,由此扩展了存储器的应用领域。
在本发明的另一优选方案中规定,所述加法模块和所述乘法存算一体模块一起集成在所述矢量处理器中并且与所述控制器直接通信。通过该优选方案,可以省去控制器与计算模块之间的中间通信环节或芯片外通信的必要,由此节省硬件和软件成本。在一些场景中,在所述加法模块和所述乘法存算一体模块与存储控制器之间也可以布置附加的部件,例如数据路径模块,所述数据路径模块被配置为根据运算类型切换数据输入和输出路径以实现所需的运算类型。例如在乘加模式下,将向量与矩阵的乘积以及第二输入向量输入到加法模块中;在加法模式下,将两个输入向量输入到加法模块;在乘法模式下,将向量和矩阵输入到乘法存算一体模块。
在本发明的又一优选方案中规定,所述乘法存算一体模块包括:
行和列形式的存储器内处理(PIM)块阵列,每个存储器内处理块都被配置为处于计算模式或存储器模式;
控制器,其被配置为将PIM块阵列划分为:第一组PIM块,每个PIM块都被配置为处于存储器模式;以及第二组PIM块,每个PIM块都被配置为处于计算模式,其中第一组PIM块被配置为存储第一输入向量X,并且第二组PIM块被配置为存储第一输入矩阵W并且基于第一输入向量X和第二矩阵计算第三向量的部分和;以及
累加器,其被配置为基于第三矩阵的部分和输出所述乘积。
通过所述优选方案,可以实现高效的存内乘法计算。
在本发明的一个扩展方案中规定,所述加法模块包括多个加法器以并行地执行第一输入向量X或所述乘积的相应元素与第二输入向量B的相应元素的加法。通过该扩展方案,可以实现并行的加法运算,由此提高运算速度。在一些情况下,也可以设置单个加法器来执行串行的加法运算。加法器优选地以CMOS电路来实现,以便集成在存储器内。
在本发明的另一扩展方案中规定,该矢量处理器还包括:
寄存器,其与乘法存算一体模块和/或加法模块具有数据通信连接,并且被配置为:
在乘法模式下,存储第一输入向量X和第一输入矩阵W并输送给乘法存算一体模块;
在乘加模式下,存储第一输入向量X、第一输入矩阵W以及第二输入向量B并输送给乘法存算一体模块和加法模块;以及
在加法模式下,存储第一输入向量X和第二输入向量B并输送给加法模块。
在本发明中,通过采用寄存器来存储输入数据和/或中间计算结果,可以免除外部存储装置的需要,同时也扩展了并行计算能力。
在本发明的第二方面,前述任务通过一种用于神经网络计算的电路来解决,该电路包括:
多个层,每个层包括多个神经单元;以及
根据本发明的矢量处理器,所述矢量处理器被配置为从第一层的神经单元接收输入数据X0并且计算输出数据Y以作为与第一层相邻的第二层的神经单元的输入数据。
在此,第一层的输入数据X0可以是第一层中的矢量处理器的计算结果,例如向量与矩阵的乘积再与另一向量相加之和,其中应当指出,该和为一列向量,但是由于在存储器中,行向量和列向量均可存储在各个存储单元中,因此在存储器中,列向量与行向量是等价的,无需进行转置运算。在典型的场景中,输入数据X0为神经网络的上一层的计算结果,输入到本层以后,与各节点的加权矩阵(矩阵W或矩阵W的子矩阵)进行乘法运算,然后再求和。因此,矢量处理器可以完全执行神经网络上的上述运算而无需片外的软硬件。
在本发明的第三方面,前述任务通过一种用于运行根据本发明的矢量处理器的方法来解决,该方法包括下列步骤:
由存储控制器启用乘法存算一体模块并停用加法模块以进入乘法模式,其中在乘积模式下,由乘法存算一体模块计算第一输入向量X与第一输入矩阵W的乘积Y’:
Y’=XW;
由存储控制器启用乘法存算一体模块并启用加法模块以进入乘加模式,其中在乘加模式下,由乘法存算一体模块计算第一输入向量X与第一输入矩阵W的乘积并由加法模块计算所述乘积与第二输入向量B之和Y:
Y=XW+B;以及
由存储控制器停用乘法存算一体模块并启用加法模块以进入加法模式,其中在加法模式下,由加法模块计算第一输入向量X与第二输入向量B之和Y”:
Y”=X+B。
在本发明的一个扩展方案中规定,该方法还包括下列步骤:
由寄存器在乘法模式下存储第一输入向量X和第一输入矩阵W并输送给乘法存算一体模块;
由寄存器在乘加模式下存储第一输入向量X、第一输入矩阵W以及第二输入向量B并输送给乘法存算一体模块和加法模块;以及
由寄存器在加法模式下存储第一输入向量X和第二输入向量B并输送给加法模块。
在本发明的第四方面,前述任务通过一种用于在神经网络中进行数据处理的方法,包括:
从神经网络的第一层接收第一输入向量X;
将第一输入向量X输入到乘法存算一体模块中,其中在乘法存算一体模块中存储有权重矩阵W;
由乘法存算一体模块计算第一输入向量X与权重矩阵W的乘积,所述乘积为第一输出向量Y’;以及
将第一输出向量Y’和偏置向量B输入到加法模块中;
由加法模块计算第一输出向量Y’与偏置向量B之和Y;以及
将所述和Y输入到神经网络的与第一层相邻的第二层。
在此应当指出,权重矩阵W可以包括一个或多个子矩阵以存储一个或多个神经节点的加权矩阵。
在本发明的一个扩展方案中规定,该方法还包括下列步骤:
由寄存器存储第一输入向量X和偏置向量B。
在本发明的一个优选方案中规定,所述权重矩阵W包括多个子矩阵W1…Wn,其中n为自然数,该方法还包括下列步骤:
由乘法存算一体模块计算第一输入向量X与子矩阵W1的乘积,所述乘积为第一输出分向量Y1;
由乘法存算一体模块计算第一输入向量X与子矩阵W2的乘积,所述乘积为第二输出分向量Y2;
将第一输出向量Y1和第二分向量Y2输入到加法模块中;
由加法模块计算第一输出向量Y1与第二分向量Y2之和Y以作为偏置向量B;
由乘法存算一体模块计算第一输入向量X与子矩阵W3的乘积,所述乘积为第三输出分向量Y3;
将第三输出分向量Y3和偏置向量B输入到加法模块中;以及
由加法模块计算第三输出分向量Y3与偏置向量B之和Y并更新偏置向量B。
通过该优选实施例,可以将输入向量与各个神经节点的子权重矩阵相乘以后再累加以计算总和,从而在存储器内实现了神经网络的主要计算,降低了其软硬件成本。
本发明通过在矢量处理器芯片之内实现乘法和加法运算二者,极大了降低了片外加法运算的软硬件成本以及时间成本;此外,本发明通过将加法运算集成到矢量存储器内,使得本发明的矢量存储器可以较好地适用于矢量空间运算,例如可完全地执行神经网络计算中的乘加运算,由此大大提高运算速度和效率。
附图说明
下面结合具体实施方式参考附图进一步阐述本发明。
图1示出了根据本发明的矢量处理器的示意图;
图2示出了根据本发明的矢量处理器的乘法存算一体模块的一个实施例的示意图;
图3示出了根据本发明的矢量处理器在神经网络计算中的应用实例;
图4示出了根据本发明的矢量处理器的乘法存算一体模块的PIM块的实施例;以及
图5A-5B示出了根据本发明的矢量处理器的乘法存算一体模块的处于存储器模式和计算模式的PIM块的示意图。
具体实施方式
应当指出,各附图中的各组件可能为了图解说明而被夸大地示出,而不一定是比例正确的。在各附图中,给相同或功能相同的组件配备了相同的附图标记。
在本发明中,除非特别指出,“布置在…上”、“布置在…上方”以及“布置在…之上”并未排除二者之间存在中间物的情况。此外,“布置在…上或上方”仅仅表示两个部件之间的相对位置关系,而在一定情况下、如在颠倒产品方向后,也可以转换为“布置在…下或下方”,反之亦然。
在本发明中,各实施例仅仅旨在说明本发明的方案,而不应被理解为限制性的。
在本发明中,除非特别指出,量词“一个”、“一”并未排除多个元素的场景。
在此还应当指出,在本发明的实施例中,为清楚、简单起见,可能示出了仅仅一部分部件或组件,但是本领域的普通技术人员能够理解,在本发明的教导下,可根据具体场景需要添加所需的部件或组件。另外,除非另行说明,本发明的不同实施例中的特征可以相互组合。例如,可以用第二实施例中的某特征替换第一实施例中相对应或功能相同或相似的特征,所得到的实施例同样落入本申请的公开范围或记载范围。
在此还应当指出,在本发明的范围内,“相同”、“相等”、“等于”等措辞并不意味着二者数值绝对相等,而是允许一定的合理误差,也就是说,所述措辞也涵盖了“基本上相同”、“基本上相等”、“基本上等于”。以此类推,在本发明中,表方向的术语“垂直于”、“平行于”等等同样涵盖了“基本上垂直于”、“基本上平行于”的含义。
另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
本发明基于发明人的如下洞察:现有的矢量处理器不能在矢量处理器内执行加法运算,而且还必须使用存储器以外的专用硬件来执行矢量与矩阵的乘法运算,这导致加法运算必须在矢量处理器之外执行,这增加了数据通信和处理的软硬件成本,同时矢量处理器内采用独立于存储器的专用于矢量乘法的硬件电路也增加了功耗和芯片面积;为了至少部分地解决上述问题,本发明通过将加法运算集成到矢量处理器内并且在存算一体存储器内执行矢量乘法运算,一方面免除了矢量处理器内专用于矢量乘法运算的电路,而是在存储器内即可执行乘法运算;另一方面,可以在矢量存储器内执行加法运算而无需执行片外加法运算;再者,本发明的矢量存储器可以较好地适用于矢量空间运算,例如可完全地执行神经网络计算中的乘加运算(即矢量与矩阵相乘以后与另一向量相加),由此大大提高运算速度和效率。
下面结合具体实施方式参考附图进一步阐述本发明。
图1示出了根据本发明的矢量处理器100的示意图。
如图1所示,根据本发明的矢量处理器100具有如下组件(虚线框表示可选组件):
·乘法存算一体模块101,其被配置为计算第一输入向量X与第一输入矩阵W的乘积,所述乘积为第一输出向量Y’。乘法存算一体模块101可用基于非易失性存储器(RRAM,MRAM,PCM,SRAM等)来实现。作为一个示例,乘法存算一体模块101例如可以包括多个PIM(Processing In Memory,存储器内处理)块,所述PIM块用于存储向量和矩阵并将它们相乘。关于乘法存算一体模块101进一步细节,请参考图2。
·加法模块102,其被配置为将第一输入向量X或第一输出向量Y’与第二输入向量B相加。加法模块102例如可以是CMOS加法器(速度较快但是占用芯片内面积较大)或者基于存内逻辑单元(速度较慢但是占用芯片内面积较小)实现,并且加法模块102和乘法存算一体模块101一起集成在所述矢量处理器100中并且与所述控制器105直接通信。在此,术语“集成”是指,以集成电路的形式布置在载体芯片之内。在此,术语“直接通信”是指,通信在芯片(即存储器100)内进行,而无需经过片外通信路径。
·可选的数据路径模块104,其被配置为提供模块101、102、103、存储器105之间的数据传输/通信路径,以便将相应数据输送到相应模块。数据路径模块104例如可以包括相应模块之间的可通断的电线路,并且可选地可以包括开关、选通器等路径选择和通断器件。
·存储控制器105,所述存储控制器被配置为执行下列动作中的一个或多个:
(a)启用乘法存算一体模块101并停用加法模块102以进入乘法模式,其中在乘积模式下,计算第一输入向量X与第一输入矩阵W的乘积Y’:
Y’=XW;
(b)启用乘法存算一体模块101并启用加法模块102以进入乘加模式,其中在乘加模式下,计算所述乘积与第二输入向量B之和Y:
Y=XW+B;以及
(c)停用乘法存算一体模块101并启用加法模块102以进入加法模式,其中在加法模式下,计算第一输入向量X与第二输入向量B之和Y”:
Y”=X+B。
·可选的寄存器,其与乘法存算一体模块101和/或加法模块102具有数据通信连接以存储输入数据和/或结果数据和/或中间结果数据,并且被配置为:
(a)在乘法模式下,存储第一输入向量X和第一输入矩阵W并(可选地通过数据路径模块104)输送给乘法存算一体模块;
(b)在乘加模式下,存储第一输入向量X、第一输入矩阵W以及第二输入向量B并(可选地通过数据路径模块104)输送给乘法存算一体模块和加法模块;以及
(c)在加法模式下,存储第一输入向量X和第二输入向量B并(可选地通过数据路径模块104)输送给加法模块。
图2示出了根据本发明的矢量处理器的乘法存算一体模块101的一个实施例的示意图。
如图2所示,乘法存算一体模块101包括:
·行和列形式的存储器内处理PIM块阵列202,每个存储器内处理块202都被配置为处于计算模式或存储器模式。
·控制器206,其被配置为将PIM块阵列202划分为:第一组PIM块202,每个PIM块202都被配置为处于存储器模式;以及第二组PIM块202,每个PIM块202都被配置为处于计算模式,其中第一组PIM块202被配置为存储第一输入向量X,并且第二组PIM块202被配置为存储第一输入矩阵W并且基于第一输入向量X和第二矩阵计算第三向量的部分和。控制器206可以与存储控制器105集成在一起或彼此分离。在此,部分和是指,向量与矩阵的乘法的部分计算结果,例如行向量与矩阵的列向量的乘积。关于PIM块202的细节,请参阅图4。如图4所示,每个PIM块202都可以包括存储器阵列402和VVM(矢量-矢量乘法)引擎404,所述VVM引擎404被配置为在存储器模式下被停用。VVM引擎例如可以包括位计数器、移位累加器和多个AND门,以便执行矢量-矢量乘法,关于VVM引擎的细节,请参阅图5A-5B。在一些实施例中,存储器阵列402包括ReRAM阵列。能够理解,在其它示例中,存储器阵列402可以包括任何其它合适的存储器,举几个例子来说,所述存储器包括但不限于:相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)。存储器阵列402可以存储第一矢量。PIM块202还可以包括控制电路406,所述控制电路406被配置为在计算模式下启用VVM引擎404并控制VVM引擎404以执行第一矢量与第二矢量之间的点积以生成部分和。控制电路406还可以被配置为在存储器模式下停用VVM引擎404并控制存储器阵列402以写入或读出第一矢量。PIM块202还可以包括用于中间数据存储的各种缓冲器,包括:列缓冲器408,其被配置为通过存储器总线接收和缓冲例如来自其它PIM设备的第二矢量;以及部分和缓冲器410,其被配置为缓冲部分和并通过部分和总线将部分和发送给另一PIM设备。
·可选的累加器,其被配置为基于第三矩阵的部分和输出所述乘积。在其它情况下,也可以直接输出部分和作为计算结果。
·多个MUX 204,其被配置为在不同行和/或列的PIM块202之间重定向数据流。
·总线212,其用于在位于总线上的PIM块202、控制器206、全局功能单元210、累加器等组件之间传输。
·全局功能单元210,其被配置为执行任何合适的全局杂项功能,比如池化、启用和编码方案等。
每个PIM块202都可以是相同的,并且被配置为要么处于用于存储例如两维或更多维的矢量或矩阵之类的数据的存储器模式、要么处于用于存储数据以及执行诸如VMM或VVM之类的矢量/矩阵计算的计算模式。随着要执行的特定任务的改变,例如CNN中的卷积层或全连接(FC)层中的计算,每个PIM块202都可以基于特定任务的计算方案在计算模式与存储器模式之间重新配置。在一些实施例中,即使PIM块202阵列的布局是预设的,例如为正交的行和列的形式,MUX 204的配置仍然可以根据要执行的特定任务灵活改变。例如,通过启用和停用不同行的PIM块202之间的某些MUX 204,PIM块202阵列的布置可以被配置为适应与特定任务相对应的计算方案和数据流。根据一些实施例,被启用的MUX 204将PIM块202阵列划分成两个或更多个组,每个组都被配置为处于相同的计算或存储器模式。此外,尽管PIM块202之间的缺省数据流处于相同的行和/或列,但是被启用的MUX 204可以按照特定任务的需要进一步在不同行和/或列之间重定向数据流。
总线212可以是乘法存算一体模块101的主/系统总线,其用于将诸如矩阵之类的输入数据传输到PIM块202阵列。乘法存算一体模块101中的一组PIM块202可以被配置为处于存储器模式以替代RAM 102。结果,根据一些实施例,数据流不再处于每个PIM块104与集中式RAM102之间,而是基于PIM块202阵列的布置、例如PIM块202阵列的布局和/或MUX 204的配置而遵循特定路径。PIM块202阵列的输出、例如部分求和(和)可以被发送到累加器208,所述累加器208可以进一步被配置为基于部分和生成输出矩阵。
图5A-5B示出了根据本发明的矢量处理器的乘法存算一体模块的处于存储器模式和计算模式的PIM块的示意图。
图5A示出了根据本公开一些实施例的处于存储器模式的PIM块202的详细框图。图5B示出了根据本公开一些实施例的处于计算模式的图4中的PIM块202的详细框图。VVM引擎404可以包括位计数器502、移位累加器508以及多个AND门506。如图5A所示,控制电路406可以在存储器模式下停用VVM引擎404和部分和缓冲器410(以虚线示出),使得PIM块202充当存储器元件以用于在存储器阵列402中存储第一矢量。如图5B所示,控制电路406可以在计算模式下启用VVM引擎404和部分和缓冲器410(以实线示出),使得存储在存储器阵列402中的第一矢量和列缓冲器408中缓冲的第二矢量可以被发送给VVM引擎404以计算第一和第二矢量的点积,所述点积可以在部分和缓冲器410中作为部分和被缓冲。
图3示出了根据本发明的矢量处理器在神经网络计算中的应用实例。
如图3所示,神经网络300包括输入层301、隐藏层302和输出层303。神经网络300可以由软件、硬件或其组合来实现。输入层301包括3个神经单元301a-301c,隐藏层302包括3个神经单元302a-302d,并且输出层包303包括2个神经单元303a-303b。在此应当指出,所述层数目和神经单元的数目仅仅是示意性的,在其它实施例中,可以存在不同数目的层和神经单元。在神经网络300中,每个神经单元都对来自上一层的多个神经单元的多个输出数据进行加权求和(乘加),即将每个输出数据乘以某个系数以后再求和。上述乘加运算可以通过布置在相邻两层之间(或每个神经单元处)的根据本发明的矢量处理器100来执行,从而在存储器内实现了神经网络的主要计算,降低了其软硬件成本。在此,示例性地在隐藏层302与输出层303之间布置有矢量处理器100,从而将隐藏层302的每个神经单元302a-302b的相应向量与输出层303的每个神经单元处的相应加权矩阵相乘以后再求和以获得输出向量,所述输出向量然后在被输送给输出层303的神经单元303a-303b。
本发明至少具有下列有益效果:
·电路相对简单,设计面积较传统未明显增加。
·由于两种不同的运算模块相互独立,中间可加入不同级(stage)的流水线缓冲器以用于提高(单核)芯片的整体吞吐量。
·整个神经网络加速任务都可以在根据本发明的存储器内完成,无需片外的计算资源去完成神经网络中非矩阵乘法的部分,从而大幅度提高神经网络的计算速度和效率。
·可以方便地以向量为基本操作单位,使软件编程更加方便。
·用于设计神经网络、机器学习的专用芯片时,向量的加法往往也占有很大的计算量,直接利用同片上集成的向量加法,可以大大提高执行的空间连续性。
·以向量为运算单位,减少软件上可能的循环(loop):利用内置功能来处理数据,而不是使用循环之类的构造。
虽然本发明的一些实施方式已经在本申请文件中予以了描述,但是本领域技术人员能够理解,这些实施方式仅仅是作为示例示出的。本领域技术人员在本发明的教导下可以想到众多的变型方案、替代方案和改进方案而不超出本发明的范围。所附权利要求书旨在限定本发明的范围,并由此涵盖这些权利要求本身及其等同变换的范围内的方法和结构。
Claims (12)
1.一种基于存算一体存储器的矢量处理器,包括:
乘法存算一体模块,其被配置为计算第一输入向量X与第一输入矩阵W的乘积,所述乘积为第一输出向量Y’;以及
加法模块,其被配置为将第一输入向量X或第一输出向量Y’与第二输入向量B相加。
2.根据权利要求1所述的矢量处理器,还包括存储控制器,所述存储控制器被配置为执行下列动作中的一个或多个:
启用乘法存算一体模块并停用加法模块以进入乘法模式,其中在乘积模式下,计算第一输入向量X与第一输入矩阵W的乘积Y’:
Y’=XW;
启用乘法存算一体模块并启用加法模块以进入乘加模式,其中在乘加模式下,计算所述乘积与第二输入向量B之和Y:
Y=XW+B;以及
停用乘法存算一体模块并启用加法模块以进入加法模式,其中在加法模式下,计算第一输入向量X与第二输入向量B之和Y”:
Y”=X+B。
3.根据权利要求2所述的矢量处理器,其中所述加法模块和所述乘法存算一体模块一起集成在所述矢量处理器中并且与所述控制器直接通信。
4.根据权利要求1所述的矢量处理器,其中乘法存算一体模块包括:
行和列形式的存储器内处理PIM块阵列,每个存储器内处理PIM块都被配置为处于计算模式或存储器模式;
控制器,其被配置为将PIM块阵列划分为:第一组PIM块,每个PIM块都被配置为处于存储器模式;以及第二组PIM块,每个PIM块都被配置为处于计算模式,其中第一组PIM块被配置为存储第一输入向量X,并且第二组PIM块被配置为存储第一输入矩阵W并且基于第一输入向量X和第二矩阵计算第三向量的部分和;以及
累加器,其被配置为基于第三矩阵的部分和输出所述乘积。
5.根据权利要求1所述的矢量处理器,其中所述加法模块包括多个加法器以并行地执行第一输入向量X或所述乘积的相应元素与第二输入向量B的相应元素的加法。
6.根据权利要求2所述的矢量处理器,还包括:
寄存器,其与乘法存算一体模块和/或加法模块具有数据通信连接,并且被配置为:
在乘法模式下,存储第一输入向量X和第一输入矩阵W并输送给乘法存算一体模块;
在乘加模式下,存储第一输入向量X、第一输入矩阵W以及第二输入向量B并输送给乘法存算一体模块和加法模块;以及
在加法模式下,存储第一输入向量X和第二输入向量B并输送给加法模块。
7.一种用于神经网络计算的电路,包括:
多个层,每个层包括多个神经单元;以及
根据权利要求1至6之一所述的矢量处理器,所述矢量处理器被配置为从第一层的神经单元接收输入数据X0并且计算输出数据Y以作为与第一层相邻的第二层的神经单元的输入数据。
8.一种用于运行根据权利要求1至6之一所述的矢量处理器的方法,包括下列步骤:
由存储控制器启用乘法存算一体模块并停用加法模块以进入乘法模式,其中在乘积模式下,由乘法存算一体模块计算第一输入向量X与第一输入矩阵W的乘积Y’:
Y’=XW;
由存储控制器启用乘法存算一体模块并启用加法模块以进入乘加模式,其中在乘加模式下,由乘法存算一体模块计算第一输入向量X与第一输入矩阵W的乘积并由加法模块计算所述乘积与第二输入向量B之和Y:
Y=XW+B;以及
由存储控制器停用乘法存算一体模块并启用加法模块以进入加法模式,其中在加法模式下,由加法模块计算第一输入向量X与第二输入向量B之和Y”:
Y”=X+B。
9.根据权利要求8所述的方法,还包括下列步骤:
由寄存器在乘法模式下存储第一输入向量X和第一输入矩阵W并输送给乘法存算一体模块;
由寄存器在乘加模式下存储第一输入向量X、第一输入矩阵W以及第二输入向量B并输送给乘法存算一体模块和加法模块;以及
由寄存器在加法模式下存储第一输入向量X和第二输入向量B并输送给加法模块。
10.一种用于在神经网络中进行数据处理的方法,包括:
从神经网络的第一层接收第一输入向量X;
将第一输入向量X输入到乘法存算一体模块中,其中在乘法存算一体模块中存储有权重矩阵W;
由乘法存算一体模块计算第一输入向量X与权重矩阵W的乘积,所述乘积为第一输出向量Y’;以及
将第一输出向量Y’和偏置向量B输入到加法模块中;
由加法模块计算第一输出向量Y’与偏置向量B之和Y;以及
将所述和Y输入到神经网络的与第一层相邻的第二层。
11.根据权利要求10所述的方法,还包括下列步骤:
由寄存器存储第一输入向量X和偏置向量B。
12.根据权利要求10所述的方法,其中所述权重矩阵W包括多个子矩阵W1…Wn,其中n为自然数,该方法还包括下列步骤:
由乘法存算一体模块计算第一输入向量X与子矩阵W1的乘积,所述乘积为第一输出分向量Y1;
由乘法存算一体模块计算第一输入向量X与子矩阵W2的乘积,所述乘积为第二输出分向量Y2;
将第一输出向量Y1和第二分向量Y2输入到加法模块中;
由加法模块计算第一输出向量Y1与第二分向量Y2之和Y以作为偏置向量B;
由乘法存算一体模块计算第一输入向量X与子矩阵W3的乘积,所述乘积为第三输出分向量Y3;
将第三输出分向量Y3和偏置向量B输入到加法模块中;以及
由加法模块计算第三输出分向量Y3与偏置向量B之和Y并更新偏置向量B。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187585.4A CN114443146A (zh) | 2020-10-30 | 2020-10-30 | 基于存算一体存储器的矢量处理器及其运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187585.4A CN114443146A (zh) | 2020-10-30 | 2020-10-30 | 基于存算一体存储器的矢量处理器及其运行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443146A true CN114443146A (zh) | 2022-05-06 |
Family
ID=81357600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011187585.4A Pending CN114443146A (zh) | 2020-10-30 | 2020-10-30 | 基于存算一体存储器的矢量处理器及其运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114443146A (zh) |
-
2020
- 2020-10-30 CN CN202011187585.4A patent/CN114443146A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645224B2 (en) | Neural processing accelerator | |
US5509106A (en) | Triangular scalable neural array processor | |
US11487845B2 (en) | Convolutional operation device with dimensional conversion | |
AU2008202591A1 (en) | High speed and efficient matrix multiplication hardware module | |
US11769040B2 (en) | Scalable multi-die deep learning system | |
US10853034B2 (en) | Common factor mass multiplication circuitry | |
US5065339A (en) | Orthogonal row-column neural processor | |
EP3966693A1 (en) | Control flow barrier and reconfigurable data processor | |
JP6003744B2 (ja) | 演算処理装置及び演算処理方法 | |
Chalamalasetti et al. | MORA-an architecture and programming model for a resource efficient coarse grained reconfigurable processor | |
US11256979B2 (en) | Common factor mass multiplication circuitry | |
US11934482B2 (en) | Computational memory | |
WO2017007318A1 (en) | Scalable computation architecture in a memristor-based array | |
KR20230155417A (ko) | 하드웨어에서의 희소 행렬 곱셈 | |
Campbell et al. | 3D wafer stack neurocomputing | |
JP2005531843A (ja) | アレイプロセッサにおける除算 | |
US11016822B1 (en) | Cascade streaming between data processing engines in an array | |
CN114443146A (zh) | 基于存算一体存储器的矢量处理器及其运行方法 | |
JP2023542261A (ja) | 複数のアキュムレータを有するシストリックアレイセル | |
Yamada et al. | Folded fat H-tree: An interconnection topology for dynamically reconfigurable processor array | |
KR20230079496A (ko) | 계산 칩, 해시 보드 및 데이터 처리 장치 | |
Kim et al. | An Asynchronous Inter-Processor Communication Based, Input Recycling Parallel Architecture for Large Scale Neural Network Simulation | |
CN220569161U (zh) | 可调适存储器内运算电路 | |
US11995027B2 (en) | Neural processing accelerator | |
Pechanek et al. | An introduction to an array memory processor for application specific acceleration |
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 |