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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support 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
- This application claims the benefit of U.S. Provisional Application No. 61/163,951, filed on Mar. 27, 2009 and incorporated herein by reference.
- 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.
- 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.
-
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 inFIG. 4 . - 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. Theexemplary storage controller 100 includes, but is not limited to, asoft encoder 110, acontrol circuit 120, and asoft decoder 130. It should be noted that only the elements pertinent to the present invention are shown inFIG. 1 for simplicity and clarity. In an actual implementation, thestorage controller 100 may include other elements, such as a data buffer. Thestorage controller 100 is used for controlling data access of astorage device 102, and communicates with ahost 106 via ahost interface 104. By way of example, not limitation, thestorage device 102 is a flash memory device, such as a NAND flash application. When thestorage controller 100 receives a host output D1 from thehost 106 via thehost interface 104, thesoft 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, thesoft 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 thesoft encoder 110 in theexemplary 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 thesoft encoder 110 and thestorage device 102, and is configured to record data into thestorage device 102 according to the encoded data D1′ generated from thesoft encoder 110. In one implementation, thecontrol circuit 120 may directly store the encoded data D1′ into thestorage device 102 to accomplish the write operation. In another implementation, thecontrol circuit 120 further processes the encoded data D1′, and then stores a processing result of the encoded data D1′ into thestorage device 102 to accomplish the write operation. For example, thecontrol 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 thestorage device 102. - With regard to the read operation, the
control circuit 120 reads data from thestorage device 102 to obtain readout data E1. For example, in a case where thecontrol circuit 120 directly stores the encoded data D1′ generated from thesoft encoder 110 into thestorage device 102 to accomplish the write operation, the data read from thestorage device 102 are representative of the encoded data D1′. Therefore, thecontrol circuit 120 directly obtains the readout data E1 from the data read from thestorage device 102. However, in another case where thecontrol 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., thecontrol 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 thestorage device 102 are representative of a specific signal processing result of the encoded data D1′ rather than the encoded data D1′. Therefore, thecontrol circuit 120 applies an inverse signal processing operation (e.g., a bit deinterleaving operation) upon the data read from thestorage 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 thesoft encoder 110 is an LDPC encoder, the readout data E1 include LDPC codewords, and thesoft decoder 130 is an LDPC decoder which decodes the LDPC codewords of the readout data E1 to generate the decoded data E1′; when thesoft encoder 110 is a BTC encoder, the readout data E1 include BTC codewords, and thesoft decoder 130 is a BTC decoder which decodes the BTC codewords of the readout data E1 to generate the decoded data E1′; and when thesoft encoder 110 is a CTC encoder, the readout data E1 include CTC codewords, and thesoft 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, thecontrol circuit 120 transmits a host input E1″ to thehost 106 via thehost 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 thestorage device 102 to thecontrol circuit 120 carries soft information read from thestorage 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 thestorage device 102, thecontrol 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’ inFIG. 2 means signal-to-noise ratio. - In view of above, an exemplary storage control method employed by the
storage controller 100 shown inFIG. 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 thestorage controller 100 shown inFIG. 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 thestorage 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 inFIG. 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. Theexemplary storage controller 300 includes, but is not limited to, asoft encoder 310, ahard encoder 320, acontrol circuit 330, asoft decoder 340, and ahard decoder 350. It should be noted that only the elements pertinent to the present invention are shown inFIG. 3 for simplicity and clarity. In an actual implementation, thestorage controller 300 may include other elements, such as a data buffer. - The
storage controller 300 is used for controlling data access of astorage device 302, and communicates with ahost 306 via ahost interface 304. By way of example, not limitation, thestorage device 302 is a flash memory device, such as a NAND flash application. When thestorage controller 300 receives a host output A1 from thehost 306 via thehost interface 304, thehard 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, thehard 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 thehard encoder 320 in theexemplary storage controller 300. Thecontrol circuit 330 is coupled to thehard encoder 320 and thesoft encoder 310, and is configured to generate input data A2 for thesoft 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, thecontrol circuit 330 may apply particular signal processing to the encoded data A1′ prior to generating the input data A2 for thesoft 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, thesoft 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 thesoft encoder 310 in theexemplary storage controller 300. Thecontrol circuit 330 is coupled to thesoft encoder 310 and thestorage device 302, and is configured to record data into thestorage device 302 according to the encoded data A2′ generated from thesoft encoder 310. In one implementation, thecontrol circuit 330 may directly store the encoded data A2′ into thestorage device 302 to accomplish the write operation. In another implementation, thecontrol circuit 330 further processes the encoded data A2′, and then stored a processing result of the encoded data A2′ into thestorage device 302 to accomplish the write operation. For example, thecontrol 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 thestorage device 302. - With regard to the read operation, the
control circuit 330 reads data from thestorage device 302 to obtain readout data B1. For example, in a case where thecontrol circuit 330 directly stores the encoded data A2′ generated from thesoft encoder 310 into thestorage device 302 to accomplish the write operation, the data read from thestorage device 302 are representative of the encoded data A2′. Therefore, thecontrol circuit 330 directly obtains the readout data B1 from the data read from thestorage device 302. However, in another case where thecontrol 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., thecontrol 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 thestorage device 302 are representative of a specific signal processing result of the encoded data A2′ rather than the encoded data A2′. Therefore, thecontrol circuit 330 applies an inverse signal processing operation (e.g., a bit deinterleaving operation) upon the data read from thestorage 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. Thesoft decoder 340 is used for performing a soft decoding operation upon the readout data B1 to generate decoded data B1′. For example, when thesoft encoder 310 is an LDPC encoder, the readout data B1 include LDPC codewords, and thesoft decoder 340 is an LDPC decoder which decodes the LDPC codewords of the readout data B1 to derive the decoded data B1′; when thesoft encoder 310 is a BTC encoder, the readout data B1 include BTC codewords, and thesoft decoder 340 is a BTC decoder which decodes the BTC codewords of the readout data B1 to derive the decoded data B1′; and when thesoft encoder 310 is a CTC encoder, the readout data B1 include CTC codewords, and thesoft 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 thehard 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, thecontrol circuit 330 may apply particular signal processing to the decoded data B1′ prior to generating the input data B2 to thehard 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 thehard encoder 320 is an RS encoder, the input data B2 include RS codewords, and thehard decoder 350 is an RS decoder which decodes the RS codewords of the input data B2 to generate the decoded data B2′; and when thehard encoder 320 is a BCH encoder, the input data B2 include BCH codewords, and thehard 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, thecontrol circuit 330 transmits a host input B2″ to thehost 306 via thehost 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 thestorage device 302 to thecontrol circuit 330 carries soft information read from thestorage 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 thestorage device 302, thecontrol 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 inFIG. 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 thestorage controller 300 shown inFIG. 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 thestorage controller 300, further description is omitted here for brevity. -
FIG. 4 is a block diagram illustrating anexemplary system 400 having astorage controller 401 included therein. Theexemplary system 400 includes thestorage controller 401, a storage device (e.g., a NAND flash) 402, ahost interface 404, and ahost 406. Thestorage controller 401 is used for controlling data access of thestorage device 402, and communicates with thehost 406 via thehost interface 404. Thestorage 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, acontrol 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 adata buffer 460 for buffering data processed/generated in thestorage controller 401. As can be seen fromFIG. 3 , the controller architecture of thestorage controller 401 shown inFIG. 4 is based on that of thestorage controller 300. As a person skilled in the art can readily understand details of thestorage controller 401 after reading above paragraphs directed to thestorage 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 thestorage device 402 is equipped with analog-to-digital conversion (A/D) capability, the soft information generated from thestorage device 402 is carried by the multi-level signal generated from an analog-to-digital converter (ADC) 470 implemented in thestorage device 402. However, if theADC 470 is implemented in thecontrol circuit 430 rather than thestorage device 402, the soft information generated from thestorage device 402 is carried by the analog signal, where theADC 470 in thecontrol circuit 430 will convert the analog signal into a corresponding digital signal. - In a case where the
soft encoder 410 is an LDPC encoder, thehard encoder 420 is a BCH encoder, thesoft decoder 440 is an LDPC decoder, thehard decoder 450 is a BCH decoder, and thecontrol circuit 430 is also configured for performing bit interleaving, bit deinterleaving and analog-to-digital conversion, the control and data flow of thesystem 400 is shown inFIG. 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 - 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.
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)
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)
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)
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)
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 |
-
2009
- 2009-12-23 US US12/646,936 patent/US20100251076A1/en not_active Abandoned
- 2009-12-23 US US12/645,490 patent/US8418021B2/en active Active
-
2010
- 2010-03-04 CN CN201010117662.9A patent/CN101950586B/en active Active
- 2010-03-08 TW TW099106598A patent/TWI464744B/en active
- 2010-03-11 TW TW099107125A patent/TW201035991A/en unknown
Patent Citations (22)
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)
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 |