稀疏数据的查询方法、装置、设备和计算机可读存储介质

文档序号:33124327发布日期:2023-02-01 04:40阅读:23来源:国知局
稀疏数据的查询方法、装置、设备和计算机可读存储介质

1.本发明涉及电子信息技术领域,尤其涉及一种稀疏数据的查询方法、装置、设备和计算机可读存储介质。


背景技术:

2.稀疏表是压缩稀疏数据的一种重要表示方法,广泛应用于电子信息技术领域。稀疏表具有很多种表达方式,包括压缩稀疏行、压缩稀疏列以及坐标轴索引。
3.压缩稀疏行、压缩稀疏列以及坐标轴索引需要直接存储行坐标或者列坐标,当向量维度比较高或者稀疏性比较低时,需要较大的存储空间,同时在查找数据时存在访问存储器次数过多的问题,从而使得数据的查询效率比较低。
4.因此,如何节省存储空间以及提高稀疏数据的查询效率,是相关领域技术人员亟待解决的技术问题。


技术实现要素:

5.本发明提供一种稀疏数据的查询方法、装置、设备和计算机可读存储介质,用以解决现有技术中如何节省存储空间以及提高稀疏数据的查询效率的技术问题。
6.本发明提供一种稀疏数据的查询方法,包括:
7.获取待查询数据的索引地址和所述待查询数据对应原始稀疏数据的一级索引表;所述一级索引表包括多个一级存储单元,用于存储所述原始稀疏数据中每一个数的一级索引值,所述一级索引值用于表征对应的数是否为零;
8.获取所述原始稀疏数据的二级索引表,所述二级索引表包括多个二级存储单元,用于存储二级索引值,所述二级索引值基于与所述二级存储单元对应的多个一级存储单元中的一级索引值确定;
9.基于所述索引地址和所述一级索引表确定所述待查询数据对应的目标一级索引值,并基于所述目标一级索引值、所述一级索引表以及所述二级索引表确定目标存储地址;
10.基于所述目标存储地址从数据存储器中获取所述索引地址对应的目标查询数据,所述数据存储器用于存储所述原始稀疏数据中的非零数。
11.根据本发明提供的一种稀疏数据的查询方法,所述基于所述索引地址和所述一级索引表确定所述待查询数据对应的目标一级索引值,包括:
12.获取所述一级索引表中一级存储单元的存储容量,所述存储容量表示所述一级存储单元中包含的一级存储位的数量,所述一级存储位用于存储一级索引值;
13.基于所述索引地址和所述存储容量,确定目标存储单元编号以及目标存储位编号;基于所述目标存储单元编号从所述一级索引表中确定出所述待查询数据对应的目标一级存储单元;
14.获取所述目标一级存储单元中所述目标存储位编号对应一级存储位上存储的一级索引值,并确定所述一级索引值为所述待查询数据对应的目标一级索引值。
15.根据本发明提供的一种稀疏数据的查询方法,所述基于所述目标一级索引值、所述一级索引表以及所述二级索引表确定目标存储地址,包括:
16.判断所述目标一级索引值是否为第一标识值,所述第一标识值用于表征一级索引值对应的数为非零数;
17.在所述目标一级索引值为所述第一标识值的情况下,从所述一级索引表中获取所述目标一级索引值对应的目标一级存储单元中的所有一级索引值,得到目标一级索引数据;
18.确定所述二级索引表中与所述目标一级存储单元具有相同编号的二级存储单元为所述待查询数据对应的目标二级存储单元;
19.基于所述目标一级索引值、所述目标一级索引数据以及所述目标二级存储单元中存储的目标二级索引值,确定所述待查询数据对应的目标存储地址。
20.根据本发明提供的一种稀疏数据的查询方法,所述基于所述目标一级索引值、所述目标一级索引数据以及所述目标二级存储单元中存储的目标二级索引值,确定所述待查询数据对应的目标存储地址,包括:
21.基于所述目标一级索引值和所述目标一级索引数据生成掩码数据,并基于所述目标一级索引数据和所述掩码数据获取第一非零个数;
22.基于所述目标二级索引值得到第二非零个数,并基于所述第一非零个数和所述第二非零个数获取目标非零个数;
23.基于所述目标非零个数,确定所述待查询数据在数据存储器中的目标存储地址。
24.根据本发明提供的一种稀疏数据的查询方法,所述基于所述目标一级索引值和所述目标一级索引数据生成掩码数据,并基于所述目标一级索引数据和所述掩码数据获取第一非零个数,包括:
25.将所述目标一级索引数据中位于所述目标一级索引值前面的所有一级索引值赋值为1以及将其他一级索引值赋值为0,得到所述掩码数据;
26.将所述目标一级索引数据和所述掩码数据输入至与逻辑运算器中,得到逻辑运算结果;
27.将所述逻辑运算结果输入至加法器树电路中,得到所述第一非零个数。
28.根据本发明提供的一种稀疏数据的查询方法,所述方法还包括:
29.在所述目标一级索引值为第二标识值的情况下,输出所述索引地址对应的目标查询数据为零,所述第二标识值用于表征一级索引值对应的数为零。
30.本发明还提供一种稀疏数据的查询装置,包括:
31.第一获取模块,用于获取待查询数据的索引地址和所述待查询数据对应原始稀疏数据的一级索引表;所述一级索引表包括多个一级存储单元,用于存储所述原始稀疏数据中每一个数的一级索引值;
32.第二获取模块,用于获取所述原始稀疏数据的二级索引表,所述二级索引表包括多个二级存储单元,用于存储二级索引值,所述二级索引值基于与所述二级存储单元对应的多个一级存储单元中的一级索引值确定;
33.地址查询模块,用于基于所述索引地址和所述一级索引表确定所述待查询数据对应的目标一级索引值,并基于所述目标一级索引值、所述一级索引表以及所述二级索引表
确定目标存储地址;
34.数据查询模块,用于基于所述目标存储地址从数据存储器中获取所述索引地址对应的目标查询数据,所述数据存储器用于存储所述原始稀疏数据中的非零数。
35.本发明还提供一种稀疏数据的查询设备,包括控制器,所述控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的稀疏数据的查询方法。
36.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的稀疏数据的查询方法。
37.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述的稀疏数据的查询方法。
38.本发明提供的稀疏数据的查询方法、装置、设备和计算机可读存储介质,通过一级索引表和二级索引表存储原始稀疏数据中每一个数的索引值,而在数据存储器中仅存储原始稀疏数据中的非零数,从而能够极大地节省数据存储器的存储空间,达到节约存储资源的效果,从而根据待查询数据对应的目标一级索引值的数值判断该待查询数据是否为零,并根据判断结果进一步确定查询数据对应的目标存储地址,从而基于目标存储地址访问数据存储器以获取目标查询数据,使得整个稀疏数据查询过程最多需要访问三次存储器就能获取需要的目标查询数据,即最多需要访问两次表存储器以及最多需要访问一次数据存储器,大大减少了存储器的访问次数,有效提高了稀疏数据的查询效率,从而解决了现有技术中如何节省存储空间以及提高稀疏数据的查询效率的技术问题。
附图说明
39.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1是本发明实施例提供的稀疏数据的查询方法的流程示意图之一;
41.图2是本发明实施例中一级存储单元与二级存储单元之间的对应关系的示意图;
42.图3是本发明实施例提供的稀疏数据的查询方法的流程示意图之二;
43.图4是本发明实施例中一级索引表的结构示意图;
44.图5是本发明实施例提供的稀疏数据的查询方法的流程示意图之三;
45.图6是本发明实施例提供的稀疏数据的查询方法的流程示意图之四;
46.图7是本发明实施例中一级索引值与二级索引值之间的对应关系的示意图;
47.图8是本发明实施例中目标非零个数的确定方法的示意图;
48.图9是本发明实施例提供的稀疏数据的查询方法的流程示意图之五;
49.图10是本发明实施例提供的稀疏数据的查询设备的结构示意图之一;
50.图11是本发明实施例提供的稀疏数据的查询设备中控制器的结构示意图;
51.图12是本发明实施例提供的稀疏数据的查询设备的结构示意图之二;
52.图13是本发明实施例的稀疏数据的查询设备中的第一计算单元的结构示意图;
53.图14是本发明实施例提供的稀疏数据的查询装置的结构示意图。
具体实施方式
54.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
55.下面结合图1至图9描述本发明提供的稀疏数据的查询方法。如图1所示,本发明提供一种稀疏数据的查询方法,包括:
56.步骤101,获取待查询数据的索引地址和待查询数据对应原始稀疏数据的一级索引表;一级索引表包括多个一级存储单元,用于存储原始稀疏数据中每一个数的一级索引值,一级索引值用于表征对应的数是否为零。
57.其中,索引地址表示待查询数据对应的一级索引值在一级索引表中的地址。一级索引表中的每一个一级存储单元中存储有多个一级索引值,每一个一级索引值对应原始稀疏数据中的一个数,用于表征其对应的数是否为零。
58.步骤102,获取原始稀疏数据的二级索引表,二级索引表包括多个二级存储单元,用于存储二级索引值,二级索引值基于与二级存储单元对应的多个一级存储单元中的一级索引值确定。
59.步骤103,基于索引地址和一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值、一级索引表以及二级索引表确定目标存储地址。
60.具体地,获取一级索引表中与索引地址具有相同地址的一级索引值作为待查询数据对应的目标一级索引值。进一步地,由于一级索引值用于表示其对应的数是否为零,因此可以根据待查询数据对应的目标一级索引值的数值判断该待查询数据是否为零,在根据目标一级索引值判定待查询数据为零的情况下直接输出查询结果,在根据目标一级索引值判定待查询数据为非零数的情况下,根据目标一级索引值、一级索引表以及二级索引表查询该查询数据在数据存储器中的目标存储地址。
61.步骤104,基于目标存储地址从数据存储器中获取索引地址对应的目标查询数据,数据存储器用于存储原始稀疏数据中的非零数。其中,目标查询数据与待查询数据对应,目标查询数据是查找到的数据,待查询数据表示待查找的数据。数据存储器用于按照原始顺序存储原始稀疏数据中非零数,即数据存储器存储的原始稀疏数据中的非零数的顺序不变。
62.上述步骤101至步骤104,通过一级索引表和二级索引表存储原始稀疏数据中每一个数的索引值,而在数据存储器中仅存储原始稀疏数据中的非零数,从而能够极大地节省数据存储器的存储空间,达到节约存储资源的效果,从而根据待查询数据对应的目标一级索引值的数值判断该待查询数据是否为零,并根据判断结果进一步确定查询数据对应的目标存储地址,从而基于目标存储地址访问数据存储器以获取目标查询数据,使得整个稀疏数据查询过程最多需要访问三次存储器就能获取需要的目标查询数据,即最多需要访问两次表存储器以及最多需要访问一次数据存储器,大大减少了存储器的访问次数,有效提高了稀疏数据的查询效率,从而解决了现有技术中如何节省存储空间以及提高稀疏数据的查询效率的技术问题。
63.在一个实施例中,一级索引表中的多个一级存储单元按照编号顺序依次排列,二
级索引表中的多个二级存储单元按照编号顺序依次排列,一级存储单元和二级存储单元的编号相对应。“二级存储单元对应的多个一级存储单元”表示排列在与二级存储单元具有相同编号的一级存储单元的前面的所有一级存储单元。二级索引值为与二级存储单元对应的多个一级存储单元中的一级索引值的累加值。
64.图2示例了一级存储单元与二级存储单元之间的对应关系,如图2所示,一级索引表包括顺序排列的一级存储单元0、一级存储单元1、一级存储单元2以及一级存储单元3。二级索引表包括顺序排列的二级存储单元0、二级存储单元1、二级存储单元2以及二级存储单元3,其中,数字0至数字3表示一级存储单元或者二级存储单元的编号。
65.由于与二级存储单元0具有相同编号的一级存储单元0前面无其他一级存储单元,因此无一级存储单元与二级存储单元0对应,即二级存储单元0中存储的二级索引值为零或者为无效值。由于与二级存储单元1具有相同编号的一级存储单元1前面的一级存储单元为一级存储单元0,因此二级存储单元1与一级存储单元0对应,即二级存储单元1中存储的二级索引值基于一级存储单元0中存储的一级索引值确定。
66.以此类推,二级存储单元2与一级存储单元0和一级存储单元1对应,即二级存储单元2存储的二级索引值基于一级存储单元0和一级存储单元1中存储的一级索引值确定。而二级存储单元3与一级存储单元0、一级存储单元1以及一级存储单元2对应,即二级存储单元3存储的二级索引值基于一级存储单元0、一级存储单元1以及一级存储单元2中存储的一级索引值确定。
67.在一个实施例中,如图3所示,上述步骤103包括步骤201至步骤203,其中:
68.步骤201,获取一级索引表中一级存储单元的存储容量,存储容量表示一级存储单元中包含的一级存储位的数量,一级存储位用于存储一级索引值。
69.步骤202,基于索引地址和存储容量,确定目标存储单元编号以及目标存储位编号;基于目标存储单元编号从一级索引表中确定出待查询数据对应的目标一级存储单元。
70.进一步地,将索引地址和存储容量相除得到商和余数,基于商确定目标存储单元编号,基于余数确定目标存储位编号。具体地,以索引地址为被除数,以存储容量为除数,并将索引地址和存储容量相除得到商和余数。
71.步骤203,获取目标一级存储单元中目标存储位编号对应一级存储位上存储的一级索引值,并确定一级索引值为待查询数据对应的目标一级索引值。
72.图4示例了一级索引表的结构,如图4所示,一级索引表包括顺序排列的一级存储单元0、一级存储单元1、一级存储单元2以及一级存储单元3。第一个一级存储单元的编号为0,一级存储单元的存储容量为16,即每一个一级存储单元中存储有16个数对应的一级索引值。在索引地址为17的情况下,将索引地址17和存储容量16相除得到商和余数均为1,则目标存储单元编号为1,目标存储位编号为17。即待查询数据对应的目标一级存储单元为一级存储单元1,待查询数据对应的目标一级索引值为一级存储位17上存储的一级索引值。
73.在一个实施例中,待查询数据的索引地址与该待查询数据对应的一级索引值所在的一级存储位的存储位编号相同。获取预先存储的每一个一级存储单元中的一级存储位的存储位编号范围,将索引地址与每一个一级存储单元对应的存储位编号范围进行比较,在索引地址在某一个一级存储单元对应的存储位编号范围内的情况下,确定该一级存储单元为待查询数据对应的目标一级存储单元。
74.进一步地,基于索引地址确定目标存储位编号,并确定目标一级存储单元中目标存储位编号对应一级存储位上存储的一级索引值为待查询数据对应的目标一级索引值。
75.例如,在索引地址为17的情况下,如图4所示,将索引地址17与,每一个一级存储单元对应的存储位编号范围进行比较可以确定,索引地址17在一级存储单元1对应的存储位编号范围[16,31]内,因此确定待查询数据对应的目标一级存储单元为一级存储单元1,并获取一级存储单元1中目标存储位编号为17的一级存储位上存储的一级索引值为目标一级索引值。
[0076]
在一个实施例中,如图5所示,上述步骤103还包括步骤301至步骤304,其中:
[0077]
步骤301,判断目标一级索引值是否为第一标识值,第一标识值用于表征一级索引值对应的数为非零数。
[0078]
步骤302,在目标一级索引值为第一标识值的情况下,从一级索引表中获取目标一级索引值对应的目标一级存储单元中的所有一级索引值,得到目标一级索引数据。
[0079]
进一步地,设置第一标识值为1,在目标一级索引值为1的情况下,可以确定索引地址对应的待查询数据为非零数,进而从一级索引表中获取目标一级索引值对应的目标一级存储单元中的所有一级索引值,得到目标一级索引数据,目标一级索引数据包括多个一级索引值。
[0080]
步骤303,确定二级索引表中与目标一级存储单元具有相同编号的二级存储单元为待查询数据对应的目标二级存储单元。
[0081]
进一步地,一级索引表中的一级存储单元的数量和二级索引表中的二级存储单元的数量相同,且一级存储单元和二级存储单元的编号一一对应,例如,图2所示的一级存储单元和二级存储单元。
[0082]
步骤304,基于目标一级索引值、目标一级索引数据以及目标二级存储单元中存储的目标二级索引值,确定待查询数据对应的目标存储地址。
[0083]
在一个实施例中,如图6所示,上述步骤304包括步骤401至步骤403,其中:
[0084]
步骤401,基于目标一级索引值和目标一级索引数据生成掩码数据,并基于目标一级索引数据和掩码数据获取第一非零个数。
[0085]
其中,第一非零个数表示目标一级存储单元中位于目标一级索引值前面的所有非零索引值的数量。掩码数据中数据的数量与目标一级索引数据中数据的数量相同。
[0086]
步骤402,基于目标二级索引值得到第二非零个数,并基于第一非零个数和第二非零个数获取目标非零个数。
[0087]
其中,第二非零个数表示目标二级存储单元对应的多个一级存储单元中的所有非零索引值的数量。目标非零个数表示一级索引表中位于目标一级索引值前面的所有非零索引值的数量。目标二级索引值为于与目标二级存储单元对应的多个一级存储单元中的一级索引值的累加值。
[0088]
图7示例了一级索引值与二级索引值之间的对应关系,如图7所示,一级存储单元0中的非零索引值的数量为a,一级存储单元1中的非零索引值的数量为b,一级存储单元2中的非零索引值的数量为c,一级存储单元3中的非零索引值的数量为d,则二级存储单元0中存储的二级索引值为0,二级存储单元1中存储的二级索引值为a,二级存储单元2中存储的二级索引值为a+b,二级存储单元3中存储的二级索引值为a+b+c,则目标二级存储单元中存
储的二级索引值为与目标二级存储单元具有相同编号的目标一级存储单元前面的所有一级存储单元中的非零索引值的数量总和。
[0089]
图8示例了一种确定目标非零个数的方式,如图8所示,x表示目标一级索引值对应的目标存储位编号,则y表示第一非零个数,即目标一级存储单元中位于目标一级索引值x前面的所有非零索引值的数量。a+b表示第二非零个数,即目标二级存储单元对应的多个一级存储单元中的所有非零索引值的数量。a+b+y表示目标非零个数,即一级索引表中位于目标一级索引值x前面的所有非零索引值的数量。
[0090]
步骤403,基于目标非零个数,确定待查询数据在数据存储器中的目标存储地址。
[0091]
需要说明的是,由于原始稀疏数据中的每一个数对应一级存储单元中的一个一级索引值,且每一个一级索引值用于表征对应的数是否为零,因此目标非零个数即为原始稀疏数据中位于待查询数据前面的所有非零数的个数,并且由于数据存储器存储的是原始稀疏数据中的所有非零数,因此该目标非零个数即为待查询数据在数据存储器中的目标存储地址。
[0092]
上述步骤401至步骤403,通过预先将每一个二级存储单元对应的多个一级存储单元中的一级索引值的累加值作为二级索引值存储至二级存储单元中,从而能够基于索引地址对应的目标二级索引值直接获取到目标一级存储单元中位于目标一级索引值前面的所有非零索引值的个数,而不需要在每次查询时统计目标一级存储单元中位于目标一级索引值前面的所有非零索引值的个数,大大减少数据的冗余计算,节省了数据处理资源,进一步提高了稀疏数据的查询效率。
[0093]
在一个实施例中,如图9所示,上述步骤401包括步骤501至步骤503,其中:
[0094]
步骤501,将目标一级索引数据中位于目标一级索引值前面的所有一级索引值赋值为1以及将其他一级索引值赋值为0,得到掩码数据。
[0095]
具体地,将目标一级索引数据中位于目标一级索引值前面的所有一级索引值赋值为1,将目标一级索引值和位于目标一级索引值后面的一级索引值赋值为0,得到该掩码数据。例如,目标一级索引数据为{a,b,x,c,d,e},其中,x表示目标一级索引值,a和b表示位于目标一级索引值前面的一级索引值,c、d和e表示位于目标一级索引值后面的一级索引值,因此掩码数据为{1,1,0,0,0,0}。
[0096]
步骤502,将目标一级索引数据和掩码数据输入至与逻辑运算器中,得到逻辑运算结果。
[0097]
例如,将目标一级索引数据{a,b,x,c,d,e}和掩码数据{1,1,0,0,0,0}输入至与逻辑运算器中,得到的逻辑运算结果为{a,b,0,0,0,0}。
[0098]
步骤503,将逻辑运算结果输入至加法器树电路中,得到第一非零个数。
[0099]
进一步地,加法器树电路包括多级加法器电路,每一级加法器电路由并行运算的多个加法器构成,且前一级加法器电路中的两个相邻加法器与后一级加法器电路中的一个加法器连接,以将各自得到的运算结果传输至后一级加法器电路中的这个加法器,以此类推,将最后一级加法器电路中的加法器的运算结果输出为该第一非零个数。
[0100]
例如,将逻辑运算结果{a,b,0,0,0,0}输入至加法器树电路中,第一级加法器电路中加法器的第一运算结果为{a+b,0+0,0+0},将第一运算结果{a+b,0+0,0+0}输入至第二级加法器电路,得到的第二运算结果为{a+b,0},将第二运算结果{a+b,0}输入至第三级加法
器电路,得到的最终运算结果为{a+b},即第一非零个数为a+b。
[0101]
上述步骤501至步骤503,通过将目标一级索引数据中位于目标一级索引值前面的所有一级索引值赋值为1以及将其他一级索引值赋值为0,从而得到目标一级索引数据对应的掩码数据,进而可以非常简单方便的获取目标一级存储单元中位于目标一级索引值前面的所有非零索引值的个数,简化了第一非零个数的计算流程,提高了数据处理效率,从而可以进一步提高稀疏数据的查询效率。
[0102]
在一个实施例中,在目标一级索引值为第二标识值的情况下,输出索引地址对应的目标查询数据为零,第二标识值用于表征一级索引值对应的数为零。
[0103]
进一步地,设置第二标识值为0,则在目标一级索引值为0的情况下,输出索引地址对应的目标查询数据为0。
[0104]
上述实施例,通过在目标一级索引值为第二标识值的情况下,不需要访问二级索引表就可以直接确定索引地址对应的目标查询数据为零,从而简化了数据查询流程,减少了数据访问次数,进而可以提高稀疏数据的查询效率。
[0105]
如图10所示,本发明提供一种稀疏数据的查询设备,该稀疏数据的查询设备包括:表存储器、数据存储器、控制器以及输出缓冲模块,其中:表存储器用于存储原始稀疏数据的一级索引表和二级索引表。数据存储器用于存储原始稀疏数据中的非零数。
[0106]
控制器分别与表存储器、数据存储器以及输出缓冲模块连接,用于执行上述任意一个实施例提供的稀疏数据的查询方法,具体地,控制器用于获取待查询数据对应的索引地址,基于索引地址从表存储器中获取一级索引表和二级索引表这两级索引表,以基于两级索引表和索引地址获取待查询数据对应的目标存储地址以及控制信号,基于目标存储地址从数据存储器中获取目标查询数据并传输至输出缓冲模块,并基于控制信号控制输出缓冲模块输出该目标查询数据。
[0107]
图11示例了一种控制器的实体结构示意图,如图11所示,该控制器可以包括:处理器(processor)810、通信接口(communications interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行上述各方法所提供的稀疏数据的查询方法,该方法包括:获取待查询数据的索引地址和待查询数据对应原始稀疏数据的一级索引表;一级索引表包括多个一级存储单元,用于存储原始稀疏数据中每一个数的一级索引值,一级索引值用于表征对应的数是否为零;获取原始稀疏数据的二级索引表,二级索引表包括多个二级存储单元,用于存储二级索引值,二级索引值基于与二级存储单元对应的多个一级存储单元中的一级索引值确定;基于索引地址和一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值、一级索引表以及二级索引表确定目标存储地址;基于目标存储地址从数据存储器中获取索引地址对应的目标查询数据,数据存储器用于存储原始稀疏数据中的非零数。
[0108]
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施
例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0109]
在一个实施例中,处理器810还用于基于待查询数据的索引地址以及原始稀疏数据的一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值判断待查询数据是否为非零数,在基于目标一级索引值判定待查询数据为非零数的情况下,输出高电平的控制信号,并基于高电平的控制信号从表存储器中获取待查询数据对应的二级索引表,以基于目标一级索引值、一级索引表以及二级索引表确定目标存储地址;在基于目标一级索引值判定待查询数据为零的情况下,输出低电平的控制信号,并基于低电平的控制信号直接输出索引地址对应的目标查询数据为零。
[0110]
上述实施例,通过只在基于目标一级索引值判定待查询数据为非零数的情况下访问二级索引表以确定目标存储地址,而在基于目标一级索引值判定待查询数据为零的情况下直接输出目标查询数据为零,可以避免无效访问二级索引表造成处理器810的处理资源的浪费,节省了处理器810的处理资源,提高了处理器810的处理效率。
[0111]
在一个实施例中,如图12所示,处理器810包括相互连接的第一处理单元和第二处理单元,其中:
[0112]
第一处理单元用于获取待查询数据的索引地址以及原始稀疏数据的一级索引表,基于索引地址和一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值判断待查询数据是否为非零数,在基于目标一级索引值判定待查询数据为非零数的情况下,输出高电平的控制信号,并基于目标一级索引值获取第一非零个数;在基于目标一级索引值判定待查询数据为零的情况下,输出低电平的控制信号,并基于低电平的控制信号直接输出索引地址对应的目标查询数据为零。
[0113]
第二计算单元用于基于该高电平的控制信号从表存储器中获取待查询数据对应的二级索引表,以基于目标一级索引值以及二级索引表获取第二非零个数,基于第二非零个数以及第一处理单元计算得到的第一非零个数获取目标非零个数,并基于目标非零个数确定待查询数据在数据存储器中的目标存储地址。
[0114]
进一步地,第二处理单元包括多比特加法器,用于将第二非零个数和第一非零个数相加,得到目标非零个数。
[0115]
在一个实施例中,如图13所示,第一处理单元包括选择器、编码器、与逻辑运算器以及加法器树电路,其中:
[0116]
选择器与第一输入端口x1和第二输入端口x2连接,用于从第一输入端口x1获取待查询数据对应的索引地址以及从第二输入端口x2获取原始稀疏数据的一级索引表,基于索引地址和一级索引表确定目标一级索引值,基于目标一级索引值判断待查询数据是否为非零数。
[0117]
进一步地,选择器用于判断一级索引表中第mod(addr,2n)个一级索引值是否为零,在确定第mod(addr,2n)个一级索引值为0的情况下确定待查询数据为零,并输出低电平的控制信号;在确定第mod(addr,2n)个一级索引值为1的情况下,确定待查询数据为非零数并输出高电平的控制信号,其中,目标一级索引值为一级索引表中的第mod(addr,2n)个一级索引值,mod(addr,2n)表示addr除以2n取余数,addr表示索引地址,2n表示一级索引表中
一级存储单元的存储容量,存储容量的单位为比特。图13中的第一输出端口y1用于输出控制信号。
[0118]
编码器与第一输入端口x1、选择器以及与逻辑运算器连接,用于获取索引地址对应的目标一级索引值以及目标一级索引数据,在高电平的控制信号的控制下基于目标一级索引值将目标一级索引数据编码为同比特数(即2n个比特)的掩码数据,并将掩码数据传输至与逻辑运算器。
[0119]
与逻辑运算器与选择器、编码器、第二输入端口x2以及加法器树电路连接,用于接收选择器传输的目标一级索引值以及高电平的控制信号,并基于第二输入端口x2获取一级索引表,并从一级索引表中获取目标一级索引值对应的目标一级索引数据,接收编码器传输的掩码数据,并基于目标一级索引数据和掩码数据获取逻辑运算结果并传输至加法器树电路,以使加法器树电路基于逻辑运算结果获取第一非零个数。图13中的第二输出端口y2用于输出第一非零个数。
[0120]
本发明提供的稀疏数据的查询设备,通过设置一级索引表和二级索引表存储原始稀疏数据中每一个数的索引值,而在数据存储器中仅存储原始稀疏数据中的非零数,从而能够极大地节省数据存储器的存储空间,达到节约存储资源的效果,从而根据待查询数据对应的目标一级索引值的数值判断该待查询数据是否为零,并根据判断结果进一步确定查询数据对应的目标存储地址,从而基于目标存储地址访问数据存储器以获取目标查询数据,使得整个稀疏数据查询过程最多需要访问三次存储器就能获取需要的目标查询数据,即最多需要访问两次表存储器以及最多需要访问一次数据存储器,大大减少了存储器的访问次数,有效提高了稀疏数据的查询效率,从而解决了现有技术中如何节省存储空间以及提高稀疏数据的查询效率的技术问题。
[0121]
下面对本发明提供的稀疏数据的查询装置进行描述,下文描述的稀疏数据的查询装置与上文描述的稀疏数据的查询方法可相互对应参照。
[0122]
如图14所示,本发明提供一种稀疏数据的查询装置,该稀疏数据的查询装置100包括:
[0123]
第一获取模块101,用于获取待查询数据的索引地址和待查询数据对应原始稀疏数据的一级索引表;一级索引表包括多个一级存储单元,用于存储原始稀疏数据中每一个数的一级索引值;
[0124]
第二获取模块102,用于获取原始稀疏数据的二级索引表,二级索引表包括多个二级存储单元,用于存储二级索引值,二级索引值基于与二级存储单元对应的多个一级存储单元中的一级索引值确定;
[0125]
地址查询模块103,用于基于索引地址和一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值、一级索引表以及二级索引表确定目标存储地址;
[0126]
数据查询模块104,用于基于目标存储地址从数据存储器中获取索引地址对应的目标查询数据,数据存储器用于存储原始稀疏数据中的非零数。
[0127]
在一个实施例中,地址查询模块103包括一级索引确定单元,用于获取一级索引表中一级存储单元的存储容量,存储容量表示一级存储单元中包含的一级存储位的数量,一级存储位用于存储一级索引值;基于索引地址和存储容量,确定目标存储单元编号以及目标存储位编号;基于目标存储单元编号从一级索引表中确定出待查询数据对应的目标一级
存储单元;获取目标一级存储单元中目标存储位编号对应一级存储位上存储的一级索引值,并确定一级索引值为待查询数据对应的目标一级索引值。
[0128]
在一个实施例中,地址查询模块103还包括存储地址确定单元,用于判断目标一级索引值是否为第一标识值,第一标识值用于表征一级索引值对应的数为非零数;在目标一级索引值为第一标识值的情况下,从一级索引表中获取目标一级索引值对应的目标一级存储单元中的所有一级索引值,得到目标一级索引数据;确定二级索引表中与目标一级存储单元具有相同编号的二级存储单元为待查询数据对应的目标二级存储单元;基于目标一级索引值、目标一级索引数据以及目标二级存储单元中存储的目标二级索引值,确定待查询数据对应的目标存储地址。
[0129]
在一个实施例中,存储地址确定单元,还用于基于目标一级索引值和目标一级索引数据生成掩码数据,并基于目标一级索引数据和掩码数据获取第一非零个数;基于目标二级索引值得到第二非零个数,并基于第一非零个数和第二非零个数获取目标非零个数;基于目标非零个数,确定待查询数据在数据存储器中的目标存储地址。
[0130]
在一个实施例中,存储地址确定单元,还用于将目标一级索引数据中位于目标一级索引值前面的所有一级索引值赋值为1以及将其他一级索引值赋值为0,得到掩码数据;将目标一级索引数据和掩码数据输入至与逻辑运算器中,得到逻辑运算结果;将逻辑运算结果输入至加法器树电路中,得到第一非零个数。
[0131]
在一个实施例中,存储地址确定单元,还用于在目标一级索引值为第二标识值的情况下,输出索引地址对应的目标查询数据为零,第二标识值用于表征一级索引值对应的数为零。
[0132]
另一方面,本发明还提供一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,计算机程序被处理器执行时,计算机能够执行上述各方法所提供的稀疏数据的查询方法,该方法包括:获取待查询数据的索引地址和待查询数据对应原始稀疏数据的一级索引表;一级索引表包括多个一级存储单元,用于存储原始稀疏数据中每一个数的一级索引值,一级索引值用于表征对应的数是否为零;获取原始稀疏数据的二级索引表,二级索引表包括多个二级存储单元,用于存储二级索引值,二级索引值基于与二级存储单元对应的多个一级存储单元中的一级索引值确定;基于索引地址和一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值、一级索引表以及二级索引表确定目标存储地址;基于目标存储地址从数据存储器中获取索引地址对应的目标查询数据,数据存储器用于存储原始稀疏数据中的非零数。
[0133]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的稀疏数据的查询方法,该方法包括:获取待查询数据的索引地址和待查询数据对应原始稀疏数据的一级索引表;一级索引表包括多个一级存储单元,用于存储原始稀疏数据中每一个数的一级索引值,一级索引值用于表征对应的数是否为零;获取原始稀疏数据的二级索引表,二级索引表包括多个二级存储单元,用于存储二级索引值,二级索引值基于与二级存储单元对应的多个一级存储单元中的一级索引值确定;基于索引地址和一级索引表确定待查询数据对应的目标一级索引值,并基于目标一级索引值、一级索引表以及二级索引表确定目标存储地址;基于目标存储地址从数据存储器中获取索引地址对应的目标查询数据,数据存储器用于存储原始
稀疏数据中的非零数。
[0134]
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0135]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
[0136]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1