Patent Description:
Artificial intelligence (Al) technology refers to a technology that emulates human abilities, such as perception, learning, reasoning, and/or natural language processing, using computer systems. AI technology is widely applied in various fields of industry. AI applications in fields such as safety, transportation, defense, health care, and the like, in which the data covered may be particularly time-sensitive, may benefit from high speed and/or reliability. <CIT> describes techniques for recovering preprogrammed data from non-volatile memory including majority voting and one or more levels of error correction code (ECC) correction.

The present invention provides a storage controller and a storage system according to the appended claims. Embodiments of the present disclosure may provide a storage controller, a storage system and/or a method of operating a storage controller, capable of high operation speed and/or high reliability.

According to an embodiment, a storage controller includes a plurality of parallel input channels configured for simultaneously receiving a plurality of data from a plurality of memories, respectively, an error estimation unit, a decision unit, an error correction unit and a selection unit. The error estimation unit generates error information by estimating an error level of the plurality of data. The decision unit performs a logical operation on the plurality of data to generate operation data. The error correction unit generates error correction data by correcting an error of the operation data. The selection unit selects one of the operation data or the error correction data based on the error information.

According to an embodiment, a storage system includes a storage memory configured to store a plurality of data in a plurality of substantially redundant memory channels, respectively, and a storage controller. The storage controller includes an error estimation unit configured to generate error information by estimating an error level of the plurality of data, a decision unit configured to perform a logical operation on the plurality of data to generate operation data, an error correction unit configured to generate error correction data by correcting an error of the operation data, and a selection unit configured to select one of the operation data or the error correction data based on the error information. The storage controller comprises a plurality of parallel input channels configured for simultaneously receiving a plurality of data from a plurality of redundant memories.

According to an embodiment, a method of operating a storage controller includes simultaneously receiving a plurality of data from substantially redundant memory channels, respectively, generating error information by estimating an error level of the plurality of data, performing a logical operation on the plurality of data to generate operation data, generating error correction data by correcting an error of the operation data, and selecting one of the operation data or the error correction data based on the error information.

The method may include performing the logical operation of a majority voting operation, a NAND operation, or an OR operation.

The method may include performing the logical operation on the plurality of data to generate hard decision error data, where performing the logical operation includes performing a majority voting operation, where the generating error correction data is based on the hard decision error data.

The method may include performing a second logical operation on the plurality of data to generate soft decision error data, where performing the second logical operation includes performing an XOR operation, where the generating error correction data is based on the soft decision error data.

A storage controller, a storage system and a method of operating the storage controller, according to embodiments, may efficiently receive a plurality of data corresponding to each of a plurality of memories. In addition, an embodiment storage controller, a storage system and a method of operating the storage controller may efficiently receive a plurality of data through various paths, prioritizing at least one of reliability or receiving speed.

Embodiments of the present disclosure will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings, in which:.

Embodiments will be described more fully hereinafter with reference to the accompanying drawings, without limitation thereto. In the drawings, like reference numerals may refer to like elements throughout. Duplicate descriptions may be omitted.

<FIG> illustrates a storage controller according to embodiments.

Referring to <FIG>, a storage system may include a storage controller <NUM>, a host <NUM>, and a storage memory <NUM>.

The storage system may constitute a part of an artificial intelligence (AI) system, which may be applied to fields such as safety, transportation, defense, health care, or those having like speed and/or reliability specifications. The storage controller <NUM> may store data used by the AI system in the storage memory <NUM> in response to a write command transmitted from the host <NUM>, and may receive the data from storage memory <NUM> in response to a read command transmitted from the host <NUM>.

Here, the storage memory <NUM> may include a plurality of memories, and may store data of the same content in a distributed, redundant and/or duplicate form in each of the plurality of memories. For example, the storage memory <NUM> may include a Redundant Array of Independent Disks (RAID), such as one made of up flash memory channels, but is not limited thereto.

When reading the stored data, the storage controller <NUM> may simultaneously receive and utilize the data from the plurality of memories. As such, although some of the duplicated data may include errors, the other duplicated data may be used to correct the errors and thus maintain reliability of the data for the AI system. The storage system may be referred to as a system to which a hardware multiplexing technique is applied. The AI field to which the storage system is applied may be closely related to human life, for example, and maintain high reliability for the data stored in and provided by the storage system.

In the storage system with high speed and/or reliability of data, the storage controller <NUM> may include an error estimation unit (EEU) <NUM>, a decision unit (DU) <NUM>, an error correction unit (ECU) <NUM>, and a selection unit (SU) <NUM>.

The error estimation unit <NUM> and the decision unit <NUM> may receive the redundantly stored data simultaneously in the form of a bit stream through a plurality of channels (CH[<NUM>:M]; where M is a natural number) from each of the plurality of memories. Hereinafter, data received simultaneously in the form of a bit stream from each of the plurality of memories may be referred to as `a plurality of data'. Each of the plurality of data generally includes corresponding bits in the same bit locations. When there is no error in the plurality of data, values of the corresponding bits have the same value. However, when an error exists in the plurality of data, values of the corresponding bits may be different from each other.

The error estimation unit <NUM> estimates an error level of the plurality of data, based on the plurality of data, and generate error information ERRI as a result of the estimation. Errors in the plurality of data may increase as the number of repeated program/erasure (P/E) cycles of memory cells (e.g., flash memory cells) is increased, the memory cells in the program state were repeatedly read, or the memory cells are neglected for a long time after being programmed.

The error information ERRI is set to have a first logic value when the error level of the plurality of data is estimated to be higher than a preset level, and a second logic value when the error level of the plurality of data is estimated to be lower than the preset level, without limitation.

The error estimation unit <NUM> may transmit error information ERRI to the error correction unit <NUM> and the selection unit <NUM>. The error information ERRI may be further described farther below with reference to <FIG> and <FIG>.

The decision unit <NUM> generates operation data DTR by performing a logical operation on the plurality of data. The logical operation may be performed based on corresponding bits of each of the plurality of data. The logical operation may be performed to quickly correct an error existing in the plurality of data, when the error level of the plurality of data is relatively low so a higher-level correction need not be performed by the error correction unit <NUM>.

Furthermore, the decision unit <NUM> may generate decision error data ILE based on the plurality of data. The decision error data ILE may indicate locations where uncorrected errors may be relatively more likely to exist in the operation data after or despite the logical operation being performed. Embodiments of the configuration of the decision unit <NUM> may be described farther below.

The error correction unit <NUM> may receive the operation data DTR from the decision unit <NUM>. The error correction unit <NUM> may correct uncorrected errors existing in the operation data DTR to generate error correction data CDTR. The error correction unit <NUM> may use various error correction code (ECC) or like schemes in correcting the errors.

The error correction unit <NUM> may receive the decision error data ILE from the decision unit <NUM>. The error correction unit <NUM> corrects errors existing in the operation data DTR based on the locations where uncorrected errors are likely to exist, based on the decision error data ILE, to generate error correction data CDTR.

The error correction unit <NUM> may receive error information ERRI from the error estimation unit <NUM>. The error correction unit <NUM> may be enabled or disabled based on the error information ERRI. According to an embodiment, when the error information ERRI has a first logic value, the error correction unit <NUM> may be enabled to generate error correction data CDTR, and when the error information ERRI has a second logic value, the error correction unit <NUM> may be disabled so as not to generate the error correction data CDTR. However, the scope of the present disclosure is not limited thereto.

In an alternate embodiment, the error information ERRI may be a digital rather than logical valued signal, and/or may have more than two possible values. For example, a first value of ERRI may dictate the unconditional use of DTR, a second value of ERRI may dictate the unconditional use of CDTR, and a third value of ERRI may dictate the use of DTR or CDTR based on a value of ILE. In such an embodiment, the ECU <NUM> may output DTR as CDTR based on ERRI and ILE, or otherwise output CDTR.

The selection unit <NUM> may receive the operation data DTR from the decision unit <NUM>, the error correction data CDTR from the error correction unit <NUM>, and the error information ERRI from the error estimator <NUM>.

The selection unit <NUM> selects one of the operation data DTR and the error correction data CDTR based on the error information ERRI and output the selected data to the host <NUM>. According to an embodiment, when the error information ERRI has a first logical value, the selection unit <NUM> selects the error correction data CDTR and when the error information ERRI has a second logical value, the selection unit <NUM> selects the operation data DTR. However, the scope of the present disclosure is not limited thereto.

<FIG> illustrates a storage controller according to an embodiment of the present disclosure.

Referring to <FIG> and <FIG>, a storage controller <NUM>-<NUM> includes an error estimation unit <NUM>-<NUM>, a hard decision unit <NUM>-<NUM>, an error correction unit <NUM>, and a selection unit <NUM>-<NUM>. The components having the same reference numerals in <FIG> and <FIG> perform similar functions, and redundant descriptions may be omitted.

The error estimation unit <NUM>-<NUM> and the hard decision unit <NUM>-<NUM> may simultaneously receive a plurality of data DTR0, DTR1, and DTR2 representing the same information through a plurality of channels CH[<NUM>], CH[<NUM>], and CH[<NUM>] in the form of a bit stream. Here, the data DTR0 is data received through the channel CH [<NUM>], the data DTR <NUM> is data received through the channel CH [<NUM>], and the data DTR2 is the channel CH[<NUM>]. Although only three channels CH[<NUM>], CH[<NUM>], and CH[<NUM>] are shown in <FIG>, the number of channels is for convenience of description, and the scope of the present disclosure is not limited thereto.

The error estimator <NUM>-<NUM> estimates an error level of the plurality of data DTR0, DTR1, and DTR2 based on the plurality of data DTR0, DTR1, and DTR2, and provides error information ERRI as a result of the estimation.

When the error level of the plurality of data DTR0, DTR1, and DTR2 is estimated to be equal to or higher than a preset level, the error information ERRI is set to have a first logical value; and when the error level is estimated to be less than the preset level, the error information ERRI is set to have a second logical value. According to an embodiment, the estimation of the error level may be performed by examining corresponding bits of data DTR0, DTR1, and DTR2 in units of one bit. However, according to an alternate embodiment, the estimation of the error level may be performed by examining in units of multiple bits.

The error estimation unit <NUM>-<NUM> may further include other components to estimate the error level. According to an embodiment, the error estimation unit <NUM>-<NUM> may further include a syndrome operation unit <NUM>. In this case, the error estimation unit <NUM>-<NUM> may estimate the error level based on syndrome data generated by the syndrome operation unit <NUM>.

The hard decision unit <NUM>-<NUM> may perform a logical operation on a plurality of data DTR0, DTR1, and DTR2 to generate hard decision operation data HDTR. The logical operation may be performed based on corresponding bits of each of the plurality of data DTR0, DTR1, and DTR2. The logical operation may be performed to quickly correct an error existing in a plurality of data DTR0, DTR1, and DTR2, although it need not reach the level of correction capable of being performed by the error correction unit <NUM>.

The hard decision unit <NUM>-<NUM> may include a gate circuit including a plurality of logic gates to perform the logic operation. Hereinafter, the process of performing the logical operation by an embodiment of the hard decision unit <NUM>-<NUM> of <FIG> may be described in greater detail.

<FIG> illustrates an embodiment of a gate circuit that may be included in the hard decision unit of <FIG>; and <FIG> is used for explaining a logic operation performed by the gate circuit of <FIG>.

Referring to <FIG>, a gate circuit <NUM>-1a may include a majority voting circuit that implements a Boolean logic majority function or median operator. According to an embodiment, the majority voting circuit may include logical AND gates <NUM>-<NUM>, <NUM>-<NUM> and <NUM>-<NUM>, and a logical OR gate <NUM>-<NUM>. In an alternate embodiment, each of these gates may be replaced with a NAND gate.

The gate <NUM>-<NUM> receives data DTR0 and DTR1 to perform a logical AND operation, and the gate <NUM>-<NUM> receives data DTR1 and DTR2 to perform a logical AND operation, and the gate <NUM>-<NUM> receives data DTR2 and DTR0 to perform a logical AND operation. The gate <NUM>-<NUM> may perform a logical OR operation by receiving a result of performing the logical AND operation of each of the gates <NUM>-<NUM>, <NUM>-<NUM>, and <NUM>-<NUM>. According to an embodiment, the gate circuit <NUM>-1a may perform a majority voting logical operation based on the corresponding bits, e.g., DTR0[k], DTR1[k], and DTR2[k]; where k is an integer greater than or equal to <NUM>, of the plurality of data DTR0, DTR1, and DTR2. The majority voting logic operation is based on an empirical fact that it is far less likely for an error to occur in a majority of the bits DTR0[k], DTR1[k], and DTR2[k].

The bits DTR0[k], DTR1[k], and DTR2[k] may have a first value or a second value. According to an embodiment, the first value is '<NUM>', and the second value is `<NUM>'. According to an alternate embodiment, the first value may be `<NUM>', and the second value may be `<NUM>'.

<FIG> illustrates the result of a majority voting logic operation MJR performed by the gate circuit <NUM>-<NUM> based on the corresponding bits of a plurality of data.

Referring to <FIG>, a gate circuit <NUM>-1a sets a bit value of hard decision operation data to a first value when bits having the first value among the corresponding bits DTR0[k], DTR1[k], and DTR2[k] outnumber the bits having the second value among the corresponding bits DTR0[k], DTR1[k], and DTR2[k]. Gate circuit <NUM>-1a sets a bit value of hard decision operation data to the second value when bits having the second value among the corresponding bits DTR0[k], DTR1[k], and DTR2[k] outnumber the bits having the first value among the corresponding bits DTR0[k], DTR1[k], and DTR2[k]. That is, the gate circuit <NUM>-1a may partially correct an error existing in the plurality of data DTR0, DTR1, and DTR2 as a result of performing the majority voting logic operation on the corresponding bits DTR0[k], DTR1[k], and DTR2[k].

<FIG> illustrates an embodiment of a gate circuit that may be included in the hard decision unit of <FIG>.

Referring to <FIG>, the gate circuit <NUM>-1b may include a logical OR circuit, a logical AND circuit, and a majority voting circuit. According to an embodiment, the logical OR circuit includes a logical OR gate <NUM>-<NUM>; the logical AND circuit includes a logical AND gate <NUM>-<NUM>; and the majority voting circuit includes logical AND gates <NUM>-<NUM>, <NUM>-<NUM> and <NUM>-<NUM>, and the logical OR gate <NUM>-<NUM>. Here, the gate <NUM>-<NUM> receives a plurality of data DTR0, DTR1, and DTR2 to perform a logical OR operation, and the gate <NUM>-<NUM> receives the plurality of data DTR0, DTR1, and DTR2 to perform a logical AND operation. The majority voting logic operation has been described above with reference to <FIG>, so redundant description may be omitted.

The gate circuit <NUM>-1b may perform any one or more of a logical OR operation, a logical AND operation, and a majority voting logic operation based on the corresponding bits, e.g., DTR0[k], DTR1[k], and DTR2[k]; where k is an integer greater than or equal to <NUM>, of the plurality of data DTR0, DTR1, and DTR2.

The logical OR operation may be performed when it is estimated that an error, hereinafter referred to as a 'first error', existing in the plurality of data DTR0, DTR1, and DTR2 may have occurred because the number of repeatable program/erase P/E was exceeded, the memory cells in the program state were continuously read, or it was beyond the limits of an ability of memory cells to reliably preserve data after being programmed a long time earlier.

The logical AND operation may be performed when it is estimated that an error, hereinafter referred to as a 'second error', existing in the plurality of data DTR0, DTR1, and DTR2 may have occurred because it was beyond the limits of an ability of memory cells to reliably preserve data after being programmed a long time earlier. Hereinafter, the logical OR operation and the logical AND operation may be described in more detail.

<FIG> are used for describing a logical operation performed by a logical OR circuit included in the gate circuit of <FIG>. <FIG> are used for explaining a logical operation performed by the logical AND circuit of <FIG>.

Referring to <FIG>, when the plurality of data DTR0, DTR1, and DTR2 are stored in a NAND cell, a distribution of the original erased state ERS0 of the NAND cell may be changed to the distribution of the deteriorated state ERS shifted towards the right. Here, the horizontal axis represents the threshold voltage VTH of the NAND cell, and the vertical axis represents the number of NAND cells having the threshold voltage VTH. Such variation in the distribution of the NAND cell may occur when the P/E cycle is repeated, or when a read disturb occurs as a repeated read operation is performed with respect to memory cells in a program state.

<FIG> illustrates the result of a logical OR operation when the gate circuit <NUM>-1b performs the logical OR operation based on the corresponding bits, e.g., DTR0[k], DTR1[k], and DTR2[k]; where k is an integer greater than or equal to <NUM>, of the plurality of data DTR0, DTR1, and DTR2. The gate circuit <NUM>-1b may partially detect or correct the first error existing in the plurality of data DTR0, DTR1, and DTR2 as a result of performing the logical OR operation on the corresponding bits DTR0[k], DTR1[k], and DTR2[k].

Referring to <FIG>, when the plurality of data DTR0, DTR1, and DTR2 are stored in a NAND cell, a distribution of the original programmed state PGM0 of the NAND cell may be changed to the distribution of the deteriorated state PGM shifted towards the left. Here, the horizontal axis represents the threshold voltage VTH of the NAND cell, and the vertical axis represents the number of NAND cells having the threshold voltage VTH. Such variation in the distribution of the NAND cell may occur when the memory cells are out of the time limit of reliable data retention due to a long delay after the program operation.

<FIG> illustrates the result of a logical AND operation when the gate circuit <NUM>-1b performs the logical AND operation based on the corresponding bits DTR0[k], DTR1[k], and DTR2[k]; where k is an integer greater than or equal to <NUM>, of the plurality of data DTR0, DTR1, and DTR2. That is, the gate circuit <NUM>-1b may partially detect or correct the second error existing in the plurality of data DTR0, DTR1, and DTR2 as a result of performing the logical AND operation on the corresponding bits DTR0[k], DTR1[k], and DTR2[k].

Referring back to <FIG>, the hard decision unit <NUM>-<NUM> may generate hard decision error data HILE based on the plurality of data DTR0, DTR1, and DTR2.

The hard decision error data HILE may include data that indicates locations where uncorrected errors are likely to exist in the hard decision operation data HDTR despite the logical operations being performed, as a bit corresponding to a bit of hard decision operation data HDTR. According to an embodiment, the hard decision unit <NUM>-<NUM> may set a bit value of the hard decision error data HILE to a first logical value when the corresponding bits DTR0[k], DTR1[k], and DTR2[k] have both of the first value and a second value and when a difference between a number of bits having the first value among the corresponding bits DTR0[k], DTR1[k], and DTR2[k] and a number of bits having the second value among the corresponding bits DTR0[k], DTR1[k], and DTR2[k] is equal to or less than a predetermined value. For example, in the embodiment of <FIG>, assuming that the first value is '<NUM>', the second value is `<NUM>', the predetermined value is '<NUM>', and the first logical value is '<NUM>', value of bits of the hard decision error data HILE may be set as HILE[<NUM>:<NUM>] = (<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>). <NUM> of the <NUM> bits were not unanimous between the three channels.

The error correction unit <NUM> may receive the hard decision operation data HDTR and the hard decision error data HILE from the hard decision unit <NUM>. The error correction unit <NUM> may correct errors existing in the hard decision operation data HDTR using the locations where uncorrected errors are likely to exist based on the hard decision error data HILE, and generate error correction data CDTR.

The error correction unit <NUM> may receive error information ERRI from the error estimation unit <NUM>-<NUM>. The error correction unit <NUM> may be enabled or disabled based on the error information ERRI. According to an embodiment, when the error information ERRI has a first logic value, the error correction unit <NUM> is enabled to generate error correction data CDTR; and when the error information ERRI has a second logic value, the error correction unit <NUM> is disabled not to generate the error correction data CDTR. However, the scope of the present disclosure is not limited thereto. In an alternate embodiment, the output CDTR of the error correction unit <NUM> may be used or ignored by the SU <NUM> based on the error information ERRI.

Referring to <FIG>, <FIG>, and <FIG>, the storage controller <NUM>-<NUM> includes an error estimation unit <NUM>-<NUM>, a hard decision unit <NUM>-<NUM>, a soft decision unit <NUM>-<NUM>, an error correction unit <NUM>-<NUM>, and a selection unit <NUM>-<NUM>. The storage controller <NUM>-<NUM> illustrated in <FIG>, unlike the storage controller <NUM>-<NUM> illustrated in <FIG>, may further include the soft decision unit <NUM>-<NUM>. The components having the same reference numerals in <FIG> and <FIG> perform similar functions, so redundant descriptions may be omitted.

The soft decision unit <NUM>-<NUM> may simultaneously receive a plurality of data DTR0, DTR1, and DTR2 representing the same information through a plurality of channels CH[<NUM>], CH[<NUM>], and CH[<NUM>], each in the form of a bit stream.

The soft decision unit <NUM>-<NUM> may generate soft decision error data SILE by performing logical operations on the plurality of data DTR0, DTR1, and DTR2.

The logical operations may be performed to quickly correct an error existing in the plurality of data DTR0, DTR1, and DTR2, even though it need not reach the level of correction capable of being performed by the error correction unit <NUM>-<NUM>.

The soft decision unit <NUM>-<NUM> may include a gate circuit including a plurality of gates to perform the logic operations. Hereinafter, the process of performing the logical operations by the soft decision unit <NUM>-<NUM> may be described in greater detail.

<FIG> is used for describing logical operations performed by the soft decision unit of <FIG>.

In <FIG>, the result of the soft decision unit <NUM>-<NUM> performing logic operations based on bits corresponding to the plurality of data DTR0, DTR1, and DTR2 is illustrated. According to an embodiment, the soft decision unit <NUM>-<NUM> may set a bit value of the soft decision error data SILE to a first logical value when the corresponding bits DTR0[k], DTR1[k], and DTR2[k] have both of a first value and a second value. For example, in the embodiment of <FIG>, assuming that the first value is '<NUM>', the second value is `<NUM>', the first logical value is '<NUM>', value of bits of the soft decision error data SILE may be set as SILE[<NUM>:<NUM>] = (<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,<NUM>,). That is, the soft decision (SD) unit <NUM>-<NUM> may perform a logical exclusive OR (XOR) operation based on bits corresponding to the plurality of data, but is not limited thereto.

Referring back to <FIG>, the error correction unit <NUM>-<NUM> may receive the hard decision operation data HDTR and the hard decision error data HILE from the hard decision unit <NUM>-<NUM>. The error correction unit <NUM>-<NUM> may further receive the soft decision error data SILE form the soft decision unit <NUM>-<NUM>.

The error correction unit <NUM>-<NUM> may correct errors existing in the hard decision operation data HDTR for locations where uncorrected errors are likely to exist based on the hard decision error data HILE and the soft decision error data SILE to generate error correction data CDTR.

Referring to <FIG>, <FIG>, and <FIG>, the storage controller <NUM>-<NUM> includes an error estimation unit <NUM>-<NUM>, a hard decision unit <NUM>-<NUM>, a soft decision unit <NUM>-<NUM>, an error correction unit <NUM>-<NUM>, and a selection unit <NUM>-<NUM>. The error estimation unit <NUM>-<NUM>, unlike the error estimation unit <NUM>-<NUM> shown in <FIG>, may further receive from the host information ELEI for estimating an error level of the plurality of data DTR0, DTR1, and DTR2. Here, the information ELEI may be information that is related to a storage memory, and may be accumulated while the storage memory is operating after the storage controller and the storage memory are established in a storage system.

Referring to <FIG> and <FIG>, the storage controller <NUM>-<NUM> includes an error estimation unit <NUM>-<NUM>, a hard decision unit <NUM>-<NUM>, a soft decision unit <NUM>-<NUM>, an error correction unit <NUM>-<NUM>, a selection unit <NUM>-<NUM>, and a logical OR gate <NUM>-<NUM>. The storage controller <NUM>-<NUM> illustrated in <FIG>, unlike the storage controller <NUM>-<NUM> illustrated in <FIG>, may further include the logical OR gate <NUM>-<NUM>. The components having the same reference numerals in <FIG> and <FIG> perform similar functions, so redundant descriptions may be omitted.

The logical OR gate <NUM>-<NUM> may receive error information ERRI from the error estimation unit <NUM>-<NUM> and receive attention information ATTI from the host. The attention information ATTI may be information sensed by the host <NUM> and transmitted to the storage controller <NUM>-<NUM> when a storage system including a host <NUM>, the storage controller <NUM>-<NUM>, and a storage memory <NUM> operates in an emergency situation in which a high degree of speed or promptness is required. According to an embodiment, the logical OR gate <NUM>-<NUM> may allow the selection unit <NUM>-<NUM> to select hard decision operation data HDTR regardless of the error information ERRI when the attention information indicates that the error level or rate of the plurality of data is lower than a reference value. The reference value may be predetermined based on error information accumulated and stored while the storage system operates.

<FIG> illustrates a method of operating a storage controller according to an embodiment.

Referring to <FIG> and <FIG>, the error estimator <NUM> generates error information ERRI by estimating an error level of a plurality of data at function block S <NUM>. The decision unit <NUM> performs a logical operation on the plurality of data to generate operation data DTR at function block S2000. The error correction unit <NUM> generates error correction data CDTR by correcting an error of the operation data DTR based on decision error data ILE at function block S3000. The selection unit <NUM> selects one of the operation data DTR or the error correction data CDTR based on the error information ERRI at function block S4000.

<FIG> illustrates a memory system according to an embodiment.

Referring to <FIG>, a memory system may include a memory controller <NUM> and at least one memory device <NUM>.

The memory device <NUM> may perform read, write and erase operations under control of the memory controller <NUM>. The memory device <NUM> may receive control signals CTRL, commands CMD, addresses ADDR and write data DATA from the memory controller <NUM> and transmit read data DATA to the memory controller <NUM>.

The memory controller <NUM> may include an ECC engine <NUM>. The ECC engine <NUM> may include an ECC encoder <NUM> and an ECC decoder <NUM>, such as but not limited to that illustrated in <FIG>, to check and correct error bits or fail bits. The ECC engine <NUM> may perform the ECC operation on data units of the ECC sectors. For example, the data unit of a page may be 8KB though 64KB and the data unit of the ECC sector may be 1KB through 4KB, respectively.

The ECC encoder <NUM> may perform error correction encoding of the data to be provided to the memory device <NUM> to generate a codeword including parity bits. The codeword may be transferred to and stored in a plurality of storage regions of the memory device <NUM>. The ECC encoder <NUM> may perform the encoding by data units of ECC sectors. The ECC decoder <NUM> may perform error correction decoding of the data read out from the memory device <NUM> and determine failure or success of the error correction decoding. The ECC decoder <NUM> may correct the error bits of the data using the parity bits in the codeword. If the error bit number exceeds the threshold number or the correctible bit number, the ECC decoder <NUM> does not correct the error bits and the error correction is incomplete. According to an embodiment, the ECC decoder <NUM> may provide logic operation data by performing a logic operation on a plurality of read data that are read out from the plurality of storage regions, and perform a combined ECC decoding based on the logic operation data.

As non-limiting examples, the ECC encoder <NUM> and the ECC decoder <NUM> may check and correct bit errors using coded modulations such as low density parity check (LDPC) code, Bose, Chaudhuri, Hocquenghem (BCH) code, turbo code, Reed-Solomon code (RSC), convolution code, recursive systematic code, trellis-coded modulation (TCM), block coded modulation (BCM), or the like.

<FIG> illustrates an embodiment of a storage memory of <FIG> or memory device included in the memory system of <FIG>.

Referring to <FIG>, a memory device <NUM> includes a memory cell array <NUM>, an address decoder <NUM>, a read-write circuit <NUM>, a data input/output (I/O) circuit <NUM>, a voltage generating circuit <NUM>, and control logic or circuit <NUM>. The memory device <NUM> includes nonvolatile storage memory.

The memory cell array <NUM> is connected to the address decoder <NUM> through word lines WL and selection lines. For example, the selection lines may include string selection lines SSL and ground selection lines GSL. The memory cell array <NUM> is connected to the read-write circuit <NUM> through bit lines BL.

The memory cell array <NUM> may include a plurality of memory cells. For example, the memory cell array <NUM> may include memory cells disposed along row and column directions. For example, the memory cell array <NUM> may include a plurality of memory cells, each cell storing one or more data bits. The memory cell array may further have a vertical NAND (VNAND) flash memory structure.

The address decoder <NUM> is configured to operate in response to a control signal of the control logic <NUM>. The address decoder <NUM> may receive addresses ADDR from an external device, such as a memory controller.

The address decoder <NUM> is configured to decode a row address among the received addresses ADDR. The address decoder <NUM> is configured to select a word line corresponding to the decoded row address among the word lines WL. The address decoder <NUM> is configured to select selection lines corresponding to the decoded row address among the selection lines including string selection lines SSL and ground selection lines GSL.

The address decoder <NUM> is configured to deliver various voltages received from the voltage generating circuit <NUM> to the selected word line, unselected word line, selected selection line, and unselected selection line.

The address decoder <NUM> is configured to decode a column address from the received address ADDR. The address decoder <NUM> delivers the decoded column address DCA to the read-write circuit <NUM>.

In an embodiment, the address decoder <NUM> may include a row decoder decoding a row address, a column decoder decoding a column address, and an address buffer storing a received address ADDR.

The read-write circuit <NUM> is connected to the memory cell array <NUM> through bit lines BL, and is connected to the data I/O circuit <NUM> through data lines DL. The read-write circuit <NUM> operates in response to a control of the control logic <NUM>. The read-write circuit <NUM> receives a decoded column address DCA from the address decoder <NUM>. Using the decoded column address DCA, the read-write circuit <NUM> selects bit lines BL.

The read-write circuit <NUM> receives data over data lines DL from the data I/O circuit <NUM>, and writes received data over bit lines BL to the memory cell array <NUM>. The read-write circuit <NUM> reads data over the bit lines BL from the memory cell array <NUM> and delivers the read data over the data lines DL to the data I/O circuit <NUM>.

In an embodiment, the read-write circuit <NUM> may include a page buffer, or page register, and a column selection circuit. In an embodiment, the read-write circuit <NUM> may further include a sense amplifier, a write driver, and a column selection circuit.

The data I/O circuit <NUM> is connected to the read-write circuit <NUM> through data lines DL. The data I/O circuit <NUM> operates in response to a control signal of the control logic <NUM>. The data I/O circuit <NUM> is configured to exchange data DATA with an external device or network. The data I/O circuit <NUM> is configured to deliver data DATA from the external device or network to the read-write circuit <NUM> through data lines DL. The data I/O circuit <NUM> is configured to output data DATA delivered from the read-write circuit <NUM> through data lines DL to the external device or network. In an embodiment, the data I/O circuit <NUM> may include a data buffer.

The voltage generating circuit <NUM> is connected to the memory cell array <NUM>, the address decoder <NUM>, and the control logic or circuit <NUM>. The voltage generating circuit <NUM> receives power from an external power source. In an embodiment, the voltage generating circuit <NUM> receives a power voltage Vcc and a negative or ground voltage Vss from the external power source. In response to a control signal of the control logic or circuit <NUM>, the voltage generating circuit <NUM> is configured to generate voltages having various voltage levels from the power voltage Vcc and the negative or ground voltage Vss. In an embodiment, the voltage generating circuit <NUM> is configured to generate various voltages such as a high voltage VPP, a program voltage Vpgm, a pass voltage Vpass, a read voltage Vread, and an erase voltage Vers.

Voltages generated by the voltage generating circuit <NUM> are supplied to the address decoder <NUM> and the memory cell array <NUM> under control of the control logic or circuit <NUM>. For example, a program voltage Vpgm and a pass voltage Vpass may be supplied to the address decoder <NUM> during a program operation. During a read operation, a read voltage Vread may be supplied to the address decoder <NUM>. During an operation of erasing the memory cell array <NUM>, an erase voltage Vers may be supplied to the memory cell array <NUM>. Voltages generated by the voltage generating circuit <NUM> are not limited to the above-mentioned voltages.

The control logic or circuit <NUM> is connected to the address decoder <NUM>, the read-write circuit <NUM>, and the data I/O circuit <NUM>. The control logic or circuit <NUM> may be further connected to, or include, a pass/fail check circuit. The control logic or circuit <NUM> is configured to control general operations of the nonvolatile memory device <NUM>. The control logic or circuit <NUM> operates in response to a control signal CTRL delivered from the external device or network.

<FIG> illustrates the memory cell array in <FIG>, and <FIG> illustrates an equivalent circuit of a memory block in <FIG>.

Referring to <FIG>, the memory cell array <NUM> may include a plurality of memory blocks BLK1 to BLKz. In an embodiment, the memory blocks BLK1 to BLKz may be selected by the address decoder <NUM>. For example, the address decoder <NUM> may select a particular memory block BLKi corresponding to a block address among the memory blocks BLK1 to BLKz.

The memory block BLKi of <FIG> may be formed on a substrate in a three-dimensional structure, such as a vertical NAND (VNAND) structure. For example, a plurality of memory cell strings included in the memory block BLKi may be formed in a direction perpendicular to the substrate.

Referring to <FIG>, the memory block BLKi may include memory cell strings NS11 to NS33 coupled between bit-lines BL1, BL2 and BL3 and a common source line CSL. Each of the memory cell strings NS11 to NS33 may include a string selection transistor SST having its gate connected to a corresponding cell string select line, and a ground selection transistor GST having it gate connected to a corresponding ground select line, and a plurality of memory cells MC1 through MC8 connected therebetween,. In <FIG>, each of the memory cell strings NS11 to NS33 is illustrated to include eight memory cells MC1 to MC8. However, embodiments are not limited thereto. In an alternate embodiment, each of the memory cell strings NS11 to NS33 may include any number of memory cells.

The string selection transistor SST may be connected to corresponding string selection lines SSL1 to SSL3, and each define a cell string of vertically arranged memory cells. The plurality of memory cells MC1 to MC8 may be connected to corresponding word-lines WL1 to WL8, respectively. The ground selection transistor GST may be connected to corresponding ground selection lines GSL1 to GSL3. The string selection transistor SST may be connected to corresponding bit-lines BL1, BL2 and BL3, and the ground selection transistor GST may be connected to the common source line CSL.

Word-lines (e.g., WL1) having the same height may be commonly connected, and the ground selection lines GSL1 to GSL3 and the string selection lines SSL1 to SSL3 may be separated. The ground select lines GSL1 through GSL3 may also be commonly connected to one another, but aren't limited thereto. In an alternate embodiment, the memory cell array <NUM> may be coupled to any number of word-lines and bit-lines.

The memory device <NUM> may include an on-chip ECC circuit <NUM>. When the data is written in the memory cell array, the on-chip ECC circuit <NUM> may encode the data to generate parity bits. For example, the parity bits may be stored in a parity data region in the memory cell array. When the data are read out from the memory cell array, the on-chip ECC circuit <NUM> may decode the read data and the parity bits to check and correct any bit errors. The on-chip ECC circuit <NUM> may include an encoder and a decoder for performing such encoding and decoding. According to an embodiment, the decoder in the on-chip ECC circuit <NUM> may provide logic operation data, similar to the ECC decoder of <FIG>, by performing a logic operation on a plurality of read data that are read out from the plurality of storage regions, and perform a combined ECC decoding based on the logic operation data.

<FIG> illustrates a solid-state disk or solid-state drive (SSD) according to an embodiment.

Referring to <FIG>, an SSD includes a nonvolatile memory array <NUM> having multiple channels of nonvolatile memory devices NVM connected to an SSD controller <NUM>.

The SSD controller <NUM> is connected to the nonvolatile memory devices NVM of the array <NUM> through multiple channels CH1 to CHi, respectively. The SSD controller <NUM> includes one or more processors <NUM>, a buffer memory <NUM>, an ECC block <NUM>, a host interface <NUM>, and a nonvolatile memory interface <NUM>. The buffer memory <NUM> stores data used to drive the SSD controller <NUM>. The buffer memory <NUM> comprises multiple memory lines each storing data or a command. The ECC block <NUM> calculates error correction code values for data to be programmed at a write operation, and corrects any errors in read data using an error correction code value at a read operation. In a data recovery operation, the ECC block <NUM> corrects an error in data recovered from the nonvolatile memory devices NVM.

As described above, A storage controller, a storage system and/or a method of operating the storage controller may efficiently receive a plurality of data corresponding to each of the plurality of memories. In addition, a storage controller, a storage system and a method of operating the storage controller may efficiently receive a plurality of data through various paths, prioritizing either reliability and/or receiving speed.

The present inventive concept may be applied to any devices and systems including a memory device with error check and correction functionality. For example, the present inventive concept may be applied to systems such as a mobile phone, a smart phone, a personal digital assistant (PDA), a portable multimedia player (PMP), a digital camera, a camcorder, a personal computer (PC), a server computer, a workstation, a laptop computer, a digital television (TV), a set-top box, a portable game console, a navigation system, or the like.

Claim 1:
A storage controller (<NUM>) comprising:
a plurality of parallel input channels configured to simultaneously receive a plurality of data from a plurality of redundant memories, respectively;
an error estimation unit (<NUM>) configured to generate error information by estimating an error level of the plurality of data;
a decision unit (<NUM>) configured to perform a logical operation on the plurality of data to generate operation data;
an error correction unit (<NUM>) configured to generate error correction data by correcting an error of the operation data; and
a selection unit (<NUM>) configured to select one of the operation data or the error correction data based on the error information.