KR20230138384A - 정보 비트를 인코딩하는 장치를 포함하는 스토리지 시스템 및 그에 대한 방법 - Google Patents
정보 비트를 인코딩하는 장치를 포함하는 스토리지 시스템 및 그에 대한 방법 Download PDFInfo
- Publication number
- KR20230138384A KR20230138384A KR1020220138620A KR20220138620A KR20230138384A KR 20230138384 A KR20230138384 A KR 20230138384A KR 1020220138620 A KR1020220138620 A KR 1020220138620A KR 20220138620 A KR20220138620 A KR 20220138620A KR 20230138384 A KR20230138384 A KR 20230138384A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- chunk
- bits
- balance
- bit chunk
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 238000003860 storage Methods 0.000 title claims abstract description 47
- 239000011159 matrix material Substances 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 38
- 238000006467 substitution reaction Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000003491 array Methods 0.000 description 9
- 238000012937 correction Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000000470 constituent Substances 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002040 relaxant effect Effects 0.000 description 2
- 229910052709 silver Inorganic materials 0.000 description 2
- 239000004332 silver Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- 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/033—Theoretical methods to calculate these checking codes
-
- 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
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- 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/44—Indication or identification of errors, e.g. for repair
-
- 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
-
- 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/1174—Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
-
- 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/136—Reed-Muller [RM] codes
-
- 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2903—Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/611—Specific encoding aspects, e.g. encoding by means of 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/618—Shortening and extension of codes
-
- 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6513—Support of multiple code types, e.g. unified decoder for LDPC and turbo codes
-
- 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
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)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Error Detection And Correction (AREA)
Abstract
제1 배열의 제1 비트 청크를 획득하기 위해 정보 비트 및 밸런스 비트를 인코딩하는 것을 포함하고, 저장을 위한 정보 비트를 인코딩하는 시스템, 장치 및 방법은 제2 배열의 제2 비트 청크를 획득하기 위해 상기 제1 비트 청크를 치환하고, 상기 제2 배열의 제3 비트 청크를 획득하기 위해 상기 제2 비트 청크를 인코딩하고, 상기 제1 배열의 제4 비트 청크를 획득하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열의 제5 비트 청크를 획득하기 위해 상기 제4 비트 청크를 인코딩하고, 상기 제3 비트 청크의 제2 부분을 치환하고, 제5 비트 청크와 상기 치환된 제3 비트 청크의 제2 부분에 기초하여 상기 밸런스 비트를 조정하고, 상기 조정된 밸런스 비트에 기초하여 상기 제1 배열을 조정하고, 상기 조정된 제1 배열에 기초하여 코드워드를 획득하고, 스토리지 장치에 코드워드를 전송하는 것을 포함할 수 있다.
Description
본 개시의 실시예에 따른 장치 및 방법은 스토리지 장치의 관리, 특히 GLDPC(generalized low-density parity-check) 코드를 사용한 에러 정정 코딩에 관한 것이다.
GLDPC는 저밀도 패리티 검사 LDPC 코드 방식과 곱(product) 코드 방식 또는 블록 터보 코드 방식을 모두 일반화한 에러 정정 코드(Error Correction Code; ECC) 방식이다. 이러한 방식과 마찬가지로 GLDPC는 예를 들어, 신뢰도 확산(belief propagation) 사용하는 반복적인 디코딩에 의존한다. 그러나, 곱 코드와 관련하여 GLDPC는 더 나은 가중치 분포의 이점을 가지고, LDPC와 관련하여 GLDPC는 에러 확률과 그에 따라 수렴 속도를 향상시키는 더 강력한 디코더의 이점을 가진다.
그러나, 관련 기술 GLDPC 인코딩 절차는 높은 복잡성 및 제한적인 제약을 포함하는 많은 문제를 가지고 있다.
예를 들어, 관련 기술의 GLDPC 인코딩 절차는 높은 계산 및 메모리 복잡성예를 들어, 여기서 은 코드워드의 길이, 는 서브 코드워드의 수, 는 각 서브코드워드의 정보 단어 길이 및 는 각 서브 코드워드의 패리티 길이로 어려움을 겪는다.
다른 예로서, 덜 복잡하지만 일반적이지 않은 관련 기술의 GLDPC 인코딩 절차는 코드워드를 낮은 코드 레이트()로 제한하며, 여기서 은 서브 코드워드의 길이뿐만 아니라 동일한 크기의 슈퍼코드를 요구한다.
본 개시의 기술적 사상이 해결하려는 과제는 GLDPC(generalized low-density parity-check) 코드를 사용하여 정보 비트 및 밸런스 비트를 인코딩할 수 있는 장치, 스토리지 시스템 및 그에 관한 방법에 관한 것이다.
본 개시의 기술적 사상에 따른 스토리지 시스템은 GLDPC(generalized low-density parity-check) 코드워드를 저장하도록 구성된 스토리지 장치; 및 프로세서를 포함하되, 적어도 하나의 프로세서는, 정보 비트를 획득하고, 상기 GLDPC 코드워드의 제1 배열에 포함된 제1 비트 청크에 상기 정보 비트를 배치하고, 상기 제1 비트 청크에 포함된 밸런스 비트를 0으로 설정하고, 제1 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 상기 정보 비트와 상기 밸런스 비트를 인코딩하고, 상기 제1 비트 청크에 상기 제1 패리티 비트를 배치하고, 제1 치환 비트를 생성하기 위해 상기 제1 비트 청크를 치환(permute)하고, 상기 GLDPC 코드워드의 제2 배열에 포함된 제2 비트 청크에 상기 제1 치환 비트를 배치하고, 제2 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제1 치환 비트를 인코딩하고, 상기 제2 배열에 포함된 제3 비트 청크에 상기 제2 패리티 비트를 배치하고, 상기 제2 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제4 비트 청크에 상기 제2 치환 비트를 배치하고, 상기 제3 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제2 치환 비트를 인코딩하고, 상기 제1 배열에 포함된 제5 비트 청크에 상기 제3 패리티 비트를 배치하고, 제4 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제2 부분을 치환하고, 상기 제4 비트 청크와 상기 제4 치환 비트 간의 비교에 기초하여 상기 밸런스 비트를 조정함으로써 상기 제1 비트 청크를 조정하고, 상기 조정된 제1 비트 청크에 기초하여 상기 제4 비트 청크 및 상기 제5 비트 청크를 조정하고, 상기 조정된 제1 비트 청크, 상기 조정된 제4 비트 청크 및 상기 조정된 제5 비트 청크에 기초하여 상기 GLDPC 코드워드를 획득하고, 및 상기 스토리지 장치에 상기 GLDPC 코드워드를 저장하는 것을 포함할 수 있다.
본 개시의 기술적 사상에 따른 스토리지 장치에 저장하기 위한 정보 비트를 인코딩하는 장치는 상기 스토리지 장치와 통신하도록 구성된 메모리 인터페이스; 및 적어도 하나 이상의 프로세서를 포함하되, 상기 프로세서는, 제2 코딩 방식에 대응하는 코드워드의 제1 배열에 포함된 제1 비트 청크를 획득하기 위해 제1 코딩 방식을 사용하여 정보 비트 및 밸런스 비트를 인코딩하고, 상기 제2 코딩 방식에 대응하는 코드워드의 제2 배열에 포함된 제2 비트 청크를 획득하기 위해 상기 제1 비트 청크를 치환하고, 상기 제2 배열에 포함된 제3 비트 청크를 획득하기 위해 상기 제1 코딩 방식 사용하여 상기 제2 비트 청크의 비트를 인코딩하고, 상기 제1 배열에 포함된 제4 비트 청크를 획득하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제5 비트 청크를 획득하기 위해 상기 제1 코딩 방식을 사용하여 상기 제4 비트 청크의 비트를 인코딩하고, 상기 제3 비트 청크의 제2 부분을 치환하고, 상기 제5 비트 청크와 상기 치환된 제3 비트 청크의 제2 부분 간의 비교에 기초하여 상기 밸런스 비트를 조정하고, 상기 조정된 밸런스 비트에 기초하여 상기 제1 배열을 조정하고, 상기 조정된 제1 배열에 기초하여 상기 제2 코딩 방식에 대응하는 코드워드를 획득하고, 상기 획득된 코드워드를 상기 스토리지 장치로 전송하기 위해 상기 메모리 인터페이스를 조정하는 것을 포함할 수 있다.
본 개시의 기술적 사상에 따른 적어도 하나의 프로세서에 의해 실행되는, 스토리지 시스템을 제어하는 방법은, 정보 비트를 획득하고, GLDPC(generalized low-density parity-check) 코드워드의 제1 배열에 포함된 제1 비트 청크에 상기 정보 비트를 배치하는 단계; 상기 제1 비트 청크에 포함된 밸런스 비트를 0으로 설정하는 단계; 제1 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 상기 정보 비트와 상기 밸런스 비트를 인코딩하고, 상기 제1 비트 청크에 상기 제1 패리티 비트를 배치하는 단계; 상기 제1 치환 비트를 생성하기 위해 상기 제1 비트 청크를 치환하고, 상기 GLDPC 코드워드의 제2 배열에 포함된 제2 비트 청크에 상기 제1 치환 비트를 배치하는 단계; 제2 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제1 치환 비트를 인코딩하고, 상기 제2 배열에 포함된 제3 비트 청크에 상기 제2 패리티 비트를 배치하는 단계; 제2 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제4 비트 청크에 상기 제2 치환 비트를 배치하는 단계; 제3 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제2 치환 비트를 인코딩하고, 상기 제1 배열에 포함된 제5 비트 청크에 상기 제3 패리티 비트를 배치하는 단계; 제4 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제2 부분을 치환하는 단계; 상기 제4 비트 청크와 상기 제4 치환 비트 간의 비교에 기초하여 상기 밸런스 비트를 조정함으로써 상기 제1 비트 청크를 조정하고, 상기 조정된 제1 비트 청크에 기초하여 상기 제4 비트 청크 및 상기 제5 비트 청크를 조정하는 단계; 상기 조정된 제1 비트 청크, 상기 조정된 제4 비트 청크 및 상기 조정된 제5비트 청크에 기초하여 상기 GLDPC 코드워드를 획득하는 단계; 및 스토리지 장치에 상기 GLDPC 코드워드를 저장하는 단계를 포함할 수 있다.
본 개시의 기술적 사상에 따른 적어도 하나의 프로세서에 의해 실행되는, 스토리지 장치에 저장하기 위해 정보 비트를 인코딩하는 방법은, 제2 코딩 방식에 대응하는 코드워드의 제1 배열에 포함된 제1 비트 청크를 획득하기 위해 제1 코딩 방식을 사용하여 정보 비트 및 밸런스 비트를 인코딩하는 단계; 상기 제2 코딩 방식에 대응하는 코드워드의 제2 배열에 포함된 제2 비트 청크를 획득하기 위해 상기 제1 비트 청크를 치환하는 단계; 상기 제2 배열에 포함된 제3 비트 청크를 획득하기 위해 상기 제1 코딩 방식을 사용하여 상기 제2 비트 청크의 비트를 인코딩하는 단계; 상기 제1 배열에 포함된 제4 비트 청크를 획득하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제5 비트 청크를 획득하기 위해 상기 제1 코딩 방식을 사용하여 상기 제4 비트 청크의 비트를 인코딩하는 단계; 상기 제3 비트 청크의 제2 부분을 치환하고, 상기 제5 비트 청크와 상기 치환된 제3 비트 청크의 제2 부분 간의 비교에 기초하여 상기 밸런스 비트를 조정하는 단계; 상기 조정된 밸런스 비트에 기초하여 상기 제1 배열을 조정하고, 상기 조정된 제1 배열에 기초하여 상기 제2 코딩 방식에 대응하는 상기 코드워드를 획득하는 단계; 및 상기 획득된 코드워드를 스토리지 장치로 전송하는 단계를 포함할 수 있다.
도 1은 본 개시의 실시예들에 따른 메모리 시스템의 블록도이다.
도 2는 본 개시의 실시예들에 따른 GLDPC 코드워드의 예를 도시한다.
도 3a 및 3b, 도 4a 및 도 4b는 본 개시의 실시예에 따른 분할 방식의 예를 도시한다.
도 5a, 5b, 6a, 6b, 7a, 7b, 8a, 8b, 9a, 9b, 10a, 10b, 11a, 11b, 12a, 12b, 13a, 13b, 14a, 14b는 본 개시의 실시예들에 따른 프로세스 인코딩의 다양한 단계에서 GLDPC 코드워드의 예를 도시한다.
도 15a 및 도 15b는 본 개시의 실시예들에 따른 스토리지 시스템 및 장치를 제어하기 위한 프로세스의 흐름도이다.
도 16은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨터 시스템의 블록도이다.
도 17은 본 개시의 실시예들에 따른 메모리 카드의 블록도이다.
도 18은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 네트워크 시스템의 블록도이다.
도 2는 본 개시의 실시예들에 따른 GLDPC 코드워드의 예를 도시한다.
도 3a 및 3b, 도 4a 및 도 4b는 본 개시의 실시예에 따른 분할 방식의 예를 도시한다.
도 5a, 5b, 6a, 6b, 7a, 7b, 8a, 8b, 9a, 9b, 10a, 10b, 11a, 11b, 12a, 12b, 13a, 13b, 14a, 14b는 본 개시의 실시예들에 따른 프로세스 인코딩의 다양한 단계에서 GLDPC 코드워드의 예를 도시한다.
도 15a 및 도 15b는 본 개시의 실시예들에 따른 스토리지 시스템 및 장치를 제어하기 위한 프로세스의 흐름도이다.
도 16은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨터 시스템의 블록도이다.
도 17은 본 개시의 실시예들에 따른 메모리 카드의 블록도이다.
도 18은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 네트워크 시스템의 블록도이다.
본 개시의 실시예는 수퍼코드 또는 배열을 갖는 GLDPC 코드워드를 관련 기술의 방법에 비해 많은 자유도로 인코딩하는 저복잡도 방법에 관한 것일 수 있다. 위에서 논의된 바와 같이, 많은 관련 기술의 GLDPC 인코딩 절차는 높은 복잡성 또는 매우 제한적인 제약으로 인해 부담이 된다. 실시예는 위에서 논의된 제약을 완화하고 실질적으로 임의의 속도로 인코딩을 가능하게 할 수 있다. 이것은 낮은 ECC 리던던시(redundancy) 또는 높은 속도를 갖는 제품, 예를 들어 내장형 멀티미디어 카드(eMMC) 스토리지 장치에서 실시예의 통합을 허용할 수 있다. 또한, 실시예는 동일한 크기 요건, 예를 들어 (여기서, 은 서브 코드워드의 길이를 나타낸다)인 요건을 완화하여, 수퍼코드 또는 배열이 서로 다른 크기)가 되도록 허용할 수 있다. 이것은 동일한 크기 요구 사항이 약한 상태로 남겨두는 경우 신뢰도 확산(BP) 디코더 검사 노드가 강화되도록 할 수 있다. 이 제약을 완화하면 주어진 중복 비트 예산에서 최대한의 보호를 추출할 수 있어, 에러 확률과 수렴 속도가 향상된다. 따라서, 실시예들은 예를 들어, UFS 스토리지 장치와 같은 많은 저장 기술에 유용할 수 있다.
또한, 실시예들은 임의의 체계적인 구성(컴포넌트) 선형 블록 코드의 사용을 허용할 수 있다. 유사한 능력을 갖는 종래의 방법과 비교할 때, 실시예는 훨씬 더 작은 복잡성, 예를 들어 로부터 이점을 얻을 수 있다.
도 1은 본 개시의 실시예들에 따른 메모리 시스템의 블록도이다. 도 1을 참조하면, 메모리 시스템(1000)은 메모리 컨트롤러(100) 및 비휘발성 메모리일 수 있는 메모리 장치(110)를 포함할 수 있다.
메모리 장치(110)는 플래시 메모리 장치, NAND 플래시 메모리 장치, PRAM, FRAM, MRAM 등일 수 있지만, 이에 제한되지는 않는다. 실시예에 따르면, 메모리 장치(110)는 복수의 낸드 플래시 메모리 장치를 포함할 수 있다. 메모리 장치(110)는 평면 구조 또는 메모리 셀들의 스택을 갖는 3차원(3D) 메모리 셀 구조를 가질 수 있다.
메모리 장치(110)는 메모리 셀 어레이(115), X 디코더(120), 전압 생성기(140), 입출력(I/O) 버퍼(117), 페이지 버퍼(116) 및 하나 이사의 회로로 구현될 수 있는 제어 로직(112)을 포함할 수 있다. 메모리 장치(110)는 또한 I/0 패드(111)를 포함할 수 있다.
메모리 셀 어레이(115)는 복수의 워드 라인 및 복수의 비트 라인을 포함할 수 있다. 메모리 셀 어레이(115)의 각 메모리 셀은 비휘발성 메모리 셀로 구현될 수 있다. 예를 들어, 메모리 셀 어레이(115)의 각각의 메모리 셀은 예를 들어, 플로팅 게이트 또는 전하 트래핑 레이어와 같은 전하 저장 레이어를 가질 수 있다.
메모리 셀 어레이(115)는 복수의 블록들 및 복수의 페이지들을 포함할 수 있다. 각 블록은 복수의 페이지들을 포함할 수 있다. 예를 들어, 제1 블록(118)은 제1 복수의 페이지(1-N)를 포함할 수 있는 반면, 제2 블록(119)은 제2 복수의 페이지(1-N)를 포함할 수 있으며, 여기서 N은 1보다 큰 정수이다. 페이지는 프로그램 및 읽기 동작의 단위이고, 블록은 소거 동작의 단위일 수 있다.
제어 로직(112)은 메모리 장치(110)의 전반적인 동작을 제어할 수 있다. 메모리 컨트롤러(100)로부터 커맨드(CMD)를 수신하면, 제어 로직(112)은 커맨드(CMD)를 해석하고, 해석된 커맨드(CMD)에 따라 동작(예를 들어, 프로그램 동작, 독출 동작, 독출 재시도 동작 또는 소거 동작)을 수행하도록 메모리 장치(110)를 제어할 수 있다.
X 디코더(120)는 제어 로직(112)에 의해 제어되고 로우 어드레스에 따라 메모리 셀 어레이(115)의 워드 라인들 중 적어도 하나를 구동할 수 있다.
전압 생성기(114)는 프로그램 동작, 독출 동작 또는 소거 동작에 필요한 하나 이상의 전압을 생성하고 생성된 전압을 X 디코더(120)에 의해 선택된 하나 이상의 행에 제공하도록 제어 로직(112)에 의해 제어될 수 있다.
페이지 버퍼(116)는 제어 로직(112)에 의해 제어되어 동작 모드(예를 들어, 독출 동작 또는 프로그램 동작)에 따라 감지 증폭기 또는 쓰기 드라이버로 동작할 수 있다.
I/O 패드(111) 및 I/0 버퍼(117)는 외부 장치, 예를 들어, 메모리 컨트롤러(100) 또는 호스트와 메모리 장치(110) 사이에서 교환되는 데이터의 I/O 경로 역할을 할 수 있다.
메모리 컨트롤러(100)는 프로세서(101), ROM(103), RAM(102), 인코더(104), 디코더(105), 메모리 인터페이스(106) 및 버스(107)를 포함할 수 있다. 메모리 컨트롤러(100)의 구성요소들(101~106)은 버스(107)를 통해 전기적으로 연결될 수 있다.
프로세서(101)는 메모리 컨트롤러(100)를 포함하는 메모리 시스템의 전반적인 동작을 제어할 수 있다. 프로세서(101)는 제어 신호를 생성하여 다른 구성요소를 제어하는 회로를 포함할 수 있다. 프로세서(101)는 메모리 시스템에 전원이 공급되면, RAM(102)에서 메모리 시스템을 동작시키기 위한 펌웨어(예를 들어, ROM(103)에 저장됨)를 구동하여 메모리 시스템의 전반적인 동작을 제어할 수 있다. 실시예들에 따르면, 프로세서(101)는 또한 예를 들어, ROM(103), RAM(102), 인코더(104), 디코더(105), 메모리 인터페이스(106) 및 버스(107)의 일부 또는 전부를 포함하는 메모리 컨트롤러(100)의 다른 요소들의 동작을 제어하기 위한 명령을 발행할 수 있다. 실시예들에 따르면, 메모리 컨트롤러(100)에 의해 수행되는 것으로 여기에서 설명된 임의의 동작은 프로세서(101)에 의해 또는 프로세서(101)의 제어 하에 수행될 수 있다. 실시예들에 따르면, 메모리 컨트롤러(100)에 의해 수행되는 것으로 여기에서 설명된 임의의 동작은 동작에 대응하고 프로그램 코드(예를 들어, ROM(103)에 저장됨)에 포함된 명령을 실행하는 프로세서(101)에 의해 또는 프로세서(101)의 제어 하에 수행될 수 있다.
메모리 시스템의 구동 펌웨어 코드는 ROM(103)에 저장될 수 있지만, 실시예들은 이에 제한되지 않는다. 펌웨어 코드는 또한 메모리 장치(110)의 일부에 저장될 수 있다. 따라서, 프로세서(101)의 제어 또는 간섭은 프로세서(101)의 직접적인 제어뿐만 아니라 프로세서(101)에 의해 구동되는 소프트웨어인 펌웨어의 간섭을 포함할 수 있다.
RAM(102)은 버퍼 역할을 하는 메모리를 포함할 수 있으며, 초기 커맨드, 데이터, 호스트 또는 프로세서(101)로부터 입력되는 각종 변수 또는 메모리 장치(110)로부터 출력되는 데이터를 저장할 수 있다. RAM(102)은 메모리 장치(110)에 입력 및 출력되는 데이터 및 각종 파라미터 및 변수를 저장할 수 있다.
메모리 인터페이스(106)는 메모리 컨트롤러(100)와 메모리 장치(110) 사이의 인터페이스 역할을 할 수 있다. 메모리 인터페이스(106)는 메모리 장치(110)의 입출력 패드(111)에 연결되어 입출력 패드(111)와 데이터를 주고받을 수 있다. 또한, 메모리 인터페이스(106)는 메모리 장치(110)에 적합한 커맨드를 생성하고 생성된 커맨드를 메모리 장치(110)의 I/O 패드(111)에 제공할 수 있다. 메모리 인터페이스(106)는 메모리 장치(110)에 의해 실행될 커맨드 및 메모리 장치(110)의 어드레스(ADD)를 제공한다.
실시예에 따르면, 디코더(105)는 위에서 설명된 방식으로 데이터를 디코딩하도록 구성된 에러 정정 코드(ECC) 디코더일 수 있고, 인코더(104)는 위에서 설명된 방식으로 데이터를 인코딩하도록 구성된 ECC 인코더일 수 있다. 실시예에 따라, 디코더(105) 및 인코더(104)는 상술한 방식으로 에러 비트 정정을 수행할 수 있다. 인코더(104)는 데이터가 메모리 장치(110)에 제공되기 전에 데이터에 대한 에러 정정 인코딩을 수행함으로써 하나 이상의 패리티 및/또는 리던던시(redundancy) 비트가 추가된 데이터를 생성할 수 있다. 하나 이상의 패리티 및/또는 리던던시 비트가 메모리 장치(110)에 저장될 수 있다.
디코더(105)는 출력 데이터에 대해 에러 정정 디코딩을 수행할 수 있고, 에러 정정 디코딩 결과에 기초하여 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호를 출력할 수 있다. 독출된 데이터은 디코더(105)로 전송될 수 있고, 디코더(105)는 하나 이상의 패리티 및/또는 리던던시 비트를 이용하여 데이터의 에러 비트를 정정할 수 있다.
일 실시예에서, 인코더(104) 및 디코더(105)는 GLDPC 코드워드를 포함하는 데이터를 인코딩 및 디코딩하도록 구성될 수 있다. GLDPC 코드워드는 길이가 인 바이너리(binary) 워드로, 서브 코드워드로 지칭될 수 있는 더 짧은 코드워드로 구성되고, 컴포넌트 코드 또는 구성 코드로 지칭될 수 있는 블록 인코딩 방식으로 인코딩된다. 구성 코드는 선형 블록 코드 예를 들어, 리드-뮬러(Reed-Muller) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드, 하다마르(Hadmard) 코드 및 해밍(Hamming) 코드일 수 있다.
도 2는 본 개시의 실시예들에 따른 GLDPC 코드워드(200)의 예를 도시한다. 각 GLDPC 코드워드는 알려진 전단사(bijective) 임의의 매핑 또는 치환을 사용하여 개의 서로 다른 배열을 가질 수 있다. 결과적으로, GLDPC 코드워드(200)의 모든 비트는 개의 서브 코드워드, 모든 배열에서 하나에 동시에 속할 수 있다. 도 2를 참조하면, GLDPC 코드워드(200)는 2개의 배열, 예를 들어 J1 및 J2로 표현될 수 있다. 배열 J1 및 J2 각각은 행이 서브 코드워드인 행렬일 수 있다. GLDPC 코드워드(200)은 아래의 수학식 1과 같은 기본 관계를 만족한다.
여기서 은 각 서브 코드워드의 길이를 나타내고, 는 서브 코드워드의 수를 나타낸다. 실시예들에서, 한 배열의 서브 코드워드가 다른 배열의 서브 코드워드와 다른 크기를 가질 수 있다. 즉, 이 가능할 수 있고, 여기서 은 제1 배열의 서브 코드워드의 수를 나타내고, 은 제1 배열에서 서브 코드워드의 길이를 나타내고, 는 제2 배열의 서브 코드워드의 수를 나타내고, 는 제2 배열에서 서브 코드워드의 길이를 나타낸다. 또한, 비록 도 2는 인 경우를 예시한 것으로, 실시예가 이에 한정되는 것은 아니다.
GLDPC 코드워드는 여러 유형의 비트를 포함할 수 있다. 예를 들어, 정보 비트는 GLDPC ECC에서 볼 때 순수한 정보 비트일 수 있다. 패리티 비트는 두 가지 배열의 인코딩으로 인한 중복 비트일 수 있다. 밸런싱 비트는 이하에서 더 상세히 설명되는 바와 같이 인코딩 절차 내의 특정 문제를 극복하기 위해 실시예에 의해 사용될 수 있다. CRC(Cyclic-redundancy-check) 패리티 비트는 감지되지 않은 에러 확률을 줄이기 위해 사용될 수 있다. 일 실시예에서, CRC 패리티 비트는 생략될 수 있다. 단축 비트는 레이아웃 제약을 충족하기 위해 GLDPC 배열에 배치된 패딩(padding) 비트일 수 있다. 단축 비트는 메모리에 기록되지 않지만 행렬의 가상 부분일 수 있으며 인코더 및 디코더에 의해 알려진 값(예: 0 값)을 갖는 것으로 간주될 수 있다. 미사용 비트는 사용되지 않는 패리티 비트일 수 있다. 일 실시예에서, 사용되지 않은 비트가 메모리에 기록될 수 있다. 일 실시예에서, 미사용 비트는 임의의 알려진 값을 가질 수 있으며, 예를 들어 모두 0의 값을 갖거나 모두 1의 값을 가질 수 있다. 다른 실시예에서, 미사용 비트는 제1 정보 비트의 값을 가질 수 있다. 이것은 디코딩 성능 이외의 고려 사항, 예를 들어 미사용 비트와 관련된 빈번한 변경으로 인해 발생할 수 있는 메모리 장치의 마모에 대해 선택될 수 있다. 실시예에서, 패리티 비트, 밸런싱 비트, CRC 패리티 비트 및 미사용 비트가 중복 비트 버짓(budget)에 포함될 수 있다.
GLDPC 코드의 구조와 관련된 파라미터, 예를 들어 행렬 크기() 및 그 하위 집합의 파라미터는 여러 제약 조건에 의해 결정될 수 있다. 예를 들어, 인코딩될 순수 정보 비트의 수를 나타낼 수 있는 주어진 및 비정보 비트 버짓에 의해 허용되는 비트 정보 비트의 수를 나타낼 수 있는 주어진 에 대해, 실시예에 따른 인코딩 및 디코딩 시스템은 를 지정할 수 있고, 를 지정할 수 있고, 를 지정할 수 있고, 여기서 는 총 단축 비트 수를 나타내며, 오버헤드 임을 명시할 수 있다.
또한 실시예에 따른 특정 구성 코드는, 예를 들어 확장된 해밍(Hamming) 코드는 를 지정할 수 있고, 여기서 는 각 서브 코드워드의 정보 단어에서 단축 비트의 수를 나타내며, 를 지정할 수 있고, 여기서 는 각 구성 코드의 각 서브코드워드에서 패리티 길이를 나타내며, 를 지정할 수 있고, 여기서 는 각 서브 코드워드에서 정보 단어의 길이를 나타낸다.
또한, 실시예에 따른 GLDPC 방식은 및 로 지정할 수 있고, 여기서 는 체크 온 체크 청크의 길이를 나타낸다. 게다가, 실시예에 따른 GLDPC 인코딩 방식은 를 지정할 수 있고, 여기서 은 GLDPC 코드워드에 포함된 밸런스 비트의 길이를 나타내고, 을 지정할 수 있고, 여기서 은 제1 배열(예, 배열 J1)의 정보 비트 청크에 있는 서브 코드워드의 수를 나타내고, 를 지정할 수 있고, 여기서 의 는 순환 중복 검사 비트의 길이를 나타내며, 은 사용하지 않는 비트의 길이를 나타낸다.
실시예들에서, 이러한 제약들에 의해 필터링된 가능한 구성들 중에서, 단일 구성이 다음에 기초하여 선택될 수 있다.
l
단축을 통한 서브 코드워드 길이 최소화: 이것은 구성 코드워드에 의해 전달된 주어진 정보(보호) 레벨을 취약한 비트의 효과적으로 감소된 수로 분배함으로써 신뢰도 확산 기반 디코더의 동작을 최적화할 수 있다.
l
미사용 비트 수 최소화: 사용되지 않은 비트는 중복 비트 예산의 일부일 수 있으며 예를 들어 스토리지에 기록되는 정보의 일부일 수 있지만 사용되지 않은 비트는 정보나 코드 보호를 전달하지 않는다.
도 3a 내지 3c, 도 4a 및 도 4b는 배열 J1 및 J2를 구역 또는 비트 청크로 지칭될 수 있는 파티션으로 분할하는 데 사용될 수 있는 분할 방식의 2가지 예를 도시한다.
도 3a 및 3b는 실시예에 따른 GLDPC 코드에 대응하는 배열 J1 및 J2의 블록도이다. 도 3a 및 3b를 참조하면, 배열 J1 및 J2는 구역 또는 비트 청크에 포함된 비트 용도에 따라 구역 또는 비트 청크로 분할 또는 분할될 수 있다.
실시예에서, 배열 J1 은 예를 들어 정보 비트를 포함할 수 있는 비트 청크 정보 1, 패리티 비트를 포함할 수 있는 비트 청크 패리티 1, 패리티 비트를 포함할 수 있는 비트 청크 패리티 2, CRC 비트를 포함할 수 있는 비트 청크 CRC, 밸런스 비트를 포함할 수 있는 하나 이상의 비트 청크 밸런스 및 미사용 비트를 포함할 수 있는 사용되지 않은 하나 이상의 비트 청크를 포함할 수 있다. 또한, 배열 J1 은 단축된 비트를 포함할 수 있는 비트 청크 쇼트 인포 1 및 패리티 비트를 포함할 수 있는 비트 청크 쇼트 패리티 1을 포함할 수 있다.
실시예에서, 배열 j2는 정보 비트를 포함할 수 있는 비트 청크 정보 2, 패리티 비트를 포함할 수 있는 비트 청크 패리티 2 및 단축된 비트를 포함할 수 있는 비트 청크 쇼트 인포 2를 포함할 수 있다.
실시예에서, 비트 청크 패리티 1 및 비트 청크 패리티 2에 포함된 패리티 비트 j_1 및 후속 j_2의 체계적인 인코딩의 결과일 수 있다. 밸런스 비트, CRC 비트 및 사용되지 않은 비트는 비트 청크 정보 1의 마지막 행에 걸쳐 아래의 우선 순위(가장 오른쪽 아래에서 맨 왼쪽 위로)에 따라 확산된 비트의 인터리브(interleaved) 혼합일 수 있다.
1.
밸런스
2.
미사용(Unused, 사용하지 않은)
3.
CRC
4.
인포(Info)
밸런스 비트 순서는 선택된 치환에 의존할 수 있다. 더욱이, 그것들은 연속적으로 정렬된다는 보장이 없을 수 있지만, 사용되지 않은(미사용) 비트는 그들 사이의 공간을 덮기에 충분할 수 있으며, 결과적으로 연속적인 CRC 및 정보 비트 시퀀스가 생성될 수 있다.
실시예에서, 비트 청크 정보 2의 비트는 비트 청크 정보 1의 비트와 동일하지 않을 수 있다. 대신, 비트 청크 정보 2는 비트 청크 정보 1 비트의 비트 및 비트 청크 패리티 1의 비트, 비트 청크 밸런싱의 비트 및 비트 청크 CRC의 비트를 포함하는 다른 역할을 갖는 비트에 해당할 수 있다. 비트 청크 쇼트 인포 1의 비트는 치환에 따라 비트 청크 정보 2 전체에 걸쳐 확산될 수 있다.
도 도 4a 및 도 4b는 배열 J1 및 J2가 치환 이유로 분할되는 분할 방식을 도시한다. 특히, 도 4a는 실시예들에 따른, 배열 J1의 비트들의 치환 제약에 따라 분할된 배열 J1을 도시하고, 도 4b는 실시예들에 따른, 배열 J2의 비트들의 치환 제약에 따라 분할된 배열 J2를 도시한다.
실시예들에서, 배열 j1은 비트 청크 A1, 비트 청크 B1 및 비트 청크 C1을 포함할 수 있고, 배열 J2는 비트 청크 A2, 비트 청크 B2 및 비트 청크 C2를 포함할 수 있다. 또한, 배열 J1은 도 3a의 비트 청크 쇼트 인포 1 및 쇼트 패리티 1을 포함할 수 있고, 배열 j2는 도 3b의 비트 청크 쇼트 인포 2를 포함할 수 있다.
실시예들에서, 배열 J1 및 배열 J2의 특정 비트 청크는 서로 배타적으로 비트를 교환하도록 제한되어 가능한 치환의 앙상블 크기를 제한할 수 있다. 그러나, 이러한 "하위 치환" 또는 특정 비트 청크 내의 치환은 경계 내에서 임의적일 수 있다.
예를 들어, 실시예에서 GLDPC 치환 앙상블은 실제 치환에 관계없이 임의의 치환()에 따라 비트 청크()가 모든 비트를 비트 청크()의 모든 비트와 교환하도록 요구할 수 있고, 비트 청크()가 모든 비트를 비트 청크()의 모든 비트와 교환하도록 요구할 수 있고, 비트 청크()가 모든 비트를 비트 청크()의 모든 비트와 교환하도록 요구할 수 있으며, 아래의 수학식 2 내지 4에 나타나있다.
실시예에서, , 는 비트 청크 로 지칭될 수 있는 동일한 초기 비트 저장소를 공유할 수 있고, 둘 사이의 파티션은 임의적일 수 있다.
상기 3개의 치환은 원칙적으로 서로 독립적일 수 있다. 실시예에서,"단축" 비트 청크는 교환에 참여하지 않는다. 실시예에서,"단축"을 제외한 대응하는 청크는 면적이 동일할 수 있다. 위에서 설명한 바와 같이, 비트 역할은 청크 교환 분할과 반드시 일치하지 않을 수 있다.
도 5a, 5b, 6a, 6b, 7a, 7b, 8a, 8b, 9a, 9b, 10a, 10b, 11a, 11b, 12a, 12b, 13a, 13b, 14a, 14b는 본 개시의 실시예들에 따른 인코딩 프로세스의 다양한 단계에서 배열 J1 및 배열 J2를 도시한다. 실시예에서, 도 5a 내지 14b와 관련하여 설명된 인코딩 프로세스 또는 인코딩 프로세스의 일부 또는 전부는 메모리 시스템(1000) 또는 메모리 시스템(1000)의 구성요소, 예를 들어 메모리 컨트롤러(100) 또는 인코더(104)에 의해 수행될 수 있다.
인코딩 프로세스가 시작될 때 다음 파라미터가 알려질 수 있다.
블록 인코딩: , 단축을 포함하는 구성 코드 생성 행렬의 패리티 부분. 다음의 모든 블록 인코딩 작업은 "체계적"부분이 정의에 따라 동일하므로 "패리티"부분만 계산할 수 있다.
차원 파라미터:
o
구성 코드 파라미터들:
o
행들의 수:
치환 파라미터들:, , 에 대응하는 비트 청크에 대한 치환 행렬
밸런싱 파라미터들:
o
배열 내의 밸런싱 비트 인덱스:
o
밸런싱 행렬:
o
BC 전송 행렬 밸런스:
도 5a 및 도 5b에 도시된 바와 같이, 실시예에 따른 인코딩 절차의 시작 부분에서, 정보 비트가 획득될 수 있고, 비트 청크 정보(Information) 1에 배치될 수 있다. 도 5a에서 정보 비트는 Info로 라벨링 될 수 있다. 또한, , 비트는 0으로 설정될 수 있고, 비트는 제1 정보 비트의 값으로 설정될 수 있다. 비트는 공백으로 둘 수 있다.
도 6a 및 6b에 도시된 바와 같이, 는 을 계산함으로써, 을 생성하도록 블록 인코딩될 수 있다. 이 단계에서, 는 정보 비트, 예를 들어, 비트 청크 정보 1에 대응할 수 있고, 는 비트 청크 밸런스에 대응할 수 있고, 는 비트 청크 CRC에 대응할 수 있다. 또한, 은 과 같을 수 있다. 이 블록 인코딩은 행(row) 단위로 수행될 수 있다.
도 7a 및 도 7b에 도시된 바와 같이, CRC 비트는 를 계산함으로써 결정될 수 있고, 비트 청크 CRC는 를 설정함으로써 채워질 수 있다.
도 8a 및 도 8b에 도시된 바와 같이, 비트 청크 A1의 블록 인코딩은 블록 인코딩 에 의해 완료되어 를 계산하여 을 생성할 수 있고, 여기서 이다. 이 블록 인코딩은 에 의해 영향을 받는 비트 청크 패리티 1의 패리티 비트일 수 있는 초기 을 생성할 수 있고, 이를 패리티 밸런스 비트라고 할 수 있다. 초기 은 이후 단계를 위해 저장할 수 있다.
도 9a 및 도 9b에 도시된 바와 같이, 비트 청크(A1)은 그 다음 를 계산함으로써 비트 청크(A2)를 획득하도록 치환될 수 있다.
도 10a 및 도 10b에 도시된 바와 같이, A2는 을 계산함으로써 배열 J2를 얻기 위해 블록 인코딩될 수 있다. 그 다음에, 비트 청크 BC2는 , 를 사용하여 비트 청크 B2 및 비트 청크 C2로 분할될 수 있다. 여기서는 J1 및 J2는 가 동일한 블록 인코딩 행렬 G를 사용하는 것으로 설명하지만, 실시예는 이에 제한되지 않는다. 실시예에서, J1 및 J2는 동일한 유형의 구성 코드에 해당하는 서로 다른 블록 인코딩 행렬을 사용하거나, 서로 다른 유형의 구성 코드에 해당하는 서로 다른 블록 인코딩 행렬을 사용할 수 있다.
도 11a 및 도 11b에 도시된 바와 같이, 비트 청크 B2는 그 다음 를 계산함으로써 초기 비트 청크 B1을 획득하도록 치환될 수 있다. 초기 비트 청크 B1은 나중 단계, 예를 들어 인코딩의 제2 라운드를 위해 저장될 수 있다.
도 12a 및 도 12b에 도시된 바와 같이, 초기 비트 청크 B1은 을 계산하여 비트 청크 BC1을 생성하도록 블록 인코딩될 수 있다. 이 블록 인코딩은 초기 비트 청크 C1을 생성할 수 있으며, 이는 나중 단계, 예를 들어 인코딩의 제2 라운드를 위해 저장될 수 있다.
실시예에서, 도 5a 내지 도 12b와 관련한 인코딩 절차는 위에서 설명된 인코딩 절차는 제1 라운드로 지칭될 수 있고, 도 13 내지 도 14b와 관련한 인코딩 절차는 아래에서 설명되는 인코딩 절차는 제2 라운드로 지칭될 수 있다.
도 13에 도시된 바와 같이, 밸런스 비트가 조정될 수 있다. 먼저, 앞서 결정된 초기 비트 청크 C1과 비트 청크 C2의 치환(Permutation, 치환) 결과의 차이를 결정할 수 있다. 예를 들어, 치환된 C2는 아래 수학식 5에 따라 이진 덧셈을 사용하여 초기 비트 청크 C1에 중첩될 수 있다.
그러면, 조정된 밸런스 비트는 하기 수학식 6을 이용하여 계산될 수 있다.
마지막으로, 초기에 0으로 설정된 배열 J1의 밸런스 비트는 을 사용하여 배열 J1에 을 배치함으로써 조정될 수 있다.
그러면, 도 14a에 도시된 바와 같이, 에 대한 의 기여도(contribution)가 결정될 수 있고, 그 기여도가 을 조정하기 위해서 결정된 초기 에 추가될 수 있다. 이 조정된 후, 및 은 로 결합될 수 있고, 상기에서 결정된 초기 비트 청크 B1및 비트 청크 C1을 조정하기 위해 비트 청크 BC1에 대한 의 기여도가 결정될 수 있다. 비트 청크 B1및 비트 청크 C1이 조정되면 인코딩 프로세스가 완료될 수 있다.
비트 청크 BC1에 대한 의 기여도 및 에서 의 기여도를 결정하는 절차의 예시는 아래에서 상세하게 설명된다.
기본 요건은 배열이 치환까지 동일해야 한다는 것이다. 그러나, 위에서 설명한 인코딩 절차의 제1 라운드는 이를 보장할 수 없으며, 원칙적으로 이다. 따라서, 일부 사전 조치가 취해질 수 있다.
위에서 설명된 인코딩 절차는 선형 연산인 행렬 곱셈 및 치환의 연속일 수 있다. 이는"입력"이 Info 청크(평면화됨, flattened)이고, 출력이 배열 , 배열 서브 집합 또는 선형 조합(평면화됨, flattened)인 동등한 단일 선형 연산으로 설명될 수 있음을 의미하고, 이에 따라 "출력"으로 취급될 수 있다. 예를 들어, 이다. 이 선형성은 또는 및 의 서브 집합에도 적용된다.
또한, 어떤 길이의 "출력"에 대해 가역(reversible) 선형 변환을 통해 해당 "출력"에 연결된 동일한 길이의 "입력"인 의 서브 집합을 찾을 수 있다.
평평한(flattened) CoP(Check-On-Parity) 청크, 예를 들어 비트 청크 C1 및 비트 청크 C2는 의 길이를 가질 수 있다. 위에서 서술된 바와 같이, 이들은 위에서 논의된 인코딩 절차의 "출력"으로 간주될 수 있다. 또한, 아래 수학식 7에서와 같이 빼기(subtraction)는 "출력"으로도 간주될 수 있다.
여기서, 는 배열 의 비트 청크 의 비트이지만, 배열 로 치환된다.
모든 GLDPC 코드워드는 그보다 큰 정보 청크를 가지므로, 아래 수학식 8과 같은 가역적 관계를 만족하는 서브 집합 를 찾을 수 있다.
나머지 정보 비트인 도 선형이지만 되돌릴 수 없는 방식으로 과 독립적으로 에 영향을 준다. 중첩의 원리인 아래의 수학식 9와 같다.
에 대한 수요는 과 동일하다고 볼 수 있고, 이는 과 동일할 수 있다.
따라서, 총 패리티 예산의 몇 비트를 희생함으로써,비트는 아래 수학식 10과 같다.
의 효과는 이 되도록 보상될 수 있다.
은 CoP 청크의 비트에 대한 정보 청크 내의 비트의 가역적 효과를 나타낸다. 실시예에서, 은 다음 절차를 사용하여 구성될 수 있다.
초기화:
(정보 청크의 마지막 [최하단] 비트)
= empty
다음 단계를 반복함:
1.
정보 청크를 제로화
2.
비트 을 1로 설정
3.
전체 인코딩
4.
를 추출하고, 계산
5.
전류에 대한 의 선형 종속성 테스트 : 독립이면
o
에 추가
o
을 1을 증가
6. 이면 종료하고, 그렇지 않으면, 을 1로 줄이고 1 단계로 돌아감.
CoP 시퀀스의 패리티는 항상 짝수이고, 짝수 해밍(Hamming) 웨이트를 가지고 있다. 따라서, 마지막 비트의 값은 모든 선행 작업에 따라 다르다. 따라서, 의 실제 길이와 의 차원은 이다.
따라서, 실시예에서는 의 기여도는 다음과 같이 인코딩 절차의 제2 라운드에서 결정될 수 있다. 밸런스 비트 즉각적인 효과는 비트에 있고, 여기서, 는 밸런스 비트(보통 1 또는 2)를 포함하는 내의 행의 수이다. 과 은 모두 비트 청크 의 일부이므로 청크(예를 들어, 비트 청크 BC2 및 비트 청크 BC1)에 영향을 준다.
먼저, 은 아래의 수학식 11에 따라 계산될 수 있다.
여기서, 는 비트가 해당 위치에 포함된 0 행이며, 밸런스 비트 계산 이전의 제1 라운드에서 이전에 계산된 에 추가되었다.
다음으로, 위의 것을 로 병합하고, BC1은 아래의 수학식 12에 따라 계산될 수 있다.
이것은 인코딩 절차의 제1 라운드에서 계산된 에 추가될 수 있다. 실시예에서, 비트 청크 B1 및 비트 청크 C1은 그에 따라 조정될 수 있다.
실시예에서, 는 희소(sparse) 행렬일 수 있고, 이와 관련된 차원에 비해 낮은 복잡도 연산을 초래할 수 있다.
도 15a는 실시예에 따른 스토리지 시스템을 제어하는 프로세스(1500A)의 예를 나타내는 블록도이다. 일부 구현들에서, 도 15a의 하나 이상의 프로세스 블록들은 메모리 시스템(1000) 또는 여기에 설명된 임의의 다른 요소, 예를 들어 메모리 컨트롤러(100) 또는 인코더(104)에 의해 수행될 수 있다.
도 15a에 도시된 바와 같이, 단계 1504에서 프로세스(1500A)는 정보 비트를 획득하고 정보 비트를 GLDPC 코드워드의 제1 배열에 포함된 제1 비트를 청크에 배치하는 것을 포함할 수 있다. 실시예들에서, 제1 배열은 배열 J1에 대응할 수 있고, 제1 비트 청크(A1)에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계 1506에서 프로세스(1500A)는 제1 비트 청크에 포함된 밸런스 비트를 0으로 설정하는 단계를 포함할 수 있다.
도 15a에 도시된 바와 같이, 단계 1508에서 프로세스(1500A)는 시스템 코드를 사용하여 제1 패리티 비트를 생성하기 위해 정보 비트 및 밸런스 비트를 인코딩하고, 제1 패리티 비트를 제1 청크에 배치하는 단계를 포함할 수 있다. 실시예들에서, 시스템 코드는 구성 코드 또는 컴포넌트 코드에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계 1510에서 프로세스(1500A)는 제1 치환 비트를 생성하기 위해 제1 비트 청크를 치환하는 단계 및 GLDPC 코드워드의 제2 배열에 포함된 제2 비트 청크에 제1 치환 비트를 배치하는 단계를 포함할 수 있다. 실시예들에서, 제2 배열은 배열(J2)에 대응할 수 있고, 제2 비트 청크는 비트 청크(A2)에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계 1512에서 프로세스(1500A)는 제2 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 제1 치환 비트를 인코딩하는 단계 및 제2 배열에 포함된 제3 비트 청크에 제2 패리티 비트를 배치하는 단계를 포함할 수 있다. 실시예들에서, 제3 비트 청크는 비트 청크(BC2)에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계 1514에서 프로세스(1500A)는 제3 비트 청크의 제1 부분을 치환하여 제2 치환 비트를 생성하는 단계 및 제2 치환 비트를 제1 배열에 포함된 제4 비트 청크에 배치하는 단계를 포함할 수 있다. 실시예들에서, 제3 비트 청크의 제1 부분은 비트 청크(B2)에 대응할 수 있고, 제4 비트 청크는 비트 청크(B1)에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계 1516에서 프로세스(1500A)는 제3 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 제2 치환 비트를 인코딩하는 단계를 포함할 수 있고, 제1 배열에 포함된 제5 비트 청크에 제3 패리티 비트를 배치하는 단계를 포함할 수 있다. 실시예들에서, 제5 비트 청크는 비트 청크(C1)에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계 1518에서 프로세스(1500A)는 제4 치환 비트를 생성하기 위해 제3 비트 청크의 제2 부분을 치환하는 것을 포함할 수 있다. 실시예들에서, 제3 비트 청크의 제2 부분은 비트 청크(C2)에 대응할 수 있다.
도 15a에 도시된 바와 같이, 단계(1520)에서 프로세스(1500A)는 제4 비트 청크와 제4 치환 비트 간의 비교에 기초하여 밸런스 비트를 조정함으로써 제1 비트 청크를 조정하는 단계를 포함할 수 있다.
도 15a에 추가로 도시된 바와 같이, 단계 1522에서 프로세스(1500A)는 조정된 제1 비트 청크에 기초하여 제4 비트 청크 및 제5 비트 청크를 조정하는 것을 포함할 수 있다.
도 15a에 추가로 도시된 바와 같이, 단계 1524에서 프로세스(1500A)는 조정된 제1 비트 청크, 조정된 제4 비트 청크 및 조정된 제5 비트 청크에 기초하여 GLDPC 코드워드를 획득하는 것을 포함할 수 있다.
도 15a에 추가로 도시된 바와 같이, 단계 1526에서 프로세스(1500A)는 조정 장치에 GLDPC 코드워드를 저장하는 것을 포함할 수 있다. 실시예들에서, 스토리지 장치는 메모리 시스템(1000) 또는 메모리 장치(1100)에 대응할 수 있다.
실시예들에서, 전단사 매핑은 제1 배열과 제2 배열 사이에 존재할 수 있고, 전단사 매핑 내에서, 제1 비트 청크의 비트는 제2 비트 청크의 비트에만 독점적으로 매핑될 수 있고, 제4 비트 청크의 비트는 제3 비트 청크의 제1 부분의 비트에만 독점적으로 매핑될 수 있고, 제5 비트 청크의 비트는 제3 비트 청크의 제2 부분의 비트에만 독점적으로 매핑될 수 있다.
실시예들에서, 제1 배열은 복수의 제1 행을 포함할 수 있고, 제2 배열은 제2 복수의 행을 포함할 수 있고, 제1 복수의 행의 수는 제2 복수의 행의 수와 다를 수 있다.
실시예들에서, 제1 복수의 행 및 제2 복수의 행의 각각의 행은 시스템 코드의 코드워드를 포함할 수 있고, 시스템 코드는 Reed-Muller 코드, Hadamard 코드, Bose-Chaudhuri-Hocquenghem 코드 및 Hamming 코드 중 적어도 하나를 포함할 수 있다.
도 15b는 본 개시의 실시예에 따른 스토리지 시스템을 제어하는 프로세스(1500B)의 흐름도이다. 일부 실시예에서, 도 15b의 하나 이상의 프로세스 블록은 메모리 시스템(1000) 또는 여기에 설명된 임의의 다른 요소, 예를 들어 인코더(104)에 의해 수행될 수 있다.
실시예들에서, 프로세스(1500B)의 하나 이상의 프로세스 블록은 프로세스(1500A)의 프로세스 블록 후에 수행될 수 있다.
도 15b에 도시된 바와 같이, 단계 1528에서 프로세스(1500B)는 제4 비트 청크와 제4 치환 비트 간의 차이를 결정하는 것을 포함할 수 있다.
도 15b에 도시된 바와 같이, 단계 1530에서 프로세스(1500B)는 차이를 제1 밸런싱 행렬로 곱함으로써 조정된 밸런스 비트를 획득하는 단계를 포함할 수 있다.
도 15b에 도시된 바와 같이, 단계 1532에서 프로세스(1500B)는 조정된 밸런스 비트를 제1 비트 청크에 추가하는 것을 포함할 수 있다.
도 15b에 도시된 바와 같이, 단계 1534에서 프로세스(1500B)는 제4 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 조정된 밸런스 비트를 인코딩하는 것을 포함할 수 있다.
도 15b에 도시된 바와 같이, 단계 1536에서 프로세스(1500B)는 제4 패리티 비트를 추가함으로써 패리티 밸런스 비트를 조정하는 것을 포함할 수 있다.
도 15b에 도시된 바와 같이, 단계 1538에서 프로세스(1500B)는 조정된 밸런스 비트 및 조정된 밸런스 패리티 비트를 제2 밸런싱 행렬로 곱하는 것을 포함할 수 있다.
도 15b에 도시된 바와 같이, 단계 1540에서 프로세스(1500B)는 제4 비트 청크 및 제5 비트 청크에 곱한 결과를 더하는 것을 포함할 수 있다.
비록 도 15a 및 도 15b는 프로세스들(1500A, 1500B)의 예시적인 블록들을 도시하고, 일부 실시예들에서, 프로세스들(1500A, 1500B)은 도 15a 및 도 15b에 도시된 것들보다 추가 블록, 더 적은 블록, 상이한 블록 또는 다르게 배열된 블록을 포함할 수 있다. 추가적으로, 또는 대안적으로, 프로세스들(1500A, 1500B)의 블록들 중 둘 이상의 임의의 순서로 배열 또는 결합되거나, 병렬로 수행될 수 있다. 예를 들어, 일부 실시예들에서 단계 1528 내지 단계 1536은 단계 1520에 포함될 수 있다. 다른 예로서, 실시예들에서 단계 1538 내지 단계 1540은 단계 1522에 포함될 수 있다.
도 16은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨터 시스템을 포함하는 컴퓨터 시스템(16000)의 블록도이다. 모바일 장치, 데스크탑 컴퓨터 및 서버와 같은 컴퓨터 시스템(16000)은 실시예에 따른 메모리 시스템(16400)을 채용할 수 있다.
컴퓨터 시스템(16000)은 CPU(16100), RAM(16200), 사용자 인터페이스(16300) 및 메모리 시스템(16400)을 포함할 수 있고, 버스(16500)에 전기적으로 연결된다. 상술한 호스트는 컴퓨터 시스템(16000)의 CPU(16100), RAM(16200) 및 사용자 인터페이스(16300)를 포함할 수 있다. CPU(16100)는 컴퓨터 시스템(16000) 전체를 제어하고, 사용자 인터페이스(16300)를 통해 입력된 사용자 명령에 대응하는 연산을 수행할 수 있다. RAM(16200)은 CPU(16100)를 위한 데이터 메모리로 기능할 수 있고, CPU(16100)는 메모리 시스템(16400)에 데이터를 쓰거나 읽을 수 있다.
전술한 예시적 실시예들에서와 같이, 메모리 시스템(16400)은 메모리 컨트롤러(16410) 및 메모리 장치(16420)를 포함할 수 있다. 메모리 컨트롤러(16410)는 인코더 및 디코더를 포함할 수 있고, 메모리 장치(16420)는 복수의 메모리 셀들을 포함하는 셀 어레이를 포함할 수 있다.
실시예들에 따르면, 메모리 컨트롤러(16410)는 도 1을 참조하여 설명한 메모리 컨트롤러(100)에 의해 구현될 수 있고, 메모리 장치(16420)는 도 1을 참조하여 설명한 메모리 장치(110)에 의해 구현될 수 있다.
도 17은 본 개시의 실시예들에 따른 메모리 카드(17000)를 나타내는 블록도이다. 도 1을 참조하여 설명된 본 개시의 실시예들에 따른 메모리 시스템(1000)은 메모리 카드(17000)일 수 있다. 예를 들어, 메모리 카드(17000)는 eMMC(embedded multimedia card), SD(secure digital) 카드, UFS(Universal Flash Storage) 카드를 포함할 수 있다. 도 17에 도시된 바와 같이, 메모리 카드(17000)는 메모리 컨트롤러(17100), 비휘발성 메모리(17200) 및 포트 영역(17300)을 포함할 수 있다. 메모리 컨트롤러(17100)는 도 1을 참조하여 설명한 컨트롤러(100)에 의해 구현될 수 있고, 도 17에 도시된 비휘발성 메모리(17200)은 도 1을 참조하여 설명한 메모리 장치(110)에 의해 구현될 수 있다.
메모리 컨트롤러(17100)는 인코더 및 디코더를 포함할 수 있다. 인코더 및 디코더는 실시예에 따라 인코딩 방법 및 디코딩 방법을 수행할 수 있다. 메모리 컨트롤러(17100)는 기 설정된 프로토콜에 따라 포트 영역(17300)을 통해 외부 호스트와 통신할 수 있다. 프로토콜은 eMMC 프로토콜, SD 프로토콜, SATA 프로토콜, SAS 프로토콜, USB 프로토콜, UFS 프로토콜, NVMe(nonvolatile memory express) 프로토콜, PCIe(peripheral component interconnect express) 프로토콜 또는 CXL(compute express link) 프로토콜일 수 있다. 비휘발성 메모리(17200)는 전원이 차단되더라도 저장된 데이터를 유지하는 메모리 셀들을 포함할 수 있다. 예를 들어, 비휘발성 메모리(17200)은 플래시 메모리, MRAM, PRAM, FRAM, PCM(phase change memory)을 포함할 수 있다.
실시예들에 따르면, 메모리 컨트롤러(17100) 및 비휘발성 메모리(17200)는 도 1을 참조하여 설명된 메모리 컨트롤러(100) 및 메모리 장치(110)에 의해 각각 구현될 수 있다.
도 18은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 네트워크 시스템(18000)의 블록도이다. 도 18을 참조하면, 네트워크 시스템(18000)은 서버 시스템(18100) 및 네트워크(18200)를 통해 연결된 복수의 단말들(18300, 18400, 18500)을 포함할 수 있다. 서버 시스템(18100)은 네트워크(18200)에 연결된 복수의 단말(18300, 18400, 18500)로부터 수신된 요청을 처리하기 위한 서버(18110) 및 복수의 단말(18300, 18400, 18500)로부터 수신된 요청에 대응하는 데이터를 저장하는 SSD(18120)를 포함할 수 있다.
실시예에 따르면, SSD(18120)는 도 1을 참조하여 설명된 메모리 시스템(1000)에 의해 구현될 수 있다.
당해 분야에서 통상적인 바와 같이, 실시예는 기능 블록, 유닛 및/또는 모듈의 관점에서 도면에 기술되고 예시된다. 당업자는 이러한 블록, 유닛 및/또는 모듈이 논리 회로, 개별 구성요소, 마이크로프로세서, 유선 회로, 메모리 소자, 배선 연결 등과 같은 전자(또는 광학) 회로에 의해 물리적으로 구현된다는 것을 이해할 것이다. 반도체 기반 제조 기술 또는 기타 제조 기술을 사용하여 형성될 수 있다. 블록, 유닛 및/또는 모듈이 마이크로프로세서 또는 이와 유사한 것에 의해 구현되는 경우, 이들은 본 명세서에서 논의된 다양한 기능을 수행하기 위해 소프트웨어(예를 들어, 마이크로코드)를 사용하여 프로그래밍될 수 있고, 선택적으로 펌웨어 및/또는 소프트웨어에 의해 구동될 수 있다. 대안적으로, 각 블록, 유닛 및/또는 모듈은 전용 하드웨어 의해 또는 일부 기능을 수행하기 위한 전용 하드웨어와 다른 기능을 수행하기 위한 프로세서(예를 들어, 하나 이상의 프로그래밍된 마이크로 프로세서 및 관련 회로)의 조합으로 구현될 수 있다. 또한, 실시예의 각 블록, 유닛 및/또는 모듈은 본 범위를 벗어나지 않고 물리적으로 둘 이상의 상호작용하는 개별 블록, 유닛 및/또는 모듈로 분리될 수 있다. 또한, 실시예의 블록, 유닛 및/또는 모듈은 본 범위를 벗어나지 않고 물리적으로 더 복잡한 블록, 유닛 및/또는 모듈로 결합될 수 있다.
위에서 설명된 방법의 다양한 동작은 다양한 하드웨어 및/또는 소프트웨어 구성요소(들), 회로 및/또는 모듈(들)과 같은 동작을 수행할 수 있는 임의의 적절한 수단에 의해 수행될 수 있다.
소프트웨어는 논리 기능을 구현하기 위한 실행 가능한 명령어의 순서화된 목록을 포함할 수 있으며, 단일/다중 코어 프로세서 또는 프로세서 포함 시스템과 같은 명령 실행 시스템, 장치 또는 장치에 의해 또는 이와 관련하여 사용하기 위한 임의의 "프로세서 판독 가능 매체"로 구현될 수 있다.
본 명세서에 개시된 실시예와 관련하여 설명된 방법 또는 알고리즘 및 기능의 블록 또는 단계는 하드웨어, 프로세서에 의해 실행되는 소프트웨어 모듈 또는 둘의 조합으로 직접 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능은 유형의 비일시적 컴퓨터 판독 가능 매체에 하나 이상의 명령 또는 코드로 저장되거나 전송될 수 있다. 소프트웨어 모듈은 RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터, 하드 디스크, 이동식 디스크, CD ROM 또는 당업계에 공지된 임의의 다른 형태의 저장 매체에 있을 수 있다.
전술한 내용은 실시예을 예시하는 것이며 이를 제한하는 것으로 해석되어서는 안된다. 몇몇 실시예가 설명되었지만, 당업자는 본 범위를 실질적으로 벗어나지 않고 실시예에서 많은 수정이 가능하다는 것을 쉽게 이해할 것이다.
: full length (non-shortened) of a subcodeword
: full length (non-shortened) of a sub infoword
: Number of shortened bits within a codeword/inforword
: Length of a sub infoword.
: Length of a subcodeword
: Length of parity per subcodeword
: constituent code generating matrix. Left systematic ()
: Number of subcodewords in a GLDPC codeword
: Number of subcodewords in the Info chunk
: Number of equivalent arrangements of a GLDPC codeword
: Permutation indices per chunk
: Indices of bits that are part of the GLDPC codeword but are not transmitted. Considered by the Decoder to have a known value ()
: Length of Check-On-Checks chunk (bits)
: Indices of balancing bits
, : balance bits to CoC transfer matrix (and its inverse)
: balance bits (and their corresponding parity) to chunk transfer matrix
: Number of transmitted but unused bits. Considered by the Decoder to have a known value ()
: Permutation between and arrangements
: Number of pure information bits
: Number of bits allocated for other purposes than info; parity, balancing, CRC etc.
: Total number of transmitted bits
: Number of non-transmitted bits, that are considered part of the GLDPC codeword
: Total number of bits
: Overhead of codeword
: the indices of the CRC sequence bits
: Length of CRC sequence (bits)
: CRC code generating polynomial
: full length (non-shortened) of a sub infoword
: Number of shortened bits within a codeword/inforword
: Length of a sub infoword.
: Length of a subcodeword
: Length of parity per subcodeword
: constituent code generating matrix. Left systematic ()
: Number of subcodewords in a GLDPC codeword
: Number of subcodewords in the Info chunk
: Number of equivalent arrangements of a GLDPC codeword
: Permutation indices per chunk
: Indices of bits that are part of the GLDPC codeword but are not transmitted. Considered by the Decoder to have a known value ()
: Length of Check-On-Checks chunk (bits)
: Indices of balancing bits
, : balance bits to CoC transfer matrix (and its inverse)
: balance bits (and their corresponding parity) to chunk transfer matrix
: Number of transmitted but unused bits. Considered by the Decoder to have a known value ()
: Permutation between and arrangements
: Number of pure information bits
: Number of bits allocated for other purposes than info; parity, balancing, CRC etc.
: Total number of transmitted bits
: Number of non-transmitted bits, that are considered part of the GLDPC codeword
: Total number of bits
: Overhead of codeword
: the indices of the CRC sequence bits
: Length of CRC sequence (bits)
: CRC code generating polynomial
Claims (30)
- 스토리지 시스템은,
GLDPC(generalized low-density parity-check) 코드워드를 저장하도록 구성된 스토리지 장치; 및
프로세서를 포함하되,
적어도 하나의 프로세서는,
정보 비트를 획득하고, 상기 GLDPC 코드워드의 제1 배열에 포함된 제1 비트 청크에 상기 정보 비트를 배치하고,
상기 제1 비트 청크에 포함된 밸런스 비트를 0으로 설정하고,
제1 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 상기 정보 비트와 상기 밸런스 비트를 인코딩하고, 상기 제1 비트 청크에 상기 제1 패리티 비트를 배치하고,
제1 치환 비트를 생성하기 위해 상기 제1 비트 청크를 치환(permute)하고, 상기 GLDPC 코드워드의 제2 배열에 포함된 제2 비트 청크에 상기 제1 치환 비트를 배치하고,
제2 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제1 치환 비트를 인코딩하고, 상기 제2 배열에 포함된 제3 비트 청크에 상기 제2 패리티 비트를 배치하고,
상기 제2 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제4 비트 청크에 상기 제2 치환 비트를 배치하고,
상기 제3 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제2 치환 비트를 인코딩하고, 상기 제1 배열에 포함된 제5 비트 청크에 상기 제3 패리티 비트를 배치하고,
제4 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제2 부분을 치환하고,
상기 제4 비트 청크와 상기 제4 치환 비트 간의 비교에 기초하여 상기 밸런스 비트를 조정함으로써 상기 제1 비트 청크를 조정하고, 상기 조정된 제1 비트 청크에 기초하여 상기 제4 비트 청크 및 상기 제5 비트 청크를 조정하고,
상기 조정된 제1 비트 청크, 상기 조정된 제4 비트 청크 및 상기 조정된 제5 비트 청크에 기초하여 상기 GLDPC 코드워드를 획득하고, 및
상기 스토리지 장치에 상기 GLDPC 코드워드를 저장하는 것을 포함하는 스토리지 시스템. - 제1 항에 있어서,
상기 제1 배열과 상기 제2 배열 간의 전단사(bijective) 매핑이 존재하고,
상기 전단사 매핑 내에서, 상기 제1 비트 청크의 비트는 상기 제2 비트 청크의 비트에만 매핑되고, 상기 제4 비트 청크의 비트는 상기 제3 비트 청크의 상기 제1 부분의 비트에만 매핑되고, 상기 제5 비트 청크의 비트는 상기 제3 비트 청크의 상기 제1 부분의 비트에만 매핑되는 스토리지 시스템. - 제1 항에 있어서,
상기 제1 배열은 제1 복수의 행들을 포함하고 및 상기 제2 배열은 상기 제2 복수의 행들을 포함하고,
상기 제1 복수의 행들의 수는 상기 제2 복수의 행들의 수와 상이한 스토리지 시스템. - 제3 항에 있어서,
상기 제1 복수의 행들 및 상기 제2 복수의 행들 각 행은 상기 시스템 코드의 코드워드를 포함하고,
상기 시스템 코드는 리드-뮬러(Reed-Muller) 코드, 하다마르(Hadmard) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드 및 해밍(Hamming) 코드 중 적어도 하나를 포함하는 스토리지 시스템. - 제1 항에 있어서,
상기 밸런스 비트를 조정하는 것은,
상기 제4 비트 청크와 상기 제4 치환 비트 간의 차이를 결정하고, 및
상기 차이에 제1 밸런싱 행렬로 곱함으로써 조정된 밸런스 비트를 획득하는 것을 포함하는 스토리지 시스템. - 제5 항에 있어서,
상기 제1 패리티 비트는 상기 밸런스 비트에 대응하는 패리티 밸런스 비트를 포함하고,
상기 제1 비트 청크를 조정하는 것은,
상기 조정된 밸런스 비트를 상기 제1 비트 청크에 추가하고,
제4 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 조정된 밸런스 비트를 인코딩하고, 및
상기 제4 패리티 비트를 추가함으로써 상기 패리티 밸런스 비트를 조정하는것을 포함하는 스토리지 시스템. - 제6 항에 있어서,
상기 제4 비트 청크와 상기 제5 비트 청크를 조정하는 것은,
상기 조정된 밸런스 비트와 상기 조정된 패리티 밸런스 비트를 제2 밸런싱 행렬로 곱하고, 및
상기 제4 비트 청크와 상기 제5 비트 청크를 곱한 결과를 더하는 것을 포함하는 스토리지 시스템. - 스토리지 장치에 저장하기 위한 정보 비트를 인코딩하는 장치는,
상기 스토리지 장치와 통신하도록 구성된 메모리 인터페이스; 및
적어도 하나 이상의 프로세서를 포함하되,
상기 프로세서는,
제2 코딩 방식에 대응하는 코드워드의 제1 배열에 포함된 제1 비트 청크를 획득하기 위해 제1 코딩 방식을 사용하여 정보 비트 및 밸런스 비트를 인코딩하고,
상기 제2 코딩 방식에 대응하는 코드워드의 제2 배열에 포함된 제2 비트 청크를 획득하기 위해 상기 제1 비트 청크를 치환하고,
상기 제2 배열에 포함된 제3 비트 청크를 획득하기 위해 상기 제1 코딩 방식 사용하여 상기 제2 비트 청크의 비트를 인코딩하고,
상기 제1 배열에 포함된 제4 비트 청크를 획득하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제5 비트 청크를 획득하기 위해 상기 제1 코딩 방식을 사용하여 상기 제4 비트 청크의 비트를 인코딩하고,
상기 제3 비트 청크의 제2 부분을 치환하고, 상기 제5 비트 청크와 상기 치환된 제3 비트 청크의 제2 부분 간의 비교에 기초하여 상기 밸런스 비트를 조정하고,
상기 조정된 밸런스 비트에 기초하여 상기 제1 배열을 조정하고, 상기 조정된 제1 배열에 기초하여 상기 제2 코딩 방식에 대응하는 코드워드를 획득하고,
상기 획득된 코드워드를 상기 스토리지 장치로 전송하기 위해 상기 메모리 인터페이스를 조정하는 것을 포함하는 장치. - 제8 항에 있어서,
상기 제1 코딩 방식은 리드-뮬러(Reed-Muller) 코딩 방식, 하다마르(Hadmard) 코딩 방식, BCH(Bose-Chaudhuri-Hocquenghem) 코딩 방식 및 해밍(Hamming) 코딩 방식 중 적어도 하나를 포함하고,
상기 제2 코딩 방식은 GLDPC 코딩 방식을 포함하는 장치. - 제8 항에 있어서,
상기 제1 배열과 상기 제2 배열 간의 전단사(bijective) 매핑이 존재하고,
상기 전단사 매핑 내에서, 상기 제1 비트 청크의 비트는 상기 제2 비트 청크의 비트에만 매핑되고, 상기 제4 비트 청크의 비트는 상기 제3 비트 청크의 제1 부분의 비트에만 매핑되고 및 상기 제5 비트 청크의 비트는 상기 제3 비트 청크의 제2 부분의 비트에만 매핑되는 장치. - 제8 항에 있어서,
상기 제1 배열은 상기 제1 복수의 행들을 포함하고 및 상기 제2 배열은 상기 제2 복수의 행들을 포함하고,
상기 제1 복수의 행들의 수는 상기 제2 복수의 행들의 수와 상이한 장치. - 제11 항에 있어서,
상기 제1 복수의 행들 및 상기 제2 복수의 행들 각 행은 상기 제1 코딩 방식에 대응하는 코드워드를 포함하는 장치. - 제8 항에 있어서,
상기 밸런스 비트의 조정하는 것은,
상기 제4 비트 청크와 상기 제3 비트 청크의 치환된 제2 부분 사이의 차이를 결정하는 단계; 및
상기 차이를 제1 밸런싱 행렬로 곱함으로써 조정된 밸런스 비트를 획득하는 단계를 포함하는 장치. - 제13 항에 있어서,
상기 제1 비트 청크는 상기 밸런스 비트에 대응하는 패리티 밸런스 비트를 포함하고,
상기 제1 배열을 조정하는 것은,
상기 조정된 밸런스 비트를 상기 제1 비트 청크에 추가하고,
제2 패리티 비트를 생성하기 위해 상기 제1 코딩 방식을 이용하여 상기 조정된 밸런스 비트를 인코딩하고,
상기 제2 패리티 비트를 추가함으로써 상기 패리티 밸런스 비트를 조정하는 것을 포함하는 장치. - 제14 항에 있어서,
제1 배열을 조정하는 것은,
상기 조정된 밸런스 비트와 상기 조정된 패리티 밸런스 비트를 제2 밸런싱 행렬로 곱하고, 및
상기 제4 비트 청크와 상기 제5 비트 청크를 곱한 결과를 더하는 것을 더 포함하는 장치. - 적어도 하나의 프로세서에 의해 실행되는, 스토리지 시스템을 제어하는 방법은,
정보 비트를 획득하고, GLDPC(generalized low-density parity-check) 코드워드의 제1 배열에 포함된 제1 비트 청크에 상기 정보 비트를 배치하는 단계;
상기 제1 비트 청크에 포함된 밸런스 비트를 0으로 설정하는 단계;
제1 패리티 비트를 생성하기 위해 시스템 코드를 사용하여 상기 정보 비트와 상기 밸런스 비트를 인코딩하고, 상기 제1 비트 청크에 상기 제1 패리티 비트를 배치하는 단계;
상기 제1 치환 비트를 생성하기 위해 상기 제1 비트 청크를 치환하고, 상기 GLDPC 코드워드의 제2 배열에 포함된 제2 비트 청크에 상기 제1 치환 비트를 배치하는 단계;
제2 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제1 치환 비트를 인코딩하고, 상기 제2 배열에 포함된 제3 비트 청크에 상기 제2 패리티 비트를 배치하는 단계;
제2 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제4 비트 청크에 상기 제2 치환 비트를 배치하는 단계;
제3 패리티 비트를 생성하기 위해 상기 시스템 코드를 사용하여 상기 제2 치환 비트를 인코딩하고, 상기 제1 배열에 포함된 제5 비트 청크에 상기 제3 패리티 비트를 배치하는 단계;
제4 치환 비트를 생성하기 위해 상기 제3 비트 청크의 제2 부분을 치환하는 단계;
상기 제4 비트 청크와 상기 제4 치환 비트 간의 비교에 기초하여 상기 밸런스 비트를 조정함으로써 상기 제1 비트 청크를 조정하고, 상기 조정된 제1 비트 청크에 기초하여 상기 제4 비트 청크 및 상기 제5 비트 청크를 조정하는 단계;
상기 조정된 제1 비트 청크, 상기 조정된 제4 비트 청크 및 상기 조정된 제5비트 청크에 기초하여 상기 GLDPC 코드워드를 획득하는 단계; 및
스토리지 장치에 상기 GLDPC 코드워드를 저장하는 단계를 포함하는 방법. - 제16 항에 있어서,
상기 제1 배열과 상기 제2 배열 간의 전단사(bijective) 매핑이 존재하고,
상기 전단사 매핑 내에서, 상기 제1 비트 청크의 비트는 상기 제2 비트 청크의 비트에만 매핑되고, 상기 제4 비트 청크의 비트는 상기 제3 비트의 제1 부분의 비트에만 매핑되고 및 상기 제5 비트 청크의 비트는 상기 제3 비트의 제2 부분의 비트에만 매핑되는 방법. - 제16 항에 있어서,
상기 제1 배열은 제1 복수의 행들 및 상기 제2 배열은 제2 복수의 행들을 포함하고,
상기 제1 복수의 행들의 수는 상기 제2 복수의 행들의 수와 상이한 방법. - 제18 항에 있어서,
상기 제1 복수의 행들 및 상기 제2 복수의 행들의 각 행은 상기 시스템 코드의 코드워드를 포함하고,
상기 시스템 코드는 리드-뮬러(Reed-Muller) 코드, 하다마르(Hadmard) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드 및 해밍(Hamming) 코드 중 적어도 하나를 포함하는 방법. - 제16 항에 있어서,
상기 밸런스 비트를 조정하는 단계는,
상기 제4 치환 비트 및 상기 제4 비트 청크 간의 차이를 결정하는 단계; 및
상기 차이에 상기 밸런싱 행렬을 곱함으로써 조정된 밸런스 비트를 획득하는 단계를 포함하는 방법. - 제20 항에 있어서,
상기 제1 패리티 비트는 상기 밸런스 비트에 대응하는 패리티 밸런스 비트를 포함하고,
상기 제1 비트 청크를 조정하는 단계는,
상기 조정된 밸런스 비트를 상기 제1 비트 청크에 추가하는 단계;
제4 패리티 비트를 생성하기 위하여 상기 시스템 코드를 사용하여 상기 조정된 밸런스 비트를 인코딩하는 단계; 및
상기 제4 패리티 비트를 추가함으로써 상기 패리티 밸런스 비트를 조정하는 단계를 포함하는 방법. - 제21 항에 있어서,
상기 제4 비트 청크와 상기 제5 비트 청크를 조정하는 단계는,
상기 조정된 밸런스 비트와 사이 조정된 패리티 밸런스 비트를 제2 밸런싱 행렬로 곱하는 단계; 및
상기 제4 비트 청크와 상기 제5 비트 청크를 곱한 결과를 더하는 단계를 포함하는 방법. - 적어도 하나의 프로세서에 의해 실행되는, 스토리지 장치에 저장하기 위해 정보 비트를 인코딩하는 방법은,
제2 코딩 방식에 대응하는 코드워드의 제1 배열에 포함된 제1 비트 청크를 획득하기 위해 제1 코딩 방식을 사용하여 정보 비트 및 밸런스 비트를 인코딩하는 단계;
상기 제2 코딩 방식에 대응하는 코드워드의 제2 배열에 포함된 제2 비트 청크를 획득하기 위해 상기 제1 비트 청크를 치환하는 단계;
상기 제2 배열에 포함된 제3 비트 청크를 획득하기 위해 상기 제1 코딩 방식을 사용하여 상기 제2 비트 청크의 비트를 인코딩하는 단계;
상기 제1 배열에 포함된 제4 비트 청크를 획득하기 위해 상기 제3 비트 청크의 제1 부분을 치환하고, 상기 제1 배열에 포함된 제5 비트 청크를 획득하기 위해 상기 제1 코딩 방식을 사용하여 상기 제4 비트 청크의 비트를 인코딩하는 단계;
상기 제3 비트 청크의 제2 부분을 치환하고, 상기 제5 비트 청크와 상기 치환된 제3 비트 청크의 제2 부분 간의 비교에 기초하여 상기 밸런스 비트를 조정하는 단계;
상기 조정된 밸런스 비트에 기초하여 상기 제1 배열을 조정하고, 상기 조정된 제1 배열에 기초하여 상기 제2 코딩 방식에 대응하는 상기 코드워드를 획득하는 단계; 및
상기 획득된 코드워드를 스토리지 장치로 전송하는 단계를 포함하는 방법. - 제23 항에 있어서,
상기 제1 코딩 방식은 리드-뮬러(Reed-Muller) 코딩 방식, 하다마르(Hadmard) 코딩 방식, BCH(Bose-Chaudhuri-Hocquenghem) 코딩 방식 및 해밍(Hamming) 코딩 방식 중 적어도 하나를 포함하고,
상기 제2 코딩 방식은 GLDPC 코딩 방식을 포함하는 방법. - 제23 항에 있어서,
상기 제1 배열과 상기 제2 배열 간의 전단사(bijective) 매핑이 존재하고,
상기 전단사 매핑 내에서, 상기 제1 비트 청크의 비트는 상기 제2 비트 청크의 비트에만 매핑되고, 상기 제4 비트 청크의 비트는 상기 제3 비트의 제1 부분의 비트에만 매핑되고 및 상기 제5 비트 청크의 비트는 상기 제3 비트의 제2 부분의 비트에만 매핑되는 방법. - 제23 항에 있어서,
상기 제1 배열은 제1 복수의 행들 및 상기 제2 배열은 제2 복수의 행들을 포함하고,
상기 제1 복수의 행들의 수는 상기 제2 복수의 행들의 수와 상이한 방법. - 제26 항에 있어서,
상기 제1 복수의 행들 및 상기 제2 복수의 행들의 각 행은 상기 제1 코딩 방식에 대응하는 코드워드를 포함하는 방법. - 제23 항에 있어서,
상기 밸런스 비트를 조정하는 단계는,
상기 제4 비트 청크와 상기 제3 비트 청크의 치환된 제2 부분 간의 차이를 결정하는 단계;
상기 차이에 제1 밸런싱 행렬로 곱함으로써 조정된 밸런싱 비트를 획득하는 단계를 포함하는 방법. - 제28 항에 있어서,
상기 제1 비트 청크는 상기 밸런스 비트에 대응하는 패리티 밸런스 비트를 포함하고,
상기 제1 배열을 조정하는 단계는,
상기 조정된 밸런스 비트를 상기 제1 비트 청크에 추가하는 단계;
제2 패리티 비트를 생성하기 위해 상기 제1 코딩 방식을 사용하여 상기 조정된 밸런스 비트를 인코딩하는 단계;
상기 제2 패리티 비트를 추가함으로써 상기 패리티 비트 밸런스를 조정하는 단계를 포함하는 방법. - 제29 항에 있어서,
상기 제1 배열을 조정하는 단계는,
상기 조정된 밸런스 비트와 상기 조정된 패리티 밸런스 비트를 제2 밸런싱 행렬로 곱하는 단계; 및
상기 제4 비트 청크와 상기 제5 비트 청크를 곱한 결과를 더하는 단계를 더포함하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/702,048 US11711099B1 (en) | 2022-03-23 | 2022-03-23 | Low gate-count encoding algorithm and hardware of flexible rate GLDPC ECC |
US17/702,048 | 2022-03-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230138384A true KR20230138384A (ko) | 2023-10-05 |
Family
ID=85076009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220138620A KR20230138384A (ko) | 2022-03-23 | 2022-10-25 | 정보 비트를 인코딩하는 장치를 포함하는 스토리지 시스템 및 그에 대한 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11711099B1 (ko) |
EP (1) | EP4250117A1 (ko) |
KR (1) | KR20230138384A (ko) |
CN (1) | CN116805506A (ko) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719884A (en) | 1995-07-27 | 1998-02-17 | Hewlett-Packard Company | Error correction method and apparatus based on two-dimensional code array with reduced redundancy |
US5920578A (en) | 1997-04-23 | 1999-07-06 | Cirrus Logic, Inc. | Method and apparatus for efficiently processing a multi-dimensional code |
US7526717B2 (en) * | 2004-06-16 | 2009-04-28 | Samsung Electronics Co., Ltd. | Apparatus and method for coding and decoding semi-systematic block low density parity check codes |
US10084481B2 (en) | 2014-12-18 | 2018-09-25 | Apple Inc. | GLDPC soft decoding with hard decision inputs |
CN107659319B (zh) | 2016-07-25 | 2022-01-18 | 饶德阳 | 一种对Turbo乘积码编码的方法和装置 |
CN111279618B (zh) * | 2017-07-10 | 2022-05-10 | 华为技术有限公司 | 通用低密度奇偶校验码 |
EP3652863B1 (en) * | 2017-07-13 | 2023-09-06 | Huawei Technologies Co., Ltd. | Generalized low-density parity check codes (gldpc) |
US11742879B2 (en) | 2019-03-13 | 2023-08-29 | Samsung Electronics Co., Ltd. | Machine-learning error-correcting code controller |
-
2022
- 2022-03-23 US US17/702,048 patent/US11711099B1/en active Active
- 2022-10-25 KR KR1020220138620A patent/KR20230138384A/ko unknown
-
2023
- 2023-01-25 EP EP23153232.6A patent/EP4250117A1/en active Pending
- 2023-03-21 CN CN202310282584.5A patent/CN116805506A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11711099B1 (en) | 2023-07-25 |
CN116805506A (zh) | 2023-09-26 |
EP4250117A1 (en) | 2023-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11405058B2 (en) | Stopping criteria for layered iterative error correction | |
CN111081308B (zh) | 用于混合非易失性存储系统的系统和方法 | |
EP3504623B1 (en) | Multiple node repair using high rate minimum storage regeneration erasure code | |
US9262268B2 (en) | Method to distribute user data and error correction data over different page types by leveraging error rate variations | |
US9292382B2 (en) | Codewords that span pages of memory | |
EP2825960B1 (en) | Physical page, logical page, and codeword correspondence | |
US10326479B2 (en) | Apparatuses and methods for layer-by-layer error correction | |
KR102572357B1 (ko) | Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 | |
US11184026B2 (en) | Super-HPC error correction code | |
WO2018022269A1 (en) | Apparatuses and methods for interleaved bch codes | |
CN112134573B (zh) | 用于将数据存储在存储器装置内的方法和检索数据的方法 | |
US9405480B2 (en) | Interleaving codewords over multiple flash planes | |
KR20230138384A (ko) | 정보 비트를 인코딩하는 장치를 포함하는 스토리지 시스템 및 그에 대한 방법 | |
US10404282B2 (en) | Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding | |
US12107606B1 (en) | Polar subcodes encoder without the demand for domination for scalable high throughput encoding | |
US12014071B2 (en) | Separation of parity columns in bit-flip decoding of low-density parity-check codes with pipelining and column parallelism | |
US11394403B1 (en) | Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices | |
US11870461B2 (en) | Failure-tolerant error correction layout for memory sub-systems | |
US20170373703A1 (en) | Error correction code (ecc) operations in memory |