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

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

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

87.如图6所示,为了实现上述第二数据读取电路的功能,可选的,所述第二数据读取电路还包括:
88.第二数据缓存电路601以及第二控制电路602;
89.其中,所述第二控制电路602,用于根据所述第二矩阵的首地址以及所述第一数据的位置信息生成第二数据读取地址;
90.所述第二数据缓存电路601,用于缓存根据所述第二数据读取地址读出的第二数据。
91.可选的,第二控制电路602接收指令解码电路解码得到的第二矩阵的首地址以及所述第一数据的位置信息中的列信息生成第二数据读取地址。可选的,所述第二控制电路中包括第二读取控制电路cl2以及第二地址生成电路ag2,所述第二读取控制电路cl2接收
指令解码电路解码得到的上述第二矩阵的首地址以及所述第一数据的位置信息,控制ag2生成第二数据读取地址addr2,以使得所述第二数据读取电路能够根据所述addr2一次读取第二矩阵中与所述第一数据对应的第二数据。示例性的,所述第一数据的位置信息为所述第一数据的列坐标,根据所述第二矩阵的首地址以及所述列坐标,所述第二地址生成电路ag2根据所述第二矩阵的首地址作为基础地址,将所述列坐标作为第二数据的行偏移值,得到第二数据的行地址,由此可以读取与所述第一数据对应的一行或多行第二数据。可选的,所述第一数据为对应于数据矩阵k列数据中的k列第一数据,所述第二数据为在所述矩阵计算中与所述k列第一数据对应的所述第二矩阵中的k行第二数据。
92.可选的,所述第二数据缓存电路601包括一个第二数据存储器或者第二数据存储区域,其大小为k行第二数据的大小,读取出的第二数据按照其在第二矩阵中的位置逐行缓存在所述第二数据缓存电路中。
93.如图2所示,所述计算电路203包括:
94.计算单元阵列pua,所述计算单元阵列中包括多个计算单元pu
1,1
,pu
1,2
,
……
pu
m,n

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

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

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

相关文献