Semiconductor device and semiconductor storage device

文档序号:9882 发布日期:2021-09-17 浏览:47次 中文

1. A semiconductor device includes:

a 1 st decoding circuit for performing 1 st decoding on 1 st frame data of a 1 st direction of the product code frame;

a 2 nd decoding circuit that performs 2 nd decoding on 2 nd frame data of a 2 nd direction of the product code frame;

a 1 st storage area for storing a syndrome generated for the 1 st frame data decoded by the 1 st decoding circuit;

a 2 nd storage area for storing the syndrome generated for the 1 st frame data of which the 1 st decoding is successful in the 1 st decoding circuit; and

a 3 rd storage area for storing the 1 st frame data in which the 1 st decoding failed in the 1 st decoding as a decoding correction disabled frame data,

the semiconductor device executes a frame collection process of collecting the decoding correction disabled frame data and an iterative correction process of performing the 2 nd decoding on the decoding correction disabled frame data collected in the frame collection process,

in the frame collection processing, the 1 st decoding is performed on the 1 st frame data, and when the 1 st decoding is successful, the syndrome is generated and stored in the 2 nd storage area for the 1 st frame data for which the 1 st decoding is successful, and the syndrome generated for the 1 st frame data is stored in the 1 st storage area regardless of whether the 1 st decoding is successful or failed,

in the iterative correction processing, data correction based on the 2 nd decoding is performed using the syndrome of the 1 st storage region for the decoded correction disabled frame data, and the 1 st decoding is performed for the decoded correction disabled frame data corrected by the data correction, when the 1 st decoding for the decoded correction disabled frame data succeeds, the decoded correction disabled frame data of the 3 rd storage region is updated, and the syndrome generation and updating of the 1 st storage region and the 2 nd storage region for the decoded correction disabled frame data are performed,

when the frame collection processing is performed after the repeated correction processing, the data of the 2 nd storage area is copied to the 1 st storage area.

2. The semiconductor device as set forth in claim 1,

the 1 st decoding performs error correction in units of bits,

the 2 nd decoding performs error correction in symbol units.

3. The semiconductor device as set forth in claim 2,

the 1 st decoding is LDPC decoding that performs error correction in units of the bits, that is, low density parity check decoding.

4. The semiconductor device as set forth in claim 2,

the 2 nd decoding is reed-solomon decoding for performing error correction in units of the symbols.

5. The semiconductor device as set forth in claim 4,

the syndromes held in the 1 st storage area and the 2 nd storage area are syndromes of the reed-solomon decoding.

6. The semiconductor device as set forth in claim 1,

further comprising an interface circuit for reading data from a storage device in which said product code frame is stored,

the 1 st decoding circuit and the 2 nd decoding circuit perform the 1 st decoding and the 2 nd decoding, respectively, on the product code frame read from the storage device via the interface circuit.

7. A kind of semiconductor storage device is disclosed,

comprising the semiconductor device of claim 6 and the storage device of claim 6.

8. A semiconductor device includes:

a 1 st decoding circuit for performing 1 st decoding on 1 st frame data of a 1 st direction of the product code frame;

a 2 nd decoding circuit that performs 2 nd decoding on 2 nd frame data of a 2 nd direction of the product code frame;

a 1 st storage area for storing a syndrome generated for the 1 st frame data decoded by the 1 st decoding circuit; and

a 3 rd storage area for storing the 1 st frame data in which the 1 st decoding failed in the 1 st decoding as a decoding correction disabled frame data,

the semiconductor device executes a frame collection process of collecting the decoding correction disabled frame data and an iterative correction process of performing the 2 nd decoding on the decoding correction disabled frame data collected in the frame collection process,

in the frame collection process, the 1 st decoding is performed on the 1 st frame data, the syndrome generated for the 1 st frame data is saved to the 1 st storage area regardless of whether the 1 st decoding succeeds or fails,

in the iterative correction processing, data correction based on the 2 nd decoding is performed using the syndrome of the 1 st storage region for the decoded correction disabled frame data, the 1 st decoding is performed for the decoded correction disabled frame data corrected by the data correction, when the 1 st decoding for the decoded correction disabled frame data succeeds, the decoded correction disabled frame data of the 3 rd storage region is updated, and the syndrome generation for the decoded correction disabled frame data is performed, and the 1 st storage region is updated,

when the frame collection processing is performed after the iterative correction processing, a syndrome generated for the decoding correction disabled frame data for which the 1 st decoding has failed is subtracted from the syndrome stored in the 1 st storage area, and the 1 st storage area is updated.

9. The semiconductor device as set forth in claim 8,

the 1 st decoding performs error correction in units of bits,

the 2 nd decoding performs error correction in symbol units.

10. The semiconductor device as set forth in claim 9,

the 1 st decoding is LDPC decoding that performs error correction in units of the bits, that is, low density parity check decoding.

11. The semiconductor device as set forth in claim 9,

the 2 nd decoding is reed-solomon decoding for performing error correction in units of the symbols.

12. The semiconductor device as set forth in claim 11,

the syndrome held by the 1 st storage area is a syndrome of the reed-solomon decoding.

13. The semiconductor device as set forth in claim 8,

further having an interface circuit for reading data from a storage device in which said product code frame is stored,

the 1 st decoding circuit and the 2 nd decoding circuit perform the 1 st decoding and the 2 nd decoding, respectively, on the product code frame read from the storage device via the interface circuit.

14. A kind of semiconductor storage device is disclosed,

comprising the semiconductor device of claim 13 and the storage device of claim 13.

Background

In some cases, an error correction circuit is mounted in a semiconductor storage device or the like. An error correction circuit using a product code frame (product code frame) to improve the error correction capability is also utilized, but higher error correction capability is being pursued.

Disclosure of Invention

Embodiments provide a semiconductor device and a semiconductor storage device with improved error correction capability.

A semiconductor device of an embodiment includes a 1 st decoding circuit for performing 1 st decoding on 1 st frame data in a 1 st direction of a product code frame, a 2 nd decoding circuit for performing 2 nd decoding on 2 nd frame data in a 2 nd direction of the product code frame, a 1 st storage area for storing a syndrome generated with respect to the 1 st frame data decoded by the 1 st decoding circuit, a 2 nd storage area for storing the syndrome generated with respect to the 1 st frame data successfully decoded by the 1 st decoding circuit, a 3 rd storage area for storing the 1 st frame data failed in the 1 st decoding as decoding correction disabled frame data, wherein the semiconductor device performs a frame collection process for collecting the decoding correction disabled frame data, and a repetition correction process for performing the 2 nd decoding on the decoding correction disabled frame data collected in the frame collection process, in the frame collection processing, the 1 st decoding is performed on the 1 st frame data, and when the 1 st decoding is successful, the syndrome is generated and stored in the 2 nd storage area for the 1 st frame data that was successful in the 1 st decoding, and the syndrome generated for the 1 st frame data is stored in the 1 st storage area regardless of success or failure of the 1 st decoding, in the iterative correction processing, the syndrome in the 1 st storage area is used for the decoding correction disabled frame data to perform data correction based on the 2 nd decoding, the 1 st decoding is performed on the decoding correction disabled frame data corrected by the data correction, and when the 1 st decoding is successful for the decoding correction disabled frame data, the decoding correction disabled frame data in the 3 rd storage area is updated, and performing syndrome generation for the frame data which cannot be corrected by decoding, updating the 1 st storage area and the 2 nd storage area, and copying data of the 2 nd storage area to the 1 st storage area when the frame collection processing is performed after the repeated correction processing.

Drawings

Fig. 1 is a block diagram showing an example of the configuration of a memory system according to the first embodiment.

Fig. 2 is a block diagram showing an example of the configuration of the nonvolatile memory according to the first embodiment.

Fig. 3 is a diagram showing an example of the configuration of a block of the NAND memory cell array having a three-dimensional structure according to the first embodiment.

Fig. 4 is a block diagram of a product code frame according to the first embodiment.

Fig. 5 is a flowchart showing the overall flow of the decoding process of the product code frame of the user data stored in the nonvolatile memory according to the comparative example.

Fig. 6 is a flowchart showing an example of the flow of the frame collection processing relating to the comparative example.

Fig. 7 is a flowchart showing an example of the flow of the iterative correction processing according to the comparative example.

Fig. 8 is a flowchart showing an example of the flow of the iterative correction processing according to the comparative example.

Fig. 9 is a circuit diagram showing a data flow between circuits (processes) in the frame collection process according to the comparative example.

Fig. 10 is a circuit diagram of a data flow between circuits (processes) in the iterative correction process according to the comparative example.

Fig. 11 is a configuration diagram of an error correction circuit of the memory controller according to the first embodiment.

Fig. 12 is a flowchart showing the overall flow of the decoding process of the product code frame of the user data stored in the nonvolatile memory according to the first embodiment.

Fig. 13 is a flowchart showing an example of the flow of the frame collection processing according to the first embodiment.

Fig. 14 is a flowchart showing an example of the flow of the iterative correction processing according to the first embodiment.

Fig. 15 is a flowchart showing an example of the flow of the iterative correction processing according to the first embodiment.

Fig. 16 is a circuit diagram showing a data flow among a plurality of processes (processes) in the frame collection process according to the first embodiment.

Fig. 17 is a circuit diagram showing a data flow between circuits (processes) in the iterative correction process according to the first embodiment.

Fig. 18 is a configuration diagram of an error correction circuit of the memory controller according to the second embodiment.

Fig. 19 is a flowchart showing an example of the flow of the frame collection processing according to the second embodiment.

Fig. 20 is a flowchart showing an example of the flow of the iterative correction processing according to the second embodiment.

Fig. 21 is a flowchart showing an example of the flow of the iterative correction processing according to the second embodiment.

Fig. 22 is a circuit diagram showing a data flow between circuits (processes) in the frame collection process according to the second embodiment.

Fig. 23 is a circuit diagram showing a data flow between circuits (processes) in the iterative correction process according to the second embodiment.

Detailed Description

Hereinafter, embodiments will be described with reference to the drawings.

(first embodiment)

(constitution)

(constitution of memory System)

Fig. 1 is a block diagram showing an example of the configuration of a memory system according to an embodiment. The memory system of the present embodiment includes a memory controller 1 and a nonvolatile memory 2. The memory system is capable of connecting with a host (host). The host is, for example, an electronic device such as a personal computer, a portable terminal, or a smartphone.

The nonvolatile memory 2 is a semiconductor memory that stores data in a nonvolatile manner, and includes a NAND flash memory, for example. In the present embodiment, the nonvolatile memory 2 is described as a 4-bit/Cell (QLC) NAND memory having a NAND memory capable of storing memory cells of 4 bits per memory Cell. The nonvolatile memory 2 is three-dimensional.

The memory controller 1 is a semiconductor device that controls writing of data into the nonvolatile memory 2 in accordance with a write request from a host. A semiconductor package including the memory controller 1 and the nonvolatile memory 2 constitutes a semiconductor storage device. The memory controller 1 controls reading of data from the nonvolatile memory 2 in accordance with a read request from the host. The memory controller 1 includes a ram (random Access memory)11, a processor 12, a host interface 13, an ecc (error Check and correct) circuit 14, and a memory interface 15. The RAM11, the processor 12, the host interface 13, the ECC circuit 14, and the memory interface 15 are connected to each other through an internal bus 16.

The host interface 13 outputs a request received from the host, write data as user data, and the like to the internal bus 16. Also, the host interface 13 transmits user data read from the nonvolatile memory 2, a response from the processor 12, and the like to the host.

The ECC circuit 14 includes: an error code generation circuit 14a that generates an error correction code when writing user data to the nonvolatile memory 2, and an error detection/correction circuit 14b that detects and corrects an error of the user data read from the nonvolatile memory 2. Error code generation circuit 14a generates an error correction code for the user data in accordance with an instruction from processor 12. When writing user data from a host into the nonvolatile memory 2, the processor 12 generates an error correction code for the user data by the error code generation circuit 14a, and writes the user data to which the error correction code is added into the nonvolatile memory 2. The processor 12 detects an error of the user data from the nonvolatile memory 2 by the error detection/correction circuit 14b when the user data is read from the nonvolatile memory 2 in accordance with a request from the host, performs data correction using the error correction code when there is an error, and outputs the user data to the host.

The memory interface 15 is an interface circuit that controls processing for writing user data and the like into the nonvolatile memory 2 and processing for reading user data and the like from the nonvolatile memory 2 based on instructions from the processor 12.

The processor 12 uniformly controls the memory controller 1. The processor 12 is, for example, a CPU (Central Processing Unit), an MPU (micro Processing Unit), or the like. When receiving a request from the host via the host interface 13, the processor 12 performs control in accordance with the request. For example, the processor 12 instructs the memory interface 15 to write the user data and the parity data to the nonvolatile memory 2 according to a request from the host. The generation of parity data is performed by an error code generation circuit of the ECC circuit 14. The processor 12 instructs the memory interface 15 to read the user data and the parity data from the nonvolatile memory 2 in response to a request from the host. Data correction when an error exists in the read user data is performed by the error detection/correction circuit 14b of the ECC circuit 14.

The processor 12 determines a storage area of the nonvolatile memory 2 to be written for each user data. The storage area of the nonvolatile memory 2 is assigned a physical address. The processor 12 manages the save area of the write destination of the user data using the physical address. The processor 12 designates the physical address of the decided save area and instructs the memory interface 15 to write the user data to the nonvolatile memory 2. The processor 12 manages correspondence between a logical address (host-managed logical address) and a physical address of user data. When the processor 12 receives a read request including a logical address from the host, it determines a physical address corresponding to the logical address, specifies the physical address, and instructs the memory interface 15 to read user data.

The RAM11 temporarily saves user data received from the host before it is stored in the non-volatile memory 2, or temporarily saves data read from the non-volatile memory 2 before it is sent to the host. The RAM11 is a general-purpose memory such as an sram (static Random Access memory).

Fig. 1 shows an example of a configuration in which the memory controller 1 includes an ECC circuit 14 and a memory interface 15. However, the ECC circuit 14 may be built in the memory interface 15. Also, the ECC circuit 14 may be built in the nonvolatile memory 2.

When a write request is received from the host, the memory controller 1 operates as follows. The processor 12 causes the written user data to be temporarily stored in RAM 11. The processor 12 reads the user data held by the RAM11 and inputs the user data to the ECC circuit 14. The error code generation circuit 14a of the ECC circuit 14 generates an error correction code (parity data) of the input data, and outputs the user data to which the error correction code is added to the memory interface 15. The memory interface 15 writes the user data to which the error correction code is added to the nonvolatile memory 2.

When a read request is received from the host, the memory controller 1 operates as follows. The memory interface 15 outputs the user data read from the nonvolatile memory 2 and added with the error correction code to the ECC circuit 14. The error detection/correction circuit 14b of the ECC circuit 14 decodes the input user data, and when an error is detected in the input user data, stores the corrected data in the RAM11 using an error correction code. The processor 12 host-transmits the user data saved to the RAM11 via the host interface 13.

Fig. 2 is a block diagram showing an example of the configuration of the nonvolatile memory according to the present embodiment. The nonvolatile memory 2 includes a NAND I/O interface 21, a control unit 22, a NAND memory cell array 23, a sense amplifier circuit 24, and a word line driver 25. The nonvolatile memory 2 is formed of a semiconductor substrate (e.g., a silicon substrate) such as 1 chip.

The NAND I/O interface 21 receives control signals such as a write enable signal Wen, a read enable signal REn, an address latch enable signal ALE, and a command latch enable signal CLE, which are output from the memory controller 1. The NAND I/O interface 21 receives instructions, addresses, and data output from the memory controller 1.

The control unit 22 is a control circuit that receives a control signal, a command, an address, and data from the NAND I/O interface 21 and controls the operation of the nonvolatile memory 2 based on these signals. The control unit 22 controls the word line driver 25 and the sense amplifier circuit 24 based on, for example, a control signal, a command, an address, and data, and executes a write operation, a read operation, an erase operation, and the like.

When a write command is input, the control unit 22 controls the sense amplifier circuit 24 and the word line driver 25 to write data input in accordance with the write command to a specified address on the NAND memory cell array 23. When a read command is input, the control unit 22 controls the sense amplifier circuit 24 and the word line driver 25 to read data from a designated address in the NAND memory cell array 23.

For example, the control unit 22 controls a voltage applied to the plurality of word lines WL through the word line driver 25 and a voltage (bit line voltage) applied to the plurality of bit lines BL through the sense amplifier circuit 24 in order to write data into the memory cells (memory cell transistors) MT included in the NAND memory cell array 23.

The sense amplifier circuit 24 is configured to be able to independently apply a voltage (or a current) to the plurality of bit lines BL and independently detect the voltage (or the current) of the plurality of bit lines BL.

The word line driver 25 is configured to be capable of independently applying a voltage to a plurality of word lines and a selection gate line.

(construction of NAND memory cell array)

Fig. 3 is a diagram showing an example of the configuration of a block of the NAND memory cell array 23 having a three-dimensional structure. Fig. 3 shows 1 block BLK among a plurality of blocks constituting a NAND memory cell array (hereinafter referred to as a memory cell array) 23 of a three-dimensional structure. The other blocks of the memory cell array have the same configuration as that of fig. 3. In addition, this embodiment can be applied to a memory cell array having a two-dimensional structure.

As shown, the block BLK includes, for example, 4 string units (SU0 to SU 3). And each string unit SU contains a plurality of NAND strings NS. Each string NS of the NAND string NS here includes 8 memory cells MT (MT0 to MT7) and select transistors ST1, ST 2. The number of memory cells MT included in the NAND string NS is 8, but is not limited to 8, and may be 32, 48, 64, or 96, for example. The selection transistors ST1 and ST2 are shown as 1 transistor in circuit, but may be the same as the memory cell transistors in configuration. Further, for example, in order to improve the off-characteristic, a plurality of selection transistors may be used as the selection transistors ST1 and ST2, respectively. Further, a dummy cell transistor may be provided between the memory cell MT and the selection transistors ST1 and ST 2.

The memory cells MT are arranged so as to be connected in series between the selection transistors ST1 and ST 2. The memory cell MT7 on the one end side is connected to the selection transistor ST1, and the memory cell MT0 on the other end side is connected to the selection transistor ST 2.

The gates of the select transistors ST1 of the string units SU0 to SU3 are connected to the select gate lines SGD0 to SGD3, respectively. On the other hand, the gates of the select transistors ST2 are connected to the same select gate line SGS in common among the plurality of string units SU in the same block BLK. The gates of the memory cells MT0 to MT7 in the same block BLK are connected to word lines WL0 to WL7 in common, respectively. That is, word lines WL0 to WL7 and select gate line SGS are commonly connected between a plurality of string units SU0 to SU3 in the same block BLK, whereas select gate line SGD is independent for each of string units SU0 to SU3 in the same block BLK.

The gates of the memory cells MT0 to MT7 constituting the NAND string NS are connected with word lines WL0 to WL7, respectively. The gates of the memory cells MTi in the same row within the block BLK are connected to the same word line WLi. In the following description, the NAND string NS may be referred to as a "string" only.

Each NAND string NS is connected to a corresponding bit line. Accordingly, each memory cell MT is connected to a bit line via the selection transistor ST included in the NAND string NS and another memory cell MT. As described above, the data of the memory cells MT in the same block BLK are erased together. On the other hand, reading and writing of data are performed in units of memory cell groups MG (or in units of pages). In this specification, a plurality of memory cells MT connected to 1 word line WLi and belonging to 1 string unit SU is defined as a memory cell group MG. In the present embodiment, the nonvolatile memory 2 is a NAND memory of qlc (quad Level cell) capable of holding 4 bits (16 values) of data.

(construction of product code)

In the ECC circuit 14 of the memory controller 1 of the NAND memory, a product code frame is used to improve the correction capability. The product code frame has ECC parity data (error correction code) in a bit (column) direction and Reed-Solomon (RS) parity data (error correction code) in a vertical direction. The ECC parity data and the RS parity data are generated by the error code generation circuit 14a of the ECC circuit 14 and appended to the user data.

Fig. 4 is a configuration diagram of a product code frame. The user data is composed of data of a plurality of rows (here, N rows, N being a positive integer) and a plurality of columns (here, M columns, M being a positive integer). In each row of user data, ECC parity data is added in the horizontal direction (bit (column)) and RS parity data is added in the vertical direction. The ECC parity data is generated by ECC encoding in the horizontal direction in the error code generation circuit 14 a. The RS parity data is generated by RS encoding in the error code generation circuit 14a by the vertical method.

The ECC Parity data is generated based on a BCH (Bose-Chaudhuri-Hocquenghem) code scheme, an LDPC (Low Density Parity Check) scheme, or the like.

Here, the ECC encoding method is used for the horizontal data, but other encoding methods may be used to generate parity data in the horizontal direction. Similarly, although the RS coding method is used for the vertical data, other coding methods may be used to generate the vertical parity data.

In the horizontal direction of fig. 4, data composed of 1 row of user data and ECC parity data appended to the row is referred to as an ECC frame. When each row of user data is divided for each predetermined data unit, for example, for each 1 byte, the user data in the plurality of rows is divided into a plurality of columns. In the vertical direction of fig. 4, data composed of 1 column of user data of a predetermined data width and 2 pieces of RS parity data added to the column is referred to as an RS frame. In other words, a frame in the horizontal direction is referred to as an ECC frame, and a frame in the vertical direction is referred to as an RS frame. In fig. 4, a frame composed of N ECC frames and L RS frames is referred to as a product code frame.

At the time of RS decoding, an RS syndrome (syndrome) described later is generated for an ECC frame as indicated by a two-dot chain line in fig. 4 and stored in the memory M0. The number of bits of each RS syndrome is the same as the number of bits of the RS parity divided for each RS frame.

Here, 1ECC parity is added to the user data of 1 row, but the user data of 1 row may be divided into a plurality of (for example, 4) pieces and one parity may be added to each piece of divided user data. For example, if the user data of 1 line is divided into 4 pieces, 4 pieces of parity data are generated.

Further, here, as shown in fig. 4, RS parity data is added only to user data, but ECC parity data may also be added as shown by the two-dot chain line.

In the following description, a description of a method of writing user data is omitted, and a method of decoding user data, that is, a method of reading and correcting the user data will be described. Here, the decoding process of the product code frame of the user data is explained.

Comparative example

First, before describing the decoding method of the present embodiment, a decoding method as a comparative example compared with the present embodiment will be described.

Fig. 5 is a flowchart showing the overall flow of the decoding process of the product code frame of the user data stored in the nonvolatile memory 2 according to the comparative example. In the decoding process, when the processor 12 receives a read request from the host, it controls the memory interface 15 to read user data from the nonvolatile memory 2 from a physical address associated with the request. The user data of the product code frame as shown in fig. 4 is read from the nonvolatile memory 2 and stored in a predetermined storage area of the RAM 11.

In the decoding process, if there is no error in the user data read from the nonvolatile memory 2, the processor 12 returns the user data to the host. When there is an error in the user data read from the nonvolatile memory 2, the processor 12 returns the user data to the host after correction. The processor 12 controls the ECC circuit 14 and performs decoding processing of the user data read from the nonvolatile memory 2.

The decoding process first performs a frame collection process (step (hereinafter abbreviated as S)1), and then performs a repeated correction process (S2). In the frame collection process, ECC frames that have failed in decoding (i.e., that cannot be ECC corrected) by an ECC decoding process that performs error correction in units of bits are collected. In other words, in the frame collection process, ECC frames requiring data correction based on RS decoding are collected. RS decoding performs error correction in symbol (symbol) units. In the iterative correction processing, RS decoding processing is performed for the ECC frame collected in S1.

Fig. 6 is a flowchart showing an example of the flow of the frame collection processing. Fig. 7 and 8 are flowcharts showing an example of the flow of the iterative correction process.

The processor 12 of the memory controller 1 sets the frame number of the ECC frame to be ECC as "0" (S11), and increments the frame number by "1" (S12).

The processor 12 reads the target ECC frame of the set frame number (S13). After S13, the processor 12 executes ECC decoding processing by giving a signal for causing ECC decoding processing to be executed to the error detection/correction circuit 14b (S14). In S14, the error detection/correction circuit 14b detects whether there is an error in the read subject ECC frame, and in the case where there is an error, ECC-based error correction is performed.

The processor 12 determines whether the object ECC frame is correctly read or whether ECC correction based on the error detection/correction circuit 14b is successfully performed when there is an error in the object ECC frame (S15).

The error detection/correction circuit 14b decodes the frame, and generates a flag indicating whether or not the decoding is completed correctly as the internal data. Specifically, the error detection/correction circuit 14b performs ECC correction processing when the frame cannot be correctly decoded, and generates a flag indicating whether ECC correction has been correctly completed as internal data. Therefore, the processor 12 can determine whether the ECC correction has been successful by reading the flag generated by the error detection/correction circuit 14 b.

When the ECC correction is not successful (S15: no), the processor 12 determines whether the prescribed number of read retries (retry) has ended (S16). When the prescribed number of read retries has not ended (S16; NO), the process returns to S13, and the processes of S13 to S15 are executed again. In addition, at the time of retry, the ECC frame may be read by changing the read conditions such as shift reading.

If the predetermined number of read retries is completed (S16; yes), the processor 12 writes the ECC frame for which ECC correction cannot be performed, to the memory D (S17). The memory D is a prescribed storage area in the RAM11, for example.

Further, the processor 12 writes the determination result of S15 into a predetermined storage area (or a predetermined register) in the RAM 11. This is because the processor 12 is enabled to determine which ECC frame succeeded or failed in decoding. For example, determination result data such as "0" for a frame that is correctly read or has completed ECC correction and "1" for a frame that cannot achieve ECC correction is written into a predetermined storage area (or a predetermined register) in the RAM 11.

When the ECC correction is successful in S15, the RS syndrome is read from the memory M after the ECC frame in S17, in which the ECC correction cannot be performed, is written into the memory D (S18). The memory M is a prescribed storage area in the RAM 11. In addition, when the RS syndrome is read from the memory M for the first time, the read RS syndrome is "0".

The processor 12 generates an RS syndrome from the object ECC frame decoded in S14 and the RS syndrome of the memory M after S18 (S19). The processor 12 writes (i.e., updates) the syndrome generated in S19 to the memory M (S20). The processor 12 updates the RS syndrome by adding the generated RS syndrome to the RS syndrome read in S18 (S20).

The processor 12 determines whether the target ECC frame number is (N-1) (S21). That is, it is determined whether the above-described processing of S13 to S20 is performed for all ECC frames of N rows.

If the processing from S13 to S20 is not executed for all the ECC frames in N rows, the process returns to S12, and the ECC frame number is incremented to execute the processing after S13.

If the processing of S13 to S20 is performed for all the ECC frames of N lines, the processor 12 performs the iterative correction processing of fig. 7.

As described above, the process of fig. 6 is ended. As a result, ECC frame information that cannot be ECC corrected is written into the memory D.

The processor 12 sets the frame number of the object ECC frame to "0" (S31), and increments the frame number by "1" (S32).

The processor 12 determines whether the target ECC frame is a frame that has succeeded in ECC decoding based on the determination result data of S15 (S33). That is, the processor 12 refers to a predetermined storage area (or a predetermined register) in the RAM11 to determine whether the ECC frame to be read is correctly read or whether the ECC correction process is correctly completed.

When the target ECC frame is a frame in which ECC decoding is completed, that is, which is successfully performed in ECC decoding, the process proceeds to S43, and when the target ECC frame is a frame in which ECC decoding cannot be performed, the processes of S34 to S42 are performed.

When the object ECC frame is a frame for which ECC decoding cannot be achieved, i.e., for which ECC decoding has not been successful (S33: no), the processor 12 reads the ECC frame of the object ECC frame from the memory D (S34), and reads the RS syndrome from the memory M (S35).

The processor 12 performs, for the user data, data correction processing, which is RS decoding processing for the target ECC frame read in S34, using the RS syndrome read in S35 (S36). Since data correction for the subject ECC frame read in S34 is possible through S36, an ECC decoding process is performed on the subject ECC frame (S37).

After S37, the processor 12 determines whether the result of the ECC decoding process by the error detection/correction circuit 14b is that the ECC decoding for the subject ECC frame has succeeded (S38). The processor 12 updates the determination result data of the predetermined storage area (or the predetermined register) in the RAM11 based on the determination result of S38.

When the ECC decoding for the object ECC frame succeeds (S38: yes), the processor 12 writes the object ECC frame to the memory D (S39). When the ECC decoding is successful in S38, the processor 12 writes the target ECC frame that was successfully decoded in the memory D (i.e., erases the target ECC frame data to be decoded from the memory D), and then reads the RS syndrome from the memory M (S40).

After S40, the processor 12 generates an RS syndrome from the object ECC frame successfully decoded and the RS syndrome of the memory M (S41).

The processor 12 writes (i.e., updates) the syndrome generated in S41 to the memory M (S42).

If the processor 12 is "yes" in S33 or after S42, it is determined whether the ECC frame number is (N-1) (S43). That is, it is determined whether the above-described processing of S33 to S42 is performed for all ECC frames of N rows.

If the processing from S33 to S42 is not executed for all the ECC frames in N rows, the processing returns to S32, and the target ECC frame number is incremented and the processing after S33 is executed.

When yes in S43, that is, when the processes of S33 to S42 are performed for all ECC frames of N rows, the processor 12 determines whether the ECC decoding is successful for all ECC frames (S44). The determination at S44 is made by referring to a predetermined storage area (or a predetermined register) in the RAM11 as described above.

When ECC decoding is successful for all ECC frames (S44: yes), the decoding process ends.

When ECC decoding is not successful for all ECC frames (S44: no), the processor 12 determines whether one ECC decoding is not successful in the above-described iterative correction process of S31 to S43 (S45). The determination at S45 is made based on whether or not there is a case of yes at S38.

When one ECC decoding process is even successful (S45: no), the process returns to S31, and the above-described process is executed again.

That is, since ECC decoding is already performed as a result of RS decoding, whether ECC decoding is successful or not is attempted again by RS decoding based on the newly decoded user data. The processing of S31 to S43 is executed until a state is reached in which ECC decoding cannot be completed by repeatedly correcting one ECC frame after another.

When none of the consecutive ECC decoding processes is successful (S45: yes), the process ends. When the decoding process is completed, information indicating that the decoding process has failed, and the like are transferred to the processor 12.

Fig. 9 is a circuit diagram showing a data flow between circuits (processes) in the above-described frame collection process. In the ECC circuit 14, ECC decoding processing is performed in an ECC decoding processing circuit for 1 user data read from the nonvolatile memory 2 (P1).

After the ECC decoding process (P1), RS syndrome generation is performed based on the ECC decoded data and the RS syndrome of the memory M (P2), and the generated RS syndrome is stored in the memory M (P3). The ECC frame for which ECC decoding was unsuccessful is saved in the memory D (P5).

As shown by the solid line in fig. 9, in the RS decoding processing circuit after the ECC decoding processing, generation of the RS syndrome is performed based on the ECC frame data and the RS syndrome of the memory M. The RS syndrome of memory M is updated.

As shown by the dotted line in fig. 9, when the ECC correction is not successful in the ECC decoding processing circuit, the data of the ECC frame whose ECC correction failed is written into the memory D.

Fig. 10 is a circuit diagram showing a data flow between circuits (processes) in the above-described iterative correction process. As shown by a solid line in fig. 10, RS syndrome of the memory M is used in the RS decoding processing circuit to perform RS decoding-based data correction for the ECC frame of the memory D (P14).

After the RS decoding process (P14), an ECC decoding process (P11) is performed on the ECC frame subjected to the data correction. The syndrome is generated from the ECC frame successfully decoded by the ECC decoding and the RS syndrome of the memory M (P12), and the generated RS syndrome is stored in the memory M (P13). When the ECC decoding is successful, the data of the memory D is updated (P15).

As indicated by the broken line in fig. 10, when the ECC decoding process is successful, the RS decoding processing circuit generates an RS syndrome from ECC frame data successfully corrected by ECC and the RS syndrome in the memory M. The RS syndrome of the memory M is updated by the generated RS syndrome. As shown by the broken line in fig. 10, when the ECC decoding process is successful, the data in the memory D is updated (erasure of ECC frame data that failed the ECC decoding).

According to the decoding process of the above comparative example, the ECC decoding process is performed in the bit (column) direction in the frame collection process. The ECC-decoded data is subjected to RS decoding processing (syndrome generation), and the processor 12 generates an RS syndrome and stores it in the memory M. When the ECC decoding correction fails, the processor 12 stores the data of the ECC frame in the memory D. The above process is performed for N ECC frames.

In the iterative correction processing, the processor 12 performs RS decoding processing (data correction) based on the data of the ECC decoding correction disabled frame stored in the memory D and the RS syndrome of the memory M in the frame collection processing. The processor 12 performs ECC decoding again on the RS-decoded data. When the ECC decoding correction is successful, the processor 12 saves (overwrites) the ECC-decoded data in the memory D, performs the RS decoding process (syndrome generation) again, and updates (overwrites) the RS syndrome in the memory M.

In the RS decoding process (data correction) by the iterative correction, RS syndromes for N ECC frames are required. Therefore, the RS syndrome stored in the memory M becomes a syndrome generated from a frame in which the ECC decoding correction has succeeded and a frame in which the ECC decoding correction has failed.

Therefore, even if it is desired to perform ECC decoding based on a different determination criterion (level) for an ECC frame for which ECC decoding correction cannot be performed after the above-described repeated correction, it takes time to re-read all of the target ECC frame, and therefore ECC decoding based on the different determination criterion cannot be performed.

For example, even if it is possible to realize ECC decoding by changing the setting of the standard for error correction, since the RS syndrome stored in the memory M is data based on the previous judgment standard, the RS syndrome of the memory M cannot be used in ECC decoding based on another judgment standard.

As described above, in order to change the setting of the determination criterion and perform ECC decoding, it is necessary to read all the target ECC frames again and generate a new RS syndrome, which is not practical.

(embodiment mode)

In the present embodiment, in order to perform ECC decoding based on a different determination criterion on an ECC frame that cannot be corrected by ECC decoding, an RS syndrome is generated by not reading all of the target ECC frames again, but ECC decoding based on a different determination criterion is performed on an ECC frame that cannot be corrected by ECC decoding.

Fig. 11 is a configuration diagram of an error correction circuit 14b of the memory controller 1 according to the present embodiment. The error correction circuit 14b includes an ECC decoding processing circuit 31 and an RS decoding processing circuit 32. The operations of the ECC decoding processing circuit 31 and the RS decoding processing circuit 32 are controlled by the processor 12.

The ECC decoding processing circuit 31 accepts user data from the memory interface 15 and performs ECC decoding processing. The product code frame includes user data to which error correction codes (ECC parity, RS parity) are added in the 1 st direction (horizontal direction) and the 2 nd direction (vertical direction). The ECC decoding processing circuit 31 is a decoding circuit that performs ECC decoding on ECC frame data in the 1 st direction (horizontal direction) of the product code frame as the 1 st decoding.

The RS decoding processing circuit 32 is a decoding circuit that RS decodes RS frame data in the 2 nd direction (vertical direction) of the product code frame. The RS decoding processing circuit 32 includes a memory D, a memory M0, a memory M1, an RS syndrome generating circuit 33, and an RS data correcting circuit 34. The RS syndrome generating circuit 33 calculates and generates an RS syndrome. The RS data correction circuit 34 performs data correction using the RS syndrome.

The memory D stores the ECC frame that failed in the ECC decoding data correction. That is, the memory D is a storage area for storing ECC frame data that has failed ECC decoding in the ECC decoding processing circuit 31 as decoding correction disabled frame data.

The memory M0 is a storage area for storing the RS syndrome for iterative correction, and corresponds to the memory M of the comparative example described above. Specifically, the memory M0 is a storage area for storing a syndrome generated by RS decoding by the RS decoding processing circuit 32 for ECC frame data after ECC decoding regardless of whether ECC decoding has succeeded or failed in the ECC decoding processing circuit 31.

The memory M1 stores an RS syndrome for recovery (roll back). Specifically, the memory M1 is a storage area for storing a syndrome generated for ECC frame data successfully subjected to ECC decoding in the ECC decoding processing circuit 31.

Here, the memories D, M0 and M1 are dedicated memories each formed of an SRAM or the like, but may be a storage area of a part of the RAM 11.

Fig. 12 is a flowchart showing the overall flow of the decoding process of the product code frame of the user data stored in the nonvolatile memory 2 according to the present embodiment.

The decoding process first performs a frame collection process (S51), and then performs an iterative correction process (S52). The frame collection processing collects the decoding correction disabled frame data, and the repeated correction processing performs RS decoding on the decoding correction disabled frame data collected in the frame collection processing. After the correction processing is repeated, it is determined whether or not the ECC decoding retry in the frame collection processing has ended (S53), and if the ECC decoding retry has not ended (S53: no), the processing returns to S51. Whether or not ECC decoding retries have ended is determined based on whether or not a prescribed condition is satisfied. The predetermined condition is, for example, whether or not a predetermined number of retries is executed, whether or not ECC decoding of a predetermined judgment standard is executed, or the like. If the ECC decoding retry is finished (yes in S53), the process is finished.

Fig. 13 is a flowchart showing an example of the flow of the frame collection processing according to the present embodiment. Fig. 14 and 15 are flowcharts showing an example of the flow of the iterative correction process according to the present embodiment. In the processing of fig. 13 to 15, the same steps as those of fig. 6 to 8 are assigned the same step numbers to simplify the explanation.

The processor 12 of the memory controller 1 sets the frame number of the target ECC frame as an ECC target to "0" (S11), and increments the frame number by "1" (S12).

The processor 12 determines whether or not the target ECC frame is a frame whose ECC decoding has succeeded, based on the frame number of the target ECC frame (S61).

If the target ECC frame is a frame that has succeeded in ECC decoding (yes in S61), the process proceeds to S21.

When the target ECC frame is not a frame that has succeeded in ECC decoding (S61: no), the processor 12 reads the target ECC frame of the set frame number (S13). After S13, the processor 12 executes ECC decoding processing by giving a signal for causing ECC decoding processing to be executed to the error detection/correction circuit 14b (S14).

When the first time the reading of each target ECC frame is performed, all target ECC frames are not frames that have succeeded in ECC decoding, and therefore S61 becomes no.

After S14, the processor 12 reads the ECC frame to be processed of the set frame number (S13), and performs ECC decoding processing (S14).

The processor 12 determines whether the object ECC frame is correctly read or whether the ECC correction by the error detection/correction circuit 14b is successful when there is an error in the object ECC frame (S15).

When the ECC decoding is not successful (S15: no), the processor 12 determines whether the prescribed number of read retries has ended (S16). When the prescribed number of read retries has not ended (S16; NO), the process returns to S13, and the processes of S13 to S15 are executed again.

When the predetermined number of read retries is completed (S16; yes), the processor 12 writes the ECC frame that cannot be ECC corrected into the memory D, and executes the processing after S18.

When the ECC correction is successful in S15, the processor 12 reads the RS syndrome from the memory M1 (S62), and performs RS syndrome generation of an RS decoding process (S63). The processor 12 calculates an RS syndrome using the object ECC frame that was successful in decoding, and adds the RS syndrome read in S62, thereby generating (i.e., updating) an RS syndrome (S63). Then, the processor 12 writes the syndrome generated in S63 to the memory M1 (S64).

After writing the ECC frame incapable of ECC correction to the memory D in S17 and after S64, the RS syndrome is read from the memory M0 (S18).

The processor 12 performs RS syndrome generation of the RS decoding process after S18 (S19). The processor 12 calculates an RS syndrome using the ECC decoded object ECC frame and adds the RS syndrome read in S18, thereby generating (i.e., updating) an RS syndrome (S19).

The processor 12 writes the syndrome generated in S19 to the memory M0 (S20).

As described above, in the frame collection process, the processor 12 performs ECC decoding on ECC frame data (S14), generates a syndrome for the ECC frame data for which the ECC decoding has succeeded (S63) and holds the syndrome in the memory M1(S64) when the ECC decoding has succeeded (S15:), and stores the syndrome generated for the ECC frame data in the memory M0 regardless of whether the ECC decoding has succeeded or failed (S20).

The processor 12 determines whether the target ECC frame number is (N-1) (S21). That is, it is determined whether the above-described processing of S61 to S20 is performed for all ECC frames of N rows.

If the processing from S61 to S20 is not performed for all the ECC frames in N rows, the processing returns to S12, and the ECC frame number is incremented to execute the processing after S61.

If the processing of S61 to S20 is executed for all the ECC frames of N lines, the processor 12 executes the iterative correction processing of fig. 14 and 15.

As described above, when the processing in fig. 13 is finished, ECC frame information that cannot be corrected by ECC decoding is written into the memory D. Further, the memory M0 stores RS syndromes for all ECC frames.

Further, the memory M1 holds the RS syndrome for the ECC frame to which the ECC correction has succeeded. At the first time when reading of each object ECC frame is performed first, the RS syndrome of the object ECC frame for which ECC correction has succeeded is stored in the memory M1 at the first time.

In the iterative correction processing of fig. 14 and 15, the processor 12 sets the frame number of the target ECC frame to "0" (S31), and increments the frame number by "1" (S32).

The processor 12 determines whether or not the ECC frame to be processed is a frame successfully subjected to ECC decoding based on the determination result data at S15 (S33).

If the target ECC frame is a frame for which ECC decoding is achieved, that is, if ECC decoding is successfully performed, the process proceeds to S43, and if the target ECC frame is a frame for which ECC decoding cannot be achieved, the processes from S34 to S42 are performed.

When the object ECC frame is a frame for which ECC decoding cannot be achieved, i.e., for which ECC decoding has not been successful (S33: no), the processor 12 reads the ECC frame of the object ECC frame from the memory D (S34), and reads the RS syndrome from the memory M0 (S35).

The processor 12 performs data correction processing, which is RS decoding processing for the target ECC frame read in S35, on the user data using the RS syndrome read in S35 (S36). Since it is possible that correction is made for the object ECC frame read in S34 by S36, the ECC decoding process is performed for the object ECC frame (S37).

After S37, the processor 12 determines whether the result of the ECC decoding process based on the error detection/correction circuit 14b is that the ECC decoding for the object ECC frame is successful (S38). The processor 12 writes, i.e., updates, the determination result data of S38 to a predetermined storage area (or a predetermined register) in the RAM 11.

When the ECC decoding for the object ECC frame succeeds (S38: yes), the processor 12 writes the object ECC frame to the memory D (S39). After writing the decoded object ECC frame into the memory D (after erasing the object ECC frame data to be decoded from the memory D) when the ECC decoding is successful in S38, the processor 12 reads the RS syndrome from the memory M1 (S65).

After S65, the processor 12 performs RS syndrome generation from the object ECC frame that succeeded in decoding and the RS syndrome of the memory M1. Then, the processor 12 writes (i.e., updates) the syndrome generated in S66 to the memory M1 (S67).

After S67, the processor 12 reads the RS syndrome from the memory M0 (S40).

After S40, the processor 12 generates an RS syndrome from the object ECC frame that succeeded in decoding and the RS syndrome of the memory M0.

The processor 12 writes (i.e., updates) the syndrome generated in S41 to the memory M0 (S42).

If yes in S33, after S42, or if no in S38, the processor 12 determines whether the ECC frame number is (N-1) (S43). That is, it is determined whether the above-described processing of S33 to S42 is performed for all ECC frames of N rows.

If the processing from S33 to S42 is not performed for all the ECC frames in N rows, the process returns to S32, and the target ECC frame number is incremented and the processing after S33 is performed.

As described above, in the iterative correction processing, the processor 12 performs data correction by RS decoding using the syndrome of the memory M0 for the decoding correction disabled frame data (S36), performs ECC decoding on the decoding correction disabled frame data corrected by the data correction (S37), updates (erases) the decoding correction disabled frame data of the memory D when the ECC decoding of the decoding correction disabled frame data succeeds (S38: yes), generates a syndrome for the decoding correction disabled frame data (S66), and updates the memories M0 and M1 (S67).

When yes in S43, that is, when the processing of S33 to S42 is performed for all the ECC frames of N rows, the processor 12 determines whether the ECC decoding is successful for all the ECC frames (S44). The determination at S44 is made by referring to a predetermined storage area (or a predetermined register) in the RAM11 as described above.

When ECC decoding succeeds for all ECC frames (S44: yes), the decoding process ends.

When ECC decoding is unsuccessful for all ECC frames (S44: no), the processor 12 determines whether ECC decoding has failed in the iterative correction processing of S31 to S43 described above (S45). The determination at S45 is made based on whether or not there is a case where "yes" is made at S38.

When even one ECC decoding process succeeds (S45: no), the process returns to S31, and the above-described process is executed again. That is, as a result of RS decoding, ECC decoding cannot be performed, and therefore, based on the newly decoded user data, whether ECC decoding is successful or not is attempted again by RS decoding. Finally, the processing of S31 to S43 is executed until a state is reached in which even one ECC frame cannot be ECC decoded by repeated correction.

When none of the consecutive ECC decoding processes has succeeded (yes in S45), the processor 12 determines whether or not the retry of the ECC decoding process in the frame collection process has ended (S68). The judgment processing of S68 corresponds to the processing of S53 of fig. 12.

If it is determined that the retry of the ECC decoding process is completed (yes in S68), the process is completed. When the decoding process is completed, information indicating that the decoding process has failed, and the like are transferred to the processor 12.

When the retry of the ECC decoding process does not end (S68: no), the processor 12 copies the RS syndrome of the memory M1 to the memory M0 (S69). That is, when the processor 12 performs the frame collection processing after repeating the correction processing, the data in the memory M1 is copied to the memory M0.

After S69, the process returns to S11 of fig. 13.

After the correction processing is repeated, the processing returns to the frame collection processing, and ECC correction is performed again, but in the second and subsequent ECC decoding processing, processing different from the previous ECC decoding processing, for example, ECC decoding based on another determination criterion is performed.

For example, the judgment criterion for 60-bit correction in the LDPC code is used in the first frame gathering process, and the judgment criterion for 120-bit correction in the LDPC code is used in the second frame gathering process to improve the ECC correction capability.

Fig. 16 is a circuit diagram showing a data flow among a plurality of processes (processes) in the frame collection process according to the present embodiment. In the ECC circuit 14, for 1 user data read from the nonvolatile memory 2, ECC decoding processing is performed in an ECC decoding processing circuit (P21).

The generation process of the RS syndrome (P22) is performed after the ECC decoding process (P21), and the generated RS syndrome is saved in the memory M0 (P23). And, the ECC frame for which ECC decoding was unsuccessful is saved in the memory D (P25).

For an ECC frame for which ECC decoding has succeeded, generation of a recovered RS syndrome is performed (P26), and the generated RS syndrome is stored in the memory M1 (P27).

As shown by the solid line in fig. 16, after the ECC decoding process, the RS decoding process circuit generates an RS syndrome from the data successfully ECC-corrected and the RS syndrome of the memory M0 (P22). The generated RS syndrome is saved in the memory M0 (P23).

As shown by the dotted line in fig. 16, when the ECC correction is not successful in the ECC decoding processing circuit, the data of the ECC frame whose ECC correction failed is written into the memory D.

As shown by the chain line in fig. 16, when the ECC decoding is successful, a syndrome is generated from the ECC decoded data and the syndrome in the memory M1, and the generated syndrome is stored in the memory M1.

The RS syndrome held in the memory M0 is for arithmetic operation, and the RS syndrome held in the memory M1 is recovery. The recovery RS syndrome is generated only for the data of the ECC frame for which ECC decoding has succeeded, and is stored in the memory M1.

In the frame collection process, in addition to the memory M0, the RS syndrome for recovery of the memory M1 is updated when the ECC decoding correction is successful. The RS syndrome for calculation in the memory M0 is always updated regardless of the success or failure of ECC decoding, as in the comparative example described above.

Fig. 17 is a circuit diagram showing a data flow between circuits (processes) in the iterative correction process according to the present embodiment. As shown by a solid line in fig. 17, data correction for the ECC frame of the memory D is performed using the RS syndrome of the memory M0 in the RS decoding processing circuit (P34). For the subject ECC frame on which data correction is performed in the RS decoding processing circuit, ECC decoding processing is performed (P31).

After the ECC decoding process (P31), an RS syndrome for operation is generated from the ECC decoded data and the RS syndrome of the memory M0 (P32), and the generated RS syndrome is stored in the memory M0 (P33). And, the ECC frame for which ECC decoding was unsuccessful is saved in the memory D (P35).

As shown by the dotted line in fig. 17, when the ECC decoding process is successful, the RS decoding process circuit generates an RS syndrome from the data successfully corrected by the ECC and the RS syndrome in the memory M0 (P32). The generated RS syndrome is saved in the memory M0.

As shown by the chain line in fig. 17, when the ECC decoding process is successful, an RS syndrome is generated from the data successfully ECC decoded and the RS syndrome in the memory M1 (P36), and the generated RS syndrome is stored in the memory M1. When none of the iterative corrections was successful, the RS syndrome of memory M1 is copied to memory M0 for retries of frame collection.

In the iterative correction, RS decoding processing (RS correction) and ECC decoding processing are executed using the RS syndrome for operation of the memory M0. In the case where the ECC decoding correction is successful, updating of the RS syndrome for recovery of the memory M1 is also performed.

After the correction is repeated, when frame collection is performed again, the RS syndrome for recovery in the memory M1 is copied to the memory M0, and the RS syndrome for calculation can be recovered and frame collection can be performed again. This makes it possible to repeat frame collection and repeated correction, and improve the correction capability in the decoding process of the product code.

Therefore, according to the present embodiment, ECC decoding based on a different determination criterion can be performed without reading all of the target ECC frame, and as a result, a semiconductor device and a semiconductor storage device having higher error correction capability can be provided.

(second embodiment)

While the first embodiment repeatedly performs ECC decoding processing by holding 2RS syndromes when performing decoding processing, the second embodiment repeatedly performs ECC decoding processing without holding a recovery RS syndrome by obtaining an RS syndrome of an ECC frame that has failed ECC decoding correction and subtracting the RS syndrome from an RS syndrome for calculation, and can be mounted with a reduced circuit scale.

Since the semiconductor storage device according to the second embodiment has substantially the same configuration as that of the first embodiment, the same reference numerals are used for the same components, and the description thereof is omitted, and only different components are described.

Fig. 18 is a configuration diagram of an error correction circuit 14b of the memory controller 1A of the present embodiment. The memory controller 1A has the same configuration as the memory controller 1 of fig. 11 except that the memory M1 of the memory controller 1 of fig. 11 is not included.

The overall flow of the decoding process of the product code frame of the user data stored in the nonvolatile memory 2 in the present embodiment is the same as the flow shown in fig. 12.

First, a frame collection process in the present embodiment will be described.

Fig. 19 is a flowchart showing an example of the flow of the frame collection processing according to the present embodiment. Fig. 20 and 21 are flowcharts showing an example of the flow of the iterative correction processing according to the present embodiment. Among the processes in fig. 19 to 21, the same processes as those in fig. 6 to 8 and fig. 13 to 15 are assigned the same step numbers and the description thereof will be simplified.

This is different from the first embodiment in that the processing of S62 to S64 in fig. 13 is not performed in fig. 19. In the frame collection processing of the present embodiment, the processor 12 performs ECC decoding on ECC frame data (S14), and stores the syndrome generated for the ECC frame data in the memory M0 regardless of whether the ECC decoding has succeeded or failed (S20).

That is, in the frame collection process, only the RS syndrome for calculation in the memory M0 is held and updated, and the RS syndrome for recovery in the memory M1 in the case where the ECC decoding correction has succeeded as in the first embodiment is not held and updated. As in the first embodiment, the RS syndrome for calculation in the memory M0 is always updated regardless of whether ECC decoding is successful or failed.

Unlike the first embodiment, the processing of S65 to S67 in fig. 14 is not included in fig. 20, and the processing of S71 and S72 is performed instead of S69 in fig. 15 in fig. 21, unlike the first embodiment.

In the iterative correction processing of the present embodiment, the processor 12 performs data correction by RS decoding using the syndrome of the memory M0 for the decoding correction disabled frame data (S36), performs ECC decoding for the decoding correction disabled frame data corrected by the data correction (S37), updates (erases) the decoding correction disabled frame data of the memory D when the ECC decoding for the decoding correction disabled frame data succeeds (yes in S38), generates a syndrome for the decoding correction disabled frame data (S41), and updates the memory M0.

Specifically, in the iterative correction process, the RS syndrome for operation in the memory M0 is used to perform the RS correction and the ECC decoding in the RS decoding process. After the completion of the iterative correction, when frame collection is performed again (no in S46), the processor 12 calculates an RS syndrome from the frame that failed in the ECC decoding correction, and subtracts the calculated RS syndrome from the RS syndrome for operation in the memory M0 (S71), thereby updating the RS syndrome for operation in the memory M0 (S72), and restoring the state of the RS syndrome in the memory M0 to the state of the frame that has only succeeded in the ECC decoding correction.

That is, when the processor 12 performs the frame binning process after repeating the correction process, the processor subtracts the syndrome generated for the decoding correction disabled frame data for which the ECC decoding failed from the syndrome stored in the memory M0 and updates the memory M0.

Fig. 22 is a circuit diagram showing a data flow between circuits (processes) in the frame collection process according to the present embodiment.

As shown by the solid line in fig. 22, after the ECC decoding process (P21), the RS decoding process circuit generates an RS syndrome from the data successfully corrected by the ECC and the RS syndrome in the memory M0 (P22). The generated RS syndrome is saved in the memory M0 (P23).

As shown by the broken line in fig. 22, when the ECC correction is not successful in the ECC decoding processing circuit, the data of the ECC frame whose ECC correction failed is written into the memory D (P25).

Fig. 23 is a circuit diagram showing a data flow between circuits (processes) in the iterative correction process according to the present embodiment. As shown with a solid line in fig. 23, data correction for the ECC frame of the memory D is performed using the RS syndrome of the memory M0 in the RS decoding processing circuit (P34). For the subject ECC frame on which data correction is performed in the RS decoding processing circuit, ECC decoding processing is performed (P31).

After the ECC decoding process (P31), an RS syndrome for operation is generated from the ECC decoded data and the RS syndrome of the memory M0 (P32), and the generated RS syndrome is stored in the memory M0 (P33). And, the ECC frame for which ECC decoding was unsuccessful is saved in the memory D (P35).

As shown by the broken line in fig. 23, when the ECC decoding process is successful, the RS decoding processing circuit generates an RS syndrome from the data successfully corrected by the ECC and the RS syndrome in the memory M0 (P32). The generated RS syndrome is saved in the memory M0.

Then, the processor 12 subtracts the RS syndrome calculated from the ECC frame that failed the ECC decoding from the RS syndrome for operation (P41), and updates the RS syndrome for operation of the memory M0 (P42). After that, the frame collection process is performed again.

As described above, in the present embodiment, by obtaining the RS syndrome of the frame that has failed in the ECC decoding correction and subtracting the RS syndrome from the RS syndrome for calculation to restore the state of the RS syndrome, it is possible to perform frame collection again after repeating correction.

Compared to the first embodiment, according to the present embodiment, the memory M1 for storing the RS syndrome for the ECC frame to which ECC correction has succeeded is not necessary, and therefore the circuit scale of the semiconductor device can be reduced.

Therefore, according to this embodiment, it is possible to realize a semiconductor device and a semiconductor storage device in which frame collection and repeated correction are repeatedly performed and error correction capability is improved without the need for the memory M1 for storing the recovered RS syndrome in the first embodiment.

According to the embodiments described above, a semiconductor device and a semiconductor storage device with improved error correction capability can be provided.

In particular, according to the above-described embodiments, the frame collection processing can be performed again after repeating correction, and therefore the possibility of further error correction can be improved.

Some embodiments of the present invention have been described, but these embodiments are exemplified as examples and are not intended to limit the scope of the invention. These new embodiments can be implemented in various other ways, and various omissions, substitutions, and changes can be made without departing from the spirit of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalent scope thereof.

Description of the reference numerals

1. The memory comprises a 1A memory controller, a 2 nonvolatile memory, a 12 processor, a 13 host interface, a 14ECC circuit, a 14a error code generating circuit, a 14b correcting circuit, a 15 memory interface, a 16 internal bus, a 21I/O interface, a 22 control part, a 23 memory cell array, a 24 sense amplifier circuit, a 25 word line driver, a 31ECC decoding processing circuit, a 32RS decoding processing circuit, a 33RS syndrome generating circuit and a 34RS data correcting circuit.

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:闪存擦除中断恢复测试方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!