数据存储方法、查找方法及装置的制作方法

文档序号:6365493阅读:214来源:国知局
专利名称:数据存储方法、查找方法及装置的制作方法
技术领域
本发明实施例涉及计算机技木,尤其涉及ー种数据存储方法、数据查找方法及装置。
背景技术
三态内容可寻■址存储器(TernaryContent Addressable Memory,TCAM)中姆一个bit的状态可以是“0”或“ 1”,或者是第三种状态“don’ t care”,所以称为“三态”。这个特点使TCAM具有对所查找数据的位域具有筛选功能,TCAM表内所有条目都可以并行访问,例如,如果TCAM有100条表项,能一次对这100条表项进行对比操作,相对与普通的轮询查找方法,提高了查找的速度。然而,TCAM成本比较高,存储空间的单位价格高于普通的SRAM,耗能也远远高于SRAM。TCAM所使用的特定key长度主要有以下四种标准位宽80bit,160bit, 320bit和640bit。现有方法的TCAM表项下发过程是根据待存储的key值位宽选择需要用到的标准位宽,选择标准是选择大于待存储的key值位宽的最小标准位宽。例如,待存储的key值是170bit,则选择320bit的标准位宽进行下发。并将待存储的key值对应的关联数据下发到该key值的Index为偏移地址的DDR DRAM地址中。然而,在实际应用中,TCAM的key值长度因业务的需要各有不同,很难达到以上标准位宽。例如报文的key值长度为330bit,超过了 320bit,需要使用标准位宽为640bit的表项来存储,多出的640bit-330bit = 310bit用mask码表示,该表项浪费了 310bit空间。因此,非标准位宽的key值存在浪费TCAM表项空间的问题。

发明内容
本发明实施例提供ー种数据存储方法、数据查找方法及装置,用以解决TCAM中非标准位宽的关键字key值浪费空间的缺陷。—方面,本发明实施例提供ー种数据存储方法,包括获取待存储到TCAM的关键字,并获取所述关键字的位宽;从TCAM的所有标准位宽中,选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽;若所述第一标准位宽大于等于所述关键字的位宽,将所述关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述关键字的存储地址,并将所述关键字的存储地址作为所述关键字在TCAM中的索引值;若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字;将所述第一关键字存储到TCAM中存储位宽等于所述第ー标准位宽的空间中,获取所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值,所述第一标准位宽等于所述第一关键字的位宽;将所述第二关键字存储到TCAM中存储位宽等于第二标准位宽的空间中,获取所述第一关键字的存储地址作为所述第二关键字在TCAM中的索引值,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小;通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换 使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突;将所述关键字对应的关联数据存储于存储器中,所述关联数据在所述存储器中的存储地址与所述关键字在TCAM的索引值对应,所述关联数据中包含有所述关键字的报文的处理信息。另ー方面,本发明实施例提供ー种数据查找方法,包括从报文中提取出待查找的关键字,并获取所述关键字的位宽;从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第ー标准位宽;若所述第一标准位宽大于等于所述关键字的位宽,在TCAM中位宽等于第一标准位宽的空间中查找所述关键字,获取所述关键字的存储地址并将所述关键字的存储地址作为所述关键字在TCAM中的索引值;若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字;在TCAM中位宽等于第一标准位宽的空间中查找所述第ー关键字,并将所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值;在TCAM中位宽等于第二标准位宽的空间中查找所述第二关键字,获取所述第二关键字的存储地址并将所述第二关键字的存储地址作为所述第二关键字在TCAM中的索引值,其中,所述第一标准位宽等于所述第一关键字的位宽,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小;通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突;根据所述关键字在TCAM的索引值,确定与所述关键字对应的关联数据在存储器中的存储地址,根据所述关联数据在存储器中的存储地址读取出所述关联数据,所述关联数据中包含有所述关键字的报文的处理信息。又一方面,本发明实施例还提供ー种数据存储装置,包括获取模块,用于获取待存储到TCAM的关键字,并获取所述关键字的位宽;标准位宽选择模块,用于从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽;索引值确定模块,用于若所述第一标准位宽大于等于所述关键字的位宽,将所述关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述关键字的存储地址,并将所述关键字的存储地址作为所述关键字在TCAM中的索引值;所述索引值确定模块,还用于若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字;将所述第一关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值;将所述第二关键字存储到TCAM中存储位宽等于第二标准位宽的空间中,获取所述第一关键字的存储地址作为所述第二关键字在TCAM中的索引值;第一关键字的位宽等于所述第一标准位宽,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小;
所述索引值确定模块,还用于通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲
关;关联数据保存模块,用于将所述关键字对应的关联数据存储于存储器中,所述关联数据在所述存储器中的存储地址与所述关键字在TCAM的索引值对应,所述关联数据中包含有所述关键字的报文的处理信息。又一方面,本发明实施例还提供ー种数据查找装置,包括提取模块,用于从报文中提取出待查找的关键字,并获取所述关键字的位宽;位宽选择模块,用于从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽;查找模块,用于若所述第一标准位宽大于等于所述关键字的位宽,在TCAM中位宽等于第一标准位宽的空间中查找所述关键字,获取所述关键字的存储地址并将所述关键字的存储地址作为所述关键字在TCAM中的索引值;所述位宽选择模块,还用于若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字,其中第一关键字的位宽等于所述第一标准位宽;所述查找模块,还用于将所述关键字切割成第一关键字和第二关键字后,在TCAM中位宽等于第一标准位宽的空间中查找所述第一关键字,并将所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值;在TCAM中位宽等于第二标准位宽的空间中查找所述第二关键字,获取所述第二关键字的存储地址并将所述第二关键字的存储地址作为所述第二关键字在TCAM中的索引值,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小;所述查找模块,还用于通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突;读取模块,用于根据所述关键字在TCAM的索引值,确定与所述关键字对应的关联数据在存储器中的存储地址,根据所述关联数据在存储器中的存储地址读取出所述关联数据,所述关联数据中包含有所述关键字的报文的处理信息。本发明实施例提供的数据存储方法、数据查找方法及装置,在存储关键字对应的关联数据的过程中,如果第一标准位宽大于等于关键字的位宽,将该关键字存储到TCAM中位宽等于第一标准位宽的空间中,由于第一标准位宽为所有标准带宽中与该关键字的位宽的差值最小的标准带宽,因此,存储该关键字的空间浪费的位宽较少。如果第一标准位宽小于关键字的位宽,根据该关键字的位宽将该关键字切割成第一关键字和第二关键字,将第一关键字存储到位宽等于第一标准位宽的空间中,由于第一关键字的位宽与第一标准位宽相同,因此存储第一关键字的空间没有浪费;对于第二关键字,选择位宽等于第二标准位宽的空间来存储,由于第二关键字为待存储的关键字的一部分,第二标准位宽大于等于第二关键字的位宽且与第二关键字的位宽的差值最小,存储第二关键字的空间浪费的位宽远小于存储没有切割的关键字的空间所浪费的位宽。因此,本发明实施例与选择大于待存储的关键字的位宽的最小标准位宽作为存储该关键字的空间的标准位宽的方法相比,显著減少了 TCAM空间的浪费,提高了空间利用率,节省了硬件成本。


图I为本发明实施例提供的ー种数据存储方法流程图;图2A为本发明实施例提供的另ー种数据存储方法流程图;图2B为本发明实施例提供的一种key值存储不意图;图2C为本发明实施例提供的另一种key值存储不意图;图3A为本发明实施例提供的ー种数据查找方法流程图;图3B为本发明实施例提供的ー种应用场景示意图;图4为本发明实施例提供的ー种数据存储装置结构示意图;图5为本发明实施例提供的另ー种数据存储装置结构示意图;图6为本发明实施例提供的ー种数据查找装置结构示意图;图7本发明实施例提供的另ー种数据查找装置结构示意图。
具体实施例方式图I为本发明实施例提供的ー种数据存储方法流程图。如图I所示,本实施例包括步骤11 :获取待存储到TCAM的关键字,并获取关键字的位宽。步骤12 :从TCAM的所有标准位宽中选择与该关键字的位宽的差值最小的标准位宽为第一标准位宽。若该第一标准位宽大于等于该关键字的位宽,执行步骤13和步骤15 ;否则执行步骤14a、14b和步骤15。第一标准位宽为从所有标准位宽中选择与待存储的关键字的位宽的差值最小的标准位宽,而不是大于待存储的关键字的位宽的最小标准位宽。例如,TCAM所使用的特定key长度主要有以下四种标准位宽80bit,160bit,320bit和640bit。如果待存储的关键字的位宽为350bit,与350的差值最小的标准带宽为320bit。如果待存储的关键字的位宽为590bit,与590的差值最小的标准带宽为640bit。进ー步,若所有标准位宽中有两个标准位宽与该关键字的位宽的差值相等且最小,确定其中位宽小的标准位宽为第一标准位宽。例如待存储的关键字的位宽为480bit,与480的差值最小的标准带宽有两个640bit和320bit,选择位宽小的320bit为第一标准带宽。如果选择640bit为第一标准带宽,由于640大于480,用位宽为640bit的空间存储该关键字,会浪费160bit的空间。步骤13 :若该第一标准位宽大于等于该关键字的位宽,将该关键字存储到TCAM中存储位宽等于该第一标准位宽的空间中,获取该关键字的存储地址,并将该关键字的存储地址作为关键字在TCAM中的索引值。第一标准位宽与该关键字的位宽的差值最小,如果第一标准位宽大于等于该关键字的位宽,则位宽为该第一标准位宽的空间不仅可容纳待存储的关键字,且该空间中不被该关键字占用的空间最少。例如,待存储的关键字的位宽为300bit,与300的差值最小的标准带宽为320bit,由于3 20大于300。则用320bit的空间存储该关键字,剩余20bit用掩码表示。在查找TCAM表项时,用掩码表示的bit不參与查找。步骤14a :若该第一标准位宽小于该关键字的位宽,将该关键字切割成两个关键字,分别为第一关键字和第二关键字,其中第一关键字的位宽等于该第一标准位宽。步骤14b :将第一关键字存储到位宽等于第一标准位宽的空间中,获取第一关键字的存储地址,并将第一关键字的存储地址作为第一关键字在TCAM的索引值;将第二关键字存储到位宽等于第二标准位宽的空间中,获取第二关键字的存储地址,并将第二关键字的存储地址作为在TCAM的索引值;通过将第一关键字在TCAM中的索引值和第二关键字在TCAM的中索引值进行组合变换获得该关键字在TCAM中的索引值,其中,所述组合变换使得该关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突。如果第一标准位宽小于该关键字的位宽,则位宽为该第一标准位宽的空间不足以容纳待存储的该关键字。根据该关键字的位宽将该关键字切割成两部分第一关键字和第ニ关键字,其中第一关键字的位宽等于该第一标准位宽。将该第一关键字存储到位宽与该第一标准位宽相同的空间中,寻找位宽为其它标准位宽的空间来存储第二关键字。为避免第二关键字占用过多的空间,选择位宽大于等于第二关键字的位宽且与第二关键字的位宽的差值最小的标准位宽为第二标准位宽,将该第二关键字存储到位宽与第二标准位宽相同的空间中。由于第二关键字为待存储的关键字的一部分,第二标准位宽大于等于第二关键字的位宽且与第二关键字的位宽的差值最小,存储第二关键字的空间浪费的位宽远小于存储没有切割的关键字的空间所浪费的位宽。例如,待存储的关键字的位宽为480bit,第一标准位宽为320bit,由于320小于480,将待存储的关键字按照位宽切割为两部分第一关键字和第二关键字,第一关键字的位宽为320bit,那么第二关键字的位宽等于标准位宽160bit,因此,将第二关键字存储在位宽为160bit的第一空间中,将第一关键字存储在位宽为320bit的第二空间中,这里按照现有技术,采用640bit的空间存储480bit的关键字,则会浪费160bit的存储空间。将第一关键字在TCAM的索引值a和第二关键字在TCAM的索引值b进行组合交換后得到的组合值作为待存储的关键字在TCAM的索引值。索引值a和索引值b的组合交換方法有多种,只需满足以下条件组合变换后的的索引值与其它关键字在TCAM的索引值不产生冲突。具体组合变换方法不是本发明的重点,本领域技术人员可以获知多种满足以上条件的实现方法,例如采用高低位组合变换、幂次变换等。例如高低位组合方法第一关键字的索引值a为高位,第二关键字的索引值b为低位,组合后的索引值为ab,或者,第二关键字的索引值b为高位,第一关键字的索引值a为低位,组合后的地址ba ;又例如幂次变换ab,或者,ba。其中,第一关键字在TCAM的索引值可以是第一关键字在TCAM的地址,第二关键字在TCAM的索引值可以是第二关键字在TCAM的地址。步骤15 :将该关键字对应的关联数据存储于存储器中,该关联数据在存储器中的存储地址与该关键字在TCAM的索引值对应,该关联数据中包含有该关键字的报文的处理信息。确定该关键字在TCAM的索引值后,将该关键字对应的关联数据存储于存储器中,其中,该关联数据在存储器中的存储地址与该关键字在TCAM的索引值对应。其中,关联数据可以为地址映射表项、ACL信息、路由信息等针对报文的处理信息。 进ー步,还可保存关键字的索引值与关联数据在存储器中的存储地址之间的对应关系。在查找该关键字的关联数据时,先确定关键字在TCAM的索引值,再根据关键字的索引值与关联数据在存储器中的存储地址之间的对应关系,确定该关键字对应的关联数据在存储器中的存储地址,然后根据关联数据在存储器中的存储地址读取出关联数据。本发明实施例提供的数据存储方法,如果第一标准位宽大于等于关键字的位宽,将该关键字存储到TCAM中位宽等于第一标准位宽的空间中,由于第一标准位宽为所有标准带宽中与该关键字的位宽的差值最小的标准带宽,因此,存储该关键字的空间浪费的位宽较少。如果第一标准位宽小于关键字的位宽,根据该关键字的位宽将该关键字切割成第一关键字和第二关键字,将第一关键字存储到位宽等于第一标准位宽的空间中,由于第一关键字的位宽与第一标准位宽相同,因此存储第一关键字的空间没有浪费;对于第二关键字,选择位宽等于第二标准位宽的空间来存储,由于第二关键字为待存储的关键字的一部分,第二标准位宽大于等于第二关键字的位宽且与第二关键字的位宽的差值最小,存储第ニ关键字的空间浪费的位宽远小于存储没有切割的关键字的空间所浪费的位宽。因此,本发明实施例与选择大于待存储的关键字的位宽的最小标准位宽作为存储该关键字的空间的标准位宽的方法相比,显著減少了 TCAM空间的浪费,提高了空间利用率,节省了硬件成本。图2A为本发明实施例提供的另ー种数据存储方法流程图。本实施例以key长度采用以下四种标准位宽80bit,160bit,320bit和640bit的TCAM为例进行说明。本实施例用TCAM表来存储ACL下发的关键字。TCAM将ACL下发的关键字,存储到TCAM表的空表项中,同时将与该关键字相关的关联数据存储到存储器中,其中关联数据在内存中的地址保存在对应数据库的特定表项中,该特定表项的索引值根据该关键字在TCAM表的索引值确定。如图2A所示,本实施例包括步骤20 :获取待存储到TCAM表的关键字Key值,并获取Key值的位宽。步骤21 :对待存储的Key值进行压缩。为节省TCAM空间,并提高后续的查找效率,可对待存储Key值进行压缩,缩小待存储Key值的位宽。压缩后Key值的位宽小于压缩前Key值的位宽,由于Key值位宽减小可节省TCAM空间,并可减小后续查找的位数,从从而提高查找效率。步骤22 :查找该TCAM表中是否已存在与压缩后的待存储Key值相同的Key值。若是执行步骤23,否则执行步骤24。在TCAM中位宽与压缩后的待存储Key值的位宽相同的表项中,查找待存储Key值。步骤23 :若TCAM表中存在与压缩后的待存储Key值相同的Key值,将压缩前的待存储Key值的位宽确定为待存储Key值的位宽。步骤24 :若TCAM表中不存在与压缩后的待存储Key值相同的Key值,将压缩后的待存储Key值的位宽确定为待存储Key值的位宽。步骤25 :根据实际Key值位宽与使用的标准位宽对应表,选择待存储Key值使用的标准位宽,根据选择的标准位宽切割待存储Key值。
根据图I对应实施例提供的方法,本实施例为采用以下四种标准位宽80bit,160bit,320bit和640bit的TCAM建立如表I所示的实际Key值位宽与使用的标准位宽对应表。表I中位宽在一定范围的Key值使用相同的标准位宽。例如,位宽在(160,240]范围内的KEY值对应两个的标准位宽分别为160bit和80bit。位宽在(240,320]范围内的KEY值对应ー个标准位宽320bit。根据表I提供的实际Key值位宽与使用的标准位宽的对应关系,如果待存储Key值选择的标准位宽有两个标准位宽第一标准位宽和第二标准位宽,根据位宽将待存储Key值切割成两部分=Keyl和Key2,其中Keyl的位宽为第一标准位宽,第二标准位宽为大于Key2的位宽的最小标准位宽。如果待存储Key值选择的标准位宽有ー个标准位宽,则不需对待存储Key值进行切割,采用位宽为标准位宽的表项存储Key值。如图2B所示,待存储的Key值的位宽为300bit,位宽在(240,320]范围内,查找表I确定Key值对应的标准位宽为320bit,不需对该待存储Key值进行切割,用位宽为320bit的表项存储该Key,多余的20bit用掩码表示。如图2C所示,位宽为220bit的待存储Key值,其位宽在(160,240]范围内,根据表I该待存储Key值对应有两个标准位宽160bit和80bit,则将该待存储Key值切割成两部分Keyl和Key2 ;其中,Keyl的位宽为160bit,Key2的位宽为80bit。Keyl存储在位宽为160bit的表项中,Key2存储在位宽为80bit的表项中,Key2所在表项的多余的20bit用掩码表示。表I为Key值位宽与使用的标准位宽对应表
Key值位宽使用的标准位宽数据库
(0,80]80a
(80,160]160b
(160,240]160,80ab
(240,320]320c
(320,400]320,80ac
(400,480]320,,160be
(480,640]640d
(640,720]640,80ad
(720,800]640,160bd
权利要求
1.一种数据存储方法,其特征在于,包括 获取待存储到TCAM的关键字,并获取所述关键字的位宽; 从TCAM的所有标准位宽中,选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽; 若所述第一标准位宽大于等于所述关键字的位宽,将所述关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述关键字的存储地址,并将所述关键字的存储地址作为所述关键字在TCAM中的索引值; 若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字;将所述第一关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值,所述第一标准位宽等于所述第一关键字的位宽;将所述第二关键字存储到TCAM中存储位宽等于第二标准位宽的空间中,获取所述第一关键字的存储地址作为所述第二关键字在TCAM中的索引值,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小;通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突; 将所述关键字对应的关联数据存储于存储器中,所述关联数据在所述存储器中的存储地址与所述关键字在TCAM的索引值对应,所述关联数据中包含有所述关键字的报文的处理信息。
2.根据权利要求I所述方法,其特征在于,在所述从TCAM的所有标准位宽中,选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽之后,还包括 若所有标准位宽中有两个标准位宽与所述关键字的位宽的差值相等且最小,选择其中位宽小的标准位宽为第一标准位宽。
3.根据权利要求I或2所述方法,其特征在于,所述获取所述关键字的位宽,还包括 对所述关键字进行压缩; 查找所述TCAM中是否已存在与压缩后的所述关键字相同的关键字; 若TCAM中存在与压缩后的所述关键字相同的关键字,将压缩前的所述关键字的位宽确定为待存储的所述关键字的位宽; 若TCAM中不存在与压缩后的所述关键字相同的关键字,将压缩后的所述关键字的位宽确定为待存储的所述关键字的位宽。
4.一种数据查找方法,其特征在于,包括 从报文中提取出待查找的关键字,并获取所述关键字的位宽; 从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽; 若所述第一标准位宽大于等于所述关键字的位宽,在TCAM中位宽等于第一标准位宽的空间中查找所述关键字,获取所述关键字的存储地址并将所述关键字的存储地址作为所述关键字在TCAM中的索引值; 若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字;在TCAM中位宽等于第一标准位宽的空间中查找所述第一关键字,并将所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值;在TCAM中位宽等于第二标准位宽的空间中查找所述第二关键字,获取所述第二关键字的存储地址并将所述第二关键字的存储地址作为所述第二关键字在TCAM中的索引值,其中,所述第一标准位宽等于所述第一关键字的位宽,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小;通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突; 根据所述关键字在TCAM的索引值,确定与所述关键字对应的关联数据在存储器中的存储地址,根据所述关联数据在存储器中的存储地址读取出所述关联数据,所述关联数据中包含有所述关键字的报文的处理信息。
5.根据权利要求4所述方法,其特征在于,在所述从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽之后,还包括 若所有标准位宽中有两个标准位宽与所述关键字的位宽的差值相等且最小,选择其中位宽小的标准位宽为第一标准位宽。
6.根据权利要求4或5所述方法,其特征在于,所述获取所述关键字的位宽之后,还包括 对所述关键字进行压缩,将压缩后的所述关键字的位宽确定为待查找的所述关键字的位宽。
7.一种数据存储装置,其特征在于,包括 获取模块,用于获取待存储到TCAM的关键字,并获取所述关键字的位宽; 标准位宽选择模块,用于从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽; 索引值确定模块,用于若所述第一标准位宽大于等于所述关键字的位宽,将所述关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述关键字的存储地址,并将所述关键字的存储地址作为所述关键字在TCAM中的索引值; 所述索引值确定模块,还用于若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字;将所述第一关键字存储到TCAM中存储位宽等于所述第一标准位宽的空间中,获取所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值;将所述第二关键字存储到TCAM中存储位宽等于第二标准位宽的空间中,获取所述第一关键字的存储地址作为所述第二关键字在TCAM中的索引值;第一关键字的位宽等于所述第一标准位宽,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小; 所述索引值确定模块,还用于通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突; 关联数据保存模块,用于将所述关键字对应的关联数据存储于存储器中,所述关联数据在所述存储器中的存储地址与所述关键字在TCAM的索引值对应,所述关联数据中包含有所述关键字的报文的处理信息。
8.根据权利要求7所述装置,其特征在于,所述标准位宽确定模块,还用于若所有标准位宽中有两个标准位宽与所述关键字的位宽的差值相等且最小,选择其中位宽小的标准位宽为第一标准位宽。
9.根据权利要求7或8所述装置,其特征在于,还包括 第一压缩模块,用于获取所述关键字的位宽后,对待存储的所述关键字进行压缩;查找所述TCAM中是否已存在与压缩后的所述关键字相同的关键字;若TCAM中存在与压缩后的所述关键字相同的关键字,将压缩前的所述关键字的位宽确定为待存储的所述关键字的位宽;若TCAM中不存在与压缩后的所述关键字相同的关键字,将压缩后的所述关键字的位宽确定为待存储的所述关键字的位宽。
10.一种数据查找装置,其特征在于,包括 提取模块,用于从报文中提取出待查找的关键字,并获取所述关键字的位宽; 位宽选择模块,用于从TCAM的所有标准位宽中选择与所述关键字的位宽的差值最小的标准位宽为第一标准位宽; 查找模块,用于若所述第一标准位宽大于等于所述关键字的位宽,在TCAM中位宽等于第一标准位宽的空间中查找所述关键字,获取所述关键字的存储地址并将所述关键字的存储地址作为所述关键字在TCAM中的索引值; 所述位宽选择模块,还用于若所述第一标准位宽小于所述关键字的位宽,将所述关键字切割成两个关键字,分别为第一关键字和第二关键字,其中第一关键字的位宽等于所述第一标准位宽; 所述查找模块,还用于将所述关键字切割成第一关键字和第二关键字后,在TCAM中位宽等于第一标准位宽的空间中查找所述第一关键字,并将所述第一关键字的存储地址作为所述第一关键字在TCAM中的索引值;在TCAM中位宽等于第二标准位宽的空间中查找所述第二关键字,获取所述第二关键字的存储地址并将所述第二关键字的存储地址作为所述第二关键字在TCAM中的索引值,所述第二标准位宽大于等于所述第二关键字的位宽且与所述第二关键字的位宽的差值最小; 所述查找模块,还用于通过将所述第一关键字在TCAM中的索引值和所述第二关键字在TCAM的中索引值进行组合变换获得所述关键字在TCAM中的索引值,其中,所述组合变换使得所述关键字在TCAM中的索引值与其它关键字在TCAM的索引值不产生冲突; 读取模块,用于根据所述关键字在TCAM的索引值,确定与所述关键字对应的关联数据在存储器中的存储地址,根据所述关联数据在存储器中的存储地址读取出所述关联数据,所述关联数据中包含有所述关键字的报文的处理信息。
11.根据权利要求10所述装置,其特征在于,所述位宽选择模块,还用于若所有标准位宽中有两个标准位宽与所述关键字的位宽的差值相等且最小,选择其中位宽小的标准位宽为第一标准位宽。
12.根据权利要求9或10所述装置,其特征在于,还包括 第二压缩模块,用于获取所述关键字的位宽后,对所述关键字进行压缩,将压缩后的所述关键字的位宽确定为待查找的所述关键字的位宽。
全文摘要
本发明提供一种数据存储方法、数据查找方法及装置。该数据存储方法包括获取待存储到TCAM的关键字;从TCAM的所有标准位宽中,选择与关键字的位宽的差值最小的标准位宽为第一标准位宽;若第一标准位宽大于等于关键字的位宽,将关键字存储到TCAM中存储位宽等于第一标准位宽的空间中;否则,将关键字切割成第一关键字和第二关键字;将第一关键字存储到TCAM中存储位宽等于第一标准位宽的空间中;将第二关键字存储到TCAM中存储位宽等于第二标准位宽的空间中;将关键字对应的关联数据存储于存储器中,关联数据在存储器中的存储地址与关键字在TCAM的索引值对应。本发明显著减少了TCAM空间的浪费,提高了空间利用率。
文档编号G06F17/30GK102622434SQ20121004860
公开日2012年8月1日 申请日期2012年2月28日 优先权日2011年12月31日
发明者刘恒, 杨俊杰 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1