WO2022193259A1 - 处理器、排序方法及电子设备 - Google Patents

处理器、排序方法及电子设备 Download PDF

Info

Publication number
WO2022193259A1
WO2022193259A1 PCT/CN2021/081638 CN2021081638W WO2022193259A1 WO 2022193259 A1 WO2022193259 A1 WO 2022193259A1 CN 2021081638 W CN2021081638 W CN 2021081638W WO 2022193259 A1 WO2022193259 A1 WO 2022193259A1
Authority
WO
WIPO (PCT)
Prior art keywords
sequences
read
sorting
data
sequence
Prior art date
Application number
PCT/CN2021/081638
Other languages
English (en)
French (fr)
Inventor
杨升
刘虎
林强
杜幸芝
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2021/081638 priority Critical patent/WO2022193259A1/zh
Priority to CN202180088003.3A priority patent/CN116670639A/zh
Publication of WO2022193259A1 publication Critical patent/WO2022193259A1/zh

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/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Logic Circuits (AREA)

Abstract

本申请提供一种处理器、排序方法及电子设备,能够减少排序过程中使用的指令数量,以提高排序效率。该处理器包括:指令存储电路、控制电路和排序电路。控制电路,用于从指令存储电路读取第一指令,并向排序电路发送经解码的第一指令。排序电路,用于响应经解码的第一指令,根据存储地址读取M个第一序列,以及若M个第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则输出M个长度为N的有序序列。这样,处理器中的排序电路可以响应经解码的第一指令,对多个序列排序。换句话说,处理器执行1条第一指令即可对多个序列排序,可以避免执行大量重复指令,减少排序指令的数量和执行时间,提高排序效率。

Description

处理器、排序方法及电子设备 技术领域
本申请涉及电子技术领域,尤其涉及一种处理器、排序方法及电子设备。
背景技术
排序是计算机等电子设备内经常进行的一种操作,可以将无序序列调整为有序序列。目前,各种排序算法可以通过电子设备中的处理器执行计算机程序(如排序程序)的方式实现。
然而,上述排序程序通常包括大量重复指令,如运算指令、存取指令、控制指令等,导致处理器需要耗费大量时间,排序效率低下。
发明内容
本申请实施例提供一种处理器、排序方法及电子设备,能够减少排序过程中使用的指令数量,以提高排序效率。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种处理器。该处理器包括:指令存储电路、控制电路和排序电路,指令存储电路与控制电路耦合,控制电路与排序电路耦合。控制电路,用于从指令存储电路读取第一指令,并对第一指令解码。其中,经解码的第一指令包括M个第一序列的存储地址,每个第一序列的长度均为N,M为大于1的整数,N为大于1的整数。控制电路,还用于向排序电路发送经解码的第一指令。排序电路,用于响应经解码的第一指令,执行如下步骤:根据存储地址读取M个第一序列,以及若M个第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则输出M个长度为N的有序序列。
基于第一方面所述的处理器,该处理器中的排序电路可以响应解码后的第一指令,将M个有序序列排列成一个长度为M*N的有序序列,或者将存在无序序列的M个序列排列成M个长度为N的有序序列。换句话说,处理器执行1条第一指令即可对多个序列排序,从而使得处理器可以执行较少指令,即可完成多个序列的排序操作,可以避免执行大量重复指令,以减少需要执行的排序指令的数量和执行时间,从而提高排序效率。
一种可能的设计方案中,第一方面所述的排序电路可以包括:排序控制器、排序器和M个第一缓存器,排序控制器与M个第一缓存器耦合,M个第一缓存器均与排序器耦合。排序控制器,用于根据存储地址读取M个第一序列,并将M个第一序列存储在M个第一缓存器。其中,每个第一缓存器存储一个第一序列。排序器,用于若M个第一序列均为有序序列,则从M个第一缓存器中读出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则从M个第一缓存器中读出M个长度为N的有序序列。由于第一缓存器可以采用内置缓存器实现,如缓冲器(buffer),读写速度比外置存储器(如全局内存等)更快,且可以作为外置存储器与排序器之间的第一级缓存,以避免排序器从外置存储器读取数据,可以减少排序器读取数据的时延, 从而进一步提高排序效率。
可选地(下文简称为方案1),上述的排序器,还用于若M个第一序列均为有序序列,则根据第一读取规则,从M个第一缓存器中读出一个长度为M*N的有序序列。其中,第一读取规则可以为:每次在M个第一缓存器中读出排列第一的数据。换句话说,在从M个第一缓存器中读出数据的过程中,排序器即可将M个有序序列排列成一个有序序列。这样,处理器执行1次第一指令即可对M个有序序列排序,从而可以减少需要执行的排序指令的数量和执行时间,提高排序效率。
或者,可选地(下文简称为方案2),上述的排序器,还用于若M个第一序列中存在无序序列,则根据第二读取规则,从M个第一缓存器中读出M个长度为N的有序序列。其中,第二读取规则可以为:每次在M个第一缓存器中读出一个长度为N的有序序列。换句话说,在从M个第一缓存器中读出数据的过程中,排序器即可将存在无序序列的M个序列排列成M个有序序列。这样,处理器执行1次第一指令即可对存在无序序列的M个序列排序,从而可以减少需要执行的排序指令的数量和执行时间,提高排序效率。
方案1与方案2可以独立实施,也可以结合实施。方案1与方案2结合实施,可以包括:先执行方案2,将M个无序序列排列成M个有序序列。然后执行方案1,将M个有序序列排列成一个有序序列。这样,处理器执行2次第一指令即可将M个序列排列成1个有序序列,从而使得处理器可以执行较少指令,即可完成多个序列的排序操作,可以避免执行大量重复指令,以减少需要执行的排序指令的数量和执行时间,提高排序效率。
可选地,第一方面所述的排序电路还可以包括:第二缓存器,第二缓存器与排序控制器耦合。排序控制器,用于根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器。排序控制器,还用于将M个第一序列从第二缓存器移动到M个第一缓存器。由于第二缓存器可以采用统一缓冲器(unified buffer,UB)、高速缓冲存储器、或静态存储器等存储器实现,读写速度比外置存储器(如全局内存)更快,可以作为外置存储器与排序器之间的第二级缓存,避免第一缓存器从外置存储器读取数据,可以进一步减少第一缓存器接收数据的时延,以及可以进一步减少甚至消除排序器从第一缓存器读取数据的时延,从而进一步提高排序效率。
进一步地,上述的排序控制器可以包括:第一读写控制器和第二读写控制器,第一读写控制器与第二读写控制器耦合,第二缓存器分别与第一读写控制器以及第二读写控制器耦合,M个第一缓存器均与第一读写控制器耦合。第二读写控制器,用于根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器。第一读写控制器,用于将M个第一序列从第二缓存器移动到M个第一缓存器。如此,第一读写控制器、第二读写控制器以及第二缓存器结合起来可以连续接收待排序数据,并连续向M个第一缓存器发送待排序数据,使得排序器可以连续对待排序的数据排序,从而进一步提高排序效率。
再进一步地,上述的第一读写控制器,还用于在移动M个第一序列时,向第二读写控制器发送已移动数据量信息。由于已移动数据量信息相当于第二缓存器的空闲存储空间大小的信息,从而第二读写控制器可以根据该已移动数据量信息,将M个第一 序列中未被移动到第二缓存器的数据尽快被移动到第二缓存器。这样,可以进一步提高排序效率。
进一步地,上述的排序控制器还包括第三读写控制器,第三读写控制器分别与排序器和第二缓存器耦合。第三读写控制器,用于将排序器输出的有序序列移动到第二缓存器。由于第二缓存器可以采用统一缓冲器、高速缓冲存储器、或静态存储器等存储器实现,读写速度比外置存储器更快,可以作为外置存储器与排序器之间的第二级缓存,第三读写控制器向第二缓存器发送已排序数据,可以避免向外置存储器发送已排序数据,从而可以减少排序器输出已排序数据的时延,提高排序效率。
第二方面,提供一种处理器。该处理器包括:指令存储电路、控制电路和排序电路,指令存储电路与控制电路耦合,控制电路与排序电路耦合。其中,排序电路包括:I个排序器,每个排序器包括J个输入端和J个输出端。I个排序器中的第1个排序器的J个输入端为排序电路的J个输入端,I个排序器中的第I个排序器的J个输出端为排序电路的J个输出端,I个排序器中的第i个排序器的J个输出端分别连接第i+1个排序器的J个输入端,i≤I,I为正整数,J为正偶数。控制电路,用于从指令存储电路读取第二指令,并对第二指令解码。经解码的第二指令包括H个数据的存储地址,H≤J。控制电路,还用于向排序电路发送经解码的第二指令。排序电路,用于响应经解码的第二指令,执行如下步骤:根据存储地址读取H个数据,以及,利用排序电路中的第i个排序器对H个数据排序,排序后的H个数据的有序度高于排序前的H个数据的有序度。
基于第二方面所述的处理器,该处理器中的排序电路可以响应经解码的第二指令,将H个数据的有序度提高I次,从而排序电路通过一次或多次对H个数据排序,可将H个数据排列为有序序列。换句话说,处理器执行1条第二指令可对H个数据排序,从而使得处理器可以执行较少指令,即可完成H个数据的排序操作,这样可以避免执行大量重复指令,以减少需要执行的排序指令的数量和执行时间,从而提高排序效率。
一种可能的设计方案中,上述的第i个排序器可以包括K个比较器。其中,K≥J/2,K可以为正整数。K个比较器中的第k个比较器,用于比较H个数据中的两个数据。以图5所示的排序电路(K=4,J=8)为例,每个排序器可以包括4个比较器(A1-A4),每个比较器可以包括两个输入端和两个输出端,比较器的每个输入端均可以与一个寄存器连接,比较器的每个输出端均可以与一个寄存器连接,寄存器可以用于暂存数据。第i个排序器的4个比较器的8个输入端为该排序器的8个输入端,第i个排序器的4个比较器的8个输出端为该排序器的8个输出端。其中,第1个排序器的A1的两个输出端可以分别与第2个比较单元的A1的1个输入端、A2的1个输入端连接,第1个排序器的A2的两个输出端可以分别与第2个比较单元的A2的1个输入端、A3的1个输入端连接,第1个排序器的A3的两个输出端可以分别与第2个比较单元的A3的1个输入端、A4的1个输入端连接,第1个排序器的A4的两个输出端可以分别与第2个比较单元的A4的1个输入端、A1的1个输入端连接。以此类推,其他相邻的两个排序器之间的连接方式,可以参照第1个排序器与第2个排序器之间的连接方式。
在使用图5所示的排序电路对8个数据排序(即H=8)时,假设该排序电路从小 到大的顺序对待排序数据排序。首先,输入第1个排序器的待排序数据为:“8、7、6、5、4、3、2、1”,第1个排序器对该序列排序,排序后的序列变为:“7、8、5、6、3、4、1、2”。然后,第2个排序器对第1个排序器输出的序列排序,排序后的序列变为:“2、5、8、3、6、1、4、7”。以此类推,第7个排序器输出的序列为:“1、2、3、4、5、6、7、8”。基于图5所示的排序电路,待排序数据每经过一个排序器的K个比较器,有序度都会被提高,如此可以提供一种排序器的实现方式,使得排序器能够提高H个数据的有序度。
可选地,K个比较器可以包括J/2个第一比较器和(J/2)-1个第二比较器。J/2个第一比较器的J-2个输出端分别连接(J/2)-1个第二比较器的J-2个输入端。J/2个第一比较器的J个输入端可以为第i个排序器的J个输入端,J/2个第一比较器的另2个输出端和(J/2)-1个第二比较器的J-2个输出端可以为第i个排序器的J个输出端。以图4所示的排序电路(K=7,J=8)为例,每个排序器均包括7个比较器,每个排序器中的七个比较器包括:4个第一比较器(A1-A4)和3个第二比较器(B1-B3),每个比较器均包括两个输入端和两个输出端。其中,以第1个第二比较器中的7个比较器为例,A1-A4的8个输入端为该排序器的8个输入端,A1-A4的6个输出端分别连接B1-B3的6个输入端,A1-A4的另2个输出端和B1-B3的6个输出端为第1个排序器的8个输出端。每个比较器的两个输入端可以分别与一个寄存器连接,每个比较器的两个输出端可以分别与一个寄存器连接,该寄存器可以用于暂存数据。
在使用图4所示的排序电路对8个数据排序(即H=8)时,假设该排序电路按从小到大的顺序对待排序数据排序,首先,输入该排序电路的待排序数据为:“8、7、6、5、4、3、2、1”,第1个排序器对该序列排序,排序后的序列变为:“7、5、8、3、6、1、4、2”。然后,第2个排序器对第1个排序器输出的序列排序,排序后的序列变为:“5、3、7、1、8、2、6、4”。以此类推,第4个排序器输出的序列为:“1、2、3、4、5、6、7、8”。基于图4所示的排序过程可见,待排序数据每经过一个排序器的K个比较器,有序度都会被提高,如此可以提供一种排序器的实现方式,使得排序器能够提高H个数据的有序度。
可选地,I个排序器对H个数据的排序次数大于或等于J/2。例如,再参照上述图4所示的排序过程,输入该排序电路的待排序数据:“8、7、6、5、4、3、2、1”,这个序列的有序度是长度为8的序列中有序度最低的序列,经过图4所示的排序电路排序后,该序列刚好能排列成一个有序序列。换言之,当I个排序器对H个数据的排序次数大于或等于J/2时,该排序电路可以将H个数据排序为一个有序序列。
进一步地,上述的I个排序器中的第1个排序器的J个输入端分别连接J个选择器的输出端。J个选择器的第一输入端可以为第二方面所述的排序电路的J个输入端,I个排序器中的第I个排序器的J个输出端分别连接J个选择器的第二输入端。由于待排序数据从第I个排序器的J个输出端被输出后,可以通过J个选择器的第二输入端再次被输入到第二方面所述的排序电路中,也即是说,待排序数据可以在第二方面所述的排序电路中被循环排序,如此,可以在I小于J/2的条件下,通过控制待排序数据被循环排序的次数,使得I个排序器对H个数据的排序次数大于或等于J/2,从而可以减少硬件规模,节约成本。
再进一步地,上述的I与J可以满足如下关系:I≥J/2。换句话说,排序器的个数大于或等于J/2,如此可以确保I个排序器对H个数据的排序次数大于或等于J/2,从而使得排序电路可以将H个数据排序为一个有序序列。
第三方面,提供一种排序方法。应用于第一方面所述的处理器,该处理器包括:指令存储电路、控制电路和排序电路,指令存储电路与控制电路耦合,控制电路与排序电路耦合。该排序方法包括:控制电路从指令存储电路读取第一指令,并对第一指令解码。其中,经解码的第一指令包括M个第一序列的存储地址,每个第一序列的长度均为N,M为大于1的整数,N为大于1的整数。控制电路向排序电路发送经解码的第一指令。排序电路响应经解码的第一指令,并根据存储地址读取M个第一序列,以及若M个第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则输出M个长度为N的有序序列。
一种可能的设计方案中,上述排序电路可以包括:排序控制器、排序器和M个第一缓存器,排序控制器与M个第一缓存器耦合,M个第一缓存器均与排序器耦合。上述排序电路响应经解码的第一指令,并根据存储地址读取M个第一序列,以及若M个第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则输出M个长度为N的有序序列,可以包括:排序控制器根据存储地址读取M个第一序列,并将M个第一序列存储在M个第一缓存器。其中,每个第一缓存器存储一个第一序列。若M个第一序列均为有序序列,则排序器从M个第一缓存器中读出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则排序器从M个第一缓存器中读出M个长度为N的有序序列。
可选地,上述的若M个第一序列均为有序序列,则排序器从M个第一缓存器中读出一个长度为M*N的有序序列,可以包括:若M个第一序列均为有序序列,则排序器根据第一读取规则,从M个第一缓存器中读出一个长度为M*N的有序序列。其中,第一读取规则可以为:每次在M个第一缓存器中读出排列第一的数据。
或者可选地,上述的若M个第一序列中存在无序序列,则排序器从M个第一缓存器中读出M个长度为N的有序序列,可以包括:若M个第一序列中存在无序序列,则排序器根据第二读取规则,从M个第一缓存器中读出M个长度为N的有序序列。其中,第二读取规则可以为:每次在M个第一缓存器中读出一个长度为N的有序序列。
可选地,上述排序电路还可以包括:第二缓存器,第二缓存器与排序控制器耦合。上述排序控制器根据存储地址读取M个第一序列,并将M个第一序列存储在M个第一缓存器,可以包括:排序控制器根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器。排序控制器将M个第一序列从第二缓存器移动到M个第一缓存器。
进一步地,上述的排序控制器可以包括第一读写控制器和第二读写控制器,第一读写控制器与第二读写控制器耦合,第二缓存器分别与第一读写控制器以及第二读写控制器耦合,M个第一缓存器均与第一读写控制器耦合。上述排序控制器根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器,可以包括:第二读写控制器根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器。上 述排序控制器将M个第一序列从第二缓存器移动到M个第一缓存器,可以包括:第一读写控制器将M个第一序列从第二缓存器移动到M个第一缓存器。
再进一步地,上述第三方面所述的方法,还可以包括:在移动M个第一序列时,第一读写控制器向第二读写控制器发送已移动数据量信息。
进一步地,上述排序控制器还可以包括第三读写控制器,第三读写控制器分别与排序器和第二缓存器耦合。上述第三方面所述的方法,还可以包括:第三读写控制器将排序器输出的有序序列移动到第二缓存器。
此外,第三方面所述的排序方法的技术效果可以参考第一方面所述的处理器的技术效果,此处不再赘述。
第四方面,提供一种排序方法。应用于第二方面所述的处理器,该处理器包括:指令存储电路、控制电路和排序电路,指令存储电路与控制电路耦合,控制电路与排序电路耦合。排序电路包括:I个排序器,每个排序器包括J个输入端和J个输出端,I个排序器中的第1个排序器的J个输入端为排序电路的J个输入端,I个排序器中的第I个排序器的J个输出端为排序电路的J个输出端,I个排序器中的第i个排序器的J个输出端分别连接第i+1个排序器的J个输入端,i≤I,I为正整数,J为正偶数。该排序方法包括:控制电路从指令存储电路读取第二指令,并对第二指令解码。其中,经解码的第二指令包括H个数据的存储地址,H≤J。控制电路向排序电路发送经解码的第二指令。排序电路响应经解码的第二指令,并根据存储地址读取H个数据。排序电路利用排序电路中的第i个排序器对H个数据排序,排序后的H个数据的有序度高于排序前的H个数据的有序度。
一种可能的设计方案中,上述第i个排序器可以包括K个比较器,K≥J/2,K可以为正整数。上述排序电路利用排序电路中的第i个排序器对H个数据排序,可以包括:K个比较器中的第k个比较器比较H个数据中的两个数据。
可选地,上述的K个比较器可以包括J/2个第一比较器和(J/2)-1个第二比较器,J/2个第一比较器的J-2个输出端分别连接(J/2)-1个第二比较器的J-2个输入端,J/2个第一比较器的J个输入端可以为第i个排序器的J个输入端,J/2个第一比较器的另2个输出端和(J/2)-1个第二比较器的J-2个输出端可以为第i个排序器的J个输出端。
可选地,I个排序器对H个数据的排序次数大于或等于J/2。
进一步地,上述的I个排序器中的第1个排序器的J个输入端分别连接J个选择器的输出端,J个选择器的第一输入端可以为排序电路的J个输入端。I个排序器中的第I个排序器的J个输出端分别连接J个选择器的第二输入端。
再进一步地,上述的I与J可以满足如下关系:I≥J/2。
此外,第四方面所述的排序方法的技术效果可以参考第二方面所述的处理器的技术效果,此处不再赘述。
第五方面,提供一种排序方法。应用于处理器,该处理器包括:指令存储电路、控制电路和多个排序电路,指令存储电路与控制电路耦合,控制电路与多个排序电路耦合。该排序方法包括:控制电路从指令存储电路读取第二指令,并对第二指令解码;经解码的第二指令包括待排序数据的存储地址。控制电路向多个排序电路发送经解码 的第二指令。多个排序电路响应经解码的第二指令,并根据存储地址读取待排序数据。多个排序电路对待排序数据排序。其中,待排序数据包括多个序列,排序电路用于读取多个序列中的M个序列,以及若M个序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个序列中存在无序序列,则输出M个长度为N的有序序列。
基于第五方面所述的排序方法,可以使用多个排序电路对待排序数据排序。这样,如果待排序数据的数据量太大(如超过100万个数据)时,该排序方法能够实现多个排序电路同时进行排序,提升排序效率。
其中,上述排序电路可以是第一方面所述的处理器中的排序电路。
一种可能的设计方案中,上述的多个排序电路对待排序数据排序,可以包括:多个排序电路对待排序数据迭代排序,直至将待排序数据排列为1个有序序列。在每次迭代过程中,多个排序电路用于将上一次迭代输出的N个有序序列排列为
Figure PCTCN2021081638-appb-000001
个有序序列,M为大于1的整数。
可选地,上述的多个排序电路对待排序数据迭代排序,直至将待排序数据排列为1个有序序列,可以包括:每个排序电路将待排序数据中的部分数据排列为1个有序序列。基于多个排序电路中的
Figure PCTCN2021081638-appb-000002
个排序电路,将E个有序序列排列为
Figure PCTCN2021081638-appb-000003
个有序序列。若
Figure PCTCN2021081638-appb-000004
则将
Figure PCTCN2021081638-appb-000005
确定为E,并返回执行基于多个排序电路中的
Figure PCTCN2021081638-appb-000006
个排序电路,将E个有序序列排列为
Figure PCTCN2021081638-appb-000007
个有序序列的步骤;否则,输出待排序数据对应的有序序列。这样,在对待排序数据的排序过程中,可以逐渐减少参与排序的排序电路的数量,减少占用的处理资源。
第六方面,提供一种电子设备。该电子设备包括包括第一方面中任意一种可能的实现方式所述的处理器,和/或,第二方面中任意一种可能的实现方式所述的处理器。
此外,第六方面所述的处理器的技术效果可以参考第一方面、第二方面中任意一种实现方式所述的处理器的技术效果,此处不再赘述。
第七方面,提供一种计算机可读存储介质,包括:计算机程序或指令;当该计算机程序或指令在计算机上运行时,使得该计算机执行第三方面-第五方面中任意一种可能的实现方式所述的排序方法。
此外,第七方面所述的计算机可读存储介质的技术效果可以参考第三方面-第五方面中任意一种实现方式所述的排序方法的技术效果,此处不再赘述。
第八方面,提供一种计算机程序产品,包括计算机程序或指令,当该计算机程序或指令在计算机上运行时,使得该计算机执行第三方面-第五方面中任意一种可能的实现方式所述的排序方法。
此外,第八方面所述的计算机程序产品的技术效果可以参考第三方面-第五方面中任意一种实现方式所述的排序方法的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种处理器的结构示意图;
图2为本申请实施例提供的一种排序电路的结构示意图;
图3为本申请实施例提供的一个第一缓存器收发数据的示意图;
图4为使用图2所示排序电路对M个序列排序的示意图;
图5为本申请实施例提供的另一种处理器的结构示意图;
图6为本申请实施例提供的另一种排序电路的结构示意图一;
图7为本申请实施例提供的另一种排序电路的结构示意图二;
图8为本申请实施例提供的另一种排序电路的结构示意图三;
图9为本申请实施例提供的另一种排序电路的结构示意图四;
图10为使用图6所示排序电路对H个数据排序的示意图;
图11为本申请实施例提供的电子设备的结构示意图;
图12为本申请实施例提供的排序方法的流程示意图一;
图13为本申请实施例提供的排序方法的流程示意图二;
图14为本申请实施例提供的排序方法的流程示意图三;
图15为本申请实施例提供的排序方法的流程示意图四;
附图标记:100-处理器;110-指令存储电路;120-控制电路;130-排序电路;210-排序器;220-第一缓存器;230-排序控制器;231-第一读写控制器;232-第二读写控制器;233-第三读写控制器;240-第二缓存器;250-输出缓存器;500-处理器;510-指令存储电路;520-控制电路;530-排序电路;531-排序器。
具体实施方式
首先,本申请实施例对可能涉及的技术术语作简单介绍。
序列:是指被排成一列的多个数据。一个序列的长度等于该序列包含的数据个数。例如,假设一个序列为:“7、3、6、5、10、15”,那么这个序列的长度为6。其中,序列包括有序序列和无序序列。
有序序列:是指一个序列中的数据是按排序规则排列的。假设数据的排序规则为从小到大排列,那么序列:“3、5、6、7、10、15”,可以称为一个有序序列。其中,排序规则可以包括:从小到大排列或从大到小排列。
无序序列:是指一个序列中的数据不按排序规则排列。假设数据的排序规则为从小到大排列,那么序列:“7、3、6、5、10、15”,可以称为一个无序序列。
序列的有序度:是指序列的有序程度。一个序列的有序度可以由该序列中的逆序对(count inversions)数表示。其中,一个序列中的逆序对数与该序列的有序程度负相关。
TOPK排序:是指寻找一个序列中最大的K个数据,或者寻找一个序列中最小的K个数据。
示例性地,假设数据的排序规则为从小到大,那么对于序列:“7、3、6、5、10、15”,该序列中的逆序对数为4个,分别为:(7,3)、(7,6)、(7,5)、(6,5)。对于序列:“3、7、6、5、10、15”,该序列中的逆序对数为3个,分别为:(7,6)、(7,5)、(6,5)。显然,前者的有序程度低于后者的有序程度。
微架构:是实现指令集的处理器的内部设计。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
以下,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。
需要说明的是,本申请中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请中,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,“连接”可以指物理上的直接连接,也可以指通过中间媒介实现电学上的连接,例如通过电阻、电感、电容,或其他电子器件实现的连接。
本申请实施例提供一种处理器100。图1为本申请实施例提供的一种处理器100的结构示意图。请参照图1,该处理器100包括:指令存储电路110、控制电路120和排序电路130,指令存储电路110与控制电路120耦合,控制电路120与排序电路130耦合。
上述处理器100可以是中央处理单元(central processing unit,CPU),该处理器100还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,例如,向量处理器(vector processor)、协处理器(coprocessor)、ARM(advanced RISC machines)处理器等,本申请实施例对此不作限定。
其中,指令存储电路110可以存储多条指令。指令存储电路110可以采用指令缓存或指令寄存器实现,可以包括于处理器100中的缓存子系统(memory subsystem)中。控制电路120可以对指令进行预处理,包括:取指、解码等操作。控制电路120可以为处理器100中的控制单元,该控制单元也可以称为前端(front end)。排序电路130可以采用微架构实现,排序电路130可以包括于处理器100的执行单元(execution engine)中,该执行单元也可以称为运算单元。
本申请实施例中,控制电路120,用于从指令存储电路110读取第一指令,并对第一指令解码。其中,经解码的第一指令包括M个第一序列的存储地址,每个第一序列的长度均为N,M为大于1的整数,N为大于1的整数。控制电路120,还用于向排序电路130发送经解码的第一指令。排序电路130,用于响应经解码的第一指令,执行如下步骤:根据存储地址读取M个第一序列,以及若M个第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个第一序列中存在无序序列,则输出M个长度为N的有序序列。
一种可能的设计方案中,请参照图2,图2为本申请实施例提供的一种排序电路130的结构示意图,该排序电路130可以包括:排序器210、排序控制器230和M个第一缓存器220(图2中以M=4为例)。其中,排序控制器230与M个第一缓存器220耦合,M个第一缓存器220均与排序器210耦合。
第一缓存器220可以采用寄存器或寄存器相关的电路组件实现,可以用于存储序列。具体地,第一缓存器220可以采用内置缓存器(如缓冲器)实现,例如,第一缓存器220可以是输入缓冲器(input buffer,IB)。排序器210可以采用比较器或比较器相关电路组件实现,可以用于对多个数据排序,并输出有序序列。
排序器210、排序控制器230和M个第一缓存器220结合起来可以实现数据排序功能,下面介绍具体实现过程。
排序控制器230,用于根据存储地址读取M个第一序列,并向每个第一缓存器220各发送一个第一序列。其中,排序控制器230可以接收来自其他单元、装置或设备的M个第一序列。示例性地,假设M个第一序列存储在全局内存(global memory,GM)中,那么排序控制器230可以响应经解码的第一指令,根据存储地址并通过总线向全局内存发送读指令,该读指令用于指示全局内存向排序控制器230发送这M个第一序列。然后,排序控制器230可以接收来自全局内存的M个第一序列,并向每个第一缓存器220各发送一个第一序列。当然,排序控制器230也可以接收来自全局内存的M个第一序列,而不用向全局内存发送读指令。
每个第一缓存器220均用于接收一个第一序列,从而M个第一缓存器220可以接收并存储M个第一序列。这M个第一序列也可以称为待排序数据。
其中,这M个第一序列可以均为有序序列,也可以存在无序序列。若M个第一序列可以均为有序序列,则排序器210可以通过下面的方式1,将M个有序序列排列成一个有序序列。若M个第一序列存在无序序列,则排序器210可以通过下面的方式2,将存在无序序列的M个序列排列成M个有序序列。
方式1,排序器210,用于从M个第一缓存器220中读出一个长度为M*N的有序序列。具体地,排序器210,用于若M个第一序列均为有序序列,则根据第一读取规则从M个第一缓存器220中读出一个长度为M*N的有序序列,也即是说,上述排序电路130可以实现将M个有序序列排列成一个有序序列的功能。
其中,第一读取规则可以为:每次在M个第一缓存器220中读出排列第一的数据,也即是说,每次在M个有序序列中读出一个排列第一的数据,例如,假设有两个有序序列,分别为:“3、5、6、9”、“7、13、25、26”,且有序序列的排序规则为从小到大排列,那么这两个有序序列中排列第一的数据为3。可选地,当第一缓存器220采用输入缓冲器实现时,排序器210每次可以在M个第一缓存器220的输出端读出一个排列第一的数据。
示例性地,假设有序序列的排序规则为从小到大排列,N=4,M=4,4个第一缓存器220分别为:IB0、IB1、IB2、IB3,表1为这4个第一缓存器220分别接收的第一序列的情况表。其中,IB0接收的第一序列为:“3、5、6、9”,IB1接收的第一序列为:“7、13、25、26”,IB2接收的第一序列为:“2、8、9、15”,IB3接收的第一序列为:“33、36、50、72”。
表1
Figure PCTCN2021081638-appb-000008
请参照表1,排序器210可以首先在这4个第一序列中,读出排列第一的数据, 即IB2中的数据2。其中,读出这个数据后,IB2中不再存储数据2,从而IB2中的第一序列的首位数据变为13。然后,排序器210可以在这4个第一序列中,再次读出排列第一的数据,即IB0中的数据3。以此类推,排序器210可以根据第一读取规则,多次读出这4个第一缓存器220中的数据,读出的数据可以按读出顺序排列为一个长度为4*4的有序序列,包括:“2、3、5、6、7、8、9、9、13、15、25、26、33、36、50、72”。
应理解,基于上述方式1可知,处理器执行1次第一指令即可对M个有序序列排序,从而可以减少需要执行的排序指令的数量和执行时间,提高排序效率。
其中,上述排序电路130将M个有序序列排列为一个有序序列时,还可以进行TOPK排序,例如,请再参照表1,假设寻找一个序列中最小的3个数据(即进行TOP3排序),那么排序器210在多次读出这4个第一缓存器220中的数据的过程中,读到第三个数据(5),即可找到一个序列中最小的3个数据(2、3、5),这时排序电路130可以停止排序,放弃对第3个之后的数据排序,以进一步减少计算量,节省排序时间,从而提高排序效率。
另外,如果上述排序电路130需要将超过M个的有序序列排列为一个有序序列,其可以通过多轮排序实现。例如,假设M=4,且需要将10个有序序列排列为一个有序序列,那么首先可以将这10个有序序列分为3组,第一组包括4个有序序列,第二组包括4个有序序列,第三组包括2个有序序列。然后该排序电路130可以分别将每组中的有序序列排列为一个有序序列,输出3个有序序列。最后该排序电路130将这3个有序序列排列为一个有序序列,从而实现将超过M个的有序序列排列为一个有序序列的目的。
方式2,排序器210,用于若M个第一序列中存在无序序列,则从M个第一缓存器220中读出M个长度为N的有序序列。具体地,排序器210,用于若M个第一序列中存在无序序列,则根据第二读取规则在M个第一缓存器220中读出M个长度为N的有序序列,也即是说,上述排序电路130可以实现将存在无序序列的M个序列排列成M个有序序列的功能。
其中,第二读取规则可以为:每次在M个第一缓存器220中读出一个长度为N的有序序列,具体地,排序器210每次可以在每个第一缓存器220中读出x个数据,然后将这M*x个数据排列为一个有序序列,x为正整数。例如,假设x=1,M=4,4个第一缓存器220存储的第一序列分别为:“10、8、20、3”、“1、25、33、7”、“6、4、16、23”、“11、15、16、18”,那么排序器210第一次可以分别在这4个第一缓存器220中读出1个数据,即读出“10、1、6、11”,然后将这4个数据排列为一个有序序列:“1、6、10、11”。可选地,当第一缓存器220采用输入缓冲器实现时,排序器210每次可以在每个第一缓存器220的输出端读出x个数据。可以理解,由于x可以取大于或等于1的整数,当x取值变大时,排序器210一次可以从M个第一缓存器220中读出更多的数据排序,从而能够提高排序效率。
示例性地,假设有序序列的排序规则为从小到大排列,N=4,M=4,4个第一缓存器220分别为:IB0、IB1、IB2、IB3,表2为这4个第一缓存器220分别接收的第一序列的情况表。其中,IB0接收的第一序列为:“9、6、20、3”,IB1接收的第一序列 为:“6、25、33、7”,IB2接收的第一序列为:“1、9、8、2”,IB3接收的第一序列为:“2、50、36、33”。
表2
Figure PCTCN2021081638-appb-000009
请参照表2,排序器210可以首先读出这4个第一序列的首位数据,即9、6、1、2,并对这4个第一序列的首位排序,即对9、6、1、2排序,得到一个有序序列:“1、2、6、9”。其中,读出这4个第一序列的首位数据后,这4个第一序列的首位数据变为6、25、9、50。然后,排序器210可以再读出这4个第一序列的首位数据(即6、25、9、50),并按排序规则对这4个第一序列的首位数据排序,得到一个有序序列:“6、9、25、50”。以此类推,排序器210可以根据第二读取规则,多次读出这4个第一缓存器220中的数据,读出的数据为4个长度为4的有序序列,包括:“1、2、6、9”、“6、9、25、50”、“8、20、33、36”和“2、3、7、33”。
应理解,基于上述方式2可知,处理器执行1次第一指令即可对存在无序序列的M个序列排序,从而可以减少需要执行的排序指令的数量和执行时间,提高排序效率。
上述方式1与方式2可以独立实施,也可以结合实施。方式1与方式2结合实施时,可以包括:先执行方式2,将M个无序序列排列成M个有序序列。然后执行方式1,将M个有序序列排列成一个有序序列。换句话说,该排序电路130可以实现将M个序列排列成一个有序序列,即对大量的无序数据排序。例如,假设有10000个无序数据需要排序,则可以将这10000个数据分为4个长度为2500的序列,然后输入至图2所示的排序电路130,由该排序电路130对这4个长度为2500的序列排序,得到4个长度为2500的有序序列,然后再将这4个长度为2500的有序序列输入至图2所示的排序电路130,得到一个长度为10000的有序序列。这样,处理器执行2次第一指令即可将M个序列排列成1个有序序列,从而使得处理器可以执行较少指令,即可完成多个序列的排序操作,可以避免执行大量重复指令,以减少需要执行的排序指令的数量和执行时间,提高排序效率。
由于图2所示的排序电路130中的第一缓存器220可以采用内置缓存器实现,读写速度比外置存储器(如全局内存等)更快,且可以作为外置存储器与排序器210之间的第一级缓存,以避免排序器210从外置存储器读取数据,从而可以减少排序器210读取数据的时延,进一步提高排序效率。另外,由于排序控制器230可以控制待排序数据的输入,从而能够控制排序器210的数据排序过程,实现控制数据排序的功能。例如,排序控制器230可以控制接收数据的速率,以及控制向M个第一缓存器220发送数据的速率,从而控制排序器210输出有序序列的速率,以控制排序电路的排序速度。
当第一缓存器220采用输入缓冲器实现时,第一缓存器220可以队列的形式存储序列。其中,排序器210在从第一缓存器220读出数据时,可以从队列的队头(即第一缓存器220的输出端)读出数据。第一缓存器220在接收来自排序控制器230的第一序列时,可以在队列的队尾(即第一缓存器220的输入端)写入数据。
示例性地,图3为本申请实施例提供的第一缓存器220收发数据的示意图,如图3所示,假设一个第一缓存器220最多能存储10个数据,该第一缓存器220接收的第一序列的长度为20,且该第一缓存器220已经接收了第一序列中的10个数据,包括:4、6、7、14、16、22、23、51、71、89,那么当排序器210从该第一缓存器220中读出队头的数据4时,第一缓存器220中剩余数据的次序会依次向队头平移1位,也即是说,剩下的数据6成为新的队头数据,剩下的数据89为队尾数据。由于第一序列中还有10个数据未被第一缓存器220接收,第一缓存器220还可以接收一个第一序列中的数据,假设第一缓存器220接收到的数据为90,那么,90成为新的队尾数据。以此类推,随着排序器210从第一缓存器220中读出数据,第一缓存器220能依次接收第一序列中的所有数据。这样,即使第一缓存器220的长度小于第一序列的长度,第一缓存器220也能实现接收任意长度的序列的功能。
可选地,为了进一步减少第一缓存器220接收数据的时延,图2所示的排序电路130还可以包括第二缓存器240(图2中以虚线框示出),第二缓存器240与排序控制器230耦合。其中,第二缓存器240可以采用统一缓冲器(unified buffer,UB)、高速缓冲存储器(cache)、或静态存储器(static random access memory,SRAM)等存储器实现。
第二缓存器240可以实现暂存数据的功能,下面介绍具体实现过程。
排序控制器230,可以用于根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器240。排序控制器230,还可以用于将M个第一序列从第二缓存器240移动到M个第一缓存器220。
示例性地,假设M个第一序列存储在全局内存中,那么排序控制器230可以根据存储地址并通过总线向全局内存发送第一读取指令,该第一读取指令用于指示全局内存向第二缓存器240发送M个第一序列。然后,第二缓存器240可以接收来自全局内存的M个第一序列,并向排序控制器230发送M个第一序列。之后,排序控制器230接收来自第二缓存器240的M个第一序列,并向每个第一缓存器220各发送一个第一序列,从而实现将M个第一序列从第二缓存器240移动到M个第一缓存器220,并由M个第一缓存器220和排序器210进行数据排序。在这个过程中,第二缓存器240可以实现暂存数据的功能。
此外,由于第二缓存器240可以采用统一缓冲器、高速缓冲存储器、或静态存储器等存储器实现,读写速度比外置存储器(如全局内存)更快,可以作为外置存储器与排序器210之间的第二级缓存,避免第一缓存器220从外置存储器读取数据,可以进一步减少第一缓存器220接收数据的时延,以及可以进一步减少甚至消除排序器210从第一缓存器220读取数据的时延,从而进一步提高排序效率。
进一步地,上述的排序控制器230可以包括第一读写控制器231(图2中以虚线框示出)和第二读写控制器232(图2中以虚线框示出),第一读写控制器231与第 二读写控制器232耦合,第二缓存器240分别与第一读写控制器231以及第二读写控制器232耦合,M个第一缓存器220均与第一读写控制器231耦合。
第一读写控制器231、第二读写控制器232以及第二缓存器240结合起来,可以实现连续转发待排序数据的功能,下面介绍具体实现过程。
第二读写控制器232,用于根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器240。第一读写控制器231,用于将M个第一序列从第二缓存器240移动到M个第一缓存器220。
具体地,第二读写控制器232,用于发送第一读取指令,以读取M个第一序列,并将M个第一序列存储在第二缓存器240。其中,第一读取指令可以参照上述关于第二缓存器240实现暂存数据的功能中的说明,在此不再赘述。
第二读写控制器232,还用于接收第一信息,并向第一读写控制器231发送第一信息。
其中,第一信息可以为:写入第二缓存器240的M个第一序列的信息。换句话说,第一信息可以指示M个第一序列中已写入第二缓存器240的数据。例如,M个第一序列共有10000个数据,第二缓存器240中已经存储这10000个数据中的2000个数据,那么,第一信息可以指示这2000个数据的存储地址。
一种可能的实施方式中,第二读写控制器232还用于接收第一信息,可以包括:第二读写控制器232接收来自其他存储器(如全局内存)的第一信息,该第一信息指示M个第一序列中已写入第二缓存器240的数据。
另一种可能的实施方式中,第二读写控制器232还用于接收第一信息,可以包括:第二读写控制器232和第二缓存器240同时接收(如图2所示,通过相同的数据线接收)M个第一序列,第二读写控制器232基于接收的M个第一序列,确定第二缓存器240中已经存储的数据,即确定第一信息。当然,第二读写控制器232可以不存储数据,而仅记录这些数据在第二缓存器240中的存储地址。
第一读写控制器231,用于基于第一信息,向第二缓存器240发送第二读取指令。其中,第二读取指令用于请求M个第一序列。
可选地,若M个第一缓存器220中的第m个第一缓存器220存在未使用存储空间,则第一读写控制器231基于第一信息,向第二缓存器240发送第二读取指令。
第二缓存器240,还用于接收M个第一序列。
第二缓存器240,还用于接收来自第一读写控制器231的第二读取指令,以及向第一读写控制器231发送M个第一序列。
第一读写控制器231,还用于接收来自第二缓存器240的M个第一序列,并向每个第一缓存器220各发送一个第一序列,从而实现将M个第一序列从第二缓存器240移动到M个第一缓存器220。
在实现上述连续转发待排序数据的功能时,包括以下两种情况:
情况1,第二缓存器240的存储空间大于或等于M个第一序列占用的存储空间。
情况2,第二缓存器240的存储空间小于M个第一序列占用的存储空间。
下面,分别针对上述两种情况说明实现上述连续转发待排序数据的功能的过程。
对于情况1,由于第二缓存器240的存储空间大于或等于M个第一序列占用的存 储空间,也即是说,第二缓存器240可以一次性接收完所有的待排序数据。在此情况下,第二读写控制器232发送第一读取指令后,第二缓存器240可以一次性接收完M个第一序列。然后,第一读写控制器231基于第一信息向第二缓存器240发送第二读取指令,可以读取第二缓存器240中的M个第一序列,并向每个第一缓存器220各发送一个第一序列。当然,第一读写控制器231可以不存储接收的数据,而是将接收的数据转发给M个第一缓存器220。
对于情况2,第二缓存器240的存储空间小于M个第一序列占用的存储空间,也即是说,第二缓存器240不能一次性接收完所有的待排序数据。在此情况下,第二缓存器240可以通过多次写入和多次读出过程接收完所有的待排序数据。
对于每次写入过程,第二读写控制器232可以发送第一读取指令,该第一读取指令用于请求M个第一序列中的部分数据,且这部分数据占用的存储空间大小小于或等于第二缓存器240的存储空间大小。在接收M个第一序列时,第二缓存器240可以接收M个第一序列中的部分数据,从而完成一次写入过程。
对于每次读出过程,第二读写控制器232可以接收第一信息,并向第一读写控制器231发送第一信息。第一读写控制器231可以基于该第一信息,读出M个第一序列中已写入第二缓存器240的数据,并向每个第一缓存器220各发送一个第一序列的部分数据,从而完成一次读出过程。
其中,为了确保每个第一缓存器220均能接收到第一序列,避免出现第一缓存器220中没有第一序列而无法完成数据排序的情况,在上述情况2的每次读出过程中,第一读取指令可以请求M个第一序列中的部分数据,且这部分数据中各个第一序列的数据占比相同。例如,假设M=4,每个第一序列的长度为2500,第一读取指令请求M个第一序列中的100个数据,那么这100个数据中,每个第一序列可以各占25个数据。
应理解,在第二缓存器240的多次写入和多次读出过程中,第二缓存器240可以连续接收一部分的待排序数据,第一读写控制器231可以连续读出第二缓存器240中已经存储的一部分的待排序数据,并连续向每个第一缓存器220各发送一个第一序列的部分数据。如此,第一读写控制器231、第二读写控制器232以及第二缓存器240结合起来可以连续接收待排序数据,并连续向M个第一缓存器220发送待排序数据,使得排序器210可以连续对待排序的数据排序,从而可以实现连续转发待排序数据的功能,进一步提高排序效率。
需要说明的是,对于情况2,在多次写入读出过程中,第一读取指令可以请求完整的M个第一序列。在多次写入读出过程中,第二读取指令可以请求完整的M个第一序列,使得第二缓存器240向第一读写控制器231发送完整的M个第一序列。
另外,由于第一读写控制器231可以读出第二缓存器240中的数据,从而第一读写控制器231可以称为本地读控制器(local read control,LRC)。由于第二读写控制器232可以读出其他存储器中的待排序的数据,从而第二读写控制器232可以称为自动读控制器(auto read control,ARC)。
再进一步地,上述的第一读写控制器231,还用于在移动M个第一序列时,向第二读写控制器232发送已移动数据量信息。
已移动数据量信息可以是:第一读写控制器231已经从第二缓存器240中读出的M个第一序列的数据量。由于已移动数据量信息相当于第二缓存器240的空闲存储空间大小的信息,从而第二读写控制器232可以根据该已移动数据量信息,发送第一读取指令,以使M个第一序列中未被写入第二缓存器240的数据尽快被写入到第二缓存器240。这样,可以进一步提高排序效率。
示例性地,在上述情况2的每次读出过程中,第一读写控制器231接收M个第一序列时,还可以向第二读写控制器232发送已移动数据量信息。在上述情况2的每次写入过程中,第二读写控制器232还可以根据该已移动数据量信息,发送第一读取指令。例如,当已移动数据量信息表示第二缓存器240已被读出100个数据时,第二读写控制器232发送第一读取指令,以请求M个第一序列中的剩余数据移动到第二缓存器240。
基于上述第一读写控制器231、第二读写控制器232以及第二缓存器240的说明,可以理解,第一读写控制器231、第二读写控制器232以及第二缓存器240结合起来,可以实现:当第二缓存器240中有空闲的存储空间时,将M个第一序列的部分或全部数据写入到第二缓存器240中;以及当第二缓存器240中存储有M个第一序列的部分或全部数据时,将这些数据读出并输入到M个第一缓存器220,从而使得排序器210可以连续对待排序数据排序。
进一步地,上述的排序控制器230还可以包括第三读写控制器233(图2中以虚线框示出),第三读写控制器233可以分别与排序器210和第二缓存器240耦合。可选地,第三读写控制器233与排序器210耦合的方式可以包括:排序器210与输出缓存器250(图2中以虚线框示出)耦合,输出缓存器250与第三读写控制器233耦合。
其中,输出缓存器250可以采用寄存器或寄存器相关电路组件实现,可以用于存储序列。例如,输出缓存器250可以采用内置缓存器实现,如缓冲器,具体地,输出缓存器250可以是输出缓冲器(output buffer,OB)。
第三读写控制器233可以实现写出有序数据的功能,下面介绍具体实现过程。
第三读写控制器233,用于接收排序器210输出的有序序列,并向第二缓存器240发送排序器210输出的有序序列。换言之,第三读写控制器233用于将排序器210输出的有序序列移动到第二缓存器240。
例如,排序器210可以向输出缓存器250写入有序序列,然后,第三读写控制器233从该输出缓存器250读出有序序列,并向第二缓存器240发送该有序序列。这样,第三读写控制器233可以实现写出有序数据的功能。并且,由于第二缓存器240可以采用统一缓冲器、高速缓冲存储器、或静态存储器等存储器实现,读写速度比外置存储器更快,可以作为外置存储器与排序器210之间的第二级缓存,第三读写控制器233可以向第二缓存器240发送已排序数据,可以避免向外置存储器发送已排序数据,从而可以减少第一缓存器220输出已排序数据的时延,提高排序效率。
可选地,若第二缓存器240中已存储的排序器210输出的有序序列的长度大于输出阈值,则第三读写控制器233用于读出第二缓存器240中已存储的排序器210输出的有序序列,并根据总线的状态(如是否被占用)向外置存储器(如全局内存)发送该有序序列。
另外,第三读写控制器233,接收排序器210输出的有序序列,还可以用于向外置存储器(如全局内存)发送排序器210输出的有序序列。
由于第三读写控制器233可以将排序好的数据写到第二缓存器240或其他存储器中,从而第三读写控制器233可以称为自动写控制器(auto write control,AWC)。
需要说明的是,上述排序控制器230以及排序控制器230中的第一读写控制器231、第二读写控制器232、第三读写控制器233均可以采用如下一项或多项实现:一个或多个耦合在一起的门电路、一个或者多个现场可编程门阵列(field programmable gate array,FPGA)、一个或多个中央处理器(central processing unit,CPU)、或特定集成电路(application specific integrated circuit,ASIC)等。
由于排序器210可以将多个序列归并为一个有序序列,从而上述的排序电路130也可以称为归并排序(mergesort)电路。
基于上述图1所示的处理器100,该处理器100中的排序电路130可以响应解码后的第一指令,将M个有序序列排列成一个长度为M*N的有序序列,或者将存在无序序列的M个序列排列成M个长度为N的有序序列。换句话说,处理器100执行1条第一指令即可对多个序列排序,从而使得处理器100可以执行较少指令,即可完成多个序列的排序操作,可以避免执行大量重复指令,以减少需要执行的排序指令的数量和执行时间,从而提高排序效率。其中,上述图1所示的处理器100可以包括多个排序电路130,以实现多核并行排序,该多核并行排序过程可以参照下述图15。
另外,第一序列包括的每个数据的数据结构可以是:{数值(score),索引(index)}。其中,“数值”可以采用如下任一项实现:16位浮点数(floating-point number,FP)、32位浮点数、8位整型数(integer,INT)、16位整型数或者32位整型数等。“索引”与“数值”对应,“索引”包括“数值”的各种信息的地址,可以采用的指针实现,也即是说,通过“索引”可以获取对应的“数值”的各种信息。排序器210在对这样的数据排序时,可以基于各个数据的“数值”可以比较数据的大小,从而实现排序功能。这样,可以使得处理器100处理位数更宽的数据,并使得排序过程中没有冗余数据,从而提高总线利用率和排序效率。
示例性地,图4为本申请实施例提供的排序电路130对M个序列排序的示意图,参照图4,M个第一序列包括:序列0、序列1、…、序列M-1,每个序列中都包括N个数据,每个数据的数据结构是:{数值,索引},上述排序电路130(mergesort)可以对这M个序列排序,输出一个有序序列。
上述图1-图4所示的实施例说明了本申请实施例提供的一种处理器100,下面结合图5-图9说明本申请实施例提供的另一种处理器500。
请参照图5,图5为本申请实施例提供的另一种处理器500。该处理器500包括:指令存储电路510、控制电路520和排序电路530,指令存储电路510与控制电路520耦合,控制电路520与排序电路530耦合。
上述处理器500可以是中央处理单元(central processing unit,CPU),该处理器100还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器 件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,例如,向量处理器(vector processor)、协处理器(coprocessor)、ARM(advanced RISC machines)处理器等,本申请实施例对此不作限定。
其中,指令存储电路510可以存储多条指令。指令存储电路510可以采用指令缓存或指令寄存器实现,可以包括于处理器500中的缓存子系统(memory subsystem)中。控制电路520可以对指令进行预处理,包括:取指、解码等操作。控制电路520可以为处理器500中的控制单元,控制单元也可以称为前端(front end)。排序电路530可以采用微架构实现,排序电路530可以包括于处理器500的执行单元(execution engine)中,执行单元也可以称为运算单元。
本申请实施例中,排序电路530可以包括:I个排序器531,每个排序器531包括J个输入端和J个输出端,其中,I为正整数,J为正偶数。
其中,I个排序器531中的第1个排序器531的J个输入端为该排序电路530的J个输入端。即,第1个排序器531的J个输入端可以用于接收待排序数据。
I个排序器531中的第I个排序器531的J个输出端为装置的J个输出端。即,第1个排序器531的J个输入端可以用于输出已排序数据。
I个排序器531中的第i个排序器531的J个输出端分别连接第i+1个排序器531的J个输入端,也即是说,I个排序器531依次连接。其中,i≤I。当然,由于不同排序器531的结构相同,在实际实现时,为了节省物理资源,排序器可以复用,例如,排序电路530所包括的I个排序器531实际复用一个实体的排序器531。
控制电路520,用于从指令存储电路510读取第二指令,并对第二指令解码。经解码的第二指令包括H个数据的存储地址,H≤J。控制电路520,还用于向排序电路530发送经解码的第二指令。排序电路530,用于响应经解码的第二指令,执行如下步骤:根据存储地址读取H个数据,以及,利用排序电路530中的第i个排序器531对H个数据排序,排序后的H个数据的有序度高于排序前的H个数据的有序度。
下面结合图6对上述排序电路530进行说明,图6为本申请实施例提供的一种排序电路530的结构示意图一,其中,图6中示出的是I=4,J=8的排序电路530的结构。
请参照图6,该排序电路530包括4个排序器531,每个排序器531包括8个输入端和8个输出端,每个排序器531的8个输入端分别为:I1、I2、I3、…、I8,每个排序器531的8个输出端分别为:O1、O2、O3、…、O8。第1个排序器531的8个输入端为该排序电路530的8个输入端,第4个排序器531的8个输出端为该排序电路530的8个输出端。
表3为待排序数据输入图6所示排序电路530的情况表。参照表3,若待排序数据为:“15、8、9、6、7、20、13、1”(即H=8),那么该序列输入该排序电路530的8个输入端时,可以按序列的排列顺序依次输入第1个排序器531的I1、I2、I3、…、I8,即15输入I1、8输入I2、…、1输入I8,也即是说,待排序数据按J个输入端的排列顺序输入该排序电路530。
表3
Figure PCTCN2021081638-appb-000010
Figure PCTCN2021081638-appb-000011
表4为已排序数据由图6所示排序电路530输出的情况表。参照表4,若已排序数据为:“1、6、7、8、9、13、15、20”,那么该序列由该排序电路530的8个输出端输出时,可以按序列的排列顺序依次由第4个排序器531的O1、O2、O3、…、O8输出,即1由O1输出、6由O2输出、…、20由O8输出,也即是说,已排序数据按J个输出端的排列顺序从该排序电路530输出。
表4
Figure PCTCN2021081638-appb-000012
在使用上述的排序电路530对数据排序时,第i个排序器531,可以用于接收H个数据。第i个排序器531,还可以用于输出排序后的H个数据,其中,排序后的H个数据的有序度高于排序前的H个数据的有序度。
应理解,每个排序器531均能对接收的H个数据排序,并在排序过程中提高这H个数据的有序度。因此,H个数据从输入第1个排序器531开始,每经过一个排序器531,这H个数据的有序度被提高一次,从而经过1个或多个排序器531,H个数据可以最终被排序为有序序列。这样,上述排序电路530能够实现对数据排序的功能。
一些可能的实施例中,上述的第i个排序器531可以包括K个比较器。其中,K≥J/2,K为正整数。K个比较器中的第k个比较器,用于接收H个数据中的两个数据。第k个比较器,还用于比较H个数据中的两个数据,并输出比较后的两个数据。
下面结合图6、图7对上述K个比较器进行说明。
参照图6,以第1个排序器531为例,第1个排序器531中包括7个比较器(图6中以虚线框示出),每个比较器均可以接收两个数据并比较两个数据的大小,以及输出比较后的两个数据。
其中,比较器在输出比较后的两个数据时,有如下两种输出方式:
方式3,按从小到大的顺序输出比较后的两个数据。例如,假设第1个排序器531的比较器A1,从I1接收到的数据为8,从I2接收到的数据为7,那么该比较器A1可以交换这两个数据的顺序并输出,也即是说,将7向O1发送,将8向比较器B1发送。
方式4,按从大到小的顺序输出比较后的两个数据。例如,假设第1个排序器531的比较器A1,从I1接收到的数据为8,从I2接收到的数据为7,那么该比较器A1将8向O1发送,将7向比较器B1发送。
可以理解,比较器输出比较后的两个数据时,选择哪种输出方式由排序电路530的排序方式确定,例如,当排序电路530按由小到大对数据排序时,排序电路530中的每个比较器均按上述方式3工作;当排序电路530按由大到小对数据排序时,排序电路530中的每个比较器均按上述方式4工作。其中,排序电路530的排序方式可以 被配置。
请参照图7,以K=4,J=8为例,每个排序器531均可以包括4个比较器(A1-A4),每个比较器均可以包括两个输入端和两个输出端,比较器的每个输入端均可以与一个寄存器连接,比较器的每个输出端均可以与一个寄存器连接,寄存器可以用于暂存数据。第i个排序器531的4个比较器的8个输入端为该排序器531的8个输入端,第i个排序器531的4个比较器的8个输出端为该排序器531的8个输出端。其中,第1个排序器531的A1的两个输出端可以分别与第2个比较单元的A1的1个输入端、A2的1个输入端连接,第1个排序器531的A2的两个输出端可以分别与第2个比较单元的A2的1个输入端、A3的1个输入端连接,第1个排序器531的A3的两个输出端可以分别与第2个比较单元的A3的1个输入端、A4的1个输入端连接,第1个排序器531的A4的两个输出端可以分别与第2个比较单元的A4的1个输入端、A1的1个输入端连接。以此类推,其他相邻的两个排序器531之间的连接方式,可以参照第1个排序器531与第2个排序器531之间的连接方式。当然,排序器531中的比较器与比较器之间的连接也不仅限于图7所示的通过寄存器连接,还可以直连。
在使用图7所示的排序电路530对8个数据排序(即H=8)时,假设该排序电路530按从小到大的顺序对待排序数据排序,首先,输入第1个排序器531的待排序数据为:“8、7、6、5、4、3、2、1”,第1个排序器531对该序列排序,排序后的序列变为:“7、8、5、6、3、4、1、2”。然后,第2个排序器531对第1个排序器531输出的序列排序,排序后的序列变为:“2、5、8、3、6、1、4、7”。以此类推,第7个排序器531输出的序列为:“1、2、3、4、5、6、7、8”。
基于图7所示的排序过程可见,待排序数据每经过一个排序器531的K个比较器,有序度都会被提高,如此可以提供一种排序器531的实现方式,使得排序器531能够提高H个数据的有序度。
可选地,K个比较器可以包括:J/2个第一比较器和(J/2)-1个第二比较器。J/2个第一比较器的J-2个输出端,分别连接(J/2)-1个第二比较器的J-2个输入端。
其中,J/2个第一比较器的J个输入端为:第i个排序器531的J个输入端。J/2个第一比较器的另2个输出端和(J/2)-1个第二比较器的J-2个输出端为:第i个排序器531的J个输出端。
下面结合图6说明上述K个比较器的实现方式以及排序过程。
参照图6,每个排序器531均包括7个比较器,这七个比较器包括:4个第一比较器(A1-A4)和3个第二比较器(B1-B3),每个比较器均包括两个输入端和两个输出端。
其中,以第1个第二比较器中的7个比较器为例,A1-A4的8个输入端为该排序器531的8个输入端,A1-A4的6个输出端分别连接B1-B3的6个输入端,A1-A4的另2个输出端和B1-B3的6个输出端为第1个排序器531的8个输出端。
进一步地,每个比较器的两个输入端可以分别与一个寄存器连接,每个比较器的两个输出端可以分别与一个寄存器连接,寄存器可以用于暂存数据。示例性地,参照图6的第1个第二比较器中的比较器A1,该比较器A1的两个输入端(I1、I2)分别与一个寄存器(图6中以虚线框示出)连接,该比较器A1的两个输出端也分别与一 个寄存器连接。
假设该排序电路530按从小到大的顺序对8个数据排序(即H=8)。首先,输入该排序电路530的待排序数据为:“8、7、6、5、4、3、2、1”,第1个排序器531对该序列排序后,输出的序列变为:“7、5、8、3、6、1、4、2”。然后,第2个排序器531对第1个排序器531输出的序列排序,排序后的序列变为:“5、3、7、1、8、2、6、4”。以此类推,第4个排序器531输出的序列为:“1、2、3、4、5、6、7、8”,从而实现对数据排序的功能。
应理解,基于图6对K个比较器的实现方式以及排序过程的说明可见,待排序数据每经过一个排序器531的K个比较器,有序度都会被提高,如此可以提供一种排序器531的实现方式,使得排序器531能够提高H个数据的有序度。
可选地,I个排序器531对H个数据的排序次数大于或等于J/2。
其中,当I个排序器531对H个数据的排序次数大于或等于J/2时,对于有序度最低的待排序数据,该排序电路530也能将该待排序数据排列成一个有序序列。例如,再参照上述图6所示的排序过程,输入该排序电路530的待排序数据:“8、7、6、5、4、3、2、1”,这个序列的有序度是长度为8的序列中有序度最低的序列,经过图6所示的排序电路530排序后,该序列刚好能排列成一个有序序列。换言之,当I个排序器531对H个数据的排序次数大于或等于J/2时,该排序电路530可以将H个数据排序为一个有序序列。
下面介绍两种“I个排序器531对H个数据的排序次数大于或等于J/2”的实施方式。
方式5,I与J满足如下关系:I≥J/2,换句话说,排序器531的个数大于或等于J/2,如此可以确保I个排序器531对H个数据的排序次数大于或等于J/2,从而使得排序电路530可以将H个数据排序为一个有序序列。
方式6,I个排序器531中的第1个排序器531的J个输入端分别连接J个选择器的输出端。J个选择器的第一输入端为排序电路530的J个输入端,I个排序器531中的第I个排序器531的J个输出端分别连接J个选择器的第二输入端。
这样,由于待排序数据从第I个排序器531的J个输出端被输出后,可以通过J个选择器的第二输入端再次被输入到第二方面所述的排序电路530中,也即是说,待排序数据可以在第二方面所述的排序电路530中被循环排序,如此,可以在I小于J/2的条件下,通过控制待排序数据被循环排序的次数,使得I个排序器531对H个数据的排序次数大于或等于J/2,从而可以减少硬件规模,节约成本。
下面介绍方式6的一种实现方式。
请再参照图6,第1个排序器531的8个输入端(I1-I8)分别连接8个选择器(multiplexer,MUX)的输出端,这8个选择器(图6中以虚线框示出)的第一输入端分别为:Din1、Din2、…、Din8,8个选择器的第二输入端分别为:loop1、loop2、…、loop8。第4个排序器531的8个输出端(O1-O8)分别连接loop1、loop2、…、loop8。其中,待排序数据可以从Din1、Din2、…、Din8输入该排序电路530,也即是说,该排序电路530的8个输入端为Din1、Din2、…、Din8。另外,上述的选择器可以是二路选择器。
这8个选择器均可以与计数器(图6中以虚线框示出)连接,计数器可以控制选择器的哪个输入端被选通。例如,当计数器控制每个选择器的第一输入端被选通时,待排序数据可以从Din1-Din8输入至该排序电路530中,由该排序电路530进行排序,当计数器控制每个选择器的第二输入端被选通时,该排序电路530输出的数据又会通过loop1-loop8输入至该排序电路530中,由该排序电路530继续进行排序。
因此,计数器可以控制待排序数据在排序电路530中被循环排序的次数,如此,可以在I的个数不变的条件下,通过控制待排序数据在排序电路530中被循环排序的次数,增加I个排序器531对H个数据的排序次数,实现即使I小于J/2,也能使得I个排序器531对H个数据的排序次数大于或等于J/2,进而可以减少硬件规模,节约成本。
当然,在实现上述方式6时,也可以将I个排序器531中的第i个排序器531的J个输出端分别连接J个选择器的第二输入端。
需要说明的是,上述排序电路530也可以称为初始排序(initsort)电路,在实现该装置时,可以采用微架构实现。
另外,图6所示的排序电路530中的比较器的结构实施方式并不仅限于图6所示,在实际应用中还可以增加或减少各个排序器531中的比较器数量,或者调整各个排序器531中的比较器之间的连接方式。例如,比较器的结构实施方式还可以如图8所示。
请参照图8,每个排序器531均包括7个比较器,这七个比较器包括:3个第一比较器(A1-A3)和4个第二比较器(B1-B4),每个比较器均包括两个输入端和两个输出端。
其中,以第1个第二比较器中的7个比较器为例,B1-B4的8个输出端为该排序器531的8个输出端,B1-B4的6个输入端分别连接A1-A3的6个输出端,B1-B4的另2个输入端和A1-A3的6个输入端为第1个排序器531的8个输入端。
进一步地,每个比较器的两个输入端可以分别与一个寄存器连接,每个比较器的两个输出端可以分别与一个寄存器连接,寄存器可以用于暂存数据。示例性地,参照图8的第1个第二比较器中的比较器A1,该比较器A1的两个输入端(I2、I3)分别与一个寄存器(图8中以虚线框示出)连接,该比较器A1的两个输出端也分别与一个寄存器连接。
假设该排序电路530按从小到大的顺序对数据排序。首先,输入该排序电路530的待排序数据为:“8、7、6、5、4、3、2、1”,第1个排序器531对该序列排序后,输出的序列变为:“6、8、4、7、2、5、1、3”。然后,第2个排序器531对第1个排序器531输出的序列排序,排序后的序列变为:“4、6、2、8、1、7、3、5”。以此类推,第4个排序器531输出的序列为:“1、2、3、4、5、6、7、8”,从而实现对数据排序的功能。
应理解,图8所示的排序电路与图6所示的排序电路结构不同,但均能实现相同的效果,即可以提供一种排序器531的实现方式,使得排序器531能够提高J个数据的有序度。
一种可能的实施例中,上述排序电路530还可以以双调排序的方式将H个数据排列为1个有序序列。具体地,上述的第i个排序器531可以包括K个比较器。其中, K≥J/2,K为正整数。并且,每个比较器的两个输入端分别与一个H选1选择器的输出端连接。H选1选择器是指可以选择H个数据中的1个数据并输出。利用H选1选择器,该比较器可以按一定规则从H个数据中选择2个数据比较并输出。
请参照图9,图9为本申请实施例提供的另一种排序电路的结构示意图四。以K=4,J=8,H=8为例,每个排序器531均可以包括4个比较器(A1-A4),每个比较器均可以包括两个输入端和两个输出端,比较器的每个输入端均可以与一个H选1选择器的输出端连接连接,比较器的每个输出端均可以与一个寄存器连接,寄存器可以用于暂存数据。第i个排序器531的4个比较器的8个输入端为该排序器531的8个输入端,第i个排序器531的4个比较器的8个输出端为该排序器531的8个输出端。其中,第1个排序器531的与A1连接的两个H选1选择器可以按一定规则从8个待排序数据中选2个数据比较并输出,第1个排序器531的与A2连接的两个H选1选择器可以按一定规则从8个待排序数据中选2个数据比较并输出。换言之,第1个排序器531的8个H选1选择器可以按一定规则将8个待排序数据输入到4个比较器中进行排序。以此类推,第i+1个排序器531的8个H选1选择器可以按一定规则,将第i个排序器531输出的8个数据输入到4个比较器中进行排序。
其中,当上述规则是双调排序算法对应的排序规则时,排序电路530可以以双调排序的方式将H个数据排列为1个有序序列。可以理解,相较于图6或图7所示的排序过程,双调排序的排序效率更高,从而可以进一步提升排序电路530的排序效率。
基于上述图5所示的处理器500,该处理器500中的排序电路531可以响应经解码的第二指令,将H个数据的有序度提高I次,从而排序电路531通过一次或多次对H个数据排序,可将H个数据排列为有序序列。换句话说,处理器500执行第二指令可对H个数据排序,从而使得处理器500可以执行较少指令,即可完成H个数据的排序操作,这样可以避免执行大量重复指令,以减少需要执行的排序指令的数量和执行时间,从而提高排序效率。
上述H个数据的每个数据的数据结构也可以是:{数值(score),索引(index)}。其中,“数值”可以采用如下任一项实现:16位浮点数(floating-point number,FP)、32位浮点数、8位整型数(integer,INT)、16位整型数或者32位整型数等。“索引”与“数值”对应,“索引”包括“数值”的各种信息的地址,可以采用的指针实现,也即是说,通过“索引”可以获取对应的“数值”的各种信息。上述的比较器在对这样的数据排序时,可以基于各个数据的“数值”可以比较数据的大小。这样,可以使得上述的排序电路530可以处理位数更宽的数据,并使得排序过程中没有冗余数据,从而提高总线利用率和排序性能。
示例性地,图10为使用图6所示排序电路530对H个数据排序的示意图。参照图10,H个数据包括:{数值0,索引0}、{数值1,索引1}、…、{数值H-1,索引H-1},上述排序电路530(initsort)可以对这H个数据,输出一个有序序列:{数值0',索引0'}、{数值1',索引1'}、…、{数值(H-1)',索引(H-1)'}。
另外,上述排序电路530还可以对不同的数据类型的数据排序。假设上述排序电路530可以排序的数据类型是32位浮点数,那么,当待排序数据中存在其他类型的数据时(如8位整型数、16位整型数等),可以通过数据类型转换,将其他类型的数据 统一转换为32位浮点数,从而实现排序电路530可以对不同的数据类型的数据排序的目的。其中,不同数据类型之间的数据类型转换可以参照现有规定,在此不再赘述。
上述排序电路530还可以通过多轮排序,实现将X个(X>J)数据排列为多个有序序列,例如,可以通过
Figure PCTCN2021081638-appb-000013
轮排序,输出
Figure PCTCN2021081638-appb-000014
个有序序列,
Figure PCTCN2021081638-appb-000015
表示对X/J向上取整。其中,当输入该排序电路530的数据为Z(Z<J)时,可以通过补齐数据方式实现对Z个数据排序,例如,当排序电路530按由小到大对数据排序时,可以在向排序电路530输入Z个数据时,输入J-Z个无穷大数(无穷大数比任何输入的数据都大,可以通过预定义实现),从而使得输入该排序电路530的数据为J个,该排序电路530输出的序列中前Z个数据即为排序后的Z个数据。
以上结合图1-图10详细说明了本申请实施例提供的两种处理器。以下结合图11说明本申请实施例提供的电子设备。
本申请实施例提供一种电子设备,该电子设备可以包括一个或多个上述的处理器100,和/或,一个或多个上述的处理器500。其中,该电子设备可以包括但不限于:服务器、计算机、手机(mobile phone)、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、车载终端、具有终端功能的RSU等。
图11为本申请实施例提供的电子设备的结构示意图。如图11所示,电子设备1100可以包括处理器1101。可选地,电子设备1100还可以包括存储器1102和/或收发器1103。其中,处理器1101与存储器1102和收发器1103耦合,如可以通过通信总线连接。
下面结合图11对电子设备1100的各个构成部件进行具体的介绍:
其中,处理器1101是电子设备1100的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器1101是一个或多个中央处理器(central processing unit,CPU),也可以是一个或多个向量处理器(vector processor)、协处理器(coprocessor)等,还可以是特定集成电路(application specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。
可选地,处理器1101可以通过运行或执行存储在存储器1102内的软件程序,以及调用存储在存储器1102内的数据,执行电子设备1100的各种功能。
在具体的实现中,作为一种实施例,处理器1101可以包括一个或多个CPU,例如图11中所示出的CPU0和CPU1。
在具体实现中,作为一种实施例,电子设备1100也可以包括多个处理器,例如图11中所示的处理器1101和处理器1104。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
其中,所述存储器1102用于存储执行本申请方案的软件程序,并由处理器1101来控制执行,具体实现方式可以分别参考图12-图15所示的方法实施例,此处不再赘述。
可选地,存储器1102可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1102可以和处理器1101集成在一起,也可以独立存在,并通过电子设备1100的接口电路(图11中未示出)与处理器1101耦合,本申请实施例对此不作具体限定。
收发器1103,用于与其他电子设备之间的通信。例如,电子设备1100为终端设备,收发器1103可以用于与网络设备通信,或者与另一个终端设备通信。又例如,电子设备1100为网络设备,收发器1103可以用于与终端设备通信,或者与另一个网络设备通信。
可选地,收发器1103可以包括接收器和发送器(图11中未单独示出)。其中,接收器用于实现接收功能,发送器用于实现发送功能。
可选地,收发器1103可以和处理器1101集成在一起,也可以独立存在,并通过电子设备1100的接口电路(图11中未示出)与处理器1101耦合,本申请实施例对此不作具体限定。
需要说明的是,图11中示出的电子设备1100的结构并不构成对该电子设备的限定,实际的电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
此外,电子设备1100的技术效果可以参考图12-图15所示的方法的技术效果,此处不再赘述。
上述图1所示的实施例说明了本申请提供的一种处理器100,下面结合图12说明使用该处理器100对数据排序的排序方法。
图12为本申请实施例提供的排序方法的流程示意图一。请参照图12,该方法可以应用于图1所示的处理器100,该方法包括如下几个步骤:
S1201,控制电路从指令存储电路读取第一指令,并对第一指令解码。
S1202,控制电路向排序电路发送经解码的第一指令。
S1203,排序电路响应经解码的第一指令,并根据存储地址读取M个第一序列。
一种可能的设计方案中,上述排序电路130可以包括:排序控制器230、排序器210和M个第一缓存器220,排序控制器230与M个第一缓存器220耦合,M个第一缓存器220均与排序器210耦合。在S1203中,排序电路130响应经解码的第一指令,并根据存储地址读取M个第一序列,可以包括:排序控制器230根据存储地址读取M个第一序列,并将M个第一序列存储在M个第一缓存器220。其中,每个第一缓存器 220存储一个第一序列。
示例性地,假设M个第一序列存储在全局内存中,那么排序控制器230可以响应经解码的第一指令,根据存储地址并通过总线向全局内存发送读指令,该读指令用于指示全局内存向排序控制器230发送这M个第一序列。然后,排序控制器230可以接收来自全局内存的M个第一序列,并向每个第一缓存器220各发送一个第一序列。其中,这M个第一序列可以均为有序序列,也可以存在无序序列。
另外,S1203的具体实施方式及效果可参考上述图2中关于排序控制器230移动数据的说明,此处不再赘述。
S1204,若M个第一序列均为有序序列,则排序电路输出一个长度为M*N的有序序列。
一种可能的设计方案中,S1204可以包括:若M个第一序列均为有序序列,则排序器210从M个第一缓存器220中读出一个长度为M*N的有序序列。
可选地,若M个第一序列均为有序序列,则排序器210根据第一读取规则,从M个第一缓存器220中读出一个长度为M*N的有序序列。其中,第一读取规则可以为:每次在M个第一缓存器220中读出排列第一的数据,也即是说,每次在M个有序序列中读出一个排列第一的数据。例如,假设有两个有序序列,分别为:“3、5、6、9”、“7、13、25、26”,且有序序列的排序规则为从小到大排列,那么这两个有序序列中排列第一的数据为3。当第一缓存器220采用输入缓冲器实现时,排序器210每次可以在M个第一缓存器220的输出端读出一个排列第一的数据。应理解,上述S1204,可以实现将M个有序序列排列成一个有序序列的功能。
另外,S1204的具体实施方式及效果可参考上述方式1,此处不再赘述。
S1205,若M个第一序列中存在无序序列,则排序电路输出M个长度为N的有序序列。
一种可能的设计方案中,S1205可以包括:若M个第一序列中存在无序序列,则排序器210从M个第一缓存器220中读出M个长度为N的有序序列。
可选地,若M个第一序列中存在无序序列,则排序器210根据第二读取规则,从M个第一缓存器220中读出M个长度为N的有序序列。其中,第二读取规则可以为:每次在M个第一缓存器220中读出一个长度为N的有序序列。具体地,排序器210每次可以在每个第一缓存器220中读出x个数据,然后将这M*x个数据排列为一个有序序列,x为正整数。例如,假设x=1,M=4,4个第一缓存器220存储的第一序列分别为:“10、8、20、3”、“1、25、33、7”、“6、4、16、23”、“11、15、16、18”,那么排序器210第一次可以分别在这4个第一缓存器220中读出1个数据,即读出“10、1、6、11”,然后将这4个数据排列为一个有序序列:“1、6、10、11”。可选地,当第一缓存器220采用输入缓冲器实现时,排序器210每次可以在每个第一缓存器220的输出端读出x个数据。可以理解,由于x可以取大于或等于1的整数,当x取值变大时,排序器210一次可以从M个第一缓存器220中读出更多的数据排序,从而能够提高排序效率。应理解,上述S1205,可以实现将无序的M个序列排列成M个有序序列的功能。
另外,S1205的具体实施方式及效果可参考上述方式2,此处不再赘述。
上述方式1与方式2可以独立实施,也可以结合实施。方式1与方式2结合实施时,可以包括:先执行方式2,将M个无序序列排列成M个有序序列。然后执行方式1,将M个有序序列排列成一个有序序列。
可选地,排序电路130还包括第二缓存器240,第二缓存器240与排序控制器230耦合。为了实现第二缓存器240暂存数据的功能,上述方法还可以包括:
步骤1,排序控制器230根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器240。
步骤2,排序控制器230将M个第一序列从第二缓存器240移动到M个第一缓存器220。
可以理解,第二缓存器240暂存数据的具体实施方式及效果,可参考上述图2所示排序电路130关于如何实现第二缓存器240暂存数据的功能的相关描述,此处不再赘述。
进一步地,排序控制器230包括第一读写控制器231和第二读写控制器232,第一读写控制器231与第二读写控制器232耦合,第二缓存器240分别与第一读写控制器231以及第二读写控制器232耦合,M个第一缓存器220均与第一读写控制器231耦合。为了提的排序效率,上述步骤1可以包括:第二读写控制器232根据存储地址读取M个第一序列,并将M个第一序列存储在第二缓存器240。上述步骤2可以包括:第一读写控制器将M个第一序列从第二缓存器240移动到M个第一缓存器220。可以理解,步骤1、步骤2的具体实施方式及效果,可参考上述图2所示排序电路130关于如何实现连续转发待排序数据的功能的相关描述,此处不再赘述。
再进一步地,为了提高排序效率,上述方法还可以包括:
步骤3,在移动M个第一序列时,第一读写控制器231向第二读写控制器232发送已移动数据量信息。
可以理解,步骤3的具体实施方式及效果,可参考上述图2所示排序电路130关于第一读写控制器231向第二读写控制器232发送已移动数据量信息的相关描述,此处不再赘述。
进一步地,上述排序控制器230还可以包括第三读写控制器233,第三读写控制器233分别与排序器210和第二缓存器240耦合。为了实现第三读写控制器233写出有序数据的功能,上述方法还可以包括:
步骤4,第三读写控制器233将排序器210输出的有序序列移动到第二缓存器240。
可以理解,步骤4的具体实施方式及效果,可参考上述图2所示排序电路130关于实现写出有序数据的功能的相关描述,此处不再赘述。
上述图5-图9所示的实施例说明了本申请提供的另一种处理器500的结构,下面结合图13介绍基于上述另一种处理器500实现的数据排序方法。
图13为本申请实施例提供的排序方法的流程示意图二。请参照图13,该方法可以应用于图5-图9中任一种实现方式所示的处理器500,该方法包括如下几个步骤:
S1301,控制电路从指令存储电路读取第二指令,并对第二指令解码。
S1302,控制电路向排序电路发送经解码的第二指令。
S1303,排序电路响应经解码的第二指令,并根据存储地址读取H个数据。
S1304,排序电路利用排序电路中的第i个排序器对H个数据排序。
可以理解,S1301-S1304的具体实施方式及效果可以参照上述图5-图9中任一种实现方式所示的处理器500的使用过程,在此不再赘述。
一些可能的实施例中,若第i个排序器531包括K个比较器,K≥J/2,且K为正整数,则在S1304中,排序电路530利用排序电路530中的第i个排序器531对H个数据排序,可以包括:
K个比较器中的第k个比较器接收H个数据中的两个数据。第k个比较器比较H个数据中的两个数据,并输出比较后的两个数据。具体实施方式及效果,可参考上述图5-图9中任一种实现方式所示的处理器500关于K个比较器的相关描述,此处不再赘述。
上述图1-图13分别说明了两种处理器的实施方式。在图1-图13所示的两种处理器的基础上,本申请实施例提供又一种排序方法,以结合两种处理器对数据排序。
图14为本申请实施例提供的排序方法的流程示意图三。请参照图14,该方法可以应用于电子设备,该电子设备包括处理器,该处理器包括上述图1所示的排序电路130(下文简称为第一排序电路)和图5-图9中任一种实现方式所示的排序电路530(下文简称为第二排序电路)。该方法包括如下几个步骤:
S1401,基于第二排序电路,将待排序数据排列为多个有序序列。
示例性地,假定有512个待排序数据,第二排序电路每次可以对32个数据排序(即J=32),那么可以将这512个数据分为16组,每组32个数据,然后使用第二排序电路对每组数据排序,输出16个长度为32的有序序列。
S1402,基于第一排序电路,将多个有序序列排列为一个有序序列。
示例性地,假定有16个长度为32的有序序列,且第一排序电路每次可以将8个有序序列排列为一个有序序列(即M=8),那么可以将这16个有序序列分为2组,每组8个有序序列,然后使用第一排序电路对每组的8个有序序列排序,输出2个长度为256的有序序列,最后再使用该第一排序电路对这2个长度为256的有序序列排序,输出1个长度为512的有序序列。
其中,第二排序电路将多个待排序数据排列为一个有序序列的具体实施过程可以参照上述图13所示的排序方法,第一排序电路将M个有序序列排列为一个有序序列的具体实施过程可以参照上述图12所示的排序方法,在此不再赘述。
上述图1-图14分别说明了两种处理器的实施方式。在图1-图14所示的两种处理器的基础上,本申请实施例提供再一种排序方法,以使用处理器的多个处理核心对待排序数据排序,以进一步提高排序效率。
请参照图15,该方法可以应用于电子设备,该电子设备包括处理器,该处理器包括多个处理核心,每个处理核心均包括:上述图1、图2所示的排序电路130和图5-图9中任一种实现方式所示的排序电路530,或者每个处理核心均包括:上述图1、图2所示的排序电路130,该方法包括如下几个步骤:
S1501,控制电路从指令存储电路读取第二指令,并对第二指令解码。其中,经解码的第二指令包括待排序数据的存储地址。
S1502,控制电路向多个处理核心发送经解码的第二指令。
S1503,多个处理核心响应经解码的第二指令,并根据存储地址读取待排序数据。
S1504,多个处理核心对待排序数据排序。
其中,待排序数据可以包括多个序列,排序电路用于读取多个序列中的M个序列,以及若M个序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个序列中存在无序序列,则输出M个长度为N的有序序列。具体实施过程可以参照上述图2所示排序电路130对数据排序的过程,在此不再赘述。
一种可能的设计方案中,上述的多个处理核心对待排序数据排序,可以包括:多个处理核心对待排序数据迭代排序,直至将待排序数据排列为1个有序序列。在每次迭代过程中,多个处理核心用于将上一次迭代输出的N个有序序列排列为
Figure PCTCN2021081638-appb-000016
个有序序列,M为大于1的整数。
可选地,多个处理核心对待排序数据迭代排序,直至将待排序数据排列为1个有序序列,可以包括:确定多个处理核心的启动数量E。其中,E为大于1的整数。基于E个处理核心,将待排序数据排列为1个有序序列。
例如,根据待排序数据的数据量(记为Q)、多个处理核心的数量(记为P)以及每个处理核心的最小处理数据量(记为T),确定多个处理器的启动数量E。例如,当Q/P大于或等于T时,E=P;当Q/P小于T时,
Figure PCTCN2021081638-appb-000017
其中,
Figure PCTCN2021081638-appb-000018
为向上取整符号,例如,
Figure PCTCN2021081638-appb-000019
表示对Q/T向上取整。
可选地,基于E个处理核心,将待排序数据排列为1个有序序列,可以包括如下几个步骤:
步骤5,将待排序数据分配给E个处理核心中的每个处理核心。
可选地,将待排序数据平均分配给E个处理核心中的每个处理核心。例如,假设每个处理核心被分配的待排序数据的数据量为F,那么当Q/P大于或等于T时,F=Q/P;当Q/P小于T时,F=Q/E。
步骤6,每个处理核心将被分配的待排序数据排列为1个有序序列。
其中,E个处理核心将被分配的待排序数据排列为E个有序序列。当每个处理核心均包括排序电路130和排序电路530时,每个处理核心将待排序数据排列为1个有序序列的具体实施过程可以参照上述图14所示的排序方法;当每个处理核心均包括上述图1所示的排序电路130时,每个处理核心将待排序数据排列为1个有序序列的具体实施过程可以参照上述方式1与方式2结合实施,以将M个有序序列排列成一个有序序列的过程,在此不再赘述。
步骤7,基于多个处理核心中的
Figure PCTCN2021081638-appb-000020
个处理核心,将E个有序序列排列为
Figure PCTCN2021081638-appb-000021
个有序序列。其中,M为图2所示的排序电路130中第一缓存器220的数量。
步骤8,若
Figure PCTCN2021081638-appb-000022
Figure PCTCN2021081638-appb-000023
确定为E,并返回执行步骤7;否则,确定排序完成,输出待排序数据对应的有序序列。
例如,假设E=18,M=4,那么在第一轮排序中,基于
Figure PCTCN2021081638-appb-000024
个处理核心,将18个有序序列排列为5个有序序列。其中,4个处理核心可以分别将18个有序序列中的4个有序序列排列为1个有序序列,1个处理核心可以将18个有序序列中剩下的2个有序序列排列为1个有序序列。然后,由于5>1,因此将5确定为E,进入第二轮排序,即基于
Figure PCTCN2021081638-appb-000025
个处理核心,将上一轮排序的5个有序序列排列为2个有序序列。 之后,由于2>1,因此将2确定为E,进入第三轮排序,即基于
Figure PCTCN2021081638-appb-000026
个处理核心,将上一轮排序的2个有序序列排列为1个有序序列。最后,由于
Figure PCTCN2021081638-appb-000027
因此确定排序完成,输出待排序数据对应的1个有序序列。这样,在对待排序数据的排序过程中,可以逐渐减少参与排序的排序电路的数量,减少占用的处理资源。
应理解,如果待排序数据的数据量太大(如超过100万个数据)时,图15所示的排序方法能够多个处理核心同时进行排序,提升排序效率。
另外,在执行图15所示的方法时,如果需要对待排序数据进行TOPK排序,那么每个处理核心均可以通过TOPK排序,将被分配的待排序数据排列为1个有序序列。其中,处理核心进行TOPK排序的实施过程可以参照上述图2所示排序电路130中的说明,在此不再赘述。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

  1. 一种处理器,其特征在于,包括:指令存储电路、控制电路和排序电路,所述指令存储电路与所述控制电路耦合,所述控制电路与所述排序电路耦合;
    所述控制电路,用于从所述指令存储电路读取第一指令,并对所述第一指令解码;经解码的第一指令包括M个第一序列的存储地址,每个所述第一序列的长度均为N,M为大于1的整数,N为大于1的整数;
    所述控制电路,还用于向所述排序电路发送所述经解码的第一指令;
    所述排序电路,用于响应所述经解码的第一指令,执行如下步骤:根据所述存储地址读取M个所述第一序列,以及若M个所述第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个所述第一序列中存在无序序列,则输出M个长度为N的有序序列。
  2. 根据权利要求1所述的处理器,其特征在于,所述排序电路包括:排序控制器、排序器和M个第一缓存器,所述排序控制器与M个所述第一缓存器耦合,M个所述第一缓存器均与所述排序器耦合;
    所述排序控制器,用于根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在M个所述第一缓存器;每个第一缓存器存储一个第一序列;
    所述排序器,用于若M个所述第一序列均为有序序列,则从M个所述第一缓存器中读出一个长度为M*N的有序序列,或者,若M个所述第一序列中存在无序序列,则从M个所述第一缓存器中读出M个长度为N的有序序列。
  3. 根据权利要求2所述的处理器,其特征在于,
    所述排序器,还用于若M个所述第一序列均为有序序列,则根据第一读取规则,从所述M个第一缓存器中读出一个长度为M*N的有序序列;所述第一读取规则为:每次在所述M个第一缓存器中读出排列第一的数据;或者,
    所述排序器,还用于若M个所述第一序列中存在无序序列,则根据第二读取规则,从所述M个第一缓存器中读出M个长度为N的有序序列;所述第二读取规则为:每次在所述M个第一缓存器中读出一个长度为N的有序序列。
  4. 根据权利要求2或3所述的处理器,其特征在于,所述排序电路还包括:第二缓存器,所述第二缓存器与所述排序控制器耦合;
    所述排序控制器,用于根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在所述第二缓存器;
    所述排序控制器,还用于将M个所述第一序列从所述第二缓存器移动到M个所述第一缓存器。
  5. 根据权利要求4所述的处理器,其特征在于,所述排序控制器包括第一读写控制器和第二读写控制器,所述第一读写控制器与所述第二读写控制器耦合,所述第二缓存器分别与所述第一读写控制器以及所述第二读写控制器耦合,所述M个第一缓存器均与所述第一读写控制器耦合;
    所述第二读写控制器,用于根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在所述第二缓存器;
    所述第一读写控制器,用于将M个所述第一序列从所述第二缓存器移动到M个 所述第一缓存器。
  6. 根据权利要求5所述的处理器,其特征在于,
    所述第一读写控制器,还用于在移动M个所述第一序列时,向所述第二读写控制器发送已移动数据量信息。
  7. 根据权利要求4-6中任一项所述的处理器,其特征在于,所述排序控制器还包括第三读写控制器,所述第三读写控制器分别与所述排序器和所述第二缓存器耦合;
    所述第三读写控制器,用于将所述排序器输出的有序序列移动到所述第二缓存器。
  8. 一种排序方法,其特征在于,应用于处理器,所述处理器包括:指令存储电路、控制电路和排序电路,所述指令存储电路与所述控制电路耦合,所述控制电路与所述排序电路耦合;
    所述方法包括:
    所述控制电路从所述指令存储电路读取第一指令,并对所述第一指令解码;经解码的第一指令包括M个第一序列的存储地址,每个所述第一序列的长度均为N,M为大于1的整数,N为大于1的整数;
    所述控制电路向所述排序电路发送所述经解码的第一指令;
    所述排序电路响应所述经解码的第一指令,并根据所述存储地址读取M个所述第一序列,以及若M个所述第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个所述第一序列中存在无序序列,则输出M个长度为N的有序序列。
  9. 根据权利要求8所述的方法,其特征在于,所述排序电路包括:排序控制器、排序器和M个第一缓存器,所述排序控制器与M个所述第一缓存器耦合,M个所述第一缓存器均与所述排序器耦合;
    所述排序电路响应所述经解码的第一指令,并根据所述存储地址读取M个所述第一序列,以及若M个所述第一序列均为有序序列,则输出一个长度为M*N的有序序列,或者,若M个所述第一序列中存在无序序列,则输出M个长度为N的有序序列,包括:
    所述排序控制器根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在M个所述第一缓存器;每个第一缓存器存储一个第一序列;
    若M个所述第一序列均为有序序列,则所述排序器从M个所述第一缓存器中读出一个长度为M*N的有序序列;或者,
    若M个所述第一序列中存在无序序列,则所述排序器从M个所述第一缓存器中读出M个长度为N的有序序列。
  10. 根据权利要求9所述的方法,其特征在于,所述若M个所述第一序列均为有序序列,则所述排序器从M个所述第一缓存器中读出一个长度为M*N的有序序列,包括:
    若M个所述第一序列均为有序序列,则所述排序器根据第一读取规则,从所述M个第一缓存器中读出一个长度为M*N的有序序列;所述第一读取规则为:每次在所述M个第一缓存器中读出排列第一的数据;
    所述若M个所述第一序列中存在无序序列,则所述排序器从M个所述第一缓存器中读出M个长度为N的有序序列,包括:
    若M个所述第一序列中存在无序序列,则所述排序器根据第二读取规则,从所述M个第一缓存器中读出M个长度为N的有序序列;所述第二读取规则为:每次在所述M个第一缓存器中读出一个长度为N的有序序列。
  11. 根据权利要求9或10所述的方法,其特征在于,所述排序电路还包括:第二缓存器,所述第二缓存器与所述排序控制器耦合;
    所述排序控制器根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在M个所述第一缓存器,包括:
    所述排序控制器根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在所述第二缓存器;
    所述排序控制器将M个所述第一序列从所述第二缓存器移动到M个所述第一缓存器。
  12. 根据权利要求11所述的方法,其特征在于,所述排序控制器包括第一读写控制器和第二读写控制器,所述第一读写控制器与所述第二读写控制器耦合,所述第二缓存器分别与所述第一读写控制器以及所述第二读写控制器耦合,所述M个第一缓存器均与所述第一读写控制器耦合;
    所述排序控制器根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在所述第二缓存器,包括:
    所述第二读写控制器根据所述存储地址读取M个所述第一序列,并将M个所述第一序列存储在所述第二缓存器;
    所述排序控制器将M个所述第一序列从所述第二缓存器移动到M个所述第一缓存器,包括:
    所述第一读写控制器将M个所述第一序列从所述第二缓存器移动到M个所述第一缓存器。
  13. 根据权利要求12所述的方法,其特征在于,所述方法还包括:
    在移动M个所述第一序列时,所述第一读写控制器向所述第二读写控制器发送已移动数据量信息。
  14. 根据权利要求11-13中任一项所述的方法,其特征在于,所述排序控制器还包括第三读写控制器,所述第三读写控制器分别与所述排序器和所述第二缓存器耦合;
    所述方法还包括:
    所述第三读写控制器将所述排序器输出的有序序列移动到所述第二缓存器。
  15. 一种电子设备,其特征在于,所述电子设备包括如权利要求1-7中任一项所述的处理器。
PCT/CN2021/081638 2021-03-18 2021-03-18 处理器、排序方法及电子设备 WO2022193259A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2021/081638 WO2022193259A1 (zh) 2021-03-18 2021-03-18 处理器、排序方法及电子设备
CN202180088003.3A CN116670639A (zh) 2021-03-18 2021-03-18 处理器、排序方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/081638 WO2022193259A1 (zh) 2021-03-18 2021-03-18 处理器、排序方法及电子设备

Publications (1)

Publication Number Publication Date
WO2022193259A1 true WO2022193259A1 (zh) 2022-09-22

Family

ID=83321355

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/081638 WO2022193259A1 (zh) 2021-03-18 2021-03-18 处理器、排序方法及电子设备

Country Status (2)

Country Link
CN (1) CN116670639A (zh)
WO (1) WO2022193259A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104204991A (zh) * 2012-03-30 2014-12-10 英特尔公司 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置
US20150269119A1 (en) * 2014-03-19 2015-09-24 International Business Machines Corporation Merging and Sorting Arrays on an SIMD Processor
CN106250097A (zh) * 2016-06-22 2016-12-21 中国科学院计算技术研究所 一种面向大数据的加速排序装置、方法、芯片、处理器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104204991A (zh) * 2012-03-30 2014-12-10 英特尔公司 将较小的已排序向量合并和排序为较大的已排序向量的指令的方法和装置
US20150269119A1 (en) * 2014-03-19 2015-09-24 International Business Machines Corporation Merging and Sorting Arrays on an SIMD Processor
CN106250097A (zh) * 2016-06-22 2016-12-21 中国科学院计算技术研究所 一种面向大数据的加速排序装置、方法、芯片、处理器

Also Published As

Publication number Publication date
CN116670639A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
JP5422614B2 (ja) 低ポート数メモリーを用いたマルチポートメモリーのシミュレート
JP7074831B2 (ja) ネットワークオンチップによるデータ処理方法及び装置
US20230169319A1 (en) Spatially sparse neural network accelerator for multi-dimension visual analytics
US9069609B2 (en) Scheduling and execution of compute tasks
JPH07500437A (ja) データ処理システム
US11347563B2 (en) Computing system and method for operating computing system
US20220114270A1 (en) Hardware offload circuitry
WO2023155785A1 (zh) 一种网卡配置方法、装置、设备及存储介质
CN113568731B (zh) 一种任务调度方法、芯片以及电子设备
US11061676B2 (en) Scatter gather using key-value store
CN113900710B (zh) 扩展存储器组件
WO2015094721A2 (en) Apparatuses and methods for writing masked data to a buffer
WO2022193259A1 (zh) 处理器、排序方法及电子设备
KR20220116566A (ko) 확장 메모리 통신
US7028116B2 (en) Enhancement of transaction order queue
US20230127869A1 (en) Method and apparatus with process scheduling
WO2022227561A1 (zh) 用于数据读取的装置、方法、芯片、计算机设备及存储介质
CN114331806A (zh) 图形处理器及图形处理方法
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
CN114816322A (zh) Ssd的外部排序方法、装置和ssd存储器
US10997277B1 (en) Multinomial distribution on an integrated circuit
TW202030622A (zh) 資料庫處理系統及用於卸載資料庫操作的方法
WO2023115529A1 (zh) 芯片内的数据处理方法及芯片
WO2024012153A1 (zh) 一种数据处理方法及装置
US20240086102A1 (en) Systems and methods for executing data processing functions

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21930851

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202180088003.3

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21930851

Country of ref document: EP

Kind code of ref document: A1