一种实现数据存储的方法及装置与流程

文档序号:17473422发布日期:2019-04-20 05:58阅读:175来源:国知局
一种实现数据存储的方法及装置与流程

本文涉及但不限于存储技术,尤指一种实现数据存储的方法及装置。



背景技术:

对于较大量的数据,如果要求快速存储和查找,相关技术一般是将数据存储在硬件的某块地址空间中,并采用哈希(hash)算法来存储和查找,以下简称哈希数据存储;例如,交换芯片中的消息认证码(mac)表。

hash数据存储最大的问题是如何解决冲突率和提高硬件资源的利用率,冲突率降低时,硬件的地址空间利用率得到提高。目前,hash数据存储一般通过输入关键字(key)进行hash运算,获得硬件地址,根据获得的地址进行数据插入,实现数据存储;其中,hash算法包括循环冗余校验(crc)运算。

上述hash数据存储存在填充率不高的缺点,影响存储资源的应用效率。



技术实现要素:

以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。

本发明实施例提供一种实现数据存储的方法及装置,能够提升数据存储的填充率,提高硬件资源的使用效率。

本发明实施例提供了一种实现数据存储的方法,包括:

配置哈希算法的运算参数,以获得用于数据存储的离散地址;

根据获得的离散地址进行数据存储。

可选的,所述配置哈希算法的运算参数包括:

配置所述哈希算法的输入参数;和/或,

配置对所述哈希算法的运算输出进行修正的修正参数。

可选的,所述配置哈希算法的运算参数包括:

为相邻的地址块blk配置不同的两个或两个以上多项式,以在在前blk插入冲突时,采用不同的多项式进行在后的blk的插入。

可选的,所述配置哈希算法的运算参数包括:

配置哈希因子,通过配置的哈希因子选取不同位段的所述哈希算法的运算输出,以在在前单元cell条目插入冲突时,在后的cell采用区别于在前位段的哈希算法的运算输出进行条目插入。

可选的,所述配置哈希算法的运算参数包括:

增加关键字key因子;

其中,key因子包括:位置、值、长度;

其中,长度为取值的位宽,位置为在key中开始插入key因子的值的位置。

可选的,所述key因子的长度小于或等于芯片blk条目的位宽与key的长度的差。

另一方面,本发明实施例还提供一种实现数据存储的装置,包括:配置单元和存储单元;其中,

配置单元用于:配置哈希算法的运算参数,以获得用于数据存储的离散地址;

存储单元用于:根据获得的离散地址进行数据存储。

可选的,所述配置单元具体用于:

配置所述哈希算法的输入参数;和/或,

配置对所述哈希算法的运算输出进行修正的修正参数。

可选的,所述配置单元具体用于:为相邻的blk配置不同的两个或两个以上多项式,以在在前blk插入冲突时,采用不同的多项式进行在后的blk的插入。

可选的,所述配置单元具体用于:配置哈希因子,通过配置的哈希因子选取不同位段的所述哈希算法的运算输出,以在在前cell条目插入冲突时,在后的cell采用区别于在前位段的哈希算法的运算输出进行条目插入。

可选的,所述配置单元具体用于:增加key因子;

其中,key因子包括:位置、值、长度;

其中,长度为取值的位宽,位置为在key中开始插入key因子的值的位置。

可选的,所述key因子的长度小于或等于芯片blk条目的位宽与key的长度的差。

再一方面,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述数据存储的方法。

一种终端,包括:存储器和处理器;其中,

处理器被配置为执行存储器中的程序指令;

程序指令在处理器读取执行以下操作:

配置哈希算法的运算参数,以获得用于数据存储的离散地址;

根据获得的离散地址进行数据存储。

与相关技术相比,本申请技术方案包括:配置哈希算法的运算参数,以获得用于数据存储的离散地址;根据获得的离散地址进行数据存储。本发明实施例提升了数据存储的填充率,提高了硬件资源的使用效率。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例实现数据存储的方法的流程图;

图2为本发明实施例实现数据存储的装置的结构框图;

图3为本发明应用实施例地址空间的组成示意图;

图4为本发明应用示例的方法流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

对hash数据存储存在填充率不高的缺点,本申请发明人分析发现,相关技术中的哈希运算存储以下问题;1、连续两个地址块的hash多项式设置的相同,连续的地址块采用相同的哈希多项式设置,导致了哈希算法解决冲突能力降低,造成hash算法运算出的地址在整个地址空间不够均匀散列。2、通过hash算法运算选择的地址是指定位段的地址,导致地址空间可能不够均匀散列;3、采用hash算法运算时,样本集变化可能导致不同的样本集有不同的填充率,出现部分样本集的填充率较低的问题。

图1为本发明实施例实现数据存储的方法的流程图,如图1所示,包括:

步骤100、配置哈希算法的运算参数,以获得用于数据存储的离散地址;

可选的,本发明实施例配置哈希算法的运算参数包括:

配置所述哈希算法的输入参数;和/或,

配置对所述哈希算法的运算输出进行修正的修正参数。

可选的,本发明实施例配置哈希算法的运算参数包括:

为相邻的地址块(blk)配置不同的两个或两个以上多项式,以在在前blk插入冲突时,采用不同的多项式进行在后的blk的插入。

可选的,本发明实施例配置哈希算法的运算参数包括:

配置哈希因子,通过配置的哈希因子选取不同位段的所述哈希算法的运算输出,以在在前单元(cell)条目插入冲突时,在后的cell采用区别于在前位段的哈希算法的运算输出进行条目插入。

可选的,本发明实施例配置哈希算法的运算参数包括:

增加关键字(key)因子,以在样本集变化导致冲突时,根据key及增加的所述key因子进行所述哈希算法的运算。

需要说明的是,key因子包括:位置、值、长度等信息,本发明实施例将key因子与key拼接出最终运算的key;其中,长度指的是取值的多少位宽,位置是指在key的什么位置开始插入key因子的值;利用多项式和最终运算的key可以计算出相应的hash的值。可选的,本发明实施例key因子的长度小于或等于芯片blk条目的位宽与key的长度的差。

步骤101、根据获得的离散地址进行数据存储。

需要说明的是,根据地址进行数据存储为相关技术中的惯用技术手段,在此不做赘述。

与现有技术相比,本申请技术方案包括:配置哈希算法的运算参数,以获得用于数据存储的离散地址;根据获得的离散地址进行数据存储。本发明实施例提升了数据存储的填充率,提高了硬件资源的使用效率。

图2为本发明实施例实现数据存储的装置的结构框图,如图2所示,包括:配置单元和存储单元;其中,

配置单元用于:配置哈希算法的运算参数,以获得用于数据存储的离散地址;

可选的,本发明实施例配置单元具体用于:配置所述哈希算法的输入参数;和/或,

配置对所述哈希算法的运算输出进行修正的修正参数。

可选的,本发明实施例配置单元具体用于:为相邻的blk配置不同的两个或两个以上多项式,以在在前blk插入冲突时,采用不同的多项式进行在后的blk的插入。

可选的,本发明实施例配置单元具体用于:配置哈希因子,通过配置的哈希因子选取不同位段的所述哈希算法的运算输出,以在在前cell条目插入冲突时,在后的cell采用区别于在前位段的哈希算法的运算输出进行条目插入。

可选的,本发明实施例配置单元具体用于:增加key因子;

其中,key因子包括:位置、值、长度;

其中,长度为取值的位宽,位置为在key中开始插入key因子的值的位置。

这里,本发明实施例可以在样本集变化导致冲突时,根据key及增加的key因子进行哈希算法的运算。

可选的,本发明实施例key因子的长度小于或等于芯片blk条目的位宽与key的长度的差。

存储单元用于:根据获得的离散地址进行数据存储。

本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行上述实现数据存储的方法。

本发明实施例还提供一种终端,包括:存储器和处理器;其中,

处理器被配置为执行存储器中的程序指令;

程序指令在处理器读取执行以下操作:

配置哈希算法的运算参数,以获得用于数据存储的离散地址;

根据获得的离散地址进行数据存储。

以下通过应用示例对本发明实施例进行清楚详细的说明,应用示例仅用于陈述本发明,并不用于限定本发明的保护范围。

应用示例

本应用示例,可以为每个地址块(以下简称blk)灵活的分配多项式,即将多项式配置到硬件对应的blk中;图3为本发明应用实施例地址空间的组成示意图,如图3所示,地址空间由一个或一个以上地址块构成。本应用示例多项式的选取可以包括通过仿真得出6个最优值,范围可以包括:0x1021到0xab47。

本应用示例可以在初始化时给两两相邻的blk分配不同的多项式,两两相邻的blk分配不同的多项式可以提高填充率的原因如下:假设数据存储时,第一个blk插入不进去,插入第二个blk时,如果多项式一样,那么他们插入的地址也是一样的,这样会导致只要在第一个blk插入冲突时,插入必然也会在第二个冲突;而设置第二个多项式不同,则第一个blk冲突的时候,第二个blk由于多项式不同,则可能避免冲突。冲突避免后,填充率自然提高。

本应用示例可以分配一个hash因子用于选取hash算法的运算输出的不同位段;hash因子的范围可以是0到6,因为当前hash算法是crc16,运算出来的结果是16比特(bit),hash因子的作用是从这16bit中选取10bit作为插入数据的地址。hash因子的配置能够提高填充率的原因也类似,本质上是使hash算法的运算输出更加散列,提高解决冲突的能力。其原理是:第一个cell插不进去的时候,因为有hash因子,第二个cell选取的位段跟第一个cell不同,插入结果更加散列,后续的条目如果在第一个cell冲突,在第二个还是有可能插入进去的。

当样本集变化导致冲突无法解决时,本发明实施例通过增加一个key因子,通过增加的key因子与key一起通过hash运算出hash值。key因子的值和长度以及与key结合运算的位置可以由初始化的时候设定,key因子根据芯片blk条目位宽的不同而不同,当条目位宽是160bit,key因子的长度不能超过160减去key的长度,key因子的值可以任意值。通过key因子能够提高填充率是因为多项式是固定的几个,多项式对不同的样本集的影响不同,有的样本集填充率高,有的样本集填充率低,通过灵活的key因子可以适配不同的样本集,也就是改变了样本集,从而适配这几个固定的多项式。

图4为本发明应用示例的方法流程图,如图4所示,

步骤400、为每个blk配置多项式、hash因子和key因子,并将配置的信息写入到硬件对应的blk寄存器中;其中,多项式可以是crc多项式,key因子包含长度、位置、值等信息;hash因子本质是一个数值,用于选取hash算法的运算输出的不同位段作为最终插入地址。key因子本质是参与hash运算key的一部分,结合key组合出最终的hash运算key,其位置、长度都可以通过程序进行灵活控制;

步骤401、依次遍历所有的blk;按顺序从第1个blk开始进行尝试插入到最后一个blk结束;

步骤402、用当前blk的多项式和key因子进行哈希算法的运算;包括:根据key因子的位置、值、长度,将key因子与key拼接出最终运算的key;其中,长度指的是取值的多少位宽,位置是指在最终key的什么位置开始插入key因子的值;利用多项式和最终运算的key计算出hash的值;

步骤403、结合哈希因子取运算输出的有效位段作为blk内部易挥发性随机存取存储器(ram)范围地址,并判断对应的冲突链是否已满;

需要说明的是,从计算出的hash值的hash因子的位置可以取有效位段作为最终的hash值;这个hash值是最终插入ram的地址。判断此地址空间是否可以继续插入条目,如果已经无法插入表示此地址空间的冲突链已满;

冲突链已满,对在后的一个blk,执行步骤402;冲突链未满,执行步骤404;

步骤404、插入条目;冲突链未满是指:还有剩余空间可以继续插入;,则插入条目;

本发明实施例如果到最后一个blk仍然没有插入成功,则认为插入失败,结束此次插入操作。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的每个模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明不限制于任何特定形式的硬件和软件的结合。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1