CN115543254A - 一种排序电路、排序方法及电子设备 - Google Patents

一种排序电路、排序方法及电子设备 Download PDF

Info

Publication number
CN115543254A
CN115543254A CN202211176507.3A CN202211176507A CN115543254A CN 115543254 A CN115543254 A CN 115543254A CN 202211176507 A CN202211176507 A CN 202211176507A CN 115543254 A CN115543254 A CN 115543254A
Authority
CN
China
Prior art keywords
sorting
data
register
input data
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.)
Pending
Application number
CN202211176507.3A
Other languages
English (en)
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.)
Institute of Microelectronics of CAS
Original Assignee
Institute of Microelectronics of CAS
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 Institute of Microelectronics of CAS filed Critical Institute of Microelectronics of CAS
Priority to CN202211176507.3A priority Critical patent/CN115543254A/zh
Publication of CN115543254A publication Critical patent/CN115543254A/zh
Pending legal-status Critical Current

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/02Comparing digital values

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种排序电路、排序方法及电子设备,涉及电子电路技术领域,以在实现排序性能的同时,减少电路资源和输入输出资源的使用。所述排序电路包括:相互连接的第一寄存器以及排序模块。排序模块用于对第一目标数据按照预设排序条件进行排序处理,将第一目标数据中排序处理后的前M个数据确定为第二目标数据,第一目标数据包括M个输入数据和所述第一寄存器内的M个存储数据。第一寄存器用于基于第二目标数据对M个存储数据进行更新处理。排序模块还用于基于更新后的M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将N个输入数据中排序处理后的前M个输入数据确定为最终目标数据。

Description

一种排序电路、排序方法及电子设备
技术领域
本发明涉及电子电路技术领域,尤其涉及一种排序电路、排序方法及电子设备。
背景技术
最大/最小数据排序指的是在全部N个输入数据中选择M个最大或最小的数据输出,这种排序操作广泛存在于数据处理、人工智能等计算领域中,在图像处理、任务调度、科学计算以及大数据处理中都起到非常重要的作用。采用中央处理器(Central ProcessingUnit,CPU)或图形处理器(Graphics Processing Unit,GPU)对数据排序的性能较差,因此,一般使用基于现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)设计的专用排序电路加速对数据的排序操作。
排序电路的性能对整体系统的执行时间有很大的影响,尽量快的完成对大量数据的排序能够进一步提升系统性能。但由于FPGA具有有限的电路资源,在设计电路时需要充分考虑电路资源以及输入输出资源的使用情况。
发明内容
本发明的目的在于提供一种排序电路、排序方法及电子设备,用于在实现排序性能的同时,减少电路资源和输入输出资源的使用。
为了实现上述目的,本发明提供如下技术方案:
第一方面,本发明提供一种排序电路,包括:相互连接的第一寄存器以及排序模块。排序模块用于对第一目标数据按照预设排序条件进行排序处理,将第一目标数据中排序处理后的前M个数据确定为第二目标数据,第一目标数据包括M个输入数据和所述第一寄存器内的M个存储数据。
第一寄存器用于基于第二目标数据对M个存储数据进行更新处理。
排序模块还用于基于更新后的M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将N个输入数据中排序处理后的前M个输入数据确定为最终目标数据。
其中,N为输入数据的总个数,M为最终目标数据的总个数,N大于或者等于M,且N和M均为正整数。
采用上述技术方案的情况下,第一排序模块能够对M个输入数据和第一寄存器内的M个存储数据按照预设排序条件进行排序处理,将排序处理后的前M个数据确定为第二目标数据,第一寄存器根据第二目标数据对M个存储数据进行更新,排序电路对再次接收到的M个最新输入数据和更新后的M个存储数据按照预设排序条件进行新一轮次的排序处理,迭代预设次数后,直至排序模块接收到第N个输入数据,将全部N个输入数据中排序处理后的前M个输入数据确定为最终目标数据,也即是将最后一次输出的第二目标数据作为最终目标数据。基于此,本发明通过设置第一寄存器与排序模块连接,使得在对N个输入数据进行排序处理时,能够采用迭代的架构,通过对排序模块的复用,减少了排序电路中的器件数量,节省了电路面积,进而减少电路资源的使用。
此外,根据实际情况可知,N与M的关系应至少满足N≥M,本发明提供的排序电路在对全部N个输入数据进行排序处理时,仅需设置M个数据输入端口和M个数据输出端口,就可以实现在N个输入数据中挑选出M个最大或者最小数据的目的,无需提供N个数据输入端口或者N个数据输出端口,在一定程度上也减少了对于输入输出资源的使用。
由此可知,本发明提供的排序电路能够在实现排序性能的同时,减少电路资源和输入输出资源的使用。
第二方面,本发明还提供一种排序方法,应用于第一方面所述的排序电路中,所述排序方法包括:
排序模块对第一目标数据按照预设排序条件进行排序处理,将第一目标数据中排序处理后的前M个数据确定为第二目标数据,第一目标数据包括M个输入数据和所述第一寄存器内的M个存储数据。
第一寄存器基于第二目标数据对M个存储数据进行更新处理。
排序模块还基于更新后的M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将N个输入数据中排序处理后的前M个输入数据确定为最终目标数据。其中,N为输入数据的总个数,M为最终目标数据的总个数,N大于或者等于M,且N和M均为正整数。
与现有技术相比,本发明提供的排序方法的有益效果与上述技术方案所述的排序电路的有益效果相同,此处不做赘述。
第三方面,本发明还提供一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由一个或多个处理器执行时,使得执行第二方面所述的排序方法。
与现有技术相比,本发明提供的电子设备的有益效果与上述技术方案所述的排序电路的有益效果相同,此处不做赘述。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为现有技术中的排序电路的结构示意图;
图2为本发明实施例中的排序电路的结构示意图;
图3为本发明实施例中的排序方法的流程图;
图4为本发明实施例中的电子设备的硬件结构示意图;
图5为本发明实施例中芯片的结构示意图。
附图标记:
101-比较器, 210-排序模块;
220-第一寄存器, 211-第一排序子模块;
2111-第一比较单元, 2112-第二寄存器;
212-第二排序子模块, 2121-第二比较单元;
2122-第三寄存器, 2123-第三比较单元;
2124-第四寄存器, 213-第三排序子模块;
2131-第四比较单元, 2132-第五寄存器;
2133-第六寄存器。
具体实施方式
为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一阈值和第二阈值仅仅是为了区分不同的阈值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本发明中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本发明中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b的结合,a和c的结合,b和c的结合,或a、b和c的结合,其中a,b,c可以是单个,也可以是多个。
图1为现有技术中的一种排序电路100,用于在输入的N个数据中挑选出M个最大或者最小的数据。以N=8,M=4为例,此时N=2M,需要在输入的八个数据中挑选出四个最大的数据,或者四个最小的数据,其工作过程如下:
向排序电路输入八个无序的数据序列,例如,{9,16,20,3,5,25,68,11};
以每两个数据为一组,经过第一级的4个比较器101后,每组数据内部形成递增的有序序列,此时,输入数据变成了两两递增的局部有序的数据序列,例如,{(9,16),(3,20),(5,25),(11,68)};
经过第二级的8个比较器101后,两两递增的局部有序的数据序列变成了四四递增的局部有序的数据序列,例如,{(3,9,16,20),(5,11,25,68)},以前四个数据为一组,后四个数据为一组,此时每组数据内部的第一个数据为本组内的最小数据,每组数据内部的第四个数据为本组内的最大数据;
经过第三级的4个比较器101后,第一组数据中的第四个数据与第二组数据中的第一个数据进行比较,并根据比较结果对两个数据进行交换,依次类推,直至第一组数据中的第一个数据与第二组数据中的第4个数据比较完毕,最终4个最大的数据{20,16,25,68}会排序电路的输出端的下面4个数据端口输出,而4个最小的数据{3,9,11,5}会从排序电路的输出端的上面四个数据端口输出。
可以理解的是,对于N=8,M=4的情况,只需要四级一共16个比较器101就能够实现对8个输入数据中4个最大数据或者4个最小数据的选择。但当需要处理的输入数据的总个数N更大时,为了在输入的数据中选取M个符合条件的数据,需要增加更多的比较器,同时也需要更多的输入输出的端口数量,占用的硬件电路资源更多。
为了解决上述技术问题,如图2所示,本发明实施例提出一种排序电路200,包括:相互连接的第一寄存器220以及排序模块210。
排序模块210用于对第一目标数据按照预设排序条件进行排序处理,将第一目标数据中排序处理后的前M个数据确定为第二目标数据,第一目标数据包括M个输入数据和第一寄存器220内的M个存储数据。
第一寄存器220用于基于第二目标数据对M个存储数据进行更新处理。
排序模块210还用于基于更新后的M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将N个输入数据中排序处理后的前M个输入数据确定为最终目标数据。
其中,N为输入数据的总个数,M为最终目标数据的总个数,N大于或者等于M,且N和M均为正整数。
具体实施时,当需要在全部N个输入数据中选择M个最大数据或者M个最小数据输出时,需要设置M个数据输入端口,用于接收M个输入数据。
排序模块210接收到M个输入数据后,对第一目标数据按照预设的排序条件进行排序处理,第一目标数据是由M个输入数据和第一寄存器220内存储的M个存储数据共同组成的,也即每次的排序处理中共有2M个数据参与排序。
排序模块210将排序处理后的前M个数据确定为第二目标数据,并将第二目标数据回传至第一寄存器220,以更新第一寄存器220内存储的M个存储数据,之后,排序模块210再次接收M个最新输入数据,按照预设排序条件,进行新一轮次的排序处理,迭代预设次数后,直至排序模块210接收到第N个输入数据,最后一次输出的第二目标数据即为最终目标数据。
与现有技术相比,本发明实施例提供的排序电路200中包括相互连接的第一寄存器220以及排序模块210。由此,第一排序模块210能够对M个输入数据和第一寄存器220内的M个存储数据按照预设排序条件进行排序处理,将排序处理后的前M个数据确定为第二目标数据,第一寄存器220根据第二目标数据对M个存储数据进行更新,排序电路200对再次接收到的M个最新输入数据和更新后的M个存储数据按照预设排序条件进行新一轮次的排序处理,迭代预设次数后,直至排序模块210接收到第N个输入数据,将全部N个输入数据中排序处理后的前M个输入数据确定为最终目标数据,也即是将最后一次输出的第二目标数据作为最终目标数据。基于此,本发明实施例通过设置第一寄存器220与排序模块210连接,使得在对N个输入数据进行排序处理时,能够采用迭代的架构,通过对排序模块210的复用,减少了排序电路200中的器件数量,节省了电路面积,进而减少电路资源的使用。
此外,根据实际情况可知,N与M的关系应至少满足N≥M,本发明实施例提供的排序电路200在对全部N个输入数据进行排序处理时,仅需设置M个数据输入端口和M个数据输出端口,就可以实现在N个输入数据中挑选出M个最大或者最小数据的目的,无需提供N个数据输入端口或者N个数据输出端口,在一定程度上也减少了对于输入输出资源的使用。
由此可知,本发明实施例提供的排序电路200能够在实现排序性能的同时,减少电路资源和输入输出资源的使用。
应注意,上述实施例中的预设次数为N/M。示例性的,当N=100,M=10时,排序中输入数据的端口个数也相应的设置为10个,每次只有20个数据参与排序,在对100个输入数据迭代N/M=10次后,就能实现在全部100个数据中选择10个最大的数据或者10个最小的数据输出。当N=104,M=10时,此时的迭代次数应该为N/M≈11次。
在实际中,当最终目标数据为N个输入数据中前M个最大的数据时,第一寄存器220的初始存储数据均为零。即在第一次排序之前,第一寄存器220内存储有M个“0”,在经过第一轮次的排序之后,第二目标数据替换M个“0”作为M个存储数据,参与到下一轮次的排序中。当最终目标数据为N个输入数据中前M个最小的数据时,则第一寄存器220的初始存储数据为N个输入数据中最大的M个数据。
可以理解的是,当需要在N个数据中选出M个最大数据时,相应的第二目标数据应该为第一目标数据经过排序处理后的前M个最大数据,当需要在N个数据中选出M个最小数据时,相应的第二目标数据应该为第一目标数据经过排序处理后的前M个最小数据。
在一种可能的实现方式中,如图2所示,排序模块210包括依次电连接的第一排序子模块211、第二排序子模块212以及第三排序子模块213。其中,第一排序子模块211的输入端还与第一寄存器220的输出端电连接。
第一排序子模块211用于对M个输入数据和M个存储数据分别按照预设排序条件进行排序处理,确定M个输入数据的第一排序结果和M个存储数据的第一排序结果。
第二排序子模块212用于对M个输入数据的第一排序结果和M个存储数据的第一排序结果分别按照预设排序条件进行排序处理,确定M个输入数据的第二排序结果和M个存储数据的第二排序结果。
第三排序子模块213用于对M个输入数据的第二排序结果和M个存储数据的第二排序结果按照预设排序条件进行排序处理,确定排序处理后的前M个数据为第二目标数据。
具体的,第一排序子模块211在接收到M个输入数据和M个存储数据后,分别对M个输入数据和M个存储数据进行一次排序,确定了M个输入数据的第一排序结果和M个存储数据的第一排序结果,之后,第二排序子模块212在获取到M个输入数据的第一排序结果和M个存储数据的第一排序结果后,分别对M个输入数据的第一排序结果和M个存储数据的第一排序结果进行再一次排序,输出M个输入数据的第二排序结果和M个存储数据的第二排序结果。
第三排序子模块213在获取到M个输入数据的第二排序结果和M个存储数据的第二排序结果后,对2M个数据进行再一次排序,确定排序处理后的2M个数据中,前M个数据为第二目标数据。
在一些实施例中,如图2所示,第一排序子模块211包括第一比较单元2111和第二寄存器2112,第一比较单元2111的输出端与第二寄存器2112电连接,第二寄存器2112的输出端与第二排序子模块212电连接。
第一比较单元2111用于对M个输入数据和M个存储数据分别按照预设排序条件进行排序处理,确定M个输入数据的第一排序结果和M个存储数据的第一排序结果。
第二寄存器2112用于对M个输入数据的第一排序结果和M个存储数据的第一排序结果进行存储。
具体的,如图2所示,第一比较单元2111包括M个比较器,每个比较器的两端连接两个传输的数据,用于在比较两个数据的大小后,交换两个数据的位置。在本实施例中,以比较器的上方为第一端,下方为第二端,比较器在比较两个数据的大小之后,将小的数据交换至第一端,将更大的数据交换至第二端。例如,当数据序列{12,9}输入至比较器后,经过比较器的比较,输出的数据序列就变成了{9,12}。或者,也可以将比较器的交换数据的条件更改为,将小的数据交换至第二端,将更大的数据交换至第一端。
示例性的,第一比较单元2111中的每个比较器都可以按照图2所示的方式连接。第1个比较器用于比较第1个输入数据和第2个输入数据,第2个比较器用于比较第3个输入数据和第4个输入数据,依次类推,第(M/2)个比较器用于比较第(M-1)个和第M个输入数据,第[(M/2)+1]个比较器用于比较第1个存储数据和第2个存储数据、第[(M/2)+2]个比较器用于比较第3个存储数据和第4个存储数据、第M个比较器用于比较第(M-1)个存储数据和第M个存储数据。经过第一比较单元2111的排序处理后,在M个输入数据的第一排序结果中,第1个输入数据和第2个输入数据为递增的数据序列,第3个输入数据和第4个输入数据也为递增的数据序列,其他输入数据和存储数据同理。
应注意,图2中所示的比较器的连接方式仅作为示例,在实际中,也可以将第1个比较器连接于第1个输入数据和第3个输入数据之间,或者将第1个比较器连接于第1个输入数据和第M个输入数据之间,本发明实施例对此不做具体限定。
第二寄存器2112对M个输入数据的第一排序结果和M个存储数据的第一排序结果进行存储,并向第二比较单元2121输出M个输入数据的第一排序结果和M个存储数据的第一排序结果。
在一些实施例中,如图2所示,第二排序子模块212包括依次电连接的第二比较单元2121、第三寄存器2122、第三比较单元2123、以及第四寄存器2124。
第二比较单元2121的输入端与第一排序子模块211的输出端电连接,第四寄存器2124的输出端与第三排序子模块213电连接。
第二比较单元2121用于对M个输入数据的第一排序结果和M个存储数据的第一排序结果分别按照预设排序条件进行排序处理,确定M个输入数据的第二排序子结果和M个存储数据的第二排序子结果。
第三寄存器2122用于对M个输入数据的第二排序子结果和M个存储数据的第二排序子结果进行存储。
第三比较单元2123用于对M个输入数据的第二排序子结果和M个存储数据的第二排序子结果分别按照预设排序条件进行排序处理,确定M个输入数据的第二排序结果和M个存储数据的第二排序结果。
第四寄存器2124用于对M个输入数据的第二排序结果和M个存储数据的第二排序结果进行存储。
示例性的,第二比较单元2121包括多个比较器,多个比较器对M个输入数据的第一排序结果和M个存储数据的第一排序结果分别进行排序处理。但需要注意的是,第二比较单元2121中的M个比较器的连接方式应至少与第一比较单元2111中的比较器的连接方式不同,以避免对数据进行重复比较。
经过第二比较单元2121的排序处理之后,确定M个输入数据的第二排序子结果和M个存储数据的第二排序子结果。
第三寄存器2122将M个输入数据的第二排序子结果和M个存储数据的第二排序子结果进行存储,并向第三比较单元2123输出M个输入数据的第二排序子结果和M个存储数据的第二排序子结果。
第三比较单元2123包括M个比较器,M个比较器对M个输入数据的第二排序子结果和M个存储数据的第二排序子结果分别进行排序处理。此时,第三比较单元2123中的M个比较器的连接方式应该与第一比较单元2111中的M个比较器的连接方式一致。经过第三比较单元2123的排序处理后,M个输入数据的第二排序结果中,M个输入数据以递增的顺序排列,此时,M个存储数据的第二排序结果中,M个存储数据也应该以递增的顺序排列。或者,M个输入数据以递减的顺序排列,此时,M个存储数据也应该以递减的顺序排列。
第四寄存器2124将M个输入数据的第二排序结果和M个存储数据的第二排序结果进行存储,并向第四比较单元2131输出M个输入数据的第二排序结果和M个存储数据的第二排序结果。
在一些实施例中,如图2所示,第三排序子模块213包括第四比较单元2131、第五寄存器2132和第六寄存器2133。第四比较单元2131的输入端与第二排序子模块212电连接,第四比较单元2131的输出端分别与第五寄存子模块的输入端和第六寄存子模块的输入端电连接,第六寄存器2133的输出端与第一寄存器220电连接。
第四比较单元2131用于对M个输入数据的第二排序结果和M个存储数据的第二排序结果按照预设排序条件进行排序处理,确定第三排序结果,其中,第三排序结果中的前M个数据为第二目标数据。
第五寄存器2132用于获取第三排序结果。
第六寄存器2133用于获取第三排序结果,对第二目标数据进行存储。
第六寄存器2133还用于将第二目标数据传输至第一寄存器220中。
示例性的,第四比较单元2131中的M个比较器的连接方式如图2所示,根据M个输入数据的第三排序结果和M个存储的第三排序结果,第四比较单元2131将第M个输入数据与第1个存储数据进行比较,根据比较结果进行位置交换,将第(M-1)个输入数据与第2个存储数据进行比较,以此类推,直至将第1个输入数据与第M个存储数据进行比较,根据比较结果进行位置交换,至此,完成一轮次对于M个输入数据的排序处理。
第五寄存器2132和第六寄存器2133获取到第三排序结果后,第六寄存器2133用于存储第二目标数据,第五寄存器2132用于存储2M个数据中除第二目标数据以外的M个数据。
应理解,预设排序条件是根据最终目标数据确定的。
例如,当需要从N个输入数据中选取最大的M个数据,则第六寄存器2133中存储的数据为2M个数据中前M个较大的数据,相应的,比较器的交换条件也应该设置为,将较大的数据交换至靠近第六寄存器2133的一端,将较小的数据交换至靠近第五寄存器2132的一端。
例如,当需要从N个输入数据中选取最小的M个数据,则第六寄存器2133中存储的数据为2M个数据中前M个较小的数据,相应的,比较器的交换条件也应该设置为,将较小的数据交换至靠近第六寄存器2133的一端,将较大的数据交换至靠近第五寄存器2132的一端。
第六寄存器2133最后将第二目标数据传输至第一寄存器220中,以对第一寄存器220中的M个存储数据进行更新。
此外,本发明实施例中的排序电路200,在每一个排序子模块中都增加了寄存器,能够加深流水线的级数,也意味着每一个排序子模块中容纳的硬件逻辑越少,具有更高的主频,能够提高排序电路200的吞吐量,进而提高了排序电路200的性能。
如图3所示,本发明实施例还提供一种排序方法,应用于上述实施例中所述的排序电路200中,所述排序方法包括:
步骤S100:排序模块210对第一目标数据按照预设排序条件进行排序处理,将第一目标数据中排序处理后的前M个数据确定为第二目标数据。
其中,第一目标数据包括M个输入数据和第一寄存器220内的M个存储数据。
步骤S200:第一寄存器220基于第二目标数据对M个存储数据进行更新处理。
步骤S300:排序模块210还基于更新后的M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将N个输入数据中排序处理后的前M个输入数据确定为最终目标数据。
其中,N为输入数据的总个数,M为最终目标数据的总个数,N大于或者等于M,且N和M均为正整数。
本发明实施例提供的排序方法中,在对N个输入数据进行排序处理时,能够采用迭代的架构,通过对复用排序模块210,减少了排序电路200中的器件数量,节省了电路面积,进而减少电路资源的使用。
此外,在对全部N个输入数据进行排序处理时,仅需设置M个数据输入端口和M个数据输出端口,就可以实现在N个输入数据中挑选出M个最大或者最小数据的目的,无需提供N个数据输入端口或者N个数据输出端口,在一定程度上也减少了对于输入输出资源的使用。
由此可知,本发明实施例提供的排序方法能够在实现排序性能的同时,减少电路资源和输入输出资源的使用。
在一种可能的实现方式中,排序模块210包括依次电连接的第一排序子模块211、第二排序子模块212以及第三排序子模块213。排序方法包括:
第一排序子模块211对M个输入数据和M个存储数据分别按照预设排序条件进行排序处理,确定M个输入数据的第一排序结果和M个存储数据的第一排序结果。
第二排序子模块212对M个输入数据的第一排序结果和M个存储数据的第一排序结果分别按照预设排序条件进行排序处理,确定M个输入数据的第二排序结果和M个存储数据的第二排序结果。
第三排序子模块213对M个输入数据的第二排序结果和M个存储数据的第二排序结果按照预设排序条件进行排序处理,确定排序处理后的前M个数据为第二目标数据。
本发明还提供一种电子设备400,如图4所示,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由一个或多个处理器执行时,使得执行上述实施例中所述的排序方法。
图4示出了本发明实施例提供的一种电子设备的硬件结构示意图。如图4所示,该电子设备400包括处理器410和通信接口420。
如图4所示,上述处理器可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,专用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。上述通信接口可以为一个或多个。通信接口可使用任何收发器一类的装置,用于与其他设备或通信网络通信。
如图4所示,上述电子设备400还可以包括通信线路430。通信线路可包括一通路,在上述组件之间传送信息。
可选的,如图4所示,该电子设备400还可以包括存储器440。存储器用于存储执行本发明方案的计算机执行指令,并由处理器来控制执行。处理器用于执行存储器中存储的计算机执行指令,从而实现本发明实施例提供的排序方法。
如图4所示,上述存储器440可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器440可以是独立存在,通过通信线路430与处理器410相连接。存储器440也可以和处理器410集成在一起。
可选的,本发明实施例中的计算机执行指令也可以称之为应用程序代码,本发明实施例对此不作具体限定。
在具体实现中,作为一种实施例,如图4所示,处理器410可以包括一个或多个CPU,如图4中的CPU0和CPU1。
在具体实现中,作为一种实施例,如图4所示,电子设备400可以包括多个处理器,如图4中的第一处理器410和第二处理器450。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。
图5是本发明实施例提供的芯片的结构示意图。如图5所示,该芯片500包括一个或两个以上(包括两个)处理器510和通信接口520。
可选的,如图5所示,该芯片还包括存储器530,存储器可以包括只读存储器和随机存取存储器,并向处理器提供操作指令和数据。存储器的一部分还可以包括非易失性随机存取存储器(Non-Volatile Random Access Memory,NVRAM)。
在一些实施方式中,如图5所示,存储器530存储了如下的元素,执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
在本发明实施例中,如图5所示,通过调用存储器530存储的操作指令(该操作指令可存储在操作系统中),执行相应的操作。
如图5所示,处理器510控制终端设备中任一个的处理操作,处理器还可以称为中央处理单元(Central Processing Unit,CPU)。
如图5所示,存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括NVRAM。例如应用中存储器、通信接口以及存储器通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图5中将各种总线都标为总线系统540。
如图5所示,上述本发明实施例揭示的排序方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processing,DSP)、ASIC、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
一方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令被运行时,实现上述实施例中由技术等级确定设备执行的功能。
一方面,提供一种芯片,该芯片应用于终端设备中,芯片包括至少一个处理器和通信接口,通信接口和至少一个处理器耦合,处理器用于运行指令,以实现上述实施例中由技术等级确定设备执行的功能。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、终端、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(Digital Video Disc,DVD);还可以是半导体介质,例如,固态硬盘(Solid State Drive,SSD)。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

Claims (10)

1.一种排序电路,其特征在于,包括:相互连接的第一寄存器以及排序模块;
所述排序模块用于对第一目标数据按照预设排序条件进行排序处理,将所述第一目标数据中排序处理后的前M个数据确定为第二目标数据;所述第一目标数据包括M个输入数据和所述第一寄存器内的M个存储数据;
所述第一寄存器用于基于所述第二目标数据对所述M个存储数据进行更新处理;
所述排序模块还用于基于更新后的所述M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将所述N个输入数据中排序处理后的前M个输入数据确定为最终目标数据;
其中,所述N为所述输入数据的总个数,所述M为所述最终目标数据的个数,所述N大于或者等于所述M,且所述N和所述M均为正整数。
2.根据权利要求1所述的排序电路,其特征在于,所述排序模块包括依次电连接的第一排序子模块、第二排序子模块以及第三排序子模块,其中:
所述第一排序子模块的输入端还与所述第一寄存器的输出端电连接;
所述第一排序子模块用于对所述M个输入数据和所述M个存储数据分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果;
所述第二排序子模块用于对所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果;
所述第三排序子模块用于对所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果按照所述预设排序条件进行排序处理,确定排序处理后的前M个数据为所述第二目标数据。
3.根据权利要求2所述的排序电路,其特征在于,所述第一排序子模块包括第一比较单元和第二寄存器,所述第一比较单元的输出端与所述第二寄存器电连接,所述第二寄存器的输出端与所述第二排序子模块电连接;
所述第一比较单元用于对所述M个输入数据和所述M个存储数据分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果;
所述第二寄存器用于对所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果进行存储。
4.根据权利要求2所述的排序电路,其特征在于,所述第二排序子模块包括依次电连接的第二比较单元、第三寄存器、第三比较单元、以及第四寄存器;
所述第二比较单元的输入端与所述第一排序子模块的输出端电连接,所述第四寄存器的输出端与所述第三排序子模块电连接;
所述第二比较单元用于对所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第二排序子结果和所述M个存储数据的第二排序子结果;
所述第三寄存器用于对所述M个输入数据的第二排序子结果和所述M个存储数据的第二排序子结果进行存储;
所述第三比较单元用于对所述M个输入数据的第二排序子结果和所述M个存储数据的第二排序子结果分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果;
所述第四寄存器用于对所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果进行存储。
5.根据权利要求2所述的排序电路,其特征在于,所述第三排序子模块包括第四比较单元、第五寄存器和第六寄存器,其中:
所述第四比较单元的输入端与所述第二排序子模块电连接,所述第四比较单元的输出端分别与所述第五寄存子模块的输入端和第六寄存子模块的输入端电连接,所述第六寄存器的输出端与所述第一寄存器电连接;
所述第四比较单元用于对所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果按照所述预设排序条件进行排序处理,确定第三排序结果,其中,所述第三排序结果中的前M个数据为所述第二目标数据;
所述第五寄存器用于获取所述第三排序结果;
所述第六寄存器用于获取所述第三排序结果,对所述第二目标数据进行存储;
所述第六寄存器还用于将所述第二目标数据传输至所述第一寄存器中。
6.根据权利要求1所述的排序电路,其特征在于,所述预设次数为N/M。
7.根据权利要求1所述的排序电路,其特征在于,当所述最终目标数据为所述N个输入数据中前M个最大的数据时,所述第一寄存器的初始存储数据均为零。
8.一种排序方法,其特征在于,应用于权利要求1-7任一项所述的排序电路中,所述排序方法包括:
所述排序模块对第一目标数据按照预设排序条件进行排序处理,将所述第一目标数据中排序处理后的前M个数据确定为第二目标数据;其中,所述第一目标数据包括M个输入数据和所述第一寄存器内的M个存储数据;
所述第一寄存器基于所述第二目标数据对所述M个存储数据进行更新处理;
所述排序模块还基于更新后的所述M个存储数据,对再次接收的M个最新输入数据进行排序处理,迭代预设次数,直至接收到第N个输入数据,将所述N个输入数据中排序处理后的前M个输入数据确定为最终目标数据;
其中,所述N为所述输入数据的总个数,所述M为所述最终目标数据的个数,所述N大于或者等于所述M,且所述N和所述M均为正整数。
9.根据权利要求8所述的排序方法,其特征在于,所述排序模块包括依次电连接的第一排序子模块、第二排序子模块以及第三排序子模块;所述排序方法包括:
所述第一排序子模块对所述M个输入数据和所述M个存储数据分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果;
所述第二排序子模块对所述M个输入数据的第一排序结果和所述M个存储数据的第一排序结果分别按照所述预设排序条件进行排序处理,确定所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果;
所述第三排序子模块对所述M个输入数据的第二排序结果和所述M个存储数据的第二排序结果按照所述预设排序条件进行排序处理,确定排序处理后的前M个数据为所述第二目标数据。
10.一种电子设备,其特征在于,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得执行权利要求8至9任一所述的排序方法。
CN202211176507.3A 2022-09-26 2022-09-26 一种排序电路、排序方法及电子设备 Pending CN115543254A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211176507.3A CN115543254A (zh) 2022-09-26 2022-09-26 一种排序电路、排序方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211176507.3A CN115543254A (zh) 2022-09-26 2022-09-26 一种排序电路、排序方法及电子设备

Publications (1)

Publication Number Publication Date
CN115543254A true CN115543254A (zh) 2022-12-30

Family

ID=84730494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211176507.3A Pending CN115543254A (zh) 2022-09-26 2022-09-26 一种排序电路、排序方法及电子设备

Country Status (1)

Country Link
CN (1) CN115543254A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116011395A (zh) * 2023-01-11 2023-04-25 上海合见工业软件集团有限公司 基于模块交换的电路示意图模块列排序方法、设备和介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116011395A (zh) * 2023-01-11 2023-04-25 上海合见工业软件集团有限公司 基于模块交换的电路示意图模块列排序方法、设备和介质
CN116011395B (zh) * 2023-01-11 2023-12-08 上海合见工业软件集团有限公司 基于模块交换的电路示意图模块列排序方法、设备和介质

Similar Documents

Publication Publication Date Title
US5045993A (en) Digital signal processor
US5247627A (en) Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US10324730B2 (en) Memory shuffle engine for efficient work execution in a parallel computing system
CN109426484B (zh) 一种数据排序装置、方法及芯片
US5206940A (en) Address control and generating system for digital signal-processor
EP0539595A1 (en) Data processor and data processing method
CN111142938A (zh) 一种异构芯片的任务处理方法、任务处理装置及电子设备
GB2558271A (en) Median determination
CN115543254A (zh) 一种排序电路、排序方法及电子设备
US5237667A (en) Digital signal processor system having host processor for writing instructions into internal processor memory
US7734456B2 (en) Method and apparatus for priority based data processing
US5572687A (en) Method and apparatus for priority arbitration among devices in a computer system
CN104166539A (zh) 并行原子递增
CN111258950B (zh) 原子访存方法、存储介质、计算机设备、装置和系统
CN113052304A (zh) 用于具有部分读取/写入的脉动阵列的系统和方法
US3309679A (en) Data processing system
WO2022007597A1 (zh) 矩阵运算的方法和加速器
CN112463218B (zh) 指令发射控制方法及电路、数据处理方法及电路
US7124280B2 (en) Execution control apparatus of data driven information processor for instruction inputs
US10997277B1 (en) Multinomial distribution on an integrated circuit
US9317474B2 (en) Semiconductor device
CN111915014B (zh) 人工智能指令的处理方法及装置、板卡、主板和电子设备
JPS6165336A (ja) 高速演算方式
CN101256479A (zh) 识别矢量中的有效位的方法和系统
CN111224674A (zh) 多进制ldpc码的解码方法、装置及解码器

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