亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

硬件有效的拉賓指紋識別的制作方法

文檔序號:10488963閱讀:310來源:國知局
硬件有效的拉賓指紋識別的制作方法
【專利摘要】本發(fā)明涉及硬件有效的拉賓指紋識別。公開了以網(wǎng)速對大數(shù)據(jù)對象進(jìn)行指紋識別的方法。這些技術(shù)包括取新/移位流水線、分割取新、優(yōu)化、在線通道取樣和流水線選擇。該架構(gòu)也可被復(fù)制以針對更高的系統(tǒng)吞吐量并行工作。指紋識別可提供用于識別數(shù)據(jù)流中的重復(fù)的有效機(jī)構(gòu),基于所識別指紋的重復(fù)刪除可提供減小的存儲成本、減小的網(wǎng)絡(luò)帶寬消耗、減小的處理時間和其它益處。在一些實施例中,可使用指紋識別來確保或驗證數(shù)據(jù)完整性并且可促成損壞或篡改的檢測。(借助硬件、軟件或組合)產(chǎn)生指紋的有效方式可減少產(chǎn)生指紋所需的計算負(fù)擔(dān)和/或時間。
【專利說明】
硬件有效的拉賓指紋識別
[0001] 相關(guān)申請的交叉引用
[0002] 本申請要求2015年1月29日提交的、名稱為"Methods and Systems for More Efficient Rabin Fingerprinting"(更有效的拉賓指紋識別的方法和系統(tǒng))的美國臨時專 利申請No. 62/109,524的優(yōu)先權(quán),其全部內(nèi)容以引用方式并入本文中。
技術(shù)領(lǐng)域
[0003] 本公開涉及硬件有效的指紋識別。特別地,本公開涉及對高吞吐量數(shù)據(jù)計算指紋 的流水線硬件架構(gòu)。
【背景技術(shù)】
[0004] 隨著數(shù)據(jù)快速增加,識別并且減小數(shù)據(jù)的存儲、發(fā)送和處理的冗余變得越來越重 要。用于識別冗余數(shù)據(jù)的常見技術(shù)之一是將數(shù)據(jù)塊的略圖(sketch)進(jìn)行比較,以查明重復(fù) 度或相似度。舉例說明,經(jīng)證實,拉賓指紋(Rabin Fingerprinting)是有效的并且被廣泛用 于檢測數(shù)據(jù)的重復(fù)度和相似度。為了使用拉賓指紋獲得數(shù)據(jù)塊的略圖,使用每步向前滾動 一個字節(jié)的例如8字節(jié)長的固定大小窗口來掃描數(shù)據(jù)。使用被稱為"瓦片(shingle)"的窗口 內(nèi)的數(shù)據(jù)來計算拉賓指紋。這個過程一直持續(xù),直到完成數(shù)據(jù)的分塊。在掃描期間和掃描之 后,對指紋進(jìn)行取樣,以形成數(shù)據(jù)塊的略圖。這種算法適于離線數(shù)據(jù)備份和存檔應(yīng)用中的數(shù) 據(jù)重復(fù)刪除(de-duplication),但要求在為了流式傳輸(streaming)數(shù)據(jù)以網(wǎng)速(wire speed)工作時進(jìn)行密集計算。
[0005] 在存儲裝置接近每秒吉字節(jié)的吞吐量和亞毫秒的延遲的情況下,指紋識別的軟件 方法在無法保證巨大量的計算能力的情況下不足以進(jìn)行實時數(shù)據(jù)處理,巨大量的計算能力 會影響性能和資源利用。依據(jù)上文,可理解,會存在大量與產(chǎn)生指紋和刪除重復(fù)數(shù)據(jù)的當(dāng)前 技術(shù)關(guān)聯(lián)的問題和不足。

【發(fā)明內(nèi)容】

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