CN105512179A - 硬件实现的数据排序装置、方法及数据处理芯片 - Google Patents
硬件实现的数据排序装置、方法及数据处理芯片 Download PDFInfo
- Publication number
- CN105512179A CN105512179A CN201510828602.0A CN201510828602A CN105512179A CN 105512179 A CN105512179 A CN 105512179A CN 201510828602 A CN201510828602 A CN 201510828602A CN 105512179 A CN105512179 A CN 105512179A
- Authority
- CN
- China
- Prior art keywords
- data
- register
- zone bit
- comparer
- sorting device
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Logic Circuits (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种功耗低、面积小、结构简单、效率高的可应用于加速器中的硬件实现的数据排序装置、方法及包括该数据排序装置的数据处理芯片,所述数据排序装置包括:寄存器组,保存数据排序过程中暂时排出的K个最大或最小的数据,寄存器组包括多个并行连接的寄存器,且相邻两个寄存器由低级向高级单向传输数据;比较器组,包括以与所述寄存器一一对应的方式相连接的多个比较器,比较输入的多个数据的大小关系,并将较大或较小的数据输出至对应的寄存器;控制电路,设置有作用于所述寄存器的多个标志位,所述标志位判断所述寄存器是否接收由对应的比较器或低一级寄存器传来的数据,以及判断寄存器是否向高一级寄存器传输数据。
Description
技术领域
本发明属于计算机电子领域,涉及一种新型的硬件排序装置。更具体地说,本发明涉及一种利用硬件实现的数据排序装置、方法及包括该数据排序装置的数据处理芯片,能够并行完成连续数据流的部分排序工作。
背景技术
排序运算是一种常见的数据处理方式,其广泛的应用于计算机的各类程序中。而排序装置作为加速器设计中必不可少的一部分。有效的排序方式能够优化其他算法的使用情况,如查找合并等算法,也能够加速整体加速器整体加速的效果。现有技术中,软件方面的排序技术已经发展得较为完善和系统,包括插入排序、希尔排序、冒泡排序、选择排序、归并排序、快速排序和堆排序等等,并且已经得到了较为广阔的应用前景。
然而,对于加速器设计而言,直接调用软件层面的算法显然不是一个很好的办法,一方面它需要调用处理器资源,当没有处理器资源的时候,此类算法将无法进行;另一方面,当使用处理器资源时,此类算法会占用大量的功耗,同时计算效率也不高。如果考虑将这些算法由C语言直接移植为硬件描述语言.则综合出的电路时序较差,同样无法满足应用需求。因此,我们不得不考虑硬件方面的排序装置,简单而又高效。
现阶段,为了加速硬件专用的排序运算,工业界和学术界提出了各种排序电路。做得比较多的是应用于网络的排序算法,包括TCP协议中包重排序,计算结点通信代价来求解背包问题来构造出软硬件划分问题的优质启发解,利用统计信息利用WF2C+算法实现快速完全排序等等。这些算法可能在网络领域解决某些特定的问题能够取得较好的效果,但是如果考虑应用到加速器中,一方面,装置过于庞大,占用大量的功耗和面积;另一方面,功能过于特殊化,与我们的加速器所需功能并不完全吻合。
所以,我们需要针对我们所需要的加速器设计出一款排序装置,有效完成较大数据量中的快速的部分排序的功能。要求满足所需功耗低、占用面积小、排序效率高等要求,同时装置结构简单,必须能够应用于加速器中。
专利文献1(公开号为:CN1987771)公开了一种实现数据排序的硬件电路及方法,用于从m个数据中找出n个最大或最小的数据,并且同时实现对这n个最大或最小的值进行大小排序。此电路每个时钟可以处理一个数据,如果使用多套排序电路并行工作,排序时间还可以成倍减少,所以该电路的实时处理强,可以满足对处理时间要求比较高的场合,但是,该发明仅仅针对软件数据结构中的单链表数据进行排序,在访问存储在链表中的数据时,需要查询指针,因此,该硬件电路中必须包含n+1选择器、极值指针寄存器、译码器等等,其电路较为繁琐,面积和功耗也较大,在通过比较器进行数据大小比较后,不能够及时地更新寄存器。
发明内容
本发明的目的在于,解决至少上述问题和缺陷,采用以下技术方案,提供一种功耗低、面积小、结构简单、效率高的可应用于加速器中的硬件实现的数据排序装置和方法,以及包含该数据排序装置的数据处理芯片。
本发明的硬件实现的数据排序装置,包括:
寄存器组,用于保存数据排序过程中暂时排出的K个最大或最小的数据,K为正整数,所述寄存器组包括多个并行连接的寄存器,且相邻两个所述寄存器由低级向高级单向传输数据;
比较器组,包括多个比较器,所述比较器以与所述寄存器一一对应的方式连接于所述寄存器,所述比较器用于比较输入的多个数据的大小关系,并将较大或较小的数据输出至对应的所述寄存器中;
控制电路,设置有分别作用于所述寄存器的多个标志位,所述标志位用于判断所述寄存器是否接收由对应的所述比较器或低一级寄存器传来的数据,以及判断所述寄存器是否向高一级寄存器传输数据。
本发明的硬件实现的数据排序装置,其中,
每个所述寄存器保存一个数据,所述数据按照由大到小或者由小到大的顺序有序存储。
本发明的硬件实现的数据排序装置,其中,
每个所述比较器含有至少两个输入端口、一个输出端口,所述比较器对由所述输入端口输入的数据进行比较,按程序指令选出最大值或最小值,并由所述输出端口输出。
本发明的硬件实现的数据排序装置,其中,
所述寄存器中的数据作为输入到对应的比较器内的一个输入数据,所述比较器的输出端口反向连接至对应的寄存器,将输出数据传输回所述寄存器。
本发明的硬件实现的数据排序装置,其中,
所述控制电路控制新输入的数据并行输入至每个所述比较器内,作为所述比较器的另一个输入数据。
本发明的硬件实现的数据排序装置,其中,
所述标志位至少包括一个比较标志位和一个传输标志位;所述比较标志位,用于标志所述比较器输出的比较结果是否与对应的寄存器保存的数据相同;所述传输标志位,用于判断所述寄存器是否从低一级寄存器中传入数据。
另外,本发明还提供一种使用上述硬件实现的数据排序装置对数据进行排序的方法,包括如下步骤:
初始化步骤,清空寄存器组并使控制电路的标志位为0;
比较步骤,数据输入到比较器组的每一个比较器,所述比较器对输入数据并行进行比较,并将较大或小值输出至对应的寄存器;
寄存步骤,所述寄存器组保存数据排序过程中暂时排出的最大或最小的K个数据,K为正整数;
控制步骤,控制电路根据数据传输及比较情况修改所述标志位,并根据所述标志位判断所述寄存器是否接收由对应的所述比较器或低一级寄存器传来的数据,以及判断所述寄存器是否向高一级寄存器传输数据。
本发明的对数据进行排序的方法,其中,
所述控制步骤中,如果某一比较器的输出值和相应的寄存器现有的保存值相同,则比较标志位保持为0,否则比较标志位置为1。
本发明的对数据进行排序的方法,其中,
所述控制步骤中,当与所述寄存器相连的低一级的寄存器有数据向该寄存器传输时,则传输标志位为1,否则传输标志位保持为0。
本发明的对数据进行排序的方法,其中,
所述控制步骤中,对于除最低级寄存器和最高级寄存器外的某一寄存器,当接收到相应的比较器返回的比较结果时,还接收到控制电路返回的比较标志位和传输标志位,如果所述比较标志位为0,即该寄存器中原数据与比较结果相同,则不做任何操作;如果所述比较标志位为1,则寄存器中的原数据大于或小于新传入的数据,则进一步判断所述传输标志位,如果所述传输标志位是1,即没有数据传入到该寄存器,则将该寄存器中的现有数据向高一级寄存器传输,并接收低一级寄存器中传来的数据,将所述传输标志位归0,并将高一级寄存器的传输标志位置为0,保存比较器返回的数据。
另外,本发明还提供一种包括以上任一所述的硬件实现的数据排序装置的数据处理芯片。
本发明的效果如下:
(1)根据本发明的数据排序装置及方法,能够快速地从输入的大量数据中找出K个最大/最小值,适用于连续数据流的实时的部分排序操作;
(2)根据本发明的数据排序装置及方法,通过采用就地进行比较选择(移位)的方式对输入数据进行排序,能够在比较的同时马上决定新的寄存器是否需要更新(从上一个寄存器移位,或者插入新数据);
(3)根据本发明的数据排序装置及方法,能够使控制电路更为简洁,减小电路面积并降低电路功耗,由于采用移位地方式对输入数据进行比较和排序,因而总是从上一个移入,因此,不需要n+1选择器、极值指针寄存器、译码器等等,能够节省一半的面积和功耗。
(4)根据本发明的数据排序装置及方法,由于寄存器并不是用于存储极值,而是直接存储最终的N个极值,因而能够提高数据排序装置的效率。
附图说明
图1是示出了包括寄存器组、比较器组、控制电路等装置的电路图;
图2是本发明的数据排序方法的流程图;
图3是作为本发明的一个实施例而示出的对连续数据流进行从小到大进行部分排序,选择出最小的K个数值的流程图。
图4示出本发明的实施方式的数据处理芯片
附图标记说明
1…数据排序装置
2…数据处理芯片
11…寄存器组
12…比较器组
101…新输入数据
102~105…寄存器
106~109…比较器
110~113…选择控制信号
具体实施方式
如前所述,我们需要设计一款功耗低、面积小、结构简单、效率高的可应用于加速器中的利用硬件实现的数据排序装置。通过观察多种应用领域(机器学习等)的数据类型和所需排序的数据范围,本发明人发现对于特定领域的特定算法(比如机器学习中的knn算法),常常需要针对大量的数据选取其中前K个最大/小值,而其他数据无需排序,同时,K数值一般较小。即只需要在大量的数据中完成少量的部分排序即可。因此,本发明人提出了具有上述技术方案的硬件实现的排序装置及方法,尤其适用于连续数据流的实时的部分排序操作。该排序装置能够根据用户对所需数据范围的需求,只需要排出前K个数值的大小顺序,快速完成排序。该装置结构简单,相比于普通的相比普通的全排序硬件,具有高效率低能耗小面积等的优点。
本发明中的这种硬件实现的排序装置,包括寄存器组,由若干个寄存器组成,用于保存暂时排出的最大/小的K个数据;比较器组,由若干个比较器组成,可以比较传输至比较器中的两个或多个数据的大小关系;控制电路,用以控制比较器组和寄存器组中的数据输入和数据输出。其中,所述控制电路设置了多个标志位,分别作用于每个寄存器。控制电路与寄存器组和比较器组的连接关系为,寄存器的值和新输入的数据作为比较器输入,比较器的结果信号又通过控制器控制寄存器是否更新或移位(通过比较标志位和移位标志位)。
进而,相邻两个寄存器间可以由低向高的单向传输数据,即低一级寄存器可以向高一级寄存器传输数据。当低一级寄存器向高一级寄存器传输数据时,同时要求修改高一级寄存器的传输标志位,表示有数据传输。当高一级寄存器接收并保存完低一级寄存器传输来的数据后,将自己的传输标志位归零,回到初始状态。
每个比较器连接在寄存器的后面,并且能够由寄存器向比较器内传入数据,另一个数据为新输入的待比较的数据。每个比较器的输出返回给该寄存器,并修改比较标志位,用以寄存器中保存的原数据与比较后的结果是否相同。当寄存器处理完数据后,无论是选择接收保存还是不接收放弃,都需要将该比较标志位归零,回到初始状态,等待新数据的输入和新一轮的比较。
标志位对每个寄存器的作用是标志寄存器是否向高一级寄存器传输数据,以及是否需要接收低一级寄存器传来的数据。具体而言,控制电路分别给每个寄存器有两个标志位,一个是比较标志位,另一个是传输标志位。比较标志位用于表示比较器返回来的数据和从对应寄存器中输入的数据是否相同,如果不同则置为1。传输标志位用于判断是否从低一级寄存器中传入数据,如果有,则置为1。这两个标志位用于控制该寄存器的数据是否需要改变,如果改变的话改变为从哪里过来的数据,比较器或者低一级的寄存器,并且判断自己原来的数据是否需要向高一级的寄存器传输。更具体的说,寄存器组首先需要判断伴随控制电路返回而来的比较标志位,如果比较标志位为0,即该寄存器中原数据与比较结果相同,则不做任何操作;如果比较标志位为1,说明寄存器中的原数据大/小于新传入的数据,则需要考虑看另一个传输标志位,如果是1,说明没有数据传入到该寄存器,则将寄存器中的现有数据向高一级寄存器传输,将高一级寄存器对应的传输标志位设置为0,而后保存比较器返回的数据;如果传输标志位为1,说明该新数据比低一级寄存器中的数据还大/小,则将自己的数据想高一级的数据传输,设置高一级的传输标志位为1,而后接受低一级寄存器中传来的数据,将自己的传输标志位归0。值得注意的是,所有的标志位需要初始化为0。每次操作之后也需要及时归零。
在对输入数据进行排序之前,需要对数据排序装置进行初始化,初始化时,需要清空寄存器组。而后随着数据流的输入,逐渐填满寄存器组。若要求的K值小于寄存器组中寄存器总量时,只需要使用最低级的K个寄存器即可。当寄存器组未装满数据时,新输入的数据都会有序的依次保存在寄存器组内,即如果寄存器组为空,则保存在最低级的寄存器内;若新输入的数据比寄存器组内现有数据都大/小,则保存在现有数据的寄存器的高一级寄存器内;否则令比该新数据大/小的数据依次上移至高一级的寄存器中,而后新数据插入在该中间位置的寄存器中。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的硬件实现的数据排序装置及方法进行进一步详细说明。
图1表示出了作为一个实施例的数据排序装置的包括寄存器组、比较器组、控制电路等的电路图。寄存器组11由若干个寄存器组成,如图1中,不妨假定由四个寄存器组成,分别标号为102、103、104、105,比较器组12由若干个比较器组成,如图1中,不妨假定由四个比较器组成,分别标号为106、107、108、109。相邻两个寄存器可以从低级向高级单向传输数据,每个寄存器后面接一个比较器,并可以向比较器中传入数据,比较器的输出结果传回该寄存器中。
不妨假定我们要求选择前K个较小值,那么从控制装置中的101输入新数据,而后传递给每一个比较器,作为比较器的另一个输入。而后,比较器组同时进行工作,并行完成比较操作,得到较小值作为比较结果输出,并修改比较标志位。选取其中一对比较器108和寄存器104为例。如果比较器108的输出值和寄存器104现有的保存值相同,则比较标志位不动,否则比较标志位为1。那么看寄存器104的传输标志位,如果传输标志位为0,则说明寄存器105没有向寄存器104传入数据,则将寄存器104内的数值向上传输给寄存器103,并修改寄存器103的传输标志位为1,然后将比较器108的输出结果保存到寄存器104中;如果寄存器104的传输标志位为1,则说明寄存器105向寄存器104传入了数据,那么就将寄存器104内的数值向上传输给寄存器103,并修改寄存器103的传输标志位为1,然后将寄存器105传输来的数据保存到寄存器104内,并将寄存器104的传输标志位归零。其他寄存器和比较器对同理进行类似的操作。
对于最低层的寄存器105,无需进行传输标志位的判断,即比较标志位为1,则将寄存器105的数值向上传输给寄存器104,而后修改寄存器104的传输标志位,再保存下比较器109的输出结果。对于最高层的寄存器102,无需进行向上传递的操作,即如果比较标志位为1,且传输标志位为0,则直接保存比较器6的输出结果;如果比较标志位为1,且传输标志位为1,则直接保存寄存器103传输而来的数据值,并将传输标志位归零。
图2为本发明的数据排序方法的流程图,包括如下步骤:初始化步骤S1,清空寄存器组并使控制电路的标志位为0,用以对所述数据排序装置进行初始化;比较步骤S2,数据输入到所述数据排序装置后,传递至比较器组的每一个比较器,所述每个比较器对输入数据并行进行比较,并输出较大和/或小值;寄存步骤S3,所述寄存器组保存数据排序过程中暂时排出的最大和/或最小的K个数据,K为正整数;控制步骤S4,控制电路根据数据传输和数据比较的情况修改所述标志位,控制所述比较器组和所述寄存器组中的数据输入和数据输出。
所述控制步骤S4中,如果某一比较器的输出值和相应的寄存器现有的保存值相同,则比较标志位保持为0,否则比较标志位置为1。当与寄存器相连的低一级的寄存器有数据向该寄存器传输时,则传输标志位为1,否则传输标志位保持为0。对于除最低级寄存器和最高级寄存器外的某一寄存器,当接收到相应的比较器返回的比较结果时,还接收到控制电路返回的比较标志位和传输标志位,如果所述比较标志位为0,即该寄存器中原数据与比较结果相同,则不做任何操作;如果所述比较标志位为1,则寄存器中的原数据大于或小于新传入的数据,则进一步判断所述传输标志位,如果所述传输标志位是1,即没有数据传入到该寄存器,则将该寄存器中的现有数据向高一级寄存器传输,并接收低一级寄存器中传来的数据,将所述传输标志位归0,并将高一级寄存器的传输标志位置为0,保存比较器返回的数据。
图3根据本发明的一个实施例,更详细地示出了该排序装置对连续数据流进行部分排序的流程图。为表述方便,不妨基于图1的电路,对数据流m1,m2,……,mn(n>k,n为正整数)进行部分排序,选择出最小的4个数值。在步骤201处进行初始化,即将所有的寄存器清空,所有的传输标志位和比较标志位归零。在步骤202处,通过图1的101输入第一个数据m1。由于最开始没有数据,所以该数据直接存入图1中的寄存器105中。经过步骤206判断未传输完所有的数据流,返回到步骤202,通过图1的101输入第二个数据m2。由于只有寄存器105中有数据,所以将m2传入至比较器109中进行比较,如果m1>m2,则比较器的输出结果为m2,比较标志位为1,由于寄存器105为最低层寄存器,所以不需要比较传输标志位,那么将原寄存器105内的数据传输至寄存器104中并保存,寄存器105接收比较器109的结果数据并保存,而后将比较标志位归零;如果m1<m2,则将m2保存在寄存器104中。当输入第三个数据m3和第四个数据m4时情况类似,此时四个寄存器中均已保存有数据。当步骤202输入数据m5时,进入步骤203,将传送至四个比较器中作为一个输入,同时四个寄存器将存储的数据分别传入四个比较器中作为另一个输入。进入步骤204,进行比较,每个比较器选择出较小值作为比较结果输出,并判断该输出结果是否与原寄存器值相同,不相同则将比较标志位置为1。通过步骤205判断,如果比较标志位为0,因为还有新的数据,故返回至步骤202循环执行。否则判断传输标志位是否为1,如果为0,则将原寄存器的数值向高一级的寄存器传输,并将高一级的寄存器的传输标志位置为1,而后接收并保存比较器传来的比较结果,将比较标志位归零;否则,将原寄存器的数值向高一级的寄存器传输,并将高一级的寄存器的传输标志位置为1,而后接收并保存由低一级寄存器传输的数据,并将比较标志位和传输标志位均置为0。而后,因为还有新的数据,故返回至步骤202循环执行。如此循环往复,直到所有数据,即mn也传入并处理完毕,那么寄存器组102、103、104、105保存的数据即为该连续数据流中最小的4个数值。
另外,如图4所示,本发明还提供一种包括上述硬件实现的数据排序装置1的数据处理芯片2。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶合、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。
而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外相同的要素。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应当理解可由计算机程序指令实现流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定的方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上对本发明所提供的硬件实现的数据排序装置及方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限值。
Claims (11)
1.一种硬件实现的数据排序装置,其特征在于,包括:
寄存器组,用于保存数据排序过程中暂时排出的K个最大或最小的数据,K为正整数,所述寄存器组包括多个并行连接的寄存器,且相邻两个所述寄存器由低级向高级单向传输数据;
比较器组,包括多个比较器,所述比较器以与所述寄存器一一对应的方式连接于所述寄存器,所述比较器用于比较输入的多个数据的大小关系,并将较大或较小的数据输出至对应的所述寄存器中;
控制电路,设置有分别作用于所述寄存器的多个标志位,所述标志位用于判断所述寄存器是否接收由对应的所述比较器或低一级寄存器传来的数据,以及判断所述寄存器是否向高一级寄存器传输数据。
2.根据权利要求1所述的硬件实现的数据排序装置,其特征在于,
每个所述寄存器保存一个数据,所述数据按照由大到小或者由小到大的顺序有序存储。
3.根据权利要求1所述的硬件实现的数据排序装置,其特征在于,
每个所述比较器含有至少两个输入端口、一个输出端口,所述比较器对由所述输入端口输入的数据进行比较,按程序指令选出最大值或最小值,并由所述输出端口输出。
4.根据权利要求1所述的硬件实现的数据排序装置,其特征在于,
所述寄存器中的数据作为输入到对应的比较器内的一个输入数据,所述比较器的输出端口反向连接至对应的寄存器,将输出数据传输回所述寄存器。
5.根据权利要求4所述的硬件实现的数据排序装置,其特征在于,
所述控制电路控制新输入的数据并行输入至每个所述比较器内,作为所述比较器的另一个输入数据。
6.根据权利要求1所述的硬件实现的数据排序装置,其特征在于,
所述标志位至少包括一个比较标志位和一个传输标志位;所述比较标志位,用于标志所述比较器输出的比较结果是否与对应的寄存器保存的数据相同;所述传输标志位,用于判断所述寄存器是否从低一级寄存器中传入数据。
7.一种使用权利要求1-6中任一所述硬件实现的数据排序装置对数据进行排序的方法,其特征在于,包括如下步骤:
初始化步骤,清空寄存器组并使控制电路的标志位为0;
比较步骤,数据输入到比较器组的每一个比较器,所述比较器对输入数据并行进行比较,并将较大或小值输出至对应的寄存器;
寄存步骤,所述寄存器组保存数据排序过程中暂时排出的最大或最小的K个数据,K为正整数;
控制步骤,控制电路根据数据传输及比较情况修改所述标志位,并根据所述标志位判断所述寄存器是否接收由对应的所述比较器或低一级寄存器传来的数据,以及判断所述寄存器是否向高一级寄存器传输数据。
8.根据权利要求7所述的对数据进行排序的方法,其特征在于,
所述控制步骤中,如果某一比较器的输出值和相应的寄存器现有的保存值相同,则比较标志位保持为0,否则比较标志位置为1。
9.根据权利要求7所述的对数据进行排序的方法,其特征在于,
所述控制步骤中,当与所述寄存器相连的低一级的寄存器有数据向该寄存器传输时,则传输标志位为1,否则传输标志位保持为0。
10.根据权利要求7所述的对数据进行排序的方法,其特征在于,
所述控制步骤中,对于除最低级寄存器和最高级寄存器外的某一寄存器,当接收到相应的比较器返回的比较结果时,还接收到控制电路返回的比较标志位和传输标志位,如果所述比较标志位为0,即该寄存器中原数据与比较结果相同,则不做任何操作;如果所述比较标志位为1,则寄存器中的原数据大于或小于新传入的数据,则进一步判断所述传输标志位,如果所述传输标志位是1,即没有数据传入到该寄存器,则将该寄存器中的现有数据向高一级寄存器传输,并接收低一级寄存器中传来的数据,将所述传输标志位归0,并将高一级寄存器的传输标志位置为0,保存比较器返回的数据。
11.一种包括权利要求1-6中任一所述硬件实现的数据排序装置的数据处理芯片。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510828602.0A CN105512179B (zh) | 2015-11-25 | 2015-11-25 | 硬件实现的数据排序装置、方法及数据处理芯片 |
US15/773,970 US20180321944A1 (en) | 2015-11-25 | 2016-06-17 | Data ranking apparatus and method implemented by hardware, and data processing chip |
PCT/CN2016/086096 WO2017088455A1 (zh) | 2015-11-25 | 2016-06-17 | 硬件实现的数据排序装置、方法及数据处理芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510828602.0A CN105512179B (zh) | 2015-11-25 | 2015-11-25 | 硬件实现的数据排序装置、方法及数据处理芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105512179A true CN105512179A (zh) | 2016-04-20 |
CN105512179B CN105512179B (zh) | 2017-06-09 |
Family
ID=55720161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510828602.0A Active CN105512179B (zh) | 2015-11-25 | 2015-11-25 | 硬件实现的数据排序装置、方法及数据处理芯片 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180321944A1 (zh) |
CN (1) | CN105512179B (zh) |
WO (1) | WO2017088455A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250097A (zh) * | 2016-06-22 | 2016-12-21 | 中国科学院计算技术研究所 | 一种面向大数据的加速排序装置、方法、芯片、处理器 |
CN106775573A (zh) * | 2016-11-23 | 2017-05-31 | 北京电子工程总体研究所 | 一种基于fpga的潜在目标排序方法 |
WO2017088455A1 (zh) * | 2015-11-25 | 2017-06-01 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
CN106843803A (zh) * | 2016-12-27 | 2017-06-13 | 南京大学 | 一种基于归并树的全排序加速器及应用 |
CN107526571A (zh) * | 2017-10-30 | 2017-12-29 | 南京火零信息科技有限公司 | 一种在多个数据中比较大小的电路 |
CN109460210A (zh) * | 2018-10-22 | 2019-03-12 | 重庆中科云丛科技有限公司 | 排序系统及数据处理方法 |
CN109766074A (zh) * | 2018-12-05 | 2019-05-17 | 西安电子科技大学 | 一种数据排序电路及排序方法 |
CN109949378A (zh) * | 2019-03-26 | 2019-06-28 | 中国科学院软件研究所 | 图像灰度值排序方法、装置、电子设备及计算机可读介质 |
CN110780840A (zh) * | 2019-10-30 | 2020-02-11 | 湖南国科微电子股份有限公司 | 多路排序器的实现方法及系统 |
CN110825343A (zh) * | 2019-11-05 | 2020-02-21 | 中电科仪器仪表有限公司 | 一种快速数据筛选方法及系统 |
CN111260042A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111260043A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111340229A (zh) * | 2018-11-30 | 2020-06-26 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN112486454A (zh) * | 2019-09-12 | 2021-03-12 | 北京华航无线电测量研究所 | 一种基于fpga的序列多峰值搜索排序装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740459A (en) * | 1992-10-07 | 1998-04-14 | Motorola, Inc. | Method and circuit for sorting data in a fuzzy inference data processing system |
CN1987771A (zh) * | 2005-12-23 | 2007-06-27 | 中兴通讯股份有限公司 | 一种实现数据排序的硬件电路及方法 |
CN101470553A (zh) * | 2007-12-27 | 2009-07-01 | 比亚迪股份有限公司 | 触摸屏控制器数据预处理排序电路及方法 |
CN102207846A (zh) * | 2010-03-31 | 2011-10-05 | 国际商业机器公司 | 一种实现数据排序的电路和方法 |
CN103019646A (zh) * | 2013-01-09 | 2013-04-03 | 西安电子科技大学 | 并行排序电路及并行排序方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790515A (en) * | 1995-08-28 | 1998-08-04 | Motorola, Inc. | Method and apparatus for sorting walsh indexes in a communication system receiver |
US7177319B2 (en) * | 2001-12-27 | 2007-02-13 | Interdigital Technology Corporation | Insertion sorter |
CN101192847B (zh) * | 2007-08-13 | 2011-08-10 | 中兴通讯股份有限公司 | 一种峰值搜索和排序的装置及峰值排序方法 |
CN104317549A (zh) * | 2014-10-15 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种实现数据排序的级联结构电路和方法 |
US10101965B1 (en) * | 2015-10-28 | 2018-10-16 | Mbit Wireless, Inc. | Method and apparatus for high speed streaming sorter |
CN105512179B (zh) * | 2015-11-25 | 2017-06-09 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
-
2015
- 2015-11-25 CN CN201510828602.0A patent/CN105512179B/zh active Active
-
2016
- 2016-06-17 US US15/773,970 patent/US20180321944A1/en not_active Abandoned
- 2016-06-17 WO PCT/CN2016/086096 patent/WO2017088455A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5740459A (en) * | 1992-10-07 | 1998-04-14 | Motorola, Inc. | Method and circuit for sorting data in a fuzzy inference data processing system |
CN1987771A (zh) * | 2005-12-23 | 2007-06-27 | 中兴通讯股份有限公司 | 一种实现数据排序的硬件电路及方法 |
CN101470553A (zh) * | 2007-12-27 | 2009-07-01 | 比亚迪股份有限公司 | 触摸屏控制器数据预处理排序电路及方法 |
CN102207846A (zh) * | 2010-03-31 | 2011-10-05 | 国际商业机器公司 | 一种实现数据排序的电路和方法 |
CN103019646A (zh) * | 2013-01-09 | 2013-04-03 | 西安电子科技大学 | 并行排序电路及并行排序方法 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017088455A1 (zh) * | 2015-11-25 | 2017-06-01 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
CN106250097A (zh) * | 2016-06-22 | 2016-12-21 | 中国科学院计算技术研究所 | 一种面向大数据的加速排序装置、方法、芯片、处理器 |
CN106775573A (zh) * | 2016-11-23 | 2017-05-31 | 北京电子工程总体研究所 | 一种基于fpga的潜在目标排序方法 |
CN106843803A (zh) * | 2016-12-27 | 2017-06-13 | 南京大学 | 一种基于归并树的全排序加速器及应用 |
CN107526571A (zh) * | 2017-10-30 | 2017-12-29 | 南京火零信息科技有限公司 | 一种在多个数据中比较大小的电路 |
CN107526571B (zh) * | 2017-10-30 | 2018-03-27 | 南京火零信息科技有限公司 | 一种在多个数据中比较大小的电路 |
CN109460210A (zh) * | 2018-10-22 | 2019-03-12 | 重庆中科云丛科技有限公司 | 排序系统及数据处理方法 |
CN111340229B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111260043B (zh) * | 2018-11-30 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111260042B (zh) * | 2018-11-30 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111340229A (zh) * | 2018-11-30 | 2020-06-26 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111260042A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN111260043A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据选择器、数据处理方法、芯片及电子设备 |
CN109766074B (zh) * | 2018-12-05 | 2021-04-13 | 西安电子科技大学 | 一种数据排序电路及排序方法 |
CN109766074A (zh) * | 2018-12-05 | 2019-05-17 | 西安电子科技大学 | 一种数据排序电路及排序方法 |
CN109949378B (zh) * | 2019-03-26 | 2021-06-08 | 中国科学院软件研究所 | 图像灰度值排序方法、装置、电子设备及计算机可读介质 |
CN109949378A (zh) * | 2019-03-26 | 2019-06-28 | 中国科学院软件研究所 | 图像灰度值排序方法、装置、电子设备及计算机可读介质 |
CN112486454A (zh) * | 2019-09-12 | 2021-03-12 | 北京华航无线电测量研究所 | 一种基于fpga的序列多峰值搜索排序装置 |
CN110780840A (zh) * | 2019-10-30 | 2020-02-11 | 湖南国科微电子股份有限公司 | 多路排序器的实现方法及系统 |
CN110780840B (zh) * | 2019-10-30 | 2023-10-31 | 湖南国科微电子股份有限公司 | 多路排序器的实现方法及系统 |
CN110825343A (zh) * | 2019-11-05 | 2020-02-21 | 中电科仪器仪表有限公司 | 一种快速数据筛选方法及系统 |
CN110825343B (zh) * | 2019-11-05 | 2021-12-03 | 中电科思仪科技股份有限公司 | 一种快速数据筛选方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20180321944A1 (en) | 2018-11-08 |
CN105512179B (zh) | 2017-06-09 |
WO2017088455A1 (zh) | 2017-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512179A (zh) | 硬件实现的数据排序装置、方法及数据处理芯片 | |
CN100570594C (zh) | 在并行计算机上执行全收集操作的方法和系统 | |
Yang et al. | A framework for partitioning and execution of data stream applications in mobile cloud computing | |
KR900006792B1 (ko) | 패킷 스위칭 노드용 로드 평형 회로장치 | |
CN100511049C (zh) | 用于对任意大小的正则表达式估值的方法和装置 | |
CN104794100A (zh) | 基于片上网络的异构多核处理系统 | |
Maqsood et al. | Dynamic task mapping for network-on-chip based systems | |
CN102117197B (zh) | 高性能通用信号处理器指令分配装置 | |
EP3198494B1 (en) | Communication for efficient re-partitioning of data | |
CN109154897B (zh) | 分布式处理方法、存储介质、和分布式处理系统 | |
CN103309738A (zh) | 用户作业调度方法及装置 | |
CN101604261B (zh) | 超级计算机的任务调度方法 | |
CN103931148A (zh) | 流量调度设备 | |
CN102934102A (zh) | 多处理器系统、执行控制方法和执行控制程序 | |
CN111142938A (zh) | 一种异构芯片的任务处理方法、任务处理装置及电子设备 | |
CN108763082A (zh) | 测试数据生成方法、装置、计算机设备及存储介质 | |
CN105573843B (zh) | 一种数据处理方法和系统 | |
CN105049372A (zh) | 一种扩展消息中间件吞吐量的方法及系统 | |
CN103701587B (zh) | 一种多接口密码模块并行调度方法 | |
CN108737455B (zh) | 网络业务识别装置及方法 | |
Selvitopi et al. | A recursive hypergraph bipartitioning framework for reducing bandwidth and latency costs simultaneously | |
Morgan et al. | NoC 2: an efficient interfacing approach for heavily-communicating NoC-based systems | |
Chhabra et al. | Qualitative parametric comparison of load balancing algorithms in parallel and distributed computing environment | |
CN115866066A (zh) | 数据发送方法及装置、非易失性存储介质、电子设备 | |
CN106933663B (zh) | 一种面向众核系统的多线程调度方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |