EP-4657266-B1 - DYNAMIC ONLINE CODE-RATE ALLOCATION ACCORDING TO WORDLINE NOISE FOR ADAPTIVE ECC IN SSD/UFS
Inventors
- BERMAN, AMIT
- PHILOSOF, TAL
- Doubchak, Ariel
Dates
- Publication Date
- 20260513
- Application Date
- 20250528
Claims (15)
- A storage device (200), comprising: a non-volatile memory (220) comprising a plurality of pages; and a storage controller (210): wherein the storage controller (210) is configured to: allocate a plurality of code rates to the plurality of pages, cluster the plurality of pages into a first plurality of pages and a second plurality of pages based on the plurality of code rates, determine a plurality of page associations such that each second page from the second plurality of pages is associated with at least one first page from the first plurality of pages, encode data based on the plurality of code rates to generate encoded data, wherein the encoding comprises obtaining side information corresponding to the second plurality of pages and transferring the side information to the first plurality of pages, and store the encoded data in the plurality of pages.
- The storage device (200) of claim 1, wherein the plurality of code rates are determined based on page characteristic information of each page of the plurality of pages.
- The storage device (200) of claim 1 or 2, wherein the side information is transferred such that differences between frame error rates of the plurality of pages are reduced.
- The storage device (200) of any preceding claim, wherein to allocate the plurality of code rates, the storage controller (210) is further configured to: calculate a plurality of frame error rates corresponding to the plurality of pages, sort the plurality of pages in an order of the plurality of frame error rates, and based on a highest frame error rate from among the plurality of frame error rates being greater than a lowest frame error rate from among the plurality of frame error rates, iteratively subtract an overhead allocation from a page corresponding to the lowest frame error rate and add the overhead allocation to a page corresponding to the highest frame error rate, until the highest frame error rate is less than or equal to the lowest frame error rate.
- The storage device (200) of claim 4, wherein the first plurality of pages correspond to a plurality of first code rates, and the second plurality of pages correspond to a plurality of second code rates, and wherein the plurality of first code rates are higher than a predetermined threshold rate, and the plurality of second code rates are lower than the predetermined threshold rate.
- The storage device (200) of any preceding claim, wherein the data comprises first data to be stored in the first plurality of pages, and second data to be stored in the second plurality of pages, and wherein to encode the data, the storage controller (210) is further configured to: encode the second data to obtain encoded second data and the side information, append the side information to the first data to obtain appended first data, encode the appended first data to obtain encoded first data, and store the encoded first data in the first plurality of pages and the encoded second data in the second plurality of pages.
- The storage device (200) of claim 6, wherein to decode the encoded data, the storage controller (210) is further configured to: obtain the encoded first data from the first plurality of pages and the encoded second data from the second plurality of pages, decode the encoded first data to obtain the appended first data, based on a failure decoding the encoded second data, extract the side information from the appended first data, and decode the encoded second data based on the side information, and obtain the data based on the appended first data and the second data.
- The storage device (200) of claim 6 or 7, wherein the storage controller (210) is further configured to encode the side information to obtain encoded side information, and to append the encoded side information to the first data to obtain the appended first data.
- The storage device (200) of claim 8, wherein the side information is encoded using a first code, and the first data and the encoded side information are encoded using a second code different from the first code.
- A storage controller (210) for controlling a storage device (200), the storage controller (210) comprising: at least one processor configured to: obtain page characteristic information corresponding to a plurality of pages, sort the plurality of pages into a first plurality of pages and a second plurality of pages based on the page characteristic information, determine a plurality of page associations such that each second page of the second plurality of pages is associated with at least one first page of the first plurality of pages, encode data to generate encoded data, transfer a plurality of additional overhead bits from the second plurality of pages to the first plurality of pages based on the plurality of page associations, and store the encoded data in the plurality of pages.
- The storage controller (210) of claim 10, wherein the at least one processor is further configured to: calculate a plurality of frame error rates corresponding to the plurality of pages based on the page characteristic information, sort the plurality of pages in an order of the plurality of frame error rates, based on a highest frame error rate from among the plurality of frame error rates being greater than a lowest frame error rate from among the plurality of frame error rates, perform an allocation process comprising: allocating an additional overhead bit of a page corresponding to the highest frame error rate to a page corresponding to the highest frame error rate, and re-sorting the plurality of pages in the order of the plurality of frame error rates, and repeat the allocation process until the highest frame error rate is less than or equal to the lowest frame error rate.
- The storage controller (210) of claim 10 or 11, wherein the data comprises first data chunks to be stored in the first plurality of pages and second data chunks to be stored in the second plurality of pages, and wherein to encode the data, the at least one processor is further configured to: encode the second data chunks to obtain encoded second data chunks and the plurality of additional overhead bits, distribute the plurality of additional overhead bits among the first data chunks based on the plurality of page associations to obtain appended first data chunks, encode the appended first data chunks to obtain encoded first data chunks, and store the encoded first data chunks in the first plurality of pages and the encoded second data chunks in the second plurality of pages.
- The storage controller (210) of claim 12, wherein to decode the encoded data, the storage controller (210) is further configured to: obtain the encoded first data chunks from the first plurality of pages and the encoded second data chunks from the second plurality of pages, decode the encoded first data chunks to obtain the appended first data chunks, based on a failure decoding the encoded second data chunks, extract the plurality of additional overhead bits from the appended first data chunks, and decode the encoded second data chunks based on the plurality of additional overhead bits, and obtain the data based on the appended first data chunks and the second data chunks.
- The storage controller (210) of any one of claims 12 to 13, wherein the storage controller (210) is further configured to encode the plurality of additional overhead bits to obtain encoded additional overhead bits, and to distribute the encoded additional overhead bits among the first data chunks to obtain the appended first data chunks.
- The storage controller (210) of claim 14, wherein the plurality of additional overhead bits are encoded using a first code, and the appended first data chunks and the second data chunks are encoded using a second code different from the first code.
Description
BACKGROUND 1. Field The present disclosure relates to storing data, and more particularly to dynamically distributing code rates and overhead allocations for each page or word line for enhanced reliability. 2. Description of Related Art Storage devices such as NAND flash memory devices may store data in blocks, and each storage device may contain several blocks. Each block may include many word lines, for example one thousand word lines per block. Each word line may include several pages, which may be the basic unit of data that may be accessed in the storage device. Accordingly, such storage devices may include many pages in each block. Due to manufacturing, design, and use characteristics, there may be a large variability in reliability and error rate between pages included in the same block. Further, as the cell density of storage devices increase, this variability may increase as well. However, in many storage devices, all pages in a block may use the same level of protection. US 2014/0229799 Al proposes statistical adaptive error correction for a flash memory. US 2014/0126288 Al discusses methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding. SUMMARY Provided are systems, apparatuses, and methods for dynamically allocating a code rate for each page or word line, and redistributing overhead for enhanced reliability. Additional aspects will be set forth in part in the description which follows and, in part, will be apparent from the description, or may be learned by practice of the presented embodiments. In accordance with an aspect of the disclosure, a storage device includes: a non-volatile memory including a plurality of pages; and a storage controller: wherein the storage controller is configured to: allocate a plurality of code rates to the plurality of pages, cluster the plurality of pages into a first plurality of pages and a second plurality of pages based on the plurality of code rates, determine a plurality of page associations such that each second page from the second plurality of pages with at least one first page from the first plurality of pages, encode data based on the plurality of code rates to generate encoded data, wherein the encoding includes obtaining side information corresponding to the second plurality of pages and transferring the side information to the first plurality of pages, and store the encoded data in the plurality of pages. In accordance with an aspect of the disclosure, a storage controller for controlling a storage device includes: at least one processor configured to: obtain page characteristic information corresponding to a plurality of pages, sort the plurality of pages into a first plurality of pages and a second plurality of pages based on the page characteristic information, determine a plurality of page associations such that each second page of the second plurality of pages is associated with at least one first page of the first plurality of pages, encode data to generate encoded data, transfer a plurality of additional overhead bits from the second plurality of pages to the first plurality of pages based on the plurality of page associations, and store the encoded data in the plurality of pages. Also described herein is a method of controlling a storage device which is executed by at least one processor and includes: allocating a plurality of code rates to a plurality of pages included in a non-volatile memory; clustering the plurality of pages into a first plurality of pages and a second plurality of pages based on the plurality of code rates; determining a plurality of page associations such that each second page from the second plurality of pages with at least one first page from the first plurality of pages; encoding data based on the plurality of code rates to generate encoded data, wherein the encoding includes obtaining side information corresponding to the second plurality of pages and transferring the side information to the first plurality of pages, and storing the encoded data in the plurality of pages. Also described herein is a method of controlling a storage device which is executed by at least one processor and includes: obtaining page characteristic information corresponding to a plurality of pages; sorting the plurality of pages into a first plurality of pages and a second plurality of pages based on the page characteristic information; determining a plurality of page associations such that each second page of the second plurality of pages is associated with at least one first page of the first plurality of pages, encoding data to generate encoded data; transferring a plurality of additional overhead bits from the second plurality of pages to the first plurality of pages based on the plurality of page associations; and storing the encoded data in the plurality of pages. At least some of the above and other features of the invention are set out in the cl