IP Library Granted Patent US 10,078,646
Granted Patent B2
US 10,078,646 · App. 14/835,622 · Granted Sep 18, 2018

Hardware efficient fingerprinting

Inventors: Zvonimir Bandic (San Jose, CA); Cyril Guyot (San Jose, CA); Dongyang Li (Kingston, RI); Ashwin Narasimha (Los Altos, CA); Qingbo Wang (Irvine, CA); Ken Yang (Saunderstown, RI)
Assignee: HGST Netherlands B.V.
G06F17/30303G06F17/30371H03M7/3091H03M7/3093H03M7/6029
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,078,646
App. No.
14/835,622
Granted
Sep 18, 2018
Kind
B2
Abstract

An approach for fingerprinting large data objects at the wire speed has been disclosed. The techniques include Fresh/Shift pipelining, split Fresh, optimization, online channel sampling, and pipelined selection. The architecture can also be replicated to work in parallel for higher system throughput. Fingerprinting may provide an efficient mechanism for identifying duplication in a data stream, and deduplication based on the identified fingerprints may provide reduced storage costs, reduced network bandwidth consumption, reduced processing time and other benefits. In some embodiments, fingerprinting may be used to ensure or verify data integrity and may facilitate detection of corruption or tampering. An efficient manner of generating fingerprints (either via hardware, software, or a combination) may reduce a computation load and/or time required to generate fingerprints.

Claims (49)

1. A system comprising:

a fingerprint pipeline configured to compute fingerprints for a data chunk, the fingerprint pipeline comprising:

a Fresh module configured to:

split a first shingle of data from the data chunk into a plurality of portions;

perform a first Fresh function on a first portion of the plurality of portions; and

perform a second Fresh function on a second portion of the plurality of portions using a result of the first Fresh function to compute a first fingerprint from the first shingle of data from the data chunk;

a first Shift module communicatively coupled with an output of the Fresh module, wherein the first Shift module is configured to compute a second fingerprint using the first fingerprint, the first shingle of data from the data chunk, and a second shingle of data from the data chunk;

a plurality of sampling modules communicatively coupled with the fingerprint pipeline, the plurality of sampling modules configured to sample candidate fingerprints for generating a sketch for the data chunk; and

a fingerprint selection module communicatively coupled with the plurality of sampling modules, the fingerprint selection module configured to select a plurality of fingerprints to create a sketch of the data chunk.

2. The system of claim 1 , wherein the fingerprint pipeline further comprises:

a second Shift module communicatively coupled with an output of the first Shift module, wherein the second Shift module is configured to compute a third fingerprint using the second fingerprint, the second shingle of data from the data chunk, and a third shingle of data from the data chunk.

3. The system of claim 1 , wherein the fingerprint pipeline further comprises:

a plurality of pipelines operating in parallel.

4. The system of claim 1 , wherein one or more of the fingerprint pipeline, the plurality of sampling modules, and the fingerprint selection module are implemented using a field programmable gate array.

5. The system of claim 1 , further comprising a deduplication module coupled with the fingerprint selection module, the deduplication module configured to use the sketch of the data chunk to compress storage of the data chunk.

6. The system of claim 1 , further comprising:

a non-volatile memory express (NVMe) controller, wherein the NVMe controller includes one or more of the fingerprint pipeline, the plurality of sampling modules, and the fingerprint selection module.

7. The system of claim 1 , wherein the fingerprints for the data chunk data are Rabin fingerprints based on an irreducible polynomial.

8. A method comprising:

receiving a data chunk including a plurality of shingles of data;

performing a Fresh function to compute a first fingerprint for a first shingle of data of the plurality of shingles of data k

splitting the first shingle of data into a plurality of portions;

performing a first Fresh function on a first portion of the plurality of portions; and

performing a second Fresh function on a second portion of the plurality of portions using a result of the first Fresh function; and

performing a Shift function to compute a second fingerprint for a second shingle of data of the plurality of shingles of data, wherein the Shift function uses the first fingerprint for the first shingle of data as an input.

9. The method of claim 8 , further comprising:

performing a plurality of Shift functions to compute a plurality of fingerprints for the plurality of shingles of data, wherein each of the plurality Shift functions uses a fingerprint for a preceding shingle of data, a preceding shingle of data, and a current shingle of data as inputs.

10. The method of claim 9 , further comprising:

sampling the plurality of fingerprints;

selecting a subset of the plurality of fingerprints; and

creating a sketch of the data chunk including the plurality of shingles of data, wherein the sketch of the data chunk comprises the subset of the plurality of fingerprints.

11. The method of claim 10 , further comprising using the sketch of the data chunk to compress storage of the data chunk.

12. The method of claim 8 , wherein the first fingerprint for the first shingle of data and the second fingerprint for the second shingle of data are Rabin fingerprints based on an irreducible polynomial.

13. The method of claim 12 , further comprising:

selecting the irreducible polynomial to minimize computations over the Fresh and Shift functions.

14. A method comprising:

performing a plurality of Fresh functions in parallel to compute a first plurality of fingerprints for a first shingle of data, wherein each Fresh function comprises:

splitting the first shingle of data into a plurality of portions;

performing a first Fresh function on a first portion of the plurality of portions; and

performing a second Fresh function on a second portion of the plurality of portions using a result of the first Fresh function; and

performing a first plurality of Shift functions in parallel to compute a second plurality of fingerprints for a second shingle of data, wherein the first plurality of Shift functions use the first plurality of fingerprints for the first shingle of data, a plurality of portions of the first shingle of data, and a plurality of portions of the second shingle of data as inputs.

15. The method of claim 14 , further comprising:

performing a second plurality of Shift functions in parallel to compute a third plurality of fingerprints for a third shingle of data, wherein each of the plurality Shift functions uses the second plurality of fingerprints for the second shingle of data, a plurality of portions of the second shingle of data, and a plurality of portions of the third shingle of data as inputs.

16. The method of claim 15 , further comprising:

sampling the first plurality of fingerprints, the second plurality of fingerprints, and the third plurality of fingerprints;

selecting a subset of the first plurality of fingerprints, the second plurality of fingerprints, and the third plurality of fingerprints; and

creating a sketch of a data chunk including a plurality of data shingles, wherein the sketch of the data chunk comprises the subset of the first plurality of fingerprints, the second plurality of fingerprints, and the third plurality of fingerprints.

17. The method of claim 16 , further comprising using the sketch of the data chunk to compress storage of the data chunk.

18. The method of claim 14 , wherein the first plurality of fingerprints for the first shingle of data and the second plurality of fingerprints for the second shingle of data are Rabin fingerprints based on an irreducible polynomial.

Assignments (7)
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT SERIAL NO 15/025,946 PREVIOUSLY RECORDED AT REEL: 040831 FRAME: 0265. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 15, 2017
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043973/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040831/0265 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2015
From: BANDIC, ZVONIMIR; GUYOT, CYRIL; LI, DONGYANG; NARASIMHA, ASHWIN; WANG, QINGBO; YANG, KEN
To: HGST NETHERLANDS B.V.
Reel/Frame 036456/0637 →
Continuity (2)
Provisional Application 62109524 · Jan 29, 2015
Related Publication 20160224595A1 · Aug 4, 2016
Cited By (1)
US 12,525,052