Flash memory system and operating method thereof
09710327 ยท 2017-07-18
Assignee
Inventors
Cpc classification
G11C16/3418
PHYSICS
G06F11/1012
PHYSICS
H03M13/453
ELECTRICITY
G11C29/52
PHYSICS
H03M13/2963
ELECTRICITY
International classification
H03M13/00
ELECTRICITY
G11C16/34
PHYSICS
H03M13/15
ELECTRICITY
G11C11/56
PHYSICS
H03M13/29
ELECTRICITY
Abstract
An operation method of a flash memory system includes a hard decision decoding on a codeword and a soft decision decoding on an error message block. The hard decision decoding on a codeword and the codeword comprises message blocks encoded with row constituent codes and column constituent codes according to a block-wise concatenated BCH (BC-BCH) method. When the hard decision decoding fails, the error message block to which the hard decision decoding fails among a plurality of the message blocks is identified. Soft decision information corresponding to the row constituent codes and the column constituent codes of the error message block is generated and the soft decision decoding on the error message block based on the soft decision information is performed.
Claims
1. An operation method of a flash memory system having a controller and a memory device, the operation method comprising: performing hard decision decoding on a codeword, which comprises message blocks encoded with row constituent codes and column constituent codes according to a block-wise concatenated BCH (BC-BCH) method; identifying an error message block to which the hard decision decoding fails among a plurality of the message blocks, when the hard decision decoding fails; generating soft decision information corresponding to the row constituent codes and the column constituent codes of the error message block; and performing soft decision decoding on the error message block based on the soft decision information, wherein the performing of the soft decision decoding comprises: generating second extrinsic information by decoding the soft decision information and first extrinsic information corresponding to the row constituent codes of the error message block; and generating third extrinsic information by decoding the soft decision information corresponding to the column constituent codes and the second extrinsic information.
2. The operation method of claim 1, wherein the soft decision decoding includes a turbo BC-BCH code.
3. The operation method of claim 1, wherein the soft decision information is generated using a reference voltage for the error message block.
4. The operation method of claim 1, wherein the first extrinsic information includes initial extrinsic information and a default value.
5. The operation method of claim 1, wherein the generating of the second extrinsic information comprises: arranging a plurality of bits, which are obtained through a sum of the soft decision information corresponding to the row constituent code of the error message block and the first extrinsic information, in ascending order; obtaining a test pattern by selecting a predetermined number of bits having lower reliability among the plurality of the bits in ascending order of reliability of the plurality of the bits; obtaining candidate codewords by performing an XOR operation on the test pattern and the bits having lower reliability; determining a first codeword using the candidate codewords and the soft decision information; obtaining competition codewords, which do not correspond to the first codeword among the candidate codewords; determining a second codeword using the competition codewords and the soft decision information; and generating the second extrinsic information through the first codeword and the second codeword.
6. The operation method of claim 5, wherein the test pattern is obtained by selecting bits having lower reliability in ascending order of reliability of the plurality of the bits and performing chase decoding.
7. The operation method of claim 5, wherein, in the determining of the first codeword, Euclidean distances are obtained using the candidate codewords and the soft decision information and the smallest one of the Euclidean distances is selected.
8. The operation method of claim 5, wherein, in the determining of the second codeword, Euclidean distances are obtained using the competition codewords and the soft decision information and the smallest one of the Euclidean distances is selected.
9. The operation method of claim 5, wherein, in the generating of the second extrinsic information, the second extrinsic information is generated using Equation 1:
10. The operation method of claim 1, wherein the generating of the third extrinsic information comprises: arranging a plurality of bits, which are obtained through a sum of the soft decision information corresponding to the column constituent code of the error message block and the second extrinsic information, in ascending order; obtaining a test pattern by selecting a predetermined number of bits having lower reliability among the plurality of the bits in ascending order of reliability of the plurality of the bits; obtaining candidate codewords by performing an XOR operation on the test pattern and the bits having lower reliability; determining a first codeword using the candidate codewords and the soft decision information; obtaining competition codewords, which do not correspond to the first codeword among the candidate codewords; determining a second codeword using the competition codeword and the soft decision information; and obtaining the third extrinsic information through the first codeword and the second codeword.
11. The operation method of claim 10, wherein the test pattern is obtained by selecting bits having lower reliability in ascending order of reliability of the plurality of the bits and performing chase decoding.
12. The operation method of claim 10, wherein, in the determining of the first codeword, Euclidean distances are obtained using the candidate codewords and the soft decision information and the smallest one of the Euclidean distances is selected.
13. The operation method of claim 10, wherein, in the determining of the second codeword, Euclidean distances are obtained using the competition codewords and the soft decision information and the smallest one of the Euclidean distances is selected.
14. The operation method of claim 10, wherein, in the obtaining of the third extrinsic information, the third extrinsic information is obtained using Equation 2:
15. A flash memory system comprising: a controller; and a memory device, wherein the controller is configured to: perform hard decision decoding on a codeword, which comprises message blocks encoded with row constituent codes and column constituent codes according to a block-wise concatenated BCH (BC-BCH) method; identify an error message block on which the hard decision decoding fails; generate soft decision information corresponding to the row constituent codes and the column constituent codes of the error message block; and perform soft decision decoding on the error message block based on the soft decision information, wherein the controller is further configured to: generate second extrinsic information by decoding the soft decision information and first extrinsic information corresponding to the row constituent codes of the error message block; and generate third extrinsic information by decoding the soft decision information corresponding to the column constituent codes and the second extrinsic information.
16. The flash memory system of claim 15, wherein the soft decision decoding includes a turbo BC-BCH code.
17. The flash memory system of claim 15, wherein the controller is further configured to: arrange a plurality of bits, which are obtained through a sum of the soft decision information corresponding to the row constituent code of the error message block and the first extrinsic information, in ascending order; obtain a test pattern by selecting a predetermined number of bits having lower reliability among the plurality of the bits in ascending order of reliability of the plurality of the bits; obtain candidate codewords by performing an XOR operation on the test pattern and the bits having lower reliability; determine a first codeword using the candidate codewords and the soft decision information; obtain competition codewords that do not correspond to the first codeword among the candidate codewords; determine a second codeword using the competition codewords and the soft decision information; and generate the second extrinsic information through the first codeword and the second codeword.
18. The flash memory system of claim 15, wherein the controller is further configured to: arrange a plurality of bits, which are obtained through a sum of the soft decision information corresponding to the column constituent code of the error message block and the second extrinsic information, in ascending order; obtain a test pattern by selecting a predetermined number of bits having lower reliability among the plurality of the bits in ascending order of reliability of the plurality of the bits; obtain candidate codewords by performing an XOR operation on the test pattern and the bits having lower reliability; determine a first codeword using the candidate codewords and the soft decision information; obtain competition codewords that do not correspond to the first codeword; determine a second codeword using the competition codewords and the soft decision information; and generate the third extrinsic information through the first codeword and the second codeword.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
DETAILED DESCRIPTION
(12) Various embodiments will be described below in more detail with reference to the accompanying drawings. The present invention may, however, be embodied in different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete and will fully convey the scope of the present invention to those skilled in the art. The drawings are not necessarily to scale and, in some instances, proportions may have been exaggerated to clearly illustrate features of the embodiments. Throughout the disclosure, reference numerals correspond directly to the like parts in the various figures and embodiments of the present invention. It is also noted that in this specification, connected/coupled refers to one component not only directly coupling another component but also indirectly coupling another component through an intermediate component. In addition, a singular form may include a plural form as long as it is not specifically mentioned in a sentence. In general, a flash memory device has dies coupled to one another in parallel, and the die has a plurality of memory blocks each of which is a unit of the erase operation. Each memory block has a plurality of pages, which is a unit of the program/read operations. Therefore, the error correction operation is performed per single page. The size of a single page is 1 KB for single level cells and 4 KB or 8 KB for multi-level cells, generally.
(13) Flash memory devices as a storage device need high reliability, and thus should operate with very low error rates when working with an error correction code. Also, flash memory devices require limited delay times and complexity of encoders and decoders therein, for fast program and read speeds. Additionally, the flash memory devices have a limited ratio of parity bits to the stored data due to limited storage space for extra data, other than the user data, for storage efficiency. Therefore, as well as high coding rates, for example over 0.9, the error correction code for the flash memory devices should have no error floor or the lowest error floor that may be solved with a short delay time and low complexity.
(14) The block-wise concatenated BCH (BC-BCH) code that may be applied to an embodiment of the present invention may include a block as a unit. When the BC-BCH code does not include the block but a bit as a unit for better error correction performance than the conventional BCH code, the BC-BCH code may include a plurality of short length BCH constituent codes.
(15) The short length BCH constituent code has very low error correction performance that may correct 1 or 2 bits due to the high coding rate required for the flash memory device. Therefore, when a flash memory device is only capable of performing hard decision decoding, error correction failure may rarely occur in the short length BCH constituent code of the BC-BCH code including the bit as a unit, and thus the BC-BCH code including the bit as a unit may have lower error correction performance. In this case, the BC-BCH code including the bit as a unit may have improved error correction performance when using additional information. However, there may be longer delay times and higher complexity of the decoding because additional information is required for every decoding process. The BC-BCH code that may be applied to an embodiment of the present invention is suitable for a flash memory device. The BC-BCH code may include a small number of long length BCH constituent codes. The long length BCH constituent code has error correction performance for the high coding rate required for flash memory devices. For example, the BC-BCH code may include a long length BCH constituent code capable of correcting 10-bit and 14-bit errors. Therefore, when a flash memory device is only capable of performing hard decision decoding, error correction may rarely occur in the long length BCH constituent code of the BC-BCH code, and thus the BC-BCH code including the long length BCH constituent code may have higher error correction performance than the BC-BCH code including the bit as a unit.
(16) The BC-BCH code may fail in decoding by an error block because the BC-BCH code includes the block as a unit. For example, there may be an error floor due to the lower bound. The error floor may occur due to a small number of error blocks.
(17) Hereinafter, embodiments of the present invention will be described with reference to accompanying drawings.
(18)
(19) Referring to
(20) For example, the host 100 may include a portable electronic device such as a mobile phone, an MP3 player, a laptop computer, and so forth, and an electronic device such as a desktop computer, a game player, a TV, a projector, and so forth.
(21) The memory system 110 may operate in response to a request of the host 100, and may store data to be accessed by the host 100. That is, the memory system 110 may serve as a main storage device or an auxiliary storage device. The memory system 110 may be implemented with one of various storage devices according to a host interface protocol coupled to the host 100. For example, the memory system 110 may be implemented with one of the various storage devices such as a solid-state drive (SSD), a multimedia card (MMC), an embedded MMC (eMMC), a reduced-size MMC (RS-MMC), and a micro-size version of MMC (MMCmicro), a secure digital (SD) card, a mini secure digital (miniSD) card, a micro secure digital (microSD) card, an universal storage bus (USB) storage device, a universal flash storage (UFS) device, compact flash (CF) card, a smart media (SM) card, a memory stick, and so forth.
(22) A memory system 110 may include a semiconductor memory device 200 for storing data to be accessed by the host 100, and a memory controller 120 for controlling data storage to the semiconductor memory device 200. The semiconductor memory device 200 may be implemented with a volatile memory device such as a dynamic random access memory (DRAM) and a static RAM (SRAM), and a nonvolatile memory device such as a read only memory (ROM), a mask ROM (MROM), a programmable ROM (PROM), an erasable and programmable ROM (EPROM), an electrically erasable and programmable ROM (EEPROM), a ferroelectric ROM (FRAM), a phase change RAM (PRAM), a magnetic RAM (MRAM), a resistive RAM (RRAM) and a flash memory.
(23) The memory controller 120 and the semiconductor memory device 200 may be integrated as a single semiconductor device. For example, the memory controller 120 and the semiconductor memory device 200 may be integrated as a single semiconductor device to form an SSD. The SSD may include a storage device for storing data in a semiconductor memory. When the memory system 110 is used as the SSD, operation speed of the host 100 coupled to the memory system 110 may be improved.
(24) The memory controller 120 and the semiconductor memory device 200 may be integrated as a single semiconductor device to configure a memory card. For example, the memory controller 120 and the semiconductor memory device 200 may be integrated as a single semiconductor device to form a memory card such as a PC card of personal computer memory card international association (PCMCIA), a compact flash (CF) card, a smart media (SM) card, a memory stick, a multimedia card (MMC), a reduced-size multimedia card (RS-MMC), and a micro-size version of MMC (MMCmicro), a secure digital (SD) card, a mini secure digital (miniSD) card, a micro secure digital (microSD) card, a secure digital high capacity (SDHC), and a universal flash storage (UFS).
(25) For another example, the memory system 110 may be provided as one of various elements forming an electronic device, such as a computer, an ultra-mobile PC (UMPC), a workstation, a net-book computer, a personal digital assistants (PDA), a portable computer, a web tablet PC, a wireless phone, a mobile phone, a smart phone, an e-book reader, a portable multimedia player (PMP), a portable game device, a navigation device, a black box, a digital camera, a digital multimedia broadcasting (DMB) player, a 3-dimensional television, a smart television, a digital audio recorder, a digital audio player, a digital picture recorder, a digital picture player, a digital video recorder, a digital video player, a storage device of a data center, a device capable of receiving and transmitting information in a wireless environment, one of electronic devices for a home network, one of electronic devices for a computer network, one of electronic devices for a telematics network, a radio-frequency identification (RFID) device, or elements of devices for a computing system.
(26) The semiconductor memory device 200 may retain stored data even when power is blocked. The semiconductor memory device 200 may store data provided from the host 100 through the write operation, and may provide stored data to the host 100 through the read operation.
(27) The semiconductor memory device 200 may include a memory block 210, a control circuit 220, a voltage supply unit 230, a row decoder 240, a page buffer 250, and a column decoder 260. The semiconductor memory device 200 may be the nonvolatile memory device, for example the flash memory device. The semiconductor memory device 200 may have a 3-dimensional stacked structure.
(28) The memory block 210 may include a plurality of pages, each of which includes a plurality of memory cells coupled to a plurality of word lines.
(29) The control circuit 220 may control various operations related to program, erase, and read operations of the semiconductor memory device 200.
(30) The voltage supply unit 230 may provide word lines voltages, for example, a program voltage, a read voltage, and a pass voltage, to the respective word lines according to an operation mode, and may provide a voltage to be supplied to a bulk, for example, a well region, in which the memory cells are formed. A voltage generating operation of the voltage supply circuit 230 may be performed under control of the control logic 220. The voltage supply unit 230 may generate a plurality of variable read voltages for generation of a plurality of read data.
(31) The row decoder 240 may select one of the memory blocks or sectors of the memory cell array 210, and may select one among the word lines of the selected memory block under the control of the control logic 220. The row decoder 240 may provide the word line voltage generated from the voltage supply circuit 230 to selected word lines or non-selected word lines under the control of the control logic 220.
(32) During the program operation, the page buffer 250 may operate as a write driver for driving the bit lines according to data to be stored in the memory block 210. During the program operation, the page buffer 250 may receive the data to be written in the memory block 210 from a buffer (not illustrated), and may drive the bit lines according to the input data. The page buffer 250 may be formed of a plurality of page buffers (PB) 251 corresponding to the columns (or the bit lines) or column pairs (or bit line pairs), respectively. A plurality of latches may be included in each of the plural page buffers 251.
(33) The memory controller 120 of the memory system 110 may control the semiconductor memory device 200 in response to a request from the host 100. For example, the memory controller 120 may provide data read from the semiconductor memory device 200 to the host 100, and may store data from the host 100 into the semiconductor memory device 200. To this end, the memory controller 120 may control the read, write, program and erase operations of the semiconductor memory device 200.
(34) The memory controller 120 may include a host interface unit 130, a processor 140, an error correction code (ECC) unit 160, a power management unit (PMU) 170, a NAND flash controller (NFC) 180, and a memory 190.
(35) The host interface 140 may process a command and data from the host 100 and may communicate with a host through one or more of various interface protocols such as a universal serial bus (USB), a multi-media card (MMC), a peripheral component interconnect express (PCI-E), a small computer system interface (SCSI), a serial-attached SCSI (SAS), a serial advanced technology attachment (SATA), a parallel advanced technology attachment (PATA), an enhanced small disk interface (ESDI), and an integrated drive electronics (IDE).
(36) The ECC unit 160 may detect and correct an error included in data read from the memory block 210 during the read operation. The ECC unit 160 may perform the ECC decoding on the data read from the memory block 210, determine whether the ECC decoding succeeds, output an instruction signal according to the determination result, and correct error bits of the read data using parity bits generated during the ECC encoding. When a number of error bits included in the read data is beyond the error-correction capability of the ECC unit 160, the ECC unit may not correct the error bits, and thus may output an error correction fail signal.
(37) The ECC unit 160 may correct an error through a coded modulation such as a low density parity check (LDPC) code, a Bose-Chaudhuri-Hocquenghem (BCH) code, a turbo code, a Reed-Solomon (RS) code, a convolution code, a recursive systematic code (RSC), a trellis-coded modulation (TCM), A block coded modulation (BCM), and so on. The ECC unit 160 may include an error correction circuit, an error correction system, and an error correction device.
(38) The PMU 170 may provide and manage power to the memory controller 120.
(39) The NFC 180 may serve as an interface between the memory controller 120 and the semiconductor memory device 200 for the memory controller 120 to control the semiconductor memory device 200 in response to the host 100. When the semiconductor memory device 200 is the flash memory device, for example, a NAND flash memory device, the NFC 180 may generate a control signal of the semiconductor memory device 200 and process data under the control of the processor 140.
(40) The memory 190, as an operational memory for the memory system 110 and the memory controller 120, may store data for driving the memory system 110 and the memory controller 120. When the memory controller 120 provides data read from the semiconductor memory device 200 to the host 100, and stores data from the host 100 into the semiconductor memory device 200 through the control of the read, write, program and erase operations of the semiconductor memory device 200 in response to the request of the host 100. Furthermore, the memory 190 may store data for the operation of the memory system 110 or the operation between the memory controller 120 and the semiconductor memory device 200.
(41) The memory 190 may be formed of the volatile memory device such as DRAM or SRAM. The memory 190 may store data for the write and read operations between the memory controller 120 and the semiconductor memory device 200, and data during the write and read operations. To this end, the memory 190 may include a program memory, a data memory, a write buffer, a read buffer, a map buffer, and so forth.
(42) Also, the memory 190 may store data for operations between the ECC unit 160 and the processor 140, such as data that is read during read operations. That is, the memory 190 may store data read from the semiconductor memory device 200. The data may include user data, parity data and status data. The status data may include information of which cycling group is applied to the memory block 210 of the semiconductor memory device 200 during the program operation.
(43) The processor 140 may perform various control operations of the memory system 110. The processor 140 may control the write operation or the read operation to the semiconductor memory device 200 in response to the write request or the read request of the host 100. The processor 140 may drive firmware referred to as the flash translation layer (FTL) for general control of the memory system 110. The processor 140 may be formed of a microprocessor or a central processing unit (CPU).
(44)
(45) Referring to
(46)
(47) The block of the BC-BCH code is different from the memory block. The block of the BC-BCH code is a bundle of bits, which are sequentially arranged in line, although the block of the BC-BCH code is illustrated as a square in
(48) The BC-BCH code may include 2 kinds of the BCH constituent codes: a row BCH constituent code and a column BCH constituent code.
(49) The row BCH constituent code may be the same as the column BCH constituent code in the parallel-concatenated BC-BCH code.
(50) In the serial-concatenated BC-BCH code, the row BCH constituent code may serve as an outer code and the column BCH constituent code may serve as an inner code. A single row BCH constituent code may share a single block of BC-BCH code with a single column BCH constituent code. A single row BCH constituent code may share a single block with each of the column BCH constituent codes. A sing column BCH constituent code may share a single block with each of the row BCH constituent codes.
(51) Both of the row BCH constituent code and the column BCH constituent code are BCH codes. The row BCH constituent code may correct t.sub.r bit-errors in n.sub.r bits having k.sub.r bits of a message to be protected and m.sub.r parity bits. The column BCH constituent code may correct t.sub.c bit-errors in n.sub.c bits having k.sub.c bits of a message to be protected and me parity bits. Hereinafter, it is assumed that the amount of data to be protected by the BC-BCH code is k, where k is a natural number.
(52) Referring to
(53) For example, the BC-BCH code may include a plurality of message blocks, each of which is n.sub.B bits, as follows. Referring to
C.sub.i=[B.sub.i,1 . . . B.sub.i,k.sub.
(54) Referring to
C.sub.j.sup.c=[B.sub.i,j . . . B.sub.k.sub.
(55) The message length of the row BCH constituent code is shown in Equation 3.
k.sub.r=k/k.sub.r.sup.B=n.sub.Bk.sub.r.sup.B[Equation 3]
(56) The code length of the row BCH constituent code is shown in Equation 4.
n.sub.r=k.sub.r+m.sub.r[Equation 4]
(57) The message length of the column BCH constituent code is shown in Equation 5.
k.sub.c=k/k.sub.c.sup.B=n.sub.Bk.sub.r.sup.B[Equation 5]
(58) The code length of the column BCH constituent code is shown in Equation 6.
n.sub.c=k.sub.c+m.sub.c[Equation 6]
(59) The code rate of the BC-BCH code is shown in Equation 7.
(60)
(61) In the above case, a single message block may include n.sub.B=k/(k.sub.r.sup.Bk.sub.c.sup.B) bits, which is the same as the other message blocks.
(62) When interleaving in order for each row BCH constituent code to have a different size of message block from the other of row BCH constituent code, while all the message blocks in a single row of BCH constituent code have the same size, the i.sup.th row BCH constituent code may include the message blocks of the i.sup.th row and the parity blocks of the i.sup.th row, as shown in Equation 1, and the j.sup.th column BCH constituent code may include the message blocks of the j.sup.th column and the parity blocks of the j.sup.th column, as shown in Equation 8.
C.sub.j.sup.C=[B.sub.1f(f)B.sub.2f(j+1) . . . B.sub.k.sub.
(63) Referring to
(64) For example, the serial-concatenated BC-BCH code may be designed so that each of the message blocks and the message-parity blocks may include n.sub.B bits as follows. Referring to
(65) Referring to
C.sub.j.sup.c=[B.sub.i,j . . . B.sub.k.sub.
(66) The j.sup.th column BCH constituent code may include the message blocks and the parity blocks of j.sup.th column as shown in Equation 10, when j=k.sub.c.sup.B.
C.sub.j.sup.c=[{B.sub.i,j,R.sub.l.sup.r} . . . {B.sub.k.sub.
(67) The length of the message of the row BCH constituent code may be represented as shown in Equation 11.
k.sub.r=k/k.sub.r.sup.B[Equation 11]
(68) The length of the code of the row BCH constituent code may be represented as shown in Equation 12.
n.sub.r=k.sub.r+m.sub.r=n.sub.Bk.sub.c.sup.B[Equation 12]
(69) The length of the message of the column BCH constituent code may be represented as shown in Equation 13.
k.sub.c=n.sub.Bk.sub.r.sup.B[Equation 13]
(70) The length of the code of the column BCH constituent code may be represented as shown in Equation 6.
(71) The code rate of the serial-concatenated BC-BCH code may be represented in Equation 7.
(72) In the serial-concatenated BC-BCH code, each of the message blocks and the message-parity blocks has the same number of bits, which is represented as n.sub.B=(k+m.sub.rk.sub.r.sup.B)/(k.sub.r.sup.Bk.sub.c.sup.B)=n.sub.r/k.sub.c.sup.B.
(73) When interleaving in order for each row BCH constituent code to have a different size of message block from the other row BCH constituent code, while all the message blocks in a single row BCH constituent code have the same size, the row BCH constituent code and the column BCH constituent code may be represented similarly to the above-described Equations 1 and 8, respectively.
(74) For convenience, the parallel-concatenated BC-BCH code will be described hereinafter. However, the description will be applied to the serial-concatenated BC-BCH code.
(75)
(76) The decoding according to the BC-BCH code is an iterative decoding by which the row BCH constituent code and the column BCH constituent code are alternately decoded. When such iterative decoding fails, new information from an iterative hard decision that is very similar to the result from the soft decision may be transferred to the decoder and the decoder may perform the chase decoding. The new information transferred to the decoder may be limited to decoding-failed parity blocks like the failed message block.
(77)
(78) The decoding error rate of the BC-BCH code is very low because the error correction capability of the BCH constituent code of the BC-BCH code is greater than the product code. Therefore, when the BCH constituent code of the BC-BCH code succeeds in decoding, all of the errors are corrected. When the decoding fails due to an error message block, since the BC-BCH code includes blocks, the decoding may be retried by reading again the message block having the error. However, as described above, re-reading the page that has been read requires higher complexity and decoding delay time. Therefore, it is important to improve the performance through the result of the hard decision decoding without re-reading the message block.
(79)
(80) Referring to
(81) At step S603, the memory controller 120 may perform the hard decision decoding on the codeword read from the memory block for the error detection and the error correction. At step S505, the memory controller 120 may determine whether the hard decision decoding is successful. The hard decision decoding may be a block-wise concatenated Bose-Chadhuri-Hocquenghem (BC-BCH) code decoding. The data may be encoded in units of message blocks including a row constituent code and a column constituent code by the BC-BCH method. The hard decision decoding may be performed to the encoded data.
(82) When the hard decision decoding is determined to be successful as a result of step S605, the memory controller 120 may transfer the codeword to which the hard decision decoding is determined to be successful to the host as data.
(83) However, the hard decision decoding may not correct the error.
(84) When the hard decision decoding is determined to fail as the result of step S605, the memory controller 120 may identify an error message block from the failure result of the hard decision decoding, and then may obtain soft decision information for the error message block at step S607. That is, the memory controller 120 may obtain the location and the number of the error blocks from the failed result of each of the row and column BCH constituent codes included in the BC-BCH code. Firstly, the memory controller 120 may identify the error message block to which the hard decision decoding fails. That is, the memory controller 120 may identify the error message block by receiving information about the failed row BCH constituent codes and column BCH constituent codes included in the BC-BCH code. Also, the memory controller 120 may obtain the soft decision information for the error message block. That is, the memory controller 120 may obtain the soft decision information by using the threshold voltage for the error message block.
(85) At step S609, the memory controller 120 may perform the soft decision decoding according to the soft decision information obtained at step S607. At step S611, the memory controller 120 may determine whether the soft decision decoding is successful. The soft decision decoding may be performed through the block turbo code. The soft decision decoding of the block turbo code may be performed based on the chase decoding. The soft decision decoding will be described with reference to
(86)
(87) Referring to
(88) The decoding circuit using the BC-BCH code may alternately perform the row decoding and the column decoding iteratively. The decoding may end according to a maximum iteration number or an iteration end condition. That is, the iteration may end when decoding performed on all of previously decoding-failed row and column BCH constituent codes repeatedly fails during current iteration. This iteration end condition represents the situation where the error is not corrected despite of the iterative decoding.
(89) The row code decoder 71 may receive 1.sup.st soft decision information corresponding to the error message block without extrinsic information, generate 1.sup.st extrinsic information through a decoding operation, and output the 1.sup.st extrinsic information to the column code decoder 73. In order for the column code decoder 73 to receive the 1.sup.st extrinsic information, the block-wise interleaver 72 should perform an operation. Therefore, the column code decoder 73 may receive the 1.sup.st extrinsic information and 2.sup.nd soft decision information from the block-wise interleaver 72 and perform a decoding operation.
(90) 2.sup.nd extrinsic information generated by the decoding operation of the column code decoder 73 may be outputted to the row code decoder 71. A de-interleaving operation of the block-wise de-interleaver 74 may arrange a sequence of information. Therefore, the row code decoder 71 may additionally perform decoding operations through the de-interleaved 2.sup.nd extrinsic information. This process may be iterated and the turbo decoder may determine decoding values of the received signal.
(91) The operation of the row code decoder 71 and the column code decoder 73 will be described with reference to
(92)
(93) Referring to
(94) The decoder 13 may receive the output value R(m) from the adder 12 and a 2.sup.nd scaling value (m), and may output the extrinsic information W(m+1).
(95) The 1.sup.st and 2.sup.nd scaling values (m) and (m) may be provided to reduce effects caused by the variance of the extrinsic information of the previous decoding, and may have values of 0 and 1.
(96) The variance of the extrinsic information W(m+1) that is the output of the decoder 13 may have a great value at a 1.sup.st decoding and may have smaller value as the decoding iterates. The 1.sup.st and 2.sup.nd scaling values (m) and (m) may be provided to reduce effects of the extrinsic information at earlier decoding stages where reliability of the extrinsic information is low. That is, the 1.sup.st and 2.sup.nd scaling values (m) and (m) may be small at the earlier iteration stage and may become greater because the reliability of the extrinsic information becomes greater as the decoding iterates.
(97)
(98) Referring to
(99) At step S903, based on the chase decoding, np bits having lower reliability may be selected among the bits b.sub.n having the reliability and arranged in ascending order, the selected np bits having lower reliability are flipped by the 2.sup.np cases, and 2.sup.np test patterns may be obtained. The np bits having lower reliability may be represented by Equation 14.
(100)
(101) The d.sub.min represents the hamming distance between the BCH constituent codes.
(102) At step S905, 2.sup.np codewords of the candidate codeword group may be generated through the exclusive OR (XOR) operation between each of the 2.sup.np test patterns and the np bits having lower reliability.
(103) At step S907, errors may be corrected through the decoding.
(104) At step S909, the Euclidean distances between the 2.sup.np codewords of the candidate codeword group obtained at step S905 and the soft decision information R may be calculated and a 1.sup.st codeword D with the shortest Euclidean distance may be determined among the Euclidean distances between the 2.sup.np codewords of the candidate codeword group and the soft decision information R.
(105) At step S911, a competition codeword group may be obtained. The competition codeword group may include one or more codewords among the 2.sup.np codewords of the candidate codeword group, an i.sup.th bit of which is different from i.sup.th bit of the 1.sup.st codeword D. That is, when the extrinsic information of the i.sup.th bit included in the 2.sup.np codewords of the candidate codeword group is to be generated, the i.sup.th bit included in the 2.sup.np codewords of the candidate codeword group and the i.sup.th bit of the 1.sup.st codeword D may be compared and one or more codewords among the 2.sup.np codewords of the candidate codeword group, the i.sup.th bit of which is different from the i.sup.th bit of the 1.sup.st codeword D, may be obtained as the competition codeword group.
(106) At step S913, the Euclidean distances between the codewords of the competition codeword group obtained at step S911 and the soft decision information R may be calculated and a 2.sup.nd codeword C that had the shortest Euclidean distance may be determined among the Euclidean distances between the codewords of the competition codeword group and the soft decision information R.
(107) At step S915, the extrinsic information Wi may be obtained through the 1.sup.st codeword D, the 2.sup.nd codeword C, and Equation 15.
(108)
(109) R of Equation 15 represents the soft decision information for the row BCH constituent code or the column BCH constituent code of the error message block.
(110) When the 2.sup.nd codeword C does not exist, experimental values according to the number of the iterative decoding may be obtained as the extrinsic information Wi.
(111) The decoder 13 may perform additional decoding operations by inputting the obtained extrinsic information Wi to the row code decoder 71 or the column code decoder 73. After such operation iterates a predetermined number times, the turbo decoder may determine the decoded value for the received signal.
(112) Referring back to
(113) When the soft decision decoding is determined to fail as the result of step S611, the read operation from the memory block 210 may be finally determined to fall and the memory controller 120 may output an error decoding failure signal to the host at step S613.
(114)
(115) Referring to
(116) Legends of BC-BCH, Turbo BC-BCH 3reads, and Turbo BC-BCH soft represents the performances of the BC-BCH codes utilizing the hard decision decoding, three readings of the reference voltage, and the soft decision decoding, respectively. The BC-BCH code includes 38 row BCH constituent code and 38 column BCH constituent code, and has (913, 863) of parameters. Each code has 5 of the error correction capacity.
(117) The LDPC code is designed to have 0.892 of the coding rate according to the array LDPC method. Considering the decoder complexity, it is assumed that the LDPC code has a 1 KB message. That is,
(118) Referring to
(119) While the present invention has been described with respect to the specific embodiments, it will be apparent to those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the invention as defined in the following claims.