CN113672530B - 一种服务器及其排序设备 - Google Patents
一种服务器及其排序设备 Download PDFInfo
- Publication number
- CN113672530B CN113672530B CN202111224154.5A CN202111224154A CN113672530B CN 113672530 B CN113672530 B CN 113672530B CN 202111224154 A CN202111224154 A CN 202111224154A CN 113672530 B CN113672530 B CN 113672530B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- sorting
- sorted
- sequencing
- 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
Links
- 238000012163 sequencing technique Methods 0.000 title claims abstract description 47
- 230000001174 ascending effect Effects 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 claims description 36
- 238000012546 transfer Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009349 indirect transmission Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种服务器及其排序设备,包括:第一存储器,FPGA,FPGA包括:配置模块用于接收待排序数据的配置信息;数据移动模块用于搬运数据;状态模块用于记录状态信息;中断模块用于发送中断;第二存储器,排序模块,比较模块;调度模块,用于:从第一存储器中划分出连续的均为第一分组大小的N个地址空间以放置待排序数据;基于状态信息,按照双调排序算法完成对于待排序数据的排序;针对单个地址空间内部的数据排序时,基于排序模块进行该地址空间内部的数据的升或降序;针对不同地址空间的数据排序时,基于比较模块进行不同地址空间的数据排序。应用本申请的方案,通过FPGA,实现了方便、快速地进行大数据量的排序。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种服务器及其排序设备。
背景技术
随着异构加速日益广泛的应用,基于FPGA(Field Programmable Gate Array ,现场可编程与门阵列)的加速卡也发展迅速。加速卡FPGA通过PCIE(Peripheral ComponentInterconnect Express,高速串行计算机扩展总线标准)接口与服务器主机连接,服务器的主机通过PCIE接口将需要加速的数据发送给加速卡FPGA,加速卡FPGA处理完成后通过PCIE接口返回相关的数据。
在众多应用当中,对于数据库的加速是一种重要应用,数据库的众多操作包括存储、关联、查询、更改等等,其中,对数据的排序是常用的场景。而实际应用中,数据库中的数据量通常很大,这样就要求FPGA能够有效的对大数据量进行排序,大数据量通常指1GB以及1GB以上的数据量。
双调排序是比较适合并行处理的排序算法,但是目前的双调排序通常是通过CPU或者GPU采用软件实现,也就失去了异构加速的意义,而采用FPGA时,都是只能够处理小数据量,即被处理的数据量需要低于FPGA的自身容量,才能够利用FPGA直接对整个数据进行排序。
综上所述,如何方便、快速地进行大数据量的排序,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种排序设备,以方便、快速地进行大数据量的排序。
为解决上述技术问题,本发明提供如下技术方案:
一种排序设备,包括:第一存储器,FPGA,所述FPGA包括:
配置模块,用于接收主机发送的待排序数据的配置信息;
数据移动模块,用于根据调度模块的搬运指令,在数据库,所述第一存储器以及第二存储器之间搬运数据;
状态模块,用于记录所述待排序数据的排序过程中的各个阶段的状态信息;
中断模块,用于在所述待排序数据排序完成之后,向所述主机发送表示排序完成的中断;
所述第二存储器,排序模块,比较模块;
调度模块,用于:根据所述配置信息控制所述数据移动模块将所述待排序数据搬运至所述第一存储器,并且从第一存储器中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个所述地址空间放置所述待排序数据;基于所述状态信息,按照双调排序算法控制所述排序模块,所述比较模块,以及所述数据移动模块,以完成对于所述待排序数据的排序;并且,在对所述待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,基于所述排序模块进行该地址空间内部的数据的升序或者降序;针对不同地址空间之间的数据进行排序时,基于所述比较模块进行不同地址空间之间的数据排序;N为正整数。
优选的,所述调度模块,具体用于:
根据所述配置信息控制所述数据移动模块将所述待排序数据搬运至所述第一存储器,并且从第一存储器中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个所述地址空间放置所述待排序数据;
基于所述状态信息,按照双调排序算法控制所述排序模块,所述比较模块,以及所述数据移动模块,以完成对于所述待排序数据的排序;
并且,在对所述待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,通过所述数据移动模块搬运该地址空间中的数据至所述第二存储器,并且在按照双调排序算法,利用所述排序模块进行该地址空间中的数据的升序或者降序之后,通过所述数据移动模块将排序之后的数据搬运至该地址空间中的相应位置;
在对待排序数据进行排序的过程中,针对不同地址空间之间的数据进行排序时,通过所述数据移动模块搬运来自相应地址空间中的大小一共为所述第一分组大小的数据至所述第二存储器,并且在按照双调排序算法,利用所述比较模块进行排序之后,通过所述数据移动模块将排序之后的数据搬运至相应地址空间中的相应位置。
优选的,预设的第一分组大小等于所述第二存储器的存储空间的大小。
优选的,所述第一存储器为DDR,所述第二存储器为RAM。
优选的,所述数据移动模块为DMA模块。
优选的,所述数据移动模块为多通道的数据移动模块,以使所述数据移动模块同时接收多个搬运指令。
优选的,所述状态模块还用于:将记录下的所述待排序数据的排序过程中的各个阶段的状态信息向所述主机反馈。
优选的,所述配置信息中包括用于表示所述待排序数据的有序情况的状态信息;
所述调度模块还用于:在对所述待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,如果基于所述状态信息,确定出该地址空间内部的数据符合任意一条预设的有序排列规则时,则输出对应于该有序排列规则的排序算法选择指令,以使所述排序模块基于所述排序算法选择指令选择相应的排序算法进行该地址空间内部的数据的升序或者降序。
优选的,所述排序模块中设置的排序算法包括插入排序算法和双调排序算法。
一种服务器,包括如上述任一项所述的排序设备。
应用本发明实施例所提供的技术方案,可以基于FPGA实现排序,保障了排序的效率。并且,本申请的方案可以实现大数据量的排序,具体的,配置模块用于接收主机发送的待排序数据的配置信息;数据移动模块用于根据调度模块的搬运指令,在数据库,第一存储器以及第二存储器之间搬运数据;状态模块用于记录待排序数据的排序过程中的各个阶段的状态信息;中断模块用于在待排序数据排序完成之后,向主机发送表示排序完成的中断;本申请的调度模块可以基于状态信息,按照双调排序算法控制排序模块,比较模块,以及数据移动模块,以完成对于待排序数据的排序。由于待排序数据不一定能全部置入第二存储器中,因此,调度模块可以根据配置信息控制数据移动模块将待排序数据搬运至第一存储器,并且从第一存储器中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小。后续按照双调排序算法进行排序时,便会涉及到两种情况,一种是单个地址空间内部的数据排序,即组内排序,另一种是不同地址空间的数据排序,即组间排序。如果是针对单个地址空间内部的数据进行排序,本申请可以基于排序模块进行该地址空间内部的数据的升序或者降序。而如果涉及到了不同地址空间之间的数据进行排序时,本申请可以基于比较模块进行不同地址空间之间的数据排序。综上所述,本申请通过FPGA,实现了方便、快速地进行大数据量的排序。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中一种排序设备的结构示意图;
图2为本发明一种具体实施方式中的排序设备的结构示意图;
图3为本发明一种具体场合中的排序过程示意图。
具体实施方式
本发明的核心是提供一种排序设备,通过FPGA,实现了方便、快速地进行大数据量的排序。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明中一种排序设备的结构示意图,该排序设备可以包括:第一存储器10,FPGA20,FPGA20包括:
配置模块21,用于接收主机发送的待排序数据的配置信息;
数据移动模块22,用于根据调度模块28的搬运指令,在数据库,第一存储器10以及第二存储器25之间搬运数据;
状态模块23,用于记录待排序数据的排序过程中的各个阶段的状态信息;
中断模块24,用于在待排序数据排序完成之后,向主机发送表示排序完成的中断;
第二存储器25,排序模块26,比较模块27;
调度模块28,用于:根据配置信息控制数据移动模块22将待排序数据搬运至第一存储器10,并且从第一存储器10中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个地址空间放置待排序数据;基于状态信息,按照双调排序算法控制排序模块26,比较模块27,以及数据移动模块22,以完成对于待排序数据的排序;并且,在对待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,基于排序模块26进行该地址空间内部的数据的升序或者降序;针对不同地址空间之间的数据进行排序时,基于比较模块27进行不同地址空间之间的数据排序。
具体的,配置模块21用于接收主机发送的待排序数据的配置信息,配置信息的具体内容可以根据需要进行设定和调整,表示的是待排序数据的基本情况,但可以理解的是,配置信息的内容,需要能够令FPGA20从数据库中得到完整的待排序数据。
例如一种具体场合中,配置信息可以具体包括:数据库的基本信息,本次需要排序的数据类型,即待排序数据的类型,待排序数据的数据量,待排序数据中的各部分数据在数据库中的地址。此外,例如后文的一种场合中,配置信息中还可以包括用于表示待排序数据的有序情况的状态信息,即表明待排序数据是否基本有序。
待排序数据在数据库中可能是连续的,也可能是分散在各个地址段,但是,通过数据移动模块22搬运到第一存储器10或者第二存储器25时,在第一存储器10中的地址是连续的,在第二存储器25中的地址也是连续的。
配置模块21接收主机发送的配置信息之后,便会将配置信息发送给调度模块28。
数据移动模块22的功能是接收调度模块28的搬运指令,从而在排序期间,在数据库,第一存储器10以及第二存储器25之间搬运数据。
在本发明的一种具体实施方式中,数据移动模块22具体可以选取为DMA(DirectMemory Access,直接存储器存取),具有能够实现高速数据传输,无需CPU干预,多种存储设备均可以作为访问目标等诸多优点,本申请图2中便是选用DMA22作为本申请的数据移动模块22。
此外,在本发明的一种具体实施方式中,数据移动模块22可以具体选取为多通道的数据移动模块22,以使数据移动模块22同时接收多个搬运指令,例如,可以将数据从数据库同时搬运到DDR10和RAM25,或者在DDR10的不同的地址空间同时搬运数据。
状态模块23用于记录待排序数据的排序过程中的各个阶段的状态信息,从而可以作为调度模块28的行为参考。为了使得状态模块23能够记录下待排序数据的排序过程中的各个阶段的状态信息,在排序过程中,配置模块21,调度模块28,数据移动模块22,比较模块27,排序模块26等均会在执行完相应操作之后向状态模块23传输相应指令,以使状态模块23得知当前排序进行到了哪一个阶段,并且可以理解的是,可以是直接传输,也可以是间接传输,例如图1的实施方式中,数据移动模块22可以通过调度模块28间接传输,调度模块28则可以直接传输。
此外,在本发明的一种具体实施方式中,状态模块23还可以用于:将记录下的待排序数据的排序过程中的各个阶段的状态信息向主机反馈。例如可以将状态信息存储在相关的寄存器中,以使得主机可以随时读取状态信息的相关寄存器,获取到当前的状态信息,提高了方案的灵活性。
中断模块24,用于在待排序数据排序完成之后,向主机发送表示排序完成的中断。中断模块24可以接收来自数据移动模块22和调度模块28的信息,从而在排序完成之后,向主机发送中断。
调度模块28可以根据配置信息,针对不同的数据量,对待排序数据进行分组,即从第一存储器10中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个地址空间放置待排序数据,N为正整数。每个地址空间表示一个固定大小的地址段,或者称为地址范围。
划分完毕之后,便可以按照双调排序算法实现待排序数据的排序,即按照双调排序算法,决定当前阶段应该处理哪些数据,并且通知数据移动模块22进行这些数据的搬运。此外,后文的一种实施方式中,调度模块28还可以根据这些数据的基本情况,告知排序模块26当前应该选择何种排序算法,以起到提高排序速度的效果。
排序模块26可以接收调度模块28的指令,对第二存储器25中的数据进行排序,即进行升序或者降序。
比较模块27可以在排序过程中,按照双调排序算法对组间数据进行比较,比较完成后会告知调度模块28从而可以进行后续的操作。比较模块27用来对组间数据进行比较,即在排序过程中,针对不同地址空间之间的数据进行排序时,需要基于比较模块27进行不同地址空间之间的数据排序,组内的排序由排序模块26便可以进行。
第二存储器25为FPGA20内部的存储器件,用来缓存数据,具体大小和类型可以根据需要进行设定和调整,例如本申请图2的场合中,第二存储器25具体选取的是RAM25(Random Access Memory,随机存取存储器),支持随时读写,而且速度很快,例如大小为256MB。
第一存储器10的具体大小和类型也可以根据需要进行设定和调整,例如本申请图2的场合中,第一存储器10具体选取的是DDR10(Double Data Rate,双倍速率同步动态随机存储器),并且需要说明的是,DDR10的空间大小至少要能够存储得下待排序数据。
在本发明的一种具体实施方式中,调度模块28可以具体用于:
根据配置信息控制数据移动模块22将待排序数据搬运至第一存储器10,并且从第一存储器10中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个地址空间放置待排序数据;
基于状态信息,按照双调排序算法控制排序模块26,比较模块27,以及数据移动模块22,以完成对于待排序数据的排序;
并且,在对待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,通过数据移动模块22搬运该地址空间中的数据至第二存储器25,并且在按照双调排序算法,利用排序模块26进行该地址空间中的数据的升序或者降序之后,通过数据移动模块22将排序之后的数据搬运至该地址空间中的相应位置;
在对待排序数据进行排序的过程中,针对不同地址空间之间的数据进行排序时,通过数据移动模块22搬运来自相应地址空间中的大小一共为第一分组大小的数据至第二存储器25,并且在按照双调排序算法,利用比较模块27进行排序之后,通过数据移动模块22将排序之后的数据搬运至相应地址空间中的相应位置。
为了便于理解,下面以1GB的数据量为例,介绍待排序数据的排序过程。可参阅图3,图3最上面和最下面均表示的是DDR10,即表示了排序前后DDR10数据的变化,中间4行是RAM25内部的情况。
主机对配置模块21进行配置之后,配置模块21会将接收的主机发送的待排序数据的配置信息发送给调度模块28。
调度模块28根据配置信息,会通过DMA22把需要排序的所有数据都从数据库搬运到DDR10中,即,会将完整的待排序数据搬运到DDR10中,然后会进行分组。并且正如上文的描述,待排序数据在数据库中可能是连续的,也可能是分散在各个地址段,但是DMA22搬移到DDR10或者RAM25后,在DDR10或者RAM25的地址一定是连续的。
搬运完成之后,便需要进行分组,每组的大小均为预设的第一分组大小。预设的第一分组大小的具体数值可以根据需要进行设定和调整,但是应当小于等于第二存储器25的大小,以该例子中的RAM25为256MB为例,即预设的第一分组大小应当小于256MB。并且在实际应用中,为了最大化地利用第二存储器25的存储空间,预设的第一分组大小可以等于第二存储器25的存储空间的大小,即该例子中的预设的第一分组大小便是256MB。
此外还需要说明的是,如果待排序数据并不是预设的第一分组大小的整数倍,则对于最后一个分组,可以根据实际需要,选择用极大或者极小来填充,使得在排序过程中,填充数据在DDR10中的位置不会被改变。
由于该例子是1GB的数据量,因此待排序数据可以分为4组,每组256MB。此外需要强调的是,本申请是从第一存储器10中,即从DDR10中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个地址空间放置待排序数据,在排序的过程中,这些地址空间中的数据会被移动,因此,后续某一个步骤具体是由排序模块26来执行,还是由比较模块27来执行,是以地址来划分的。即,如果某次操作是对某一个地址空间中的数据进行操作,便是组内操作,由排序模块26来执行,而如果某次操作涉及到了2个地址空间中的数据,便是组间操作,由比较模块27来执行。
在上述例子中,配置模块21将收到信息后发送给调度模块28之后,调度模块28根据配置信息,会通过DMA22把需要排序的所有数据都从数据库搬运到DDR10中,即,会将完整的待排序数据搬运到DDR10中,然后会进行分组,每组大小256M。然后调度模块28可以控制DMA22将第一组的256M数据从数据库中搬入RAM25,当然,采用多通道的DMA22时,这个过程是可以与数据库到DDR10的数据搬运同时进行。
以最终需要对待排序数据进行升序为例。DMA22将第1组256M数据搬完之后,调度模块28可以告知排序模块26对RAM25中的数据进行升序排序。该升序排序完成后,调度模块28可以控制DMA22,从而将RAM25中的数据搬到DDR10的对应地址,该例子中则是搬运到第1个地址空间。然后,调度模块28可以控制DMA22将第2组256M数据搬入RAM25,并且通知排序模块26对第2组的256MB数据进行降序排序。
这样按照256M的分组,分别进行升序降序的排列,对全部的4组256MB数据操作完毕之后,DDR10的数据情况便是如图3的最上面的DDR10所示。总共4组数据,每组256MB,以升序-降序-升序-降序的情况排列,也就是得到了2个双调排序序列。
此外可以理解的是,该例子中的待排序数据为1G,如果待排序数据小于256M,即小于第二存储器25的存储空间时,直接由排序模块26便可以完成待排序数据的升序或者降序,调度模块28就可以直接告知中断模块24,同时配置DMA22将排序完毕的数据搬运回数据库,中断模块24收到调度模块28的信息,以及DMA22发送的表示将排序完毕的数据搬运回数据库已经执行完毕的信息后,可以确定排序结束,从而向主机发送中断。
得到了4组256MB的数据,并且以升序-降序-升序-降序的情况排列,之后,调度模块28便需要通过数据移动模块22搬运来自相应地址空间中的大小一共为第一分组大小的数据至第二存储器25,从而按照双调排序算法进行排序。具体的,调度模块28会将第1组数据的前半部分的128M和第2组数据的前半部分的128M,通过DMA22从DDR10搬入RAM25中,然后通知比较模块27进行比较,比较结束后通过DMA22写回DDR10对应的地址。该例子中,也就是将第1组数据的前半部分的128M与第2组数据的前半部分的128M进行逐个数据的比较,得到较大的128M数据和较小的128M数据,较大的128M数据中的任一数据均大于较小的128M数据中的任一数据,然后将较大的128M写入第2地址空间中的前半部分,将较小的128M写入第1地址空间中的前半部分。
之后,将第1组数据的后半部分128M和第2组数据的后半部分128M搬入RAM25进行比较,同理,比较结束后需要通过DMA22写回DDR10对应的地址,也就是将比较之后得到的较大的128M写入第2地址空间中的后半部分,将比较之后得到的较小的128M写入第1地址空间中的后半部分。这是双调排序的过程,可见图3中的第一行RAM25和第2行RAM25。
然后,调度模块28将比较后的第1组数据,即,将此时的DDR10的第1地址空间中的256M数据通过DMA22搬入RAM25,并利用排序模块26进行升序排序,然后写回DDR10。同理,将比较后的第2组数据也进行升序排序,写回DDR10。可参阅图3中的第3和第4行的RAM25。经过上述操作之后,DDR10的第1组数据和第2组数据就完成了整体的升序排序,见图3中最下面的DDR10。
同样的操作,基于双调排序算法,对第3组和第4组数据进行比较后,进行降序排列,写回DDR10,整个DDR10数据排列就由2个512M的小双调,变成了1个1G的大双调。
然后按照双调排序算法递归执行,此处就不再展开说明,最终可以将这1个1G的大双调,转变成整个1G的数据的升序。
待排序数据的排序过程结束之后,调度模块28可以根据配置信息,通过DMA22将数据从DDR10中搬运回数据库,同时通知中断模块24调度结束,中断模块24在收到DMA22发送的完成最后搬运的消息后,可以向主机发送中断,表示整个排序过程结束。
在本发明的一种具体实施方式中,配置信息中包括用于表示待排序数据的有序情况的状态信息;
调度模块28还用于:在对待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,如果基于状态信息,确定出该地址空间内部的数据符合任意一条预设的有序排列规则时,则输出对应于该有序排列规则的排序算法选择指令,以使排序模块26基于排序算法选择指令选择相应的排序算法进行该地址空间内部的数据的升序或者降序。
该种实施方式中,考虑到排序模块26进行任一地址空间中的数据的排序时,这些数据可能是基本有序的。例如这些数据本身就是双调序列,则可以直接使用双调排序算法进行排序。而例如这些数据本身已经接近递增排序,则选择插入排序算法的耗时会更短。因此,该种实施方式的配置信息中包括了用于表示待排序数据的有序情况的状态信息,使得针对单个地址空间内部的数据进行排序时,如果基于状态信息,确定出该地址空间内部的数据符合任意一条预设的有序排列规则时,排序模块26会选取相适应的排序算法,来起到加速排序的效果。
当然,由于双调排序的过程中需要不断将局部数据排序形成小的双调序列,然后小双调连成大双调,因此总体上的排序是通过调度模块28按照双调排序算法来划分的。
在实际应用中,考虑到数据基本有序的场见情况就是数据接近递增或者递减排序,因此,排序模块26中设置的排序算法可以包括插入排序算法和双调排序算法,有效的起到加速排序的效果,同时又不需要排序模块26存储过多的排序算法。
应用本发明实施例所提供的技术方案,可以基于FPGA20实现排序,保障了排序的效率。并且,本申请的方案可以实现大数据量的排序,具体的,配置模块21用于接收主机发送的待排序数据的配置信息;数据移动模块22用于根据调度模块28的搬运指令,在数据库,第一存储器10以及第二存储器25之间搬运数据;状态模块23用于记录待排序数据的排序过程中的各个阶段的状态信息;中断模块24用于在待排序数据排序完成之后,向主机发送表示排序完成的中断;本申请的调度模块28可以基于状态信息,按照双调排序算法控制排序模块26,比较模块27,以及数据移动模块22,以完成对于待排序数据的排序。由于待排序数据不一定能全部置入第二存储器25中,因此,调度模块28可以根据配置信息控制数据移动模块22将待排序数据搬运至第一存储器10,并且从第一存储器10中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小。后续按照双调排序算法进行排序时,便会涉及到两种情况,一种是单个地址空间内部的数据排序,即组内排序,另一种是不同地址空间的数据排序,即组间排序。如果是针对单个地址空间内部的数据进行排序,本申请可以基于排序模块26进行该地址空间内部的数据的升序或者降序。而如果涉及到了不同地址空间之间的数据进行排序时,本申请可以基于比较模块27进行不同地址空间之间的数据排序。综上所述,本申请通过FPGA20,实现了方便、快速地进行大数据量的排序。
相应于上面的排序设备的实施例,本发明实施例还提供了一种服务器,可以包括如上述任一实施例中的排序设备,可与上文相互对应参照,此处不再重复说明书。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种排序设备,其特征在于,包括:第一存储器,FPGA,所述FPGA包括:
配置模块,用于接收主机发送的待排序数据的配置信息;
数据移动模块,用于根据调度模块的搬运指令,在数据库,所述第一存储器以及第二存储器之间搬运数据;
状态模块,用于记录所述待排序数据的排序过程中的各个阶段的状态信息;
中断模块,用于在所述待排序数据排序完成之后,向所述主机发送表示排序完成的中断;
所述第二存储器,排序模块,比较模块;
调度模块,用于:根据所述配置信息控制所述数据移动模块将所述待排序数据搬运至所述第一存储器,并且从第一存储器中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个所述地址空间放置所述待排序数据;基于所述状态信息,按照双调排序算法控制所述排序模块,所述比较模块,以及所述数据移动模块,以完成对于所述待排序数据的排序;并且,在对所述待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,基于所述排序模块进行该地址空间内部的数据的升序或者降序;针对不同地址空间之间的数据进行排序时,基于所述比较模块进行不同地址空间之间的数据排序;N为正整数;
其中,所述配置模块,所述调度模块,所述数据移动模块,所述比较模块,以及所述排序模块均用于在执行完相应操作之后向所述状态模块传输相应指令以使所述状态模块得知当前的状态信息。
2.根据权利要求1所述的排序设备,其特征在于,所述调度模块,具体用于:
根据所述配置信息控制所述数据移动模块将所述待排序数据搬运至所述第一存储器,并且从第一存储器中划分出连续的N个地址空间,且每个地址空间的大小均为预设的第一分组大小,以利用N个所述地址空间放置所述待排序数据;
基于所述状态信息,按照双调排序算法控制所述排序模块,所述比较模块,以及所述数据移动模块,以完成对于所述待排序数据的排序;
并且,在对所述待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,通过所述数据移动模块搬运该地址空间中的数据至所述第二存储器,并且在按照双调排序算法,利用所述排序模块进行该地址空间中的数据的升序或者降序之后,通过所述数据移动模块将排序之后的数据搬运至该地址空间中的相应位置;
在对待排序数据进行排序的过程中,针对不同地址空间之间的数据进行排序时,通过所述数据移动模块搬运来自相应地址空间中的大小一共为所述第一分组大小的数据至所述第二存储器,并且在按照双调排序算法,利用所述比较模块进行排序之后,通过所述数据移动模块将排序之后的数据搬运至相应地址空间中的相应位置。
3.根据权利要求1所述的排序设备,其特征在于,预设的第一分组大小等于所述第二存储器的存储空间的大小。
4.根据权利要求1所述的排序设备,其特征在于,所述第一存储器为DDR,所述第二存储器为RAM。
5.根据权利要求1所述的排序设备,其特征在于,所述数据移动模块为DMA模块。
6.根据权利要求1所述的排序设备,其特征在于,所述数据移动模块为多通道的数据移动模块,以使所述数据移动模块同时接收多个搬运指令。
7.根据权利要求1所述的排序设备,其特征在于,所述状态模块还用于:将记录下的所述待排序数据的排序过程中的各个阶段的状态信息向所述主机反馈。
8.根据权利要求1所述的排序设备,其特征在于,所述配置信息中包括用于表示所述待排序数据的有序情况的状态信息;
所述调度模块还用于:在对所述待排序数据进行排序的过程中,针对单个地址空间内部的数据进行排序时,如果基于所述状态信息,确定出该地址空间内部的数据符合任意一条预设的有序排列规则时,则输出对应于该有序排列规则的排序算法选择指令,以使所述排序模块基于所述排序算法选择指令选择相应的排序算法进行该地址空间内部的数据的升序或者降序。
9.根据权利要求8所述的排序设备,其特征在于,所述排序模块中设置的排序算法包括插入排序算法和双调排序算法。
10.一种服务器,其特征在于,包括如权利要求1至9任一项所述的排序设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224154.5A CN113672530B (zh) | 2021-10-21 | 2021-10-21 | 一种服务器及其排序设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111224154.5A CN113672530B (zh) | 2021-10-21 | 2021-10-21 | 一种服务器及其排序设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672530A CN113672530A (zh) | 2021-11-19 |
CN113672530B true CN113672530B (zh) | 2022-02-18 |
Family
ID=78550709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111224154.5A Active CN113672530B (zh) | 2021-10-21 | 2021-10-21 | 一种服务器及其排序设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672530B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258535A (zh) * | 2020-01-15 | 2020-06-09 | 江苏方天电力技术有限公司 | 一种用于fpga实现的排序方法 |
CN111277276A (zh) * | 2018-12-05 | 2020-06-12 | 深圳市中兴微电子技术有限公司 | 一种排序方法及装置 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN112015366A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
CN113076312A (zh) * | 2021-03-11 | 2021-07-06 | 中科驭数(北京)科技有限公司 | 归并树形排序装置、排序系统及排序方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112765059A (zh) * | 2021-01-20 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 一种基于fpga的dma设备及dma数据搬移方法 |
-
2021
- 2021-10-21 CN CN202111224154.5A patent/CN113672530B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111277276A (zh) * | 2018-12-05 | 2020-06-12 | 深圳市中兴微电子技术有限公司 | 一种排序方法及装置 |
CN111258535A (zh) * | 2020-01-15 | 2020-06-09 | 江苏方天电力技术有限公司 | 一种用于fpga实现的排序方法 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN112015366A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
CN113076312A (zh) * | 2021-03-11 | 2021-07-06 | 中科驭数(北京)科技有限公司 | 归并树形排序装置、排序系统及排序方法 |
Non-Patent Citations (2)
Title |
---|
基于FPGA的高性能变长合并排序加速器设计与实现;田森等;《电子测量技术》;20201108;第43卷(第21期);全文 * |
基于现代硬件的并行内存排序方法综述;郭诚欣等;《计算机学报》;20170930;第40卷(第9期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113672530A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5602995A (en) | Method and apparatus for buffering data within stations of a communication network with mapping of packet numbers to buffer's physical addresses | |
US8190943B2 (en) | Systolic merge sorter | |
CN107526542A (zh) | 对象存储装置及其操作方法 | |
CN108733324B (zh) | 一种固态硬盘的数据读写方法、装置、设备及存储介质 | |
US10649967B2 (en) | Memory object pool use in a distributed index and query system | |
CN107729135A (zh) | 按序进行并行数据处理的方法和装置 | |
US6424970B1 (en) | Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes | |
US20230393813A1 (en) | Sorting apparatus and method | |
CN113590512A (zh) | 可直连外设设备的自启动dma装置及应用 | |
CN113672530B (zh) | 一种服务器及其排序设备 | |
US20160342541A1 (en) | Information processing apparatus, memory controller, and memory control method | |
CN116661703B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN115905061B (zh) | 数据搬运装置、dma装置、电子设备及数据搬运方法 | |
US20170228404A1 (en) | Information processing apparatus, processing apparatus, data search method | |
CN112434085A (zh) | 基于Roaring Bitmap的用户数据统计方法 | |
US5440736A (en) | Sorter for records having different amounts of data | |
CN113468124B (zh) | 一种快速全量解析stdf文件的方法和设备 | |
CN111258955B (zh) | 一种文件读取方法和系统、存储介质、计算机设备 | |
CN116368473A (zh) | 兼具存储处理和属性数据管理的混合存储器管理系统和方法 | |
US11500790B1 (en) | Systems and methods for fast round robin for wide masters | |
CN109344093B (zh) | 缓存结构、读写数据的方法和装置 | |
CN117539796B (zh) | 电子装置及缓冲存储器管理方法 | |
CN117424865B (zh) | 报文地址管理装置、网络处理芯片、报文读取及存储方法 | |
US11960402B2 (en) | Integrated circuit and configuration method thereof | |
US7430214B2 (en) | Circuit, method and program for data queue control |
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 |