Mitigating read errors following programming in a multi-level non-volatile memory

US10101931B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-10101931-B1
Application numberUS-201715613240-A
CountryUS
Kind codeB1
Filing dateJun 4, 2017
Priority dateJun 4, 2017
Publication dateOct 16, 2018
Grant dateOct 16, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Read errors following programming in a multi-level non-volatile memory are mitigated by a controller of the non-volatile memory. The controller temporarily buffers, in a cache, pages of data programmed into the non-volatile memory. In response to receiving a read request for a target page of data programmed into the non-volatile memory, where the read request is received during a delay time affecting the target page, the controller services the read request by accessing data of the target page in the cache in response to the read request hitting in the cache. The controller instead services the read request from the non-volatile memory in response to the read request missing in the cache. When servicing the read request from the non-volatile memory, the controller preferably reads the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on the read-after-write delay.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of mitigating read errors following programming in a multi-level non-volatile memory, the method comprising: in response to a write request, a controller of the non-volatile memory programming data into the non-volatile memory to service the write request and temporarily buffering, in a cache, pages of the data programmed into the non-volatile memory for at least a predetermined time period following the programming; receiving an initial read request after the programming for a target page of the data programmed into the non-volatile memory; in response to receiving the initial read request during the predetermined time period after programming, the initial read request hitting in the cache and the controller servicing the initial read request by accessing data of the target page in the cache and not from the non-volatile memory; and in response to the initial read request missing in the cache, the controller servicing the initial read request from the non-volatile memory. 2. The method of claim 1 , wherein servicing the initial read request from the non-volatile memory includes reading the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on an applicable read-after-write delay. 3. The method of claim 2 , wherein the set of read voltage thresholds is further determined based on a program/erase cycle count applicable to the target page. 4. The method of claim 2 , wherein the set of read voltage thresholds is further determined based on whether a type of the target page is an upper page or a lower page. 5. The method of claim 2 , wherein: the set of read voltage thresholds is one of a plurality of sets of read voltage thresholds; and the reading includes reading data of the target page from the non-volatile memory utilizing multiple of the plurality of sets of read voltage thresholds and returning the data containing a fewest number of errors. 6. The method of claim 1 , wherein: the target page is a lower page with an associated upper page already programmed; and servicing the initial read request from the non-volatile memory includes reading the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on whether an associated upper page is in the cache. 7. A data storage system, comprising: a controller for a non-volatile memory, wherein the controller is configured to perform: in response to a write request, programming data into the non-volatile memory to service the write request and temporarily buffering, in a cache, pages of the data programmed into the non-volatile memory for at least a predetermined time following the programming; receiving an initial read request after the programming for a target page of the data programmed into the non-volatile memory; in response to receiving the initial read request during the predetermined time period, servicing the initial read request by accessing data of the target page in the cache and not the non-volatile memory; and servicing the initial read request from the non-volatile memory and not the cache memory in response to the initial read request missing in the cache. 8. The data storage system of claim 7 , wherein servicing the initial read request from the non-volatile memory includes reading the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on an applicable read-after-write delay. 9. The data storage system of claim 8 , wherein the set of read voltage thresholds are further determined based on a program/erase cycle count applicable to the target page. 10. The data storage system of claim 8 , wherein the set of read voltage thresholds are further determined based on whether a type of the target page is an upper page or a lower page. 11. The data storage system of claim 8 , wherein: the set of read voltage thresholds is one of a plurality of sets of read voltage thresholds; and the reading includes reading data of the target page from the non-volatile memory utilizing multiple of the plurality of sets of read voltage thresholds and returning the data containing a fewest number of errors. 12. The data storage system of claim 7 , wherein: the target page is a lower page with an associated upper page already programmed; and servicing the initial read request from the non-volatile memory includes reading the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on whether an associated upper page is in the cache. 13. The data storage system of claim 7 , and further comprising the non-volatile memory coupled to the controller. 14. A computer program product, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a controller of a non-volatile memory to cause the controller to perform: in response to a write request, programming data into the non-volatile memory to service the write request and temporarily buffering, in a cache, pages of the data programmed into the non-volatile memory for at least a predetermined time period following the programming; receiving an initial read request after the programming for a target page of the data programmed into the non-volatile memory; in response to receiving the initial read request during the predetermined time period after programming, servicing the initial read request by accessing data of the target page in the cache and not from the non-volatile memory; and servicing the initial read request from the non-volatile memory and not the cache memory in response to the initial read request missing in the cache. 15. The computer program product of claim 14 , wherein servicing the initial read request from the non-volatile memory includes reading the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on an applicable read-after-write delay. 16. The computer program product of claim 15 , wherein the set of read voltage thresholds are further determined based on a program/erase cycle count applicable to the target page. 17. The computer program product of claim 15 , wherein the set of read voltage thresholds are further determined based on whether a type of the target page is an upper page or a lower page. 18. The computer program product of claim 15 , wherein: the set of read voltage thresholds is one of a plurality of sets of read voltage thresholds; and the reading includes reading data of the target page from the non-volatile memory utilizing multiple of the plurality of sets of read voltage thresholds and returning the data containing a fewest number of errors. 19. The computer program product of claim 14 , wherein: the target page is a lower page with an associated upper page already programmed; and servicing the initial read request from the non-volatile memory includes reading the target page from the non-volatile memory utilizing a set of read voltage thresholds determined based on whether an associated upper page is in the cache.

Assignees

Inventors

Classifications

  • using page tables, e.g. page table structures · CPC title

  • Details of virtual memory and virtual address translation · CPC title

  • G06F3/0619Primary

    in relation to data integrity, e.g. data losses, bit errors · CPC title

  • Power saving in storage systems · CPC title

  • Command handling arrangements, e.g. command buffers, queues, command scheduling · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10101931B1 cover?
Read errors following programming in a multi-level non-volatile memory are mitigated by a controller of the non-volatile memory. The controller temporarily buffers, in a cache, pages of data programmed into the non-volatile memory. In response to receiving a read request for a target page of data programmed into the non-volatile memory, where the read request is received during a delay time aff…
Who is the assignee on this patent?
IBM
What technology area does this patent fall under?
Primary CPC classification G06F3/0619. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 16 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).