一种基于Hash查找CAM的方法

文档序号:6433404阅读:457来源:国知局
专利名称:一种基于Hash查找CAM的方法
技术领域
本发明涉及通信、高速网络下的数据查找匹配或芯片设计技术领域,具体地说是一种基于Hash查找CAM的方法。
背景技术
随着通信技术的快速发展,一方面,在网络中传输的数据带宽越来越大。另一方面,网络中各种各样的应用不断变化和发展,现在的IP网络需要为用户提供更多服务类型和更好的服务质量,要求路由器提供额外的处理机制来实现区分服务,报文分类,安全入侵监测, 防火墙访问控制,虚拟专用网,快速路由查找,网络地址转化,等一些网络关键技术。为了适应网络的数据流量越来越大的发展趋势,保证网络链路的通畅性,对路由器性能提出了新的挑战——如何快速路由。网络技术的发展,这些关键网络技术都涉及查找匹配问题,而基于软件的查找匹配效率低下,传统的软件实现的方法对于高速网络的发展显的力不从心。CAM芯片的快速查找匹配特性,使得CAM在网络中得到广泛的应用。CAM芯片的快速查找匹配的特点,为网络中很多关键的应用提供了新的解决方案。可以用CAM来实现快速路由查找,报文分类,区分服务,入侵监测等需要快速查找匹配的关键技术。

发明内容
本发明的目的是提供一种基于Hash查找CAM的方法。本发明的目的是按以下方式实现的,本发明的通过Hash查找匹配原理,将其逻辑用硬件电路描述,待查数据写入存储体,两结构组合成为内容可寻址存储体(Content Addressable Memory)。设计分为以下几个功能模块
1)总线;2) Hash函数查找表;3) Hash入口表;4)数据存储体;5)匹配电路;6) RAM控制电路,其中
总线1)是CAM与外部通信的通道。在CAM中总线分为请求总线和响应总线。请求总线是一条双向多路复用总线,请求总线由命令总线和请求数据总线组成。命令总线处理输入命令,请求总线是主要数据通道。所有对CAM的操作命令信号,还有输入到CAM中的数据信号都通过请求总线进行传输。Hash函数查找表2)通过查找表的方式对Hash查找函数逻辑进行实现,哈希查找步骤为设哈希表为HST^Tm-I],哈希函数取H (key),解决冲突的方法为R (x);第一步对给定k值,计算哈希地址Di=H (k);若HST为空,则查找失败;若HST=k,则查找成功;否则, 执行第二步(处理冲突)。第二步重复计算处理冲突的下一个存储地址Dk=R (Dk-Ι),直到 HST[Dk]为空,或HST [Dk] =k为止。若HST[Dk]=K,则查找成功,否则查找失败。根据选择的冲突处理方法,计算关键字key的下一个存储地址。若下一个存储地址仍被占用,则继续执行第二步,直到找到能用的存储地址为止。Hash入口表3)中存放Key值经过Hash函数计算后的HashJfey以及与之对应的数据表项入口值。数据存储体4)作为待查找的数据存放区,根据系统的数据格式确定该存储体的数据宽度和数据深度,通过HashJfey查找到对应于数据存储体的地址后,系统通过RAM控制电路6)对该存储体进行访存,读取数据表项中的数据。读取出表项中的数据后,通过匹配电路5)将待寻址的内容与表项数据进行比对, 若匹配,则输出匹配地址,拉高数据匹配标志。查找程序流程如下
1.根据输入的查找数据进行hash计算得到Hashkey,用Hash key去访问Hash入口表。如果Hash入口表的内容为0,则跳到3 ;如果Hash入口表的内容不为0,则跳到2 ;
2.根据Hash入口表的内容,去访问CAM数据项链表,并把查找数据同CAM数据项链表的数据一个一个比较(从链表头到链表尾)。从链表头开始比较,查找不成功,接着查找链表的下一项,直到链表尾为止,跳到3 ;查找成功(查找数据的值同CAM数据项链表中一项的值相同)则记录下此项CAM地址,接着查找链表的下一项,如果也成功则比较CAM地址与此前记录的CAM地址的大小,最终取CAM地址最小者,这样查找一直到链表尾为止,跳到3 ;
3.查找成功,返回CAM地址和CAM命中的信息,跳到4;查找不成功,返回查找结束,返回CAM没有命中的信息,跳到4;
4.操作结束,返回。本发明的有益效果是基于Hash查找算法的高效性,可快速查找出匹配数据,减小了数据查找时的比较次数,只需要一次即能找出数据,提高了查找效率,节约了系统时间,提高了数据通信的吞吐率。


附图1是Hash查找CAM结构图。
具体实施例方式参照说明书附图对本发明的基于Hash查找CAM的方法作以下详细地说明。本发明的一种基于Hash查找CAM的方法,其结构是由正如发明内容中所描述的, 本发明体系结构主要包括
1)总线;2)Hash函数查找表;3)Hash入口表;4)数据存储体;5)匹配电路;6)RAM控制电路。CAM具有数据存储功能和高速数据内容查找功能,同时支持读、写、查找等多条指令,但CAM最主要的功能是高速内容查找功能,而其它的功能都是为查找功能做基础的,因此CAM功能模型的设计的核心是高速查找引擎的设计。查找引擎本身维护一张表,并能接收外部输入数据。它内部通过某种查找算法将输入数据与表中各项进行全部比较(准确) 或部分(Don’ t care功能)比较,然后输出比较结果。用hash函数的方法来进行快速CAM内容查找。当进行CAM查找请求时,先把查找的数据进行hash计算得出一个hash key,接着根据此hash key (作为hash入口表地址) 去访问hash入口表得到CAM表项数据链表首地址,然后去访问CAM数据表项链表,最后把要查找的数据同CAM数据链表中的项逐个的比较,最后返回CAM查找结果。其中CAM查找引擎采用了 Hash查找算法来实现的。基于Hash查找引擎的CAM模型总体结构即用Hash查找引擎作为CAM查找引擎,查找引擎接收到从逻辑控制模块请求时,接收查找数据并把存储到数据寄存器中,然后读取数据存储器中的CAM表项,通过数据比较器进行比较,直到比较成功或数据存储器中的CAM表项都比较了一遍时,返回比较成功的CAM表项在数据存储器中地址。查找程序流程如下
1.根据输入的查找数据进行hash计算得到Hashkey,用Hash key去访问Hash入口表。如果Hash入口表的内容为0,则跳到3 ;如果Hash入口表的内容不为0,则跳到2 ;
2.根据Hash入口表的内容,去访问CAM数据项链表,并把查找数据同CAM数据项链表的数据一个一个比较(从链表头到链表尾)。从链表头开始比较,查找不成功,接着查找链表的下一项,直到链表尾为止,跳到3 ;查找成功(查找数据的值同CAM数据项链表中一项的值相同)则记录下此项CAM地址,接着查找链表的下一项,如果也成功则比较CAM地址与此前记录的CAM地址的大小,最终取CAM地址最小者,这样查找一直到链表尾为止,跳到3 ;
3.查找成功,返回CAM地址和CAM命中的信息,跳到4;查找不成功,返回查找结束,返回CAM没有命中的信息,跳到4;
4.操作结束,返回。
实施例1)利用Hash查找函数存在的形式,包括直接法、减去法、余数法、数值抽出法、中间平均法、折迭法、旋转法、伪随机数法,设计建模采用自顶向下的分析设计方法,把整个系统分成多个模块,每个模块再继续细化,直到最低一级拿来编码的程度,进行逐个底层模块的开发,调试,然后进行模块联调,最后整个系统联调;
2)对于Hash查找中的Hash碰撞问题,解决方法包括(1)线性开放寻址法;(2)差值解决法;(3)链表解决法;(4)分桶Hash法;
3)基于CAM的存储体不仅具有数据存储能力,还具有数据比较能力,存储体接收比较数据,并把它广播到对应的每一个相关联存储器中,相关联存储器把数据同自己存储的数据进行比较,最后相关联存储器把比较结果送给优先编码器;
4)对于CAM的各功能,详细进行描述和分析,对应到具体设计方案及硬件实现,具有对应的时序关系;
5)基于Hash查找函数逻辑实现方法;
6)由Hash查找入口表地址访问数据表,对比数据表项内容和查找内容,输出匹配结
果;
7)对存储体进行选型,选择最优方案。除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1. 一种基于Hash查找CAM的方法,其特征在于CAM给用户提供读、写、查找、移动、检验的功能,通过特定的Hash函数的运算与Hash表中的表项相匹配求得数据的位置,再进行数据比较后即得到欲查找的地址,具体步骤如下通过Hash查找匹配原理,将其逻辑用硬件电路描述,待查数据写入存储体,两结构组合成为内容可寻址存储体,设计分为以下几个功能模块1)总线;2) Hash函数查找表;3) Hash入口表;4)数据存储体;5)匹配电路;6) RAM控制电路;其中总线1)是CAM与外部通信的通道,在CAM中总线分为请求总线和响应总线;请求总线是一条双向多路复用总线,请求总线由命令总线和请求数据总线组成,命令总线处理输入命令,请求总线是主要数据通道,所有对CAM的操作命令信号,还有输入到CAM中的数据信号都通过请求总线进行传输;Hash函数查找表2)通过查找表的方式对Hash查找函数逻辑进行,哈希查找步骤为 设哈希表为HST^TM-I],哈希函数取H (key),解决冲突的方法为R (χ);第一步对给定k 值,计算哈希地址Di=H (k);若HST为空,则查找失败;若HST=k,则查找成功;否则,执行第二步处理冲突;第二步重复计算处理冲突的下一个存储地址Dk=R(Dk-I),直到HST[Dk]为空,或HST[Dk] =k为止;若HST[Dk]=K,则查找成功,否则查找失败;根据选择的冲突处理方法,计算关键字key的下一个存储地址,若下一个存储地址仍被占用,则继续执行第二步, 直到找到能用的存储地址为止;Hash入口表3)中存放Key值经过Hash函数计算后的HashJfey以及与之对应的数据表项入口值;数据存储体4)作为待查找的数据存放区,根据系统的数据格式确定该存储体的数据宽度和数据深度,通过HashJfey查找到对应于数据存储体的地址后,系统通过RAM控制电路 6)对该存储体进行访存,读取数据表项中的数据;读取出表项中的数据后,通过匹配电路5)将待寻址的内容与表项数据进行比对,若匹配,则输出匹配地址,拉高数据匹配标志;查找程序流程如下1)根据输入的查找数据进行hash计算得到Hashkey,用Hash key去访问Hash入口表,如果Hash入口表的内容为0,则跳到3 ;如果Hash入口表的内容不为0,则跳到2 ;2)根据Hash入口表的内容,去访问CAM数据项链表,并把查找数据同CAM数据项链表的数据一个一个比较,从链表头到链表尾,从链表头开始比较,查找不成功,接着查找链表的下一项,直到链表尾为止,跳到3 ;查找成功,查找数据的值同CAM数据项链表中一项的值相同,则记录下此项CAM地址,接着查找链表的下一项,如果也成功则比较CAM地址与此前记录的CAM地址的大小,最终取CAM地址最小者,这样查找一直到链表尾为止,跳到3 ;3)查找成功,返回CAM地址和CAM命中的信息,跳到4;查找不成功,返回查找结束,返回CAM没有命中的信息,跳到4;4)操作结束,返回。
全文摘要
本发明提供一种基于Hash查找CAM的方法,CAM具有数据存储功能和高速数据内容查找功能,同时支持读、写、查找等多条指令,但CAM最主要的功能是高速内容查找功能,而其它的功能都是为查找功能做基础的,因此CAM功能模型的设计的核心是高速查找引擎的设计。查找引擎本身维护一张表,并能接收外部输入数据。它内部通过某种查找算法将输入数据与表中各项进行全部比较(准确)或部分(Don’tcare功能)比较,然后输出比较结果。用hash函数的方法来进行快速CAM内容查找。当进行CAM查找请求时,先把查找的数据进行hash计算得出一个hashkey,接着根据此hashkey(作为hash入口表地址)去访问hash入口表得到CAM表项数据链表首地址,然后去访问CAM数据表项链表,最后把要查找的数据同CAM数据链表中的项逐个的比较,最后返回CAM查找结果。
文档编号G06F17/30GK102364463SQ20111027682
公开日2012年2月29日 申请日期2011年9月19日 优先权日2011年9月19日
发明者周恒钊 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1