一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-03-13 23:47:05 来源:中国专利 TAG:


1.本公开涉及处理器领域,尤其涉及一种矩阵计算电路、方法、电子设备及计算机可读存储介质。


背景技术:

2.随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高。芯片是任务分配的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如cpu(central processing unit)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如tpu(tensor processing unit)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。由于智能时代的数据种类繁多且数量巨大,所以要求芯片既具有极高的灵活性,能处理不同领域且日新月异的算法,又具有极强的处理能力,能快速处理极大的且急剧增长的数据量。
3.在神经网络计算中,卷积计算占了总运算量的大部分,而卷积计算可以转换成矩阵乘计算,因此要提高神经网络任务中的吞吐量、降低延时、提升芯片的有效算力,重点在于提升矩阵乘计算的速度。
4.很多神经网络中的数据(这里的数据包括神经网络中的参数数据和输入数据)组成的矩阵是稀疏矩阵,即矩阵中有大量的元素的值为0。为了降低神经网络计算中数据的存储量和带宽占用,会压缩稀疏矩阵进行存储;为了提升矩阵运算速度,会对稀疏矩阵运算进行的优化。
5.图1a为在神经网络中矩阵乘计算的示意图。如图1a所示,m1为数据矩阵,m2为参数矩阵,m为输出矩阵。m1中的一行数据中的每一个和m2中的一列参数中的每一个做乘加计算得到m中的一个数据。其中图1a中的m1和m2两个矩阵,可能有一个是稀疏矩阵,也可能两个都是稀疏矩阵。
6.如图1b所示为矩阵的压缩示意图。对稀疏矩阵中的存储,可以采用通用的压缩方法:只存储非0的元素。存储此非0元素的值的同时,会存储它在矩阵中的位置信息,即元素在矩阵中的相对坐标x和y。其中x代表矩阵行序号,y代表矩阵列序号。这种方法,是将数据和坐标作为一个数据结构,以此数据结构为单位进行存储。如图1b所示,以一个mxn的矩阵为例,从左侧的mxn矩阵压缩成右侧的压缩矩阵,压缩矩阵中的每一个数据结构表示左侧矩阵中的非0数据以及该非0数据在所述矩阵中的坐标。
7.在稀疏矩阵中,由于矩阵中有的元素的值为0,而这些0元素不需要存储,所以采取这种压缩方法,能有效的降低矩阵的存储容量。如图1c所示为使用上述压缩方法对矩阵进行压缩的实例示意图。对于16x16的稀疏矩阵,只有a,b,c和d为非0的元素,进行压缩存储后,只需要存储这几个元素的值和坐标,从而节省了存储空间。
8.在进行m1xm2的矩阵运算时,使用压缩之后的矩阵作为实际取数时所使用的矩阵。
然而上述技术方案存在以下缺点:1、在进行矩阵运算时,数据的利用率低,通常只能使用独立的运算单元,单个数据进行计算;2、根据压缩矩阵的数据坐标,计算取数地址复杂,影响性能的发挥。


技术实现要素:

9.提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
10.为了解决现有技术中的上述技术问题,本公开实施例提出如下技术方案:
11.第一方面,本公开实施例提供一种矩阵计算电路,包括:
12.第一数据读取电路,用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;根据所述第一数据的位置信息生成第二数据输出控制信号;
13.第二数据读取电路,用于读取并缓存第二矩阵中的第二数据;根据所述第二数据输出控制信号控制输出所述第二数据;
14.计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据。
15.进一步的,所述第一数据读取电路,还包括:
16.第一数据缓存电路、第一数据排序电路以及第一控制电路;
17.其中,所述第一控制电路,用于根据所述第一矩阵的首地址生成第一数据读取地址;
18.所述第一数据缓存电路,用于缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
19.所述第一数据排序电路,用于根据所述第一数据缓存电路中的第一数据位置信息将所述第一数据的位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为位于所述数据矩阵中的同一行数据重新排序后仍然在同一行。
20.进一步的,所述第二数据读取电路,还包括:
21.第二数据缓存电路、数据选择电路以及第二控制电路;
22.其中,所述第二控制电路,用于根据所述第二矩阵的首地址生成第二数据读取地址;
23.所述第二数据缓存电路,用于缓存根据所述第二数据读取地址读出的第二数据;
24.所述数据选择电路,用于根据所述第二数据输出控制信号从所述第二数据缓存电路中选择并输出所述第二数据。
25.进一步的,所述根据所述第一数据的位置信息生成第二数据输出控制信号,包括:
26.所述第一数据排序电路,用于根据所述第一数据位置信息中的列信息生成所述第二数据输出控制信号。
27.进一步的,所述数据选择电路,用于根据所述第二数据输出控制信号从所述第二数据缓存电路中选择并输出所述第二数据,包括:
28.所述数据选择电路用于根据所述第二数据输出控制信号中的列信息从所述第二据缓存电路中选择与所述列信息对应的第二数据并输出。
29.进一步的,所述第一数据为所述数据矩阵中的k列第一数据,所述第二数据为在所述矩阵计算中与所述k列第一数据对应的所述第二矩阵中的k行第二数据。
30.进一步的,所述计算电路,包括:
31.计算单元阵列,其中所述计算单元阵列中包括多个计算单元;
32.所述计算单元阵列中的一行计算单元接收所述第二数据中的一行第二数据;
33.所述计算单元阵列中的一行计算单元接收所述第一数据中的一个第一数据。
34.进一步的,所述计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据,包括:
35.所述计算电路,接收所述第一数据排序电路输出的一列第一数据;接收所述数据选择电路选择输出的至少一行第二数据;根据所述一列第一数据和所述至少一行第二数据计算得到第三数据。
36.进一步的,所述第一数据的位置信息包括:所述第一数据在所述数据矩阵中的行坐标和列坐标。
37.第二方面,本公开实施例提供一种矩阵计算方法,包括:
38.读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
39.根据所述第一数据的位置信息生成第二数据输出控制信号;
40.读取并缓存第二矩阵中的第二数据;
41.根据所述第二数据输出控制信号控制输出所述第二数据;
42.根据所述第一数据和所述第二数据计算得到第三数据。
43.第三方面,本公开实施例提供一种处理核,包括第一方面中任一项所述的矩阵计算电路、解码单元以及存储装置。
44.第四方面,本公开实施例还提供一种芯片,所述芯片包括至少一个上述第三方面中的处理核。
45.第五方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第一方面中的任一所述的矩阵计算方法。
46.第六方面,本公开实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面中的任一所述的矩阵计算方法。
47.第七方面,本公开实施例提供一种计算机程序产品,包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第一方面中的任一所述的矩阵计算方法。
48.第八方面,本公开实施例提供一种计算装置,包括一个或多个所述第四方面所述的芯片。
49.本公开实施例公开了一种矩阵计算电路、方法、电子设备及计算机可读存储介质。其中该矩阵计算电路包括:第一数据读取电路,用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;根据所述第一数据的位置信息生成第二数据输出控制信号;第二数据读取电路,用于读取并缓存第二矩阵中
的第二数据;根据所述第二数据输出控制信号控制输出所述第二数据;计算电路,用于根据所述第一数据和所述第二数据计算得到第三数据。上述矩阵计算电路通过读取出来的多个第一数据的位置信息控制多个第二数据的输出,解决了现有技术中进行矩阵计算时只能进行单个数据计算、取数地址计算复杂的技术问题。
50.上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
51.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
52.图1a-1c为本公开现有技术的示意图;
53.图2为本公开实施例提供的矩阵计算电路的结构示意图;
54.图3为本公开实施例提供的第一数据读取电路的结构示意图;
55.图4为本公开实施例提供的第一数据读取电路的重排序的实例示意图;
56.图5为本公开实施例提供的第二数据读取电路的结构示意图;
57.图6a-6e为本公开实施例的一个应用实例的示意图;
58.图7为本公开实施例提供的矩阵计算方法的流程图。
具体实施方式
59.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
60.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
61.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
62.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
63.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
64.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
65.图2为本公开实施例提供的矩阵计算电路的示意图。本实施例提供的矩阵计算电
路(eu)200包括:
66.第一数据读取电路(ld_m1)201,所述第一数据读取电路用于读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;根据所述第一数据的位置信息生成第二数据输出控制信号;
67.第二数据读取电路(ld_m2)202,所述第二数据读取电路用于读取并缓存第二矩阵中的第二数据;根据所述第二数据输出控制信号控制输出所述第二数据;
68.计算电路203,所述计算电路用于根据所述第一数据和所述第二数据计算得到第三数据。
69.示例性的,所述第一数据读取电路根据第一数据的读取地址读取并缓存第一矩阵中的第一数据,所述第一数据的读取地址根据第一矩阵的存储首地址生成;所述第二数据读取电路根据第二数据的读取地址读取并缓存第二矩阵中的第二数据,所述第二数据的读取地址根据第二矩阵的存储首地址生成。其中,所述第一矩阵的存储首地址和第二矩阵的存储首地址通过指令解码电路id(instruction decoder)得到,所述指令解码电路用于解码矩阵计算指令得到第一矩阵的存储首地址、第二矩阵的存储首地址以及第一矩阵和第二矩阵的大小等参数。
70.示例性的,所述矩阵计算指令中包括指令类型、第一矩阵的存储首地址、第二矩阵的存储首地址以及第一矩阵和第二矩阵的大小参数。在一个实施例中,所述指令类型为矩阵的乘法指令,所述第一矩阵为神经网络卷积计算中的数据矩阵的压缩矩阵,所述第二矩阵为神经网络卷积计算中的参数矩阵;其中,所述数据矩阵和/或所述第二矩阵为稀疏矩阵,所述稀疏矩阵中有大量的元素的值为0。可以理解的,所述矩阵计算指令中的矩阵的存储首地址以及矩阵的大小参数(如矩阵的行数和列数)可以以寄存器地址的形式表示,所示指令解码电路从对应的寄存器地址中获取对应的数据。
71.在本公开实施例中,所述第一数据读取电路201接收所述指令解码电路解码出的第一矩阵的首地址,并根据该首地址生成第一数据的读取地址;可选的,根据所述第一数据的读取地址一次性读取出第一矩阵中的多个第一数据。示例性的,预先设置一次读取的最大第一数据的数量为k列,其中所述k列为所述数据矩阵中的k列,则所述第一数据读取电路根据所述第一矩阵的首地址以及k生成第一数据的读取地址,一次从所述第一矩阵中读出并缓存表示所述k列的多个第一数据以及所述多个第一数据的位置信息。所述第一数据读取电路在得到所述多个第一数据的位置信息之后,根据所述多个第一数据的位置信息生成第二数据的控制信号,以控制所述第二数据读取电路所缓存的多个第二数据的输出。
72.在本公开实施例中,所述第二数据读取电路202接收所述指令解码电路解码出的第二矩阵的首地址,并根据该首地址生成第二数据的读取地址;根据所述第二数据的读取地址一次性读取出第二矩阵中的多个第二数据。示例性的,预先设置一次读取的最大第二数据的数量为k行,示例性的,所述第二矩阵不是压缩矩阵,则所述k行即为所述第二矩阵中的k行;所述第二数据读取电路根据所述第二矩阵的首地址以及k生成第二数据的读取地址,一次从所述第二矩阵中读出并缓存k行第二数据。之后,根据接收到的第二数据的控制信号,控制所述多个第二数据的输出,以输出全部或部分所述多个第二数据。
73.在本公开实施例中,所述计算电路,接收从所述第一数据读取电路传输的多个第一数据以及从所述第二数据读取电路传输的多个第二数据,并计算得到第三数据,其中所
述第三数据为一个或多个。
74.如图3所示,为了实现上述第一数据读取电路的功能,可选的,所述第一数据读取电路还包括:
75.第一数据缓存电路301、第一数据排序电路302以及第一控制电路303;
76.其中,所述第一控制电路303,用于根据所述第一矩阵的首地址生成第一数据读取地址;
77.所述第一数据缓存电路301,用于缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
78.所述第一数据排序电路302,用于根据所述第一数据缓存电路中的第一数据位置信息将所述第一数据的位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为所述数据矩阵中的同一行数据仍然在同一行。
79.可选的,第一控制电路303接收指令解码电路解码得到的第一矩阵的首地址、预先设置的参数k,以及第一矩阵的大小参数,如第一矩阵中包括n列数据矩阵中的数据。可选的,所述第一控制电路中包括第一读取控制电路cl1以及第一地址生成电路ag1,所述第一读取控制电路cl1接收指令解码电路解码得到的上述第一矩阵的首地址、预先设置的参数k,以及第一矩阵的大小参数等,控制ag1生成第一数据读取地址addr1,以使得所述第一数据读取电路能够根据所述addr1一次读取第一矩阵中表示数据矩阵中的k列第一数据。
80.可选的,所述第一数据缓存电路301进一步包括用于缓存多个第一数据的第一存储器或第一存储区域db11,以及用于缓存多个第一数据的位置信息的第二存储器或者第二存储区域db10,在从所述第一矩阵中读出所述多个第一数据和所述多个第一数据的位置信息之后,将所述多个第一数据缓存在db11中,将所述多个第一数据的位置信息缓存在db10中。
81.可选的,所述第一数据排序电路302进一步包括重排序位置信息缓存电路irdb以及重排序第一数据缓存电路drdb。其中所述irdb用于缓存重新排序后的所述多个第一数据的位置信息,所述drdb用于缓存重排序后的所述多个第一数据。可选的,所述多个第一数据的位置信息包括第一数据在数据矩阵中的行坐标和列坐标,用x坐标表示行坐标,用y坐标表示列坐标。示例性的,所述重排序按照先列后行的顺序进行重排序,即先按照y坐标从小到大,在按照x坐标从小到大依次重新排序以保证数据矩阵中的同一行第一数据仍然在同一行,不在同一行的第一数据仍然不在同一行。将重排序之后的xy坐标缓存在irdb中,将重排序之后的第一数据缓存在drdb中。图4为重排序的实例示意图,如图4所示,数据矩阵m1_o为一个稀疏矩阵,第一矩阵为数据矩阵的压缩矩阵m1,m1中包括数据矩阵中的第一数据data以及第一数据在数据矩阵中的位置信息(x,y),在第一数据读取电路读取到m1中的3列数据,将其中的位置信息按照先y坐标从小到大排列,再按照x坐标从小到大排列的顺序进行重排列,且x坐标相同的位置信息位于同一行,x坐标不同的位置信息位于不同行,如图4中所示(0,0)和(0,1)位于第0行,而(1,2)位于第1行;将所述第一数据按照与所述位置信息对应的位置进行重排序,如图4所示,第一数据1和2位于第0行,第一数据3位于第二行。由于数据矩阵中每一行非0数据的个数可能不一样,所以重排序后每一行数据的长度可能不一样,如图4所述第0行有两个数据,而第1行只有一个数据。
82.经过重排序之后,所述第一数据读取电路输出所述位置信息do0和所述第一数据
do1。其中do1为所述多个第一数据中的部分或全部第一数据,所述位置信息do0为与所述d01对应的位置信息。
83.在一个实施例中,所述第一数据读取电路和所述第二数据读取电路根据配置一次将所述第一矩阵中的所有第一数据和所述第二矩阵中的所有第二数据读出并缓存,此时所述位置信息do0可以直接作为所述第二数据的控制信息;可选的,所述第一数据读取电路和所述第二数据读取电路根据配置一次读取并缓存部分第一数据和第二数据,此时可以通过所述位置信息do0生成所述第二数据的控制信息,示例性的,通过位置信息d00生成缓存中的相对列信息作为所述第二数据的控制信息。
84.如图5所示,为了实现上述第二数据读取电路的功能,可选的,所述第二数据读取电路还包括:
85.第二数据缓存电路501、数据选择电路502以及第二控制电路503;
86.其中,所述第二控制电路503,用于根据所述第二矩阵的首地址生成第二数据读取地址;
87.所述第二数据缓存电路501,用于缓存根据所述第二数据读取地址读出的第二数据;
88.所述数据选择电路502,用于根据所述第二数据输出控制信号从所述第二数据缓存电路中选择并输出所述第二数据。
89.可选的,第二控制电路503接收指令解码电路解码得到的第二矩阵的首地址、预先设置的参数k,以及第二矩阵的大小参数,如第二矩阵中包括n行第二数据。可选的,所述第二控制电路中包括第二读取控制电路cl2以及第二地址生成电路ag2,所述第二读取控制电路cl2接收指令解码电路解码得到的上述第一矩阵的首地址、预先设置的参数k,以及第一矩阵的大小参数等,控制ag2生成第二数据读取地址addr2,以使得所述第二数据读取电路能够根据所述addr2一次读取第二矩阵中的k行第二数据。
90.可选的,所述第二数据缓存电路501包括一个第二数据存储器或者第二数据存储区域,其大小为k行第二数据的大小,读取出的多个第二数据按照其在第二矩阵中的位置逐行缓存在所述第二数据缓存电路中。
91.可选的,所述数据选择电路502包括开关信号生成电路dec以及门电路sw,其中开关信号生成电路用于接收所述第二数据输出控制信号以生成门电路的开关信号,所述门电路sw接收所述开关信号之后控制与开关信号对应的开关打开以输出对应的第二数据。
92.可选的,所述第二控制信号中包括所述多个第一数据的位置信息中的列信息,则所述数据选择电路根据所述第二数据输出控制信号中的列信息从所述第二据缓存电路中选择与所述列信息对应的第二数据并输出。具体的,所述开关信号生成电路dec收到所述第二数据输出控制信号之后,得到其中的列信息,并生成与所述列信息对应的行开关信息,打开所述开关电路,从而输出与所述开关电路对应的所述多个第二数据中的一行第二数据。
93.如图2所示,所述计算电路203包括:
94.计算单元阵列pua,所述计算单元阵列中包括多个计算单元pu
1,1
,pu
1,2
,
……
pu
m,n

95.所述计算单元阵列中的一行计算单元接收所述第二数据中的一行第二数据;
96.所述计算单元阵列中的一行计算单元接收所述第一数据中的一个第一数据。
97.可选的,所述计算电路203,接收所述第一数据排序电路输出的经重新排序的一列
第一数据;接收所述数据选择电路选择输出的至少一行第二数据;根据所述经重新排序的一列第一数据和所述至少一行第二数据计算得到第三数据。
98.具体的,所述第一数据排序电路输出的一列第一数据中的一个第一数据被输出至所述计算电路中的一行计算单元,如一列第一数据中包括两个第一数据,则第0行的第一数据被输出至第0行计算单元中的每一个计算单元,第1行的第一数据被输出至第1行计算单元中的每一个计算单元;数据选择地电路选择输出的与所述第一数据排序电路输出的一列第一数据对应的一行或多行第二数据;如一列第一数据中包括1个第一数据,则所述数据选择地电路选择输出的第二数据为1行第二数据。由此,参与计算的计算单元都会得到两个数据输入,一个第一数据和一个第二数据,所述计算单元通过计算指令的类型所指定的计算类型计算第一数据和第二数据的计算结果得到第三数据,多个计算单元得到多个第三数据并输出。循环上述计算过程,且每个计算单元累加其计算结果,直至所有的第一数据和第二数据被读取完毕得到输出矩阵,其中输出矩阵中的每个元素的值为参与计算的计算单元的累加结果。
99.图6a-6e为上述实施例中的矩阵计算电路的计算过程的实例。如图6a所示,为矩阵计算电路需要执行的矩阵乘法计算,m1_o为数据矩阵,m2为第二矩阵,m为m1_o和m2矩阵相乘得到的第三矩阵。
100.其中,m1_o以压缩矩阵的形式存储,如图6b所示,将m1_0进行压缩生成第一矩阵m1并保存。设k=4,即在计算过程中,每次读取数据矩阵m1_o中的4列第一数据,每次读取第二矩阵中的4行第二数据,对于所述实例来说,一次将m1和m2中所有的数据读取并缓存。则如图6b所示,所述矩阵计算电路的第一数据读取电路一次读取整个第一矩阵m1中的第一数据到数据缓存电路中,并经过第一数据排序电路重排序,得到如图6b中所示的irdb中以及drdb中的存储顺序。
101.如图6c所示为使用所述矩阵计算电路进行矩阵计算的整体示意图。以k=4列为单位读取m1的4列第一数据,即数据矩阵中列号为0-3的列,由于在此实例中,数据矩阵m1_o的总列数为4,所以会一次将整个m1都读取并缓存到第一数据读取电路ld_m1中;读取后进行重排序,将位置信息存入ld_m1的irdb,将第一数据存入ld_m1的drdb。以k=4行为单位读取m2的4行数据,缓存在第二数据读取电路ld_m2中,由于在此实例中,m2的总行数为4,所以会一次将整个m2都读取并缓存到ld_m2中。之后经过计算阵列中的4个计算单元的计算,输出4*4的输出矩阵m,其中m中的每个元素对应一个计算单元的输出数据。
102.如图6d所示为第一次计算的示意图。计算电路从ld_m1的drdb中得到第一列第一数据,其中第一列第一数据包括第0行的1和第1行的2,其中第0行的1输入到计算电路中的第0行计算单元pu
0,0
和pu
0,1
中;第1行的2输入到计算电路中的第1行计算单元pu
1,0
和pu
1,1
中;ld_m1将irdb中所缓存的第一列第一数据的列坐标0和1发送至ld_m2,ld_m2的数据选择电路根据所述列坐标0和1,选择输出ld_m2中所缓存的与第一数据列坐标对应的第0行和第1行第二数据,其中第0行第二数据输入到第0行计算单元pu
0,0
和pu
0,1
中,第0行第二数据包括1和2,其中第二数据1输入到计算单元pu
0,0
中,第二数据2输入到计算单元pu
0,1
中;其中第1行第二数据输入到第1行计算单元pu
1,0
和pu
1,1
中,第1行第二数据包括1和2,其中第二数据1输入到计算单元pu
1,0
中,第二数据2输入到计算单元pu
1,1
中。之后各个计算单元独立进行乘累加计算,分别得到pu
0,0
的计算结果1,pu
0,1
的计算结果2,pu
1,0
的计算结果2和pu
1,1
的计
算结果4;由于第一数据和第二数据还未计算完,因此得到的第三数据为中间数据m_temp。
103.如图6e所示为第二次计算的示意图。计算电路从ld_m1的drdb中得到第二列第一数据,其中第二列第一数据包括第0行的3和第1行的4,其中第0行的3输入到计算电路中的第0行计算单元pu
0,0
和pu
0,1
中;第1行的4输入到计算电路中的第1行计算单元pu
1,0
和pu
1,1
中;ld_m1将irdb中所缓存的第一列第一数据的列坐标2和3发送至ld_m2,ld_m2的数据选择电路根据所述列坐标2和3,选择输出ld_m2中所缓存的与第一数据的列坐标对应的第2行和第3行第二数据,其中第2行第二数据分别输入对应的第0行计算单元pu
0,0
和pu
0,1
中,第0行第二数据包括1和2,其中第二数据1输入到计算单元pu
0,0
中,第二数据2输入到计算单元pu
0,1
中;其中第3行第二数据输入到第1行计算单元pu
1,0
和pu
1,1
中,第3行第二数据包括1和2,其中第二数据1输入到计算单元pu
1,0
中,第二数据2输入到计算单元pu
1,1
中。之后各个计算单元独立进行乘累加计算,分别得到pu
0,0
的计算结果4,pu
0,1
的计算结果8,pu
1,0
的计算结果6和pu
1,1
的计算结果12;由于第一数据和第二数据计算完毕,因此得到的第三数据为输出矩阵m中的元素的值。
104.通过以上实例的计算过程可以看出,使用本公开中的矩阵计算电路进行矩阵乘法运算,只需要两次计算即可完成一个2*4的矩阵和一个4*2的矩阵的乘法,大大提升了计算速度,节省了计算时间。
105.通过本公开的上述技术方案,直接对压缩的稀疏矩阵进行计算,有效的节省存储空间,且节省数据带宽;使用计算单元阵列,所有的计算单元同步进行数据处理,大大提升了数据利用率,多个计算单元能共用同一个数据;直接对压缩的稀疏矩阵进行计算,跳过了一些0元素的计算,从而提升了运算速度,提高了芯片有效算力的发挥。
106.图7为本公开实施例提供的矩阵计算方法的流程图。如图7所示,该方法包括如下步骤:
107.步骤s701,读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,其中所述第一矩阵为数据矩阵的压缩矩阵;
108.步骤s702,根据所述第一数据位置信息生成第二数据输出控制信号;
109.步骤s703,读取并缓存第二矩阵中的第二数据;
110.步骤s704,根据所述第二数据输出控制信号控制输出所述第二数据;
111.步骤s705,根据所述第一数据和所述第二数据计算得到第三数据。
112.进一步的,所述读取并缓存第一矩阵中的第一数据和所述第一数据的位置信息,包括:
113.根据所述第一矩阵的首地址生成第一数据读取地址;
114.缓存根据所述第一数据读取地址读出的第一数据和所述第一数据的位置信息;
115.根据所述第一数据的位置信息将所述第一数据位置信息和所述第一数据以位置一一对应的方式分别重新排序,其中,所述重新排序结果为所述数据矩阵中的同一行数据仍然在同一行。
116.进一步的,所述读取并缓存第二矩阵中的第二数据,包括:
117.根据所述第二矩阵的首地址生成第二数据读取地址;
118.缓存根据所述第二数据读取地址读出的第二数据。
119.进一步的,所述根据所述第一数据位置信息生成第二数据输出控制信号,包括:
120.根据所述第一数据位置信息中的列信息生成所述第二数据输出控制信号。
121.进一步的,所述根据所述第二数据输出控制信号控制输出所述第二数据,包括:
122.根据所述第二数据输出控制信号中的列信息从所述第二数据中选择与所述列信息对应的第二数据并输出。
123.进一步的,所述第一数据为所述数据矩阵中的k列第一数据,所述第二数据为在所述矩阵计算中与所述k列第一数据对应的所述第二矩阵中的k行第二数据。
124.进一步的,所述根据所述第一数据和所述第二数据计算得到第三数据,包括:
125.接收一列第一数据;接收至少一行第二数据;根据所述一列第一数据和所述至少一行第二数据计算得到第三数据。
126.进一步的,所述第一数据的位置信息包括:所述第一数据在所述数据矩阵中的行坐标和列坐标。
127.在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。
128.本公开实施例还提供一种处理核,所述处理核包括上述实施例中至少一个任一矩阵计算电路,解码单元以及存储装置。
129.本公开实施例还提供一种芯片,所述芯片包括上述实施例中至少一个处理核。
130.本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述的矩阵计算方法。
131.本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述的矩阵计算方法。
132.本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述的矩阵计算方法。
133.本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
134.本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、任务段、或代码的一部分,该模块、任务段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
135.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬
件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
136.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
137.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献