CN109426484B - 一种数据排序装置、方法及芯片 - Google Patents

一种数据排序装置、方法及芯片 Download PDF

Info

Publication number
CN109426484B
CN109426484B CN201710752463.7A CN201710752463A CN109426484B CN 109426484 B CN109426484 B CN 109426484B CN 201710752463 A CN201710752463 A CN 201710752463A CN 109426484 B CN109426484 B CN 109426484B
Authority
CN
China
Prior art keywords
data
sorted
value
comparator
array
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
CN201710752463.7A
Other languages
English (en)
Other versions
CN109426484A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201710752463.7A priority Critical patent/CN109426484B/zh
Publication of CN109426484A publication Critical patent/CN109426484A/zh
Application granted granted Critical
Publication of CN109426484B publication Critical patent/CN109426484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

一种数据排序装置、方法及芯片,用以解决现有排序电路的组合逻辑链路较长,排序速率较低的问题。该装置包括:第一比较模块、第一确定模块、第二比较模块、第二确定模块、计算模块以及排序输出模块,通过比较模块、确定模块以及计算模块,可确定出待排序数组中小于或者大于每一数据的数据个数值(记为第三数值),第三数值可表征每一数据的大小顺序,通过排序输出模块按照每一数据对应的第三数值从大到小或者从小到大的顺序输出与其对应的数据,即可实现将数据按从大到小或者从小到大的顺序排序。由于针对每一数据确定与其对应的第三数值的过程是独立的,故数据排序装置的组合逻辑链路较短,可提高电路运行的速率,实现快速数据排序。

Description

一种数据排序装置、方法及芯片
技术领域
本申请涉及排序技术领域,尤其涉及一种数据排序装置、方法及芯片。
背景技术
排序是数据处理的最基本的操作之一,目前,实现数据排序的方法可以分为两类:软件实现方式和硬件实现方式。
现有技术中,针对数据排序的软件实现方式已经发展的较完善,每种软件实现方式针对其应用场景具有不同的特点,比较常用的软件实现方式有:插入排序、冒泡排序、选择排序和快速排序等。但软件实现数据排序的方式,排序速度比较慢,且需要占用处理器资源。在排序速度要求较高或者没有处理器资源的场合,无法采用软件实现方式进行数据排序。
现有以硬件实现方式实现数据排序的原理,大多借鉴软件实现方式中的数据排序原理,下面详细描述以硬件方式借鉴软件实现方式中的冒泡排序和插入排序的实现原理。图1为以硬件方式实现冒泡排序的原理图,如图1所示,采用硬件实现方式对包括N个数据的数组进行从大到小的冒泡排序时,将数组中第N个数与第N-1个数比较,若第N个数比第N-1个数大,则交换第N个数与第N-1个数的位置,否则不作处理,其中,将比较结果中数值大的数据记为数据_1N-1,数值小的数据记为数据_1N,之后将数据_1N-1与第N-2个数比较,重复前述比较操作,将比较结果中数值大的数据记为数据_2N-2,数值小的数据记为数据_2N-1,通过上述操作处理一遍之后,最大的数据(数据_N-11)排在第一位。重复上述操作进行第二遍排序处理,从数组中第N个数据开始与第N个数之前的数据比较,直到比较至数组中第2个数,重新排序后排在第二位的数据是除排在第一位数据之外的数据中最大的数。重复N-1遍上述排序处理,每次从数组中第N个数据开始与第N个数之前的数据比较,比较到上一次减少一个数为止,最后的排序结果即为冒泡排序的排序结果。图2为以硬件方式实现插入排序的原理图,如图2所示,采用硬件实现方式对包括N个数据的数组进行从大到小的插入排序时,将第1个数据与第2个数据进行比较,数值大的数据排序在前,记为数据1_1,数值小的数据排序在后,记为数据1_2,之后,将第3个数据分别与数据1_1和数据1_2比较,当与数据1_1比较后,数值大的数据排序在前,记为数据2_1;当与数据1_2比较后,数值小的数据排序在后,记为数据2_3,数值介于中间的数据排序在中间,记为数据2_2,重复上述操作,直至得出所有数据的排序。
采用上述硬件方式实现的冒泡排序和插入排序过程,需要级联多级比较器,且需要插入多级寄存器存储临时比较结果,导致电路的组合逻辑链路较长,需要经过较长的时间才能得出比较结果,这在需要比较的数据较少时还可以接受,一旦需要比较的数据比较多时,比较过程所需的时间会变的非常久,导致电路运行速率非常低,无法适用对排序速度要求较高的场合,因此,如何减少排序电路的组合逻辑链路,实现快速数据排序是亟待解决的问题。
发明内容
本申请提供一种数据排序装置、方法及芯片,用以解决现有技术中排序电路的组合逻辑链路较长,数据排序速率较低的问题。
第一方面,本申请提供了一种数据排序装置,该装置包括:第一比较模块、第一确定模块、第二比较模块、第二确定模块、计算模块以及排序输出模块。其中,第一比较模块,用于针对待排序数组{x1,x2,xi……xN}中包括的每一数据xi执行:将xi与所述待排序数组中除所述xi之外的其它每一数据分别比较,其中,N为正整数,i取遍1~N的任一正整数,第一确定模块,用于根据所述第一比较模块的比较结果,确定与所述xi对应的第一数值,所述第一数值为所述待排序数组中除所述xi之外的其它各个数据中小于等于所述xi的数据的个数,或为其它各个数据中大于等于所述xi的数据的个数,第二比较模块,用于针对所述待排序数组中包括的每一数据xi执行:将xi与所述待排序数组中位于所述xi之前的每一数据分别比较,第二确定模块,用于根据所述第二比较模块的比较结果,确定与所述xi对应的第二数值,所述第二数值为所述待排序数组中位于所述xi之前的各个数据中等于所述xi的数据的个数,计算模块,用于针对所述待排序数组中包括的每一数据xi执行:计算与所述xi对应的第三数值,所述第三数值为所述第一确定模块确定的所述xi对应的第一数值,与所述第二确定模块确定的所述xi对应的第二数值的差值,排序输出模块,用于按照所述计算模块计算得到的所述待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出所述待排序数组中包括的各个数据xi
本申请提供的数据排序装置,通过第一比较模块、第二比较模块、第一确定模块、第二确定模块以及计算模块,可确定出所述待排序数组中小于或者大于每一数据的数据个数值,即第三数值,由于所述第三数值可表征每一数据的大小顺序,故,通过排序输出模块,按照所述待排序数组中包括的每一数据xi对应的第三数值从大到小或者从小到大的顺序输出与所述第三数值对应的数据,即可实现将所述待排序数组中包括的数据按从大到小或者从小到大的顺序排序。由于本申请中针对所述待排序数组中包括的每一数据xi确定与其对应的第三数值的过程独立,不依赖于确定与所述待排序数组中除所述xi之外的其它数据对应的第三数值的过程,因此,本申请的数据排序装置的级联级数较少,组合逻辑链路较短,故在短时间内即可完成数据的排序,可以提高电路运行的速率,实现快速数据排序。
一种可能的实现方式中,所述排序输出模块包括N组比较器序列和N个选择器,其中:每组比较器序列对应一个设定值,不同组比较器序列对应不同的设定值,所述不同的设定值分别为{0,1,2…i…N-1}中的一个整数,不同组比较器序列按照各自分别对应的设定值从大到小或从小到大的顺序排列;每组比较器序列包括N个比较器,N个比较器分别处理所述待排序数组中包括的各个数据xi分别对应的第三数值,确定等于比较器所在的一组比较器序列对应的设定值的第三数值,并将确定的第三数值从所述所在的一组比较器序列输出;N个选择器与N组比较器序列一一对应连接,每个选择器用于从所述待排序数组中选择出自身连接的比较器序列输出的第三数值对应的数据xi,并输出。
上述实现方式中,可通过N组比较器序列以及与其对应的N个选择器,并行处理所述待排序数组中包括的各个数据xi分别对应的第三数值,选择输出与设定值相同的第三数值对应的数据,进一步可以提高数据排序速度。
一种可能的实现方式中,所述第一比较模块包括N组比较器序列,每组比较器序列分别包括N-1个比较器,所述第一确定模块包括N个加法器;N组比较器序列分别处理待排序数组中的一个数据xi,不同的比较器序列分别处理的数据互不相同;每组比较器序列通过自身包括的N-1个比较器分别执行:将输入比较器序列的待处理数据xi分别与所述待排序数组中除所述xi之外的其它每一数据进行比较,若所述待排序数组中除所述xi之外的其它数据小于等于所述xi,则通过所述比较器序列中包括的比较器输出第一标识值,所述第一标识值的个数等于所述待排序数组中除所述xi之外的其它数据中小于等于所述xi的数据个数,或者若所述待排序数组中除所述xi之外的其它数据大于等于所述xi,则通过所述比较器序列中包括的比较器输出第二标识值,所述第二标识值的个数等于所述待排序数组中除所述xi之外的其它数据中大于等于所述xi的数据个数;第一确定模块包括的N个加法器分别处理待排序数组中的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对所述待排序数组中包括的一个数据xi,将比较器对应xi输出的第一标识值的个数相加得到与xi对应的第一数值,或者将比较器对应xi输出的第二标识值的个数相加得到与xi对应的第一数值。
上述实现方式中,第一比较模块包括的N组比较器序列之间相互独立,第一确定模块包括的N个加法器之间相互独立,通过上述包括N组比较器序列的第一比较模块以及包括N个加法器的第一确定模块,可并行处理待排序数组中的数据,由于每一个数据的处理并不依赖其它数据处理的结果,故,可进一步减少数据排序装置的级联级数,使得数据排序装置的组合逻辑链路较短,进一步可以提高电路运行的速率,实现快速数据排序。
一种可能的实现方式中,所述第二比较模块包括N组比较器序列,每组比较器序列分别包括至少一个比较器,所述第二确定模块包括N个加法器;N组比较器序列分别处理待排序数组中的一个数据xi,不同的比较器序列分别处理的数据互不相同;每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与所述待排序数组中位于所述xi之前的每一数据分别进行比较,若所述待排序数组中位于所述xi之前的数据等于所述xi,则通过所述比较器序列中包括的比较器输出第三标识值,所述第三标识值的个数等于所述待排序数组中位于所述xi之前的数据中等于所述xi的数据个数;第二确定模块包括的N个加法器分别处理待排序数组中的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对所述待排序数组中包括的一个数据xi,将比较器对应xi输出的第三标识值的个数相加得到与xi对应的第二数值。
上述实现方式中,第二比较模块包括的N组比较器序列之间相互独立,第二确定模块包括的N个加法器之间相互独立,通过上述包括N组比较器序列的第二比较模块以及包括N个加法器的第二确定模块,可并行处理待排序数组中的各个数据,由于每一个数据的处理并不依赖其它数据处理的结果,进一步可减少数据排序装置的级联级数,使得数据排序装置的组合逻辑链路较短,进一步可以提高电路运行的速率,实现快速数据排序。
另一种可能的实现方式中,所述第二比较模块包括N-1组比较器序列,每组比较器序列分别包括至少一个比较器,所述第二确定模块包括N-1个加法器;N-1组比较器序列分别处理待排序数组中除数据x1之外的一个数据xi,不同的比较器序列分别处理的数据互不相同;每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与所述待排序数组中位于所述xi之前的每一数据分别进行比较,若所述待排序数组中位于所述xi之前的数据等于所述xi,则通过所述比较器序列中包括的比较器输出第三标识值,所述第三标识值的个数等于所述待排序数组中位于所述xi之前的数据中等于所述xi的数据个数;第二确定模块包括的N-1个加法器分别处理待排序数组中除数据x1之外的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对所述待排序数组中包括的除数据x1之外的一个数据xi,将比较器对应xi输出的第三标识值的个数相加得到与xi对应的第二数值,其中,将数据x1对应的第二数值预先设置为零。
相比包括N组比较器序列的第二比较模块以及包括N个加法器的第二确定模块,上述实现方式中,第二比较模块包括N-1组比较器序列,第二确定模块包括N-1个加法器,实现快速数据排序的同时可节省电路开销。
一种可能的实现方式中,所述计算模块可以由多个减法器完成计算与所述xi对应的第三数值的运算。
一种可能的实现方式中,所述第一标识值、所述第二标识值和所述第三标识值为1。当然所述第一标识值、所述第二标识值和所述第三标识值还可以是其它数值或者字母等,本申请实施例中,将所述第一标识值、所述第二标识值和所述第三标识值设置为1,使得所述第一标识值、所述第二标识值和所述第三标识值占用较少的二进制位,可提高排序电路的处理速度、减小处理延迟,且由于第一标识值、第二标识值、第三标识值为1,硬件实现中通过设置加法器、减法器等简单逻辑器件就可实现快速数据排序,使得数据排序装置更简单。
第二方面,本申请提供了一种数据排序方法,该排序方法可以使用上述第一方面提供的数据排序装置来实现,也可以通过执行相应的软件实现。所述方法各步骤与上述第一方面提供的第一比较模块、第一确定模块、第二比较模块、第二确定模块、计算模块以及排序输出模块的功能相对应,在此不予赘述。
第三方面,本申请提供了一种芯片,包括上述第一方面中任一项所述的数据排序装置。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行上述第二方面以及第二方面任意可能的实现方式中的方法。
第五方面,本申请提供了一种计算机程序产品,该计算机程序产品在被计算机调用时,使得计算机执行第二方面以及第二方面任意可能的实现方式中的方法。
附图说明
图1为现有技术中以硬件方式实现冒泡排序的原理图;
图2为现有技术中以硬件方式实现插入排序的原理图;
图3为本申请实施例提供的一种数据排序装置示意图;
图4为本申请实施例提供的一种排序输出模块的结构示意图;
图5为本申请实施例提供的一种第一比较模块和第一确定模块的结构示意图;
图6为本申请实施例提供的一种第二比较模块和第二确定模块的结构示意图;
图7为本申请实施例提供的另一种第二比较模块和第二确定模块的结构示意图;
图8为本申请实施例提供的又一种第二比较模块和第二确定模块的结构示意图;
图9为本申请实施例提供的另一种数据排序装置示意图;
图10为本申请实施例提供的一种数据排序方法流程图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
数据排序电路和数据排序方法广泛的应用于科学计算、互联网、数字信号处理等领域中,尤其广泛应用于互联网的搜索引擎领域,对于数据的排序有着大量的应用。随着云计算、大数据等新型技术的发展,需要处理的数据量越来越大,传统的排序方法局限于其串行处理能力,难以胜任对大数据处理的速度及性能的需求。同时串行的排序方法仅能应用在单处理器上,随着目前多核多处理器架构的快速发展,就越来越需要一种更高效的并行处理方法,以满足计算的实时性及计算资源高利用率的需求。而传统的并行排序电路组合逻辑链路较长,数据排序速率较低。本申请实施例提供一种数据排序装置、方法及芯片,用以解决现有技术中存在的排序电路的组合逻辑链路较长,数据排序速率较低的问题。
本申请实施例提供的数据排序装置、方法及芯片可应用于多存储器的负载均衡场景。在多存储器的一些应用场景中,为了保证各个存储器能够正常高效的工作,需要保持各个存储器中存储的数据量均衡,而为了保证各个存储器中存储的数据量均衡,通常通过控制写入各个存储器中的数据量来实现。具体的,各个存储器中当前存储的数据量是可知的,通过判断各个存储器中当前存储的数据量的大小关系,将当前存储数据量较少的存储器确定为负载较小的存储器,在后续数据写入过程中选择负载较小的几个存储器写入数据,进而实现多个存储器之间的负载均衡。采用现有数据排序电路,实现多个存储器之间的负载均衡的过程中,由于现有数据排序电路的组合逻辑链路较长,导致对各个存储器中当前存储的数据量进行排序的排序速率较低,即,在对各个存储器中当前存储的数据量进行排序时延迟较多的时钟周期,确定当前负载较小的存储器时依据的是多个时钟周期之前的排序结果,导致确定出的当前负载较小的存储器存在误差,后续在确定出的负载存在误差的几个存储器中写入数据,可能导致多个存储器的负载均衡的效果不佳。而采用本申请实施例中提供的数据排序装置,实现多个存储器之间的负载均衡时,由于数据排序电路的组合逻辑链路较短,排序时延较小,能够更精确的实现多个存储器的负载均衡。
可以理解的是,本申请实施例上述描述的多存储器的负载均衡的应用场景仅是进行示意性说明,本申请实施例提供的数据排序装置、方法及芯片,还可以应用于其它场景,本申请实施例不做限定。例如,还可应用于具有优先级处理顺序的场景中,具体的,可应用于科学计算、互联网、数字信号处理等领域。
本申请实施例中提供的数据排序装置,可以是单独的物理设备或虚拟设备,也可以是集成于现有芯片中的模块或单板,本申请实施例不做限定。
本申请实施例以下将结合实际应用对上述数据排序装置进行详细说明。
图3所示为本申请实施例提供的一种数据排序装置示意图,参阅图3所示,该数据排序装置100包括:第一比较模块101、第一确定模块102、第二比较模块103、第二确定模块104、计算模块105以及排序输出模块106,其中:
第一比较模块101,用于针对待排序数组{x1,x2,xi……xN}中包括的每一数据xi执行:将xi与待排序数组中除xi之外的其它每一数据分别比较。其中,N为正整数,i取遍1~N的任一正整数。需要说明的是,以下涉及针对待排序数组中包括的每一数据xi执行的处理,i均为取遍1~N的任一正整数。
第一确定模块102,用于根据第一比较模块101的比较结果,确定与xi对应的第一数值,第一数值为待排序数组中除xi之外的其它各个数据中小于等于xi的数据的个数,或为其它各个数据中大于等于xi的数据的个数。
第二比较模块103,用于针对待排序数组中包括的每一数据xi执行:将xi与待排序数组中位于xi之前的每一数据分别比较。
本申请实施例中,将待排序数组在排序之前的顺序称为待排序数组的原排序,上述第二比较模块103将xi与待排序数组中位于xi之前的每一数据分别比较,是指将xi与待排序数组的原排序中位于xi之前的每一数据分别比较。
需要说明的是,本申请实施例中对第一比较模块101和第二比较模块103执行处理过程的先后顺序不做限定,例如,可以先执行第一比较模块101的处理过程,也可以先执行第二比较模块103的处理过程,当然也可以并行执行第一比较模块101和第二比较模块103的处理过程。
第二确定模块104,用于根据第二比较模块103的比较结果,确定与xi对应的第二数值,第二数值为待排序数组中位于xi之前的各个数据中等于xi的数据的个数。
本申请实施例中,将待排序数组中位于xi之前的各个数据中等于xi的数据的个数确定为第二数值,此处待排序数组中位于xi之前的各个数据是指待排序数组的原排序中位于xi之前的各个数据。
需要说明的是,本申请实施例中对第一确定模块102和第二确定模块104执行处理过程的先后顺序不做限定,例如,可以先执行第一确定模块102的处理过程,也可以先执行第二确定模块104的处理过程,当然也可以并行执行第一确定模块102和第二确定模块104的处理过程。第一比较模块101和第一确定模块102为联动处理的模块,而第二比较模块103和第二确定模块104为联动处理的模块,第一比较模块101和第一确定模块102的联动处理过程,与第二比较模块103和第二确定模块104的联动处理过程可以并列进行。
计算模块105,用于针对待排序数组中包括的每一数据xi执行:计算与xi对应的第三数值,第三数值为第一确定模块102确定的xi对应的第一数值,与第二确定模块104确定的xi对应的第二数值的差值。
排序输出模块106,用于按照计算模块105计算得到的待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出待排序数组中包括的各个数据xi
本申请实施例中,对于排序输出模块106的结构不做限定,能够实现上述排序输出模块106功能的结构,均属于本申请保护的范畴。一种可能的实现方式中,排序输出模块106包括N组比较器序列和N个选择器,参阅图4所示,每组比较器序列包括N个比较器,N个选择器与N组比较器序列一一对应连接,每组比较器序列对应一个设定值,不同组比较器序列对应不同的设定值,不同的设定值分别为{0,1,2…i…N-1}中的一个整数,不同组比较器序列按照各自分别对应的设定值从大到小或从小到大的顺序排列,采用图4所示的排序输出模块106,可按照如下方式输出待排序数组中包括的各个数据xi:每组比较器序列中包括的N个比较器分别处理待排序数组中包括的各个数据xi分别对应的第三数值,确定等于比较器所在的一组比较器序列对应的设定值的第三数值,并将确定的第三数值从所在的一组比较器序列输出,每个选择器用于从待排序数组中选择出自身连接的比较器序列输出的第三数值对应的数据xi,并输出。
本申请实施例中,对于第一比较模块101和第一确定模块102的结构不做限定,能够实现上述第一比较模块101和第一确定模块102功能的结构,均属于本申请保护的范畴。一种可能的实现方式中,第一比较模块101包括N组比较器序列,每组比较器序列分别包括N-1个比较器,第一确定模块102包括N个加法器,参阅图5所示,N组比较器序列分别处理待排序数组中的一个数据xi,不同的比较器序列分别处理的数据互不相同。每组比较器序列通过自身包括的N-1个比较器分别执行:将输入比较器序列的待处理数据xi分别与待排序数组中除xi之外的其它每一数据进行比较,若待排序数组中除xi之外的其它数据小于等于xi,则通过比较器序列中包括的比较器输出第一标识值,第一标识值的个数等于待排序数组中除xi之外的其它数据中小于等于xi的数据个数,或者,若待排序数组中除xi之外的其它数据大于等于xi,则通过比较器序列中包括的比较器输出第二标识值,第二标识值的个数等于待排序数组中除xi之外的其它数据中大于等于xi的数据个数。第一确定模块102包括的N个加法器分别处理待排序数组中的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对待排序数组中包括的一个数据xi,将比较器对应xi输出的第一标识值的个数相加得到与xi对应的第一数值,或者将比较器对应xi输出的第二标识值的个数相加得到与xi对应的第一数值。
本申请实施例对上述第一标识值和第二标识值不做限定,第一标识值和第二标识值均可以为1,当然第一标识值和第二标识值还可以是其它数值或者字母等,本申请实施例中,将第一标识值和第二标识值设置为1,使得第一标识值和第二标识值占用较少的二进制位,可提高排序电路的处理速度、减小处理延迟,进一步的,由于将第一标识值、第二标识值设置为1,硬件实现中通过设置加法器、减法器等简单逻辑器件就可实现快速数据排序,使得数据排序装置更简单。
本申请实施例对于第二比较模块103和第二确定模块104的结构不做限定,能够实现上述第二比较模块103和第二确定模块104功能的结构,均属于本申请保护的范畴。一种可能的实现方式中,第二比较模块103包括N组比较器序列,每组比较器序列分别包括至少一个比较器,第二确定模块104包括N个加法器,参阅图6所示,N组比较器序列分别处理待排序数组中的一个数据xi,不同的比较器序列分别处理的数据互不相同。每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与待排序数组中位于xi之前的每一数据分别进行比较,若待排序数组中位于xi之前的数据等于xi,则通过比较器序列中包括的比较器输出第三标识值,第三标识值的个数等于待排序数组中位于xi之前的数据中等于xi的数据个数。由于待排序数组中位于第一位的数据x1之前没有数据,在图6的实施方式中,将针对数据x1设置的比较器序列中包括的一个比较器的其中一个输入端口输入一个预设的负值,以保证针对数据x1不输出第三标识值,即针对数据x1输出的第三标识值的个数为零。第二确定模块104包括的N个加法器分别处理待排序数组中的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对待排序数组中包括的一个数据xi,将比较器对应xi输出的第三标识值的个数相加得到与xi对应的第二数值。
本申请实施例对于计算模块105的结构不做限定,能够实现上述计算模块105功能的结构,均属于本申请保护的范畴。一种可能的实现方式中,计算模块105可以包括多个减法器,由多个减法器分别针对待排序数组中包括的每一数据xi执行:计算第一确定模块102确定的xi对应的第一数值,与第二确定模块104确定的xi对应的第二数值的差值,得到与xi对应的第三数值。
另一种可能的实现方式中,第二比较模块103包括N-1组比较器序列,每组比较器序列分别包括至少一个比较器,第二确定模块104包括N-1个加法器,参阅图7所示,N-1组比较器序列分别处理待排序数组中除数据x1之外的一个数据xi,不同的比较器序列分别处理的数据互不相同。每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与待排序数组中位于xi之前的每一数据分别进行比较,若待排序数组中位于xi之前的数据等于xi,则通过比较器序列中包括的比较器输出第三标识值,第三标识值的个数等于待排序数组中位于xi之前的数据中等于xi的数据个数。第二确定模块104包括的N-1个加法器分别处理待排序数组中除数据x1之外的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对待排序数组中包括的除数据x1之外的一个数据xi,将比较器对应xi输出的第三标识值的个数相加得到与xi对应的第二数值。由于待排序数组中位于第一位的数据x1之前没有数据,在图7的实施方式中,针对数据x1并未设置比较器序列,也未设置统计数据x1对应的第三标识值的加法器,可预先将数据x1对应的第三标识值的个数设置为常数零,由于预先将数据x1对应的第三标识值的个数设置为常数零,因此数据x1对应的第二数值为零。
针对上述第二比较模块103包括N-1组比较器序列,第二确定模块104包括N-1个加法器的实施方式中,计算模块105对应另一种可能的结构。具体的,另一种可能的实现方式中,计算模块105包括N-1个减法器。计算模块105通过自身包括的N-1个减法器针对待排序数组中包括的除数据x1之外的每一数据xi执行:将待排序数组中包括的除数据x1之外的任一数据xi对应的第一数值减去该数据对应的第二数值,得到与所述xi对应的第三数值。
本申请实施例对第二比较模块103包括的每组比较器序列包括的比较器个数不做限定。较佳的,本申请实施例中第二比较模块103包括的比较器序列中包括的每组比较器序列包括Q个比较器,其中,Q为待排序数组的原排序中位于当前待比较数据之前的数据个数。
本申请实施例对第三标识值不做限定,第三标识值可以为1,当然第三标识值还可以是其它数值或者字母等,本申请实施例中,将第三标识值设置为1,使得第三标识值占用较少的二进制位,可提高排序电路的处理速度、减小处理延迟,且由于将第三标识值设置为1,硬件实现中通过设置加法器、减法器等简单逻辑器件就可实现快速数据排序,使得数据排序装置更简单。
本申请实施例中,若将第三标识值确定为1,则第二比较模块103和第二确定模块104还可对应另一种结构。具体的,又一种可能的实现方式中,第二比较模块103包括N-1组比较器序列,每组比较器序列分别包括至少一个比较器,第二确定模块104包括N-2个加法器,参阅图8所示,N-1组比较器序列分别处理待排序数组中除数据x1之外的一个数据xi,不同的比较器序列分别处理的数据互不相同。每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与待排序数组中位于xi之前的每一数据分别进行比较,若待排序数组中位于xi之前的数据等于xi,则通过比较器序列中包括的比较器输出1,1的个数等于待排序数组中位于xi之前的数据中等于xi的数据个数。第二确定模块104包括的N-2个加法器分别处理待排序数组中除数据x1和数据x2之外的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对待排序数组中包括的除数据x1和数据x2之外的一个数据xi,将比较器对应xi输出的第三标识值(即1)的个数相加得到与xi对应的第二数值。由于待排序数组中位于第一位的数据x1之前没有数据,在图8的实施方式中,针对数据x1并未设置比较器序列,也未设置统计数据x1对应的第三标识值的加法器,可预先将数据x1对应的第三标识值的个数设置为常数零,因此,数据x1对应的第二数值为零。由于待排序数组中位于第二位的数据x2之前只有一个数据x1,且在图8的实施方式中已将第三标识值设置为1,因此,针对数据x2设置的比较器输出的值即为数据x2对应的第二数值,故在上述实施方式中,针对数据x2可不设置与其对应的加法器,可将针对数据x2设置的比较器的输出结果直接确定为与数据x2对应的第二数值。
图9所示为本申请实施例提供的另一种数据排序装置示意图,参阅图9所示,该数据排序装置200中,将包括的第一比较模块和第二比较模块设置在一个模块中,为图9中第一列比较器序列,其中,图9中第一列所有虚线框中的比较器序列构成第一比较模块,其它比较器序列构成第二比较模块,将包括的第一确定模块和第二确定模块设置在一个模块中,为图9中第二列加法器序列,第一确定模块包括N个加法器,第二确定模块包括N-2个加法器,计算模块包括N-1个减法器,排序输出模块与图4中排序输出模块相同。
本申请实施例以下将结合一个具体实例对使用图9所示的数据排序装置对待排序数组的排序过程进行详细说明。具体的,将第一标识值、第二标识值、第三标识值均设置为1,并假设待排序数组为{100,10,10000,1000,10,100},则可相应的确定此时对应待排序数组{100,10,10000,1000,10,100}的N值为6,相应的,当采用图9所示的数据排序装置对待排序数组{100,10,10000,1000,10,100}进行排序时,图9中的第一比较模块包括6组比较器序列,且每一组比较器序列包括5个比较器,第一确定模块包括6个加法器,第二比较模块包括5组比较器序列,每一组比较器序列至少包括一个比较器,第二确定模块包括4个加法器,计算模块包括5个减法器。
一种可能的情况中,将待排序数组{100,10,10000,1000,10,100}中包括的数据按从大到小的顺序排列。通过图9所示的数据排序装置200中包括的第一比较模块和第一确定模块统计待排序数组{100,10,10000,1000,10,100}中每一数据对应的第一数值。
采用本申请实施例中数据排序装置,确定待排序数组中每一数据对应的第一数值,对应两种方式。
一种统计方式中,通过第一比较模块包括的6个比较器序列分别输出数据100,10,10000,1000,10,100对应的第一标识值,下面以输出数据10000对应的第一标识值的过程为例对第一比较模块输出第一标识值的过程进行说明。具体的,通过第一比较模块中针对数据10000设置的比较器序列中包括的5个比较器,分别将数据10000与待排序数组{100,10,10000,1000,10,100}中包括的除10000之外的数据进行比较,若待排序数组{100,10,10000,1000,10,100}中除10000之外的其它数据小于等于10000,则通过比较器序列中包括的比较器输出第一标识值,具体的,当数据10000与位于待排序数组原排序中第一位的数据100比较时输出第一标识值1,当数据10000与位于待排序数组原排序中第二位的数据10比较时输出第一标识值1,当数据10000与位于待排序数组原排序中第四位的数据1000比较时输出第一标识值1,当数据10000与位于待排序数组原排序中第五位数据10比较时输出第一标识值1,当数据10000与位于待排序数组原排序中第六位的数据100比较时输出第一标识值1,通过第一确定模块可确定针对数据10000输出的第一标识值的个数为5,即数据10000对应的第一数值为5,基于同样的操作,可针对待排序数组中包括的数据100,10,1000,10,100分别确定与其对应的第一数值分别为3、1、4、1、3。
另一种统计方式中,通过第一比较模块包括的6个比较器序列分别输出数据100,10,10000,1000,10,100对应的第二标识值,下面以输出数据10000对应的第二标识值的过程为例对第一比较模块输出第二标识值的过程进行说明。具体的,使用针对数据10000设置的比较器序列中包括的5个比较器,分别将数据10000与待排序数组{100,10,10000,1000,10,100}中包括的除10000之外的数据进行比较,若待排序数组{100,10,10000,1000,10,100}中除10000之外的其它数据大于等于10000,则通过比较器序列中包括的比较器输出第二标识值,具体的,当数据10000与位于待排序数组原排序中第一位的数据100比较时不输出第二标识值,当数据10000与位于待排序数组原排序中第二位的数据10比较时不输出第二标识值,当数据10000与位于待排序数组原排序中第四位的数据1000比较时不输出第二标识值,当数据10000与位于待排序数组原排序中第五位数据10比较时不输出第二标识值,当数据10000与位于待排序数组原排序中第六位的数据100比较时不输出第二标识值,通过第一确定模块可确定针对数据10000输出的第二标识值的个数为0,即,在另一种统计方式中,数据10000对应的第一数值为0,基于同样的操作,可针对待排序数组中包括的数据100,10,1000,10,100分别确定与其对应的第一数值分别为3、5、1、5、3。
通过图9所示的数据排序装置200中包括的第二比较模块和第二确定模块,确定待排序数组{100,10,10000,1000,10,100}中每一数据对应的第二数值。由于待排序数组中位于第一位的数据100之前没有数据,已将该数据100对应的第二数值预先设置为零。针对待排序数组中位于第二位的数据10,由于其之前只有一个数据100,因此通过针对该数据设置的比较器的结果即可作为与其对应的第二数值,在上述举例中,由于待排序数组中位于第二位的数据10与其之前的数据100不相等,因此针对该数据不输出第二标识值,即可确定与其对应的第二数值为0。针对待排序数组中位于第三位的数据10000,由于其之前的数据100和10中没有与其相等的数据,因此可确定与其对应的第二数值为0。针对待排序数组中位于第四位的数据1000,由于其之前的数据100、10和10000中没有与其相等的数据,因此可确定与其对应的第二数值为0。针对待排序数组中位于第五位的数据10,由于其之前的数据100、10、10000和1000中有一个与其相等的数据,因此可确定与其对应的第二数值为1。针对待排序数组中位于第六位的数据100,由于其之前的数据100、10、10000、1000和10中有一个与其相等的数据,因此可确定与其对应的第二数值为1。综上,针对待排序数组中包括的数据100,10,10000,1000,10,100确定的第二数值分别为0、0、0、0、1、1。
上述针对待排序数组{100,10,10000,1000,10,100}中包括的数据统计第一数值时包括两种方式。一种统计方式中,第一数值为待排序数组中除xi之外的其它各个数据中小于等于xi的数据的个数,在这种情况下,上述针对待排序数组中包括的数据100,10,10000,1000,10,100,确定的第一数值分别为3、1、5、4、1、3。另一种统计方式中,第一数值为待排序数组中除xi之外的其它各个数据中大于等于xi的数据的个数,在这种情况下,上述针对待排序数组中包括的数据100,10,10000,1000,10,100,确定的第一数值分别为3、5、0、1、5、3。由于针对待排序数组{100,10,10000,1000,10,100}中包括的数据确定的第一数值分上述两种情况,因此,通过计算模块计算与每一数据对应的第三数值也分为两种情况。一种情况中,当针对待排序数组中包括的数据100,10,10000,1000,10,100,确定的第一数值分别为3、1、5、4、1、3时,将与待排序数组中{100,10,10000,1000,10,100}每一数据对应的第一数值,减去与其一一对应的第二数值0、0、0、0、1、1,得到与每一数据100,10,10000,1000,10,100分别对应的第三数值,为3、1、5、4、0、2。另一种情况中,当针对待排序数组中包括的数据100,10,10000,1000,10,100,确定的第一数值分别为3、5、0、1、5、3时,将与待排序数组中{100,10,10000,1000,10,100}每一数据对应的第一数值,减去与其一一对应的第二数值0、0、0、0、1、1,得到与每一数据100,10,10000,1000,10,100分别对应的第三数值,为3、5、0、1、4、2。
针对待排序数组{100,10,10000,1000,10,100}中包括的每一数据确定出与其对应的第三数值之后,通过排序输出模块按照各个数据分别对应的第三数值从大到小或者从小到大的顺序,选择输出待排序数组{100,10,10000,1000,10,100}中包括的各个数据。具体的,针对上述举例图9所示的排序输出模块可包括6组比较器序列和6个选择器,每组比较器序列对应一个{0,1,2,3,4,5}的设定值,不同组比较器序列对应不同的设定值。由于上述举例中分别采用两种不同的方式确定与待排序数组中数据对应的第三数值,因此相应的采用两种不同的方式输出数据。一种输出方式中,针对待排序数组{100,10,10000,1000,10,100}中各个数据100,10,10000,1000,10,100确定的第三数值分别为3、1、5、4、0、2,此时,将6组比较器序列按照各自分别对应的设定值从大到小的顺序排列,即第一组比较器序列对应的设定值为5,第二组比较器序列对应的设定值为4,以此类推,第六组比较器序列对应的设定值为0,通过每一组比较器序列输出与其设定值相同的第三数值,即,通过第一组比较器序列输出的第三数值为5,并通过与其相连的选择器选择与第三数值5对应的数据10000并输出,以此类推,可选择输出与第三数值4对应的数据1000,最后输出与第三数值0对应的数据10,得到从大到小排序后的数组{10000,1000,100,100,10,10},如表1所示,表1中记录了上述通过第一标识值确定第一数值的方式中,各个模块的输出数值。另一种输出方式中,针对待排序数组{100,10,10000,1000,10,100}中数据100,10,10000,1000,10,100确定的第三数值分别为3、5、0、1、4、2,此时,将6组比较器序列按照各自分别对应的设定值从小到大的顺序排列,即第一组比较器序列对应的设定值为0,第二组比较器序列对应的设定值为1,以此类推,第六组比较器序列对应的设定值为5,通过每一组比较器序列输出与其设定值相同的第三数值,即,通过第一组比较器序列输出的第三数值为0,并通过与其相连的选择器选择与第三数值0对应的数据10000并输出,以此类推,可选择输出与第三数值1对应的数据1000,最后输出与第三数值0对应的数据10,得到从大到小排序后的数组{10000,1000,100,100,10,10},如表2所示,表2中记录了上述通过第二标识值确定第一数值的方式中,各个模块的输出数值。通过灵活设置排序输出模块中比较器序列对应的设定值,即可实现将待排序数组{100,10,10000,1000,10,100}中包括的数据按从小到大的顺序排列。
表1
Figure BDA0001391438180000121
表2
Figure BDA0001391438180000122
基于与上述数据排序装置实施例相同的构思,本申请实施例还提供了一种数据排序方法。
图10示出一种数据排序方法流程图,该排序方法可以使用上述提供的数据排序装置来实现,也可以通过执行相应的软件实现,参阅图10所示,包括:
S101:针对待排序数组{x1,x2,xi……xN}中包括的每一数据xi执行:将xi与待排序数组中除xi之外的其它每一数据分别比较。其中,N为正整数,i取遍1~N的任一正整数。
S102:根据xi与待排序数组中除xi之外的其它每一数据分别比较的比较结果,确定与xi对应的第一数值,第一数值为待排序数组中除xi之外的其它各个数据中小于等于xi的数据的个数,或为其它各个数据中大于等于xi的数据的个数。
S103:针对待排序数组中包括的每一数据xi执行:将xi与待排序数组中位于xi之前的每一数据分别比较。
本申请实施例中,将待排序数组在排序之前的顺序称为待排序数组的原排序,上述将xi与待排序数组中位于xi之前的每一数据分别比较,是指将xi与待排序数组的原排序中位于xi之前的每一数据分别比较。
需要说明的是,本申请实施例中对执行S101和S103先后顺序不做限定,例如,可以先执行S101的处理过程,也可以先执行S103的处理过程,当然也可以同时执行S101和S103的处理过程。
S104:根据xi与待排序数组中位于xi之前的每一数据分别比较的比较结果,确定与xi对应的第二数值,第二数值为待排序数组中位于xi之前的各个数据中等于xi的数据的个数。
本申请实施例中,将待排序数组中位于xi之前的各个数据中等于xi的数据的个数确定为第二数值,此处待排序数组中位于xi之前的各个数据是指待排序数组的原排序中位于xi之前的各个数据。
需要说明的是,本申请实施例中对执行S102和S104的先后顺序不做限定,例如,可以先执行S102的处理过程,也可以先执行S104的处理过程,当然也可以同时执行S102和S104的处理过程。
S105:针对待排序数组中包括的每一数据xi执行:计算与xi对应的第三数值,第三数值为xi对应的第一数值,与xi对应的第二数值的差值。
S106:按照计算得到的待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出待排序数组中包括的各个数据xi
本申请实施例中,对按照计算得到的待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出待排序数组中包括的各个数据xi的方式不做限定。一种可能的实施方式中,获取一个由不同的设定值组成的设定值序列,不同的设定值分别为{0,1,2…i…N-1}中的一个整数,设定值序列中包括的不同设定值按照从大到小或从小到大的顺序排列,按照设定值序列中各个设定值的排列顺序,分别将与每个设定值相等的第三数值对应的数据xi输出。
如果上述排序装置基于硬件芯片或逻辑电路实现,基于与上述数据排序装置实施例相同构思,本申请实施例还提供了一种芯片,所述芯片包括上述任一项所述的数据排序装置,即本申请还保护集成有上述由硬件实现的排序装置的电子芯片电路。
基于与上述方法实施例相同构思,本申请实施例还提供了一种计算机可读存储介质,其上存储有一些指令,这些指令被计算机调用执行时,可以使得计算机完成上述方法实施例、方法实施例的任意一种可能的设计中所涉及的方法。本申请实施例中,对计算机可读存储介质不做限定,例如,可以是RAM(random-access memory,随机存取存储器)、ROM(read-only memory,只读存储器)等。
基于与上述方法实施例相同构思,本申请还提供一种计算机程序产品,该计算机程序产品在被计算机调用执行时可以完成方法实施例以及上述方法实施例任意可能的设计中所涉及的方法。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请中一些可能的实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括本申请实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (11)

1.一种数据排序装置,其特征在于,包括:
第一比较模块,用于针对待排序数组{x1,x2,xi……xN}中包括的每一数据xi执行:将xi与所述待排序数组中除所述xi之外的其它每一数据分别比较;其中,N为正整数,i取遍1~N的任一正整数;
第一确定模块,用于根据所述第一比较模块的比较结果,确定与所述xi对应的第一数值,所述第一数值为所述待排序数组中除所述xi之外的其它各个数据中小于等于所述xi的数据的个数,或为其它各个数据中大于等于所述xi的数据的个数;
第二比较模块,用于针对所述待排序数组中包括的每一数据xi执行:将xi与所述待排序数组中位于所述xi之前的每一数据分别比较;
第二确定模块,用于根据所述第二比较模块的比较结果,确定与所述xi对应的第二数值,所述第二数值为所述待排序数组中位于所述xi之前的各个数据中等于所述xi的数据的个数;
计算模块,用于针对所述待排序数组中包括的每一数据xi执行:计算与所述xi对应的第三数值,所述第三数值为所述第一确定模块确定的所述xi对应的第一数值,与所述第二确定模块确定的所述xi对应的第二数值的差值;
排序输出模块,用于按照所述计算模块计算得到的所述待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出所述待排序数组中包括的各个数据xi
其中,所述排序输出模块包括N组比较器序列和N个选择器,其中:
每组比较器序列对应一个设定值,不同组比较器序列对应不同的设定值,所述不同的设定值分别为{0,1,2…i…N-1}中的一个整数,不同组比较器序列按照各自分别对应的设定值从大到小或从小到大的顺序排列;
每组比较器序列包括N个比较器,N个比较器分别处理所述待排序数组中包括的各个数据分别对应的第三数值,确定等于比较器所在的一组比较器序列对应的设定值的第三数值,并将确定的第三数值从所述所在的一组比较器序列输出;
N个选择器与N组比较器序列一一对应连接,每个选择器用于从所述待排序数组中选择出自身连接的比较器序列输出的第三数值对应的数据,并输出。
2.如权利要求1所述的装置,其特征在于,所述第一比较模块包括N组比较器序列,每组比较器序列分别包括N-1个比较器,所述第一确定模块包括N个加法器;
N组比较器序列分别处理待排序数组中的一个数据xi,不同的比较器序列分别处理的数据互不相同;
每组比较器序列通过自身包括的N-1个比较器分别执行:将输入比较器序列的待处理数据xi分别与所述待排序数组中除所述xi之外的其它每一数据进行比较,若所述待排序数组中除所述xi之外的其它数据小于等于所述xi,则通过所述比较器序列中包括的比较器输出第一标识值,所述第一标识值的个数等于所述待排序数组中除所述xi之外的其它数据中小于等于所述xi的数据个数,或者若所述待排序数组中除所述xi之外的其它数据大于等于所述xi,则通过所述比较器序列中包括的比较器输出第二标识值,所述第二标识值的个数等于所述待排序数组中除所述xi之外的其它数据中大于等于所述xi的数据个数;
第一确定模块包括的N个加法器分别处理待排序数组中的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对所述待排序数组中包括的一个数据xi,将比较器对应xi输出的第一标识值的个数相加得到与xi对应的第一数值,或者将比较器对应xi输出的第二标识值的个数相加得到与xi对应的第一数值。
3.如权利要求1所述的装置,其特征在于,所述第二比较模块包括N组比较器序列,每组比较器序列分别包括至少一个比较器,所述第二确定模块包括N个加法器;
N组比较器序列分别处理待排序数组中的一个数据xi,不同的比较器序列分别处理的数据互不相同;
每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与所述待排序数组中位于所述xi之前的每一数据分别进行比较,若所述待排序数组中位于所述xi之前的数据等于所述xi,则通过所述比较器序列中包括的比较器输出第三标识值,所述第三标识值的个数等于所述待排序数组中位于所述xi之前的数据中等于所述xi的数据个数;
第二确定模块包括的N个加法器分别处理待排序数组中的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对所述待排序数组中包括的一个数据xi,将比较器对应xi输出的第三标识值的个数相加得到与xi对应的第二数值。
4.如权利要求1所述的装置,其特征在于,所述第二比较模块包括N-1组比较器序列,每组比较器序列分别包括至少一个比较器,所述第二确定模块包括N-1个加法器;
N-1组比较器序列分别处理待排序数组中除数据x1之外的一个数据xi,不同的比较器序列分别处理的数据互不相同;
每组比较器序列通过自身包括的至少一个比较器分别执行:将输入比较器序列的待处理数据xi与所述待排序数组中位于所述xi之前的每一数据分别进行比较,若所述待排序数组中位于所述xi之前的数据等于所述xi,则通过所述比较器序列中包括的比较器输出第三标识值,所述第三标识值的个数等于所述待排序数组中位于所述xi之前的数据中等于所述xi的数据个数;
第二确定模块包括的N-1个加法器分别处理待排序数组中除数据x1之外的一个数据xi,不同的加法器分别处理的数据互不相同,每个加法器针对所述待排序数组中包括的除数据x1之外的一个数据xi,将比较器对应xi输出的第三标识值的个数相加得到与xi对应的第二数值,其中,将数据x1对应的第二数值预先设置为零。
5.如权利要求1~4任一所述的装置,其特征在于,所述计算模块包括多个减法器。
6.如权利要求2所述的装置,其特征在于,所述第一标识值和所述第二标识值均为1。
7.如权利要求3或4所述的装置,其特征在于,所述第三标识值为1。
8.一种数据排序方法,其特征在于,所述方法由如权利要求1-7任一项所述的装置执行,所述方法包括:
针对待排序数组{x1,x2,xi……xN}中包括的每一数据xi执行:将xi与所述待排序数组中除所述xi之外的其它每一数据分别比较;其中,N为正整数,i取遍1~N的任一正整数;
根据所述xi与所述待排序数组中除所述xi之外的其它每一数据分别比较的比较结果,确定与所述xi对应的第一数值,所述第一数值为所述待排序数组中除所述xi之外的其它各个数据中小于等于所述xi的数据的个数,或为其它各个数据中大于等于所述xi的数据的个数;
针对所述待排序数组中包括的每一数据xi执行:将xi与所述待排序数组中位于所述xi之前的每一数据分别比较;
根据所述xi与所述待排序数组中位于所述xi之前的每一数据分别比较的比较结果,确定与所述xi对应的第二数值,所述第二数值为所述待排序数组中位于所述xi之前的各个数据中等于所述xi的数据的个数;
针对所述待排序数组中包括的每一数据xi执行:计算与所述xi对应的第三数值,所述第三数值为所述xi对应的第一数值,与所述xi对应的第二数值的差值;
按照计算得到的所述待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出所述待排序数组中包括的各个数据xi
9.如权利要求8所述的方法,其特征在于,按照计算得到的所述待排序数组中包括的各个数据xi分别对应的第三数值从大到小或者从小到大的顺序,输出所述待排序数组中包括的各个数据xi,包括:
获取一个由不同的设定值组成的设定值序列,所述不同的设定值分别为{0,1,2…i…N-1}中的一个整数,所述设定值序列中包括的不同设定值按照从大到小或从小到大的顺序排列;
按照所述设定值序列中各个设定值的排列顺序,分别将与每个设定值相等的第三数值对应的数据xi输出。
10.一种芯片,其特征在于,包括如权利要求1~7中任一项所述的数据排序装置。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行如权利要求8~9任一所述的方法。
CN201710752463.7A 2017-08-28 2017-08-28 一种数据排序装置、方法及芯片 Active CN109426484B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710752463.7A CN109426484B (zh) 2017-08-28 2017-08-28 一种数据排序装置、方法及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710752463.7A CN109426484B (zh) 2017-08-28 2017-08-28 一种数据排序装置、方法及芯片

Publications (2)

Publication Number Publication Date
CN109426484A CN109426484A (zh) 2019-03-05
CN109426484B true CN109426484B (zh) 2021-08-31

Family

ID=65503320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710752463.7A Active CN109426484B (zh) 2017-08-28 2017-08-28 一种数据排序装置、方法及芯片

Country Status (1)

Country Link
CN (1) CN109426484B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109949378B (zh) * 2019-03-26 2021-06-08 中国科学院软件研究所 图像灰度值排序方法、装置、电子设备及计算机可读介质
CN112395623B (zh) * 2019-08-19 2023-09-29 华控清交信息科技(北京)有限公司 一种数据处理方法、装置和电子设备
CN110674155B (zh) * 2019-09-27 2022-04-26 湘潭大学 一种铸造过程的砂箱调度方法及调度系统
CN110825343B (zh) * 2019-11-05 2021-12-03 中电科思仪科技股份有限公司 一种快速数据筛选方法及系统
CN111083425B (zh) * 2019-11-25 2022-12-23 视联动力信息技术股份有限公司 视频流处理方法、装置、服务器、电子设备及存储介质
CN111651137B (zh) * 2020-05-29 2023-12-05 Oppo广东移动通信有限公司 排序方法、装置、电子装置以及计算机设备
CN112015366B (zh) * 2020-07-06 2021-09-10 中科驭数(北京)科技有限公司 数据排序方法、数据排序装置及数据库系统
CN112488626B (zh) * 2020-11-30 2024-04-30 浙江中控技术股份有限公司 一种物料转移控制方法、装置及电子设备
CN113407484A (zh) * 2021-06-16 2021-09-17 杭州加速科技有限公司 基于fpga的数组排序方法、系统及数据压缩方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426785A (en) * 1993-03-25 1995-06-20 The United States Of America As Represented By The Secretary Of The Air Force Comparator stack architecture for order statistic filtering of digital imagery
CN1383511A (zh) * 1998-11-16 2002-12-04 因芬尼昂技术股份公司 通过重排序存储器请求提高总线利用率的存储器控制器
CN201156248Y (zh) * 2008-02-03 2008-11-26 深圳艾科创新微电子有限公司 一种计算多数据排序序号的硬件结构
CN102968496A (zh) * 2012-12-04 2013-03-13 天津神舟通用数据技术有限公司 基于任务驱动和双缓冲机制的并行排序方法
CN103267965A (zh) * 2013-05-20 2013-08-28 中国路桥工程有限责任公司 一种多目标微变测量数据处理系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100385249C (zh) * 2005-10-18 2008-04-30 电子科技大学 一种利用阵列天线进行波达方向估计的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426785A (en) * 1993-03-25 1995-06-20 The United States Of America As Represented By The Secretary Of The Air Force Comparator stack architecture for order statistic filtering of digital imagery
CN1383511A (zh) * 1998-11-16 2002-12-04 因芬尼昂技术股份公司 通过重排序存储器请求提高总线利用率的存储器控制器
CN201156248Y (zh) * 2008-02-03 2008-11-26 深圳艾科创新微电子有限公司 一种计算多数据排序序号的硬件结构
CN102968496A (zh) * 2012-12-04 2013-03-13 天津神舟通用数据技术有限公司 基于任务驱动和双缓冲机制的并行排序方法
CN103267965A (zh) * 2013-05-20 2013-08-28 中国路桥工程有限责任公司 一种多目标微变测量数据处理系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于FPGA的图像处理算法的研究与硬件设计;付昱强;《中国优秀硕士学位论文全文数据库 信息科技辑》;20061115;I138-753 *

Also Published As

Publication number Publication date
CN109426484A (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
CN109426484B (zh) 一种数据排序装置、方法及芯片
US11175920B2 (en) Efficient work execution in a parallel computing system
US20210349692A1 (en) Multiplier and multiplication method
Norollah et al. RTHS: A low-cost high-performance real-time hardware sorter, using a multidimensional sorting algorithm
CN112015366B (zh) 数据排序方法、数据排序装置及数据库系统
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
US7734456B2 (en) Method and apparatus for priority based data processing
CN110008382B (zh) 一种确定TopN数据的方法、系统及设备
EP3767455A1 (en) Apparatus and method for processing floating-point numbers
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
EP3767454A1 (en) Apparatus and method for processing floating-point numbers
CN112929400A (zh) 一种分布式缓存库数据重均衡方法和系统
WO2019023910A1 (zh) 数据处理方法和设备
US8196082B1 (en) Signal routing and pin placement
CN110245756B (zh) 用于处理数据组的可编程器件及处理数据组的方法
CN111027688A (zh) 一种基于fpga的神经网络计算器生成方法及装置
CN115543254A (zh) 一种排序电路、排序方法及电子设备
US10997277B1 (en) Multinomial distribution on an integrated circuit
CN112463218B (zh) 指令发射控制方法及电路、数据处理方法及电路
US10884976B2 (en) Parallel processing unit and device for parallel processing
CN112464157B (zh) 向量排序方法与排序系统
CN111915014B (zh) 人工智能指令的处理方法及装置、板卡、主板和电子设备
KR102628658B1 (ko) 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법
CN114546944B (zh) 多进程负载均衡的数据库文件排序优化方法及装置
US20230259581A1 (en) Method and apparatus for floating-point data type matrix multiplication based on outer product

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