IP Library › Granted Patent US 10,095,417
Granted Patent B1
US 10,095,417 · App. 15/377,210 · Granted Oct 9, 2018

Method and system for improving flash storage read performance in partially programmed blocks

Inventors: Seungjune Jeon (Santa Clara, CA); Haleh Tabrizi (San Francisco, CA); Alan Hanson (Oakland, CA); Andrew Cullen (Midleton, IE); Justin Ha (Daly City, CA); Michael Rijo (Stoughton, MA); Samuel Hudson (Framingham, MA)
Assignee: EMC IP Holding Company LLC
G06F3/061G06F3/0655G06F3/0688G06F12/0246G11C11/5628G11C11/5635G11C11/5642G06F2212/7201
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,095,417
App. No.
15/377,210
Granted
Oct 9, 2018
Kind
B1
Abstract

A method for reading data from persistent storage. The method includes receiving a client read request for data from a client. The client read request includes a logical address. The method further includes determining a physical address corresponding to the logical address, determining that the physical address is directed to an open block in the persistent storage and determining that the physical address is directed to a last closed word line of the open block. The method further includes, based on these determinations, obtaining at least one read threshold value for the reading from last closed word lines, issuing a control module read request comprising the at least one read threshold value to a storage module that includes the open block, and obtaining the data from the open block using the at least one read threshold value.

Claims (98)

1. A method for reading data from persistent storage, the method comprising:

receiving a first client read request for first data from a client, wherein the first client read request comprises a first logical address;

determining a first physical address corresponding to the first logical address;

making a first determination that the first physical address is directed to an open block in the persistent storage;

making a second determination that the first physical address is directed to a last closed word line of the open block, and based on the first and the second determinations:

obtaining at least one first read threshold value for reading from the last closed word line of the open block;

issuing a control module read request comprising the at least one first read threshold value to a storage module, wherein the storage module comprises the open block; and

obtaining the first data from the open block using the at least one first read threshold value.

2. The method of claim 1 , further comprising:

receiving a second client read request for second data from the client, wherein the second client read request comprises a second logical address;

determining a second physical address corresponding to the second logical address;

making a third determination that the second physical address is directed to the open block in the persistent storage;

making a fourth determination that the second physical address is directed to a second-last closed word line of the open block, and based on the third and the fourth determinations:

obtaining at least one second read threshold value for reading from the second-last closed word line of the open block;

issuing a control module read request comprising the at least one second read threshold value to the storage module; and

obtaining the second data from the open block using the at least one second read threshold value.

3. The method of claim 1 , further comprising:

receiving a second client read request for second data from the client, wherein the second client read request comprises a second logical address;

determining a second physical address corresponding to the second logical address;

making a third determination that the second physical address is directed to the open block in the persistent storage;

making a fourth determination that the second physical address is directed to neither the last closed word line nor to a second-last closed word line of the open block, and based on the third and the fourth determinations:

obtaining at least one second read threshold value for reading from closed blocks;

issuing a control module read request comprising the at least one second read threshold value to the storage module; and

obtaining the second data from the open block using the at least one second read threshold value.

4. The method of claim 1 , further comprising:

receiving a second client read request for second data from the client, wherein the second client read request comprises a second logical address;

determining a second physical address corresponding to the second logical address;

making a third determination that the second physical address is directed to a closed block in the persistent storage, and based on the third determination:

obtaining at least one second read threshold value for reading from the closed block;

issuing a control module read request comprising the at least one second read threshold value to the storage module, wherein the storage module comprises the closed block; and

obtaining the second data from the open block using the at least one second read threshold value.

5. The method of claim 1 , further comprising:

receiving a second client read request for second data from a client, wherein the second client read request comprises a second logical address;

determining a second physical address corresponding to the second logical address; and

making a third determination that the second physical address is directed to an erased block in the persistent storage, and based on the third determination:

throwing an exception without issuing a control module read request.

6. The method of claim 1 ,

wherein the last closed word line of the open block is adjacent to an open word line of the open block, and

wherein the open word line comprises at least one written page and at least one non-written page.

7. The method of claim 6 ,

wherein the open block comprises a multi-level cell (MLC),

wherein, in the open word line, one selected from a group consisting of an upper page of the MLC and a lower page of the MLC is a written page, and

wherein one selected from the group consisting of the upper page of the MLC and the lower page of the MLC is a non-written page.

8. The method of claim 1 , wherein obtaining the at least one first read threshold value configured for reading from the last closed word line of the open block comprises performing a look-up in an in-memory data structure.

9. The method of claim 1 , wherein the second determination that the first physical address is directed to the last closed word line of the open block is made based on a known writing sequence used for writing to the open block and a known last written page of the open block.

10. The method of claim 1 , wherein the at least one first read threshold value comprises at least one voltage value.

11. The method of claim 1 , wherein the at least one first read threshold value comprises at least one shift value, wherein the at least one shift value corresponds to at least one voltage shift of at least one default read threshold value.

12. A system, comprising:

a storage module comprising a storage module controller and persistent storage; and

a control module operatively connected to the storage module and a client,

wherein the control module:

receives a first client read request for first data from the client, wherein the first client read request comprises a first logical address;

determines a first physical address corresponding to the first logical address;

makes a first determination that the first physical address is directed to an open block in the persistent storage;

makes a second determination that the first physical address is directed to a last closed word line of the open block, and based on the first and the second determinations:

obtains at least one first read threshold value for reading from the last closed word line of the open block;

issues a control module read request comprising the at least one first read threshold value to the storage module, wherein the storage module comprises the open block; and

wherein the storage module:

receives the control module read request; and

obtains the first data from the open block using the at least one first read threshold value.

13. The system of claim 12 ,

wherein the control module further:

receives a second client read request for second data from the client, wherein the second client read request comprises a second logical address;

determines a second physical address corresponding to the second logical address;

makes a third determination that the second physical address is directed to the open block in the persistent storage;

makes a fourth determination that the second physical address is directed to a second-last closed word line of the open block, and based on the third and the fourth determinations:

obtains at least one second read threshold value for reading from the second-last closed word line of the open block;

issues a control module read request comprising the at least one second read threshold value to the storage module; and

wherein the storage module further:

obtains the second data from the open block using the at least one second read threshold value.

14. The system of claim 12 ,

wherein the control module further:

receives a second client read request for second data from the client, wherein the second client read request comprises a second logical address;

determines a second physical address corresponding to the second logical address;

makes a third determination that the second physical address is directed to the open block in the persistent storage;

makes a fourth determination that the second physical address is directed to neither the last closed word line nor to a second-last closed word line of the open block, and based on the third and the fourth determinations:

obtains at least one second read threshold value for reading from closed blocks;

issues a control module read request comprising the at least one second read threshold value to the storage module; and

wherein the storage module further:

obtains the second data from the open block using the at least one second read threshold value.

15. The system of claim 12 ,

wherein the last closed word line of the open block is adjacent to an open word line of the open block, and

wherein the open word line comprises at least one written page and at least one non-written page.

16. The system of claim 15 ,

wherein the open block comprises a multi-level cell (MLC),

wherein, in the open word line, one selected from a group consisting of an upper page of the MLC and a lower page of the MLC is a written page, and

wherein one selected from the group consisting of the upper page of the MLC and the lower page of the MLC is a non-written page.

17. The system of claim 12 , wherein the second determination that the first physical address is directed to the last closed word line of the open block is made based on a known writing sequence used for writing to the open block.

18. The system of claim 12 , wherein the at least one first read threshold value comprises at least one voltage value.

19. The system of claim 12 , wherein the at least one first read threshold value comprises at least one shift value, wherein the at least one shift value corresponds to at least one voltage shift of at least one default read threshold value.

20. A non-transitory computer readable medium comprising computer readable program code, which when executed by a computer processor enables the computer processor to:

receive a first client read request for first data from a client, wherein the first client read request comprises a first logical address;

determine a first physical address corresponding to the first logical address;

make a first determination that the first physical address is directed to an open block in persistent storage;

make a second determination that the first physical address is directed to a last closed word line of the open block, and based on the first and the second determinations:

obtain at least one first read threshold value for reading from the last closed word line of the open block;

issue a control module read request comprising the at least one first read threshold value to a storage module, wherein the storage module comprises the open block; and

obtain the first data from the open block using the at least one first read threshold value.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2017
From: JEON, SEUNGJUNE; TABRIZI, HALEH; HANSON, ALAN BENJAMIN; CULLEN, ANDREW; HA, JUSTIN; RIJO, MICHAEL; HUDSON, SAMUEL
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041510/0112 →
Cited By (2)
US 12,443,361 US 12,725,664