US20100251076A1 - Storage controller having soft decoder included therein, related storage control method thereof and system using the same - Google Patents

Storage controller having soft decoder included therein, related storage control method thereof and system using the same Download PDF

Info

Publication number
US20100251076A1
US20100251076A1 US12/646,936 US64693609A US2010251076A1 US 20100251076 A1 US20100251076 A1 US 20100251076A1 US 64693609 A US64693609 A US 64693609A US 2010251076 A1 US2010251076 A1 US 2010251076A1
Authority
US
United States
Prior art keywords
data
soft
storage device
storage
decoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/646,936
Inventor
Chao-Yi Wu
Li-Lien Lin
Chien-Chung Wu
Ching-Hao YU
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42785823&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=US20100251076(A1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to US12/646,936 priority Critical patent/US20100251076A1/en
Assigned to MEDIATEK INC. reassignment MEDIATEK INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LIN, LI-LIEN, WU, Chao-yi, WU, CHIEN-CHUNG, YU, CHING-HAO
Priority to CN 201010121145 priority patent/CN101847447A/en
Priority to TW099107125A priority patent/TW201035991A/en
Publication of US20100251076A1 publication Critical patent/US20100251076A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields

Definitions

  • the disclosed embodiments of the present invention relate to recording data into and/or reading data from a storage device, and more particularly, to a storage controller having a soft decoder included therein, a related storage control method thereof, and a system using the same.
  • Error detection and correction techniques are employed to effectively correct errors caused by various factors to obtain error-free data. Taking a flash memory for example, continuous improvements in price/performance for the flash memory have enabled the flash memory to become the long term storage of choice for many applications; however, during the fabrication, the flash memory may contain defects (e.g., defective memory cells), and more defects may appear during the device lifetime, thereby limiting its usage. To manage these defects and to achieve efficient and reliable operation, the memory system typically uses error detection and correction techniques to control errors and to ensure reliable data reproduction.
  • defects e.g., defective memory cells
  • the hard coding scheme such as the Reed-Solomon (RS) coding or Bose-Chaudhuri-Hocquenghem (BCH) coding
  • RS Reed-Solomon
  • BCH Bose-Chaudhuri-Hocquenghem
  • a storage controller having a soft decoder included therein, a related storage control method thereof, and a system using the same are disclosed.
  • an exemplary storage controller for controlling data access of a storage device.
  • the exemplary storage controller includes a control circuit and a soft decoder.
  • the control circuit is configured for reading data from the storage device to obtain readout data.
  • the soft decoder is coupled to the control circuit, and implemented for performing a soft decoding operation upon the readout data to generate decoded data.
  • an exemplary storage control method for controlling data access of a storage device includes: reading data from the storage device to obtain readout data; and performing a soft decoding operation upon the readout data to generate decoded data.
  • an exemplary system having a storage device and a storage controller is disclosed.
  • the storage controller is coupled to the storage device, and implemented for controlling data access of the storage device.
  • a data signal transmitted from the storage device to the storage controller carries soft information derived from the storage device.
  • FIG. 1 is a block diagram of a first exemplary embodiment of a storage controller according to the present invention.
  • FIG. 2 is a diagram illustrating the relationship between the coding gain and the bit error rate when a soft coding scheme is employed.
  • FIG. 3 is a block diagram of a second exemplary embodiment of a storage controller according to the present invention.
  • FIG. 4 is a block diagram illustrating an exemplary system having a storage controller included therein.
  • FIG. 5 is a diagram showing an exemplary control and data flow of the system shown in FIG. 4 .
  • the error detection and correction requires proper data encoding and data decoding.
  • input data are encoded using a specific error correction code (ECC) scheme
  • ECC error correction code
  • decoding the encoded input data by hard decoding and decoding the same encoded input data by soft decoding may have different computational complexity, respectively.
  • the computational complexity of decoding the BCH code using the soft decoding manner is too high to be acceptable. Therefore, compared with decoding the BCH code using the soft decoding means, decoding the BCH code using the hard decoding means would be easier and may be preferably employed.
  • LDPC low density parity check
  • BTC block turbo code
  • CTC convolutional turbo code
  • the soft decoding complexity thereof is low and acceptable.
  • employing the soft decoding means to decode the LDPC/BTC/CTC code may be preferably employed.
  • data to be decoded by the hard decoding are data that include 1's and 0's generated by binary decision (quantization); however, data to be decoded by the soft decoding may be data which are not processed by binary decision (quantization).
  • the soft encoder implemented in the exemplary embodiments of the present invention is to produce encoded data applicable to a soft decoding operation which requests acceptable computational complexity
  • the hard encoder implemented in the exemplary embodiments of the present invention is to produce encoded data inapplicable to a soft decoding operation which requests acceptable computational complexity
  • the conception of the present invention is to have a soft encoder involved in processing data to be stored into a storage device (e.g., a NAND flash memory), and a soft decoder involved in processing data read from the storage device. Therefore, in a situation where the BER is poor, there is a significant improvement on the coding gain. In other words, when the original BER is poor, the soft decoder is capable of effectively improving the BER.
  • a storage device e.g., a NAND flash memory
  • FIG. 1 is a block diagram of a first exemplary embodiment of a storage controller according to the present invention.
  • the exemplary storage controller 100 includes, but is not limited to, a soft encoder 110 , a control circuit 120 , and a soft decoder 130 . It should be noted that only the elements pertinent to the present invention are shown in FIG. 1 for simplicity and clarity. In an actual implementation, the storage controller 100 may include other elements, such as a data buffer.
  • the storage controller 100 is used for controlling data access of a storage device 102 , and communicates with a host 106 via a host interface 104 .
  • the storage device 102 is a flash memory device, such as a NAND flash application.
  • the soft encoder 110 When the storage controller 100 receives a host output D 1 from the host 106 via the host interface 104 , the soft encoder 110 performs a soft encoding operation upon input data D 1 ′′ to generate encoded data D 1 ′, where the input data D 1 ′′ are generated from the host input D 1 .
  • the input data D 1 ′′ are generated from the host input D 1 without any change made to the host input D 1 .
  • the input data D 1 ′′ and the host input D 1 are exactly the same.
  • the soft encoder 110 may be an LDPC encoder, a BTC encoder, or a CTC encoder. However, this is for illustrative purposes only, and is not meant to be taken as a limitation to the scope of the present invention. That is, any coding scheme can be employed by the soft encoder 110 in the exemplary storage controller 100 , wherein the coding scheme is capable of producing encoded data applicable to a soft decoding operation with acceptable computational complexity.
  • the control circuit 120 is coupled to the soft encoder 110 and the storage device 102 , and is configured to record data into the storage device 102 according to the encoded data D 1 ′ generated from the soft encoder 110 .
  • the control circuit 120 may directly store the encoded data D 1 ′ into the storage device 102 to accomplish the write operation.
  • the control circuit 120 further processes the encoded data D 1 ′, and then stores a processing result of the encoded data D 1 ′ into the storage device 102 to accomplish the write operation. For example, the control circuit 120 performs a bit interleaving operation upon the encoded data D 1 ′, and then stores a bit-interleaved result of the encoded data D 1 ′ into the storage device 102 .
  • the control circuit 120 reads data from the storage device 102 to obtain readout data E 1 .
  • the control circuit 120 directly stores the encoded data D 1 ′ generated from the soft encoder 110 into the storage device 102 to accomplish the write operation, the data read from the storage device 102 are representative of the encoded data D 1 ′. Therefore, the control circuit 120 directly obtains the readout data E 1 from the data read from the storage device 102 .
  • the control circuit 120 applies specific signal processing upon the encoded data D 1 ′ prior to storing the encoded data D 1 ′ into the storage device 102 (e.g., the control circuit 120 performs a bit interleaving operation upon the encoded data D 1 ′, and then stores a bit-interleaved result of the encoded data D 1 ′ into the storage device 102 ), the data read from the storage device 102 are representative of a specific signal processing result of the encoded data D 1 ′ rather than the encoded data D 1 ′.
  • control circuit 120 applies an inverse signal processing operation (e.g., a bit deinterleaving operation) upon the data read from the storage device 102 to generate a corresponding signal processing result (e.g., a bit-deinterleaved result), and then obtains the readout data E 1 from the corresponding signal processing result.
  • an inverse signal processing operation e.g., a bit deinterleaving operation
  • the soft decoder 130 is used for performing a soft decoding operation upon the readout data E 1 to generate decoded data E 1 ′.
  • the soft encoder 110 is an LDPC encoder
  • the readout data E 1 include LDPC codewords
  • the soft decoder 130 is an LDPC decoder which decodes the LDPC codewords of the readout data E 1 to generate the decoded data E 1 ′
  • the soft encoder 110 is a BTC encoder
  • the readout data E 1 include BTC codewords
  • the soft decoder 130 is a BTC decoder which decodes the BTC codewords of the readout data E 1 to generate the decoded data E 1 ′
  • the soft encoder 110 is a CTC encoder
  • the readout data E 1 include CTC codewords
  • the soft decoder 130 is a CTC decoder which decodes the CTC codewords of the readout data E 1 to generate the decoded data E 1 ′.
  • the control circuit 120 transmits a host input E 1 ′′ to the host 106 via the host interface 104 to accomplish the read operation, where the host input E 1 ′′ is generated from the decoded data E 1 ′.
  • the host input E 1 ′′ is generated from the decoded data E 1 ′ without any change made to the decoded data E 1 ′.
  • the host input E 1 ′′ and the decoded data E 1 ′ are exactly the same.
  • the data signal transmitted from the storage device 102 to the control circuit 120 carries soft information read from the storage device 102 , where the data signal may be an analog signal (e.g., an analog voltage signal) or a multi-level (multi-bit) signal.
  • the control circuit 120 has an analog-to-digital conversion capability to convert the analog voltage signal in an analog domain into digital soft bits in a digital domain, and then obtains the readout data E 1 according to the digital soft information.
  • the present invention does not focus on the generation and transmission of the soft information, further description is omitted here for the sake of brevity.
  • the soft decoder e.g., an LDPC decoder
  • SNR means signal-to-noise ratio
  • an exemplary storage control method employed by the storage controller 100 shown in FIG. 1 for controlling data write of a storage device includes following steps: performing a soft encoding operation upon input data to generate encoded data, and recording data into the storage device according to the encoded data, where the computational complexity of decoding the encoded data via soft decoding is within a predetermined acceptable range; additionally, the exemplary storage control method employed by the storage controller 100 shown in FIG. 1 for controlling data read of the storage device includes following steps: reading data from the storage device to obtain readout data, and performing a soft decoding operation upon the readout data to generate decoded data.
  • a single soft encoder/decoder architecture is employed.
  • this is for illustrative purposes only.
  • a concatenated coding scheme may be employed to achieve a better error correcting capability.
  • FIG. 2 when the BER is not so bad (e.g., BER ⁇ 10 ⁇ 6 ), there is no significant improvement on the coding gain by solely using the soft encoder/decoder in the storage controller.
  • the BER is not so bad (e.g., BER ⁇ 10 ⁇ 6 )
  • the use of the hard encoder/decoder is capable of offering a significant improvement on the coding gain.
  • the hard decoder in a read operation can effectively improve the original BER from 10 ⁇ 6 to 10 ⁇ 14 or even smaller (not shown). Based on the above observation, an improved storage controller architecture is proposed.
  • FIG. 3 is a block diagram of a second exemplary embodiment of a storage controller according to the present invention.
  • the exemplary storage controller 300 includes, but is not limited to, a soft encoder 310 , a hard encoder 320 , a control circuit 330 , a soft decoder 340 , and a hard decoder 350 . It should be noted that only the elements pertinent to the present invention are shown in FIG. 3 for simplicity and clarity. In an actual implementation, the storage controller 300 may include other elements, such as a data buffer.
  • the storage controller 300 is used for controlling data access of a storage device 302 , and communicates with a host 306 via a host interface 304 .
  • the storage device 302 is a flash memory device, such as a NAND flash application.
  • the hard encoder 320 performs a hard encoding operation upon input data A 1 ′′ to generate encoded data A 1 ′, where the input data A 1 ′′ are generated from the host output A 1 .
  • the input data A 1 ′′ are generated from the host output A 1 without any change made to the host output A 1 .
  • the input data A 1 ′′ and the host output A 1 are exactly the same.
  • the hard encoder 320 may be an RS encoder or a BCH encoder. However, this is for illustrative purposes only. That is, any coding scheme which produces encoded data inapplicable to a soft decoding operation with acceptable computational complexity may be employed by the hard encoder 320 in the exemplary storage controller 300 .
  • the control circuit 330 is coupled to the hard encoder 320 and the soft encoder 310 , and is configured to generate input data A 2 for the soft encoder 310 according to the encoded data A 1 ′. In one implementation, the input data A 2 are generated from the encoded data A 1 ′ without any change made to the encoded data A 1 ′.
  • the input data A 2 and the encoded data A 1 ′ are exactly the same.
  • the control circuit 330 may apply particular signal processing to the encoded data A 1 ′ prior to generating the input data A 2 for the soft encoder 310 . This also falls within the scope of the present invention.
  • the soft encoder 310 performs a soft encoding operation upon the input data A 2 to generate encoded data A 2 ′.
  • the soft encoder 310 may be an LDPC encoder, a BTC encoder or a CTC encoder.
  • the coding scheme which is capable of producing encoded data applicable to a soft decoding operation with acceptable computational complexity can be employed by the soft encoder 310 in the exemplary storage controller 300 .
  • the control circuit 330 is coupled to the soft encoder 310 and the storage device 302 , and is configured to record data into the storage device 302 according to the encoded data A 2 ′ generated from the soft encoder 310 .
  • control circuit 330 may directly store the encoded data A 2 ′ into the storage device 302 to accomplish the write operation.
  • the control circuit 330 further processes the encoded data A 2 ′, and then stored a processing result of the encoded data A 2 ′ into the storage device 302 to accomplish the write operation. For example, the control circuit 330 performs a bit interleaving operation upon the encoded data A 2 ′, and then stores a bit-interleaved result of the encoded data A 2 ′ into the storage device 302 .
  • the control circuit 330 reads data from the storage device 302 to obtain readout data B 1 .
  • the control circuit 330 directly stores the encoded data A 2 ′ generated from the soft encoder 310 into the storage device 302 to accomplish the write operation, the data read from the storage device 302 are representative of the encoded data A 2 ′. Therefore, the control circuit 330 directly obtains the readout data B 1 from the data read from the storage device 302 .
  • the control circuit 330 applies specific signal processing upon the encoded data A 2 ′ prior to storing the encoded data A 2 ′ into the storage device 302 (e.g., the control circuit 330 performs a bit interleaving operation upon the encoded data A 2 ′, and then stores a bit-interleaved result of the encoded data A 2 ′ into the storage device 302 ), the data read from the storage device 302 are representative of a specific signal processing result of the encoded data A 2 ′ rather than the encoded data A 2 ′.
  • control circuit 330 applies an inverse signal processing operation (e.g., a bit deinterleaving operation) upon the data read from the storage device 302 to generate a corresponding signal processing result (e.g., a bit-deinterleaved result), and then obtains the readout data B 1 from the corresponding signal processing result.
  • the soft decoder 340 is used for performing a soft decoding operation upon the readout data B 1 to generate decoded data B 1 ′.
  • the soft encoder 310 when the soft encoder 310 is an LDPC encoder, the readout data B 1 include LDPC codewords, and the soft decoder 340 is an LDPC decoder which decodes the LDPC codewords of the readout data B 1 to derive the decoded data B 1 ′; when the soft encoder 310 is a BTC encoder, the readout data B 1 include BTC codewords, and the soft decoder 340 is a BTC decoder which decodes the BTC codewords of the readout data B 1 to derive the decoded data B 1 ′; and when the soft encoder 310 is a CTC encoder, the readout data B 1 include CTC codewords, and the soft decoder 340 is a CTC decoder which decodes the CTC codewords of the readout data B 1 to derive the decoded data B 1 ′.
  • the control circuit 330 generates input data B 2 for the hard decoder 350 according to the decoded data B 1 ′.
  • the input data B 2 are generated from the decoded data B 1 ′ without any change made to the decoded data B 1 ′.
  • the input data B 2 and the decoded data B 1 ′ are exactly the same.
  • the control circuit 330 may apply particular signal processing to the decoded data B 1 ′ prior to generating the input data B 2 to the hard encoder 350 . This also falls within the scope of the present invention.
  • the hard decoder 350 is used for performing a hard decoding operation upon the input data B 2 to generate decoded data B 2 ′.
  • the hard encoder 320 is an RS encoder
  • the input data B 2 include RS codewords
  • the hard decoder 350 is an RS decoder which decodes the RS codewords of the input data B 2 to generate the decoded data B 2 ′
  • the hard encoder 320 is a BCH encoder
  • the input data B 2 include BCH codewords
  • the hard decoder 350 is a BCH decoder which decodes the BCH codewords of the input data B 2 to generate the decoded data B 2 ′.
  • the control circuit 330 transmits a host input B 2 ′′ to the host 306 via the host interface 304 to accomplish the read operation, where the host input B 2 ′′ is generated from the decoded data B 2 ′.
  • the host input B 2 ′′ is generated from the decoded data B 2 ′ without any change made to the decoded data B 2 ′.
  • the host input B 2 ′′ and the decoded data B 2 ′ are exactly the same.
  • the data signal transmitted from the storage device 302 to the control circuit 330 carries soft information read from the storage device 302 , where the data signal may be an analog signal (e.g., an analog voltage signal) or a multi-level (multi-bit) signal.
  • the control circuit 330 has an analog-to-digital conversion capability to convert the analog voltage signal in an analog domain into digital soft bits in a digital domain, and then obtains the readout data B 1 according to the digital soft information.
  • the present invention does not focus on the generation and transmission of the soft bit information, further description is omitted here for the sake of brevity.
  • an exemplary storage control method employed by the storage controller 300 shown in FIG. 3 for controlling data write of a storage device includes following steps: performing a hard encoding operation upon input data to generate encoded data, where the computational complexity of decoding the encoded data via soft decoding is beyond a predetermined acceptable range; performing a soft encoding operation upon another input data, which are derived from the encoded data generated from the hard encoding operation, to generate another encoded data, where the computational complexity of decoding the another encoded data via soft decoding is within the predetermined acceptable range; and recording data into the storage device according to the another encoded data; additionally, the exemplary storage control method employed by the storage controller 300 shown in FIG.
  • 3 for controlling data read of the storage device includes following steps: reading data from the storage device to obtain readout data, performing a soft decoding operation upon the readout data to generate an decoded data, and performing a hard decoding operation upon another input data, which are derived from the decoded data generated from the soft decoding operation, to generate another decoded data.
  • the input data to be encoded by the soft encoding operation and the encoded data generated from the hard encoding operation are exactly the same, and the input data to be decoded by the hard decoding operation and the decoded data generated from the soft decoding operation are exactly the same.
  • FIG. 4 is a block diagram illustrating an exemplary system 400 having a storage controller 401 included therein.
  • the exemplary system 400 includes the storage controller 401 , a storage device (e.g., a NAND flash) 402 , a host interface 404 , and a host 406 .
  • the storage controller 401 is used for controlling data access of the storage device 402 , and communicates with the host 406 via the host interface 404 .
  • the storage controller 401 includes, but is not limited to, a soft encoder (e.g., an LDPC encoder for generating LDPC codes or turbo encoder for generating BTC/CTC codes) 410 , a hard encoder (e.g., a BCH encoder for generating BCH codes or RS encoder for generating RS codes) 420 , a control circuit 430 , a soft decoder (e.g., an LDPC decoder for decoding LDPC codes or turbo decoder for decoding BTC/CTC codes) 440 , a hard decoder (e.g., a BCH decoder for decoding BCH codes or RS decoder for decoding RS codes) 450 , and a data buffer 460 for buffering data processed/generated in the storage controller 401 .
  • a soft encoder e.g., an LDPC encoder for generating LDPC codes or turbo encoder for generating BTC/CTC codes
  • the controller architecture of the storage controller 401 shown in FIG. 4 is based on that of the storage controller 300 .
  • the storage controller 401 can readily understand details of the storage controller 401 after reading above paragraphs directed to the storage controller 300 , further description is omitted for brevity.
  • the soft information derived from the storage device 402 may be an analog signal (e.g., an analog voltage signal) or a multi-level signal.
  • the soft information generated from the storage device 402 is carried by the multi-level signal generated from an analog-to-digital converter (ADC) 470 implemented in the storage device 402 .
  • ADC analog-to-digital converter
  • the ADC 470 is implemented in the control circuit 430 rather than the storage device 402
  • the soft information generated from the storage device 402 is carried by the analog signal, where the ADC 470 in the control circuit 430 will convert the analog signal into a corresponding digital signal.
  • the soft encoder 410 is an LDPC encoder
  • the hard encoder 420 is a BCH encoder
  • the soft decoder 440 is an LDPC decoder
  • the hard decoder 450 is a BCH decoder
  • the control circuit 430 is also configured for performing bit interleaving, bit deinterleaving and analog-to-digital conversion, the control and data flow of the system 400 is shown in FIG. 5 .
  • this is for illustrative purposes only, and is not meant to be taken as a limitation to the scope of the present invention.
  • the aforementioned storage device 102 , 302 or 402 may be a NAND flash-based device, such as a solid state drive (SSD).
  • SSD solid state drive
  • the employed encoding and decoding formats thereof can be arbitrarily defined by the storage controller of the SSD as long as the minimum ECC requirement of the NAND flash is satisfied.
  • a multi-channel architecture is employed by the NAND flash of the SSD to use a plurality of physical channels for data transmission.
  • a nibble-based or byte-based device such as an optical disc drive (ODD).

Abstract

An exemplary storage controller for controlling data access of a storage device includes a control circuit and a soft decoder. The control circuit is utilized for reading data from the storage device to obtain readout data. The soft decoder is coupled to the control circuit, and utilized for performing a soft decoding operation upon the readout data to generate decoded data. The soft decoder may be a low density parity check (LDPC) decoder, a block turbo code (BTC) decoder, or a convolutional turbo code (CTC) decoder. The storage device may be a flash memory device.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application claims the benefit of U.S. Provisional Application No. 61/163,951, filed on Mar. 27, 2009 and incorporated herein by reference.
  • BACKGROUND
  • The disclosed embodiments of the present invention relate to recording data into and/or reading data from a storage device, and more particularly, to a storage controller having a soft decoder included therein, a related storage control method thereof, and a system using the same.
  • Error detection and correction techniques are employed to effectively correct errors caused by various factors to obtain error-free data. Taking a flash memory for example, continuous improvements in price/performance for the flash memory have enabled the flash memory to become the long term storage of choice for many applications; however, during the fabrication, the flash memory may contain defects (e.g., defective memory cells), and more defects may appear during the device lifetime, thereby limiting its usage. To manage these defects and to achieve efficient and reliable operation, the memory system typically uses error detection and correction techniques to control errors and to ensure reliable data reproduction.
  • In a typical NAND flash device, only the hard coding scheme, such as the Reed-Solomon (RS) coding or Bose-Chaudhuri-Hocquenghem (BCH) coding, is employed to detect and correct data errors. However, in a case where the bit error rate (BER) is quite poor, there is no significant improvement on the coding gain. In other words, when the original BER is quite poor, the hard decoder (e.g., an RS decoder or a BCH decoder) fails to effectively improve the BER.
  • Therefore, how to improve the error correcting capability of a storage device (e.g., a NAND flash device) becomes an issue to be solved by a designer in the pertinent field.
  • SUMMARY
  • In accordance with exemplary embodiments of the present invention, a storage controller having a soft decoder included therein, a related storage control method thereof, and a system using the same are disclosed.
  • According to a first aspect of the present invention, an exemplary storage controller for controlling data access of a storage device is disclosed. The exemplary storage controller includes a control circuit and a soft decoder. The control circuit is configured for reading data from the storage device to obtain readout data. The soft decoder is coupled to the control circuit, and implemented for performing a soft decoding operation upon the readout data to generate decoded data.
  • According to a second aspect of the present invention, an exemplary storage control method for controlling data access of a storage device is disclosed. The exemplary storage control method includes: reading data from the storage device to obtain readout data; and performing a soft decoding operation upon the readout data to generate decoded data.
  • According to a third aspect of the present invention, an exemplary system having a storage device and a storage controller is disclosed. The storage controller is coupled to the storage device, and implemented for controlling data access of the storage device. A data signal transmitted from the storage device to the storage controller carries soft information derived from the storage device.
  • These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a block diagram of a first exemplary embodiment of a storage controller according to the present invention.
  • FIG. 2 is a diagram illustrating the relationship between the coding gain and the bit error rate when a soft coding scheme is employed.
  • FIG. 3 is a block diagram of a second exemplary embodiment of a storage controller according to the present invention.
  • FIG. 4 is a block diagram illustrating an exemplary system having a storage controller included therein.
  • FIG. 5 is a diagram showing an exemplary control and data flow of the system shown in FIG. 4.
  • DETAILED DESCRIPTION
  • Certain terms are used throughout the description and following claims to refer to particular components. As one skilled in the art will appreciate, manufacturers may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following description and in the claims, the terms “include” and “comprise” are used in an open-ended fashion, and thus should be interpreted to mean “include, but not limited to . . . ”. Also, the term “couple” is intended to mean either an indirect or direct electrical connection. Accordingly, if one device is coupled to another device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
  • Generally speaking, the error detection and correction requires proper data encoding and data decoding. Provided that input data are encoded using a specific error correction code (ECC) scheme, decoding the encoded input data by hard decoding and decoding the same encoded input data by soft decoding may have different computational complexity, respectively. Taking a BCH code with a long codeword length for example, the computational complexity of decoding the BCH code using the soft decoding manner is too high to be acceptable. Therefore, compared with decoding the BCH code using the soft decoding means, decoding the BCH code using the hard decoding means would be easier and may be preferably employed. With regard to other coding scheme, such as a low density parity check (LDPC) code, a block turbo code (BTC), or a convolutional turbo code (CTC), the soft decoding complexity thereof is low and acceptable. Thus, employing the soft decoding means to decode the LDPC/BTC/CTC code may be preferably employed. It should be noted that data to be decoded by the hard decoding are data that include 1's and 0's generated by binary decision (quantization); however, data to be decoded by the soft decoding may be data which are not processed by binary decision (quantization).
  • To clarify the terminology in the following specification paragraphs and claims, certain terms, including “soft encoder”, “hard encoder”, “soft encoding operation” and “hard encoding operation,” are first defined here. If the computational complexity of decoding encoded data, generated from a specific encoder employing a specific coding scheme, by the soft decoding is within a predetermined acceptable range, the specific encoder is termed “soft encoder” and the employed specific coding scheme is termed “soft encoding operation”. However, if the computational complexity of decoding the encoded data (generated from the specific encoder employing the specific coding scheme) by the soft decoding is beyond the predetermined acceptable range, the specific encoder is termed “hard encoder” and the employed specific coding scheme is termed “hard encoding operation”. By way of example, not limitation, the soft encoder implemented in the exemplary embodiments of the present invention is to produce encoded data applicable to a soft decoding operation which requests acceptable computational complexity, and the hard encoder implemented in the exemplary embodiments of the present invention is to produce encoded data inapplicable to a soft decoding operation which requests acceptable computational complexity.
  • The conception of the present invention is to have a soft encoder involved in processing data to be stored into a storage device (e.g., a NAND flash memory), and a soft decoder involved in processing data read from the storage device. Therefore, in a situation where the BER is poor, there is a significant improvement on the coding gain. In other words, when the original BER is poor, the soft decoder is capable of effectively improving the BER.
  • FIG. 1 is a block diagram of a first exemplary embodiment of a storage controller according to the present invention. The exemplary storage controller 100 includes, but is not limited to, a soft encoder 110, a control circuit 120, and a soft decoder 130. It should be noted that only the elements pertinent to the present invention are shown in FIG. 1 for simplicity and clarity. In an actual implementation, the storage controller 100 may include other elements, such as a data buffer. The storage controller 100 is used for controlling data access of a storage device 102, and communicates with a host 106 via a host interface 104. By way of example, not limitation, the storage device 102 is a flash memory device, such as a NAND flash application. When the storage controller 100 receives a host output D1 from the host 106 via the host interface 104, the soft encoder 110 performs a soft encoding operation upon input data D1″ to generate encoded data D1′, where the input data D1″ are generated from the host input D1. For example, the input data D1″ are generated from the host input D1 without any change made to the host input D1. In other words, the input data D1″ and the host input D1 are exactly the same. In addition, the soft encoder 110 may be an LDPC encoder, a BTC encoder, or a CTC encoder. However, this is for illustrative purposes only, and is not meant to be taken as a limitation to the scope of the present invention. That is, any coding scheme can be employed by the soft encoder 110 in the exemplary storage controller 100, wherein the coding scheme is capable of producing encoded data applicable to a soft decoding operation with acceptable computational complexity.
  • The control circuit 120 is coupled to the soft encoder 110 and the storage device 102, and is configured to record data into the storage device 102 according to the encoded data D1′ generated from the soft encoder 110. In one implementation, the control circuit 120 may directly store the encoded data D1′ into the storage device 102 to accomplish the write operation. In another implementation, the control circuit 120 further processes the encoded data D1′, and then stores a processing result of the encoded data D1′ into the storage device 102 to accomplish the write operation. For example, the control circuit 120 performs a bit interleaving operation upon the encoded data D1′, and then stores a bit-interleaved result of the encoded data D1′ into the storage device 102.
  • With regard to the read operation, the control circuit 120 reads data from the storage device 102 to obtain readout data E1. For example, in a case where the control circuit 120 directly stores the encoded data D1′ generated from the soft encoder 110 into the storage device 102 to accomplish the write operation, the data read from the storage device 102 are representative of the encoded data D1′. Therefore, the control circuit 120 directly obtains the readout data E1 from the data read from the storage device 102. However, in another case where the control circuit 120 applies specific signal processing upon the encoded data D1′ prior to storing the encoded data D1′ into the storage device 102 (e.g., the control circuit 120 performs a bit interleaving operation upon the encoded data D1′, and then stores a bit-interleaved result of the encoded data D1′ into the storage device 102), the data read from the storage device 102 are representative of a specific signal processing result of the encoded data D1′ rather than the encoded data D1′. Therefore, the control circuit 120 applies an inverse signal processing operation (e.g., a bit deinterleaving operation) upon the data read from the storage device 102 to generate a corresponding signal processing result (e.g., a bit-deinterleaved result), and then obtains the readout data E1 from the corresponding signal processing result.
  • The soft decoder 130 is used for performing a soft decoding operation upon the readout data E1 to generate decoded data E1′. For example, when the soft encoder 110 is an LDPC encoder, the readout data E1 include LDPC codewords, and the soft decoder 130 is an LDPC decoder which decodes the LDPC codewords of the readout data E1 to generate the decoded data E1′; when the soft encoder 110 is a BTC encoder, the readout data E1 include BTC codewords, and the soft decoder 130 is a BTC decoder which decodes the BTC codewords of the readout data E1 to generate the decoded data E1′; and when the soft encoder 110 is a CTC encoder, the readout data E1 include CTC codewords, and the soft decoder 130 is a CTC decoder which decodes the CTC codewords of the readout data E1 to generate the decoded data E1′. In the end, the control circuit 120 transmits a host input E1″ to the host 106 via the host interface 104 to accomplish the read operation, where the host input E1″ is generated from the decoded data E1′. For example, the host input E1″ is generated from the decoded data E1′ without any change made to the decoded data E1′. In other words, the host input E1″ and the decoded data E1′ are exactly the same.
  • It should be noted that when the storage device 102 is read, the data signal transmitted from the storage device 102 to the control circuit 120 carries soft information read from the storage device 102, where the data signal may be an analog signal (e.g., an analog voltage signal) or a multi-level (multi-bit) signal. In a case where the data signal is an analog voltage signal which transfers an analog voltage derived from reading a data bit stored in each memory cell of the storage device 102, the control circuit 120 has an analog-to-digital conversion capability to convert the analog voltage signal in an analog domain into digital soft bits in a digital domain, and then obtains the readout data E1 according to the digital soft information. As the present invention does not focus on the generation and transmission of the soft information, further description is omitted here for the sake of brevity.
  • As mentioned above, when the original BER is poor, there is no significant improvement on the coding gain by solely using the hard encoder/decoder. For example, when the original BER is 10−2, the hard decoder fails to effectively improve the BER from 10−2 to 10−3 due to the inherent characteristic of the hard coding scheme. However, as shown in FIG. 2 which illustrates the relationship between the coding gain and the BER when a soft coding scheme is employed, the soft decoder (e.g., an LDPC decoder) is capable of effectively improving the coding gain when the original BER is poor. The ‘SNR’ in FIG. 2 means signal-to-noise ratio.
  • In view of above, an exemplary storage control method employed by the storage controller 100 shown in FIG. 1 for controlling data write of a storage device (e.g., a flash memory device) includes following steps: performing a soft encoding operation upon input data to generate encoded data, and recording data into the storage device according to the encoded data, where the computational complexity of decoding the encoded data via soft decoding is within a predetermined acceptable range; additionally, the exemplary storage control method employed by the storage controller 100 shown in FIG. 1 for controlling data read of the storage device includes following steps: reading data from the storage device to obtain readout data, and performing a soft decoding operation upon the readout data to generate decoded data. As a person skilled in the art can readily understand details of the exemplary storage control method after reading above paragraphs directed to the storage controller 100, further description is omitted here for brevity.
  • In above embodiment shown in FIG. 1, a single soft encoder/decoder architecture is employed. However, this is for illustrative purposes only. In an alternative design, a concatenated coding scheme may be employed to achieve a better error correcting capability. As shown in FIG. 2, when the BER is not so bad (e.g., BER<10−6), there is no significant improvement on the coding gain by solely using the soft encoder/decoder in the storage controller. However, when the BER is not so bad (e.g., BER<10−6), the use of the hard encoder/decoder is capable of offering a significant improvement on the coding gain. For example, the hard decoder in a read operation can effectively improve the original BER from 10−6 to 10−14 or even smaller (not shown). Based on the above observation, an improved storage controller architecture is proposed.
  • Please refer to FIG. 3, which is a block diagram of a second exemplary embodiment of a storage controller according to the present invention. The exemplary storage controller 300 includes, but is not limited to, a soft encoder 310, a hard encoder 320, a control circuit 330, a soft decoder 340, and a hard decoder 350. It should be noted that only the elements pertinent to the present invention are shown in FIG. 3 for simplicity and clarity. In an actual implementation, the storage controller 300 may include other elements, such as a data buffer.
  • The storage controller 300 is used for controlling data access of a storage device 302, and communicates with a host 306 via a host interface 304. By way of example, not limitation, the storage device 302 is a flash memory device, such as a NAND flash application. When the storage controller 300 receives a host output A1 from the host 306 via the host interface 304, the hard encoder 320 performs a hard encoding operation upon input data A1″ to generate encoded data A1′, where the input data A1″ are generated from the host output A1. For example, the input data A1″ are generated from the host output A1 without any change made to the host output A1. In other words, the input data A1″ and the host output A1 are exactly the same. In addition, the hard encoder 320 may be an RS encoder or a BCH encoder. However, this is for illustrative purposes only. That is, any coding scheme which produces encoded data inapplicable to a soft decoding operation with acceptable computational complexity may be employed by the hard encoder 320 in the exemplary storage controller 300. The control circuit 330 is coupled to the hard encoder 320 and the soft encoder 310, and is configured to generate input data A2 for the soft encoder 310 according to the encoded data A1′. In one implementation, the input data A2 are generated from the encoded data A1′ without any change made to the encoded data A1′. In other words, the input data A2 and the encoded data A1′ are exactly the same. However, in an alternative design, the control circuit 330 may apply particular signal processing to the encoded data A1′ prior to generating the input data A2 for the soft encoder 310. This also falls within the scope of the present invention.
  • The soft encoder 310 performs a soft encoding operation upon the input data A2 to generate encoded data A2′. For example, the soft encoder 310 may be an LDPC encoder, a BTC encoder or a CTC encoder. Specifically, the coding scheme which is capable of producing encoded data applicable to a soft decoding operation with acceptable computational complexity can be employed by the soft encoder 310 in the exemplary storage controller 300. The control circuit 330 is coupled to the soft encoder 310 and the storage device 302, and is configured to record data into the storage device 302 according to the encoded data A2′ generated from the soft encoder 310. In one implementation, the control circuit 330 may directly store the encoded data A2′ into the storage device 302 to accomplish the write operation. In another implementation, the control circuit 330 further processes the encoded data A2′, and then stored a processing result of the encoded data A2′ into the storage device 302 to accomplish the write operation. For example, the control circuit 330 performs a bit interleaving operation upon the encoded data A2′, and then stores a bit-interleaved result of the encoded data A2′ into the storage device 302.
  • With regard to the read operation, the control circuit 330 reads data from the storage device 302 to obtain readout data B1. For example, in a case where the control circuit 330 directly stores the encoded data A2′ generated from the soft encoder 310 into the storage device 302 to accomplish the write operation, the data read from the storage device 302 are representative of the encoded data A2′. Therefore, the control circuit 330 directly obtains the readout data B1 from the data read from the storage device 302. However, in another case where the control circuit 330 applies specific signal processing upon the encoded data A2′ prior to storing the encoded data A2′ into the storage device 302 (e.g., the control circuit 330 performs a bit interleaving operation upon the encoded data A2′, and then stores a bit-interleaved result of the encoded data A2′ into the storage device 302), the data read from the storage device 302 are representative of a specific signal processing result of the encoded data A2′ rather than the encoded data A2′. Therefore, the control circuit 330 applies an inverse signal processing operation (e.g., a bit deinterleaving operation) upon the data read from the storage device 302 to generate a corresponding signal processing result (e.g., a bit-deinterleaved result), and then obtains the readout data B1 from the corresponding signal processing result. The soft decoder 340 is used for performing a soft decoding operation upon the readout data B1 to generate decoded data B1′. For example, when the soft encoder 310 is an LDPC encoder, the readout data B1 include LDPC codewords, and the soft decoder 340 is an LDPC decoder which decodes the LDPC codewords of the readout data B1 to derive the decoded data B1′; when the soft encoder 310 is a BTC encoder, the readout data B1 include BTC codewords, and the soft decoder 340 is a BTC decoder which decodes the BTC codewords of the readout data B1 to derive the decoded data B1′; and when the soft encoder 310 is a CTC encoder, the readout data B1 include CTC codewords, and the soft decoder 340 is a CTC decoder which decodes the CTC codewords of the readout data B1 to derive the decoded data B1′.
  • Next, the control circuit 330 generates input data B2 for the hard decoder 350 according to the decoded data B1′. In one implementation, the input data B2 are generated from the decoded data B1′ without any change made to the decoded data B1′. In other words, the input data B2 and the decoded data B1′ are exactly the same. However, in an alternative design, the control circuit 330 may apply particular signal processing to the decoded data B1′ prior to generating the input data B2 to the hard encoder 350. This also falls within the scope of the present invention.
  • The hard decoder 350 is used for performing a hard decoding operation upon the input data B2 to generate decoded data B2′. For example, when the hard encoder 320 is an RS encoder, the input data B2 include RS codewords, and the hard decoder 350 is an RS decoder which decodes the RS codewords of the input data B2 to generate the decoded data B2′; and when the hard encoder 320 is a BCH encoder, the input data B2 include BCH codewords, and the hard decoder 350 is a BCH decoder which decodes the BCH codewords of the input data B2 to generate the decoded data B2′. In the end, the control circuit 330 transmits a host input B2″ to the host 306 via the host interface 304 to accomplish the read operation, where the host input B2″ is generated from the decoded data B2′. For example, the host input B2″ is generated from the decoded data B2′ without any change made to the decoded data B2′. In other words, the host input B2″ and the decoded data B2′ are exactly the same.
  • It should be noted that when the storage device 302 is read, the data signal transmitted from the storage device 302 to the control circuit 330 carries soft information read from the storage device 302, where the data signal may be an analog signal (e.g., an analog voltage signal) or a multi-level (multi-bit) signal. In a case where the data signal is an analog voltage signal which transfers an analog voltage derived from reading a data bit stored in each memory cell of the storage device 302, the control circuit 330 has an analog-to-digital conversion capability to convert the analog voltage signal in an analog domain into digital soft bits in a digital domain, and then obtains the readout data B1 according to the digital soft information. As the present invention does not focus on the generation and transmission of the soft bit information, further description is omitted here for the sake of brevity.
  • In view of above, an exemplary storage control method employed by the storage controller 300 shown in FIG. 3 for controlling data write of a storage device includes following steps: performing a hard encoding operation upon input data to generate encoded data, where the computational complexity of decoding the encoded data via soft decoding is beyond a predetermined acceptable range; performing a soft encoding operation upon another input data, which are derived from the encoded data generated from the hard encoding operation, to generate another encoded data, where the computational complexity of decoding the another encoded data via soft decoding is within the predetermined acceptable range; and recording data into the storage device according to the another encoded data; additionally, the exemplary storage control method employed by the storage controller 300 shown in FIG. 3 for controlling data read of the storage device includes following steps: reading data from the storage device to obtain readout data, performing a soft decoding operation upon the readout data to generate an decoded data, and performing a hard decoding operation upon another input data, which are derived from the decoded data generated from the soft decoding operation, to generate another decoded data. In one exemplary implementation, the input data to be encoded by the soft encoding operation and the encoded data generated from the hard encoding operation are exactly the same, and the input data to be decoded by the hard decoding operation and the decoded data generated from the soft decoding operation are exactly the same. As a person skilled in the art can readily understand details of the exemplary storage control method after reading above paragraphs directed to the storage controller 300, further description is omitted here for brevity.
  • FIG. 4 is a block diagram illustrating an exemplary system 400 having a storage controller 401 included therein. The exemplary system 400 includes the storage controller 401, a storage device (e.g., a NAND flash) 402, a host interface 404, and a host 406. The storage controller 401 is used for controlling data access of the storage device 402, and communicates with the host 406 via the host interface 404. The storage controller 401 includes, but is not limited to, a soft encoder (e.g., an LDPC encoder for generating LDPC codes or turbo encoder for generating BTC/CTC codes) 410, a hard encoder (e.g., a BCH encoder for generating BCH codes or RS encoder for generating RS codes) 420, a control circuit 430, a soft decoder (e.g., an LDPC decoder for decoding LDPC codes or turbo decoder for decoding BTC/CTC codes) 440, a hard decoder (e.g., a BCH decoder for decoding BCH codes or RS decoder for decoding RS codes) 450, and a data buffer 460 for buffering data processed/generated in the storage controller 401. As can be seen from FIG. 3, the controller architecture of the storage controller 401 shown in FIG. 4 is based on that of the storage controller 300. As a person skilled in the art can readily understand details of the storage controller 401 after reading above paragraphs directed to the storage controller 300, further description is omitted for brevity.
  • It should be noted that the soft information derived from the storage device 402 may be an analog signal (e.g., an analog voltage signal) or a multi-level signal. For example, if the storage device 402 is equipped with analog-to-digital conversion (A/D) capability, the soft information generated from the storage device 402 is carried by the multi-level signal generated from an analog-to-digital converter (ADC) 470 implemented in the storage device 402. However, if the ADC 470 is implemented in the control circuit 430 rather than the storage device 402, the soft information generated from the storage device 402 is carried by the analog signal, where the ADC 470 in the control circuit 430 will convert the analog signal into a corresponding digital signal.
  • In a case where the soft encoder 410 is an LDPC encoder, the hard encoder 420 is a BCH encoder, the soft decoder 440 is an LDPC decoder, the hard decoder 450 is a BCH decoder, and the control circuit 430 is also configured for performing bit interleaving, bit deinterleaving and analog-to-digital conversion, the control and data flow of the system 400 is shown in FIG. 5. However, this is for illustrative purposes only, and is not meant to be taken as a limitation to the scope of the present invention.
  • The aforementioned storage device 102, 302 or 402 may be a NAND flash-based device, such as a solid state drive (SSD). Taking the SSD for example, it is a closed-loop system, therefore the employed encoding and decoding formats thereof can be arbitrarily defined by the storage controller of the SSD as long as the minimum ECC requirement of the NAND flash is satisfied. To meet the high bandwidth requirement of the host, a multi-channel architecture is employed by the NAND flash of the SSD to use a plurality of physical channels for data transmission. Moreover, due to the multi-field characteristic of the SSD, only one filed is allowed to be adjusted, which is different from a nibble-based or byte-based device, such as an optical disc drive (ODD).
  • Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.

Claims (20)

1. A storage controller for controlling data access of a storage device, comprising:
a control circuit, configured for reading data from the storage device to obtain readout data; and
a soft decoder, coupled to the control circuit, for performing a soft decoding operation upon the readout data to generate first decoded data.
2. The storage controller of claim 1, further comprising:
a hard decoder, coupled to the control circuit, for performing a hard decoding operation upon input data to generate second decoded data;
wherein the input data are generated from the control circuit according to the first decoded data.
3. The storage controller of claim 2, wherein the input data are generated from the first decoded data without any change made to the first decoded data.
4. The storage controller of claim 2, further comprising:
a soft encoder, coupled to the control circuit, for performing a soft encoding operation upon first input data to generate first encoded data; and
a hard encoder, coupled to the control circuit, for performing a hard encoding operation upon second input data to generate second encoded data;
wherein the control circuit further generates the first input data for the soft encoder according to the second encoded data, and records data into the storage device according to the first encoded data.
5. The storage controller of claim 4, wherein the first input data are generated from the second encoded data without any change made to the second encoded data.
6. The storage controller of claim 1, further comprising:
a soft encoder, coupled to the control circuit and configured for performing a soft encoding operation upon input data to generate encoded data;
wherein the control circuit further records data into the storage device according to the encoded data.
7. The storage controller of claim 1, wherein the storage device is a flash memory device.
8. The storage controller of claim 1, wherein the soft decoder is a low density parity check (LDPC) decoder, a block turbo code (BTC) decoder, or a convolutional turbo code (CTC) decoder.
9. A storage control method for controlling data access of a storage device, comprising:
reading data from the storage device to obtain readout data; and
performing a soft decoding operation upon the readout data to generate first decoded data.
10. The storage control method of claim 9, further comprising:
performing a hard decoding operation upon input data to generate second decoded data;
wherein the input data are generated from the first decoded data.
11. The storage control method of claim 10, wherein the input data are generated from the first decoded data without any change made to the first decoded data.
12. The storage control method of claim 10, further comprising:
performing a soft encoding operation upon first input data to generate first encoded data;
performing a hard encoding operation upon second input data to generate second encoded data, wherein the first input data are generated from the second encoded data; and
recording data into the storage device according to the first encoded data.
13. The storage control method of claim 12, wherein the first input data are generated from the second encoded data without any change made to the second encoded data.
14. The storage control method of claim 9, further comprising:
performing a soft encoding operation upon input data to generate encoded data; and
recording data into the storage device according to the encoded data.
15. The storage control method of claim 9, wherein the storage device is a flash memory device.
16. The storage control method of claim 9, wherein the soft decoding operation is a low density parity check (LDPC) decoding operation, a block turbo code (BTC) decoding operation, or a convolutional turbo code (CTC) decoding operation.
17. A system comprising:
a storage device; and
a storage controller, coupled to the storage device, for controlling data access of the storage device, wherein a data signal transmitted from the storage device to the storage controller carries soft information derived from the storage device.
18. The system of claim 17, wherein the storage device includes an analog-to-digital converter utilized for generating a multi-level signal as the data signal.
19. The system of claim 17, wherein the data signal is an analog signal, and the storage controller includes an analog-to-digital converter utilized for converting the analog signal into a corresponding digital signal.
20. The system of claim 17, wherein the storage device is a flash memory device.
US12/646,936 2009-03-27 2009-12-23 Storage controller having soft decoder included therein, related storage control method thereof and system using the same Abandoned US20100251076A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12/646,936 US20100251076A1 (en) 2009-03-27 2009-12-23 Storage controller having soft decoder included therein, related storage control method thereof and system using the same
CN 201010121145 CN101847447A (en) 2009-03-27 2010-03-10 Memory controller, storage controlling method and data access arrangement
TW099107125A TW201035991A (en) 2009-03-27 2010-03-11 Storage controller, storage control method and system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16395109P 2009-03-27 2009-03-27
US12/646,936 US20100251076A1 (en) 2009-03-27 2009-12-23 Storage controller having soft decoder included therein, related storage control method thereof and system using the same

Publications (1)

Publication Number Publication Date
US20100251076A1 true US20100251076A1 (en) 2010-09-30

Family

ID=42785823

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/646,936 Abandoned US20100251076A1 (en) 2009-03-27 2009-12-23 Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US12/645,490 Active 2031-07-11 US8418021B2 (en) 2009-03-27 2009-12-23 Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/645,490 Active 2031-07-11 US8418021B2 (en) 2009-03-27 2009-12-23 Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof

Country Status (3)

Country Link
US (2) US20100251076A1 (en)
CN (1) CN101950586B (en)
TW (2) TWI464744B (en)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120240007A1 (en) * 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US20140149828A1 (en) * 2012-11-27 2014-05-29 Lite-On It Corporation Solid state drive and joint encoding/decoding method thereof
WO2014116712A1 (en) * 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US8856615B1 (en) 2012-06-11 2014-10-07 Western Digital Technologies, Inc. Data storage device tracking log-likelihood ratio for a decoder based on past performance
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US20150081957A1 (en) * 2011-01-20 2015-03-19 Micron Technology, Inc. Outputting a particular data quantization from memory
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US20150113204A1 (en) * 2013-10-17 2015-04-23 National Chiao Tung University Data storage device and computing system with the same
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
US20150178151A1 (en) * 2013-12-20 2015-06-25 Sandisk Technologies Inc. Data storage device decoder and method of operation
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US9274802B2 (en) 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
US9672942B2 (en) 2014-04-22 2017-06-06 Samsung Electronics Co., Ltd. Data decoding method of non-volatile memory device and apparatus for performing the method
KR101796426B1 (en) * 2014-06-03 2017-11-09 마이크론 테크놀로지, 인크. Determining soft data
US9985653B2 (en) 2015-04-10 2018-05-29 Samsung Electronics Co., Ltd. Methods and systems for soft-decision decoding
US10469103B1 (en) 2017-04-19 2019-11-05 Seagate Technology Llc Adaptive read retry optimization
US10915464B2 (en) * 2017-09-12 2021-02-09 Ememory Technology Inc. Security system using random number bit string
US20230208445A1 (en) * 2021-12-29 2023-06-29 Western Digital Technologies, Inc. Signal Correction Using Soft Information in a Data Channel

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008070814A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a scalable, composite, reconfigurable backplane
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8892980B2 (en) * 2010-06-15 2014-11-18 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8607129B2 (en) * 2011-07-01 2013-12-10 Intel Corporation Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8954825B2 (en) 2012-03-06 2015-02-10 Micron Technology, Inc. Apparatuses and methods including error correction code organization
US8972826B2 (en) * 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
KR101997794B1 (en) * 2012-12-11 2019-07-09 삼성전자주식회사 Memory controller and memory system including the same
US8869008B2 (en) 2013-01-17 2014-10-21 Apple Inc. Adaptation of analog memory cell read thresholds using partial ECC syndromes
US9098445B2 (en) * 2013-03-14 2015-08-04 Apple Inc. Selection of redundant storage configuration based on available memory space
US9430326B2 (en) * 2014-07-22 2016-08-30 HGST Netherlands B.V. Multiple ECC codeword sizes in an SSD
CN106935271B (en) * 2016-01-21 2020-09-15 威盛电子股份有限公司 Controller device and operation method of three-dimensional framework nonvolatile memory
US20170271030A1 (en) * 2016-03-18 2017-09-21 Alibaba Group Holding Limited Method and system for using downgraded flash die for cache applications
CN110089035B (en) 2016-12-24 2021-01-29 华为技术有限公司 Storage controller, data processing chip and data processing method
KR20180082926A (en) * 2017-01-11 2018-07-19 에스케이하이닉스 주식회사 ECC decoder sharing logic operations, memory controller including the ECC decoder, and ECC decoding method capable of sharing logic operations
CN108053860A (en) * 2018-01-12 2018-05-18 江苏华存电子科技有限公司 A kind of method that coding/decoding system is combined using a variety of error correcting codes
US10897273B2 (en) * 2018-06-27 2021-01-19 Western Digital Technologies, Inc. System-level error correction coding allocation based on device population data integrity sharing
US10802908B2 (en) 2018-07-31 2020-10-13 Western Digital Technologies, Inc. Data dependent allocation of error correction resources
CN111611101B (en) * 2020-04-22 2023-09-29 珠海妙存科技有限公司 Method and device for adjusting flash memory read data throughput rate
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562577A (en) * 1983-09-19 1985-12-31 Storage Technology Partners Ii Shared encoder/decoder circuits for use with error correction codes of an optical disk system
US6252838B1 (en) * 1996-04-01 2001-06-26 Pioneer Electronic Corporation Information recording method and apparatus with additional recording function
US20030135530A1 (en) * 2001-09-20 2003-07-17 Stmicroelectronics, Inc. Flexible galois field multiplier
US20040015771A1 (en) * 2002-07-16 2004-01-22 Menahem Lasser Error correction for non-volatile memory
US20040223435A1 (en) * 2003-03-07 2004-11-11 Noriaki Nishi Optical head and recording and/or reproducing apparatus
US20050099910A1 (en) * 2000-02-10 2005-05-12 Sony Corporation Recording and/or reproducing method for record medium, reproducing apparatus, record medium, record medium distinguishing method, and recording and/or reproducing method for apparatus using record medium
US20070171714A1 (en) * 2006-01-20 2007-07-26 Marvell International Ltd. Flash memory with coding and signal processing
US20070171730A1 (en) * 2006-01-20 2007-07-26 Marvell International Ltd. Method and system for error correction in flash memory
US7304990B2 (en) * 2000-02-03 2007-12-04 Bandwiz Inc. Method of encoding and transmitting data over a communication medium through division and segmentation
US20080028274A1 (en) * 2006-07-25 2008-01-31 Communications Coding Corporation Universal error control coding scheme for digital communication and data storage systems
US20080034272A1 (en) * 2006-08-07 2008-02-07 Zining Wu System and method for correcting errors in non-volatile memory using product codes
US20080082897A1 (en) * 2006-09-28 2008-04-03 Yigal Brandman Soft-Input Soft-Output Decoder for Nonvolatile Memory
US20080137414A1 (en) * 2006-12-06 2008-06-12 Samsung Electronics Co., Ltd. Multi-level cell memory device and method thereof
US20090063934A1 (en) * 2007-08-28 2009-03-05 Samsung Electronics Co., Ltd. Multi-channel memory system including error correction decoder architecture with efficient area utilization
US7543215B2 (en) * 2005-02-14 2009-06-02 Mediatek Inc. Integrated apparatus for multi-standard optical storage media
US20100199149A1 (en) * 2007-12-05 2010-08-05 Hanan Weingarten Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of "first below" cells
US20100251066A1 (en) * 2006-08-31 2010-09-30 Micron Technology, Inc. Data handling
US8065583B2 (en) * 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US20120079178A1 (en) * 2008-09-28 2012-03-29 Simon Litsyn Method and system for adaptive coding in flash memories

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101067972B (en) * 2007-04-23 2012-04-25 北京兆易创新科技有限公司 Memory error-detecting and error-correcting coding circuit and method for reading and writing data utilizing the same

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562577A (en) * 1983-09-19 1985-12-31 Storage Technology Partners Ii Shared encoder/decoder circuits for use with error correction codes of an optical disk system
US6252838B1 (en) * 1996-04-01 2001-06-26 Pioneer Electronic Corporation Information recording method and apparatus with additional recording function
US7304990B2 (en) * 2000-02-03 2007-12-04 Bandwiz Inc. Method of encoding and transmitting data over a communication medium through division and segmentation
US20050099910A1 (en) * 2000-02-10 2005-05-12 Sony Corporation Recording and/or reproducing method for record medium, reproducing apparatus, record medium, record medium distinguishing method, and recording and/or reproducing method for apparatus using record medium
US20030135530A1 (en) * 2001-09-20 2003-07-17 Stmicroelectronics, Inc. Flexible galois field multiplier
US20040015771A1 (en) * 2002-07-16 2004-01-22 Menahem Lasser Error correction for non-volatile memory
US20040223435A1 (en) * 2003-03-07 2004-11-11 Noriaki Nishi Optical head and recording and/or reproducing apparatus
US20090217134A1 (en) * 2005-02-14 2009-08-27 Mediatek Inc. Integrated apparatus for multi-standard optical storage media
US7543215B2 (en) * 2005-02-14 2009-06-02 Mediatek Inc. Integrated apparatus for multi-standard optical storage media
US20070171714A1 (en) * 2006-01-20 2007-07-26 Marvell International Ltd. Flash memory with coding and signal processing
US20110060969A1 (en) * 2006-01-20 2011-03-10 Marvell International Ltd. Method and system for error correction in flash memory
US7844879B2 (en) * 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US20070171730A1 (en) * 2006-01-20 2007-07-26 Marvell International Ltd. Method and system for error correction in flash memory
US20080028274A1 (en) * 2006-07-25 2008-01-31 Communications Coding Corporation Universal error control coding scheme for digital communication and data storage systems
US20080034272A1 (en) * 2006-08-07 2008-02-07 Zining Wu System and method for correcting errors in non-volatile memory using product codes
US20100251066A1 (en) * 2006-08-31 2010-09-30 Micron Technology, Inc. Data handling
US20080082897A1 (en) * 2006-09-28 2008-04-03 Yigal Brandman Soft-Input Soft-Output Decoder for Nonvolatile Memory
US20080137414A1 (en) * 2006-12-06 2008-06-12 Samsung Electronics Co., Ltd. Multi-level cell memory device and method thereof
US8065583B2 (en) * 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US20090063934A1 (en) * 2007-08-28 2009-03-05 Samsung Electronics Co., Ltd. Multi-channel memory system including error correction decoder architecture with efficient area utilization
US20100199149A1 (en) * 2007-12-05 2010-08-05 Hanan Weingarten Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of "first below" cells
US20120079178A1 (en) * 2008-09-28 2012-03-29 Simon Litsyn Method and system for adaptive coding in flash memories

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120240007A1 (en) * 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US20150081957A1 (en) * 2011-01-20 2015-03-19 Micron Technology, Inc. Outputting a particular data quantization from memory
US9395927B2 (en) * 2011-01-20 2016-07-19 Micron Technology, Inc. Outputting a particular data quantization from memory
US9032269B2 (en) 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8880977B2 (en) 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US9318166B2 (en) 2011-07-22 2016-04-19 SanDisk Technologies, Inc. Systems and methods of storing data
US9311970B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
US9390774B2 (en) 2011-07-22 2016-07-12 Sandisk Technologies Llc Systems and methods of storing data
US9311969B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
US8856615B1 (en) 2012-06-11 2014-10-07 Western Digital Technologies, Inc. Data storage device tracking log-likelihood ratio for a decoder based on past performance
US20140149828A1 (en) * 2012-11-27 2014-05-29 Lite-On It Corporation Solid state drive and joint encoding/decoding method thereof
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
US9274802B2 (en) 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
WO2014116712A1 (en) * 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US20150113204A1 (en) * 2013-10-17 2015-04-23 National Chiao Tung University Data storage device and computing system with the same
US20150178151A1 (en) * 2013-12-20 2015-06-25 Sandisk Technologies Inc. Data storage device decoder and method of operation
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation
US9672942B2 (en) 2014-04-22 2017-06-06 Samsung Electronics Co., Ltd. Data decoding method of non-volatile memory device and apparatus for performing the method
US10573379B2 (en) 2014-06-03 2020-02-25 Micron Technology, Inc. Determining soft data
KR101796426B1 (en) * 2014-06-03 2017-11-09 마이크론 테크놀로지, 인크. Determining soft data
US11170848B2 (en) 2014-06-03 2021-11-09 Micron Technology, Inc. Determining soft data
US11688459B2 (en) 2014-06-03 2023-06-27 Micron Technology, Inc. Determining soft data
US9985653B2 (en) 2015-04-10 2018-05-29 Samsung Electronics Co., Ltd. Methods and systems for soft-decision decoding
US10469103B1 (en) 2017-04-19 2019-11-05 Seagate Technology Llc Adaptive read retry optimization
US11139833B2 (en) 2017-04-19 2021-10-05 Seagate Technology Llc Adaptive read retry optimization
US10915464B2 (en) * 2017-09-12 2021-02-09 Ememory Technology Inc. Security system using random number bit string
US20230208445A1 (en) * 2021-12-29 2023-06-29 Western Digital Technologies, Inc. Signal Correction Using Soft Information in a Data Channel
US11716097B2 (en) * 2021-12-29 2023-08-01 Western Digital Technologies, Inc. Signal correction using soft information in a data channel

Also Published As

Publication number Publication date
US8418021B2 (en) 2013-04-09
US20100251068A1 (en) 2010-09-30
TWI464744B (en) 2014-12-11
TW201035991A (en) 2010-10-01
CN101950586A (en) 2011-01-19
CN101950586B (en) 2014-04-09
TW201035988A (en) 2010-10-01

Similar Documents

Publication Publication Date Title
US20100251076A1 (en) Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US8713411B2 (en) Encoding and/or decoding memory devices and methods thereof
TWI451430B (en) System and method for correcting errors in non-volatile memory using product codes
KR101410434B1 (en) Method and system for error correction in flash memory
US8281217B2 (en) Memory devices and encoding and/or decoding methods
US9048879B1 (en) Error correction system using an iterative product code
KR101373789B1 (en) Flash memory with coding and signal processing
JP5229591B2 (en) Error correction codes for increased storage capacity in multilevel memory devices.
US8966347B2 (en) Forward error correction with parallel error detection for flash memories
US9294132B1 (en) Dual-stage data decoding for non-volatile memories
US20120254686A1 (en) Non-volatile semiconductor memory devices and error correction methods
US20170163287A1 (en) Error correction methods and apparatuses using first and second decoders
US7853854B2 (en) Iterative decoding of a frame of data encoded using a block coding algorithm
US8413029B2 (en) Error correction capability adjustment of LDPC codes for storage device testing
TWI557747B (en) Memory control module and method thereof and error correcting code encode/decode circuit and method thereof
KR20070025145A (en) Soft decoding method and apparatus therefore and error correction method and apparatus therefore, soft output method and apparatus therefore
JP2010522924A (en) Read level control apparatus and method
US9047213B2 (en) Coding architecture for multi-level NAND flash memory with stuck cells
KR101267798B1 (en) Apparatus for controlling read level and method using the same
CN101847447A (en) Memory controller, storage controlling method and data access arrangement
US8086930B2 (en) Fixed-spacing parity insertion for FEC (Forward Error Correction) codewords
US8239726B2 (en) Apparatuses and methods for encoding and decoding
JP4011583B2 (en) Data recording / reproducing system and method
Spinner et al. A decoder with soft decoding capability for high-rate generalized concatenated codes with applications in non-volatile flash memories
JP4099844B2 (en) Memory device

Legal Events

Date Code Title Description
AS Assignment

Owner name: MEDIATEK INC., TAIWAN

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WU, CHAO-YI;LIN, LI-LIEN;WU, CHIEN-CHUNG;AND OTHERS;REEL/FRAME:023698/0868

Effective date: 20091221

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION