CN103258035A - 数据处理的方法和装置 - Google Patents

数据处理的方法和装置 Download PDF

Info

Publication number
CN103258035A
CN103258035A CN2013101789000A CN201310178900A CN103258035A CN 103258035 A CN103258035 A CN 103258035A CN 2013101789000 A CN2013101789000 A CN 2013101789000A CN 201310178900 A CN201310178900 A CN 201310178900A CN 103258035 A CN103258035 A CN 103258035A
Authority
CN
China
Prior art keywords
byte
buz
hash table
hash
look
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2013101789000A
Other languages
English (en)
Other versions
CN103258035B (zh
Inventor
陈清付
刘涛
梁振宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310178900.0A priority Critical patent/CN103258035B/zh
Publication of CN103258035A publication Critical patent/CN103258035A/zh
Application granted granted Critical
Publication of CN103258035B publication Critical patent/CN103258035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据处理的方法和装置。该方法包括:获取关键字的N个字节,N为整数且N≥2;根据该N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;根据该N个查表结果确定该N个字节的哈希结果。本发明实施例的数据处理的方法和装置,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。

Description

数据处理的方法和装置
技术领域
本发明涉及信息技术领域,并且更具体地,涉及数据处理的方法和装置。
背景技术
哈希(Hash)算法以其均匀散列、快速收缩、不可逆等特性,在海量用户管理和信息安全等相关领域被广泛应用。
在硬件加速实现的Hash计算中以布兹(Robert Uzgalis,Buz)/BKDR(Brian Kernighan and Dennis Ritchie)算法最为常见,实现时常规做法是通过以特征字的线性查表后,经过特征字的字节长度次迭代移位模2加法计算后获得均匀的Hash散列值,因此其计算速度取决于查表效率和待计算的特征字长度,一般匹配速度慢,不能很好满足高速网络中对大量流进行匹配的需要。
Buz hash只需要移位及异或操作,适合于硬件实现,在业内广泛应用于硬件hash计算。然而,现有的Buz hash算法只能串行查找,在输入的关键字比较长,且对性能要求比较高的地方,不能够满足需求。
发明内容
本发明实施例提供了一种数据处理的方法和装置,能够提升系统性能。
第一方面,提供了一种数据处理的方法,包括:获取关键字的N个字节,N为整数且N≥2;根据该N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;根据该N个查表结果确定该N个字节的哈希结果。
在第一种可能的实现方式中,
Figure BDA00003191163400011
该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buz hash table,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn
Figure BDA00003191163400021
n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。
在第二种可能的实现方式中,J=N,该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buz hash table,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。
结合第一方面或第一方面的第一或二种可能的实现方式,在第三种可能的实现方式中,在根据该N个字节查J张布兹哈希表Buz hash table之前,该方法还包括:获取预配置的该J张Buz hash table。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,在根据该N个字节查J张布兹哈希表Buz hash table之前,该方法还包括:获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
结合第一方面的第二种可能的实现方式,在第五种可能的实现方式中,在根据该N个字节查J张布兹哈希表Buz hash table之前,该方法还包括:获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
结合第一方面的第一或四种可能的实现方式,在第六种可能的实现方式中,该J张Buz hash table保存在查找表(look up table,LUT),或者现场可编程逻辑(Field Programmable Gate Array,FPGA)的随机访问存储器(Random Access Memory,RAM)或只读存储器(Read Only Memory,ROM)中。
第二方面,提供了一种数据处理的装置,包括:第一获取模块,用于获取关键字的N个字节,N为整数且N≥2;查表模块,用于根据该N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;处理模块,用于根据该N个查表结果确定该N个字节的哈希结果。
在第一种可能的实现方式中,
Figure BDA00003191163400031
该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;该查表模块具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn
Figure BDA00003191163400032
n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};该处理模块具体用于,将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。
在第二种可能的实现方式中,J=N,该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;该查表模块具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};该处理模块具体用于,对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。
结合第二方面或第二方面的第一或二种可能的实现方式,在第三种可能的实现方式中,该装置还包括:第二获取模块,用于在该查表模块根据该N个字节查J张布兹哈希表Buz hash table之前,获取预配置的该J张Buz hashtable。
结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,该装置还包括:第三获取模块,用于在该查表模块根据该N个字节查J张布兹哈希表Buz hash table之前,获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
结合第二方面的第二种可能的实现方式,在第五种可能的实现方式中,该装置还包括:第四获取模块,用于在该查表模块根据该N个字节查J张布兹哈希表Buz hash table之前,获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
结合第二方面的第一或四种可能的实现方式,在第六种可能的实现方式中,该J张Buz hash table保存在LUT,或者FPGA的RAM或ROM中。
基于上述技术方案,本发明实施例的数据处理的方法和装置,通过取关键字的N个字节同时查J张循环移位的Buz hash table并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明一个实施例的数据处理的方法的示意性流程图。
图2是根据本发明另一实施例的数据处理的方法的示意性流程图。
图3是根据本发明又一实施例的数据处理的方法的示意性流程图。
图4是根据本发明又一实施例的数据处理的方法的示意图。
图5是根据本发明又一实施例的数据处理的方法的示意图。
图6是根据本发明一个实施例的数据处理的装置的示意性框图。
图7是根据本发明又一实施例的数据处理的装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
图1示出了根据本发明实施例的数据处理的方法100的示意性流程图。该方法100由数据处理的装置执行。如图1所示,该方法100包括:
S110,获取关键字的N个字节,N为整数且N≥2;
S120,根据该N个字节查J张Buz hash table,得到N个查表结果,2≤J≤N,该J张Buz hash table中,后一张Buz hash table相对前一张Buzhash table进行了循环移位;
S130,根据该N个查表结果确定该N个字节的哈希结果。
现有的Buz hash算法对于关键字的每个字节需要依次进行查表、循环移位和异或操作,计算效率较低。在本发明实施例中,为了提高效率,将串行操作转化为并行操作。数据处理的装置首先获取数据的关键字的N个字节,根据该N个字节查J张Buz hash table,得到N个查表结果。其中,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位,即每张表相对前一张表进行了循环移位。也就是说,取关键字的N个字节,同时查J张进行了循环移位的Buz hash table,对于每个字节得到一个查表结果,同时得到N个查表结果。然后,数据处理的装置根据该N个查表结果进行计算,对该N个查表结果进行异或处理,或者对该N个查表结果先移较少位再进行异或处理,得到该N个字节的哈希结果,以实现对数据的处理。由于J张Buz hash table已经进行了循环移位,这样,通过取关键字的N个字节同时进行查表和计算,可以提高查表和计算效率,从而能够提升系统性能。
因此,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查J张循环移位的Buz hash table并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
数据处理的装置获取关键字的N个字节以进行查表。可选地,N的值可以为关键字(key)的全部字节数,也可以小于key的全部字节数。例如,若key的字节数为N,则可以取这N个字节同时进行查表;或者,若key的字节数为M×N,则可依次取其中的N个字节同时进行查表。
在本发明实施例中,如图2所示,可选地,该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;
S120包括:
S121,对于该N个字节[k0,k1,...,kN-1]中的字节kn
Figure BDA00003191163400061
n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};
S130包括:
S131,将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};
S132,对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。
具体而言,在本实施例中,Buz hash table的张数
Figure BDA00003191163400063
表示向上取整。即Buz hash table的张数为同时查表的字节数的一半。例如,若N为10,则Buz hash table的张数为5,若N为9,则Buz hash table的张数也为5。这样,可以每两个字节查一张表。换句话说,每张表支持双输入双输出,因此,
Figure BDA00003191163400062
张Buz hash table可以使得N个字节同时查表。
该J张Buz hash table中,tablej相对tablej-1循环移2位,即每张表相对前一张表循环移2位。
在对N个字节[k0,k1,...,kN-1]查J张Buz hash table[table0,table1,...,tableJ-1]时,对于字节kn表示向下取整。也就是说,每两个字节查一张表。例如,字节k0,k1查table0,字节k2,k3查table1,字节k4,k5查table2,依次类推,一共得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。由于每张表已经相对前一张表循环移了2位,因此,查表后的结果为经过移位的,不需再进行移位或者仅需再移1位。
因此,数据处理的装置将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]}。由于J张Buz hash table中每张表相对前一张表循环移2位,每两个字节查一张表后,这两个字节中的第一个字节对应的查表结果不需要再移位,而这两个字节中的第二个字节对应的查表结果只需再移1位。数据处理的装置将N个查表结果{T[k0],T[k1],...,T[kN-1]}中下标为偶数的查表结果保持不变,下标为奇数的查表结果循环移1位,得到移位后的结果{RT[k0],RT[k1],...,RT[kN-1]}。
数据处理的装置再对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。也就是说,将RT[k0],RT[k1],...,RT[kN-1]全部异或得到哈希结果。由于{RT[k0],RT[k1],...,RT[kN-1]}为移位后的结果,因此,只需对其进行异或操作即可得到该N个字节的哈希结果。
若key的字节数为N,则可直接得到key对应的哈希结果;若key的字节数为M×N,则可依次将前N个字节对应的哈希结果循环移N位后与后N个字节对应的哈希结果进行异或得到key对应的哈希结果。
这样,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查
Figure BDA00003191163400071
张循环移位的Buz hash table并将查表结果相应地移1位或保持不变后再进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
在本发明实施例中,如图3所示,可选地,J=N,该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;
S120包括:
S126,对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};
S130包括:
S136,对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。
具体而言,在本实施例中,Buz hash table的张数J=N。即Buz hash table的张数等于同时查表的字节数。例如,若N为10,则Buz hash table的张数为10。这样,可以每个字节查一张表。换句话说,每张表单输入单输出时,N个字节同时查N张Buz hash table。
该J(即N)张Buz hash table中,tablej相对tablej-1循环移1位,即每张表相对前一张表循环移1位。
在对N个字节[k0,k1,...,kN-1]查J(即N)张Buz hashtable[table0,table1,...,tableJ-1]时,对于字节kn查tablen。也就是说,每个字节查一张表。字节k0查table0,字节k1查table1,字节k2查table2,依次类推,一共得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。由于N张Buz hash table中每张表已经相对前一张表循环移了1位,因此,N个查表结果为经过移位的,不需再进行移位。
因此,数据处理的装置直接对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。
若key的字节数为N,则可直接得到key对应的哈希结果;若key的字节数为M×N,则可依次将前N个字节对应的哈希结果循环移N位后与后N个字节对应的哈希结果进行异或得到key对应的哈希结果。
这样,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查N张循环移位的Buz hash table并将查表结果进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
应理解,Buz hash table的张数J还可以取其他数值,比如,在支持多输入多输出的情况下,Buz hash table的张数还可以减少,只要满足N个字节同时查表即可。例如,在J取
Figure BDA00003191163400081
时,每三个字节查一张表,在每张表对应的三个查表结果中,第一个结果不移位,第二个结果移1位,第三个结果移2位,然后再进行异或处理得到最终的哈希结果。
在本发明实施例中,可选地,用于查表的J张Buz hash table可以预先配置好,也可以只配置一张表,而由数据处理的装置通过循环移位得到其他的表。
在本发明实施例中,可选地,在S120之前,该方法100还包括:
获取预配置的该J张Buz hash table。
具体而言,在本实施例中,J张Buz hash table由用户预先配置好。也就是说,用户直接配置移位后的J张Buz hash table,数据处理的装置取关键字的N个字节同时查该J张Buz hash table以得到移位后的结果。
可选地,在即采用
Figure BDA00003191163400092
张Buz hash table时,在S120之前,该方法100还包括:
获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
具体而言,在本实施例中,用户只配置第一张Buz hash table,即原始的表。数据处理的装置通过循环移位得到其他的表。在
Figure BDA00003191163400093
即采用
Figure BDA00003191163400094
张Buz hash table时,数据处理的装置将tablej-1循环移2位作为tablej,即将前一张表循环移2位作为后一张表,这样得到其他J-1张表,从而得到J张移位后的Buz hash table。
可选地,在J=N,即采用N张Buz hash table时,在S120之前,该方法100还包括:
获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
具体而言,在本实施例中,用户只配置第一张Buz hash table,即原始的表。数据处理的装置通过循环移位得到其他的表。在J=N,即采用N张Buzhash table时,数据处理的装置将tablej-1循环移1位作为tablej,即将前一张表循环移1位作为后一张表,这样得到其他J-1张表,从而得到J张移位后的Buz hash table。
在本发明实施例中,可选地,在
Figure BDA00003191163400095
即采用
Figure BDA00003191163400096
张Buz hashtable时,该J张Buz hash table保存在LUT,或者FPGA的RAM或ROM中。
具体而言,在
Figure BDA00003191163400097
即采用
Figure BDA00003191163400098
张Buz hash table时,用于查表的J张Buz hash table可以保存在支持双输入与双输出的资源中,例如,LUT,或者FPGA的RAM或ROM,但本发明对此并不限定,Buz hash table也可以保存在其他支持双输入与双输出的资源中。
下面将结合具体的例子详细描述本发明实施例。应注意,这只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
假定key有N个字节[k0,k1,...,kN-1],如图4所示,在Buz hash table双输入时,需要
Figure BDA00003191163400102
张Buz hash table。该
Figure BDA00003191163400101
张Buz hash table中,每张表相对前一张表循环移2位。比如,table1相对table0循环移2位,那么table1里的256个表项都相对table0里的对应表项循环移2位。该
Figure BDA00003191163400103
张Buz hashtable可以由用户预配置好,也可以由数据处理的装置根据用户预配置的table0通过循环移位得到。
取该N个字节查该
Figure BDA00003191163400104
张Buz hash table。具体地,对于字节kn
Figure BDA00003191163400105
例如,字节k0,k1查table0,字节k2,k3查table1,字节k4,k5查table2,依次类推,得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。
将该N个查表结果{T[k0],T[k1],...,T[kN-1]}中下标为偶数的查表结果保持不变,下标为奇数的查表结果循环移1位,得到移位后的结果{RT[k0],RT[k1],...,RT[kN-1]}。也就是说,T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...;T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...。
将{RT[k0],RT[k1],...,RT[kN-1]}全部做异或得到最终的哈希结果。因为{RT[k0],RT[k1],...,RT[kN-1]}已经是移位的结果,因此直接将其异或得到的结果即为最终的哈希结果。
如图5所示,在Buz hash table单输入时,需要N张Buz hash table。该N张Buz hash table中,每张表相对前一张表循环移1位。比如,table1相对table0循环移1位,那么table1里的256个表项都相对table0里的对应表项循环移1位。该N张Buz hash table可以由用户预配置好,也可以由数据处理的装置根据用户预配置的table0通过循环移位得到。
取该N个字节查该N张Buz hash table。具体地,对于字节kn查tablen。即,字节k0查table0,字节k1查table1,字节k2查table2,依次类推,得到N个查表结果{T[k0],T[k1],...,T[kN-1]}。
将N个查表结果{T[k0],T[k1],...,T[kN-1]}全部做异或得到最终的哈希结果。因为N个查表结果{T[k0],T[k1],...,T[kN-1]}已经是移位的结果,因此直接将其异或得到的结果即为最终的哈希结果。
因此,本发明实施例的数据处理的方法,通过取关键字的N个字节同时查J张循环移位的Buz hash table并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
上文中结合图1至图5,详细描述了根据本发明实施例的数据处理的方法,下面将结合图6和图7,描述根据本发明实施例的数据处理的装置。
图6示出了根据本发明实施例的数据处理的装置600的示意性框图。如图6所示,该装置600包括:
第一获取模块610,用于获取关键字的N个字节,N为整数且N≥2;
查表模块620,用于根据该N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;
处理模块630,用于根据该N个查表结果确定该N个字节的哈希结果。
在本发明实施例中,为了提高效率,将串行操作转化为并行操作。数据处理的装置600的第一获取模块610获取数据的关键字的N个字节,查表模块620根据该N个字节查J张Buz hash table,得到N个查表结果。其中,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位,即每张表相对前一张表进行了循环移位。也就是说,取关键字的N个字节,同时查J张进行了循环移位的Buz hash table,对于每个字节得到一个查表结果,同时得到N个查表结果。处理模块630根据该N个查表结果进行计算,得到该N个字节的哈希结果,以实现对数据的处理。由于J张Buz hash table已经进行了循环移位,这样,通过取关键字的N个字节同时进行查表和计算,可以提高查表和计算效率,从而能够提升系统性能。
因此,本发明实施例的数据处理的装置,通过取关键字的N个字节同时查J张循环移位的Buz hash table并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
第一获取模块610获取关键字的N个字节以进行查表。可选地,N的值可以为关键字(key)的全部字节数,也可以小于key的全部字节数。例如,若key的字节数为N,则可以取这N个字节同时进行查表;或者,若key的字节数为M×N,则可依次取其中的N个字节同时进行查表。
在本发明实施例中,可选地,
Figure BDA00003191163400121
该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;
该查表模块620具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节knn=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};
该处理模块630具体用于,将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。
本发明实施例的数据处理的装置,通过取关键字的N个字节同时查张循环移位的Buz hash table并将查表结果相应地移1位或保持不变后再进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
在本发明实施例中,可选地,J=N,该J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;
该查表模块620具体用于,对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};
该处理模块630具体用于,对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。
本发明实施例的数据处理的装置,通过取关键字的N个字节同时查N张循环移位的Buz hash table并将查表结果进行异或,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
在本发明实施例中,可选地,用于查表的J张Buz hash table可以预先配置好,也可以只配置一张表,而由数据处理的装置通过循环移位得到其他的表。
在本发明实施例中,可选地,该装置600还包括:
第二获取模块,用于在该查表模块620根据该N个字节查J张布兹哈希表Buz hash table之前,获取预配置的该J张Buz hash table。
在本发明实施例中,可选地,该装置600还包括:
第三获取模块,用于在该查表模块620根据该N个字节查J张布兹哈希表Buz hash table之前,获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
在本发明实施例中,可选地,该装置600还包括:
第四获取模块,用于在该查表模块620根据该N个字节查J张布兹哈希表Buz hash table之前,获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
在本发明实施例中,可选地,在
Figure BDA00003191163400131
即采用
Figure BDA00003191163400132
张Buz hashtable时,该J张Buz hash table保存在LUT,或者FPGA的RAM或ROM中。
根据本发明实施例的数据处理的装置600可对应于根据本发明实施例的数据处理的方法中的执行主体,并且装置600中的各个模块的上述和其它操作和/或功能分别为了实现图1至图5中的各个方法的相应流程,为了简洁,在此不再赘述。
本发明实施例的数据处理的装置,通过取关键字的N个字节同时查J张循环移位的Buz hash table并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
图7示出了本发明的又一实施例提供的数据处理的装置的结构,包括至少一个处理器702(例如CPU),至少一个网络接口705或者其他通信接口,存储器706,和至少一个通信总线703,用于实现这些装置之间的连接通信。处理器702用于执行存储器706中存储的可执行模块,例如计算机程序。存储器706可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口705(可以是有线或者无线)实现该系统网关与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器706存储了程序7061,程序7061可以被处理器702执行,这个程序包括:
获取关键字的N个字节,N为整数且N≥2;根据该N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,该J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;根据该N个查表结果确定该N个字节的哈希结果。
可选地,
Figure BDA00003191163400141
该J张Buz hash table[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buz hash table,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn
Figure BDA00003191163400142
n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:将该N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将该N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到该N个字节的哈希结果。
可选地,J=N,该J张Buz hash table[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;根据该N个字节查J张布兹哈希表Buz hash table,包括:对于该N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到该N个查表结果{T[k0],T[k1],...,T[kN-1]};根据该N个查表结果确定该N个字节的哈希结果,包括:对该N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到该N个字节的哈希结果。
可选地,在根据该N个字节查J张布兹哈希表Buz hash table之前,还包括:获取预配置的该J张Buz hash table。
可选地,在根据该N个字节查J张布兹哈希表Buz hash table之前,还包括:获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
可选地,在根据该N个字节查J张布兹哈希表Buz hash table之前,还包括:获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到该J张Buz hash table。
可选地,该J张Buz hash table保存在LUT,或者FPGA的RAM或ROM中。
从本发明实施例提供的以上技术方案可以看出,本发明实施例通过取关键字的N个字节同时查J张循环移位的Buz hash table并进行计算,可以一次同时对N个字节进行处理,提高了处理效率,从而能够提升系统性能。
应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种数据处理的方法,其特征在于,包括:
获取关键字的N个字节,N为整数且N≥2;
根据所述N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,所述J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;
根据所述N个查表结果确定所述N个字节的哈希结果。
2.根据权利要求1所述的方法,其特征在于,
Figure FDA00003191163300011
所述J张Buzhash table[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;
所述根据所述N个字节查J张布兹哈希表Buz hash table,包括:
对于所述N个字节[k0,k1,...,kN-1]中的字节kn
Figure FDA00003191163300012
n=0,1,...,N-1,得到所述N个查表结果{T[k0],T[k1],...,T[kN-1]};
所述根据所述N个查表结果确定所述N个字节的哈希结果,包括:
将所述N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将所述N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};
对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到所述N个字节的哈希结果。
3.根据权利要求1所述的方法,其特征在于,J=N,所述J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;
所述根据所述N个字节查J张布兹哈希表Buz hash table,包括:
对于所述N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到所述N个查表结果{T[k0],T[k1],...,T[kN-1]};
所述根据所述N个查表结果确定所述N个字节的哈希结果,包括:
对所述N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到所述N个字节的哈希结果。
4.根据权利要求1至3中任一项所述的方法,其特征在于,在所述根据所述N个字节查J张布兹哈希表Buz hash table之前,所述方法还包括:
获取预配置的所述J张Buz hash table。
5.根据权利要求2所述的方法,其特征在于,在所述根据所述N个字节查J张布兹哈希表Buz hash table之前,所述方法还包括:
获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到所述J张Buz hash table。
6.根据权利要求3所述的方法,其特征在于,在所述根据所述N个字节查J张布兹哈希表Buz hash table之前,所述方法还包括:
获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到所述J张Buz hash table。
7.根据权利要求2或5所述的方法,其特征在于,所述J张Buz hash table保存在查找表LUT,或者现场可编程逻辑FPGA的随机访问存储器RAM或只读存储器ROM中。
8.一种数据处理的装置,其特征在于,包括:
第一获取模块,用于获取关键字的N个字节,N为整数且N≥2;
查表模块,用于根据所述N个字节查J张布兹哈希表Buz hash table,得到N个查表结果,2≤J≤N,所述J张Buz hash table中,后一张Buz hash table相对前一张Buz hash table进行了循环移位;
处理模块,用于根据所述N个查表结果确定所述N个字节的哈希结果。
9.根据权利要求8所述的装置,其特征在于,
Figure FDA00003191163300021
所述J张Buzhash table[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移2位,j=1,...,J-1;
所述查表模块具体用于,对于所述N个字节[k0,k1,...,kN-1]中的字节kn
Figure FDA00003191163300022
n=0,1,...,N-1,得到所述N个查表结果{T[k0],T[k1],...,T[kN-1]};
所述处理模块具体用于,将所述N个查表结果中的T[k1],T[k3],T[k5],...各循环移1位,作为相应的RT[k1],RT[k3],RT[k5],...,将所述N个查表结果中的T[k0],T[k2],T[k4],...保持不变,作为相应的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},对{RT[k0],RT[k1],...,RT[kN-1]}进行异或得到所述N个字节的哈希结果。
10.根据权利要求8所述的装置,其特征在于,J=N,所述J张Buz hashtable[table0,table1,...,tableJ-1]中,tablej相对tablej-1循环移1位,j=1,...,J-1;
所述查表模块具体用于,对于所述N个字节[k0,k1,...,kN-1]中的字节kn查tablen,n=0,1,...,N-1,得到所述N个查表结果{T[k0],T[k1],...,T[kN-1]};
所述处理模块具体用于,对所述N个查表结果{T[k0],T[k1],...,T[kN-1]}进行异或得到所述N个字节的哈希结果。
11.根据权利要求8至10中任一项所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述查表模块根据所述N个字节查J张布兹哈希表Buz hash table之前,获取预配置的所述J张Buz hash table。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第三获取模块,用于在所述查表模块根据所述N个字节查J张布兹哈希表Buz hash table之前,获取预配置的table0,将tablej-1循环移2位作为tablej,j=1,...,J-1,得到所述J张Buz hash table。
13.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第四获取模块,用于在所述查表模块根据所述N个字节查J张布兹哈希表Buz hash table之前,获取预配置的table0,将tablej-1循环移1位作为tablej,j=1,...,J-1,得到所述J张Buz hash table。
14.根据权利要求9或12所述的装置,其特征在于,所述J张Buz hashtable保存在查找表LUT,或者现场可编程逻辑FPGA的随机访问存储器RAM或只读存储器ROM中。
CN201310178900.0A 2013-05-15 2013-05-15 数据处理的方法和装置 Active CN103258035B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310178900.0A CN103258035B (zh) 2013-05-15 2013-05-15 数据处理的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310178900.0A CN103258035B (zh) 2013-05-15 2013-05-15 数据处理的方法和装置

Publications (2)

Publication Number Publication Date
CN103258035A true CN103258035A (zh) 2013-08-21
CN103258035B CN103258035B (zh) 2017-02-08

Family

ID=48961952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310178900.0A Active CN103258035B (zh) 2013-05-15 2013-05-15 数据处理的方法和装置

Country Status (1)

Country Link
CN (1) CN103258035B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105827394A (zh) * 2016-03-10 2016-08-03 浙江亿邦通信科技股份有限公司 一种基于FPGA的Hash算法硬件实现装置
WO2018094566A1 (zh) * 2016-11-22 2018-05-31 深圳大学 并行哈希函数的构造方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388009A (zh) * 2007-09-11 2009-03-18 北京思软科技有限公司 用动态表名优化超大数据量处理能力的方法
US7539661B2 (en) * 2005-06-02 2009-05-26 Delphi Technologies, Inc. Table look-up method with adaptive hashing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539661B2 (en) * 2005-06-02 2009-05-26 Delphi Technologies, Inc. Table look-up method with adaptive hashing
CN101388009A (zh) * 2007-09-11 2009-03-18 北京思软科技有限公司 用动态表名优化超大数据量处理能力的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105827394A (zh) * 2016-03-10 2016-08-03 浙江亿邦通信科技股份有限公司 一种基于FPGA的Hash算法硬件实现装置
WO2018094566A1 (zh) * 2016-11-22 2018-05-31 深圳大学 并行哈希函数的构造方法

Also Published As

Publication number Publication date
CN103258035B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
US9407286B2 (en) Data compression apparatus, data compression method, and memory system including the data compression apparatus
US9064067B2 (en) Quantum gate optimizations
US20190065546A1 (en) Multi stage aggregation using digest order after a first stage of aggregation
Shieh et al. Inverted file compression through document identifier reassignment
Ryang et al. Indexed list-based high utility pattern mining with utility upper-bound reduction and pattern combination techniques
CN102866954B (zh) 内存分配的方法及装置
Palpanas Evolution of a Data Series Index: The iSAX Family of Data Series Indexes: iSAX, iSAX2. 0, iSAX2+, ADS, ADS+, ADS-Full, ParIS, ParIS+, MESSI, DPiSAX, ULISSE, Coconut-Trie/Tree, Coconut-LSM
WO2015193771A1 (en) Flash optimized columnar data layout and data access algorithms for big data query engines
US20180046729A1 (en) Determining whether to process identified uniform resource locators
CN104142990A (zh) 搜索方法及装置
US10776401B2 (en) Efficient database query aggregation of variable length data
US11175993B2 (en) Managing data storage system
CN103309893A (zh) 一种字符串的比较方法及装置
CN105264488A (zh) 使用数组对来合并有序列表
KR20140038441A (ko) 압축 매치 열거 기법
CN103258035A (zh) 数据处理的方法和装置
CN103905310A (zh) 报文处理的方法及转发设备
US10606899B2 (en) Categorically filtering search results
Wu et al. A new approach to mine frequent patterns using item-transformation methods
CN101854341B (zh) 用于数据流的模式匹配方法和装置
CN103210590A (zh) 压缩方法及设备
CN102968382A (zh) 一种空闲存储单元的查找方法及装置
CN104636432A (zh) 一种日志文件压缩和解压的方法及装置
CN105447020B (zh) 一种确定业务对象关键词的方法及装置
US20150317141A1 (en) Extending superword level parallelism

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211231

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Patentee after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right