CN102663061B - 一种大容量查找表快速排序和查找装置及其实现方法 - Google Patents
一种大容量查找表快速排序和查找装置及其实现方法 Download PDFInfo
- Publication number
- CN102663061B CN102663061B CN2012100907842A CN201210090784A CN102663061B CN 102663061 B CN102663061 B CN 102663061B CN 2012100907842 A CN2012100907842 A CN 2012100907842A CN 201210090784 A CN201210090784 A CN 201210090784A CN 102663061 B CN102663061 B CN 102663061B
- Authority
- CN
- China
- Prior art keywords
- look
- data
- label
- search
- address
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种大容量查找表快速排序和查找装置及其实现方法,所述快速排序和查找装置设置有预排序模块,控制模块,标签查找模块和排序模块,通过查找与排序的相互配合,查找的优先级高于排序,可以打断排序并开始查找,而排序则在查找空闲时进行,并且被打断的排序操作不会影响查找结果;采用基于预排序的方法进行添加排序和删除排序操作,标签查找采用流水四段分区查找法,提高了周期利用效率,查找效率高,速度快。本发明不仅限用于标签搜索,还可以用于其它任意关键字的搜索。
Description
技术领域
本发明涉及关键字搜索技术领域,特别涉及一种大容量查找表快速排序和查找装置及其实现方法。
背景技术
PW(伪线,Pseudo-Wire)标签用于边缘路由器对之间点对点的连接。在FPGA(现场可编程门阵列,Field Programmable Gate Array)设计中,CPU配置的PW标签、该标签对应的通道号ID存放在查找表中。
传统的一对一查找方法:对于给定值x,从查找表首地址开始比较,若相等,则匹配成功,结束查找。若不相等,则继续与下一地址数据进行比较,直到匹配成功为止。这种方法实现简单,耗用逻辑资源少,但是一对一查找方法虽然实现简单,对于深度为2n的查找表,最多需要查找2n次,浪费太多查找时间,不适用于大容量的查找表搜索。
二分法查找方法:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果x等于当前位置值,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
这种方法相对于传统一对一查找,效率大大提高,对于深度为2n的查找表,最多需要查找n次。二分法查找方法,由于比较数据和计算地址需要时间,因此在查找过程中存在浪费节拍的现象。
常用的标签查找采用的方法是将标签存在多块RAM中进行并行查找,按地址递增方式对每个表项进行查找,但是对于标签量大的情况,这种查找方法耗用太多时间。
为在大容量的查找表中搜索PW标签并提取对应的通道号ID,需要提出一种查找方案,可以使用尽可能少的资源、并尽可能快的速度在大容量的查找表中搜索到匹配项。
发明内容
本发明的目的是提供一种大容量查找表快速排序和查找装置及其实现方法,解决现有查找技术中浪费节拍现象,实现快速排序和查找。
一种大容量查找表快速排序和查找装置,根据CPU指令对大容量查找表进行快速排序和搜索,所述装置包括标签查找模块,排序模块,预排序模块和控制模块,所述的排序模块分别与预排序模块,控制模块以及查找表相连,所述的标签查找模块与排序模块和查找表相连。
其中所述的预排序模块接收CPU配置数据,对CPU配置数据进行预排序,维护一个预排序表;所述控制模块,根据接收到的CPU指令,控制排序模块进行排序操作;所述排序模块包括添加排序模块和删除排序模块,其中添加排序模块根据控制模块指令对查找表进行插入排序,删除排序模块根据控制模块指令对查找表进行删除排序;所述标签查找模块,用于收到查找请求后发起查找申请并进行查找,输出查找结果和查找完成信号。
所述大容量查找表快速排序和查找装置还包括冗余检查模块,所述冗余检查模块与所述控制模块和查找表相连,用于对预排序表和查找表进行冗余检查,若检查到冗余则向CPU发出中断请求。
所述标签查找模块收到查找请求后,向所述排序模块发出查找申请,所述排序模块收到查找申请后,若排序模块正在进行排序操作,则中断当前排序操作,并发出查找同意信号;如果排序模块在收到查找请求时,没有进行排序操作,则直接发出查找同意信号。
收到同意查找信号后,标签查找模块进行标签查找,并输出查找结果;查找结束发出查找完成信号给所述排序模块,排序模块继续之前被中断的排序操作。
一种大容量查找表快速排序和查找方法,其特征在于,包括步骤:
步骤1、对CPU输入数据进行预排序;
步骤2、收到数据排序指令后,对查找表中数据进行排序;
步骤3、收到查找请求,查找模块向排序模块发出查找申请,排序模块收到查找申请后,若排序模块正在进行排序操作,中断当前排序操作,并发出查找同意信号;如果排序模块在收到查找请求时,没有进行排序操作,则直接发出查找同意信号;
步骤4、进行标签查找;
步骤5、输出查找结果和查找完成信号。
如果是添加数据排序,所述的步骤2包括:
步骤2.1.1、则首先在查找表尾部拓展一段无效区间,其长度与待插入数据个数相同;
步骤2.1.2、将预排序表中最大数据标签和查找表中最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;
步骤2.1.3、将预排序表中剩余最大数据标签和查找表中未参与比较的最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;直到预排序表中数据全部插入查找表为止,此时无效区长度为0,插入排序结束。
如果是删除数据排序,所述的步骤2包括:
步骤2.2.1、若预排序表中最小数据标签,与查找表中最小数据标签相等,则将查找表该数据原地址置为无效;
步骤2.2.2、若预排序表中最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;
步骤2.2.3、若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;
步骤2.2.4、若预排序表中剩余最小数据标签,与查找表中未参与过比较的最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中剩余最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;直到预排序表中数据全部从查找表中删除为止,删除排序结束。
进一步地,所述的步骤4包括:
步骤4.1、查找开始时,若有排序操作被中断,则将查找表分为三段,若无效区间为B,则有分别为位于无效区前的A和无效区后的C区,A区尾地址为a1,C区首地址为a2;否则直接进入步骤4.3;
步骤4.2、确定查找有效区间,将待查找数据标签与a1,a2对应的标签字段进行比较,若查找标签值等于地址a1或a2对应的标签值,说明找到匹配值,查找结束;若待查找标签值小于地址a1对应的标签值,则有效查找空间为A;若待查找标签值大于地址a2对应的标签值,则有效查找空间为C;
步骤4.3、在有效查找空间中进行标签查找。
进一步地,所述的步骤4.3包括:
步骤4.3.1、将所述查找表分为四等分,x2,x1,x3分别为将查找表四等分的3个地址,其中x1为中间地址,x2和x3分别为将前半段和后半段区间二等分的2个地址;
步骤4.3.2、对于给定查找值x,从序列的中间位置x1开始比较,若x等于x1位置值,则查找成功,结束查找;若x小于x1位置值,则确定x2为下一回合的x1,并在前段区间以新x1为中点,重新计算x2,x3;若x大于x1位置值,则确定x3为下一回合的x1,并在后段区间以新x1为中点,重新计算x2,x3;
步骤4.3.3、重复步骤4.3.2,直到当匹配成功时,结束查找;若查找表被遍历搜寻后,仍未找到匹配值,则查找失败,给出查找失败指示。
本发明提出的一种大容量查找表快速排序和查找装置及其实现方法,设置有预排序模块,降低了排序时间;同时采用流水四段分区查找法,提高了周期利用效率。通过查找与排序的相互配合,查找的优先级高于排序,可以打断排序并开始查找,而排序则在查找空闲时进行,并且被打断的排序操作不会影响查找结果,查找效率高,速度快。本发明不仅限用于标签搜索,还可以用于其它任意关键字的搜索。
附图说明
图1为本发明大容量查找表快速排序和查找装置结构示意图;
图2为添加排序过程中查找表示意图;
图3为删除排序过程中查找表示意图;
图4为本发明大容量查找表快速排序和查找方法流程示意图。
具体实施方式
以下结合附图,对本发明作进一步阐述。
如图1所示,本发明流水四段分区查找装置包括标签查找模块,排序模块,预排序模块,控制模块,查找表,以及冗余检查模块。其中排序模块分别与预排序模块,控制模块以及查找表相连,标签查找模块与排序模块和查找表相连。
预排序模块接收CPU配置数据,对CPU配置数据进行预排序,按标签升序排序,维护一个预排序表;
控制模块,根据接收到的CPU指令,控制排序模块进行排序操作;
排序模块包括添加排序模块和删除排序模块,其中添加排序模块根据控制模块指令对查找表进行插入排序,删除排序模块根据控制模块指令对查找表进行删除排序;
其中添加排序模块将预排序表中最大数据标签和查找表中最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,将无效区间长度减1,若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;将预排序表中剩余最大数据标签和查找表中未参与比较的最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,将无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;直到预排序表中数据全部插入查找表为止,此时无效区长度为0,插入排序结束。
请参阅图2,添加排序过程中,查找表被分成三段,其中A和C为有效的查找区间,中间夹着一块无效区间B。图中变量lenth表示查找表原深度,N表示预排序表原深度,a1和a2分别表示前段有效区间的最后一个地址,和后段有效区间的第一个地址。
若排序过程中出现查找申请,则保存当前B区间的长度,以及与B区间相邻的有效地址a1和a2,然后给出查找同意信号。当检测到查找完成信号有效后,继续被打断的比较和插入。
其中删除排序模块排序时,若预排序表中最小数据标签,与查找表中最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效。
若预排序表中剩余最小数据标签,与查找表中未参与过比较的最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中剩余最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;直到预排序表中数据全部从查找表中删除为止,删除排序结束。
请参阅图3,删除排序过程中,查找表被分成三段,其中A和C为有效的查找区间,中间夹着一块无效区间B。图中变量lenth表示查找表原深度,a1和a2分别表示前段有效区间的最后一个地址,和后段有效区间的第一个地址。
若排序过程中出现查找申请,则保存当前B区间的长度,以及与B区间相邻的有效地址a1和a2,然后给出查找同意信号。当检测到查找完成信号有效后,继续被打断的比较和删除。
标签查找模块,用于收到查找请求后发起查找申请并进行查找,输出查找结果和查找完成信号。
所述流水四段分区查找装置还包括冗余检查功能,为了保证查找表配置数的可靠性,本发明对数据进行冗余检查,若检查到冗余则向CPU发出中断请求。
冗余检查包括三个部分:
a.预排序表标签冗余检查,以保证CPU发送的一组数据中,不存在标签相同的情况。
b.查找表标签冗余和通道号冗余检查,以保证查找表中不存在标签相同,或通道号相同的数据。
c.排序过程标签冗余检查,若查找表中存在待插入的数据,或不存在待删除的数据,即为排序过程冗余情况。
如图4所示,一种大容量查找表快速排序和查找装置及其实现方法,包括步骤:
步骤401、对CPU配置数据进行预排序。
假设CPU需要配置16个数据,每次插入(或删除)一个数据后,重新开始比较并插入(或删除)下一个数据,则最多耗用的周期数可能大于16*2n。由于查找表深度(2n)可能很大,若每次插入或删除1个配置数,都重新与查找表数据进行标签比较和排序,则耗用太多时间。
本发明提前将CPU发送的16个配置数按标签升序进行预排序,并将排完序的16个数据一起送入查找表进行标签比较和插入(或删除),则总共耗用的最多周期可能只比2n大一点。相比于前者可节省15/16的时间。
步骤402、对查找表中数据进行排序,排序完成CPU配置数据的插入和删除,并保证插入或删除完成后查找表中数据仍然按标签升序排列,其中查找表地址小的空间存放标签小的数据,地址大的空间存放标签大的数据。
查找表中数据排序时可以按照标签升序排列也可以按照标签降序排列,本实施例采用升序排列来进行说明,对按照降序排列的查找表同样适用。
插入排序过程,首先在查找表尾部拓展一段无效区间,其长度与待插入数据个数相同。将预排序表中最大数据标签和查找表中最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,将无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址。
将预排序表中剩余最大数据标签和查找表中未参与比较的最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,将无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;直到预排序表中数据全部插入查找表为止,此时无效区长度为0,插入排序结束。
删除排序过程,若预排序表中最小数据标签,与查找表中最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效。
若预排序表中剩余最小数据标签,与查找表中未参与过比较的最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中剩余最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;直到预排序表中数据全部从查找表中删除为止,删除排序结束。
步骤403、查找模块收到查找请求;
步骤404、查找模块向排序模块发出查找申请,排序模块收到查找申请后,判断排序模块是否在排序操作,若正在排序则进入下一步骤,否则直接进入步骤406;
步骤405、中断排序操作,记录当前与无效区间相邻的两个有效点地址,以及无效区间的长度;
步骤406、并发出查找同意信号;
步骤407、进行标签查找;
可以采用传统的一对一查找方法:对于给定值x,从查找表首地址开始比较,若相等,则匹配成功,结束查找。若不相等,则继续与下一地址数据进行比较,直到匹配成功为止。这种方法实现简单,耗用逻辑资源少,但是一对一查找方法虽然实现简单,对于深度为2n的查找表,最多需要查找2n次,浪费太多查找时间,不适用于大容量的查找表搜索。
或采用二分法查找方法:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果x等于当前位置值,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
优选的,采用流水四段分区查找法,该方法为对二分法查找法的流水优化,将二分法中闲置的周期利用起来。假设x2,x1,x3分别为将查找表四等分的3个地址,其中x1为中间地址,x2和x3分别为将前半段和后半段区间二等分的2个地址。
对于给定查找值x,从序列的中间位置x1开始比较,若x等于x1位置值,则查找成功;若x小于x1位置值,则确定x2为下一回合的x1,并在前段区间以新x1为中点,重新计算x2,x3;若x大于x1位置值,则确定x3为下一回合的x1,并在后段区间以新x1为中点,重新计算x2,x3。继续将x与x1进行比较,直到找到为止。
流水四段分区查找法中,得到n回合的比较结果后,通过判断如果找到匹配值,则结束搜索。否则计算n+2回合的两个预测中值点,因此在得到n+1回合的比较结果的同时,可以给出n+2回合的两个预测中值地址。这种查找方案,能实现无缝隙的提供地址,提高了周期利用效率。
对于深度为2n的查找表,流水四段分区法也是最多需要查找n次。假设标签比较和地址生成都耗用一个时钟周期,为将搜索区间缩小至原来的1/4,二分法每次都需要6个时钟周期;流水四段分区法第一次需要4或5个周期,而后面每次缩小1/4则只需要4个周期。因此,流水四段分区法能在更短的时间内将搜索区间缩小1/4,提高搜索效率。
查找开始时,若有排序操作被中断,则查找表可能存在无效区,请参阅图2和图3。使用四段分区法对查找表进行搜索前,首先判断待查找数据落在有效区间A还是C。
读取地址a1和a2的表项,并将待查找数据标签与这两个表项的标签字段进行比较。若查找标签值等于地址a1或a2对应的标签值,说明找到匹配值,查找结束。若待查找标签值小于地址a1对应的标签值,则有效查找空间为A,下一步进行四段分区法搜索。若待查找标签值大于地址a2对应的标签值,则有效查找空间为C,下一步进行四段分区法搜索。
确定查找空间后,开始四段分区法搜索。依次给出将查找区间四等分的地址x1、x2、x3,其中x1为查找区间的中间地址,x2和x3分别为前半段和后半段区间的二等分地址。
得到x1的数据比较结果后,如果结果相等,则匹配成功,结束查找;如果待查找标签小于x1的数据标签,则将x2视为新x1,计算前半段区间的x2和x3地址;如果待查找标签大于x1的数据标签,则将x3视为新x1,计算后半段区间的x2和x3地址。并送出新的x2、x3地址。
继x1比较结果后,依次得到x2和x3的比较结果,这两个比较结果一个为有效值,而另一个为无效值,无需参考。由于通过判断x1比较结果,在x2和x3中确立了新的x1值,因此也就确立了有效比较结果。
当匹配成功时,结束查找,提取出对应的通道号送出,并给出查找成功指示。若查找表被遍历搜寻后,仍未找到匹配值,则查找失败,给出查找失败指示。
步骤408、输出查找结果和查找完成信号,继续之前被中断的排序操作。排序模块当检测到查找完成信号有效后,继续之前被中断的操作。
查找和排序模块工作互相牵制,其中,查找模块的优先级较高,排序模块只能在查找空闲时进行。查找模块判断有查找请求时,向排序模块发出查找申请。收到查找申请时,若排序模块不处于排序工作状态,则发出查找同意信号;若排序模块正处于排序工作状态,则中断当前排序操作,记录当前中断位置,并发出查找同意信号。
查找模块接收到排序模块反馈的查找同意信号后,进入查找工作状态,查找过程结束时,向排序模块反馈一个查找完成信号,此时被打断的排序操作可继续进行。
Claims (7)
1.一种大容量查找表快速排序和查找装置,根据CPU指令对大容量查找表进行快速排序和搜索,其特征在于,所述装置包括标签查找模块,排序模块,预排序模块和控制模块,所述的排序模块分别与预排序模块,控制模块以及查找表相连,所述的标签查找模块与排序模块和查找表相连;
其中所述的预排序模块接收CPU配置数据,对CPU配置数据进行预排序,维护一个预排序表;
所述控制模块,根据接收到的CPU指令,控制排序模块进行排序操作;
所述排序模块包括添加排序模块和删除排序模块,其中添加排序模块根据控制模块指令对查找表进行插入排序,具体的:首先在查找表尾部拓展一段无效区间,其长度与待插入数据个数相同;然后将预排序表中最大数据标签和查找表中最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;最后将预排序表中剩余最大数据标签和查找表中未参与比较的最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;直到预排序表中数据全部插入查找表为止,此时无效区长度为0,插入排序结束;删除排序模块根据控制模块指令对查找表进行删除排序,具体的:若预排序表中最小数据标签,与查找表中最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;若预排序表中剩余最小数据标签,与查找表中未参与过比较的最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中剩余最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;直到预排序表中数据全部从查找表中删除为止,删除排序结束;
所述标签查找模块,用于收到查找请求后发起查找申请并进行查找,输出查找结果和查找完成信号。
2.如权利要求1所述的大容量查找表快速排序和查找装置,其特征在于,包括冗余检查模块,所述冗余检查模块与所述控制模块和查找表相连,用于对预排序表和查找表进行冗余检查,若检查到冗余则向CPU发出中断请求。
3.如权利要求1所述的大容量查找表快速排序和查找装置,其特征在于,所述标签查找模块收到查找请求后,向所述排序模块发出查找申请,收到同意查找信号后,进行标签查找,并输出查找结果;查找结束发出查找完成信号给所述排序模块。
4.如权利要求3所述的大容量查找表快速排序和查找装置,其特征在于,所述排序模块收到查找申请后,若排序模块正在进行排序操作,则中断当前排序操作,并发出查找同意信号;当检测到查找完成信号有效后,继续之前被中断的操作;如果排序模块在收到查找请求时,没有进行排序操作,则直接发出查找同意信号。
5.一种大容量查找表快速排序和查找方法,其特征在于,包括步骤:
步骤1、对CPU配置数据进行预排序,维护一个预排序表;
步骤2、收到数据排序指令后,对查找表中数据进行排序;
步骤3、收到查找请求,查找模块向排序模块发出查找申请,排序模块收到查找申请后,若排序模块正在进行排序操作,中断当前排序操作,并发出查找同意信号;如果排序模块在收到查找请求时,没有进行排序操作,则直接发出查找同意信号;
步骤4、进行标签查找;
步骤5、输出查找结果和查找完成信号;
若为添加数据排序,所述的步骤2包括:
步骤2.1.1、则首先在查找表尾部拓展一段无效区间,其长度与待插入数据个数相同;
步骤2.1.2、将预排序表中最大数据标签和查找表中最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;
步骤2.1.3、将预排序表中剩余最大数据标签和查找表中未参与比较的最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后一个地址,无效区间长度减1;若查找表数据较大,则将该数据插入无效区间最后一个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;直到预排序表中数据全部插入查找表为止,此时无效区长度为0,插入排序结束;
若为删除数据排序,所述的步骤2包括:
步骤2.2.1、若预排序表中最小数据标签,与查找表中最小数据标签相等,则将查找表该数据原地址置为无效;
步骤2.2.2、若预排序表中最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;
步骤2.2.3、若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;
步骤2.2.4、若预排序表中剩余最小数据标签,与查找表中未参与过比较的最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中剩余最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;直到预排序表中数据全部从查找表中删除为止,删除排序结束。
6.如权利要求5所述的大容量查找表快速排序和查找方法,其特征在于,所述的步骤4包括:
步骤4.1、查找开始时,若有排序操作被中断,则将查找表分为三段,若无效区间为B,则有分别为位于无效区前的A和无效区后的C区,A区尾地址为a1,C区首地址为a2;否则直接进入步骤4.3;
步骤4.2、确定查找有效区间,将待查找数据标签与a1,a2对应的标签字段进行比较,若查找标签值等于地址a1或a2对应的标签值,说明找到匹配值,查找结束;若待查找标签值小于地址a1对应的标签值,则有效查找空间为A;若待查找标签值大于地址a2对应的标签值,则有效查找空间为C;
步骤4.3、在有效查找空间中进行标签查找。
7.如权利要求6所述的大容量查找表快速排序和查找方法,其特征在于,所述的步骤4.3包括:
步骤4.3.1、将所述查找表分为四等分,x2,x1,x3分别为将查找表四等分的3个地址,其中x1为中间地址,x2和x3分别为将前半段和后半段区间二等分的2个地址;
步骤4.3.2、对于给定查找值x,从序列的中间位置x1开始比较,若x等于x1位置值,则查找成功,结束查找;若x小于x1位置值,则确定x2为下一回合的x1,并在前段区间以新x1为中点,重新计算x2,x3;若x大于x1位置值,则确定x3为下一回合的x1,并在后段区间以新x1为中点,重新计算x2,x3;
步骤4.3.3、重复步骤4.3.2,直到当匹配成功时,结束查找;若查找表被遍历搜寻后,仍未找到匹配值,则查找失败,给出查找失败指示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100907842A CN102663061B (zh) | 2012-03-30 | 2012-03-30 | 一种大容量查找表快速排序和查找装置及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100907842A CN102663061B (zh) | 2012-03-30 | 2012-03-30 | 一种大容量查找表快速排序和查找装置及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102663061A CN102663061A (zh) | 2012-09-12 |
CN102663061B true CN102663061B (zh) | 2013-11-27 |
Family
ID=46772552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100907842A Active CN102663061B (zh) | 2012-03-30 | 2012-03-30 | 一种大容量查找表快速排序和查找装置及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102663061B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108717352B (zh) * | 2018-05-28 | 2021-07-06 | 武汉大学 | 一种提高计算机运算速度的并发筛选插入排序方法 |
CN109300032B (zh) * | 2018-08-20 | 2022-12-02 | 北京京东尚科信息技术有限公司 | 区块生成方法、装置、设备及计算机可读存储介质 |
CN110197219B (zh) * | 2019-05-25 | 2023-04-18 | 天津大学 | 一种支持数据分类的贝叶斯分类器的硬件实现方法 |
CN115617878B (zh) * | 2022-11-17 | 2023-03-10 | 浪潮电子信息产业股份有限公司 | 一种数据查询方法、系统、装置、设备及计算机存储介质 |
CN117119334B (zh) * | 2023-10-24 | 2024-01-02 | 深圳市先行电气技术有限公司 | 一种电表采集终端的自动搜表采集方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001020501A1 (en) * | 1999-09-13 | 2001-03-22 | Vitesse Semiconductor Corporation | Search algorithm methods and apparatus |
CN100366023C (zh) * | 2004-07-28 | 2008-01-30 | 国家数字交换系统工程技术研究中心 | 路由查找装置 |
-
2012
- 2012-03-30 CN CN2012100907842A patent/CN102663061B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102663061A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102663061B (zh) | 一种大容量查找表快速排序和查找装置及其实现方法 | |
CN104317549A (zh) | 一种实现数据排序的级联结构电路和方法 | |
CN101604261B (zh) | 超级计算机的任务调度方法 | |
CN102073740A (zh) | 基于基数排序的字符串后缀数组构造方法 | |
CN102955812B (zh) | 一种构建索引库的方法、装置及查询方法和装置 | |
CN105335481A (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
CN106599091A (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN101430741A (zh) | 一种短序列映射方法及系统 | |
CN101470553B (zh) | 触摸屏控制器数据预处理排序电路及方法 | |
CN101551824B (zh) | 基于fpga的高速搜索引擎及搜索方法 | |
CN103207936B (zh) | 一种基于空间缩减策略的序列采样算法 | |
CN109828785B (zh) | 一种采用gpu加速的近似代码克隆检测方法 | |
CN104123354A (zh) | 一种基于MySQL数据库的查询优化方法 | |
CN1492359A (zh) | 一种多关键字自动状态机查找匹配方法 | |
CN112765766B (zh) | 一种动态交互的细粒度离散事件系统时序推进方法 | |
CN109977295A (zh) | 一种黑白名单匹配方法及装置 | |
CN111722829B (zh) | 一种双并发预读的高性能归并排序方法及应用 | |
US10776429B2 (en) | Optimizing memory usage for a HyperLogLog estimator | |
CN109684761B (zh) | 一种宽同或电路优化方法 | |
CN101345710B (zh) | 一种区间值存储方法及装置 | |
Abdelrasoul et al. | FPGA based hardware accelerator for sorting data | |
CN111625570A (zh) | 列表数据资源检索方法及装置 | |
KR100907827B1 (ko) | 포워딩 테이블 검색 장치 및 방법 | |
Chen et al. | Modular Pipeline Architecture for Accelerating Join Operation in RDBMS | |
CN1279725C (zh) | 路由查找和流分类用的高速低功耗的匹配方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20120912 Assignee: Special art (China) Technology Co., Ltd. Assignor: UT Starcom Communication Co., Ltd. Contract record no.: 2013330000254 Denomination of invention: Quick sorting and searching device for high-capacity lookup table and method for implementing quick sorting and searching device License type: Common License Record date: 20130807 |
|
LICC | Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |