tcam多优先级存储方法、装置及可读存储介质
技术领域
1.本技术涉及通信技术领域,特别涉及一种tcam多优先级存储方法、装置及可读存储介质。
背景技术:2.tcam(ternary content addressable memory,三态内容寻址存储器)是交换芯片设计中常用的一种表项。其中,tcam的查找顺序是从前往后查,即索引值越小,优先级越高,而索引值越大,优先级越低。而目前通常使用的tcam是针对两个优先级进行配置,即高优先级从前往后分配,而低优先级从后往前分配。
3.但是,在实际的使用过程中,却存在条目对应的优先级超过两个的使用场景,且各个优先级之间严格按照优先级匹配;比如条目1到条目5分别对应优先级0至优先级4,此时若有优先级为3的条目6需插入到tcam中,根据现有的高优先级从前往后分配且低优先级从后往前分配的原则,将导致优先级为3的条目6无法插入至优先级4与优先级2之间。由此可见,如何实现tcam多优先级的存储是当前亟需解决的问题。
技术实现要素:4.本技术提供一种tcam多优先级存储方法、装置及可读存储介质,以解决相关技术中无法实现tcam多优先级存储的问题。
5.第一方面,提供了一种tcam多优先级存储方法,包括以下步骤:
6.当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;
7.若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;
8.若不存在,则基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引;
9.将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。
10.一些实施例中,所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引,包括:
11.判断与第一优先级相邻的第二优先级是否为无效优先级;
12.若否,判断第二优先级中是否存储有条目;
13.若第二优先级中存储有条目,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级中的第二索引最值相邻的目标位置;
14.若能成功移位,将第一索引最值对应的条目移位至目标位置,并将第一索引最值作为第一优先级的目标索引。
15.一些实施例中,在所述判断第二优先级中的第一索引最值对应的条目是否能成功
移位至与第二优先级中的第二索引最值相邻的目标位置的步骤之后,还包括:
16.若不能成功移位,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级相邻的第三优先级中的第三索引最值对应的位置,第一索引最值和第三索引最值为属性相同的索引最值,第一索引最值和第一优先级中的索引最值相邻;
17.若能成功移位,将第一索引最值对应的条目移位至第三索引最值对应的位置,并将第一索引最值作为第一优先级的目标索引。
18.一些实施例中,在所述判断与第一优先级相邻的第二优先级是否为无效优先级的步骤之后,还包括:
19.若与第一优先级相邻的第二优先级为无效优先级,则判断另一方向与第一优先级相邻的第四优先级是否为无效优先级;
20.若第四优先级不是无效优先级,则将第四优先级作为第二优先级并执行所述判断第二优先级中是否存储有条目的步骤。
21.一些实施例中,所述根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引,包括:
22.当第一优先级的最大索引大于或等于第二优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级低于第一优先级,或者;
23.当第二优先级中的最大索引大于或等于第一优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级高于第一优先级。
24.一些实施例中,在所述判断待插入条目是否为对应的第一优先级中的初次存储条目的步骤之后,还包括:
25.若待插入条目为第一优先级中的初次存储条目,检测第一优先级的起始索引是否已被占用;
26.若是,判断第一优先级是否为最高优先级或最低优先级;
27.若第一优先级不是最高优先级且不是最低优先级,判断第二优先级的最大索引是否小于第三优先级的最小索引与1的差值;
28.若否,判定不存在用于存储待插入条目的索引,并执行所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引的步骤;
29.其中,所述第二优先级高于第一优先级且与第一优先级相邻,所述第三优先级低于第一优先级且与第一优先级相邻。
30.一些实施例中,在所述判断第二优先级的最大索引是否小于第三优先级的最小索引与1的差值的步骤之后,还包括:
31.若第二优先级的最大索引小于第三优先级的最小索引与1的差值,判定存在用于存储待插入条目的索引;
32.根据贴近原则将待插入条目插入至靠近起始索引的位置,并更新第一优先级的索引最值。
33.一些实施例中,所述方法还包括:
34.当检测到待删除条目时,判断待删除条目对应的目标优先级中是否存在至少两个索引已被占用;
35.若是,判断待删除条目对应的第一索引是否为目标优先级的最大索引;
36.若是,删除待删除条目,并将目标优先级的最大索引更新为第一索引与1的差值;
37.若否,删除待删除条目,将目标优先级的最大索引对应的条目移位至第一索引对应的位置,并更新目标优先级的最大索引。
38.第二方面,提供了一种tcam多优先级存储装置,包括:
39.第一判断单元,其用于当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;
40.第二判断单元,其用于若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;
41.条目移位单元,其用于若不存在,则基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引;
42.条目插入单元,其用于将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。
43.第三方面,提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行前述的tcam多优先级存储方法。
44.本技术提供的技术方案带来的有益效果包括:可实现tcam多优先级的条目存储。
45.本技术提供了一种tcam多优先级存储方法、装置及可读存储介质,包括当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;若不存在,则基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引;将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。通过本技术,可基于各个优先级的索引最值确定是否存在用于存储待插入条目的空白索引,并对索引最值对应的条目进行移位操作,以使得待插入条目可插入至对应优先级中,最终实现tcam多优先级下的待插入条目的存储。
附图说明
46.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
47.图1为本技术实施例提供的一种tcam多优先级存储方法的流程示意图;
48.图2为本技术实施例提供的tcam中多优先级临界状态示意图;
49.图3为本技术实施例提供的本技术实施例提供的一种tcam多优先级存储装置的结构示意图;
50.图4为本技术实施例提供的一种tcam多优先级存储设备的结构示意图。
具体实施方式
51.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
52.本技术实施例提供了一种tcam多优先级存储方法、装置及可读存储介质,其能解决相关技术中无法实现tcam多优先级存储的问题。
53.图1是本技术实施例提供的一种tcam多优先级存储方法,包括以下步骤:
54.步骤s10:当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;
55.示范性的,本实施例中,在tcam中进行优先级区域的划分,以形成各个优先级块。需要说明的是,本实施例所涉及的优先级块并不是传统意义上固定的存储空间,而是通过所记录的各个优先级的最小索引和最大索引来形成优先级块;此外,本技术中所指的最小索引和最大索引均为已被条目所占用的索引。
56.比如,以条目存在6个优先级的场景为例,其中,优先级表述为priority,5为最高级,0为最低级;假设tcam的存储空间为30个字节,则可以将该存储空间均分为6块,使得每个优先级具有对应的起始索引,即priority5至priority0的起始索引依次为0、5、10、15、20和25,此时若priority5已经被占用的索引为0、1和2,说明tcam中存储有3条优先级为priority5的条目,则priority5的最小索引(即pri_low_idx[5])为0且最大索引(即pri_high_idx[5])为2,此时,pri_low_idx[5]=0至pri_high_idx[5]=2构成了priority5对应的优先级块;同理,若priority4至priority0的所有索引均已被占用,则pri_low_idx[4]=5至pri_high_idx[4]=9构成了priority4对应的优先级块,pri_low_idx[3]=10至pri_high_idx[3]=14构成了priority3对应的优先级块,pri_low_idx[2]=15至pri_high_idx[2]=19构成了priority2对应的优先级块,pri_low_idx[1]=20至pri_high_idx[1]=24构成了priority1对应的优先级块,pri_low_idx[0]=25至pri_high_idx[0]=29构成了priority0对应的优先级块。
[0057]
但是,此时若有1条优先级为priority4的条目a需插入,由于priority4下的所有索引均已被占用,而此时只有索引3和索引4未被占用,因此条目a将被分配到离priority4的起始索引较近的位置(即索引为4的位置)上,那么priority4的pri_low_idx[4]将从5变成4,所以变成由pri_low_idx[4]=4至pri_high_idx[4]=9构成priority4对应的优先级块。由此可见,本实施例中的各个优先级块是根据每个优先级的最小索引和最大索引来确定,即只要最小索引和最大索引发生变化,则该优先级对应的优先级块也将对应发生变化。因此,各个优先级块之间互不存在重复区域,这样就能确保高优先级的条目一定能够比低优先级的条目被优先查到。
[0058]
因此,本实施例需要对每个优先级的管理存储信息进行存储,比如:各个优先级中是否已经存储有条目且所存储的条目所占用的索引、各个优先级所占用的最小索引(即优先级下限)pri_low_idx以及各个优先级所占用的最大索引(即优先级上限)pri_high_idx等。
[0059]
在初次分配某一优先级时,由于该优先级初次设置的索引可能已经被其他优先级的条目占用,以致该优先级的最小索引和最大索引是无效的,所以需要将该优先级和已经分配过的优先级的实现方法分开。因此,在本实施例中,当检测到待插入条目时,可根据已存储的管理存储信息判断待插入条目是否为对应的第一优先级中的初次存储条目,即判断
是否初次分配待插入条目所对应的优先级。比如,若有1条优先级为priority4的条目a需插入,而由于priority4中所有索引均已被优先级为priority4的条目所占用,因此条目a不是priority4中的初次存储条目,即不是初次分配priority4。
[0060]
步骤s20:若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;
[0061]
示范性的,在本实施例中,如果待插入条目不是对应的第一优先级中的初次存储条目,则需要根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值来判断第一优先级周围是否存在空白未分配的索引值供待插入条目插入存储,进而确定是否需要进行移位操作,以使得待插入条目能够存储至对应的优先级下。
[0062]
具体的,当第一优先级的最大索引大于或等于第二优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级低于第一优先级,或者;
[0063]
当第二优先级中的最大索引大于或等于第一优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级高于第一优先级。
[0064]
示范性的,以priority4的pri_low_idx[4]=5且pri_high_idx[4]=7,priority3的pri_low_idx[3]=10且pri_high_idx[3]=14,priority2的pri_low_idx[2]=15且pri_high_idx[2]=19,priority1的pri_low_idx[1]=20至pri_high_idx[1]=22为例:假设,若有优先级为priority2的条目b需要插入,而由于priority1的pri_low_idx[1]-1=19,即priority1的最小索引与1的差值为19,其与priority2的最大索引19相等,因此priority2与priority1之间不存在空白未分配的索引值供条目b插入存储;同时,由于priority2的pri_low_idx[2]-1=14,即priority2的最小索引与1的差值为14,其与priority3的最大索引14相等,因此priority2与priority3之间也不存在空白未分配的索引值供条目b插入存储,此时就需要通过移位操作来使得条目b能够存储至priority2下;
[0065]
再假设,若有优先级为priority3的条目c需要插入,而由于priority2的pri_low_idx[2]-1=14,即priority2的最小索引与1的差值为14,其与priority3的最大索引14相等,因此priority2与priority3之间不存在空白未分配的索引值供条目c插入存储,此时返回值为空,以说明需要进行移位插入操作;同时,由于priority3的pri_low_idx[3]-1=9,即priority3的最小索引与1的差值为9,其与priority4的最大索引7不相等,即priority3与priority4之间存在空白未分配的索引值(即索引8和索引9)供条目c插入存储,所以无需通过移位操作就能使条目c能够存储至priority3下,此时可返回tmp_idx(即索引8或索引9)并将其分配给条目c,因此本实施例将基于tmp_idx进行非移位的插入操作。其中,根据贴近原则,可优选靠近pri_low_idx[3]的索引9作为tmp_idx,进而可以减少后续条目插入时的移位操作次数。
[0066]
步骤s30:若不存在,则基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引;
[0067]
示范性的,在本实施例中,如果第一优先级周围不存在空白未分配的索引值供待插入条目插入存储,就需要通过移位操作来使得待插入条目能够存储至对应的优先级下。比如,参见图2所示,6个优先级之间各自独立并以最小索引和最大索引形成界限标注,且优先级4、3、2和1形成临界,比如priority5的pri_low_idx[5]=0且pri_high_idx[5]=2,priority4的pri_low_idx[4]=5且pri_high_idx[4]=9,priority3的pri_low_idx[3]=
10且pri_high_idx[3]=14,priority2的pri_low_idx[2]=15且pri_high_idx[2]=19,priority1的pri_low_idx[1]=20至pri_high_idx[1]=22,priority0的pri_low_idx[0]=25且pri_high_idx[0]=27。
[0068]
当插入优先级为priority3的条目d时,由于优先级4、3、2和1均形成临界,即priority2与priority3之间以及priority3与priority4之间均不存在空白未分配的索引值供条目d插入存储,此时需要进行移位操作。本实施例中可优先判断是否可以向后移,此时需要对priority2和priority1进行连锁移位的判断,当然也可优先判断是否可以向前移,那么需要对priority4进行移位判断;不管是哪种方式,只要满足将最小索引对应的条目移到最大索引后边的一个索引或最大索引对应的条目移到最小索引前边的一个索引,以为优先级3空出一个索引用于插入条目d的移位原则即可。
[0069]
进一步的,所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引,包括:
[0070]
判断与第一优先级相邻的第二优先级是否为无效优先级;
[0071]
若否,判断第二优先级中是否存储有条目;
[0072]
若第二优先级中存储有条目,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级中的第二索引最值相邻的目标位置;
[0073]
若能成功移位,将第一索引最值对应的条目移位至目标位置,并将第一索引最值作为第一优先级的目标索引。
[0074]
示范性的,在本实施例中,首先需要对进行移位操作的当前优先级是否有效进行判断,假如最小优先级为0且最大优先级为6,则优先级-1以及优先级7均为无效优先级;那么若移位操作检测函数发现当前优先级为-1,表示向后移位不成功,此时返回值为满,且不进行实际的向后移位操作;同理,若移位操作检测函数发现当前优先级为7,表示向前移位不成功,且不进行实际的向前移位操作。比如,假设待插入条目e的优先级为priority0且priority0下的所有索引均已被占用,此时将无法通过向后移位(即priority-1为无效优先级,无法对priority-1进行移位)来空出一个索引用于待插入条目e的存储,而只能通过向前移位(即对priority1下的条目进行移位操作)来空出一个索引用于待插入条目e的存储。
[0075]
如果当前优先级为有效优先级,还需要对当前优先级是否存储有条目进行判断,以决定是否需要对当前优先级中的条目进行移位操作判断,并最终判定能否进行实际移位操作。其中,本实施例对于移位操作,需先判断是否能够移位成功,若能成功,记录下相关移位步骤的信息,然后再根据所记录的移位步骤信息进行实际移位操作,并在实际移位的同时修订各个优先级的存储信息。
[0076]
此外,记录移位步骤的存储数据可以为mov_src[]和mov_dst[],其中,mov_src[]表示待移位索引对应的待移位条目,mov_dst[]表示用于存储待移位条目的目标索引。比如,移位前priority3的pri_low_idx[3]=5且pri_high_idx[3]=7,priority2的pri_low_idx[2]=8且pri_high_idx[2]=10,priority1的pri_low_idx[1]=11且pri_high_idx[1]=13;此时优先级为priority2的条目f需要插入,若将priority1的条目11移动到pri_high_idx[1]后边的空白索引14处,则mov_src[1]=11,mov_dst[1]=pri_high_idx[1]+1=14。
[0077]
具体的,以移位插入先向后看为例:若移位操作检测函数未发现当前优先级为无
效优先级,则执行步骤n10;
[0078]
步骤n10:判断当前优先级的priority是否存储有条目,若是,转到步骤n20,若否,则转到步骤n50;
[0079]
步骤n20:在移位步骤信息中新增记录当前移位为将当前优先级的最小索引移位到最大索引的后一个索引处,即mov_src[priority]=pri_low_idx[priority],mov_dst[priority]=1+pri_high_idx[priority],并转到步骤n30;
[0080]
步骤n30:判断移位操作mov_dst[priority]是否会移位到下一个优先级的最小索引,若是,则转到步骤n40,若否,则转到步骤n70;
[0081]
步骤n40:判断下一优先级是否能移位成功,若是,则转至步骤n70,若否,则转至步骤n60;
[0082]
步骤n50:在移位步骤信息中记录当前优先级的priority为无需进行移位操作,并将下一优先级作为当前优先级执行步骤n10;
[0083]
步骤n60:清除移位步骤信息中关于向后看的相关存储信息,说明无需进行实际的向后看移位操作;
[0084]
步骤n70:结束移位判断,返回移位成功,说明需要进行实际的向后看移位操作。
[0085]
其中,若在任一移位操作中检测函数发现当前优先级为无效优先级,表示向后看的移位不成功,则此时返回值为满,以使得前边递归调用的函数会层层返回表示不存在空白索引的返回值直到移位操作函数,并清除移位步骤信息中关于向后看的相关存储信息,即无需进行实际的向后看移位操作;此时,可以进行向前看移位的判断,其与向后看移位的判断算法大致相同,只不过是对上一优先级进行移位判断,即向前看移位的具体判断过程可参考步骤n10至步骤n70,为了描述的简洁,在此不再赘述。
[0086]
以移位前priority4的pri_low_idx[4]=2且pri_high_idx[4]=4,priority3的pri_low_idx[3]=5且pri_high_idx[3]=7,priority2的pri_low_idx[2]=8且pri_high_idx[2]=9,priority1的pri_low_idx[1]=11且pri_high_idx[1]=13,且有优先级为priority3的条目g需要插入,以先向后看为例:
[0087]
将pri_low_idx[2]=8对应的条目移位到pri_high_idx[2]+1=10对应的位置处;此时由于10不等于priority1的pri_low_idx[1],即可以将索引8空出来以用于条目g存储,说明直接通过priority2中的条目移位就可以为条目g提供空白索引,而不需要继续对priority1中的条目进行移位。因此,可以在移位步骤信息中记录mov_src[2]=pri_low_idx[2],mov_dst[2]=1+pri_high_idx[2],并根据mov_src[2]=pri_low_idx[2]和mov_dst[2]=1+pri_high_idx[2]将pri_low_idx[2]=8对应的条目移位到pri_high_idx[2]+1对应的位置处,同时将priority2的pri_low_idx[2]更新为9且pri_high_idx[2]更新为10;然后将索引8作为用于存储条目g的索引,即条目g将插入至索引8处,且priority3的pri_high_idx[3]将被更新为8。
[0088]
进一步的,在所述判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级中的第二索引最值相邻的目标位置的步骤之后,还包括:
[0089]
若不能成功移位,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级相邻的第三优先级中的第三索引最值对应的位置,第一索引最值和第三索引最值为属性相同的索引最值,第一索引最值和第一优先级中的索引最值相邻;
[0090]
若能成功移位,将第一索引最值对应的条目移位至第三索引最值对应的位置,并将第一索引最值作为第一优先级的目标索引。
[0091]
示范性的,在本实施例中,以移位前priority4的pri_low_idx[4]=2且pri_high_idx[4]=4,priority3的pri_low_idx[3]=5且pri_high_idx[3]=7,priority2的pri_low_idx[2]=8且pri_high_idx[2]=10,priority1的pri_low_idx[1]=11且pri_high_idx[1]=13,priority0的pri_low_idx[0]=17且pri_high_idx[0]=20,且有优先级为priority3的条目g需要插入,并以先向后看移位为例:
[0092]
首先,将pri_low_idx[2]=8对应的条目移位到pri_high_idx[2]+1=11对应的位置处,由于11等于priority1的pri_low_idx[1],说明通过priority2中的条目移位还不足以为条目g提供空白索引,即priority2中的pri_low_idx[2]对应的条目不能成功移位至与第二优先级中的pri_high_idx[2]+1对应的位置处,因此需要继续对priority1中的条目进行移位,并将mov_src[2]=pri_low_idx[2]以及mov_dst[2]=1+pri_high_idx[2]的信息记录至移位步骤信息中;
[0093]
然后,将pri_low_idx[1]=11对应的条目移位到pri_high_idx[1]+1=14对应的位置处,由于14不等于priority0的pri_low_idx[1],因此可以将pri_low_idx[1]=11对应的条目移位到索引14处,也即可以将索引11空出来用于存储pri_low_idx[2]对应的条目,所以此时会将mov_src[1]=pri_low_idx[1]以及mov_dst[1]=1+pri_high_idx[1]记录至移位步骤信息中。
[0094]
由此可见,通过向后看移位可以为条目g提供空白索引。因此,本实施例将根据移位步骤信息中记载的mov_src[1]=pri_low_idx[1]以及mov_dst[1]=1+pri_high_idx[1],将priority1中的pri_low_idx[1](即最小索引11)对应的条目移位至索引14处,以空出索引11,同时将priority1中的pri_low_idx[1]更新为12以及pri_high_idx[1]更新为14;然后再根据移位步骤信息中记载的mov_src[2]=pri_low_idx[2]以及mov_dst[2]=1+pri_high_idx[2],将priority2中的pri_low_idx[2](即最小索引8)对应的条目移位至索引11处,以空出索引8,同时将priority2中的pri_low_idx[2]更新为9以及pri_high_idx[2]更新为11。其中,索引8将作为用于存储优先级为priority3的条目g的目标索引。
[0095]
由此可见,本实施例在探测完毕之后,将按照记录的mov_src[]和mov_dst[]来对tcam表项进行真实移位操作,且在移位时,同步修订管理存储信息pri_low_idx[]和pri_high_idx[]。
[0096]
需要说明的是,本实施例是以向后看移位为例进行的实施例阐释,若是以向前看移位,则是对各个优先级的最大索引对应的条目进行移位,其实现的方法和原理与向后看移位的方法和原理相似,即可以参考前述向后看移位的方法和原理来实现向前看移位,因此,为了描述的简洁性,在此不再赘述。
[0097]
进一步的,在所述判断与第一优先级相邻的第二优先级是否为无效优先级的步骤之后,还包括:
[0098]
若与第一优先级相邻的第二优先级为无效优先级,则判断另一方向与第一优先级相邻的第四优先级是否为无效优先级;
[0099]
若第四优先级不是无效优先级,则将第四优先级作为第二优先级并执行所述判断第二优先级中是否存储有条目的步骤。
[0100]
示范性的,本实施例中,在每一优先级进行移位之前都会进行是否为无效优先级的判断,只要其中有一个优先级为无效优先级,则是否进行移位的判断将在该无效优先级处停止,即该方向的移位不成功,需对相反方向的优先级进行移位判断。具体的,以向后看移位为例:若在任一移位操作中检测函数发现当前优先级为无效优先级,表示向后看的移位不成功,则此时返回值为满,以使得前边递归调用的函数会层层返回表示不存在空白索引的返回值直到移位操作函数,并清除移位步骤信息中关于向后看的相关存储数据;而此时将进行向前看移位判断,其与向后看移位的算法大致相同。
[0101]
比如,tcam包括priority5至priority0,需要将优先级为priority3的条目h存储至tcam:若向后看移位时,本实施例在对priority2至priority0进行移位后,还需要对priority-1进行移位操作,此时由于priority-1为无效优先级,说明向后看移位不成功,此时返回值为满,并清除移位步骤信息中关于向后看的相关存储数据(即清除mov_src[0]至mov_src[2]以及mov_dst[0]至mov_dst[2]);然后再继续向前看移位,即对priority4和priority5进行移位判断,若判断能够移位成功,则将向前看移位的存储数据(即mov_src[4]和mov_src[5]以及mov_dst[4]和mov_dst[5])记录至移位步骤信息中;最后根据向前看移位的存储数据对priority4和priority5中的条目进行实际移位操作即可。
[0102]
步骤s40:将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。
[0103]
示范性的,在本实施例中,当通过对其他优先级中的索引最值对应的条目进行移位处理后,即可空出空白索引用于存储待插入条目,并对所有优先级的索引最值进行更新。
[0104]
比如,以移位前priority4的pri_low_idx[4]=2且pri_high_idx[4]=4,priority3的pri_low_idx[3]=5且pri_high_idx[3]=7,priority2的pri_low_idx[2]=8且pri_high_idx[2]=10,priority1的pri_low_idx[1]=11且pri_high_idx[1]=13,且有优先级为priority3的条目g需要插入,并以先向后看移位为例:通过上述步骤的移位处理后,空出了索引8来存储条目g,且priority1中的pri_low_idx[1]被更新为12以及pri_high_idx[1]被更新为14、priority2中的pri_low_idx[2]被更新为9以及pri_high_idx[2]被更新为11;此时,可将条目g插入至索引8处,并将priority3的pri_high_idx[3]更新为8。
[0105]
因此,移位后:priority4的pri_low_idx[4]=2且pri_high_idx[4]=4,priority3的pri_low_idx[3]=5且pri_high_idx[3]=8,priority2的pri_low_idx[2]=9且pri_high_idx[2]=11,priority1的pri_low_idx[1]=12且pri_high_idx[1]=14。由此可见,本实施例中的各个优先级块之间互不存在重复区域,这样就能确保高优先级的条目一定能够比低优先级的条目优先被查到,最终实现tcam多优先级下的待插入条目的存储。
[0106]
进一步的,在所述判断待插入条目是否为对应的第一优先级中的初次存储条目的步骤之后,还包括:
[0107]
若待插入条目为第一优先级中的初次存储条目,检测第一优先级的起始索引是否已被占用;
[0108]
若是,判断第一优先级是否为最高优先级或最低优先级;
[0109]
若第一优先级不是最高优先级且不是最低优先级,判断第二优先级的最大索引是否小于第三优先级的最小索引与1的差值;
[0110]
若第二优先级的最大索引不小于第三优先级的最小索引与1的差值,判定不存在
用于存储待插入条目的索引,并执行所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引的步骤;
[0111]
若第二优先级的最大索引小于第三优先级的最小索引与1的差值,判定存在用于存储待插入条目的索引;
[0112]
根据贴近原则将待插入条目插入至靠近起始索引的位置,并更新第一优先级的索引最值;
[0113]
其中,所述第二优先级高于第一优先级且与第一优先级相邻,所述第三优先级低于第一优先级且与第一优先级相邻。
[0114]
示范性的,在本实施例中,如果根据已存储的管理存储信息确定待插入条目是对应的第一优先级中的初次存储条目,说明待插入条目所对应的优先级是初次被分配。此时,可以先判断该优先级的起始索引是否已经被其他优先级的条目所占用,如果未被占用,则无需移位,默认将起始索引分配给待插入条目,并直接将待插入条目插入至起始索引处,进而实现待插入条目的存储;但是若已经被其他优先级的条目所占用,此时就需要判断待插入条目对应的优先级周围是否存在空白索引可供分配给待插入条目。
[0115]
此外,如果待插入条目对应的优先级是最高优先级且其起始索引已被其他优先级的条目所占用,说明不存在空白索引用于存储该待插入条目,此时只能通过向后看移位的方式来提供空白索引来存储该待插入条目;如果待插入条目对应的优先级是最低优先级且其起始索引已被其他优先级的条目所占用,则只能通过高于该优先级且与该优先级最近的以及存储有条目的优先级中已被占用的索引是否已达到tcam存储空间的极限来判断是否存在空白索引用于存储该待插入条目,若不存在的话,则可以通过向前看移位的方式来提供空白索引用于存储该待插入条目;而如果待插入条目对应的优先级既不是最高优先级也不是最低优先级,则可通过两侧与其相邻的存储有条目的优先级的索引最值来判断是否存在空白索引用于存储该待插入条目,若不存在的话,则可以通过向后看移位的方式或向前看移位的方式来提供空白索引用于存储该待插入条目。需要说话的是,具体的移位方法可参考前述实施例所记载的向后看移位方法,在此不再赘述。
[0116]
具体的,以待插入条目对应的优先级既不是最高优先级也不是最低优先级为例:假设待插入条目i的优先级为priority3,此时可找到高于priority3且与priority3最近的以及已经存储有条目的优先级的最大索引,以及低于priority3且与priority3最近的已经存储有条目的优先级的最小索引,判断这两个索引是否满足最大索引《最小索引-1,若满足,则表示有空白索引可供分配;若不满足,则表示没有空白索引可供分配,此时需要进行移位操作。
[0117]
比如,priority4至priority1的起始索引分别是0、5、10和15,priority4的pri_low_idx[4]=2且pri_high_idx[4]=5,priority3未存储有条目,priority2的pri_low_idx[2]=8且pri_high_idx[2]=14,priority1的pri_low_idx[1]=15且pri_high_idx[1]=19,假设有优先级为priority3的条目k需要插入:根据已存储的管理存储信息可知,priority3是初次被分配且其起始索引已经被priority4的条目所占用,因此需要通过priority4的最大索引和priority2的最小索引来判断priority3周围是否存在空白索引用于存储条目k;由于priority4的pri_high_idx[4]小于priority2的pri_low_idx[2]与1的差值,即5<8-1,所以priority3周围存在用于存储条目k的空白索引(即索引6和索引7),则
此时可以根据贴近原则将条目k插入至靠近priority3的起始索引的索引6处,并更新priority3的pri_low_idx[3]=6且pri_high_idx[3]=6。
[0118]
再比如,priority4至priority1的起始索引分别是0、5、10和15,priority4的pri_low_idx[4]=2且pri_high_idx[4]=7,priority3未存储有条目,priority2的pri_low_idx[2]=8且pri_high_idx[2]=14,priority1的pri_low_idx[1]=15且pri_high_idx[1]=16,假设有优先级为priority3的条目m需要插入:根据已存储的管理存储信息可知,priority3是初次被分配且其起始索引已经被priority4的条目所占用,而由于priority4的pri_high_idx[4]等于priority2的pri_low_idx[2]与1的差值,即7=8-1,所以priority3周围不存在用于存储条目m的空白索引,则此时需要对priority2和priority1中的条目分别进行移位操作,以空出索引8来存储条目m,并更新priority3的pri_low_idx[3]=8且pri_high_idx[3]=8、priority2的pri_low_idx[2]=9且pri_high_idx[2]=15,priority1的pri_low_idx[1]=16且pri_high_idx[1]=17。
[0119]
进一步的,所述方法还包括:
[0120]
当检测到待删除条目时,判断待删除条目对应的目标优先级中是否存在至少两个索引已被占用;
[0121]
若是,判断待删除条目对应的第一索引是否为目标优先级的最大索引;
[0122]
若是,删除待删除条目,并将目标优先级的最大索引更新为第一索引与1的差值;
[0123]
若否,删除待删除条目,将目标优先级的最大索引对应的条目移位至第一索引对应的位置,并更新目标优先级的最大索引。
[0124]
示范性的,当删除某个优先级的一个条目时,可能存在以下三种情形:(1)当前优先级只占用一个索引;(2)当前优先级占用的索引个数超过或等于2个,且删除的条目是当前优先级占用的最大索引;(3)当前优先级占用的索引个数超过或等于2个,且删除的条目不是当前优先级占用的最大索引。
[0125]
针对以上三种情形,本实施例中将分别做如下处理:(1)删除待删除条目,并在管理存储信息中清空当前优先级信息;(2)删除待删除条目,并在管理存储信息中直接将当前优先级的最大索引减1;(3)删除待删除条目,并将当前优先级的最大索引对应的条目移位到被删除条目的索引位置,且在管理存储信息中将当前优先级的最大索引减1。因此,在本实施例中,当需要删除某个优先级的一个条目时,只需要对当前优先级进行操作即可,而无需操作其他优先级。
[0126]
由此可见,本实施例在移位时,每个牵涉到移位的优先级,仅仅移位一次即可,比如向后移位时,就是将该优先级的最小索引移位到最大索引加1的索引上。因此,本实施例通过软件的设计,形成了1维tcam表的多优先级条目(比如6个优先级)的实现,可以满足实际运用中的多优先级场景。
[0127]
参见图3所示,本技术实施例还提供了一种tcam多优先级存储装置,包括:
[0128]
第一判断单元,其用于当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;
[0129]
第二判断单元,其用于若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;
[0130]
条目移位单元,其用于若不存在,则基于预设的移位规则对其他优先级中的索引
最值对应的条目进行移位,得到目标索引;
[0131]
条目插入单元,其用于将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。
[0132]
进一步的,所述条目移位单元具体用于:
[0133]
判断与第一优先级相邻的第二优先级是否为无效优先级;
[0134]
若否,判断第二优先级中是否存储有条目;
[0135]
若第二优先级中存储有条目,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级中的第二索引最值相邻的目标位置;
[0136]
若能成功移位,将第一索引最值对应的条目移位至目标位置,并将第一索引最值作为第一优先级的目标索引。
[0137]
进一步的,所述条目移位单元具体还用于:
[0138]
若不能成功移位,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级相邻的第三优先级中的第三索引最值对应的位置,第一索引最值和第三索引最值为属性相同的索引最值,第一索引最值和第一优先级中的索引最值相邻;
[0139]
若能成功移位,将第一索引最值对应的条目移位至第三索引最值对应的位置,并将第一索引最值作为第一优先级的目标索引。
[0140]
进一步的,所述条目移位单元具体还用于:
[0141]
若与第一优先级相邻的第二优先级为无效优先级,则判断另一方向与第一优先级相邻的第四优先级是否为无效优先级;
[0142]
若第四优先级不是无效优先级,则将第四优先级作为第二优先级并执行所述判断第二优先级中是否存储有条目的步骤。
[0143]
进一步的,所述第二判断单元具体用于:
[0144]
当第一优先级的最大索引大于或等于第二优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级低于第一优先级,或者;
[0145]
当第二优先级中的最大索引大于或等于第一优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级高于第一优先级。
[0146]
进一步的,所述第二判断单元具体还用于:
[0147]
若待插入条目为第一优先级中的初次存储条目,检测第一优先级的起始索引是否已被占用;
[0148]
若是,判断第一优先级是否为最高优先级或最低优先级;
[0149]
若第一优先级不是最高优先级且不是最低优先级,判断第二优先级的最大索引是否小于第三优先级的最小索引与1的差值;
[0150]
若否,判定不存在用于存储待插入条目的索引,并执行所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引的步骤;
[0151]
其中,所述第二优先级高于第一优先级且与第一优先级相邻,所述第三优先级低于第一优先级且与第一优先级相邻。
[0152]
进一步的,所述第二判断单元具体还用于:若第二优先级的最大索引小于第三优先级的最小索引与1的差值,判定存在用于存储待插入条目的索引;
[0153]
所述条目插入单元还用于根据贴近原则将待插入条目插入至靠近起始索引的位
置,并更新第一优先级的索引最值。
[0154]
进一步的,所述条目插入单元还用于:
[0155]
当检测到待删除条目时,判断待删除条目对应的目标优先级中是否存在至少两个索引已被占用;
[0156]
若是,判断待删除条目对应的第一索引是否为目标优先级的最大索引;
[0157]
若是,删除待删除条目,并将目标优先级的最大索引更新为第一索引与1的差值;
[0158]
若否,删除待删除条目,将目标优先级的最大索引对应的条目移位至第一索引对应的位置,并更新目标优先级的最大索引。
[0159]
需要说明的是,所属本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各单元的具体工作过程,可以参考前述tcam多优先级存储方法实施例中的对应过程,在此不再赘述。
[0160]
上述实施例提供的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图4所示的tcam多优先级存储设备上运行。
[0161]
本技术实施例还提供了一种tcam多优先级存储设备,包括:通过系统总线连接的存储器、处理器和网络接口,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行,以实现前述的tcam多优先级存储方法的全部步骤或部分步骤。
[0162]
其中,网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0163]
处理器可以是cpu,还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程逻辑门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件分立硬件组件等。通用处理器可以是微处理器,或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
[0164]
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如视频播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如视频数据、图像数据等)等。此外,存储器可以包括高速随存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡、闪存卡(flash card)、至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
[0165]
本技术施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现前述的tcam多优先级存储方法的全部步骤或部分步骤。
[0166]
本技术实施例实现前述的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代
码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的仼何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0167]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0168]
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0169]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0170]
以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
技术特征:1.一种tcam多优先级存储方法,其特征在于,包括以下步骤:当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;若不存在,则基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引;将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。2.如权利要求1所述的tcam多优先级存储方法,其特征在于,所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引,包括:判断与第一优先级相邻的第二优先级是否为无效优先级;若否,判断第二优先级中是否存储有条目;若第二优先级中存储有条目,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级中的第二索引最值相邻的目标位置;若能成功移位,将第一索引最值对应的条目移位至目标位置,并将第一索引最值作为第一优先级的目标索引。3.如权利要求2所述的tcam多优先级存储方法,其特征在于,在所述判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级中的第二索引最值相邻的目标位置的步骤之后,还包括:若不能成功移位,判断第二优先级中的第一索引最值对应的条目是否能成功移位至与第二优先级相邻的第三优先级中的第三索引最值对应的位置,第一索引最值和第三索引最值为属性相同的索引最值,第一索引最值和第一优先级中的索引最值相邻;若能成功移位,将第一索引最值对应的条目移位至第三索引最值对应的位置,并将第一索引最值作为第一优先级的目标索引。4.如权利要求2所述的tcam多优先级存储方法,其特征在于,在所述判断与第一优先级相邻的第二优先级是否为无效优先级的步骤之后,还包括:若与第一优先级相邻的第二优先级为无效优先级,则判断另一方向与第一优先级相邻的第四优先级是否为无效优先级;若第四优先级不是无效优先级,则将第四优先级作为第二优先级并执行所述判断第二优先级中是否存储有条目的步骤。5.如权利要求1所述的tcam多优先级存储方法,其特征在于,所述根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引,包括:当第一优先级的最大索引大于或等于第二优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级低于第一优先级,或者;当第二优先级中的最大索引大于或等于第一优先级中的最小索引与1的差值,则判定不存在用于存储待插入条目的索引,所述第二优先级高于第一优先级。6.如权利要求1所述的tcam多优先级存储方法,其特征在于,在所述判断待插入条目是否为对应的第一优先级中的初次存储条目的步骤之后,还包括:
若待插入条目为第一优先级中的初次存储条目,检测第一优先级的起始索引是否已被占用;若是,判断第一优先级是否为最高优先级或最低优先级;若第一优先级不是最高优先级且不是最低优先级,判断第二优先级的最大索引是否小于第三优先级的最小索引与1的差值;若否,判定不存在用于存储待插入条目的索引,并执行所述基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引的步骤;其中,所述第二优先级高于第一优先级且与第一优先级相邻,所述第三优先级低于第一优先级且与第一优先级相邻。7.如权利要求6所述的tcam多优先级存储方法,其特征在于,在所述判断第二优先级的最大索引是否小于第三优先级的最小索引与1的差值的步骤之后,还包括:若第二优先级的最大索引小于第三优先级的最小索引与1的差值,判定存在用于存储待插入条目的索引;根据贴近原则将待插入条目插入至靠近起始索引的位置,并更新第一优先级的索引最值。8.如权利要求1所述的tcam多优先级存储方法,其特征在于,所述方法还包括:当检测到待删除条目时,判断待删除条目对应的目标优先级中是否存在至少两个索引已被占用;若是,判断待删除条目对应的第一索引是否为目标优先级的最大索引;若是,删除待删除条目,并将目标优先级的最大索引更新为第一索引与1的差值;若否,删除待删除条目,将目标优先级的最大索引对应的条目移位至第一索引对应的位置,并更新目标优先级的最大索引。9.一种tcam多优先级存储装置,其特征在于,包括:第一判断单元,其用于当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;第二判断单元,其用于若否,根据第一优先级中的索引最值以及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;条目移位单元,其用于若不存在,则基于预设的移位规则对其他优先级中的索引最值对应的条目进行移位,得到目标索引;条目插入单元,其用于将待插入条目插入至所述目标索引对应的位置,并更新各个优先级中的索引最值。10.一种计算机可读存储介质,其特征在于:所述计算机存储介质存储有计算机指令,当所述计算机指令被计算机执行时,使得所述计算机执行权利要求1至8中任一项所述的tcam多优先级存储方法。
技术总结本申请涉及一种TCAM多优先级存储方法、装置及可读存储介质,涉及通信技术领域,包括当检测到待插入条目时,判断待插入条目是否为对应的第一优先级中的初次存储条目;若否,根据第一优先级中的索引最值及与第一优先级相邻的第二优先级中的索引最值判断是否存在用于存储待插入条目的索引;若不存在,基于预设移位规则对其他优先级中的索引最值对应的条目进行移位得到目标索引;将待插入条目插入至目标索引对应的位置,更新各个优先级中的索引最值。本申请可基于优先级的索引最值确定是否存在用于存储待插入条目的索引,并对索引最值对应的条目进行移位操作,以使得待插入条目可插入至对应优先级中,实现TCAM多优先级下的待插入条目的存储。入条目的存储。入条目的存储。
技术研发人员:杨宗悦 朱圣龙
受保护的技术使用者:武汉飞思灵微电子技术有限公司
技术研发日:2022.08.09
技术公布日:2022/12/2