CN102207846A - 一种实现数据排序的电路和方法 - Google Patents
一种实现数据排序的电路和方法 Download PDFInfo
- Publication number
- CN102207846A CN102207846A CN2010101389729A CN201010138972A CN102207846A CN 102207846 A CN102207846 A CN 102207846A CN 2010101389729 A CN2010101389729 A CN 2010101389729A CN 201010138972 A CN201010138972 A CN 201010138972A CN 102207846 A CN102207846 A CN 102207846A
- Authority
- CN
- China
- Prior art keywords
- control signal
- row
- command register
- signal command
- storage unit
- 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
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明公开了一种对长度为N的序列进行排序的电路,包括:N个存储单元,用于存储长度为N的序列,该N个存储单元分为R行和C列,其中,N=R×C;C个比较器,用于比较输入的新数据和C个存储单元存储的数据,输出比较信号;C个R选1多路开关,第k个R选1多路开关用于选择第k列的某一行的对应的存储单元存储的数据通过,输入给该列的比较器;N个控制信号命令寄存器,与所述N个存储单元对应,分别接收比较器的比较结果,输出的控制信号用于控制所述N个存储单元进行移位/插入/保持操作;流程控制模块,用于控制所述C个R选1多路开关的选通以及每一行的C个控制信号命令寄存器存储比较结果。
Description
技术领域
本发明一般涉及数字信号处理领域,更具体地,涉及一种实现数据排序的电路和方法。
背景技术
排序是一种最基本的数据处理操作。目前数据排序的方式包含硬件排序和软件排序两种方式。硬件排序的速度更快,在某些特定的领域,需要每秒钟对数千万个数据进行排序。同时又要求实现的方案成本足够低,这时就不能用高性能的CPU的软件方案,一般设计中就会采用硬件排序。
目前的硬件排序方案一般需要从m个数据中选出n个最大(或最小)的数据,并同时将这些数据排序。一般采用的原理都是将每个新输入的数据与之前排好序的数据进行比较,然后根据比较的结果,将原有数据和新数据一起进行重新排序,找出其中最大(或最小)的n个数,剩余的一个数被丢弃。
现有技术已经提供了硬件排序方案,例如,美国专利US5504919、中国专利CN100489689C以及中国专利CN201156248Y分别公开了一种硬件排序方案,具体来说,美国专利US5504919是通过将输入的新数据和既有序列中每一个数据采用比较器进行比较,根据比较器比较的结果找到新数据在序列中的位置.通过确保每一个输入的新数据都在正确的位置上,就可以完成对数据序列的排序。该方案中,如果既有序列长度为n,则需要n个比较器。
中国专利CN100489689C中排序的方法是利用一组n选1选择器进行重新排序。这种方法要给每个数据配置一个比较器,一共也需要n个比较器。
中国专利CN201156248Y的技术方案是首先将n个寄存器中每相邻两个单元编为一组。从编号0的单元开始,同一组的两个单元中的数据利用比较器进行比较,并将数据较小的数据存储于编号较小的单元内;然后将编号为0的单元单独编为一组,其后每两个相邻的单元编为一组。同一组的两个单元中的数据利用比较器进行比较,并将数据较小的数据存储于编号较小的单元内。经过上述两步的不断反复,就可以完成数据排序。这里如果既有序列长度为n,也需要n个比较器。
当将上述硬件排序方案采用集成电路实现时,由于集成电路中比较器的面积很大,因此当排序数据量较大时,集成电路面积会急剧增加,甚至会达到无法忍受的地步。
发明内容
因此,需要一种集成电路实现的硬件排序方案,能够使用较少数量的比较器实现硬件排序。本发明公开了一种硬件排序电路和方法,该技术方案采用了阵列的方法来排序,有效的控制了比较器的数目,从而有效的控制了大量数据排序时集成电路的面积。
根据本发明的一个方面,提供了一种对长度为N的序列进行排序的电路,包括:
N个存储单元,用于存储长度为N的序列,该N个存储单元分为R行和C列,其中,N=R×C;
C个比较器,其中,每列使用一个比较器,用于比较输入的新数据和所述R行中的某一行的C个存储单元存储的数据,根据比较结果输出比较信号;
C个R选1多路开关,其中,每列使用一个R选1多路开关,第k个R选 1多路开关用于选择第k列的所述R行中的该行对应的存储单元存储的数据通过,从而输入给该列的比较器,其中k<=C;
N个控制信号命令寄存器,与所述N个存储单元对应,分为R行和C列,每个控制信号命令寄存器分别接收比较器比较的新数据和该控制信号命令寄存器对应的存储单元存储的数据的比较结果,N个控制信号命令寄存器输出的控制信号用于控制所述N个存储单元进行移位/插入/保持操作;
流程控制模块,用于控制所述C个R选1多路开关的选通以及每一行的C个控制信号命令寄存器存储比较结果;
其中,所述流程控制模块依次控制所述C个R选1多路开关的所述R行中的该行对应的一路开关同时打开,以使所述C个比较器同时比较输入的新数据与该特定行存储单元存储的数据,并且该流程控制模块控制每行的比较结果存储到对应的控制信号命令寄存器,响应于N个控制信号命令寄存器获得该输入的新数据与长度为N的序列的每一个的比较结果,流程控制模块根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作,从而获得排序结果。
附图说明
通过对附图中本发明示例实施例方式的更详细描述,本发明的上述、以及其它目的、特征和优势将变得更加明显,其中,相同的参考标号通常代表本发明示例实施例方式中的相同部件。
图1示出了根据本发明的一种实施方式的数据排序电路图;
图2示出了根据本发明的一种实施方式的存储单元工作原理;以及
图3示出了图1的电路的工作流程。
具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
根据背景技术的描述,可以知道现有技术中,基本是对n个数据进行排序,就要采用n个比较器,这样的方案虽然排序的速度非常快,但是会造成当n很大时,集成电路的面积急剧增加,直接影响芯片的成本。另外,在现有技术中的硬件排序的方法提供了过高的排序速度:应用解决方案虽然需要高速排序,但是目前集成电路技术发展非常快,所设计出的排序电路提供的排序速度远远超过应用解决方案的需求,这在某种程度上来说,也是一种浪费。
因此,本发明设计的电路中,考虑采用阵列的方式,通过牺牲一定的排序速度,来减少比较器的数目。本发明的这种牺牲一定的排序速度,是一种可配置的牺牲。换句话说,减少的比较器数目是可调的,减少的比较器数目越多,排序的速度越慢;反之,减少的比较器数目越少,排序的速度越快。因此,可以根据应用的需求来调节设计电路的排序速度。
图1示出了根据本发明的一种实施方式的数据排序电路图,该电路可以对长度为N的序列进行排序,当输入一个新数据后,将该输入的新数据根据排序结果,加入到序列中,电路中仍然保留最大/最小的长度为N的序列。如图所示,对于长度为N的排序列表,可以将其分为R行和C列的阵列。其中,N=R×C,其中,N、R、C都为自然数,图1中最上面的1行为第1行,依次类推,最下面的1行为第R行,最左边的1列为第1列,最右边的1列为第C列。这样电路就有R行,每一行有C个存储单元和C个控制信号命令寄存器。图1中还包括C个R选1的多路选择器,由流程控制模块控制选通(流程控制模块在图1中未示出)。在图1的底部,还包含C个比较器。这样,电路中比较器的数量从N减少到C,例如,如果对长度为36的序列排序,可以分为2行18列、3行12列,4行9列,6行6列,9行4列,12行3列,18行2列,其中,2行18列的电路中比较器数量最多,排序的速度最快,但比较器数量最多,面积最大;18行2列的电路中比较器数量最少,排序的速度最慢,但面积最小。因此,设计人员可以根据应用电路的实际需求,选择合适的R和C,来设计排序电路。另外,如果要对小于N的序列进行排序,也可以使用上述R行和C列的阵列,结果中只保留要求的序列长度。
以图1的具体实施方式为例子,下面先来看一下长度为N的序列的排序电路的输入、输出、基本模块及其连接关系:
排序电路中包括:N个存储单元、C个比较器、C个R选1多路开关、N个控制信号命令寄存器以及流程控制模块。
N个存储单元,用于存储长度为N的序列,该N个存储单元分为R行和C列,其中,N=R×C;
C个比较器,其中,每列使用一个比较器,用于比较输入的新数据和所述R行中的某一行的C个存储单元存储的数据,根据比较结果输出比较信号;
C个R选1多路开关,其中,每列使用一个R选1多路开关,第k个R选1多路开关用于选择第k列的所述R行中的该行对应的存储单元存储的数据通过,从而输入给该列的比较器,其中k<=C;
N个控制信号命令寄存器,与所述N个存储单元对应,分为R行和C列,每个控制信号命令寄存器分别接收比较器比较的新数据和该控制信号命令寄存器对应的存储单元存储的数据的比较结果,N个控制信号命令寄存器输出的控制信号用于控制所述N个存储单元进行移位/插入/保持操作;
流程控制模块,用于控制所述C个R选1多路开关的选通以及每一行的C个控制信号命令寄存器存储比较结果;
其中,所述流程控制模块依次控制所述C个R选1多路开关的所述R行中的该行对应的一路开关同时打开,以使所述C个比较器同时比较输入的新数据与该特定行存储单元存储的数据,并且该流程控制模块控制每行的比较结果存储到对应的控制信号命令寄存器,响应于N个控制信号命令寄存器获得该输入的新数据与长度为N的序列的每一个的比较结果,流程控制模块根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作,从而获得排序结果。
数据排序的顺序可以分为从小到大(升序)和从大到小(降序)两种排序顺序配置。这两种排序顺序的选择不会影响整体电路结构,只需根据配置的选择调整比较器的输出即可。即所述电路通过调整比较器的输出,既可以用于升序排序,也可以用于降序排序。一种实施方式中,当配置成从小到大顺序排序时,如果新数据小于存储的数据,则比较器输出为1,否则输出为0;当配置成从大到小顺序排序时,如果新数据大于存储的数据,则比较器输出为1,否则输出为0。排序电路的其他模块不需要任何改变。
关于流程控制模块如何控制每行的比较结果存储到对应的控制信号命令寄存器,在一种实施方式中,如图1所示,N个控制信号命令寄存器(图1中简写为控制信号)用于存储比较结果。其中第R行的C个控制信号命令寄存器的输入来自于C个比较器的输出,流程控制模块通过控制R选1多路开关,从第一行开始逐行选择存储单元的数据发送给比较器与新数据进行比较。然后流程控制模块根据控制信号寄存器的更新方式控制比较结果的传递。如果采用每个时钟周期自下而上逐行更新控制信号寄存器的内容的方式,流程控制模块会控制第d-1行的C个控制信号命令寄存器的输入为第d行的C个控制信号命令寄存器的输出,其中,1<d R。也就是说第R行的控制信号命令寄存器的更新来自于比较器,其余控制信号命令寄存器逐行自下而上逐行更新内容。流程控制模块控制电路重复进行行的选择、比较和更新控制信号命令寄存器的值,直到所有的行都被选择,就将每行的比较结果存储到对应的控制信号命令寄存器中。
在另外一种实施方式中,可以直接将比较器的结果送到当前进行比较的行的控制信号命令寄存器中。一种方式为:流程控制模块控制直接将比较器的结果通过独立的连线输出到当前比较行的控制信号命令寄存器中;另一种方式为:每个控制信号寄存器内包含旁路结构,比较器输出的比较结果信号在经过的控制信号命令寄存器中不经缓存,由流程控制模块控制直接输出到相应的控制信号命令寄存器。
下面考虑N个控制信号命令寄存器输出的控制信号如何控制所述N个存储单元进行移位/插入/保持操作。
在一种实施方式中,存储单元工作原理如图2所示:在流程控制模块的控制下,存储单元根据输入控制信号命令寄存器的控制信号工作。如果输入的两个控制信号命令寄存器为第一状态(例如11),执行右移操作,即本级存储单元的内容更新为左边一级的输出。如果输入的两个命令寄存器为第一状态(例如01),执行插入操作,即本级存储单元的内容更新为整个电路的输入新数据,同时右边一级存储单元的内容更新为本级存储单元的输出。如果输入的两个命令寄存器为第一状态(例如00),维持原状态不进行任何操作。
图1中包括的N个存储单元:其作用是存储/更新数据。如右图所示,第m行第n列(m R,n C)的存储单元的4个输入,包括:(1)来自于第m行第n-1列的存储单元所存储的数据;(2)来自于第m行第n-1列控制信号命令寄存器的输出;(3)来自于第m行第n列控制信号命令寄存器的输出;(4)来自于整个电路的输入新数据。输出把本级所存储的数据输出给下一级。
图1中的第1行第1列的存储单元不需要移位操作,所以没有连接的左方数据,在电路实现时可以接任意数据,如全0。它的控制信号1输入根据需要,例如接为一比特的0,如前所述,根据控制信号0的不同,执行的操作可以是插入(01)或保持(00)。此外,图1中的第m行C列数据当满足右移的条件时,要输出数据到第m+1行1列,或者当m=R时被移出。
对应图1,对于其余存储单元,例如第m行第n列的存储单元,其中,mR,n C,响应于来自于第m行第n-1列控制信号命令寄存器的输出以及来自于第m行第n列控制信号命令寄存器的输出的组合为第一状态(例如11),流程控制模块控制该存储单元执行右移操作,该存储单元输出该存储单元存储的数据到第m行第n+1列的存储单元;响应于来自于第m行第C-1列控制信号命令寄存器的输出以及来自于第m行第C列控制信号命令寄存器的输出的组合为第一状态,流程控制模块控制该存储单元执行右移操作,该存储单元输出该存储单元存储的数据到第m+1行第1列的存储单元;响应于来自于第m行第n-1列控制信号命令寄存器的输出以及来自于第m行第n列控制信号命令寄存器的输出的组合为第二状态(例如01),流程控制模块控制该存储单元执行插入操作,该存储单元的内容更新为整个电路的输入新数据,同时第m行第n+1列存储单元的内容更新为第m行第n列存储单元原来的内容;响应于来自于第m行第C-1列控制信号命令寄存器的输出以及来自于第m行第C列控制信号命令寄存器的输出的组合为第二状态,流程控制模块控制该存储单元执行插入操作,该存储单元的内容更新为整个电路的输入新数据,同时第m+1行第1列存储单元的内容更新为第m行第n列存储单元原来的内容;响应于来自于第m行第n-1列控制信号命令寄存器的输出以及来自于第m行第n列控制信号命令寄存器的输出的组合为第三状态(例如00),流程控制模块控制该存储单元维持原状态不进行任何操作;响应于来自于第m行第C-1列控制信号命令寄存器的输出以及来自于第m行第C列控制信号命令寄存器的输出的组合为第三状态,流程控制模块控制该存储单元维持原状态不进行任何操作。
在一种优选的实施方式中,由于当前比较的结果可以被立即送到当前进行比较的行的控制信号寄存器中,如果新的数据可以被插入到当前行,那么就意味着剩下的行不需要进行比较了,只需要进行移位操作,因为在进行新数据比较之前所有的存储单元的数据是已经排过序的。流程控制模块如果探测到当前行的比较结果中有满足插入条件的,就不再进行后续行比较操作;,流程控制模块直接将后续行控制信号命令寄存器配置成第一(移位)状态后,流程控制模块根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作,从而获得排序结果。这样,从统计学意义讲,该实施方式能够提高了电路的处理速度。
例如,如果一个数据在进行到第M(M<R)行数据比较中已经能确定其插入位置,那么流程控制模块就会停止最后(R-M)行的比较,并将最后(R-M)行的命令寄存器中的控制信号配置成移位状态。然后,控制模块控制根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作,即:在插入位置之前的所有存储单元的数据保持不变;插入位置之后的所有存储单元的数据右移一个存储单元。接下来,就可以接受一个新的数据,开始新的排序了。
在另外一种优选的实施方式中,本发明电路的一个实现处理一个数据需要至多R+1个时钟周期,而每个时钟周期有一个新的数据到来,因此新来的数据无法被电路立即处理。可以在电路的输入端增加一个适当容量的缓冲器,先将新来数据保存起来,再以电路能够处理的速度发送给电路然后进行排序。
图3示出了图1的电路的工作流程,该流程包括:在步骤S301,生成全部控制信号命令寄存器中的控制信号;在步骤S302,控制全部存储单元中数据的插入/移位/保持操作。这样,全部存储单元中就获得新的排序结果。
具体在步骤S301,电路输入一个新数据,这个新数据在电路中保持,直到对该数据的排序结束,在数据保持期间,电路结构会逐行生成全部控制信号命令寄存器中的控制信号。每生成一行控制信号需要一个时钟周期。
在一种实施方式中,每行的控制信号命令寄存器自下而上传递控制信号,在第一个时钟周期,比较器将生成最终存在第1行的控制信号命令寄存器的命令,所生成的命令被灌入第R行的控制信号命令寄存器,同时所有其余控制信号命令寄存器行的内容从第k行到k-1(k R)行,也就是自下而上传递。这时各控制信号命令寄存器的命令与各存储单元不是对应关系;在第二个时钟周期,比较器将生成最终存在第2行控制信号命令寄存器的命令,所生成的命令被灌入第R行的控制信号命令寄存器,这时原来的第R行控制信号命令寄存器的命令已经被灌入到第R-1行的控制信号命令寄存器,同时所有其余控制信号命令寄存器行的内容都自下而上传递,这时各控制信号命令寄存器的命令与各存储单元也不是对应关系。这样的操作一直进行直到所有的控制信号命令行被灌入新生成的命令。这时各控制信号命令寄存器的命令与各存储单元才对应起来,可以执行数据插入/移位等操作。流程才能跳到步骤S302。
在另外一种实施方式中,每行的控制信号命令寄存器直接接收用于控制相连的存储单元的控制信号,在第一个时钟周期,比较器将生成存在第1行的控制信号命令寄存器的命令,所生成的命令被灌入第R行、R-1行、R-2行......2行的控制信号命令寄存器,这些控制信号命令寄存器内包含旁路结构,因此,比较器生成的存在第1行的控制信号命令寄存器的命令被直接传递到第1行的控制信号命令寄存器;这时第1行控制信号命令寄存器的命令与第1行的存储单元是对应关系;在第二个时钟周期,比较器将生成最终存在第2行控制信号命令寄存器的命令,所生成的命令被灌入第R行、R-1行......第3行的控制信号命令寄存器,这些控制信号命令寄存器具有旁路功能,因此,比较器生成的存在第2行的控制信号命令寄存器的命令被直接传递到第2行的控制信号命令寄存器;这时第2行控制信号命令寄存器的命令与第2行的存储单元是对应关系。这样的操作一直进行直到所有的控制信号命令行被灌入新生成的命令。这时所有控制信号命令寄存器的命令与各存储单元全部对应起来,可以执行数据插入/移位等操作。流程才能跳到步骤S302。
在另外一种实施方式中,可以通过直接连线,使得在第一个时钟周期,比较器将生成存在第1行的控制信号命令寄存器的命令,所生成的命令被直接通过连线灌入第1行;在第二个时钟周期,比较器将生成最终存在第2行控制信号命令寄存器的命令,所生成的命令被灌入第2行;以此类推,直到所有控制信号命令寄存器都被灌满,可以执行数据插入/移位等操作。流程才能跳到步骤S302。
对于步骤S302,由于在步骤S301已经比较了全部的存储单元中的数据和新数据,在全部控制信号命令寄存器中存放了每一个比较结果的控制信号,在第R+1个时钟周期,流程控制模块控制进行插入/移位/保持操作。这样,全部存储单元中就获得新的排序结果。
这样,整个电路输入一个新数据,就会执行图3所示的流程。也就是说,使用R个时钟周期产生全部N个存储单元中数据比较结果的控制信号,然后在下一个时钟周期,使用流程控制模块产生的流程控制信号,控制序列的插入/移位/保持操作,获得N+1个数据中最大/最小的N个数据。因此,一个新数据输入后R+1个时钟周期才完成数据的比较。
为了更好的了解电路工作时序,表1给出了一个例子。
从表1可以看到,在时钟周期0(cycle0),新数据到来。从时钟周期1到R,逐行生成R行控制信号命令寄存器。在时钟周期R+1,流程控制模块根据控制信号命令寄存器中的比较结果,控制数据插入/移位/保持操作,从而完成该新数据加入的排序操作。在下一个时钟周期R+2,第二个新数据到来,继续进行图3所示的流程。
表1电路工作时序
假设排序列表长度N为10,将电路配置成2行5列。表2示出了N=10,R=2,C=5时存储单元中数据的变化过程的一个例子。
表2的第一列为新到达的数据,第二列为工作流程的阶段,第三列则为整个排序列表。可以看到当新数据3到达时,它于数据插入/移位阶段被插在了4和2之间,原始列表中的1被移出。同样的,新数据8被插在7之前,原始列表中的2被移出。
使用本发明所述的排序电路,假设N的值是1000,每个比较的数据是8比特的二进制数。假设每个触发器的面积等效4个二输入与非门,那么每个存储单元的面积等效于32个二输入与非门。这样1000个存储单元的面积等效于1000x32个二输入与非门。假设8比特的比较器就是8比特的二进制减法器,该最小的的面积也要等效于64个二输入与非门。根据美国专利US5504919的结构,整个电路结构的面积包括所有存储单元的面积和所有比较器的面积,也就是1000x32+1000x64个二输入与非门。而使用本发明的排序电路,如果R=100,C=10,整个电路结构的面积包括所有存储单元的面积和所有比较器的面积,也就是1000x32+100x64个二输入与非门,是美国专利US5504919结构面积的40%。如果R=10,C=100,整个电路结构的面积包括所有存储单元的面积和所有比较器的面积,也就是1000x32+10x64个二输入与非门,是美国专利US5504919结构面积的34%。
表2R=2,C=5时存储单元中数据的变化过程
虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。
Claims (6)
1.一种对长度为N的序列进行排序的电路,包括:
N个存储单元,用于存储长度为N的序列,该N个存储单元分为R行和C列,其中,N=R×C;
C个比较器,其中,每列使用一个比较器,用于比较输入的新数据和所述R行中的某一行的C个存储单元存储的数据,根据比较结果输出比较信号;
C个R选1多路开关,其中,每列使用一个R选1多路开关,第k个R选1多路开关用于选择第k列的所述R行中的该行对应的存储单元存储的数据通过,从而输入给该列的比较器,其中k小于等于C;
N个控制信号命令寄存器,与所述N个存储单元对应,分为R行和C列,每个控制信号命令寄存器分别接收比较器比较的新数据和该控制信号命令寄存器对应的存储单元存储的数据的比较结果,N个控制信号命令寄存器输出的控制信号用于控制所述N个存储单元进行移位/插入/保持操作;
流程控制模块,用于控制所述C个R选1多路开关的选通以及每一行的C个控制信号命令寄存器存储比较结果;
其中,所述流程控制模块依次控制所述C个R选1多路开关的所述R行中的该行对应的一路开关同时打开,以使所述C个比较器同时比较输入的新数据与该特定行存储单元存储的数据,并且该流程控制模块控制每行的比较结果存储到对应的控制信号命令寄存器,响应于N个控制信号命令寄存器获得该输入的新数据与长度为N的序列的每一个的比较结果,流程控制模块根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作,从而获得排序结果。
2.根据权利要求1所述的电路,其中所述电路通过调整比较器的输出,用于升序排序或降序排序。
3.根据权利要求1所述的电路,其中该流程控制模块控制每行的比较结果存储到对应的控制信号命令寄存器是通过如下方式之一控制的:
流程控制模块控制第R行的C个控制信号命令寄存器的输入来自于C个比较器的输出,并且控制第d-1行的C个控制信号命令寄存器的输入为第d行的C个控制信号命令寄存器的输出,其中,d大于1且小于等于R;
流程控制模块控制直接将比较器的结果通过独立的连线输出到当前比较行的控制信号命令寄存器中;
每个控制信号寄存器内包含旁路结构,比较器输出的比较结果信号在经过的控制信号命令寄存器中不经缓存,由流程控制模块控制直接输出到相应的控制信号命令寄存器。
4.根据权利要求1所述的电路,其中所述流程控制模块根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作是采用如下方式控制的:对于第m行第n列的存储单元,其中,m小于等于R,n小于等于C,
响应于来自于第m行第n-1列控制信号命令寄存器的输出以及来自于第m行第n列控制信号命令寄存器的输出的组合为第一状态,流程控制模块控制该存储单元执行右移操作,该存储单元输出该存储单元存储的数据到第m行第n+1列的存储单元;
响应于来自于第m行第C-1列控制信号命令寄存器的输出以及来自于第m行第C列控制信号命令寄存器的输出的组合为第一状态,流程控制模块控制该存储单元执行右移操作,该存储单元输出该存储单元存储的数据到第m+1行第1列的存储单元;
响应于来自于第m行第n-1列控制信号命令寄存器的输出以及来自于第m行第n列控制信号命令寄存器的输出的组合为第二状态,流程控制模块控制该存储单元执行插入操作,该存储单元的内容更新为整个电路的输入新数据,同时第m行第n+1列存储单元的内容更新为第m行第n列存储单元原来的内容;
响应于来自于第m行第C-1列控制信号命令寄存器的输出以及来自于第m行第C列控制信号命令寄存器的输出的组合为第二状态,流程控制模块控制该存储单元执行插入操作,该存储单元的内容更新为整个电路的输入新数据,同时第m+1行第1列存储单元的内容更新为第m行第n列存储单元原来的内容;
响应于来自于第m行第n-1列控制信号命令寄存器的输出以及来自于第m行第n列控制信号命令寄存器的输出的组合为第三状态,流程控制模块控制该存储单元维持原状态不进行任何操作;
响应于来自于第m行第C-1列控制信号命令寄存器的输出以及来自于第m行第C列控制信号命令寄存器的输出的组合为第三状态,流程控制模块控制该存储单元维持原状态不进行任何操作。
5.根据权利要求1所述的电路,其中该流程控制模块控制每行的比较结果存储到对应的控制信号命令寄存器还包括:
流程控制模块如果探测到当前行的比较结果中有满足插入条件的,不再进行后续行比较操作;
流程控制模块直接将后续行控制信号命令寄存器配置成第一状态;
流程控制模块根据N个控制信号命令寄存器的输出控制N个存储单元进行移位/插入/保持操作,从而获得排序结果。
6.根据权利要求1-5之一所述的电路,其中电路的输入端包含缓冲器,用于保存所述输入的数据,并以电路能够处理的速度发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101389729A CN102207846A (zh) | 2010-03-31 | 2010-03-31 | 一种实现数据排序的电路和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101389729A CN102207846A (zh) | 2010-03-31 | 2010-03-31 | 一种实现数据排序的电路和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102207846A true CN102207846A (zh) | 2011-10-05 |
Family
ID=44696699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101389729A Pending CN102207846A (zh) | 2010-03-31 | 2010-03-31 | 一种实现数据排序的电路和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102207846A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317549A (zh) * | 2014-10-15 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种实现数据排序的级联结构电路和方法 |
CN105159597A (zh) * | 2015-06-17 | 2015-12-16 | 北京空间机电研究所 | 不确定数目大数量数据的高速实时排序方法 |
CN105512179A (zh) * | 2015-11-25 | 2016-04-20 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
CN115658145A (zh) * | 2022-12-13 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 数据循环移位方法和电路、以及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504919A (en) * | 1993-02-19 | 1996-04-02 | National Science Council | Sorter structure based on shiftable content memory |
CN101114215A (zh) * | 2006-07-28 | 2008-01-30 | 中兴通讯股份有限公司 | 实现数据排序的电路和方法 |
CN201156248Y (zh) * | 2008-02-03 | 2008-11-26 | 深圳艾科创新微电子有限公司 | 一种计算多数据排序序号的硬件结构 |
-
2010
- 2010-03-31 CN CN2010101389729A patent/CN102207846A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504919A (en) * | 1993-02-19 | 1996-04-02 | National Science Council | Sorter structure based on shiftable content memory |
CN101114215A (zh) * | 2006-07-28 | 2008-01-30 | 中兴通讯股份有限公司 | 实现数据排序的电路和方法 |
CN201156248Y (zh) * | 2008-02-03 | 2008-11-26 | 深圳艾科创新微电子有限公司 | 一种计算多数据排序序号的硬件结构 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317549A (zh) * | 2014-10-15 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种实现数据排序的级联结构电路和方法 |
CN105159597A (zh) * | 2015-06-17 | 2015-12-16 | 北京空间机电研究所 | 不确定数目大数量数据的高速实时排序方法 |
CN105512179A (zh) * | 2015-11-25 | 2016-04-20 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
CN115658145A (zh) * | 2022-12-13 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 数据循环移位方法和电路、以及芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113272796B (zh) | 可重配置的数据处理器 | |
US11296705B2 (en) | Stacked programmable integrated circuitry with smart memory | |
US8799623B2 (en) | Hierarchical reconfigurable computer architecture | |
US8138788B2 (en) | Reconfigurable device | |
US7580963B2 (en) | Semiconductor device having an arithmetic unit of a reconfigurable circuit configuration in accordance with stored configuration data and a memory storing fixed value data to be supplied to the arithmetic unit, requiring no data area for storing fixed value data to be set in a configuration memory | |
CN101162471B (zh) | 一种插入排序的方法和装置 | |
CA3120683A1 (en) | Configuration load of a reconfigurable data processor | |
JP4484756B2 (ja) | リコンフィギュラブル回路および処理装置 | |
CN104407809A (zh) | 多通道fifo缓冲器及其控制方法 | |
US20110066821A1 (en) | data handling system comprising a rearrangement network | |
CN102207846A (zh) | 一种实现数据排序的电路和方法 | |
JPWO2007119300A1 (ja) | 再構成可能デバイスのテストシステム及びその方法並びにそれに用いる再構成可能デバイス | |
US6728256B1 (en) | Shared buffer control device | |
US9490848B2 (en) | Data handling system comprising memory banks and data rearrangement | |
US20060004980A1 (en) | Address creator and arithmetic circuit | |
US10101965B1 (en) | Method and apparatus for high speed streaming sorter | |
Ortiz et al. | A configurable high-throughput linear sorter system | |
US7568074B1 (en) | Time based data storage for shared network memory switch | |
US10782914B2 (en) | Buffer systems and methods of operating the same | |
CN101387951A (zh) | 优化的处理器和指令对准 | |
US9996489B2 (en) | Memory aggregation device | |
US7093084B1 (en) | Memory implementations of shift registers | |
US20080195842A1 (en) | Array-type processor | |
US20070220236A1 (en) | Reconfigurable computing device | |
Ortiz et al. | A Streaming High‐Throughput Linear Sorter System with Contention Buffering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111005 |