CN105844210B - 硬件有效的指纹识别 - Google Patents
硬件有效的指纹识别 Download PDFInfo
- Publication number
- CN105844210B CN105844210B CN201610058832.8A CN201610058832A CN105844210B CN 105844210 B CN105844210 B CN 105844210B CN 201610058832 A CN201610058832 A CN 201610058832A CN 105844210 B CN105844210 B CN 105844210B
- Authority
- CN
- China
- Prior art keywords
- data
- fingerprint
- fingerprints
- tile
- block
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/12—Fingerprints or palmprints
- G06V40/13—Sensors therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
- H03M7/3093—Data deduplication using fixed length segments
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6029—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
- Collating Specific Patterns (AREA)
Abstract
本发明涉及硬件有效的指纹识别。公开了以网速对大数据对象进行指纹识别的方法。这些技术包括取新/移位流水线、分割取新、优化、在线通道取样和流水线选择。该架构也可被复制以针对更高的系统吞吐量并行工作。指纹识别可提供用于识别数据流中的重复的有效机构,基于所识别指纹的重复删除可提供减小的存储成本、减小的网络带宽消耗、减小的处理时间和其它益处。在一些实施例中,可使用指纹识别来确保或验证数据完整性并且可促成损坏或篡改的检测。(借助硬件、软件或组合)产生指纹的有效方式可减少产生指纹所需的计算负担和/或时间。
Description
相关申请的交叉引用
本申请要求2015年1月29日提交的、名称为“Methods and Systems for MoreEfficient Rabin Fingerprinting”(更有效的拉宾指纹识别的方法和系统)的美国临时专利申请No.62/109,524的优先权,其全部内容以引用方式并入本文中。
技术领域
本公开涉及硬件有效的指纹识别。特别地,本公开涉及对高吞吐量数据计算指纹的流水线硬件架构。
背景技术
随着数据快速增加,识别并且减小数据的存储、发送和处理的冗余变得越来越重要。用于识别冗余数据的常见技术之一是将数据块的略图(sketch)进行比较,以查明重复度或相似度。举例说明,经证实,拉宾指纹(Rabin Fingerprinting)是有效的并且被广泛用于检测数据的重复度和相似度。为了使用拉宾指纹获得数据块的略图,使用每步向前滚动一个字节的例如8字节长的固定大小窗口来扫描数据。使用被称为“瓦片(shingle)”的窗口内的数据来计算拉宾指纹。这个过程一直持续,直到完成数据的分块。在扫描期间和扫描之后,对指纹进行取样,以形成数据块的略图。这种算法适于离线数据备份和存档应用中的数据重复删除(de-duplication),但要求在为了流式传输(streaming)数据以网速(wirespeed)工作时进行密集计算。
在存储装置接近每秒吉字节的吞吐量和亚毫秒的延迟的情况下,指纹识别的软件方法在无法保证巨大量的计算能力的情况下不足以进行实时数据处理,巨大量的计算能力会影响性能和资源利用。依据上文,可理解,会存在大量与产生指纹和删除重复数据的当前技术关联的问题和不足。
发明内容
本公开涉及用于进行硬件有效的指纹识别的系统和方法。
这些方面中的一个或多个的其它实现方式包括对应系统、设备和被构造成在计算机存储装置上编码的执行该方法中的动作的计算机程序。应该理解,主要出于可靠性和指导性目的来选择本公开中使用的语言,该语言不限于本文中公开的主题的范围。
附图说明
在附图的图中举例地而非限制地说明本公开,在附图中,使用类似的参考标号来表示类似的元件。
图1是示出包括主机、互连和多个目标的示例系统的高级别框图。
图2A是示出被构造成实现本文中引入的技术的示例主机的框图。
图2B是示出被构造成实现本文中引入的技术的示例目标的框图。
图3示出根据本文中描述的技术的用于产生拉宾指纹的示例不可约多项式p(x)和结果是指纹的示例方程集合。
图4是示出根据本文中描述的技术的数据流中的瓦片的图形表示。
图5是示出根据本文中描述的技术的增量计算流水线设计的图形表示。
图6是示出根据本文中描述的技术的增量计算指纹的示例方法的流程图。
图7是示出根据本文中描述的技术的示例指纹模块的框图。
图8A是示出根据本文中描述的技术的具有分割取新级(split Fresh stages)的示例指纹流水线的框图。
图8B是示出根据本文中描述的技术的示例并行流水线的框图。
图9是示出根据本文中描述的技术的示例取样模块的框图。
图10是示出根据本文中描述的技术的示例指纹选择模块的框图。
具体实施方式
以下,描述用于实现对高吞吐量流式传输数据计算指纹的流水线硬件架构的系统和方法。虽然本公开的系统、方法是在特定系统架构的背景下描述的,但应该理解,系统、方法和接口可应用于硬件的其它架构和组织。
拉宾指纹识别可有效地提供用于识别数据块的重复或相似部分的特有签名或指纹。可使用随机选择的多项式(p)产生拉宾指纹。在给定n位消息(例如,m=m0,m1,...,mn-1)的情况下,可将消息表达为有限域GF(2)内的n-1次多项式。然后,选择GF(2)内的k次随机多项式p(x),将消息m的指纹定义为在GF(2)内将f(x)除以p(x)之后的余数,可认为该余数是k-1次多项式或k位数。当p(x)是不可约的时,两个特征使拉宾指纹是将各种消息分区(bin)的优良候选项:1)如果两个消息等同,则它们将产生相同的指纹;2)如果两个消息不同,则这些消息给出相同指纹的概率低(例如,接近2-k/2)。然而,在一些实施例中,随机选择不可约多项式可能是不切实际的。特别地,查明随机不可约多项式在硬件中会是微不足道的任务。在一些实施例中,可选择满足几个标准的多项式并且可将该多项式重新使用多次。标准可包括:1)确保真实世界数据的冲突如可合理预期地那样稀少;和2)多项式的表示基于相对于a)指纹产生所需的操作的数量;b)减少指纹产生所需的扇入操作或门;和c)减少指纹产生所需的扇出操作或门进行优化而导致有效实现。
在一些实施例中,这些技术可被实现为改进产生指纹以进行有效重复删除、数据完整性验证和安全性和其它目的的方法。根据一些实施例,可用专用硬件生成指纹。可在系统中实现硬件指纹识别模块或组件来得到输入数据流的签名。为了确保指纹产生能够紧跟数据流,可针对所选择的多项式创建优化的流水线架构(使用所选择的多项式来产生拉宾指纹),从而可减少设计的资源消耗和/或平衡一种或多种流水线状态之间的资源分配。这可提供更好的整体系统性能。指纹识别可提供识别数据流中的重复的有效机制,基于所识别指纹的重复删除可提供降低的存储成本、减小的网络带宽消耗、减少的处理时间和其它益处。在一些实施例中,可使用指纹识别来确保或验证数据完整性并且可促成损坏或篡改的检测。(借助硬件、软件或组合)产生指纹的有效方式可减少产生指纹所需的计算负担和/或时间。虽然本文中的示例涉及拉宾指纹,但同样地,本文中公开的技术中的一些还应用于其它类型的循环冗余校验码和指纹计算。
图1是示出包括主机102、互连108和多个目标110、116和122的示例系统100的高级别框图。主机系统102可采用任何合适形式,诸如但不限于企业服务器、数据库主机、工作站、个人计算机、移动电话、游戏装置、个人数字助理(PDA)、电子邮件/文本发消息装置、数字相机、数字媒体(例如,MP3)播放器、GPS导航装置、TV系统等。
主机系统102可通过互连108和/网络(未示出)与目标110、116和122通信耦合。例如,互连108可以是PCI快速(PCIe)交换器并且可借助主机内的PCIe根联合体将目标110、116和122与主机102耦合。类似地,互连可以是借助SCSI、光纤通道、SAS、SATA、eSATA等将主机120与目标110、116和122连接的主机总线适配器(HBA)。在图1的示例中,目标110、116和122可以是任何合适的PCIe兼容装置,例如,基于非易失性存储器快速(NVMe)的目标。目标110、116和122均可包含相应的NVMe控制器112、118和124和相应的非易失性存储装置114、120和126。
根据一些实施例,除了PCIe外的接口标准可用于主机102和目标110、116和122之间的链路的一个或多个部分。例如,链路可包括但不限于串行高级技术附件(SATA)、高级技术附件(ATA)、小计算机系统接口(SCSI)、PCI扩展(PCI-X)、光纤通道、串行连接SCSI(SAS)、安全数字(SD)、嵌入式多媒体卡(EMMC)、通用闪存存储器(UFS)、或任何其它合适的接口标准或接口标准的组合。
主机系统102和目标装置可包括为了简化附图而在图1中未示出的额外组件。另外,在一些实施例中,示出的组件并非都存在。另外,各种控制器、块和接口可按任何合适的方式实现。例如,控制器可采用例如微处理器或处理器和存储能由(微)处理器、逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代码(例如,软件或固件)的计算机可读介质中的一个或多个的形式。
图2A是示出被构造成实现这里引入的技术的示例主机200的框图。在图2A的示例中,主机102包括存储接口(I/F)模块202、处理器204和存储器206。主机102的组件通信耦合到总线或软件通信机构220,以彼此进行通信。
如上所述的存储接口模块202被构造成将主机102与目标110、116和122连接。例如,存储接口模块202可以是用于向目标110、116和122发送数据和/或从目标110、116和122接收数据的PCIe根联合体等。
处理器204可包括算术逻辑单元、微处理器、通用控制器或用于执行计算的某个其它处理器阵列。在一些实现方式中,处理器204是具有一个或多个处理核的硬件处理器。处理器204耦合到总线220,以与其它组件进行通信。处理器204处理数据信号并且可包括各种计算架构,包括复杂指令集计算机(CISC)架构、精简指令集计算机(RISC)架构、或实现指令集组合的架构。尽管在图2A的示例中只示出单个处理器,但可包括多个处理器和/或处理核。应该理解,其它处理器构造是可能的。
存储器206存储可由处理器204执行的指令和/或数据。在图示的实现方式中,存储器206包括指纹模块212、重复删除模块214、参考索引模块216和应用218。存储器206耦合到总线220,以与主机102的其它组件进行通信。存储器206中存储的指令和/或数据可包括用于执行本文中描述的技术中的任一个和/或全部的代码。存储器206可以是例如诸如动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存存储器或某些其它存储器装置的非暂态存储器。存储器还可包括用于提供应用218的文件级数据存储和取回的文件系统(未示出)。另外,存储器可包括块级驱动器(未示出),用于对借助存储接口模块202耦合到主机102的目标存储装置提供块级数据访问。
指纹模块212可被构造成根据本文中公开的技术针对数据块计算指纹。参考索引模块216可用包含由参考块产生的参考指纹的签名域访问、存储、产生和管理参考块列表。使用输入数据块的指纹,参考索引模块216搜索与输入数据块匹配或相似的、可被用于压缩输入数据块的重复删除模块使用的参考块。重复删除模块214将输入数据块与带有匹配或相似的指纹的带索引参考块进行比较,以压缩和/或消除输入数据块中的重复数据。在一个实施例中,如果输入数据块与现有参考块相同,则重复删除模块214存储现有数据的参考,而不是存储新数据本身。在另一个实施例中,如果新数据块与现有参考块相似,则重复删除模块只存储示出在由其产生新指纹的数据和由其产生现有带索引指纹的现有参考数据块之间的差异的δ。
图2B是示出被构造成实现这里引入的技术的示例目标(例如,目标110)的框图。在图2B的实例中,目标110包括存储接口(I/F)模块228、处理器224、存储器226、指纹模块232、参考索引模块236、重复删除模块234和存储装置238。目标110的组件与总线或软件通信机构240通信耦合,以彼此进行通信。图2B的示例中的模块可如以上参照图2A的示例描述的那样操作,不同之处在于,在图2B中,可例如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)等上用硬件实现这些模块。虽然在图2B的示例中被描绘为是不同模块,但应该理解,可在同一硬件或各种硬件装置上实现模块中的一个或多个。
在一些实施例中,指纹模块在一个时钟周期中处理多位,以为高数据速率应用提供指纹识别。使用形式代数,单个模运算(例如,确定拉宾指纹)可被转变成多个计算,这些计算中的每个负责结果中的一位。在下面的示例中,假设数据串是64位,其结果是16位拉宾指纹。图3示出用于产生拉宾指纹的示例不可约多项式p(x),和结果是指纹的、使用形式代数而得到的16个方程的集合。在图3的示例中,(a0,a1,…,a63)代表输入位而(b0,b1,…,b15)代表拉宾指纹输出。
在一个实施例中,为了用硬件实现这些方程中的一个,可使用组合电路来计算所有对应的输入位的异或(XOR)。这16个电路的组合在本文中被称为取新功能(Freshfunction)。至于图3的示例中的取新功能,最大扇入是23,最大扇出是11,异或的数量是261。在4080个16次不可约多项式之中,异或的最小数量是261,最小的最大扇入是19,最小的最大扇出是8。所以,当系统设计要求允许时,挑选多项式表现出对于取新功能的硬件设计而言有优化机会。这种方案适于硬件实现方式。
至于较高数据速率的应用,拉宾指纹计算应用于所有“瓦片”。图4中示出这些瓦片的示例。图4描绘了从a0至a71的数据流中的瓦片,其中,(X)是第一瓦片,(X)是第二瓦片。虽然图4的示例描绘了一个字节的移位,但瓦片可按其它各种多位来移位。在一个实施例中,为了实时处理所有瓦片,可对各瓦片重复取新功能。然而,明显地,在这种方案中出现重叠计算。可如下地计算A和B的拉宾指纹之间的关系:
B mod P=(V+W·X56)mod P
B mod P=((U-U)·(X-8mod P)+V+W·X56)mod P
B mod P
=(-U·(X-8mod P))mod P
+((X-8mod P)·(U+V·X8))mod P+(W·X56)mod P
B mod P
=(W·X56-U·(X-8mod P))mod P
+((X-8mod P)·(U+V·X8))mod P
B mod P
=(W·X56-U·(X-8mod P))mod P
+((X-8mod P)·(U+V·X8)mod P)mod P
Let x-8=X-8mod P
B mod P=(W·X56-U·x-8)mod P+(x-8·A mod P)mod P
如可明白的,新瓦片B(x)的指纹取决于旧瓦片A(x)的指纹、旧瓦片U(x)的第一字节和输入数据W(x)的第一字节,后者是新瓦片B(x)的最后一个字节。因此,可使用前一瓦片的指纹计算来优化各瓦片的指纹计算。
使用64位宽数据总线和64位瓦片作为示例,在图5中示出增量计算流水线设计。数据是从两个连续时钟周期得到的,例如,(a0,a1,…,a63)是从前一周期得到的而(a64,a65,…,a127)是从后一周期得到的。
在一些实施例中,本文中公开的技术包括查明使拉宾指纹计算用于将流中的数据分组的多字节数据瓦片的一个完整计算和数个增量计算(例如,用于八字节数据瓦片的七个增量计算)的操作量最少的不可约多项式。这些技术还包括使用所选择的不可约多项式增量地计算拉宾指纹。例如,增量计算可允许指纹计算重新使用八个字节的前一指纹计算的计算结果。举例来说,指纹计算可计算编号为0至7的全部八个字节的指纹,并且可在下一个时钟周期向右移动一个字节。在下一个时钟周期,可重新使用字节0至字节7的计算并且可执行涉及字节8和字节0的计算。因此,可重新使用八个字节的前一指纹的计算并且执行新计算,增量执行字节1至字节8的瓦片的指纹。
图6是增量计算指纹的示例方法的流程图。在602中,流水线中的第一级即指纹模块(例如,指纹模块212或232)执行取新功能,例如,以如上所述由(a0,a1,…,a63)计算指纹。在604中,指纹模块执行移位功能(Shift function),以计算例如(a8,a9,…,a71)的下一数据瓦片的指纹。移位功能用来自前一瓦片(例如,第一瓦片)的逐出字节(evicted byte)、来自其自身瓦片的吸收字节(absorbed byte),以及得自前一瓦片(例如,第一瓦片)的结果作为输入,以产生指纹。例如,移位功能利用(a0,a1,…,a7)、(a64,a65,…,a71)和得自602的取新功能的指纹结果。过程持续进行,直到计算完8个指纹(例如,移位功能消耗(a48,a49,…,a55)、(a112,a113,…,a119)和得自之前移位功能的指纹结果)。在606中,如果计算完8个指纹,则由602中的取新功能处理来自下一瓦片(a64,a65,…,a127)的全部数据。由于重新使用之前的计算,导致移位功能的复杂度低于取新功能的复杂度,因此当在硬件上实现时消耗更少的资源。
为了提高性能,可选择使拉宾指纹计算对于一个完整计算和数个增量计算的操作量最少的单个不可约多项式。如上所述,增量计算可允许指纹计算重新使用得自前一指纹计算的八个字节中的七个的计算。在一个实现方式中,针对取新功能和七个移位功能进行最少量操作中的一个的不可约多项式是p(X)=X16+X13+X12+X11+1。至于这里描述的不可约多项式,最大扇入是26,最大扇出是11,异或的总数是1153。
图7是示出示例指纹模块232的框图。示例指纹模块232包括指纹流水线702、多个取样模块704a-704n和指纹选择模块706。在图7中描绘的示例单个流水线设计中,数据708从上至下地流过指纹流水线。根据这里公开的技术针对w字节数据块产生的指纹的总数是w-b+1,其中,b是瓦片的大小。在一些实施例中,为了减少由重复删除模块比较的指纹的数量,可从全部指纹之中选择数个指纹作为略图来表示数据块。在一个实施例中,针对该略图选择带有具有特定模式的前N位的指纹,因为各指纹中的前这些位可被视为是随机分布的。这个选择的结果是在平衡处理速度、相似度检测、排除误报(false positive)和分辨率方面有好的选择。
在每个流水线级产生的指纹结果被发送到右边用于对应通道取样模块进行处理。随着数据块流过流水线,对指纹进行取样并且将指纹存储在中间缓冲器(图9中示出)中。在针对数据块进行取样之后,指纹选择模块将从中间样本之中选择并且返回数据块的略图。在一些实施例中,流水线由一个取新功能和随后的数个移位功能组成,可能非常好的是,在资源利用方面,对于整体设计而言选择成本高的取新功能更好地工作。这种可能是由于在该情形下有可能可得到更加成本有效的移位功能。然而,成本高的取新功能会不利地影响流水线的时钟率。
总体上,期望在流水线架构的所有级之间具有相似的设计复杂度。如以上参照移位功能描述的,取新功能还可被分割成多个取新功能。例如,使用与以上相同的示例,取新功能可被划分成两个模块,这两个模块在这里被命名为取新1(Fresh 1)和取新2(Fresh2)。取新1处理图6中的(a0,a1,…,a38),取新2处理(a39,a40,…,a63)。由于取新2还使用得自取新1的结果作为输入,原始取新的划分可以不是平均分割。例如,当取新1处理前39位而取新2处理剩余25位时,可进行合适的划分。
表1列出各个分割的取新模块、这两个模块的组合,和原始单个取新功能的复杂度。虽然资源消耗没有随分割的取新模块而过多变化,但对于分割的取新设计而言,时钟率提高。
逻辑利用 | 取新1 | 取新2 | 分割的组合 | 原始的取新 |
扇入 | 13 | 11 | 13 | 24 |
扇出 | 7 | 9 | 9 | 11 |
异或 | 139 | 143 | 368 | 362 |
最大时钟率(MHz) | 551 | 542 | 548 | 487 |
表1
图8A是示出具有分割取新级的示例指纹流水线的框图。示例指纹流水线包括两个分割的取新级802,之后是7个移位级804和各级之后的寄存器803a、803b和806a-806n。假设有64位输入,两个取新模块对于来自前一时钟的数据的8个字节计算指纹。来自前一时钟的前7个字节和来自后一时钟的前7个字节经由流水线寄存器803a和803b被传递到移位1(Shift 1)804a,在移位1 804a中,针对对应瓦片计算指纹。各级消耗前一级的结果、来自前一时钟的逐出字节和来自后一时钟的吸收字节。在进行计算之后,删除逐出字节和吸收字节。因此,流水线寄存器每个向前一个步骤减小2个字节,直到没有“逐出”和“吸收”的字节要处理。
相比于具有一个取新单元的流水线,分割的取新设计在流水线中引入多一级,从而导使最终结果延迟的一个额外时钟周期。然而,这个分割的取新模块使流水线中的所有级的处理延迟减小且一致。如果需要较高时钟率,则取新模块和移位模块可被进一步分割成多于两个级。在稳态下,在每个级向通道取样单元输出指纹(FPn),指纹流水线702针对每个时钟周期产生八个指纹。
图8B是示出示例并行流水线的框图。并行流水线包括一组两个取新功能812和814和两组移位功能814a-814n和824a-824n。当数据总线宽度超过限定的瓦片大小时,并行的多个流水线可用于针对一个时钟周期产生更多指纹。例如,假设输入数据以每时钟16字节地进入的并且瓦片大小保持8个字节。数据可被划分成后8个字节和前8个字节(例如,L1和H1)。L2是指得自后一时钟的后8个字节。L1、H1和L2被馈送到流水线,其中,L1和H1经历上流水线以产生八组指纹,H1和L2经历下流水线2以产生另外八组指纹。通道取样单元的数量和指纹选择模块的大小将因此增大,每当流水线级的数量加倍时,引起多一个时钟延迟。然而,由于在多个流水线中节省了寄存器,导致整体设计的资源消耗不是线性增大的。
图9是示出示例取样模块704的框图。如上所述,各个计算出的指纹可被分成两个部分,索引和签名。索引可包括几个高阶位而签名可包括剩余位。例如,如果索引具有m位,则签名可被归类为2m个分区。在分区内,选择签名作为最终略图的一个候选项。对于每个取样模块704,可存在供最终选择的多达2m个候选项。
继续上文的16个指纹的示例,取样模块704使用四个MSB,即m=4,作为索引(例如,用于对其中存储所选择签名的缓冲器进行寻址)。比较器908判定最小值还是最大值被取样入缓冲器中。寄存器906用于缓冲输入的签名,以与同一分区的缓冲器输出进行比较。wr_bus携带写入使能(wen)、写入地址(addr)和待写入数据(data)。
当缓冲器读取地址等于缓冲器写入地址时,会出现写后读(RAW)危害。为了避免RAW危害,数据前送单元被设计用于控制将哪个值与输入签名进行比较。异或非(XNOR)门910查看读取的地址和写入的地址是否冲突。如果它们确实冲突并且写入使能在此刻被启用,则当前写入值将被前送到比较器。这个前送是由受与(AND)门912的输出控制的MUX 904进行的。在通道取样结束时,各缓冲器加载有所有索引的候选签名,如果用于缓冲器输入的索引一直没有出现,则这些索引中的一些可以是“0”。
图10是示出示例指纹选择模块706的框图。当所有签名被置于通道取样模块的缓冲器中时,指纹选择模块706可开始选择签名来创建数据块的略图。根据曼伯(Manber)理论,略图中的签名的数量可取决于数据块的大小。在一个示例实施例中,指纹选择模块从16个可能的签名之中选择8个签名。例如,指纹选择模块706可选择的索引是0、1、3、5、7、11、13和15,尽管可选择签名的任何子集。
利用签名库1004中的八个同时可用的通道缓冲器(例如,八个通道取样模块的缓冲器)的优点,指纹选择模块706使用比较器1006、1008和1010的树来选择该略图的指纹。通过在该树的各级之间添加寄存器1016和1018,形成流水线指纹选择设计。索引计数器1002允许灵活地选择签名。例如,索引计数器读出0、1、3、5、7、11、13和15,每个时钟周期一个。读出1012用作所有8个通道缓冲器的读取地址。在该树的结尾返回索引的签名1014。
以下,描述实现用于对高吞吐量流式传输数据计算指纹的流水线硬件架构的系统和方法。在以上描述中,出于说明的目的,阐明众多具体细节。然而,应该清楚,所公开的技术可在没有这些具体细节的任何给定子集的情况下实践。在其它情形下,用框图形式示出结构和装置。例如,所公开的技术是在以上参照用户界面和特定硬件的一些实现方式中描述的。此外,以上公开的技术主要是在在线服务的背景下;然而,所公开的技术应用于其它数据源和其它数据类型(例如,示例图像、音频、网页的其它资源的集合)。
在说明书中引用“一个实现方式”或“实现方式”意味着,结合实现方式描述的特定特征、结构或特性被包括在所公开技术的至少一个实现方式中。在本说明书中的各种地方出现短语“在一个实现方式中”不一定都是指同一实现方式。
依据对计算机存储器内的数据位进行的操作的处理和符号表示,表达了具体实施方式的一些部分。过程可总体上被视为是导致结果的本身一致的步骤顺序。这些步骤可涉及物理操纵物理量。这些量采取能够被存储、传递、组合、比较和以其它方式操纵的电信号或磁信号的形式。这些信号可被称为是位、值、元素、符号、字符、术语、数字等的形式。
这些和相似术语可与适宜的物理量关联并且可以是应用于这些物理量的标记。除非另外从之前讨论中清楚地具体阐述,否则要理解,在整个说明书中,利用例如“处理”或“运算”或“计算”或“确定”或“显示”等术语进行的讨论可以指操纵计算机系统的寄存器和存储器内的被表达为物理(电子)量的数据并且将其转换成计算机系统的存储器或寄存器或其它这种信息存储、发送或显示装置内的类似地表达为物理量的其它数据的计算机系统或类似电子计算装置的动作和处理。
所公开的技术还可涉及用于执行本文中的操作的设备。这个设备可具体出于所需目的进行构造,或者它可包括由存储在计算机中的计算机程序选择性激活或重构的通用计算机。这种计算机程序可被存储于计算机可读存储介质,例如但不限于包括软盘、光盘、CD-ROM和磁盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡的任何类型的盘、含非易失性存储器的包括USB密钥的闪存存储器或适于存储电子指令的任何类型的介质,它们均可连接到计算机系统总线。
所公开的技术可采取完全硬件实现方式、完全软件实现方式或包含硬件和软件元件二者的实现方式的形式。在一些实现方式中,用软件实现技术,软件包括但不限于固件、常驻软件、微代码等。
此外,所公开的技术可采取能从非暂态计算机可用或计算机可读介质获取的计算机程序产品的形式,非暂态计算机可用或计算机可读介质提供程序代码以由计算机或任何指令执行系统使用或者与计算机或任何指令执行系统结合使用。出于进行此描述的目的,计算机可用或计算机可读介质可以是任何可包含、存储、传达、传播、或传输供指令执行系统、设备或装置使用或与指令执行系统、设备或装置结合的程序的设备。
适于存储和/或执行程序代码的计算系统或数据处理系统将包括通过系统总线与存储器元件直接或间接耦合的至少一个处理器(例如,硬件处理器)。存储器元件可包括在实际执行程序代码、体存储期间采用的本地存储器和高速缓存存储器,高速缓存存储器提供至少一些程序代码的暂时存储,以减少在执行期间必须从体存储器取回时间代码的数量。
输入/输出或I/O装置(包括但不限于键盘、显示器、指示装置等)可直接地或者通过居间I/O控制器耦合到系统。
网络适配器还可耦合到系统,以使数据处理器系统能够变为通过居间私有或公共网络耦合到其它数据处理系统或远程打印机或存储装置。调制解调器、电缆调制解调器和以太网卡只是当前可用类型的网络适配器中的几个。
最后,本文中提出的过程和显示可与任何特定计算机或其它设备没有固有地相关。可按照本文中的教导将各种通用系统与程序一起使用,或者经证实,它可方便用于构造更多专业化设备来执行所需的方法步骤。根据以下描述,将清楚各种这些系统所需的结构。另外,所公开的技术没有参照任何特定的编程语言进行描述。应该理解,可使用各式各样编程语言来实现本文中描述的技术的教导。
出于例证和描述的目的,呈现了以上对当前技术和技能的实现方式的描述。意图不是排他性的或者将当前技术和技能限于所公开的精确形式。依照以上教导,许多修改形式和各种形式是可能的。当前技术和技能的范围意图不由这个具体实施方式来限制。当前技术和技能可在不脱离其精神或基本特征的情况下用其它特定形式来实现。同样地,模块、例程、特征、属性、方法和其它方面的特定命名和界限不是强制或者重要的,实现当前技术和技能或其特征的机构可具有不同的名字、划分和/或格式。此外,本技术的模块、例程、特征、属性、方法和其它方面可被实现为软件、硬件、固件或这三个的任何组合。另外,无论示例为模块的组件是否被实现为软件,组件可被实现作为独立程序、作为较大程序的部分、作为多个单独程序、作为静态或动态链接库、作为内核可加载模块、作为装置驱动器,和/或在计算机编程中以现在或未来已知的每个和任何其它方式实现。另外,当前技术和技能决不限于用任何特定编程语言来实现,或者用于任何特定的操作系统或环境。因此,当前技术和技能的公开意图是例证性的,而非限制性的。
Claims (18)
1.一种用于指纹识别的系统,所述系统包括:
指纹流水线,所述指纹流水线被构造成计算针对数据块的指纹,所述指纹流水线包括:
取新模块,所述取新模块被构造成:
将来自所述数据块的第一数据瓦片分割成多个部分;
对所述多个部分中的第一部分执行第一取新功能;以及
使用所述第一取新功能的结果对所述多个部分中的第二部分执行第二取新功能,以便由来自所述数据块的所述第一数据瓦片计算第一指纹;
第一移位模块,所述第一移位模块与所述取新模块的输出通信耦合,其中,所述第一移位模块被构造成使用所述第一指纹、来自所述数据块的所述第一数据瓦片和来自所述数据块的第二数据瓦片计算第二指纹;
多个取样模块,所述多个取样模块与所述指纹流水线通信耦合,所述多个取样模块被构造成为了产生针对所述数据块的略图而取样候选指纹;以及
指纹选择模块,所述指纹选择模块与所述多个取样模块通信耦合,所述指纹选择模块被构造成选择多个指纹来创建所述数据块的略图。
2.根据权利要求1所述的系统,其中,所述指纹流水线进一步包括:
第二移位模块,所述第二移位模块与所述第一移位模块的输出通信耦合,其中,所述第二移位模块被构造成使用所述第二指纹、来自所述数据块的所述第二数据瓦片和来自所述数据块的第三数据瓦片计算第三指纹。
3.根据权利要求1所述的系统,其中,所述指纹流水线进一步包括:
多个流水线,所述多个流水线并行操作。
4.根据权利要求1所述的系统,其中,使用现场可编程门阵列实现所述指纹流水线、所述多个取样模块和所述指纹选择模块中的一个或多个。
5.根据权利要求1所述的系统,进一步包括重复删除模块,所述重复删除模块与所述指纹选择模块耦合,所述重复删除模块被构造成使用所述数据块的所述略图来压缩所述数据块的存储。
6.根据权利要求1所述的系统,进一步包括:
非易失性存储器快速控制器即NVMe控制器,其中,所述NVMe控制器包括所述指纹流水线、所述多个取样模块和所述指纹选择模块中的一个或多个。
7.根据权利要求1所述的系统,其中,针对所述数据块的指纹是基于不可约多项式的拉宾指纹。
8.一种用于指纹识别的方法,所述方法包括:
接收包括多个数据瓦片的数据块;
通过以下操作执行取新功能,以计算针对所述多个数据瓦片的第一数据瓦片的第一指纹:
将所述第一数据瓦片分割成多个部分;
对所述多个部分中的第一部分执行第一取新功能;以及
使用所述第一取新功能的结果对所述多个部分中的第二部分执行第二取新功能;以及
执行移位功能,以计算针对所述多个数据瓦片的第二数据瓦片的第二指纹,其中,所述移位功能使用针对所述第一数据瓦片的所述第一指纹作为输入。
9.根据权利要求8所述的方法,进一步包括:
执行多个移位功能,以计算针对所述多个数据瓦片的多个指纹,其中,所述多个移位功能中的每一个使用针对前一数据瓦片的指纹、前一数据瓦片和当前数据瓦片作为输入。
10.根据权利要求9所述的方法,进一步包括:
取样所述多个指纹;
选择所述多个指纹的子集;以及
创建所述数据块的略图,所述数据块包括所述多个数据瓦片,其中,所述数据块的所述略图包括所述多个指纹的所述子集。
11.根据权利要求10所述的方法,进一步包括使用所述数据块的所述略图来压缩所述数据块的存储。
12.根据权利要求8所述的方法,其中,针对所述第一数据瓦片的所述第一指纹和针对所述第二数据瓦片的所述第二指纹是基于不可约多项式的拉宾指纹。
13.根据权利要求12所述的方法,进一步包括:
选择所述不可约多项式以最小化所述取新功能和所述移位功能的计算。
14.一种用于指纹识别的方法,所述方法包括:
并行执行多个取新功能,以计算针对第一数据瓦片的第一多个指纹,其中每个取新功能包括:
将所述第一数据瓦片分割成多个部分;
对所述多个部分中的第一部分执行第一取新功能;以及
使用所述第一取新功能的结果对所述多个部分中的第二部分执行第二取新功能;以及
并行执行第一多个移位功能,以计算针对第二数据瓦片的第二多个指纹,其中,所述第一多个移位功能使用针对所述第一数据瓦片的所述第一多个指纹、所述第一数据瓦片的多个部分和所述第二数据瓦片的多个部分作为输入。
15.根据权利要求14所述的方法,进一步包括:
并行执行第二多个移位功能,以计算针对第三数据瓦片的第三多个指纹,其中,所述多个移位功能中的每一个使用针对所述第二数据瓦片的所述第二多个指纹、所述第二数据瓦片的多个部分和所述第三数据瓦片的多个部分作为输入。
16.根据权利要求15所述的方法,进一步包括:
取样所述第一多个指纹、所述第二多个指纹和所述第三多个指纹;
选择所述第一多个指纹、所述第二多个指纹和所述第三多个指纹的子集;以及
创建数据块的略图,所述数据块包括多个数据瓦片,其中,所述数据块的所述略图包括所述第一多个指纹、所述第二多个指纹和所述第三多个指纹的所述子集。
17.根据权利要求16所述的方法,进一步包括使用所述数据块的所述略图来压缩所述数据块的存储。
18.根据权利要求14所述的方法,其中,针对所述第一数据瓦片的所述第一多个指纹和针对所述第二数据瓦片的所述第二多个指纹是基于不可约多项式的拉宾指纹。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562109524P | 2015-01-29 | 2015-01-29 | |
US62/109,524 | 2015-01-29 | ||
US14/835,622 | 2015-08-25 | ||
US14/835,622 US10078646B2 (en) | 2015-01-29 | 2015-08-25 | Hardware efficient fingerprinting |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105844210A CN105844210A (zh) | 2016-08-10 |
CN105844210B true CN105844210B (zh) | 2020-04-28 |
Family
ID=55299243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610058832.8A Expired - Fee Related CN105844210B (zh) | 2015-01-29 | 2016-01-28 | 硬件有效的指纹识别 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10078646B2 (zh) |
EP (1) | EP3051700A1 (zh) |
CN (1) | CN105844210B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150010143A1 (en) * | 2009-04-30 | 2015-01-08 | HGST Netherlands B.V. | Systems and methods for signature computation in a content locality based cache |
US9176883B2 (en) | 2009-04-30 | 2015-11-03 | HGST Netherlands B.V. | Storage of data reference blocks and deltas in different storage devices |
US10235396B2 (en) * | 2016-08-29 | 2019-03-19 | International Business Machines Corporation | Workload optimized data deduplication using ghost fingerprints |
CN107273851B (zh) * | 2017-06-15 | 2018-11-27 | 泰州市龙泽环境科技有限公司 | 一种指纹传感系统 |
US10606775B1 (en) * | 2018-12-28 | 2020-03-31 | Micron Technology, Inc. | Computing tile |
CN115248578B (zh) * | 2022-09-22 | 2022-12-30 | 南京旭上数控技术有限公司 | 一种工业设备数据采集方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270200A (zh) * | 2010-06-03 | 2011-12-07 | 盛乐信息技术(上海)有限公司 | 音乐摘要自动生成方法 |
CN103078709A (zh) * | 2013-01-05 | 2013-05-01 | 中国科学院深圳先进技术研究院 | 数据冗余识别方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7599931B2 (en) | 2006-03-03 | 2009-10-06 | Microsoft Corporation | Web forum crawler |
US7827384B2 (en) * | 2007-07-16 | 2010-11-02 | Cisco Technology, Inc. | Galois-based incremental hash module |
US20150010143A1 (en) * | 2009-04-30 | 2015-01-08 | HGST Netherlands B.V. | Systems and methods for signature computation in a content locality based cache |
US9400610B1 (en) * | 2012-06-13 | 2016-07-26 | Emc Corporation | Method for cleaning a delta storage system |
US9244623B1 (en) * | 2013-03-13 | 2016-01-26 | Emc Corporation | Parallel de-duplication of data chunks of a shared data object using a log-structured file system |
US9678976B2 (en) * | 2014-07-21 | 2017-06-13 | Red Hat, Inc. | Distributed deduplication using locality sensitive hashing |
-
2015
- 2015-08-25 US US14/835,622 patent/US10078646B2/en active Active
-
2016
- 2016-01-27 EP EP16153016.7A patent/EP3051700A1/en not_active Withdrawn
- 2016-01-28 CN CN201610058832.8A patent/CN105844210B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270200A (zh) * | 2010-06-03 | 2011-12-07 | 盛乐信息技术(上海)有限公司 | 音乐摘要自动生成方法 |
CN103078709A (zh) * | 2013-01-05 | 2013-05-01 | 中国科学院深圳先进技术研究院 | 数据冗余识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105844210A (zh) | 2016-08-10 |
EP3051700A1 (en) | 2016-08-03 |
US10078646B2 (en) | 2018-09-18 |
US20160224595A1 (en) | 2016-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105844210B (zh) | 硬件有效的指纹识别 | |
US20170038978A1 (en) | Delta Compression Engine for Similarity Based Data Deduplication | |
TWI676903B (zh) | 藉由從駐存在內容相關篩中之主要資料元件取得資料的資料之無損縮減 | |
US9385748B2 (en) | Parallel dictionary-based compression encoder | |
CN108256164B (zh) | 状态机晶格中的布尔逻辑 | |
US20150010143A1 (en) | Systems and methods for signature computation in a content locality based cache | |
RU2629440C2 (ru) | Устройство и способ для ускорения операций сжатия и распаковки | |
US9864542B2 (en) | Data deduplication using a solid state drive controller | |
TW201342110A (zh) | 在狀態機晶格中之計數器操作 | |
US10146740B1 (en) | Sparse data set processing | |
CN109144768B (zh) | 用于数据编码的系统及其计算机实现方法 | |
CN105843837B (zh) | 硬件有效的拉宾指纹识别 | |
US9455742B2 (en) | Compression ratio for a compression engine | |
US10585747B2 (en) | Detecting single event upsets and stuck-at faults in RAM-based data path controllers | |
US11244156B1 (en) | Locality-sensitive hashing to clean and normalize text logs | |
US12001237B2 (en) | Pattern-based cache block compression | |
US11515011B2 (en) | K-mer based genomic reference data compression | |
Biji et al. | Compression of Large genomic datasets using COMRAD on Parallel Computing Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181127 Address after: California, USA Applicant after: Western Digital Technologies, Inc. Address before: Holland, Amsterdam Applicant before: HGST Netherlands B.V. |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200428 Termination date: 20220128 |