亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)處理的方法和裝置與流程

文檔序號:12007859閱讀:203來源:國知局
本發(fā)明涉及信息
技術(shù)領(lǐng)域
,并且更具體地,涉及數(shù)據(jù)處理的方法和裝置。
背景技術(shù)
:哈希(Hash)算法以其均勻散列、快速收縮、不可逆等特性,在海量用戶管理和信息安全等相關(guān)領(lǐng)域被廣泛應(yīng)用。在硬件加速實現(xiàn)的Hash計算中以布茲(RobertUzgalis,Buz)/BKDR(BrianKernighanandDennisRitchie)算法最為常見,實現(xiàn)時常規(guī)做法是通過以特征字的線性查表后,經(jīng)過特征字的字節(jié)長度次迭代移位模2加法計算后獲得均勻的Hash散列值,因此其計算速度取決于查表效率和待計算的特征字長度,一般匹配速度慢,不能很好滿足高速網(wǎng)絡(luò)中對大量流進(jìn)行匹配的需要。Buzhash只需要移位及異或操作,適合于硬件實現(xiàn),在業(yè)內(nèi)廣泛應(yīng)用于硬件hash計算。然而,現(xiàn)有的Buzhash算法只能串行查找,在輸入的關(guān)鍵字比較長,且對性能要求比較高的地方,不能夠滿足需求。技術(shù)實現(xiàn)要素:本發(fā)明實施例提供了一種數(shù)據(jù)處理的方法和裝置,能夠提升系統(tǒng)性能。第一方面,提供了一種數(shù)據(jù)處理的方法,包括:獲取關(guān)鍵字的N個字節(jié),N為整數(shù)且N≥2;根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,得到N個查表結(jié)果,2≤J≤N,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位;根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果。在第一種可能的實現(xiàn)方式中,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移2位,j=1,...,J-1;根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,包括:對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果,包括:將該N個查表結(jié)果中的T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...,將該N個查表結(jié)果中的T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};對{RT[k0],RT[k1],...,RT[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。在第二種可能的實現(xiàn)方式中,J=N,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移1位,j=1,...,J-1;根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,包括:對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查tablen,n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果,包括:對該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。結(jié)合第一方面或第一方面的第一或二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,在根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,該方法還包括:獲取預(yù)配置的該J張Buzhashtable。結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,在根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,該方法還包括:獲取預(yù)配置的table0,將tablej-1循環(huán)移2位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,在根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,該方法還包括:獲取預(yù)配置的table0,將tablej-1循環(huán)移1位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。結(jié)合第一方面的第一或四種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,該J張Buzhashtable保存在查找表(lookuptable,LUT),或者現(xiàn)場可編程邏輯(FieldProgrammableGateArray,F(xiàn)PGA)的隨機(jī)訪問存儲器(RandomAccessMemory,RAM)或只讀存儲器(ReadOnlyMemory,ROM)中。第二方面,提供了一種數(shù)據(jù)處理的裝置,包括:第一獲取模塊,用于獲取關(guān)鍵字的N個字節(jié),N為整數(shù)且N≥2;查表模塊,用于根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,得到N個查表結(jié)果,2≤J≤N,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位;處理模塊,用于根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果。在第一種可能的實現(xiàn)方式中,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移2位,j=1,...,J-1;該查表模塊具體用于,對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};該處理模塊具體用于,將該N個查表結(jié)果中的T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...,將該N個查表結(jié)果中的T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},對{RT[k0],RT[k1],...,RT[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。在第二種可能的實現(xiàn)方式中,J=N,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移1位,j=1,...,J-1;該查表模塊具體用于,對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查tablen,n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};該處理模塊具體用于,對該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。結(jié)合第二方面或第二方面的第一或二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,該裝置還包括:第二獲取模塊,用于在該查表模塊根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,獲取預(yù)配置的該J張Buzhashtable。結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,該裝置還包括:第三獲取模塊,用于在該查表模塊根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,獲取預(yù)配置的table0,將tablej-1循環(huán)移2位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,該裝置還包括:第四獲取模塊,用于在該查表模塊根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,獲取預(yù)配置的table0,將tablej-1循環(huán)移1位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。結(jié)合第二方面的第一或四種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,該J張Buzhashtable保存在LUT,或者FPGA的RAM或ROM中?;谏鲜黾夹g(shù)方案,本發(fā)明實施例的數(shù)據(jù)處理的方法和裝置,通過取關(guān)鍵字的N個字節(jié)同時查J張循環(huán)移位的Buzhashtable并進(jìn)行計算,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。附圖說明為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明一個實施例的數(shù)據(jù)處理的方法的示意性流程圖。圖2是根據(jù)本發(fā)明另一實施例的數(shù)據(jù)處理的方法的示意性流程圖。圖3是根據(jù)本發(fā)明又一實施例的數(shù)據(jù)處理的方法的示意性流程圖。圖4是根據(jù)本發(fā)明又一實施例的數(shù)據(jù)處理的方法的示意圖。圖5是根據(jù)本發(fā)明又一實施例的數(shù)據(jù)處理的方法的示意圖。圖6是根據(jù)本發(fā)明一個實施例的數(shù)據(jù)處理的裝置的示意性框圖。圖7是根據(jù)本發(fā)明又一實施例的數(shù)據(jù)處理的裝置的結(jié)構(gòu)圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。圖1示出了根據(jù)本發(fā)明實施例的數(shù)據(jù)處理的方法100的示意性流程圖。該方法100由數(shù)據(jù)處理的裝置執(zhí)行。如圖1所示,該方法100包括:S110,獲取關(guān)鍵字的N個字節(jié),N為整數(shù)且N≥2;S120,根據(jù)該N個字節(jié)查J張Buzhashtable,得到N個查表結(jié)果,2≤J≤N,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位;S130,根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果?,F(xiàn)有的Buzhash算法對于關(guān)鍵字的每個字節(jié)需要依次進(jìn)行查表、循環(huán)移位和異或操作,計算效率較低。在本發(fā)明實施例中,為了提高效率,將串行操作轉(zhuǎn)化為并行操作。數(shù)據(jù)處理的裝置首先獲取數(shù)據(jù)的關(guān)鍵字的N個字節(jié),根據(jù)該N個字節(jié)查J張Buzhashtable,得到N個查表結(jié)果。其中,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位,即每張表相對前一張表進(jìn)行了循環(huán)移位。也就是說,取關(guān)鍵字的N個字節(jié),同時查J張進(jìn)行了循環(huán)移位的Buzhashtable,對于每個字節(jié)得到一個查表結(jié)果,同時得到N個查表結(jié)果。然后,數(shù)據(jù)處理的裝置根據(jù)該N個查表結(jié)果進(jìn)行計算,對該N個查表結(jié)果進(jìn)行異或處理,或者對該N個查表結(jié)果先移較少位再進(jìn)行異或處理,得到該N個字節(jié)的哈希結(jié)果,以實現(xiàn)對數(shù)據(jù)的處理。由于J張Buzhashtable已經(jīng)進(jìn)行了循環(huán)移位,這樣,通過取關(guān)鍵字的N個字節(jié)同時進(jìn)行查表和計算,可以提高查表和計算效率,從而能夠提升系統(tǒng)性能。因此,本發(fā)明實施例的數(shù)據(jù)處理的方法,通過取關(guān)鍵字的N個字節(jié)同時查J張循環(huán)移位的Buzhashtable并進(jìn)行計算,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。數(shù)據(jù)處理的裝置獲取關(guān)鍵字的N個字節(jié)以進(jìn)行查表??蛇x地,N的值可以為關(guān)鍵字(key)的全部字節(jié)數(shù),也可以小于key的全部字節(jié)數(shù)。例如,若key的字節(jié)數(shù)為N,則可以取這N個字節(jié)同時進(jìn)行查表;或者,若key的字節(jié)數(shù)為M×N,則可依次取其中的N個字節(jié)同時進(jìn)行查表。在本發(fā)明實施例中,如圖2所示,可選地,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移2位,j=1,...,J-1;S120包括:S121,對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};S130包括:S131,將該N個查表結(jié)果中的T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...,將該N個查表結(jié)果中的T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};S132,對{RT[k0],RT[k1],...,RT[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。具體而言,在本實施例中,Buzhashtable的張數(shù)表示向上取整。即Buzhashtable的張數(shù)為同時查表的字節(jié)數(shù)的一半。例如,若N為10,則Buzhashtable的張數(shù)為5,若N為9,則Buzhashtable的張數(shù)也為5。這樣,可以每兩個字節(jié)查一張表。換句話說,每張表支持雙輸入雙輸出,因此,張Buzhashtable可以使得N個字節(jié)同時查表。該J張Buzhashtable中,tablej相對tablej-1循環(huán)移2位,即每張表相對前一張表循環(huán)移2位。在對N個字節(jié)[k0,k1,...,kN-1]查J張Buzhashtable[table0,table1,...,tableJ-1]時,對于字節(jié)kn查表示向下取整。也就是說,每兩個字節(jié)查一張表。例如,字節(jié)k0,k1查table0,字節(jié)k2,k3查table1,字節(jié)k4,k5查table2,依次類推,一共得到N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}。由于每張表已經(jīng)相對前一張表循環(huán)移了2位,因此,查表后的結(jié)果為經(jīng)過移位的,不需再進(jìn)行移位或者僅需再移1位。因此,數(shù)據(jù)處理的裝置將該N個查表結(jié)果中的T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...,將該N個查表結(jié)果中的T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]}。由于J張Buzhashtable中每張表相對前一張表循環(huán)移2位,每兩個字節(jié)查一張表后,這兩個字節(jié)中的第一個字節(jié)對應(yīng)的查表結(jié)果不需要再移位,而這兩個字節(jié)中的第二個字節(jié)對應(yīng)的查表結(jié)果只需再移1位。數(shù)據(jù)處理的裝置將N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}中下標(biāo)為偶數(shù)的查表結(jié)果保持不變,下標(biāo)為奇數(shù)的查表結(jié)果循環(huán)移1位,得到移位后的結(jié)果{RT[k0],RT[k1],...,RT[kN-1]}。數(shù)據(jù)處理的裝置再對{RT[k0],RT[k1],...,RT[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。也就是說,將RT[k0],RT[k1],...,RT[kN-1]全部異或得到哈希結(jié)果。由于{RT[k0],RT[k1],...,RT[kN-1]}為移位后的結(jié)果,因此,只需對其進(jìn)行異或操作即可得到該N個字節(jié)的哈希結(jié)果。若key的字節(jié)數(shù)為N,則可直接得到key對應(yīng)的哈希結(jié)果;若key的字節(jié)數(shù)為M×N,則可依次將前N個字節(jié)對應(yīng)的哈希結(jié)果循環(huán)移N位后與后N個字節(jié)對應(yīng)的哈希結(jié)果進(jìn)行異或得到key對應(yīng)的哈希結(jié)果。這樣,本發(fā)明實施例的數(shù)據(jù)處理的方法,通過取關(guān)鍵字的N個字節(jié)同時查張循環(huán)移位的Buzhashtable并將查表結(jié)果相應(yīng)地移1位或保持不變后再進(jìn)行異或,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。在本發(fā)明實施例中,如圖3所示,可選地,J=N,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移1位,j=1,...,J-1;S120包括:S126,對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查tablen,n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};S130包括:S136,對該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。具體而言,在本實施例中,Buzhashtable的張數(shù)J=N。即Buzhashtable的張數(shù)等于同時查表的字節(jié)數(shù)。例如,若N為10,則Buzhashtable的張數(shù)為10。這樣,可以每個字節(jié)查一張表。換句話說,每張表單輸入單輸出時,N個字節(jié)同時查N張Buzhashtable。該J(即N)張Buzhashtable中,tablej相對tablej-1循環(huán)移1位,即每張表相對前一張表循環(huán)移1位。在對N個字節(jié)[k0,k1,...,kN-1]查J(即N)張Buzhashtable[table0,table1,...,tableJ-1]時,對于字節(jié)kn查tablen。也就是說,每個字節(jié)查一張表。字節(jié)k0查table0,字節(jié)k1查table1,字節(jié)k2查table2,依次類推,一共得到N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}。由于N張Buzhashtable中每張表已經(jīng)相對前一張表循環(huán)移了1位,因此,N個查表結(jié)果為經(jīng)過移位的,不需再進(jìn)行移位。因此,數(shù)據(jù)處理的裝置直接對該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。若key的字節(jié)數(shù)為N,則可直接得到key對應(yīng)的哈希結(jié)果;若key的字節(jié)數(shù)為M×N,則可依次將前N個字節(jié)對應(yīng)的哈希結(jié)果循環(huán)移N位后與后N個字節(jié)對應(yīng)的哈希結(jié)果進(jìn)行異或得到key對應(yīng)的哈希結(jié)果。這樣,本發(fā)明實施例的數(shù)據(jù)處理的方法,通過取關(guān)鍵字的N個字節(jié)同時查N張循環(huán)移位的Buzhashtable并將查表結(jié)果進(jìn)行異或,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。應(yīng)理解,Buzhashtable的張數(shù)J還可以取其他數(shù)值,比如,在支持多輸入多輸出的情況下,Buzhashtable的張數(shù)還可以減少,只要滿足N個字節(jié)同時查表即可。例如,在J取時,每三個字節(jié)查一張表,在每張表對應(yīng)的三個查表結(jié)果中,第一個結(jié)果不移位,第二個結(jié)果移1位,第三個結(jié)果移2位,然后再進(jìn)行異或處理得到最終的哈希結(jié)果。在本發(fā)明實施例中,可選地,用于查表的J張Buzhashtable可以預(yù)先配置好,也可以只配置一張表,而由數(shù)據(jù)處理的裝置通過循環(huán)移位得到其他的表。在本發(fā)明實施例中,可選地,在S120之前,該方法100還包括:獲取預(yù)配置的該J張Buzhashtable。具體而言,在本實施例中,J張Buzhashtable由用戶預(yù)先配置好。也就是說,用戶直接配置移位后的J張Buzhashtable,數(shù)據(jù)處理的裝置取關(guān)鍵字的N個字節(jié)同時查該J張Buzhashtable以得到移位后的結(jié)果??蛇x地,在即采用張Buzhashtable時,在S120之前,該方法100還包括:獲取預(yù)配置的table0,將tablej-1循環(huán)移2位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。具體而言,在本實施例中,用戶只配置第一張Buzhashtable,即原始的表。數(shù)據(jù)處理的裝置通過循環(huán)移位得到其他的表。在即采用張Buzhashtable時,數(shù)據(jù)處理的裝置將tablej-1循環(huán)移2位作為tablej,即將前一張表循環(huán)移2位作為后一張表,這樣得到其他J-1張表,從而得到J張移位后的Buzhashtable??蛇x地,在J=N,即采用N張Buzhashtable時,在S120之前,該方法100還包括:獲取預(yù)配置的table0,將tablej-1循環(huán)移1位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。具體而言,在本實施例中,用戶只配置第一張Buzhashtable,即原始的表。數(shù)據(jù)處理的裝置通過循環(huán)移位得到其他的表。在J=N,即采用N張Buzhashtable時,數(shù)據(jù)處理的裝置將tablej-1循環(huán)移1位作為tablej,即將前一張表循環(huán)移1位作為后一張表,這樣得到其他J-1張表,從而得到J張移位后的Buzhashtable。在本發(fā)明實施例中,可選地,在即采用張Buzhashtable時,該J張Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。具體而言,在即采用張Buzhashtable時,用于查表的J張Buzhashtable可以保存在支持雙輸入與雙輸出的資源中,例如,LUT,或者FPGA的RAM或ROM,但本發(fā)明對此并不限定,Buzhashtable也可以保存在其他支持雙輸入與雙輸出的資源中。下面將結(jié)合具體的例子詳細(xì)描述本發(fā)明實施例。應(yīng)注意,這只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實施例,而非限制本發(fā)明實施例的范圍。假定key有N個字節(jié)[k0,k1,...,kN-1],如圖4所示,在Buzhashtable雙輸入時,需要張Buzhashtable。該張Buzhashtable中,每張表相對前一張表循環(huán)移2位。比如,table1相對table0循環(huán)移2位,那么table1里的256個表項都相對table0里的對應(yīng)表項循環(huán)移2位。該張Buzhashtable可以由用戶預(yù)配置好,也可以由數(shù)據(jù)處理的裝置根據(jù)用戶預(yù)配置的table0通過循環(huán)移位得到。取該N個字節(jié)查該張Buzhashtable。具體地,對于字節(jié)kn查例如,字節(jié)k0,k1查table0,字節(jié)k2,k3查table1,字節(jié)k4,k5查table2,依次類推,得到N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}。將該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}中下標(biāo)為偶數(shù)的查表結(jié)果保持不變,下標(biāo)為奇數(shù)的查表結(jié)果循環(huán)移1位,得到移位后的結(jié)果{RT[k0],RT[k1],...,RT[kN-1]}。也就是說,T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...;T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...。將{RT[k0],RT[k1],...,RT[kN-1]}全部做異或得到最終的哈希結(jié)果。因為{RT[k0],RT[k1],...,RT[kN-1]}已經(jīng)是移位的結(jié)果,因此直接將其異或得到的結(jié)果即為最終的哈希結(jié)果。如圖5所示,在Buzhashtable單輸入時,需要N張Buzhashtable。該N張Buzhashtable中,每張表相對前一張表循環(huán)移1位。比如,table1相對table0循環(huán)移1位,那么table1里的256個表項都相對table0里的對應(yīng)表項循環(huán)移1位。該N張Buzhashtable可以由用戶預(yù)配置好,也可以由數(shù)據(jù)處理的裝置根據(jù)用戶預(yù)配置的table0通過循環(huán)移位得到。取該N個字節(jié)查該N張Buzhashtable。具體地,對于字節(jié)kn查tablen。即,字節(jié)k0查table0,字節(jié)k1查table1,字節(jié)k2查table2,依次類推,得到N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}。將N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}全部做異或得到最終的哈希結(jié)果。因為N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}已經(jīng)是移位的結(jié)果,因此直接將其異或得到的結(jié)果即為最終的哈希結(jié)果。因此,本發(fā)明實施例的數(shù)據(jù)處理的方法,通過取關(guān)鍵字的N個字節(jié)同時查J張循環(huán)移位的Buzhashtable并進(jìn)行計算,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。應(yīng)理解,在本發(fā)明的各種實施例中,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。上文中結(jié)合圖1至圖5,詳細(xì)描述了根據(jù)本發(fā)明實施例的數(shù)據(jù)處理的方法,下面將結(jié)合圖6和圖7,描述根據(jù)本發(fā)明實施例的數(shù)據(jù)處理的裝置。圖6示出了根據(jù)本發(fā)明實施例的數(shù)據(jù)處理的裝置600的示意性框圖。如圖6所示,該裝置600包括:第一獲取模塊610,用于獲取關(guān)鍵字的N個字節(jié),N為整數(shù)且N≥2;查表模塊620,用于根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,得到N個查表結(jié)果,2≤J≤N,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位;處理模塊630,用于根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果。在本發(fā)明實施例中,為了提高效率,將串行操作轉(zhuǎn)化為并行操作。數(shù)據(jù)處理的裝置600的第一獲取模塊610獲取數(shù)據(jù)的關(guān)鍵字的N個字節(jié),查表模塊620根據(jù)該N個字節(jié)查J張Buzhashtable,得到N個查表結(jié)果。其中,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位,即每張表相對前一張表進(jìn)行了循環(huán)移位。也就是說,取關(guān)鍵字的N個字節(jié),同時查J張進(jìn)行了循環(huán)移位的Buzhashtable,對于每個字節(jié)得到一個查表結(jié)果,同時得到N個查表結(jié)果。處理模塊630根據(jù)該N個查表結(jié)果進(jìn)行計算,得到該N個字節(jié)的哈希結(jié)果,以實現(xiàn)對數(shù)據(jù)的處理。由于J張Buzhashtable已經(jīng)進(jìn)行了循環(huán)移位,這樣,通過取關(guān)鍵字的N個字節(jié)同時進(jìn)行查表和計算,可以提高查表和計算效率,從而能夠提升系統(tǒng)性能。因此,本發(fā)明實施例的數(shù)據(jù)處理的裝置,通過取關(guān)鍵字的N個字節(jié)同時查J張循環(huán)移位的Buzhashtable并進(jìn)行計算,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。第一獲取模塊610獲取關(guān)鍵字的N個字節(jié)以進(jìn)行查表。可選地,N的值可以為關(guān)鍵字(key)的全部字節(jié)數(shù),也可以小于key的全部字節(jié)數(shù)。例如,若key的字節(jié)數(shù)為N,則可以取這N個字節(jié)同時進(jìn)行查表;或者,若key的字節(jié)數(shù)為M×N,則可依次取其中的N個字節(jié)同時進(jìn)行查表。在本發(fā)明實施例中,可選地,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移2位,j=1,...,J-1;該查表模塊620具體用于,對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};該處理模塊630具體用于,將該N個查表結(jié)果中的T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...,將該N個查表結(jié)果中的T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]},對{RT[k0],RT[k1],...,RT[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。本發(fā)明實施例的數(shù)據(jù)處理的裝置,通過取關(guān)鍵字的N個字節(jié)同時查張循環(huán)移位的Buzhashtable并將查表結(jié)果相應(yīng)地移1位或保持不變后再進(jìn)行異或,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。在本發(fā)明實施例中,可選地,J=N,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移1位,j=1,...,J-1;該查表模塊620具體用于,對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查tablen,n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};該處理模塊630具體用于,對該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果。本發(fā)明實施例的數(shù)據(jù)處理的裝置,通過取關(guān)鍵字的N個字節(jié)同時查N張循環(huán)移位的Buzhashtable并將查表結(jié)果進(jìn)行異或,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。在本發(fā)明實施例中,可選地,用于查表的J張Buzhashtable可以預(yù)先配置好,也可以只配置一張表,而由數(shù)據(jù)處理的裝置通過循環(huán)移位得到其他的表。在本發(fā)明實施例中,可選地,該裝置600還包括:第二獲取模塊,用于在該查表模塊620根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,獲取預(yù)配置的該J張Buzhashtable。在本發(fā)明實施例中,可選地,該裝置600還包括:第三獲取模塊,用于在該查表模塊620根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,獲取預(yù)配置的table0,將tablej-1循環(huán)移2位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。在本發(fā)明實施例中,可選地,該裝置600還包括:第四獲取模塊,用于在該查表模塊620根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,獲取預(yù)配置的table0,將tablej-1循環(huán)移1位作為tablej,j=1,...,J-1,得到該J張Buzhashtable。在本發(fā)明實施例中,可選地,在即采用張Buzhashtable時,該J張Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。根據(jù)本發(fā)明實施例的數(shù)據(jù)處理的裝置600可對應(yīng)于根據(jù)本發(fā)明實施例的數(shù)據(jù)處理的方法中的執(zhí)行主體,并且裝置600中的各個模塊的上述和其它操作和/或功能分別為了實現(xiàn)圖1至圖5中的各個方法的相應(yīng)流程,為了簡潔,在此不再贅述。本發(fā)明實施例的數(shù)據(jù)處理的裝置,通過取關(guān)鍵字的N個字節(jié)同時查J張循環(huán)移位的Buzhashtable并進(jìn)行計算,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。圖7示出了本發(fā)明的又一實施例提供的數(shù)據(jù)處理的裝置的結(jié)構(gòu),包括至少一個處理器702(例如CPU),至少一個網(wǎng)絡(luò)接口705或者其他通信接口,存儲器706,和至少一個通信總線703,用于實現(xiàn)這些裝置之間的連接通信。處理器702用于執(zhí)行存儲器706中存儲的可執(zhí)行模塊,例如計算機(jī)程序。存儲器706可能包含高速隨機(jī)存取存儲器(RAM:RandomAccessMemory),也可能還包括非不穩(wěn)定的存儲器(non-volatilememory),例如至少一個磁盤存儲器。通過至少一個網(wǎng)絡(luò)接口705(可以是有線或者無線)實現(xiàn)該系統(tǒng)網(wǎng)關(guān)與至少一個其他網(wǎng)元之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),城域網(wǎng)等。在一些實施方式中,存儲器706存儲了程序7061,程序7061可以被處理器702執(zhí)行,這個程序包括:獲取關(guān)鍵字的N個字節(jié),N為整數(shù)且N≥2;根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,得到N個查表結(jié)果,2≤J≤N,該J張Buzhashtable中,后一張Buzhashtable相對前一張Buzhashtable進(jìn)行了循環(huán)移位;根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果??蛇x地,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移2位,j=1,...,J-1;根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,包括:對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果,包括:將該N個查表結(jié)果中的T[k1],T[k3],T[k5],...各循環(huán)移1位,作為相應(yīng)的RT[k1],RT[k3],RT[k5],...,將該N個查表結(jié)果中的T[k0],T[k2],T[k4],...保持不變,作為相應(yīng)的RT[k0],RT[k2],RT[k4],...,得到{RT[k0],RT[k1],...,RT[kN-1]};對{RT[k0],RT[k1],...,RT[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果??蛇x地,J=N,該J張Buzhashtable[table0,table1,...,tableJ-1]中,tablej相對tablej-1循環(huán)移1位,j=1,...,J-1;根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable,包括:對于該N個字節(jié)[k0,k1,...,kN-1]中的字節(jié)kn查tablen,n=0,1,...,N-1,得到該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]};根據(jù)該N個查表結(jié)果確定該N個字節(jié)的哈希結(jié)果,包括:對該N個查表結(jié)果{T[k0],T[k1],...,T[kN-1]}進(jìn)行異或得到該N個字節(jié)的哈希結(jié)果??蛇x地,在根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,還包括:獲取預(yù)配置的該J張Buzhashtable??蛇x地,在根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,還包括:獲取預(yù)配置的table0,將tablej-1循環(huán)移2位作為tablej,j=1,...,J-1,得到該J張Buzhashtable??蛇x地,在根據(jù)該N個字節(jié)查J張布茲哈希表Buzhashtable之前,還包括:獲取預(yù)配置的table0,將tablej-1循環(huán)移1位作為tablej,j=1,...,J-1,得到該J張Buzhashtable??蛇x地,該J張Buzhashtable保存在LUT,或者FPGA的RAM或ROM中。從本發(fā)明實施例提供的以上技術(shù)方案可以看出,本發(fā)明實施例通過取關(guān)鍵字的N個字節(jié)同時查J張循環(huán)移位的Buzhashtable并進(jìn)行計算,可以一次同時對N個字節(jié)進(jìn)行處理,提高了處理效率,從而能夠提升系統(tǒng)性能。應(yīng)理解,在本發(fā)明實施例中,術(shù)語“和/或”僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系。例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機(jī)械的或其它的形式連接。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本發(fā)明實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以是兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分,或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1