CN114168894A - 矩阵计算电路、方法、电子设备及计算机可读存储介质 - Google Patents

矩阵计算电路、方法、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114168894A
CN114168894A CN202010955584.3A CN202010955584A CN114168894A CN 114168894 A CN114168894 A CN 114168894A CN 202010955584 A CN202010955584 A CN 202010955584A CN 114168894 A CN114168894 A CN 114168894A
Authority
CN
China
Prior art keywords
data
matrix
circuit
reading
calculation
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
Application number
CN202010955584.3A
Other languages
English (en)
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.)
Beijing Simm Computing Technology Co ltd
Original Assignee
Beijing Simm Computing Technology Co ltd
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 Beijing Simm Computing Technology Co ltd filed Critical Beijing Simm Computing Technology Co ltd
Priority to CN202010955584.3A priority Critical patent/CN114168894A/zh
Publication of CN114168894A publication Critical patent/CN114168894A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本公开实施例公开了一种矩阵计算电路、方法、电子设备及计算机可读存储介质。其中该矩阵计算电路包括:第一数据读取电路,用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;第二数据读取电路,用于根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据。上述矩阵计算电路通过读取出来的第一数据的位置信息控制第二数据的读取,解决了现有技术中进行矩阵计算时只能进行单个数据计算、取数地址计算复杂的技术问题。

Description

矩阵计算电路、方法、电子设备及计算机可读存储介质
技术领域
本公开涉及处理器领域,尤其涉及一种矩阵计算电路、方法、电子设备及计算机可读存储介质。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高。芯片是任务分配的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如CPU(central processing unit)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如TPU(tensor processing unit)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。由于智能时代的数据种类繁多且数量巨大,所以要求芯片既具有极高的灵活性,能处理不同领域且日新月异的算法,又具有极强的处理能力,能快速处理极大的且急剧增长的数据量。
在神经网络计算中,卷积计算占了总运算量的大部分,而卷积计算可以转换成矩阵乘计算,因此要提高神经网络任务中的吞吐量、降低延时、提升芯片的有效算力,重点在于提升矩阵乘计算的速度。
很多神经网络中的数据(这里的数据包括神经网络中的参数数据和输入数据)组成的矩阵是稀疏矩阵,即矩阵中有大量的元素的值为0。为了降低神经网络计算中数据的存储量和带宽占用,会压缩稀疏矩阵进行存储;为了提升矩阵运算速度,会对稀疏矩阵运算进行的优化。
图1a为在神经网络中矩阵乘计算的示意图。如图1a所示,M1为数据矩阵,M2为参数矩阵,M为输出矩阵。M1中的一行数据和M2中的一列参数做乘加计算得到M中的一个数据。其中图1a中的M1和M2两个矩阵,可能有一个是稀疏矩阵,也可能两个都是稀疏矩阵。
如图1b所示为矩阵的压缩示意图。对稀疏矩阵中的存储,可以采用通用的压缩方法:只存储非0的元素。存储此非0元素的值的同时,会存储它在矩阵中的位置信息,即元素在矩阵中的相对坐标X和Y。其中X代表矩阵行序号,Y代表矩阵列序号。这种方法,是将数据和坐标作为一个数据结构,以此数据结构为单位进行存储。如图1b所示,以一个MxN的矩阵为例,从左侧的MxN矩阵压缩成右侧的压缩矩阵,压缩矩阵中的每一个数据结构表示左侧矩阵中的非0数据以及该非0数据在所述矩阵中的坐标。
在稀疏矩阵中,由于矩阵中有的元素的值为0,而这些0元素不需要存储,所以采取这种压缩方法,能有效的降低矩阵的存储容量。如图1c所示为使用上述压缩方法对矩阵进行压缩的实例示意图。对于16x16的稀疏矩阵,只有a,b,c和d为非0的元素,进行压缩存储后,只需要存储这几个元素的值和坐标,从而节省了存储空间。
在进行M1xM2的矩阵运算时,使用压缩之后的矩阵作为实际取数时所使用的矩阵。然而上述技术方案存在以下缺点:1、在进行矩阵运算时,数据的利用率低,通常只能使用独立的运算单元,对单个数据进行计算;2、根据压缩矩阵的数据坐标,计算取数地址复杂,影响性能的发挥。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中的上述技术问题,本公开实施例提出如下技术方案:
第一方面,本公开实施例提供一种矩阵计算电路,包括:
第一数据读取电路,用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
第二数据读取电路,用于根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;
计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据。
进一步的,所述第一数据读取电路,还包括:
第一数据缓存电路、第一数据排序电路以及第一控制电路;
其中,所述第一控制电路,用于根据所述第一矩阵的首地址生成第一数据读取地址;
所述第一数据缓存电路,用于缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
所述第一数据排序电路,用于根据所述第一数据缓存电路中的第一数据位置信息将所述第一数据位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为所述数据矩阵中的同一行数据仍然在同一行,所述数据矩阵中的同一列数据仍然在同一列。
进一步的,所述第一数据排序电路,还用于:
将所述第一数据的位置信息发送至所述第二数据读取电路。
进一步的,所述第二数据读取电路,还包括:
第二数据缓存电路以及第二控制电路;
其中,所述第二控制电路,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址;
所述第二数据缓存电路,用于缓存根据所述第二数据读取地址读出的第二数据。
进一步的,所述第二控制电路,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址,包括:
所述第二控制电路,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息中的列信息生成所述第二数据读取地址。
进一步的,所述计算电路,包括:
计算单元阵列,其中所述计算单元阵列中包括多个计算单元;
所述计算单元阵列中的行计算单元同时接收所述多个第二数据中的一行第二数据;
所述计算单元阵列中的列计算单元同时接收所述多个第一数据中的一列第一数据。
进一步的,所述计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据,包括:
所述计算电路,接收所述第一数据排序电路输出的一列第一数据;接收所述第二数据缓存电路输出的一行第二数据;根据所述一列第一数据和所述一行第二数据计算得到第三数据。
进一步的,所述第一数据的位置信息包括:所述第一数据在所述数据矩阵中的列坐标。
第二方面,本公开实施例提供一种矩阵计算方法,包括:
读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;
根据所述第一数据和所述第二数据计算得到第三数据。
第三方面,本公开实施例提供一种处理核,包括第一方面中任一项所述的矩阵计算电路、解码单元以及存储装置。
第四方面,本公开实施例还提供一种芯片,所述芯片包括至少一个上述第三方面中的处理核。
第五方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第一方面中的任一所述的矩阵计算方法。
第六方面,本公开实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面中的任一所述的矩阵计算方法。
第七方面,本公开实施例提供一种计算机程序产品,包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第一方面中的任一所述的矩阵计算方法。
第八方面,本公开实施例提供一种计算装置,包括一个或多个所述第四方面所述的芯片。
本公开实施例公开了一种矩阵计算电路、方法、电子设备及计算机可读存储介质。其中该矩阵计算电路包括:第一数据读取电路,用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;第二数据读取电路,用于根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据。上述矩阵计算电路通过读取出来的第一数据的位置信息控制第二数据的读取,解决了现有技术中进行矩阵计算时只能进行单个数据计算、取数地址计算复杂的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1a-1c为本公开现有技术的示意图;
图2为本公开实施例提供的矩阵计算电路的结构示意图;
图3为本公开实施例提供的第一数据读取电路的结构示意图;
图4为本公开实施例提供的第一数据读取电路的重排序的实例示意图;
图5为本公开实施例提供的第二数据读取电路的结构示意图;
图6a-6e为本公开实施例的一个应用实例的示意图;
图7为本公开实施例提供的矩阵计算方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图2为本公开实施例提供的矩阵计算电路的示意图。本实施例提供的矩阵计算电路(EU)200包括:
第一数据读取电路(LD_M1)201,所述第一数据读取电路用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
第二数据读取电路(LD_M2)202,所述第二数据读取电路用于根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;
计算电路203,所述计算电路用于根据所述第一数据和所述第二数据计算得到第三数据。
示例性的,所述第一数据读取电路根据第一数据的读取地址读取并缓存第一矩阵中的多个第一数据,所述第一数据的读取地址根据第一矩阵的存储首地址生成;所述第二数据读取电路根据所述第一数据的位置信息得到第二数据的读取地址,并根据第二数据的读取地址读取并缓存第二矩阵中的多个第二数据,所述第二数据的读取地址根据第二矩阵的存储首地址生成。其中,所述第一矩阵的存储首地址和第二矩阵的存储首地址通过指令解码电路ID(Instruction Decoder)得到,所述指令解码电路用于解码矩阵计算指令得到第一矩阵的存储首地址、第二矩阵的存储首地址以及第一矩阵和第二矩阵的大小等参数。
示例性的,所述矩阵计算指令中包括指令类型、第一矩阵的存储首地址、第二矩阵的存储首地址以及、数据矩阵的大小、第一矩阵的大小和第二矩阵的大小参数。在一个实施例中,所述指令类型为矩阵的乘法指令,所述第一矩阵为神经网络卷积计算中的数据矩阵的压缩矩阵,所述第二矩阵为神经网络卷积计算中的参数矩阵;其中,所述数据矩阵和/或所述第二矩阵为稀疏矩阵,所述稀疏矩阵中有大量的元素的值为0。可以理解的,所述矩阵计算指令中的矩阵的存储首地址以及矩阵的大小参数(如矩阵的行数和列数)可以以寄存器地址的形式表示,所示指令解码电路从对应的寄存器地址中获取对应的数据。
在本公开实施例中,所述第一数据读取电路201接收所述指令解码电路解码出的第一矩阵的首地址,并根据该首地址生成第一数据的读取地址;根据所述第一数据的读取地址一次性读取出第一矩阵中的多个第一数据。示例性的,预先设置一次读取的最大列数,例如为k列,其中所述列数是指数据矩阵中的列数,则所述第一数据读取电路根据所述第一矩阵的首地址以及K生成第一数据的读取地址,一次从所述第一矩阵中读出并缓存与所述列数对应的多个第一数据以及所述多个第一数据的位置信息。其中,所述第一数据为所述数据矩阵中的非0数据,所述第一数据读取电路读取的第一数据为所述数据矩阵的K列数据中的非0数据。
在本公开实施例中,所述第二数据读取电路202接收所述指令解码电路解码出的第二矩阵的首地址,并根据该首地址以及所述多个第一数据的位置信息生成第二数据的读取地址;根据所述第二数据的读取地址一次性读取出第二矩阵中的多个第二数据。示例性的,所述第一数据的位置信息为所述第一数据在数据矩阵中的列信息,所述列信息与所述第二矩阵中的行对应,通过第二矩阵的首地址和所述列信息得到需要读取的第二数据的行地址,由此可以一次性读取出一行或多行第二数据并缓存在所述第二数据读取电路中。
在本公开实施例中,所述计算电路,接收从所述第一数据读取电路传输的第一数据以及从所述第二数据读取电路传输的第二数据,并计算得到第三数据,其中所述第三数据为一个或多个。
如图3所示,为了实现上述第一数据读取电路的功能,可选的,所述第一数据读取电路还包括:
第一数据缓存电路301、第一数据排序电路302以及第一控制电路303;
其中,所述第一控制电路303,用于根据所述第一矩阵的首地址生成第一数据读取地址;
所述第一数据缓存电路301,用于缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
所述第一数据排序电路302,用于根据所述第一数据缓存电路中的第一数据位置信息将所述第一数据位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为所述数据矩阵中的同一行数据仍然在同一行,所述数据矩阵中的同一列数据仍然在同一列。
可选的,第一控制电路303接收指令解码电路解码得到的第一矩阵的首地址、预先设置的参数K,以及第一矩阵的大小参数,如第一矩阵中包括N列数据矩阵中的非0数据。可选的,所述第一控制电路中包括第一读取控制电路CL1以及第一地址生成电路AG1,所述第一读取控制电路CL1接收指令解码电路解码得到的上述第一矩阵的首地址、预先设置的参数K,以及数据矩阵的大小参数等,控制AG1生成第一数据读取地址Addr1,以使得所述第一数据读取电路能够根据所述Addr1一次读取第一矩阵中对应于数据矩阵k列的第一数据。
可选的,所述第一数据缓存电路301进一步包括用于缓存第一数据的第一存储器或第一存储区域DB11,以及用于缓存第一数据的位置信息的第二存储器或者第二存储区域DB10,在从所述第一矩阵中读出所述第一数据和所述第一数据的位置信息之后,将所述第一数据缓存在DB11中,将所述第一数据的位置信息缓存在DB10中。
可选的,所述第一数据排序电路302进一步包括重排序位置信息缓存电路IRDB以及重排序第一数据缓存电路DRDB。其中所述IRDB用于缓存重新排序后的所述第一数据的位置信息,所述DRDB用于缓存重排序后的所述第一数据。
可选的,所述第一数据的位置信息包括第一数据在数据矩阵中的行坐标和列坐标,用X坐标表示行坐标,用Y坐标表示列坐标。示例性的,对所述数据进行所述重排序,可以按照先列后行的顺序进行重排序,即先按照Y坐标从小到大,再按照X坐标从小到大依次重新排序以保证数据矩阵中的同一行第一数据仍然在同一行,不在同一行的第一数据仍然不在同一行,也保证数据矩阵中同一列的第一数据仍然在同一列,不在同一列的第一数据仍然不在同一列,由于第一矩阵为数据矩阵的压缩矩阵,数据矩阵中有些行缺少这一列的第一数据,而其他行中有该列的数据,则在重排序的时候,会在该行该列的位置上补0。将重排序之后的Y坐标缓存在IRDB中,将重排序之后的第一数据缓存在DRDB中。
图4为重排序的实例示意图,如图4所示,数据矩阵M1_O为一个稀疏矩阵,第一矩阵为数据矩阵的压缩矩阵M1,M1中包括数据矩阵中的第一数据Data以及第一数据在数据矩阵中的位置信息(X,Y),在第一数据读取电路读取到M1中的2列数据,根据2列数据的位置信息对该2列数据进行重新排序,例如可以按照先Y坐标从小到大排列,再按照X坐标从小到大排列的顺序进行重排列,且X坐标相同的位置信息位于同一行,X坐标不同的位置信息位于不同行,Y坐标相同的位置信息位于同一列,Y坐标不同的位置信息位于不同列,将第一数据按照与位置信息的排序对应的位置进行存储。同时保存对应于该2列数据的位置信息中的列信息,即只保存Y坐标,按照Y坐标从小到大的顺序存储。
如图4中所示第一数据1重新排序之后位于第一行,而第一数据2重新排序之后位于第二行,其他位置补充0;而位置信息中的Y轴坐标按照从小到大的顺序依次保存。
经过重排序之后,所述第一数据读取电路输出所述位置信息DO0和所述第一数据DO1。其中DO1为所述第一数据中的部分或全部第一数据,所述位置信息DO0为所述DRDB中全部第一数据的位置信息。其中所述位置信息传输至所述第二数据读取电路,以使所述第二数据读取电路读取与所述位置信息对应的一个或多个第二数据。
如图5所示,为了实现上述第二数据读取电路的功能,可选的,所述第二数据读取电路还包括:
第二数据缓存电路501以及第二控制电路502;
其中,所述第二控制电路502,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址;
所述第二数据缓存电路501,用于缓存根据所述第二数据读取地址读出的第二数据。
可选的,第二控制电路502接收指令解码电路解码得到的第二矩阵的首地址以及所述第一数据的位置信息中的列信息生成第二数据读取地址。可选的,所述第二控制电路中包括第二读取控制电路CL2以及第二地址生成电路AG2,所述第二读取控制电路CL2接收指令解码电路解码得到的上述第二矩阵的首地址以及所述第一数据的位置信息,控制AG2生成第二数据读取地址Addr2,以使得所述第二数据读取电路能够根据所述Addr2一次读取第二矩阵中与所述第一数据对应的第二数据。示例性的,所述第一数据的位置信息为所述第一数据的列坐标,根据所述第二矩阵的首地址以及所述列坐标,所述第二地址生成电路AG2根据所述第二矩阵的首地址作为基础地址,将所述列坐标作为第二数据的行偏移值,得到第二数据的行地址,由此可以读取与所述第一数据对应的一行或多行第二数据。可选的,所述第一数据为对应于所述数据矩阵中的K列第一数据,所述第二数据为在所述矩阵计算中与所述K列第一数据对应的所述第二矩阵中的K行第二数据。
可选的,所述第二数据缓存电路501包括一个第二数据存储器或者第二数据存储区域,其大小为K行第二数据的大小,读取出的第二数据按照其在第二矩阵中的位置逐行缓存在所述第二数据缓存电路中。
如图2所示,所述计算电路203包括:
计算单元阵列PUA,所述计算单元阵列中包括多个计算单元PU1,1,PU1,2,……PUM,N
所述计算单元阵列中的行计算单元同时接收所述第二数据中的一行第二数据;
所述计算单元阵列中的列计算单元同时接收所述第一数据中的一列第一数据。
可选的,所述计算电路203,接收所述第一数据排序电路输出的一列第一数据;接收所述第二数据缓存电路输出的一行第二数据;根据所述一列第一数据和所述一行第二数据计算得到第三数据。具体的,所述第一数据排序电路输出的一列第一数据中的一个第一数据被输出至所述计算电路中的一列计算单元,如一列第一数据中包括两个第一数据,则这一列第一数据中的第0行的第一数据被输出至这一列计算单元的第0行的计算单元,这一列第一数据中的第1行的第一数据被输出至这一列计算单元的第1行计算单元,对于参与计算的计算单元中的每一列计算单元均执行上述操作,将所述第一数据作为计算单元的第一个输入数据;第二数据缓存电路输出的一行第二数据被输出至所述计算单元阵列中的一行计算单元中,具体的,所述第二数据缓存电路输出与所述第一数据排序电路输出的一列第一数据对应的一行第二数据,如一列第一数据中包括2个第一数据,则所述第二数据缓存电路输出的第二数据为一行第二数据,所述一行第二数据包括2个第二数据,这一行中的2个第二数据分别输入对应的一行计算单元中,即第1个第二数据输出至一行计算单元中的第1个计算单元,第1个第二数据输出至一行计算单元中的第2个计算单元;由此,参与计算的计算单元都会得到两个数据输入,一个第一数据和一个第二数据,所述计算单元通过计算指令的类型所指定的计算类型计算第一数据和第二数据的计算结果得到第三数据,多个计算单元得到第三数据并输出。循环上述计算过程,且每个计算单元累加其计算结果,直至所有的第一数据和第二数据被读取完毕得到输出矩阵,其中输出矩阵中的每个元素的值为参与计算的计算单元的累加结果。
图6a-6e为上述实施例中的矩阵计算电路的计算过程的实例。如图6a所示,为矩阵计算电路需要执行的矩阵乘法计算,M1_O为数据矩阵,M2为第二矩阵,M为M1_O和M2矩阵相乘得到的第三矩阵M。
其中,将M1_O以压缩矩阵的形式存储,如图6b所示,将M1_0进行压缩生成第一矩阵M1并保存。设K=4,即在计算过程中,每次读取数据矩阵M1_O中的4列第一数据,对于所述实例来说,一次将M1中所有的数据读取并缓存。则如图6b所示,所述矩阵计算电路的第一数据读取电路一次读取整个第一矩阵M1中的第一数据到数据缓存电路中,并经过第一数据排序电路重排序,得到如图6b中所示的IRDB中以及DRDB中的存储顺序。
如图6c所示为使用所述矩阵计算电路进行矩阵计算的整体示意图。以K=4列为单位读取M1的4列第一数据,即数据矩阵中列号为0-3的列,由于在此实例中,数据矩阵M1_O的总列数为4,所以会一次将整个M1都读取并缓存到第一数据读取电路LD_M1中;读取后进行重排序,将位置信息存入LD_M1的IRDB,将第一数据存入LD_M1的DRDB。IRDB将列坐标0和3传输至LD_M2,LD_M2根据列坐标0和3从M2中读出第0行和第3行第二数据并缓存,如图6c所示,第0行第二数据包括1和2,第3行第二数据包括7和8,这两行第二数据被缓存在LD_M2的DB2中。
如图6d所示为第一次计算的示意图。计算电路从LD_M1的DRDB中得到第一列第一数据,其中第一列第一数据包括第0行的1和第1行的0,其中第0行的1输入到计算电路中的第0行计算单元PU0,0和PU0,1中;第1行的0输入到计算电路中的第1行计算单元PU1,0和PU1,1中;LD_M2的第二数据缓存电路输出LD_M2中所缓存的第0行第二数据,第0行第二数据输入到第0行计算单元PU0,0和PU0,1中和1行计算单元PU1,0和PU1,1中,第0行第二数据包括1和2,其中第二数据1输入到计算单元PU0,0中和计算单元PU1,0中,第二数据2输入到计算单元PU0,1和PU1,1中。之后各个计算单元独立进行乘累加计算,分别得到PU0,0的计算结果1,PU0,1的计算结果2,PU1,0的计算结果0和PU1,1的计算结果0;由于第一数据和第二数据还未计算完,因此得到的第三数据为中间数据M_temp。
如图6e所示为第二次计算的示意图。计算电路从LD_M1的DRDB中得到第二列第一数据,其中第二列第一数据包括第0行的0和第1行的2,其中第0行的0输入到计算电路中的第0行计算单元PU0,0和PU0,1中;第1行的2输入到计算电路中的第1行计算单元PU1,0和PU1,1中;LD_M2的第二数据缓存电路输出LD_M2中所缓存的第1行第二数据,其中第1行第二数据包括7和8,其中第二数据7输入到计算单元PU0,0和PU1,0中,第二数据8输入到计算单元PU0,1和PU1,1中;之后各个计算单元独立进行乘累加计算,分别得到PU0,0的计算结果1,PU0,1的计算结果2,PU1,0的计算结果14和PU1,1的计算结果16;由于第一数据和第二数据计算完毕,因此得到的第三数据为输出矩阵M中的元素的值。
通过以上实例的计算过程可以看出,使用本公开中的矩阵计算电路进行矩阵乘法运算,只需要两次计算即可完成一个2*4的矩阵和一个4*2的矩阵的乘法,大大提升了计算速度,节省了计算时间。
通过本公开的上述技术方案,直接对压缩的稀疏矩阵进行计算,有效的节省存储空间,且节省数据带宽;使用计算单元阵列,所有的计算单元同步进行数据处理,大大提升了数据利用率,多个计算单元能共用同一个数据;直接对压缩的稀疏矩阵进行计算,跳过了一些0元素的计算,从而提升了运算速度,提高了芯片有效算力的发挥。
图7为本公开实施例提供的矩阵计算方法的流程图。如图7所示,该方法包括如下步骤:
步骤S701,读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
步骤S702,根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;
步骤S703,根据所述第一数据和所述第二数据计算得到第三数据;
进一步的,所述读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,包括:
根据所述第一矩阵的首地址生成第一数据读取地址;
缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
根据所述第一数据位置信息将所述第一数据位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为所述数据矩阵中的同一行数据仍然在同一行,所述数据矩阵中的同一列数据仍然在同一列。
进一步的,所述方法还包括:
发送所述第一数据的位置信息。
进一步的,所述根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据,包括:
根据所述根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址;
缓存根据所述第二数据读取地址读出的第二数据。
进一步的,所述根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址,包括:
根据所述第二矩阵的首地址以及所述第一数据的位置信息中的列信息生成所述第二数据读取地址。
进一步的,所述根据所述第一数据和所述第二数据计算得到第三数据,包括:
接收经过排序的一列第一数据;接收所述第二数据中的于所述一列第一数据对应的一行第二数据;根据所述经过排序的一列第一数据和所述一行第二数据计算得到第三数据。
进一步的,所述第一数据的位置信息包括:所述第一数据在所述数据矩阵中的列坐标。
在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。
本公开实施例还提供一种处理核,所述处理核包括上述实施例中至少一个任一矩阵计算电路,解码单元以及存储装置。
本公开实施例还提供一种芯片,所述芯片包括上述实施例中至少一个处理核。
本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述的矩阵计算方法。
本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述的矩阵计算方法。
本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述的矩阵计算方法。
本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、任务段、或代码的一部分,该模块、任务段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

Claims (10)

1.一种矩阵计算电路,其特征在于,包括:
第一数据读取电路,用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
第二数据读取电路,用于根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;
计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据。
2.如权利要求1所述的矩阵计算电路,其特征在于,所述第一数据读取电路,还包括:
第一数据缓存电路、第一数据排序电路以及第一控制电路;
其中,所述第一控制电路,用于根据所述第一矩阵的首地址生成第一数据读取地址;
所述第一数据缓存电路,用于缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
所述第一数据排序电路,用于根据所述第一数据缓存电路中的第一数据位置信息将所述第一数据位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为所述数据矩阵中的同一行数据仍然在同一行,所述数据矩阵中的同一列数据仍然在同一列。
3.如权利要求2中所述的矩阵计算电路,其中,所述第一数据排序电路,还用于:
将所述第一数据的位置信息发送至所述第二数据读取电路。
4.如权利要求1-3中任一项所述的矩阵计算电路,其中,所述第二数据读取电路,还包括:
第二数据缓存电路以及第二控制电路;
其中,所述第二控制电路,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址;
所述第二数据缓存电路,用于缓存根据所述第二数据读取地址读出的第二数据。
5.如权利要求4所述的矩阵计算电路,其中所述第二控制电路,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址,包括:
所述第二控制电路,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息中的列信息生成所述第二数据读取地址。
6.如权利要求1-5中任一项所述的矩阵计算电路,其中所述计算电路,包括:
计算单元阵列,其中所述计算单元阵列中包括多个计算单元;
所述计算单元阵列中的行计算单元同时接收所述第二数据中的一行第二数据;
所述计算单元阵列中的列计算单元同时接收所述第一数据中的一列第一数据。
7.如权利要求4所述的矩阵计算电路,其中所述计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据,包括:
所述计算电路,接收所述第一数据排序电路输出的经重新排序的一列第一数据;接收所述第二数据缓存电路输出的一行第二数据;根据所述经重新排序的一列第一数据和所述一行第二数据计算得到第三数据。
8.如权利要求1-7中任一项所述的矩阵计算电路,其中所述第一数据的位置信息包括:所述第一数据在所述数据矩阵中的列坐标。
9.一种矩阵计算方法,其特征在于,包括:
读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
根据所述第一数据的位置信息读取并缓存第二矩阵中的第二数据;
根据所述第一数据和所述第二数据计算得到第三数据。
10.一种处理核,包括权利要求1-8中任一项所述的矩阵计算电路。
CN202010955584.3A 2020-09-11 2020-09-11 矩阵计算电路、方法、电子设备及计算机可读存储介质 Pending CN114168894A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010955584.3A CN114168894A (zh) 2020-09-11 2020-09-11 矩阵计算电路、方法、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010955584.3A CN114168894A (zh) 2020-09-11 2020-09-11 矩阵计算电路、方法、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114168894A true CN114168894A (zh) 2022-03-11

Family

ID=80475404

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010955584.3A Pending CN114168894A (zh) 2020-09-11 2020-09-11 矩阵计算电路、方法、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114168894A (zh)

Similar Documents

Publication Publication Date Title
CN111062472B (zh) 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法
US9529590B2 (en) Processor for large graph algorithm computations and matrix operations
CN111199273A (zh) 卷积计算方法、装置、设备及存储介质
CN111915001A (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
WO2021088563A1 (zh) 卷积运算电路、装置以及方法
CN109840585B (zh) 一种面向稀疏二维卷积的运算方法和系统
CN113743599B (zh) 一种卷积神经网络的运算装置及服务器
CN114503126A (zh) 矩阵运算电路、装置以及方法
JP7174831B2 (ja) 畳み込みニューラルネットワークに基づくビデオメモリ処理方法、装置及び記録媒体
EP3842954A1 (en) System and method for configurable systolic array with partial read/write
CN114168894A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN110796229A (zh) 一种实现卷积运算的装置及方法
CN114168895A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN114168896A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN117454946A (zh) 支持非结构化稀疏矩阵计算的张量核架构系统
CN115828044B (zh) 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置
CN114168897A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN109635238B (zh) 矩阵运算方法、装置、设备及可读介质
CN113222136A (zh) 卷积运算方法及芯片
CN104901651A (zh) 一种数字滤波器的实现电路及方法
CN114077718A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN113836481B (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN113961871A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN114282158A (zh) 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN117973443B (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