硬件有效的指紋識(shí)別的制作方法
【專利摘要】本發(fā)明涉及硬件有效的指紋識(shí)別。公開了以網(wǎng)速對(duì)大數(shù)據(jù)對(duì)象進(jìn)行指紋識(shí)別的方法。這些技術(shù)包括取新/移位流水線、分割取新、優(yōu)化、在線通道取樣和流水線選擇。該架構(gòu)也可被復(fù)制以針對(duì)更高的系統(tǒng)吞吐量并行工作。指紋識(shí)別可提供用于識(shí)別數(shù)據(jù)流中的重復(fù)的有效機(jī)構(gòu),基于所識(shí)別指紋的重復(fù)刪除可提供減小的存儲(chǔ)成本、減小的網(wǎng)絡(luò)帶寬消耗、減小的處理時(shí)間和其它益處。在一些實(shí)施例中,可使用指紋識(shí)別來(lái)確?;蝌?yàn)證數(shù)據(jù)完整性并且可促成損壞或篡改的檢測(cè)。(借助硬件、軟件或組合)產(chǎn)生指紋的有效方式可減少產(chǎn)生指紋所需的計(jì)算負(fù)擔(dān)和/或時(shí)間。
【專利說(shuō)明】
硬件有效的指紋識(shí)別
[0001] 相關(guān)申請(qǐng)的交叉引用
[0002] 本申請(qǐng)要求2015年1月29日提交的、名稱為"Methods and Systems for More Efficient Rabin Fingerprinting"(更有效的拉賓指紋識(shí)別的方法和系統(tǒng))的美國(guó)臨時(shí)專 利申請(qǐng)No. 62/109,524的優(yōu)先權(quán),其全部?jī)?nèi)容以引用方式并入本文中。
技術(shù)領(lǐng)域
[0003] 本公開涉及硬件有效的指紋識(shí)別。特別地,本公開涉及對(duì)高吞吐量數(shù)據(jù)計(jì)算指紋 的流水線硬件架構(gòu)。
【背景技術(shù)】
[0004] 隨著數(shù)據(jù)快速增加,識(shí)別并且減小數(shù)據(jù)的存儲(chǔ)、發(fā)送和處理的冗余變得越來(lái)越重 要。用于識(shí)別冗余數(shù)據(jù)的常見技術(shù)之一是將數(shù)據(jù)塊的略圖(sketch)進(jìn)行比較,以查明重復(fù) 度或相似度。舉例說(shuō)明,經(jīng)證實(shí),拉賓指紋(Rabin Fingerprinting)是有效的并且被廣泛用 于檢測(cè)數(shù)據(jù)的重復(fù)度和相似度。為了使用拉賓指紋獲得數(shù)據(jù)塊的略圖,使用每步向前滾動(dòng) 一個(gè)字節(jié)的例如8字節(jié)長(zhǎng)的固定大小窗口來(lái)掃描數(shù)據(jù)。使用被稱為"瓦片(shingle)"的窗口 內(nèi)的數(shù)據(jù)來(lái)計(jì)算拉賓指紋。這個(gè)過(guò)程一直持續(xù),直到完成數(shù)據(jù)的分塊。在掃描期間和掃描之 后,對(duì)指紋進(jìn)行取樣,以形成數(shù)據(jù)塊的略圖。這種算法適于離線數(shù)據(jù)備份和存檔應(yīng)用中的數(shù) 據(jù)重復(fù)刪除(de-duplication),但要求在為了流式傳輸(streaming)數(shù)據(jù)以網(wǎng)速(wire speed)工作時(shí)進(jìn)行密集計(jì)算。
[0005] 在存儲(chǔ)裝置接近每秒吉字節(jié)的吞吐量和亞毫秒的延遲的情況下,指紋識(shí)別的軟件 方法在無(wú)法保證巨大量的計(jì)算能力的情況下不足以進(jìn)行實(shí)時(shí)數(shù)據(jù)處理,巨大量的計(jì)算能力 會(huì)影響性能和資源利用。依據(jù)上文,可理解,會(huì)存在大量與產(chǎn)生指紋和刪除重復(fù)數(shù)據(jù)的當(dāng)前 技術(shù)關(guān)聯(lián)的問(wèn)題和不足。
【發(fā)明內(nèi)容】
[0006] 本公開涉及用于進(jìn)行硬件有效的指紋識(shí)別的系統(tǒng)和方法。
[0007] 這些方面中的一個(gè)或多個(gè)的其它實(shí)現(xiàn)方式包括對(duì)應(yīng)系統(tǒng)、設(shè)備和被構(gòu)造成在計(jì)算 機(jī)存儲(chǔ)裝置上編碼的執(zhí)行該方法中的動(dòng)作的計(jì)算機(jī)程序。應(yīng)該理解,主要出于可靠性和指 導(dǎo)性目的來(lái)選擇本公開中使用的語(yǔ)言,該語(yǔ)言不限于本文中公開的主題的范圍。
【附圖說(shuō)明】
[0008] 在附圖的圖中舉例地而非限制地說(shuō)明本公開,在附圖中,使用類似的參考標(biāo)號(hào)來(lái) 表示類似的元件。
[0009] 圖1是示出包括主機(jī)、互連和多個(gè)目標(biāo)的示例系統(tǒng)的高級(jí)別框圖。
[0010]圖2A是示出被構(gòu)造成實(shí)現(xiàn)本文中引入的技術(shù)的示例主機(jī)的框圖。
[0011]圖2B是示出被構(gòu)造成實(shí)現(xiàn)本文中引入的技術(shù)的示例目標(biāo)的框圖。
[0012] 圖3示出根據(jù)本文中描述的技術(shù)的用于產(chǎn)生拉賓指紋的示例不可約多項(xiàng)式p(x)和 結(jié)果是指紋的示例方程集合。
[0013] 圖4是示出根據(jù)本文中描述的技術(shù)的數(shù)據(jù)流中的瓦片的圖形表示。
[0014]圖5是示出根據(jù)本文中描述的技術(shù)的增量計(jì)算流水線設(shè)計(jì)的圖形表示。
[0015] 圖6是示出根據(jù)本文中描述的技術(shù)的增量計(jì)算指紋的示例方法的流程圖。
[0016] 圖7是示出根據(jù)本文中描述的技術(shù)的示例指紋模塊的框圖。
[0017]圖8A是示出根據(jù)本文中描述的技術(shù)的具有分割取新級(jí)(split Fresh stages)的 示例指紋流水線的框圖。
[0018]圖8B是示出根據(jù)本文中描述的技術(shù)的示例并行流水線的框圖。
[0019]圖9是示出根據(jù)本文中描述的技術(shù)的示例取樣模塊的框圖。
[0020] 圖10是示出根據(jù)本文中描述的技術(shù)的示例指紋選擇模塊的框圖。
【具體實(shí)施方式】
[0021] 以下,描述用于實(shí)現(xiàn)對(duì)高吞吐量流式傳輸數(shù)據(jù)計(jì)算指紋的流水線硬件架構(gòu)的系統(tǒng) 和方法。雖然本公開的系統(tǒng)、方法是在特定系統(tǒng)架構(gòu)的背景下描述的,但應(yīng)該理解,系統(tǒng)、方 法和接口可應(yīng)用于硬件的其它架構(gòu)和組織。
[0022] 拉賓指紋識(shí)別可有效地提供用于識(shí)別數(shù)據(jù)塊的重復(fù)或相似部分的特有簽名或指 紋??墒褂秒S機(jī)選擇的多項(xiàng)式(P)產(chǎn)生拉賓指紋。在給定η位消息(例如,m=m〇,mi,. . .,mn-i) 的情況下,可將消息表達(dá)為有限域GF(2)內(nèi)的n-1次多項(xiàng)式。然后,選擇GF(2)內(nèi)的k次隨機(jī)多 項(xiàng)式PU),將消息m的指紋定義為在GF(2)內(nèi)將f(x)除以p( X)之后的余數(shù),可認(rèn)為該余數(shù)是 k-Ι次多項(xiàng)式或k位數(shù)。當(dāng)p(X)是不可約的時(shí),兩個(gè)特征使拉賓指紋是將各種消息分區(qū)(bin) 的優(yōu)良候選項(xiàng):1)如果兩個(gè)消息等同,則它們將產(chǎn)生相同的指紋;2)如果兩個(gè)消息不同,則 這些消息給出相同指紋的概率低(例如,接近2^ /2)。然而,在一些實(shí)施例中,隨機(jī)選擇不可 約多項(xiàng)式可能是不切實(shí)際的。特別地,查明隨機(jī)不可約多項(xiàng)式在硬件中會(huì)是微不足道的任 務(wù)。在一些實(shí)施例中,可選擇滿足幾個(gè)標(biāo)準(zhǔn)的多項(xiàng)式并且可將該多項(xiàng)式重新使用多次。標(biāo)準(zhǔn) 可包括:1)確保真實(shí)世界數(shù)據(jù)的沖突如可合理預(yù)期地那樣稀少;和2)多項(xiàng)式的表示基于相 對(duì)于a)指紋產(chǎn)生所需的操作的數(shù)量;b)減少指紋產(chǎn)生所需的扇入操作或門;和c)減少指紋 產(chǎn)生所需的扇出操作或門進(jìn)行優(yōu)化而導(dǎo)致有效實(shí)現(xiàn)。
[0023] 在一些實(shí)施例中,這些技術(shù)可被實(shí)現(xiàn)為改進(jìn)產(chǎn)生指紋以進(jìn)行有效重復(fù)刪除、數(shù)據(jù) 完整性驗(yàn)證和安全性和其它目的的方法。根據(jù)一些實(shí)施例,可用專用硬件生成指紋??稍谙?統(tǒng)中實(shí)現(xiàn)硬件指紋識(shí)別模塊或組件來(lái)得到輸入數(shù)據(jù)流的簽名。為了確保指紋產(chǎn)生能夠緊跟 數(shù)據(jù)流,可針對(duì)所選擇的多項(xiàng)式創(chuàng)建優(yōu)化的流水線架構(gòu)(使用所選擇的多項(xiàng)式來(lái)產(chǎn)生拉賓 指紋),從而可減少設(shè)計(jì)的資源消耗和/或平衡一種或多種流水線狀態(tài)之間的資源分配。這 可提供更好的整體系統(tǒng)性能。指紋識(shí)別可提供識(shí)別數(shù)據(jù)流中的重復(fù)的有效機(jī)制,基于所識(shí) 別指紋的重復(fù)刪除可提供降低的存儲(chǔ)成本、減小的網(wǎng)絡(luò)帶寬消耗、減少的處理時(shí)間和其它 益處。在一些實(shí)施例中,可使用指紋識(shí)別來(lái)確?;蝌?yàn)證數(shù)據(jù)完整性并且可促成損壞或篡改 的檢測(cè)。(借助硬件、軟件或組合)產(chǎn)生指紋的有效方式可減少產(chǎn)生指紋所需的計(jì)算負(fù)擔(dān)和/ 或時(shí)間。雖然本文中的示例涉及拉賓指紋,但同樣地,本文中公開的技術(shù)中的一些還應(yīng)用于 其它類型的循環(huán)冗余校驗(yàn)碼和指紋計(jì)算。
[0024] 圖1是示出包括主機(jī)102、互連108和多個(gè)目標(biāo)110、116和122的示例系統(tǒng)100的高級(jí) 別框圖。主機(jī)系統(tǒng)102可采用任何合適形式,諸如但不限于企業(yè)服務(wù)器、數(shù)據(jù)庫(kù)主機(jī)、工作 站、個(gè)人計(jì)算機(jī)、移動(dòng)電話、游戲裝置、個(gè)人數(shù)字助理(PDA)、電子郵件/文本發(fā)消息裝置、數(shù) 字相機(jī)、數(shù)字媒體(例如,MP3)播放器、GPS導(dǎo)航裝置、TV系統(tǒng)等。
[0025] 主機(jī)系統(tǒng)102可通過(guò)互連108和/網(wǎng)絡(luò)(未示出)與目標(biāo)110、116和122通信耦合。例 如,互連108可以是PCI快速(PCIe)交換器并且可借助主機(jī)內(nèi)的PCIe根聯(lián)合體將目標(biāo)110、 116和122與主機(jī)102耦合。類似地,互連可以是借助SCSI、光纖通道、SAS、SATA、eSATA等將主 機(jī)120與目標(biāo)110、116和122連接的主機(jī)總線適配器(HBA)。在圖1的示例中,目標(biāo)110、116和 122可以是任何合適的PCIe兼容裝置,例如,基于非易失性存儲(chǔ)器快速(NVMe)的目標(biāo)。目標(biāo) 110、116和122均可包含相應(yīng)的NVMe控制器112、118和124和相應(yīng)的非易失性存儲(chǔ)裝置114、 120和126。
[0026] 根據(jù)一些實(shí)施例,除了PCIe外的接口標(biāo)準(zhǔn)可用于主機(jī)102和目標(biāo)110、116和122之 間的鏈路的一個(gè)或多個(gè)部分。例如,鏈路可包括但不限于串行高級(jí)技術(shù)附件(SATA)、高級(jí)技 術(shù)附件(ATA)、小計(jì)算機(jī)系統(tǒng)接口(SCSI)、PCI擴(kuò)展(PCI-X)、光纖通道、串行連接SCSI(SAS)、 安全數(shù)字(SD )、嵌入式多媒體卡(EMMC )、通用閃存存儲(chǔ)器(UFS )、或任何其它合適的接口標(biāo) 準(zhǔn)或接口標(biāo)準(zhǔn)的組合。
[0027] 主機(jī)系統(tǒng)102和目標(biāo)裝置可包括為了簡(jiǎn)化附圖而在圖1中未示出的額外組件。另 外,在一些實(shí)施例中,示出的組件并非都存在。另外,各種控制器、塊和接口可按任何合適的 方式實(shí)現(xiàn)。例如,控制器可采用例如微處理器或處理器和存儲(chǔ)能由(微)處理器、邏輯門、開 關(guān)、專用集成電路(ASIC)、可編程邏輯控制器和嵌入式微控制器執(zhí)行的計(jì)算機(jī)可讀程序代 碼(例如,軟件或固件)的計(jì)算機(jī)可讀介質(zhì)中的一個(gè)或多個(gè)的形式。
[0028]圖2A是示出被構(gòu)造成實(shí)現(xiàn)這里引入的技術(shù)的示例主機(jī)200的框圖。在圖2A的示例 中,主機(jī)102包括存儲(chǔ)接口(I/F)模塊202、處理器204和存儲(chǔ)器206。主機(jī)102的組件通信耦合 到總線或軟件通信機(jī)構(gòu)220,以彼此進(jìn)行通信。
[0029]如上所述的存儲(chǔ)接口模塊202被構(gòu)造成將主機(jī)102與目標(biāo)110、116和122連接。例 如,存儲(chǔ)接口模塊202可以是用于向目標(biāo)110、116和122發(fā)送數(shù)據(jù)和/或從目標(biāo)110、116和122 接收數(shù)據(jù)的PCIe根聯(lián)合體等。
[0030] 處理器204可包括算術(shù)邏輯單元、微處理器、通用控制器或用于執(zhí)行計(jì)算的某個(gè)其 它處理器陣列。在一些實(shí)現(xiàn)方式中,處理器204是具有一個(gè)或多個(gè)處理核的硬件處理器。處 理器204耦合到總線220,以與其它組件進(jìn)行通信。處理器204處理數(shù)據(jù)信號(hào)并且可包括各種 計(jì)算架構(gòu),包括復(fù)雜指令集計(jì)算機(jī)(CISC)架構(gòu)、精簡(jiǎn)指令集計(jì)算機(jī)(RISC)架構(gòu)、或?qū)崿F(xiàn)指令 集組合的架構(gòu)。盡管在圖2A的示例中只示出單個(gè)處理器,但可包括多個(gè)處理器和/或處理 核。應(yīng)該理解,其它處理器構(gòu)造是可能的。
[0031] 存儲(chǔ)器206存儲(chǔ)可由處理器204執(zhí)行的指令和/或數(shù)據(jù)。在圖示的實(shí)現(xiàn)方式中,存儲(chǔ) 器206包括指紋模塊212、重復(fù)刪除模塊214、參考索引模塊216和應(yīng)用218。存儲(chǔ)器206耦合到 總線220,以與主機(jī)102的其它組件進(jìn)行通信。存儲(chǔ)器206中存儲(chǔ)的指令和/或數(shù)據(jù)可包括用 于執(zhí)行本文中描述的技術(shù)中的任一個(gè)和/或全部的代碼。存儲(chǔ)器206可以是例如諸如動(dòng)態(tài)隨 機(jī)存取存儲(chǔ)器(DRAM)裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)裝置、閃存存儲(chǔ)器或某些其它存儲(chǔ) 器裝置的非暫態(tài)存儲(chǔ)器。存儲(chǔ)器還可包括用于提供應(yīng)用218的文件級(jí)數(shù)據(jù)存儲(chǔ)和取回的文 件系統(tǒng)(未示出)。另外,存儲(chǔ)器可包括塊級(jí)驅(qū)動(dòng)器(未示出),用于對(duì)借助存儲(chǔ)接口模塊202 耦合到主機(jī)102的目標(biāo)存儲(chǔ)裝置提供塊級(jí)數(shù)據(jù)訪問(wèn)。
[0032]指紋模塊212可被構(gòu)造成根據(jù)本文中公開的技術(shù)針對(duì)數(shù)據(jù)塊計(jì)算指紋。參考索引 模塊216可用包含由參考?jí)K產(chǎn)生的參考指紋的簽名域訪問(wèn)、存儲(chǔ)、產(chǎn)生和管理參考?jí)K列表。 使用輸入數(shù)據(jù)塊的指紋,參考索引模塊216搜索與輸入數(shù)據(jù)塊匹配或相似的、可被用于壓縮 輸入數(shù)據(jù)塊的重復(fù)刪除模塊使用的參考?jí)K。重復(fù)刪除模塊214將輸入數(shù)據(jù)塊與帶有匹配或 相似的指紋的帶索引參考?jí)K進(jìn)行比較,以壓縮和/或消除輸入數(shù)據(jù)塊中的重復(fù)數(shù)據(jù)。在一個(gè) 實(shí)施例中,如果輸入數(shù)據(jù)塊與現(xiàn)有參考?jí)K相同,則重復(fù)刪除模塊214存儲(chǔ)現(xiàn)有數(shù)據(jù)的參考, 而不是存儲(chǔ)新數(shù)據(jù)本身。在另一個(gè)實(shí)施例中,如果新數(shù)據(jù)塊與現(xiàn)有參考?jí)K相似,則重復(fù)刪除 模塊只存儲(chǔ)示出在由其產(chǎn)生新指紋的數(shù)據(jù)和由其產(chǎn)生現(xiàn)有帶索引指紋的現(xiàn)有參考數(shù)據(jù)塊 之間的差異的S。
[0033]圖2B是示出被構(gòu)造成實(shí)現(xiàn)這里引入的技術(shù)的示例目標(biāo)(例如,目標(biāo)110)的框圖。在 圖2B的實(shí)例中,目標(biāo)110包括存儲(chǔ)接口(I/F)模塊228、處理器224、存儲(chǔ)器226、指紋模塊232、 參考索引模塊236、重復(fù)刪除模塊234和存儲(chǔ)裝置238。目標(biāo)110的組件與總線或軟件通信機(jī) 構(gòu)240通信耦合,以彼此進(jìn)行通信。圖2B的示例中的模塊可如以上參照?qǐng)D2A的示例描述的那 樣操作,不同之處在于,在圖2B中,可例如在現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路 (ASIC)等上用硬件實(shí)現(xiàn)這些模塊。雖然在圖2B的示例中被描繪為是不同模塊,但應(yīng)該理解, 可在同一硬件或各種硬件裝置上實(shí)現(xiàn)模塊中的一個(gè)或多個(gè)。
[0034] 在一些實(shí)施例中,指紋模塊在一個(gè)時(shí)鐘周期中處理多位,以為高數(shù)據(jù)速率應(yīng)用提 供指紋識(shí)別。使用形式代數(shù),單個(gè)模運(yùn)算(例如,確定拉賓指紋)可被轉(zhuǎn)變成多個(gè)計(jì)算,這些 計(jì)算中的每個(gè)負(fù)責(zé)結(jié)果中的一位。在下面的示例中,假設(shè)數(shù)據(jù)串是64位,其結(jié)果是16位拉賓 指紋。圖3示出用于產(chǎn)生拉賓指紋的示例不可約多項(xiàng)式p( X),和結(jié)果是指紋的、使用形式代 數(shù)而得到的16個(gè)方程的集合。在圖3的不例中,(ao,ai,…,a63)代表輸入位而(bo,bi,…,bi5) 代表拉賓指紋輸出。
[0035] 在一個(gè)實(shí)施例中,為了用硬件實(shí)現(xiàn)這些方程中的一個(gè),可使用組合電路來(lái)計(jì)算所 有對(duì)應(yīng)的輸入位的異或(XOR)。這16個(gè)電路的組合在本文中被稱為取新功能(Fresh function)。至于圖3的示例中的取新功能,最大扇入是23,最大扇出是11,異或的數(shù)量是 261。在4080個(gè)16次不可約多項(xiàng)式之中,異或的最小數(shù)量是261,最小的最大扇入是19,最小 的最大扇出是8。所以,當(dāng)系統(tǒng)設(shè)計(jì)要求允許時(shí),挑選多項(xiàng)式表現(xiàn)出對(duì)于取新功能的硬件設(shè) 計(jì)而言有優(yōu)化機(jī)會(huì)。這種方案適于硬件實(shí)現(xiàn)方式。
[0036] 至于較高數(shù)據(jù)速率的應(yīng)用,拉賓指紋計(jì)算應(yīng)用于所有"瓦片"。圖4中示出這些瓦片 的示例。圖4描繪了從ao至an的數(shù)據(jù)流中的瓦片,其中,(X)是第一瓦片,(X)是第二瓦片。雖 然圖4的示例描繪了一個(gè)字節(jié)的移位,但瓦片可按其它各種多位來(lái)移位。在一個(gè)實(shí)施例中, 為了實(shí)時(shí)處理所有瓦片,可對(duì)各瓦片重復(fù)取新功能。然而,明顯地,在這種方案中出現(xiàn)重疊 計(jì)算??扇缦碌赜?jì)算A和B的拉賓指紋之間的關(guān)系:
[0037] B mod P= (V+ff · X56)mod P
[0038] B mod P=(OJ-U) · (X-Vod P)+V+W · X56)mod P
[0039] B mod P
[0040] = (-U · (X-Vod P) )mod P
[0041 ] +((X-Vod P) · (U+V · X8))mod P+(W · X56)mod P
[0042] B mod P
[0043] =(W · X56-U · (X-8mod P))mod P
[0044] +((X-Vod P) · (U+V · X8))mod P
[0045] B mod P
[0046] = (W · X56-U · (X-8mod P) )mod P
[0047] +((X-Vod P) · (U+V · X8)mod P)mod P
[0048] Let x-8 = X-8mod P
[0049] B mod P= (W · X56-U · x-8)mod P+(x-8 · A mod P)mod P
[0050] 如可明白的,新瓦片B(x)的指紋取決于舊瓦片A(x)的指紋、舊瓦片U(x)的第一字 節(jié)和輸入數(shù)據(jù)W(X)的第一字節(jié),后者是新瓦片B(X)的最后一個(gè)字節(jié)。因此,可使用前一瓦片 的指紋計(jì)算來(lái)優(yōu)化各瓦片的指紋計(jì)算。
[0051]使用64位寬數(shù)據(jù)總線和64位瓦片作為示例,在圖5中示出增量計(jì)算流水線設(shè)計(jì)。數(shù) 據(jù)是從兩個(gè)連續(xù)時(shí)鐘周期得到的,例如,(aom,…,a63)是從前一周期得到的而(a64,a 65,···, am)是從后一周期得到的。
[0052]在一些實(shí)施例中,本文中公開的技術(shù)包括查明使拉賓指紋計(jì)算用于將流中的數(shù)據(jù) 分組的多字節(jié)數(shù)據(jù)瓦片的一個(gè)完整計(jì)算和數(shù)個(gè)增量計(jì)算(例如,用于八字節(jié)數(shù)據(jù)瓦片的七 個(gè)增量計(jì)算)的操作量最少的不可約多項(xiàng)式。這些技術(shù)還包括使用所選擇的不可約多項(xiàng)式 增量地計(jì)算拉賓指紋。例如,增量計(jì)算可允許指紋計(jì)算重新使用八個(gè)字節(jié)的前一指紋計(jì)算 的計(jì)算結(jié)果。舉例來(lái)說(shuō),指紋計(jì)算可計(jì)算編號(hào)為〇至7的全部八個(gè)字節(jié)的指紋,并且可在下一 個(gè)時(shí)鐘周期向右移動(dòng)一個(gè)字節(jié)。在下一個(gè)時(shí)鐘周期,可重新使用字節(jié)〇至字節(jié)7的計(jì)算并且 可執(zhí)行涉及字節(jié)8和字節(jié)0的計(jì)算。因此,可重新使用八個(gè)字節(jié)的前一指紋的計(jì)算并且執(zhí)行 新計(jì)算,增量執(zhí)行字節(jié)1至字節(jié)8的瓦片的指紋。
[0053]圖6是增量計(jì)算指紋的示例方法的流程圖。在602中,流水線中的第一級(jí)即指紋模 塊(例如,指紋模塊212或232)執(zhí)行取新功能,例如,以如上所述由(ao,ai,···,a63)計(jì)算指紋。 在604中,指紋模塊執(zhí)行移位功能(Shift function),以計(jì)算例如(as,ag,…,a7i)的下一數(shù) 據(jù)瓦片的指紋。移位功能用來(lái)自前一瓦片(例如,第一瓦片)的逐出字節(jié)(evicted byte)、來(lái) 自其自身瓦片的吸收字節(jié)(absorbed byte),以及得自前一瓦片(例如,第一瓦片)的結(jié)果作 為輸入,以產(chǎn)生指紋。例如,移位功能利用(ao,ai,…,a?)、(a 64,a65,…,a71)和得自602的取新 功能的指紋結(jié)果。過(guò)程持續(xù)進(jìn)行,直到計(jì)算完8個(gè)指紋(例如,移位功能消耗(a 48,a49,···, a55)、(aii2,aii3,…,aii9)和得自之前移位功能的指紋結(jié)果)。在606中,如果計(jì)算完8個(gè)指紋, 則由602中的取新功能處理來(lái)自下一瓦片(a64,a65,…,am)的全部數(shù)據(jù)。由于重新使用之前 的計(jì)算,導(dǎo)致移位功能的復(fù)雜度低于取新功能的復(fù)雜度,因此當(dāng)在硬件上實(shí)現(xiàn)時(shí)消耗更少 的資源。
[0054]為了提高性能,可選擇使拉賓指紋計(jì)算對(duì)于一個(gè)完整計(jì)算和數(shù)個(gè)增量計(jì)算的操作 量最少的單個(gè)不可約多項(xiàng)式。如上所述,增量計(jì)算可允許指紋計(jì)算重新使用得自前一指紋 計(jì)算的八個(gè)字節(jié)中的七個(gè)的計(jì)算。在一個(gè)實(shí)現(xiàn)方式中,針對(duì)取新功能和七個(gè)移位功能進(jìn)行 最少量操作中的一個(gè)的不可約多項(xiàng)式是ρ(χ)=χ 16+χ13+χ12+χη+ι。至于這里描述的不可約多 項(xiàng)式,最大扇入是26,最大扇出是11,異或的總數(shù)是1153。
[0055]圖7是示出示例指紋模塊232的框圖。示例指紋模塊232包括指紋流水線702、多個(gè) 取樣模塊704a-704n和指紋選擇模塊706。在圖7中描繪的示例單個(gè)流水線設(shè)計(jì)中,數(shù)據(jù)708 從上至下地流過(guò)指紋流水線。根據(jù)這里公開的技術(shù)針對(duì)w字節(jié)數(shù)據(jù)塊產(chǎn)生的指紋的總數(shù)是 w-b+Ι,其中,b是瓦片的大小。在一些實(shí)施例中,為了減少由重復(fù)刪除模塊比較的指紋的數(shù) 量,可從全部指紋之中選擇數(shù)個(gè)指紋作為略圖來(lái)表示數(shù)據(jù)塊。在一個(gè)實(shí)施例中,針對(duì)該略圖 選擇帶有具有特定模式的前N位的指紋,因?yàn)楦髦讣y中的前這些位可被視為是隨機(jī)分布的。 這個(gè)選擇的結(jié)果是在平衡處理速度、相似度檢測(cè)、排除誤報(bào)(false positive)和分辨率方 面有好的選擇。
[0056]在每個(gè)流水線級(jí)產(chǎn)生的指紋結(jié)果被發(fā)送到右邊用于對(duì)應(yīng)通道取樣模塊進(jìn)行處理。 隨著數(shù)據(jù)塊流過(guò)流水線,對(duì)指紋進(jìn)行取樣并且將指紋存儲(chǔ)在中間緩沖器(圖9中示出)中。在 針對(duì)數(shù)據(jù)塊進(jìn)行取樣之后,指紋選擇模塊將從中間樣本之中選擇并且返回?cái)?shù)據(jù)塊的略圖。 在一些實(shí)施例中,流水線由一個(gè)取新功能和隨后的數(shù)個(gè)移位功能組成,可能非常好的是,在 資源利用方面,對(duì)于整體設(shè)計(jì)而言選擇成本高的取新功能更好地工作。這種可能是由于在 該情形下有可能可得到更加成本有效的移位功能。然而,成本高的取新功能會(huì)不利地影響 流水線的時(shí)鐘率。
[0057]總體上,期望在流水線架構(gòu)的所有級(jí)之間具有相似的設(shè)計(jì)復(fù)雜度。如以上參照移 位功能描述的,取新功能還可被分割成多個(gè)取新功能。例如,使用與以上相同的示例,取新 功能可被劃分成兩個(gè)模塊,這兩個(gè)模塊在這里被命名為取新KFresh 1)和取新2(Fresh 2)。取新1處理圖6中的Uia1,…,a38),取新2處理( &39,&4〇,'",363)。由于取新2還使用得自 取新1的結(jié)果作為輸入,原始取新的劃分可以不是平均分割。例如,當(dāng)取新1處理前39位而取 新2處理剩余25位時(shí),可進(jìn)行合適的劃分。
[0058]表1列出各個(gè)分割的取新模塊、這兩個(gè)模塊的組合,和原始單個(gè)取新功能的復(fù)雜 度。雖然資源消耗沒有隨分割的取新模塊而過(guò)多變化,但對(duì)于分割的取新設(shè)計(jì)而言,時(shí)鐘率 提尚。 L0060」 表1
[0061]圖8A是示出具有分割取新級(jí)的示例指紋流水線的框圖。示例指紋流水線包括兩個(gè) 分割的取新級(jí)802,之后是7個(gè)移位級(jí)804和各級(jí)之后的寄存器803a、803b和806a-806n。假設(shè) 有64位輸入,兩個(gè)取新模塊對(duì)于來(lái)自前一時(shí)鐘的數(shù)據(jù)的8個(gè)字節(jié)計(jì)算指紋。來(lái)自前一時(shí)鐘的 前7個(gè)字節(jié)和來(lái)自后一時(shí)鐘的前7個(gè)字節(jié)經(jīng)由流水線寄存器803a和803b被傳遞到移位1 (Shift l)804a,在移位I 804a中,針對(duì)對(duì)應(yīng)瓦片計(jì)算指紋。各級(jí)消耗前一級(jí)的結(jié)果、來(lái)自前 一時(shí)鐘的逐出字節(jié)和來(lái)自后一時(shí)鐘的吸收字節(jié)。在進(jìn)行計(jì)算之后,刪除逐出字節(jié)和吸收字 節(jié)。因此,流水線寄存器每個(gè)向前一個(gè)步驟減小2個(gè)字節(jié),直到?jīng)]有"逐出"和"吸收"的字節(jié) 要處理。
[0062]相比于具有一個(gè)取新單元的流水線,分割的取新設(shè)計(jì)在流水線中引入多一級(jí),從 而導(dǎo)使最終結(jié)果延遲的一個(gè)額外時(shí)鐘周期。然而,這個(gè)分割的取新模塊使流水線中的所有 級(jí)的處理延遲減小且一致。如果需要較高時(shí)鐘率,則取新模塊和移位模塊可被進(jìn)一步分割 成多于兩個(gè)級(jí)。在穩(wěn)態(tài)下,在每個(gè)級(jí)向通道取樣單元輸出指紋(FP n),指紋流水線702針對(duì)每 個(gè)時(shí)鐘周期產(chǎn)生八個(gè)指紋。
[0063]圖8B是示出示例并行流水線的框圖。并行流水線包括一組兩個(gè)取新功能812和814 和兩組移位功能814a-814n和824a-824n。當(dāng)數(shù)據(jù)總線寬度超過(guò)限定的瓦片大小時(shí),并行的 多個(gè)流水線可用于針對(duì)一個(gè)時(shí)鐘周期產(chǎn)生更多指紋。例如,假設(shè)輸入數(shù)據(jù)以每時(shí)鐘16字節(jié) 地進(jìn)入的并且瓦片大小保持8個(gè)字節(jié)。數(shù)據(jù)可被劃分成后8個(gè)字節(jié)和前8個(gè)字節(jié)(例如,Ll和 Hl)兒2是指得自后一時(shí)鐘的后8個(gè)字節(jié)。LI、H1和L2被饋送到流水線,其中,Ll和Hl經(jīng)歷上流 水線以產(chǎn)生八組指紋,Hl和L2經(jīng)歷下流水線2以產(chǎn)生另外八組指紋。通道取樣單元的數(shù)量和 指紋選擇模塊的大小將因此增大,每當(dāng)流水線級(jí)的數(shù)量加倍時(shí),引起多一個(gè)時(shí)鐘延遲。然 而,由于在多個(gè)流水線中節(jié)省了寄存器,導(dǎo)致整體設(shè)計(jì)的資源消耗不是線性增大的。
[0064]圖9是示出示例取樣模塊704的框圖。如上所述,各個(gè)計(jì)算出的指紋可被分成兩個(gè) 部分,索引和簽名。索引可包括幾個(gè)高階位而簽名可包括剩余位。例如,如果索引具有m位, 則簽名可被歸類為2m個(gè)分區(qū)。在分區(qū)內(nèi),選擇簽名作為最終略圖的一個(gè)候選項(xiàng)。對(duì)于每個(gè)取 樣模塊704,可存在供最終選擇的多達(dá)2 m個(gè)候選項(xiàng)。
[0065]繼續(xù)上文的16個(gè)指紋的示例,取樣模塊704使用四個(gè)MSB,即m = 4,作為索引(例如, 用于對(duì)其中存儲(chǔ)所選擇簽名的緩沖器進(jìn)行尋址)。比較器908判定最小值還是最大值被取樣 入緩沖器中。寄存器906用于緩沖輸入的簽名,以與同一分區(qū)的緩沖器輸出進(jìn)行比較。 bus攜帶寫入使能(wen)、寫入地址(addr)和待寫入數(shù)據(jù)(data)。
[0066] 當(dāng)緩沖器讀取地址等于緩沖器寫入地址時(shí),會(huì)出現(xiàn)寫后讀(RAW)危害。為了避免 RAW危害,數(shù)據(jù)前送單元被設(shè)計(jì)用于控制將哪個(gè)值與輸入簽名進(jìn)行比較。異或非(XNOR)門 910查看讀取的地址和寫入的地址是否沖突。如果它們確實(shí)沖突并且寫入使能在此刻被啟 用,則當(dāng)前寫入值將被前送到比較器。這個(gè)前送是由受與(AND)門912的輸出控制的MUX 904 進(jìn)行的。在通道取樣結(jié)束時(shí),各緩沖器加載有所有索引的候選簽名,如果用于緩沖器輸入的 索引一直沒有出現(xiàn),則這些索引中的一些可以是"0"。
[0067] 圖10是示出示例指紋選擇模塊706的框圖。當(dāng)所有簽名被置于通道取樣模塊的緩 沖器中時(shí),指紋選擇模塊706可開始選擇簽名來(lái)創(chuàng)建數(shù)據(jù)塊的略圖。根據(jù)曼伯(Manber)理 論,略圖中的簽名的數(shù)量可取決于數(shù)據(jù)塊的大小。在一個(gè)示例實(shí)施例中,指紋選擇模塊從16 個(gè)可能的簽名之中選擇8個(gè)簽名。例如,指紋選擇模塊706可選擇的索引是0、1、3、5、7、11、13 和15,盡管可選擇簽名的任何子集。
[0068]利用簽名庫(kù)1004中的八個(gè)同時(shí)可用的通道緩沖器(例如,八個(gè)通道取樣模塊的緩 沖器)的優(yōu)點(diǎn),指紋選擇模塊706使用比較器1006、1008和1010的樹來(lái)選擇該略圖的指紋。通 過(guò)在該樹的各級(jí)之間添加寄存器1016和1018,形成流水線指紋選擇設(shè)計(jì)。索引計(jì)數(shù)器1002 允許靈活地選擇簽名。例如,索引計(jì)數(shù)器讀出〇、1、3、5、7、11、13和15,每個(gè)時(shí)鐘周期一個(gè)。讀 出1012用作所有8個(gè)通道緩沖器的讀取地址。在該樹的結(jié)尾返回索引的簽名1014。
[0069]以下,描述實(shí)現(xiàn)用于對(duì)高吞吐量流式傳輸數(shù)據(jù)計(jì)算指紋的流水線硬件架構(gòu)的系統(tǒng) 和方法。在以上描述中,出于說(shuō)明的目的,闡明眾多具體細(xì)節(jié)。然而,應(yīng)該清楚,所公開的技 術(shù)可在沒有這些具體細(xì)節(jié)的任何給定子集的情況下實(shí)踐。在其它情形下,用框圖形式示出 結(jié)構(gòu)和裝置。例如,所公開的技術(shù)是在以上參照用戶界面和特定硬件的一些實(shí)現(xiàn)方式中描 述的。此外,以上公開的技術(shù)主要是在在線服務(wù)的背景下;然而,所公開的技術(shù)應(yīng)用于其它 數(shù)據(jù)源和其它數(shù)據(jù)類型(例如,示例圖像、音頻、網(wǎng)頁(yè)的其它資源的集合)。
[0070] 在說(shuō)明書中引用"一個(gè)實(shí)現(xiàn)方式"或"實(shí)現(xiàn)方式"意味著,結(jié)合實(shí)現(xiàn)方式描述的特定 特征、結(jié)構(gòu)或特性被包括在所公開技術(shù)的至少一個(gè)實(shí)現(xiàn)方式中。在本說(shuō)明書中的各種地方 出現(xiàn)短語(yǔ)"在一個(gè)實(shí)現(xiàn)方式中"不一定都是指同一實(shí)現(xiàn)方式。
[0071] 依據(jù)對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)位進(jìn)行的操作的處理和符號(hào)表示,表達(dá)了具體實(shí)施 方式的一些部分。過(guò)程可總體上被視為是導(dǎo)致結(jié)果的本身一致的步驟順序。這些步驟可涉 及物理操縱物理量。這些量采取能夠被存儲(chǔ)、傳遞、組合、比較和以其它方式操縱的電信號(hào) 或磁信號(hào)的形式。這些信號(hào)可被稱為是位、值、元素、符號(hào)、字符、術(shù)語(yǔ)、數(shù)字等的形式。
[0072] 這些和相似術(shù)語(yǔ)可與適宜的物理量關(guān)聯(lián)并且可以是應(yīng)用于這些物理量的標(biāo)記。除 非另外從之前討論中清楚地具體闡述,否則要理解,在整個(gè)說(shuō)明書中,利用例如"處理"或 "運(yùn)算"或"計(jì)算"或"確定"或"顯示"等術(shù)語(yǔ)進(jìn)行的討論可以指操縱計(jì)算機(jī)系統(tǒng)的寄存器和 存儲(chǔ)器內(nèi)的被表達(dá)為物理(電子)量的數(shù)據(jù)并且將其轉(zhuǎn)換成計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或寄存器 或其它這種信息存儲(chǔ)、發(fā)送或顯示裝置內(nèi)的類似地表達(dá)為物理量的其它數(shù)據(jù)的計(jì)算機(jī)系統(tǒng) 或類似電子計(jì)算裝置的動(dòng)作和處理。
[0073] 所公開的技術(shù)還可涉及用于執(zhí)行本文中的操作的設(shè)備。這個(gè)設(shè)備可具體出于所需 目的進(jìn)行構(gòu)造,或者它可包括由存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性激活或重構(gòu)的通用計(jì) 算機(jī)。這種計(jì)算機(jī)程序可被存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如但不限于包括軟盤、光盤、CD-ROM和磁盤、只讀存儲(chǔ)器(R0M)、隨機(jī)存取存儲(chǔ)器(RAM)、EPR0M、EEPR0M、磁或光卡的任何類型 的盤、含非易失性存儲(chǔ)器的包括USB密鑰的閃存存儲(chǔ)器或適于存儲(chǔ)電子指令的任何類型的 介質(zhì),它們均可連接到計(jì)算機(jī)系統(tǒng)總線。
[0074] 所公開的技術(shù)可采取完全硬件實(shí)現(xiàn)方式、完全軟件實(shí)現(xiàn)方式或包含硬件和軟件元 件二者的實(shí)現(xiàn)方式的形式。在一些實(shí)現(xiàn)方式中,用軟件實(shí)現(xiàn)技術(shù),軟件包括但不限于固件、 常駐軟件、微代碼等。
[0075] 此外,所公開的技術(shù)可采取能從非暫態(tài)計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)獲取的計(jì)算 機(jī)程序產(chǎn)品的形式,非暫態(tài)計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)提供程序代碼以由計(jì)算機(jī)或任何 指令執(zhí)行系統(tǒng)使用或者與計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)結(jié)合使用。出于進(jìn)行此描述的目的, 計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是任何可包含、存儲(chǔ)、傳達(dá)、傳播、或傳輸供指令執(zhí)行系 統(tǒng)、設(shè)備或裝置使用或與指令執(zhí)行系統(tǒng)、設(shè)備或裝置結(jié)合的程序的設(shè)備。
[0076] 適于存儲(chǔ)和/或執(zhí)行程序代碼的計(jì)算系統(tǒng)或數(shù)據(jù)處理系統(tǒng)將包括通過(guò)系統(tǒng)總線與 存儲(chǔ)器元件直接或間接耦合的至少一個(gè)處理器(例如,硬件處理器)。存儲(chǔ)器元件可包括在 實(shí)際執(zhí)行程序代碼、體存儲(chǔ)期間采用的本地存儲(chǔ)器和高速緩存存儲(chǔ)器,高速緩存存儲(chǔ)器提 供至少一些程序代碼的暫時(shí)存儲(chǔ),以減少在執(zhí)行期間必須從體存儲(chǔ)器取回時(shí)間代碼的數(shù) 量。
[0077] 輸入/輸出或I/O裝置(包括但不限于鍵盤、顯示器、指示裝置等)可直接地或者通 過(guò)居間I/O控制器耦合到系統(tǒng)。
[0078]網(wǎng)絡(luò)適配器還可耦合到系統(tǒng),以使數(shù)據(jù)處理器系統(tǒng)能夠變?yōu)橥ㄟ^(guò)居間私有或公共 網(wǎng)絡(luò)耦合到其它數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)裝置。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和 以太網(wǎng)卡只是當(dāng)前可用類型的網(wǎng)絡(luò)適配器中的幾個(gè)。
[0079] 最后,本文中提出的過(guò)程和顯示可與任何特定計(jì)算機(jī)或其它設(shè)備沒有固有地相 關(guān)??砂凑毡疚闹械慕虒?dǎo)將各種通用系統(tǒng)與程序一起使用,或者經(jīng)證實(shí),它可方便用于構(gòu)造 更多專業(yè)化設(shè)備來(lái)執(zhí)行所需的方法步驟。根據(jù)以下描述,將清楚各種這些系統(tǒng)所需的結(jié)構(gòu)。 另外,所公開的技術(shù)沒有參照任何特定的編程語(yǔ)言進(jìn)行描述。應(yīng)該理解,可使用各式各樣編 程語(yǔ)言來(lái)實(shí)現(xiàn)本文中描述的技術(shù)的教導(dǎo)。
[0080] 出于例證和描述的目的,呈現(xiàn)了以上對(duì)當(dāng)前技術(shù)和技能的實(shí)現(xiàn)方式的描述。意圖 不是排他性的或者將當(dāng)前技術(shù)和技能限于所公開的精確形式。依照以上教導(dǎo),許多修改形 式和各種形式是可能的。當(dāng)前技術(shù)和技能的范圍意圖不由這個(gè)【具體實(shí)施方式】來(lái)限制。當(dāng)前 技術(shù)和技能可在不脫離其精神或基本特征的情況下用其它特定形式來(lái)實(shí)現(xiàn)。同樣地,模塊、 例程、特征、屬性、方法和其它方面的特定命名和界限不是強(qiáng)制或者重要的,實(shí)現(xiàn)當(dāng)前技術(shù) 和技能或其特征的機(jī)構(gòu)可具有不同的名字、劃分和/或格式。此外,本技術(shù)的模塊、例程、特 征、屬性、方法和其它方面可被實(shí)現(xiàn)為軟件、硬件、固件或這三個(gè)的任何組合。另外,無(wú)論示 例為模塊的組件是否被實(shí)現(xiàn)為軟件,組件可被實(shí)現(xiàn)作為獨(dú)立程序、作為較大程序的部分、作 為多個(gè)單獨(dú)程序、作為靜態(tài)或動(dòng)態(tài)鏈接庫(kù)、作為內(nèi)核可加載模塊、作為裝置驅(qū)動(dòng)器,和/或在 計(jì)算機(jī)編程中以現(xiàn)在或未來(lái)已知的每個(gè)和任何其它方式實(shí)現(xiàn)。另外,當(dāng)前技術(shù)和技能決不 限于用任何特定編程語(yǔ)言來(lái)實(shí)現(xiàn),或者用于任何特定的操作系統(tǒng)或環(huán)境。因此,當(dāng)前技術(shù)和 技能的公開意圖是例證性的,而非限制性的。
【主權(quán)項(xiàng)】
1. 一種系統(tǒng),所述系統(tǒng)包括: 指紋流水線,所述指紋流水線被構(gòu)造成計(jì)算針對(duì)數(shù)據(jù)塊的指紋; 多個(gè)取樣模塊,所述多個(gè)取樣模塊與所述指紋流水線通信耦合,所述多個(gè)取樣模塊被 構(gòu)造成為了產(chǎn)生針對(duì)所述數(shù)據(jù)塊的略圖而取樣候選指紋;以及 指紋選擇模塊,所述指紋選擇模塊與所述多個(gè)取樣模塊通信耦合,所述指紋選擇模塊 被構(gòu)造成選擇多個(gè)指紋來(lái)創(chuàng)建所述數(shù)據(jù)塊的略圖。2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述指紋流水線包括: 取新模塊,所述取新模塊被構(gòu)造成由來(lái)自所述數(shù)據(jù)塊的第一數(shù)據(jù)瓦片計(jì)算第一指紋; 第一移位模塊,所述第一移位模塊與所述取新模塊的輸出通信耦合,其中,所述第一移 位模塊被構(gòu)造成使用所述第一指紋、來(lái)自所述數(shù)據(jù)塊的所述第一數(shù)據(jù)瓦片和來(lái)自所述數(shù)據(jù) 塊的第二數(shù)據(jù)瓦片計(jì)算第二指紋;以及 第二移位模塊,所述第二移位模塊與所述第一移位模塊的輸出通信耦合,其中,所述第 二移位模塊被構(gòu)造成使用所述第二指紋、來(lái)自所述數(shù)據(jù)塊的所述第二數(shù)據(jù)瓦片和來(lái)自所述 數(shù)據(jù)塊的第三數(shù)據(jù)瓦片計(jì)算第三指紋。3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其中,所述取新功能包括被構(gòu)造成由所述第一數(shù)據(jù)瓦片 計(jì)算所述第一指紋的多個(gè)取新功能。4. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,所述指紋流水線包括: 多個(gè)流水線,所述多個(gè)流水線并行操作,其中,所述多個(gè)流水線中的每個(gè)流水線包括: 取新模塊,所述取新模塊被構(gòu)造成由來(lái)自所述數(shù)據(jù)塊的第一數(shù)據(jù)瓦片計(jì)算第一指紋; 移位模塊,所述移位模塊與所述取新模塊的輸出通信耦合,其中,所述移位模塊被構(gòu)造 成使用所述第一指紋、來(lái)自所述數(shù)據(jù)塊的所述第一數(shù)據(jù)瓦片的第一部分和來(lái)自所述數(shù)據(jù)塊 的所述第一數(shù)據(jù)瓦片的第二部分計(jì)算第二指紋。5. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,使用現(xiàn)場(chǎng)可編程門陣列實(shí)現(xiàn)所述指紋流水線、所 述多個(gè)取樣模塊和所述指紋選擇模塊中的一個(gè)或多個(gè)。6. 根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括重復(fù)刪除模塊,所述重復(fù)刪除模塊與所述指 紋選擇模塊耦合,所述重復(fù)刪除模塊被構(gòu)造成使用所述數(shù)據(jù)塊的所述略圖來(lái)壓縮所述數(shù)據(jù) 塊的存儲(chǔ)。7. 根據(jù)權(quán)利要求1所述的系統(tǒng),進(jìn)一步包括: 非易失性存儲(chǔ)器快速(NVMe)控制器,其中,所述NVMe控制器包括所述指紋流水線、所述 多個(gè)取樣模塊和所述指紋選擇模塊中的一個(gè)或多個(gè)。8. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中,針對(duì)所述數(shù)據(jù)塊數(shù)據(jù)的指紋是基于不可約多項(xiàng)式 的拉賓指紋。9. 一種方法,所述方法包括: 接收包括多個(gè)數(shù)據(jù)瓦片的數(shù)據(jù)塊; 執(zhí)行取新功能,以計(jì)算針對(duì)所述多個(gè)數(shù)據(jù)瓦片的第一數(shù)據(jù)瓦片的第一指紋;以及 執(zhí)行移位功能,以計(jì)算針對(duì)所述多個(gè)數(shù)據(jù)瓦片的第二數(shù)據(jù)瓦片的第二指紋,其中,所述 移位功能使用針對(duì)所述第一數(shù)據(jù)瓦片的所述第一指紋作為輸入。10. 根據(jù)權(quán)利要求9所述的方法,進(jìn)一步包括: 執(zhí)行多個(gè)移位功能,以計(jì)算針對(duì)所述多個(gè)數(shù)據(jù)瓦片的多個(gè)指紋,其中,所述多個(gè)移位功 能中的每一個(gè)使用針對(duì)前一數(shù)據(jù)瓦片的指紋、前一數(shù)據(jù)瓦片和當(dāng)前數(shù)據(jù)瓦片作為輸入。11. 根據(jù)權(quán)利要求10所述的方法,進(jìn)一步包括: 取樣所述多個(gè)指紋; 選擇所述多個(gè)指紋的子集;以及 創(chuàng)建所述數(shù)據(jù)塊的略圖,所述數(shù)據(jù)塊包括所述多個(gè)數(shù)據(jù)瓦片,其中,所述數(shù)據(jù)塊的所述 略圖包括所述多個(gè)指紋的所述子集。12. 根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括使用所述數(shù)據(jù)塊的所述略圖來(lái)壓縮所述 數(shù)據(jù)塊的存儲(chǔ)。13. 根據(jù)權(quán)利要求9所述的方法,其中,執(zhí)行所述取新功能包括: 將所述第一數(shù)據(jù)瓦片分割成多個(gè)部分; 對(duì)所述多個(gè)部分的第一部分執(zhí)行第一取新功能;以及 使用所述第一取新功能的結(jié)果,對(duì)所述多個(gè)部分的第二部分執(zhí)行第二取新功能。14. 根據(jù)權(quán)利要求9所述的方法,其中,針對(duì)所述第一數(shù)據(jù)瓦片的所述第一指紋和針對(duì) 所述第二數(shù)據(jù)瓦片的所述第二指紋是基于不可約多項(xiàng)式的拉賓指紋。15. 根據(jù)權(quán)利要求14所述的方法,進(jìn)一步包括: 選擇所述不可約多項(xiàng)式以最小化所述取新功能和所述移位功能的計(jì)算。16. -種方法,所述方法包括: 并行執(zhí)行多個(gè)取新功能,以計(jì)算針對(duì)第一數(shù)據(jù)瓦片的第一多個(gè)指紋;以及 并行執(zhí)行第一多個(gè)移位功能,以計(jì)算針對(duì)第二數(shù)據(jù)瓦片的第二多個(gè)指紋,其中,所述多 個(gè)移位功能使用針對(duì)所述第一數(shù)據(jù)瓦片的所述第一多個(gè)指紋、所述第一數(shù)據(jù)瓦片的多個(gè)部 分和所述第二數(shù)據(jù)瓦片的多個(gè)部分作為輸入。17. 根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括: 并行執(zhí)行第二多個(gè)移位功能,以計(jì)算針對(duì)第三數(shù)據(jù)瓦片的第三多個(gè)指紋,其中,所述多 個(gè)移位功能中的每一個(gè)使用針對(duì)所述第二數(shù)據(jù)瓦片的所述第二多個(gè)指紋、所述第二數(shù)據(jù)瓦 片的多個(gè)部分和所述第三數(shù)據(jù)瓦片的多個(gè)部分作為輸入。18. 根據(jù)權(quán)利要求17所述的方法,進(jìn)一步包括: 取樣所述第一多個(gè)指紋、所述第二多個(gè)指紋和所述第三多個(gè)指紋; 選擇所述第一多個(gè)指紋、所述第二多個(gè)指紋和所述第三多個(gè)指紋的子集;以及 創(chuàng)建數(shù)據(jù)塊的略圖,所述數(shù)據(jù)塊包括所述多個(gè)數(shù)據(jù)瓦片,其中,所述數(shù)據(jù)塊的所述略圖 包括所述第一多個(gè)指紋、所述第二多個(gè)指紋和所述第三多個(gè)指紋的所述子集。19. 根據(jù)權(quán)利要求18所述的方法,進(jìn)一步包括使用所述數(shù)據(jù)塊的所述略圖來(lái)壓縮所述 數(shù)據(jù)塊的存儲(chǔ)。20. 根據(jù)權(quán)利要求16所述的方法,其中,針對(duì)所述第一數(shù)據(jù)瓦片的所述第一多個(gè)指紋和 針對(duì)所述第二數(shù)據(jù)瓦片的所述第二多個(gè)指紋是基于不可約多項(xiàng)式的拉賓指紋。
【文檔編號(hào)】G06K9/00GK105844210SQ201610058832
【公開日】2016年8月10日
【申請(qǐng)日】2016年1月28日
【發(fā)明人】茲沃尼米爾·班迪奇, 西里爾·蓋約特, 李冬陽(yáng), 阿什維恩·納拉辛哈, 王清波, 楊慶
【申請(qǐng)人】Hgst荷蘭有限公司