CN117851744A - 矩阵运算电路、处理器、集成电路系统、电子组件及设备 - Google Patents
矩阵运算电路、处理器、集成电路系统、电子组件及设备 Download PDFInfo
- Publication number
- CN117851744A CN117851744A CN202410257138.3A CN202410257138A CN117851744A CN 117851744 A CN117851744 A CN 117851744A CN 202410257138 A CN202410257138 A CN 202410257138A CN 117851744 A CN117851744 A CN 117851744A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- unit
- circuit
- column
- 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
- 239000011159 matrix material Substances 0.000 title claims abstract description 501
- 239000000872 buffer Substances 0.000 claims abstract description 149
- 238000007906 compression Methods 0.000 claims abstract description 132
- 230000006835 compression Effects 0.000 claims abstract description 132
- 230000005540 biological transmission Effects 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 17
- 230000003139 buffering effect Effects 0.000 claims description 16
- 238000009825 accumulation Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 10
- 238000012549 training Methods 0.000 abstract description 3
- 238000013144 data compression Methods 0.000 abstract description 2
- 230000006837 decompression Effects 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 18
- 238000000034 method Methods 0.000 description 11
- 230000001133 acceleration Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 2
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 1
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供一种矩阵运算电路、处理器、集成电路系统、电子组件及设备,旨在支持二维、三维硬件点乘(或乘加)运算的同时实现稀疏压缩。其中,矩阵运算电路通过M×N个运算单元实现A矩阵(M×K1矩阵)与B矩阵(K1×N矩阵)的点乘运算(或者乘加运算),通过M×N个压缩缓存单元实现稀疏矩阵压缩。其通用性强,可以适用于GPU、NPU和ASIC等芯片,电路实现简单,不需要复杂数据压缩、解压缩,也不需要输入输出索引及复杂的数据搬移。另外,无需预训练和数据处理,可以同时对参与运算的A矩阵和B矩阵进行硬件级的矩阵稀疏压缩。
Description
技术领域
本公开涉及集成电路技术领域,尤其涉及一种矩阵运算电路、处理器、集成电路系统、电子组件及电子设备。
背景技术
矩阵乘和矩阵乘加运算在人工智能与高性能计算领域得到广泛应用。例如,卷积神经网络的卷积计算可转化为矩阵乘或矩阵乘加运算,又例如,transformer神经网络中也大量使用矩阵乘或矩阵乘加运算。
特别是在人工智能计算领域,矩阵具有一定的稀疏性,即矩阵的某些元素为0值。存储和计算这些0值数据是无效的,故在矩阵乘或矩阵乘加运算过程中,通过稀疏压缩可提升矩阵乘或矩阵乘加计算单元的利用率,从而提高计算速率并有效降低功耗。
目前,一种对有稀疏性的矩阵进行稀疏压缩的常用方式是采用软件方式对矩阵进行压缩后再进行计算,这种方式不适用于二维、三维高速乘加电路。另一种常用方式通过细粒度结构化稀疏将训练好的网络权重裁剪为稀疏度固定为50%的稀疏矩阵,但此方式需要提前对网络进行专门的训练处理,且对于原本稀疏度小于50%的矩阵,其加速效果并不理想。
发明内容
本公开的目的是提供一种电路结构简单的矩阵运算电路、处理器、集成电路系统、电子组件及电子设备,以支持在二维、三维硬件点乘(或乘加)运算的同时实现稀疏压缩。
根据本公开的一个方面,提供一种矩阵运算电路,该矩阵运算电路包括M×N个运算单元和M×N个压缩缓存单元。第(i,j)个压缩缓存单元用于缓存A矩阵的第i行数据和B矩阵的第j列数据,丢弃0值数据对以实现对上述第i行数据和上述第j列数据的压缩,以K2个数据对/时钟周期的速度向第(i,j)个运算单元输出压缩后的第i行数据和第j列数据,其中,A矩阵为M×K1矩阵,B矩阵为K1×N矩阵,K2为运算单元一个时钟周期内可以处理的数据对数量。第(i,j)个运算单元用于通过至少一个时钟周期对上述压缩后的第i行数据和第j列数据执行点乘运算。
本公开实施例提供的矩阵运算电路支持矩阵的点乘运算,进一步的,本公开实施例提供的矩阵运算电路还可以支持矩阵的乘加运算。如果矩阵运算电路支持矩阵的乘加运算,那么,第(i,j)个压缩缓存单元还用于缓存C矩阵的元素数据cij,第(i,j)个运算单元还用于对点乘运算结果与元素数据cij执行加法运算。
本公开实施例中,无论支持点乘运算的矩阵运算电路,还是支持乘加运算的矩阵运算电路,可选的,一笔运算在第(i,j)个运算单元的运算结束,第(i,j)个运算单元和第(i,j)个压缩缓存单元的时钟关闭,直至下一笔运算开始。
第(i,j)个压缩缓存单元查找0值数据对的实现方式可以有多种。在上述矩阵运算电路的任一实施例基础上,一种可行的实现方式中,第(i,j)个压缩缓存单元根据第一位图查找0值数据对,其中,第一位图用于标记数据对的取值是否为0。另一种可行的实现方式中,第(i,j)个压缩缓存单元根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,其中,第二位图用于标记A矩阵的第i行各个元素数据是否为0,或者,第二位图用于标记B矩阵的第j列各个元素数据是否为0。又一种可行的实现方式中,第(i,j)个压缩缓存单元直接识别缓存的A矩阵的第i行的各个元素数据是否存在0值,和/或缓存的B矩阵的第j列的各个元素数据是否存在0值,0值元素数据对应的数据对即为0值数据对。
如果运算单元一个时钟周期内可以处理的数据K2对数量小于K1,那么运算单元可能无法在一个时钟周期内完成A矩阵的第i行数据和B矩阵第j列数据的点乘运算。为应对这种情况,在上述矩阵运算电路的任一实施例基础上,第(i,j)个运算单元包括数据累加模块,用于累加上述压缩后的第i行数据和第j列数据的点乘运算在上述至少一个时钟周期的运算结果。
在上述矩阵运算电路的任一实施例基础上,矩阵运算电路可以包括M条行广播总线,第i条行广播总线与用于缓存上述第i行数据的N个压缩缓存单元通信,用于向N个压缩缓存单元广播上述第i行数据;矩阵运算电路还可以包括N条列广播总线,第j条列广播总线与用于缓存上述第j列数据的M个压缩缓存单元通信,用于向M个压缩缓存单元广播上述第j列数据。
在上述矩阵运算电路的任一实施例基础上,矩阵运算电路还可以包括输入缓存单元,用于缓存待进行矩阵运算的矩阵的数据。
在上述矩阵运算电路的任一实施例基础上,矩阵运算电路还可以包括译码单元,用于根据矩阵运算指示生成数据传输控制信息和运算控制信息,运算控制信息用于控制运算单元工作以完成矩阵运算指示。
在上述矩阵运算电路的任一实施例基础上,矩阵运算电路还可以包括矩阵取数与送数单元,用于根据数据传输控制信息,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入压缩缓存单元。
根据本公开的另一方面,本公开提供一种矩阵运算电路,包括至少两个矩阵运算子电路,每个矩阵运算子电路包括M×N个运算单元和M×N个压缩缓存单元。其中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元用于缓存An矩阵的第i行数据和Bn矩阵的第j列数据,丢弃0值数据对以实现对上述第i行数据和上述第j列数据的压缩,以K2n个数据对/时钟周期的速度向第n个矩阵运算子电路的第(i,j)个运算单元输出压缩后的第i行数据和第j列数据,An矩阵为M×K1n矩阵,Bn矩阵为K1n×N矩阵,K2n为第n个矩阵运算子电路的运算单元一个时钟周期内可以处理的数据对数量;第n个矩阵运算子电路的第(i,j)个运算单元用于通过至少一个时钟周期对上述压缩后的第i行数据和第j列数据执行点乘运算。上述至少两个矩阵运算子电路通过连接单元连接,以实现上述至少两个矩阵运算子电路的运算结果相加。
本公开实施例提供的矩阵运算电路支持矩阵的点乘运算,进一步的,本公开实施例提供的矩阵运算电路还可以支持矩阵的乘加运算。如果矩阵运算电路支持矩阵的乘加运算,那么,第n个矩阵运算子电路的第(i,j)个压缩缓存单元还用于缓存C矩阵的元素数据cij,第n个矩阵运算子电路的第(i,j)个运算单元还用于对点乘运算结果与元素数据cij执行加法运算。
本公开实施例中,无论支持点乘运算的矩阵运算电路,还是支持乘加运算的矩阵运算电路,可选的,一笔运算在第n个矩阵运算子电路的第(i,j)个运算单元的运算结束,第n个矩阵运算子电路的第(i,j)个运算单元和第n个矩阵运算子电路的第(i,j)个压缩缓存单元的时钟关闭,直至下一笔运算开始。
压缩缓存单元查找0值数据对的实现方式可以有多种。在上述第二方面的矩阵运算电路的任一实施例基础上,一种可行的实现方式中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元根据第一位图查找0值数据对,其中,第一位图用于标记数据对的取值是否为0。另一种可行的实现方式中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,其中,第二位图用于标记An矩阵的第i行各个元素数据是否为0,或者,第二位图用于标记Bn矩阵的第j列各个元素数据是否为0。又一种可行的实现方式中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元直接识别缓存的An矩阵的第i行的各个元素数据是否存在0值,和/或缓存的Bn矩阵的第j列的各个元素数据是否存在0值,0值元素数据对应的数据对即为0值数据对。
如果第n个矩阵运算子电路的运算单元一个时钟周期内可以处理的数据K2对数量小于K1,那么第n个矩阵运算子电路的运算单元可能无法在一个时钟周期内完成An矩阵的第i行数据和Bn矩阵第j列数据的点乘运算。为应对这种情况,在上述第二方面的矩阵运算电路的任一实施例基础上,第n个矩阵运算子电路的第(i,j)个运算单元包括数据累加模块,用于累加上述压缩后的第i行数据和第j列数据的点乘运算在上述至少一个时钟周期的运算结果。
在上述第二方面的矩阵运算电路的任一实施例基础上,一种可行的实现方式中,矩阵运算电路还可以包括M条行广播总线和/或N条列广播总线。第i条行广播总线与各个矩阵运算子电路的用于缓存An矩阵的第i行数据的压缩缓存单元通信,用于向该压缩缓存单元广播A矩阵的第i行数据,A矩阵的第i行数据包括各个An矩阵的第i行数据。第j条列广播总线与各个矩阵运算子电路的用于缓存Bn矩阵的第j列数据的压缩缓存单元通信,用于向该压缩缓存单元广播B矩阵的第j列数据,B矩阵的第j列数据包括各个Bn矩阵的第j列数据。另一种可行的实现方式中,每个矩阵运算子电路可以包括M条行广播总线和/或N条列广播总线。第i条行广播总线与用于缓存An矩阵的第i行数据的N个压缩缓存单元通信,用于向这N个压缩缓存单元广播该第i行数据。第j条列广播总线与用于缓存Bn矩阵的第j列数据的M个压缩缓存单元通信,用于向这M个压缩缓存单元广播该第j列数据。
在上述第二方面的矩阵运算电路的任一实施例基础上,矩阵运算电路还可以包括以下至少一个单元:
输入缓存单元,用于缓存待进行矩阵运算的矩阵的数据;
译码单元,用于根据矩阵运算指示生成数据传输控制信息和运算控制信息,运算控制信息用于控制运算单元工作以完成矩阵运算指示;
矩阵取数与送数单元,用于根据数据传输控制信息,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入压缩缓存单元。
根据本公开的另一方面,本公开提供一种处理器,该处理器包括上述任一实施例所述的矩阵运算电路。
根据本公开的另一方面,提供一种集成电路系统,包括上述任一实施例所述的矩阵运算电路。
根据本公开的另一方面,提供一种电子组件,包括上述实施例所述的处理器和/或上述实施例所述的集成电路系统。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例所述的电子组件。
附图说明
图1为本公开一个实施例提供的矩阵运算电路的结构示意图;
图2为本公开一个实施例提供的三维乘加单元的结构示意图;
图3为本公开一个实施例提供的DOT单元的结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种矩阵运算电路,可实现二维、三维矩阵点乘(或矩阵乘加运算)运算,并支持硬件级的矩阵稀疏压缩。具体的,可以通过M×N个运算单元实现A矩阵(M×K1矩阵)与B矩阵(K1×N矩阵)的点乘运算(或者可以通过M×N个运算单元实现(A矩阵×B矩阵)+C矩阵(M×N矩阵)这样的乘加运算),通过M×N个压缩缓存单元实现稀疏矩阵压缩。本公开实施例提供的矩阵运算电路通用性强,可以适用于GPU(Graphics ProcessingUnit,图形处理器)、NPU(Neural network Processing Unit,神经网络处理器)和ASIC(Application Specific Integrated Circuit)等芯片。并且,电路实现简单,不需要复杂数据压缩、解压缩,也不需要输入输出索引及复杂的数据搬移。另外,无需预训练和数据处理,可以同时对参与运算的A矩阵和B矩阵进行硬件级的矩阵稀疏压缩。
本公开的一个实施例提供一种矩阵运算电路,该矩阵运算电路至少包括M×N个运算单元和M×N个压缩缓存单元。可选的,该矩阵运算电路还包括以下至少一个单元:输入缓存单元、译码单元、矩阵取数与送数单元。
输入缓存单元用于缓存待进行矩阵运算的矩阵的数据;译码单元用于根据矩阵运算指示生成数据传输控制信息和运算控制信息,运算控制信息用于控制运算单元工作以完成矩阵运算指示;矩阵取数与送数单元用于根据数据传输控制信息,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入压缩缓存单元。
第(i,j)个压缩缓存单元用于缓存A矩阵的第i行数据和B矩阵的第j列数据,丢弃0值数据对以实现对上述第i行数据和上述第j列数据的压缩,以K2个数据对/时钟周期的速度向第(i,j)个运算单元输出压缩后的第i行数据和第j列数据。
第(i,j)个运算单元用于通过至少一个时钟周期对上述压缩后的第i行数据和第j列数据执行点乘运算。
其中,A矩阵为M×K1矩阵,B矩阵为K1×N矩阵,K2为运算单元一个时钟周期内可以处理的数据对数量。M、N、K1和K2均为大于1的正整数。
实际应用中,K2的取值往往是固定的,受限于运算单元的处理能力,但K1的取值是可变的。假设有4×4个运算单元和4×4个压缩缓存单元,运算单元在一个时钟周期内可以处理的数据对数量是2(即K2取值为2)。那么,4×4个运算单元在一个时钟周期内可以完成4×2矩阵与2×4矩阵的点乘,当然,也可以在一个时钟周期内完成更小矩阵的点乘,在多个时钟周期内可以完成更大矩阵的点乘。
如果运算单元一个时钟周期内可以处理的数据K2对数量小于K1,那么运算单元可能无法在一个时钟周期内完成A矩阵的第i行数据和B矩阵第j列数据的点乘运算。为应对这种情况,一种可行的解决方式是,第(i,j)个运算单元包括数据累加模块,用于累加上述压缩后的第i行数据和第j列数据的点乘运算在上述至少一个时钟周期的运算结果。另一种可行的解决方式是,矩阵运算电路还包括累加单元,用于分别累加一笔运算中各个运算单元在上述至少一个时钟周期的点乘运算结果。应当指出的是,本公开对一笔运算中运算单元在上述至少一个时钟周期的点乘运算结果累加的具体实现方式不做限定,实际芯片设计过程中,可以根据实际情况及需求确定其硬件实现方式。
本公开实施例中,压缩缓存单元丢弃0值数据对的实现方式有多种。可以采用删除0值数据对的方式实现丢弃0值数据对,也可以采用不向计算单元发送0值数据对的方式实现丢弃0值数据对。如果不向计算单元发送0值数据对,更具体的,可以在查找到0值数据对后,对其进行标记,在向计算单元发送数据对时,不发送标记为0值的数据对。也可以同步查找0值数据对及向计算单元发送压缩后的数据对,即按顺序遍历数据对,每遍历一个数据对,判断其是否0值数据对,如果不是0值,则将数据对发送给计算单元,否则不发送。
无论采用何种方式丢弃0值数据对,第(i,j)个压缩缓存单元查找0值数据对的实现方式可以有多种。一种可行的实现方式中,第(i,j)个压缩缓存单元根据第一位图查找0值数据对,其中,第一位图用于标记数据对的取值是否为0。另一种可行的实现方式中,第(i,j)个压缩缓存单元根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,其中,第二位图用于标记A矩阵的第i行各个元素数据是否为0,或者,第二位图用于标记B矩阵的第j列各个元素数据是否为0。又一种可行的实现方式中,第(i,j)个压缩缓存单元直接识别缓存的A矩阵的第i行的各个元素数据是否存在0值,0值元素数据对应的数据对即为0值数据对。又一种可行的实现方式中,第(i,j)个压缩缓存单元直接识别缓存的A矩阵的第i行的各个元素数据是否存在0值,以及缓存的B矩阵的第j列的各个元素数据是否存在0值,0值元素数据对应的数据对即为0值数据对。又一种可行的实现方式中,第(i,j)个压缩缓存单元直接识别缓存的B矩阵的第j列的各个元素数据是否存在0值,0值元素数据对应的数据对即为0值数据对。
如上所述,本公开实施例提供的矩阵运算电路支持矩阵的点乘运算,进一步的,本公开实施例提供的矩阵运算电路还可以支持矩阵的乘加运算。如果矩阵运算电路支持矩阵的乘加运算,那么,第(i,j)个压缩缓存单元还用于缓存C矩阵的元素数据cij,第(i,j)个运算单元还用于对A矩阵第i行数据与B矩阵的第j列数据的点乘运算结果与元素数据cij执行加法运算。
本公开实施例中,无论仅支持点乘运算的矩阵运算电路,还是支持乘加运算的矩阵运算电路,优选的,一笔运算在第(i,j)个运算单元的运算结束,第(i,j)个运算单元和第(i,j)个压缩缓存单元的时钟关闭,直至下一笔运算开始,从而进一步降低功耗。其中,一笔运算是指矩阵的点乘运算(例如A矩阵与B矩阵的点乘运算即一笔运算),或矩阵的乘加运算(例如A矩阵与B矩阵点乘运算的结果与C矩阵进行加法运算,这样的乘加运算作为一笔运算)。
上述各个实施例中,可以通过广播的方式向压缩缓存单元输送待缓存压缩的数据。相应的,M×N个压缩缓存单元对应有M条行广播总线和N条列广播总线。第i条行广播总线与用于缓存A矩阵的第i行数据的N个压缩缓存单元通信,用于向N个压缩缓存单元广播A矩阵的第i行数据。第j条列广播总线与用于缓存B矩阵的第j列数据的M个压缩缓存单元通信,用于向M个压缩缓存单元广播B矩阵的第j列数据。当然,也可以采用其他通信方式向压缩缓存单元输送待缓存压缩的数据,例如,可以通过点对点的传输方式实现数据传输,本公开对此不作限定。
本公开的另一个实施例提供一种矩阵运算电路,该矩阵运算电路包括至少两个矩阵运算子电路,每个矩阵运算子电路至少包括M×N个运算单元和M×N个压缩缓存单元,上述至少两个矩阵运算子电路通过连接单元连接,以实现上述至少两个矩阵运算子电路的运算结果相加。可选的,该矩阵运算电路还包括以下至少一个单元:输入缓存单元、译码单元、矩阵取数与送数单元。
输入缓存单元用于缓存待进行矩阵运算的矩阵的数据;译码单元用于根据矩阵运算指示生成数据传输控制信息和运算控制信息,运算控制信息用于控制运算单元工作以完成矩阵运算指示;矩阵取数与送数单元用于根据数据传输控制信息,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入压缩缓存单元。
第n个矩阵运算子电路的第(i,j)个压缩缓存单元用于缓存An矩阵的第i行数据和Bn矩阵的第j列数据,丢弃0值数据对以实现对上述第i行数据和上述第j列数据的压缩,以K2n个数据对/时钟周期的速度向第n个矩阵运算子电路的第(i,j)个运算单元输出压缩后的第i行数据和第j列数据。
第n个矩阵运算子电路的第(i,j)个运算单元用于通过至少一个时钟周期对上述压缩后的第i行数据和第j列数据执行点乘运算。
其中,An矩阵为M×K1n矩阵,Bn矩阵为K1n×N矩阵,K2n为第n个矩阵运算子电路的运算单元一个时钟周期内可以处理的数据对数量。M、N、K1n、和K2n均为大于1的正整数。
实际应用中,各个矩阵运算子电路对应的K2n取值往往是固定的,受限于运算单元的处理能力,不同矩阵运算子电路对应的K2n的取值可以相同,也可以不同,本公开对此不作限定。每个矩阵运算子电路对应的K2n和K1n的取值说明可以参照上述实施例中K2和K1的取值,此处不再赘述。
如果第n个矩阵运算子电路的运算单元一个时钟周期内可以处理的数据K2n对数量小于K1n,那么第n个矩阵运算子电路的运算单元可能无法在一个时钟周期内完成An矩阵的第i行数据和Bn矩阵第j列数据的点乘运算。为应对这种情况,一种可行的解决方式是,第n个矩阵运算子电路的第(i,j)个运算单元包括数据累加模块,用于累加上述压缩后的第i行数据和第j列数据的点乘运算在上述至少一个时钟周期的运算结果。
第n个矩阵运算子电路的第(i,j)个压缩缓存单元查找0值数据对的实现方式可以有多种。一种可行的实现方式中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元根据第一位图查找0值数据对,其中,第一位图用于标记数据对的取值是否为0。另一种可行的实现方式中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,其中,第二位图用于标记An矩阵的第i行各个元素数据是否为0,或者,第二位图用于标记Bn矩阵的第j列各个元素数据是否为0。又一种可行的实现方式中,第n个矩阵运算子电路的第(i,j)个压缩缓存单元直接识别缓存的An矩阵的第i行的各个元素数据是否存在0值,和/或缓存的Bn矩阵的第j列的各个元素数据是否存在0值,0值元素数据对应的数据对即为0值数据对。
如上所述,本公开实施例提供的矩阵运算电路支持矩阵的点乘运算,进一步的,本公开实施例提供的矩阵运算电路还可以支持矩阵的乘加运算。如果矩阵运算电路支持矩阵的乘加运算,那么,第n个矩阵运算子电路的第(i,j)个压缩缓存单元还用于缓存C矩阵的元素数据cij,第n个矩阵运算子电路的第(i,j)个运算单元还用于对点乘运算结果与元素数据cij执行加法运算。
本公开实施例中,无论支持点乘运算的矩阵运算电路,还是支持乘加运算的矩阵运算电路,可选的,一笔运算在第n个矩阵运算子电路的第(i,j)个运算单元的运算结束,第n个矩阵运算子电路的第(i,j)个运算单元和第n个矩阵运算子电路的第(i,j)个压缩缓存单元的时钟关闭,直至下一笔运算开始,从而进一步降低功耗。
在上述包括矩阵运算子电路的矩阵运算电路的任一实施例中,可以通过广播的方式向压缩缓存单元输送待缓存压缩的数据。相应的,一种可行的实现方式中,矩阵运算电路还可以包括M条行广播总线和/或N条列广播总线。第i条行广播总线与各个矩阵运算子电路的用于缓存An矩阵的第i行数据的压缩缓存单元通信,用于向该压缩缓存单元广播A矩阵的第i行数据,A矩阵的第i行数据包括各个An矩阵的第i行数据。第j条列广播总线与各个矩阵运算子电路的用于缓存Bn矩阵的第j列数据的压缩缓存单元通信,用于向该压缩缓存单元广播B矩阵的第j列数据,B矩阵的第j列数据包括各个Bn矩阵的第j列数据。另一种可行的实现方式中,每个矩阵运算子电路可以包括M条行广播总线和/或N条列广播总线。第i条行广播总线与用于缓存An矩阵的第i行数据的N个压缩缓存单元通信,用于向这N个压缩缓存单元广播该第i行数据。第j条列广播总线与用于缓存Bn矩阵的第j列数据的M个压缩缓存单元通信,用于向这M个压缩缓存单元广播该第j列数据。
本公开的另一个实施例提供一种矩阵运算电路,如图1所示,该矩阵运算电路包括输入缓存单元、译码单元、矩阵取数与送数单元和三维乘加网络。
输入缓存单元用于缓存待进行矩阵运算的矩阵的数据。假设需要使用图1所示的矩阵运算电路完成A矩阵与B矩阵的矩阵乘运算,那么,A矩阵和B矩阵将被缓存到输入缓存单元。
译码单元用于根据接收到的矩阵运算指示生成数据传输控制信息和运算控制信息,其中,运算控制信息用于控制三维乘加网络工作以完成矩阵运算指示。其中,矩阵运算指示可以是矩阵运算命令(如ASIC使用的命令),也可以是矩阵运算指令(如SIMD处理器指令)。例如,译码单元接收到矩阵乘命令,指示矩阵运算电路执行A矩阵×B矩阵的矩阵乘运算,译码单元基于该矩阵乘命令生成数据传输控制信息和运算控制信息,将数据传输控制信息发送给矩阵取数与送数单元,以指示矩阵取数与送数单元读取矩阵乘命令对应的数据送入三维乘加网络,将运算控制信息发送给三维乘加网络,以指示三维乘加网络执行矩阵乘法运算。
矩阵取数与送数单元用于根据上述数据传输控制信息,从输入缓存单元读取待进行矩阵运算的矩阵的数据送入压缩缓存单元。
三维乘加网络根据运算控制信息对输入数据进行矩阵乘(或矩阵乘加)运算。三维乘加网络包括至少一个三维乘加单元。如果三维乘加网络包括两个甚至更多的三维乘加单元,其中每个三维乘加单元可独立工作,另外,两个甚至更多的三维乘加单元还可以通过连接单元拼接为更大的三维乘加单元,从而实现对大尺寸矩阵乘计算。
单个三维乘加单元包括M×N个DOT单元(即运算单元)、M×N个压缩缓冲区(Compress Buffer,即压缩缓存单元)、M条行广播总线、N条列广播总线,以及M×N条输出数据总线,以4×4尺寸的三维乘加单元为例,如图2所示,单个三维乘加单元包括16个DOT单元、16个压缩缓冲区、4条行广播总线、4条列广播总线,以及16条输出数据总线。
本公开实施例中,三维乘加单元支持多种数据类型的矩阵运算,可以支持的数据类型包括但不仅限于:FP64、FP32、TF32、FP16、BF16、FP8、INT8等等。
一个DOT单元用于执行K个数据对(如K对浮点数,或K对整数)的点积运算。本公开不对DOT单元的具体结构及工作原理进行限定,作为举例而非限定,可以采用图3所示的DOT单元。图3所示的DOT单元为DOT8,执行A矩阵第i行与B矩阵第j列数据的点乘运算,并可将点乘运算结果与C矩阵的元素数据cij进行加法运算。本公开实施例中,需要进行点乘的A矩阵的一个元素数据与B矩阵的一个元素数据构成一个数据对。例如,ai0与b0j为一个数据对。如图3所示,DOT单元还包括累加寄存器(Accesum reg,即累加模块),用于对DOT单元的多次计算结果进行累加。第(i,j)个DOT单元通过输出数据线输出的结果即为运算结果矩阵D的对应元素dij。
采用图3所示的DOT单元实现的图2所示的三维乘加单元等效于128个MAC(multiply-accumulate)单元,每个时钟周期256个操作数,最快可以在一个时钟周期实现4×8矩阵与8×4矩阵相乘。
一个压缩缓冲区用于通过行广播总线接收A矩阵的一行数据,通过列广播总线接收B矩阵的一列数据,丢弃其中的0值数据对,实现对A矩阵该行数据及B矩阵该列数据的数据对压缩,将压缩后的数据对送入对应DOT单元。
应当指出的是,一个压缩缓冲区在一个时钟周期内可以接收并处理的数据量取决于其自身的处理能力以及行广播总线和列广播总线的传输带宽。因此,一个压缩模块可以在一个时钟周期内接收A矩阵的一行全部数据以及B矩阵的一列全部数据;也可以通过多个时钟周期接收A矩阵的一行全部数据以及B矩阵的一列全部数据,在一个时钟周期内仅接收B矩阵的一行部分数据以及B矩阵的一列部分数据。
结合图1至图3,以三维乘加网络仅包括一个4×4×8的三维乘加单元,实现4×32的A矩阵和32×4的B矩阵的矩阵乘法为例进行说明。
译码单元接收到矩阵乘命令,基于该矩阵乘命令生成数据传输控制信息(包括矩阵数据地址、矩阵尺寸等信息)和运算控制信息(包括矩阵数据类型,如FP32、FP16,矩阵运算类型,如矩阵乘、矩阵乘加),将数据传输控制信息发送给矩阵取数与送数单元,将运算控制信息发送给三维乘加网络,三维乘加网络的压缩缓冲区根据矩阵数据类型进行输入数据0值判断,并生成A_rowi_bitmap和B_colj_bitmap,DOT单元根据矩阵数据类型和矩阵运算类型执行对应计算。
矩阵取数与送数单元接收到数据传输控制信息后,从输入缓存单元中以行为单位读取A矩阵的数据并分别通过行广播总线发送给三维乘加网络中的压缩缓冲区,并从输入缓存单元中以列为单位读取B矩阵的数据并分别通过列广播总线发送给三维乘加网络中的压缩缓冲区。其中,A矩阵的第i行数据通过第i条行广播总线发送给三维乘加网络中与行广播总线通信的4个压缩缓冲区;B矩阵的第j列数据通过第j条列广播总线发送给三维乘加网络中与列广播总线通信的4个压缩缓冲区。本公开实施例中,A矩阵的一行数据包括A矩阵一行的全部元素数据,B矩阵的一列数据包括B矩阵一列的全部元素数据。
各个压缩缓冲区进行数据压缩,并将压缩后的数据送入DOT8进行运算。下面以压缩缓冲区00为例对其具体工作过程进行说明:压缩缓冲区00通过对应的行广播总线接收A矩阵的第0行数据(共32个元素数据),通过对应的列广播总线接收B矩阵的第0列数据(共32个元素数据)。其中,A矩阵第0行数据与B矩阵第0列数据中的对应元素数据组成数据对,例如,A矩阵第0行的第8个元素数据与B矩阵第0列的第8个元素数据组成数据对,每个数据对中的两个元素需要进行点乘运算。如果数据对中的至少一个元素数据取值为0,那么其点乘结果也为0。由于三维乘加单元在单位时钟周期内最多可处理8个数据对的点乘运算,但A矩阵一行(B矩阵一列)有32个数据对,因此,需要多个时钟周期才能完成一笔运算。通过识别丢弃0值数据对,可以压缩参与点乘运算的数据对数量,进而压缩一笔运算的处理时间,提高处理效率。本实施例中,压缩缓冲区通过activation_ij_bitmap(即第一位图)查找0值数据对并丢弃。
Activation_ij_bitmap由A_rowi_bitmap和B_colj_bitmap求与得到。A_rowi_bitmap和B_colj_bitmap即第二位图。A_rowi_bitmap标识A矩阵第i行对应元素数据是否为零,0表示对应元素数据为零;1表示对应元素数据非零。B_colj_bitmap标识B矩阵第j列对应元素数据是否为零,0表示对应元素数据为零;1表示对应元素数据非零。Activation_ij_bitmap标识A矩阵第0行与B矩阵第j列的各个数据对是否需要进行点乘计算,1表示需要计算,不压缩;0表示不需要计算,可压缩。
在其他可替代的实现方式中,压缩缓冲区也可以通过A_rowi_bitmap或B_colj_bitmap查找0值数据对并丢弃。以压缩缓冲区00通过A_row0_bitmap查找0值数据对为例,压缩缓冲区00遍历A_row0_bitmap中A矩阵第0行各个元素数据对应比特,如果取值为0,则丢弃A矩阵第0行中的对应元素数据以及B矩阵第0列中与该元素数据对应的元素数据。
A_rowi_bitmap和/或B_colj_bitmap可以提前由软件给出(如卷积计算的weight相当于矩阵B,对于特定的网络模型是相对固定的),也可以在矩阵数据搬运和压缩过程中由硬件电路(如压缩缓冲区)计算出来。Activation_ij_bitmap也可以由软件给出,或者由硬件电路根据已获得的A_rowi_bitmap和B_colj_bitmap计算得到。
以一更具体的示例来说明压缩缓冲区的工作方式。假设A矩阵第0行对应的A_row0_bitmap以及B矩阵第0列对应的B_col0_bitmap如下:
A矩阵第0行对应的A_row0_bitmap:
10110110010100011110101101101110
B矩阵第0列对应的B_col0_bitmap:
10110111011010011101001101101111
那么,压缩缓冲区00对应的Activation_00_bitmap:
10110110010000011100001101101110
压缩缓冲区00每个时钟周期对16个数据对进行压缩:
CLK0:
根据上述Activation_00_bitmap对以下16组数据对进行压缩处理a00b00,a01b10,a02b20,a03b30,a04b40,a05b50,a06b60,a07b70,a08b80,a09b90,a010b100,a011b110,a012b120,a013b130,a014b140,a015b150。
其中,a01b10,a04b40,a07b70,a08b80,a010b100,a011b110,a012b120,a013b130,a014b140均为0值数据对,不需要输出给DOT8。
CLK1:
根据上述Activation_00_bitmap对以下16组数据对进行压缩处理a016b160,a017b170,a018b180,a019b190,a020b200,a021b210,a022b220,a023b230,a024b240,a025b250,a026b260,a027b270,a028b280,a029b290,a030b300,a031b310。
其中,a018b180,a019b190,a020b200,a021b210,a024b240,a027b270,a031b310均为0值数据对,不需要输出给DOT8。
由于DOT8一个时钟周期仅可以处理8个数据对,因此压缩缓冲区00在每个时钟周期向DOT_00最多输出8个经压缩的数据对。其中:
CLK0:
a00b00,a02b20,a03b30,a05b50,a06b60,a09b90,a015b150。
CLK1:
a016b160,a017b170,a022b220,a023b230,a025b250,a026b260,a028b280,a029b290。
CLK2:
a030b300。
在没有压缩的情况下,DOT_00完成A矩阵第0行和B矩阵第0列的运算需要4个时钟周期,但经过压缩缓存单元的压缩处理,DOT_00仅需要3个时钟周期即可完成A矩阵第0行和B矩阵第0列的运算。
A矩阵与B矩阵的乘法运算是否能够通过压缩加速以及压缩加速的程度,取决于取值为1的比特位最多的activation_ij_bitmap。
如果activation_00_bitmap的对应bit=1最多,压缩缓冲区00丢弃的A、B元素对就越少,DOT_00需要计算的周期数就越多。当activation_00_bitmap所有bit全1时,无法加速。当activation_00_bitmap有一半的bit为0时,可以加速50%。
所有DOT单元分别通过至少一个时钟周期将送入的数据对进行点乘计算,每个DOT单元计算完成后生成完成标识,当三维乘加单元的所有DOT单元都计算完成时,本次矩阵乘命令完成,运算结果矩阵D写出。
由于不同压缩缓冲区的压缩程度不同,不同DOT单元完成对应行列运算所需要的时钟周期也不同。假设DOT_01只需要两个时钟周期即可完成A矩阵第0行与B矩阵第1列的运算,那么,在第三个时钟周期可以关闭DOT_01和压缩缓冲区00的时钟,以进一步降低功耗。
本公开不对DOT单元和压缩缓冲区的时钟控制方式进行限定,可采用现有时钟控制方式实现。作为举例而非限定,每个DOT单元完成计算后(如通过数据输出总线输出运算结果),会触发对应寄存器中的标志位置位为1,表示完成计算,当对应寄存器中有标志位未被置1,则当前完成计算的DOT单元及对应的缓冲压缩区的时钟关闭。当对应寄存器中的所有标志位均置为1,则重置寄存器。重置寄存器或下一个矩阵运算命令到达时,被关闭时钟的DOT单元及对应的压缩缓冲区的时钟被打开。
如果以上对采用一个4×4×8的三维乘加单元实现4×32的A矩阵和32×4的B矩阵的矩阵乘法的具体工作方式进行了说明。如果要利用其实现A矩阵×B矩阵+C矩阵的乘加运算,其乘法部分可参照上述实现方式,此处不再赘述,其加法部分实现方式如下:
矩阵取数与送数单元可以通过行广播总线或列广播总线将C矩阵的元素数据发送给三维乘加网络中的压缩缓冲区,而各个压缩缓冲区仅接收目标元素数据,例如压缩缓冲区00仅接收c00。矩阵取数与送数单元还可以通过点对点通讯方式向各个压缩缓冲区发送对应的C矩阵的元素数据。各个压缩缓冲区不需要对C矩阵的元素数据进行压缩处理,仅需要将C矩阵的元素数据发送给DOT单元,由DOT单元完成乘加运算。在另外的实现方式中,C矩阵的元素数据也可以由矩阵取数与送数单元直接发送给DOT单元。
结合图1至图3,以三维乘加网络包含两个4×4×8的三维乘加单元,实现4×64的A矩阵和64×4的B矩阵的矩阵乘法为例进行说明。
两个三维乘加单元通过连接单元连接,以实现两个三维乘加单元的运算结果相加。具体的,连接单元包括4×4个加法器或累加器,每个加法器或累加器用于实现两个三维乘加单元中对应DOT单元计算结果的相加。例如,两个三维乘加单元的DOT_00的数据输出总线均与加法器_00的输入端连接,加法器_00将两个三维乘加单元的DOT_00的运算结果进行加法运算后输出,作为运算结果D矩阵元素数据d00。
其中,两个三维乘加单元可以共用行广播总线和列广播总线,也可以采用独立的行广播总线和列广播总线。
在该实施例中,译码单元的工作方式可参照上述实施例的描述,此处不再赘述。矩阵取数与送数单元接收到数据传输控制信息后,从输入缓存单元中以行为单位读取A矩阵的数据并分别通过行广播总线发送给三维乘加网络中的压缩缓冲区,并从输入缓存单元中以列为单位读取B矩阵的数据并分别通过列广播总线发送给三维乘加网络中的压缩缓冲区。如果两个三维乘加单元共用行广播总线和列广播总线,那么,各个压缩缓冲区仅接收对应的数据,例如,第一个三维乘加单元的压缩缓冲区00,其仅接收A矩阵第0行前32个元素数据,以及B矩阵第0列前32个元素数据,第二个三维乘加单元的压缩缓冲区00,其仅接收A矩阵第0行后32个元素数据,以及B矩阵第0列后32个元素数据。如果两个三维乘加单元采用独立的行广播总线和列广播总线,那么,矩阵取数与送数单元分别通过两个三维乘加单元的行广播总线和列广播总线发送对应的矩阵元素数据,例如,通过第一个三维乘加单元的行广播总线向三维乘加单元发送A矩阵各行的前32个元素数据,通过第二个三维乘加单元的行广播总线向三维乘加单元发送A矩阵各行的后32个元素数据。
两个三维乘加单元的具体工作方式可以参照上述实施例的描述,此处不再赘述。
结合图1至图3,以三维乘加网络包含两个4×4×8的三维乘加单元,实现8×32的A矩阵和32×8的B矩阵的矩阵乘法为例进行说明。
在该实施例中,两个三维乘加单元并不需要连接单元进行运算结果的相加。两个三维乘加单元可以共用行广播总线和列广播总线,也可以采用独立的行广播总线和列广播总线。
A矩阵被拆分成A1矩阵和A2矩阵,B矩阵被拆分成B1矩阵和B2矩阵。其中,A1矩阵由A矩阵的前4行数据构成,A2矩阵由A矩阵的后4行数据构成,B1矩阵由B矩阵的前4列数据构成,B2矩阵由B矩阵的后4列数据构成。第一个三维乘加单元计算A1矩阵与B1矩阵的点乘,第二个三维乘加单元计算A2矩阵与B2矩阵的点乘,两个三维乘加单元的输出结果构成了运算结果D矩阵。
基于同样的发明构思,本公开实施例还提供一种处理器,该处理器包括上述任一实施例所述的矩阵运算电路。该处理器可以但不仅限于是GPU、NPU。
基于同样的发明构思,本公开实施例还提供一种集成电路系统,该集成电路系统包括上述任一实施例所述的矩阵运算电路。该集成电路系统可以但不仅限于是SOC(Systemon Chip,片上系统)芯片、ASIC芯片等。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中所述的处理器和/或上述任一实施例中所述的集成电路系统。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (17)
1.一种矩阵运算电路,包括M×N个运算单元和M×N个压缩缓存单元;
第(i,j)个压缩缓存单元用于缓存A矩阵的第i行数据和B矩阵的第j列数据,丢弃0值数据对以实现对所述第i行数据和所述第j列数据的压缩,以K2个数据对/时钟周期的速度向第(i,j)个运算单元输出压缩后的第i行数据和第j列数据,所述A矩阵为M×K1矩阵,所述B矩阵为K1×N矩阵,K2为所述运算单元一个时钟周期内可以处理的数据对数量;
第(i,j)个运算单元用于通过至少一个时钟周期对所述压缩后的第i行数据和第j列数据执行点乘运算。
2.根据权利要求1所述的矩阵运算电路,一笔运算在所述第(i,j)个运算单元的运算结束,所述第(i,j)个运算单元和所述第(i,j)个压缩缓存单元的时钟关闭,直至下一笔运算开始。
3.根据权利要求1所述的矩阵运算电路,所述第(i,j)个压缩缓存单元还用于:
根据第一位图查找0值数据对,所述第一位图用于标记数据对的取值是否为0;
或者,
根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,所述第二位图用于标记A矩阵的第i行各个元素数据是否为0或者用于标记B矩阵的第j列各个元素数据是否为0。
4.根据权利要求1至3任一项所述的矩阵运算电路,所述第(i,j)个压缩缓存单元还用于缓存C矩阵的元素数据cij;
所述第(i,j)个运算单元还用于对点乘运算结果与所述元素数据cij执行加法运算。
5.根据权利要求1至3任一项所述的矩阵运算电路,所述第(i,j)个运算单元包括数据累加模块,用于累加所述压缩后的第i行数据和第j列数据的点乘运算在所述至少一个时钟周期的运算结果。
6.根据权利要求1至3任一项所述的矩阵运算电路,还包括M条行广播总线和/或N条列广播总线;
第i条行广播总线与用于缓存所述第i行数据的N个压缩缓存单元通信,用于向所述N个压缩缓存单元广播所述第i行数据;
第j条列广播总线与用于缓存所述第j列数据的M个压缩缓存单元通信,用于向所述M个压缩缓存单元广播所述第j列数据。
7.根据权利要求1至3任一项所述的矩阵运算电路,还包括:
输入缓存单元,用于缓存待进行矩阵运算的矩阵的数据;
译码单元,用于根据矩阵运算指示生成数据传输控制信息和运算控制信息,所述运算控制信息用于控制所述运算单元工作以完成所述矩阵运算指示;
矩阵取数与送数单元,用于根据所述数据传输控制信息,从所述输入缓存单元读取所述待进行矩阵运算的矩阵的数据送入压缩缓存单元。
8.一种矩阵运算电路,包括至少两个矩阵运算子电路;
每个矩阵运算子电路包括M×N个运算单元和M×N个压缩缓存单元;
第n个矩阵运算子电路的第(i,j)个压缩缓存单元用于缓存An矩阵的第i行数据和Bn矩阵的第j列数据,丢弃0值数据对以实现对所述第i行数据和所述第j列数据的压缩,以K2n个数据对/时钟周期的速度向所述第n个矩阵运算子电路的第(i,j)个运算单元输出压缩后的第i行数据和第j列数据,所述An矩阵为M×K1n矩阵,所述Bn矩阵为K1n×N矩阵,K2n为所述运算单元一个时钟周期内可以处理的数据对数量;
所述第n个矩阵运算子电路的第(i,j)个运算单元用于通过至少一个时钟周期对所述压缩后的第i行数据和第j列数据执行点乘运算;
所述至少两个矩阵运算子电路通过连接单元连接,以实现所述至少两个矩阵运算子电路的运算结果相加。
9.根据权利要求8所述的矩阵运算电路,一笔运算在所述第n个矩阵运算子电路的第(i,j)个运算单元的运算结束,所述第n个矩阵运算子电路的第(i,j)个运算单元和所述第n个矩阵运算子电路的第(i,j)个压缩缓存单元的时钟关闭,直至下一笔运算开始。
10.根据权利要求8所述的矩阵运算电路,所述第n个矩阵运算子电路的第(i,j)个压缩缓存单元还用于:
根据第一位图查找0值数据对,所述第一位图用于标记数据对的取值是否为0;
或者,
根据第二位图查找0值数据,0值数据对应的数据对为0值数据对,所述第二位图用于标记An矩阵的第i行各个元素数据是否为0或者用于标记Bn矩阵的第j列各个元素数据是否为0。
11.根据权利要求8至10任一项所述的矩阵运算电路,还包括M条行广播总线和/或N条列广播总线;
第i条行广播总线与各个矩阵运算子电路的用于缓存An矩阵的第i行数据的压缩缓存单元通信,用于向所述压缩缓存单元广播A矩阵的第i行数据,所述A矩阵的第i行数据包括各个An矩阵的第i行数据;
第j条列广播总线与各个矩阵运算子电路的用于缓存Bn矩阵的第j列数据的压缩缓存单元通信,用于向所述压缩缓存单元广播B矩阵的第j列数据,所述B矩阵的第j列数据包括各个Bn矩阵的第j列数据。
12.根据权利要求8至10任一项所述的矩阵运算电路,每个矩阵运算子电路还包括M条行广播总线和/或N条列广播总线;
第i条行广播总线与用于缓存所述第i行数据的N个压缩缓存单元通信,用于向所述N个压缩缓存单元广播所述第i行数据;
第j条列广播总线与用于缓存所述第j列数据的M个压缩缓存单元通信,用于向所述M个压缩缓存单元广播所述第j列数据。
13.根据权利要求8至10任一项所述的矩阵运算电路,输入缓存单元,用于缓存待进行矩阵运算的矩阵的数据;
译码单元,用于根据矩阵运算指示生成数据传输控制信息和运算控制信息,所述运算控制信息用于控制所述运算单元工作以完成所述矩阵运算指示;
矩阵取数与送数单元,用于根据所述数据传输控制信息,从所述输入缓存单元读取所述待进行矩阵运算的矩阵的数据送入压缩缓存单元。
14.一种处理器,包括权利要求1至13任一项所述的矩阵运算电路。
15.一种集成电路系统,包括权利要求1至13任一项所述的矩阵运算电路。
16.一种电子组件,包括权利要求14所述的处理器和/或权利要求15所述的集成电路系统。
17.一种电子设备,包括权利要求16所述的电子组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410257138.3A CN117851744A (zh) | 2024-03-07 | 2024-03-07 | 矩阵运算电路、处理器、集成电路系统、电子组件及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410257138.3A CN117851744A (zh) | 2024-03-07 | 2024-03-07 | 矩阵运算电路、处理器、集成电路系统、电子组件及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117851744A true CN117851744A (zh) | 2024-04-09 |
Family
ID=90540326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410257138.3A Pending CN117851744A (zh) | 2024-03-07 | 2024-03-07 | 矩阵运算电路、处理器、集成电路系统、电子组件及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117851744A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160336995A1 (en) * | 2014-01-02 | 2016-11-17 | Zhognxing Microelectronics Technology Co. Ltd. | Method and Vector Computing Unit for Implementing De-scrambling and De-spreading, and Computer Storage Medium |
WO2018107383A1 (zh) * | 2016-12-14 | 2018-06-21 | 上海寒武纪信息科技有限公司 | 神经网络的卷积运算方法、装置及计算机可读存储介质 |
US20210073318A1 (en) * | 2019-09-05 | 2021-03-11 | Intel Corporation | Sparse matrix multiplication acceleration mechanism |
US20210256375A1 (en) * | 2020-02-07 | 2021-08-19 | Deepmind Technologies Limited | Reduced computation real time recurrent learning |
WO2022205197A1 (zh) * | 2021-03-31 | 2022-10-06 | 华为技术有限公司 | 一种矩阵乘法器、矩阵计算方法及相关设备 |
WO2023120403A1 (ja) * | 2021-12-23 | 2023-06-29 | 国立大学法人奈良先端科学技術大学院大学 | Cgraによる疎行列計算とマージソートに関する演算ユニット |
-
2024
- 2024-03-07 CN CN202410257138.3A patent/CN117851744A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160336995A1 (en) * | 2014-01-02 | 2016-11-17 | Zhognxing Microelectronics Technology Co. Ltd. | Method and Vector Computing Unit for Implementing De-scrambling and De-spreading, and Computer Storage Medium |
WO2018107383A1 (zh) * | 2016-12-14 | 2018-06-21 | 上海寒武纪信息科技有限公司 | 神经网络的卷积运算方法、装置及计算机可读存储介质 |
US20210073318A1 (en) * | 2019-09-05 | 2021-03-11 | Intel Corporation | Sparse matrix multiplication acceleration mechanism |
US20210256375A1 (en) * | 2020-02-07 | 2021-08-19 | Deepmind Technologies Limited | Reduced computation real time recurrent learning |
WO2022205197A1 (zh) * | 2021-03-31 | 2022-10-06 | 华为技术有限公司 | 一种矩阵乘法器、矩阵计算方法及相关设备 |
WO2023120403A1 (ja) * | 2021-12-23 | 2023-06-29 | 国立大学法人奈良先端科学技術大学院大学 | Cgraによる疎行列計算とマージソートに関する演算ユニット |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832082B (zh) | 一种用于执行人工神经网络正向运算的装置和方法 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN107704916B (zh) | 一种基于fpga实现rnn神经网络的硬件加速器及方法 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
US10936941B2 (en) | Efficient data access control device for neural network hardware acceleration system | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
CN110163363B (zh) | 一种计算装置及方法 | |
US20180046901A1 (en) | Hardware accelerator for compressed gru on fpga | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN104899182A (zh) | 一种支持可变分块的矩阵乘加速方法 | |
CN112784973B (zh) | 卷积运算电路、装置以及方法 | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
CN111626403B (zh) | 一种基于cpu-fpga内存共享的卷积神经网络加速器 | |
CN111797982A (zh) | 基于卷积神经网络的图像处理系统 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN111506343A (zh) | 一种基于脉动阵列硬件架构的深度学习卷积运算实现方法 | |
CN111767994A (zh) | 一种神经元计算模块 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN114519425A (zh) | 一种规模可扩展的卷积神经网络加速系统 | |
CN111222090B (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 |