CN115167809A - 一种基于流水线处理的排序电路实现方法 - Google Patents
一种基于流水线处理的排序电路实现方法 Download PDFInfo
- Publication number
- CN115167809A CN115167809A CN202210917881.8A CN202210917881A CN115167809A CN 115167809 A CN115167809 A CN 115167809A CN 202210917881 A CN202210917881 A CN 202210917881A CN 115167809 A CN115167809 A CN 115167809A
- Authority
- CN
- China
- Prior art keywords
- sequence
- data
- sorting
- shift register
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012163 sequencing technique Methods 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 title claims abstract description 16
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000001174 ascending effect Effects 0.000 claims description 8
- 230000003111 delayed effect Effects 0.000 claims 2
- 238000013479 data entry Methods 0.000 claims 1
- 230000008901 benefit Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000015654 memory Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 240000007320 Pinus strobus Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000006467 substitution reaction 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/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
-
- 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
- G06F9/30134—Register stacks; shift registers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于流水线处理的排序电路实现方法,包括将待排序序列按时钟依次输入排序电路;第一个待排序数据将被从移阶寄存器输入口直接存入移阶寄存器的第一阶寄存器,并设置输入数据对应的排序序号为0;从第二个待排序数据置于移阶寄存器输入口开始,移阶寄存器中每阶寄存器已存储的待排序数据都将与输入口或移阶寄存器的最后一阶数据比较,并根据比较结果判断是否对自身存储的排序序号加一,且将更新后的排序序号连同本阶寄存器存储的被排序数据一起,在下一时钟更新至下一阶寄存器中;移阶寄存器从第二阶开始,每一阶均执行比较与判断运算,在移阶寄存器的输出口输出待排序数据。
Description
技术领域
本发明涉及HDL电路数据排序领域,具体涉及一种基于流水线处理的排序电路实现方法。
背景技术
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。排序在工作和生活中有着巨大的作用。从人类视角看,排序可以使数据更容易阅读,对人类更友好;在排序基础上的搜索算法也更容易实现,能够更快的从整个数据集中检索结果。从计算机科学的角度看,由于计算机、程序或者应用需要搜索的数据集往往是非常庞大的,高效的排序将极大的提高工作效率。
目前的排序需求解决方案绝大多数是通过CPU、MCU之类的处理器执行排序算法实现,这类实现方法虽然有着设计灵活的优势,但由于已被证明排序算法的时间复杂度下限为O(nlog(n)),即对于长度为n的序列,在CPU或MCU上执行排序需要的时间下限为nlog(n)单位排序次数,再加上CPU/MCU上的数据存取操作,执行时间将被再次延长。再考虑到CPU、MCU接口电路的复杂性,仅仅为排序功能引入一个CPU或MCU将大大增加设计的复杂度,同时对ASIC设计来说也将额外增加更多的面积。
发明内容
本发明提供了一种基于流水线处理的排序电路实现方法,解决当前针对排序需求的解决方案需要引入复杂的CPU/MCU导致设计复杂度陡增、速度不够快、消耗额外ASIC面积等问题。
本发明通过下述技术方案实现:
一种基于流水线处理的排序电路实现方法,包括:
执行排序运算时,将待排序序列按时钟依次输入排序电路;
第一个待排序数据将被从移阶寄存器输入口直接存入移阶寄存器的第一阶寄存器,并设置输入数据对应的排序序号为0;
从第二个待排序数据置于移阶寄存器输入口开始,移阶寄存器中每阶寄存器已存储的待排序数据都将与输入口或移阶寄存器的最后一阶数据比较,并根据比较结果判断是否对自身存储的排序序号加一,且将更新后的排序序号连同本阶寄存器存储的被排序数据一起,在下一时钟更新至下一阶寄存器中;
移阶寄存器从第二阶开始,每一阶均执行比较与判断运算,在移阶寄存器的输出口输出待排序数据以及其在排序后序列中的位置序号;
以位置序号作为存储单元的写地址,待排序数据作为存储单元的写数据,将数据写入整序用存储单元;待当前待排序序列所有数据都已写入整序用存储单元后,从存储单元的低地址开始依次累加读地址,并从存储单元的读数据输出口输出排序后的序列。
进一步的,所选用的移阶寄存器的长度等于待排序列长度与排序电路运算时延之和。
进一步的,排序电路设有输入比较阵列,输入比较阵列用于对移阶寄存器中各阶的存储项与输入的数据项做比较,在向移阶寄存器输入待排序列的数据项时,其比较方式为:
对于升序排序,当存储项大于或等于输入的数据项时,存储项对应的排序位置序号计数加一,否则保持不变;
对于降序排序,当存储项小于或等于输入的数据项时,存储项对应的排序位置序号计数加一,否则保持不变。
进一步的,当待排序列的最后一项已输入移阶寄存器后,将即将输出的数据项与移阶寄存器中存储的当前待排序列的未输出存储项进行比较,并根据比较结果更新排序的排序位置序号计数。
进一步的,排序电路设有输出比较阵列,输出比较阵列用于对移阶寄存器各阶存储的待排序列的每一项进行比较,其比较方式为:
对于升序排序,当存储项大于待输出的数据项时,存储项对应的排序位置序号计数加一,否则保持不变;
对于降序排序,当存储项小于待输出的数据项时,存储项对应的排序位置序号计数加一,否则保持不变。
进一步的,输出比较阵列执行后,对移阶寄存器输出的排序序列与其对应的排序位置序号分别依次执行整序存储与整序输出;
整序存储的执行方法为:将排序序列各项数据以其对应排序位置序号为写地址写入随机存储单元;
整序输出的执行方法为:排序序列执行完整序存储后,从0开始顺序累加读地址,并从随机存储单元读端口输出排序后的序列。
进一步的,在输入任一待排序列时,对其序列的最后一项数据还添加有结束标志;结束标志用于区分移阶寄存器中新输入的该待排序列与等待输出的其他待排序列。
进一步的,排序电路的时延为排序电路输出比较结果的延迟拍数,且移阶寄存器内各阶排序位置序号的更新阶位大于排序电路的输出延迟拍数。
进一步的,其特征在于随机存储单元包括第一随机存储单元与第二随机存储单元,第一随机存储单元与第二随机存储单元之间以乒乓缓存的方式交替执行整序存储与整序输出。
另一方面,本实施例提供了一种排序电路,用于执行上述的一种基于流水线处理的排序电路实现方法,包括:
排序位置序号计算单元与整序单元;
排序位置序号计算单元包括:
移阶寄存器;
输入比较器,输入比较器用于执行输入比较阵列;
输出比较器,输出比较器用于执行输出比较阵列;
整序单元包括第一随机存储器、第二随机存储器与地址累加器。
本发明与现有技术相比,具有如下的优点和有益效果:
1.运算延时小。现有的基于CPU/MCU的排序解决方案的时间复杂度下限为O(nlog(n)),假定程序经理想优化下,数据读取、数据写入可以与比较操作以流水线形式并行执行,对长度为n的序列排序也需要至少n×log(n)拍指令周期,再加上CPU/MCU与ASIC之间的通讯接口时延,总处理时延将更加庞大。本发明提供的排序电路实现方法实现了比较、排序位置序号计算、整序操作的流水线处理,数据项之间的比较运算和排序位置序号计算以并行方式执行,大大降低了排序运算的计算时延。
2.接口简单。基于CPU/MCU的排序解决方案需要为CPU/MCU设计复杂的总线数据交互接口,以及相关的总线数据交互协议,极大增加设计复杂度。本发明描述的排序电路则不需要复杂的总线数据交互接口或者总线数据交互协议,仅需要伴随被排序数据输入一个表示序列结束与否的标志即可,极大简化了交互接口。
3.可复用性强、实现难度低。本发明设计的排序电路基于HDL描述,可轻松的根据需求更改排序序列长度和被排序数据类型,除了可以处理标准的无符号整数、有符号整数外,还可以处理高度成熟的IEEE754标准浮点数,甚至可以根据需求自主定制被排序数据的比较器模块,具有极大的灵活性和易用性。
附图说明
为了更清楚地说明本发明示例性实施方式的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。在附图中:
图1为本发明实施例提供的排序电路实现步骤流程图;
图2为本发明实施例提供的排序电路顶层原理结构示意图;
图3为本发明实施例提供的排序位置序号计算单元原理示意图;
图4为本发明实施例提供的输入比较器原理示意图;
图5为本发明实施例提供的输出比较器原理示意图;
图6为本发明实施例提供的整序单元结构原理示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1
请参阅图1-图6,本实施例提供了一种基于流水线处理的排序电路实现方法,将待排序的序列按顺序输入本电路,本电路可以根据给定的排序序列长度n计算输入的各项数据在排序后序列中的排序位置序号,并输出按排序位置序号重新排列后的序列。本实施例是这样实现的:
执行排序运算时,将待排序序列按时钟依次输入排序电路;第一个待排序数据将被从移阶寄存器输入口直接存入移阶寄存器的第一阶寄存器,并设置输入数据对应的排序序号为0;从第二个待排序数据置于移阶寄存器输入口开始,移阶寄存器中每阶寄存器已存储的待排序数据都将与输入口或移阶寄存器的最后一阶数据比较,并根据比较结果判断是否对自身存储的排序序号加一,且将更新后的排序序号连同本阶寄存器存储的被排序数据一起,在下一时钟更新至下一阶寄存器中;移阶寄存器从第二阶开始,每一阶均按上述比较步骤执行,在移阶寄存器的输出口输出待排序数据以及其在排序后序列中的位置序号;以位置序号作为存储单元的写地址,待排序数据作为存储单元的写数据,将数据写入整序用存储单元;待当前待排序序列所有数据都已写入整序用存储单元后,从存储单元的低地址开始依次累加读地址,并从存储单元的读数据输出口输出排序后的序列。
也可以理解为,输入长度为n的待排序列,并按照输入顺序将待排序列存入到移阶寄存器;根据待排序列的数据项的输入顺序,将每一项数据项与移阶寄存器中前n-1阶的上一项数据项进行比较,并根据比较结果进行运算;将上述运算结果与当前数据项一起移入下一阶寄存器,并生成当前数据项的排序位置序号。排序电路的运算时延为c,则当待排序列的最后一项数据项已移入移阶寄存器的第c阶,且该项的排序位置序号已更新至移阶寄存器的第c阶存储单元后,在移阶寄存器的输出端输出排序后的序列。其中,在输入任一待排序列时,对其序列的最后一项数据添加结束标志;结束标志用于区分移阶寄存器中新输入的该待排序列与等待输出的其他待排序列。
请再次参阅图2与图3,令待排序列为SE,排序位置排序位置序号计数为SIDX,输入序列结束标示为SEF。其中输入阶(即第0阶)寄存器内容则由输入SE、设置为0的初始SIDX、输入SEF更新。其余各阶寄存器的SE、SEF由上一阶寄存器的SE、SEF更新;其余各阶的排序位置排序位置序号计数SIDX则根据各阶比较器输出结果更新。
请再次参阅图3与图4,在进行输入时,输入的序列数据联合其初始的排序位置排序位置序号0顺序输入移阶寄存器,同时将输入数据与移阶寄存器中前n-1阶中SEF置位的阶之前的各阶寄存器(不包含SEF置位的阶)中的被排序数据并行输入n-1个排序电路,在输入比较时,排序电路设有输入比较阵列,输入比较阵列用于对移阶寄存器中各阶的存储项与数据项做比较,在向移阶寄存器输入待排序列的数据项时,其比较方式为:对于升序排序,当存储项大于或等于输入的数据项时,存储项对应的排序位置序号计数加一,否则保持不变;对于降序排序,当存储项小于或等于输入的数据项时,存储项对应的排序位置序号计数加一,否则保持不变。因此根据输入比较器输出的结果对各阶寄存器中的SIDX做加1或保持不变的更新操作(对于升序排序,寄存器中SE大于输入SE,寄存器中的SIDX加1,否则保持不变;对于降序排序,寄存器中SE小于输入SE,寄存器中的SIDX加1,否则保持不变),并将更新结果存储于移阶寄存器第c阶到第c+n-1阶中。
之后,当待排序列的最后一项已输入移阶寄存器后,为了保证移阶寄存器输出的所有数据项排序位置序号计数都正确有效,此时将即将输出的数据项与移阶寄存器中存储的当前待排序列的未输出存储项进行比较,并根据比较结果更新排序的排序位置序号计数。
请再次参阅图3与图5,在准备进行输出时,当移阶寄存器输出端(即第c+n-1寄存器)数据有效后,输出端的被排序数据SE需要与其前面n-1阶寄存器中SEF置位的阶开始到输出端之前的阶中存储的被排序项SE做比较的结果需要用来更新这些阶的寄存器中的SIDX。落实到本实施例中,排序电路设有输出比较阵列,输出比较阵列用于对移阶寄存器各阶存储的待排序列的每一项进行比较,其比较方式为:对于升序排序,当存储项大于待输出的数据项时,存储项对应的排序位置序号计数加一,否则保持不变;对于降序排序,当存储项小于待输出的数据项时,存储项对应的排序位置序号计数加一,否则保持不变(对于升序排序,前n-1阶寄存器中,各阶寄存器存储的SE大于输出端的SE时,各阶寄存器中的SIDX加1,否则SIDX不变;对于降序排序,前n-1阶寄存器中,各阶寄存器存储的SE小于输出端的SE时,各阶寄存器中的SIDX加1,否则SIDX不变。)。由于比较器运算存在时延c,为了在数据项被移出移阶寄存器之前得到比较结果,需要提前c拍提取输出项和其前面的n-1项数据项送给比较器阵列,即取第n-1阶寄存器中的存储项作为即将输出项,第0阶到第n-2阶寄存器中的SE与第n-1阶的SE一起输入输出比较器阵列。
请再次参阅图6,完成上述比较步骤后,还要对移阶寄存器输出的排序序列与其对应的排序位置序号分别依次执行整序存储与整序输出。整序存储的执行方法为将排序序列各项数据以其对应排序位置序号为写地址写入随机存储单元;整序输出的执行方法为排序序列执行完整序存储后,从0开始顺序累加读地址,并从随机存储单元读端口输出排序后的序列。其中整序单元由随机存储单元(RAM)与地址累加器组成。随机存储单元包括第一随机存储单元与第二随机存储单元,第一随机存储单元与第二随机存储单元之间以乒乓缓存的方式交替执行整序存储与整序输出。移阶寄存器输出的序列结束标志SEF为1时触发乒乓选通信号切换。对执行存储工作的RAM,位置排序位置序号计算单元输出的数据项以其伴随输出的位置排序位置序号为地址写入RAM;而对执行输出工作的RAM,则从0开始顺序累加读地址,并从RAM读端口输出排序后的序列项,完成排序流程。
本实施例描述的排序电路实现了比较、排序位置序号计算、整序操作的流水线处理,数据项之间的比较运算和排序位置序号计算以并行方式执行,大大降低了排序运算的计算时延,总时延包括移阶寄存器时延n+c、整序存入时延n、整序读出时延n,以及双RAM输入输出乒乓选通时各2拍时延,仅为2*n+2+c拍左右,明显比基于CPU/MCU的解决方案时延低,且待排序列长度n越大低时延优势越大。
实施例2
本实施例公开了一种基于流水线处理的无符号整型数排序电路实现方法,根据实施例1中的操作流程步骤,做出举例说明:
无符号整型数的比较运算消耗一拍时钟周期,因此实施例1中c取值1;假定待排序序列长度为10,则上文技术方案中的n取值10。因为所选用的移阶寄存器的长度等于待排序列长度与排序电路运算时延之和,且排序电路的时延为排序电路输出比较结果的延迟拍数,因此请再次参阅图3,移阶寄存器长度设置为11阶,输入比较器阵列长度为9,输出比较器阵列长度为9。于是,待排序数据和序列结束标志依次从移阶寄存器的第0阶输入,具体为:
第1拍时待排序数据序列结束标志以及排序位置排序位置序号初值0存入第0阶寄存器,而原第0阶到第i-1寄存器的待排序序列数据及序列结束标志依次存入第1阶到第i阶寄存器中;原第0阶到第i-1寄存器的排序位置排序位置序号SIDX则根据输入比较器阵列中第0至第i-1个比较器的输出结果决定SIDX是否加1,并将更新结果依次存入第1阶到第i阶寄存器中的排序位置排序位置序号中。
排序位置排序位置序号计算完毕的数据、数据对应序列结束标志和对应的排序位置排序位置序号从移阶寄存器的第10阶输出,具体为:
第0拍时待输出数据与移阶寄存器中第i阶开始到第9阶结束之间(包含第i阶和第9阶)寄存器中的待排序序列数据比较,同时输出端数据接收者即整序单元从第10阶寄存器中采样取出待输出数据序列结束标志排序位置排序位置序号
第1拍时原第i阶到第9阶寄存器的待排序序列数据及序列结束标志依次存入第i+1阶到第10阶寄存器中;原第i阶到第9阶寄存器的排序位置排序位置序号SIDX则根据输出比较器阵列中第i至第9个比较器的输出结果决定SIDX是否加1,并将更新结果依次存入第存入第i+1阶到第10阶寄存器的排序位置排序位置序号中。
请再次参阅图6,其中的第一随机存储器与第二随机存储器的地址长度设置为10。排序位置序号计算单元输出的SIDX连接至第一随机存储器与第二随机存储器的写地址端口(waddr),排序位置序号计算单元输出的SE连接至第一随机存储器与第二随机存储器的写数据端口(wdata),写使能信号1加电复位后默认选通第一随机存储器的写使能端口(we)。排序位置序号计算单元输出的SEF信号的高电平触发写使能信号选通对象在第一随机存储器与第二随机存储器的写使能端口(we)之间交替切换。地址累加器加电复位后默认设置为0,并在累加到9后复位为0,在其他状态下每拍时钟加1。地址累加器的输出连接至第一随机存储器与第二随机存储器的读地址端口(raddr),输出序列在加电复位后默认选通第二随机存储器的读数据端口(rdata),并在地址累加器累加到9后在第一随机存储器与第二随机存储器的读数据端口(rdata)之间交替选通。
在本实施例中,考虑到比较器计算时延1拍,随机存储器存、取操作时延各1拍,数据输入到输出的延时可控制在固定的:移阶寄存器阶数(11)+随机存储器存时延(1)+排序序列长度(10)+随机存储器取时延(1)=23拍。而对于同样长度的待排序序列,基于MCU/CPU的方案的时间复杂度为10×log(10)=23.026,考虑读取、比较、存储、指令跳转操作各1拍延时,MCU/CPU具有理想的流水线指令处理能力,则对长度为10的序列做排序至少需要消耗23.026+4≈28拍的时延。可见本发明从处理时延上相对基于MCU/CPU的排序方案具有明显的优势,且随着待排序序列的长度增加该优势还将不断的扩大。
资源消耗方面,本实施例中用到一个11阶移阶寄存器、18个无符号整型比较器、2个地址长度为10的随机存储器,1个复选器用于图6中的已排序数据输出选择,以及其他一些功能维护电路消耗的寄存器和逻辑资源。相对的,基于MCU/CPU的排序方案则需要一个功能复杂的MCU/CPU,数据交互用的数据总线、地址总线,以及相关的功能维护电路,还可能根据CPU/MCU的需要附加一些随机存储器作为数据缓存。可见对长度不过分长的序列的排序工作,本实施例所消耗的硬件资源具有明显优势,且序列长度越短优势越明显。但由于基于CPU/MCU的排序方案中的CPU/MCU并不随着序列长度的增加而更改设计,序列长度的增加仅会造成其内部缓存、地址总线增加部分资源,因此随着序列长度的增长本实施例相对基于MCU/CPU的排序方案的节约资源优势将不断缩减,直到超过一个临界值后,该项优势将转为一个劣势。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于流水线处理的排序电路实现方法,其特征在于,包括:
执行排序运算时,将待排序序列按时钟依次输入排序电路;
第一个待排序数据将被从移阶寄存器输入口直接存入移阶寄存器的第一阶寄存器,并设置输入数据对应的排序序号为0;
从第二个待排序数据置于移阶寄存器输入口开始,移阶寄存器中每阶寄存器已存储的待排序数据都将与输入口或移阶寄存器的最后一阶数据比较,并根据比较结果判断是否对自身存储的排序序号加一,且将更新后的排序序号连同本阶寄存器存储的被排序数据一起,在下一时钟更新至下一阶寄存器中;
移阶寄存器从第二阶开始,每一阶均执行比较与判断运算,在移阶寄存器的输出口输出待排序数据以及其在排序后序列中的位置序号;
以位置序号作为存储单元的写地址,待排序数据作为存储单元的写数据,将数据写入整序用存储单元;待当前待排序序列所有数据都已写入整序用存储单元后,从存储单元的低地址开始依次累加读地址,并从存储单元的读数据输出口输出排序后的序列。
2.根据权利要求1所述的一种基于流水线处理的排序电路实现方法,其特征在于,所选用的移阶寄存器的长度等于待排序列长度与排序电路运算时延之和。
3.根据权利要求2所述的一种基于流水线处理的排序电路实现方法,其特征在于,排序电路设有输入比较阵列,输入比较阵列用于对移阶寄存器中各阶的存储项与输入的数据项做比较,在向移阶寄存器输入待排序列的数据项时,其比较方式为:
对于升序排序,当存储项大于或等于输入的数据项时,存储项对应的排序位置序号计数加一,否则保持不变;
对于降序排序,当存储项小于或等于输入的数据项时,存储项对应的排序位置序号计数加一,否则保持不变。
4.根据权利要求3所述的一种基于流水线处理的排序电路实现方法,其特征在于,当待排序列的最后一项已输入移阶寄存器后,将即将输出的数据项与移阶寄存器中存储的当前待排序列的未输出存储项进行比较,并根据比较结果更新排序的排序位置序号计数。
5.根据权利要求4所述的一种基于流水线处理的排序电路实现方法,其特征在于,排序电路设有输出比较阵列,输出比较阵列用于对移阶寄存器各阶存储的待排序列的每一项进行比较,其比较方式为:
对于升序排序,当存储项大于待输出的数据项时,存储项对应的排序位置序号计数加一,否则保持不变;
对于降序排序,当存储项小于待输出的数据项时,存储项对应的排序位置序号计数加一,否则保持不变。
6.根据权利要求5所述的一种基于流水线处理的排序电路实现方法,其特征在于,输出比较阵列执行后,对移阶寄存器输出的排序序列与其对应的排序位置序号分别依次执行整序存储与整序输出;
整序存储的执行方法为:将排序序列各项数据以其对应排序位置序号为写地址写入随机存储单元;
整序输出的执行方法为:排序序列执行完整序存储后,从0开始顺序累加读地址,并从随机存储单元读端口输出排序后的序列。
7.根据权利要求6所述的一种基于流水线处理的排序电路实现方法,其特征在于,在输入任一待排序列时,对其序列的最后一项数据还添加有结束标志;结束标志用于区分移阶寄存器中新输入的该待排序列与等待输出的其他待排序列。
8.根据权利要求2所述的一种基于流水线处理的排序电路实现方法,其特征在于,排序电路的时延为排序电路输出比较结果的延迟拍数,且移阶寄存器内各阶排序位置序号的更新阶位大于排序电路的输出延迟拍数。
9.根据权利要求6所述的一种基于流水线处理的排序电路实现方法,其特征在于随机存储单元包括第一随机存储单元与第二随机存储单元,第一随机存储单元与第二随机存储单元之间以乒乓缓存的方式交替执行整序存储与整序输出。
10.一种排序电路,用于执行上述权利要求1-9所述的一种基于流水线处理的排序电路实现方法,其特征在于,包括:
排序位置序号计算单元与整序单元;
所述排序位置序号计算单元包括:
移阶寄存器;
输入比较器,所述输入比较器用于执行输入比较阵列;
输出比较器,所述输出比较器用于执行输出比较阵列;
所述整序单元包括第一随机存储器、第二随机存储器与地址累加器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210917881.8A CN115167809A (zh) | 2022-08-01 | 2022-08-01 | 一种基于流水线处理的排序电路实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210917881.8A CN115167809A (zh) | 2022-08-01 | 2022-08-01 | 一种基于流水线处理的排序电路实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115167809A true CN115167809A (zh) | 2022-10-11 |
Family
ID=83478262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210917881.8A Pending CN115167809A (zh) | 2022-08-01 | 2022-08-01 | 一种基于流水线处理的排序电路实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115167809A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116090406A (zh) * | 2023-04-07 | 2023-05-09 | 湖南国科微电子股份有限公司 | 乒乓配置电路的随机验证方法、装置、上位机及存储介质 |
CN117112030A (zh) * | 2023-09-12 | 2023-11-24 | 南京微盟电子有限公司 | 一种寄存器组地址自动累加电路及应用方法 |
-
2022
- 2022-08-01 CN CN202210917881.8A patent/CN115167809A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116090406A (zh) * | 2023-04-07 | 2023-05-09 | 湖南国科微电子股份有限公司 | 乒乓配置电路的随机验证方法、装置、上位机及存储介质 |
CN116090406B (zh) * | 2023-04-07 | 2023-07-14 | 湖南国科微电子股份有限公司 | 乒乓配置电路的随机验证方法、装置、上位机及存储介质 |
CN117112030A (zh) * | 2023-09-12 | 2023-11-24 | 南京微盟电子有限公司 | 一种寄存器组地址自动累加电路及应用方法 |
CN117112030B (zh) * | 2023-09-12 | 2024-03-26 | 南京微盟电子有限公司 | 一种寄存器组地址自动累加电路及应用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115167809A (zh) | 一种基于流水线处理的排序电路实现方法 | |
US8478736B2 (en) | Pattern matching accelerator | |
JP3602542B2 (ja) | スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 | |
US8402003B2 (en) | Performance monitoring mechanism for use in a pattern matching accelerator | |
US8799188B2 (en) | Algorithm engine for use in a pattern matching accelerator | |
KR920006275B1 (ko) | 데이타 처리 장치 | |
US8412722B2 (en) | Upload manager for use in a pattern matching accelerator | |
US8447749B2 (en) | Local results processor for use in a pattern matching accelerator | |
US7937573B2 (en) | Metric for selective branch target buffer (BTB) allocation | |
CN1189816C (zh) | 具有分支控制的数据处理系统及其方法 | |
JP3188467B2 (ja) | 最小値・最大値検索装置 | |
US20040098540A1 (en) | Cache system and cache memory control device controlling cache memory having two access modes | |
US20120203970A1 (en) | Software and hardware managed dual rule bank cache for use in a pattern matching accelerator | |
US8983891B2 (en) | Pattern matching engine for use in a pattern matching accelerator | |
EP3270551B1 (en) | Retrieval device, retrieval method, program, and recording medium | |
US8423533B2 (en) | Multiple rule bank access scheme for use in a pattern matching accelerator | |
CN104657285B (zh) | 一种数据缓存系统和方法 | |
US20120203729A1 (en) | Multiple hash scheme for use in a pattern matching accelerator | |
US7895422B2 (en) | Selective postponement of branch target buffer (BTB) allocation | |
US8812516B2 (en) | Determining top N or bottom N data values and positions | |
CN110852046A (zh) | 一种文本后缀索引的分块归纳排序方法及系统 | |
JP2002516425A (ja) | デジタルプロセッサ用制御装置 | |
US8578135B2 (en) | Apparatus for calculating and prefetching a branch target address | |
MX2007012582A (es) | Unidad de memoria de instruccion y metodo de operacion. | |
WO2006124170A2 (en) | Method and apparatus for controlling data transfer in a processing system |
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 |