IP Library Granted Patent US 9,934,156
Granted Patent B1
US 9,934,156 · App. 14/860,153 · Granted Apr 3, 2018

Host traffic separation scheme for sudden power loss scenario

Inventors: Fan Zhang (Fremont, CA); Chun Hok Ho (Foster City, CA); Yan Zhang (Milpitas, CA)
Assignee: SK Hynix Inc.
G06F12/1009G06F12/1081G06F2212/403G06F2212/65
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,934,156
App. No.
14/860,153
Granted
Apr 3, 2018
Kind
B1
Abstract

A host write is received which includes a write address and write data. It is determined if the write address is already stored in at least one of a plurality of open blocks. If so, a collision open block is determined at least the write data is stored in the collision open block. In the event it is determined that the write address is not already stored in at least one of the plurality of open blocks, a temperature for the host write is determined and at least the write data is stored in an open block associated with the temperature.

Claims (131)

1. A system, comprising:

a host interface configured to receive a host write which includes a write address and write data;

a host write router configured to:

determine if the write address is already stored in at least one of a plurality of open blocks; and

in the event it is determined that the write address is already stored in at least one of the plurality of open blocks, determine a collision open block;

a data temperature identifier configured to, in the event it is determined that the write address is not already stored in at least one of the plurality of open blocks, determine a temperature for the host write; and

a storage interface configured to:

in the event it is determined that the write address is already stored in at least one of the plurality of open blocks, store at least the write data in the collision open block; and

in the event it is determined that the write address is not already stored in at least one of the plurality of open blocks, store at least the write data in an open block associated with the temperature.

2. The system recited in 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 recited in claim 1 , wherein determining the collision open block includes setting the collision open block to be that open block in which the write address is already stored in.

4. The system recited in claim 1 , wherein determining the collision open block includes setting the collision open block to be an open block associated with a hottest temperature.

5. The system recited in claim 1 further comprising a table rebuilder configured to:

determine if there are more closed blocks;

in the event it is determined that there are more closed blocks:

select one of the closed blocks; and

update a logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by accessing metadata stored at the end of the selected closed block; and

in the event it is determined that there are no more closed blocks:

determine if there are more open blocks; and

in the event it is determined that there are more open blocks:

select one of the open blocks; and

update the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address.

6. The system recited in claim 1 further comprising a table rebuilder configured to:

determine if there are more closed blocks;

in the event it is determined that there are more closed blocks:

select one of the closed blocks; and

update a logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by accessing metadata stored at the end of the selected closed block; and

in the event it is determined that there are no more closed blocks:

determine if there are two or more open blocks;

in the event it is determined that there are two or more open blocks:

select one of the open blocks, other than an open block associated with a hottest temperature; and

update the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address; and

in the event it is determined that there are one or fewer open blocks:

select the open block associated with the hottest temperature; and

update the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address.

7. The system recited in claim 1 , wherein determining the temperature for the host write includes:

obtaining a current timestamp for the host write;

determining if there is an overwrite;

in the event it is determined that there is an overwrite:

obtaining a previous timestamp for the host write;

determining a difference between the current timestamp and the previous timestamp; and

assigning one of a plurality of temperatures to the host write by comparing the difference to one or more thresholds;

in the event it is determined that there is no overwrite, assigning a default temperature to the host write; and

saving the current timestamp.

8. A method, comprising:

receiving a host write which includes a write address and write data;

determining if the write address is already stored in at least one of a plurality of open blocks;

in the event it is determined that the write address is already stored in at least one of the plurality of open blocks:

determining a collision open block; and

storing at least the write data in the collision open block; and

in the event it is determined that the write address is not already stored in at least one of the plurality of open blocks:

determining a temperature for the host write; and

storing at least the write data in an open block associated with the temperature.

9. The method recited in claim 8 , wherein the method is performed by 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 recited in claim 8 , wherein determining the collision open block includes setting the collision open block to be that open block in which the write address is already stored in.

11. The method recited in claim 8 , wherein determining the collision open block includes setting the collision open block to be an open block associated with a hottest temperature.

12. The method recited in claim 8 further comprising:

determining if there are more closed blocks;

in the event it is determined that there are more closed blocks:

selecting one of the closed blocks; and

updating a logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by accessing metadata stored at the end of the selected closed block; and

in the event it is determined that there are no more closed blocks:

determining if there are more open blocks; and

in the event it is determined that there are more open blocks:

selecting one of the open blocks; and

updating the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address.

13. The method recited in claim 8 further comprising:

determining if there are more closed blocks;

in the event it is determined that there are more closed blocks:

selecting one of the closed blocks; and

updating a logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by accessing metadata stored at the end of the selected closed block; and

in the event it is determined that there are no more closed blocks:

determining if there are two or more open blocks;

in the event it is determined that there are two or more open blocks:

selecting one of the open blocks, other than an open block associated with a hottest temperature; and

updating the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address; and

in the event it is determined that there are one or fewer open blocks:

selecting the open block associated with the hottest temperature; and

updating the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address.

14. The method recited in claim 8 , wherein determining the temperature for the host write includes:

obtaining a current timestamp for the host write;

determining if there is an overwrite;

in the event it is determined that there is an overwrite:

obtaining a previous timestamp for the host write;

determining a difference between the current timestamp and the previous timestamp; and

assigning one of a plurality of temperatures to the host write by comparing the difference to one or more thresholds;

in the event it is determined that there is no overwrite, assigning a default temperature to the host write; and

saving the current timestamp.

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 host write which includes a write address and write data;

determining if the write address is already stored in at least one of a plurality of open blocks;

in the event it is determined that the write address is already stored in at least one of the plurality of open blocks:

determining a collision open block; and

storing at least the write data in the collision open block; and

in the event it is determined that the write address is not already stored in at least one of the plurality of open blocks:

determining a temperature for the host write; and

storing at least the write data in an open block associated with the temperature.

16. The computer program product recited in claim 15 , wherein the computer instructions for determining the collision open block include computer instructions for setting the collision open block to be that open block in which the write address is already stored in.

17. The computer program product recited in claim 15 , wherein the computer instructions for determining the collision open block include computer instructions for setting the collision open block to be an open block associated with a hottest temperature.

18. The computer program product recited in claim 15 further comprising computer instructions for:

determining if there are more closed blocks;

in the event it is determined that there are more closed blocks:

selecting one of the closed blocks; and

updating a logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by accessing metadata stored at the end of the selected closed block; and

in the event it is determined that there are no more closed blocks:

determining if there are more open blocks; and

in the event it is determined that there are more open blocks:

selecting one of the open blocks; and

updating the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address.

19. The computer program product recited in claim 15 further comprising computer instructions for:

determining if there are more closed blocks;

in the event it is determined that there are more closed blocks:

selecting one of the closed blocks; and

updating a logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by accessing metadata stored at the end of the selected closed block; and

in the event it is determined that there are no more closed blocks:

determining if there are two or more open blocks;

in the event it is determined that there are two or more open blocks:

selecting one of the open blocks, other than an open block associated with a hottest temperature; and

updating the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address; and

in the event it is determined that there are one or fewer open blocks:

selecting the open block associated with the hottest temperature; and

updating the logical to physical address mapping table with one or more mappings between a write address and a corresponding physical address, including by parsing the open block to obtain a write address and a corresponding physical address.

20. The computer program product recited in claim 15 , wherein the computer instructions for determining the temperature for the host write include computer instructions for:

obtaining a current timestamp for the host write;

determining if there is an overwrite;

in the event it is determined that there is an overwrite:

obtaining a previous timestamp for the host write;

determining a difference between the current timestamp and the previous timestamp; and

assigning one of a plurality of temperatures to the host write by comparing the difference to one or more thresholds;

in the event it is determined that there is no overwrite, assigning a default temperature to the host write; and

saving the current timestamp.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2018
From: ZHANG, FAN; HO, CHUN HOK; ZHANG, YAN
To: SK HYNIX INC.
Reel/Frame 044872/0018 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: SK HYNIX MEMORY SOLUTIONS INC.
To: SK HYNIX INC.
Reel/Frame 044899/0443 →
Continuity (1)
Provisional Application 62056290 · Sep 26, 2014