归并树形数据排序系统和排序方法技术方案

技术编号:37141734 阅读:20 留言:0更新日期:2023-04-06 21:47
本发明专利技术提供了一种归并树形数据排序系统和排序方法,其中,该数据排序系统包括用于流水化数据排序的多个归并树形排序装置,各归并树形排序装置包括:至少两种输出数据数量不同的双调半排序模块和缓存模块;输出数据数量不同的双调半排序模块按输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求;每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序及输出且阻塞另一种序列的排序及输出。序列的排序及输出。序列的排序及输出。

【技术实现步骤摘要】
归并树形数据排序系统和排序方法
[0001]本申请是申请日为2021年3月11日,申请号为202110264743.X,专利技术名称为“归并树形排序装置、排序系统及排序方法”的专利申请的分案申请。


[0002]本专利技术涉及数据处理
,尤其涉及一种归并树形数据排序装置、排序系统及排序方法。

技术介绍

[0003]排序在很多应用场景中发挥关键性作用,如数据挖掘、模式识别等。随着数据量的爆炸式增长,在大规模数据的排序过程中,减小排序延时、增大排序吞吐量显得越来越重要。考虑到FPGA(Field Programmable Gate Array,现场可编程门阵列)自身具备的并行性、可重配置等特性,将排序算法使用FPGA实现是一个不错的选择。
[0004]在FPGA上部署排序算法时,为实现任意数据规模的排序,通常会选择使用归并排序算法。但是常见的归并算法一个时钟周期只能输出一个数据,极大地限制了排序算法的吞吐量,进而增大了延时。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种归并树形数据排序装置、排序系统及排序方法,以实现一个时钟周期输出多个数据,以降低延时,实现高效排序。
[0006]为了达到上述目的,本专利技术采用以下方案实现:
[0007]根据本专利技术实施例的一个方面,提供了一种归并树形数据排序装置,包括:至少两种输出数据数量不同的双调半排序模块和缓存模块;
[0008]其中,输出数据数量不同的双调半排序模块按输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块,以及归并树形结构中的靠近底层的双调半排序模块的输出端连接与其紧邻的靠近顶层的双调半排序模块的输入端;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求;
[0009]每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序及输出且阻塞另一种序列的排序及输出;各输出数据数量为多个的双调半排序模块用于输出的序列的排列方式均与目标排序方式一致;
[0010]归并树形结构中的最底层的双调半排序模块用于接收外部输入的两个有序序列的数据,最顶层的双调半排序模块用于输出在归并树形排序装置的一次排序中参与排序的所有数据中最靠近目标排序结果头部的相应数量的数据。
[0011]在一些实施例中,归并树形结构的层数为:log
2 l,l取2的幂次的值,其中,l为所述归并树形排序装置的用于接收外部输入的有序序列的端口的数量;
[0012]各层双调半排序模块的输出数据数量为:p取2的幂次的值,其中,p表示最顶层的双调半排序模块的输出数据数量,表示向上取整。
[0013]在一些实施例中,所述缓存模块为FIFO模块。
[0014]根据本专利技术实施例的另一个方面,提供了一种归并树形数据排序系统,包括至少一个归并树组,每个归并树组包括用于流水化数据排序的多个如上述任一实施例所述的归并树形排序装置。
[0015]作为本专利技术实施例一种可选的实施方式,在归并树形数据排序系统包括多个归并树组的情况下,各所述归并树组的内部结构相同。
[0016]作为本专利技术实施例一种可选的实施方式,所述的归并树形数据排序系统,还包括:预排序模块;
[0017]所述预排序模块,用于对外部输入多个序列分别按目标排序方式进行预排序并将多个预排序后的序列存储至内存模块;
[0018]所述归并树组,用于从内存模块中获取多个预排序后的序列,对获取的多个预排序后的序列中的数据进行排序,并将排序后输出的有序序列存储至内存模块。
[0019]在一些实施例中,所述的归并树形数据排序系统,还包括:额外的如上述任一实施例所述的归并树形排序装置,用于对从内存模块转存至存储模块的多个排序后输出的有序序列进行排序。
[0020]在一些实施例中,所述内存模块为DRAM,和/或所述存储模块为SSD或Flash。
[0021]在一些实施例中,所述预排序模块,用于通过锦标赛排序方式对外部输入多个序列进行预排序。
[0022]根据本专利技术实施例的另一个方面,提供了一种归并树形数据排序方法,适用于如上述任一实施例所述的归并树形排序装置,所述排序方法包括:
[0023]利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据;
[0024]利用归并树形排序装置对获取的所有数据进行排序处理,并输出获取的所有数据中部分数据的有序序列;
[0025]在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
[0026]利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列;
[0027]在归并树形排序装置的所有输入端口对应的有序序列中均不存在待获取数据的情况下,确定归并树形排序装置的所有输入端口对应的有序序列中的所有数据完成排序。
[0028]在一些实施例中,在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据,包括:
[0029]在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,若归并树形排序装置中未被数据阻塞的所有输入端口对应的有序序列中的数据已被获取
完,则在数据已被获取完的有序序列中补充数据并将补充的数据标志为无效,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
[0030]利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,包括:
[0031]利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,并过滤掉输出的有序序列中被标志为无效的数据。
[0032]在一些实施例中,利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据,包括:
[0033]利用归并树形排序装置的各输入端口从相应数据位数据的有序序列获取相应数量的数据位的数据;
[0034]利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列之后,所述方法还包括:
[0035]在根据输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位对应的数据结束位确定该数据位的数据所在的数据块的数据位为未结束的情况下,将输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位合并至前次输出的有序序列中的数据位。
[003本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种归并树形数据排序系统,其特征在于,包括至少一个归并树组,每个归并树组包括用于流水化数据排序的多个归并树形排序装置,各归并树形排序装置包括:至少两种输出数据数量不同的双调半排序模块和缓存模块;其中,输出数据数量不同的双调半排序模块按每个时钟周期输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块,以及归并树形结构中的靠近底层的双调半排序模块的输出端连接与其紧邻的靠近顶层的双调半排序模块的输入端;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求;每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序及输出且阻塞另一种序列的排序及输出;各输出数据数量为多个的双调半排序模块用于输出的序列的排列方式均与目标排序方式一致;归并树形结构中的最底层的双调半排序模块用于接收外部输入的两个有序序列的数据,最顶层的双调半排序模块用于输出在归并树形排序装置的一次排序中参与排序的所有数据中最靠近目标排序结果头部的相应数量的数据。2.如权利要求1所述的归并树形数据排序系统,其特征在于,归并树形结构的层数为:log
2 l,l取2的幂次的值,其中,l为所述归并树形排序装置的用于接收外部输入的有序序列的端口的数量;各层双调半排序模块的输出数据数量为:i=0,1,2...(log2l

1),p取2的幂次的值,其中,p表示最顶层的双调半排序模块的输出数据数量,表示向上取整。3.如权利要求1所述的归并树形数据排序系统,其特征在于,所述归并树形...

【专利技术属性】
技术研发人员:孔浩
申请(专利权)人:中科驭数北京科技有限公司
类型:发明
国别省市:

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

1