首页> 中国专利> 一种解决地址空间映射哈希地址冲突的方法及装置

一种解决地址空间映射哈希地址冲突的方法及装置

摘要

本发明披露了一种解决地址空间映射哈希地址冲突的方法及装置,该方法包括步骤:根据交叉矩阵配置将索引地址交叉变换成重组地址,并对重组地址进行哈希计算得出哈希地址;该交叉矩阵配置是根据索引地址到重组地址的映射规则所确认的具有高硬件资源利用率的交叉矩阵配置。本发明通过在传统的哈希计算流程中增添交叉矩阵环节,在不同的应用场景中,通过软件分析采用何种数据重组方式可以使哈希表项的资源利用率最高,并根据分析结果合理配置交叉矩阵,达到哈希地址碰撞大幅减少以充分利用硬件资源的目的。

著录项

  • 公开/公告号CN101655821A

    专利类型发明专利

  • 公开/公告日2010-02-24

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200910161571.2

  • 发明设计人 徐健;王兆丰;

    申请日2009-08-04

  • 分类号G06F12/10(20060101);G06F9/50(20060101);H04L29/12(20060101);

  • 代理机构11262 北京安信方达知识产权代理有限公司;

  • 代理人龙洪;霍育栋

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部

  • 入库时间 2023-12-17 23:31:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-11

    未缴年费专利权终止 IPC(主分类):G06F12/10 专利号:ZL2009101615712 申请日:20090804 授权公告日:20111228

    专利权的终止

  • 2019-07-12

    专利实施许可合同备案的生效 IPC(主分类):G06F12/10 合同备案号:2019440020036 让与人:深圳市中兴微电子技术有限公司 受让人:西安克瑞斯半导体技术有限公司 发明名称:一种解决地址空间映射哈希地址冲突的方法及装置 申请公布日:20100224 授权公告日:20111228 许可种类:普通许可 备案日期:20190619 申请日:20090804

    专利实施许可合同备案的生效、变更及注销

  • 2013-12-25

    专利权的转移 IPC(主分类):G06F12/10 变更前: 变更后: 登记生效日:20131206 申请日:20090804

    专利申请权、专利权的转移

  • 2011-12-28

    授权

    授权

  • 2010-04-28

    实质审查的生效 IPC(主分类):G06F12/10 申请日:20090804

    实质审查的生效

  • 2010-02-24

    公开

    公开

查看全部

说明书

技术领域

本发明涉及数字集成电路(IC,Integrated Circuit)设计中的地址空间转换技术,尤其涉及地址空间映射过程中解决哈希冲突的方法及装置。

背景技术

哈希算法是一种多对一的压缩映射算法,它将高维空间的向量映射到低维空间上。在IC硬件设计中通常使用哈希算法来实现地址空间转换,将高维地址空间映射到低维地址空间上,从而能够快速寻址,并能够节约硬件存储资源。因为其高维地址空间在实际应用中是一个稀疏空间,大部分地址是不被使用的。但是,多对一的压缩映射很容易导致几个高维空间的地址被压缩到一个低位空间地址上,从而引起地址空间冲突,导致数据无法被正常存储或访问。

传统的哈希算法通常采用链表的形式来解决哈希地址冲突的问题。理论上,采用链表技术可以处理所有的冲突项。但是,由于哈希查找次数取决于链表的长度,链表的长度越长,哈希查找次数就越多,从而导致哈希查找时间越长;因此这种技术的缺陷在于,其最坏情况的哈希查找时间不确定。实际上,硬件设计受限于存储器资源和处理时间的要求,链表的长度必须受到限制,才能保证哈希查找时间确定。因此,一般情况下应将链表的表项(即哈希冲突项)控制在4个以下。这种控制哈希冲突项的做法,其优点在于,其最坏情况的哈希查找时间确定,即最多仅需查找4次;其缺点在于,哈希表项的资源利用率不高,一般在60%左右,甚至更低。这里所说的哈希表项资源利用率,等于(实际使用的高维空间向量数目-冲突数目)/实际使用的高维空间向量数目,其中,冲突数目是指由于冲突未映射成功的高维向量总数目。实际使用的高维空间向量数目应小于等于哈希表项总数(即等于低维地址空间总数×哈希冲突项)。为了评判标准统一,可以选用高维空间向量数目等于哈希表项总数。

改进的哈希算法采用多个哈希函数(哈希多项式)的技术,使得哈希函数计算出的地址离散程度更高;这种技术的优点在于,在传统哈希算法的基础上提高了哈希表项的资源利用率(即减少了冲突的哈希地址),而其缺点在于,增加了硬件设计的复杂度,硬件资源的开销较大。实质上,它是以增加哈希算法的哈希冲突项为代价,来提高哈希表项的资源利用率。

综上所述,现有的解决地址空间映射哈希地址冲突的方法,要么其哈希地址冲突解决的效果不够好,亦即哈希表项的资源利用率不高;要么以增加了硬件设计的复杂度及硬件资源的开销来提高哈希地址冲突解决的效果;因此均有待进一步改进。

发明内容

本发明所要解决的技术问题是提供一种解决地址空间映射哈希地址冲突的方法及装置,能够以较低的硬件复杂度及资源开销为代价来提高哈希表项的资源利用率。

为了解决上述技术问题,本发明提供了一种解决地址空间映射哈希地址冲突的方法,包括:

根据交叉矩阵配置将索引地址交叉变换成重组地址,并对重组地址进行哈希计算得出哈希地址;该交叉矩阵配置是根据索引地址到重组地址的映射规则所确认的具有高硬件资源利用率的交叉矩阵配置。

进一步地,该交叉矩阵配置的确认具体包括:

根据用户应用场景确定索引地址的取值范围;

逐一地改变索引地址到重组地址的映射规则,将索引地址交叉变换成重组地址,针对该重组地址计算出哈希地址,并计算出该交叉矩阵配置下的硬件资源利用率;

找出所有计算的硬件资源利用率中具有高硬件资源利用率所对应的交叉矩阵配置。

进一步地,该交叉矩阵配置的确认通过软件仿真方式实现,即该交叉矩阵配置是根据所有的索引地址到重组地址的映射规则所确认的具有最高硬件资源利用率的交叉矩阵配置。

进一步地,用户应用场景指的是高维空间向量的所有可能值,高维空间向量即索引地址,该索引地址由多个划分块组成,该划分块的划分模式为比特划分或为字节划分或为多字节划分。

进一步地,硬件资源利用率按如下公式计算:

硬件资源利用率=(实际使用的高维空间向量的数目-冲突数目)/实际使用的高维空间向量的数目,该冲突数目是指由于冲突未映射成功的高维向量总数目。

为了解决上述技术问题,本发明提供了一种解决地址空间映射哈希地址冲突的装置,包括依次连接的交叉矩阵配置模块、交叉矩阵处理模块以及哈希计算模块,其中:

交叉矩阵配置模块,用于存储本装置下载的交叉矩阵配置,该交叉矩阵配置是根据索引地址到重组地址的映射规则所确认的具有高硬件资源利用率的交叉矩阵配置;

交叉矩阵处理模块,用于根据交叉矩阵配置模块中的交叉矩阵配置,将索引地址交叉变换到重组地址;

哈希计算模块,用于对交叉矩阵处理模块输出的重组地址计算输出哈希地址,以供应用程序进行数据寻访。

进一步地,

该交叉矩阵配置的确认通过软件仿真方式实现,即采用与交叉矩阵配置模块、交叉矩阵处理模块以及哈希计算模块功能相同的模拟软件模块,根据用户应用场景确定索引地址的取值范围,逐一地改变索引地址到重组地址的映射规则,将索引地址交叉变换成重组地址,针对该重组地址计算出哈希地址,并计算出该交叉矩阵配置下的硬件资源利用率;最后找出所有计算的硬件资源利用率中具有最高硬件资源利用率所对应的交叉矩阵配置,即作为交叉矩阵配置下载到交叉矩阵配置模块。

进一步地,用户应用场景指的是交叉矩阵处理模块输入端的高维空间向量的所有可能值,高维空间向量即索引地址,该索引地址由多个划分块组成,该划分块的划分模式为比特划分或为字节划分或为多字节划分。

本发明通过在传统哈希计算的流程中增添交叉矩阵环节,在不同的应用场景中,通过软件分析采用何种数据重组方式可以使哈希表项的资源利用率最高,并根据分析结果合理配置交叉矩阵,达到哈希地址碰撞大幅减少以充分利用硬件资源的目的。

附图说明

图1是本发明的解决地址空间映射哈希地址冲突的装置实施例的结构框图;

图2是图1所示的交叉矩阵处理模块采用交叉矩阵将索引地址变换为重组地址示意图;

图3是本发明的实施例中交叉矩阵的一种实施电路;

图4是本发明的实施例中交叉矩阵的另一种实施电路;

图5是本发明的方法实施例中找到硬件资源利用率最优的交叉矩阵配置的方法流程图;

图6是采用图5所示的方法获取最优的交叉矩阵配置将索引地址变换为哈希地址方法流程图;

具体实施方式

本发明提出的解决地址空间映射哈希地址冲突的方法及装置,其发明构思是,通过软、硬件协同配合的方式,针对用户确定的应用场景,通过软件仿真分析出硬件资源的利用率高的交叉矩阵配置,由该交叉矩阵配置使硬件哈希计算出的地址冲突最大限度地减少,从而提高硬件哈希表项的资源利用率。

以下通过附图和优选实施例对本发明的技术方案进行详细地阐述。以下实施例仅仅用于说明和解释本发明,而不构成对本发明技术方案的限制。

如图1所示,是本发明的解决地址空间映射哈希地址冲突的装置实施例的结构,该装置100包括依次连接的交叉矩阵配置模块110、交叉矩阵处理模块120以及哈希计算模块130,其中:

交叉矩阵配置模块,用于存储索引地址到重组地址的映射规则;

索引地址可以采用以bit为颗粒度划分(图1是以bit为颗粒度),也可以采用以byte为颗粒度划分,或者采用以其它块(双字节、四字节等)为颗粒度的方式进行划分。划分的颗粒度越大,交叉矩阵的规模越小,即实现交叉矩阵的电路的规模越小。

交叉矩阵处理模块,用于根据交叉矩阵配置模块存储的映射规则将索引地址交叉变换一一映射到重组地址;

索引地址到重组地址的映射可用公式y=f(x)表示,其中,x对应索引地址,为一个n维向量,即x=[xn,xn-1,...,x2,x1];y对应重组地址,为一个n维向量,即y=[yn,yn-1,...,y2,y1];f为映射规则,该规则通过交叉矩阵来表征或描述,交叉矩阵在数学上是一个n×n的稀疏矩阵,每行、每列元素有且只有一个为1,其它均为0。如图2所示的一个5×5的交叉矩阵实例,实现了将索引地址到重组地址的交叉映射:0-2,1-4,2-1,3-3,4-0。

由于交叉矩阵是一个稀疏矩阵(每行、每列元素只有一个为1,其它均为0),因此在具体表征时,可以用一个1×n的向量来简化表征。在装置中,交叉矩阵配置模块完成了f映射规则的电路描述,交叉矩阵处理模块完成y=f(x)这一映射过程。

映射过程展开后,为yj=xi,其中i=1,2,...,n-1,n;j=1,2,...,n-1,n。有n个等式。

根据交叉矩阵的规模(n)可以采用组合电路或时序电路完成。一般而言交叉矩阵的规模较小可以采用组合电路实现,规模大时可以采用时序电路实现。图3和图4分别给出了由硬件实现的交叉矩阵的基本电路图。

哈希计算模块,用于对交叉矩阵处理模块输出重组地址,计算出哈希地址。

可以设计采用并行的方式来计算出哈希地址,以提高处理效率。哈希计算模块采用传统的哈希算法进行哈希计算,一般设置1~4个哈希冲突项。

本发明在上述装置实施例基础上,提出解决地址空间映射哈希地址冲突的方法实施例,包括以下步骤:

(1)根据分析用户应用场景确定索引地址的取值范围;

这里分析用户应用场景指的是:在实际使用上述装置前分析出其输入端的高维空间向量所有可能值。该高维空间向量即索引地址,可以由多个划分块组成,该划分块的划分模式为比特划分或为字节划分或为多字节划分。

(2)根据索引地址到重组地址的映射规则,找到哈希表项资源利用率高的交叉矩阵配置;

可通过软件仿真的方式找到最优的交叉矩阵配置,即采用和上述装置中交叉矩阵配置模块、交叉矩阵处理模块以及哈希计算模块功能相同的模拟软件模块,针对输入的索引地址而改变索引地址到重组地址的映射规则,即改变交叉矩阵的配置,获取到相应的重组地址以及哈希地址,并计算所有配置下硬件资源的利用率,从而找出其中硬件资源的利用率最高的交叉矩阵的配置作为最优解。

硬件(即哈希表项)资源的利用率按前面所述的公式计算:

哈希表项资源利用率=(实际使用的高维空间向量数目-冲突数目)/实际使用的高维空间向量数目。在此,冲突数目是指由于冲突未映射成功的高维向量总数目。

当然,除了采用软件仿真的方式找到硬件资源的利用率最高的交叉矩阵配置,也可以通过其它方式实现。譬如,采用硬件装置结合软件测试的方式,即针对上述装置实施例的交叉矩阵处理模块输入的索引地址,通过软件控制改变交叉矩阵配置模块输出的交叉矩阵的配置,从交叉矩阵处理模块的输出获取到相应的重组地址,并通过哈希计算模块计算输出哈希地址,并通过软件根据测试到的哈希地址计算所有配置下硬件资源的利用率,从中找出硬件资源的利用率最高的交叉矩阵配置。又譬如,采用对硬件装置进行人工调试的方式逐一针对输入的索引地址而改变交叉矩阵的配置,在一定的交叉矩阵配置范围内找到其中硬件资源的利用率最高的交叉矩阵配置,也是可行的。

(3)根据获取的交叉矩阵配置,将索引地址交叉变换成重组地址,并对该重组地址进行哈希计算得出哈希地址,根据计算出的哈希地址对数据进行寻访(写入数据和/或读取数据)。

将软件仿真找到的最优解的交叉矩阵下载到上述装置实施例的交叉矩阵配置模块中,作为映射规则存储;通过交叉矩阵处理模块采用存储在交叉矩阵配置模块中该最优解的交叉矩阵将索引地址交叉变换成重组地址,并通过哈希计算模块针对该重组地址计算出相应的哈希地址,供应用程序寻访。

如图5所示,即上述方法实施例中找到硬件资源利用率最优的交叉矩阵配置的方法流程图,该流程是在分析用户应用场景后进行的,包括如下步骤:

510:确定索引地址范围;

520~540:逐一改变交叉矩阵配置,针对由此获得的哈希地址计算出所有配置下硬件资源利用率;

550:从计算结果中选出硬件资源利用率最优的交叉矩阵配置,结束流程。

如图6所示即上述上述方法实施例中采用硬件方式进行地址映射的流程图,包括如下步骤:

610:根据分析的用户应用场景,下载硬件资源利用率最优的交叉矩阵配置;

620~630:按照配置将索引地址通过交叉矩阵交叉为重组地址,对重组地址进行哈希计算,以获取哈希地址;

640:输出该哈希地址供寻访数据用。

实例一

对于一种应用场景,在现有的哈希计算硬件电路固定的情况下,其资源利用率较低,通过本发明引入交叉矩阵环节,大幅提高了资源利用率。

例如索引地址的划分是按:由{A,B,C,D,E}5个字段(各字段均为一个2字节的数据)组成的索引空间,即总共80比特的索引地址,对其进行哈希运算压缩到4K个地址空间,即12比特的压缩地址。

用户应用场景中,只有A字段的值不为零,其它4个字段的值都为零,且A字段的取值可预测,取1000到5095之间的4096个数值,选择标准多项式CRC-16算法的生成多项式作为哈希函数,截取低12比特作为哈希表的索引地址。

如果对{A,0,0,0,0}共80比特的数据进行哈希运算,得到12比特的压缩地址,结果其哈希表的利用率只有37%。

通过本发明的上述方法实施例中的软件仿真,对{A,B,C,D,E}5个字段的顺序进行排列组合,分别进行哈希计算,并统计哈希表的资源利用率,结果发现有几种排列方式可以使上述场景的哈希表利用率达到99%,其中有一种是{E,D,C,B,A}的排列方式。

将上述高哈希表利用率的交叉矩阵配置到硬件装置上,使得索引地址{A,B,C,D,E}通过该交叉矩阵的变换后生成重组地址{E,D,C,B,A}。

本实例在进行排列组合时是以1个字段(2字节)为最小单位的,在本发明中并不比局限于此,可以采用1个字节或者1个比特为单位进行组合,主要的考虑因素是软件仿真的时间以及硬件交叉矩阵的资源占用,二者综合考虑,选择合理的排列组合单位。

实例二

对于两种应用场景,在现有的哈希计算硬件电路固定的情况下,其资源利用率较低,通过本发明引入交叉矩阵环节,大幅提高了资源利用率。

例如索引地址的划分是按:{A,B,C,D,E}5个字段(各字段均为一个2字节的数据)组成的索引空间,即总共80比特的索引地址,对其进行哈希运算压缩到4K个地址空间,即12比特的压缩地址。

有如下两个应用场景,该应用场景是可预测的:

A的取值范围为1000到2023;B有4个取值,其中有两个取值范围为0到7,另外两个取值分别为0x8863,0x888E,这样A,B组合起来就有4096个情况;C、D、E字段取值为0。

选择CRC-16算法的生成多项式作为哈希函数,截取低12比特作为哈希表的索引地址。

如果对{A,B,0,0,0}共80比特的数据进行哈希运算,得到12比特的压缩地址,结果是哈希表的利用率只有61%。

通过本发明的上述方法实施例中的软件仿真,对{A,B,C,D,E}5个字段的顺序进行排列组合,分别进行哈希计算,统计哈希表的资源利用率,结果发现有几种排列方式可以使上述场景的哈希表利用率达到75%,其中一种是{D,A,E,B,C}的排列方式。

将上述较高哈希表利用率的交叉矩阵配置到硬件装置上,使得索引地址{A,B,C,D,E}通过该交叉矩阵的变换后生成重组地址{D,A,E,B,C}。

上述两个实例说明,在固定哈希表资源的前提下,其资源的利用率和应用场景相关,但通过对哈希计算的输入进行适当变形,可以有效提高资源利用率。这实际上是由哈希多项式计算的特性决定的,变化的数据位映射到特定的bit位上,可以使哈希计算结果的离散度最大(或者说哈希碰撞最小)。

本发明与现有技术相比具有如下特点:

通过软硬件协同方式,提供了n!的模式(n为交叉矩阵的规模),在这些模式中选择最优模式,配置交叉矩阵,达到哈希硬件资源的最大利用。

通过增加交叉矩阵,以较低的成本和硬件资源占用获得了较高的哈希表资源利用率(最高可达100%),由此解决了业界哈希访问资源利用率较低的瓶颈。

可配置的交叉矩阵,带来一套硬件设计可以支持多种应用场景优势。

本发明通过在传统哈希计算的流程中增添交叉矩阵环节,在不同的应用场景中,通过软件分析何种地址数据重组方式可以使哈希表项的资源利用率最高来合理配置交叉矩阵,从而达到哈希地址碰撞大幅度减少的目的。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号