通过软件搬移降低HASH冲突的方法及装置制造方法及图纸

技术编号:9668055 阅读:68 留言:0更新日期:2014-02-14 06:38
本发明专利技术揭示了一种通过软件搬移降低HASH冲突的方法及装置,在将任意长度的二进制值(key)存入RAM中时,首先将RAM分成至少两个存储块,每个存储块采用不同的哈希函数将所述二进制值映射至其中不同的存储位置;当所述待存储的第一二进制值在所有存储块中相应的存储位置都已被已存储的第二二进制值占用时,则通过搬移模块将其中一个存储块中的已存储的第二二进制值搬移至其他存储块中对应的为空的存储位置进行存储,进而使得第一二进制值能够存储在搬移出第二二进制值的存储位置。本发明专利技术通过二进制值的搬移,最大化的利用了RAM的规格,并且减少了TCAM的使用,节省了处理器的成本。

【技术实现步骤摘要】
通过软件搬移降低HASH冲突的方法及装置
本专利技术涉及通信领域,尤其是涉及网络通信中对单播、组播、广播业务进行分层队 列调度的方法。
技术介绍
在网络处理器(如ASIC)中进行表项查找并存储二级制数的方法有很多,包括使 用最为广泛的基于TCAM (ternary content addressable memory,三态内容寻址存储器) 进行查找的方法,以及一些通过SRAM软件的查找方法如HASH(哈希函数)查找方法。其中 TCAM查找方法是通过TCAM的第三种状态掩码来实现,因此其既能进行精确匹配查找,又能 进行模糊匹配查找,且具有查找速度快、操作简单的优点,然TCAM查找的缺点也很明显,SP 成本高,功耗大。因此,目前网络处理器中的一部分查找改用HASH查找方法来实现,因为使 用HASH查找方法只需要使用RAM,而RAM价格比TCAM低。然而通过使用HASH算法的查找方法克服了使用TCAM查找成本高的缺点,但是现 有技术中使用的HASH算法也有其本身的缺陷,即使用HASH算法进行查找时会产生HASH冲 突,从而导致RAM的利用率变低,且HASH冲突率越高,RAM的利用率就越低。而目前一般解 决HASH冲突的方法是使用TCAM,HASH冲突率越高,需要使用的TCAM就越多,这样又会导致 增大网络处理器成本的问题出现。因此,针对在网络处理器中进行表项查找的问题,有待于 提出一种既能降低查找成本,又能尽大可能地降低HASH冲突的查找方法。
技术实现思路
本专利技术的目的在于克服现有技术的缺陷,提出了一种通过软件搬移减低HASH冲 突的方法,其在发生HASH冲突时,通过在不同的存储块间搬移某一已存储的二进制值,使 得原来存放该已存储的二进制值的存储位置为空,从而可以将待存储的二进制继续存入, 达到降低HASH冲突概率的目的。为实现上述目的,本专利技术提出如下技术方案:一种通过软件搬移降低HASH冲 突的方法,其在将任意长度的二进制值(key)存入RAM中时,首先将RAM分成至少两 个存储块(图1中的RAM1,...RAMn),每个存储块采用不同的哈希函数(indexl = fund (key),...1ndexn = funcn(key))将所述二进制值映射至其中不同的存储位置;所述 二进制值包括某一待存储的第一二进制值(key_wl)和已存储的第二二进制值(key_al), 当所述待存储的第一二进制值在所有存储块中相应的存储位置都已被已存储的第二二进 制值占用时,则将其中一个存储块中的已存储的第二二进制值搬移至其他存储块中对应的 为空的存储位置进行存储,进而使得第一二进制值能够存储在搬移出第二二进制值的存储 位置。更进一步地,所述将第二二进制值搬移至其他存储块中对应的为空的存储位置进 行存储包括以下步骤:SI,定义第二二进制值在原存储块中的存储位置为第一存储位置,在另一存储块中的存储位置为第二存储位置,将第二二进制值从其原存储位置中取出,通过所述对应的 哈希函数映射后,查找到所述第二存储位置,判断第二存储位置为空时,则将第二二进制值 存入所述第二存储位置;S2,删除所述第一存储位置上的第二二进制值,使第一存储位置为空;S3,将所述第一二进制值存入所述第一存储位置。其中,所述SI中,当查找到的第二存储位置为非空时,则继续在其他存储块中进 行查找,并在找到为空的存储位置时将所述第二二进制值存入。当查遍所述的存储块后未发现为空的存储位置时,则循环进行其他存储块中第 二二进制值的搬移。所述每一存储块中包括复数个存储桶,每一存储桶中包括至少一个存储位置。所述存储块中采用的哈希函数为:index = func (key)其中,key为二进制值,index为通过哈希函数映射后得到的哈希值,所述哈希值 与对应存储块中的存储桶相对应。本专利技术还提出一种通过软件搬移降低HASH冲突的装置,其包括存储任意长度二 进制值的RAM,哈希映射模块,判断存储位置是否为空的判断模块以及对已存储的二进制值 进行搬移的搬移模块,其中:所述RAM分为至少两个存储块,每一存储块中包括复数个存储桶,每一存储桶中 包括至少一存储位置;所述哈希映射模块用于将待存储的二进制值通过哈希函数映射成与所述存储块 中的存储桶相应的哈希值;所述判断模块用于判断所述哈希值对应的存储桶中的存储位置是否为空,如果为 空,则将所述二进制值存入所述存储位置;所述搬移模块用于将已存储于其中一个存储块中存储位置的二进制值搬移至其 他存储块中相应为空的存储位置。所述哈希映射模块中,不同的存储块采用不同的哈希函数,从而使二进制值映射 在不同的存储块的哈希值不相同。本专利技术的有益效果是:通过二进制值的搬移,最大化的利用了 RAM(相同规格,减 少了 RAM的使用),并且减少了 TCAM的使用,节省了处理器的成本。对于已经在使用的处理 器,则可以最大化的利用处理器的RAM和TCAM,增大规格。【附图说明】图1是本专利技术通过软件搬移降低HASH冲突的示意图;图2是本专利技术实施例中将二进制值通过查找存入RAM中的示意图;图3是图3发生HASH冲突时进行搬移的示意图;图4是通过软件搬移图3中二进制值后的示意图。【具体实施方式】下面将结合本专利技术的附图,对本专利技术实施例的技术方案进行清楚、完整的描述。本专利技术提出的降低HASH冲突的方法,其通过HASH搬移二进制值的存储位置来降 低HASH冲突的概率。HASH搬移的过程涉及到哈希算法,哈希算法是将任意长度的二进制值 key映射为固定长度的较小二进制值,这个较小的二进制值称为哈希值index。哈希函数也 就是把任意长度的二进制值key映射为哈希值index的一个函数,设为func。本实施例以将RAM分成两块存储块为例来说明HASH搬移的过程。如图2所示,在 采用HASH算法进行搬移时,首先将RAM平均分成两块存储块,一块称之为左桶,另一块称之 为右桶。左桶和右桶都具有一定的桶深,该桶深表示桶里可以放置的哈希值index相同的 二进制值key的数量。而左右桶的主要区别是它们使用的哈希函数不一样。左桶使用的哈 希函数设为函数funcl,右桶使用的哈希函数设为函数func2。如图1所示,左桶和右桶分别包括8个桶,分别表示为第一左桶1,第二左桶 2....,第七右桶7',第八右桶8',每个桶的桶深为2,表示每一个桶可存放两个哈希值 index相同的二进制值key,且存储位置分别为第一存储位置和第二存储位置。当要存放一 个二进制值key时,先下入到左桶,即用indexl = funcl (key),计算得到哈希值indexl, 然后判断哈希值indexl所在的两条二进制值key的存储位置是否为空,只要有一个为空, 就可以把二进制值key下到相应的位置。如果两条存储位置都不为空,则下到右桶,即用 index2 = func2 (key),计算得到哈希值index2,然后判断哈希值index2所在的两条二进制 值key的存储位置是否为空,只要有一个为空,就可以把key存放到相应的位置。以图2中各个key的存储位置为例来说,对于二进制值keyl,先使用哈希函数 indexl = funcl (keyl),计算得到哈希值indexl为5,即哈希值indexl的存本文档来自技高网...

【技术保护点】
一种通过软件搬移降低HASH冲突的方法,其特征在于:在将任意长度的二进制值(key)存入RAM中时,首先将RAM分成至少两个存储块,每个存储块采用不同的哈希函数将所述二进制值映射至其中不同的存储位置;所述二进制值包括某一待存储的第一二进制值和已存储的第二二进制值,当所述待存储的第一二进制值在所有存储块中相应的存储位置都已被已存储的第二二进制值占用时,则将其中一个存储块中的已存储的第二二进制值搬移至其他存储块中对应的为空的存储位置进行存储,进而使得第一二进制值能够存储在搬移出第二二进制值的存储位置。

【技术特征摘要】
1.一种通过软件搬移降低HASH冲突的方法,其特征在于:在将任意长度的二进制值 (key)存入RAM中时,首先将RAM分成至少两个存储块,每个存储块采用不同的哈希函数将所述二进制值映射至其中不同的存储位置;所述二进制值包括某一待存储的第一二进制值和已存储的第二二进制值,当所述待存储的第一二进制值在所有存储块中相应的存储位置都已被已存储的第二二进制值占用时,则将其中一个存储块中的已存储的第二二进制值搬移至其他存储块中对应的为空的存储位置进行存储,进而使得第一二进制值能够存储在搬移出第二二进制值的存储位置。2.根据权利要求1所述的通过软件搬移降低HASH冲突的方法,其特征在于:所述将第二二进制值搬移至其他存储块中对应的为空的存储位置进行存储包括以下步骤:SI,定义第二二进制值在原存储块中的存储位置为第一存储位置,在另一存储块中的存储位置为第二存储位置,将第二二进制值从其原存储位置中取出,通过所述对应的哈希函数映射后,查找到所述第二存储位置,判断第二存储位置为空时,则将第二二进制值存入所述第二存储位置;S2,删除所述第一存储位置上的第二二进制值,使第一存储位置为空;S3,将所述第一二进制值存入所述第一存储位置。3.根据权利要求2所述的通过软件搬移降低HASH冲突的方法,其特征在于:所述SI 中,当查找到的第二存储位置为非空时,则继续在其他存储块中进行查找,并在找到为空的存储位置时将所述第二二进制值存入。4.根据权利要求3所述的通过...

【专利技术属性】
技术研发人员:周志洪何志川赵茂聪徐志欣
申请(专利权)人:盛科网络苏州有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1