一种对称矩阵的运算处理方法、装置、设备及介质与流程

文档序号:33416129发布日期:2023-03-10 22:42阅读:61来源:国知局
一种对称矩阵的运算处理方法、装置、设备及介质与流程

1.本发明涉及矩阵计算技术领域,特别涉及一种对称矩阵的运算处理方法、装置、设备及介质。


背景技术:

2.对称矩阵的运算处理被广泛应用于图像处理、边缘计算、人工智能以及大数据处理等技术领域中。在现有技术中,通常是利用两种方法来实现对称矩阵的运算处理,一种是使用cpu(central processing unit,中央处理器)来实现对称矩阵的运算处理,另一种是使用纯硬件的方法来实现对称矩阵的运算处理。但是,cpu的性能已经逼近极限,无法进一步提升对称矩阵的处理效率。而使用纯硬件的方法运算处理对称矩阵时,因为涉及到软硬件的数据交互过程,不仅需要从软件算法中提取对称矩阵的计算结果,而且,还需要将对称矩阵的计算结果传递给硬件,当硬件计算完成后,再将计算结果反馈给软件算法,由此就导致在使用纯硬件的方法在运算处理对称矩阵时,运算处理效率较低。目前,针对这一技术问题,还没有较为有效的解决办法。
3.由此可见,如何进一步提高对称矩阵的运算效率,是本领技术人员亟待解决的技术问题。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种对称矩阵的运算处理方法、装置、设备及介质,以进一步提高对称矩阵的运算效率。其具体方案如下:
5.一种对称矩阵的运算处理方法,应用于risc-v处理器;该方法包括:
6.当接收到使能告知指令时,则从cpu的存储单元中读取待运算对象中对称矩阵的目标尺寸;其中,所述待运算对象由m个对称矩阵所组成;m≥1;
7.根据目标读写指令从所述存储单元中读取待运算对象中所有对称矩阵上三角或下三角部分的元素,得到目标元素集合,并根据所述目标元素集合和所述目标尺寸对所述待运算对象进行运算处理,得到目标运算结果;
8.将所述目标运算结果存储至所述cpu的内存,并利用结束运算指令通知所述cpu从所述内存读取所述目标运算结果,以完成对所述待运算对象的运算处理。
9.优选的,所述根据所述目标元素集合和所述目标尺寸对所述待运算对象进行运算处理的过程,包括:
10.若所述待运算对象中只含有一个对称对阵,则根据所述目标元素集合和所述目标尺寸对所述待运算对象进行求逆运算;
11.若所述待运算对象中含有两个及两个以上的对称矩阵,则根据所述目标元素集合和所述目标尺寸对所述待运算对象进行求和运算或乘积运算。
12.优选的,所述将所述目标运算结果存储至所述cpu的内存,并利用结束运算指令通知所述cpu从所述内存读取所述目标运算结果的过程,包括:
13.当将所述目标运算结果存储至所述cpu的所述内存时,则对目标寄存器的标志位进行更新;
14.当所述运算结束指令识别到所述目标寄存器的标志位发生更新时,则通知所述cpu从所述内存读取所述目标运算结果。
15.优选的,所述根据所述目标元素集合和所述目标尺寸对所述待运算对象进行运算处理,得到目标运算结果的过程,包括:
16.基于对称矩阵的属性特征,并根据所述目标元素集合和所述目标尺寸对所述待运算对象中所有对称矩阵的全部元素进行数据恢复;
17.当所述待运算对象中所有对称矩阵的全部元素恢复完毕时,则对所述待运算对象进行运算处理,以得到所述目标运算结果。
18.优选的,所述基于对称矩阵的属性特征,并根据所述目标元素集合和所述目标尺寸对所述待运算对象中所有对称矩阵的全部元素进行数据恢复的过程,包括:
19.当所述待运算对象为第一对称矩阵和第二对称矩阵的乘积运算或求和运算时,则根据第一读写指令从所述存储单元读取所述第一对称矩阵上三角部分的元素,得到第一元素集合;
20.根据所述第一元素集合和所述目标尺寸对所述第一对称矩阵的全部元素进行数据恢复,并按照列的方式在所述risc-v处理器的ram对应存储所述第一对称矩阵中的全部元素;
21.根据第二读写指令从所述存储单元读取所述第二对称矩阵下三角部分的元素,得到第二元素集合;
22.根据所述第二元素集合和所述目标尺寸对所述第二对称矩阵的全部元素进行数据恢复,并按照行的方式在所述ram对应存储所述第二对称矩阵中的全部元素。
23.优选的,所述当所述待运算对象中所有对称矩阵的全部元素恢复完毕时,则对所述待运算对象进行运算处理,以得到所述目标运算结果的过程,包括:
24.当所述第一对称矩阵和所述第二对称矩阵中的所有元素恢复完毕时,则从所述ram中读取所述第一对称矩阵和所述第二对称矩阵的全部元素,并对所述第一对称矩阵和所述第二对称矩阵进行乘积运算或求和运算,以得到所述目标运算结果。
25.优选的,所述从所述ram中读取所述第一对称矩阵和所述第二对称矩阵的全部元素,并对所述第一对称矩阵和所述第二对称矩阵进行乘积运算或求和运算,以得到所述目标运算结果的过程,包括:
26.在相同的时钟周期内从所述ram读取所述第一对称矩阵第i行所对应的元素,并从所述ram读取所述第二对称矩阵第i列所对应的元素;其中,1≤i≤n,n为所述第一对称矩阵的行数或列数;
27.对所述第一对称矩阵第i行所对应的元素以及所述第二对称矩阵第i列所对应的元素进行乘积运算或求和运算,以得到所述目标运算结果。
28.相应的,本发明还公开了一种对称矩阵的运算处理装置,应用于risc-v处理器;该装置包括:
29.指令接收模块,用于当接收到使能告知指令时,则从cpu的存储单元中读取待运算对象中对称矩阵的目标尺寸;其中,所述待运算对象由m个对称矩阵所组成;m≥1;
30.运算处理模块,用于根据目标读写指令从所述存储单元中读取待运算对象中所有对称矩阵上三角或下三角部分的元素,得到目标元素集合,并根据所述目标元素集合和所述目标尺寸对所述待运算对象进行运算处理,得到目标运算结果;
31.运算结束模块,用于将所述目标运算结果存储至所述cpu的内存,并利用结束运算指令通知所述cpu从所述内存读取所述目标运算结果,以完成对所述待运算对象的运算处理。
32.相应的,本发明还公开了一种对称矩阵的运算处理设备,包括:
33.存储器,用于存储计算机程序;
34.处理器,用于执行所述计算机程序时实现如前述所公开的一种对称矩阵的运算处理方法的步骤。
35.相应的,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述所公开一种对称矩阵的运算处理方法的步骤。
36.可见,在本发明中,当risc-v处理器接收到使能告知指令时,首先是从cpu的存储单元中读取待运算对象中对称矩阵的目标尺寸;然后,再根据目标读写指令从存储单元中读取待运算对象中所有对称矩阵的上三角或下三角部分的元素,得到目标元素集合,并根据目标元素集合和目标尺寸对待运算对象进行运算处理,得到目标运算结果;之后,risc-v处理器会将目标运算结果存储至cpu的内存,并利用结束运算指令通知cpu从内存中读取待运算对象的目标运算结果,从而完成对待运算对象的运算处理。相较于现有技术而言,通过本发明所提供的方法是利用risc-v处理器自身所具有的易扩展指令特性,设计了cpu指令层面的协处理器,在此情况下就可以在cpu指令层面实现对称矩阵的相关运算处理,所以,通过该方法就可以显著提高对称矩阵的运算效率。相应的,本发明所提供的一种对称矩阵的运算处理装置、设备及介质,同样具有上述有益效果。
附图说明
37.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
38.图1为本发明实施例所提供的一种对称矩阵的运算处理方法的流程图;
39.图2为本发明实施例所提供的一种基于risc-v处理器在运算处理对称矩阵时的处理架构示意图;
40.图3为对称矩阵a的示意图;
41.图4为对称矩阵b的示意图;
42.图5为本发明实施例所提供的一种对称矩阵的运算处理装置的结构图;
43.图6为本发明实施例所提供的一种对称矩阵的运算处理设备的结构图。
具体实施方式
44.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.请参见图1,图1为本发明实施例所提供的一种对称矩阵的运算处理方法的流程图,该方法包括:
46.步骤s11:当接收到使能告知指令时,则从cpu的存储单元中读取待运算对象中对称矩阵的目标尺寸;其中,待运算对象由m个对称矩阵所组成;m≥1;
47.步骤s12:根据目标读写指令从存储单元中读取待运算对象中所有对称矩阵上三角或下三角部分的元素,得到目标元素集合,并根据目标元素集合和目标尺寸对待运算对象进行运算处理,得到目标运算结果;
48.步骤s13:将目标运算结果存储至cpu的内存,并利用结束运算指令通知cpu从内存读取目标运算结果,以完成对待运算对象的运算处理。
49.在本实施例中,是提供了一种对称矩阵的运算处理方法,利用该方法可以显著提高对称矩阵的运算效率。该运算处理方法是以risc-v处理器为执行主体进行具体说明。
50.当risc-v处理器接收到使能告知指令时,risc-v处理器首先会从cpu的存储单元中读取待运算对象中对称矩阵的目标尺寸,其中,待运算对象是由m个对称矩阵所组成。也即,待运算对象中既可以只含有一个对称矩阵,也可以包含两个或两个以上的对称矩阵。而目标尺寸是指待运算对象中对称矩阵的尺寸,比如:对称矩阵为3*3的矩阵,或者4*4的矩阵等等。
51.当risc-v处理器从cpu的存储单元中读取得到待运算对象的目标尺寸之后,risc-v处理器会根据目标读写指令从cpu的存储单元中继续读取待运算对象中所有对称矩阵在上三角部分或下三角部分的元素,得到目标元素集合。
52.可以理解的是,因为待运算对象中所有的矩阵均为对称矩阵,而对称矩阵中的元素具有在以主对角线为对称轴时对应相等的属性特征,所以,根据对称矩阵所具有的这一属性特征就可以根据目标元素集合和目标尺寸恢复出待运算对象中所有对称矩阵的全部元素。换言之,risc-v处理器可以根据目标元素集合和目标尺寸对待运算对象进行运算处理,从而得到待运算对象的目标运算结果。
53.当risc-v处理器计算出待运算对象的目标运算结果之后,risc-v处理器会将待运算对象的目标运算结果存储到cpu的内存当中,并利用结束运算指令通知cpu从其内存中读取待运算对象的目标运算结果,从而完成对待运算对象的运算处理。
54.需要说明的是,risc-v处理器将待运算对象的目标运算结果存储到cpu的内存中,一方面是因为cpu的内存有足够的存储空间来存储待运算对象的目标运算结果,另一方面是因为cpu的内存具有较为快速的数据存取速度,所以,risc-v处理器将待运算对象的目标运算结果存储至cpu的内存时,就可以相对提高在对待运算对象进行运算处理时的速度。
55.显然,由于risc-v处理器是基于精简指令集计算机原理建立的开放指令集架构,根据用户需求可以使用软件编译出很多用户自身所需要的指令集。在本实施例中是利用risc-v处理器自身所具备的易扩展指令特性,设计cpu层面的协处理器,这样就可以在cpu层面控制硬件来实现对称矩阵的运算,由此就可以显著提高对称矩阵的运算效率。
56.可见,在本实施例中,当risc-v处理器接收到使能告知指令时,首先是从cpu的存
储单元中读取待运算对象中对称矩阵的目标尺寸;然后,再根据目标读写指令从存储单元中读取待运算对象中所有对称矩阵的上三角或下三角部分的元素,得到目标元素集合,并根据目标元素集合和目标尺寸对待运算对象进行运算处理,得到目标运算结果;之后,risc-v处理器会将目标运算结果存储至cpu的内存,并利用结束运算指令通知cpu从内存中读取待运算对象的目标运算结果,从而完成对待运算对象的运算处理。相较于现有技术而言,通过本实施例所提供的方法是利用risc-v处理器自身所具有的易扩展指令特性,设计了cpu指令层面的协处理器,在此情况下就可以在cpu指令层面实现对称矩阵的相关运算处理,所以,通过该方法就可以显著提高对称矩阵的运算效率。
57.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:根据目标元素集合和目标尺寸对待运算对象进行运算处理的过程,包括:
58.若待运算对象中只含有一个对称对阵,则根据目标元素集合和目标尺寸对待运算对象进行求逆运算;
59.若待运算对象中含有两个及两个以上的对称矩阵,则根据目标元素集合和目标尺寸对待运算对象进行求和运算或乘积运算。
60.在实际应用中,如果待运算对象中只含有一个对称矩阵,则risc-v处理器就可以直接根据目标元素集合和目标尺寸对待运算对象中对称矩阵的全部元素进行数据恢复,并在待运算对象对称矩阵中的全部元素恢复完毕时,再对待运算对象对称矩阵进行求逆运算。
61.如果待运算对象中含有两个或两个以上的对称矩阵时,则risc-v处理器就可以根据目标元素集合和目标尺寸对待运算对象中所有对称矩阵的全部元素进行恢复,当待运算对象中所有对称矩阵的全部元素恢复完毕时,则risc-v处理器就可以对待运算对象中所有的对称矩阵进行求和运算或乘积运算。
62.显然,通过本实施例所提供的技术方案,就可以提高本技术所提供技术方案在实际应用中的普适性。
63.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:将目标运算结果存储至cpu的内存,并利用结束运算指令通知cpu从内存读取目标运算结果的过程,包括:
64.当将目标运算结果存储至cpu的内存时,则对目标寄存器的标志位进行更新;
65.当运算结束指令识别到目标寄存器的标志位发生更新时,则通知cpu从内存读取目标运算结果。
66.在本实施例中,当risc-v处理器将待运算对象的目标运算结果存储到cpu的内存时,为了使得cpu可以及时知悉到risc-v处理器对待运算对象的运算处理进度,是利用目标寄存器的标志位来表征risc-v处理器是否计算出待运算对象的目标运算结果。假设目标寄存器标志位的初始值为0,那么当目标寄存器标志位的值由0跳变为1,则说明risc-v处理器已经将待运算对象的目标运算结果存储到cpu的内存中。
67.与此同时,运算结束指令会实时识别目标寄存器的标志位,当运算结束指令识别到目标寄存器的标志位发生更新变化时,risc-v处理器就会通知cpu从其内存中读取待运算对象的目标运算结果,至此就完成了对待运算对象的运算处理。
68.显然,通过本实施例所提供的技术方案,就可以使得cpu更为及时地获取得到待运算对象的目标运算结果。
69.基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:根据目标元素集合和目标尺寸对待运算对象进行运算处理,得到目标运算结果的过程,包括:
70.基于对称矩阵的属性特征,并根据目标元素集合和目标尺寸对待运算对象中所有对称矩阵的全部元素进行数据恢复;
71.当待运算对象中所有对称矩阵的全部元素恢复完毕时,则对待运算对象进行运算处理,以得到目标运算结果。
72.可以理解的是,因为待运算对象中所有的矩阵均为对称矩阵,而对称矩阵中的元素具有在以主对角线为对称轴时对应相等的属性特征,所以,当risc-v处理器从cpu的存储单元中读取得到待运算对象中所有对称矩阵的上三角或下三角部分的元素时,根据对称矩阵所具有的这一属性特性,再结合待运算对象中对称矩阵的目标尺寸以及目标元素集合就可以对待运算对象中所有对称矩阵的全部元素进行数据恢复。
73.当待运算对象中所有对称矩阵的全部元素都恢复完毕时,risc-v处理器就相当于获取得到了数据元素完整的对称矩阵。在此情况下,risc-v处理器就可以对待运算对象中的对称矩阵进行相关的运算处理,并得到待运算对象的目标运算结果。
74.作为一种优选的实施方式,上述步骤:基于对称矩阵的属性特征,并根据目标元素集合和目标尺寸对待运算对象中所有对称矩阵的全部元素进行数据恢复的过程,包括:
75.当待运算对象为第一对称矩阵和第二对称矩阵的乘积运算或求和运算时,则根据第一读写指令从存储单元读取第一对称矩阵上三角部分的元素,得到第一元素集合;
76.根据第一元素集合和目标尺寸对第一对称矩阵的全部元素进行数据恢复,并按照列的方式在risc-v处理器的ram对应存储第一对称矩阵中的全部元素;
77.根据第二读写指令从存储单元读取第二对称矩阵下三角部分的元素,得到第二元素集合;
78.根据第二元素集合和目标尺寸对第二对称矩阵的全部元素进行数据恢复,并按照行的方式在ram对应存储第二对称矩阵中的全部元素。
79.具体的,当待运算对象为第一对称矩阵和第二对称矩阵的乘积运算或求和运算时,则risc-v处理器可以先根据第一读写指令从cpu的存储单元中读取第一对称矩阵上三角部分的元素,得到第一元素集合,然后,再根据第一元素集合和目标尺寸对第一对称矩阵的全部元素进行数据恢复,并按照列的方式在risc-v处理器的ram(random access memory,随机存取存储器)中对应存储第一对称矩阵中的全部元素。
80.之后,risc-v处理器再根据第二读写指令从存储单元中读取第二对称矩阵下三角部分的元素,得到第二元素集合,然后,再根据第二元素集合和目标尺寸对第二对称矩阵的全部元素进行数据恢复,并按照行的方式在risc-v处理器的ram中对应存储第二对称矩阵中的全部元素。
81.能够想到的是,当以此种方式来对第一对称矩阵和第二对称矩阵中的全部元素在risc-v处理器中的ram中进行存储之后,就可以更加便于在后续过程中对第一对称矩阵和第二对称矩阵在进行运算时的数据读取过程,由此就可以提高对称矩阵的运算效率。
82.作为一种优选的实施方式,上述步骤:当待运算对象中所有对称矩阵的全部元素恢复完毕时,则对待运算对象进行运算处理,以得到目标运算结果的过程,包括:
83.当第一对称矩阵和第二对称矩阵中的所有元素恢复完毕时,则从ram中读取第一对称矩阵和第二对称矩阵的全部元素,并对第一对称矩阵和第二对称矩阵进行乘积运算或求和运算,以得到目标运算结果。
84.能够想到的是,当第一对称矩阵和第二对称矩阵中的所有元素均恢复完毕时,就相当于是在risc-v处理器的ram中存储了第一对称矩阵和第二对称矩阵的全部数据,此时risc-v处理器通过在ram中读取第一对称矩阵和第二对称矩阵的全部元素,就可以获取得到完整的第一对称矩阵和第二对称矩阵。在此情况下,risc-v处理器就可以对第一对称矩阵和第二对称矩阵进行乘积运算或求和运算,并由此得到第一对称矩阵和第二对称矩阵的目标运算结果。
85.作为一种优选的实施方式,上述步骤:从ram中读取第一对称矩阵和第二对称矩阵的全部元素,并对第一对称矩阵和第二对称矩阵进行乘积运算或求和运算,以得到目标运算结果的过程,包括:
86.在相同的时钟周期内从ram读取第一对称矩阵第i行所对应的元素,并从ram读取第二对称矩阵第i列所对应的元素;其中,1≤i≤n,n为第一对称矩阵的行数或列数;
87.对第一对称矩阵第i行所对应的元素以及第二对称矩阵第i列所对应的元素进行乘积运算或求和运算,以得到目标运算结果。
88.可以理解的是,因为第一对称矩阵中的数据在risc-v处理器的ram中是按照列进行存储的,而第二对称矩阵中的数据在risc-v处理器的ram中是按照行进行存储的,所以,在相同的时钟周期内就可以从ram中读取得到第一对称矩阵第i行所对应的元素,并从ram中读取得到第二对称矩阵第i列所对应的元素。
89.能够想到的是,当从ram中读取得到第一对称矩阵第i行所对应的元素,并从ram读取第二对称矩阵第i列所对应的元素时,就可以对第一对称矩阵第i行所对应的元素以及第二对称矩阵第i列所对应的元素进行乘积运算或求和运算,这样就得到了第一对称矩阵和第二对称矩阵乘积运算矩阵或求和运算矩阵中第i行、第i列所对应的元素。按照同样的方法,再对第一对称矩阵每一行所对应的元素和第二对称矩阵每一列所对应的元素进行乘积运算或求和运算,就可以得到第一对称矩阵和第二对称矩阵的目标运算结果。
90.显然,通过本实施例所提供的方法,因为可以在n个时钟周期内读取得到第一对称矩阵和第二对称矩阵中的全部元素,并完成对第一对称矩阵和第二对称矩阵的乘积运算或求和运算,所以,通过该方法就可以进一步提高对称矩阵的运算效率。
91.为了使得本领域技术人员能够清楚地知悉到本技术所提供技术方案的实现原理,此处通过一个应用场景实施例对前述所公开的内容进行详细说明。具体的,在本技术中是利用risc-v处理器本身所具有的易扩展指令的特性设计cpu层面的协处理器。在编译器层面生成特定的用于risc-v处理器的操作指令,并将其添加到传统的cpu指令中,进而在cpu层面通过硬件实现对称矩阵的运算处理。
92.此外,由于cpu的主频很高,并且,risc-v处理器本身具有开源的特性,可以进行自主设计,所以,本技术所提供的技术方案不仅能够提高对称矩阵的运算效率,而且,在边缘计算、图像处理,尤其是实时性要求较高的应用场景下也有着十分广阔的应用前景。
93.下面先对risc-v处理器指令的编码格式进行介绍,具体可参见表1。
94.表1
95.funct7rs2rs1xdxs1xs2rdopcode
96.其中,opcode[6,0]用于根据opcode编码表确定属于custom0~3中的哪一组指令类型,rd[4,0]表示目标寄存器,xs1、xs2、xd(各1bit)分别表示该指令是否需要读取源寄存器rs1和rs2及写回目标寄存器rd。如果这些寄存器对应的值为1表示需要,如果这些寄存器对应的值为0表示不需要;rs1[4:0]表示源寄存器1,rs2[4:0]表示源寄存器2,funct7[6:0]表示额外的编码空间,因此一个custom指令组(0~3)最多对应128条扩展指令。
[0097]
下面再对本技术实施例设计的用于risc-v处理器的指令进行介绍。具体可参见表2所示的内容。
[0098]
表2
[0099][0100]
请参见图2,图2为本发明实施例所提供的一种基于risc-v处理器在运算处理对称矩阵时的处理架构示意图。在图2所示的处理架构中,cpu包括exu(execute unit,执行单元)、wb(write back,写回单元)、lsu(load/store unit,存储单元)。risc-v处理器包括指令解析模块ins_ana、数据恢复模块data_recovre、ram存储阵列ram array、指令执行模块ctrl、数据相加模块mul_add和数据存储模块store。其中,risc-v处理器与exu、wb和lsu之间的接口均可以采用rocc(rocket custom coprocesser)接口。
[0101]
基于图2所提供的处理架构,此处以risc-v处理器对对称矩阵a和对称矩阵b进行乘积运算为例进行具体说明。需要注意的是,对称矩阵a和对称矩阵b中的数据、存储地址、
尺寸大小以及risc-v处理器完成运算之后的运算结果需要写入到cpu的内存中,需要在软件层面进行提取,然后给修改后的编译器进行编译,并将信息添加到对应的指令中。那么,risc-v处理器在对两个对称矩阵进行乘积运算时的处理流程包括:
[0102]
步骤101:软件程序在编译之后产生使能告知指令begin_prc,该指令会将目标寄存器1写为0。使能告知指令在被risc-v处理器中的指令解析模块ins_ana解析后,risc-v处理器准备开始工作。
[0103]
此时,risc-v处理器会根据操作数rs1存储的地址信息到cpu的存储单元lsu中读取矩阵a和矩阵b的矩阵尺寸,并会根据操作数rs2存储的地址信息到cpu的存储单元lsu中读取存储计算结果的内存地址des_addr。
[0104]
步骤102:接着运行第一读写指令a_data_pass,risc-v处理器中的指令解析模块ins_ana对第一读写指令a_data_pass解析后,会根据操作数rs1存储的地址信息到对应的内存地址中读取矩阵a在上三角部分的元素。需要注意的是,在往对应的内存地址中存储矩阵a在上三角部分的元素时,要按照行的方式在内存中进行存储。
[0105]
请参见图3,图3为对称矩阵a的示意图。在cpu的存储单元lsu中需要预先存储矩阵a在上三角部分元素。换言之,只需将以下数据存储到cpu的存储单元。
[0106]
a[0,0],a[0,1],a[0,2],a[0,3]
[0107]
a[1,1],a[1,2],a[1,3]
[0108]
a[2,2],a[2,3]
[0109]
a[3,3]
[0110]
其中,a[x,y]表示第一矩阵a中第x行第y列所对应的元素,并且,0≤x≤3,0≤y≤3。
[0111]
当risc-v处理器从cpu的存储单元lsu中读取到矩阵a在上三角部分的元素之后,risc-v处理器会根据矩阵a的尺寸和读入数据的顺序对矩阵a的全部元素进行数据恢复,并且,还会按照列的方式在risc-v处理器的ram_array中对应存储矩阵a的全部元素。
[0112]
具体的,risc-v处理器在从存储单元中读取数据时,读取数据的初始序号为0,最大序号为n2/2+n/2-1;之后,risc-v处理器会将序号为0、1、2

n-1的元素分别写入到ram_a_0、ram_a_1、

ram_a_n-1;将序号为1、n、n+1

2n-2(n+n-1-1)的元素分别写入到ram_a_0、ram_a_1、

ram_a_n-1;将序号为2、n+1、2n、2n+1

(n+n-1+n-2-1)的元素分别写入ram_a_0、ram_a_1、

ram_a_n-1;将序号为3、n+2、2n、3n-(1+2)

4n-1-(1+2+3)的元素分别写入ram_a_0、ram_a_1、

ram_a_n-1;将序号为m-1、m+n-1-1、m+n-1+n-2-1、m+n-1+n-2+n-3-1

m+n-1+n-2+n-3+...+n-m+1-1、m*n-(1+2+...+m-1)

(m+1)*n-1-(1+2+3+...+m)-1所对应的元素分别写入ram_a_0、ram_a_1、

ram_a_n-1。
[0113]
按照上述步骤就可以完成对矩阵a的数据恢复,并完成对矩阵a的数据存储。需要说明的是,ram_a_0存储的是矩阵a中第1列的元素,ram_a_1存储的是矩阵a中第2列的元素,ram_a_n-1存储的是矩阵a中第n列的元素。
[0114]
步骤s103:接着运行第二读写指令b_data_pass,risc-v处理器中的指令解析模块ins_ana会根据操作数rs1存储的地址信息到对应的存储地址中读取矩阵b的数据。同矩阵a相反,需要预先在cpu的存储单元lsu中存储矩阵b在下三角部分的元素,并且是按照列的方式在lsu中存储矩阵b下三角部分的元素。请参见图4,图4为对称矩阵b的示意图。也即,只需
将以下数据存储到cpu的存储单元lsu。
[0115]
b[0,0]
[0116]
b[1,0],b[1,1]
[0117]
b[2,0],b[2,1],b[2,2]
[0118]
b[3,0],b[3,1],b[3,2],b[3,3]
[0119]
其中,b[x,y]表示第二对称矩阵b中第x行第y列所对应的元素,并且,0≤x≤3,0≤y≤3。
[0120]
当risc-v处理器从cpu的存储单元中读取到矩阵b在下三角部分的元素之后,risc-v处理器会根据矩阵b的尺寸和读入数据的顺序对矩阵b中的全部元素进行数据恢复,并且,还会按照行的方式在risc-v处理器的ram_array中对应存储对称矩阵b中的全部元素。
[0121]
具体的,risc-v处理器在从存储单元中读取数据时,读取数据的初始序号为0,最大序号为n2/2+n/2-1;之后,risc-v处理器会将序号为0、1、2

n-1的元素分别写入到ram_b_0、ram_b_1、

ram_b_n-1;将序号为1、n、n+1

2n-2(n+n-1-1)的元素分别写入到ram_b_0、ram_b_1、

ram_b_n-1,将序号为2、n+1、2n、2n+1

(n+n-1+n-2-1)的元素分别写入ram_b_0、ram_b_1、

ram_b_n-1;将序号为3、n+2、2n、3n-(1+2)

4n-1-(1+2+3)的元素分别写入ram_b_0、ram_b_1、

ram_b_n-1;将序号为m-1、m+n-1-1、m+n-1+n-2-1、m+n-1+n-2+n-3-1、

、m+n-1+n-2+n-3+...+n-m+1-1、m*n-(1+2+...+m-1)...(m+1)*n-1-(1+2+3+...+m)-1所对应的元素分别写入ram_b_0、ram_b_1、

ram_b_n-1。
[0122]
按照上述步骤就可以完成对矩阵b的数据恢复,并完成对矩阵b的数据存储。需要注意的是,ram_b_0存储的是矩阵b中第1行的元素,ram_b_1存储的是矩阵b中第2行的元素,ram_b_n-1存储的是矩阵b中第n行的元素。
[0123]
步骤s104:risc-v处理器中的ctrl模块按照步骤s102和步骤s103进行读写操作。当将矩阵a和矩阵b的全部元素写入到ram_array当中时,就可以在相同的时钟周期内同时对ram_a_0

ram_a_n-1和ram_b_0

ram_b_n-1发起读操作,并从ram_a_0

ram_a_n-1中读出n个a数据,记作a[0,],此时就读出了矩阵a的第0行元素。同时从ram_b_0

ram_b_n-1读出n个b数据,记作b[,0],此时就读出了矩阵b的第0列元素。
[0124]
能够想到的是,因为矩阵a中的元素是按照列存储的,而矩阵b中的元素是按照行存储的,所以,通过读ram_a_0

ram_a_n-1正好读出一行a数据,通过读ram_b_0

ram_b_n-1正好读出一列b数据。之后,再将读出的n个a数据和n个b数据对应相乘,就可以得到c[0,0]。其中,c[0,0]表示矩阵a和矩阵b乘积结果矩阵c中第1行第1列所对应的元素。
[0125]
之后,再继续读ram_a_0

ram_a_n-1,读出n个a数据,记作a[1,],从而得到矩阵a的第1行元素,继续读ram_b_0

ram_b_n-1读出n个b数据,记作b[,1],从而得到矩阵b的第1列元素。此时用a[0,]乘以b[,1]得到c[0,1],用a[1,]乘以b[,0]得到c[1,0],用a[1,]乘以b[,1]得到c[1,1]。依次类推,就可以在n个时钟周期内读出矩阵a和矩阵b中的全部元素,并完成矩阵a和矩阵b的乘积运算。显然,通过这样的ram存储方式和控制方式就极大加快了对称矩阵的运算效率。
[0126]
步骤s105:将矩阵a和矩阵b的运算结果写到目的地址des_addr中,并将目标寄存器的标志位更新为1。
[0127]
步骤s016:当结束运行指令prc_end识别到目标寄存器的标志位更新为1时,risc-v处理器就会通知cpu从目的地址des_addr中读取数据。此时就完成了对矩阵a和矩阵b的乘积运算。在实际应用中,如果还有其它对称矩阵的乘积运算就可以重新执行以上步骤来进行下一轮的矩阵乘积运算。
[0128]
显然,本实施例是利用risc-v处理器自身所具有的易扩展指令特性,设计了cpu指令层面的协处理器,在此情况下就可以在cpu指令层面实现对称矩阵的相关运算处理,所以,通过该方法就可以显著提高对称矩阵的运算效率。
[0129]
请参见图5,图5为本发明实施例所提供的一种对称矩阵的运算处理装置的结构图,该装置包括:
[0130]
指令接收模块21,用于当接收到使能告知指令时,则从cpu的存储单元中读取待运算对象中对称矩阵的目标尺寸;其中,待运算对象由m个对称矩阵所组成;m≥1;
[0131]
运算处理模块22,用于根据目标读写指令从存储单元中读取待运算对象中所有对称矩阵上三角或下三角部分的元素,得到目标元素集合,并根据目标元素集合和目标尺寸对待运算对象进行运算处理,得到目标运算结果;
[0132]
运算结束模块23,用于将目标运算结果存储至cpu的内存,并利用结束运算指令通知cpu从内存读取目标运算结果,以完成对待运算对象的运算处理。
[0133]
优选的,运算处理模块22,包括:
[0134]
第一处理单元,用于若所述待运算对象中只含有一个对称对阵,则根据所述目标元素集合和所述目标尺寸对所述待运算对象进行求逆运算;
[0135]
第二处理单元,用于若所述待运算对象中含有两个及两个以上的对称矩阵,则根据所述目标元素集合和所述目标尺寸对所述待运算对象进行求和运算或乘积运算。
[0136]
优选的,运算结束模块23,包括:
[0137]
标志位更新单元,用于当将所述目标运算结果存储至所述cpu的所述内存时,则对目标寄存器的标志位进行更新;
[0138]
结果读取单元,用于当所述运算结束指令识别到所述目标寄存器的标志位发生更新时,则通知所述cpu从所述内存读取所述目标运算结果。
[0139]
优选的,运算处理模块22,包括:
[0140]
数据恢复子模块,用于基于对称矩阵的属性特征,并根据所述目标元素集合和所述目标尺寸对所述待运算对象中所有对称矩阵的全部元素进行数据恢复;
[0141]
运算处理子模块,用于当所述待运算对象中所有对称矩阵的全部元素恢复完毕时,则对所述待运算对象进行运算处理,以得到所述目标运算结果。
[0142]
优选的,数据恢复子模块,包括:
[0143]
第一读取单元,用于当所述待运算对象为第一对称矩阵和第二对称矩阵的乘积运算或求和运算时,则根据第一读写指令从所述存储单元读取所述第一对称矩阵上三角部分的元素,得到第一元素集合;
[0144]
第一存储单元,用于根据所述第一元素集合和所述目标尺寸对所述第一对称矩阵的全部元素进行数据恢复,并按照列的方式在所述risc-v处理器的ram对应存储所述第一对称矩阵中的全部元素;
[0145]
第二读取单元,用于根据第二读写指令从所述存储单元读取所述第二对称矩阵下
三角部分的元素,得到第二元素集合;
[0146]
第二存储单元,用于根据所述第二元素集合和所述目标尺寸对所述第二对称矩阵的全部元素进行数据恢复,并按照行的方式在所述ram对应存储所述第二对称矩阵中的全部元素。
[0147]
优选的,运算处理子模块,包括:
[0148]
运算处理单元,用于当所述第一对称矩阵和所述第二对称矩阵中的所有元素恢复完毕时,则从所述ram中读取所述第一对称矩阵和所述第二对称矩阵的全部元素,并对所述第一对称矩阵和所述第二对称矩阵进行乘积运算或求和运算,以得到所述目标运算结果。
[0149]
优选的,运算处理单元,包括:
[0150]
元素读取子单元,用于在相同的时钟周期内从所述ram读取所述第一对称矩阵第i行所对应的元素,并从所述ram读取所述第二对称矩阵第i列所对应的元素;其中,1≤i≤n,n为所述第一对称矩阵的行数或列数;
[0151]
运算处理子单元,用于对所述第一对称矩阵第i行所对应的元素以及所述第二对称矩阵第i列所对应的元素进行乘积运算或求和运算,以得到所述目标运算结果。
[0152]
本发明实施例所提供的一种对称矩阵的运算处理装置,具有前述所公开的一种对称矩阵的运算处理方法所具有的有益效果。
[0153]
请参见图6,图6为本发明实施例所提供的一种对称矩阵的运算处理设备的结构图,该设备包括:
[0154]
存储器31,用于存储计算机程序;
[0155]
处理器32,用于执行计算机程序时实现如前述所公开的一种对称矩阵的运算处理方法的步骤。
[0156]
本发明实施例所提供的一种对称矩阵的运算处理设备,具有前述所公开的一种对称矩阵的运算处理方法所具有的有益效果。
[0157]
相应的,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述所公开的一种对称矩阵的运算处理方法的步骤。
[0158]
本发明实施例所提供的一种计算机可读存储介质,具有前述所公开的一种对称矩阵的运算处理方法所具有的有益效果。
[0159]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0160]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0161]
以上对本发明所提供的一种对称矩阵的运算处理方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1