IP Library Granted Patent US 9,864,545
Granted Patent B2
US 9,864,545 · App. 14/925,943 · Granted Jan 9, 2018

Open erase block read automation

Inventors: Robert W. Ellis (Phoenix, AZ); Vidyabhushan Mohan (San Jose, CA); Jack Edward Frayer (Boulder Creek, CA)
Assignee: SanDisk Technologies LLC
G06F3/0653G06F3/061G06F3/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,864,545
App. No.
14/925,943
Granted
Jan 9, 2018
Kind
B2
Abstract

Systems, methods, and/or devices are used to automate read operations performed at an open erase block. In one aspect, the method includes: receiving a read command, at a storage device, to read data from non-volatile memory of the storage device. In response to receiving the read command, the method further includes: 1) reading data using a first set of memory operation parameters in response to a determination that the read command is not for reading data from a predefined portion of an open erase block (e.g., an erase block that is determined to be an open erase block) of the non-volatile memory and 2) reading data using a second set of memory operation parameters (i.e., the second set is distinct from the first set) in response to a determination that the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory.

Claims (66)

1. A method of managing a storage device that includes non-volatile memory, the method comprising:

receiving, at the storage device, a read command to read data from the non-volatile memory of the storage device; and

in response to receiving the read command,

determining whether the read command is for reading data from a predefined portion of an erase block of the non-volatile memory that is an open erase block;

in response to a determination that the read command is not for reading data from the predefined portion of an open erase block of the non-volatile memory, reading data from the non-volatile memory using a first set of memory operation parameters; and

in response to a determination that the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory, reading data from the non-volatile memory using a second set of memory operation parameters that is different from the first set of memory operation parameters.

2. The method of claim 1 , wherein the predefined portion of any open erase block of the non-volatile memory is a last written word line of the open erase block.

3. The method of claim 1 , wherein:

the read command corresponds to a respective erase block in the non-volatile memory; and

the first set of memory operation parameters are memory operation parameters determined in accordance with an age metric or performance metric for the respective erase block corresponding to the read command.

4. The method of claim 1 , further comprising obtaining the second set of memory operation parameters from a lookup table.

5. The method of claim 1 , further comprising, prior to sending a read operation command to a non-volatile memory die to read data requested by the received read command, sending to the non-volatile memory die a precursor command to change a mode of reading data from the non-volatile memory, using the second set of memory operation parameters.

6. The method of claim 1 , further comprising storing, in a status table in volatile memory, last written word line information for each open erase block in the non-volatile memory.

7. The method of claim 6 , wherein determining whether the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory comprises performing a lookup in the status table.

8. The method of claim 6 , further comprising removing information from the status table with respect to a particular erase block in conjunction with closing the particular erase block.

9. The method of claim 6 , wherein the status table is stored in volatile memory of a storage controller of the storage device.

10. The method of claim 6 , wherein:

the storage device includes a plurality of storage modules; and

each storage module has a local controller, a plurality of non-volatile memory devices; and volatile memory in which a portion of the status table is stored.

11. The method of claim 10 , wherein:

the read command is for reading data from a respective storage module of the plurality of storage modules; and

determining whether the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory comprises performing a lookup in a corresponding portion of the status table in the respective storage module of the plurality of storage modules.

12. The method of claim 6 , further comprising storing the status table in the non-volatile memory in response to detection of a power fail event.

13. A storage device, comprising:

non-volatile memory;

one or more processors; and

one or more controller modules configured to:

receive a read command to read data from the non-volatile memory;

determine, in response to receiving the read command, whether the read command is for reading data from a predefined portion of an erase block of the non-volatile memory that is an open erase block;

read data from the non-volatile memory using a first set of memory operation parameters in response to a determination that the read command is not for reading data from the predefined portion of an open erase block of the non-volatile memory; and

read data from the non-volatile memory using a second set of memory operation parameters that is different from the first set of memory operation parameters in response to a determination that the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory.

14. The storage device of claim 13 , wherein the one or more controller modules include:

a command module to receive the read command to read data from the non-volatile memory;

a status lookup module to determine, in response to the command module receiving the read command, whether the read command is for reading data from the predefined portion of any open erase block of the non-volatile memory; and

a data read module to:

read data from the non-volatile memory using the first set of memory operation parameters in response to a determination that the read command is not for reading data from the predefined portion of an open erase block of the non-volatile memory; and

read data from the non-volatile memory using a second set of memory operation parameters that is different from the first set of memory operation parameters in response to a determination that the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory.

15. The storage device of claim 13 , further comprising:

a status table that stores last written word line information for each open erase block in the non-volatile memory; and

a plurality of storage modules, each storage module having a local controller and a plurality of non-volatile memory devices, wherein a portion of the status table is stored in each of the storage modules.

16. The storage device of claim 14 , further comprising:

a status table that stores last written word line information for each open erase block in the non-volatile memory; and

a plurality of storage modules, each storage module comprising:

a local controller including an instance of the status lookup module and an instance of the data read module; and

a plurality of non-volatile memory devices, wherein a portion of the status table is stored in each of the storage modules;

wherein:

the read command is for reading data from a respective storage module of the plurality of storage modules; and

determining whether the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory comprises performing a lookup in a corresponding portion of the status table in the respective storage module of the plurality of storage modules.

17. The storage device of claim 13 , wherein the predefined portion of any open erase block of the non-volatile memory is a last written word line of the open erase block.

18. The storage device of claim 13 , wherein:

the read command corresponds to a respective erase block in the non-volatile memory of the storage device; and

the first set of memory operation parameters are memory operation parameters determined in accordance with an age metric or performance metric for the respective erase block corresponding to the read command.

19. 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 that, when executed by the one or more processors, cause the storage device to:

receive a read command to read data from the non-volatile memory;

determine, in response to receiving the read command, whether the read command is for reading data from a predefined portion of an erase block of the non-volatile memory that is an open erase block;

read data from the non-volatile memory using a first set of memory operation parameters in response to a determination that the read command is not for reading data from the predefined portion of an open erase block of the non-volatile memory; and

read data from the non-volatile memory using a second set of memory operation parameters that is different from the first set of memory operation parameters in response to a determination that the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory.

20. The non-transitory computer-readable storage medium of claim 19 , wherein:

the storage device includes a storage controller that includes the one or more processors;

the one or more programs include one or more controller modules configured for execution by the one or more processors of the storage controller; and

the one or more controller modules include:

a command module to receive the read command to read data from the non-volatile memory;

a status lookup module to determine, in response to the command module receiving the read command, whether the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory; and

a data read module to:

read data from the non-volatile memory using the first set of memory operation parameters in response to a determination that the read command is not for reading data from the predefined portion of an open erase block of the non-volatile memory; and

read data from the non-volatile memory using a second set of memory operation parameters that is different from the first set of memory operation parameters in response to a determination that the read command is for reading data from the predefined portion of an open erase block of the non-volatile memory.

Assignments (6)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
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 Dec 9, 2015
From: ELLIS, ROBERT W.; MOHAN, VIDYABHUSHAN; FRAYER, JACK EDWARD
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 037250/0433 →
Continuity (2)
Provisional Application 62147546 · Apr 14, 2015
Related Publication 20160306591A1 · Oct 20, 2016