專利名稱:哈希值存儲(chǔ)方法、裝置及芯片的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及哈希值存儲(chǔ)方法、裝置及芯片。
背景技術(shù):
隨著資訊信息更新速度的加快,以及網(wǎng)絡(luò)科技的蓬勃發(fā)展,產(chǎn)生了大量需要存儲(chǔ)的文件數(shù)據(jù)。為了節(jié)約存儲(chǔ)空間,需要對(duì)文件數(shù)據(jù)進(jìn)行壓縮編碼后再進(jìn)行存儲(chǔ)。現(xiàn)有技術(shù)中的一種壓縮方式為,如果文件中存在兩塊內(nèi)容相同的數(shù)據(jù)塊,則可以獲取其中一個(gè)數(shù)據(jù)塊的位置和大小后,對(duì)另一個(gè)數(shù)據(jù)塊進(jìn)行替換。由于在查找兩塊內(nèi)容相同的數(shù)據(jù)塊時(shí),將當(dāng)前位置的數(shù)據(jù)塊與已出現(xiàn)過的數(shù)據(jù)塊逐一進(jìn)行對(duì)比,以獲取相同的數(shù)據(jù)塊時(shí),處理速度比較慢,因此現(xiàn)有技術(shù)中計(jì)算每個(gè)數(shù)據(jù)塊的hash (哈希)值,通過比較數(shù)據(jù)塊的hash值,查找相同的數(shù)據(jù)塊,以提高查找效率?,F(xiàn)有技術(shù)中通過建立hash表存儲(chǔ)每個(gè)數(shù)據(jù)塊的hash值,通常由計(jì)算機(jī)的中央處理器(Central Processing Unit, CPU)計(jì)算每個(gè)數(shù)據(jù)塊的hash值,然后將計(jì)算的hash值和數(shù)據(jù)塊在文件中的位置進(jìn)行存儲(chǔ)。由于CPU采用串行指令逐一計(jì)算并存儲(chǔ)hash值,因此當(dāng)文件中數(shù)據(jù)塊的數(shù)量較多時(shí),則執(zhí)行速度比較慢,相應(yīng)降低了 hash值的存儲(chǔ)效率。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供哈希值存儲(chǔ)方法、裝置及芯片,以解決現(xiàn)有技術(shù)中哈希值存儲(chǔ)效率不高的問題。為了解決上述技術(shù)問題,本發(fā)明實(shí)施例公開了如下技術(shù)方案第一方面,提供一種哈希值存儲(chǔ)方法,所述方法包括計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值;選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表;將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述對(duì)應(yīng)的哈希子表中。結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值,包括從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊;并行計(jì)算獲取的所述多個(gè)數(shù)據(jù)塊的哈希值。結(jié)合第一方面,或第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表,包括對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍;根據(jù)比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。結(jié)合第一方面,或第一種可能的實(shí)現(xiàn)方式,或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述將每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)
4到所述對(duì)應(yīng)的哈希子表中,包括當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。結(jié)合第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表,包括按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;或者,按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。第二方面,提供一種哈希值存儲(chǔ)裝置,所述裝置包括計(jì)算單元,用于計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值;選擇單元,用于選擇所述計(jì)算單元計(jì)算的所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表;存儲(chǔ)單元,用于將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述選擇單元選擇的所述對(duì)應(yīng)的哈希子表中。結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述計(jì)算單元包括獲取子單元,用于從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊;計(jì)算子單元,用于并行計(jì)算所述獲取子單元獲取的所述多個(gè)數(shù)據(jù)塊的哈希值。結(jié)合第二方面,或第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述選擇單元包括比較子單元,用于對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍;獲得子單元,用于根據(jù)所述比較子單元的比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。結(jié)合第二方面,或第一種可能的實(shí)現(xiàn)方式,或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)單元,具體用于當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。結(jié)合第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)單元包括至少一個(gè)下述單元第一存儲(chǔ)子單元,用于按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;第二存儲(chǔ)子單元,用于按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。第三方面,提供一種芯片,所述芯片包括至少一個(gè)輸入輸出接口,至少一個(gè)隨機(jī)
5存儲(chǔ)器RAM,和門級(jí)電路,其中,所述輸入輸出接口,用于接收文件,并將所述文件輸入到所述門級(jí)電路;每個(gè)所述RAM,用于保存至少一個(gè)哈希子表;所述門級(jí)電路,用于計(jì)算所述文件中多個(gè)數(shù)據(jù)塊的哈希值,選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表,并將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述保存所述對(duì)應(yīng)的哈希子表的RAM中。結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述門級(jí)電路,具體用于從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊,并行計(jì)算獲取的所述多個(gè)數(shù)據(jù)塊的哈希值,對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍,根據(jù)比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。結(jié)合第三方面,或第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述門級(jí)電路,具體用于當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。結(jié)合第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述門級(jí)電路,具體用于按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;或者,按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。本發(fā)明實(shí)施例中,計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值,選擇多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表,將每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述對(duì)應(yīng)的哈希子表中。本發(fā)明實(shí)施例可以通過硬件實(shí)現(xiàn)同時(shí)計(jì)算并存儲(chǔ)多個(gè)數(shù)據(jù)塊的哈希值,因此當(dāng)文件中的數(shù)據(jù)塊數(shù)量較多時(shí),可以加快哈希值的處理速度,提高哈希值的存儲(chǔ)效率。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明哈希值存儲(chǔ)方法的一個(gè)實(shí)施例流程圖;圖2為本發(fā)明哈希值存儲(chǔ)方法的另一個(gè)實(shí)施例流程圖圖3為本發(fā)明哈希值存儲(chǔ)裝置的實(shí)施例框圖;圖4為本發(fā)明芯片的實(shí)施例框圖;圖5為應(yīng)用本發(fā)明實(shí)施例的一種芯片架構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明如下實(shí)施例提供了哈希值存儲(chǔ)方法、裝置及芯片,以提高哈希值的存儲(chǔ)效率。 為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例中技術(shù)方案作進(jìn)一步詳細(xì)的說明。參見圖1,為本發(fā)明哈希值存儲(chǔ)方法的一個(gè)實(shí)施例流程圖步驟101 :計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值。本實(shí)施例中的哈希值存儲(chǔ)方法可以基于硬件,例如可編程芯片實(shí)現(xiàn)。其中,可以設(shè)置芯片上每次存儲(chǔ)哈希值時(shí),對(duì)數(shù)據(jù)塊進(jìn)行處理的并行處理數(shù),從待處理的文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊,并行計(jì)算獲取的多個(gè)數(shù)據(jù)塊的哈希值。步驟102 :選擇多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。本實(shí)施例中,可以通過芯片上設(shè)置的多個(gè)隨機(jī)存儲(chǔ)器(Random Access Memory,RAM)保存不同的哈希值,其中每個(gè)RAM上可以保存至少一個(gè)哈希子表,每個(gè)哈希子表用于存儲(chǔ)某個(gè)哈希值范圍內(nèi)的哈希值,所有哈希子表組成該文件的哈希表。對(duì)于并行處理的每個(gè)數(shù)據(jù)塊的哈希值,可以比較該數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍,根據(jù)比較結(jié)果,獲得該數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的哈希子表確定為該數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。步驟103 :將每個(gè)數(shù)據(jù)塊的哈希值和該數(shù)據(jù)塊在文件中的位置信息存儲(chǔ)到選擇的哈希子表中。本實(shí)施例中,當(dāng)根據(jù)步驟102為每個(gè)數(shù)據(jù)塊的哈希值選擇了對(duì)應(yīng)的哈希子表后,將每個(gè)數(shù)據(jù)塊的哈希值及該數(shù)據(jù)塊在文件中的位置信息存儲(chǔ)到選擇的哈希子表中。對(duì)多個(gè)數(shù)據(jù)塊來說,可以將多個(gè)數(shù)據(jù)塊的哈希值并行存儲(chǔ)到不同的哈希子表中。在存儲(chǔ)過程中,當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),可以按照預(yù)設(shè)方式將至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。其中,預(yù)設(shè)方式可以靈活設(shè)置,例如,可以按照數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序?qū)⒐V荡鎯?chǔ)到同一個(gè)哈希子表中,或者按照隨機(jī)選擇的方式將哈希值存儲(chǔ)到同一個(gè)哈希子表中,對(duì)此本發(fā)明實(shí)施例不進(jìn)行限制。由上述實(shí)施例可見,該實(shí)施例可以通過硬件實(shí)現(xiàn)同時(shí)計(jì)算并存儲(chǔ)多個(gè)數(shù)據(jù)塊的哈希值,因此當(dāng)文件中的數(shù)據(jù)塊數(shù)量較多時(shí),可以加快哈希值的處理速度,提高哈希值的存儲(chǔ)效率。參見圖2,為本發(fā)明哈希值存儲(chǔ)方法的另一個(gè)實(shí)施例流程圖,該實(shí)施例詳細(xì)示出了本發(fā)明哈希值的存儲(chǔ)過程步驟201 :從文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊。本實(shí)施例中的哈希值存儲(chǔ)方法可以基于硬件,例如可編程芯片實(shí)現(xiàn)。其中,可以設(shè)置芯片上每次存儲(chǔ)哈希值時(shí),對(duì)數(shù)據(jù)塊進(jìn)行處理的并行處理數(shù),即通過多路并行處理方式對(duì)多個(gè)數(shù)據(jù)塊的哈希值進(jìn)行存儲(chǔ),從待處理的文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊。在獲取多個(gè)數(shù)據(jù)塊時(shí),可以按照文件中字符的排列順序獲取,每個(gè)數(shù)據(jù)塊中可以包含至少一個(gè)字符。步驟202 :并行計(jì)算獲取的多個(gè)數(shù)據(jù)塊的哈希值。在計(jì)算每個(gè)數(shù)據(jù)塊的哈希值時(shí),可以采用現(xiàn)有計(jì)算方式,例如,當(dāng)文件中的每個(gè)字符作為一個(gè)數(shù)據(jù)塊時(shí),可以根據(jù)當(dāng)前字符和當(dāng)前字符之前的兩個(gè)字符計(jì)算該當(dāng)前字符的哈希值。步驟203 :對(duì)于每個(gè)數(shù)據(jù)塊,比較該數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍。本實(shí)施例中,可以通過芯片上設(shè)置的多個(gè)RAM保存不同的哈希值,其中每個(gè)RAM上可以保存至少一個(gè)哈希子表,每個(gè)哈希子表用于存儲(chǔ)某個(gè)哈希值范圍內(nèi)的哈希值,所有哈希子表組成該文件的哈希表。步驟204 :根據(jù)比較結(jié)果,獲得該數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的哈希子表確定為該數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。步驟205 :將每個(gè)數(shù)據(jù)塊的哈希值和該數(shù)據(jù)塊在文件中的位置信息存儲(chǔ)到確定的該數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表中。在存儲(chǔ)過程中,當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),可以按照預(yù)設(shè)方式將至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。具體的,可以按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;或者,也可以按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。另外,為了進(jìn)一步提高存儲(chǔ)速度,也可以按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,僅將其中前N個(gè)數(shù)據(jù)塊的哈希值和所述N個(gè)數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表,并丟棄除所述N個(gè)數(shù)據(jù)塊外的其它數(shù)據(jù)塊,該N的取值小于所述至少兩個(gè)數(shù)據(jù)塊的數(shù)量值。由上述實(shí)施例可見,該實(shí)施例可以通過硬件實(shí)現(xiàn)同時(shí)計(jì)算并存儲(chǔ)多個(gè)數(shù)據(jù)塊的哈希值,因此當(dāng)文件中的數(shù)據(jù)塊數(shù)量較多時(shí),可以加快哈希值的處理速度,提高哈希值的存儲(chǔ)效率。與本發(fā)明哈希值存儲(chǔ)方法的實(shí)施例相對(duì)應(yīng),本發(fā)明還提供了哈希值存儲(chǔ)裝置及芯片的實(shí)施例。參見圖3,為本發(fā)明哈希值存儲(chǔ)裝置的實(shí)施例框圖該裝置包括計(jì)算單元310、選擇單元320和存儲(chǔ)單元330。其中,計(jì)算單元310,用于計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值;選擇單元320,用于選擇所述計(jì)算單元310計(jì)算的所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表;存儲(chǔ)單元330,用于將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述選擇單元320選擇的所述對(duì)應(yīng)的哈希子表中。可選的,所述計(jì)算單元310可以包括(圖3中未示出)獲取子單元,用于從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊;
計(jì)算子單元,用于并行計(jì)算所述獲取子單元獲取的所述多個(gè)數(shù)據(jù)塊的哈希值??蛇x的,所述選擇單元320可以包括(圖3中未示出)比較子單元,用于對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍;獲得子單元,用于根據(jù)所述比較子單元的比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。具體的,所述存儲(chǔ)單元330,可以具體用于當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。進(jìn)一步,所述存儲(chǔ)單元330可以包括至少一個(gè)下述單元(圖3中未示出)第一存儲(chǔ)子單元,用于按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;第二存儲(chǔ)子單元,用于按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。由上述實(shí)施例可見,該實(shí)施例可以通過硬件實(shí)現(xiàn)同時(shí)計(jì)算并存儲(chǔ)多個(gè)數(shù)據(jù)塊的哈希值,因此當(dāng)文件中的數(shù)據(jù)塊數(shù)量較多時(shí),可以加快哈希值的處理速度,提高哈希值的存儲(chǔ)效率。參見圖4,為本發(fā)明芯片的實(shí)施例框圖該芯片包括至少一個(gè)輸入輸出接口 410,至少一個(gè)隨機(jī)存儲(chǔ)器RAM420,和門級(jí)電路430。為了示例方便,圖4中分別示出了三個(gè)輸入輸出接口和三個(gè)隨機(jī)存儲(chǔ)器RAM,實(shí)際應(yīng)用中輸入輸出接口的數(shù)量和隨機(jī)存儲(chǔ)器RAM的數(shù)量可以靈活設(shè)置,不受圖4所示實(shí)施例的限制。其中,所述輸入輸出接口 410,用于接收文件,并將所述文件輸入到所述門級(jí)電路430 ;每個(gè)所述RAM420,用于保存至少一個(gè)哈希子表;所述門級(jí)電路430,用于計(jì)算所述文件中多個(gè)數(shù)據(jù)塊的哈希值,選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表,并將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述保存所述對(duì)應(yīng)的哈希子表的RAM420中。其中,所述門級(jí)電路430,可以具體用于從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊,并行計(jì)算獲取的所述多個(gè)數(shù)據(jù)塊的哈希值,對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍,根據(jù)比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。其中,所述門級(jí)電路430,可以具體用于當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。進(jìn)一步,所述門級(jí)電路430,可以具體用于按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;或者,按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。本發(fā)明實(shí)施例中示出的芯片在實(shí)際應(yīng)用中可以采用可編程門陣列(FieldProgrammable Gate Array, FPGA)。由上述實(shí)施例可見,該實(shí)施例可以通過硬件實(shí)現(xiàn)同時(shí)計(jì)算并存儲(chǔ)多個(gè)數(shù)據(jù)塊的哈希值,因此當(dāng)文件中的數(shù)據(jù)塊數(shù)量較多時(shí),可以加快哈希值的處理速度,提高哈希值的存儲(chǔ)效率。參見圖5,為應(yīng)用本發(fā)明實(shí)施例的一個(gè)芯片的架構(gòu)示意圖,假設(shè)該芯片可以用于實(shí)現(xiàn)16路hash值的并行計(jì)算和存儲(chǔ)圖5中,芯片中包括輸入輸出接口,門級(jí)電路及16個(gè)RAM。其中,門級(jí)電路中包括16個(gè)hash值計(jì)算模塊和對(duì)應(yīng)的16個(gè)選擇模塊,以及一個(gè)hash值存儲(chǔ)模塊;hash值存儲(chǔ)模塊與16個(gè)RAM相連,每個(gè)RAM中存儲(chǔ)一個(gè)hash子表。應(yīng)用圖5中示出的芯片架構(gòu),可以同時(shí)計(jì)算16個(gè)hash值,與現(xiàn)有僅能每次計(jì)算一個(gè)hash值相比,處理速度可以提高16倍。本實(shí)施例中在計(jì)算hash值時(shí),可以按照字符在文件中的順序,每次并行處理時(shí)獲取18bit數(shù)據(jù),每個(gè)字符作為一個(gè)data,大小為lbit,假設(shè)本實(shí)施例中根據(jù)當(dāng)前字符和當(dāng)前字符之前的兩個(gè)字符計(jì)算該當(dāng)前字符的哈希值,則對(duì)于ISbit數(shù)據(jù),可以根據(jù)第1、2、3個(gè)字符計(jì)算第3個(gè)字符的哈希值,根據(jù)第2、3、4個(gè)字符計(jì)算第4個(gè)字符的哈希值,以此類推,根據(jù)第16、17、18個(gè)字符計(jì)算第18個(gè)字符的哈希值,即ISbit數(shù)據(jù)中第3個(gè)字符至第18個(gè)字符的哈希值分別通過圖5中的16路hash值計(jì)算模塊進(jìn)行計(jì)算。其中,每個(gè)hash值計(jì)算模塊從輸入輸出接口獲取到的數(shù)據(jù)塊中包含3個(gè)字符。在每個(gè)hash值計(jì)算模塊中,可以采用如下公式計(jì)算hash值Hash= (data (i~2) 10)' (data (i-1) 5)' (data (i) ), i 的取值范圍為 3 至18 ;上式中,“〈〈”表示向左移,表示異或運(yùn)算。假設(shè)本實(shí)施例中hash值的計(jì)算結(jié)果為15bit,每個(gè)data為8bit,以計(jì)算第3個(gè)字符的hash值為例,公式為“ (datal 10) ~ (data2〈〈5) ~ (data3) ”,其中,用于異或運(yùn)算的第一個(gè)值“(datal〈〈10)”表示將8bit的datal向左移10位,即在低位上補(bǔ)10個(gè)0,同時(shí)為了獲得15bit的計(jì)算結(jié)果,則將計(jì)算得到的ISbit的高三位去除;用于異或運(yùn)算的第二個(gè)值“(data2〈〈5)”表示將8bit的data2向左移5位,即在低位上補(bǔ)5個(gè)0,同時(shí)為了獲得15bit的計(jì)算結(jié)果,將計(jì)算得到的13bit的高二位上補(bǔ)O ;用于異或運(yùn)算的第三個(gè)值(data3),為了獲得15bit的計(jì)算結(jié)果,將8bit的data3的高位補(bǔ)7個(gè)O ;將上述三個(gè)15bit的值進(jìn)行異或運(yùn)算后得到的值即為data3的hash值。每個(gè)hash值計(jì)算模塊計(jì)算完所獲取的data的hash值之后,將該hash值輸入到對(duì)應(yīng)的選擇模塊,由選擇模塊根據(jù)hash值選擇對(duì)應(yīng)的哈希子表,如下表I所示,為一種hash子表的存儲(chǔ)范圍不例表I
權(quán)利要求
1.一種哈希值存儲(chǔ)方法,其特征在于,所述方法包括 計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值; 選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表; 將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述對(duì)應(yīng)的哈希子表中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值,包括 從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊; 并行計(jì)算獲取的所述多個(gè)數(shù)據(jù)塊的哈希值。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表,包括 對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍;根據(jù)比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。
4.根據(jù)權(quán)利要求I至3任意一項(xiàng)所述的方法,其特征在于,所述將每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述對(duì)應(yīng)的哈希子表中,包括 當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表,包括 按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;或者, 按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。
6.一種哈希值存儲(chǔ)裝置,其特征在于,所述裝置包括 計(jì)算單元,用于計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值; 選擇單元,用于選擇所述計(jì)算單元計(jì)算的所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表; 存儲(chǔ)單元,用于將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述選擇單元選擇的所述對(duì)應(yīng)的哈希子表中。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述計(jì)算單元包括 獲取子單元,用于從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊; 計(jì)算子單元,用于并行計(jì)算所述獲取子單元獲取的所述多個(gè)數(shù)據(jù)塊的哈希值。
8.根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述選擇單元包括 比較子單元,用于對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍; 獲得子單元,用于根據(jù)所述比較子單元的比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。
9.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的裝置,其特征在于, 所述存儲(chǔ)單元,具體用于當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述存儲(chǔ)單元包括至少一個(gè)下述單元 第一存儲(chǔ)子單元,用于按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表; 第二存儲(chǔ)子單元,用于按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。
11.一種芯片,其特征在于,所述芯片包括至少一個(gè)輸入輸出接口,至少一個(gè)隨機(jī)存儲(chǔ)器RAM,和門級(jí)電路,其中, 所述輸入輸出接口,用于接收文件,并將所述文件輸入到所述門級(jí)電路; 每個(gè)所述RAM,用于保存至少一個(gè)哈希子表; 所述門級(jí)電路,用于計(jì)算所述文件中多個(gè)數(shù)據(jù)塊的哈希值,選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表,并將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述保存所述對(duì)應(yīng)的哈希子表的RAM中。
12.根據(jù)權(quán)利要求11所述的芯片,其特征在于, 所述門級(jí)電路,具體用于從所述文件中獲取與設(shè)置的并行處理數(shù)一致的多個(gè)數(shù)據(jù)塊,并行計(jì)算獲取的所述多個(gè)數(shù)據(jù)塊的哈希值,對(duì)于每個(gè)數(shù)據(jù)塊,比較所述數(shù)據(jù)塊的哈希值與每個(gè)哈希子表存儲(chǔ)的哈希值范圍,根據(jù)比較結(jié)果,獲得所述數(shù)據(jù)塊的哈希值所屬的哈希值范圍對(duì)應(yīng)的哈希子表,將獲得的所述哈希子表確定為所述數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表。
13.根據(jù)權(quán)利要求11或12所述的芯片,其特征在于, 所述門級(jí)電路,具體用于當(dāng)所述多個(gè)數(shù)據(jù)塊中的至少兩個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)同一個(gè)哈希子表時(shí),按照預(yù)設(shè)方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。
14.根據(jù)權(quán)利要求13所述的芯片,其特征在于, 所述門級(jí)電路,具體用于按照所述至少兩個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的優(yōu)先級(jí)從高到低的順序,將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表;或者,按照隨機(jī)選擇的方式將所述至少兩個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述同一個(gè)哈希子表。
全文摘要
本發(fā)明實(shí)施例公開了哈希值存儲(chǔ)方法、裝置及芯片,所述方法包括計(jì)算文件中多個(gè)數(shù)據(jù)塊的哈希值;選擇所述多個(gè)數(shù)據(jù)塊中每個(gè)數(shù)據(jù)塊的哈希值對(duì)應(yīng)的哈希子表;將所述每個(gè)數(shù)據(jù)塊的哈希值和所述數(shù)據(jù)塊在所述文件中的位置信息存儲(chǔ)到所述對(duì)應(yīng)的哈希子表中。本發(fā)明實(shí)施例可以通過硬件實(shí)現(xiàn)同時(shí)計(jì)算并存儲(chǔ)多個(gè)數(shù)據(jù)塊的哈希值,因此當(dāng)文件中的數(shù)據(jù)塊數(shù)量較多時(shí),可以加快哈希值的處理速度,提高哈希值的存儲(chǔ)效率。
文檔編號(hào)G06F17/30GK102930004SQ20121042070
公開日2013年2月13日 申請(qǐng)日期2012年10月29日 優(yōu)先權(quán)日2012年10月29日
發(fā)明者覃祥菊, 周咸春 申請(qǐng)人:華為技術(shù)有限公司