IP Library Granted Patent US 10,025,669
Granted Patent B2
US 10,025,669 · App. 14/975,882 · Granted Jul 17, 2018

Maintaining data-set coherency in non-volatile memory across power interruptions

Inventors: Boaz Tabachnik (Herzlia B, IL); Ziv Hershman (Givat Shmuel, IL); Yael Kanter (Givatayim, IL)
Assignee: Nuvoton Technology Corporation
G06F11/1441G06F2201/82G06F2201/84G11C16/20
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 10,025,669
App. No.
14/975,882
Granted
Jul 17, 2018
Kind
B2
Abstract

A method for data storage includes storing data in a set of memory blocks of a non-volatile memory. Each memory block, which holds a respective portion of the data, is classified as valid or invalid depending on whether the memory block holds a most updated version of the portion, and as anchor or non-anchor depending on whether the portion belongs to a coherent snapshot of the data. Upon recovering from a power interruption, the coherent snapshot of the data is reconstructed from the memory blocks, based on classification of the memory blocks as valid or invalid and as anchor or non-anchor.

Claims (52)

1. A method for data storage, comprising:

storing data in a set of memory blocks of a non-volatile memory;

classifying each memory block, which holds a respective portion of the data, as valid or invalid depending on whether the memory block holds a most updated version of the portion, and as anchor or non-anchor depending on whether the portion belongs to a coherent snapshot of the data;

creating a new coherent snapshot of the data, by:

in a first phase, identifying the memory blocks in the set that are classified as valid and non-anchor, and re-classifying the identified memory blocks as anchor; and

in a second phase, which begins only after all the memory blocks identified in the first phase as valid and non-anchor have been re-classified, finding for each memory block identified in the first phase a corresponding memory block that holds a previous version of the portion held by the memory block, and re-classifying the corresponding memory block as non-anchor; and

upon recovering from a power interruption, reconstructing the new coherent snapshot of the data from the memory blocks, based on classification of the memory blocks as valid or invalid and as anchor or non-anchor.

2. The method according to claim 1 , and comprising updating the portion of the data that is stored in an existing memory block by writing the updated portion to a new memory block, classifying the new memory block as valid, and re-classifying the existing memory block as invalid.

3. The method according to claim 1 , wherein reconstructing the new coherent snapshot comprises:

constructing a first list containing the memory blocks that are classified as anchor and valid, and a second list containing the memory blocks that are classified as anchor and invalid; and

reconstructing the new coherent snapshot based on the first and second lists.

4. The method according to claim 3 , wherein reconstructing the new coherent snapshot comprises extracting the data from the memory blocks on the first list if the entire data is available in the memory blocks on the first list.

5. The method according to claim 4 , wherein, if the memory blocks on the first list do not comprise all the data, reconstructing the new coherent snapshot comprises, per portion of the data:

if the portion is available in the memory blocks on the second list, extracting the portion from the second list; and

if the portion is not available in the memory blocks on the second list, extracting the portion from the first list.

6. The method according to claim 1 , wherein classifying each memory block comprises setting a respective valid/invalid flag and a respective anchor/non-anchor flag in each memory block.

7. A data storage apparatus, comprising:

an interface for communicating with a non-volatile memory comprising a set of memory blocks; and

a processor, configured to:

store data in the set of memory blocks;

classify each memory block, which holds a respective portion of the data, as valid or invalid depending on whether the memory block holds a most updated version of the portion, and as anchor or non-anchor depending on whether the portion belongs to a coherent snapshot of the data;

create a new coherent snapshot of the data, by:

in a first phase, identifying the memory blocks in the set that are classified as valid and non-anchor, and re-classifying the identified memory blocks as anchor; and

in a second phase, which begins only after all the memory blocks identified in the first phase as valid and non-anchor have been re-classified, finding for each memory block identified in the first phase a corresponding memory block that holds a previous version of the portion held by the memory block, and re-classifying the corresponding memory block as non-anchor; and

upon recovering from a power interruption, reconstruct the new coherent snapshot of the data from the memory blocks, based on classification of the memory blocks as valid or invalid and as anchor or non-anchor.

8. The apparatus according to claim 7 , wherein the processor is configured to update the portion of the data that is stored in an existing memory block by writing the updated portion to a new memory block, classifying the new memory block as valid, and re-classifying the existing memory block as invalid.

9. The apparatus according to claim 7 , wherein the processor is configured to reconstruct the new coherent snapshot by:

constructing a first list containing the memory blocks that are classified as anchor and valid, and a second list containing the memory blocks that are classified as anchor and invalid; and

reconstructing the new coherent snapshot based on the first and second lists.

10. The apparatus according to claim 9 , wherein the processor is configured to reconstruct the new coherent snapshot by extracting the data from the memory blocks on the first list if the entire data is available in the memory blocks on the first list.

11. The apparatus according to claim 10 , wherein, if the memory blocks on the first list do not comprise all the data, the processor is configured to reconstruct the new coherent snapshot by performing, per portion of the data:

if the portion is available in the memory blocks on the second list, extracting the portion from the second list; and

if the portion is not available in the memory blocks on the second list, extracting the portion from the first list.

12. The apparatus according to claim 7 , wherein the processor is configured to classify each memory block by setting a respective valid/invalid flag and a respective anchor/non-anchor flag in each memory block.

13. A data storage apparatus, comprising:

a non-volatile memory, comprising a set of memory blocks; and

a memory controller, configured to:

store data in the set of memory blocks;

classify each memory block, which holds a respective portion of the data, as valid or invalid depending on whether the memory block holds a most updated version of the portion, and as anchor or non-anchor depending on whether the portion belongs to a coherent snapshot of the data;

create a new coherent snapshot of the data, by:

in a first phase, identifying the memory blocks in the set that are classified as valid and non-anchor, and re-classifying the identified memory blocks as anchor; and

in a second phase, which begins only after all the memory blocks identified in the first phase as valid and non-anchor have been re-classified, finding for each memory block identified in the first phase a corresponding memory block that holds a previous version of the portion held by the memory block, and re-classifying the corresponding memory block as non-anchor; and

upon recovering from a power interruption, to reconstruct the new coherent snapshot of the data from the memory blocks, based on classification of the memory blocks as valid or invalid and as anchor or non-anchor.

14. The apparatus according to claim 13 , wherein the memory controller is configured to update the portion of the data that is stored in an existing memory block by writing the updated portion to a new memory block, classifying the new memory block as valid, and re-classifying the existing memory block as invalid.

15. The apparatus according to claim 13 , wherein the memory controller is configured to reconstruct the new coherent snapshot by:

constructing a first list containing the memory blocks that are classified as anchor and valid, and a second list containing the memory blocks that are classified as anchor and invalid; and

reconstructing the new coherent snapshot based on the first and second lists.

16. The apparatus according to claim 15 , wherein the memory controller is configured to reconstruct the new coherent snapshot by extracting the data from the memory blocks on the first list if the entire data is available in the memory blocks on the first list.

17. The apparatus according to claim 16 , wherein, if the memory blocks on the first list do not comprise all the data, the memory controller is configured to reconstruct the new coherent snapshot by performing, per portion of the data:

if the portion is available in the memory blocks on the second list, extracting the portion from the second list; and

if the portion is not available in the memory blocks on the second list, extracting the portion from the first list.

18. The apparatus according to claim 13 , wherein the memory controller is configured to classify each memory block by setting a respective valid/invalid flag and a respective anchor/non-anchor flag in each memory block.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 27, 2016
From: KANTER, YAEL
To: NUVOTON TECHNOLOGY CORPORATION
Reel/Frame 040498/0527 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2015
From: TABACHNIK, BOAZ; HERSHMAN, ZIV
To: NUVOTON TECHNOLOGY CORPORATION
Reel/Frame 037338/0238 →
Continuity (2)
Provisional Application 62095796 · Dec 23, 2014
Related Publication 20160231940A1 · Aug 11, 2016