IP Library › Granted Patent US 11,436,209
Granted Patent B2
US 11,436,209 · App. 16/669,860 · Granted Sep 6, 2022

Techniques for efficiently determining similarity hashes

Inventors: Uri Shabi (Tel Mond, IL); Alon Titelman (Herzliya, IL); Alexei Kabishcer (Ramat Gan, IL)
Assignee: EMC IP Holding Company LLC
G06F16/2255G06F9/30036G06F9/30043G06F16/215G06F16/2264G06F16/3347
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 11,436,209
App. No.
16/669,860
Filed
Oct 31, 2019
Granted
Sep 6, 2022
Kind
B2
Art Unit
2166
USPC
707/747
Abstract

Techniques for data processing may include: receiving a data block P having a binary representation; determining features for the data block P; determining, using at least one table of precomputed hash values, feature hashes for the features, wherein each of the feature hashes corresponds to a different feature, wherein each of the feature hashes is one of the precomputed hash values of the at least one table; and determining, in accordance with the feature hashes, a similarity hash for the data block P. Each feature may be a byte of P. The at least one table may be a single 3 dimensional or multiple 2 dimensional tables. Each row of a table of precomputed hash values may correspond to a single precomputed hash value. The row may include byte entries where each byte entry includes a single bit value of a precomputed hash.

Claims (39)

1. A method of processing data comprising:

receiving a data block P having a binary representation;

determining a plurality of features for the data block P;

determining, using at least one table of precomputed hash values, a plurality of feature hashes for the plurality of features, wherein each of the plurality of feature hashes corresponds to a different one of the plurality of features, wherein each of the plurality of feature hashes is one of the precomputed hash values of the at least one table; and

determining, in accordance with the plurality of feature hashes for the plurality of features, a similarity hash for the data block P, wherein each of the plurality of feature hashes is determined using a hash function and in accordance with one of the plurality of features and a unique index associated with said one of the plurality of features, wherein the data block P is partitioned into N features, each of the N features has a corresponding index included in a feature index range, each of the N features has a corresponding bit representation denoting an integer included in a feature value range, and wherein the at least one table includes each possible hash value computable by the hash function in accordance with the feature value range and the feature index range.

2. The method of claim 1 , wherein each of the N features is a different byte of the data block P, wherein the feature index range is from 0 through N−1 inclusively, and wherein the feature value range is a byte value range from 0 through 255 inclusively.

3. The method of claim 1 , wherein the at least one table is a single table having three dimensions, wherein a first of the three dimensions corresponds to unique indices associated with features, a second of the three dimensions corresponds to integer values of bit representations of features, and a third dimension of the three dimensions corresponds to bit positions of precomputed hash values stored in the single table.

4. The method of claim 3 , wherein each entry of the single table is a byte that stores a single bit value of one precomputed hash value stored in the single table, and wherein each row of the single table is a representation of a single precomputed hash value stored in the single table.

5. The method of claim 2 , wherein the at least one table includes N tables and wherein each one of the N tables includes precomputed hash values for a different unique index associated with one of the N features.

6. The method of claim 5 , wherein each of the N tables has a first dimension corresponding to integer values of bit representations of features, and a second dimension corresponding to bit positions of precomputed hash values.

7. The method of claim 6 , wherein each entry of each of the N tables is a byte that stores a single bit value of one precomputed hash value stored in the single table, and wherein each row of each of the N tables is a representation of a single precomputed hash value stored in the single table.

8. The method of claim 7 , wherein each of the plurality of feature hashes has a size of K bits, and wherein the similarity hash for the data block P has a size of K bits.

9. The method of claim 8 , wherein a first row of a first of the N tables represents a first hash value for a first of the plurality of features of the data block P and wherein the method further comprises:

loading the first row of the first table into a first register using a vectorized load instruction, wherein the first register is configured to have K elements, and wherein the vectorized load instructions loads entries of the first row into corresponding elements of the first register; and

adding the first register to an accumulation register using a vectorized add instruction, wherein the accumulation register is configured to have K elements and the vectorized add instruction adds elements of the first register to corresponding elements of the accumulation register and stores results in the corresponding elements of the accumulation register.

10. The method of claim 9 , wherein the K elements denote K counters, wherein MAX is a maximum value that can be represented by each of the K counters in accordance with a number of bits of each of the K counters.

11. The method of claim 10 , wherein responsive to determining that MAX hash values have been added corresponding to MAX features of the data block P, first processing is performed to avoid possible overflow of the K counters, said first processing comprising:

partitioning the K elements of the accumulation register into a first portion of K/2 elements and a second portion of K/2 elements;

using a vectorized add instruction to add the first portion of K/2 elements of the accumulation register to a first additional accumulation register configured to have K/2 elements, wherein each of the K/2 elements of the first additional accumulation register includes a larger number of bits than each of the K elements of the accumulation register; and

using a vectorized add instruction to add the second portion of K/2 elements of the accumulation register to a second additional accumulation register configured to have K/2 elements, wherein each of the K/2 elements of the second additional accumulation register includes a larger number of bits than each of the K elements of the accumulation register.

12. The method of claim 11 , wherein the first additional accumulation register and the second additional accumulation register are collectively configured to have K elements representing the K counters, wherein each of the K counters has a value indicating a total count of 1 bit values for a corresponding bit position of the similarity hash for the data block P.

13. The method of claim 12 , further comprising:

using a first vectorized comparison instruction to compare each of the K/2 elements of the first additional accumulation register to a first value, N/2, and determine whether each of the K/2 elements has a counter value greater than the first value, wherein the first vectorized comparison instruction stores a resulting value in each of the K/2 elements indicating whether said each elements has a counter value greater than the first value.

14. The method of claim 1 , further comprising:

performing data reduction processing using the similarity hash has for the data block P.

15. The method of claim 14 , wherein the data reduction processing includes compression processing.

16. The method of claim 14 , wherein the data reduction processing includes deduplication processing.

17. A system comprising:

at least one processor; and

at least one memory comprising code stored thereon that, when executed, performs a method of processing data comprising:

receiving a data block P having a binary representation;

determining a plurality of features for the data block P;

determining, using at least one table of precomputed hash values, a plurality of feature hashes for the plurality of features, wherein each of the plurality of feature hashes corresponds to a different one of the plurality of features, wherein each of the plurality of feature hashes is one of the precomputed hash values of the at least one table; and

determining, in accordance with the plurality of feature hashes for the plurality of features, a similarity hash for the data block P, wherein each of the plurality of feature hashes is determined using a hash function and in accordance with one of the plurality of features and a unique index associated with said one of the plurality of features, wherein the data block P is partitioned into N features, each of the N features has a corresponding index included in a feature index range, each of the N features has a corresponding bit representation denoting an integer included in a feature value range, and wherein the at least one table includes each possible hash value computable by the hash function in accordance with the feature value range and the feature index range.

18. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs method of processing data comprising:

receiving a data block P having a binary representation;

determining a plurality of features for the data block P;

determining, using at least one table of precomputed hash values, a plurality of feature hashes for the plurality of features, wherein each of the plurality of feature hashes corresponds to a different one of the plurality of features, wherein each of the plurality of feature hashes is one of the precomputed hash values of the at least one table; and

determining, in accordance with the plurality of feature hashes for the plurality of features, a similarity hash for the data block P, wherein each of the plurality of feature hashes is determined using a hash function and in accordance with one of the plurality of features and a unique index associated with said one of the plurality of features, wherein the data block P is partitioned into N features, each of the N features has a corresponding index included in a feature index range, each of the N features has a corresponding bit representation denoting an integer included in a feature value range, and wherein the at least one table includes each possible hash value computable by the hash function in accordance with the feature value range and the feature index range.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2019
From: SHABI, URI; TITELMAN, ALON; KABISHCER, ALEXEI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050879/0447 →
Continuity (1)
Related Publication 20210133175A1 · May 6, 2021