IP Library Granted Patent US 9,569,114
Granted Patent B2
US 9,569,114 · App. 14/671,711 · Granted Feb 14, 2017

Deduplication using a master and a slave

Inventors: Indra G. Harijono (San Jose, CA); Zhenchuan Chai (Milpitas, CA)
Assignee: SK hynix memory solutions Inc.
G06F3/0608G06F3/0641G06F3/0679
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 9,569,114
App. No.
14/671,711
Granted
Feb 14, 2017
Kind
B2
Abstract

A write instruction includes a logical address and write data to be stored. An address mapping master is used to determine if the logical address is stored in an address table. A deduplication state is selected based at least in part on whether the logical address is stored in the address table and whether a fingerprint is stored in a fingerprint table. The fingerprint is generated using the write data. A fingerprinting slave is used to determine if the fingerprint is stored in the fingerprint table, where the address mapper and the fingerprinter are configured to run in parallel and the address mapper is the master to the fingerprinter's slave.

Claims (61)

1. A system, including a processor, and coupled to the memory device, containing instructions executed by the processor, comprising:

an address mapping master configured to:

receive a write instruction, including: (1) a logical address and (2) write data to be stored at the logical address;

determine if the logical address is stored in an address table that includes one or more mappings between one or more logical addresses and a physical address; and

select a deduplication state based at least in part on: (1) whether the logical address is stored in the address table and (2) whether a fingerprint is stored in a fingerprint table, wherein the fingerprint table includes one or more mappings between a fingerprint and a physical address; and

a fingerprinting slave configured to:

generate the fingerprint using the write data; and

determine if the fingerprint is stored in the fingerprint table, wherein: (1) the address mapping master and the fingerprinting slave are configured to run in parallel and (2) the address mapping master is the master to the fingerprinting slave.

2. The system of claim 1 , wherein the system includes a semiconductor device, including one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

3. The system of claim 1 , wherein when the fingerprint is stored in the fingerprint table, the fingerprinting slave is further configured to determine if the write data matches stored data corresponding to the fingerprint.

4. The system of claim 3 , when the write data matches the stored data, the address mapping master is further configured to:

when the logical address is not stored in the address table, select duplicate data as the deduplication state; and

when the logical address is stored in the address table:

determine if a first physical address, stored in the address table and corresponding to the logical address, matches a second physical address, stored in the fingerprint table and corresponding to the fingerprint;

when the first and the second physical addresses match, select duplicate data as the deduplication state; and

when the first and the second physical addresses do not match, select updated data as the deduplication state.

5. The system of claim 3 , wherein when the write data does not match stored data, the address mapping master is further configured to:

when the logical address is not stored in the address table, select new data as the deduplication state; and

when the logical address is stored in the address table, select updated data as the deduplication state.

6. The system of claim 1 further comprising a write data queue, wherein:

the address mapping master is further configured to write the write data to the write data queue; and

the fingerprinting slave is further configured to obtain the write data from the write data queue.

7. The system of claim 1 further comprising an obsolete physical address queue, wherein:

the address mapping master is further configured to write physical addresses for which a number of references in the address table equals zero to the obsolete physical address queue; and

the fingerprinting slave is further configured to remove entries in the fingerprint table that include physical addresses from the obsolete physical address queue.

8. A method, comprising:

receiving a write instruction, including: (1) a logical address and (2) write data to be stored at the logical address;

using an address mapping master to determine if the logical address is stored in an address table that includes one or more mappings between one or more logical addresses and a physical address;

selecting a deduplication state based at least in part on: (1) whether the logical address is stored in the address table and (2) whether a fingerprint is stored in a fingerprint table, wherein the fingerprint table includes one or more mappings between a fingerprint and a physical address;

generating the fingerprint using the write data; and

using a fingerprinting slave to determine if the fingerprint is stored in the fingerprint table, wherein: (1) the address mapping master and the fingerprinting slave are configured to run in parallel and (2) the address mapping master is the master to the fingerprinting slave.

9. The method of claim 8 , wherein the address mapping master and the fingerprinting slave are implemented on a semiconductor device, including one or more of the following: an application-specific integrated circuit (ASIC) or a field-programmable gate array (FPGA).

10. The method of claim 8 , wherein when the fingerprint is stored in the fingerprint table, the method further includes using the fingerprinting slave to determine if the write data matches stored data corresponding to the fingerprint.

11. The method of claim 10 , wherein when the write data matches the stored data, the method further includes using the address mapping master to:

when the logical address is not stored in the address table, select duplicate data as the deduplication state; and

when the logical address is stored in the address table:

determine if a first physical address, stored in the address table and corresponding to the logical address, matches a second physical address, stored in the fingerprint table and corresponding to the fingerprint;

when the first and the second physical addresses match, select duplicate data as the deduplication state; and

when the first and the second physical addresses do not match, select updated data as the deduplication state.

12. The method of claim 10 , wherein when the write data does not match stored data, the method further includes using the address mapping master to:

when the logical address is not stored in the address table, select new data as the deduplication state; and

when the logical address is stored in the address table, select updated data as the deduplication state.

13. The method of claim 8 , further comprising:

using the address mapping master to write the write data to a write data queue; and

using the fingerprinting slave to obtain the write data from the write data queue.

14. The method of claim 8 , further comprising:

using the address mapping master to write physical addresses for which a number of references in the address table equals zero to the obsolete physical address queue; and

using the fingerprinting slave to remove entries in the fingerprint table that include physical addresses from the obsolete physical address queue.

15. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving a write instruction, including: (1) a logical address and (2) write data to be stored at the logical address;

using an address mapping master to determine if the logical address is stored in an address table that includes one or more mappings between one or more logical addresses and a physical address;

selecting a deduplication state based at least in part on: (1) whether the logical address is stored in the address table and (2) whether a fingerprint is stored in a fingerprint table, wherein the fingerprint table includes one or more mappings between a fingerprint and a physical address;

generating the fingerprint using the write data; and

using a fingerprinting slave to determine if the fingerprint is stored in the fingerprint table, wherein: (1) the address mapping master and the fingerprinting slave are configured to run in parallel and (2) the address mapping master is the master to the fingerprinting slave.

16. The computer program product of claim 15 , wherein when the fingerprint is stored in the fingerprint table, the method further includes using the fingerprinting slave to determine if the write data matches stored data corresponding to the fingerprint.

17. The computer program product of claim 15 , further comprising:

using the address mapping master to write the write data to a write data queue; and

using the fingerprinting slave to obtain the write data from the write data queue.

18. The computer program product of claim 15 , further comprising:

using the address mapping master to write physical addresses for which a number of references in the address table equals zero to the obsolete physical address queue; and

using the fingerprinting slave to remove entries in the fingerprint table that include physical addresses from the obsolete physical address queue.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: SK HYNIX MEMORY SOLUTIONS INC.
To: SK HYNIX INC.
Reel/Frame 044899/0443 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2015
From: HARIJONO, INDRA G.; CHAI, ZHENCHUAN
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 035847/0536 →
Continuity (2)
Provisional Application 62080015 · Nov 14, 2014
Related Publication 20160139817A1 · May 19, 2016