一种可扩展的高速并行查找相等数据的处理方法与装置制造方法及图纸

技术编号:35826014 阅读:18 留言:0更新日期:2022-12-03 13:53
本发明专利技术公开了一种可扩展的高速并行查找相等数据的处理装置和方法,包括用于对输入的数据进行分桶处理的分桶逻辑电路、以及用于将分桶处理后的数据分别进行存储的若干分桶。本发明专利技术先将输入的数据按照数据粗粒度的大小分配到若干个分桶中;然后根据接收数据的数值,建立链表,将每个分桶中相同数值的数据使用链表的方式进行串联;最后根据链表,收集并输出相同数据的序号。本发明专利技术采用分桶逻辑电路和分桶对数据进行处理,可以让数据处理并行进行,加快获得结果的速度,再以链表方式找相同数据,可免掉数据预排序。可免掉数据预排序。可免掉数据预排序。

【技术实现步骤摘要】
一种可扩展的高速并行查找相等数据的处理方法与装置


[0001]本专利技术涉及数据处理领域,尤其涉及到一种可扩展的高速并行查找相等数据的处理方法与装置。

技术介绍

[0002]所谓“生日问题”,是指从n个(n>10000)数据中,找到数值相同的数据,输出数值相等数据的序号。例如:输入21个数据,他们的序号和数值分别如下:
[0003]序号数值04215421253274751576189717583191241016411217121161342147154216717421871942207
[0004]需要的输出结果应当是:{{0,13,15,17,19},{4,14,16,18,20}}。
[0005]现有的方法是:先对n个数据按照数值进行排序,然后按照从小到大的顺序逐个进行比较,提取出相等数据的序列号。
[0006]在要求使用硬件电路实现,并且n>=10000的场景下,现有排序输出相等数据方法的缺陷在于:
[0007]1.传统排序方法只能串行处理数据,当n很大的时候,延时将会非常大(快速排序的复杂度为O(nlog2(n))。
[0008]2.排序之后,获取相等数据原始index仍然需要对排序后的数据进行比较,当n很大的时候,数据的位宽也会变得很大,这会让比较器的时序变差,使得系统的可扩展性变差。
[0009]3.获取相同数据的原始index需要的延时仍是O(nlog2(n))的复杂度。
[0010]因此,我们有必要对现有方法进行改善,以克服上述缺陷。

技术实现思路

[0011]本专利技术的目的是提供一种可扩展的高速并行查找相等数据的处理方法与装置,采用分桶逻辑电路和分桶对数据进行处理,可以让数据处理并行进行,加快获得结果的速度,再以链表方式找相同数据,可免掉数据预排序。
[0012]本专利技术的上述技术目的是通过以下技术方案实现的:
[0013]一种可扩展的高速并行查找相等数据的处理装置,包括用于对输入的数据进行分桶处理的分桶逻辑电路、以及用于将分桶处理后的数据分别进行存储的若干分桶;
[0014]所述分桶逻辑电路为除法器,其根据输入数据的数值和分桶个数的除法结果的商的值,将数据路由到对应的分桶中;
[0015]每个所述分桶均具有处理逻辑电路,其包括用于建立链表的关键存储装置的地址簿、用于存储输入的数据的序号和相同数据组成链表的指针的数据存储器、以及用于标记数据存储器中有效行的有效标记存储器。
[0016]一种可扩展的高速并行查找相等数据的处理装置的处理方法,包括如下步骤:
[0017]1)分桶:将输入的数据按照数据粗粒度的大小分配到若干个分桶中;
[0018]2)建立链表:根据接收数据的数值,建立链表,将每个分桶中相同数值的数据使用链表的方式进行串联;
[0019]3)收集相等数据:根据链表,收集并输出相同数据的序号。
[0020]进一步的,所述步骤1)的具体方法如下:
[0021]设数据的数值分布在0~9999之间,设置分桶的个数为n=10;
[0022]分桶逻辑电路会将每个输入数据的数值除以1000,根据得到的商x,x分布在0~9之间,然后将输入的数据送往对应的分桶x中;除法得到的余数作为进入地址簿的读地址。
[0023]进一步的,所述步骤2)的具体方法如下:
[0024]2.1)在所述分桶中均例化一个地址簿,把经分桶后的新数据的余数作为地址簿的读地址,读数据为与该数据相等的前一数据的原始序列号,当该数据前面没有与该数据相等的数据时,填入invalid;在读操作结束之后,对相同地址进行写地址、写数据,写地址为该数据的读地址,写入的数据就是当前数据的序列号;
[0025]2.2)在所述分桶中均例化一个数据存储器,在地址簿的读操作结束之后,产生写地址和写数据;写地址为该数据的序列号以raw_index+rdata为写数据写入数据存储器;
[0026]2.3)在所述分桶中均例化一个有效标记存储器,有效标记存储器某一行n的值为1,代表了在数据存储器中第n行的数据是有效的;在算法处理的初始化阶段,数据有效标志存储器的每一行都会被初始化为无效状态,即0;在算法执行中,在往数据存储器写入数据的同时,对相同行号的数据有效标志存储器中写1。
[0027]进一步的,所述步骤3)的具体方法如下:
[0028]在所述有效标记存储器中找到序号最大,且有效标记存储器的状态为有效的序号x,以上述序号x为读地址,读取数据存储器的数据,输出原始数据,设置有效标记存储器的状态为无效,并以该数据相等的前一数据的在数据存储器中的存储地址作为下一个进行读操作的地址,重复上述过程,直至读到无效的存储地址值,链条读取结束。
[0029]综上所述,本专利技术具有以下有益效果:
[0030]本专利技术先将输入的数据按照数据粗粒度的大小分配到若干个分桶中;然后根据接收数据的数值,建立链表,将每个分桶中相同数值的数据使用链表的方式进行串联;最后根据链表,收集并输出相同数据的序号。
[0031]本专利技术采用分桶逻辑电路和分桶对数据进行处理,可以让数据处理并行进行,加快获得结果的速度,再以链表方式找相同数据,可免掉数据预排序。
附图说明
[0032]图1是本专利技术所述的可扩展的高速并行查找相等数据的处理装置的示意图。
[0033]图2是本专利技术所述装置的数据处理流程示意图。
[0034]图3是本专利技术所述的链表建立流程图。
[0035]图4是本专利技术所述的相等数据的收集流程图。
[0036]图5是本专利技术所述的实施例的数据流程图。
[0037]图6是本专利技术所述的实施例的数据流程图。
具体实施方式
[0038]为了使本专利技术实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合图示与具体实施例,进一步阐述本专利技术。
[0039]如图1所示,本专利技术所述的一种可扩展的高速并行查找相等数据的处理装置,包括:
[0040]分桶逻辑电路:本质是一个除法器,根据输入数据的数值和分桶个数m的除法结果的商的值x,将数据路由到桶x中;
[0041]分桶:每个分桶中有相同的处理逻辑电路,每个分桶中的必要装置包括:地址簿,用于建立链表的关键存储装置;数据存储器,用于存储输入的数据的序号,以及相同数据组成链表的指针;有效标记存储器,用于标记数据存储器中有效行的标记。
[0042]所述处理装置数据处理流程见图2。
[0043]1.分桶:
[0044]本专利技术的第一个创新点是在面对海量数据的时候(数据总数量>=10000),使用分桶处理的思路,将n个数据按照数据粗粒度的大小分配到n个“桶”中。
[0045]所谓粗粒度,譬如按照该数据是否大于1000,且小于2000;是否大于2000,且小于3000

的方式进行分配。
[0046]比如有1本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种可扩展的高速并行查找相等数据的处理装置,其特征在于,包括用于对输入的数据进行分桶处理的分桶逻辑电路、以及用于将分桶处理后的数据分别进行存储的若干分桶;所述分桶逻辑电路为除法器,其根据输入数据的数值和分桶个数的除法结果的商的值,将数据路由到对应的分桶中;每个所述分桶均具有处理逻辑电路,其包括用于建立链表的关键存储装置的地址簿、用于存储输入的数据的序号和相同数据组成链表的指针的数据存储器、以及用于标记数据存储器中有效行的有效标记存储器。2.一种如权利要求1所述可扩展的高速并行查找相等数据的处理装置的处理方法,其特征在于,包括如下步骤:1)分桶:将输入的数据按照数据粗粒度的大小分配到若干个分桶中;2)建立链表:根据接收数据的数值,建立链表,将每个分桶中相同数值的数据使用链表的方式进行串联;3)收集相等数据:根据链表,收集并输出相同数据的序号。3.根据权利要求2所述的可扩展的高速并行查找相等数据的处理方法,其特征在于,所述步骤1)的具体方法如下:设数据的数值分布在0~9999之间,设置分桶的个数为n=10;分桶逻辑电路会将每个输入数据的数值除以1000,根据得到的商x,x分布在0~9之间,然后将输入的数据送往对应的分桶x中;除法得到的余数作为进入地址簿的读地址。4.根据权利要求2所述的可扩展的高速并行查找相等数据的处理方法,其特征在于,所述步骤2...

【专利技术属性】
技术研发人员:顾仁萍朱爱勇俞思伟
申请(专利权)人:上海健康医学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1