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

基于分类的数据存取方法、系统、介质及程序与流程

2021-12-04 01:48:00 来源:中国专利 TAG:


1.本发明涉及数据存取技术领域,尤其涉及一种基于分类的数据存取方法、系统、介质及程序。


背景技术:

2.在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字、字母、符号和模拟量等的通称。现在计算机存储和处理的对象十分广泛,表示这些对象的数据也随之变得越来越复杂。
3.对于不同的计算机运算任务,其所需的数据类型和数量是完全不同的,而基于现有技术的数据存取方法执行特定运算任务时,需要先行读取数据,再判断该数据是否符合运算任务所需的类型和数量,从而使得运算任务的效率降低。
4.因此,如何改进数据存取方法,以提升后续运算任务的执行效率,成为了业内亟需解决的技术问题。


技术实现要素:

5.本发明提供一种基于分类的数据存取方法、系统、介质及程序,用以解决现有技术中运算任务的执行效率低的缺陷,实现基于数据类型和数量标签的高效数据存取。
6.本发明提供一种基于分类的数据存取方法,包括:接收第一数据,并根据接收顺序得到所述第一数据的存储序号;根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
7.根据本发明提供的一种基于分类的数据存取方法,还包括:通过目标分类数据集,读取设定的数据;所述目标分类数据集是根据分类数据集的标识确定的,数据数量满足拟定后续操
作所需数量的分类数据集;所述拟定后续操作是所述数据被读取后拟进行的操作。
8.根据本发明提供的一种基于分类的数据存取方法,所述通过目标分类数据集,读取设定的数据的步骤包括:根据第i个第二数据的存储序号,执行读取操作得到第i个第二数据;其中,若i等于1,则所述第一个第二数据的存储序号是根据所述目标分类数据集的头数据关联参数确定的;若i大于1,则所述第i个第二数据的存储序号是通过第i

1个第二数据确定的;所述读取操作是指:根据所述第i个第二数据的存储序号确定第i个第二数据的起止位置:根据所述第i个第二数据的存储序号确定第i个第二数据的起止位置:式中,、分别为第i个第二数据的起、止位置;为所述第i个第二数据的存储序号;为所述第二数据的比特位数,且不同所述第二数据的比特位数相同;根据所述第i个第二数据的起止位置,读取得到第i个第二数据。
9.根据本发明提供的一种基于分类的数据存取方法,所述通过目标分类数据集,读取设定的数据的步骤后,还包括:将所述目标分类数据集的标识置为第一零标识。
10.根据本发明提供的一种基于分类的数据存取方法,所述第二标识为1比特的二进制标识;置为0的所述第二标识和置为1的所述第二标识这两者中,一者用于标识分类数据集中数据数量大于1,另一者用于标识分类数据集中数据数量等于1;所述将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识的步骤包括:确定所述第一标识为第一零标识,则通过更新头数据关联参数和/或更新所述第二标识置为用于标识分类数据集中数据数量等于1的值,将所述第一标识更新为第一非零标识;确定所述第一标识为第一非零标识,且所述第二标识是用于标识分类数据集中数据数量等于1的值,则将所述第二标识更新为用于标识分类数据集中数据数量大于1的值;确定所述第一标识为第一非零标识,且所述第二标识是用于标识分类数据集中数据数量大于1的值,则保持所述第二标识为用于标识分类数据集中数据数量大于1的值。
11.本发明还提供一种基于分类的数据存取系统,包括:序号模块,用于接收第一数据,并根据接收顺序得到所述第一数据的存储序号;分类模块,用于根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;存储模块,用于顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;更新模块,用于将所述分类数据集的头数据关联参数更新为所述第一数据的存储
序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
12.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于分类的数据存取方法的步骤。
13.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于分类的数据存取方法的步骤。
14.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于分类的数据存取方法的步骤。
15.本发明还提供一种芯片,包括逻辑功能部;所述逻辑功能部被芯片执行时实现如上述任一种所述基于分类的数据存取方法的步骤。
16.本发明提供的基于分类的数据存取方法、系统、介质及程序,具备如下有益效果:1、通过不同分类数据集实现了数据类型的区分;2、在第1点的基础上,分类数据集配合包括第一数据和相邻数据关联参数的第二数据,实现了灵活的存储空间动态管理、降低了数据存入操作的复杂度;3、通过分类数据集的标识实现了数据数量的区分;4、在第3点的基础上,分别基于第一标识和第二标识区分数据数量为零的分类和数据数量非零的分类,即在第二标识(即专用标识位)的基础上增加了第一标识(即该分类数据集的bit位是否全0或全1),从而使得数据数量的区分维度得以提升。
附图说明
17.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本发明提供的基于分类的数据存取方法的流程示意图;图2是本发明实施例提供的空链表的数据存储示意图;图3是本发明实施例提供的非空链表的数据存储示意图;图4是本发明实施例提供的数据读取示意图;图5是本发明提供的电子设备的结构示意图;图6是本发明提供的基于分类的数据存取系统的结构示意图。
19.附图标记:1:序号模块;2:分类模块;3:存储模块;4:更新模块;510:处理器;520:通信接口;
530:存储器;540:通信总线。 具体实施方式
20.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
21.下面结合图1

图4描述本发明的基于分类的数据存取方法。
22.如图1所示,本发明实施例提供一种基于分类的数据存取方法,包括:步骤101,接收第一数据,并根据接收顺序得到所述第一数据的存储序号;步骤103,根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;步骤105,顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;步骤107,将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
23.值得说明的是,本实施例的步骤105和步骤107的执行顺序并不固定,即存在着如下三种执行方案:第一种是先存储、再更新的方案,即顺序执行步骤105和步骤107;第二种是先更新、再存储的方案,即先执行步骤107,再执行步骤105,在这一方案中,将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号的同时,应当记录更新前的头数据关联参数,以供步骤105中相邻数据关联参数取值时调用;第三种是更新存储同步进行的方案,即步骤105和步骤107同步进行,由于本实施例中存在数据存储器和序号存储器这两个存储器,同步进行的方案存在实施基础。
24.本实施例中,所述序号存储器和所述数据存储器既可以是物理上相互独立的两个存储器结构,也可以是基于同一存储器作为物理介质进行逻辑分隔后得到的。其中,前者是更为优选的方案,其数据存取效率相比于后者有所提升,原因在于不同的两个存储器接口相互独立,从而使得分类数据集和第二数据的调用互不干扰。
25.在本实施例的一个优选方案中,所述分类数据集由固定字节长度的头数据关联参数和固定字节长度的标识位组成,且所述头数据关联参数和标识位的前后顺序固定,从而使得序号存储器中每个分类数据集所存储的空间固定,进而可以便捷地查找和调用每个分类数据集,节省了部分运算资源。
26.进一步地,本优选方案的第一标识是基于分类数据集中每个比特均为设定的二进制值设置的,具体来说:所述分类数据集中每个比特位均为1的第一标识代表着该分类数据集对应类别的数据数量为零、所述分类数据集中各个比特位不全为1的第一标识代表着该分类数据集对应类别的数据数量不为零;由于所述分类数据集包括头数据关联参数和标识位,则应当考虑所述头数据关联参数是否可能取全为1的值,进而误将存有头数据关联参数均为1的数据的分类数据集识别位空数据类别。
27.为避免上述误识别的问题,可以将头数据关联参数的固定字节长度设置为较大的数值,以使得本质为第一数据的存储序号的头数据关联参数的值不能取得在该固定字节长度下全为1的值;也可以将存储的第一数据的数量上限设置为在该固定字节长度下第一位为0、其余位为1的二进制值对应的十进制数字。
28.也就是说,本实施例通过牺牲半个字节的序号容量,获取了完整的第一标识自由度,例如对于存在10个比特位的存储结构,共存在1024中可能的存储组合,采用本实施例时,存在1个比特位的标识位(第二标识)和全为1时的第一标识,则排除标识位后仍然存在着511种存储组合(排除1个标识位剩余9个比特位/512种存储组合,排除全为1的存储组合,剩余511种);若不采用本实施例,则需要至少2个比特位作为标识位,分别用于标识分类数据集对应类别的数据数量是否为零、是否大于设定的阈值,则排除标识位后只剩下256种可能的存储组合。
29.更进一步地,若第二标识的数量判断阈值包括且仅包括1(即第二标识用于标识分类数据集对应类别的数据数量大于1或不大于1,事实上,本实施例中第二标识对应的阈值可以为多个)、且后续需要读取的用于运算的数据下限为2(即分类数据集对应类别的数据数量至少为2个,才能够进行后续的运算,数量为1或0时无法运算),则上述误识别的问题还可以通过如下方式予以规避:由于第二标识的数量判断阈值包括且仅包括1,作为第二标识的标识位固定字节长度只需1个bit,即0和1两个取值分别代表分类数据集对应类别的数据数量大于1或不大于1;则规避误识别问题的方案如下:所述分类数据集中每个比特位均为1的第一标识代表着该分类数据集对应类别的数据数量为零、所述分类数据集中每个比特位均为0的第一标识代表着该分类数据集对应类别的数据数量不为零;第二标识中,代表分类数据集对应类别的数据数量大于1的二进制值设置为0、代表分类数据集对应类别的数据数量不大于1的二进制值设置为1。
30.原理说明如下:a、数据数量为0的情况,分类数据集默认的每个bit取值均为1,不存在误识别为非零的可能;b、数据数量为1的情况,第二标识被设置为1;当且仅当该类别中的第一个存入数据的序号为全1时,分类数据集对应的类别被识别为空,此时由于存入数据的序号已经到达上限,不存在后续有新的数据存入的情况,且分类数据集对应类别的数据数量至少为2个,才能够进行后续的运算,因此实际数据数量为1的类别被误识别为0不会影响后续读取,实
际数据数量为0或1的类别不会被读取;c、数据数量大于1的情况,第二标识被设定为0,分类数据集对应的类别不会被误识别为空。
31.此外,对于更大的阈值,可以选用更多位数的第二标识,或者增加额外的计数器结构;更多位数的方案中,第二标识可以逐个标识分类数据集对应类别的数据数量,例如2个比特位的第二标识可以用于标识分类数据集中数量为1、2、3以及大于3的情况(分别对应00、01、10、11的第二标识)。也就是说,具有a个比特位的第二标识,能够标识小于2
a
的任意数量,同时能够标识分类数据集中数量大于等于的2
a
情况。
32.额外计数器结构的方案中,第二标识仍为1个比特位,通过计数器判断分类数据集对应类别的数据数量是否大于阈值,若大于阈值则调整第二标识的二进制值,以标识分类数据集对应类别的数据数量情况。
33.此外,在本实施例的一个优选方案中,每个分类数据集与数据类别一一对应,即特定的分类数据集中,头数据关联参数指向的第1个第二数据、第1个第二数据中相邻数据关联参数指向的第2个第二数据以及以此类推的第二数据链中,每个第二数据均属于同一个数据类别(这一点能够通过步骤103中,根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集,和步骤107中将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号的技术手段得以实现);对应地,所有属于特定类别的第二数据均位于该特定类别对应的第二数据链中存储(该第二数据链的存储和读取有赖于该特定类别对应的分类数据集)。
34.所述第二数据属于同一类别是指第二数据中包括的第一数据属于同一类别;同时,第一数据中包括分类信息,该分类信息与数据类别同样是一一对应的,从而使得每个第一数据均存在唯一对应的数据类别。
35.本实施例中,所述第二数据的存储是顺序进行的,即不论该第二数据属于何种类别,数据存储器中均按照第二数据存入的先后顺序进行存储,从而使得每个第二数据都能通过其序号得以确定。
36.本实施例的有益效果在于:1、通过不同分类数据集实现了数据类型的区分;2、在第1点的基础上,分类数据集配合包括第一数据和相邻数据关联参数的第二数据,实现了灵活的存储空间动态管理、降低了数据存入操作的复杂度;3、通过分类数据集的标识实现了数据数量的区分;4、在第3点的基础上,分别基于第一标识和第二标识区分数据数量为零的分类和数据数量非零的分类,即在第二标识(即专用标识位)的基础上增加了第一标识(即该分类数据集的bit位是否全0或全1),从而使得数据数量的区分维度得以提升。
37.根据上述实施例,在本实施例中所述方法还包括:通过目标分类数据集,读取设定的数据;所述目标分类数据集是根据分类数据集的标识确定的,数据数量满足拟定后续操作所需数量的分类数据集;所述拟定后续操作是所述数据被读取后拟进行的操作。
38.所述通过目标分类数据集,读取设定的数据的步骤包括:
根据第i个第二数据的存储序号,执行读取操作得到第i个第二数据;其中,若i等于1,则所述第一个第二数据的存储序号是根据所述目标分类数据集的头数据关联参数确定的;若i大于1,则所述第i个第二数据的存储序号是通过第i

1个第二数据确定的;所述读取操作是指:根据所述第i个第二数据的存储序号确定第i个第二数据的起止位置:根据所述第i个第二数据的存储序号确定第i个第二数据的起止位置:式中,、分别为第i个第二数据的起、止位置;为所述第i个第二数据的存储序号;为所述第二数据的比特位数,且不同所述第二数据的比特位数相同;根据所述第i个第二数据的起止位置,读取得到第i个第二数据。
39.所述通过目标分类数据集,读取设定的数据的步骤后,还包括:将所述目标分类数据集的标识置为第一零标识。
40.所述第二标识为1比特的二进制标识;置为0的所述第二标识和置为1的所述第二标识这两者中,一者用于标识分类数据集中数据数量大于1,另一者用于标识分类数据集中数据数量等于1。
41.本实施例在上一实施例的基础上,进一步提供了数据读取步骤,利用上一实施例中存入数据的标识配合本实施例提供的读取步骤,能够更为有效的数据读取和后续运算,即读取类别和数量满足后续运算需求的第二数据链,该第二数据链的读取是通过如下步骤实现的:首先根据后续运算需求确定要读取的数据类别,从而确定该类别对应的一个或多个分类数据集作为目标分类数据集;随后针对目标分类数据集的标识确定所述目标分类数据集对应的第二数据链中的数据数量是否满足后续运算需求:若不满足,则跳过该分类数据集,并将该分类数据集中的每个比特位置1;值得说明的是,所述将该分类数据集中的每个比特位置1的步骤的目的在于清空存储记录,因此也可在全部分类数据集均已完成读取操作(或者被跳过)后,将存储记录一并清除(即将存储器的每个比特位均置1).若满足,则该分类数据集为目标分类数据集,通过该目标分类数据集读取头数据关联参数、通过所述头关联参数读取第1个第二数据得到第1个第二数据中的第一数据和相邻数据关联参数、通过第1个第二数据中的相邻数据关联参数读取第2个第二数据得到第2个第二数据中的第一数据和相邻数据关联参数

以此类推直至该目标分类数据集对应的第二数据链全部读取完成,并将该目标分类数据集中的每个比特位置1;同样地,所述将该目标分类数据集中的每个比特位置1的步骤的目的在于清空存储记录,因此也可在全部分类数据集均已完成读取操作(或者被跳过)后,将存储记录一并清除(即将存储器的每个比特位均置1).上述步骤完成后,针对下一目标分类数据集进行上述判断,直至全部的目标分类数据集均判断完成或者读取数据的数量已满足设定的条件。
42.值得说明的是,本实施例中的第二数据链、(目标)分类数据集、头数据关联参数、相邻数据关联参数的实现可以基于编程语言中的链表结构予以实现,即在一个优选的实施方案中,(目标)分类数据集以(目标)链表实现、头数据关联参数以所述(目标)链表的头指针实现、相邻数据关联参数以链表中的数据指针实现,这一链表中存储的数据链即为第二数据链。
43.下面将对本实施例中数据读取方法做更为详细的说明。
44.具体地,对于采用2个物理独立的sdram分别作为序号存储器和数据存储器的情况,假定sdram的端口宽度为512bit、第二数据的比特位数为(一般,但本实施例仍然支持时的数据存取);针对对应第二数据链满足后续运算需求数据类别和数量的目标分类数据集,根据第i个第二数据的存储序号,执行读取操作得到第i个第二数据;由于数据存储器中,每512个bit为一个存储单元,则上述读取操作应中应当确定待读取的数据是否完整地存储在单个存储单元中(对于的情况,则无需确定,直接执行后续的跨单元读取即可),即判断下式是否成立:其中、分别表示、向下取整后的数值。
45.若成立,则说明待读取的数据完整地存储在单个存储单元中,此时将该待读取的数据所在的存储单元整体读出后,去除无关数据即可;若不成立,则说明待读取的数据没有完整地存储在单个存储单元中,而是分别存储在至少两个存储单元中,此时将该待读取的数据所在的至少两个存储单元整体读出后(所述至少两个存储单元的起、止序号分别为、),去除无关数据即可。(对于的情况,直接执行本步骤而无需进行判断)所述去除无关数据的步骤可以由如下方式中的任一者或任多者组合实现:1、删除前偏移量后,顺序保留前个bit的数据,得到读取数据;所述前偏移量的取值为除以的余数;2、删除前偏移量和后偏移量,得到读取数据;所述后偏移量的取值为与除以的余数的差;3、删除后偏移量后,顺序保留后个bit的数据,得到读取数据。
46.进一步地,在本实施例的一个优选方案中,所述将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识的步骤包括:确定所述第一标识为第一零标识,则通过更新头数据关联参数和/或更新所述第二标识置为用于标识分类数据集中数据数量等于1的值,将所述第一标识更新为第一非零标识;确定所述第一标识为第一非零标识,且所述第二标识是用于标识分类数据集中数据数量等于1的值,则将所述第二标识更新为用于标识分类数据集中数据数量大于1的值;
确定所述第一标识为第一非零标识,且所述第二标识是用于标识分类数据集中数据数量大于1的值,则保持所述第二标识为用于标识分类数据集中数据数量大于1的值。
47.根据上述任一实施例,本实施例将结合具体应用场景实例,提供一种equihash算法数据的分类、存储与读取方法。
48.下面将简单介绍本实施例的相关背景。
49.zerocash工作量证明算法采用的equihash(200,9)算法是由卢森堡大学的安全、可靠性和信任跨学科中心(snt)开发的一种以内存为导向的工作证明算法,其理论依据是一个著名的计算法科学及密码学问题:广义生日悖论问题。equihash是一种便携式算法,不限于特定的数字货币。目前采用equihash为工作证明(pow)的虚拟货币有zerocash、bitcoin gold等。
50.equihash(n,k)算法具有其鲜明特点:它一方面是记忆性的,另一方面很容易验证。广义生日悖论就是在n个n比特的数据样本中找到2
k
个碰撞的样本,zerocash挖矿算法由n、k两个参数确定,数据样本数目n= 2 n/(k 1) 1
,x
1 ..
n
由区块头block header和nonce产生。
51.具体到zerocash的block header包括4个字节的区块版本号nversion,它指示遵从哪个区块验证规则;32字节的hashprevblock,它表示前一区块的区块头block header;32字节的 hashmerkleroot,本字段允许调整,通过对包含进区块的交易进行增删,或改变顺序,或者修改coinbase交易的输入字段而产生变化;32字节的hashreserved,这是保留字段;4个字节的ntime,基本取机器开始哈希header时候的unix时间戳;4个字节的nbits,它由全网算力决定,每产生一个新块都调整一次难度;32个字节的nnonce,提供2
256
种可能取值,通过改变nnonce来改变block header来最终产生一个小于或等于目标target的哈希。所以hashmerkleroot和nnonce是发挥挖矿自由度的地方。
52.一个有效的equihash解应该满足下列条件: a:广义生日悖论条件即2
k
个样本异或结果为0; b:对于第r轮(0<r<k)2
k
个样本按字典顺序排列后每2
r
个样本数据异或后有rn/(k 1)个导0(leading zeros)。
53.为了找到有效的equihash解,一般采用wagner算法:在产生n个x
i
后,对x
i
进行排序,找到所有第一个n/(k 1)比特碰撞的x
i
、x
j
,然后保存他们之间的异或结果x
ij
;接着对所有x
ij
排序,找到下一个n/(k 1)碰撞的x
ij
、x
mn
;重复上述过程共k

1轮,直到只有2n/(k 1)比特没有碰撞。最后一步,找到最后2n/(k 1)比特碰撞的结果x,即最终equihash的解。
54.本实施例的equihash算法数据的分类、存储与读取方法有赖于equihash算法数据的分类、存储与读取装置实现。
55.所述equihash算法数据的分类、存储与读取装置包括:地址累加器,用于为接收到的数据编号,由0开始每收到一个数据则加1,即数据序号也标志排序数据存储的相对地址;数据存储器,存储排序数据以及链表指针数据,用于将数据顺序存储,并根据多指针结构按照分类顺序将数据按顺序读取;序号存储器,含有多行数据存储空间,每行代表一个链表,每行存储链表的链头指针p(其内容等于最后一个加入本链表的数据序号)以及本链表中是否只存在一个数据的标识位ds(链表中不存在数据该位为1,链表中只有1个数据该位为0,多余一个数据该位为1)。
56.上述装置中,利用一个多行数据存储空间实现一个多链表表头以及数据个数判断位(ds)。其中的每一行的内容都可以判断出链表中存在0个、1个或者1个以上数据,当多于一个数据时,可以通过链表表头数值,实现整个链表的数据顺序读取,极大的提高了算法效率。
57.针对地址累加器,每当equihash算法中的一个数据输入,地址自动加1;当全部排序数据写完之后,地址累加器归位,输出的地址设置为0。
58.针对数据存储器,装置每收到一个数据,累加器为其计算数据序号,同时根据数据内容可以计算出数据的分类结果,数据存储器中存储着每个数据的内容以及与该数据同属于一个链表的前一个数据的序号(可以看作数据指针,当一个数据不存在前一个数据时,其前一个数据的序号为全1),当按分类结果读取数据时,可以根据序号存储器先将对应链表的最后一个数据以及该数据的前一个数据序号读出,而后顺着链表可以将所有数据全部读出。
59.针对序号存储器,含有多行数据存储空间,每行代表一个链表,每行存储链表的链头指针p(其内容等于最后一个加入本链表的数据序号)以及本链表中是否只存在一个数据的标识位ds(链表中不存在数据该位为1,链表中只有1个数据该位为0,多余一个数据该位为1)。初始化或开始新的分类存储时,初始化为二进制全1,表示全部为空链表。存储数据的时候,每一次接收到属于该指针链表的数据,则更新该序号存储器对应位置为接收到的数据序号,并将原本存储在序号存储器中的数据指针值与接收到的数据一并进行存储。当根据分类结果,按照指针链表读取数据时,首先读取序号存储器内的数据序号,并将序号存储器中对应位置置为全1。同时判断链表中数据是否多于1个,当数据多余1个时将沿着链表将数据从数据存储器中全部读出。
60.基于上述装置,本实施例的equihash算法数据的分类、存储方法,包括以下步骤:(1)当装置接收到一个新数据时,根据累加器输出为其分配1个序号。
61.(2)根据接收到的数据的某些位的数值计算判断该数据属于多个链表中的哪个链表,即分类。
62.(3)读取序号存储器中该链表内容,包括链表的链头指针p(其内容等于最后一个加入本链表的数据序号)以及本链表中是否只存在一个数据的标识位ds。
63.情况1:如果该链表内容为二进制全1,表明目前链表尚为空链表,将链表中指针值p赋值为接收到数据的序号,同时标识位ds赋值为0。同时,随同数据一同存储的序号值赋为二进制全1,表示在该数据之前链表已无其他数据。
64.情况2:如果该链表内容中,标识位ds值为0,表明该链表中只有1个数据。则标识位ds值置为1,将链头指针p中原值随同数据一同存储,同时将链表中指针值p赋值为接收到数据的序号。
65.情况3:如果该链表内容中,标识位ds值为1,链头指针p的值非二进制全1,表明该链表中有2个或者2个以上数据。则标识位ds值置为1,将链头指针p中原值随同数据一同存储,同时将链表中指针值p赋值为接收到数据的序号。
66.上述步骤(3)具体包括:序号存储器含有多行数据存储空间,每一行表示一个链表,其中包含链头指针p(其内容等于最后一个加入本链表的数据序号)以及本链表中是否只存在一个数据的标识
位ds(链表中不存在数据该位为1,链表中只有1个数据该位为0,多余一个数据该位为1)。利用数据分类、存储过程都是在各链表全为空链表的情况下开始,即每个链表都是从空链表状态变为1个数据状态在转变为2个或2个以上数据状态,利用链头指针p和标识位ds全1表示空链表。
67.当存入头一个数据时,标识位ds置为0,链头指针p赋值为存入数据的序号;当存入第二个以及后续数据时,标识位ds置为1,链头指针p赋值为最新存入数据的序号。
68.更为具体地,如图2所示,第k个数据存储前,首先判断其所述分类对应的链表(即图2中第3个链表)中数据存储情况,由于标识位ds和头指针p均为1,则获知第3个链表为空,因此直接将序号为k的数据附带空指针(即图2数据存储器的序号框中不包含任何指针)存入数据存储器后,更新第3个链表的头指针p为k、标识位ds为0后,完成存储;后续数据的存储说明如下,假设第p个数据所述分类与第k个数据相同,均应存储至第3个链表,且k至p之间的其它数据均不属于第3个链表,则第p个数据的存储过程如图3所示:首先判断第3个链表中数据存储情况,由于标识位ds为0,获知此时第3个链表中存有一个数据,因此将序号为p的数据附带指针k存入数据存储器后,更新第3个链表的头指针p为p、标识位ds为1后,完成存储.本实施例提供一种equihash算法数据的读取方法,包括以下步骤:(1)在序号存储器中找到对应的链表位置,将链头指针p以及,标识位ds的值读取出来。
69.(2)根据链头指针p以及标识位ds的值进行如下操作:情况1:当链头指针p以及标识位ds的值为二进制全1,则表明该链表为空链表,放弃数据读取操作,进行下一个链表的数据读取。
70.情况2:当标识位ds的值为二进制0,则表明该链表中只有1个数据,放弃数据读取操作,将链头指针p以及标识位ds的值置为二进制全1,并进行下一个链表的数据读取。
71.情况3:当链头指针p非二进制全1前标识位ds的值为二进制1,则表明该链表中的数据个数大于等于2个,读取指针p中数值,p值即该链表中最后一个数的序号,同时将序号存储中该链表的数值置为二进制全1。根据该序号计算该数据在数据存储器中的位置,将该数据以及一同存储的该数据在链表中前一个数据的序号一并读取。并根据前一个数据的序号读取下一个数据以及一并存储的数据序号读取。如此循环,直到读取到的前一个数据序号为二进制全1,表示该链表已全部读取完毕,进行下一个链表的数据读取。
72.上述步骤(2)具体包括:利用序号存储器中对应链表中的链头指针p和标识位ds的数值预先判断该链表中存在0个、1个或者1个以上数据。当链表中不存在数据时直接放弃数据读取;当链表中只存在1个数据时,后续计算中无法进行后续的异或计算,也直接放弃数据读取;当链表中存在1个以上数据时,可利用与数据同时存储的前一个数据的序号进行整个链表的数据读取,并通过前一个数据的序号是否为二进制全1判断是否已经将数据全部读取完成。
73.更为具体地,如图4所示,读取操作首先判断链表中数据存储情况,对于标识位ds与头指针p均为二进制1(图4上)和标识为ds为0(图4中)的情况,放弃读取;对于标识为ds为1,且头指针不全为1(图4下)的情况,依次执行上述读取步骤,得到读取数据。
74.本实施例的有益效果在于:在上述任一实施例的有益效果的基础上,本实施例由于可以提前判断链表中的数据个数,大幅提高了对于equihash算法数据的分类、存储与读取效率。
75.下面对本发明提供的基于分类的数据存取系统进行描述,下文描述的基于分类的数据存取系统与上文描述的基于分类的数据存取方法可相互对应参照。
76.如图6所示,本发明实施例还提供一种基于分类的数据存取系统,包括:序号模块1,用于接收第一数据,并根据接收顺序得到所述第一数据的存储序号;分类模块2,用于根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;存储模块3,用于顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;更新模块4,用于将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
77.进一步地,本实施例还包括:读取模块,用于通过目标分类数据集,读取设定的数据;所述目标分类数据集是根据分类数据集的标识确定的,数据数量满足拟定后续操作所需数量的分类数据集;所述拟定后续操作是所述数据被读取后拟进行的操作。
78.标识重置模块,用于将所述目标分类数据集的标识置为第一零标识。
79.所述读取模块包括:读取单元,用于根据第i个第二数据的存储序号,执行读取操作得到第i个第二数据;其中,若i等于1,则所述第一个第二数据的存储序号是根据所述目标分类数据集的头数据关联参数确定的;若i大于1,则所述第i个第二数据的存储序号是通过第i

1个第二数据确定的;所述读取操作是指:根据所述第i个第二数据的存储序号确定第i个第二数据的起止位置:序号确定第i个第二数据的起止位置:式中,、分别为第i个第二数据的起、止位置;为所述第i个第二数据的存储序号;为所述第二数据的比特位数,且不同所述第二数据的比特位数相同;
根据所述第i个第二数据的起止位置,读取得到第i个第二数据。
80.所述更新模块4包括:第一单元,用于确定所述第一标识为第一零标识,则通过更新头数据关联参数和/或更新所述第二标识置为用于标识分类数据集中数据数量等于1的值,将所述第一标识更新为第一非零标识;第二单元,用于确定所述第一标识为第一非零标识,且所述第二标识是用于标识分类数据集中数据数量等于1的值,则将所述第二标识更新为用于标识分类数据集中数据数量大于1的值;第三单元,用于确定所述第一标识为第一非零标识,且所述第二标识是用于标识分类数据集中数据数量大于1的值,则保持所述第二标识为用于标识分类数据集中数据数量大于1的值。
81.本实施例的有益效果在于:1、通过不同分类数据集实现了数据类型的区分;2、在第1点的基础上,分类数据集配合包括第一数据和相邻数据关联参数的第二数据,实现了灵活的存储空间动态管理、降低了数据存入操作的复杂度;3、通过分类数据集的标识实现了数据数量的区分;4、在第3点的基础上,分别基于第一标识和第二标识区分数据数量为零的分类和数据数量非零的分类,即在第二标识(即专用标识位)的基础上增加了第一标识(即该分类数据集的bit位是否全0或全1),从而使得数据数量的区分维度得以提升。
82.图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行基于分类的数据存取方法,该方法包括:接收第一数据,并根据接收顺序得到所述第一数据的存储序号;根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
83.此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施
例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
84.另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于分类的数据存取方法,该方法包括:接收第一数据,并根据接收顺序得到所述第一数据的存储序号;根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
85.又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于分类的数据存取方法,该方法包括:接收第一数据,并根据接收顺序得到所述第一数据的存储序号;根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
86.又一方面,本发明还提供一种芯片,包括逻辑功能部;所述逻辑功能部被芯片执行时实现以执行上述各方法提供的基于分类的数据存取方法,该方法包括:接收第一数据,并根据接收顺序得到所述第一数据的存储序号;根据所述第一数据中的分类信息,确定所述第一数据所属的分类数据集;所述分类数据集存储在序号存储器中,包括用于指向设定数据的头数据关联参数和用于标识分类数据集中数据数量的标识;顺序存储包括第一数据和相邻数据关联参数的第二数据至数据存储器;所述相邻数据关联参数的取值为所述分类数据集在顺序存储时刻的头数据关联参数;将所述分类数据集的头数据关联参数更新为所述第一数据的存储序号,并更新所述分类数据集的标识;所述标识包括用于标识分类数据集对应类别的数据数量是否为零的第一标识和用于标识分类数据集对应类别的数据数量是否大于设定阈值的第二标识;所述第一标识包括第一零标识和第一非零标识;所述第一零
标识为分类数据集中每个比特均为设定的二进制值的标识;所述第一非零标识为分类数据集中每个比特不均为设定的二进制值的标识;所述设定的二进制值为0或1。
87.值得说明的是,不同于电子设备实施例、计算机程序实施例以及存储介质实施例中,基于分类的数据存取方法的步骤是基于软件程序实现的,本发明实施例提供的芯片中,基于分类的数据存取方法的步骤是基于逻辑单元的固件实现的,换言之,通过与非门等逻辑门的结构设计(即芯片设计),使得本实施例提供的芯片能够得以执行基于分类的数据存取方法的步骤。
88.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
89.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
90.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献