IP Library Granted Patent US 10,236,070
Granted Patent B2
US 10,236,070 · App. 15/665,200 · Granted Mar 19, 2019

Read level tracking and optimization

Inventors: Richard David Barndt (San Diego, CA); Aldo Giovanni Cometti (San Diego, CA); Richard Leo Galbraith (Rochester, MN); Jonas Andrew Goode (Lake Forest, CA); Niranjay Ravindran (Rochester, MN); Anthony Dwayne Weathers (San Diego, CA)
Assignee: Western Digital Technologies, Inc.
G11C16/3427G06F3/0656G06F3/0679G11C16/3486G11C16/3495
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,236,070
App. No.
15/665,200
Granted
Mar 19, 2019
Kind
B2
Abstract

Systems and methods for read level tracking and optimization are described. Pages from a wordline of a flash memory device read and the raw page data read from the wordline may be buffered in a first set of buffers. The raw page data for each of the pages may be provided to a decoder for decoding and the decoded page data for each of the pages buffered in a second set of buffers. First bin identifiers may be identified for memory cells of the wordline based on the raw page data and second bin identifiers may be identified for the memory cells of the wordline based on the decoded page data. Cell-level statistics may be accumulated based on the first bin identifiers and the second bin identifiers, and a gradient may be determined for respective read levels based on decoding results for each of the pages and the cell-level statistics. Settings for the read levels may be configured in the flash memory device based on the determined gradients.

Claims (101)

1. A method comprising:

reading a plurality of pages from a wordline of a flash memory device;

buffering raw page data read from the wordline for each of the plurality of pages in a first set of buffers;

providing the raw page data for each of the plurality of pages to a decoder for decoding;

buffering decoded page data from the decoder for each of the plurality of pages in a second set of buffers;

identifying a first plurality of bin identifiers for memory cells of the wordline based on the raw page data buffered in the first set of buffers;

identifying a second plurality of bin identifiers for the memory cells of the wordline based on the decoded page data buffered in the second set of buffers;

accumulating cell-level statistics based on the first plurality of bin identifiers and the second plurality of bin identifiers;

determining a gradient for each of a plurality of read levels based on decoding results for each of the plurality of pages and the cell-level statistics; and

configuring settings for the plurality of read levels in the flash memory device based on the determined gradients.

2. The method of claim 1 , wherein the first plurality of bin identifiers for the memory cells of the wordline is identified based on logical values in the raw page data for the plurality of pages corresponding to the respective memory cells, and

wherein the second plurality of bin identifiers for the memory cells of the wordline is identified based on logical values in the decoded page data for the plurality of pages corresponding to the respective memory cells.

3. The method of claim 2 , wherein identifying the first plurality of bin identifiers comprises applying reverse gray coding to the logical values in the raw page data, and

wherein identifying the second plurality of bin identifiers comprises applying the reverse gray coding to the logical values in the decoded page data.

4. The method of claim 1 , wherein accumulating the cell-level statistics comprises incrementing bin counts based on the identified first plurality of bin identifiers or the identified second plurality of bin identifiers.

5. The method of claim 4 , wherein accumulating the cell-level statistics further comprises:

comparing the first plurality of bin identifiers to the second plurality of bin identifiers, respectively; and

incrementing first error-type counts and second error-type counts based on the comparison of the first plurality of bin identifiers to the second plurality of bin identifiers.

6. The method of claim 5 , wherein determining a gradient for each of the plurality of read levels comprises:

applying a gradient generator matrix to the bin counts to determine a first set of gradients;

determining a second set of gradients based on a difference between the first error-type counts and the second error-type counts; and

selecting, for each of the plurality of read levels, a gradient from the first set of gradients or a gradient from the second set of gradients based on the decoding results for each of the plurality of pages.

7. The method of claim 6 , wherein applying the gradient generator matrix to the bin counts comprises:

selecting the gradient generator matrix from a plurality of gradient generator matrices based on the decoding results for each of the plurality of pages; and

multiplying the selected gradient generator matrix by the bin counts to determine the first set of gradients.

8. The method of claim 1 , wherein each of the determined gradients comprises a magnitude and a direction for adjusting a respective read level of the plurality of read levels in the flash memory device.

9. A processor-readable storage medium encoded with instructions that, when executed by a processor, cause the processor to perform a method comprising:

reading a plurality of pages from a wordline of a flash memory device;

buffering raw page data read from the wordline for each of the plurality of pages in a first set of buffers;

providing the raw page data for each of the plurality of pages to a decoder for decoding;

buffering decoded page data from the decoder for each of the plurality of pages in a second set of buffers;

identifying a first plurality of bin identifiers for memory cells of the wordline based on logical values corresponding to the respective memory cells in the raw page data buffered in the first set of buffers;

identifying a second plurality of bin identifiers for the memory cells of the wordline based on logical values corresponding to the respective memory cells in the decoded page data buffered in the second set of buffers;

accumulating cell-level statistics based on the first plurality of bin identifiers and the second plurality of bin identifiers;

determining a gradient for each of a plurality of read levels based on decoding results for each of the plurality of pages and the cell-level statistics; and

configuring settings for the plurality of read levels in the flash memory device based on the determined gradients.

10. The processor-readable storage medium of claim 9 , wherein identifying the first plurality of bin identifiers comprises applying reverse gray coding to the logical values in the raw page data, and

wherein identifying the second plurality of bin identifiers comprises applying the reverse gray coding to the logical values in the decoded page data.

11. The processor-readable storage medium of claim 9 , wherein accumulating the cell-level statistics comprises:

incrementing bin counts based on the identified first plurality of bin identifiers or the identified second plurality of bin identifiers;

comparing the first plurality of bin identifiers to the second plurality of bin identifiers, respectively; and

incrementing first error-type counts and second error-type counts based on the comparison of the first plurality of bin identifiers to the second plurality of bin identifiers.

12. The processor-readable storage medium of claim 11 , wherein determining a gradient for each of the plurality of read levels comprises:

applying a gradient generator matrix to the bin counts to determine a first set of gradients;

determining a second set of gradients based on a difference between the first error-type counts and the second error-type counts; and

selecting, for each of the plurality of read levels, a gradient from the first set of gradients or a gradient from the second set of gradients based on the decoding results for each of the plurality of pages.

13. The processor-readable storage medium of claim 12 , wherein applying the gradient generator matrix to the bin counts comprises:

selecting the gradient generator matrix from a plurality of gradient generator matrices based on the decoding results for each of the plurality of pages; and

multiplying the selected gradient generator matrix by the bin counts to determine the first set of gradients.

14. The processor-readable storage medium of claim 1 , wherein each of the determined gradients comprises a magnitude and a direction for adjusting a respective read level of the plurality of read levels in the flash memory device.

15. A data storage system, comprising:

a flash memory device comprising a plurality of wordlines;

a first set of buffers;

a second set of buffers; and

a controller configured to:

read a plurality of pages from a wordline of the plurality of wordlines in the flash memory device;

buffer raw page data read from the wordline for each of the plurality of pages in the first set of buffers;

provide the raw page data for each of the plurality of pages to a decoder for decoding;

buffer decoded page data from the decoder for each of the plurality of pages in the second set of buffers;

identify a first plurality of bin identifiers for memory cells of the wordline based on the raw page data buffered in the first set of buffers;

identify a second plurality of bin identifiers for the memory cells of the wordline based on the decoded page data buffered in the second set of buffers;

accumulate cell-level statistics based on the first plurality of bin identifiers and the second plurality of bin identifiers;

determine a gradient comprising a magnitude and a direction for each of a plurality of read levels based on decoding results for each of the plurality of pages and the cell-level statistics; and

configure settings for the plurality of read levels in the flash memory device based on the determined gradients.

16. The data storage system of claim 15 , wherein the first plurality of bin identifiers for the memory cells of the wordline is identified based on logical values in the raw page data for the plurality of pages corresponding to the respective memory cells, and

wherein the second plurality of bin identifiers for the memory cells of the wordline is identified based on logical values in the decoded page data for the plurality of pages corresponding to the respective memory cells.

17. The data storage system of claim 16 , wherein the controller is further configured to identify the first plurality of bin identifiers by applying reverse gray coding to the logical values in the raw page data, and

identify the second plurality of bin identifiers by applying the reverse gray coding to the logical values in the decoded page data.

18. The data storage system of claim 15 , wherein the controller is further configured to accumulate the cell-level statistics by:

incrementing bin counts based on the identified first plurality of bin identifiers or the identified second plurality of bin identifiers;

comparing the first plurality of bin identifiers to the second plurality of bin identifiers, respectively; and

incrementing first error-type counts and second error-type counts based on the comparison of the first plurality of bin identifiers to the second plurality of bin identifiers.

19. The data storage system of claim 18 , wherein the controller is further configured to determine the gradient for each of the plurality of read levels by:

applying a gradient generator matrix to the bin counts to determine a first set of gradients;

determining a second set of gradients based on a difference between the first error-type counts and the second error-type counts; and

selecting, for each of the plurality of read levels, a gradient from the first set of gradients or a gradient from the second set of gradients based on the decoding results for each of the plurality of pages.

20. The data storage system of claim 19 , wherein the controller is further configured to apply the gradient generator matrix to the bin counts by:

selecting the gradient generator matrix from a plurality of gradient generator matrices based on the decoding results for each of the plurality of pages; and

multiplying the selected gradient generator matrix by the bin counts to determine the first set of gradients.

21. A data storage system, comprising:

a flash memory device comprising a plurality of wordlines;

a first set of buffers;

a second set of buffers;

means for identifying a first plurality of bin identifiers for memory cells of a wordline of the plurality of wordlines based on raw page data read from the wordline for each of a plurality of pages buffered in the first set of buffers;

means for identifying a second plurality of bin identifiers for the memory cells of the wordline based on page data decoded from the raw page data and buffered in the second set of buffers;

means for accumulating cell-level statistics based on the first plurality of bin identifiers and the second plurality of bin identifiers;

means for determining a gradient for each of a plurality of read levels based on decoding results for each of the plurality of pages and the cell-level statistics; and

means for configuring settings for the plurality of read levels in the flash memory device based on the determined gradients.

22. The data storage system of claim 21 , wherein the first plurality of bin identifiers for the memory cells of the wordline is identified based on logical values in the raw page data for the plurality of pages corresponding to the respective memory cells, and

wherein the second plurality of bin identifiers for the memory cells of the wordline is identified based on logical values in the decoded page data for the plurality of pages corresponding to the respective memory cells.

23. The data storage system of claim 22 , wherein the means for identifying the first plurality of bin identifiers comprises means for applying reverse gray coding to the logical values in the raw page data, and

wherein the means for identifying the second plurality of bin identifiers comprises means for applying the reverse gray coding to the logical values in the decoded page data.

24. The data storage system of claim 21 , wherein the means for accumulating the cell-level statistics comprises:

means for incrementing bin counts based on the identified first plurality of bin identifiers or the identified second plurality of bin identifiers;

means for comparing the first plurality of bin identifiers to the second plurality of bin identifiers, respectively; and

means for incrementing first error-type counts and second error-type counts based on the comparison of the first plurality of bin identifiers to the second plurality of bin identifiers.

25. The data storage system of claim 24 , wherein the means for determining a gradient for each of the plurality of read levels comprises:

means for selecting a gradient generator matrix from a plurality of gradient generator matrices based on the decoding results for each of the plurality of pages;

means for multiplying the selected gradient generator matrix by the bin counts to determine a first set of gradients;

means for determining a second set of gradients based on a difference between the first error-type counts and the second error-type counts; and

means for selecting, for each of the plurality of read levels, a gradient from the first set of gradients or a gradient from the second set of gradients based on the decoding results for each of the plurality of pages.

Assignments (10)
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 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2017
From: BARNDT, RICHARD DAVID; COMETTI, ALDO GIOVANNI; GALBRAITH, RICHARD LEO; GOODE, JONAS ANDREW; RAVINDRAN, NIRANJAY; WEATHERS, ANTHONY DWAYNE
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043171/0965 →
Continuity (2)
Provisional Application 62525677 · Jun 27, 2017
Related Publication 20180374550A1 · Dec 27, 2018