IP Library Granted Patent US 9,753,649
Granted Patent B2
US 9,753,649 · App. 14/659,493 · Granted Sep 5, 2017

Tracking intermix of writes and un-map commands across power cycles

Inventors: Douglas A. Prins (Laguna Hills, CA); Aaron K. Olbrich (Morgan Hill, CA); Huapeng Guan (Fremont, CA); Graeme Weston-Lewis (Pleasanton, CA); Anand Kulkarni (San Jose, CA); Yipei Yu (San Francisco, CA)
Assignee: SanDisk Technologies LLC
G06F3/061G06F3/0659G06F3/0688G06F11/1441G06F12/0246G06F11/1471G06F2212/7201G06F2212/7205G06F2212/7207G06F2212/7208
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,753,649
App. No.
14/659,493
Granted
Sep 5, 2017
Kind
B2
Abstract

Systems, methods and/or devices are used to enable tracking intermix of writes and un-map commands across power cycles. In one aspect, the method includes (1) receiving, at a storage device, a plurality of commands from a host, the storage device including non-volatile memory, (2) maintaining a log corresponding to write commands and un-map commands from the host, (3) maintaining a mapping table in volatile memory, the mapping table used to translate logical addresses to physical addresses, (4) saving the mapping table, on a scheduled basis that is independent of the un-map commands, to the non-volatile memory of the storage device, (5) saving the log to the non-volatile memory, and (6) upon power up of the storage device, rebuilding the mapping table from the saved mapping table in the non-volatile memory of the storage device and from the saved log in the non-volatile memory of the storage device.

Claims (56)

1. A method of managing a storage system, the method comprising:

receiving, at a storage device of the storage system, a plurality of commands from a host to which the storage device is operatively coupled, the plurality of commands from the host including write commands and un-map commands, the storage device including non-volatile memory;

maintaining a log corresponding to the write commands and un-map commands from the host;

maintaining a mapping table in volatile memory, the mapping table used to translate logical addresses in a logical address space available to the host to physical addresses in a physical address space of the storage device, wherein the log is distinct from the mapping table;

saving the mapping table, on a scheduled basis that is independent of the plurality of commands from the host, to the non-volatile memory of the storage device;

saving the log to the non-volatile memory of the storage device; and

upon power up of the storage device, rebuilding the mapping table from the saved mapping table in the non-volatile memory of the storage device and from the saved log in the non-volatile memory of the storage device.

2. The method of claim 1 , wherein saving the mapping table includes storing in the non-volatile memory a position pointer to a position in the log.

3. The method of claim 1 , wherein:

saving the mapping table includes storing a plurality of distinct portions of the mapping table in the non-volatile memory at distinct scheduled times that are independent of the plurality of commands from the host; and

the rebuilding comprises rebuilding the mapping table from the plurality of distinct portions of the mapping table stored in the non-volatile memory and the saved log in the non-volatile memory.

4. The method of claim 1 , wherein for write commands, the log includes physical addresses to which data is stored in conjunction with execution of the write commands.

5. The method of claim 1 , wherein the log includes an entry for a first un-map command, the entry including information identifying a plurality of logical addresses un-mapped in accordance with the first un-map command.

6. The method of claim 1 , wherein the log includes an entry for a first un-map command, the entry including information identifying a range of logical addresses un-mapped in accordance with the first un-map command.

7. The method of claim 1 , wherein saving the log to the non-volatile memory includes saving at least a portion of the log to the non-volatile memory in conjunction with a power fail event.

8. The method of claim 1 , wherein saving the log to the non-volatile memory includes:

saving at least a first portion of the log to the non-volatile memory responsive to the log satisfying predefined fullness criteria; and

saving a final portion of the log to the non-volatile memory in conjunction with a power fail event.

9. The method of claim 1 , wherein the storage device comprises one or more flash memory devices.

10. A storage device, comprising:

non-volatile memory;

one or more processors; and

controller memory storing one or more programs configured for execution by the one or more processors, the one or more programs including instructions for:

receiving, at the storage device, a plurality of commands from a host to which the storage device is operatively coupled, the plurality of commands from the host including write commands and un-map commands;

maintaining a log corresponding to write commands and un-map commands from the host;

maintaining a mapping table in volatile memory, the mapping table used to translate logical addresses in a logical address space available to the host to physical addresses in a physical address space of the storage device, wherein the log is distinct from the mapping table;

saving the mapping table, on a scheduled basis that is independent of the plurality of commands from the host, to the non-volatile memory;

saving the log to the non-volatile memory; and

upon power up of the storage device, rebuilding the mapping table from the saved mapping table in the non-volatile memory and from the saved log in the non-volatile memory.

11. The storage device of claim 10 , wherein saving the mapping table includes storing in the non-volatile memory a position pointer to a position in the log.

12. The storage device of claim 10 , wherein:

saving the mapping table includes storing a plurality of distinct portions of the mapping table in the non-volatile memory at distinct scheduled times that are independent of the plurality of commands from the host; and

the rebuilding comprises rebuilding the mapping table from the plurality of distinct portions of the mapping table stored in the non-volatile memory and the saved log in the non-volatile memory.

13. The storage device of claim 10 , wherein for write commands, the log includes physical addresses to which data is stored in conjunction with execution of the write commands.

14. The storage device of claim 10 , wherein the log includes an entry for a first un-map command, the entry including information identifying a plurality of logical addresses un-mapped in accordance with the first un-map command.

15. The storage device of claim 10 , wherein saving the log to the non-volatile memory includes saving at least a portion of the log to the non-volatile memory in conjunction with a power fail event.

16. The storage device of claim 10 , wherein saving the log to the non-volatile memory includes:

saving at least a first portion of the log to the non-volatile memory responsive to the log satisfying predefined fullness criteria; and

saving a final portion of the log to the non-volatile memory in conjunction with a power fail event.

17. A non-transitory computer-readable storage medium, storing one or more programs configured for execution by one or more processors of a storage device, the one or more programs including instructions for:

receiving, at the storage device, a plurality of commands from a host to which the storage device is operatively coupled, the plurality of commands from the host including write commands and un-map commands, the storage device including non-volatile memory;

maintaining a log corresponding to write commands and un-map commands from the host;

maintaining a mapping table in volatile memory, the mapping table used to translate logical addresses in a logical address space available to the host to physical addresses in a physical address space of the storage device, wherein the log is distinct from the mapping table;

saving the mapping table, on a scheduled basis that is independent of the plurality of commands from the host, to the non-volatile memory;

saving the log to the non-volatile memory; and

upon power up of the storage device, rebuilding the mapping table from the saved mapping table in the non-volatile memory and from the saved log in the non-volatile memory.

18. The storage medium of claim 17 , wherein saving the mapping table includes storing in the non-volatile memory a position pointer to a position in the log.

19. The storage medium of claim 17 , wherein:

saving the mapping table includes storing a plurality of distinct portions of the mapping table in the non-volatile memory at distinct scheduled times that are independent of the plurality of commands from the host; and

the rebuilding comprises rebuilding the mapping table from the plurality of distinct portions of the mapping table stored in the non-volatile memory and the saved log in the non-volatile memory.

20. The storage medium of claim 17 , wherein for write commands, the log includes physical addresses to which data is stored in conjunction with execution of the write commands.

21. The storage medium of claim 17 , wherein the log includes an entry for a first un-map command, the entry including information identifying a plurality of logical addresses un-mapped in accordance with the first un-map command.

22. The storage medium of claim 17 , wherein saving the log to the non-volatile memory includes saving at least a portion of the log to the non-volatile memory in conjunction with a power fail event.

23. The storage medium of claim 17 , wherein saving the log to the non-volatile memory includes:

saving at least a first portion of the log to the non-volatile memory responsive to the log satisfying predefined fullness criteria; and

saving a final portion of the log to the non-volatile memory in conjunction with a power fail event.

Assignments (3)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038812/0954 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2015
From: PRINS, DOUGLAS A.; OLBRICH, AARON K.; GUAN, HUAPENG; WESTON-LEWIS, GRAEME; KULKARNI, ANAND; YU, YIPEI
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 035419/0298 →
Continuity (3)
Provisional Application 62069249 · Oct 27, 2014
Provisional Application 62069251 · Oct 27, 2014
Related Publication 20160117099A1 · Apr 28, 2016