CN108958702B - 一种排序网络、排序方法及排序装置 - Google Patents
一种排序网络、排序方法及排序装置 Download PDFInfo
- Publication number
- CN108958702B CN108958702B CN201710393761.1A CN201710393761A CN108958702B CN 108958702 B CN108958702 B CN 108958702B CN 201710393761 A CN201710393761 A CN 201710393761A CN 108958702 B CN108958702 B CN 108958702B
- Authority
- CN
- China
- Prior art keywords
- sequence
- sorting
- sequencing
- comparison result
- elements
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000012163 sequencing technique Methods 0.000 claims abstract description 151
- 230000007306 turnover Effects 0.000 claims abstract description 15
- 239000011159 matrix material Substances 0.000 claims description 82
- 238000004422 calculation algorithm Methods 0.000 claims description 18
- 238000012512 characterization method Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 8
- 230000008030 elimination Effects 0.000 claims description 4
- 238000003379 elimination reaction Methods 0.000 claims description 4
- 230000001133 acceleration Effects 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 25
- 230000015654 memory Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000009941 weaving Methods 0.000 description 1
Images
Classifications
-
- 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/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种排序网络、排序方法及排序装置,涉及运算加速领域。该排序网络包括至少两个第一排序装置、翻转半清洁器Flip‑HC和至少一个第二排序装置,第一排序装置和第二排序装置均与翻转半清洁器连接,其中:任一第一排序装置,用于获取随机输入序列,对随机输入序列中的每两个元素进行比较,根据比较结果对随机输入序列中的元素进行排序,输出第一排序序列;翻转半清洁器,用于获取至少两个第一排序装置输出的至少两个第一排序序列,对至少两个第一排序序列进行翻转排序处理,输出双调序列;第二排序装置,用于获取翻转半清洁器输出的双调序列,对双调序列中的每两个元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列。
Description
技术领域
本申请实施例涉及运算加速技术领域,尤其涉及一种排序网络、排序方法及排序装置。
背景技术
排序问题在计算机的诸多研究领域都具有重要的意义,例如在编译、操作***、数据库管理***、路由、置换网络等领域均涉及到和排序有关的问题。
一种常见的排序方法为双调(Bitonic)排序网络。如图1所示,Bitonic排序网络是递归式的结构。一个16输入16输出的Bitonic排序网络包括两个8输入8输出的Bitonic排序网络和一个16输入的合并网络;8输入8输出的Bitonic排序网络又可分为两个4输入4输出的Bitonic排序网络和一个8输入的合并网络。Bitonic排序网络的每一级之间是串行比较的,只有当上一级的比较器完成比较和交换后,下一级的比较器的输入才能确定。Bitonic排序网络每一级比较器都可以对n个输入同时进行排序和交换,每级共有n/2个比较器,而一个n输入的Bitonic排序网络的比较器总级数为一种可能的情况下,一个n输入的Bitonic排序网络中总的比较器数量为例如,当n=8时,完全比较网络比较器级数为10级,即需要做10级串联的比较才能得到最终的排序结果。
可见,由于传统的Bitonic排序网络每一级之间是串行比较的,只有当上一级的比较器完成比较和交换后,下一级的比较器的输入才能确定,由此带来的计算延迟将导致严重的时延问题。
发明内容
本申请实施例提供一种排序网络、排序方法及排序装置,用以提供一种新的排序网络。
本申请实施例提供的具体技术方案如下:
第一方面,提供一种排序网络,通过将传统排序网络中2输入2输出的比较单元替换为多输入多输出的并行比较的比较单元和排序单元,有效节省了比较器的数目,并且减少了比较器的级数,即缩减了排序延时。
在一个可能的设计中,排序网络包括至少两个第一排序装置、翻转半清洁器Flip-HC和至少一个第二排序装置,所述第一排序装置和所述第二排序装置均与所述翻转半清洁器连接,其中:任一所述第一排序装置,用于获取随机输入序列,对所述随机输入序列中的每两个元素进行比较,根据比较结果对所述随机输入序列中的元素进行排序,输出第一排序序列;所述翻转半清洁器,用于获取至少两个所述第一排序装置输出的至少两个所述第一排序序列,对至少两个所述第一排序序列进行翻转排序处理,输出双调序列;所述第二排序装置,用于获取所述翻转半清洁器输出的所述双调序列,对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。这样,对于第一排序装置和第二排序装置来说,对一个长度为n的输入序列进行比较需要的比较器数目为有效减少了比较器的数目,且第一排序装置相较于传统排序网络,缩短计算延时第二排序装置相较于传统排序网络,缩短计算延时lg(n)-1。
在一个可能的设计中,所述翻转半清洁器在执行对至少两个所述第一排序序列进行翻转排序处理时,具体用于:选择第一部分中的第一元素与第二部分中的第二元素进行比较,在第二元素与第一元素的比较结果符合设定大小关系时,将所述第二元素与所述第一元素的位置交换;其中,至少两个所述第一排序序列组成排序总序列,所述排序总序列中包括所述第一部分和所述第二部分;记录并输出发生位置交换的元素位置索引。
在一个可能的设计中,所述第二排序装置还用于,获取所述翻转半清洁器输出的发生位置交换的元素位置索引,确定所述双调序列中以所述元素位置索引分割的第一子序列和第二子序列;所述第二排序装置在根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列时,具体用于:将第一子序列中的元素与所述第二子序列中的元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。这样,可以进一步减少第二排序装置所用的比较器数目。
在一个可能的设计中,所述第一排序装置对所述随机输入序列中的每两个元素进行比较,根据比较结果对所述随机输入序列中的元素进行排序,输出第一排序序列,具体用于:所述随机输入序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的第一排序序列。
在一个可能的设计中,所述第二排序装置对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列,具体用于:所述双调序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的第二排序序列。
在一个可能的设计中,所述第二排序装置将xi与xj进行比较获得比较结果时,具体用于:若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;所述第二排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量时,具体用于:计算所述矩阵的第i行向量的行重。
在一个可能的设计中,所述第一排序装置将xi与xj进行比较获得比较结果时,具体用于:若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;所述第一排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量时,具体用于:计算所述矩阵的第i行向量的行重。
在一个可能的设计中,所述第一排序装置还用于,在获取随机输入序列之前,获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值,N个路径度量值组成两个长度为N/2的序列;若所述排序网络中包括两个所述第一排序装置,则任一所述第一排序装置获取随机输入序列时,具体用于:获取一个长度为N/2的序列。
第二方面,提供一种排序方法,所述方法应用于排序网络,所述排序网络中包括至少两个第一排序装置、翻转半清洁器Flip-HC和至少一个第二排序装置,所述第一排序装置和所述第二排序装置均与所述翻转半清洁器连接,所述方法具体通过以下方式实现:通过任一所述第一排序装置获取随机输入序列,对所述随机输入序列中的每两个元素进行比较,根据比较结果对所述随机输入序列中的元素进行排序,输出第一排序序列;通过所述翻转半清洁器获取至少两个所述第一排序序列,对至少两个所述第一排序序列进行翻转排序处理,输出双调序列;通过所述第二排序装置获取所述双调序列,对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。有效节省了比较器的数目,并且减少了比较器的级数,即缩减了排序延时。
在一个可能的设计中,通过所述翻转半清洁器对至少两个所述第一排序序列进行翻转排序处理,具体为:选择第一部分中的第一元素与第二部分中的第二元素进行比较,在第二元素与第一元素的比较结果符合设定大小关系时,将所述第二元素与所述第一元素的位置交换;其中,至少两个所述第一排序序列组成排序总序列,所述排序总序列中包括所述第一部分和所述第二部分;记录并输出发生位置交换的元素位置索引。
在一个可能的设计中,通过所述第二排序装置获取所述翻转半清洁器输出的发生位置交换的元素位置索引,确定所述双调序列中以所述元素位置索引分割的第一子序列和第二子序列;通过所述第二排序装置根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列,具体为:将第一子序列中的元素与所述第二子序列中的元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。
在一个可能的设计中,通过所述第一排序装置对所述随机输入序列中的每两个元素进行比较,根据比较结果对所述随机输入序列中的元素进行排序,输出第一排序序列,具体为:所述随机输入序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的第一排序序列。
在一个可能的设计中,通过所述第二排序装置对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列,具体地:所述双调序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的第二排序序列。
在一个可能的设计中,通过所述第二排序装置将xi与xj进行比较获得比较结果,具体为:若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;通过所述第二排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量,具体为:计算所述矩阵的第i行向量的行重。
在一个可能的设计中,通过所述第一排序装置将xi与xj进行比较获得比较结果,具体为:若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;通过所述第一排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量,具体为:计算所述矩阵的第i行向量的行重。
在一个可能的设计中,在获取随机输入序列之前,通过所述第一排序装置获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值,N个路径度量值组成两个长度为N/2的序列;若所述排序网络中包括两个所述第一排序装置,则通过任一所述第一排序装置获取随机输入序列时,包括:通过任一所述第一排序装置获取一个长度为N/2的序列。
第三方面,提供一种排序装置,所述排序装置为如第一方面和任一种可能的设计中所述的排序网络中的所述第一排序装置,或者,所述排序装置为如第一方面和任一种可能的设计中所述的排序网络中的所述第二排序装置。
第四方面,提供一种排序网络,所述排序网络包括如第一方面和任一种可能的设计中所述的排序网络中的至少两个第一排序装置、翻转半清洁器Flip-HC;或者,所述排序网络包括如第一方面和任一种可能的设计中所述的排序网络中翻转半清洁器Flip-HC和至少一个第二排序装置。
第五方面,提供一种排序方法,排序装置获取长度为n的输入序列,n为正整数;所述排序装置对所述输入序列中的每两个元素进行比较,得到比较结果;所述排序装置根据比较结果对所述输入序列中的元素进行排序,得到输出序列。这样有效节省了比较器的数目,并且减少了比较器的级数,即缩减了排序延时。
在一个可能的设计中,所述排序装置对所述输入序列中的每两个元素进行比较,得到比较结果,具体为:若所述输入序列为{x0……xn-1},则所述排序装置按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,所述排序装置将xi与xj进行比较,获得j>i时xi与xj的比较结果;当j<i时,所述排序装置根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;所述排序装置根据比较结果对所述输入序列中的元素进行排序,得到输出序列,具体为:所述排序装置根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;所述排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的序列。
在一个可能的设计中,所述将xi与xj进行比较,获得比较结果,具体为:若xi>xj,则比较结果记为1;若xi<xj,则比较结果记为0;所述排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量,具体为:所述排序装置计算所述矩阵的第i行向量的行重。
在一个可能的设计中,所述排序装置获取长度为n的输入序列之前,获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值。
可选的,n=N,所述输入序列由所述N个路径度量值的部分或者全部组成。
在一个可能的设计中,所述排序装置获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值之后,将所述N个路径度量值组成两个长度为N/2的序列,将所述两个长度为N/2的序列分别进行交织,获得两个单调序列;将所述两个单调序列进行合并,并对合并序列进行翻转半清洁处理;所述输入序列由所述翻转半清洁处理后序列的部分或者全部组成。
第六方面,提供一种排序装置,该装置具有实现上述第四方面和第四方面的任一种可能的设计中排序装置行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第七方面,提供一种排序装置,该装置的结构包括收发器和处理器,其中,所述处理器用于调用一组程序以执行如上述第四方面和第四方面的任一种可能的设计中所述的方法。
第八方面,提供了一种计算机存储介质,用于存储计算机程序,该计算机程序包括用于执行第二方面、第四方面、第二方面的任一可能的实施方式或第四方面的任一可能的实施方式中的方法的指令。
第九方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
附图说明
图1为现有技术中Bitonic排序网络示意图;
图2为本申请实施例中排序网络结构示意图;
图3为本申请实施例中排序方法流程示意图之一;
图4为本申请实施例中排序装置结构示意图之一;
图5为本申请实施例中排序装置结构示意图之二;
图6为本申请实施例中排序装置结构示意图之三;
图7为本申请实施例中排序网络应用示意图之一;
图8为本申请实施例中排序网络应用示意图之二;
图9为本申请实施例中排序方法流程示意图之二。
具体实施方式
下面将结合附图,对本申请实施例进行详细描述。
本申请实施例提供一种排序网络和排序方法,可以应用于编译、操作***、数据库管理***、路由、置换网络等领域。例如,可以应用于Polar码译码过程对多条路径的PM值进行排序以选取较优路径,排序网络可以是译码设备中的一部分,用于译码中过程中的排序应用部分。
本申请实施例中,排序网络中包括的排序装置通过对输入序列中的每两个元素进行比较,并按照比较结果对输入序列进行交织,能够一次性地将输入序列中的元素进行排序,即采用一级比较器就可以完成对输入序列的排序。相较于传统的采用比较器级数较多的排序网络,采用本申请实施例提供的排序网络,能够有效减少排序所采用的比较器的级数,也就是缩减了排序所用的时间,在译码领域能够进一步提高译码效率和译码性能。
下面将结合附图对本申请实施例提供排序网络和排序方法作详细介绍。
如图2所示,为本申请实施例提供的排序网络200中包括至少两个第一排序装置201、翻转半清洁器(Flip Half Cleaner,Flip-HC)202和至少一个第二排序装置203,第一排序装置201和第二排序装置203均与翻转半清洁器202连接。例如,第一排序装置201的输出端与翻转半清洁器202的输入端相连,翻转半清洁器202的输出端与第二排序装置203的输入端相连。图2中以排序网络200中包括两个第一排序装置201和一个第二排序装置203为例进行示意。
任一第一排序装置201,用于获取随机输入序列,对随机输入序列中的每两个元素进行比较,根据比较结果对随机输入序列中的元素进行排序,输出第一排序序列;若随机输入序列的长度为n,则第一排序装置201需要比较器的数目为
翻转半清洁器202,用于获取上述至少两个第一排序装置201输出的至少两个第一排序序列,对至少两个第一排序序列进行翻转排序处理,输出双调序列;
第二排序装置203,用于获取翻转半清洁器202输出的双调序列,对双调序列中的每两个元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列。若双调序列的长度为n,则第二排序装置203需要比较器的数目为
下面具体介绍一些可能的实现方式。
翻转半清洁器202在执行对上述至少两个第一排序序列进行翻转排序处理时,具体用于:
选择第一部分中的第一元素与第二部分中的第二元素进行比较,在第二元素与第一元素的比较结果符合设定大小关系时,将所述第二元素与所述第一元素的位置交换;其中,至少两个所述第一排序序列组成排序总序列,排序总序列中包括所述第一部分和所述第二部分;记录并输出发生位置交换的元素位置索引。例如,长度为n的排序总序列包括上半部分(即第一部分)和下半部分(第二部分),翻转半清洁器202选择上半部分的第一个元素与下半部分的最后一个元素进行比较,若大于,则不交换,在翻转标识序列中记录0;若小于,则交换两个元素位置,并在翻转标识序列中记录1。然后选择上半部分的第二个元素与下半部分的倒数第二个元素进行比较,比较方法一致,直到比较完排序总序列所有元素,最终生成翻转标识序列,翻转标识序列长度为n/2。
第二排序装置203还用于:
获取翻转半清洁器202输出的发生位置交换的元素位置索引,确定双调序列中以元素位置索引分割的第一子序列和第二子序列;
第二排序装置203在根据比较结果对双调序列中的元素进行排序,输出第二排序序列时,具体用于:
将第一子序列中的元素与第二子序列中的元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列。例如,翻转标识序列为{0 0 0 1 1 1 1 1},则发生位置交换的元素位置索引为0和1交替的位置,第3位和第4位。则双调序列中前3位为第一子序列,从第4位开始之后的元素为第二子序列。
第一排序装置201对随机输入序列中的每两个元素进行比较,根据比较结果对随机输入序列中的元素进行排序,输出第一排序序列,具体用于:
随机输入序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算矩阵的第i行向量中表征xi>xj的元素的数量,并按照数量对输入序列进行交织,输出交织后的第一排序序列。
第二排序装置203对双调序列中的每两个元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列,具体用于:
双调序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算矩阵的第i行向量中表征xi>xj的元素的数量,并按照数量对输入序列进行交织,输出交织后的第二排序序列。
第二排序装置203将xi与xj进行比较获得比较结果时,具体用于:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;
第二排序装置203计算矩阵的第i行向量中表征xi>xj的元素的数量时,具体用于:
计算矩阵的第i行向量的行重。
第一排序装置201将xi与xj进行比较获得比较结果时,具体用于:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;
第一排序装置201计算矩阵的第i行向量中表征xi>xj的元素的数量时,具体用于:
计算矩阵的第i行向量的行重。
第一排序装置201还用于,在获取随机输入序列之前,获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值,N个路径度量值组成两个长度为N/2的序列;
若排序网络中包括两个第一排序装置201,则任一第一排序装置201获取随机输入序列时,具体用于:获取一个长度为N/2的序列。也就是说,N个路径度量值组成的长度为N的序列被两个第一排序装置201接收,其中一个第一排序装置201接收长度为N/2的序列。
基于图2所示的排序网络200,本申请实施例中还提供另一种排序网络,可以包括排序网络200中的至少两个第一排序装置201和Flip-HC202;或者,提供另一种排序网络,可以包括排序网络200中Flip-HC202和至少一个第二排序装置203。
下面详细介绍一下第一排序装置201和第二排序装置203如何通过比较序列中任意两个元素来实现序列的排序。以下叙述中,排序装置可以指代上述第一排序装置201,也可以指代第二排序装置203。第一排序装置201和第二排序装置203的排序方法类似。
如图3所示,第一排序装置201和第二排序装置203所应用的排序方法的具体流程如下所述。
步骤301、排序装置获取输入序列。
步骤302、排序装置对输入序列中的每两个元素进行比较,得到比较结果。
步骤303、排序装置根据比较结果对输入序列中的元素进行排序,得到输出序列。
可选的,排序装置可以通过如下方式实现上述步骤202和步骤203。
例如,输入序列可以用{x0……xn-1}表示,可以用{x1……xn}表示,两种表示方式只是元素序号的表达方法不一样而已,所采用的排序方法类似,本申请以输入序列用{x0……xn-1}表示为例进行介绍。输入序列中包括n个元素,分别用x0……xn-1表示。排序装置按照顺序依次选取第i个元素xi,i∈[0,n-1],即排序装置遍历输入序列中的每一个元素,依次选取第0个元素x0,第1个元素x1……第n-1个元素xn-1。每选择一个元素xi,获取xi与xj的比较结果,j∈[0,n-1],i≠j,也就是获取xi与{x0……xn-1}中除xi之外元素的比较结果。比较结果可以是大小关系,例如,比较xi是否大于xj,若大于,则比较结果的值取1,否则取0。具体获取xi与xj的比较结果时,一部分值采用比较器进行比较,一部分值可以采用对已获得结果取反操作得到。其中,当j>i时,利用比较器将xi与xj进行比较,获得j>i时xi与xj的比较结果;当j<i时,根据已经获取的第j个元素xj与xi的比较结果,获得j<i时xi与xj的比较结果,例如将已经获取的第j个元素xj与xi的比较结果进行取反操作,获得j<i时xi与xj的比较结果。举例来说,选择第0个元素x0,i=0,j=1、2、……n-1,每一个j元素均大于i,因此排序装置需要将x0依次与x1、…、xn-1进行比较,获得比较结果;然后选择第1个元素x1,i=1,j=0、2、……n-1,当j=2、……n-1时,j>i,排序装置需要将x1依次与x2、…、xn-1进行比较,获得比较结果,但是j=0时,j<i,x1与x0的比较结果在选择第0个元素x0时已经获取,在此不用比较器再一次进行比较,而根据选择第0个元素x0时x0与x1的比较结果即可得出x1与x0的比较结果。若比较结果采用xi是否大于xj表示,则将选择第0个元素x0时x0与x1的比较结果进行取反操作,即可得出x1与x0的比较结果,x0>x1为真,结果记为1,则x1>x0为假,结果记为0。
排序装置根据比较结果生成一个矩阵,其中,该矩阵的第i个行向量中包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果。在选择一个元素xi,获取xi与xj的比较结果后,将xi与xj的比较结果记录在矩阵的第i行,矩阵中共包括n行,即第0~第n-1行。计算矩阵的第i个行向量中表征xi>xj的元素的数量,并按照该数量对输入序列进行交织,输出交织后的序列。若采用上述1、0来表示比较结果,xi>xj,则比较结果记为1;xi<xj,则比较结果记为0。矩阵中的元素用1、0表示。那么,计算矩阵的第i个行向量中表征xi>xj的元素的数量,即计算矩阵的第i个行向量的行重。若行重为2,则表示第i行中有2个元素1,表示xi在输入序列中有2个元素比xi小,其余均比xi大。
举例来说,假设n=4,输入序列用{x0,x1,x2,x3}表示,则令
d0={x0>x1,x0>x2,x0>x3}
可见,矩阵D中非取反得到的元素需要采用比较器进行比较,当n=4时,需要6个比较器,该6个比较器并行计算,在一级比较器中实现。
设W(di)为D中每行的行重,输出序列用P={p0,p1,p2,p3}表示,则根据行重对输入序列进行交织得到输出序列的关系可以表示为:
pi=xj|W(dj)=i(i∈[0,3])。
若上述矩阵的第i个行向量中只包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果,则矩阵为n行(n-1)列矩阵;
基于图3所示的第一排序装置201和第二排序装置203所应用的排序方法的同一发明构思,如图4所示,本申请实施例还提供一种排序装置400,用于执行图3所示的排序方法。排序装置400可以是第一排序装置201,执行第一排序装置201所执行的方法,排序装置400也可以是第二排序装置203,执行第二排序装置203所执行的方法。排序装置400包括:
输入单元401,用于获取长度为n的输入序列。
处理单元402,用于对输入序列中的每两个元素进行比较,得到比较结果。
处理单元402,还用于根据比较结果对输入序列中的元素进行排序,得到输出序列。
输出单元403,用于输出得到的输出序列。
处理单元402用于:
若输入序列为{x0……xn-1},则按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算矩阵的第i行向量中表征xi>xj的元素的数量,并按照数量对输入序列进行交织,输出交织后的序列。
可选的,处理单元402用于:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;以及计算矩阵的第i行向量的行重。
可选的,矩阵为n行(n-1)列矩阵;或者,矩阵为n行n列矩阵,其中,n行n列矩阵的第i行向量中还包括第i个列元素,第i个列元素设置为1。
可选的,排序装置400可以是第一排序装置201时,处理单元402还用于:获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值。
可选的,输入序列由N个路径度量值的部分或者全部组成。
可选的,处理单元402还用于:在获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值之后,将N个路径度量值组成两个长度为N/2的序列,将两个长度为N/2的序列分别进行交织,获得两个单调序列;将两个单调序列进行合并,并对合并序列进行翻转半清洁处理;输入序列由翻转半清洁处理后序列的部分或者全部组成。
上述描述中,若排序装置400可以是第一排序装置201,则输入序列为上述随机输入序列,输出序列为上述第一排序序列;若排序装置400可以是第二排序装置203,则输入序列为上述双调序列,输出序列为第二排序序列。
基于与图3所示的排序方法的同一发明构思,如图5所示,本申请实施例还提供一种排序装置500,该装置500可用于执行图3所示的排序方法。排序装置500可以是第一排序装置201,执行第一排序装置201所执行的方法,排序装置500也可以是第二排序装置203,执行第二排序装置203所执行的方法。其中,排序装置500包括收发器501、处理器502,处理器502用于执行一组代码,当代码被执行时,该执行使得处理器502执行图2所示的排序方法。
处理器502可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
处理器502还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
可选的,排序装置500还可以包括存储器503,用于存储处理器502执行的代码,存储器503可以包括易失性存储器(volatile memory),例如随机存取存储器(random-accessmemory,RAM);存储器503也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器503还可以包括上述种类的存储器的组合。
存储器503也可以和处理器502集成在一起。处理单元402可以由处理器502实现,输入单元401和输出单元403可以由收发器501实现。
可选的,排序装置500可以是芯片或者集成电路。
若如图3所述,将输入序列中第i个元素与其余元素的比较结果生成矩阵中第i个行向量,如图6所示,排序装置500为集成电路,则排序装置500由第一电路601、第二电路602和第三电路603集成。其中,第一电路601中包括比较器6011和反相器6012,针对输入序列{x0……xn-1},比较器6011用于当j>i时将xi与xj进行比较,反相器6012用于当j<i时将已经获取的第j个元素xj与xi的比较结果进行取反操作,第一电路601生成矩阵[d0,……,dn-1],其中d0,……,dn-1为矩阵中的行向量,第一电路601输出矩阵中行向量给第二电路602,第二电路602用于计算每行的行重,输出每行的行重{W(do)……W(dn-1)},具体对每行向量中元素1的个数进行累加,获得每行行重,累加次数与输入序列的长度n有关,累加的结果位宽为log(n)。第三电路603以第二电路602输出的行重{W(do)……W(dn-1)}作为控制信号,对输入序列的元素进行交织,可以称为交织电路,得到输出序列{po……Pn-1}。
下面结合具体的应用场景对本申请实施例提供的排序方法作进一步详细说明。以Polar码译码的应用场景为例。
Polar码的有效译码算法是SC算法,即对下一比特的估计值可以根据接收信号和已有的比特估计序列通过计算下一比特为0或为1的信道的转移概率进行逐个判决。SC算法的性能较差,在此基础上,有列表(LIST)方法,即保存多个度量值较优的比特序列路径,下一比特译码的优选路径从多个路径上基础进行***并排序选取较优路径的方法,称为SCL算法。可知,SC算法是SCL算法在LIST=1时的特殊情况。若LIST=L,L为2的幂,每个bit的译码需要在N条备选路径中选择L条PM最优的路径,N=2M*L。SCL算法中,排序模块需对L条路径的所有***情形的路径度量(Path Metric,PM)值进行排序,只有经过优选的路径才能作为下一比特译码时的路径;且对每个比特译码都需要对路径进行排序。故排序模块是SCL算法的关键路径,其计算延迟限制了Polar码SCL译码器的吞吐率的提升。
排序模块常采用图1所示的Bitonic排序网络,本申请实施例中,通过上述图2所示的排序方法对图1所示的Bitonic排序网络进行优化。当然图1所示的Bitonic排序网络为16输入16输出,输入输出的数量只是一种举例,并不作为本申请实施例排序方法应用的限制。
如图1所示,长度为16的输入序列可以分成两个长度为8的输入子序列,对两个长度为8的输入子序列进行类似的排序操作,前一部分可以看做两个8输入8输出的排序网络。经过两个8输入8输出的排序网络后,输出长度为16的双调序列。长度为16的双调序列经过翻转半清洁器(Flip Half Cleaner,Flip HC)进行翻转,将较大的值在上半部分输出,上半部分输出长度为8的双调序列,较小的值在下半部分输出,下半部分输出长度为8的双调序列,共输出长度为16的翻转序列。长度为16的翻转序列经过两个Bitonic排序器进行排序,若LIST数量为8,则共有16种分支可能,且最后只需要前8个结果,因此图1中虚线框出的下半部分8输入Bitonic排序器可以略去,这种排序网络称为部分排序网络。Flip-HC上半部分输出长度为8的双调序列经过双调排序器后,可以按照排序顺序输出。传统排序网络的每一级之间是串行比较的,长度为16的输入序列完全比较所采用的比较器级数为10级。
本申请实施例中,如图7所示,可以采用图2所示的排序网络200,对长度为16的输入序列进行处理,最终输出长度为8的排序序列。长度为16的输入序列可以分成两个长度为8的输入子序列,采用两个第一排序装置对两个长度为8的输入子序列进行类似的排序操作,经过两个8输入8输出的第一排序装置后,输出两个第一排序序列,两个第一排序序列组成的长度为16的双调序列。长度为16的双调序列经过Flip-HC进行翻转,将较大的值在上半部分输出,上半部分输出长度为8的双调序列,较小的值在下半部分输出,下半部分输出长度为8的双调序列,共输出长度为16的翻转序列。若只需要前8个结果,则下半部分输出长度为8的双调序列省略,下半部分采用的第二排序装置在图7中用虚线表示可以省略。第二排序装置对上半部分输出的长度为8的双调序列进行排序,输出第二排序序列。可见,本申请实施例排序网络中排序装置采用并行比较,长度为16的输入序列完全比较所采用的比较器级数为3级,较传统排序网络可以节省7级,延时降低70%,有效缩减了传输时延。
另一种可能的实现方式中,如图8所示,排序网络中可以采用两个4输入4输出第二排序装置。同样,若只需要前8个结果,则对下半部分双调序列的排序省略,可见,本申请实施例排序网络中排序装置采用并行比较,长度为16的输入序列完全比较所采用的比较器级数为4级,较传统排序网络可以节省6级,延时降低60%,有效缩减了传输时延。
通过第一排序装置和第二排序装置可以有效减少排序所用的比较器数目,并可以缩减排序所用的时延。假设第一排序装置的输入序列和第二排序装置的输入序列长度均为n,分别与传统的排序网络相比,在比较器数目和缩减延时的情况如表1和表2所示。
表1
表2
进一步地,第二排序装置的输入是Flip-HC的一半输出。n输入的Flip-HC总可以输出两个长度为n/2的序列:一个为清洁序列,只含有0或1;另一个为双调序列,含有0和1。可以利用Flip-HC的输出的有序性简化第二排序装置中等价单元的比较。
假设排序网络的比较器始终将较大的值在上方输出,将较小的值在下方输出。在实际比较过程中,无法直接通过Flip-HC的原始输出判断第二排序装置的输入是清洁序列还是双调序列。假设Flip-HC的两个8输入用[1,2,…8]和[9,10,…,16]表示,是两个已排序的序列,即Flip-HC的16输入本身是一个双调序列。则Flip-HC的第一个输出是1和16之间的较大者,第二个输出是2和15之间的较大者。若[1,2,…8]全部元素都比[9,10,…,16]中的对应元素大,那么Flip-HC的输出为[1,2,…8,9,10,…,16];若[1,2,…8]中有元素比[9,10,…,16]中的对应小,则Flip-HC的那一个比较器需要对两个输入进行交换。由于[1,2,…8]和[9,10,…,16]都是排序序列,当有一对输入需要交换时,说明其后的所有输入对都需要交换,否则输出序列就不是两个长度为8的双调序列,需要注意的是,单调序列是双调序列的特殊情形。
举例说明,假设Flip-HC的两个8输入序列为[50 50 48 41 37 16 9 5]和[80 7671 58 44 25 8 3],依次进行比较后,第一个需要输出的是50与3之间的较大者50,由于未交换位置,在翻转标识序列f中记录0;第二个需要输出的是50与8之间的较大者50,在翻转标识序列f中记录0,以此类推。可见,第四个需要输出的是41与44之间的较大者44,将两个元素交换位置,在翻转标识序列f中记录1。最终生成的翻转标识序列f=[0 0 0 1 1 1 11],将翻转标识序列和最终生成的两个双调序列输出。最终生成的上半部分输出的双调序列为[50 50 48 44 58 71 76 80],为谷型的双调序列;下半部分输出的双调序列为[3 825 41 37 16 9 5],为峰型的双调序列。
由于f序列在第3和第4之间存在台阶,对应的上半部分输出的双调序列的趋势变化也在第3和第4之间,最小值是第3个元素或第4个元素;对应的下半部分输出的双调序列的趋势变化也在第3和第4之间,最大值是第3个元素或第4个元素。因此,可以利用f序列的台阶位置确定双调序列的最小值或最大值的位置。
对于长度为8的双调序列[a1 a2 a3 a4 a5 a6 a7 a8],若已知f序列台阶在ai和ai+1之间,则:
当i=1时,第二排序装置需要对[a1]中的元素和[a2 a3 a4 a5 a6 a7 a8]中的元素的比较,需7个比较器;
i=2时,第二排序装置需要对[a1 a2]中的元素和[a3 a4 a5 a6 a7 a8]中的元素的比较,需12个比较器;
i=3时,第二排序装置需要对[a1 a2 a3]中的元素和[a4 a5 a6 a7 a8]中的元素的比较,需15个比较器;
i=4时,第二排序装置需要对[a1 a2 a3 a4]中的元素和[a5 a6 a7 a8]中的元素的比较,需16个比较器;
i=5时,第二排序装置需要对[a1 a2 a3 a4 a5]中的元素和[a6 a7 a8]中的元素的比较,需15个比较器;
i=6时,第二排序装置需要对[a1 a2 a3 a4 a5 a6]中的元素和[a7 a8]中的元素的比较,需12个比较器;
i=7时,第二排序装置需要对[a1 a2 a3 a4 a5 a6 a7]中的元素和[a8]中的元素的比较,需7个比较器同理;
完成上述比较后,根据比较的结果进行相应的交换即可。
可见,基于上述的方案,Flip-HC输出增加f序列的值,即可在第二排序装置中可以节省比较器数量,由于i的值是互斥的,优化后的第二排序装置只需要16个比较器即可完成所有情形下的比较,相比第一排序装置的方式还可以节省12个比较器。
基于如图2所示排序网络同一发明构思,相对应的如图9所示,本申请实施例还提供一种排序方法,具体如下所述。
步骤901、通过任一第一排序装置获取随机输入序列,对随机输入序列中的每两个元素进行比较,根据比较结果对随机输入序列中的元素进行排序,输出第一排序序列;
步骤902、通过翻转半清洁器获取至少两个第一排序序列,对至少两个第一排序序列进行翻转排序处理,输出双调序列;
步骤903、通过第二排序装置获取双调序列,对双调序列中的每两个元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列。
可选的,通过翻转半清洁器对至少两个第一排序序列进行翻转排序处理,包括:
选择第一部分中的第一元素与第二部分中的第二元素进行比较,在第二元素与第一元素的比较结果符合设定大小关系时,将第二元素与第一元素的位置交换;其中,至少两个第一排序序列组成排序总序列,排序总序列中包括第一部分和第二部分;
记录并输出发生位置交换的元素位置索引。
可选的,该方法还包括:
通过第二排序装置获取翻转半清洁器输出的发生位置交换的元素位置索引,确定双调序列中以元素位置索引分割的第一子序列和第二子序列;
通过第二排序装置根据比较结果对双调序列中的元素进行排序,输出第二排序序列,包括:
将第一子序列中的元素与第二子序列中的元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列。
可选的,通过第一排序装置对随机输入序列中的每两个元素进行比较,根据比较结果对随机输入序列中的元素进行排序,输出第一排序序列,包括:
随机输入序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;
其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算矩阵的第i行向量中表征xi>xj的元素的数量,并按照数量对输入序列进行交织,输出交织后的第一排序序列。
可选的,通过第二排序装置对双调序列中的每两个元素进行比较,根据比较结果对双调序列中的元素进行排序,输出第二排序序列,包括:
双调序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;
其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算矩阵的第i行向量中表征xi>xj的元素的数量,并按照数量对输入序列进行交织,输出交织后的第二排序序列。
可选的,通过第二排序装置将xi与xj进行比较获得比较结果,包括:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;
通过第二排序装置计算矩阵的第i行向量中表征xi>xj的元素的数量,包括:
计算矩阵的第i行向量的行重。
通过第一排序装置将xi与xj进行比较获得比较结果,包括:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;
通过第一排序装置计算矩阵的第i行向量中表征xi>xj的元素的数量,包括:
计算矩阵的第i行向量的行重。
可选的,方法还包括:
在获取随机输入序列之前,通过第一排序装置获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值,N个路径度量值组成两个长度为N/2的序列;
若排序网络中包括两个第一排序装置,则通过任一第一排序装置获取随机输入序列时,包括:通过任一第一排序装置获取一个长度为N/2的序列。
本申请实施例提供了一种计算机存储介质,用于存储计算机程序,该计算机程序包括用于执行图9所示的排序方法。
本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行图9所示的排序方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种排序网络,其特征在于,包括至少两个第一排序装置、翻转半清洁器Flip-HC和至少一个第二排序装置,所述第一排序装置和所述第二排序装置均与所述翻转半清洁器连接,其中:
任一所述第一排序装置,用于获取随机输入序列,对所述随机输入序列中的每两个元素进行比较,根据比较结果对所述随机输入序列中的元素进行排序,输出第一排序序列;
所述翻转半清洁器,用于获取至少两个所述第一排序装置输出的至少两个所述第一排序序列,对至少两个所述第一排序序列进行翻转排序处理,输出双调序列;
所述第二排序装置,用于获取所述翻转半清洁器输出的所述双调序列,对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。
2.如权利要求1所述的排序网络,其特征在于,所述翻转半清洁器在执行对至少两个所述第一排序序列进行翻转排序处理时,具体用于:
选择第一部分中的第一元素与第二部分中的第二元素进行比较,在第二元素与第一元素的比较结果符合设定大小关系时,将所述第二元素与所述第一元素的位置交换;其中,至少两个所述第一排序序列组成排序总序列,所述排序总序列中包括所述第一部分和所述第二部分;
记录并输出发生位置交换的元素位置索引。
3.如权利要求2所述的排序网络,其特征在于,所述第二排序装置还用于,获取所述翻转半清洁器输出的发生位置交换的元素位置索引,确定所述双调序列中以所述元素位置索引分割的第一子序列和第二子序列;
所述第二排序装置在根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列时,具体用于:
将第一子序列中的元素与所述第二子序列中的元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。
4.如权利要求1~3任一项所述的排序网络,其特征在于,所述第二排序装置对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列,具体用于:
所述双调序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;
其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的第二排序序列。
5.如权利要求4所述的排序网络,其特征在于,所述第二排序装置将xi与xj进行比较获得比较结果时,具体用于:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;
所述第二排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量时,具体用于:
计算所述矩阵的第i行向量的行重。
6.如权利要求1~3任一项所述的排序网络,其特征在于,所述第一排序装置还用于,在获取随机输入序列之前,获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值,N个路径度量值组成两个长度为N/2的序列;
若所述排序网络中包括两个所述第一排序装置,则任一所述第一排序装置获取随机输入序列时,具体用于:
获取一个长度为N/2的序列。
7.一种排序方法,其特征在于,所述方法应用于排序网络,所述排序网络中包括至少两个第一排序装置、翻转半清洁器Flip-HC和至少一个第二排序装置,所述第一排序装置和所述第二排序装置均与所述翻转半清洁器连接,所述方法包括:
通过任一所述第一排序装置获取随机输入序列,对所述随机输入序列中的每两个元素进行比较,根据比较结果对所述随机输入序列中的元素进行排序,输出第一排序序列;
通过所述翻转半清洁器获取至少两个所述第一排序序列,对至少两个所述第一排序序列进行翻转排序处理,输出双调序列;
通过所述第二排序装置获取所述双调序列,对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。
8.如权利要求7所述的方法,其特征在于,通过所述翻转半清洁器对至少两个所述第一排序序列进行翻转排序处理,包括:
选择第一部分中的第一元素与第二部分中的第二元素进行比较,在第二元素与第一元素的比较结果符合设定大小关系时,将所述第二元素与所述第一元素的位置交换;其中,至少两个所述第一排序序列组成排序总序列,所述排序总序列中包括所述第一部分和所述第二部分;
记录并输出发生位置交换的元素位置索引。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
通过所述第二排序装置获取所述翻转半清洁器输出的发生位置交换的元素位置索引,确定所述双调序列中以所述元素位置索引分割的第一子序列和第二子序列;
通过所述第二排序装置根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列,包括:
将第一子序列中的元素与所述第二子序列中的元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列。
10.如权利要求7~9任一项所述的方法,其特征在于,通过所述第二排序装置对所述双调序列中的每两个元素进行比较,根据比较结果对所述双调序列中的元素进行排序,输出第二排序序列,包括:
所述双调序列为{x0……xn-1},按序选择第i个元素xi,获取xi与xj的比较结果,i、j∈[0,n-1],i≠j;
其中,当j>i时,将xi与xj进行比较,获得j>i时xi与xj的比较结果;
当j<i时,根据已经获取的针对第j个元素得到的xj与xi的比较结果,获得j<i时xi与xj的比较结果;
根据比较结果,生成矩阵,其中,所述矩阵的第i行向量包括:j>i时xi与xj的比较结果,与j<i时xi与xj的比较结果;
计算所述矩阵的第i行向量中表征xi>xj的元素的数量,并按照所述数量对所述输入序列进行交织,输出交织后的第二排序序列。
11.如权利要求10所述的方法,其特征在于,通过所述第二排序装置将xi与xj进行比较获得比较结果,包括:
若xi>xj,则将比较结果记为1;若xi<xj,则将比较结果记为0;
通过所述第二排序装置计算所述矩阵的第i行向量中表征xi>xj的元素的数量,包括:
计算所述矩阵的第i行向量的行重。
12.如权利要求7~9任一项所述的方法,其特征在于,所述方法还包括:
在获取随机输入序列之前,通过所述第一排序装置获取连续消除列表SCL译码算法中N条备选路径的N个路径度量值,N个路径度量值组成两个长度为N/2的序列;
若所述排序网络中包括两个所述第一排序装置,则通过任一所述第一排序装置获取随机输入序列时,包括:通过任一所述第一排序装置获取一个长度为N/2的序列。
13.一种排序装置,其特征在于,所述排序装置为如权利要求1~6任一项所述的排序网络中的所述第一排序装置,或者,所述排序装置为如权利要求1~6任一项所述的排序网络中的所述第二排序装置。
14.一种排序网络,其特征在于,所述排序网络包括如权利要求1~6任一项所述的排序网络中的至少两个第一排序装置、翻转半清洁器Flip-HC;或者,所述排序网络包括如权利要求1~6任一项所述的排序网络中翻转半清洁器Flip-HC和至少一个第二排序装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710393761.1A CN108958702B (zh) | 2017-05-27 | 2017-05-27 | 一种排序网络、排序方法及排序装置 |
PCT/CN2017/115459 WO2018218927A1 (zh) | 2017-05-27 | 2017-12-11 | 一种排序网络、排序方法及排序装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710393761.1A CN108958702B (zh) | 2017-05-27 | 2017-05-27 | 一种排序网络、排序方法及排序装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108958702A CN108958702A (zh) | 2018-12-07 |
CN108958702B true CN108958702B (zh) | 2021-01-15 |
Family
ID=64454335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710393761.1A Active CN108958702B (zh) | 2017-05-27 | 2017-05-27 | 一种排序网络、排序方法及排序装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108958702B (zh) |
WO (1) | WO2018218927A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112737596A (zh) | 2021-01-07 | 2021-04-30 | 苏州浪潮智能科技有限公司 | 一种基于排序网络的动态霍夫曼编码方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088353A (en) * | 1997-07-08 | 2000-07-11 | Lucent Technologies, Inc. | Sorting networks having reduced-area layouts |
CN102750131A (zh) * | 2012-06-07 | 2012-10-24 | 中国科学院计算机网络信息中心 | 一种面向gpu的双调归并排序方法 |
CN103514042A (zh) * | 2012-06-18 | 2014-01-15 | 中国科学院计算机网络信息中心 | 一种双调归并排序调优方法及装置 |
CN103605493A (zh) * | 2013-11-29 | 2014-02-26 | 哈尔滨工业大学深圳研究生院 | 基于图形处理单元的并行排序学习方法及*** |
CN105718425A (zh) * | 2016-01-15 | 2016-06-29 | 武汉大学 | 一种非线性数据全局互相关性的并行定量计算方法 |
CN106888025A (zh) * | 2017-01-19 | 2017-06-23 | 华中科技大学 | 一种基于极化码的级联纠错编译码方法和*** |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4441165A (en) * | 1981-09-28 | 1984-04-03 | Hughes Aircraft Company | Real-time ordinal-value filters utilizing complete intra-data comparisons |
JP4143288B2 (ja) * | 2001-11-19 | 2008-09-03 | キヤノン株式会社 | メディアンフィルタ処理装置 |
US20100091018A1 (en) * | 2008-07-11 | 2010-04-15 | Advanced Micro Devices, Inc. | Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density |
US8264391B2 (en) * | 2010-10-12 | 2012-09-11 | Texas Instruments Incorporated | Area efficient selector circuit |
CN103312939A (zh) * | 2012-03-14 | 2013-09-18 | 富士通株式会社 | 中值滤波装置和方法 |
US9921969B2 (en) * | 2015-07-14 | 2018-03-20 | Western Digital Technologies, Inc. | Generation of random address mapping in non-volatile memories using local and global interleaving |
US9691460B2 (en) * | 2015-10-07 | 2017-06-27 | Korea University Research And Business Foundation | Memory device based on domain wall memory and reading and writing method thereof, and apparatus for digital signal processing using the same |
-
2017
- 2017-05-27 CN CN201710393761.1A patent/CN108958702B/zh active Active
- 2017-12-11 WO PCT/CN2017/115459 patent/WO2018218927A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088353A (en) * | 1997-07-08 | 2000-07-11 | Lucent Technologies, Inc. | Sorting networks having reduced-area layouts |
CN102750131A (zh) * | 2012-06-07 | 2012-10-24 | 中国科学院计算机网络信息中心 | 一种面向gpu的双调归并排序方法 |
CN103514042A (zh) * | 2012-06-18 | 2014-01-15 | 中国科学院计算机网络信息中心 | 一种双调归并排序调优方法及装置 |
CN103605493A (zh) * | 2013-11-29 | 2014-02-26 | 哈尔滨工业大学深圳研究生院 | 基于图形处理单元的并行排序学习方法及*** |
CN105718425A (zh) * | 2016-01-15 | 2016-06-29 | 武汉大学 | 一种非线性数据全局互相关性的并行定量计算方法 |
CN106888025A (zh) * | 2017-01-19 | 2017-06-23 | 华中科技大学 | 一种基于极化码的级联纠错编译码方法和*** |
Non-Patent Citations (1)
Title |
---|
并行双调排序算法的有效实现及性能分析;顾乃杰;《并行双调排序算法的有效实现及性能分析》;20021015;全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2018218927A1 (zh) | 2018-12-06 |
CN108958702A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426484B (zh) | 一种数据排序装置、方法及芯片 | |
US11372929B2 (en) | Sorting an array consisting of a large number of elements | |
Cai et al. | Grotesque: noisy group testing (quick and efficient) | |
CN108964671B (zh) | 一种译码方法及译码器 | |
CN112015366B (zh) | 数据排序方法、数据排序装置及数据库*** | |
CN113076312A (zh) | 归并树形排序装置、排序***及排序方法 | |
CN108958702B (zh) | 一种排序网络、排序方法及排序装置 | |
US10101965B1 (en) | Method and apparatus for high speed streaming sorter | |
JP5309354B2 (ja) | 高速パターンマッチング装置の探索方法 | |
US7734456B2 (en) | Method and apparatus for priority based data processing | |
Miller et al. | Synthesizing reversible circuits for irreversible functions | |
Hayfron-Acquah et al. | Improved selection sort algorithm | |
CN108988873B (zh) | 一种Polar码处理方法、译码器和终端 | |
Shi et al. | An enhanced multiway sorting network based on n-sorters | |
Szyprowski et al. | Optimal 4-bit reversible mixed-polarity Toffoli circuits | |
CN106682290B (zh) | 可编程逻辑器件布线方法及装置 | |
US10303624B2 (en) | Arbitrating and multiplexing circuitry | |
Dey et al. | Interleaver design for deep neural networks | |
Wang et al. | Optimized sorting network for successive cancellation list decoding of polar codes | |
JP6602392B2 (ja) | 多数決回路 | |
CN111404558B (zh) | 一种Polar码译码的方法、译码器及计算机存储介质 | |
JP2018124813A (ja) | 演算処理装置 | |
CN109358992B (zh) | 一种基于部分可重配技术和排列算法的fpga测试方法 | |
CN112651198A (zh) | 非因果电路划分的方法及门级电路并行仿真的方法 | |
Schaeffer et al. | A cost minimization approach to synthesis of linear reversible circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |