提供了一种排序网络及排序方法。该排序网络包括:一个或多个完全排序模块,用于对多个乱序序列进行排序,得到多个顺序序列;一个或多个归并排序模块,用于对多个顺序序列进行部分归并排序,得到目标顺序序列。本申请实施例采用一个或多个归并排序模块对多个顺序序列进行部分归并排序,可以简化排序网络,减少了排序网络的复杂度,有助于减少功耗。有助于减少功耗。有助于减少功耗。
【技术实现步骤摘要】
排序网络及排序方法
[0001]本申请实施例涉及数字电路
,并且更为具体地,涉及一种排序网络及排序方法。
技术介绍
[0002]排序方法在计算机、通信和半导体等科学和工程领域有着广泛的应用,设计高效的排序算法是诸多算法的基础。排序方法是最基本的算法,将乱序的序列排列成顺序的序列。现有的排序算法大致分为软件排序和硬件排序两类。常用的硬件排序网络有双调排序、奇偶排序和成对排序等。目前排序网络用于部分排序会占用较多的硬件资源,存在功耗浪费的问题。
技术实现思路
[0003]本申请实施例提供一种排序网络及排序方法。下面对本申请实施例涉及的各个方面进行介绍。
[0004]第一方面,提供一种排序网络,包括:一个或多个完全排序模块,用于对多个乱序序列进行排序,得到多个顺序序列;一个或多个归并排序模块,用于对所述多个顺序序列进行部分归并排序,得到目标顺序序列。
[0005]第二方面,提供一种排序方法,应用于排序网络,所述排序网络包括:一个或多个完全排序模块;一个或多个归并排序模块;所述排序方法包括:对多个乱序序列进行排序,得到多个顺序序列;对所述多个顺序序列进行部分归并排序,得到目标顺序序列。
[0006]本申请实施例采用一个或多个归并排序模块对多个顺序序列进行部分归并排序,得到目标顺序序列。相对于传统地排序方法,采用部分归并排序网络,可以简化排序网络,减少排序网络的复杂度,有助于减少功耗与硬件资源。
附图说明
[0007]图1是一种16位双调排序网络的示意图。
[0008]图2是一种8位奇偶排序网络的示意图。
[0009]图3是归并排序框架的示意图。
[0010]图4是(4,4,8)归并网络的示意图。
[0011]图5是(32,8)完全排序网络的示意图。
[0012]图6是本申请实施例提供的排序网络的示意图。
[0013]图7是图6排序网络的一种可能的实现方式的示意图。
[0014]图8是本申请实施例提供的(4,4,4)简化双调归并网络的示意图。
[0015]图9是本申请实施例提供的(32,8)简化混合排序网络的示意图。
[0016]图10是图9排序网络的完全复用的时序示意图。
[0017]图11是图9排序网络的部分复用的时序示意图。
[0018]图12是本申请实施例提供的(128,8)简化混合排序网络硬件开销与时延关系的示意图。
[0019]图13是本申请实施例提供的排序方法的流程示意图。
具体实施方式
[0020]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
[0021]排序方法在计算机、通信和半导体等科学和工程领域有着广泛的应用,设计高效的排序算法是诸多算法的基础。排序方法是最基本的算法,将乱序的序列排列成顺序的序列。如(N,M)排序是从N个乱序的元素中输出顺序的M个最小的元素,其中,M≤N。当M=N时,称为完全排序,当M<N时,称为部分排序。
[0022]现有的排序算法大致分为软件排序和硬件排序两类。常用的软件排序方法有冒泡排序、快速排序、选择排序、插入排序和归并排序等。在硬件领域,如专用集成电路(application specific integrated circuit,ASIC)和现场可编程门阵列(field programmable gate array,FPGA)中,为了降低时延,一般采用排序网络(sorting network,SE)并行地处理数据。
[0023]排序网络是指对输入序列,其输出序列均为单调递增的一种比较网络。排序网络基于比较网络模型,可以同时执行多个比较操作。排序网络由线路和比较器构成,一条线路把一个值从一处传输到另一处,把比较器的输入端和输出端相连。
[0024]常用的基于排序网络的硬件排序方法有:双调排序、奇偶排序和成对排序等。
[0025]其中,双调排序是基于Batcher定理,将任意一个长为N的双调序列A分为等长的两半X和Y,将X中的元素与Y中的元素一一按原序比较,即元素[i]与元素[i+N/2]比较(i≤N/2),将较大者放入最大(MAX)序列,较小者放入最小(MIN)序列。则得到的MAX和MIN序列仍然是双调序列,并且MAX序列中的任意一个元素不小于MIN序列中的任意一个元素。双调序列是一个先单调递增后单调递减(或者先单调递减后单调递增)的序列。
[0026]图1是一种16位双调排序网络的示意图。如图1所示,箭头表示比较交换器,两个数据通过比较交换器后,箭头尾部的数据是较小的数据,箭头头部的数据是较大的数据。输入为长度为16个元素(数据)的乱序序列,经过多次比较,输出是长度为16个元素(数据)的顺序序列。
[0027]奇偶排序或称为奇偶换位排序,是一种相对简单的排序算法。奇偶排序是在序列中重复两趟排序。对一个长为N的数据序列,第一趟排序选择所有的数据项对,数据项[i]和数据项[i+1],i是奇数(j=1,3,5
……
)。如果数据项的值次序颠倒,就交换。第二趟排序对所有的偶数数据项进行同样的操作(i=2,4,6
……
)。重复进行这样两趟的排序直到序列全部有序。
[0028]图2是一种8位奇偶排序网络的示意图。如图2所示,箭头表示比较交换器,两个数据通过比较交换器后,箭头尾部的数据是较小的数据,箭头头部的数据是较大的数据。输入是长度为8的乱序序列,输出是长度为8的顺序序列。
[0029]对于具体的算法,通常需要考虑算法的复杂度。算法的复杂度分为时间复杂度和空间复杂度。时间复杂度是指执行算法所需要的计算工作量,用于定性描述该算法的运行
时间。而空间复杂度是指执行这个算法所需要的内存空间。为了计算时间复杂度,通常会估计算法的操作单元数量,每个单元运行的时间都是相同的。因此,总运行时间和算法的操作单元数量相差一个常量系数。排序网络的时间复杂度可以用比较器的数量计量。
[0030]对应(2
n
,2
n
)完全排序网络,双调排序网络需要2
n―2
n(n+1)个交换器,奇偶排序网络需要的交换器较少,为2
n―2
n(n+1)―(2
n―1
n―2
n
+1)个交换器。
[0031]双调排序和奇偶排序都是归并排序。归并排序是指将两个或两个以上有序的序列,合并成一个仍然有序的序列。若将两个有序序列合并成一个有序序列,称为二路归并。
[0032]硬件归并排序网络通常将两个顺序序列合并为一个顺序序列。(p,q,l)归并是从大小为p的顺序序列和大小为q的顺序序列输出l个最大(最小)的顺序序列。当l=p+q时,称为完全归并排序,当l<p+q时,称为部分归并排序。如(8,8,16)为完全归并排序,(8,8,8)本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种排序网络,其特征在于,包括:一个或多个完全排序模块,用于对多个乱序序列进行排序,得到多个顺序序列;一个或多个归并排序模块,用于对所述多个顺序序列进行部分归并排序,得到目标顺序序列。2.根据权利要求1所述的排序网络,其特征在于,所述完全排序模块与所述归并排序模块采用不同的排序方式。3.根据权利要求2所述的排序网络,其特征在于,所述完全排序模块为基于奇偶排序的排序模块;所述归并排序模块为基于双调排序的排序模块。4.根据权利要求1所述的排序网络,其特征在于,所述多个乱序序列中的部分或全部乱序序列复用同一所述完全排序模块;和/或所述多个顺序序列中的部分或全部顺序序列复用同一所述归并排序模块。5.根据权利要求4所述的排序网络,其特征在于,所述排序网络还包括:控制模块,用于控制所述完全排序模块与所述归并排序模块的处理时序,使得在计算所述目标顺序序列的过程中,所述完全排序模块与所述归并排序模块在至少一个时钟周期同时执行排序任务。6.一种排序方法,其...
【专利技术属性】
技术研发人员:匡肃奉,柳敦,
申请(专利权)人:哲库科技北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。