# US 12,001,704 B2 · System and method for detecting and utilizing data patterns

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,001,704 B2
- Document ID: US12001704B2
- Status: Granted
- Kind: B2
- Application number: 17/887,662
- Filed: 2022-08-15
- Published: 2024-02-15
- Granted: 2024-06-04
- Earliest claimed: 2022-08-15
- Assignees: Dell Products L.P.
- Applicants: Dell Products, L.P.
- Inventors: Uri Shabi; Aleksey Kabishcer; Nir Bar Joseph
- Web page: https://patentgrep.com/patent/US12001704B2

## CPC

- G06F 3/0641: {De-duplication techniques}
- G06F 3/0656: {Data buffering arrangements}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 12/0815: Cache consistency protocols
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method, computer program product, and computing system for loading a first chunk of data from a user data page into a first buffer. Each successive chunk of data from the user data page may be iteratively loaded into a second buffer. The first chunk of data in the first buffer may be iteratively compared with each successive chunk of data in the second buffer. In response to determining that the first chunk of data in the first buffer is equivalent to each successive chunk of data in the second buffer, the first chunk of data may be defined as a pattern.

## Claims

### Claim 1

A computer-implemented method, executed on a computing device, comprising:
loading a first chunk of data from a user data page into a first buffer;
iteratively loading each successive chunk of data from the user data page into a second buffer;
iteratively comparing the first chunk of data in the first buffer with each successive chunk of data in the second buffer; and
in response to determining that the first chunk of data in the first buffer is equivalent to each successive chunk of data in the second buffer, defining the first chunk of data as a pattern.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the second buffer is configured to perform a hash calculation on the successive chunk of data.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein iteratively comparing the first chunk of data in the first buffer with the successive chunk of data in the second buffer includes performing an XOR operation on the first chunk of data in the first buffer and the successive chunk of data in the second buffer.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein iteratively comparing the first chunk of data in the first buffer with the successive chunk of data in the second buffer includes performing an OR operation on the results of the XOR operation.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, further comprising:
in response to defining the first chunk of data as a pattern, reducing the size of the first chunk of data to a predefined metadata size.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising:
storing a representation of the user data page using the pattern.

### Claim 7 (depends on 6)

The computer-implemented method of claim 6, further comprising:
receiving a read request for the user data page;
reconstructing the user data page using the stored representation of the user data page; and
providing the reconstructed user data page in response to the read request.

### Claim 8

A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:
loading a first chunk of data from a user data page into a first buffer;
iteratively loading each successive chunk of data from the user data page into a second buffer;
iteratively comparing the first chunk of data in the first buffer with each successive chunk of data in the second buffer; and
in response to determining that the first chunk of data in the first buffer is equivalent to each successive chunk of data in the second buffer, defining the first chunk of data as a pattern.

### Claim 9 (depends on 8)

The computer program product of claim 8, wherein the second buffer is configured to perform a hash calculation on the successive chunk of data.

### Claim 10 (depends on 8)

The computer program product of claim 8, wherein iteratively comparing the first chunk of data in the first buffer with the successive chunk of data in the second buffer includes performing an XOR operation on the first chunk of data in the first buffer and the successive chunk of data in the second buffer.

### Claim 11 (depends on 10)

The computer program product of claim 10, wherein iteratively comparing the first chunk of data in the first buffer with the successive chunk of data in the second buffer includes performing an OR operation on the results of the XOR operation.

### Claim 12 (depends on 8)

The computer program product of claim 8, wherein the operations further comprise:
in response to defining the first chunk of data as a pattern, reducing the size of the first chunk of data to a predefined metadata size.

### Claim 13 (depends on 8)

The computer program product of claim 8, wherein the operations further comprise:
storing a representation of the user data page using the pattern.

### Claim 14 (depends on 13)

The computer program product of claim 13, wherein the operations further comprise:
receiving a read request for the user data page;
reconstructing the user data page using the stored representation of the user data page; and
providing the reconstructed user data page in response to the read request.

### Claim 15

A computing system comprising:
a memory; and
a processor configured to load a first chunk of data from a user data page into a first buffer, wherein the processor is further configured to iteratively load each successive chunk of data from the user data page into a second buffer, wherein the processor is further configured to iteratively compare the first chunk of data in the first buffer with each successive chunk of data in the second buffer, and wherein the processor is further configured to, in response to determining that the first chunk of data in the first buffer is equivalent to each successive chunk of data in the second buffer, define the first chunk of data as a pattern.

### Claim 16 (depends on 15)

The computing system of claim 15, wherein the second buffer is configured to perform a hash calculation on the successive chunk of data.

### Claim 17 (depends on 15)

The computing system of claim 15, wherein iteratively comparing the first chunk of data in the first buffer with the successive chunk of data in the second buffer includes performing an XOR operation on the first chunk of data in the first buffer and the successive chunk of data in the second buffer.

### Claim 18 (depends on 17)

The computing system of claim 17, wherein iteratively comparing the first chunk of data in the first buffer with the successive chunk of data in the second buffer includes performing an OR operation on the results of the XOR operation.

### Claim 19 (depends on 15)

The computing system of claim 15, wherein the processor is further configured to:
in response to defining the first chunk of data as a pattern, reduce the size of the first chunk of data to a predefined metadata size.

### Claim 20 (depends on 15)

The computing system of claim 15, wherein the processor is further configured to:
store a representation of the user data page using the pattern.
