US 20030101405 A1 Abstract An ECC circuit (
103) is located between I/O terminals (104 _{0}-104 _{7}) and page buffers (102 _{0}-102 _{7}). The ECC circuit (103) includes a coder configured to generate check bits (ECC) for error correcting and attach the check bits to data to be written into a plurality of memory cell areas (101 _{0}-101 _{7}), and a decoder configured to employ the generated check bits (ECC) for error correcting the data read out from the memory cell areas (101 _{0}-101 _{7}). The ECC circuit (103) allocates a set of 40 check bits (ECC) to an information bit length of 4224=528×8 to execute coding and decoding by parallel processing 8-bit data, where data of 528 bits is defined as a unit to be written into and read out from one memory cell area (101 j). Claims(15) 1. A semiconductor memory device, comprising:
a plurality of memory cell areas, each of which includes a plurality of memory cells arrayed in a matrix and has a data I/O portion; a plurality of buffers, each of which is located on said data I/O portion at each memory cell area to temporarily store data to be written into said memory cell area and data read out from said memory cell area; a plurality of I/O terminals, each of which is configured to receive said data to be written into said memory cell area from external and output said data read out from said memory cell area to external; and an error correction circuit located between said plurality of I/O terminals and said plurality of buffers, said error correction circuit includes a coder configured to generate check bits for error correcting and to attach said check bits to said data to be written into said memory cell area and a decoder configured to process for error correcting said data read out from said memory cell area with said generated check bits, said error correction circuit operates to allocate a set of check bits to an information bit length of M×N (N denotes an integer of two or more) to execute at least one of coding and decoding by parallel processing N-bit data, where M denotes the number of bits in a unit of data to be written into and read out from said memory cell area. 2. The semiconductor memory device according to 3. The semiconductor memory device according to said sift register is configured to receive N-bit parallel data with different degrees in turn, multiply each data by XN per shift operation, and internally generate said set of check bits through M shift operations.
4. The semiconductor memory device according to a syndrome computational circuit configured to compute a syndrome from said information bits and said check bits input; and an error position detector having a first arithmetic section configured to compute a term in an error position polynomial from said computed syndrome, and a second arithmetic section configured to compute an error position polynomial from said computed term in said error position polynomial and detect an error position from said computed error position polynomial, wherein said syndrome computational circuit includes a shift register and arithmetic circuits configured to generate a cyclic code as said syndrome based on a minimal polynomial M(X) of an α operator determined by an information bit length of k=M×N, a code length of n, and a correction bit length of t, said sift register configured to receive N-bit parallel data with different degrees in turn, multiply each data by X ^{KN }(K denotes an integer) per shift operation, and internally generate said syndrome from all said information bits and said check bits input. 5. The semiconductor memory device according to 6. The semiconductor memory device according to 7. The semiconductor memory device according to N locators each provided to each bit of said N-bit data; and X ^{L }arithmetic circuits each interposed between adjacent locators to multiply data to an adjacent locator by X^{L }(L denotes an integer). 8. The semiconductor memory device according to 9. The semiconductor memory device according to 10. The semiconductor memory device according to a syndrome computational circuit configured to compute a syndrome from said information bits and said check bits input; and an error position detector having a first arithmetic section configured to compute a term in an error position polynomial from said computed syndrome, and a second arithmetic section configured to compute an error position polynomial from said computed term in said error position polynomial and detect an error position from said computed error position polynomial, wherein said second arithmetic section includes a shift register and arithmetic circuits configured to generate a cyclic code as said term in said error position polynomial based on a minimal polynomial M(X) of an a operator determined by an information bit length of k=M×N, a code length of n, and a correction bit length of t, said sift register configured to perform shift operations in synchronization with data output from said memory area, multiply each data by X ^{K }(K denotes an integer), and detect error correcting positions in turn. 11. The semiconductor memory device according to 10, wherein said coder, said syndrome computational circuit and said first arithmetic section are configured by switching registers and arithmetic circuits contained in an arithmetic logic circuit. 12. The semiconductor memory device according to 13. The semiconductor memory device according to N locators each provided to each bit of said N-bit data; and X ^{L }arithmetic circuits each interposed between adjacent locators to multiply data to an adjacent locator by X^{L }(L denotes an integer). 14. The semiconductor memory device according to 15. The semiconductor memory device according to Description [0001] This application is based on and claims the benefit of prior Japanese Patent Application No. 2001-356571, filed on Nov. 21, 2001, the entire contents of which are incorporated herein by reference. [0002] 1. Field of the Invention [0003] The present invention relates to a semiconductor memory device such as a NAND-type flash memory, more particularly to a semiconductor memory device having an on-chip error correcting function. [0004] 2. Description of the Related Art [0005] The NAND-type flash memory is known to deteriorate its cell property through repeated operations of rewriting, and to vary data after it is left for a long time. In order to improve the reliability of the NAND-type flash memory, such a semiconductor memory that contains an ECC (Error Correcting Code) circuit mounted on-chip for error detection and correction has been proposed in the art (for example, Japanese Patent Application Laid-Open Nos. 2000-348497 and 2001-14888). [0006]FIG. 21 is a block diagram briefly showing an arrangement of the conventional NAND-type flash memory with ECC circuits mounted thereon. [0007] This memory comprises eight memory cell areas [0008] Each ECC circuit [0009] Operations of coding and decoding in the conventional ECC circuit [0010] The number of check bits in BCH code for correcting 2-bit errors and detecting 3-bit errors is equal to 21 bits for 528 information bits. For convenience of description, a simple error detection and correction system is described, which employs BCH code capable of correcting 2-bit errors and detecting 3-bit errors for the number of information bits, k=7, a code length, n=15, and the number of check bits, t=2. [0011] In this case, a generating polynomial required for coding and decoding is given below as it is generally known:
[0012] (1) Coder [0013]FIG. 22 is a block diagram showing a coder [0014] An operation for moving the shift register a [0015] where a a [0016] From the generating polynomial G(x) given by Expression (1), a relation of X a [0017] This corresponds to shifting each bit; storing the value a [0018] On coding, the switches SW [0019] (2) Decoder [0020] A decoder is described next. The decoder comprises syndrome computational circuits and an error position detector. In the case of 2-bit error detection, two syndromes S [0021] Based on the minimal polynomial M a [0022] where a a [0023] From the α minimal polynomial M a [0024] This corresponds to shifting each bit; storing the value a [0025] Similar to the S a [0026] From the α minimal polynomial M a [0027] This corresponds to shifting each bit; storing the value a [0028]FIG. 24 is a flowchart showing an algorithm for decoding. The S [0029] The position of the error bit can be found by assigning Z=α σ( [0030] An arrangement of the error position detector is shown in FIGS. 25 and 26, which is configured based on such the point. FIG. 25 shows a first arithmetic section a [0031] where a a [0032] From the α minimal polynomial M a [0033] This corresponds to shifting each bit; storing the value a [0034] The X a [0035] From the α minimal polynomial M a [0036] This corresponds to shifting each bit; storing the value a [0037] When 1-bit data I [0038] Thus, in the conventional ECC circuit that employs BCH code, one shift and computation per 1-bit input is the basic operation. The NAND-type flash memory receives parallel data input from external on a basis of 8-I/O or 16-I/O per address. Therefore, it is required to correct an error per I/O or compute 8 or 16 times during the one input. The 8 or 16-time computation during the one input needs a fast operation for this part, which can not be achieved practically because a special process is required, for example. [0039] Therefore, an ECC circuit [0040] The present invention has been made in consideration of such the problem and accordingly has an object to provide a semiconductor memory device capable of reducing the number of check bits relative to the number of information bits to improve a chip integration density. [0041] According to an aspect of the invention, a semiconductor memory device comprises a plurality of memory cell areas, each of which includes a plurality of memory cells arrayed in a matrix and has a data I/O portion; a plurality of buffers, each of which is located on the data I/O portion at each memory cell area to temporarily store data to be written into the memory cell area and data read out from the memory cell area; a plurality of I/O terminals, each of which is configured to receive the data to be written into the memory cell area from external and output the data read out from the memory cell area to external; and an error correction circuit located between the plurality of I/O terminals and the plurality of buffers, the error correction circuit includes a coder configured to generate check bits for error correcting and to attach the check bits to the data to be written into the memory cell area and a decoder configured to process for error correcting the data read out from the memory cell area with the generated check bits, the error correction circuit operates to allocate a set of check bits to an information bit length of M×N (N denotes an integer of two or more) to execute at least one of coding and decoding by parallel processing N-bit data, where M denotes the number of bits in a unit of data to be written into and read out from the memory cell area. [0042] The present invention will be more fully understood from the following detailed description with reference to the accompanying drawings, in which: [0043]FIG. 1 is a block diagram showing an arrangement of a coder for use in an ECC circuit mounted on a flash memory according to a first embodiment of the present invention; [0044]FIG. 2 is a block diagram showing an arrangement of a shift register for use in the coder; [0045]FIG. 3 is a truth table of an XOR circuit for use in the coder; [0046] FIGS. [0047]FIG. 5 is a block diagram showing a first arithmetic section contained in an error position detector for use in the decoder; [0048]FIG. 6 is a block diagram showing a second arithmetic section contained in the error position detector; [0049]FIG. 7 is a block diagram showing a NAND-type flash memory according to a second embodiment of the present invention; [0050]FIG. 8 is a circuit diagram showing an arrangement of a memory cell area in the flash memory; [0051]FIG. 9 is a block diagram showing an ECC circuit in the flash memory; [0052]FIG. 10 shows registers contained in an arithmetic logic circuit on coding in the ECC circuit; [0053]FIG. 11 is a flowchart showing an operation of coding in the coder; [0054]FIG. 12 is a timing chart on coding; [0055]FIG. 13 shows registers contained in an arithmetic logic circuit for decoding in the ECC circuit; [0056]FIG. 14 is a flowchart showing an operation of decoding; [0057]FIG. 15 is a block diagram of an error position detector in the ECC circuit; [0058]FIG. 16 is a flowchart showing an algorithm for computing each term in an error position polynomial in the error position detector; [0059]FIGS. 17A, 17B and [0060]FIG. 18 shows a second arithmetic section in the error position detector; [0061]FIG. 19 is a block diagram of another error position detector in the ECC circuit; [0062]FIGS. 20A and 20B are timing charts on decoding in the ECC circuit; [0063]FIG. 21 is a block diagram showing an arrangement of the NAND-type flash memory with conventional ECC circuits mounted thereon; [0064]FIG. 22 is a block diagram showing a coder in the conventional ECC circuit; [0065]FIGS. 23A and 23B are block diagrams showing conventional syndrome computational circuits; [0066]FIG. 24 is a flowchart showing a decoding algorithm in the conventional ECC circuit; [0067]FIG. 25 is a block diagram showing a first arithmetic section contained in an error position detector in the conventional ECC circuit; and [0068]FIG. 26 is a block diagram showing a second arithmetic section contained in the error position detector in the conventional ECC circuit. [0069] Embodiments of the present invention will be described below with reference to the drawings. [0070] (1) First Embodiment [0071] In order to provide an understanding of the present invention, 2-bit error correction is exemplified as a first embodiment with the number of information bits, k=7, a code length, n=15, and the number of correction bits, t 2. [0072] (1-1) Coder [0073] When input data I (0+I [0074] When next input data I ((0+I [0075] When next input data I (((0+I [0076] Similarly, after input data, up to I (((((((0+I [0077] This expression can be altered in: ((((0+I [0078] This means that the pieces of input data I [0079] When the value of the shift register a [0080] From the generating polynomial G(x) given by Expression (1), a relation of X (a [0081]FIG. 1 is a block diagram showing a circuit arrangement of a coder [0082] The coder [0083] Based on Expression (23), the coder 52 _{6 }and storing the sum into the register D_{4}; adding the values a_{3}, a_{7 }of the registers D_{3}, D_{7 }at the XOR gate 52 _{2 }and storing the sum into the register D_{5}; adding the values a_{4}, a_{6}, a_{7 }of the registers D_{4}, D_{6}, D_{7 }at the XOR gates 52 _{3}, 52 _{6 }and storing the sum into the register D_{6}; and adding the values a_{5}, a_{6 }of the registers D_{5}, D_{6 }at the XOR gate 52 _{5 }and storing the sum into the register D_{7}. [0084] The pieces of input data (information bits) I [0085] (1-2) Decoder [0086] {circle over (1)} S [0087] In the conventional S 0×X+I [0088] After the value in the S (0×X+I [0089] Subsequently, after the value in the S ((0×X+I [0090] When the input data, up to I (((((((((((((0×X+I [0091] The expression can be altered in: (((((((0×X [0092] This means that after the value in the S [0093] When the value of the shift register a [0094] From the α minimal polynomial M [0095] a [0096]FIG. 4A is a block diagram showing a circuit arrangement of an S [0097] The S [0098] Based on Expression (30), the S [0099] The information bits I [0100] {circle over (2)} S [0101] A S 0×X [0102] After the value in the S (0×X [0103] Subsequently, after the value in the S ((0×X [0104] When the input data, up to I (((((0×X [0105] The expression can be altered in: (((((0×X [0106] This means that after the value in the S [0107] When the value of the shift register a [0108] From the α minimal polynomial M (a [0109]FIG. 4B is a block diagram showing a circuit arrangement of the S [0110] The S [0111] Based on Expression (37), the S [0112] The information bits I [0113] {circle over (3)} Error Position Detector [0114] An error position detector is described next. In the error position detector in the present embodiment, the S σ( [0115]FIGS. 5 and 6 show an arrangement of the error position detector configured based on Expression (38). [0116] The error position detector [0117] The X [0118] The X a [0119] From the α minimal polynomial M (a [0120] Based on Expression (40), the X [0121] The second arithmetic section [0122] (2) Second Embodiment [0123]FIG. 7 is a block diagram showing a NAND-type flash memory according to a second embodiment, which mounts an ECC circuit on a chip. [0124] The memory comprises eight memory cell areas [0125] Addresses and control signals, input to an I/O terminal [0126] As shown in FIG. 8, each memory cell area [0127] As shown in FIG. 8, each page buffer [0128] Therefore, in the whole memory, the data storage circuits [0129] An ECC circuit [0130]FIG. 9 is a block diagram showing the ECC circuit [0131] (2-1) Coder [0132] In the ECC circuit [0133] Similar to the first embodiment, Expression (42) can be altered in Expression (43). (((((0+I (((((0+I [0134] Expression (43) means the following. The data of 8 bits D [0135]FIG. 10 shows 40-stage registers REG B2 B30 B31 B32 B33 B34 B35 B36 B37 B38 B39 [0136]FIG. 11 is a flowchart showing an operation of coding in the ECC circuit [0137] When a data input command ( [0138] (2-2) Decoder {circle over (1)} Syndrome Computational Circuits [0139] For 3-bit error correction and 4-bit error detection, four syndromes S [0140]FIG. 13 shows 40-stage registers REG [0141] <Computation of Syndrome SO> PP0 [0142] <Computation of Syndrome S AA12=A4 (48) [0143] <Computation of Syndrome S [0144] <Computation of Syndrome S [0145] {circle over (2)} Error Position Detector (First Arithmetic Section) [0146]FIG. 14 is a flowchart showing an operation of decoding in the ECC circuit [0147] A data read command (00h) is input, then a read address (Add) from external to start reading (S [0148]FIG. 15 shows an error position detector that executes the above computations. This error position detector includes a first arithmetic section, consisting of four registers R, A, B, C of 13 bits each, and not-depicted XOR circuits, contained in the arithmetic logic circuit [0149]FIG. 16 shows an algorithm to compute the terms of the error position polynomial, σ [0150] In the present embodiment, of the code length of n=8191, the information bits of k=4224 (528×8 bits) are subjected to the error correction, while the information bits can have 8151 bits except for 41 check bits originally in a code having the code length of n=8191. As a result, the error position is shifted by 8151−4224+1=3928 bits. On reading from a column address of 0, computations are performed to multiply σ [0151]FIG. 17 is a block diagram showing the Galois arithmetic circuit [0152] 13-bit inputs A and B shown in FIG. 17A are respectively represented by: [0153] [0154] In this case, A×B can be represented by:
[0155] This circuit can be configured as shown in FIG. 17B, in which A and bi are subjected to the AND operation at an AND circuit [0156] As a result of the above operations, 13-bit registers A, B, C, D are given σ [0157] Error bit positions can be detected based on the following error position polynomial (53) in the cases of 3-bit correction and 4-bit correction as it is known. σ( [0158] When Z=α σ( [0159] As a result, the error detection can be performed by 8 bits simultaneously at every other 8 bits. In a word, of the output data of 8 I/O, the error detection is performed to the I/O 0. If an error is present, then σ=0. As a result of the computations in FIG. 16, the 13-bit registers A, B, C, D are given σ [0160] <α [0161] <α [0162]FIG. 18 is a circuit diagram showing a specific arrangement of the locator [0163] On the other hand, the data at the I/O 1 has values in σ(Z) with the term of σ [0164] <X arithmetic circuit> Y0=X12 Y1 Y2=X1 Y5=X4 Y6=X5 Y7=X6 Y8=X7 Y9=X8 Y10=X9 Y11=X10 Y12=X11 (58) [0165] <X Y0=X11 Y6=X4 Y7=X5 Y8=X6 Y9=X7 Y10=X8 Y11=X9 Y12=X10 (59) [0166] <X Y0=X10 Y7=X4 Y8=X5 Y9=X6 Y10=X7 Y11=X8 Y12=X9 (60) [0167] The data at the I/O 2 has values in c(Z) with the term of σ [0168] If there is a problem on a signal transmission time delay, the eight locators [0169]FIG. 20 is a timing chart on decoding in the ECC circuit [0170] When a data read command (00h) is input from external, followed by a read address (Add), a READY/BUSY signal is activated to start reading. First, the data of one page (528 bytes) selected by the address is read out from the memory cells MC into the page buffers [0171]FIG. 20B shows an example of computing the syndromes S [0172] As for 2-bit error correction and 3-bit error detection, the number of permissible random failures (the number of random failures at a device failure probability of 1 ppm) is naturally better in the case of 528 information bits than in the case of 4224 information bits. Table 1 shows an application to a 256 Mb NAND-type flash memory. [0173] From Table 1, the number of permissible random failures is 100 bits at 2-bit correction BCH code for 528 information bits, and only 30 bits for 4224 information bits. To the contrary, at 3-bit correction BCH code for 4224 information bits, the random failures can be permitted up to 300 bits with a necessary code as short as 40 bits. Further, at 4-bit correction BCH code for 4224 information bits, the random failures can be permitted up to 1000 bits with a necessary code as short as 53 bits effectively.
[0174] Table 2 shows chip sizes of NAND-type flash memories of 128 M-bits and 512 M-bits when no ECC circuit is mounted, compared with those when the conventional 2-bit correction ECC circuit is mounted, and those when the 2-bit correction ECC circuit of the present embodiment is mounted.
[0175] Thus, the flash memory with the conventional ECC circuit mounted thereon has an increase in chip size of 6.8% (128M) and 5.1% (512M). To the contrary, the flash memory with the ECC circuit of the present embodiment mounted thereon has an increase in chip size of 3.2% (128M) and 2.5% (512M), which is half the conventional one. [0176] As obvious from the forgoing, the information bits are generated per M-bit that is a unit for accessing each memory area in the art. To the contrary, according to the embodiments of the invention, N bits can be processed in parallel. Therefore, it is possible to allocate a set of check bits to M×N bits and reduce the number of check bits in total relative to the number of information bits. This is effective to improve a chip integration density while mounting an on-chip error correction circuit. [0177] Having described the embodiments consistent with the invention, other embodiments and variations consistent with the invention will be apparent to those skilled in the art. Therefore, the invention should not be viewed as limited to the disclosed embodiments but rather should be viewed as limited only by the spirit and scope of the appended claims. Referenced by
Classifications
Legal Events
Rotate |