KR20210074425A - 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 - Google Patents
에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20210074425A KR20210074425A KR1020190164302A KR20190164302A KR20210074425A KR 20210074425 A KR20210074425 A KR 20210074425A KR 1020190164302 A KR1020190164302 A KR 1020190164302A KR 20190164302 A KR20190164302 A KR 20190164302A KR 20210074425 A KR20210074425 A KR 20210074425A
- Authority
- KR
- South Korea
- Prior art keywords
- level
- data
- decoder
- level decoder
- syndrome
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
- H03M13/1117—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
- H03M13/1168—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/159—Remainder calculation, e.g. for encoding and syndrome calculation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명의 실시 예에 따른 하이 레벨 디코더 및 로우 레벨 디코더를 포함하는 스토리지 컨트롤러의 동작 방법은 불휘발성 메모리 장치로부터 리드한 초기 데이터를 디코딩 한 제1 데이터 및 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 생성하는 단계, 제1 신드롬 가중치가 특정 값이면 제1 데이터를 호스트로 출력하는 단계, 제1 신드롬 가중치가 기준 값을 초과하면 제1 에러 정정 능력을 갖는 하이 레벨 디코더를 선택하여 제1 데이터를 디코딩 하는 단계, 및 제1 신드롬 가중치가 기준 값 이하이면 제1 에러 정정 능력보다 낮은 제2 에러 정정 능력을 갖는 로우 레벨 디코더를 선택하여 제1 데이터를 디코딩 하는 단계를 포함한다.
Description
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법에 관한 것이다.
반도체 메모리는 데이터를 저장하는 쓰기 동작, 그리고 저장된 데이터를 읽는 읽기 동작을 지원한다. 반도체 메모리에 데이터를 쓰는 동안, 반도체 메모리에 데이터가 저장되어 있는 동안, 또는 반도체 메모리로부터 데이터를 읽는 동안, 에러가 발생할 수 있다. 이러한 에러는 별도의 에러 정정 수단을 통해서 정정될 수 있다.
반도체 메모리가 제조된 직후의 초반 시나리오에서, 낮은 수준의 에러가 발생할 수 있다. 낮은 수준의 에러를 빠른 속도로 처리하는 에러 처리 장치가 요구될 수 있다. 반도체 메모리를 반복적으로 사용한 이후의 후반 시나리오에서, 높은 수준의 에러가 발생할 수 있다. 높은 수준의 에러를 처리하기 위해서 에러 정정 능력이 높은 에러 처리 장치가 요구될 수 있다. 다만, 복수의 반도체 메모리들 각각에 대해서 두 가지 시나리오를 대비한 다수의 에러 처리 장치를 배치하면, 칩 면적이 증가하거나 특정 시나리오에서 처리율이 감소하는 문제가 있다.
본 발명은 상술된 기술적 문제점을 해결하기 위한 것으로, 본 발명의 실시 예에 따르면, 데이터의 에러 수준에 따라 선택된 에러 정정 장치가 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법이 제공된다.
또한, 낮은 에러 정정 능력을 갖는 에러 정정 장치들을 조합하여 높은 에러 정정 능력을 갖는 에러 정정 장치처럼 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법이 제공된다.
본 발명의 실시 예에 따른 하이 레벨 디코더 및 로우 레벨 디코더를 포함하는 스토리지 컨트롤러의 동작 방법은 불휘발성 메모리 장치로부터 리드한 초기 데이터를 디코딩 한 제1 데이터 및 상기 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 생성하는 단계, 상기 제1 신드롬 가중치가 특정 값이면 상기 제1 데이터를 호스트로 출력하는 단계, 상기 제1 신드롬 가중치가 기준 값을 초과하면 제1 에러 정정 능력을 갖는 하이 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계, 및 상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 제1 에러 정정 능력보다 낮은 제2 에러 정정 능력을 갖는 로우 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 초기 데이터를 저장하도록 구성된 불휘발성 메모리 장치와 연결된 디코더, 제1 에러 정정 능력을 갖는 하이 레벨 디코더, 및 상기 제1 에러 정정 능력보다 낮은 제2 에러 정정 능력을 갖는 로우 레벨 디코더를 포함하는 ECC(Error Correction Code) 코어 유닛, 및 상기 디코더로부터 제1 신드롬 가중치를 수신하고, 상기 제1 신드롬 가중치가 기준 값을 초과하면 상기 하이 레벨 디코더로 제1 데이터의 디코딩을 요청하는 요청 신호를 출력하고, 상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 로우 레벨 디코더로 상기 요청 신호를 출력하도록 구성된 ECC 스케줄러를 포함하되, 상기 디코더는 상기 불휘발성 메모리 장치로부터 상기 초기 데이터를 리드하고, 상기 리드된 초기 데이터를 디코딩 한 상기 제1 데이터 및 상기 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 생성하며, 상기 제1 신드롬 가중치가 특정 값이면 호스트로 상기 제1 데이터를 출력하고, 상기 제1 신드롬 가중치가 상기 특정 값이 아니면 상기 요청 신호를 수신한 상기 하이 레벨 디코더 또는 상기 로우 레벨 디코더로 상기 제1 데이터를 출력하도록 구성된다.
본 발명의 실시 예에 따른 스토리지 장치는 제1 에러 정정 능력을 갖고, 불휘발성 메모리 장치로부터 리드한 초기 데이터를 디코딩 한 제1 데이터 및 상기 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 출력하도록 구성된 제1 레벨 디코더, 상기 제1 에러 정정 능력보다 높은 제2 에러 정정 능력을 갖는 제2 레벨 디코더, 상기 제2 에러 정정 능력보다 높은 제3 에러 정정 능력을 갖는 제3 레벨 디코더, 및 상기 제1 신드롬 가중치를 수신하고, 상기 제1 신드롬 가중치가 기준 값을 초과하면 상기 제3 레벨 디코더로 상기 제1 데이터의 디코딩을 요청하는 요청 신호를 출력하고, 상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 제2 레벨 디코더로 상기 요청 신호를 출력하도록 구성된 ECC 스케줄러를 포함하되, 상기 제1 레벨 디코더는 상기 제1 신드롬 가중치가 특정 값이면 호스트로 상기 제1 데이터를 출력하고, 상기 제1 신드롬 가중치가 상기 특정 값이 아니면 상기 요청 신호를 수신한 제2 레벨 디코더 또는 제3 레벨 디코더로 상기 제1 데이터를 출력하도록 구성된다.
본 발명의 실시 예에 따르면, 복수의 반도체 메모리들이 서로 다른 에러 정정 능력을 갖는 복수의 에러 처리 장치들을 공유하여 적은 수의 에러 처리 장치들로 다양한 시나리오를 대비함으로써, 전체 칩 면적이 감소된 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법이 제공될 수 있다.
또한, 낮은 에러 정정 능력을 갖는 에러 정정 장치들을 조합하여 높은 에러 정정 능력을 갖는 에러 정정 장치처럼 활용함으로써 전체 칩 면접이 더 감소되고, 에러 처리 장치가 처리한 데이터를 기반으로 다음 에러 처리 연산을 수행함으로써 처리율이 향상된 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법이 제공될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 보여주는 블록도이다.
도 3은 도 1의 스토리지 장치를 보여주는 블록도이다.
도 4는 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 5a는 도 4의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 5b는 도 4의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 6은 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 7은 도 6의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 8a는 스토리지 장치에서의 데이터 흐름을 예시적으로 보여주는 블록도이다.
도 8b는 도 6의 동작 방법에 따른 스토리지 장치에서의 데이터 흐름을 예시적으로 보여주는 블록도이다.
도 9는 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 10은 도 9의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 11은 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 12는 도 11의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 13a는 도 12의 제1 레벨 디코더가 수행하는 패리티 체크 연산을 예시적으로 보여주는 도면이다.
도 13b는 도 13a의 패리티 체크 행렬을 예시적으로 보여주는 도면이다.
도 14는 도 12의 제1 레벨 코어 디코더를 예시적으로 보여주는 블록도이다.
도 15는 도 12의 제1 레벨 서브 디코더를 예시적으로 보여주는 블록도이다.
도 16은 도 12의 결합된 제1 레벨 디코더들을 예시적으로 보여주는 블록도이다.
도 17은 도 16의 결합된 디코더 메모리들이 처리하는 에지 값을 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 ECC 코어 유닛이 출력하는 신드롬 가중치를 예시적으로 보여주는 그래프이다.
도 19는 본 발명의 실시 예에 따른 스토리지 장치를 예시적으로 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 보여주는 블록도이다.
도 3은 도 1의 스토리지 장치를 보여주는 블록도이다.
도 4는 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 5a는 도 4의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 5b는 도 4의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 6은 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 7은 도 6의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 8a는 스토리지 장치에서의 데이터 흐름을 예시적으로 보여주는 블록도이다.
도 8b는 도 6의 동작 방법에 따른 스토리지 장치에서의 데이터 흐름을 예시적으로 보여주는 블록도이다.
도 9는 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 10은 도 9의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 11은 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다.
도 12는 도 11의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다.
도 13a는 도 12의 제1 레벨 디코더가 수행하는 패리티 체크 연산을 예시적으로 보여주는 도면이다.
도 13b는 도 13a의 패리티 체크 행렬을 예시적으로 보여주는 도면이다.
도 14는 도 12의 제1 레벨 코어 디코더를 예시적으로 보여주는 블록도이다.
도 15는 도 12의 제1 레벨 서브 디코더를 예시적으로 보여주는 블록도이다.
도 16은 도 12의 결합된 제1 레벨 디코더들을 예시적으로 보여주는 블록도이다.
도 17은 도 16의 결합된 디코더 메모리들이 처리하는 에지 값을 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 ECC 코어 유닛이 출력하는 신드롬 가중치를 예시적으로 보여주는 그래프이다.
도 19는 본 발명의 실시 예에 따른 스토리지 장치를 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다. 이하에서 사용되는 "부/유닛(unit)," "모듈(module)" 등과 같은 용어들은 본문에서 설명되는 다양한 기능들을 수행하도록 구성된 하드웨어, 소프트웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(100)은 호스트(110) 및 스토리지 장치(1000)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 시스템(100)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC, 스마트 폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
호스트(110)는 스토리지 시스템(100)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(110)는 스토리지 장치(1000)에 데이터를 저장하거나 또는 스토리지 장치(1000)에 저장된 데이터를 읽을 수 있다. 스토리지 장치(1000)는 호스트(110)의 제어에 따라 데이터를 저장하거나, 저장된 데이터를 호스트(110)로 전송할 수 있다. 스토리지 장치(1000)는 스토리지 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함할 수 있다.
스토리지 컨트롤러(1100)는 불휘발성 메모리 장치(1200)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(1200)에 저장된 데이터를 읽을 수 있다. 불휘발성 메모리 장치(1200)는 스토리지 컨트롤러(1100)의 제어에 따라 동작할 수 있다.
예시적인 실시 예에서, 불휘발성 메모리 장치(1200)는 데이터를 각각 저장하는 복수의 낸드 플래시 메모리들(제1 NAND 내지 제N NAND)을 포함할 수 있다. 즉, 스토리지 장치(1000)는 복수의 낸드 채널들을 갖는 저장 장치일 수 있다. 다만, 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치(1200)는 PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 저장 장치들 중 하나일 수 있다.
스토리지 컨트롤러(1100)는 ECC 스케줄러(1110) 및 ECC 코어 유닛(1120)을 포함할 수 있다. ECC 스케줄러(1110)는 불휘발성 메모리 장치(1200)로부터 리드된 데이터의 에러 수준에 따라 리드된 데이터의 에러를 정정할 에러 처리 장치를 선택할 수 있다. 예를 들어, 에러 처리 장치는 불휘발성 메모리 장치(1200)로부터 리드된 데이터의 에러를 정정하는 디코더일 수 있다. 에러 수준은 리드된 데이터에서 에러 검출 규칙을 만족하지 않는 에러 비트의 수가 많은 정도를 의미할 수 있다.
ECC 코어 유닛(1120)은 서로 다른 에러 정정 능력을 갖는 복수의 에러 처리 장치들을 포함할 수 있다. 에러 정정 능력은 리드된 데이터에서 에러 처리 장치가 정정할 수 있는 에러 비트의 수를 의미할 수 있다.
예시적인 실시 예에서, ECC 코어 유닛(1120)에 포함된 에러 처리 장치는 일정 수준의 에러 정정 능력을 가질 수 있다. 예를 들어, 불휘발성 메모리 장치(1200)로부터 리드된 데이터의 에러가 에러 처리 장치의 에러 정정 능력을 초과하는 경우, 불휘발성 메모리 장치(1200)로부터 리드된 데이터의 에러는 정정되지 않을 수 있다.
예시적인 실시 예에서, ECC 코어 유닛(1120)은 하이 레벨 디코더 및 로우 레벨 디코더를 포함할 수 있다. 예를 들어, 하이 레벨 디코더는 에러 정정 능력이 높으나, 에러 정정 속도가 느리고 하드웨어의 크기가 큰 에러 처리 장치일 수 있다. 로우 레벨 디코더는 에러 정정 속도가 빠르고 하드웨어의 크기가 작지만, 에러 정정 능력이 낮은 에러 처리 장치일 수 있다.
예시적인 실시 예에서, 반도체 메모리가 제조된 직후의 초반 시나리오에서 주로 발생하는 에러는 에러 수준이 낮은 에러일 수 있다. 반도체 메모리를 반복적으로 사용한 이후의 후반 시나리오에서 주로 발생하는 에러는 에러 수준이 높은 에러일 수 있다.
종래에는 불휘발성 메모리 장치에 포함된 낸드 플래시 메모리들 각각에 할당된 로우 레벨 디코더 및 하이 레벨 디코더를 배치하였다. 이에 따라, 스토리지 장치의 칩 면적이 증가하는 문제가 있었다.
본 발명의 실시 예에 따르면, 스토리지 장치(1000)는 ECC 코어 유닛(1120)에 포함된 에러 처리 장치들 각각이 불휘발성 메모리 장치(1200)에 포함된 복수의 낸드 플래시 메모리들(제1 NAND 내지 제N NAND) 모두에 접근이 가능한 풀-쉐어드(full-shared) 구조로 설계될 수 있다. 낸드 플래시 메모리들(제1 NAND 내지 제N NAND)이 에러 처리 장치를 공유함으로써, 일부 에러 처리 장치들을 생략할 수 있다. 따라서, 스토리지 장치(1000)의 칩 면적이 감소될 수 있다.
도 2는 도 1의 스토리지 컨트롤러를 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(1100)는 ECC 스케줄러(1110), ECC 코어 유닛(1120), 프로세서(1130), SRAM(1140), ROM(1150), 불휘발성 메모리 인터페이스 회로(1160), 및 호스트 인터페이스 회로(1170)를 포함할 수 있다.
ECC 스케줄러(1110)는 ECC 코어 유닛(1120)에 포함된 에러 처리 장치들 중 에러를 정정할 에러 처리 장치를 선택할 수 있다. ECC 코어 유닛(1120)은 복수의 에러 처리 장치들을 포함할 수 있다. ECC 코어 유닛(1120)에 포함된 에러 처리 장치들의 구성과 ECC 스케줄러(1110)가 에러 처리 장치를 선택하는 방법은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
프로세서(1130)는 스토리지 컨트롤러(1100)의 제반 동작을 제어할 수 있다. SRAM(1140)은 스토리지 컨트롤러(1100)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. ROM(1150)은 스토리지 컨트롤러(1100)가 동작하는데 필요한 다양한 정보를 펌웨어 형태로 저장할 수 있다.
예시적인 실시 예에서, ECC 스케줄러(1110) 및 ECC 코어 유닛(1120)은 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 제공될 수 있다. 예를 들어, ROM(1150)은 ECC 스케줄러(1110)의 동작 방법을 저장할 수 있다. SRAM(1140)은 ECC 코어 유닛(1120)에 포함된 에러 처리 장치가 출력하는 데이터를 저장할 수 있다. 프로세서(1130)는 ECC 스케줄러(1110) 및 ECC 코어 유닛(1120)을 제어하는 명령을 출력할 수 있다.
스토리지 컨트롤러(1100)는 불휘발성 메모리 인터페이스 회로(1160)를 통해서 불휘발성 메모리 장치(1200)와 통신할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 인터페이스 회로(1160)는 낸드 인터페이스를 기반으로 구현될 수 있다.
스토리지 컨트롤러(1100)는 호스트 인터페이스 회로(1170)를 통해서 호스트(110)와 통신할 수 있다. 예시적인 실시 예에서, 호스트 인터페이스 회로(1170)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI), NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다.
도 3은 도 1의 스토리지 장치를 보여주는 블록도이다. 도 1 및 도 3을 참조하면, ECC 스케줄러(1110), ECC 코어 유닛(1120), SRAM(1140), 및 불휘발성 메모리 장치(1200)가 예시적으로 도시된다.
ECC 스케줄러(1110)는 ECC 코어 유닛(1120) 내에서 디코더를 선택하고, 선택된 디코더로 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. ECC 스케줄러(1110)는 디코딩을 수행한 ECC 코어 유닛(1120)으로부터 디코디드 데이터(DATAd)의 에러 수준을 나타내는 신드롬 가중치(SW)를 수신할 수 있다.
예시적인 실시 예에서, ECC 스케줄러(1110)는 초기 데이터(DATAi)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. 초기 데이터(DATAi)는 불휘발성 메모리 장치(1200)에 저장된 디코딩이 수행되지 않은 데이터일 수 있다. 초기 데이터(DATAi)의 디코딩을 수행할 디코더는 신드롬 가중치(SW)와 무관하게 제1 레벨 ECC 코어 유닛(1121)에 포함된 제1 레벨 디코더로 선택될 수 있다.
예시적인 실시 예에서, ECC 스케줄러(1110)는 수신된 신드롬 가중치(SW)를 기반으로 디코디드 데이터(DATAd)의 에러 수준에 대응하는 에러 정정 능력을 갖는 디코더를 선택할 수 있다. 예를 들어, ECC 스케줄러(1110)는 제2 레벨의 에러 수준을 나타나낸 신드롬 가중치(SW)를 수신할 수 있다. ECC 스케줄러(1110)는 제2 레벨 ECC 코어 유닛(1122)에 포함된 제2 레벨 디코더를 선택하고, 선택된 제2 레벨 디코더로 디코디드 데이터(DATAd)의 추가 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다.
ECC 코어 유닛(1120)은 ECC 스케줄러(1110)로부터 요청 신호(RQ)를 수신할 수 있다. ECC 코어 유닛(1120)은 수신된 요청 신호(RQ)를 기반으로 SRAM(1140)에서 버퍼 데이터(DATAb)를 리드할 수 있다. ECC 코어 유닛(1120)은 리드된 버퍼 데이터(DATAb)를 디코딩 한 디코디드 데이터(DATAd)를 SRAM(1140)으로 출력할 수 있다. ECC 코어 유닛(1120)은 디코디드 데이터(DATAd)의 에러 수준을 나타내는 신드롬 가중치(SW)를 ECC 스케줄러(1110)로 출력할 수 있다.
예시적인 실시 예에서, ECC 코어 유닛(1120)은 제1 내지 제3 레벨 ECC 코어 유닛들(1121~1123)을 포함할 수 있다. 제1 레벨 ECC 코어 유닛(1121)은 N개의 제1 레벨 디코더들을 포함할 수 있다. 제2 레벨 ECC 코어 유닛(1122)은 M개의 제2 레벨 디코더들을 포함할 수 있다. 제3 레벨 ECC 코어 유닛(1123)은 K개의 제3 레벨 디코더들을 포함할 수 있다. 이 때, N은 M보다 크고, M은 K보다 클 수 있다.
제1 레벨 디코더는 제2 레벨 디코더보다 크기가 작고 연산 속도가 빠르지만 에러 정정 능력이 낮을 수 있다. 제2 레벨 디코더는 제3 레벨 디코더보다 크기가 작고 연산 속도가 빠르지만 에러 정정 능력이 낮을 수 있다.
예시적인 실시 예에서, ECC 코어 유닛(1120)은 도 3에 도시된 것과 달리, 불휘발성 메모리(1200)로부터 초기 데이터(DATAi)를 직접 수신할 수 있다. ECC 코어 유닛(1120)은 초기 데이터(DATAi)를 디코딩 한 디코디드 데이터(DATAd)를 SRAM(1140)으로 출력할 수 있다.
불휘발성 메모리 장치(1200)는 초기 데이터(DATAi)를 저장할 수 있다. 초기 데이터(DATAi)는 음악, 이미지, 및 영상 등과 같은 사용자 데이터의 일부를 포함할 수 있다. 불휘발성 메모리 장치(1200)는 호스트(110)의 제어에 따라 초기 데이터(DATAi)를 SRAM(1140)으로 출력할 수 있다.
SRAM(1140)은 불휘발성 메모리 장치(1200)로부터 초기 데이터(DATAi)를 수신할 수 있다. SRAM(1140)은 수신된 초기 데이터(DATAi)를 버퍼 데이터(DATAb)로서 저장할 수 있다. SRAM(1140)은 버퍼 데이터(DATAb)를 ECC 코어 유닛(1120)으로 출력할 수 있다. SRAM(1140)은 ECC 코어 유닛(1120)으로부터 디코디드 데이터(DATAd)를 수신할 수 있다. SRAM(1140)은 수신된 디코디드 데이터(DATAd)를 버퍼 데이터(DATAb)로서 저장할 수 있다. 즉, SRAM(1140)은 버퍼 메모리로서 동작할 수 있다.
도 4는 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다. 도 1 및 도 4를 참조하면, 본 발명의 실시 예에 따른 스토리지 컨트롤러의 동작 방법이 예시적으로 도시된다.
S110 단계에서, 스토리지 컨트롤러(1100)는 불휘발성 메모리 장치(1200)에 저장된 초기 데이터(DATAi)를 리드할 수 있다. 초기 데이터(DATAi)는 음악, 이미지, 및 영상 등과 같은 사용자 데이터의 일부가 에러를 검출하기 위한 에러 검출 규칙을 갖는 패리티 검사 비트를 기반으로 인코딩 된 데이터일 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(1100)는 리드된 초기 데이터(DATAi)를 기반으로 초기 데이터(DATAi)의 에러 수준을 나타내는 초기 신드롬 가중치(SWi)를 생성할 수 있다. 스토리지 컨트롤러(1100)는 생성된 초기 신드롬 가중치(SWi)를 기반으로 에러 수준에 따른 디코더를 선택하는 기준이 되는 기준 값(REF)을 결정할 수 있다. 또는, 기준 값(REF)은 사용자가 디코딩 수행 전 입력한 값일 수 있다.
S111 단계에서, 스토리지 컨트롤러(1100)는 불휘발성 메모리 장치(1200)로부터 리드한 초기 데이터(DATAi)를 디코딩 할 수 있다. 스토리지 컨트롤러(1100)는 제1 데이터(DATA1) 및 제1 신드롬 가중치(SW1)를 생성할 수 있다. 제1 데이터(DATA1)는 초기 데이터(DATAi)를 디코딩 한 데이터일 수 있다. 제1 신드롬 가중치(SW1)는 제1 데이터(DATA1)의 에러 수준을 나타낼 수 있다.
S112 단계에서, 제1 신드롬 가중치(SW1)가 특정 값인지 여부를 판단함으로써 제1 데이터(DATA1)의 에러 존재 여부를 판단할 수 있다. 예를 들어, S111 단계 이후 제1 신드롬 가중치(SW1)의 값이 '0'인지 여부를 판단하는 단계가 수행될 수 있다. 제1 신드롬 가중치(SW1)의 값이 '0'이면 제1 데이터(DATA1)에 에러가 없을 수 있다. 이 때, 스토리지 컨트롤러(1100)는 제1 데이터(DATA1)를 호스트(110)로 출력하고 동작을 마칠 수 있다. 제1 신드롬 가중치(SW1)의 값이 '0'이 아니면 스토리지 컨트롤러(1100)는 S120 단계를 수행할 수 있다.
S120 단계에서, 스토리지 컨트롤러(1100)는 초기 데이터(DATAi)를 제1 데이터(DATA1)로 업데이트할 수 있다. 예를 들어, 스토리지 컨트롤러(1100)는 S110 단계에서 리드한 초기 데이터(DATAi)를 저장할 수 있다. 스토리지 컨트롤러(1100)는 저장된 초기 데이터(DATAi)를 제1 데이터(DATA1)로 오버라이트 할 수 있다.
S130 단계에서, 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)와 기준 값(REF)을 비교할 수 있다. 제1 신드롬 가중치(SW1)가 기준 값(REF)을 초과하면 S131 단계를 수행할 수 있다. 제1 신드롬 가중치(SW1)가 기준 값(REF) 이하이면 S132 단계를 수행할 수 있다.
S131 단계에서, 스토리지 컨트롤러(1100)는 하이 레벨 디코더를 선택할 수 있다. 스토리지 컨트롤러(1100)는 선택된 하이 레벨 디코더에게 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. 이 때, 하이 레벨 디코더는 에러 정정 능력이 높은 에러 처리 장치일 수 있다.
S132 단계에서, 스토리지 컨트롤러(1100)는 로우 레벨 디코더를 선택할 수 있다. 스토리지 컨트롤러(1100)는 선택된 로우 레벨 디코더에게 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. 이 때, 로우 레벨 디코더는 에러 정정 능력이 낮은 에러 처리 장치일 수 있다.
S140 단계에서, 스토리지 컨트롤러(1100)에 포함된 디코더는 요청 신호(RQ)에 응답하여 스토리지 컨트롤러(1100)에 저장된 제1 데이터(DATA1)를 리드할 수 있다. 이 때, 디코더는 S131 단계에서 요청 신호(RQ)를 수신한 하이 레벨 디코더 또는 S132 단계에서 요청 신호(RQ)를 수신한 로우 레벨 디코더일 수 있다.
S141 단계에서, 스토리지 컨트롤러(1100)는 요청 신호(RQ)를 수신한 디코더를 통해서 제1 데이터(DATA1)를 디코딩할 수 있다. 스토리지 컨트롤러(1100)는 제2 데이터(DATA2) 및 제2 신드롬 가중치(SW2)를 생성할 수 있다. 제2 데이터(DATA2)는 제1 데이터(DATA1)를 디코딩 한 데이터일 수 있다. 제2 신드롬 가중치(SW2)는 제2 데이터(DATA2)의 에러 수준을 나타낼 수 있다.
도 5a는 도 4의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다. 도 5a를 참조하면, 제1 신드롬 가중치(SW1)가 기준 값을 초과하는 경우 하이 레벨 디코더를 선택하여 제1 데이터(DATA1)를 디코딩 하는 스토리지 장치가 예시적으로 도시된다.
불휘발성 메모리 장치(1200)는 호스트로부터 수신된 읽기 명령에 응답하여 저장된 초기 데이터(DATAi)를 SRAM(1140)으로 출력할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(1200)는 초기 데이터(DATAi)를 제1 레벨 디코더(1121a)로 직접 출력할 수 있다.
예시적인 실시 예에서, 스토리지 장치는 초기 데이터(DATAi)를 리드하고 초기 데이터(DATAi)의 에러 수준을 나타내는 초기 신드롬 가중치(SWi)를 생성하는 에러 추정 회로(error estimate circuit; 미도시)를 더 포함할 수 있다. 에러 추정 회로는 초기 신드롬 가중치(SWi)를 기반으로 기준 값(REF)을 결정하고, 설정된 기준 값(REF)을 ECC 스케줄러(1110)로 출력할 수 있다.
SRAM(1140)은 불휘발성 메모리 장치(1200)로부터 초기 데이터(DATAi)를 수신할 수 있다. SRAM(1140)은 수신된 초기 데이터(DATAi)를 저장할 수 있다. SRAM(1140)은 초기 데이터(DATAi)를 제1 레벨 디코더(1121a)로 출력할 수 있다. 즉, SRAM(1140)은 스토리지 컨트롤러의 디코딩에 사용되는 임시 데이터를 저장하는 버퍼 메모리일 수 있다.
제1 레벨 디코더(1121a)는 SRAM(1140)으로부터 초기 데이터(DATAi)를 리드할 수 있다. 제1 레벨 디코더(1121a)는 리드된 초기 데이터(DATAi)를 기반으로 제1 데이터(DATA1) 및 제1 신드롬 가중치(SW1)를 생성할 수 있다. 제1 레벨 디코더(1121a)는 제1 데이터(DATA1)를 SRAM(1140)으로 출력할 수 있다. 제1 레벨 디코더(1121a)는 제1 신드롬 가중치(SW1)를 ECC 스케줄러(1110)로 출력할 수 있다. 제1 레벨 디코더(1121a)는 제1 신드롬 가중치(SW1)의 값이 특정 값이면 제1 데이터(DATA1)를 호스트로 출력하고 동작을 종료할 수 있다. 제1 레벨 디코더(1121a)는 도 3의 제1 레벨 ECC 코어 유닛(1121)에 포함된 제1 레벨 디코더들 중 하나일 수 있다.
ECC 스케줄러(1110)는 제1 레벨 디코더(1121a)로부터 제1 신드롬 가중치(SW1)를 수신할 수 있다. ECC 스케줄러(1110)는 수신된 제1 신드롬 가중치(SW1)와 기준 값(REF)을 비교할 수 있다. ECC 스케줄러(1110)는 제1 신드롬 가중치(SW1)가 기준 값(REF)을 초과하면 하이 레벨 디코더를 선택할 수 있다. ECC 스케줄러(1110)는 선택된 하이 레벨 디코더로 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다.
제3 레벨 디코더(1123a)는 ECC 스케줄러(1110)로부터 요청 신호(RQ)를 수신할 수 있다. 제3 레벨 디코더(1123a)는 수신된 요청 신호(RQ)를 기반으로 SRAM(1140)으로부터 제1 데이터(DATA1)를 리드할 수 있다. 제3 레벨 디코더(1123a)는 리드된 제1 데이터(DATA1)를 기반으로 제2 데이터(DATA2) 및 제2 신드롬 가중치(SW2)를 생성할 수 있다.
도 5b는 도 4의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다. 도 5b를 참조하면, 제1 신드롬 가중치(SW1)가 기준 값 이하인 경우 로우 레벨 디코더를 선택하여 제1 데이터(DATA1)를 디코딩 하는 스토리지 장치가 예시적으로 도시된다. 불휘발성 메모리 장치(1200), SRAM(1140), 및 제1 레벨 디코더(1121a)의 특징은 도 5a에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
ECC 스케줄러(1110)는 제1 레벨 디코더(1121a)로부터 제1 신드롬 가중치(SW1)를 수신할 수 있다. ECC 스케줄러(1110)는 수신된 제1 신드롬 가중치(SW1)와 기준 값(REF)을 비교할 수 있다. ECC 스케줄러(1110)는 제1 신드롬 가중치(SW1)가 기준 값(REF) 이하이면 로우 레벨 디코더를 선택할 수 있다. ECC 스케줄러(1110)는 선택된 로우 레벨 디코더로 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다.
예를 들어, 로우 레벨 디코더는 제2 레벨 디코더(1122a)일 수 있다. 제2 레벨 디코더(1122a)는 도 5a의 제3 레벨 디코더(1123a)보다 에러 정정 능력이 낮은 에러 처리 장치일 수 있다. 제2 레벨 디코더(1122a)는 도 3의 제2 레벨 ECC 코어 유닛(1122)에 포함된 제2 레벨 디코더들 중 하나일 수 있다.
제2 레벨 디코더(1122a)는 ECC 스케줄러(1110)로부터 요청 신호(RQ)를 수신할 수 있다. 제2 레벨 디코더(1122a)는 수신된 요청 신호(RQ)를 기반으로 SRAM(1140)으로부터 제1 데이터(DATA1)를 리드할 수 있다. 제2 레벨 디코더(1122a)는 리드된 제1 데이터(DATA1)를 기반으로 제2 데이터(DATA2) 및 제2 신드롬 가중치(SW2)를 생성할 수 있다. 즉, 제2 레벨 디코더(1122a)는 에러 수준이 기준 값 이하인 제1 데이터(DATA1)의 에러를 정정하는 에러 처리 장치일 수 있다.
도 6은 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다. 도 1 및 도 6을 참조하면, 본 발명의 실시 예에 따른 스토리지 컨트롤러의 동작 방법이 예시적으로 도시된다. 도 6의 순서도에서 S210, S211, S220, S240, 및 S241 단계는 도 4의 S110, S111, S120, S140, 및 S141 단계와 유사하므로 이에 대한 상세한 설명은 생략된다.
S230 단계에서, 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)와 기준 값(REF)을 비교할 수 있다. 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)가 기준 값을 초과하면 하이 레벨 디코더로 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)가 기준 값 이하이면 로우 레벨 디코더로 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. 즉, S230 단계에서 스토리지 컨트롤러(1100)는 도 4의 S130, S131, 및 S132 단계의 동작과 유사한 동작을 수행할 수 있다.
S250 단계에서, 스토리지 컨트롤러(1100)는 제2 신드롬 가중치(SW2)의 값이 특정 값인지 여부를 판단함으로써 제2 데이터(DATA2)의 에러 존재 여부를 판단할 수 있다. 예를 들어, 스토리지 컨트롤러(1100)는 제2 신드롬 가중치(SW2)의 값이 '0'인지 여부를 판단할 수 있다. 제2 신드롬 가중치(SW2)의 값이 '0'이면 제2 데이터(DATA2)에 에러가 없을 수 있다. 제2 신드롬 가중치(SW2)의 값이 '0'이면 스토리지 컨트롤러(1100)는 제2 데이터(DATA2)를 호스트(110)로 출력하고 동작을 마칠 수 있다. 제2 신드롬 가중치(SW2)의 값이 '0'이 아니면 스토리지 컨트롤러(1100)는 S251 단계를 수행할 수 있다.
S251 단계에서, 스토리지 컨트롤러(1100)는 제2 신드롬 가중치(SW2)와 제1 신드롬 가중치(SW1)를 비교할 수 있다. 제2 신드롬 가중치(SW2)가 제1 신드롬 가중치(SW1)보다 작으면 S252 단계를 수행할 수 있다. 제2 신드롬 가중치(SW2)가 제1 신드롬 가중치(SW1)보다 크거나 같으면 S253 단계를 수행할 수 있다.
S252 단계에서, 스토리지 컨트롤러(1100)는 제1 데이터(DATA1)를 제2 데이터(DATA2)로 업데이트 할 수 있다. 즉, 스토리지 컨트롤러(1100)는 제1 데이터(DATA1)보다 에러 수준이 낮은 제2 데이터(DATA2)를 저장할 수 있다.
S253 단계에서, 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)를 제2 신드롬 가중치(SW2)로 업데이트 할 수 있다. S253 단계는 S251 단계의 판단 결과와 무관하게 수행되는 단계일 수 있다. S253 단계 이후 디코더를 선택하고 디코딩을 요청하는 단계(S230)가 더 수행될 수 있다. 즉, 스토리지 컨트롤러(1100)의 동작 방법은 S241 단계에서 수행된 디코딩 결과를 기반으로 추가 디코딩을 수행할 디코더를 선택하는 단계를 포함할 수 있다.
도 7은 도 6의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다. 도 7을 참조하면, 제1 데이터(DATA1) 및 제1 데이터(DATA1)를 디코딩한 제2 데이터(DATA2) 중 에러 수준이 낮은 데이터를 저장하는 스토리지 장치가 예시적으로 도시된다. 불휘발성 메모리 장치(1200) 및 제1 레벨 디코더(1121a)의 특징은 도 5a에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
제2 레벨 디코더(1122a)는 ECC 스케줄러(1110)로부터 요청 신호(RQ)를 수신할 수 있다. 제2 레벨 디코더(1122a)는 요청 신호(RQ)를 기반으로 SRAM(1140)에 저장된 제1 데이터(DATA1)를 리드할 수 있다. 제2 레벨 디코더(1122a)는 제1 데이터(DATA1)의 에러 수준을 나타내는 제1 신드롬 가중치(SW1)를 계산할 수 있다. 제2 레벨 디코더(1122a)는 제1 데이터(DATA1)를 디코딩 한 제2 데이터(DATA2) 및 제2 데이터(DATA2)의 에러 수준을 나타내는 제2 신드롬 가중치(SW2)를 생성할 수 있다.
제2 레벨 디코더(1122a)는 제1 신드롬 가중치(SW1)와 제2 신드롬 가중치(SW2)를 비교할 수 있다. 제2 레벨 디코더(1122a)는 제2 신드롬 가중치(SW2)가 제1 신드롬 가중치(SW1)보다 작으면 SRAM(1140)으로 제2 데이터(DATA2)를 출력할 수 있다. 이 때, SRAM(1140)에 저장된 제1 데이터(DATA1)는 제2 데이터(DATA2)로 업데이트 될 수 있다.
제2 레벨 디코더(1122a)는 제2 신드롬 가중치(SW2)를 ECC 스케줄러(1110)로 출력할 수 있다. ECC 스케줄러(1110)는 수신된 제2 신드롬 가중치(SW2)를 기반으로 추가 디코딩을 수행할 디코더를 선택할 수 있다. ECC 스케줄러(1110)는 선택된 디코더로 추가 디코딩을 수행할 추가 요청 신호를 출력할 수 있다.
도 8a는 스토리지 장치에서의 데이터 흐름을 예시적으로 보여주는 블록도이다. 도 8a를 참조하면, 스토리지 장치에서의 데이터 흐름이 예시적으로 도시된다. 제1 낸드 플래시 메모리(1210)는 도 1의 불휘발성 메모리 장치(1200)에 포함된 복수의 낸드 플래시 메모리들(제1 NAND 내지 제N NAND) 중 하나일 수 있다. 제1 낸드 플래시 메모리(1210)는 초기 데이터(DATAi)를 저장할 수 있다. 호스트로부터 요청된 읽기 명령에 따라 제1 낸드 플래시 메모리(1210)는 초기 데이터(DATAi)를 출력할 수 있다.
ECC 코어 유닛(1120)은 제1 낸드 플래시 메모리(1210)와 연결될 수 있다. ECC 코어 유닛(1120)은 제1 내지 제3 레벨 디코더들(1121a, 1122a, 1123a)을 포함할 수 있다. 제3 레벨 디코더(1123a)는 제2 레벨 디코더(1122a)보다 에러 정정 능력이 높을 수 있다. 제2 레벨 디코더(1122a)는 제1 레벨 디코더(1121a)보다 에러 정정 능력이 높을 수 있다. ECC 코어 유닛(1120)은 제1 낸드 플래시 메모리(1210)로부터 수신된 초기 데이터(DATAi)를 디코딩 할 수 있다.
기존의 스토리지 장치에서는 불휘발성 메모리 장치에 포함된 낸드 플래시 메모리들 각각에 대해서 서로 다른 에러 정정 능력을 갖는 복수의 디코더(1121a~1123a)를 할당할 수 있다. 이 때, 제1 레벨 디코더(1121a)는 제1 낸드 플래시 메모리(1210)가 아닌 다른 낸드 플래시 메모리(예를 들어, 제2 낸드 플래시 메모리)와 연결되지 않는 디코더일 수 있다. 즉, 기존의 스토리지 장치는 불필요한 디코더들을 다수 포함하고 칩 전체의 면적이 증가하는 문제가 있었다.
도 8b는 도 6의 동작 방법에 따른 스토리지 장치에서의 데이터 흐름을 예시적으로 보여주는 블록도이다. 도 8b를 참조하면, 도 6의 동작 방법에 따른 스토리지 장치에서의 데이터 흐름이 예시적으로 도시된다.
제1 낸드 플래시 메모리(1210)는 초기 데이터(DATAi)를 출력할 수 있다. ECC 코어 유닛(1120)은 제1 레벨 디코더(1121a) 및 제3 레벨 디코더(1123a)를 포함할 수 있다. 제1 레벨 디코더(1121a)는 초기 데이터(DATAi)를 수신할 수 있다. 제1 레벨 디코더(1121a)는 수신된 초기 데이터(DATAi)를 디코딩 한 제1 데이터(DATA1)를 출력할 수 있다. 제3 레벨 디코더(1123a)는 제1 데이터(DATA1)를 수신할 수 있다. 제3 레벨 디코더(1123a)는 수신된 제1 데이터(DATA1)를 디코딩 할 수 있다.
이 때, ECC 코어 유닛(1120)에 포함된 디코더들 각각은 복수의 낸드 플래시 메모리들과 연결될 수 있다. 예를 들어, 제3 레벨 디코더(1123a)는 제1 낸드 플래시 메모리(1210)와 다른 제2 낸드 플래시 메모리로부터 출력된 데이터를 디코딩 할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 낸드 플래시 메모리들은 디코더를 공유할 수 있다. 또한, 디코더는 다른 디코더가 디코딩 한 데이터를 수신하고 더 디코딩 할 수 있다. 이에 따라, 불필요한 디코더들을 생략하여 칩 면적이 감소되고, 다른 디코더가 디코딩 한 데이터를 활용함으로써 처리율이 향상된 스토리지 장치가 제공될 수 있다.
도 9는 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다. 도 1 및 도 9를 참조하면, 본 발명의 실시 예에 따른 스토리지 컨트롤러의 동작 방법이 예시적으로 도시된다. 도 9의 순서도에서 S310 단계는 도 6의 S210 및 S211 단계를 합한 것과 유사하고, S340, S341, S350, S351, S352, 및 S353 단계는 도 6의 S240, S241, S250, S251, S252, 및 S253 단계와 유사하므로 이에 대한 상세한 설명은 생략된다.
S330 단계에서, 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)를 기반으로 제1 데이터(DATA1)를 디코딩 할 디코더를 선택할 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(1100)는 에러 정정 능력이 상이한 적어도 3개의 디코더들을 포함할 수 있다.
예를 들어, 스토리지 컨트롤러(1100)는 제1 레벨 디코더, 제2 레벨 디코더, 및 제3 레벨 디코더를 포함할 수 있다. 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)가 제1 기준 값 이하이면 제1 레벨 디코더를 선택할 수 있다. 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)가 제1 기준 값을 초과하고 제2 기준 값 이하이면 제2 레벨 디코더를 선택할 수 있다. 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)가 제2 기준 값을 초과하면 제3 레벨 디코더를 선택할 수 있다.
S331 단계에서, 스토리지 컨트롤러(1100)는 S330 단계에서 선택된 디코더가 이용 가능한지 확인할 수 있다. 스토리지 컨트롤러(1100)는 선택된 디코더가 이용 가능하면 S333 단계를 수행할 수 있다. 스토리지 컨트롤러(1100)는 선택된 디코더가 이용 불가능하면 S332 단계를 수행할 수 있다.
S332 단계에서, 스토리지 컨트롤러(1100)는 S330 단계에서 선택된 디코더보다 에러 정정 능력이 높은 하이 레벨 디코더를 선택할 수 있다. 예시적인 실시 예에서, 에러 정정 능력이 높은 하이 레벨 디코더는 에러 정정 능력이 낮은 다른 디코더가 정정 가능한 에러를 정정할 수 있다.
예를 들어, 제1 데이터(DATA1)가 제2 레벨에 대응하는 에러를 갖는 경우, 제2 레벨 디코더는 제1 데이터(DATA1)의 에러를 정정할 수 있다. 제2 레벨 디코더보다 에러 정정 능력이 높은 제3 레벨 디코더는 제1 데이터(DATA1)의 에러를 정정할 수 있다. 이 때, 제3 레벨 디코더는 제2 레벨 디코더보다 처리 시간이 길 수 있다. 제3 레벨 디코더의 처리 시간은 이용 불가능한 제2 레벨 디코더의 이용 가능을 대기하는 시간보다 짧을 수 있다.
S333 단계에서, 선택된 디코더로 제1 데이터의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다. 이 때, 선택된 디코더는 S330 단계에서 선택된 디코더 또는 S332 단계에서 선택된 하이 레벨 디코더일 수 있다.
도 10은 도 9의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다. 도 10을 참조하면, 선택된 디코더가 이용 불가능한 경우 선택된 디코더보다 에러 정정 능력이 높은 다른 디코더를 선택하여 디코딩 하는 스토리지 장치가 예시적으로 도시된다. 불휘발성 메모리 장치(1200), SRAM(1140), 및 제1 레벨 디코더(1121a)의 특징은 도 7에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
ECC 스케줄러(1110)는 제1 레벨 디코더(1121a)로부터 제1 신드롬 가중치(SW1)를 수신할 수 있다. ECC 스케줄러(1110)는 수신된 제1 신드롬 가중치(SW1)를 기반으로 제2 레벨 디코더(1122a)를 선택할 수 있다. ECC 스케줄러(1110)는 제2 레벨 디코더(1122a)의 이용 가능 여부를 나타내는 이용 가능 정보(AV)를 포함할 수 있다. 예를 들어, ECC 스케줄러(1110)가 제2 레벨 디코더(1122a)로 다른 요청 신호를 출력하고 다른 신드롬 가중치를 수신하지 않으면, ECC 스케줄러(1110)는 제2 레벨 디코더(1122a)가 이용 불가능하다고 판단할 수 있다.
ECC 스케줄러(1110)는 이용 가능 정보(AV)를 기반으로 제2 레벨 디코더(1122a)가 이용 불가능하다고 판단할 수 있다. ECC 스케줄러(1110)는 제2 레벨 디코더(1122a)보다 에러 정정 능력이 높은 제3 레벨 디코더(1123a)를 선택할 수 있다. ECC 스케줄러(1110)는 제3 레벨 디코더(1123a)로 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ)를 출력할 수 있다.
제3 레벨 디코더(1123a)는 요청 신호(RQ)를 수신할 수 있다. 제3 레벨 디코더(1123a)는 제1 데이터(DATA1)를 디코딩 할 수 있다. 제3 레벨 디코더(1123a)는 제2 데이터(DATA2) 및 제2 신드롬 가중치(SW2)를 생성 및 출력할 수 있다. 이 때, 제3 레벨 디코더(1123a)는 도 7의 제2 레벨 디코더(1122a)보다 제1 데이터(DATA1)를 디코딩 하는 속도가 느릴 수 있다. 제3 레벨 디코더(1123a)가 제1 데이터(DATA1)를 디코딩 하는데 소요되는 시간은 이용 불가능한 제2 레벨 디코더(1122a)의 이용 가능을 대기하는 시간보다 짧을 수 있다.
도 11은 도 1의 스토리지 컨트롤러의 동작 방법을 예시적으로 보여주는 순서도이다. 도 1 및 도 11을 참조하면, 본 발명의 실시 예에 따른 스토리지 컨트롤러의 동작 방법이 예시적으로 도시된다. 도 11의 순서도에서 S410 단계는 도 6의 S210 및 S211 단계를 합한 것과 유사하고, S440, S441, S450, S451, S452, 및 S453 단계는 도 6의 S240, S241, S250, S251, S252 및 S253 단계와 유사하므로 이에 대한 상세한 설명은 생략된다.
S430 단계에서, 스토리지 컨트롤러(1100)는 제1 신드롬 가중치(SW1)를 기반으로 제1 데이터(DATA1)를 디코딩 할 디코더를 선택할 수 있다. S431 단계에서, 스토리지 컨트롤러(1100)는 S430 단계에서 선택된 디코더가 이용 가능한지 확인할 수 있다. 스토리지 컨트롤러(1100)는 선택된 디코더가 이용 가능하면 선택된 디코더로 요청 신호(RQ)를 출력하는 단계(S432)를 수행할 수 있다. 스토리지 컨트롤러(1100)는 선택된 디코더가 이용 불가능하면 S433 단계를 수행할 수 있다.
S433 단계에서, 스토리지 컨트롤러(1100)는 S430 단계에서 선택된 디코더보다 에러 정정 능력이 낮은 로우 레벨 디코더들을 선택할 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(1100)는 하이 레벨 디코더 및 결합하여 하이 레벨 디코더처럼 동작하는 로우 레벨 디코더들을 포함할 수 있다.
S434 단계에서, 스토리지 컨트롤러(1100)는 선택된 로우 레벨 디코더들로 제1 데이터(DATA1)의 디코딩을 요청하는 요청 신호(RQ) 및 선택된 로우 레벨 디코더들을 결합하는 결합 신호(CB)를 출력할 수 있다.
S435 단계에서, 결합 신호(CB)를 수신한 로우 레벨 디코더들은 결합할 수 있다. 결합된 로우 레벨 디코더들은 서로 네트워크가 활성화됨으로써 하나의 하이 레벨 디코더처럼 동작할 수 있다.
예시적인 실시 예에서, 로우 레벨 디코더들을 선택하고 결합하는데 소요되는 시간은 이용 불가능한 선택된 디코더의 이용 가능을 대기하는 시간보다 짧을 수 있다.
S440 단계에서, 스토리지 컨트롤러(1100)에 포함된 디코더는 요청 신호(RQ)에 응답하여 스토리지 컨트롤러(1100)에 저장된 제1 데이터(DATA1)를 리드할 수 있다. 이 때, 디코더는 S430 단계에서 선택된 디코더 또는 S433 단계에서 선택되고 S435 단계에서 결합된 로우 레벨 디코더들일 수 있다.
도 12는 도 11의 동작 방법이 수행되는 스토리지 장치를 예시적으로 구체화한 블록도이다. 도 12를 참조하면, 선택된 디코더가 이용 불가능한 경우 선택된 디코더보다 에러 정정 능력이 낮은 다른 디코더들을 선택 및 결합하여 디코딩 하는 스토리지 장치가 예시적으로 도시된다. 불휘발성 메모리 장치(1200), SRAM(1140), 및 제1 레벨 디코더(1121a)의 특징은 도 7에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
ECC 스케줄러(1110)는 제1 레벨 디코더(1121a)로부터 제1 신드롬 가중치(SW1)를 수신할 수 있다. ECC 스케줄러(1110)는 수신된 제1 신드롬 가중치(SW1)를 기반으로 제2 레벨 디코더(1122a)를 선택할 수 있다. ECC 스케줄러(1110)는 제2 레벨 디코더(1122a)의 이용 가능 여부를 나타내는 이용 가능 정보(AV)를 포함할 수 있다.
ECC 스케줄러(1110)는 이용 가능 정보(AV)를 기반으로 제2 레벨 디코더(1122a)가 이용 불가능하다고 판단할 수 있다. ECC 스케줄러(1110)는 제2 레벨 디코더(1122a)보다 에러 정정 능력이 낮은 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)를 선택할 수 있다. ECC 스케줄러(1110)는 선택된 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)로 요청 신호(RQ) 및 결합 신호(CB)를 출력할 수 있다. 결합 신호(CB)는 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)의 결합을 요청하는 신호일 수 있다.
이 때, 제1 데이터(DATA1)의 에러는 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d) 각각의 에러 정정 능력을 초과하는 에러일 수 있다. 제1 데이터(DATA1)의 에러는 제2 레벨 디코더(1122a)에 의해서 정정 가능할 수 있다.
제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)는 수신된 결합 신호(CB)를 기반으로 결합할 수 있다. 결합된 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)는 SRAM(1140)으로부터 제1 데이터(DATA1)를 리드하고, 리드된 제1 데이터(DATA1)를 기반으로 제2 데이터(DATA2) 및 제2 신드롬 가중치(SW2)를 생성할 수 있다.
이 때, ECC 스케줄러(1110)가 이용 가능 정보(AV)를 기반으로 제2 레벨 디코더(1122a)의 이용 가능 여부를 판단하는 시간과 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)가 결합 신호(CB)를 기반으로 결합하는데 소요되는 시간의 합은 이용 불가능한 제2 레벨 디코더(1122a)의 이용 가능을 대기하는 시간보다 짧을 수 있다.
도 13a는 도 12의 제1 레벨 디코더가 수행하는 패리티 체크 연산을 예시적으로 보여주는 도면이다. 도 12 및 도 13a를 참조하면, 도 12의 제1 레벨 디코더(1121a)가 초기 데이터(DATAi)의 에러를 체크하는 방법이 예시적으로 도시된다.
예시적인 실시 예에서, 제1 레벨 디코더(1121a)는 복수의 가변 노드들(V1~V6) 및 복수의 체크 노드들(C1~C3)을 포함할 수 있다. 도 13a에서 제1 레벨 디코더(1121a)에 6개의 가변 노드들(V1~V6) 및 3개의 체크 노드들(C1~C3)이 포함되는 것으로 도시되나, 본 발명의 범위는 이에 제한되지 않으며, 제1 레벨 디코더(1121a)에 포함된 가변 노드들의 수 및 체크 노드들의 수는 증가 또는 감소할 수 있다.
예시적인 실시 예에서, 제1 레벨 디코더(1121a)가 리드한 초기 데이터(DATAi)는 가변 노드들(V1~V6)에 저장될 수 있다. 가변 노드들(V1~V6)은 패리티 검사 행렬(H)의 정보를 기반으로 체크 노드들(C1~C3)과 연결될 수 있다. 체크 노드들(C1~C3)은 가변 노드들(V1~V6)에 저장된 비트들이 에러 검출 규칙을 만족하는지 체크할 수 있다. 에러 검출 규칙을 만족하지 않는 가변 노드에 저장된 비트는 플립(flip)될 수 있다. 비트가 플립되는 것은 가변 노드에 저장된 비트가 에러 검출 규칙을 만족하도록 '1'에서 '0'으로 뒤집히거나 '0'에서 '1'로 뒤집히는 것을 의미할 수 있다.
예를 들어, 가변 노드들(V1~V6)에 저장된 비트 정보는 '101011'일 수 있다. 체크 노드들(C1~C3) 각각은 연결된 가변 노드들의 비트 합이 짝수가 되도록 하는 에러 검출 규칙을 만족하는지 체크할 수 있다.
제1 체크 노드(C1)는 제1 내지 제4 가변 노드들(V1~V4)과 연결될 수 있다. 제1 체크 노드(C1)와 연결된 가변 노드들의 비트 합은 짝수일 수 있다. 제2 체크 노드(C2)는 제3, 제4, 및 제6 가변 노드들(V3, V4, V6)과 연결될 수 있다. 제2 체크 노드(C2)와 연결된 가변 노드들의 비트 합은 짝수일 수 있다. 제3 체크 노드(C3)는 제1, 제4, 및 제5 가변 노드들(V1, V4, V5)과 연결될 수 있다. 제3 체크 노드(C3)와 연결된 가변 노드들의 비트 합은 짝수일 수 있다.
이러한 경우, 제1 레벨 디코더(1121a)는 초기 데이터(DATAi)와 동일한 비트 정보를 갖는 제1 데이터를 출력할 수 있다. 제1 레벨 디코더(1121a)에서 출력되는 제1 신드롬 가중치(SW1)의 값은 '0'일 수 있다.
예시적인 실시 예에서, 가변 노드와 체크 노드를 연결하는 구성은 에지(edge)로 표현될 수 있다. 가변 노드와 체크 노드를 연결하는 에지(edge)를 통해서 에지 값(edge value)이 이동할 수 있다. '1'비트의 메시지를 전송하는 에지의 경우, 에지 값은 에지 부호 값(edge sign value)을 포함할 수 있다. '2'비트 이상의 메시지를 전송하는 에지의 경우, 에지 값은 에지 부호 값 및 에지 크기 값(edge magnitude value)을 포함할 수 있다.
도 13b는 도 13a의 패리티 체크 행렬을 예시적으로 보여주는 도면이다. 도 13b를 참조하면, 도 13a의 패리티 검사 행렬(H)이 수치의 형태로 도시된다. 도 13a 및 도 13b를 참조하면, 패리티 검사 행렬(H)에 포함된 요소들(elements) 각각은 가변 노드와 체크 노드 사이의 연결이 존재하면 '1'의 값을 갖고, 연결이 존재하지 않으면 '0'의 값을 가질 수 있다.
예를 들어, 패리티 검사 행렬(H)의 제2 행 및 제3 열의 요소는 '1'의 값을 가질 수 있다. 이 때, 제2 체크 노드(C2)와 제3 가변 노드(V3)는 연결될 수 있다. 패리티 검사 행렬(H)의 제3 행 및 제6 열의 요소는 '0'의 값을 가질 수 있다. 이 때, 제3 체크 노드(C3)와 제6 가변 노드(V6)가 연결되지 않을 수 있다.
예시적인 실시 예에서, 제1 레벨 디코더(1121a)는 패리티 검사 행렬(H)과 가변 노드들(V1~V6)의 비트 정보를 포함하는 열 벡터(column vector)의 곱을 기반으로 비트의 에러를 체크할 수 있다. 예를 들어, 도 13b에 도시된 비트 정보를 포함하는 패리티 검사 행렬(H)과 '101011'의 비트 정보를 포함하는 열 벡터를 곱하면 '222'의 정보를 포함하는 열 벡터가 체크 노드들(C1~C3)에서 계산될 수 있다. 계산된 열 벡터에 포함된 모든 요소들은 짝수이므로, '101011'의 비트 정보는 에러가 없는 것으로 체크될 수 있다.
도 14는 도 12의 제1 레벨 코어 디코더를 예시적으로 보여주는 블록도이다. 도 12 및 도 14를 참조하면, 제1 레벨 서브 디코더(1121d)와 결합하지 않고 임의의 버퍼 데이터를 디코딩 하여 디코디드 데이터를 출력하는 제1 레벨 코어 디코더(1121c)가 예시적으로 도시된다.
제1 레벨 코어 디코더(1121c)는 ECC 스케줄러(1110) 및 SRAM(1140)과 연결될 수 있다. 제1 레벨 코어 디코더(1121c)는 LLR 생성기(1121c-1), 가변 노드 버퍼(1121c-2), C2V 계산기(1121c-3), 디코더 메모리(1121c-4), V2C 계산기(1121c-5), 체크 노드 버퍼(1121c-6), 신드롬 가중치 생성기(1121c-7), 신드롬 가중치 비교기(1121c-8), 및 CRC 검사기(1121c-9)를 포함할 수 있다.
LLR 생성기(1121c-1)는 SRAM(1140)으로부터 버퍼 데이터를 수신할 수 있다. LLR 생성기(1121c-1)는 수신된 버퍼 데이터를 기반으로 로그 우도비(LLR; log likelihood ratio)를 계산할 수 있다. 로그 우도비는 특정 비트의 값이 '0'일 확률을 특정 비트의 값이 '1'일 확률로 나눈 값에 로그를 취한 값일 수 있다.
가변 노드 버퍼(1121c-2)는 LLR 생성기(1121c-1)로부터 계산된 로그 우도비를 수신할 수 있다. 가변 노드 버퍼(1121c-2)는 복수의 가변 노드들(V1~VN)을 포함할 수 있다. 복수의 가변 노드들(V1~VN)은 버퍼 데이터의 비트 정보를 저장할 수 있다.
C2V 계산기(1121c-3)는 가변 노드 버퍼(1121c-2), 디코더 메모리(1121c-4), 및 체크 노드 버퍼(1121c-6)와 연결될 수 있다. C2V 계산기(1121c-3)는 가변 노드 버퍼(1121c-2)에서 체크 노드 버퍼(1121c-6)로 전달되는 에지 값을 입력 값으로 할 수 있다. C2V 계산기(1121c-3)는 체크 노드 버퍼(1121c-6)에서 가변 노드 버퍼(1121c-2)로 전달되는 에지 값을 출력 값으로 할 수 있다.
예시적인 실시 예에서, C2V 계산기(1121c-3)는 XOR 게이트를 포함할 수 있다. C2V 계산기(1121c-3)는 가변 노드 버퍼(1121c-2)에서 체크 노드 버퍼(1121c-6)로 전달되는 에지 값들을 기반으로 XOR 연산을 할 수 있다. C2V 계산기(1121c-3)는 XOR 연산 결과를 기반으로 체크 노드 버퍼(1121c-6)에서 가변 노드 버퍼(1121c-2)로 전달되는 에지 값을 결정할 수 있다. 결정된 에지 값은 디코더 메모리(1121c-4)에 저장될 수 있다.
예시적인 실시 예에서, C2V 계산기(1121c-3)는 최소 계산기(min calculator)를 포함할 수 있다. 최소 계산기는 '2'비트 이상의 에지 값에 포함된 에지 크기 값을 계산하는 장치일 수 있다. 예를 들어, 제1 레벨 코어 디코더(1121c)가 제1 레벨 서브 디코더(1121d)와 결합하여 '2'비트의 에지 값을 처리하는 경우, 제1 레벨 코어 디코더(1121c)는 최소 계산기를 통해서 에지 크기 값을 계산할 수 있다.
예시적인 실시 예에서, C2V 계산기(1121c-3)는 결정된 에지 값을 기반으로 가변 노드 버퍼(1121c-2)의 비트 정보를 수정할 수 있다. C2V 계산기(1121c-3)는 가변 노드 버퍼(1121c-2)에 저장된 버퍼 데이터의 일부를 수정하는 과정을 반복함으로써 버퍼 데이터를 디코딩 할 수 있다. 버퍼 데이터를 디코딩 한 데이터는 디코디드 데이터일 수 있다. 버퍼 데이터의 일부를 수정하는 과정이 반복된 후, 가변 노드 버퍼(1121c-2)에 저장된 데이터는 디코디드 데이터일 수 있다.
디코더 메모리(1121c-4)는 C2V 계산기(1121c-3) 및 V2C 계산기(1121c-5)와 연결될 수 있다. 디코더 메모리(1121c-4)는 C2V 계산기(1121c-3) 및 V2C 계산기(1121c-5)와 '1'비트의 에지 정보를 주고 받을 수 있다. 디코더 메모리(1121c-4)는 '1'비트의 에지 정보를 저장할 수 있다. 예를 들어, 디코더 메모리(1121c-4)는 '1'비트의 메시지를 주고받을 수 있다. 디코더 메모리(1121c-4)는 에지 부호 값을 저장할 수 있다.
V2C 계산기(1121c-5)는 가변 노드 버퍼(1121c-2), 디코더 메모리(1121c-4), 및 체크 노드 버퍼(1121c-6)와 연결될 수 있다. V2C 계산기(1121c-5)는 체크 노드 버퍼(1121c-6)에서 가변 노드 버퍼(1121c-2)로 전달되는 에지 값을 입력 값으로 할 수 있다. V2C 계산기(1121c-5)는 가변 노드 버퍼(1121c-2)에서 체크 노드 버퍼(1121c-6)으로 전달되는 에지 값을 출력 값으로 할 수 있다.
예시적인 실시 예에서, V2C 계산기(1121c-5)는 가산기 및 양자화기를 포함할 수 있다. V2C 계산기(1121c-5)에 포함된 가산기는 체크 노드 버퍼(1121c-6) 및 가변 노드 버퍼(1121c-2) 사이에서 전송되는 메시지를 처리하는 장치일 수 있다. V2C 계산기(1121c-5)에 포함된 양자화기는 가산기의 처리 결과를 기반으로 가변 노드 버퍼(1121c-2)에서 체크 노드 버퍼(1121c-6)으로 전달되는 에지 값을 결정하는 장치일 수 있다.
예시적인 실시 예에서, V2C 계산기(1121c-5)에 포함된 양자화기는 제1 레벨 코어 디코더(1121c)와 제1 레벨 서브 디코더(1121d)의 결합 후 에러 정정 연산을 고려하여 제작된 고정밀도 양자화기일 수 있다. 예를 들어, V2C 계산기(1121c-5)에 포함된 양자화기는 '2'비트의 에지 값을 처리할 수 있다.
체크 노드 버퍼(1121c-6)는 C2V 계산기(1121c-3) 및 V2C 계산기(1121c-5)를 통해서 가변 노드 버퍼(1121c-2)와 에지 값을 주고받을 수 있다. 체크 노드 버퍼(1121c-6)는 주고받은 에지 값을 기반으로 가변 노드 버퍼(1121c-2)에 저장된 데이터의 에러 수준을 체크할 수 있다. 체크 노드 버퍼(1121c-6)는 에러 수준을 체크한 정보를 신드롬 가중치 생성기(1121c-7)로 출력할 수 있다.
예시적인 실시 예에서, 체크 노드 버퍼(1121c-6)는 가변 노드 버퍼(1121c-2)에 저장된 버퍼 데이터의 에러 수준을 체크한 정보를 신드롬 가중치 생성기(1121c-7)로 출력할 수 있다.
예시적인 실시 예에서, 체크 노드 버퍼(1121c-6)는 가변 노드 버퍼(1121c-2)에 저장된 디코디드 데이터의 에러 수준을 체크한 정보를 신드롬 가중치 생성기(1121c-7)로 출력할 수 있다.
신드롬 가중치 생성기(1121c-7)는 체크 노드 버퍼(1121c-6)로부터 에러 수준을 체크한 정보를 수신할 수 있다. 신드롬 가중치 생성기(1121c-7)는 수신된 정보를 기반으로 신드롬 가중치를 생성할 수 있다. 신드롬 가중치 생성기(1121c-7)는 생성된 신드롬 가중치를 신드롬 가중치 비교기(1121c-8) 및 ECC 스케줄러(1110)로 출력할 수 있다.
예시적인 실시 예에서, 신드롬 가중치 생성기(1121c-7)는 버퍼 데이터의 에러 수준을 체크한 정보를 수신할 수 있다. 신드롬 가중치 생성기(1121c-7)는 버퍼 데이터의 에러 수준을 나타내는 신드롬 가중치를 생성할 수 있다. 신드롬 가중치 생성기(1121c-7)는 버퍼 데이터의 신드롬 가중치를 신드롬 가중치 비교기(1121c-8) 및 ECC 스케줄러(1110)로 출력할 수 있다.
예시적인 실시 예에서, 신드롬 가중치 생성기(1121c-7)는 디코디드 데이터의 에러 수준을 체크한 정보를 수신할 수 있다. 신드롬 가중치 생성기(1121c-7)는 디코디드 데이터의 에러 수준을 나타내는 신드롬 가중치를 생성할 수 있다. 신드롬 가중치 생성기(1121c-7)는 디코디드 데이터의 신드롬 가중치를 신드롬 가중치 비교기(1121c-8) 및 ECC 스케줄러(1110)로 출력할 수 있다.
신드롬 가중치 비교기(1121c-8)는 신드롬 가중치 생성기(1121c-7)로부터 신드롬 가중치를 수신할 수 있다. 신드롬 가중치 비교기(1121c-8)는 신드롬 가중치를 저장할 수 있다. 신드롬 가중치 비교기(1121c-8)는 신드롬 가중치에 따라 가변 노드 버퍼(1121c-2)에 저장된 데이터의 출력을 제어할 수 있다.
예시적인 실시 예에서, 신드롬 가중치 비교기(1121c-8)는 버퍼 데이터의 신드롬 가중치가 '0'인지 판단할 수 있다. 만약, 버퍼 데이터의 신드롬 가중치가 '0'인 경우, 신드롬 가중치 비교기(1121c-8)는 가변 노드 버퍼(1121c-2)에 저장된 버퍼 데이터가 호스트로 출력되도록 제어할 수 있다.
예시적인 실시 예에서, 신드롬 가중치 비교기(1121c-8)는 버퍼 데이터의 신드롬 가중치를 수신 및 저장할 수 있다. 신드롬 가중치 비교기(1121c-8)는 디코디드 데이터의 신드롬 가중치를 수신할 수 있다. 신드롬 가중치 비교기(1121c-8)는 저장된 버퍼 데이터의 신드롬 가중치 및 수신된 디코디드 데이터의 신드롬 가중치를 비교할 수 있다.
디코디드 데이터의 신드롬 가중치가 버퍼 데이터의 신드롬 가중치보다 작은 경우, 신드롬 가중치 비교기(1121c-8)는 가변 노드 버퍼(1121c-2)에 저장된 디코디드 데이터가 SRAM(1140)으로 출력되도록 제어할 수 있다. 이에 따라, SRAM(1140)은 버퍼 데이터 및 디코디드 데이터 중 에러 수준이 낮은 데이터를 저장할 수 있다.
CRC 검사기(1121c-9)는 가변 노드 버퍼(1121c-2)에서 SRAM(1140)으로 출력되는 디코디드 데이터에 대해서 순환 덧붙임 검사(Cyclic redundancy check)를 수행할 수 있다. CRC 검사기(1121c-9)는 순환 덧붙임 검사가 수행된 디코디드 데이터를 SRAM(1140)으로 출력할 수 있다.
도 15는 도 12의 제1 레벨 서브 디코더를 예시적으로 보여주는 블록도이다. 도 12 및 도 15를 참조하면, 제1 레벨 코어 디코더(1121c)와 결합하지 않고 임의의 버퍼 데이터를 디코딩 하여 디코디드 데이터를 출력하는 제1 레벨 서브 디코더(1121d)가 예시적으로 도시된다.
LLR 생성기(1121d-1), 가변 노드 버퍼(1121d-2), 디코더 메모리(1121c-4), 체크 노드 버퍼(1121c-6), 신드롬 가중치 생성기(1121c-7), 신드롬 가중치 비교기(1121c-8), 및 CRC 검사기(1121c-9)의 특징은 도 14의 LLR 생성기(1121c-1), 가변 노드 버퍼(1121c-2), 디코더 메모리(1121c-4), 체크 노드 버퍼(1121c-6), 신드롬 가중치 생성기(1121c-7), 신드롬 가중치 비교기(1121c-8), 및 CRC 검사기(1121c-9)와 유사하므로, 이에 대한 상세한 설명은 생략된다.
C2V 계산기(1121d-3)는 가변 노드 버퍼(1121d-2)에서 체크 노드 버퍼(1121d-6)로 전달되는 에지 값들을 기반으로 XOR 연산을 할 수 있다. C2V 계산기(1121d-3)는 XOR 연산 결과를 기반으로 체크 노드 버퍼(1121c-6)에서 가변 노드 버퍼(1121d-2)로 전달되는 에지 값을 결정할 수 있다.
예시적인 실시 예에서, C2V 계산기(1121d-3)는 최소 계산기를 생략할 수 있다. 제1 레벨 서브 디코더(1121d)는 '1'비트의 에러를 정정하는 디코더일 수 있다. 제1 레벨 서브 디코더(1121d)는 제1 레벨 코어 디코더(1121c)와 결합된 후, 제1 레벨 코어 디코더(1121c)에 포함된 최소 계산기를 공유할 수 있다. 따라서, 제1 레벨 서브 디코더(1121d)는 에지 크기 값을 계산하는 최소 계산기를 생략할 수 있다.
V2C 계산기(1121d-5)는 체크 노드 버퍼(1121d-6)에서 가변 노드 버퍼(1121d-2)로 전달되는 에지 값을 입력 값으로 할 수 있다. V2C 계산기(1121d-5)는 가변 노드 버퍼(1121d-2)에서 체크 노드 버퍼(1121d-6)로 전달되는 에지 값을 출력 값으로 할 수 있다.
예시적인 실시 예에서, V2C 계산기(1121d-5)는 '1'비트의 정밀도를 갖는 서브 양자화기를 포함할 수 있다. 제1 레벨 서브 디코더(1121d)는 제1 레벨 코어 디코더(1121c)와 결합된 후, 제1 레벨 코어 디코더(1121c)에 포함된 '2'비트의 정밀도를 갖는 양자화기를 공유할 수 있다. 따라서, 제1 레벨 서브 디코더(1121d)는 정정 능력을 초과하는 '2'비트의 정정 능력을 갖는 양자화기를 생략할 수 있다.
도 16은 도 12의 결합된 제1 레벨 디코더들을 예시적으로 보여주는 블록도이다. 도 12 및 도 16을 참조하면, ECC 스케줄러(1110)에서 출력된 조합 신호(CB)를 기반으로 결합된 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)가 예시적으로 도시된다. 제1 레벨 코어 디코더(1121c)의 하부 구성들(1121c-1~1121c-9) 및 제1 레벨 서브 디코더(1121d)의 하부 구성들(1121d-1~1121d-9)의 특징은 도 14 및 도 15에서 설명된 것과 유사하므로, 이에 대한 상세한 설명은 생략된다.
네트워크 활성화 회로(1124)는 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)와 연결될 수 있다. 네트워크 활성화 회로(1124)는 ECC 스케줄러(1110)로부터 결합 신호(CB)를 수신할 수 있다. 네트워크 활성화 회로(1124)는 수신된 결합 신호(CB)에 응답하여 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d) 사이의 네트워크를 활성화할 수 있다. 네트워크가 활성화 된 제1 레벨 디코더들(1121c, 1121d)는 제2 레벨 디코더처럼 동작할 수 있다.
예시적인 실시 예에서, 네트워크 활성화 회로(1124)는 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)의 메모리 공유를 활성화시킬 수 있다. 예를 들어, 제1 레벨 코어 디코더(1121c)의 디코더 메모리(1121c-4)는 에지 부호 값을 저장하는 메모리로 활용될 수 있다. 제1 레벨 서브 디코더(1121d)의 디코더 메모리(1121d-4)는 에지 크기 값을 저장하는 메모리로 활용될 수 있다. 결합된 제1 레벨 디코더들(1121c, 1121d)은 메모리를 공유함으로써 '2'비트의 에지 정보를 저장할 수 있다.
예시적인 실시 예에서, 네트워크 활성화 회로(1124)는 제1 레벨 코어 디코더(1121c) 및 제1 레벨 서브 디코더(1121d)의 논리 공유를 활성화시킬 수 있다. 논리 공유가 활성화된 제1 레벨 디코더들(1121c, 1121d)은 계산기를 공유할 수 있다.
예를 들어, 제1 레벨 코어 디코더(1121c)의 V2C 계산기(1121c-5)에 포함된 가산기와 제1 레벨 서브 디코더(1121d)의 V2C 계산기(1121d-5)에 포함된 가산기는 논리적으로 공유될 수 있다. 디코더 메모리들(1121c-4, 1121d-4)은 공유될 수 있다. 좀 더 상세하게는, V2C 계산기들(1121c-5, 1121d-5) 각각의 가산기는 '1'비트의 메시지들을 처리할 수 있다. 논리적으로 공유된 V2C 계산기들(1121c-5, 1121d-5) 각각의 가산기는 하나의 가산기처럼 동작하여 '2'비트의 메시지들을 처리할 수 있다. 처리된 '2'비트의 메시지는 디코더 메모리들(1121c-4, 1121d-4)에 분산하여 저장될 수 있다.
도 16을 참조하면, 논리 공유가 활성화된 제1 레벨 디코더들(1121c, 1121d)은 V2C 계산기들(1121c-5, 1121d-5)을 공유하는 것으로 도시되나, 본 발명의 범위는 이에 제한되지 않는다. 예를 들어, 논리 공유가 활성화된 제1 레벨 디코더들(1121c, 1121d)은 C2V 계산기들(1121c-3, 1121d-3)을 공유할 수 있다. 또는, 논리 공유가 활성화된 제1 레벨 디코더들(1121c, 1121d)은 양자화기를 공유하거나, 에러 정정에 대응하는 연산을 수행하는 다른 로직들(미도시)을 더 공유할 수 있다.
도 17은 도 16의 결합된 디코더 메모리들이 처리하는 에지 값을 보여주는 도면이다. 도 17을 참조하면, '2'비트의 에지 값이 예시적으로 도시된다. '2'비트의 에지 값은 서로 다른 '4'종류의 값들 중 하나로 표현될 수 있다. '2'비트의 에지 값은 에지 부호 값 및 에지 크기 값을 포함할 수 있다.
예를 들어, '1'의 에지 부호 값은 에지 값의 부호가 양의 부호임을 나타낼 수 있다. '0'의 에지 부호 값은 에지 값의 부호가 음의 부호임을 나타낼 수 있다. '1'의 에지 크기 값은 에지 값의 크기가 큰 것을 나타낼 수 있다. '0'의 에지 크기 값은 에지 값의 크기가 작은 것을 나타낼 수 있다.
예시적인 실시 예에서, 숫자 '1'에 대응하는 '2'비트의 에지 값은 '10'으로 표현될 수 있다. 이 때, 에지 부호 값은 '1'일 수 있다. 에지 부호 값은 숫자 '1'의 부호가 양의 부호임을 나타낼 수 있다. 에지 크기 값은 '0'일 수 있다. 에지 크기 값은 숫자 '1'의 크기가 다른 숫자(예를 들어, 숫자 '2')보다 작은 것을 나타낼 수 있다.
도 18은 본 발명의 실시 예에 따른 ECC 코어 유닛이 출력하는 신드롬 가중치를 예시적으로 보여주는 그래프이다. 도 18을 참조하면, 반복 구간 단위로 디코딩을 수행하는 ECC 코어 유닛이 ECC 스케줄러로 출력하는 신드롬 가중치(SW)가 예시적으로 도시된다.
제1 시나리오(S1)는 반복적으로 디코딩을 수행함에 따라 신드롬 가중치(SW)가 감소하는 경우를 예시적으로 나타낸 시나리오이다. 제1 시나리오(S1)는 실선(solid line)으로 도시된다.
제1 시나리오(S1)는 제1 내지 제3 반복 구간(I1~I3)과 임계 반복 구간(Ic)을 포함할 수 있다. 반복 구간들 각각에서 가변 노드 버퍼 및 체크 노드 버퍼 사이의 메시지 교환에 따른 연산이 반복적으로 수행될 수 있다. ECC 코어 유닛은 반복적으로 수행되는 연산을 기반으로 디코딩을 수행할 수 있다. 임계 반복 구간(Ic)은 디코딩의 성공 여부와 무관하게 최종적으로 연산을 수행하는 구간을 의미할 수 있다. 제1 시나리오(S1)는 '4'종류의 반복 구간들을 포함하는 것으로 도시되나, 본 발명의 범위는 이에 제한되지 않으며, 제1 시나리오(S1)에 포함되는 반복 구간들의 수는 증가 또는 감소할 수 있다.
제2 시나리오(S2)는 반복적으로 디코딩을 수행함에 따라 신드롬 가중치(SW)가 증가하는 경우를 예시적으로 나타낸 시나리오이다. 제2 시나리오(S2)는 점선(dotted line)으로 도시된다.
제2 시나리오(S2)의 제1 내지 제3 반복 구간(I1~I3)에서 신드롬 가중치(SW)는 점진적으로 증가할 수 있다. 제2 시나리오(S2)의 제1 내지 제3 반복 구간(I1~I3)에서 ECC 스케줄러는 점진적으로 높은 정정 능력을 갖는 디코더를 선택할 수 있다. 제2 시나리오(S2)의 임계 반복 구간(Ic)에서 신드롬 가중치(SW)는 최대가 될 수 있다. 임계 반복 구간(Ic)의 디코디드 데이터는 제1 반복 구간(I1)의 디코디드 데이터보다 에러 수준이 높을 수 있다. 버퍼 메모리인 SRAM에 저장된 데이터는 임계 반복 구간(Ic)의 디코디드 데이터로 업데이트되지 않을 수 있다.
제3 시나리오(S3)는 반복적으로 디코딩을 수행함에 따라 신드롬 가중치(SW)가 증가 또는 감소하는 경우를 예시적으로 나타낸 시나리오이다. 제3 시나리오(S3)는 일점 쇄선(dash-single dotted line)으로 도시된다.
제3 시나리오(S3)의 제1 반복 구간(I1)에서 신드롬 가중치(SW)는 제1 값(X1)에서 제2 값(X2)으로 증가할 수 있다. 버퍼 메모리에 저장된 제1 값(X1)의 신드롬 가중치(SW)에 대응하는 데이터는 제2 값(X2)의 신드롬 가중치에 대응하는 디코디드 데이터로 업데이트되지 않을 수 있다.
제3 시나리오(S3)의 제3 반복 구간(I3)에서 신드롬 가중치(SW)는 제3 값(X3)을 가질 수 있다. 제3 값(X3)의 신드롬 가중치는 제3 시나리오(S3)의 전체 반복 구간들(I1, I2, I3, Ic)내에서 최소 값일 수 있다. 버퍼 메모리에 저장된 데이터는 제3 값(X3)의 신드롬 가중치에 대응하는 디코디드 데이터로 업데이트될 수 있다.
도 19는 본 발명의 실시 예에 따른 스토리지 장치를 예시적으로 보여주는 블록도이다. 도 19를 참조하면, 본 발명의 실시 예에 따른 스토리지 장치(2000)가 예시적으로 도시된다. 스토리지 장치(2000)는 불휘발성 메모리 장치(2200), ECC 스케줄러(2110), ECC 코어 유닛(2120), 및 추가 ECC 코어 유닛(2180)을 포함할 수 있다. 불휘발성 메모리 장치(2200), ECC 스케줄러(2110), 및 ECC 코어 유닛(2120)은 도 3의 불휘발성 메모리 장치(1200), ECC 스케줄러(1110), 및 ECC 코어 유닛(1120)과 유사하므로, 이에 대한 상세한 설명은 생략된다.
추가 ECC 코어 유닛(2180)은 복수의 제1 레벨 디코더들을 포함할 수 있다. 복수의 제1 레벨 디코더들은 각각 불휘발성 메모리 장치(2200)에 포함된 복수의 낸드 플래시 메모리들과 연결될 수 있다. 복수의 제1 레벨 디코더들 각각은 연결된 낸드 플래시 메모리에 저장된 데이터를 디코딩하고, 디코딩된 데이터의 신드롬 가중치를 ECC 스케줄러(2110)로 출력할 수 있다.
예시적인 실시 예에서, 불휘발성 메모리 장치(2200)에 저장된 초기 데이터의 신드롬 가중치를 계산하기 위해서 디코딩이 요구될 수 있다. 초기 데이터를 디코딩 할 디코더는 신드롬 가중치와 무관하게 선택될 수 있다. 불휘발성 메모리 장치(2200)와 연결된 추가 ECC 코어 유닛(2180)에서 초기 데이터를 디코딩 함으로써, ECC 스케줄러(2110)가 초기 데이터를 디코딩 할 디코더를 선택하는 부담이 감소될 수 있다. 이에 따라, 스토리지 장치(2000)에서 데이터를 리드하는 속도가 향상될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
Claims (20)
- 하이 레벨 디코더 및 로우 레벨 디코더를 포함하는 스토리지 컨트롤러의 동작 방법에 있어서:
불휘발성 메모리 장치로부터 리드한 초기 데이터를 디코딩 한 제1 데이터 및 상기 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 생성하는 단계;
상기 제1 신드롬 가중치가 특정 값이면 상기 제1 데이터를 호스트로 출력하는 단계;
상기 제1 신드롬 가중치가 기준 값을 초과하면 제1 에러 정정 능력을 갖는 하이 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계; 및
상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 제1 에러 정정 능력보다 낮은 제2 에러 정정 능력을 갖는 로우 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계를 포함하는 스토리지 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 선택된 하이 레벨 디코더 또는 상기 선택된 로우 레벨 디코더에서 상기 제1 데이터를 디코딩 한 제2 데이터 및 상기 제2 데이터의 에러 수준을 나타내는 제2 신드롬 가중치를 생성하는 단계를 더 포함하는 스토리지 컨트롤러의 동작 방법. - 제 2 항에 있어서,
상기 제2 신드롬 가중치가 상기 특정 값이면 상기 제2 데이터를 상기 호스트로 출력하는 단계를 더 포함하는 스토리지 컨트롤러의 동작 방법. - 제 2 항에 있어서,
상기 초기 데이터를 디코딩 한 상기 제1 데이터를 저장하는 단계; 및
상기 제2 신드롬 가중치가 상기 제1 신드롬 가중치보다 작으면 상기 제1 데이터를 상기 제2 데이터로 업데이트하는 단계를 더 포함하는 스토리지 컨트롤러의 동작 방법. - 제 2 항에 있어서,
상기 제2 신드롬 가중치가 상기 기준 값을 초과하면 상기 하이 레벨 디코더를 선택하여 상기 제2 데이터를 디코딩 하는 단계; 및
상기 제2 신드롬 가중치가 상기 기준 값 이하이면 상기 로우 레벨 디코더를 선택하여 상기 제2 데이터를 디코딩 하는 단계를 더 포함하는 스토리지 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 로우 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계는:
상기 로우 레벨 디코더가 이용가능한지 체크하는 단계; 및
상기 로우 레벨 디코더가 이용 불가능하면, 상기 로우 레벨 디코더 대신 상기 하이 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계를 포함하는 스토리지 컨트롤러의 동작 방법. - 제 1 항에 있어서,
상기 제1 신드롬 가중치가 상기 기준 값을 초과하면 상기 하이 레벨 디코더를 선택하여 상기 제1 데이터를 디코딩 하는 단계는:
상기 하이 레벨 디코더가 이용가능한지 체크하는 단계;
상기 하이 레벨 디코더가 이용 불가능하면, 상기 하이 레벨 디코더 대신 상기 로우 레벨 디코더 및 상기 로우 레벨 디코더와 다른 로우 레벨 디코더를 선택하고, 선택된 로우 레벨 디코더들을 결합하여 상기 제1 데이터를 디코딩 하는 단계를 포함하는 스토리지 컨트롤러의 동작 방법. - 제 7 항에 있어서,
상기 선택된 로우 레벨 디코더들에 각각 포함된 계산기를 공유하는 스토리지 컨트롤러의 동작 방법. - 제 7 항에 있어서,
상기 선택된 로우 레벨 디코더들에 각각 포함된 디코더 메모리를 공유하는 스토리지 컨트롤러의 동작 방법. - 초기 데이터를 저장하도록 구성된 불휘발성 메모리 장치와 연결된 디코더, 제1 에러 정정 능력을 갖는 하이 레벨 디코더, 및 상기 제1 에러 정정 능력보다 낮은 제2 에러 정정 능력을 갖는 로우 레벨 디코더를 포함하는 ECC(Error Correction Code) 코어 유닛; 및
상기 디코더로부터 제1 신드롬 가중치를 수신하고, 상기 제1 신드롬 가중치가 기준 값을 초과하면 상기 하이 레벨 디코더로 제1 데이터의 디코딩을 요청하는 요청 신호를 출력하고, 상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 로우 레벨 디코더로 상기 요청 신호를 출력하도록 구성된 ECC 스케줄러를 포함하되,
상기 디코더는 상기 불휘발성 메모리 장치로부터 상기 초기 데이터를 리드하고, 상기 리드된 초기 데이터를 디코딩 한 상기 제1 데이터 및 상기 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 생성하며, 상기 제1 신드롬 가중치가 특정 값이면 호스트로 상기 제1 데이터를 출력하고, 상기 제1 신드롬 가중치가 상기 특정 값이 아니면 상기 요청 신호를 수신한 상기 하이 레벨 디코더 또는 상기 로우 레벨 디코더로 상기 제1 데이터를 출력하도록 구성되는 스토리지 컨트롤러. - 제 10 항에 있어서,
상기 ECC 코어 유닛은 상기 ECC 스케줄러로부터 상기 요청 신호를 수신하고, 상기 수신된 요청 신호를 기반으로 상기 제1 데이터를 디코딩 한 제2 데이터 및 상기 제2 데이터의 에러 수준을 나타내는 제2 신드롬 가중치를 출력하도록 구성된 스토리지 컨트롤러. - 제 11 항에 있어서,
상기 디코더로부터 상기 제1 데이터를 수신하고, 상기 수신된 제1 데이터를 저장하도록 구성된 버퍼 메모리를 더 포함하되,
상기 ECC 코어 유닛은 상기 제2 신드롬 가중치가 상기 제1 신드롬 가중치보다 낮으면 상기 버퍼 메모리에 저장된 상기 제1 데이터를 상기 제2 데이터로 업데이트하도록 더 구성된 스토리지 컨트롤러. - 제 10 항에 있어서,
상기 ECC 스케줄러는 상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 로우 레벨 디코더가 이용가능한지 체크하고, 상기 로우 레벨 디코더가 이용 불가능하면 상기 로우 레벨 디코더 대신 상기 하이 레벨 디코더로 상기 요청 신호를 출력하도록 더 구성된 스토리지 컨트롤러. - 제 10 항에 있어서,
상기 ECC 코어 유닛은 상기 제2 에러 정정 능력을 갖는 다른 로우 레벨 디코더를 더 포함하며,
상기 ECC 스케줄러는 상기 제1 신드롬 가중치가 상기 기준 값을 초과하면 상기 하이 레벨 디코더가 이용가능한지 체크하고, 상기 하이 레벨 디코더가 이용 불가능하면 상기 하이 레벨 디코더 대신 상기 로우 레벨 디코더 및 상기 다른 로우 레벨 디코더로 상기 요청 신호를 출력하도록 더 구성된 스토리지 컨트롤러. - 제 14 항에 있어서,
상기 로우 레벨 디코더 및 상기 다른 로우 레벨 디코더에 각각 포함된 계산기를 공유하는 스토리지 컨트롤러. - 제 14 항에 있어서,
상기 로우 레벨 디코더 및 상기 다른 로우 레벨 디코더에 각각 포함된 디코더 메모리를 공유하는 스토리지 컨트롤러. - 제1 에러 정정 능력을 갖고, 불휘발성 메모리 장치로부터 리드한 초기 데이터를 디코딩 한 제1 데이터 및 상기 제1 데이터의 에러 수준을 나타내는 제1 신드롬 가중치를 출력하도록 구성된 제1 레벨 디코더;
상기 제1 에러 정정 능력보다 높은 제2 에러 정정 능력을 갖는 제2 레벨 디코더;
상기 제2 에러 정정 능력보다 높은 제3 에러 정정 능력을 갖는 제3 레벨 디코더; 및
상기 제1 신드롬 가중치를 수신하고, 상기 제1 신드롬 가중치가 기준 값을 초과하면 상기 제3 레벨 디코더로 상기 제1 데이터의 디코딩을 요청하는 요청 신호를 출력하고, 상기 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 제2 레벨 디코더로 상기 요청 신호를 출력하도록 구성된 ECC 스케줄러를 포함하되,
상기 제1 레벨 디코더는 상기 제1 신드롬 가중치가 특정 값이면 호스트로 상기 제1 데이터를 출력하고, 상기 제1 신드롬 가중치가 상기 특정 값이 아니면 상기 요청 신호를 수신한 제2 레벨 디코더 또는 제3 레벨 디코더로 상기 제1 데이터를 출력하도록 구성된 스토리지 장치. - 제 17 항에 있어서,
상기 불휘발성 메모리 장치는 상기 초기 데이터를 저장하는 제1 불휘발성 메모리 및 상기 초기 데이터와 다른 초기 데이터를 저장하는 제2 불휘발성 메모리를 포함하고,
상기 제1 레벨 디코더는 상기 제2 불휘발성 메모리로부터 리드한 상기 다른 초기 데이터를 디코딩 한 다른 제1 데이터 및 상기 다른 제1 데이터의 에러 수준을 나타내는 다른 제1 신드롬 가중치를 출력하도록 더 구성되고,
상기 ECC 스케줄러는 상기 다른 제1 신드롬 가중치를 수신하고, 상기 다른 제1 신드롬 가중치가 상기 기준 값을 초과하면 상기 제3 레벨 디코더로 상기 다른 제1 데이터의 디코딩을 요청하는 다른 요청 신호를 출력하고, 상기 다른 제1 신드롬 가중치가 상기 기준 값 이하이면 상기 제2 레벨 디코더로 상기 다른 요청 신호를 출력하도록 더 구성된 스토리지 장치. - 제 17 항에 있어서,
상기 불휘발성 메모리 장치는 복수의 불휘발성 메모리들을 포함하고, 상기 복수의 불휘발성 메모리들은 각각 복수의 초기 데이터를 저장하며, 상기 복수의 초기 데이터들은 각각 복수의 제1 레벨 디코더에 의해서 디코딩 되는 스토리지 장치. - 제 17 항에 있어서,
상기 제1 레벨 디코더를 N개 포함하고, 상기 제2 레벨 디코더를 M개 포함하며, 상기 제3 레벨 디코더를 K개 포함하되,
K는 자연수이고, M은 K보다 큰 자연수이며, N은 M보다 큰 자연수인 스토리지 장치.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190164302A KR20210074425A (ko) | 2019-12-11 | 2019-12-11 | 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 |
US16/917,101 US11184030B2 (en) | 2019-12-11 | 2020-06-30 | Storage controller for correcting error, storage device including the same, and operating method thereof |
EP20212916.9A EP3835960A3 (en) | 2019-12-11 | 2020-12-09 | Storage controller for correcting error, storage device including the same, and operating method thereof |
CN202011457064.6A CN112951313A (zh) | 2019-12-11 | 2020-12-11 | 用于纠错的存储控制器、包括其的存储设备及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190164302A KR20210074425A (ko) | 2019-12-11 | 2019-12-11 | 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210074425A true KR20210074425A (ko) | 2021-06-22 |
Family
ID=76317388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190164302A KR20210074425A (ko) | 2019-12-11 | 2019-12-11 | 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11184030B2 (ko) |
KR (1) | KR20210074425A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022260409A1 (ko) | 2021-06-08 | 2022-12-15 | 주식회사 엘지에너지솔루션 | 배터리 모듈, 그리고 이를 포함하는 배터리 팩 및 자동차 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021179672A (ja) * | 2020-05-11 | 2021-11-18 | ソニーセミコンダクタソリューションズ株式会社 | メモリモジュール |
KR20220103227A (ko) | 2021-01-14 | 2022-07-22 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법 |
US11556420B2 (en) * | 2021-04-06 | 2023-01-17 | Macronix International Co., Ltd. | Managing error correction coding in memory systems |
US20230396271A1 (en) * | 2022-06-01 | 2023-12-07 | Micron Technology, Inc. | Early stopping of bit-flip low density parity check decoding based on syndrome weight |
US11949429B2 (en) * | 2022-07-19 | 2024-04-02 | Macronix International Co., Ltd. | Memory device, error correction device and error correction method thereof |
US11881871B1 (en) * | 2022-09-14 | 2024-01-23 | SK Hynix Inc. | On-the-fly scaling factor change for irregular LDPC codes |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266367B2 (en) | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US8291295B2 (en) | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US8954817B2 (en) | 2012-07-31 | 2015-02-10 | Kabushiki Kaisha Toshiba | Storage apparatus and controller |
US9164832B2 (en) | 2013-02-27 | 2015-10-20 | Seagate Technology Llc | ECC management for variable resistance memory cells |
US9152495B2 (en) | 2013-07-03 | 2015-10-06 | SanDisk Technologies, Inc. | Managing non-volatile media using multiple error correcting codes |
US20160062698A1 (en) | 2014-08-26 | 2016-03-03 | Marvell World Trade Ltd. | Storage device controller architecture |
US10498362B2 (en) | 2016-12-19 | 2019-12-03 | Kabushiki Kaisha Toshiba | Low power error correcting code (ECC) system |
US10671323B2 (en) | 2017-08-29 | 2020-06-02 | SK Hynix Inc. | Memory system with shared buffer architecture for multiple decoders and method of operating such memory system |
US10700706B2 (en) | 2017-09-22 | 2020-06-30 | SK Hynix Inc. | Memory system with decoders and method of operating such memory system and decoders |
US10817373B2 (en) * | 2017-11-21 | 2020-10-27 | SK Hynix Inc. | Soft chip-kill recovery using concatenated codes |
US10892777B2 (en) * | 2019-02-06 | 2021-01-12 | Seagate Technology Llc | Fast error recovery with error correction code (ECC) syndrome weight assist |
JP2020154728A (ja) * | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | メモリシステム及びその制御方法 |
-
2019
- 2019-12-11 KR KR1020190164302A patent/KR20210074425A/ko active Search and Examination
-
2020
- 2020-06-30 US US16/917,101 patent/US11184030B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022260409A1 (ko) | 2021-06-08 | 2022-12-15 | 주식회사 엘지에너지솔루션 | 배터리 모듈, 그리고 이를 포함하는 배터리 팩 및 자동차 |
Also Published As
Publication number | Publication date |
---|---|
US20210184699A1 (en) | 2021-06-17 |
US11184030B2 (en) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20210074425A (ko) | 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 | |
KR101306645B1 (ko) | 시행착오에 의한 에러 보정 디코딩 | |
US9385754B2 (en) | Controller, information processing system, method of controlling controller, and program | |
US9513992B2 (en) | Method and apparatus to perform concurrent read and write memory operations | |
US20200012561A1 (en) | System and method for adaptive multiple read of nand flash | |
TWI703436B (zh) | 資料儲存裝置及其操作方法 | |
US20150169406A1 (en) | Decoding techniques for a data storage device | |
US20120233521A1 (en) | Apparatus, system, and method for decoding linear block codes in a memory controller | |
US20200287571A1 (en) | Method of operating decoder for reducing computational complexity and method of operating data storage device including the decoder | |
KR20180086816A (ko) | 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법 | |
JP2019054448A (ja) | メモリシステム | |
EP3835960A2 (en) | Storage controller for correcting error, storage device including the same, and operating method thereof | |
US11418219B2 (en) | Learning device | |
CN110572164B (zh) | Ldpc译码方法、装置、计算机设备及存储介质 | |
US9304851B2 (en) | Decoding with log likelihood ratios stored in a controller | |
CN110535476B (zh) | Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质 | |
KR20220045343A (ko) | 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법 | |
US11385833B2 (en) | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources | |
US11348658B2 (en) | Memory controller and storage device including the same | |
US11515898B2 (en) | Error correction decoder, error correction circuit having the same, and method of operating the same | |
TWI804359B (zh) | 低密度奇偶校檢碼的解碼方法及裝置 | |
US20220209794A1 (en) | Techniques to improve latency of retry flow in memory controllers | |
US11914895B2 (en) | Method for updating stored information and apparatus | |
US20210279133A1 (en) | Memory system | |
CN117472643A (zh) | 低密度奇偶校检码的译码方法、存储介质和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |