# US 2022/0035546 A1 · Base and compressed difference data deduplication

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

- Number: US 2022/0035546 A1
- Document ID: US20220035546A1
- Status: Published application
- Kind: A1
- Application number: 17/393,324
- Filed: 2021-08-03
- Published: 2022-02-03
- Earliest claimed: 2020-08-03
- Assignees: Cornell University
- Applicants: Cornell University
- Inventors: Sungbo PARK; Gookwon Edward SUH
- Web page: https://patentgrep.com/patent/US20220035546A1

## CPC

- G06F 3/0641: {De-duplication techniques}
- G06F 12/1081: for peripheral access to main memory, e.g. direct memory access [DMA]
- G06F 3/061: {Improving I/O performance}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods herein provide for data deduplication in memory. In one embodiment, an Input/Output (I/O) module is operable to process a write I/O request to the memory, and to extract data of the write I/O request. A data deduplication module is operable to access a table to identify a first portion of the data of the write I/O request that is stored at a first address of the memory, to assign a pointer to the first portion of the data in the table, to identify a second portion of the data of the write I/O request that is not stored in memory, and to direct the second portion of the data of the write I/O request to be written to a second address of the memory.

## Claims

### Claim 1

A device, comprising:
a memory;
an Input/Output (I/O) module operable to process a write I/O request to the memory, and to extract data of the write I/O request;
a data deduplication module operable to access a table to identify a first portion of the data of the write I/O request that is stored at a first address of the memory, to assign a pointer to the first portion of the data in the table, to identify a second portion of the data of the write I/O request that is not stored in memory, and to direct the second portion of the data of the write I/O request to be written to a second address of the memory.

### Claim 2 (depends on 1)

The device of claim 1, wherein:
the data deduplication module is further operable to lead-zero compress the second portion of the data of the write I/O request.

### Claim 3 (depends on 1)

The device of claim 1, wherein:
the I/O module is further operable to process a read I/O request to the memory; and
the data deduplication module is further operable to locate the second portion of the data at the second address of the memory based on the read I/O request, to direct the I/O module to read the second portion of the data from the second address of the memory, to retrieve the pointer from the table, to locate the first portion of the data at the first address of the memory based on the pointer, to direct the I/O module to read the first portion of the data at the first address of the memory, and to direct the I/O module to link the first and second portions of the data,
wherein the I/O module is further operable to transfer the linked first and second portions of the data to fulfil the read I/O request.

### Claim 4 (depends on 1)

The device of claim 1, wherein:
the data deduplication module is further operable to lead-zero decompress the second portion of the data before fulfilling the read I/O request.

### Claim 5 (depends on 1)

The device of claim 1, wherein:
the data deduplication module is further operable to establish a size for the first portion of the data, and to compare the first portion of the data to data stored in the memory based on the size.

### Claim 6 (depends on 1)

The device of claim 1, wherein:
the data deduplication module is further operable to generate a hash value for the first portion of the data of the write I/O request, and to locate the first portion of the data of the write I/O request in the memory based on the hash value.

### Claim 7 (depends on 1)

The device of claim 1, wherein:
the I/O module is further operable to process another write I/O request to the memory, and to extract the data of the other write I/O request; and
the data deduplication module is further operable to determine that the data of the other write I/O request is not stored in the memory, and to direct the I/O module to write the data of the other I/O request to the memory.

### Claim 8 (depends on 1)

The device of claim 1, wherein:
the I/O module is further operable to process another write I/O request to the memory, and to extract the data of the other write I/O request; and
the data deduplication module is further operable to determine that all of the data of the other write I/O request is stored in the memory, and to assign another pointer to a third address in the memory where the data of the other write I/O request is stored.

### Claim 9 (depends on 1)

The device of claim 1, wherein:
the I/O module is further operable to process another write I/O request to the memory, and to extract the data of the other write I/O request; and
the data deduplication module is further operable to access a table to identify that the other write I/O request includes the first portion of data that is stored at the first address of the memory, and to assign another pointer to the first portion of the data in the table.

### Claim 10 (depends on 1)

The device of claim 1, wherein:
the data deduplication module is further operable to selectively disable data deduplication.

### Claim 11

A method, comprising:
processing a write Input/Output (I/O) request to a memory to extract data of the write I/O request;
accessing a table to identify a first portion of the data of the write I/O request that is stored at a first address of the memory;
assigning a pointer to the first portion of the data in the table;
identifying a second portion of the data of the write I/O request that is not stored in memory; and
writing the second portion of the data of the write I/O request to a second address of the memory.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
lead-zero compressing the second portion of the data of the write I/O request.

### Claim 13 (depends on 11)

The method of claim 11, further comprising:
processing a read I/O request to the memory;
locating the second portion of the data at the second address of the memory based on the read I/O request;
reading the second portion of the data from the second address of the memory;
retrieving the pointer from the table;
locating the first portion of the data at the first address of the memory based on the pointer;
reading the first portion of the data at the first address of the memory;
linking the first and second portions of the data; and
transferring the linked first and second portions of the data to fulfil the read I/O request.

### Claim 14 (depends on 11)

The method of claim 11, further comprising:
lead-zero decompressing the second portion of the data before fulfilling the read I/O request.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
establishing a size for the first portion of the data; and
comparing the first portion of the data to data stored in the memory based on the size.

### Claim 16 (depends on 11)

The method of claim 11, further comprising:
generating a hash value for the first portion of the data of the write I/O request; and
locating the first portion of the data of the write I/O request in the memory based on the hash value.

### Claim 17 (depends on 11)

The method of claim 11, further comprising:
processing another write I/O request to the memory to extract the data of the other write I/O request;
determining that the data of the other write I/O request is not stored in the memory; and
writing the data of the other I/O request to the memory.

### Claim 18 (depends on 11)

The method of claim 11, further comprising:
processing another write I/O request to the memory to extract the data of the other write I/O request;
determining that all of the data of the other write I/O request is stored in the memory; and
assigning another pointer to a third address in the memory where the data of the other write I/O request is stored.

### Claim 19 (depends on 11)

The method of claim 11, further comprising:
processing another write I/O request to the memory to extract the data of the other write I/O request;
accessing a table to identify that the other write I/O request includes the first portion of data that is stored at the first address of the memory; and
assigning another pointer to the first portion of the data in the table.

### Claim 20 (depends on 1)

The method of claim 1, further comprising:
selectively disabling data deduplication.

### Claim 21

A non-transitory computer readable medium comprising instructions that, when executed by an Input/Output (I/O) module, direct the I/O module to:
process a write I/O request to a memory to extract data of the write I/O request;
access a table to identify a first portion of the data of the write I/O request that is stored at a first address of the memory;
assign a pointer to the first portion of the data in the table;
identify a second portion of the data of the write I/O request that is not stored in memory; and
write the second portion of the data of the write I/O request to a second address of the memory.

### Claim 22 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
lead-zero compress the second portion of the data of the write I/O request.

### Claim 23 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
process a read I/O request to the memory;
locate the second portion of the data at the second address of the memory based on the read I/O request;
read the second portion of the data from the second address of the memory;
retrieve the pointer from the table;
locate the first portion of the data at the first address of the memory based on the pointer;
read the first portion of the data at the first address of the memory;
link the first and second portions of the data; and
transfer the linked first and second portions of the data to fulfil the read I/O request.

### Claim 24 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
lead-zero decompress the second portion of the data before fulfilling the read I/O request.

### Claim 25 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
establish a size for the first portion of the data; and
compare the first portion of the data to data stored in the memory based on the size.

### Claim 26 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
generate a hash value for the first portion of the data of the write I/O request; and
locate the first portion of the data of the write I/O request in the memory based on the hash value.

### Claim 27 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
process another write I/O request to the memory to extract the data of the other write I/O request;
determine that the data of the other write I/O request is not stored in the memory; and
write the data of the other I/O request to the memory.

### Claim 28 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
process another write I/O request to the memory to extract the data of the other write I/O request;
determine that all of the data of the other write I/O request is stored in the memory; and
assign another pointer to a third address in the memory where the data of the other write I/O request is stored.

### Claim 29 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
process another write I/O request to the memory to extract the data of the other write I/O request;
access a table to identify that the other write I/O request includes the first portion of data that is stored at the first address of the memory; and
assign another pointer to the first portion of the data in the table.

### Claim 30 (depends on 21)

The computer readable medium of claim 21, further comprising instructions that direct the I/O module to:
selectively disable data deduplication.
