IP Library Granted Patent US 8,135,904
Granted Patent B2
US 8,135,904 · App. 12/823,053 · Granted Mar 13, 2012

Method and apparatus for facilitating fast wake-up of a non-volatile memory system

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 8,135,904
App. No.
12/823,053
Granted
Mar 13, 2012
Kind
B2
Abstract

A method includes storing at a non-volatile memory in a data storage device a first copy of a memory management table. The method further includes storing, at the non-volatile memory, a list of data entries that identify unused blocks of the non-volatile memory, where the list defines an order of allocating the unused blocks. The method further includes, in response to detecting a power event, accessing an entry of the ordered list to identify a block, and selectively updating the first copy of the memory management table based on a status of the identified block.

Claims (41)

1. A method comprising:

in a data storage device having a non-volatile memory, performing:

storing, at the non-volatile memory, a first copy of a memory management table;

storing, at the non-volatile memory, a list of data entries that identify unused blocks of the non-volatile memory, wherein the list defines an order of allocating the unused blocks;

in response to detecting a power event, accessing an entry of the list to identify a block;

updating a second copy of a memory management table to reflect usage of the identified block in response to the status of the identified block being in use

classifying a change of state of the second copy of the memory management table; and

selectively updating the first copy of the memory management table based on the classified change of state.

2. The method of claim 1 , wherein updating the first copy of the memory management table is accomplished without scanning the entire non-volatile memory to determine which blocks are unused blocks.

3. The method of claim 2 , further comprising determining whether the status of the identified block is in use, wherein the determination is made from data stored in a control field of the identified block.

4. The method of claim 1 , further comprising storing the second copy of the memory management table at a volatile memory of the data storage device.

5. The method of claim 1 , further comprising, when the status of the identified block is in use, determining whether a status of a second identified block is in use, wherein the second identified block is positioned subsequent to a listing of the identified block in the list.

6. The method of claim 5 , further comprising, when the status of the second identified block is unused, updating the first copy of the memory management table by replacing the first copy of the memory management table with a copy of the updated second copy of the memory management table.

7. The method of claim 1 , wherein updating the first copy of the memory management table is performed after N instances of updating the second copy of the memory management table, where N is a positive integer.

8. The method of claim 1 , wherein updating the first copy of the memory management table is performed periodically.

9. The method of claim 1 , wherein the non-volatile memory is a flash memory.

10. An apparatus comprising:

a data storage device including a non-volatile memory; and

a controller configured to:

store, at the non-volatile memory, a first copy of a memory management table;

store, at the non-volatile memory, a list of data entries that identify unused blocks of the non-volatile memory, wherein the list defines an order of allocating the unused blocks;

in response to a detected power event, access an entry of the list to identify a block;

update a second copy of a memory management table to reflect usage of the identified block in response to the status of the identified block being in use;

classify a change of state of the second copy of the memory management table; and

selectively update the first copy of the memory management table based on the classified change of state.

11. The apparatus of claim 10 , wherein the first copy of the memory management table is updated without scanning the entire non-volatile memory to determine which blocks are unused blocks.

12. The apparatus of claim 11 , wherein the controller is further configured to determine whether the status of the identified block is in use, wherein the determination is made based on data stored in a control field of the identified block.

13. The apparatus of claim 10 , wherein the controller is further configured to store the second copy of the memory management table at a volatile memory of the data storage device.

14. The apparatus of claim 13 , wherein the controller is further configured, when the status of the identified block is in use, to determine whether a status of a second identified block is in use, wherein the second identified block is listed subsequent to a listing of the identified block in the list.

15. The apparatus of claim 14 , wherein the controller is further configured, when the status of the second identified block is unused, to update the first copy of the memory management table by replacing the first copy of the memory management table with a copy of the updated second copy of the memory management table.

16. A non-transitory computer-readable storage medium storing computer-readable code, the computer-readable code comprising processor executable instructions that, when executed by a processor, cause the processor to:

store, at a non-volatile memory, a first copy of a memory management table;

store, at the non-volatile memory, a list of data entries, each entry identifying an unused block of the non-volatile memory, wherein the list defines an order of allocating the identified unused blocks;

in response to a detected power event, access a first entry of the list to identify a first block;

in response to a status of the first block being in use, update a second copy of a memory management table to reflect usage of the first block; and

selectively update the first copy of the memory management table based on at least one of an occurrence of a predetermined time interval and a predetermined number of instances of updating the second copy of the memory management table,

wherein updating the first copy of the memory management table is performed without scanning the entire non-volatile memory to determine which blocks are unused blocks.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the processor executable instructions, when executed by the processor, cause the processor to determine whether a status of a second block is in use when the status of the first block is in use, wherein the second block is listed subsequent to a listing of the first block in the list.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the processor executable instructions, when executed by the processor, cause the processor to update the first copy of the memory management table by replacing the first copy of the memory management table with a copy of the updated second copy of the memory management table when the status of the second block is unused.

19. The non-transitory computer-readable storage medium of claim 16 , wherein the second copy of the memory management table is updated periodically.

20. The non-transitory computer-readable storage medium of claim 16 , wherein the non-volatile memory is a flash memory.

Assignments (3)
CHANGE OF NAME Recorded Jun 10, 2025
From: WESTERN DIGITAL ISRAEL LTD.
To: SANDISK ISRAEL LTD.
Reel/Frame 071587/0836 →
CHANGE OF NAME Recorded Aug 21, 2020
From: SANDISK IL LTD
To: WESTERN DIGITAL ISRAEL LTD
Reel/Frame 053574/0513 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 24, 2010
From: LASSER, MENAHEM; AVRAHAM, MEIR
To: SANDISK IL LTD.
Reel/Frame 024591/0579 →