CN113076312B - 归并树形排序装置、排序系统及排序方法 - Google Patents

归并树形排序装置、排序系统及排序方法 Download PDF

Info

Publication number
CN113076312B
CN113076312B CN202110264743.XA CN202110264743A CN113076312B CN 113076312 B CN113076312 B CN 113076312B CN 202110264743 A CN202110264743 A CN 202110264743A CN 113076312 B CN113076312 B CN 113076312B
Authority
CN
China
Prior art keywords
data
sorting
module
tree
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110264743.XA
Other languages
English (en)
Other versions
CN113076312A (zh
Inventor
鄢贵海
卢文岩
孔浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202211460658.1A priority Critical patent/CN115905233B/zh
Priority to CN202110264743.XA priority patent/CN113076312B/zh
Publication of CN113076312A publication Critical patent/CN113076312A/zh
Application granted granted Critical
Publication of CN113076312B publication Critical patent/CN113076312B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种归并树形排序装置、排序系统及排序方法,其中,该排序装置包括:至少两种输出数据数量不同的双调半排序模块和缓存模块;输出数据数量不同的双调半排序模块按输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求;每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序及输出且阻塞另一种序列的排序及输出。通过上述方案能够实现在一个时钟周期输出多个数据,能够提高排序效率。

Description

归并树形排序装置、排序系统及排序方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种归并树形排序装置、排序系统及排序方法。
背景技术
排序在很多应用场景中发挥关键性作用,如数据挖掘、模式识别等。随着数据量的爆炸式增长,在大规模数据的排序过程中,减小排序延时、增大排序吞吐量显得越来越重要。考虑到FPGA(Field Programmable Gate Array,现场可编程门阵列)自身具备的并行性、可重配置等特性,将排序算法使用FPGA实现是一个不错的选择。
在FPGA上部署排序算法时,为实现任意数据规模的排序,通常会选择使用归并排序算法。但是常见的归并算法一个时钟周期只能输出一个数据,极大地限制了排序算法的吞吐量,进而增大了延时。
发明内容
有鉴于此,本发明提供了一种归并树形排序装置、排序系统及排序方法,以实现一个时钟周期输出多个数据,以降低延时,实现高效排序。
为了达到上述目的,本发明采用以下方案实现:
根据本发明实施例的一个方面,提供了一种归并树形排序装置,包括:至少两种输出数据数量不同的双调半排序模块和缓存模块;
其中,输出数据数量不同的双调半排序模块按输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块,以及归并树形结构中的靠近底层的双调半排序模块的输出端连接与其紧邻的靠近顶层的双调半排序模块的输入端;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求;
每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序及输出且阻塞另一种序列的排序及输出;各输出数据数量为多个的双调半排序模块用于输出的序列的排列方式均与目标排序方式一致;
归并树形结构中的最底层的双调半排序模块用于接收外部输入的两个有序序列的数据,最顶层的双调半排序模块用于输出在归并树形排序装置的一次排序中参与排序的所有数据中最靠近目标排序结果头部的相应数量的数据。
在一些实施例中,归并树形结构的层数为:log2l,l取2的幂次的值,其中,l为所述归并树形排序装置的用于接收外部输入的有序序列的端口的数量;
各层双调半排序模块的输出数据数量为:
Figure BDA0002971898960000021
i=0,1,2...(log2l-1),p取2的幂次的值,其中,p表示最顶层的双调半排序模块的输出数据数量,
Figure BDA0002971898960000022
表示向上取整。
在一些实施例中,所述缓存模块为FIFO模块。
根据本发明实施例的另一个方面,提供了一种排序系统,包括至少一个归并树组,每个归并树组包括用于流水化数据排序的多个如上述任一实施例所述的归并树形排序装置。
作为本发明实施例一种可选的实施方式,在排序系统包括多个归并树组的情况下,各所述归并树组的内部结构相同。
作为本发明实施例一种可选的实施方式,所述的排序系统,还包括:预排序模块;
所述预排序模块,用于对外部输入多个序列分别按目标排序方式进行预排序并将多个预排序后的序列存储至内存模块;
所述归并树组,用于从内存模块中获取多个预排序后的序列,对获取的多个预排序后的序列中的数据进行排序,并将排序后输出的有序序列存储至内存模块。
在一些实施例中,所述的排序系统,还包括:额外的如上述任一实施例所述的归并树形排序装置,用于对从内存模块转存至存储模块的多个排序后输出的有序序列进行排序。
在一些实施例中,所述内存模块为DRAM,和/或所述存储模块为SSD或Flash。
在一些实施例中,所述预排序模块,用于通过锦标赛排序方式对外部输入多个序列进行预排序。
根据本发明实施例的另一个方面,提供了一种排序方法,适用于如上述任一实施例所述的归并树形排序装置,所述排序方法包括:
利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据;
利用归并树形排序装置对获取的所有数据进行排序处理,并输出获取的所有数据中部分数据的有序序列;
在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列;
在归并树形排序装置的所有输入端口对应的有序序列中均不存在待获取数据的情况下,确定归并树形排序装置的所有输入端口对应的有序序列中的所有数据完成排序。
在一些实施例中,在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据,包括:
在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,若归并树形排序装置中未被数据阻塞的所有输入端口对应的有序序列中的数据已被获取完,则在数据已被获取完的有序序列中补充数据并将补充的数据标志为无效,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,包括:
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,并过滤掉输出的有序序列中被标志为无效的数据。
在一些实施例中,利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据,包括:
利用归并树形排序装置的各输入端口从相应数据位数据的有序序列获取相应数量的数据位的数据;
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列之后,所述方法还包括:
在根据输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位对应的数据结束位确定该数据位的数据所在的数据块的数据位为未结束的情况下,将输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位合并至前次输出的有序序列中的数据位。
根据本发明实施例的另一个方面,还提供了一种排序方法,其特征在于,适用于上述任一实施例所述的排序系统,所述排序方法包括:
利用排序系统从内存模块中获取多个有序序列的数据进行排序处理。
在一些实施例中,利用排序系统从内存模块中获取多个有序序列的数据进行排序处理,包括:
从存储模块获取数据至内存模块的同时,利用排序系统对内存模块中的多个有序序列的数据进行排序处理。
本发明实施例的归并树形排序装置、排序系统及排序方法,通过实现双调半排序,并利用双调半排序模块形成能够输出多个数据的归并树,能够提高排序装置的吞吐量,降低延时,从而提高排序效率。而且,通过基于本发明的归并树形排序装置的思想,选择不同的硬件资源,可以得到任意输出数据数量的排序装置,从而实现任意输出数据数量的归并排序,同时也可以实现任意输入长度的归并排序。所以本发明的装置具有较好的可扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例的归并树形排序装置的结构示意图;
图2是本发明一实施例的排序系统的结构示意图;
图3是本发明一实施例的排序方法的流程示意图;
图4是现有归并排序逻辑示意图;
图5是现有归并树形排序示意图;
图6是本发明一实施例的8输入的双调半排序模块的原理示意图;
图7是本发明一实施例的8输入2输出的使用双调半排序的归并树形排序结构示意;
图8是本发明一实施例中的排序数据格式示意图;
图9是本发明一实施例的归并森林结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
需要预先说明的是,下述实施例或示例的描述或其中所提及的特征可以以相同或类似的方式,与其他实施例或示例中的特征组合,或替换其他实施例或示例中的特征,以形成可能的实施方式。另外,本文所使用的术语“包括/包含”是指特征、要素、步骤或组件的存在,但并不排除还存在一个或多个其他特征、要素、步骤或组件。
为了解决现有归并算法存在的瓶颈,以提升带宽、减小延时,可以考虑从每个时钟周期输出的数据量等方面入手,同时可以将不同的数据规模、数据宽度、吞吐量、硬件配置等考虑在内,实现一种灵活多变的归并树排序高效硬件实现形式,以实现任意数据规模的高效排序。
为了实现任意数据规模的高吞吐量和低延时排序,本发明在现有归并树形排序的基础上进一步改进,将双调半排序模块引入归并树形排序中,提升了归并树在不同问题需求场景下的适应性。设计开发人员在进行排序时,仅需使用该改进型归并树即可处理任意规模的数据,无需在其他不同的排序实现形式间切换,能够减少设计开发人员的工作量和操作实现难度。同时可以通过进一步的扩展应用可以在多个FPGA上进行部署,实现分布式的排序应用解决方案。
图1是本发明一实施例的归并树形排序装置的结构示意图,参见图1,该些实施例的归并树形排序装置,可包括:至少两种输出数据数量不同的双调半排序模块和缓存模块。在一些实施例中,最底层的双调半排序模块和次底层的双调半排序模块的输出数据数量可能相同,例如,均输出一个数据;在另一些实施例中,各不同层的双调半排序模块的输出数据数量可均不同,具体地,需要根据输入端口的数量、要求的最顶层模块输出数据的数量等确定。其中,归并树形排序装置中的部分或所有缓存模块可以为FIFO模块(先进先出缓存模块),或者可以是其他类型的缓存模块。
其中,输出数据数量不同的双调半排序模块按输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块,以及归并树形结构中的靠近底层的双调半排序模块的输出端连接与其紧邻的靠近顶层的双调半排序模块的输入端;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求。
每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序(即,满足单调性要求)及输出且阻塞另一种序列的排序及输出;各输出数据数量为多个的双调半排序模块用于输出的序列的排列方式均与目标排序方式一致(即,均采取一致的单调性要求)。例如,希望利用该排序装置将多个有序序列的数据合并在一起从小到大排列,则一个双调半排序模块并不是按现有的双调排序方法输出双调序列,而是仅输出双调序列中的升序序列,降序序列不会输出,而且也可以不进行得到降序序列的过程,所以,双调半排序模块只输出了输入该模块中的所有数据(可以认为两列数据)的一半(等效于输入的一列数据的数据量)。
归并树形结构中的最底层的双调半排序模块用于接收外部输入的两个有序序列的数据,最顶层的双调半排序模块用于输出在归并树形排序装置的一次排序中参与排序的所有数据中最靠近目标排序结果头部的相应数量的数据。最底层的双调半排序模块是归并树形排序装置的输入端的双调半排序模块,一般归并树形排序装置的输入端由多个最底层的双调半排序模块的输入端口构成,最顶层的双调半排序模块是归并树形排序装置的输出端的双调半排序模块,归并树形排序装置的输出端口可以就是最顶层的双调半排序模块的输出端口。其中,“一次排序”是指该实施例的归并树形排序装置获取一次数据并输出一次排序结果的过程。
例如,参见图1,归并树形排序装置包含双调半排序模块X1-M、双调半排序模块X2-M、双调半排序模块X3-M......双调半排序模块Xk-M等双调半排序模块,其中,若双调半排序模块X2-M、X3-M......Xk-M的输出数据的数量均不同,则输出数据的数量是依次增大的。若双调半排序模块X2-M和双调半排序模块X3-M为输出数据数量不同的双调半排序模块,则其间连接有缓存模块,该缓存模块可以用于缓存并累积双调半排序模块X2-M的输出数据,直至累计的输出数据的数量等于双调半排序模块X3-M所对应的输入数据的数量;举例而言,若双调半排序模块X3-M为四输入两输出的模块,则双调半排序模块X3-M的四个输入端口中的每个端口需要输入两个数据(因为只有一半数据输出),另外,而且,若双调半排序模块X2-M为输出一个数据的模块,则双调半排序模块X2-M需要输出两次数据(此时就需要至少将第一次输出的数据缓存起来),得到两个数据,才能输入到双调半排序模块X3-M。若双调半排序模块X1-M和双调半排序模块X2-M为输出数据数量相同的双调半排序模块,则其间可不需增加缓存模块。
进一步的实施例中,可以根据需求、硬件资源等设置所需的规模的归并树形排序装置,例如,设置装置中的设置输入端口数目l和输出端口数目p。
归并树形结构的层数可以为:log2l,l取2的幂次的值,其中,l为所述归并树形排序装置的用于接收外部输入的有序序列的端口的数量。例如,8输入的归并树形排序装置,归并树形结构的层数可以为3层。
各层双调半排序模块的输出数据数量可以为:
Figure BDA0002971898960000071
i=0,1,2...(log2l-1),p取2的幂次的值,其中,p表示最顶层的双调半排序模块的输出数据数量,
Figure BDA0002971898960000072
表示向上取整。例如,8输入,2输出的归并树形排序装置的,所包含的双调半排序模块的输出数据数量可以有2、1、1,根据输出数据数量从底层到顶层依次增大,则最底层可以为1输出的双调半排序模块,中间层可以为1输出的双调半排序模块,顶层可以为2输入的双调半排序模块。
上述各实施例所述的归并树形排序装置,可以利用多个时钟周期完成归并排序处理,通过设计双调半排序模块,能够输出多个数据的归并树形结构,从而能够提高每个时钟周期的吞吐率,所以能够提高归并排序效率,降低了延迟。
基于与上述实施例所述的归并树形排序装置同样的发明构思,本发明实施例还提供了一种排序系统。该排序系统可以形成归并森林结构。
图2是本发明一实施例的排序系统的结构示意图,参见图2,该些实施例的排序系统可包括至少一个归并树组,每个归并树组包括用于流水化数据排序的多个如上述任一实施例所述的归并树形排序装置。其中,流水化数据排序可以是指待排序数据可以在归并树组内依次经过其中各归并树形排序装置进行各个环节的排序处理。
该实施例中,利用一个归并树组中多个归并树形排序装置可以对一些序列进行流水线式排序。上一级归并树的排序结果可以作为下一级归并树的排序输入。以l输入的归并树为例,对于待排序序列a(长度为N),第一级归并树负责将其归并排序成N/(a*l)个长度为a*l的有序子序列;在第一级归并树工作完成之后,N/(a*l)个长度为a*l的有序子序列送至第二级归并树进行处理,此时新的待排序序列b(与序列a不从属于同一个序列,即数据格式中序列结束位已经结束)送至第一级归并树进行处理,以此类推。这样做的好处是,可以一定程度上提升外部存储到内部存储的带宽利用率,而不至于使其长时间处于空闲,同时对于多个不同序列的排序场景也可适用。在有多个归并树组的情况下,不同的归并树组可以独立进行,从而可以并行进行排序,进一步提高了排序效率。
进一步地,在排序系统包括多个归并树组的情况下,各所述归并树组的内部结构可以相同。例如,不同归并树组中所包含的归并树形排序装置的数量可以相同,不同归并树组中的归并树形排序装置的结构、同一归并树组中的不同归并树形排序装置的结构可以相同,不同归并树形排序装置的层数、输入端口数量、输出数据数量可以相同。
对于需要归并排序的多个序列,若序列未按顺序排列,为了提高排序效率,所述的排序系统,进一步地,还可包括:预排序模块。所述预排序模块,用于对外部输入多个序列分别按目标排序方式进行预排序并将多个预排序后的序列存储至内存模块;所述归并树组,用于从内存模块中获取多个预排序后的序列,对获取的多个预排序后的序列中的数据进行排序,并将排序后输出的有序序列存储至内存模块。存储模块的存储空间大小一般可以大于内存模块的存储空间大小。其中,例如,内存模块可以是DRAM(动态随机存取存储器)等。所述存储模块可以为SSD(固态硬盘)、Flash(闪存)等存储器件。可以将原始待排序数据分成特定长度规模的多个部分,每部分可以利用预排序模块借助任意一种排序算法排序生成与目标排序方式一致的有序序列。
具体地,所述预排序模块可以采用各种方法实现对序列进行与排序,例如,所述预排序模块,可以用于通过锦标赛排序方式对外部输入多个序列进行预排序。如此一来,通过预排序可以提升粒度,即a的大小,进而减少需要归并树运行的次数(N/(a*l)),以此可以提高排序效率。
归并树组可以从内存模块中取数据进行排序,然后将排序的数据暂存到内存模块中,然后将内存模块中排序后的序列存到存储模块中,内存模块的存储空间一般较小,存储模块的存储空间一般较大,而可能还需要将不同归并树组输出的有序序列进行归并排序,则可以利用归并树形排序装置对存到存储模块中的所有有序序列进行归并排序。
例如,参见后续图9,设置归并树4可以达到的目的是:假设DRAM大小为32GB,待排序数据2TB存在SSD中,则每次从SSD中获取32GB的数据进行排序,排序结果再存回SSD中,如此共需2TB/32GB=64次;当执行完64次后,SSD中现在会有64段32GB的有序子序列,则需要一个64输入端口的归并树4完成最终的归并排序,即生成2TB的有序序列。
示例性地,所述的排序系统,进一步,可包括:额外的如上述任一实施例所述的归并树形排序装置,用于对从内存模块转存至存储模块的多个排序后输出的有序序列进行排序。其中,该额外的归并树形排序装置是不同于归并树组中的归并树形排序装置。
该些实施例中,存储模块(外部存储设备)可以用于存储任意数据规模的待排序数据,尤其是超大数据规模的情况。内存模块(内部存储设备)可以用于缓存外部存储设备的数据并向归并树组供给数据,同时可以将归并树组排序结果写回至外部存储设备;归并树组可部署多个,不同归并树组间可并行独立运行,归并树组内部可由相同结构的归并树级联组成。归并树的输入端口与输出端口数目可依据硬件设备情况调整,归并树以双调半排序模块为基本归并单元,取代传统的“二选一”形式的比较交换模块,可以提升排序吞吐率。所以,本发明实施例用于实现任意数据规模的高吞吐量和低延时排序。
基于与上述实施例所述的归并树形排序装置同样的发明构思,本发明实施例还提供了一种排序方法。该些实施例的排序方法适用于上述任一实施例所述的归并树形排序装置。
图3是本发明一实施例的排序方法的流程示意图,参见图3,该实施例的排序方法可包括以下步骤:
步骤S110:利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据;
步骤S120:利用归并树形排序装置对获取的所有数据进行排序处理,并输出获取的所有数据中部分数据的有序序列;
步骤S130:在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
步骤S140:利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列;
步骤S150:在归并树形排序装置的所有输入端口对应的有序序列中均不存在待获取数据的情况下,确定归并树形排序装置的所有输入端口对应的有序序列中的所有数据完成排序。
上述步骤S110中,归并树形排序装置的每个输入端口可以对应一列有序序列,可以从相应有序序列读取数据,可以根据需要的数据的量进行读取,例如,若归并树形排序装置的最底层双调半排序模块(叶子结点)为1输出模块,则可以一个输入端口读取一个数据。
上述步骤S120中,归并树形排序装置的输出数据为其中最顶层双调半排序模块的总输入的一般,例如,最顶层双调半排序模块为2输出双调半排序模块,则输入两对数据,会输出两个数据,即这两对数据的一半。
上述步骤S130中,可以在多个时钟周期里,归并树形排序装置完成数据的输入直到数据的输出,而待归并排序的序列中可能有很多数据,所以可以不断从序列中取出数据输入到归并树形排序装置中进行排序处理,也就可以重复利用同样的归并树形排序装置完成对一定的序列进行归并排序。当然每次排序处理时,可以按顺序去数据,例如,若要升序归并排序,则可以使输入端口从各有序序列中最大的数据开始取数据,然后进行归并排序,这样输出的排序后的数据往往是待归并排序的有序序列有所有数据中的最大的那部分数据。在此情况下,可以将后一次输出的排序后数据接到前一次归并排序输出的排序后数据后面,从而可以对待归并排序的所有有序序列的数据进行排序。
上述步骤S140中,例如,需要升序归并排序,则被阻塞的数据可如图6中(a)图中阶段3的上半部分数据,下半部分就是需要输出的排序得到的有序数据,其中,上半部分数据保留在其中,当有新的数据流经阶段1下半部分、阶段2下半部分后,进入阶段3以与之前阻塞的数据进行排序处理,然后输出升序部分。
上述步骤S150中,若待归并排序的所有有序序列中的数据都被读取完了,则该些有序序列的归并排序结束。
进一步地,循环利用归并树形排序装置对待归并排序的多个有序序列进行排序处理时,待归并排序的有序序列中的数据陆续被取出来,由于每次排序处理都会有一部分数据被阻塞在归并树形排序装置中,所以待归并排序的不同有序序列并非都同步读取数据,所以,经过多次排序处理后,可能有的待归并排序序列中的数据已被取完,而有的待归并排序序列中的数据还有剩余,在此情况下,仍需继续排序。或者由于待归并排序序列的数量和装置的输入端口数不同,也可能存在部分序列仍有数据,另一部分序列数据被读完(空缺)的情况。在一些实施例中,可以补齐不足的数据,例如补充0,在另一些实施例中,可以保持空缺。
示例性地,上述步骤S130,即,在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据,具体可包括步骤:S131,在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,若归并树形排序装置中未被数据阻塞的所有输入端口对应的有序序列中的数据已被获取完,则在数据已被获取完的有序序列中补充数据并将补充的数据标志为无效,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据。上述步骤S140,即,利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,具体可包括步骤:S141,利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,并过滤掉输出的有序序列中被标志为无效的数据。
该实施例中,补充数据后进行归并排序处理,可以利用原有逻辑进行排序处理。排序处理后滤除数据可以保持原有数据不被掺入额外数据。可以通过给输入数据设置有效性标志位的方式来区分哪些是补充的数据,例如,标志位为0可以表示为补充的数据,即为无效数据,后续可以根据标志位过滤到之前补充的数据。
待归并排序的多个有序序列中的数据可以是一个个单独的数据,或者可以是较宽数据的数据位,也就是说可以是一个完整数据的部分数据位中的数据。可以通过数据格式中设置来处理不同数据宽度的数据,例如,在一些场景中,序列a的数据宽度为32位,而序列b的数据宽度为64位,但排序时仍是将64位作为一个整体进行排序(否则会违背排序功能正确性),则利用后述本实施例可以对不同位宽数据进行排序。当然在其他实施例中,可以先进行高32位的比较,再进行低32位的比较,具体可以根据比较器硬件规模的设置确定。
示例性地,上述步骤S110,即,利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据,具体可包括步骤:S111,利用归并树形排序装置的各输入端口从相应数据位数据的有序序列获取相应数量的数据位的数据。在上述步骤S140之后,即,利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列之后,图3所示的排序方法,还可包括步骤:S160,在根据输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位对应的数据结束位确定该数据位的数据所在的数据块的数据位为未结束的情况下,将输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位合并至前次输出的有序序列中的数据位。
该实施例中,在待归并排序的有序序列中的数据是数据位的数据时,后一次归并排序输出的数据位数据若是接着前一次归并排序输出的数据位数据的话,可以接在一起,从而形成较宽的数据位的数据。以此,可以方便地对位宽不同的多个有序序列进行归并排序。
基于与上述实施例所述的排序系统同样的发明构思,本发明实施例还提供了另一种排序方法。该些实施例的排序方法适用于上述任一实施例所述的排序系统。该实施例的排序方法可包括以下步骤:S210,利用上述任一实施例所述的排序系统从内存模块中获取多个有序序列的数据进行排序处理。
进一步地,上述步骤S210,即,利用排序系统从内存模块中获取多个有序序列的数据进行排序处理,具体可包括步骤:从存储模块获取数据至内存模块的同时,利用排序系统对内存模块中的多个有序序列的数据进行排序处理。该实施例中,在进行排序处理的同时从内存读取数据,可以提高排序效率。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
为便于描述讨论,以下排序除特殊说明外,均默认为升序。同时以大写字母表示序列流,其对应小写字母表示序列流内部某一元素数据,如序列流A,其内部某一元素数据用a表示。
归并排序算法是一种基于“分-治”思想的排序算法,通过将有序序列两两合并,最终合并输出一个有序序列。如图4所示,每一次比较时,有序序列A和有序序列B每次各取出至多一个数据a和b,a和b比较之后将最大或最小值输出,未输出数据等待下一次比较。
将图4中的比较单元以“1-M”表示,即可以得到图5所示的归并树形排序。图5中,归并模块为8输入端口,分别接收8个有序序列(a0,a1…;b0,b1…;c0,c1…;d0,d1…;e0,e1…;f0,f1…;g0,g1…;h0,h1…)中一个序列的数据,比较单元1-M从两个序列中分别取一个数据,比较后输出一个数据。归并树形排序作为一种二叉树形式的归并模块组合形式,其基本比较单元“1-M”每个时钟周期只能输出一个数据,极大地限制了排序操作的吞吐量提升和延时的改善。
双调排序作为归并排序的一种衍生变体,通过将双调序列依次进行两两合并排序,最终归并输出有序序列。其中,双调序列指的是先升后降或者通过循环移位变成先升后降的序列,如{a1,a2,a3,a4,b1,b2,b3,b4}中若序列a为升序序列,序列b为降序序列时,该序列为双调序列;同样{b3,b4,a1,a2,a3,a4,b1,b2}可以通过循环移位变成{a1,a2,a3,a4,b1,b2,b3,b4},因此也是双调序列。
假设当输入序列为{1,3,5,7,2,4,6,8}时,使用8输入双调排序进行升序排序,此时期望输出序列为{1,2,3,4,5,6,7,8},图6中的(a)图显示出了每一阶段(包括阶段1、阶段2、阶段3)的输出结果,其中阶段2中的灰色框模块表示进行降序排序,非灰色框模块表示进行升序排序,箭头所指方向为排序结果中的最大值方向。即,阶段1输出为{1,3,7,5,2,4,8,6},阶段2输出为{1,3,5,7,8,6,4,2},阶段3输出即最终结果输出为{1,2,3,4,5,6,7,8}。进一步,将阶段3中的虚线右上角部分舍去,即可得到图6中的(b)图所示的双调半排序模块。图6的(b)图所示的双调半排序模块输入为8输入双调序列,输出为4输出升序序列,其中该4输出为8输入中最大的4个数据,即{1,2,3,4,5,6,7,8}中的{5,6,7,8}。
概括来说,2*k输入的双调半排序模块作为双调排序中的一部分,由双调排序模块提取出,可以实现每个时钟周期输出k个有序数据。2*k输入的双调半排序模块可以分为log2(2*k)个过程,如8输入的双调半排序模块可以分为3个过程;每个过程使用多组比较交换单元排序。总体来说,N输入的双调半排序模块时间复杂度为O(log2N)。
进一步,将2*k输入的双调半排序模块用k-M表示,其中k表示该归并模块可以以每个时钟周期输出k个有序数据的速率将两组有序数据流归并,k可以取1,2,4,8,16等2的幂次值,当k为1时,即1-M此时等效为两输入的一个比较交换单元,使用双调半排序模块实现的归并树形排序此时退化为常见归并树形排序(如图8所示);M表示归并(Merger)单元。k-M归并模块的输入为两组长度为k的有序序列,输出为每个时钟周期输出k个有序数据,且该k个有序数据为2*k数据中最大或最小的k个数据。
使用双调半排序模块代替图5中的“1-M”模块,可以得到图7所示双调半排序归并树,具体来说,例如,该归并树有8组有序序列输入,分别表示为A~H;层次0使用2输出双调半排序模块2-M,即输出为每个时钟周期输出2个数据。两个1输出双调半排序模块1-M作为2输出双调半排序模块2-M的子节点处于层次1上,层次1的子节点即层次2使用1输出双调半排序模块1-M作为层次1的子节点。在层次0和层次1之间,因为2输出双调半排序模块2-M的每个输入端口所需序列长度为2,而1输出双调半排序模块1-M每个时钟周期输出1个数据,所以需要在二者之间添加一个FIFO缓存数据。
若假定双调半排序归并树的输入端口数量为l,每个时钟周期输出数量为p,则总共需要log2l层,即数据总共需要经过log2l个k输出双调半排序模块k-M归并模块才能输出;每一层使用k输出双调半排序模块k-M归并模块进行归并,不同层所选用的k输出双调半排序模块k-M归并模块有所不同,具体可有如下关系:
Figure BDA0002971898960000141
对于输出数据量p和输入端口数量l来说可以选取任何值,不同的取值对应着不同的归并树架构形式。在不同的硬件配置上部署使用图7所示归并树时,p和l的取值可根据硬件资源确定,因此可依据硬件配置选取不同的值以达到吞吐量和延时改善的目的。
对于一个输入端口数量为l的双调半排序归并树来说,当l个长度为a的序列流经整个归并树之后,在输出端可以得到长度为a*l的有序序列,如此不断从序列中读取数据利用使用双调半排序模块的归并树形结构排序l次后,得到l个长度为a*l的有序序列;再将l个长度为a*l的序列再次流经整个归并树之后,在输出端便可得到长度为a*l2的有序序列;如此反复迭代,当将l个长度为a*lk的序列流经整个归并树之后,在输出端便可得到长度为a*lk+1的有序序列。通过上述过程,最终可以实现任意数据规模的数据排序,即排序N个数据时,需要循环使用归并树logl N次。当第kx次输入长度不足a*lkx时,需补充多个保留值至长度达到a*lkx,在最终的排序结果中将保留值过滤掉即可。其中保留值为在此次排序中不会出现或不具有使用价值的数据,或者排序数据设置有效数据位。如在某些特殊场景下可选用0作为保留值,或者将排序数据增添标志位,具体如下所述:
排序数据格式,整体数据宽度为m,最高三位作为标志位,其余位作为数据位。标志位中包含有效数据位,序列结束位和数据结束位。其中有效数据位指示当前数据是否有效,占用1位,无效数据用来补充待排序数据规模至l的幂次;序列结束位指示当前序列是否结束,占用1位;数据结束位用来指示数据是否结束,占用1位,当数据结束位有效时,表示数据已经结束,无效时表示该次传输的数据中的数据位附属于上一次使用的数据,用来合并形成不同宽度的数据;序列结束位用来指示第k次流经归并树之后输出的数据长度是否达到a*lk,达到即为1,反之为0。
在基于双调半排序的归并树形排序的使用过程中,可以部署多组归并树组形成归并森林,各组归并树组之间互相独立,归并树组内部包含多个归并树,其中前序归并树的输出是后序归并树的输入,前序归并树在输出以后又可接收新的输入数据,以流水化的形式高效利用硬件逻辑和带宽资源。
如图6所示,归并森林共包含三组归并树组,三组归并树组完全一致,且独立并行运行,从DRAM中获取数据,完成相同数据规模的排序过程,并将排序结果暂存在DRAM中。每组归并树组内部共有4个归并树,归并树结构组织形式完全一致,即p和l的取值完全一致。
使用图9所示归并森林(包含归并树组1、归并树组2、归并树组3的排序系统)进行排序,在数据量比较小时,仅需使用DRAM;而在大数据量时,对于存储在SSD或Flash中的数据,首先可将数据从SSD或Flash中传输到DRAM中,但SSD的访存带宽有限,因此需尽量避免从SSD中多次获取数据,同时需要采用全流水的形式高效利用SSD的带宽资源,即从SSD获取数据的同时就进行部分数据的归并排序。经过DRAM和归并树组的排序之后,可在SSD中进行最终的合并,即可借助于图9所示的归并树4完成最终的归并操作。
从SSD或Flash中传输出来的数据,为提高效率,可以将输入数据预排序,即首先经过一个a输入的预排序模块,每a个数据进行排序生成有序序列。预排序模块可以使用如128输入的锦标赛排序,锦标赛排序具有控制简单,便于硬件实现,时间复杂度合理等优点。预排序模块也可以使用任意一种其他排序算法实现,不影响后续模块的正常工作。预排序模块在将数据预先部分排序的同时,可以将长度为N的待排序序列划分成相同大小的子序列,子序列之后再通过归并树进行排序。
综上所述,本发明实施例的归并树形排序装置、排序系统及排序方法,通过实现双调半排序,并利用双调半排序模块形成能够输出多个数据的归并树,能够提高排序装置的吞吐量,降低延时,从而提高排序效率。而且,通过基于本发明的归并树形排序装置的思想,选择不同的硬件资源,可以得到任意输出数据数量的排序装置,从而实现任意输出数据数量的归并排序,同时也可以实现任意输入长度的归并排序。所以本发明的装置具有较好的可扩展性。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种FPGA上数据的归并树形排序装置,其特征在于,包括:至少两种输出数据数量不同的双调半排序模块和缓存模块;
其中,输出数据数量不同的双调半排序模块按每个时钟周期输出数据数量从小到大的顺序从底层到顶层连接形成归并树形结构,且相邻的两个输出数据数量不同的双调半排序模块之间连接有缓存模块,以及归并树形结构中的靠近底层的双调半排序模块的输出端连接与其紧邻的靠近顶层的双调半排序模块的输入端;缓存模块用于缓存累积前一层双调半排序模块输出的数据以满足后一层双调半排序模块的输入数据数量的要求;
每个双调半排序模块用于对两个有序序列进行双调排序,并在双调排序过程中完成升序序列和降序序列中的一种序列的排序及输出且阻塞另一种序列的排序及输出;各输出数据数量为多个的双调半排序模块用于输出的序列的排列方式均与目标排序方式一致;
归并树形结构中的最底层的双调半排序模块用于接收外部输入的两个有序序列的数据,最顶层的双调半排序模块用于输出在归并树形排序装置的一次排序中参与排序的所有数据中最靠近目标排序结果头部的相应数量的数据。
2.如权利要求1所述的归并树形排序装置,其特征在于,
归并树形结构的层数为:log2l,l取2的幂次的值,其中,l为所述归并树形排序装置的用于接收外部输入的有序序列的端口的数量;
各层双调半排序模块的输出数据数量为:
Figure FDA0003839326490000011
i=0,1,2...(log2l-1),p取2的幂次的值,其中,p表示最顶层的双调半排序模块的输出数据数量,
Figure FDA0003839326490000012
表示向上取整。
3.如权利要求1或2所述的归并树形排序装置,其特征在于,所述缓存模块为FIFO模块。
4.一种数据排序系统,其特征在于,包括至少一个归并树组,每个归并树组包括用于流水化数据排序的多个如权利要求1至3任一项所述的归并树形排序装置。
5.如权利要求4所述的数据排序系统,其特征在于,在排序系统包括多个归并树组的情况下,各所述归并树组的内部结构相同。
6.如权利要求4所述的数据排序系统,其特征在于,还包括:预排序模块;
所述预排序模块,用于对外部输入多个序列分别按目标排序方式进行预排序并将多个预排序后的序列存储至内存模块;
所述归并树组,用于从内存模块中获取多个预排序后的序列,对获取的多个预排序后的序列中的数据进行排序,并将排序后输出的有序序列存储至内存模块。
7.如权利要求6所述的数据排序系统,其特征在于,还包括:额外的如权利要求1至3任一项所述的归并树形排序装置,用于对从内存模块转存至存储模块的多个排序后输出的有序序列进行排序。
8.如权利要求7所述的数据排序系统,其特征在于,所述内存模块为DRAM,和/或所述存储模块为SSD或Flash。
9.如权利要求6至8任一项所述的数据排序系统,其特征在于,所述预排序模块,用于通过锦标赛排序方式对外部输入多个序列进行预排序。
10.一种数据排序方法,其特征在于,适用于如权利要求1至3任一项所述的归并树形排序装置,所述排序方法包括:
利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据;
利用归并树形排序装置对获取的所有数据进行排序处理,并输出获取的所有数据中部分数据的有序序列;
在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列;
在归并树形排序装置的所有输入端口对应的有序序列中均不存在待获取数据的情况下,确定归并树形排序装置的所有输入端口对应的有序序列中的所有数据完成排序。
11.如权利要求10所述的数据排序方法,其特征在于,
在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据,包括:
在归并树形排序装置的输入端口对应的有序序列中仍存在待获取数据的情况下,若归并树形排序装置中未被数据阻塞的所有输入端口对应的有序序列中的数据已被获取完,则在数据已被获取完的有序序列中补充数据并将补充的数据标志为无效,利用归并树形排序装置中未被数据阻塞的输入端口从相应有序序列继续获取相应数量的数据;
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,包括:
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列,并过滤掉输出的有序序列中被标志为无效的数据。
12.如权利要求10所述的数据排序方法,其特征在于,
利用归并树形排序装置的各输入端口从相应有序序列获取相应数量的数据,包括:
利用归并树形排序装置的各输入端口从相应数据位数据的有序序列获取相应数量的数据位的数据;
利用归并树形排序装置对其中阻塞的数据和继续获取的所有数据继续进行排序处理,并输出阻塞的数据和继续获取的所有数据中部分数据的有序序列之后,所述方法还包括:
在根据输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位对应的数据结束位确定该数据位的数据所在的数据块的数据位为未结束的情况下,将输出阻塞的数据和继续获取的所有数据中部分数据的有序序列中的数据位合并至前次输出的有序序列中的数据位。
13.一种数据排序方法,其特征在于,适用于如权利要求4至9任一项所述的数据排序系统,所述数据排序方法包括:
利用排序系统从内存模块中获取多个有序序列的数据进行排序处理。
14.如权利要求13所述的数据排序方法,其特征在于,利用数据排序系统从内存模块中获取多个有序序列的数据进行排序处理,包括:
从存储模块获取数据至内存模块的同时,利用排序系统对内存模块中的多个有序序列的数据进行排序处理。
CN202110264743.XA 2021-03-11 2021-03-11 归并树形排序装置、排序系统及排序方法 Active CN113076312B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211460658.1A CN115905233B (zh) 2021-03-11 2021-03-11 归并树形数据排序系统和排序方法
CN202110264743.XA CN113076312B (zh) 2021-03-11 2021-03-11 归并树形排序装置、排序系统及排序方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110264743.XA CN113076312B (zh) 2021-03-11 2021-03-11 归并树形排序装置、排序系统及排序方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211460658.1A Division CN115905233B (zh) 2021-03-11 2021-03-11 归并树形数据排序系统和排序方法

Publications (2)

Publication Number Publication Date
CN113076312A CN113076312A (zh) 2021-07-06
CN113076312B true CN113076312B (zh) 2022-11-18

Family

ID=76612286

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110264743.XA Active CN113076312B (zh) 2021-03-11 2021-03-11 归并树形排序装置、排序系统及排序方法
CN202211460658.1A Active CN115905233B (zh) 2021-03-11 2021-03-11 归并树形数据排序系统和排序方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202211460658.1A Active CN115905233B (zh) 2021-03-11 2021-03-11 归并树形数据排序系统和排序方法

Country Status (1)

Country Link
CN (2) CN113076312B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672530B (zh) * 2021-10-21 2022-02-18 苏州浪潮智能科技有限公司 一种服务器及其排序设备
CN114281242B (zh) * 2021-11-15 2024-05-10 北京智芯微电子科技有限公司 存储器负载均衡的方法、装置和设备
CN116361319B (zh) * 2023-05-17 2023-08-29 山东浪潮科学研究院有限公司 一种数据库查询方法、装置、设备及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001306300A (ja) * 2000-04-25 2001-11-02 Nec Microcomputer Technology Ltd ソート処理方法及び送受信データの順序決定方法
US9619204B2 (en) * 2013-06-14 2017-04-11 Nvidia Corporation Method and system for bin coalescing for parallel divide-and-conquer sorting algorithms
US10101965B1 (en) * 2015-10-28 2018-10-16 Mbit Wireless, Inc. Method and apparatus for high speed streaming sorter
US10795871B2 (en) * 2016-09-26 2020-10-06 Vmware, Inc. Key-value stores implemented using fragmented log-structured merge trees
CN106843803B (zh) * 2016-12-27 2019-04-23 南京大学 一种基于归并树的全排序加速器及应用
US10649770B2 (en) * 2017-01-31 2020-05-12 Facebook, Inc. κ-selection using parallel processing
CN107315632A (zh) * 2017-06-27 2017-11-03 郑州云海信息技术有限公司 一种双调合并排序方法及系统
CN107451091A (zh) * 2017-08-02 2017-12-08 上海金融期货信息技术有限公司 基于fpga‑cpu混合架构的高速信息交互系统
CN107526550B (zh) * 2017-09-06 2020-01-17 中国人民大学 一种基于日志结构合并树的两阶段合并方法
US11176084B2 (en) * 2017-11-09 2021-11-16 International Business Machines Corporation SIMD instruction sorting pre-sorted source register's data elements into a first ascending order destination register and a second descending destination register
CN107908714B (zh) * 2017-11-10 2021-05-04 上海达梦数据库有限公司 一种数据归并排序方法及装置
US11249720B2 (en) * 2018-11-19 2022-02-15 Carnegie Mellon University High performance merge sort with scalable parallelization and full-throughput reduction
US11074225B2 (en) * 2018-12-21 2021-07-27 Vmware, Inc. Synchronization of index copies in an LSM tree file system
CN111562898B (zh) * 2020-05-11 2023-06-09 上海大学 一种基于fpga实现的多级归并排序方法
CN111737261B (zh) * 2020-06-24 2023-09-22 山东大学 基于LSM-Tree的压缩日志缓存方法及装置
CN112015366B (zh) * 2020-07-06 2021-09-10 中科驭数(北京)科技有限公司 数据排序方法、数据排序装置及数据库系统
CN111813370B (zh) * 2020-07-08 2023-10-31 上海雪湖科技有限公司 基于fpga的多路并行归并排序系统

Also Published As

Publication number Publication date
CN115905233A (zh) 2023-04-04
CN113076312A (zh) 2021-07-06
CN115905233B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
CN113076312B (zh) 归并树形排序装置、排序系统及排序方法
Song et al. 7.1 An 11.5 TOPS/W 1024-MAC butterfly structure dual-core sparsity-aware neural processing unit in 8nm flagship mobile SoC
CN107273088B (zh) 一种针对极化码的快速排序方法及装置
US6144986A (en) System for sorting in a multiprocessor environment
CN112015366B (zh) 数据排序方法、数据排序装置及数据库系统
WO1993025975A2 (en) A programmable logic device
EP0961966B1 (en) N-way processing of bit strings in a dataflow architecture
JPH11163735A (ja) 語列圧縮回路
CN113261015A (zh) 神经网络系统及数据处理技术
CN111008691B (zh) 一种权值和激活值都二值化的卷积神经网络加速器架构
US10101965B1 (en) Method and apparatus for high speed streaming sorter
Chien et al. Adaptive binary sorting schemes and associated interconnection networks
CN203217553U (zh) 归并排序结构
CN107533865B (zh) 半导体装置及信息写入/读取方法
Yang et al. Conflict-free sorting algorithms under single-channel and multi-channel broadcast communication models
US8451022B2 (en) Integrated circuit and input data controlling method for reconfigurable circuit
Tabrizi et al. An ASIC design of a novel pipelined and parallel sorting accelerator for a multiprocessor-on-a-chip
CN108958702B (zh) 一种排序网络、排序方法及排序装置
Chow The analysis and design of some new sorting machines
US6263473B1 (en) Viterbi decoder and Viterbi decoding method
CN116010301B (zh) 从数据流到dma配置的映射方法与装置、存储介质和dla
Xia et al. COCOA: Content-oriented configurable architecture based on highly-adaptive data transmission networks
CN116821125A (zh) 一种基于高并行场景下的fpga数据加速方法
Cao et al. Deadlock-free joins in DB-mesh, an asynchronous systolic array accelerator
US20240192918A1 (en) Sorting

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant