CN107506310A - 一种地址查找、关键字存储方法及设备 - Google Patents
一种地址查找、关键字存储方法及设备 Download PDFInfo
- Publication number
- CN107506310A CN107506310A CN201710571150.1A CN201710571150A CN107506310A CN 107506310 A CN107506310 A CN 107506310A CN 201710571150 A CN201710571150 A CN 201710571150A CN 107506310 A CN107506310 A CN 107506310A
- Authority
- CN
- China
- Prior art keywords
- tcam
- unit
- keyword
- bit width
- sub
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 210000004027 cell Anatomy 0.000 claims description 241
- 210000000352 storage cell Anatomy 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 8
- 239000002699 waste material Substances 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Static Random-Access Memory (AREA)
Abstract
本发明公开了一种地址查找、关键字存储方法及设备,用于减少对存储空间的浪费,提高存储空间的利用率。该地址查找方法包括:获取待查找关键字,并确定待查找关键字的位宽;根据TCAM的单位存储单元的位宽和待查找关键字的位宽,确定存储待查找关键字所需单位存储单元的数量2N;将待查找关键字划分成2N个子关键字,并在2N个子关键字中的每个子关键字中增加位宽标识,位宽标识用于指示待查找关键字的位宽;将2N个子关键字与TCAM中存储的关键字进行匹配;其中,当2N个子关键字与TCAM中存储的关键字的位宽标识相同时能够匹配成功;根据2N个子关键字与TCAM中存储的关键字的匹配结果,确定TCAM中与待查找关键字相匹配的关键字的地址。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种地址查找、关键字存储方法及设备。
背景技术
三态内容寻址存储器(Ternary Content Addressable Memory,TCAM)主要用于关键字(Key)存储与查找。具体的,首先在TCAM中存储一定数量的关键字,再在存储该关键字的地址对应的随机存取存储器(random access memory,RAM)中存储该关键字相关联的数据;这样,就可以通过查找该关键字,进而查找到TCAM中存储该关键字的地址,进一步地查找到存储RAM中该地址所对应的该关键字相关联的数据。
目前,在芯片内部实现时,由于会有不同长度的关键字要存放在TCAM中,在设置TCAM块的位宽时,通常是根据需要存储的关键字的最大的位宽来进行设置的。例如,需要存储的关键字的位宽分别为36bit、72bit和144bit,那么在设置TCAM块的位宽时则会按照最长关键字的位宽(例如上述144bit)来设置,那么在存放36bit和72bit的关键字时,由于只能占据一个存储单元的一部分,而剩余的一部分存储单元不会再用于存储其他的关键字,所以就造成了存储单元的浪费。或者,还可以通过根据不同位宽的关键字设置不同位宽的TCAM块,在同一TCAM块中存储相同位宽的关键字,不同TCAM块存储不同的位宽的关键字,即将不同位宽的关键字进行分开存储,但是这样不同位宽的关键字则无法达到TCAM存储空间动态共享的效果。
发明内容
本发明实施例提供一种地址查找、关键字存储方法及设备,用于减少对存储单元的浪费,提高存储单元的利用率。
第一方面,提供一种地址查找方法,该方法包括:
获取待查找关键字,并确定所述待查找关键字的位宽;
根据TCAM的单位存储单元的位宽和所述待查找关键字的位宽,确定存储所述待查找关键字所需的单位存储单元的数量2N;其中,2N为存储所述待查找关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
将所述待查找关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待查找关键字的位宽;
将所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字进行匹配;其中,所述2N个增加了位宽标识的子关键字分别与存储在不同的且地址连续的单位存储单元的关键字进行匹配;所述TCAM中存储的关键字携带有指示所述存储的关键字的位宽的位宽标识,当所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的位宽标识相同时能够匹配成功;
根据所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的匹配结果,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
可选的,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,则将所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字进行匹配,包括:
当N为零时,则将所述2N个增加了位宽标识的子关键字与所述TCAM中每一个单位存储单元存储的关键字进行匹配;或者,
当N不为零时,则将所述2N个增加了位宽标识的子关键字中第X个子关键字与所述TCAM中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配;其中,X为不小于1且不大于2N的整数,P的取值包括满足大于或者等于零且小于或者等于(M/2N)-1的整数中的所有值;所述TCAM中的TCAM块按照顺序从1开始进行编号。
可选的,所述根据所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的匹配结果,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址,包括:
根据所述匹配结果生成匹配状态表;其中,所述匹配状态表中的一列对应一个TCAM块的每个单位存储单元;当所述2N个增加了位宽标识的子关键字中其中一个子关键字与对应的单位存储单元存储的关键字匹配成功,则将匹配成功的单位存储单元的匹配状态置为1,否则置为零;
当N为零时,则根据所述匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址;或者,
当N不为零时,则将编号为(2NP+1)至编号(2NP+2N)的每个TCAM块中的地址相同的所有单位存储单元的匹配状态进行与运算,得到与运算后的匹配状态表;其中,相互进行与运算的TCAM块的P值相同;若与运算结果为1,则将相互进行与运算的单位存储单元中处于编号为(2NP+1)的TCAM块的单位存储单元的匹配状态置为1,其余单位存储单元的匹配状态置为零;或者,若与运算结果为零,则将相互进行与运算的单位存储单元的匹配状态都置为零;
根据所述运算后的匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
可选的,根据所述匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址,包括:
若所述匹配状态表中匹配状态为1的单位存储单元有多个,则确定所述匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址;
将所述优先级最高的单位存储单元的地址确定为所述TCAM中与所述待查找关键字相匹配的关键字的地址。
可选的,所述确定所述匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址,包括:
根据单位存储单元的地址将所述匹配状态表中匹配状态为1的单位存储单元划分为至少一个存储单元区间,其中,每个存储单元区间包括多个匹配状态为1的单位存储单元;
确定所述至少一个存储单元区间中每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址;
从所述每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址中确定优先级最高的单位存储单元的地址。
第二方面,提供一种关键字存储方法,该方法包括:
获取待存储关键字,并确定所述待存储关键字的位宽;
根据TCAM的单位存储单元的位宽和所述待存储关键字的位宽,确定存储所述待存储关键字所需的单位存储单元的数量2N;其中,2N为存储所述待存储关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
将所述待存储关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待存储关键字的位宽;
将所述2N个增加了位宽标识的子关键字存储到所述TCAM中的2N个处于空闲状态且地址连续的单位存储单元中;其中,一个子关键字存储在一个单位存储单元中。
可选的,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,则将所述2N个增加了位宽标识的子关键字存储到所述TCAM中的2N个处于空闲状态且地址连续的单位存储单元中,包括:
当N为零时,则将所述2N个增加了位宽标识的子关键字存储到所述TCAM中任意一个处于空闲状态的单位存储单元中;或者,
当N不为零时,则将所述2N个增加了位宽标识的子关键字中第X个子关键字存储到所述TCAM中编号为(2NP+X)的TCAM块中处于空闲状态的单位存储单元中,其中,用于存储所述2N个子关键字的TCAM块的P值相同,且存储所述2N个子关键字的单位存储单元的地址连续;X为不小于1且不大于2N的整数,P为大于或者等于零且小于或者等于(M/2N)-1的任一整数;所述TCAM中的TCAM块按照顺序从1开始进行编号。
第三方面,提供一种地址查找设备,该设备包括TCAM控制器和TCAM;其中,所述TCAM控制器包括第一获取单元、第一确定单元、第一划分单元和第二确定单元;
所述第一获取单元,用于获取待查找关键字,并确定所述待查找关键字的位宽;
所述第一确定单元,用于根据TCAM的单位存储单元的位宽和所述待查找关键字的位宽,确定存储所述待查找关键字所需的单位存储单元的数量2N;其中,2N为存储所述待查找关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
所述第一划分单元,用于将所述待查找关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待查找关键字的位宽;
所述TCAM,用于将所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字进行匹配;其中,所述2N个增加了位宽标识的子关键字分别与存储在不同的且地址连续的单位存储单元的关键字进行匹配;所述TCAM中存储的关键字携带有指示所述存储的关键字的位宽的位宽标识,当所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的位宽标识相同时能够匹配成功;
所述第二确定单元,用于根据所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的匹配结果,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
可选的,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元;
所述TCAM,还用于:
当N为零时,将所述2N个增加了位宽标识的子关键字与所述TCAM中每一个单位存储单元存储的关键字进行匹配;或者,
当N不为零时,将所述2N个增加了位宽标识的子关键字中第X个子关键字与所述TCAM中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配;其中,X为不小于1且不大于2N的整数,P的取值包括满足大于或者等于零且小于或者等于(M/2N)-1的整数中的所有值;所述TCAM中的TCAM块按照顺序从1开始进行编号。
可选的,
所述第二确定单元,还用于根据所述匹配结果生成匹配状态表;其中,所述匹配状态表中的一列对应一个TCAM块的每个单位存储单元;当所述2N个增加了位宽标识的子关键字中其中一个子关键字与对应的单位存储单元存储的关键字匹配成功,则将匹配成功的单位存储单元的匹配状态置为1,否则置为零;
所述第二确定单元,还用于当N为零时,根据所述匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址;或者,
所述第二确定单元,还用于将编号为(2NP+1)至编号(2NP+2N)的每个TCAM块中的地址相同的所有单位存储单元的匹配状态进行与运算,得到与运算后的匹配状态表;其中,相互进行与运算的TCAM块的P值相同;若与运算结果为1,则将相互进行与运算的单位存储单元中处于编号为(2NP+1)的TCAM块的单位存储单元的匹配状态置为1,其余单位存储单元的匹配状态置为零;或者,若与运算结果为零,则将相互进行与运算的单位存储单元的匹配状态都置为零;
所述第二确定单元,还用于根据所述运算后的匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
可选的,所述第二确定单元,还用于:
若所述匹配状态表中匹配状态为1的单位存储单元有多个,则所述第二确定单元还用于:确定所述匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址;并将所述优先级最高的单位存储单元的地址确定为所述TCAM中与所述待查找关键字相匹配的关键字的地址。
可选的,
所述第二确定单元,还用于根据单位存储单元的地址将所述匹配状态表中匹配状态为1的单位存储单元划分为至少一个存储单元区间,其中,每个存储单元区间包括多个匹配状态为1的单位存储单元;
所述第二确定单元,还用于确定所述至少一个存储单元区间中每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址;以及从所述每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址中确定优先级最高的单位存储单元的地址。
第四方面,提供一种关键字存储设备,该设备包括TCAM控制器和TCAM;其中,所述TCAM控制器包括第二获取单元、第三确定单元和第二划分单元;
所述第二获取单元,用于获取待存储关键字,并确定所述待存储关键字的位宽;
所述第三确定单元,用于根据TCAM的单位存储单元的位宽和所述待存储关键字的位宽,确定存储所述待存储关键字所需的单位存储单元的数量2N;其中,2N为存储所述待存储关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
所述第二划分单元,用于将所述待存储关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待存储关键字的位宽;
所述TCAM,用于将所述2N个增加了位宽标识的子关键字存储到所述TCAM中的2N个处于空闲状态且地址连续的单位存储单元中;其中,一个子关键字存储在一个单位存储单元中。
可选的,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,
所述TCAM,还用于:
当N为零时,所述操作单元还用于将所述2N个增加了位宽标识的子关键字存储到所述TCAM中任意一个处于空闲状态的单位存储单元中;或者,
当N不为零时,所述操作单元还用于将所述2N个增加了位宽标识的子关键字中第X个子关键字存储到所述TCAM中编号为(2NP+X)的TCAM块中处于空闲状态的单位存储单元中,其中,用于存储所述2N个子关键字的TCAM块的P值相同,且存储所述2N个子关键字的单位存储单元的地址连续;X为不小于1且不大于2N的整数,P为大于或者等于零且小于或者等于(M/2N)-1的任一整数;所述TCAM中的TCAM块按照顺序从1开始进行编号。
第五方面,提供一种计算机装置,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如第一方面提供的地址查找方法和第二方面提供的关键字存储方法中任一项所述方法的步骤。
第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面提供的地址查找方法和第二方面提供的关键字存储方法中任一项所述方法的步骤。
在本发明实施例中,TCAM中的单位存储单元并不是按照所要存储的关键字的最大位宽来设置的,而是按照不大于位宽最小的关键字的位宽来设置的,那么在存储较小位宽的关键字时,能够减小存储空间剩余,从而减少对存储空间的浪费。
另外,本发明实施例中的TCAM中存储的关键字携带了用于指示该关键字的位宽的位宽标识,使得不同位宽的关键字得以更明确的区分,相应的,在进行地址查找之前,也在关键字中增加该关键字相应的位宽标识。这样,TCAM进行地址查找时只有携带了相同位宽标识的单位存储单元才可能匹配成功,这样也就不会出现匹配错误的问题。
附图说明
图1为本发明实施例提供的TCAM与TCAM控制器的连接示意图;
图2为本发明实施例提供的地址查找方法的流程示意图;
图3为本发明实施例提供包括4个TCAM块的TCAM的一种存储结果示意图;
图4为本发明实施例提供的与运算前后的对比示意图;
图5为本发明实施例提供的确定优先级最高的关键字的示意图;
图6为本发明实施例提供的关键字存储方法的流程示意图;
图7为本发明实施例提供的地址查找设备的一种结构示意图;
图8为本发明实施例提供的关键字存储设备的一种结构示意图;
图9为本发明实施例提供的计算机装置的一种结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
下面介绍本发明实施例的技术背景。
请参见图1,为TCAM和TCAM控制器的连接示意图。其中,TCAM与TCAM控制器通过总线相连,TCAM用于存储关键字,在需要查询关键字对应的地址时,则需要通过TCAM控制器在TCAM中进行地址查找。具体的,TCAM与TCAM控制器也可以集成为一个设备。
目前,在设置TCAM中每一个最小单位的存储单元时,通常是根据需要存储的关键字的最大位宽来进行设置的。例如,需要存储的关键字的位宽分别为36bit、72bit和144bit,那么在设置TCAM中每一个最小单位的存储单元时,则会将最小单位的存储单元的位宽设置为144bit,那么在存放36bit和72bit的关键字时,由于只能占据一个存储单元的一部分,而剩余的一部分存储单元则产生了浪费。可见,目前的TCAM中存储空间浪费的问题较为严重。
鉴于此,本发明实施例提供一种地址查找方法,在该方法中TCAM中的单位存储单元并不是按照所要存储的关键字的最大位宽来设置的,而是按照不大于位宽最小的关键字的位宽来设置的,那么在存储较小位宽的关键字时,能够减小存储空间剩余,从而减小对存储空间的浪费。另外,本发明实施例中的TCAM中存储的关键字携带了用于指示该关键字的位宽的位宽标识,使得不同位宽的关键字得以更明确的区分;相应的,在进行地址查找之前,也在关键字中增加该关键字相应的位宽标识,这样,TCAM进行地址查找时只有携带了相同位宽标识的单位存储单元才可能匹配成功,这样也就不会出现匹配错误的问题。
下面结合附图介绍本发明实施例提供的技术方案。应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
请参见图2,本发明一实施例提供一种地址查找方法,该方法可以通过本发明实施例提供的地址查找设备来执行,该地址查找设备可以通过TCAM控制器和TCAM来实现,或者还可以通过包括TCAM控制芯片和TCAM的设备来实现。该方法包括:
步骤201:获取待查找关键字,并确定待查找关键字的位宽;
步骤202:根据TCAM的单位存储单元的位宽和待查找关键字的位宽,确定存储待查找关键字所需的单位存储单元的数量2N;其中,2N为存储待查找关键字所需的单位存储单元的最小数量;TCAM中包括至少一个单位存储单元,单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
步骤203:将待查找关键字划分成2N个子关键字,并在2N个子关键字中的每个子关键字中增加位宽标识,位宽标识用于指示待查找关键字的位宽;
步骤204:将2N个增加了位宽标识的子关键字与TCAM中存储的关键字进行匹配;其中,2N个增加了位宽标识的子关键字分别与存储在不同的且地址连续的单位存储单元的关键字进行匹配;TCAM中存储的关键字携带有指示存储的关键字的位宽的位宽标识,当2N个增加了位宽标识的子关键字与TCAM中存储的关键字的位宽标识相同时能够匹配成功;
步骤205:根据2N个增加了位宽标识的子关键字与TCAM中存储的关键字的匹配结果,确定TCAM中与待查找关键字相匹配的关键字的地址。
本发明实施例中,单位存储单元是指TCAM的最小存储单元,多个单位存储单元组成一个TCAM块,多个TCAM块组成本发明实施例的TCAM。地址查找设备首先可以获取待查找关键字,并且确定该待查找关键字的位宽。具体的,地址查找设备可以从报文中将待查找关键字提取出来。当然,用户也可以直接输入待查找关键字,地址查找设备直接接收以获取待查找关键字。其中,位宽是指该待查找关键字的所占的bit位数,例如位宽可以为36bit、72bit或者144bit。
本发明实施例中,为了使得不同位宽的关键字得以明确的区分,在TCAM对关键字进行存储时,会在关键字中增加用于指示该关键字的位宽的位宽标识,因此,为了与TCAM中存储的关键字能够匹配成功,在地址查找设备获取待查找关键字之后,还需要在待查找关键字中增加用于指示该待查找关键字的位宽的位宽标识。例如36bit的位宽标识可以设置为00,72bit的位宽标识可以设置为01,144bit的位宽标识可以设置为10。
具体的,在地址查找设备获取待查找关键字之后,会根据TCAM的单位存储单元的位宽和待查找关键字的位宽,确定存储该待查找关键字所需要的单位存储单元的数量2N,其中,N为大于或等于零的整数。其中,TCAM可以包括至少一个单位存储单元,一个单位存储单元的位宽不大于存储的位宽最小的关键字的位宽,单位存储单元的位宽是指该单位存储单元上能够存储的关键字的位宽。
为了后续查找时能够准确定位不同位宽的关键字放置的位置,因此将用于存储关键字的单位存储单元的数量设置为常用的固定值,例如为1、2、4、8,也就是说位宽处于(0,36bit]内的关键字所需的单位存储单元的数量为1,位宽处于(36bit,72bit]内的关键字所需的单位存储单元的数量为2,位宽处于(72bit,144bit]内的关键字所需的单位存储单元的数量为4,以此类推。例如,该TCAM存储的关键字的位宽有36bit、72bit和144bit,那么单位存储单元的位宽可以设置为36bit。当然,单位存储单元的位宽越接近TCAM中存储的关键字的最小位宽越好,例如,可以将单位存储单元的位宽设置为36bit,那么在存储位宽为36bit的关键字时,则不会造成空间的浪费,使得空间能够更为合理的得以利用。但是,单位存储单元的位宽并不是越小越好,例如将单位存储单元的位宽设置为1bit或者5bit,那么在存储关键字时需要将一个关键字分割为很多个子关键字,反而增加工作量。因此在实际应用中需要根据具体的需求来设置单位存储单元的位宽。
下面举例具体说明如何确定存储该待查找关键字所需要的单位存储单元的数量。例如,地址查找设备获取的待查找关键字的位宽为136bit,TCAM中一个单位存储单元的位宽为36bit,那么首先预估存储待查找关键字需要4个单位存储单元,这4个单位存储单元的位宽总和为4×36bit=144bit。而在TCAM中存储的关键字是增加了位宽标识的关键字,其中,位宽标识也是需要占据一定的存储空间的,例如一个位宽标识需要占据2bit;则进一步还需要基于位宽标识和待查找关键字本身的位宽之和预估存储待查找关键字的单位存储单元的数量。即若是预估存储待查找关键字需要4个单位存储单元,那么实际增加了位宽标识之后的待查找关键字的位宽为136bit+2bit×4=144bit≤144bit,即4个单位存储单元可以存储下这个位宽为136bit的待查找关键字,这样就可以确定存储待查找关键字需要的单位存储单元的数量为4。
本发明实施例中,在地址查找设备确定存储待查找关键字所需要的单位存储单元的数量之后,则可以将待查找关键字划分为2N个子关键字。具体的,例如地址查找设备获取的关键字的位宽为136bit,确定存储该关键字所需要的单位存储单元的数量为4时,则需要将该关键字划分为4个子关键字。
在将关键字划分为2N个子关键字之后,则可以在这2N个子关键字中的每个子关键字中增加位宽标识。例如,可以在每个子关键字的最前端加入位宽标识,当然,还可以在每个子关键字的末尾或者其他预定位置加入位宽标识,本发明实施例对此不做限制。
本发明实施例中,地址查询设备获取了2N个增加了位宽标识的子关键字之后,则可以将这2N个增加了位宽标识的子关键字与TCAM中存储的关键字进行匹配。其中,在获取的关键字中增加位宽标识可以是通过地址查询设备中包括的TCAM控制器来实现,在TCAM控制器增加位宽标识完成之后,则可以将这M个增加了位宽标识的子关键字发送给地址查询设备中包括的TCAM,使得TCAM可以进行匹配。
具体的,TCAM是将接收到的增加了位宽标识后的子关键字分别与TCAM中存储在不同的且地址连续的单位存储单元的关键字进行匹配。其中,只有当增加了位宽标识后的子关键字与TCAM中单位存储单元存储的关键字携带的位宽标识相同时,才能匹配成功。
当增加了位宽标识后的子关键字分别与TCAM中存储的关键字进行匹配完成后,则可以根据匹配结果中确定出与待查找关键字相匹配的关键字,进而确定该相匹配的关键字的地址。
综上所述,本发明实施例中的TCAM中存储的关键字携带了用于指示该关键字的位宽的位宽标识,使得不同位宽的关键字得以更明确的区分;相应的,在进行地址查找之前,也在关键字中增加该关键字相应的位宽标识,这样,TCAM进行地址查找时只有携带了相同位宽标识的单位存储单元才可能匹配成功,这样也就不会出现匹配错误的问题。
进一步地,本发明实施例的TCAM还可以包括M个TCAM块(block),每个TCAM块包括至少一个单位存储单元。那么在将2N个增加了位宽标识后的子关键字分别与TCAM中存储的关键字进行匹配时,则可以包括如下两种情况:
(1)当N为零时,即存储待查找关键字只需一个单位存储单元,每个TCAM块的每个单位存储单元都有可能存储与待查找关键字相匹配的关键字,那么TCAM控制器在向TCAM发送这2N个增加了位宽标识后的子关键字时,会将待查找关键字直接发送给TCAM中的每一个TCAM块,进而TCAM则会在每个TCAM块内部的所有单位存储单元上并行进行关键字的匹配。当TCAM匹配完成之后,若是有与待查找关键字匹配成功的关键字,则将该关键字的地址作为与待查找关键字相匹配的关键字的地址。
(2)当N不为零时,即存储待查找关键字需要多个单位存储单元。由于,存储关键字时,该关键字的多个子关键字存储是按照一定规律进行存储,对于36bit、72bit或144bit位宽的关键字在TCAM中如何存储,请参见图6对应实施例中描述。
在查找时,TCAM控制器在向TCAM发送这2N个增加了位宽标识后的子关键字时,是将每个增加了位宽标识后的子关键字发送到相对应的TCAM块中。具体的,TCAM控制器可以将这2N个增加了位宽标识后的子关键字中第X个子关键字发送到TCAM中编号为(2NP+X)的TCAM块中,那么相对应的,TCAM则会将第X个子关键字与TCAM中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配。其中,X为不小于1且不大于2N的整数,P的取值包括满足大于或者等于零且小于或者等于(M/2N)-1的整数的所有值,即P为0,1,2,3……(M/2N)-1中的所有值;TCAM中的TCAM块按照顺序从1开始进行编号。
下面将以具体的例子对上述TCAM将第X个子关键字与TCAM中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配进行描述。
请参见图3,为包括4个TCAM块的TCAM的一种存储结果示意图。其中,TCAM是由4个512×36bit的TCAM块(TCAM block)构成,即TCAM块1~TCAM块4,一个TCAM块包括512个单位存储单元。其中,TCAM中的单位存储单元从0开始依次进行编址,TCAM中的每一行包括多个TCAM块中处于相同位置的单位存储单元,TCAM块1的第一个单位存储单元的地址为0,TCAM块2的第一个单位存储单元的地址则为1,TCAM块3的第一个单位存储单元的地址为2,以此类推。如图3中所示,单位存储单元右下角的数字即为该单位存储单元的地址。
其中,地址为0~3的单位存储单元存储的皆为位宽标识为00的关键字,即位宽小于或等于34bit的关键字,其中,地址为0~3的单位存储单元分别存储了关键字0~关键字3;地址为4~7的单位存储单元存储的为位宽标识为01的关键字,即位宽介于34bit与68bit(包括68bit)之间的关键字,其中,地址为4和5的单位存储单元分别存储了关键字4的两个子关键字,地址为6和7的单位存储单元分别存储了关键字5的两个子关键字;地址为8~11的单位存储单元存储的为位宽标识为10的关键字,即位宽介于68bit与136bit(包括136bit)之间的关键字,其中,地址为8~11的单位存储单元分别存储了关键字6的四个子关键字,地址为12~15的单位存储单元分别存储了关键字7的四个子关键字。
下面就需要2个单位存储单元的68bit的待查找关键字和需要4个单位存储单元的136bit的待查找关键字为例进行描述,但需要知道的是,本发明实施例的待查找关键字并不限于这两种位宽的关键字。由于需要1个单位存储单元的待查找关键字即上述N为零的情况,因此在此不再赘述。对于需要2个单位存储单元的68bit的待查找关键字,在它的2个子关键字中分别增加位宽标识后,形成72位的关键字。对于需要4个单位存储单元的136bit的待查找关键字,在它的4个子关键字中分别增加位宽标识后,形成144位的关键字。
当待查找关键字需要2个单位存储单元时,即N为1时,与TCAM对应的TCAM控制器将这个待查找关键字的2个增加了位宽标识的子关键字发送给TCAM时,则TCAM控制器会将第一个增加了位宽标识的子关键字发送给TCAM块1和TCAM块3中进行查找,第二个增加了位宽标识的子关键字发送给TCAM块2和TCAM块4中进行查找。那么TCAM在将这个待查找关键字的2个增加了位宽标识的子关键字与TCAM中的关键字进行匹配时,也就是将第一个增加了位宽标识的子关键字与TCAM块1和TCAM块3中的每一个单位存储单元存储的关键字进行匹配,第二个增加了位宽标识的子关键字与TCAM块2和TCAM块4中的每一个单位存储单元存储的关键字进行匹配。
当待查找关键字需要4个单位存储单元时,即N为2时,在TCAM控制器将这个待查找关键字的4个增加了位宽标识的子关键字发送给TCAM时,则TCAM控制器会将第一个增加了位宽标识的子关键字发送给TCAM块1中进行查找,第二个增加了位宽标识的子关键字发送给TCAM块2中进行查找,第三个增加了位宽标识的子关键字发送给TCAM块3中进行查找,第四个增加了位宽标识的子关键字发送给TCAM块4中进行查找。那么TCAM在将这个待查找关键字的4个增加了位宽标识的子关键字与TCAM中的关键字进行匹配时,也就是将第一个增加了位宽标识的子关键字与TCAM块1中的每一个单位存储单元存储的关键字进行匹配,第二个增加了位宽标识的子关键字与TCAM块2中的每一个单位存储单元存储的关键字进行匹配,第三个增加了位宽标识的子关键字与TCAM块3中的每一个单位存储单元存储的关键字进行匹配,第四个增加了位宽标识的子关键字与TCAM块4中的每一个单位存储单元存储的关键字进行匹配。
当TCAM包括8个TCAM块时也与上述类似,下面同样以需要2个单位存储单元的68bit的待查找关键字和需要4个单位存储单元的136bit的待查找关键字为例进行描述,同样的,本发明实施例的待查找关键字并不限于这两种位宽的关键字。其中,这8个TCAM块的编号分别为TCAM块1~TCAM块8。
当待查找关键字需要2个单位存储单元时,即N为1时,TCAM控制器将这个待查找关键字的2个增加了位宽标识的子关键字发送给TCAM时,则TCAM控制器会将第一个增加了位宽标识的子关键字发送给TCAM块1、TCAM块3、TCAM块5和TCAM块7中进行查找,第二个增加了位宽标识的子关键字发送给TCAM块2、TCAM块4、TCAM块6和TCAM块8中进行查找。那么TCAM在将这个待查找关键字的4个增加了位宽标识的子关键字与TCAM中的关键字进行匹配时,也就是将第一个增加了位宽标识的子关键字与TCAM块1、TCAM块3、TCAM块5和TCAM块7中的每一个单位存储单元存储的关键字进行匹配,第二个增加了位宽标识的子关键字与TCAM块2、TCAM块4、TCAM块6和TCAM块8中的每一个单位存储单元存储的关键字进行匹配。
当待查找关键字需要4个单位存储单元时,即N为2时,在TCAM控制器将这个待查找关键字的4个增加了位宽标识的子关键字发送给TCAM时,则TCAM控制器会将第一个增加了位宽标识的子关键字发送给TCAM块1和TCAM块5中进行查找,第二个增加了位宽标识的子关键字发送给TCAM块2和TCAM块6中进行查找,第三个增加了位宽标识的子关键字发送给TCAM块3和TCAM块7中进行查找,第四个增加了位宽标识的子关键字发送给TCAM块4和TCAM块8中进行查找。那么TCAM在将这个待查找关键字的4个增加了位宽标识的子关键字与TCAM中的关键字进行匹配时,也就是将第一个增加了位宽标识的子关键字与TCAM块1和TCAM块5中的每一个单位存储单元存储的关键字进行匹配,第二个增加了位宽标识的子关键字与TCAM块2和TCAM块6中的每一个单位存储单元存储的关键字进行匹配,第三个增加了位宽标识的子关键字与TCAM块3和TCAM块7中的每一个单位存储单元存储的关键字进行匹配,第四个增加了位宽标识的子关键字与TCAM块4和TCAM块8中的每一个单位存储单元存储的关键字进行匹配。
当TCAM匹配完成之后,若是有与待查找关键匹配成功的关键字,则将该关键字的地址作为与待查找关键字相匹配的关键字的地址。其中,这里所说的匹配成功需要与2N个增加了位宽标识后的子关键字都匹配成功才能算匹配成功。该关键字的地址为存储该关键字的第一个子关键字的单位存储单元的地址。
进一步地,为了确定与待查找关键字相匹配的关键字的地址,TCAM在将2N个增加了位宽标识后的子关键字与TCAM中存储的关键字进行匹配之后,还可以生成匹配状态表,根据匹配状态表确定与待查找关键字相匹配的关键字的地址。
其中,匹配状态表中的一列对应着一个TCAM块的每个单位存储单元。具体的,当2N个增加了位宽标识后的子关键字中的其中一个子关键字与对应的单位存储单元存储的关键字匹配成功了,则可以将该单位存储单元的匹配状态置为1,否则置为零。针对上述不同的匹配情况还包括下列两种不同的情况:
(1)当N为零时,生成的匹配状态表中的每一个匹配状态都是与该待查找关键字进行匹配的匹配状态,所以可以直接根据该匹配状态表中匹配状态为1的单位存储单元,来确定与待查找关键字相匹配的关键字,进而也就可以根据匹配状态表中匹配状态为1的单位存储单元,确定与待查找关键字相匹配的关键字的地址。
(2)当N不为零时,生成的匹配状态表中的每一个匹配状态都是与该待查找关键字包括的子关键字进行匹配的匹配状态,因而不能直接根据匹配状态表匹配状态为1的单位存储单元,来确定与待查找关键字相匹配的关键字。具体的,为了保证对于1个关键字在匹配状态表中只有1bit的“1”,当TCAM生成所述匹配状态表后,TCAM还会对相对应的单位存储单元的匹配状态进行与运算,使得只有相对应的单位存储单元的匹配状态都为1时才可以认为这几个单位存储单元存储的关键字是与待查找关键字相匹配的关键字。具体的,TCAM可以将编号为(2NP+1)至编号(2NP+2N)的每个TCAM块中的地址相同的所有单位存储单元的匹配状态进行与运算,将地址相邻的单位存储单元的状态进行与运算,并且相互进行与运算的TCAM的P值相同。当与运算结果为1,则将相互进行与运算的单位存储单元中处于编号为(2NP+1)的TCAM块的单位存储单元的匹配状态置为1,其余单位存储单元的匹配状态置为零;或者,若与运算结果为零,则将相互进行与运算的单位存储单元的匹配状态都置为零。具体的,从每一个TCAM块的角度来描述,这里所说的在每个TCAM块中的地址相同是指在每个TCAM块中所处的位置相同,即单位存储单元所在TCAM中的行相同但位于不同的TCAM块,例如都位于第一行,或者都位于第三行等等。若是从整个TCAM的编址上来讲的话,在每个TCAM块中的地址相同的单位存储单元,它们的地址则是连续的,例如图3中所示的,同处于第一行的4个单位存储单元所在每个块中的位置都是第一个,但这4个单位存储单元在TCAM中的地址分别为0、1、2、3,即在TCAM中的地址是连续的。
例如,为了保证对于1个关键字在匹配状态表中只有1bit的“1”,当一个关键字被匹配成功后,经与运算后,在匹配状态表中,存储该关键字的第一个子关键字的单位存储单元对应的匹配状态为1,存储该关键字中其它子关键字的单位存储单元对应的匹配状态均为零,而未匹配成功的关键字对应的单位存储单元对应的匹配状态均为零。例如,若一个36bit的关键字被匹配成功,存储该关键字的第一个子关键字的单位存储单元对应的匹配状态为1,由于36bit的关键字只需要一个单位存储空间,该关键字的匹配结果可以表示为1;若一个72bit的关键字被匹配成功,存储该关键字的第一个子关键字的单位存储单元对应的匹配状态为1,而存储该关键字中其它子关键字的单位存储单元对应的匹配状态均为零,由于72bit的关键字需要两个单位存储空间,该关键字的匹配结果可以表示为10;若一个144bit的关键字被匹配成功,存储该关键字的第一个子关键字的单位存储单元对应的匹配状态为1,而存储该关键字中其它子关键字的单位存储单元对应的匹配状态均为零,由于144bit的关键字需要四个单位存储空间,则该关键字的匹配结果可以表示为1000。
请参见图4,为基于图3的存储状态对包含4个子关键字的关键字查找后进行与运算前后的匹配状态表的对比示意图。其中,这里还是以需要4个单位存储单元的待查找关键字为例。从与运算前的匹配状态表可以看到,与该待查找关键字的子关键字匹配成功的单位存储单元存储的子关键字有多个,例如图中第3行的每个单位存储单元存储的子关键字和第4行的块1和块2中的单位存储单元存储的子关键字等,但由于待查找关键字划分为多个子关键字分别进行进行匹配,因此需要所有的子关键字都匹配成功才能认为与该待查找关键字匹配成功,因此可以对匹配状态表中相对应的单位存储单元对应的匹配状态进行运算,例如,先对相对应的所有单位存储单元对应的匹配状态进行与运算,在匹配状态表中将与运算的结果作为相互进行与运算的所有单位存储单元中的第一个单位存储单元对应的匹配状态,然后其它单位存储单元对应的匹配状态均置为零。这里的相对应的单位匹配单元是指与同一个待查找关键字的子关键字进行匹配的每个单位存储单元,例如图4中所示的每一行的4个单位存储单元。
具体的,如图4中第4行所示,与运算之前该行的匹配状态为1100,由于1100这4个数相与之后为0,则与运算之后第一个单位存储单元对应的匹配状态为0,同时将其它3个单位存储单元对应的匹配状态均置为0,也就是相互进行与运算的所有单位存储单元中块1的单元存储单元对应的匹配状态为0,同时将与运算的所有单位存储单元中块2、块3和块4的单位存储单元对应的匹配状态均置为0,因此与运算之后是该行对应的匹配状态为0000,由于该行第一个单元存储单元对应的匹配状态为0,表明该行存储的关键字不是与待查找关键字相匹配的关键字。如图4中第1行和第2行所示,与运算之前该行对应的匹配状态为0000,与运算之后该行对应的匹配状态还是0000。如图4中第3行所示,运算之前该行的值是1111,由于1111这4个数相与之后为1,则与运算之后第一个单位存储单元即块1中的单位存储单元对应的匹配状态为1,同时将其它3个单位存储单元即其它3个块的单位存储单元对应的匹配状态均置为0,也就是相互进行与运算的所有单位存储单元中块1的单元存储单元对应的匹配状态为1,同时将与运算的所有单位存储单元中块2、块3和块4的单位存储单元对应的匹配状态均置为0,因此与运算之后是该行的匹配状态为1000,由于该行第一个单元存储单元即块1中的单位存储单元的对应的匹配状态为0,则表明该行的存储的关键字是与待查找关键字相匹配的关键字。
当得到与运算后的匹配状态表之后,则可以根据与运算后的匹配状态表中匹配状态为1的单位存储单元的地址确定与待查找关键字相匹配的关键字的地址。如图4中与待查找关键字相匹配的关键字的地址为8。
进一步的,本发明实施例中,与运算后的匹配状态表中匹配状态为1的单位存储单元存储的关键字可能会有多个,那么地址查询设备还会从这多个匹配状态为1的单位存储单元存储的关键字中确定出优先级最高的关键字作为最终匹配成功的关键字。则地址查询设备会获取该最终匹配成功的关键字的地址,并将该最终匹配成功的关键字的地址作为输出地址。
其中,优先级的高低可以根据实际需求进行设置。例如,实际需求是需要匹配结果是前缀最长的关键字,则可以将前缀最长的关键字放置在编址值越大的地址上,则可以根据地址的编址值来确定优先级最高的关键字。
在实际应用中,由于TCAM中存储的关键字数量很多,并且匹配成功的关键字的数量也很多,则优先级的确定的工作量会很大。因此,在确定关键字的优先级时,可以分级进行,请参见图5,为分级确定优先级最高的关键字的示意图。
例如,由多个TCAM块组成的TCAM中单位存储单元的编号依次为0~2047,即[0,2047],则第一步可以将所有单位存储单元分成多个存储单元区间,例如可以按照每64个单位存储单元划分为一个存储单元区间,则可以分成32个存储单元区间,即[0,63]、[64,127]……[1984,2047]这32个存储单元区间。然后再确定出每一存储单元区间中匹配状态为1的优先级最高的单位存储单元,得到每一个存储单元区间中匹配的优先级最高的单位存储单元。第二步则从第一步得到的一个或者多个匹配的单位存储单元里选取出优先级最高的单位存储单元,并将该单位存储单元存储的关键字确定为与待查找关键字相匹配的关键字,并输出该单位存储单元的地址。通常情况下,我们定义TCAM地址空间中,高地址空间的优先级高于低地址空间的优先级。
这样,将确定优先级的工作分级进行,每一个确定的数据量更少,则可以减少地址查询设备的负担。
为了能够在TCAM中查找到相匹配的关键字,那么首先需要在TCAM中存储该相匹配的关键字,因此下面将介绍如何进行存储关键字的方法。
请参见图6,本发明一实施例还提供一种关键字存储方法,该方法可以通过本发明实施例提供的关键字存储设备来执行,该关键字存储设备可以通过TCAM控制器和TCAM来实现,或者还可以通过包括TCAM控制器和TCAM的设备来实现。当关键字存储设备和地址查找设备都是通过同时包括TCAM控制芯片和TCAM的设备来实现时,关键字存储设备和地址查找设备可以是同一设备。该关键字存储方法包括:
步骤601:获取待存储关键字,并确定待存储关键字的位宽;
步骤602:根据TCAM的单位存储单元的位宽和待存储关键字的位宽,确定存储待存储关键字所需的单位存储单元的数量2N;其中,2N为存储待存储关键字所需的单位存储单元的最小数量;TCAM中包括至少一个单位存储单元,单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
步骤603:将待存储关键字划分成2N个子关键字,并在2N个子关键字中的每个子关键字中增加位宽标识,位宽标识用于指示待存储关键字的位宽;
步骤604:将2N个增加了位宽标识的子关键字存储到TCAM中的2N个处于空闲状态且地址连续的单位存储单元中;其中,一个子关键字存储在一个单位存储单元中。
本发明实施例中,关键字存储设备首先可以获取待存储关键字,并且获取该待存储关键字的位宽。具体的,地址查找设备可以从报文中将待存储关键字提取出来。当然,用户也可以直接输入待存储关键字,地址查找设备直接接收以获取待存储关键字。其中,位宽是指该待存储关键字的所占的bit位数,例如位宽可以为36bit、72bit或者144bit。
本发明实施例中,为了使得不同位宽的关键字得以明确的区分,进而在查找时能够有针对性的进行查找,不出现混淆出错的情况,在关键字存储设备对关键字进行存储时,会在关键字中增加用于指示该关键字的位宽的位宽标识。例如36bit的位宽标识可以设置为00,72bit的位宽标识可以设置为01,144bit的位宽标识可以设置为10。
具体的,在关键字存储设备获取待存储关键字之后,会根据TCAM的单位存储单元的位宽和待存储关键字的位宽,确定存储待存储关键字所需要的单位存储单元的数量2N,其中,N为零或者正整数。其中,TCAM可以包括至少一个单位存储单元,一个单位存储单元的位宽不大于存储的位宽最小的关键字的位宽,单位存储单元的位宽是指该单位存储单元上能够存储的关键字的位宽。
为了后续查找时能够准确定位不同位宽的关键字放置的位置,因此将用于存储关键字的单位存储单元的数量设置为常用的固定值,例如为1、2、4、8,也就是说位宽处于(0,36bit]内的关键字所需的单位存储单元的数量为1,位宽处于(36bit,72bit]内的关键字所需的单位存储单元的数量为2,位宽处于(72bit,144bit]内的关键字所需的单位存储单元的数量为4,以此类推。例如,该TCAM存储的关键字的位宽有36bit、72bit和144bit,那么单位存储单元的位宽可以是36bit或者72bit。当然,单位存储单元的位宽越接近TCAM中存储的关键字的最小位宽越好,例如,可以将单位存储单元的位宽设置为36bit,那么在存储位宽为36bit的关键字时,则不会造成空间的浪费,使得空间能够更为合理的得以利用。但是,单位存储单元的位宽并不是越小越好,例如将单位存储单元的位宽设置为1bit或者5bit,那么在存储关键字时需要将一个关键字分割为很多个子关键字,反而增加工作量。因此在实际应用中需要根据具体的需求来设置单位存储单元的位宽。
下面举例具体说明如何确定存储该待存储关键字所需要的单位存储单元的数量2N。例如,关键字存储设备获取的待存储关键字的位宽为136bit,TCAM中一个单位存储单元的位宽为36bit,那么首先预估存储这个关键字需要4个单位存储单元,这4个单位存储单元的位宽总和为4×36bit=144bit。而在TCAM中存储的关键字是增加了位宽标识的关键字,其中,位宽标识也是需要占据一定的存储空间的,例如一个位宽标识需要占据2bit,那么实际增加了位宽标识之后的待存储关键字的位宽为136bit+2bit×4=144bit≤144bit,即4个单位存储单元可以存储下这个位宽为136bit的待查找关键字,这样就可以确定存储该关键字需要的单位存储单元的数量为4,即N=2。
本发明实施例中,在关键字存储设备确定存储该关键字所需要的单位存储单元的数量2N之后,则可以将该关键字划分为2N个子关键字。具体的,例如关键字存储设备获取的关键字的位宽为136bit,确定存储该关键字所需要的单位存储单元的数量为4时,则需要将该关键字划分为4个子关键字,其中,每一个子关键字的位宽为34bit。
在将关键字划分为2N个子关键字之后,则可以在这2N个子关键字中的每个子关键字中增加所述位宽标识。例如,可以在每个子关键字的最前端加入位宽标识,当然,还可以在每个子关键字的末尾或者其他预定位置加入位宽标识,本发明实施例对此不做限制。
本发明实施例中,在获得2N个增加了位宽标识的子关键字后,则可以将这2N个增加了位宽标识的子关键字存储到TCAM中的地址连续且处于空闲状态的2N个单位存储单元中,其中,一个增加了位宽标识的子关键字存储在一个单位存储单元中。
进一步的,本发明实施例的TCAM还可以包括M个TCAM块,M为正整数,每个TCAM块包括至少一个单位存储单元。为了后续的查找更为准确方便,那么在存储每一个子关键字时还可以按照一定规则来存储。具体的,根据待存储关键字的位宽的不同还可以包括如下两种情况:
(1)当N为零时,即存储该待存储关键字只需一个的单位存储单元,则可以将该该待存储关键字存储在任意一个处于空闲状态的单位存储单元中。
(2)当N不为零时,即存储该待存储关键字需要多个单位存储单元,那么每一个子关键字需要存储在特定的单位存储单元上。具体的,关键字存储设备可以将2N个增加了位宽标识的子关键字中第X个子关键字存储到TCAM中编号为(2NP+X)的TCAM块中处于空闲状态的单位存储单元中,其中,P的取值可以为大于或者等于零且小于或者等于(M/2N)-1的任一整数,即P可以为0,1,2,3……(M/2N)-1中任意一个值,且用于存储2N个子关键字的TCAM块的P值相同,且存储2N个子关键字的单位存储单元的地址连续。下面以一具体的存储结果为例进行描述。
请继续参见图3,为具体的一种存储结果示意图。其中,TCAM是由4个512×36bit的TCAM块(TCAM block)构成,即TCAM块1~TCAM块4,一个TCAM块包括512个单位存储单元。其中,TCAM中的单位存储单元从0开始依次进行编址,TCAM中的每一行包括多个TCAM块的单位存储单元组成,TCAM块1的第一个单位存储单元的地址为0,TCAM块2的第一个单位存储单元的地址则为1,TCAM块3的第一个单位存储单元的地址为2,以此类推。如图3中所示,单位存储单元的右下角的数字0~2047即为相应的单位存储单元的地址。
关键字0~关键字3为位宽小于或等于34bit的关键字,在存储时需要1个单位存储单元,则可以存储在TCAM中任意一个处于空闲状态的单位存储单元中,如图3中所示的关键字0~关键字3分别存储在地址为0~3的单位存储单元中。其中,“00关键字0”中的00为该关键字0的位宽标识,为了使得关键字加以区分,在每个关键字后增加该关键字的编号,例如关键字0中的0,关键字1中的1等,但编号仅仅用于表示存储的关键字为不同的关键字,实际存储时并不会在每个单位存储单元存储该关键字的编号。
关键字4和5为位宽介于34bit与68bit(包括68bit)之间的关键字,在存储时需要2个单位存储单元,那么其中第一个子关键字需要存储在编号为1或3的TCAM块中的单位存储单元中,第二个子关键字需要存储在编号为2或4的TCAM块中的单位存储单元中,且存储第一个子关键字和第二个子关键字的单位存储单元的地址需要连续。如图3中所示的关键字4的两个子关键字分别为子关键字4H和子关键字4L,分别存储在地址为4和5的单位存储单元中。其中,“01子关键字4H”和“01子关键字4L”中的01为关键字4的位宽标识,而4H和4L则分别表示该子关键字为关键字4的高位和低位,也就是上述所说的第一个子关键字和第二个子关键字。关键字5与关键字4存储方式类似,在此不再赘述。
关键字6为位宽介于68bit与136bit(包括136bit)之间的关键字,在存储时需要4个单位存储单元,那么其中第一个子关键字需要存储在编号为1的TCAM块中的单位存储单元中,第二个子关键字需要存储在编号为2的TCAM块中的单位存储单元中,第三个子关键字需要存储在编号为3的TCAM块中的单位存储单元中,第四个子关键字需要存储在编号为4的TCAM块中的单位存储单元中,且存储这4个子关键字的单位存储单元的地址需要连续。如图3所示的关键字6的四个子关键字分别为子关键字6H、子关键字6M、子关键字6S和子关键字6L,分别存储在地址为8~11的单位存储单元中。其中,“10子关键字6H”、“10子关键字6M”、“10子关键字6S”和“10子关键字6L”中的10为关键字6的位宽标识,而6H、6M、6S和6L则分别表示该子关键字为关键字4的高位、次高位、次低位和低位,也就是上述所说的第一个子关键字、第二个子关键字、第三个子关键字和第四个子关键字。
与关键字6相同,关键字7为位宽介于68bit与136bit(包括136bit)之间的关键字,关键字7的存储方式同关键字6。
当TCAM包括8个TCAM块时也与上述类似,下面以需要2个单位存储单元的68bit的待存储关键字和需要4个单位存储单元的136bit的待存储关键字为例进行描述,同样的,本发明实施例的待存储关键字并不限于这两种位宽的关键字。其中,这8个TCAM块的编号分别为TCAM块1~TCAM块8。
当待存储关键字需要2个单位存储单元时,即N为1时,关键字存储设备会将这个待存储关键字的2个增加了位宽标识的子关键字中的第一个增加了位宽标识的子关键字存储在TCAM块1、TCAM块3、TCAM块5或者TCAM块7中任意一个处于空闲的单位存储单元,且该单位存储单元的后一个单位存储单元也处于空闲状态,那么第二个增加了位宽标识的子关键字则会存储在存储第一个关键字的单位存储单元的地址的后一个单位存储单元中。
当待存储关键字需要4个单位存储单元时,即N为2时,关键字存储设备会将这个待存储关键字的4个增加了位宽标识的子关键字中的第一个增加了位宽标识的子关键字存储在TCAM块1或者TCAM块5中任意一个处于空闲的单位存储单元,且该单位存储单元的后3个连续的单位存储单元也处于空闲状态,那么第2~3个增加了位宽标识的子关键字则会分别存储在存储第一个关键字的的单位存储单元的地址的后1~2个单位存储单元中。
本发明实施例中,还可能出现这样的情况,例如一个位宽为54bit的关键字,这个关键字需要的单位存储单元数量为两个,并可以将前34bit子关键字和位宽标识01存储在前一个单位存储单元中,那么第二个单位存储单元中存储的位宽则只有20bit子关键字和位宽标识01,则还有14bit处于空白,即没有关键字进行存储,那么就可以在这14bit中存储掩码以填充第二个单位存储单元。
综上所述,本发明实施例中的TCAM中存储的关键字携带了用于指示该关键字的位宽的位宽标识,使得不同位宽的关键字得以更明确的区分;相应的,在进行地址查找之前,也在关键字中增加该关键字相应的位宽标识,这样,TCAM进行地址查找时只有携带了相同位宽标识的关键字才可能匹配成功,这样也就不会出现匹配错误的问题。另外,本发明实施例中的TCAM中的单位存储单元并不是按照所要存储的关键字的最大位宽来设置的,而是按照不大于位宽最小的关键字的位宽来设置的,那么在存储较小位宽的关键字时,则能够剩余的一部分存储空间更小,以能够减小浪费。
下面结合附图介绍本发明实施例提供的设备。
请参见图7,基于同一发明构思,本发明一实施例提供一种地址查找设备70,该设备包括TCAM控制器701和TCAM702;其中,TCAM控制器701包括第一获取单元7011、第一确定单元7012、第一划分单元7013和第二确定单元7014;
第一获取单元7011,用于获取待查找关键字,并确定待查找关键字的位宽;
第一确定单元7012,用于根据TCAM702的单位存储单元的位宽和待查找关键字的位宽,确定存储待查找关键字所需的单位存储单元的数量2N;其中,2N为存储待查找关键字所需的单位存储单元的最小数量;TCAM702中包括至少一个单位存储单元,单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
第一划分单元7013,用于将待查找关键字划分成2N个子关键字,并在2N个子关键字中的每个子关键字中增加位宽标识,位宽标识用于指示待查找关键字的位宽;
TCAM702,用于将2N个增加了位宽标识的子关键字与TCAM702中存储的关键字进行匹配;其中,2N个增加了位宽标识的子关键字分别与存储在不同的且地址连续的单位存储单元的关键字进行匹配;TCAM702中存储的关键字携带有指示存储的关键字的位宽的位宽标识,当2N个增加了位宽标识的子关键字与TCAM702中存储的关键字的位宽标识相同时能够匹配成功;
第二确定单元7014,用于根据2N个增加了位宽标识的子关键字与TCAM702中存储的关键字的匹配结果,确定TCAM702中与待查找关键字相匹配的关键字的地址。
可选的,TCAM702中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元;
TCAM702,还用于:
当N为零时,将2N个增加了位宽标识的子关键字与TCAM702中每一个单位存储单元存储的关键字进行匹配;或者,
当N不为零时,将2N个增加了位宽标识的子关键字中第X个子关键字与TCAM702中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配;其中,X为不小于1且不大于2N的整数,P的取值包括满足大于或者等于零且小于或者等于(M/2N)-1的整数中的所有值;TCAM702中的TCAM块按照顺序从1开始进行编号。
可选的,
第二确定单元7014,还用于根据匹配结果生成匹配状态表;其中,匹配状态表中的一列对应一个TCAM块的每个单位存储单元;当2N个增加了位宽标识的子关键字中其中一个子关键字与对应的单位存储单元存储的关键字匹配成功,则将匹配成功的单位存储单元的匹配状态置为1,否则置为零;
第二确定单元7014,还用于当N为零时,根据匹配状态表中匹配状态为1的单位存储单元的地址,确定TCAM702中与待查找关键字相匹配的关键字的地址;或者,
第二确定单元7014,还用于将编号为(2NP+1)至编号(2NP+2N)的每个TCAM块中的地址相同的所有单位存储单元的匹配状态进行与运算,得到与运算后的匹配状态表;其中,相互进行与运算的TCAM块的P值相同;若与运算结果为1,则将相互进行与运算的单位存储单元中处于编号为(2NP+1)的TCAM块的单位存储单元的匹配状态置为1,其余单位存储单元的匹配状态置为零;或者,若与运算结果为零,则将相互进行与运算的单位存储单元的匹配状态都置为零;
第二确定单元7014,还用于根据运算后的匹配状态表中匹配状态为1的单位存储单元的地址,确定TCAM702中与待查找关键字相匹配的关键字的地址。
可选的,第二确定单元7014,还用于:
若匹配状态表中匹配状态为1的单位存储单元有多个,则第二确定单元7014还用于:确定匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址;并将优先级最高的单位存储单元的地址确定为TCAM702中与待查找关键字相匹配的关键字的地址。
可选的,
第二确定单元7014,还用于根据单位存储单元的地址将匹配状态表中匹配状态为1的单位存储单元划分为至少一个存储单元区间,其中,每个存储单元区间包括多个匹配状态为1的单位存储单元;
第二确定单元7014,还用于确定至少一个存储单元区间中每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址;以及从每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址中确定优先级最高的单位存储单元的地址。
该地址查找设备70可以用于执行图2所示的实施例所提供的方法,因此,对于该地址查找设备70的各功能模块所能够实现的功能等可参考图2所示的实施例的描述,不多赘述。
请参见图8,基于同一发明构思,本发明一实施例提供一种关键字存储设备80,该设备包括TCAM控制器801和TCAM802;其中,TCAM控制器801包括第二获取单元8011、第三确定单元8012和第二划分单元8013;
第二获取单元8011,用于获取待存储关键字,并确定待存储关键字的位宽;
第三确定单元8012,用于根据TCAM802的单位存储单元的位宽和待存储关键字的位宽,确定存储待存储关键字所需的单位存储单元的数量2N;其中,2N为存储待存储关键字所需的单位存储单元的最小数量;TCAM802中包括至少一个单位存储单元,单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
第二划分单元8013,用于将待存储关键字划分成2N个子关键字,并在2N个子关键字中的每个子关键字中增加位宽标识,位宽标识用于指示待存储关键字的位宽;
TCAM802,用于将2N个增加了位宽标识的子关键字存储到TCAM802中的2N个处于空闲状态且地址连续的单位存储单元中;其中,一个子关键字存储在一个单位存储单元中。
可选的,TCAM802中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,
TCAM802,还用于:
当N为零时,操作单元还用于将2N个增加了位宽标识的子关键字存储到TCAM802中任意一个处于空闲状态的单位存储单元中;或者,
当N不为零时,操作单元还用于将2N个增加了位宽标识的子关键字中第X个子关键字存储到TCAM802中编号为(2NP+X)的TCAM块中处于空闲状态的单位存储单元中,其中,用于存储2N个子关键字的TCAM块的P值相同,且存储2N个子关键字的单位存储单元的地址连续;X为不小于1且不大于2N的整数,P为大于或者等于零且小于或者等于(M/2N)-1中的任一整数;TCAM802中的TCAM块按照顺序从1开始进行编号。
该关键字存储设备80可以用于执行图6所示的实施例所提供的方法,因此,对于该关键字存储设备80的各功能模块所能够实现的功能等可参考图6所示的实施例的描述,不多赘述。
请参见图9,本发明一实施例还提供一种计算机装置,该计算机装置包括处理器901,处理器901用于执行存储器中存储的计算机程序时实现本发明实施例提供的地址查找方法或者关键字存储方法的步骤。
可选的,处理器901具体可以是中央处理器、特定应用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(英文:Field Programmable GateArray,简称:FPGA)开发的硬件电路,可以是基带处理器。
可选的,处理器901可以包括至少一个处理核心。
可选的,该计算机装置还包括存储器902,存储器902可以包括只读存储器(英文:Read Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)和磁盘存储器。存储器902用于存储处理器901运行时所需的数据。存储器902的数量为一个或多个。其中,存储器902在图8中一并示出,但需要知道的是存储器902不是必选的功能模块,因此在图9中以虚线示出。
本发明一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例提供的地址查找方法或者关键字存储方法的步骤。
在本发明实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性或其它的形式。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash drive)、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。
Claims (16)
1.一种地址查找方法,其特征在于,包括:
获取待查找关键字,并确定所述待查找关键字的位宽;
根据TCAM的单位存储单元的位宽和所述待查找关键字的位宽,确定存储所述待查找关键字所需的单位存储单元的数量2N;其中,2N为存储所述待查找关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
将所述待查找关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待查找关键字的位宽;
将所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字进行匹配;其中,所述2N个增加了位宽标识的子关键字分别与存储在不同的且地址连续的单位存储单元的关键字进行匹配;所述TCAM中存储的关键字携带有指示所述存储的关键字的位宽的位宽标识,当所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的位宽标识相同时能够匹配成功;
根据所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的匹配结果,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
2.如权利要求1所述的方法,其特征在于,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,则将所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字进行匹配,包括:
当N为零时,则将所述2N个增加了位宽标识的子关键字与所述TCAM中每一个单位存储单元存储的关键字进行匹配;或者,
当N不为零时,则将所述2N个增加了位宽标识的子关键字中第X个子关键字与所述TCAM中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配;其中,X为不小于1且不大于2N的整数,P的取值包括满足大于或者等于零且小于或者等于(M/2N)-1的整数中的所有值;所述TCAM中的TCAM块按照顺序从1开始进行编号。
3.如权利要求2所述的方法,其特征在于,所述根据所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的匹配结果,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址,包括:
根据所述匹配结果生成匹配状态表;其中,所述匹配状态表中的一列对应一个TCAM块的每个单位存储单元;当所述2N个增加了位宽标识的子关键字中其中一个子关键字与对应的单位存储单元存储的关键字匹配成功,则将匹配成功的单位存储单元的匹配状态置为1,否则置为零;
当N为零时,则根据所述匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址;或者,
当N不为零时,则将编号为(2NP+1)至编号(2NP+2N)的每个TCAM块中的地址相同的所有单位存储单元的匹配状态进行与运算,得到与运算后的匹配状态表;其中,相互进行与运算的TCAM块的P值相同;若与运算结果为1,则将相互进行与运算的单位存储单元中处于编号为(2NP+1)的TCAM块的单位存储单元的匹配状态置为1,其余单位存储单元的匹配状态置为零;或者,若与运算结果为零,则将相互进行与运算的单位存储单元的匹配状态都置为零;
根据所述运算后的匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
4.如权利要求3所述的方法,其特征在于,根据所述匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址,包括:
若所述匹配状态表中匹配状态为1的单位存储单元有多个,则确定所述匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址;
将所述优先级最高的单位存储单元的地址确定为所述TCAM中与所述待查找关键字相匹配的关键字的地址。
5.如权利要求3所述的方法,其特征在于,所述确定所述匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址,包括:
根据单位存储单元的地址将所述匹配状态表中匹配状态为1的单位存储单元划分为至少一个存储单元区间,其中,每个存储单元区间包括多个匹配状态为1的单位存储单元;
确定所述至少一个存储单元区间中每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址;
从所述每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址中确定优先级最高的单位存储单元的地址。
6.一种关键字存储方法,其特征在于,包括:
获取待存储关键字,并确定所述待存储关键字的位宽;
根据TCAM的单位存储单元的位宽和所述待存储关键字的位宽,确定存储所述待存储关键字所需要的单位存储单元的数量2N;其中,2N为存储所述待存储关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
将所述待存储关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待存储关键字的位宽;
将所述2N个增加了位宽标识的子关键字存储到所述TCAM中的2N个处于空闲状态且地址连续的单位存储单元中;其中,一个子关键字存储在一个单位存储单元中。
7.如权利要求6所述的方法,其特征在于,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,则将所述2N个增加了位宽标识的子关键字存储到所述TCAM中的2N个处于空闲状态且地址连续的单位存储单元中,包括:
当N为零时,则将所述2N个增加了位宽标识的子关键字存储到所述TCAM中任意一个处于空闲状态的单位存储单元中;或者,
当N不为零时,则将所述2N个增加了位宽标识的子关键字中第X个子关键字存储到所述TCAM中编号为(2NP+X)的TCAM块中处于空闲状态的单位存储单元中,其中,用于存储所述2N个子关键字的TCAM块的P值相同,且存储所述2N个子关键字的单位存储单元的地址连续;X为不小于1且不大于2N的整数,P的取值为满足大于或者等于零且小于或者等于(M/2N)-1的整数中的任一整数;所述TCAM中的TCAM块按照顺序从1开始进行编号。
8.一种地址查找设备,其特征在于,所述设备包括TCAM控制器和TCAM;其中,所述TCAM控制器包括第一获取单元、第一确定单元、第一划分单元和第二确定单元;
所述第一获取单元,用于获取待查找关键字,并确定所述待查找关键字的位宽;
所述第一确定单元,用于根据TCAM的单位存储单元的位宽和所述待查找关键字的位宽,确定存储所述待查找关键字所需的单位存储单元的数量2N;其中,2N为存储所述待查找关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
所述第一划分单元,用于将所述待查找关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待查找关键字的位宽;
所述TCAM,用于将所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字进行匹配;其中,所述2N个增加了位宽标识的子关键字分别与存储在不同的且地址连续的单位存储单元的关键字进行匹配;所述TCAM中存储的关键字携带有指示所述存储的关键字的位宽的位宽标识,当所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的位宽标识相同时能够匹配成功;
所述第二确定单元,用于根据所述2N个增加了位宽标识的子关键字与所述TCAM中存储的关键字的匹配结果,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
9.如权利要求8所述的设备,其特征在于,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元;
所述TCAM,还用于:
当N为零时,将所述2N个增加了位宽标识的子关键字与所述TCAM中每一个单位存储单元存储的关键字进行匹配;或者,
当N不为零时,将所述2N个增加了位宽标识的子关键字中第X个子关键字与所述TCAM中编号为(2NP+X)的TCAM块包括的单位存储单元存储的关键字进行匹配;其中,X为不小于1且不大于2N的整数,P的取值包括满足大于或者等于零且小于或者等于(M/2N)-1的整数中的所有值;所述TCAM中的TCAM块按照顺序从1开始进行编号。
10.如权利要求9所述的设备,其特征在于:
所述第二确定单元,还用于根据所述匹配结果生成匹配状态表;其中,所述匹配状态表中的一列对应一个TCAM块的每个单位存储单元;当所述2N个增加了位宽标识的子关键字中其中一个子关键字与对应的单位存储单元存储的关键字匹配成功,则将匹配成功的单位存储单元的匹配状态置为1,否则置为零;
所述第二确定单元,还用于当N为零时,根据所述匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址;或者,
所述第二确定单元,还用于将编号为(2NP+1)至编号(2NP+2N)的每个TCAM块中的地址相同的所有单位存储单元的匹配状态进行与运算,得到与运算后的匹配状态表;其中,相互进行与运算的TCAM块的P值相同;若与运算结果为1,则将相互进行与运算的单位存储单元中处于编号为(2NP+1)的TCAM块的单位存储单元的匹配状态置为1,其余单位存储单元的匹配状态置为零;或者,若与运算结果为零,则将相互进行与运算的单位存储单元的匹配状态都置为零;
所述第二确定单元,还用于根据所述运算后的匹配状态表中匹配状态为1的单位存储单元的地址,确定所述TCAM中与所述待查找关键字相匹配的关键字的地址。
11.如权利要求10所述的设备,其特征在于,若所述匹配状态表中匹配状态为1的单位存储单元有多个,则所述第二确定单元还用于:确定所述匹配状态表中匹配状态为1的单位存储单元中优先级最高的单位存储单元的地址;并将所述优先级最高的单位存储单元的地址确定为所述TCAM中与所述待查找关键字相匹配的关键字的地址。
12.如权利要求11所述的设备,其特征在于,
所述第二确定单元,还用于根据单位存储单元的地址将所述匹配状态表中匹配状态为1的单位存储单元划分为至少一个存储单元区间,其中,每个存储单元区间包括多个匹配状态为1的单位存储单元;
所述第二确定单元,还用于确定所述至少一个存储单元区间中每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址;以及从所述每个匹配状态为1的存储单元区间中优先级最高的单位存储单元的地址中确定优先级最高的单位存储单元的地址。
13.一种关键字存储设备,其特征在于,所述设备包括TCAM控制器和TCAM;其中,所述TCAM控制器包括第二获取单元、第三确定单元和第二划分单元;
所述第二获取单元,用于获取待存储关键字,并确定所述待存储关键字的位宽;
所述第三确定单元,用于根据TCAM的单位存储单元的位宽和所述待存储关键字的位宽,确定存储所述待存储关键字所需的单位存储单元的数量2N;其中,2N为存储所述待存储关键字所需的单位存储单元的最小数量;所述TCAM中包括至少一个单位存储单元,所述单位存储单元的位宽不大于存储的位宽最小的关键字的位宽;N为大于或等于零的整数;
所述第二划分单元,用于将所述待存储关键字划分成2N个子关键字,并在所述2N个子关键字中的每个子关键字中增加位宽标识,所述位宽标识用于指示所述待存储关键字的位宽;
所述TCAM,用于将所述2N个增加了位宽标识的子关键字存储到所述TCAM中的2N个处于空闲状态且地址连续的单位存储单元中;其中,一个子关键字存储在一个单位存储单元中。
14.如权利要求13所述的设备,其特征在于,所述TCAM中包括M个TCAM块,M为大于零的整数,每个TCAM块包括至少一个单位存储单元,
所述TCAM,还用于:
当N为零时,所述操作单元还用于将所述2N个增加了位宽标识的子关键字存储到所述TCAM中任意一个处于空闲状态的单位存储单元中;或者,
当N不为零时,所述操作单元还用于将所述2N个增加了位宽标识的子关键字中第X个子关键字存储到所述TCAM中编号为(2NP+X)的TCAM块中处于空闲状态的单位存储单元中,其中,用于存储所述2N个子关键字的TCAM块的P值相同,且存储所述2N个子关键字的单位存储单元的地址连续;X为不小于1且不大于2N的整数,P为大于或者等于零且小于或者等于(M/2N)-1的任一整数;所述TCAM中的TCAM块按照顺序从1开始进行编号。
15.一种计算机装置,其特征在于,所述装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-7中任一项所述方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710571150.1A CN107506310B (zh) | 2017-07-13 | 2017-07-13 | 一种地址查找、关键字存储方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710571150.1A CN107506310B (zh) | 2017-07-13 | 2017-07-13 | 一种地址查找、关键字存储方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107506310A true CN107506310A (zh) | 2017-12-22 |
CN107506310B CN107506310B (zh) | 2020-04-24 |
Family
ID=60679871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710571150.1A Active CN107506310B (zh) | 2017-07-13 | 2017-07-13 | 一种地址查找、关键字存储方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107506310B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110753133A (zh) * | 2018-07-23 | 2020-02-04 | 华为技术有限公司 | 处理地址的方法和网络设备 |
CN111224879A (zh) * | 2018-11-23 | 2020-06-02 | 恒为科技(上海)股份有限公司 | 一种扩展tcam位宽的方法 |
CN111682997A (zh) * | 2020-05-15 | 2020-09-18 | 烽火通信科技股份有限公司 | 基于位图表的以太网vlan段流分类方法及系统 |
CN112989774A (zh) * | 2020-12-31 | 2021-06-18 | 盛科网络(苏州)有限公司 | 一种流表混合排序的实现方法 |
CN116721684A (zh) * | 2023-08-11 | 2023-09-08 | 深圳云豹智能有限公司 | 三态内容寻址存储器及其寻址方法、芯片 |
CN117453733A (zh) * | 2023-12-26 | 2024-01-26 | 山东华翼微电子技术股份有限公司 | 一种基于fpga的tcam快速查询系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021858A (zh) * | 2007-01-29 | 2007-08-22 | 华为技术有限公司 | 一种数据存储方法及装置及数据查找、添加、删除方法 |
US7437530B1 (en) * | 2003-04-24 | 2008-10-14 | Network Appliance, Inc. | System and method for mapping file block numbers to logical block addresses |
CN102622434A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 数据存储方法、查找方法及装置 |
-
2017
- 2017-07-13 CN CN201710571150.1A patent/CN107506310B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7437530B1 (en) * | 2003-04-24 | 2008-10-14 | Network Appliance, Inc. | System and method for mapping file block numbers to logical block addresses |
CN101021858A (zh) * | 2007-01-29 | 2007-08-22 | 华为技术有限公司 | 一种数据存储方法及装置及数据查找、添加、删除方法 |
CN102622434A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 数据存储方法、查找方法及装置 |
Non-Patent Citations (1)
Title |
---|
王辉 等: "基于TCAM的并行路由查找方案综述", 《计算机应用与软件》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110753133A (zh) * | 2018-07-23 | 2020-02-04 | 华为技术有限公司 | 处理地址的方法和网络设备 |
CN110753133B (zh) * | 2018-07-23 | 2022-03-29 | 华为技术有限公司 | 处理地址的方法和网络设备 |
US11570106B2 (en) | 2018-07-23 | 2023-01-31 | Huawei Technologies Co., Ltd. | Address processing method and network device |
CN111224879A (zh) * | 2018-11-23 | 2020-06-02 | 恒为科技(上海)股份有限公司 | 一种扩展tcam位宽的方法 |
CN111682997A (zh) * | 2020-05-15 | 2020-09-18 | 烽火通信科技股份有限公司 | 基于位图表的以太网vlan段流分类方法及系统 |
CN112989774A (zh) * | 2020-12-31 | 2021-06-18 | 盛科网络(苏州)有限公司 | 一种流表混合排序的实现方法 |
CN112989774B (zh) * | 2020-12-31 | 2024-04-05 | 苏州盛科通信股份有限公司 | 一种流表混合排序的实现方法 |
CN116721684A (zh) * | 2023-08-11 | 2023-09-08 | 深圳云豹智能有限公司 | 三态内容寻址存储器及其寻址方法、芯片 |
CN116721684B (zh) * | 2023-08-11 | 2023-12-01 | 深圳云豹智能有限公司 | 三态内容寻址存储器及其寻址方法、芯片 |
CN117453733A (zh) * | 2023-12-26 | 2024-01-26 | 山东华翼微电子技术股份有限公司 | 一种基于fpga的tcam快速查询系统 |
CN117453733B (zh) * | 2023-12-26 | 2024-04-09 | 山东华翼微电子技术股份有限公司 | 一种基于fpga的tcam快速查询系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107506310B (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506310B (zh) | 一种地址查找、关键字存储方法及设备 | |
JP3599352B2 (ja) | フレキシブルなn−ウェイ・メモリ・インターリーブ方式 | |
US9032143B2 (en) | Enhanced memory savings in routing memory structures of serial attached SCSI expanders | |
US11182365B2 (en) | Systems and methods for distributed storage of data across multiple hash tables | |
US7633960B2 (en) | Dense mode coding scheme | |
JP5006472B2 (ja) | 表検索装置、表検索方法、及び、表検索システム | |
CN107273397B (zh) | 用于有效的存储器在线重复删除应用的虚拟桶多哈希表 | |
CN108255912B (zh) | 一种表项数据存储、查询方法及其装置 | |
US10771386B2 (en) | IP routing search | |
EP2544414A1 (en) | Method and device for storing routing table entry | |
US10586594B2 (en) | Data tables in content addressable memory | |
US8271500B2 (en) | Minimal perfect hash functions using double hashing | |
CN112817538A (zh) | 数据处理的方法、装置、设备和存储介质 | |
US10795580B2 (en) | Content addressable memory system | |
US9703484B2 (en) | Memory with compressed key | |
CN104572994A (zh) | 用于搜索数据的方法和装置 | |
US20160105363A1 (en) | Memory system for multiple clients | |
CN112800067A (zh) | 范围查询方法、装置、计算机可读存储介质及电子设备 | |
US20050135135A1 (en) | Content addressable memory for CIDR address searches | |
Li et al. | Deterministic and efficient hash table lookup using discriminated vectors | |
JP2011002910A (ja) | 検索処理装置及び検索処理方法 | |
US6901396B1 (en) | Packed radix search tree implementation | |
US10476785B2 (en) | IP routing search | |
KR102698516B1 (ko) | 네트워크 키 값 인덱싱 설계 | |
CN113535710B (zh) | 一种搜索方法、装置、终端设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |