本发明专利技术公开了一种大容量查找表快速排序和查找装置及其实现方法,所述快速排序和查找装置设置有预排序模块,控制模块,标签查找模块和排序模块,通过查找与排序的相互配合,查找的优先级高于排序,可以打断排序并开始查找,而排序则在查找空闲时进行,并且被打断的排序操作不会影响查找结果;采用基于预排序的方法进行添加排序和删除排序操作,标签查找采用流水四段分区查找法,提高了周期利用效率,查找效率高,速度快。本发明专利技术不仅限用于标签搜索,还可以用于其它任意关键字的搜索。
【技术实现步骤摘要】
本专利技术涉及关键字搜索
,特别涉及ー种大容量查找表快速排序和查找装置及其实现方法。
技术介绍
PW(伪线,Pseudo-Wire)标签用于边缘路由器对之间点对点的连接。在FPGA(现场可编程门阵列,Field Programmable Gate Array)设计中,CPU配置的PW标签、该标签对应的通道号ID存放在查找表中。传统的一対一查找方法对于给定值X,从查找表首地址开始比较,若相等,则匹配成功,结束查找。若不相等,则继续与下一地址数据进行比较,直到匹配成功为止。这种 方法实现简单,耗用逻辑资源少,但是一対一查找方法虽然实现简单,对于深度为2n的查找表,最多需要查找2n次,浪费太多查找时间,不适用于大容量的查找表搜索。二分法查找方法假设数据是按升序排序的,对于给定值X,从序列的中间位置开始比较,如果X等于当前位置值,则查找成功;若X小于当前位置值,则在数列的前半段中查找;若X大于当前位置值则在数列的后半段中继续查找,直到找到为止。这种方法相对于传统ー对ー查找,效率大大提高,对于深度为2n的查找表,最多需要查找η次。二分法查找方法,由于比较数据和计算地址需要时间,因此在查找过程中存在浪费节拍的现象。常用的标签查找采用的方法是将标签存在多块RAM中进行并行查找,按地址递增方式对每个表项进行查找,但是对于标签量大的情况,这种查找方法耗用太多时间。为在大容量的查找表中搜索PW标签并提取对应的通道号ID,需要提出一种查找方案,可以使用尽可能少的资源、并尽可能快的速度在大容量的查找表中捜索到匹配项。
技术实现思路
本专利技术的目的是提供ー种大容量查找表快速排序和查找装置及其实现方法,解决现有查找技术中浪费节拍现象,实现快速排序和查找。ー种大容量查找表快速排序和查找装置,根据CPU指令对大容量查找表进行快速排序和捜索,所述装置包括标签查找模块,排序模块,预排序模块和控制模块,所述的排序模块分别与预排序模块,控制模块以及查找表相连,所述的标签查找模块与排序模块和查找表相连。其中所述的预排序模块接收CPU配置数据,对CPU配置数据进行预排序,维护ー个预排序表;所述控制模块,根据接收到的CPU指令,控制排序模块进行排序操作;所述排序模块包括添加排序模块和删除排序模块,其中添加排序模块根据控制模块指令对查找表进行插入排序,删除排序模块根据控制模块指令对查找表进行删除排序;所述标签查找模块,用于收到查找请求后发起查找申请并进行查找,输出查找结果和查找完成信号。所述大容量查找表快速排序和查找装置还包括冗余检查模块,所述冗余检查模块与所述控制模块和查找表相连,用于对预排序表和查找表进行冗余检查,若检查到冗余则向CPU发出中断请求。所述标签查找模块收到查找请求后,向所述排序模块发出查找申请,所述排序模块收到查找申请后,若排序模块正在进行排序操作,则中断当前排序操作,并发出查找同意信号;如果排序模块在收到查找请求时,没有进行排序操作,则直接发出查找同意信号。收到同意查找信号后,标签查找模块进行标签查找,并输出查找結果;查找结束发出查找完成信号给所述排序模块,排序模块继续之前被中断的排序操作。ー种大容量查找表快速排序和查找方法,其特征在于,包括步骤步骤I、对CPU输入数据进行预排序; 步骤2、收到数据排序指令后,对查找表中数据进行排序;步骤3、收到查找请求,查找模块向排序模块发出查找申请,排序模块收到查找申请后,若排序模块正在进行排序操作,中断当前排序操作,并发出查找同意信号;如果排序模块在收到查找请求时,没有进行排序操作,则直接发出查找同意信号;步骤4、进行标签查找;步骤5、输出查找结果和查找完成信号。如果是添加数据排序,所述的步骤2包括步骤2. I. I、则首先在查找表尾部拓展一段无效区间,其长度与待插入数据个数相同;步骤2. I. 2、将预排序表中最大数据标签和查找表中最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后ー个地址,无效区间长度减I ;若查找表数据较大,则将该数据插入无效区间最后ー个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;步骤2. I. 3、将预排序表中剰余最大数据标签和查找表中未參与比较的最大数据标签进行比较,若预排序表数据标签较大,则将该数据插入无效区间最后ー个地址,无效区间长度减I ;若查找表数据较大,则将该数据插入无效区间最后ー个地址,并将该数据原地址置为无效,无效区间长度不变,位置向地址小的方向移一个地址;直到预排序表中数据全部插入查找表为止,此时无效区长度为0,插入排序结束。如果是删除数据排序,所述的步骤2包括步骤2. 2. I、若预排序表中最小数据标签,与查找表中最小数据标签相等,则将查找表该数据原地址置为无效;步骤2. 2. 2、若预排序表中最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;步骤2. 2. 3、若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;步骤2. 2. 4、若预排序表中剰余最小数据标签,与查找表中未參与过比较的最小数据标签相等,则将查找表该数据原地址置为无效;若预排序表中剰余最小数据标签,小于查找表中最小数据标签,表示待删除的标签不存在,无需操作;若预排序表数据标签大于查找表中数据标签,则将查找表中该数据插入无效区间中第一个地址处,并将该数据原地址置为无效;直到预排序表中数据全部从查找表中删除为止,删除排序结束。进ー步地,所述的步骤4包括步骤4. I、查找开始时,若有排序操作被中断,则将查找表分为三段,若无效区间为B,则有分别为位于无效区前的A和无效区后的C区,A区尾地址为al,C区首地址为a2 ;否则直接进入步骤4. 3 ;步骤4. 2、确定查找有效区间,将待查找数据标签与al,a2对应的标签字段进行比较,若查找标签值等于地址al或a2对应的标签值,说明找到匹配值,查找结束;若待查找标签值小于地址al对应的标签值,则有效查找空间为A ;若待查找标签值大于地址a2对应的标签值,则有效查找空间为C ;步骤4. 3、在有效查找空间中进行标签查找。进ー步地,所述的步骤4. 3包括 步骤4. 3. I、将所述查找表分为四等分,x2, X1, X3分别为将查找表四等分的3个地址,其中X1为中间地址,X2和X3分别为将前半段和后半段区间二等分的2个地址;步骤4. 3. 2、对于给定查找值X,从序列的中间位置X1开始比较,若X等于X1位置值,则查找成功,结束查找;若X小于X1位置值,则确定X2为下一回合的X1,并在前段区间以新X1为中点,重新计算X2,X3 ;若X大于X1位置值,则确定A为下一回合的X1,并在后段区间以新X1为中点,重新计算X2,X3 ;步骤4. 3. 3、重复步骤4. 3. 2,直到当匹配成功时,结束查找;若查找表被遍历搜寻后,仍未找到匹配值,则查找失败,给出查找失败指示。本专利技术提出的ー种大容量查找表快速排序和查找装置及其实现方法,设置有预排序模块,降低了排序时间;同时采用流水四段分区查找法,提高了周期利用效率。通过查找与排序的相互配合,查找的优先级高于排序,可以打断排序并开始查找,而排序则在查找空闲时进行,并且被本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:张静,赵书鹏,
申请(专利权)人:UT斯达康通讯有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。