硬件有效的拉宾指纹识别的制作方法

文档序号:10488963阅读:268来源:国知局
硬件有效的拉宾指纹识别的制作方法
【专利摘要】本发明涉及硬件有效的拉宾指纹识别。公开了以网速对大数据对象进行指纹识别的方法。这些技术包括取新/移位流水线、分割取新、优化、在线通道取样和流水线选择。该架构也可被复制以针对更高的系统吞吐量并行工作。指纹识别可提供用于识别数据流中的重复的有效机构,基于所识别指纹的重复删除可提供减小的存储成本、减小的网络带宽消耗、减小的处理时间和其它益处。在一些实施例中,可使用指纹识别来确保或验证数据完整性并且可促成损坏或篡改的检测。(借助硬件、软件或组合)产生指纹的有效方式可减少产生指纹所需的计算负担和/或时间。
【专利说明】
硬件有效的拉宾指纹识别
[0001] 相关申请的交叉引用
[0002] 本申请要求2015年1月29日提交的、名称为"Methods and Systems for More Efficient Rabin Fingerprinting"(更有效的拉宾指纹识别的方法和系统)的美国临时专 利申请No. 62/109,524的优先权,其全部内容以引用方式并入本文中。
技术领域
[0003] 本公开涉及硬件有效的指纹识别。特别地,本公开涉及对高吞吐量数据计算指纹 的流水线硬件架构。
【背景技术】
[0004] 随着数据快速增加,识别并且减小数据的存储、发送和处理的冗余变得越来越重 要。用于识别冗余数据的常见技术之一是将数据块的略图(sketch)进行比较,以查明重复 度或相似度。举例说明,经证实,拉宾指纹(Rabin Fingerprinting)是有效的并且被广泛用 于检测数据的重复度和相似度。为了使用拉宾指纹获得数据块的略图,使用每步向前滚动 一个字节的例如8字节长的固定大小窗口来扫描数据。使用被称为"瓦片(shingle)"的窗口 内的数据来计算拉宾指纹。这个过程一直持续,直到完成数据的分块。在扫描期间和扫描之 后,对指纹进行取样,以形成数据块的略图。这种算法适于离线数据备份和存档应用中的数 据重复删除(de-duplication),但要求在为了流式传输(streaming)数据以网速(wire speed)工作时进行密集计算。
[0005] 在存储装置接近每秒吉字节的吞吐量和亚毫秒的延迟的情况下,指纹识别的软件 方法在无法保证巨大量的计算能力的情况下不足以进行实时数据处理,巨大量的计算能力 会影响性能和资源利用。依据上文,可理解,会存在大量与产生指纹和删除重复数据的当前 技术关联的问题和不足。

【发明内容】

[0006] 本公开涉及用于进行硬件有效的指纹识别的系统和方法。
[0007] 这些方面中的一个或多个的其它实现方式包括对应系统、设备和被构造成在计算 机存储装置上编码的执行该方法中的动作的计算机程序。应该理解,主要出于可靠性和指 导性目的来选择本公开中使用的语言,该语言不限于本文中公开的主题的范围。
【附图说明】
[0008] 在附图的图中举例地而非限制地说明本公开,在附图中,使用类似的参考标号来 表示类似的元件。
[0009] 图1是示出包括主机、互连和多个目标的示例系统的高级别框图。
[0010]图2A是示出被构造成实现本文中引入的技术的示例主机的框图。
[0011]图2B是示出被构造成实现本文中引入的技术的示例目标的框图。
[0012] 图3示出根据本文中描述的技术的用于产生拉宾指纹的示例不可约多项式p(x)和 结果是指纹的示例方程集合。
[0013] 图4是示出根据本文中描述的技术的数据流中的瓦片的图形表示。
[0014]图5是示出根据本文中描述的技术的增量计算流水线设计的图形表示。
[0015] 图6是示出根据本文中描述的技术的增量计算指纹的示例方法的流程图。
[0016] 图7是示出根据本文中描述的技术的示例指纹模块的框图。
[0017]图8A是示出根据本文中描述的技术的具有分割取新级(split Fresh stages)的 示例指纹流水线的框图。
[0018]图8B是示出根据本文中描述的技术的示例并行流水线的框图。
[0019]图9是示出根据本文中描述的技术的示例取样模块的框图。
[0020] 图10是示出根据本文中描述的技术的示例指纹选择模块的框图。
【具体实施方式】
[0021] 以下,描述用于实现对高吞吐量流式传输数据计算指纹的流水线硬件架构的系统 和方法。虽然本公开的系统、方法是在特定系统架构的背景下描述的,但应该理解,系统、方 法和接口可应用于硬件的其它架构和组织。
[0022] 拉宾指纹识别可有效地提供用于识别数据块的重复或相似部分的特有签名或指 纹。可使用随机选择的多项式(P)产生拉宾指纹。在给定η位消息(例如,m=m〇,mi,. . .,mn-i) 的情况下,可将消息表达为有限域GF(2)内的n-1次多项式。然后,选择GF(2)内的k次随机多 项式PU),将消息m的指纹定义为在GF(2)内将f(x)除以p( X)之后的余数,可认为该余数是 k-Ι次多项式或k位数。当p(X)是不可约的时,两个特征使拉宾指纹是将各种消息分区(bin) 的优良候选项:1)如果两个消息等同,则它们将产生相同的指纹;2)如果两个消息不同,则 这些消息给出相同指纹的概率低(例如,接近2^ /2)。然而,在一些实施例中,随机选择不可 约多项式可能是不切实际的。特别地,查明随机不可约多项式在硬件中会是微不足道的任 务。在一些实施例中,可选择满足几个标准的多项式并且可将该多项式重新使用多次。标准 可包括:1)确保真实世界数据的冲突如可合理预期地那样稀少;和2)多项式的表示基于相 对于a)指纹产生所需的操作的数量;b)减少指纹产生所需的扇入操作或门;和c)减少指纹 产生所需的扇出操作或门进行优化而导致有效实现。
[0023] 在一些实施例中,这些技术可被实现为改进产生指纹以进行有效重复删除、数据 完整性验证和安全性和其它目的的方法。根据一些实施例,可用专用硬件生成指纹。可在系 统中实现硬件指纹识别模块或组件来得到输入数据流的签名。为了确保指纹产生能够紧跟 数据流,可针对所选择的多项式创建优化的流水线架构(使用所选择的多项式来产生拉宾 指纹),从而可减少设计的资源消耗和/或平衡一种或多种流水线状态之间的资源分配。这 可提供更好的整体系统性能。指纹识别可提供识别数据流中的重复的有效机制,基于所识 别指纹的重复删除可提供降低的存储成本、减小的网络带宽消耗、减少的处理时间和其它 益处。在一些实施例中,可使用指纹识别来确保或验证数据完整性并且可促成损坏或篡改 的检测。(借助硬件、软件或组合)产生指纹的有效方式可减少产生指纹所需的计算负担和/ 或时间。虽然本文中的示例涉及拉宾指纹,但同样地,本文中公开的技术中的一些还应用于 其它类型的循环冗余校验码和指纹计算。
[0024] 图1是示出包括主机102、互连108和多个目标110、116和122的示例系统100的高级 别框图。主机系统102可采用任何合适形式,诸如但不限于企业服务器、数据库主机、工作 站、个人计算机、移动电话、游戏装置、个人数字助理(PDA)、电子邮件/文本发消息装置、数 字相机、数字媒体(例如,MP3)播放器、GPS导航装置、TV系统等。
[0025] 主机系统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。
[0026] 根据一些实施例,除了PCIe外的接口标准可用于主机102和目标110、116和122之 间的链路的一个或多个部分。例如,链路可包括但不限于串行高级技术附件(SATA)、高级技 术附件(ATA)、小计算机系统接口(SCSI)、PCI扩展(PCI-X)、光纤通道、串行连接SCSI(SAS)、 安全数字(SD )、嵌入式多媒体卡(EMMC )、通用闪存存储器(UFS )、或任何其它合适的接口标 准或接口标准的组合。
[0027] 主机系统102和目标装置可包括为了简化附图而在图1中未示出的额外组件。另 外,在一些实施例中,示出的组件并非都存在。另外,各种控制器、块和接口可按任何合适的 方式实现。例如,控制器可采用例如微处理器或处理器和存储能由(微)处理器、逻辑门、开 关、专用集成电路(ASIC)、可编程逻辑控制器和嵌入式微控制器执行的计算机可读程序代 码(例如,软件或固件)的计算机可读介质中的一个或多个的形式。
[0028]图2A是示出被构造成实现这里引入的技术的示例主机200的框图。在图2A的示例 中,主机102包括存储接口(I/F)模块202、处理器204和存储器206。主机102的组件通信耦合 到总线或软件通信机构220,以彼此进行通信。
[0029]如上所述的存储接口模块202被构造成将主机102与目标110、116和122连接。例 如,存储接口模块202可以是用于向目标110、116和122发送数据和/或从目标110、116和122 接收数据的PCIe根联合体等。
[0030] 处理器204可包括算术逻辑单元、微处理器、通用控制器或用于执行计算的某个其 它处理器阵列。在一些实现方式中,处理器204是具有一个或多个处理核的硬件处理器。处 理器204耦合到总线220,以与其它组件进行通信。处理器204处理数据信号并且可包括各种 计算架构,包括复杂指令集计算机(CISC)架构、精简指令集计算机(RISC)架构、或实现指令 集组合的架构。尽管在图2A的示例中只示出单个处理器,但可包括多个处理器和/或处理 核。应该理解,其它处理器构造是可能的。
[0031] 存储器206存储可由处理器204执行的指令和/或数据。在图示的实现方式中,存储 器206包括指纹模块212、重复删除模块214、参考索引模块216和应用218。存储器206耦合到 总线220,以与主机102的其它组件进行通信。存储器206中存储的指令和/或数据可包括用 于执行本文中描述的技术中的任一个和/或全部的代码。存储器206可以是例如诸如动态随 机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存存储器或某些其它存储 器装置的非暂态存储器。存储器还可包括用于提供应用218的文件级数据存储和取回的文 件系统(未示出)。另外,存储器可包括块级驱动器(未示出),用于对借助存储接口模块202 耦合到主机102的目标存储装置提供块级数据访问。
[0032]指纹模块212可被构造成根据本文中公开的技术针对数据块计算指纹。参考索引 模块216可用包含由参考块产生的参考指纹的签名域访问、存储、产生和管理参考块列表。 使用输入数据块的指纹,参考索引模块216搜索与输入数据块匹配或相似的、可被用于压缩 输入数据块的重复删除模块使用的参考块。重复删除模块214将输入数据块与带有匹配或 相似的指纹的带索引参考块进行比较,以压缩和/或消除输入数据块中的重复数据。在一个 实施例中,如果输入数据块与现有参考块相同,则重复删除模块214存储现有数据的参考, 而不是存储新数据本身。在另一个实施例中,如果新数据块与现有参考块相似,则重复删除 模块只存储示出在由其产生新指纹的数据和由其产生现有带索引指纹的现有参考数据块 之间的差异的S。
[0033]图2B是示出被构造成实现这里引入的技术的示例目标(例如,目标110)的框图。在 图2B的实例中,目标110包括存储接口(I/F)模块228、处理器224、存储器226、指纹模块232、 参考索引模块236、重复删除模块234和存储装置238。目标110的组件与总线或软件通信机 构240通信耦合,以彼此进行通信。图2B的示例中的模块可如以上参照图2A的示例描述的那 样操作,不同之处在于,在图2B中,可例如在现场可编程门阵列(FPGA)、专用集成电路 (ASIC)等上用硬件实现这些模块。虽然在图2B的示例中被描绘为是不同模块,但应该理解, 可在同一硬件或各种硬件装置上实现模块中的一个或多个。
[0034] 在一些实施例中,指纹模块在一个时钟周期中处理多位,以为高数据速率应用提 供指纹识别。使用形式代数,单个模运算(例如,确定拉宾指纹)可被转变成多个计算,这些 计算中的每个负责结果中的一位。在下面的示例中,假设数据串是64位,其结果是16位拉宾 指纹。图3示出用于产生拉宾指纹的示例不可约多项式p( X),和结果是指纹的、使用形式代 数而得到的16个方程的集合。在图3的不例中,(ao,ai,…,a63)代表输入位而(bo,bi,…,bi5) 代表拉宾指纹输出。
[0035] 在一个实施例中,为了用硬件实现这些方程中的一个,可使用组合电路来计算所 有对应的输入位的异或(XOR)。这16个电路的组合在本文中被称为取新功能(Fresh function)。至于图3的示例中的取新功能,最大扇入是23,最大扇出是11,异或的数量是 261。在4080个16次不可约多项式之中,异或的最小数量是261,最小的最大扇入是19,最小 的最大扇出是8。所以,当系统设计要求允许时,挑选多项式表现出对于取新功能的硬件设 计而言有优化机会。这种方案适于硬件实现方式。
[0036] 至于较高数据速率的应用,拉宾指纹计算应用于所有"瓦片"。图4中示出这些瓦片 的示例。图4描绘了从ao至an的数据流中的瓦片,其中,(X)是第一瓦片,(X)是第二瓦片。虽 然图4的示例描绘了一个字节的移位,但瓦片可按其它各种多位来移位。在一个实施例中, 为了实时处理所有瓦片,可对各瓦片重复取新功能。然而,明显地,在这种方案中出现重叠 计算。可如下地计算A和B的拉宾指纹之间的关系:
[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)的第一字 节和输入数据W(X)的第一字节,后者是新瓦片B(X)的最后一个字节。因此,可使用前一瓦片 的指纹计算来优化各瓦片的指纹计算。
[0051]使用64位宽数据总线和64位瓦片作为示例,在图5中示出增量计算流水线设计。数 据是从两个连续时钟周期得到的,例如,(^a1,…,a63)是从前一周期得到的而(a 64,a65,…, am)是从后一周期得到的。
[0052]在一些实施例中,本文中公开的技术包括查明使拉宾指纹计算用于将流中的数据 分组的多字节数据瓦片的一个完整计算和数个增量计算(例如,用于八字节数据瓦片的七 个增量计算)的操作量最少的不可约多项式。这些技术还包括使用所选择的不可约多项式 增量地计算拉宾指纹。例如,增量计算可允许指纹计算重新使用八个字节的前一指纹计算 的计算结果。举例来说,指纹计算可计算编号为〇至7的全部八个字节的指纹,并且可在下一 个时钟周期向右移动一个字节。在下一个时钟周期,可重新使用字节〇至字节7的计算并且 可执行涉及字节8和字节0的计算。因此,可重新使用八个字节的前一指纹的计算并且执行 新计算,增量执行字节1至字节8的瓦片的指纹。
[0053]图6是增量计算指纹的示例方法的流程图。在602中,流水线中的第一级即指纹模 块(例如,指纹模块212或232)执行取新功能,例如,以如上所述由(ao,ai,···,a63)计算指纹。 在604中,指纹模块执行移位功能(Shift function),以计算例如(as,ag,…,a7i)的下一数 据瓦片的指纹。移位功能用来自前一瓦片(例如,第一瓦片)的逐出字节(evicted byte)、来 自其自身瓦片的吸收字节(absorbed byte),以及得自前一瓦片(例如,第一瓦片)的结果作 为输入,以产生指纹。例如,移位功能利用(ao,ai,…,a?)、(a 64,a65,…,a71)和得自602的取新 功能的指纹结果。过程持续进行,直到计算完8个指纹(例如,移位功能消耗(a 48,a49,···, a55)、(aii2,aii3,…,aii9)和得自之前移位功能的指纹结果)。在606中,如果计算完8个指纹, 则由602中的取新功能处理来自下一瓦片(a64,a65,…,am)的全部数据。由于重新使用之前 的计算,导致移位功能的复杂度低于取新功能的复杂度,因此当在硬件上实现时消耗更少 的资源。
[0054]为了提高性能,可选择使拉宾指纹计算对于一个完整计算和数个增量计算的操作 量最少的单个不可约多项式。如上所述,增量计算可允许指纹计算重新使用得自前一指纹 计算的八个字节中的七个的计算。在一个实现方式中,针对取新功能和七个移位功能进行 最少量操作中的一个的不可约多项式是ρ(χ)=χ 16+χ13+χ12+χη+ι。至于这里描述的不可约多 项式,最大扇入是26,最大扇出是11,异或的总数是1153。
[0055]图7是示出示例指纹模块232的框图。示例指纹模块232包括指纹流水线702、多个 取样模块704a-704n和指纹选择模块706。在图7中描绘的示例单个流水线设计中,数据708 从上至下地流过指纹流水线。根据这里公开的技术针对w字节数据块产生的指纹的总数是 w-b+Ι,其中,b是瓦片的大小。在一些实施例中,为了减少由重复删除模块比较的指纹的数 量,可从全部指纹之中选择数个指纹作为略图来表示数据块。在一个实施例中,针对该略图 选择带有具有特定模式的前N位的指纹,因为各指纹中的前这些位可被视为是随机分布的。 这个选择的结果是在平衡处理速度、相似度检测、排除误报(false positive)和分辨率方 面有好的选择。
[0056]在每个流水线级产生的指纹结果被发送到右边用于对应通道取样模块进行处理。 随着数据块流过流水线,对指纹进行取样并且将指纹存储在中间缓冲器(图9中示出)中。在 针对数据块进行取样之后,指纹选择模块将从中间样本之中选择并且返回数据块的略图。 在一些实施例中,流水线由一个取新功能和随后的数个移位功能组成,可能非常好的是,在 资源利用方面,对于整体设计而言选择成本高的取新功能更好地工作。这种可能是由于在 该情形下有可能可得到更加成本有效的移位功能。然而,成本高的取新功能会不利地影响 流水线的时钟率。
[0057]总体上,期望在流水线架构的所有级之间具有相似的设计复杂度。如以上参照移 位功能描述的,取新功能还可被分割成多个取新功能。例如,使用与以上相同的示例,取新 功能可被划分成两个模块,这两个模块在这里被命名为取新KFresh 1)和取新2(Fresh 2)。取新1处理图6中的Uia1,…,a38),取新2处理( &39,&4〇,'",363)。由于取新2还使用得自 取新1的结果作为输入,原始取新的划分可以不是平均分割。例如,当取新1处理前39位而取 新2处理剩余25位时,可进行合适的划分。
[0058]表1列出各个分割的取新模块、这两个模块的组合,和原始单个取新功能的复杂 度。虽然资源消耗没有随分割的取新模块而过多变化,但对于分割的取新设计而言,时钟率 提尚。
[0060] 表 1
[0061] 图8A是示出具有分割取新级的示例指纹流水线的框图。示例指纹流水线包括两个 分割的取新级802,之后是7个移位级804和各级之后的寄存器803a、803b和806a-806n。假设 有64位输入,两个取新模块对于来自前一时钟的数据的8个字节计算指纹。来自前一时钟的 前7个字节和来自后一时钟的前7个字节经由流水线寄存器803a和803b被传递到移位1 (Shift l)804a,在移位1804a中,针对对应瓦片计算指纹。各级消耗前一级的结果、来自前 一时钟的逐出字节和来自后一时钟的吸收字节。在进行计算之后,删除逐出字节和吸收字 节。因此,流水线寄存器每个向前一个步骤减小2个字节,直到没有"逐出"和"吸收"的字节 要处理。
[0062]相比于具有一个取新单元的流水线,分割的取新设计在流水线中引入多一级,从 而导使最终结果延迟的一个额外时钟周期。然而,这个分割的取新模块使流水线中的所有 级的处理延迟减小且一致。如果需要较高时钟率,则取新模块和移位模块可被进一步分割 成多于两个级。在稳态下,在每个级向通道取样单元输出指纹(FP n),指纹流水线702针对每 个时钟周期产生八个指纹。
[0063]图8B是示出示例并行流水线的框图。并行流水线包括一组两个取新功能812和814 和两组移位功能814a-814n和824a-824n。当数据总线宽度超过限定的瓦片大小时,并行的 多个流水线可用于针对一个时钟周期产生更多指纹。例如,假设输入数据以每时钟16字节 地进入的并且瓦片大小保持8个字节。数据可被划分成后8个字节和前8个字节(例如,Ll和 Hl)儿2是指得自后一时钟的后8个字节。LI、H1和L2被馈送到流水线,其中,Ll和Hl经历上流 水线以产生八组指纹,Hl和L2经历下流水线2以产生另外八组指纹。通道取样单元的数量和 指纹选择模块的大小将因此增大,每当流水线级的数量加倍时,引起多一个时钟延迟。然 而,由于在多个流水线中节省了寄存器,导致整体设计的资源消耗不是线性增大的。
[0064]图9是示出示例取样模块704的框图。如上所述,各个计算出的指纹可被分成两个 部分,索引和签名。索引可包括几个高阶位而签名可包括剩余位。例如,如果索引具有m位, 则签名可被归类为2m个分区。在分区内,选择签名作为最终略图的一个候选项。对于每个取 样模块704,可存在供最终选择的多达2 m个候选项。
[0065]继续上文的16个指纹的示例,取样模块704使用四个MSB,即m = 4,作为索引(例如, 用于对其中存储所选择签名的缓冲器进行寻址)。比较器908判定最小值还是最大值被取样 入缓冲器中。寄存器906用于缓冲输入的签名,以与同一分区的缓冲器输出进行比较。 bus携带写入使能(wen)、写入地址(addr)和待写入数据(data)。
[0066] 当缓冲器读取地址等于缓冲器写入地址时,会出现写后读(RAW)危害。为了避免 RAW危害,数据前送单元被设计用于控制将哪个值与输入签名进行比较。异或非(XNOR)门 910查看读取的地址和写入的地址是否冲突。如果它们确实冲突并且写入使能在此刻被启 用,则当前写入值将被前送到比较器。这个前送是由受与(AND)门912的输出控制的MUX 904 进行的。在通道取样结束时,各缓冲器加载有所有索引的候选签名,如果用于缓冲器输入的 索引一直没有出现,则这些索引中的一些可以是"0"。
[0067] 图10是示出示例指纹选择模块706的框图。当所有签名被置于通道取样模块的缓 冲器中时,指纹选择模块706可开始选择签名来创建数据块的略图。根据曼伯(Manber)理 论,略图中的签名的数量可取决于数据块的大小。在一个示例实施例中,指纹选择模块从16 个可能的签名之中选择8个签名。例如,指纹选择模块706可选择的索引是0、1、3、5、7、11、13 和15,尽管可选择签名的任何子集。
[0068]利用签名库1004中的八个同时可用的通道缓冲器(例如,八个通道取样模块的缓 冲器)的优点,指纹选择模块706使用比较器1006、1008和1010的树来选择该略图的指纹。通 过在该树的各级之间添加寄存器1016和1018,形成流水线指纹选择设计。索引计数器1002 允许灵活地选择签名。例如,索引计数器读出〇、1、3、5、7、11、13和15,每个时钟周期一个。读 出1012用作所有8个通道缓冲器的读取地址。在该树的结尾返回索引的签名1014。
[0069]以下,描述实现用于对高吞吐量流式传输数据计算指纹的流水线硬件架构的系统 和方法。在以上描述中,出于说明的目的,阐明众多具体细节。然而,应该清楚,所公开的技 术可在没有这些具体细节的任何给定子集的情况下实践。在其它情形下,用框图形式示出 结构和装置。例如,所公开的技术是在以上参照用户界面和特定硬件的一些实现方式中描 述的。此外,以上公开的技术主要是在在线服务的背景下;然而,所公开的技术应用于其它 数据源和其它数据类型(例如,示例图像、音频、网页的其它资源的集合)。
[0070] 在说明书中引用"一个实现方式"或"实现方式"意味着,结合实现方式描述的特定 特征、结构或特性被包括在所公开技术的至少一个实现方式中。在本说明书中的各种地方 出现短语"在一个实现方式中"不一定都是指同一实现方式。
[0071] 依据对计算机存储器内的数据位进行的操作的处理和符号表示,表达了具体实施 方式的一些部分。过程可总体上被视为是导致结果的本身一致的步骤顺序。这些步骤可涉 及物理操纵物理量。这些量采取能够被存储、传递、组合、比较和以其它方式操纵的电信号 或磁信号的形式。这些信号可被称为是位、值、元素、符号、字符、术语、数字等的形式。
[0072] 这些和相似术语可与适宜的物理量关联并且可以是应用于这些物理量的标记。除 非另外从之前讨论中清楚地具体阐述,否则要理解,在整个说明书中,利用例如"处理"或 "运算"或"计算"或"确定"或"显示"等术语进行的讨论可以指操纵计算机系统的寄存器和 存储器内的被表达为物理(电子)量的数据并且将其转换成计算机系统的存储器或寄存器 或其它这种信息存储、发送或显示装置内的类似地表达为物理量的其它数据的计算机系统 或类似电子计算装置的动作和处理。
[0073] 所公开的技术还可涉及用于执行本文中的操作的设备。这个设备可具体出于所需 目的进行构造,或者它可包括由存储在计算机中的计算机程序选择性激活或重构的通用计 算机。这种计算机程序可被存储于计算机可读存储介质,例如但不限于包括软盘、光盘、CD-ROM和磁盘、只读存储器(R0M)、随机存取存储器(RAM)、EPR0M、EEPR0M、磁或光卡的任何类型 的盘、含非易失性存储器的包括USB密钥的闪存存储器或适于存储电子指令的任何类型的 介质,它们均可连接到计算机系统总线。
[0074] 所公开的技术可采取完全硬件实现方式、完全软件实现方式或包含硬件和软件元 件二者的实现方式的形式。在一些实现方式中,用软件实现技术,软件包括但不限于固件、 常驻软件、微代码等。
[0075] 此外,所公开的技术可采取能从非暂态计算机可用或计算机可读介质获取的计算 机程序产品的形式,非暂态计算机可用或计算机可读介质提供程序代码以由计算机或任何 指令执行系统使用或者与计算机或任何指令执行系统结合使用。出于进行此描述的目的, 计算机可用或计算机可读介质可以是任何可包含、存储、传达、传播、或传输供指令执行系 统、设备或装置使用或与指令执行系统、设备或装置结合的程序的设备。
[0076] 适于存储和/或执行程序代码的计算系统或数据处理系统将包括通过系统总线与 存储器元件直接或间接耦合的至少一个处理器(例如,硬件处理器)。存储器元件可包括在 实际执行程序代码、体存储期间采用的本地存储器和高速缓存存储器,高速缓存存储器提 供至少一些程序代码的暂时存储,以减少在执行期间必须从体存储器取回时间代码的数 量。
[0077] 输入/输出或I/O装置(包括但不限于键盘、显示器、指示装置等)可直接地或者通 过居间I/O控制器耦合到系统。
[0078]网络适配器还可耦合到系统,以使数据处理器系统能够变为通过居间私有或公共 网络耦合到其它数据处理系统或远程打印机或存储装置。调制解调器、电缆调制解调器和 以太网卡只是当前可用类型的网络适配器中的几个。
[0079] 最后,本文中提出的过程和显示可与任何特定计算机或其它设备没有固有地相 关。可按照本文中的教导将各种通用系统与程序一起使用,或者经证实,它可方便用于构造 更多专业化设备来执行所需的方法步骤。根据以下描述,将清楚各种这些系统所需的结构。 另外,所公开的技术没有参照任何特定的编程语言进行描述。应该理解,可使用各式各样编 程语言来实现本文中描述的技术的教导。
[0080] 出于例证和描述的目的,呈现了以上对当前技术和技能的实现方式的描述。意图 不是排他性的或者将当前技术和技能限于所公开的精确形式。依照以上教导,许多修改形 式和各种形式是可能的。当前技术和技能的范围意图不由这个【具体实施方式】来限制。当前 技术和技能可在不脱离其精神或基本特征的情况下用其它特定形式来实现。同样地,模块、 例程、特征、属性、方法和其它方面的特定命名和界限不是强制或者重要的,实现当前技术 和技能或其特征的机构可具有不同的名字、划分和/或格式。此外,本技术的模块、例程、特 征、属性、方法和其它方面可被实现为软件、硬件、固件或这三个的任何组合。另外,无论示 例为模块的组件是否被实现为软件,组件可被实现作为独立程序、作为较大程序的部分、作 为多个单独程序、作为静态或动态链接库、作为内核可加载模块、作为装置驱动器,和/或在 计算机编程中以现在或未来已知的每个和任何其它方式实现。另外,当前技术和技能决不 限于用任何特定编程语言来实现,或者用于任何特定的操作系统或环境。因此,当前技术和 技能的公开意图是例证性的,而非限制性的。
【主权项】
1. 一种方法,所述方法包括: 选择不可约多项式; 基于所述不可约多项式和由输入消息的大小确定的输入多项式,产生取新功能; 使用所述取新功能,计算针对第一数据瓦片的第一指纹; 产生第一移位功能,其中,所述第一移位功能使用针对所述第一数据瓦片的所述第一 指纹作为输入;以及 使用所述第一移位功能,计算针对第二数据瓦片的第二指纹。2. 根据权利要求1所述的方法,其中,产生所述取新功能包括产生用于计算将所述输入 多项式除以所述不可约多项式的余数的多个方程。3. 根据权利要求1所述的方法,进一步包括: 产生跟随所述第一移位功能的多个移位功能,其中,所述多个移位功能中的每一个使 用针对前一数据瓦片的指纹、所述前一数据瓦片和当前数据瓦片作为输入;以及 使用所述多个移位功能,计算针对多个数据瓦片的多个指纹。4. 根据权利要求3所述的方法,其中,选择所述不可约多项式以最小化所述取新功能和 所述移位功能的计算。5. 根据权利要求3所述的方法,进一步包括: 取样针对所述多个数据瓦片的所述多个指纹; 选择所述多个指纹的子集;以及 创建数据块的略图,所述数据块包括所述多个数据瓦片,其中,所述数据块的所述略图 包括所述多个指纹的所述子集。6. 根据权利要求5所述的方法,进一步包括使用所述数据块的所述略图来压缩所述数 据块的存储。7. 根据权利要求1所述的方法,其中,使用所述取新功能计算针对所述第一数据瓦片的 所述第一指纹包括: 将所述取新功能分割成第一取新部分和第二取新部分; 将所述第一数据瓦片分割成第一瓦片部分和第二瓦片部分;以及 使用所述第一取新部分和所述第二取新部分,计算针对所述第一瓦片部分和所述第二 瓦片部分中的每一个的指纹,其中,所述第二取新部分使用针对所述第一瓦片部分的指纹 作为输入。8. -种系统,所述系统包括: 一个或多个处理器;以及 存储器,所述存储器存储指令,所述指令当被所述一个或多个处理器执行时使所述一 个或多个处理器: 选择不可约多项式; 基于所述不可约多项式和由输入消息的大小确定的输入多项式,产生取新功能; 使用所述取新功能,计算针对第一数据瓦片的第一指纹; 产生第一移位功能,其中,所述第一移位功能使用针对所述第一数据瓦片的所述第一 指纹作为输入;以及 使用所述第一移位功能,计算针对第二数据瓦片的第二指纹。9. 根据权利要求8所述的系统,其中,为了产生所述取新功能,所述指令使所述一个或 多个处理器产生用于计算将所述输入多项式除以所述不可约多项式的余数的多个方程。10. 根据权利要求8所述的系统,其中,所述指令使所述一个或多个处理器: 产生跟随所述第一移位功能的多个移位功能,其中,所述多个移位功能中的每一个使 用针对前一数据瓦片的指纹、所述前一数据瓦片和当前数据瓦片作为输入;以及 使用所述多个移位功能,计算针对多个数据瓦片的多个指纹。11. 根据权利要求10所述的系统,其中,所述指令使所述一个或多个处理器选择所述不 可约多项式以最小化所述取新功能和所述移位功能的计算。12. 根据权利要求10所述的系统,其中,所述指令使所述一个或多个处理器: 取样针对所述多个数据瓦片的所述多个指纹; 选择所述多个指纹的子集;以及 创建数据块的略图,所述数据块包括所述多个数据瓦片,其中,所述数据块的所述略图 包括所述多个指纹的所述子集。13. 根据权利要求12所述的系统,其中,所述指令使所述一个或多个处理器使用所述数 据块的所述略图来压缩所述数据块的存储。14. 根据权利要求8所述的系统,其中,为了使用所述取新功能计算针对所述第一数据 瓦片的所述第一指纹,所述指令使所述一个或多个处理器:: 将所述取新功能分割成第一取新部分和第二取新部分; 将所述第一数据瓦片分割成第一瓦片部分和第二瓦片部分;以及 使用所述第一取新部分和所述第二取新部分,计算针对所述第一瓦片部分和所述第二 瓦片部分中的每一个的指纹,其中,所述第二取新部分使用针对所述第一瓦片部分的指纹 作为输入。15. -种计算机程序产品,所述计算机程序产品包括存储计算机可读程序的非暂态计 算机可用介质,其中,所述计算机可读程序当在计算机上执行时使所述计算机: 选择不可约多项式; 基于所述不可约多项式和由输入消息的大小确定的输入多项式,产生取新功能,其中, 所述取新功能被构造成计算针对第一数据瓦片的第一指纹; 产生第一移位功能,其中,所述第一移位功能使用针对所述第一数据瓦片的所述第一 指纹作为输入,并且被构造成计算针对第二数据瓦片的第二指纹。16. 根据权利要求15所述的计算机程序,其中,为了产生所述取新功能,所述计算机可 读程序使所述计算机产生用于计算将所述输入多项式除以所述不可约多项式的余数的多 个方程。17. 根据权利要求15所述的计算机程序,其中,所述计算机可读程序使所述计算机: 产生跟随所述第一移位功能的多个移位功能,其中,所述多个移位功能中的每一个使 用针对前一数据瓦片的指纹、所述前一数据瓦片和当前数据瓦片作为输入,并且所述多个 移位功能中的每一个被构造成计算针对多个数据瓦片的多个指纹。18. 根据权利要求17所述的计算机程序,其中,所述计算机可读程序使所述计算机选择 所述不可约多项式以最小化所述取新功能和所述移位功能的计算。19. 根据权利要求17所述的计算机程序,其中,所述计算机可读程序使所述计算机使用 所述多个指纹来压缩所述多个数据瓦片的存储。20.根据权利要求15所述的计算机程序,其中,为了使用所述取新功能计算针对所述第 一数据瓦片的所述第一指纹,所述计算机可读程序使所述计算机: 将所述取新功能分割成第一取新部分和第二取新部分; 将所述第一数据瓦片分割成第一瓦片部分和第二瓦片部分;以及 使用所述第一取新部分和所述第二取新部分,计算针对所述第一瓦片部分和所述第二 瓦片部分中的每一个的指纹,其中,所述第二取新部分使用针对所述第一瓦片部分的指纹 作为输入。
【文档编号】G06F17/30GK105843837SQ201610060211
【公开日】2016年8月10日
【申请日】2016年1月28日
【发明人】西里尔·盖约特, 李冬阳, 王清波, 杨庆
【申请人】Hgst荷兰有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1