一种信息存储的方法、信息查找的方法及引擎装置的制作方法

文档序号:7648344阅读:138来源:国知局
专利名称:一种信息存储的方法、信息查找的方法及引擎装置的制作方法
技术领域
本发明涉及通信领域和数据库存储领域,尤其涉及一种信息存储的方法、信息查找的方法及引擎装置。
背景技术
现在,越来越多的系统需要在大量的数据信息中快速查找所需要的信息,例如,在数据通信领域,需要查找各种转发表的核心路由器就属于这样的系统。使用硬件实现查找是最常用的选择。
目前,对于定长信息的查找一般有两种实现方式基于哈希的方法和基于CAM(Content Address Memory,内容地址存储器)的方法。
基于哈希的查找方法主要是将某一长度较长的key(关键字)按照某种映射关系(哈希函数),映射到较短长度的空间上进行存储,例如,使用哈希函数将32bit(位)的IP(Internet Protocol,因特网协议)地址映射到20bit的地址空间(1M)。这种方法在定长查找中有广泛的应用。当添加某一信息时,对该信息的key进行哈希运算,即f(key)=h,其中,f()是特定的哈希函数,key是需要存储信息的关键字,h则是信息存储的哈希地址,该地址对应存储空间的第h个存储单元,把该key值以及该key值对应的附属信息都存入该地址。这样在查找时,对key值进行哈希(hash)运算获取相应的hash地址就可以取得对应的附属信息。但是,当两个key值进行hash运算后得到同样哈希值时,即f(key1)=f(key2),两条信息可能需要存入一个地址,这就产生了冲突(collision),这两个key值对应的信息就形成冲突表项,给信息存储和查找带来了很大困难。
为了解决上述冲突问题,现在有几种方法例如,链表存储法、多哈希函数法,以及基于CAM的方法。
如图1所示,是现有技术中采用链表存储法的示意图。该方法采用链表存储法将冲突表项存入哈希链表中。当查找信息时,将接收到的要查找的关键字进行哈希运算得到哈希值,用于查找哈希表。从哈希表得到指向存有冲突表项的链表的指针,再使用该指针访问哈希链表,然后需要遍历哈希链表来查找需要的信息,例如,图1中,哈希表的表项0指针指向1个哈希链表,该哈希链表的长度为1,说明无冲突表项;而哈希表的表项X指针指向1个哈希链表,该哈希链表的长度为3,说明该表项X处有3个冲突表项。采用链表存储法,在恶劣情况下,如图中的表项X,查找信息需要很多次存储器访问,无法实现高速查找。
如图2所示,是现有技术中采用多哈希函数法的示意图。在信息存储过程中,该方法采用多个哈希函数对要查找的关键字进行哈希运算后,到对应的多个哈希表中读取信息进行查找。当进行信息存储时,使用第一个哈希函数对关键字进行计算得到第一哈希值,如果第一哈希值对应的哈希表(可以称为第一哈希表)中的位置没有表项,即无冲突时,则将相应信息存入该位置,不必再用其它的哈希函数进行计算;如果该位置存在冲突时,则使用第二个哈希函数对关键字进行再计算得到第二哈希值,同样的,如果第二哈希值对应的哈希表(可以称为第二哈希表)中的位置无冲突时,则将相应信息存入该位置,信息存储结束;否则,需要继续使用其它哈希函数进行计算,直到无冲突时。而在信息查找时,使用多个哈希函数对关键字进行计算,同时获取对应信息,和待查找的关键字进行比较后,找到相应的信息。另外,顺序越在后边的哈希表需要存储的表项信息越少,例如,第二哈希表需要存储的表项信息少于第一哈希表需要存储的表项信息。所以,为了提高存储空间的利用率,各个哈希表可以逐级减小。这种方法使用多个哈希函数来抵消信息分布的随机性,能够有效减少冲突发生的概率。但是,需要高的存储器带宽,这给硬件设计带来的很大困难。
如图3所示,是现有技术中基于CAM的查找示意图,逻辑控制器,可以是逻辑器件或专用CPU(Central Processing Unit,中央处理单元)向CAM提供要查找的关键字,CAM根据关键字通过硬件并行查找,输出对应信息的存储器地址,然后根据该地址从对应的外部存储器中返回附属信息到逻辑控制器中。这样只用一次存储器读取操作即可获得需要的信息。
正是因为CAM查找的快速性,基于CAM的方法在现有的通讯设备中,尤其是路由器中被大量应用。但是由于工艺的约束,不能够制作大容量的CAM芯片,对于大量的数据信息,例如大于1M的32bit信息,目前不能够存储。另外,CAM芯片的成本和功耗随着容量的增加而大幅提高。
从上面描述的多种现有技术方案可以看出,目前迫切需要一种性能较好的信息存储和信息查找方案,来实现大型数据库信息的存储,以及信息的快速查找。

发明内容
基于上述分析,本发明实施例提供了一种信息存储的方法,包括接收待存储信息,所述待存储信息的关键字为m位(m是自然数);利用第一哈希函数对所述待存储信息的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n<m);当与所述第一哈希值对应的第一存储器中的存储单元空闲时,将所述第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同所述待存储信息的附属信息一起存储在所述第一存储器中与所述第一哈希值对应的存储单元内。
本发明实施例还提供了一种引擎装置,包括逻辑控制器,用于接收待存储信息,所述待存储信息的关键字为m位(m是自然数),利用第一哈希函数对所述待存储信息的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n<m);第一存储器,当与所述第一哈希值对应的存储单元空闲时,用于将所述第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同所述待存储信息的附属信息一起存储在所述与所述第一哈希值对应的存储单元内。
同时,本发明实施例提供了一种信息查找的方法,包括接收待查找的关键字,所述关键字为m位(m是自然数);利用第一哈希函数对所述关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述与所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
本发明实施例还提供了另一种信息查找的方法,包括接收待查找的关键字,所述关键字为m位(m是自然数);根据所述关键字查找内容地址存储器;利用第一哈希函数对所述关键字行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m),
当在所述内容地址存储器中查找到与所述关键字对应的存储单元时,获取所述关键字对应的存储单元内的信息;当在所述内容地址存储器中未查找到与所述关键字对应的存储单元时,根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述与所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
相应地,本发明实施例提供了一种引擎装置,包括第一存储器,用于存储信息;逻辑控制器,用于接收待查找的关键字,所述关键字为m位(m是自然数),利用第一哈希函数对所述待查找的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述与所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
本发明实施例还提供了另一种引擎装置,包括内容地址存储器,用于存储信息;第一存储器,用于存储信息;逻辑控制器,用于接收待查找的关键字,所述关键字为m位(m是自然数),根据所述关键字查找内容地址存储器,利用第一哈希函数对所述关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);当在所述内容地址存储器中查找到与所述关键字对应的存储单元时,获取所述与所述关键字对应的存储单元内的信息;当在所述内容地址存储器中未查找到与所述关键字对应的存储单元时,根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
本发明实施例提供的方案,不存储完整的关键字,而是通过关键字压缩方案,即将关键字进行哈希运算,压缩为更少的位数再进行存储,使得相同位宽的存储器可存储的表项数增加,提高了空间利用率,降低了对存储器的容量需求,从而节约成本;也可以减少冲突发生的概率。从反面来说,在相同的硬件配置情况下,采用本发明方案,引擎装置可以存储更多的信息,即增加了引擎装置的容量。另外,本发明实施例提供的方案可以简化信息查找和信息存储的过程,便于快速查找以及信息维护。本发明使用内容地址存储器的实施例中的方案,可以解决哈希运算带来的冲突问题,并且,通过关键字压缩方案,可以降低对内容地址存储器的容量需求,节约成本。


图1是现有技术中链表存储法的示意图;图2是现有技术中多哈希函数法的示意图;图3是现有技术中基于CAM的查找示意图;图4是本发明的一个实施例中引擎装置的结构示意图;图5是本发明的一个实施例中引擎装置进行信息存储的流程图;图6是是本发明一个实施例中引擎装置进行信息查找的流程图。
具体实施例方式
下面结合附图及具体实施例对本发明进行详细说明。
本发明的一个实施例中提供了一种引擎装置,包括逻辑控制器和第一存储器,其中,逻辑控制器用于接收待存储信息,该待存储信息的关键字为m位(m是自然数),利用第一哈希函数对该待存储信息的关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);当与第一哈希值对应的第一存储器中的存储单元空闲时,将第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同待存储信息的附属信息存储该与第一哈希值对应的存储单元内。
在这个实施例中,当进行信息查找时,逻辑控制器接收待查找的关键字,关键字为m位(m是自然数),利用第一哈希函数对待查找的关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);根据第一哈希值查找第一存储器,获取与第一哈希值对应的存储单元内的关键字信息,利用该关键字信息与待查找的关键字进行比较,确定与第一哈希值对应的存储单元与待查找的关键字对应时,获取与第一哈希值对应的存储单元内的信息。在上述过程中,利用该关键字信息与待查找的关键字进行比较,确定与第一哈希值对应的存储单元与待查找的关键字是否对应,有多种实现方式,例如将第一映射信息中的其他(m-n)位信息作为第一压缩关键字;比较关键字信息与第一压缩关键字,当二者相同时,确定与第一哈希值对应的存储单元与待查找的关键字对应。又例如将该关键字信息与第一哈希值结合得到完整的关键字,与待查找的关键字进行比较,当二者相同时,确定与第一哈希值对应的存储单元与待查找的关键字对应。
上述逻辑控制器可以包括第一哈希单元和逻辑单元。进行信息存储时,第一哈希单元将待存储信息的关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值;逻辑单元接收第一哈希值,判断与第一哈希值对应的第一存储器中的存储单元空闲还是被占用,当与第一哈希值对应的存储单元空闲时,通知第一存储器存储第一压缩关键字和待存储信息的附属信息,其中,第一压缩关键字是第一映射信息中的其他(m-n)位信息。
在另一个实施例中,上述逻辑控制器还可以包括第二存储器,对应地,逻辑控制器还包括第二哈希单元,当与第一哈希值对应的第一存储器中的存储单元被占用时,第二哈希单元将待存储信息的关键字进行哈希运算,得到第二映射信息,第二映射信息为m位,将第二映射信息中的t位信息作为第二哈希值(t是自然数,且t小于m);逻辑单元接收第二哈希值,判断与第二哈希值对应的第二存储器中的存储单元空闲还是被占用,当与第二哈希值对应的存储单元空闲时,通知第二存储器存储第二压缩关键字和待存储信息的附属信息,其中,第二关键字是第二映射信息中的其他(m-t)位信息。
在又一个实施例中,引擎装置还包括内容地址存储器,当与第一哈希值对应的第一存储器中的存储单元被占用时,内容地址存储器用于将待存储信息的关键字和待存储信息的附属信息存储在内容地址存储器中的空闲的存储单元内。该实施例中,进行信息查找时,逻辑控制器接收待查找的关键字,关键字为m位(m是自然数),根据关键字查找内容地址存储器;同时,利用第一哈希函数对关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m)。当在内容地址存储器中查找到与关键字对应的存储单元时,获取与关键字对应的存储单元内的信息;当在内容地址存储器中未查找到与关键字对应的存储单元时,根据第一哈希值查找第一存储器,获取与第一哈希值对应的存储单元内的关键字信息,利用该关键字信息与待查找的关键字进行比较,确定与第一哈希值对应的存储单元与待查找的关键字对应时,获取与第一哈希值对应的存储单元内的信息。同样的,如上文所述,利用该关键字信息与待查找的关键字进行比较,确定与第一哈希值对应的存储单元与待查找的关键字是否对应,有多种实现方式,此处不再赘述。
当然,也可以将上述两个实施例中的方案进行结合,即引擎装置包括内容地址存储器,逻辑控制器包括第二存储器,对应地,逻辑控制器还包括第二哈希单元。这样,当与第一哈希值对应的第一存储器中的存储单元被占用时,第二哈希单元将待存储信息的关键字进行哈希运算,得到第二映射信息,第二映射信息为m位,将第二映射信息中的t位信息作为第二哈希值(t是自然数,且t小于m);逻辑单元接收第二哈希值,判断与第二哈希值对应的第二存储器中的存储单元空闲还是被占用,当与第二哈希值对应的存储单元空闲时,通知第二存储器存储第二压缩关键字和待存储信息的附属信息,其中,第二压缩关键字是第二映射信息中的其他(m-t)位信息;而当与第二哈希值对应的第二存储器中的存储单元被占用时,内容地址存储器将待存储信息的关键字和待存储信息的附属信息存储在空闲的存储单元中。其中,第一存储器和第二存储器并不限定于片上存储器或者片外存储器。
下面结合图4来举例进行更详细的说明。当然,图4仅仅是一个具体的例子,并不用于限制本发明。如图4所示,是本发明的一个实施例中引擎装置的结构示意图,该引擎装置包括逻辑控制器120、CAM单元123以及片外存储器134组成。
其中,逻辑控制器120由逻辑单元122、多个hash单元121a和121b、片上存储器131组成。CAM单元123包括CAM芯片133和CAM存储器132。举例来说,逻辑控制器120可以使用ASIC(Application Specific IntegratedCircuit,专用集成电路)或者FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)实现;片外存储器134可以使用DRAM(DynamicRandom Access Memory,动态随机存储器)实现;CAM存储器132则可以是SRAM(Static Random Access Memory,静态存储器)。
在图4所示的引擎装置中,信息查找包括下述过程逻辑控制器120接收到待查找的关键字(key),通过数据总线111分发给各哈希单元、逻辑单元;逻辑单元接收到待查找的关键字后通过数据总线115将该关键字发送给CAM单元123查找,如果CAM单元123查找到该关键字对应的信息,则CAM存储器132将该信息返回给逻辑单元122,此时,逻辑单元122不再使用各个哈希单元的计算结果来访问对应的存储器;如果CAM单元123没有找到需要的信息,则逻辑单元122根据各哈希单元的计算结果,分别到各哈希单元对应的存储器上读取对应的关键字和附属信息,这些信息通过数据总线117返回给逻辑单元122,逻辑单元122将这些信息中的关键字和待查找的关键字对比,如果在这些信息的关键字中找到与待查找的关键字相同的,则从与待查找的关键字相同的关键字所对应的存储器中获取附属信息并返回给逻辑单元。
举一个很具体的例子来描述引擎装置的工作过程假设要查找的关键字为32位,附属信息为20位,待查的数据库包含1M入口。则数据总线111为32位,112a为20位,114为20位;112b的位数一般少于112a,可以设定112b为15位。
哈希单元121a对应的哈希表存储在片外存储器134上,片外存储器的存储空间为1M,数据位宽为128位。由于哈希单元使用哈希函数将32bit的关键字信息映射到20bit的地址空间(1M),也就是说哈希单元121a对32位的关键字信息进行哈希运算,得出一个32位的映射信息,将该32位映射信息中的20位信息作为第一哈希值,而将另12位信息,作为压缩关键字,存储在片外存储器134中,这一过程称为关键字压缩。这样,片外存储器134中的关键字信息,连同第一哈希值就可以得到完整的关键字信息。例如附属信息是20位,加上存储这20位附属信息,那么,一个表项在存储器中片外存储器134中存储只需要存储12+20=32位的信息,总共需要32位位宽。当逻辑单元122取回这32位信息时,只需要结合所用的哈希函数就可以获得完整的关键字,与待查找的关键字对比,如表1所示。
表1经过关键字压缩后的表项存储形式1 12 13 32

这样,对于位宽为128位的片外存储器134,一个存储单元可以存储4个表项信息,如表2所示。
表2位宽为128位的存储单元内的表项存储结构1 32 33 64 65 96 97 128

这样做的好处是一个存储单元可以存储4个冲突表项,这样,即便发生4次冲突,也可以实现一次读取获得所有的表项信息,可以实现快速查找。由于某一个存储空间发生大于4次冲突的概率比较小,所以剩余的无法存储的冲突表项就比较小,这和使用4M的32位存储空间来存储1M表项信息的存储方式相比,冲突概率要小很多。另外,通过关键字压缩,一个表项的需存储信息的大小被缩小了,1M表项使用128M的空间就可以存储,与存储所有关键字信息,同样的存储方式下需要512M的存储空间相比,空间利用率要高很多。
上面的表述只是使用了一个哈希函数,使用一个存储单元来存储表项。因为信息的分布是随机的,而一个哈希函数却是固定格式,在某些信息分布情况下可能会有大量的冲突,如果这些冲突表项都存入CAM单元中,需要CAM单元的空间较大,成本会很高。为此,可以采用多哈希函数法来抵消信息分布随机性的影响。为了不增加片外存储器的个数,考虑到片外存储器的冲突表项个数已经比较少了,所以使用逻辑控制器1 20中的片上存储器131来存储哈希单元2,即121b对应的哈希表。举例来说,可以使用32K×32位的片上存储器121b来存储一个哈希表,对于现有的逻辑器件来说都具备这样的片上存储器。优选的,哈希单元121b采用的哈希函数选取要与哈希单元121a采用的哈希函数尽量不相关,以降低冲突发生的概率。这样可以有效降低了冲突发生的概率,又有效利用存储器空间。当然,图4所示的1个片外存储器和1个片上存储器只是一个示例,逻辑控制器120中,可以只有1个存储器,不限于片上还是片外,也可以有多个存储器。当有多个存储器时,则对应多个哈希表。
在有些情况下,需要大量的片上存储器来实现所有冲突表项的存储,而片上存储器资源十分有限,所以,例如,在冲突表项的个数不多的情况下,可以使用容量较小的CAM单元存储剩余的冲突表项。这样既有效减少了片上存储器的需求,又可以解决冲突给查找带来的问题。如图4所示的引擎装置中,可以使用1K×32位的CAM芯片133和1K×20位的CAM存储器来分别存储关键字和附属信息。
另外,本发明的实施例中提供了一种信息存储的方法,过程如下接收待存储信息,该待存储信息的关键字为m位(m是自然数);利用第一哈希函数对待存储信息的关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);当与第一哈希值对应的第一存储器中的存储单元空闲时,将第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同待存储信息的附属信息一起存储在第一存储器中与第一哈希值对应的存储单元内。
在另一个实施例中,当第一存储器中与第一哈希值对应的存储单元被占用时,利用第二哈希函数对待存储信息的关键字进行哈希运算,得到第二映射信息,第二映射信息为m位,将第二映射信息中的t位信息作为第二哈希值(t是自然数,且t小于m);当与第二哈希值对应的第二存储器中的存储单元空闲时,将第二压缩关键字和待存储信息的附属信息存储在第二存储器中与第二哈希值对应的存储单元内,其中,第二关键字是第二映射信息中的其他(m-t)位信息。
在又一个实施例中,当第一存储器中与第一哈希值对应的存储单元被占用时,查找内容地址存储器中是否存在空闲的存储单元;当存在空闲的存储单元时,将待存储信息的关键字和附属信息存储在该空闲的存储单元内。
当然,可以将上面的这两种实施例中的方法结合运用,譬如,当第一存储器中与第一哈希值对应的存储单元被占用时,利用第二哈希函数对待存储信息的关键字进行哈希运算,得到第二映射信息,第二映射信息为m位,将第二映射信息中的t位信息作为第二哈希值(t是自然数,且t小于m);当与第二哈希值对应的第二存储器中的存储单元空闲时,将第二压缩关键字和待存储信息的附属信息存储在第二存储器中与第二哈希值对应的存储单元内,其中,第二压缩关键字是第二映射信息中的其他(m-t)位信息;而当与第二哈希值对应的第二存储器中的存储单元被占用时,查找内容地址存储器中是否存在空闲的存储单元;当存在空闲的存储单元时,将待存储信息中关键字和附属信息存储在该空闲的存储单元内。
下面举一个具体的例子来描述信息存储的过程。如图5所示,是本发明的一个实施例中引擎装置进行信息存储的流程图,结合图4所示的引擎装置的结构示意图,信息存储的过程如下首先从步骤510开始,此时存储的表项小于1M项;在步骤511中,逻辑控制器120接收存储指令和待存储的信息,然后通过数据总线发送给哈希单元1(121a);在步骤512中,哈希单元1(121a)使用第一哈希函数进行运算获得第一哈希值并通过数据总线112a发送给逻辑单元122;在步骤513中,逻辑单元122根据第一哈希值对应地查找到片外存储器134中的存储单元,找到第一哈希值对应的存储单元,以表2为例,是4个表项共128位;在步骤514中,判断第一哈希值对应的存储单元是否有空闲空间(冲突表项<4),如果有空闲空间,则在步骤515中,逻辑单元122根据哈希单元1(121a)的哈希函数对关键字进行压缩;在步骤516中,逻辑单元122将压缩后的关键字和附属信息放入第一哈希值对应的存储单元中的空闲空间,存入片外存储器134中,然后进入步骤523,等待其它指令。在步骤514中,如果没有空闲空间(冲突表项>4),则进入步骤517,即哈希单元2(121b)接收存储指令和相应信息,通过第二哈希函数计算得到第二哈希值并发送给逻辑单元122。在步骤518中,逻辑单元122根据第二哈希值到片上存储器131中查找第二哈希值对应的存储单元(32位)。在步骤519中,判断该存储单元是否存有有效的表项信息,如果没有,即空闲,则在步骤520中,逻辑单元122根据哈希单元2(121b)的哈希函数对关键字进行压缩。在步骤521中,逻辑单元122将压缩后的关键字和附属信息放入该存储单元中,然后进入步骤523,等待其它指令。在步骤519中,如果有冲突发生,则逻辑单元将关键字信息和附属信息存入CAM单元123中。至此,信息存储流程结束,流程进入步骤523,等待其它指令。
同时,本发明的一个实施例中还提供了一种信息查找的方法,过程如下接收待查找的关键字,关键字为m位(m是自然数);利用第一哈希函数对关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);
根据第一哈希值查找第一存储器,获取与第一哈希值对应的存储单元内的关键字信息,利用关键字信息与待查找的关键字进行比较,确定与第一哈希值对应的存储单元与待查找的关键字对应时,获取与第一哈希值对应的存储单元内的信息。
如上文所述,利用关键字信息与待查找的关键字进行比较,确定与第一哈希值对应的存储单元与待查找的关键字是否对应,存在多种方案,此处不再赘述。
在另一个实施例中,信息查找的过程略有不同,包括接收待查找的关键字,关键字为m位(m是自然数);根据关键字查找内容地址存储器;利用第一哈希函数对关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);当查找到与关键字对应的存储单元时,获取关键字对应的存储单元中的信息;当未查找到与关键字对应的存储单元时,根据第一哈希值查找第一存储器,获取与第一哈希值对应的存储单元内的关键字信息,利用关键字信息与查找的关键字进行比较,确定与第一哈希值对应的存储单元与关键字对应时,获取与第一哈希值对应的存储单元内的信息。
下面举一个具体的例子来说明信息查找的具体过程。如图6所示,是本发明一个实施例中引擎装置进行信息查找的流程图,结合图4中引擎装置的结构示意图,信息查找的过程如下首先从步骤610开始,此时引擎装置处于等待指令阶段;在步骤611中,逻辑控制器120接收查找指令和待查关键字,并通过数据总线111和115发送到哈希单元1(121a)、哈希单元2(121b)和CAM单元(123)。在步骤612中,CAM单元123接收到待查关键字后,CAM芯片133根据该关键字进行并行查找,如果找到相符信息,则输出地址到CAM存储器132上,该存储器返回附属信息;如果CAM芯片133没有找到相符信息,则不向逻辑单元返回任何值;在步骤613和614中,两哈希单元根据待查关键字进行哈希计算输出哈希值,该哈希值通过数据总线112输出到逻辑单元122;在步骤615中,逻辑单元122收集CAM查找结果和两哈希单元的运算结果,其中,CAM单元123查找结果,即返回值的优先级最高,如果CAM单元123有返回值,则使用该值作为附属信息。如果CAM单元123无返回值,则使用哈希单元计算结果到相应存储器获取关键字信息和附属信息。各个哈希单元为并行查找,所有哈希计算和存储器访问都是并行完成的,无优先级之分。
在步骤616中,逻辑单元122判断CAM单元123是否有返回值,如果有,说明CAM单元找到待查信息,则在步骤617中,使用CAM查找结果作为返回的附属信息。此时进入步骤624,等待其它指令到来;在步骤616中,如果CAM单元123没有返回值,说明CAM单元未找到待查信息,则在步骤618中,使用哈希运算的结果到相应的存储器获取关键字信息和附属信息。同时,在步骤619中,逻辑单元122根据所有的哈希单元的哈希函数来压缩关键字。在步骤620中,逻辑单元122将计算所得的压缩关键字与从各个存储器中取回的部分关键字信息进行比较。在步骤621中,判断是否一致。如果一致,则在步骤622中,返回与压缩关键字一致的该部分关键字所在的存储单元内存储的附属信息。此时进入步骤624,等待其它指令到来。
在步骤621中,如果不一致,则说明要查找的关键字信息不存在,则在步骤623中返回“无相符”信息,然后进入步骤624,等待其它指令到来,整个查找过程到此结束。
本发明实施例中对应的软件可以存储在一个计算机可读取存储介质中。
本发明实施例中的方案已经在计算机中进行了多次仿真试验,经验证运行可靠可行。本发明实施例提供的方案,不存储完整的关键字,而是通过关键字压缩方案,即将关键字进行哈希运算,压缩为更少的位数再进行存储,使得相同位宽的存储器可存储的表项数增加,提高了空间利用率,降低了对存储器的容量需求,从而节约成本;也可以减少冲突发生的概率。从反面来说,在相同的硬件配置情况下,采用本发明方案,引擎装置可以存储更多的信息,即增加了引擎装置的容量。另外,本发明实施例提供的方案可以简化信息查找和信息存储的过程,便于快速查找以及信息维护。本发明使用内容地址存储器的实施例中的方案,可以解决哈希运算带来的冲突问题,并且,通过关键字压缩方案,可以降低对内容地址存储器的容量需求,节约成本。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种信息存储的方法,其特征在于,包括接收待存储信息,所述待存储信息的关键字为m位(m是自然数);利用第一哈希函数对所述待存储信息的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n<m);当与所述第一哈希值对应的第一存储器中的存储单元空闲时,将所述第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同所述待存储信息的附属信息一起存储在所述第一存储器中与所述第一哈希值对应的存储单元内。
2.如权利要求1所述的方法,其特征在于,还包括当所述与所述第一哈希值对应的第一存储器中的存储单元被占用时,利用第二哈希函数对所述待存储信息的关键字进行哈希运算,得到第二映射信息,所述第二映射信息为m位,将所述第二映射信息中的t位信息作为第二哈希值(t是自然数,且t<m);当与所述第二哈希值对应的第二存储器中的存储单元空闲时,将所述第二映射信息中的其他(m-t)位信息作为第二压缩关键字,连同所述待存储信息的附属信息一起存储在所述第二存储器中与所述第二哈希值对应的存储单元内。
3.如权利要求1所述的方法,其特征在于,还包括当所述与所述第一哈希值对应的第一存储器中的存储单元被占用时,查找内容地址存储器中是否有空闲的存储单元;当所述内容地址存储器中有空闲的存储单元时,将所述待存储信息的关键字和附属信息存储在所述空闲的存储单元内。
4.如权利要求2所述的方法,其特征在于,还包括当所述与所述第二哈希值对应的第二存储器中的存储单元被占用时,查找内容地址存储器中是否有空闲的存储单元;当所述内容地址存储器中有空闲的存储单元时,将所述待存储信息中关键字和附属信息存储在所述空闲的存储单元内。
5.一种引擎装置,其特征在于,包括逻辑控制器,用于接收待存储信息,所述待存储信息的关键字为m位(m是自然数),利用第一哈希函数对所述待存储信息的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n<m);第一存储器,当与所述第一哈希值对应的存储单元空闲时,用于将所述第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同所述待存储信息的附属信息一起存储在所述与所述第一哈希值对应的存储单元内。
6.如权利要求5所述的引擎装置,其特征在于,所述逻辑控制器包括第一哈希单元,用于对所述待存储信息的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为所述第一哈希值;逻辑单元,用于接收所述第一哈希值,判断所述与所述第一哈希值对应的存储单元空闲还是被占用,当所述与所述第一哈希值对应的存储单元空闲时,通知所述第一存储器存储所述第一压缩关键字和所述待存储信息的附属信息。
7.如权利要求6所述的引擎装置,其特征在于,还包括第二存储器;所述逻辑控制器还包括第二哈希单元,当所述与所述第一哈希值对应的存储单元被占用时,所述第二哈希单元用于对所述待存储信息的关键字进行哈希运算,得到第二映射信息,所述第二映射信息为m位,将所述第二映射信息中的t位信息作为第二哈希值(t是自然数,且t小于m);所述逻辑单元接收所述第二哈希值,判断所述与所述第二哈希值对应的第二存储器中的存储单元空闲还是被占用,当所述与所述第二哈希值对应的存储单元空闲时,通知所述第二存储器存储第二压缩关键字和所述待存储信息的附属信息,所述第二关键字为所述第二映射信息中的其他(m-t)位信息。
8.如权利要求5所述的引擎装置,其特征在于,还包括内容地址存储器,当所述与所述第一哈希值对应的第一存储器中的存储单元被占用时,所述内容地址存储器用于将所述待存储信息的关键字和所述待存储信息的附属信息存储在所述内容地址存储器中空闲的存储单元内。
9.如权利要求7所述的引擎装置,其特征在于,还包括内容地址存储器,当所述与所述第二哈希值对应的第二存储器中的存储单元被占用时,所述内容地址存储器用于将所述待存储信息的关键字和所述待存储信息的附属信息存储在所述内容地址存储器中空闲的存储单元内。
10.一种信息查找的方法,其特征在于,包括接收待查找的关键字,所述关键字为m位(m是自然数);利用第一哈希函数对所述关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述与所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
11.如权利要求10所述的方法,其特征在于,所述利用所述关键字信息与所述关键字进行比较,包括将所述第一映射信息中的其他(m-n)位信息作为第一压缩关键字;比较所述关键字信息与所述第一压缩关键字,当二者相同时,确定所述与所述第一哈希值对应的存储单元与所述关键字对应。
12.如权利要求10所述的方法,其特征在于,所述利用所述关键字信息与所述关键字进行比较,包括将所述关键字信息与所述第一哈希值结合得到完整的关键字,与所述关键字进行比较,当二者相同时,确定所述与所述第一哈希值对应的存储单元与所述关键字对应。
13.一种信息查找的方法,其特征在于,包括接收待查找的关键字,所述关键字为m位(m是自然数);根据所述关键字查找内容地址存储器;利用第一哈希函数对所述关键字行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m),当在所述内容地址存储器中查找到与所述关键字对应的存储单元时,获取所述关键字对应的存储单元内的信息;当在所述内容地址存储器中未查找到与所述关键字对应的存储单元时,根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述与所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
14.如权利要求13所述的方法,其特征在于,所述利用所述关键字信息与所述关键字进行比较,包括将所述第一映射信息中的其他(m-n)位信息作为第一压缩关键字;比较所述关键字信息与所述第一压缩关键字,当二者相同时,确定所述与所述第一哈希值对应的存储单元与所述关键字对应。
15.如权利要求13所述的方法,其特征在于,所述利用所述关键字信息与所述关键字进行比较,包括将所述关键字信息与所述第一哈希值结合得到完整的关键字,与所述关键字进行比较,当二者相同时,确定所述与所述第一哈希值对应的存储单元与所述关键字对应。
16.一种引擎装置,其特征在于,包括第一存储器,用于存储信息;逻辑控制器,用于接收待查找的关键字,所述关键字为m位(m是自然数),利用第一哈希函数对所述待查找的关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述与所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
17.一种引擎装置,其特征在于,包括内容地址存储器,用于存储信息;第一存储器,用于存储信息;逻辑控制器,用于接收待查找的关键字,所述关键字为m位(m是自然数),根据所述关键字查找内容地址存储器,利用第一哈希函数对所述关键字进行哈希运算,得到第一映射信息,所述第一映射信息为m位,将所述第一映射信息中的n位信息作为第一哈希值(n是自然数,且n小于m);当在所述内容地址存储器中查找到与所述关键字对应的存储单元时,获取所述与所述关键字对应的存储单元内的信息;当在所述内容地址存储器中未查找到与所述关键字对应的存储单元时,根据所述第一哈希值查找第一存储器,获取与所述第一哈希值对应的存储单元内的关键字信息,利用所述关键字信息与所述关键字进行比较,确定所述第一哈希值对应的存储单元与所述关键字对应时,获取所述与所述第一哈希值对应的存储单元内的信息。
全文摘要
本发明公开了一种信息存储的方法,包括接收待存储信息,待存储信息的关键字为m位(m是自然数);利用第一哈希函数对待存储信息的关键字进行哈希运算,得到第一映射信息,第一映射信息为m位,将第一映射信息中的n位信息作为第一哈希值(n是自然数,且n<m);当与第一哈希值对应的第一存储器中的存储单元空闲时,将第一映射信息中的其他(m-n)位信息作为第一压缩关键字,连同待存储信息的附属信息一起存储在与第一哈希值对应的存储单元内。本发明还公开了信息查找的方法及引擎装置。这些方案,使得相同位宽的存储器可存储的表项数增加,提高了空间利用率,降低了对存储器的容量需求,从而节约成本。
文档编号H04L12/54GK101034412SQ20071007392
公开日2007年9月12日 申请日期2007年4月2日 优先权日2007年4月2日
发明者胡睿, 沈士军, 李猛, 徐振华 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1