KR102666852B1 - 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 - Google Patents
컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 Download PDFInfo
- Publication number
- KR102666852B1 KR102666852B1 KR1020160092551A KR20160092551A KR102666852B1 KR 102666852 B1 KR102666852 B1 KR 102666852B1 KR 1020160092551 A KR1020160092551 A KR 1020160092551A KR 20160092551 A KR20160092551 A KR 20160092551A KR 102666852 B1 KR102666852 B1 KR 102666852B1
- Authority
- KR
- South Korea
- Prior art keywords
- message
- message blocks
- matrix
- diagonal matrix
- equation
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 title claims description 36
- 238000011017 operating method Methods 0.000 title description 2
- 239000011159 matrix material Substances 0.000 claims abstract description 287
- 238000000034 method Methods 0.000 claims abstract description 34
- 238000012937 correction Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 239000000470 constituent Substances 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000004904 shortening Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000009897 systematic effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005294 ferromagnetic effect Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/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
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/1072—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 in multilevel memories
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
컨트롤러의 동작 방법에 있어서, k×k 정방형 메시지 매트릭스를 생성하는 제1단계; 및 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하는 제2단계를 포함하고, 상기 정방형 메시지 매트릭스는 대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며, 상기 하부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용은 상기 제로 패딩 블록을 기준으로 대칭하는 상기 상부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용과 동일하고, 상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하는 컨트롤러의 동작 방법이 개시된다.
Description
본 발명은 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법에 관한 것으로, 보다 구체적으로는 각 구성 부호의 길이 및 블록의 크기 차이가 최소인 대칭 구조 블록 단위 연접 비씨에이치 부호를 통해 인코딩을 수행하는 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구분된다.
휘발성 메모리 장치는 전원이 차단되면 저장된 데이터를 잃지만, 비휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존할 수 있다. 특히, 플래시 메모리는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 가지기 때문에, 컴퓨터 시스템 등에서 저장 매체로 광범위하게 사용되고 있다.
비휘발성 메모리, 예를 들어 플래시 메모리는, 각각의 메모리 셀에 저장되는 비트 수에 따라서 각각의 메모리 셀에 저장 가능한 데이터 상태들이 결정될 수 있다. 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀은 단일 비트 셀(single-bit cell) 또는 단일 레벨 셀(single-level cell; SLC)이다. 하나의 메모리 셀에 2 비트 데이터를 저장하는 메모리 셀은 멀티 비트 셀(multi-bit cell), 멀티 레벨 셀(multi-level cell; MLC), 또는 멀티 스테이트 셀(multi-state cell)이다. 그리고 하나의 메모리 셀에 3 비트 데이터를 저장하는 메모리 셀은 트리플 레벨 셀(triple-level cell; TLC)이다. MLC 및 TLC는 메모리의 고집적화에 유리한 장점을 갖는다.
그러나, 하나의 메모리 셀에 프로그램되는 비트의 수가 증가함으로써 리드 동작 시 레벨 간 간섭에 의한 에러가 발생할 확률이 증가하며, 프로그램/리드 동작이 반복될수록 에러 발생 확률이 증가하여 제품의 신뢰도가 떨어지는 문제가 발생한다. 이러한 문제를 해결하기 위해, 일반적으로 에러정정부호를 사용하고 있다.
에러정정부호로써 해밍 코드(Hamming code), 리드-솔로몬(Reed-Solomon, RS), 비씨에이치(Bose-Chadhuri-Hocquenghem, BCH) 부호가 사용되고 있다. 특히, 비씨에이치 부호를 구성부호로 하는 블록 단위 연접 비씨에이치(Block wise concatenated BCH, BC-BCH) 부호가 널리 사용되고 있다. 블록 단위 연접 비씨에이치(BC-BCH) 부호 중 대칭 블록 단위 연접 비씨에이치(SYMMETRIC BLOCK- WISE CONCATENATED BCH, SBC-BCH) 부호는 강력한 에러 정정 부호로써, 높은 부호율, 낮은 오류율을 가지고 있다. 그러나, 대칭 블록 단위 연접 비씨에이치(SBC-BCH) 부호는 체계적인 메시지 매트릭스 설계기법이 존재하지 않는다. 현실적인 구현을 위해서는 각 구성 부호의 길이 및 블록의 길이 차이를 최소로 하는 메시지 매트릭스 설계 기법이 필요하다. 동일한 구성 부호의 복호기를 반복 활용하는 방식을 통해 전체 대칭 블록 단위 연접 비씨에이치 부호의 복호를 수행할 수 있으며, 뿐만 아니라 성능 향상도 도모할 수 있기 때문이다.
따라서, 각 구성 부호의 길이 및 블록의 크기 차이를 최소로 하는 체계적인 메시지 매트릭스 설계 기법이 요구된다.
본 발명의 일실시예는 각 구성 부호의 길이 및 블록의 크기 차이가 최소인 대칭 구조 블록 단위 연접 비씨에이치 부호를 통해 인코딩을 수행하는 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법을 제공하는 것을 목적으로 한다.
본 발명의 일실시예에 따르면, 컨트롤러의 동작 방법에 있어서, k×k 정방형 메시지 매트릭스를 생성하는 제1단계; 및 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하는 제2단계를 포함하고, 상기 정방형 메시지 매트릭스는 대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며, 상기 하부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용은 상기 제로 패딩 블록을 기준으로 대칭하는 상기 상부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용과 동일하고, 상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하고, 상기 α, β, N은 하기 수학식 1 및 2의 관계를 가지는 컨트롤러의 동작 방법을 제공할 수 있다.
[수학식 1]
[수학식 2]
M은 호스트로부터 입력되는 메시지의 크기, N은 상기 상부 삼각 매트릭스를 구성하는 메시지 블록들의 개수임.
바람직하게는, 상기 β개의 메시지 블록들은 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서대로 선택되며, 상기 제i대각 행렬 그룹은 제i+1대각 행렬 및 제k+1-i대각 행렬을 포함하고, 상기 i은 하기 수학식 3의 관계를 가질 수 있다.
[수학식 3]
i 및 k는 정수임.
바람직하게는, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서는, 상기 제i+1대각 행렬에 포함된 메시지 블록들은 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지되, 동일한 대각 행렬에 포함된 메시지 블록들의 순서는 높은 행에 위치한 메시지 블록들이 높은 순서를 가지며, 상기 β개의 메시지 블록들이 상기 제i대각 행렬 그룹에서 선택되는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선택될 수 있다-n은 1 이상의 정수-.
바람직하게는, 상기 k가 짝수이고, β가 하기 수학식 4를 만족하면, 상기 β개의 메시지 블록들 중 γ개의 메시지 블록들이 상기 제(k/2)대각 행렬 그룹에서 선택되고, 상기 γ는 하기 수학식 5의 관계를 가질 수 있다.
[수학식 4]
[수학식 5]
바람직하게는, 상기 제로 패딩 블록의 크기는 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 생성되는 패리티 부호의 크기와 동일할 수 있다.
본 발명의 일실시예에 따르면, 컨트롤러에 있어서, k×k 정방형 메시지 매트릭스를 생성하고, 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하되, 상기 정방형 메시지 매트릭스는 대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며, 상기 하부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용은 상기 제로 패딩 블록을 기준으로 대칭하는 상기 상부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용과 동일하고, 상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하고, 상기 α, β, N은 하기 수학식 1 및 2의 관계를 가지는 컨트롤러를 제공할 수 있다.
[수학식 1]
[수학식 2]
M은 호스트로부터 입력되는 메시지의 크기, N은 상기 상부 삼각 매트릭스를 구성하는 메시지 블록들의 개수임.
바람직하게는, 상기 β개의 메시지 블록들은 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서대로 선택되며, 상기 제i대각 행렬 그룹은 제i+1대각 행렬 및 제k+1-i대각 행렬을 포함하고, 상기 i은 하기 수학식 3의 관계를 가질 수 있다.
[수학식 3]
i 및 k는 정수임.
바람직하게는, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서는, 상기 제i+1대각 행렬에 포함된 메시지 블록들은 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지되, 동일한 대각 행렬에 포함된 메시지 블록들의 순서는 높은 행에 위치한 메시지 블록들이 높은 순서를 가지며, 상기 β개의 메시지 블록들이 상기 제i대각 행렬 그룹에서 선택되는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선택될 수 있다-n은 1 이상의 정수-.
바람직하게는, 상기 k가 짝수이고, β가 하기 수학식 4를 만족하면, 상기 β개의 메시지 블록들 중 γ개의 메시지 블록들이 상기 제(k/2)대각 행렬 그룹에서 선택되고, 상기 γ는 하기 수학식 5의 관계를 가질 수 있다.
[수학식 4]
[수학식 5]
바람직하게는, 상기 제로 패딩 블록의 크기는 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 생성되는 패리티 부호의 크기와 동일할 수 있다.
본 발명의 일실시예에 따르면, k×k 정방형 메시지 매트릭스를 생성하고, 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하는 컨트롤러; 및 상기 인코디드 메시지를 저장하는 메모리 장치를 포함하고, 상기 정방형 메시지 매트릭스는 대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며, 상기 하부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용은 상기 제로 패딩 블록을 기준으로 대칭하는 상기 상부 삼각 매트릭스에 포함된 메시지 블록들의 각각의 크기 및 내용과 동일하고, 상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하고, 상기 α, β, N은 하기 수학식 1 및 2의 관계를 가지는 반도체 메모리 시스템을 제공할 수 있다.
[수학식 1]
[수학식 2]
M은 호스트로부터 입력되는 메시지의 크기, N은 상기 상부 삼각 매트릭스를 구성하는 메시지 블록들의 개수임.
바람직하게는, 상기 β개의 메시지 블록들은 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서대로 선택되며, 상기 제i대각 행렬 그룹은 제i+1대각 행렬 및 제k+1-i대각 행렬을 포함하고, 상기 i은 하기 수학식 3의 관계를 가질 수 있다.
[수학식 3]
i 및 k는 정수임.
바람직하게는, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서는, 상기 제i+1대각 행렬에 포함된 메시지 블록들은 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지되, 동일한 대각 행렬에 포함된 메시지 블록들의 순서는 높은 행에 위치한 메시지 블록들이 높은 순서를 가지며, 상기 β개의 메시지 블록들이 상기 제i대각 행렬 그룹에서 선택되는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선택될 수 있다-n은 1 이상의 정수-.
바람직하게는, 상기 k가 짝수이고, β가 하기 수학식 4를 만족하면, 상기 β개의 메시지 블록들 중 γ개의 메시지 블록들이 상기 제(k/2)대각 행렬 그룹에서 선택되고, 상기 γ는 하기 수학식 5의 관계를 가질 수 있다.
[수학식 4]
[수학식 5]
바람직하게는, 상기 제로 패딩 블록의 크기는 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 생성되는 패리티 부호의 크기와 동일할 수 있다.
본 발명의 일실시예는 각 구성 부호의 길이 및 블록의 크기 차이가 최소인 균등한 대칭 구조 블록 단위 연접 비씨에이치 부호를 통해 메시지를 인코딩할 수 있다.
도 1은 본 발명의 일실시예에 따른 반도체 메모리 시스템을 나타내는 블록도이다.
도 2는 본 발명의 일실시예에 따른 대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)에 대한 다이어그램이다.
도 3은 메시지 매트릭스의 상부 삼각 매트릭스에 포함된 각 메시지 블록들의 크기를 설정하는 방법을 도시한 흐름도이다.
도 4는 제i대각 행렬 그룹에 포함된 메시지 블록들 중 γ 개의 메시지 블록들을 선택하는 방법을 도시한 흐름도이다.
도 5는 메시지 매트릭스의 제로 패딩 블록 및 하부 삼각 매트릭스에 포함된 각 메시지 블록들의 크기를 설정하는 방법을 도시한 흐름도이다.
도 6은 본 발명의 일실시예에 따른 메모리 시스템의 인코딩 동작 방법에 대한 흐름도이다.
도 7은 본 발명의 일실시예에 따른 메모리 시스템의 디코딩 동작 방법에 대한 흐름도이다.
도 8은 본 발명의 일실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치를 도시한 도면이다.
도 9는 본 발명의 다른 실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치를 도시한 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)에 대한 다이어그램이다.
도 3은 메시지 매트릭스의 상부 삼각 매트릭스에 포함된 각 메시지 블록들의 크기를 설정하는 방법을 도시한 흐름도이다.
도 4는 제i대각 행렬 그룹에 포함된 메시지 블록들 중 γ 개의 메시지 블록들을 선택하는 방법을 도시한 흐름도이다.
도 5는 메시지 매트릭스의 제로 패딩 블록 및 하부 삼각 매트릭스에 포함된 각 메시지 블록들의 크기를 설정하는 방법을 도시한 흐름도이다.
도 6은 본 발명의 일실시예에 따른 메모리 시스템의 인코딩 동작 방법에 대한 흐름도이다.
도 7은 본 발명의 일실시예에 따른 메모리 시스템의 디코딩 동작 방법에 대한 흐름도이다.
도 8은 본 발명의 일실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치를 도시한 도면이다.
도 9는 본 발명의 다른 실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치를 도시한 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치를 도시한 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
일반적으로, 플래시 메모리 장치는 병렬로 연결된 다이(die)를 기본 구조로 가지고 있고, 다이는 한번에 지울(erase) 수 있는 단위인 메모리 블록으로 구성된다. 각 메모리 블록은 읽기/쓰기(read/write) 단위인 페이지(page)로 구성된다. 그러므로 오류 정정 부호는 읽기/쓰기 단위인 페이지 단위로 수행됨이 바람직하다. 페이지의 단위는 제조사마다 다르지만 일반적으로 SLC 소자에서는 1KB 페이지를, MLC 소자에서는 4KB 또는 8KB 페이지를 많이 사용한다.
플래시 메모리 장치는 저장 장치로서 높은 신뢰성을 요구하므로, 오류 정정부호를 적용했을 때 매우 낮은 오류율 영역에서 동작해야 한다. 또한, 빠른 읽기 및 쓰기 속도를 위해 부호 및 복호기의 지연 시간과 복잡도가 제한된다. 동시에, 저장 공간의 효율을 위해서 데이터 이외의 여분 공간이 제한되므로, 전체 저장 데이터 대비 패리티 비트의 비율이 제한된다. 따라서 플래시 메모리 장치에 적합한 부호는 높은 부호율(일례로, 0.9 이상)을 가지면서, 오류 마루(error floor)가 없거나, 오류 마루가 있더라도 이를 해결할 수 있는 방법이 충분히 짧은 지연 시간과 낮은 복잡도를 바탕으로 제시되어야 한다.
이하, 본 발명에서 실시하고자 하는 기술 내용은 임의의 오류 정정 부호에 적용될 수 있으며 예를 들어 BCH 부호를 구성 부호로 하는 모든 연접 부호 또는 단일 BCH 부호에 적용될 수 있다. 일례로, 이하, 본 발명에서 실시하고자 하는 기술내용에서는 연접 BCH 부호로 설명하기로 하며, 상기 연접 BCH 부호는 블록 단위 연접 BCH 부호를 의미한다.
이하, 본 발명에서 실시하고자 하는 구체적인 기술내용에 대해 첨부도면을 참조하여 상세하게 설명하기로 한다.
도 1은 본 발명의 일실시예에 따른 반도체 메모리 시스템을 나타내는 블록도이며, 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(10)은 호스트(Host)(100) 및 메모리 시스템(110)을 포함한다.
그리고, 호스트(100)는 예컨대, 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함한다.
또한, 메모리 시스템(110)은 호스트(100)의 요청에 응답하여 동작하며, 특히 호스트(100)에 의해서 액세스되는 데이터를 저장한다. 다시 말해, 메모리 시스템(110)은 호스트(100)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다. 여기서, 메모리 시스템(110)은 호스트(100)와 연결되는 호스트(100) 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 예를 들면, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
아울러, 메모리 시스템(110)을 구현하는 저장 장치들은 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치(200)로 구현될 수 있다.
그리고, 메모리 시스템(110)은 호스트(100)에 의해서 액세스되는 데이터를 저장하는 메모리 장치(200) 및 메모리 장치(200)로의 데이터 저장을 제어하는 컨트롤러(120)를 포함한다.
여기서, 컨트롤러(120) 및 메모리 장치(200)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(120) 및 메모리 장치(200)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 이용되는 경우, 메모리 시스템(110)에 연결되는 호스트(100)의 동작 속도는 획기적으로 개선될 수 있다.
컨트롤러(120) 및 메모리 장치(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(120) 및 메모리 장치(200)는, 하나의 반도체 장치로 집적되어, PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
또 다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB (Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
한편, 메모리 시스템(110)의 메모리 장치(200)는 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 라이트(write) 동작을 통해 호스트(100)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(100)로 제공한다.
보다 구체적으로 설명하면, 반도체 메모리 장치(200)는 셀 어레이(210), 제어 회로(220), 전압 공급부(230), 전압 전달부(240), 읽기/쓰기 회로(250) 및 컬럼 선택부(260)를 포함할 수 있다.
셀 어레이(210)는 다수의 메모리 블록들(211)을 포함할 수 있다. 메모리 블록(211)에는 사용자의 데이터가 저장될 수 있다.
제어 회로(220)는 반도체 메모리 장치(200)의 프로그램, 소거, 및 읽기 동작과 관련된 제반 동작을 제어할 수 있다.
전압 공급 회로(230)는 동작 모드에 따라서 각각의 워드 라인들로 공급될 워드 라인 전압들(예를 들면, 프로그램 전압, 리드 전압, 패스 전압 등)과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 전압을 제공할 수 있다. 전압 공급 회로(230)의 전압 발생 동작은 제어 회로(220)의 제어에 의해 수행될 수 있다.
전압 공급 회로(230)는 다수의 리드 데이터를 생성하기 위해 복수의 가변 리드 전압들을 생성할 수 있다.
전압 전달부(240)는 제어 회로(220)의 제어에 응답해서 메모리 셀 어레이(210)의 메모리 블록들(또는 섹터들) 중 하나를 선택하고, 선택된 메모리 블록의 워드 라인들 중 하나를 선택할 수 있다. 전압 전달부(240)는 제어 회로(220)의 제어에 응답해서 전압 공급 회로(230)로부터 발생된 워드라인 전압을 선택된 워드 라인 및 비선택된 워드 라인들로 각각 제공할 수 있다.
읽기/쓰기 회로(250)는 제어 회로(220)에 의해서 제어되며, 동작 모드에 따라 감지 증폭기(sense amplifier)로서 또는 기입 드라이버(write driver)로서 동작할 수 있다. 예를 들면, 검증/정상 읽기 동작의 경우 읽기/쓰기 회로(250)는 메모리 셀 어레이(210)로부터 데이터를 읽기 위한 감지 증폭기로서 동작할 수 있다. 정상 읽기 동작 시 컬럼 선택부(260)는 열 어드레스 정보에 응답하여 읽기/쓰기 회로(250)로부터 읽혀진 데이터를 외부(예를 들면, 컨트롤러)로 출력할 수 있다. 이와 달리, 검증 읽기 동작시 읽혀진 데이터는 반도체 메모리 장치(200) 내부의 패스/페일 검증 회로(미도시)로 제공되어, 메모리 셀들의 프로그램 성공 여부를 판단하는데 이용될 수 있다.
프로그램 동작의 경우 읽기/쓰기 회로(250)는 셀 어레이(210)에 저장될 데이터에 따라 비트 라인들을 구동하는 기입 드라이버로서 동작할 수 있다. 읽기/쓰기 회로(250)는 프로그램 동작 시 셀 어레이(210)에 쓰일 데이터를 버퍼(미도시)로부터 수신하고, 입력된 데이터에 따라 비트라인들을 구동할 수 있다. 이를 위해 읽기/쓰기 회로(250)는 열들(또는 비트 라인들) 또는 열쌍(또는 비트 라인 쌍들)에 각각 대응되는 복수 개의 페이지 버퍼들로 구성될 수 있다. 각각의 페이지 버퍼 내부에는 복수의 래치들이 구비될 수 있다.
그리고, 메모리 시스템(110)의 컨트롤러(120)는, 호스트(100)로부터의 요청에 응답하여 메모리 장치(200)를 제어한다. 예컨대, 컨트롤러(120)는, 메모리 장치(200)로부터 리드된 데이터를 호스트(100)로 제공하고, 호스트(100)로부터 제공된 데이터를 메모리 장치(200)에 저장하며, 이를 위해 컨트롤러(120)는, 메모리 장치(200)의 리드, 라이트, 프로그램, 소거(erase) 등의 동작을 제어한다.
보다 구체적으로 설명하면, 컨트롤러(120)는, 호스트(100) 인터페이스(Host I/F) 유닛(130), 프로세서(Processor)(140), 에러 정정 코드(ECC: Error Correction Code) 유닛(160), 파워 관리 유닛(PMU: Power Management Unit)(170), 낸드 플래시 컨트롤러(120)(NFC: NAND Flash Controller)(180), 및 메모리(Memory)(190)를 포함한다.
또한, 호스트(100) 인터페이스 유닛(130)은, 호스트(100)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(100)와 통신하도록 구성될 수 있다.
ECC 유닛(160)은 메모리 블록(210)에 저장된 데이터를 리드할 경우, 메모리 블록(210)으로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. 다시 말해, ECC 유닛(160)은 메모리 블록(210)으로부터 리드한 데이터에 대하여 ECC 디코딩을 수행한 후, ECC 디코딩의 성공 여부를 판단하고 판단 결과에 따라 지시 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. 이때, ECC 유닛(160)은 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패(fail) 신호를 호스트에 전달할 수 있다.
여기서, ECC 유닛(160)은, LDPC(low density parity check) code, BCH(Bose, Chaudhri, Hocquenghem) code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며 이에 한정되는 것은 아니다. 또한, ECC 유닛(160)는 에러 정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다.
PMU(170)는, 컨트롤러(120)의 파워, 즉 컨트롤러(120)에 포함된 구성 요소들의 파워를 제공 및 관리한다.
또한, NFC(180)는, 컨트롤러(120)가 호스트(100)로부터의 요청에 응답하여 메모리 장치(200)를 제어하기 위해, 컨트롤러(120)와 메모리 장치(200) 간의 인터페이싱을 수행하는 메모리 인터페이스로서, 메모리 장치(200)가 플래시 메모리, 특히 일 예로 메모리 장치(200)가 낸드 플래시 메모리일 경우에, 프로세서(140)의 제어에 따라 메모리 장치(200)의 제어 신호를 생성하고 데이터를 처리한다.
아울러, 메모리(190)는, 메모리 시스템(110) 및 컨트롤러(120)의 동작 메모리로, 메모리 시스템(110) 및 컨트롤러(120)의 구동을 위한 데이터를 저장한다. 보다 구체적으로 설명하면, 메모리(190)는, 컨트롤러(120)가 호스트(100)로부터의 요청에 응답하여 메모리 장치(200)를 제어, 예컨대 컨트롤러(120)가, 메모리 장치(200)로부터 리드한 데이터를 호스트(100)로 제공하고, 호스트(100)로부터 제공된 데이터를 메모리 장치(200)에 저장하며, 이를 위해 컨트롤러(120)가, 메모리 장치(200)의 리드, 라이트, 프로그램, 소거(erase) 등의 동작을 제어할 경우, 이러한 동작을 메모리 시스템(110), 즉 컨트롤러(120)와 메모리 장치(200) 간이 수행하기 위해 필요한 데이터를 저장한다.
메모리(190)는 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 또한, 메모리(190)는, 전술한 바와 같이, 호스트(100)와 메모리 장치(200) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장하며, 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 라이트 버퍼, 리드 버퍼, 맵(map) 버퍼 등을 포함한다.
또한, 메모리(190)는 ECC유닛(160)과 프로세서(140) 간 데이터 리드 등의 동작을 수행하기 위해 필요한 데이터 및 데이터 리드 등의 동작 수행 시의 데이터를 저장한다. 즉, 메모리장치(200)로부터 리드한 데이터를 저장한다. 데이터는 사용자데이터, 패리티 데이터 및 상태 데이터를 포함한다. 여기서, 상태 데이터는 데이터가 메모리 장치(200)의 메모리 블록(210)에 프로그램될 때 적용된 싸이클링 그룹 정보를 포함한다.
프로세서(140)는 메모리 시스템(110)의 제반 동작을 제어하며, 호스트(100)로부터의 라이트 요청 또는 리드 요청에 응답하여, 메모리 장치(200)에 대한 라이트 동작 또는 리드 동작을 제어한다. 여기서, 프로세서(140)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(140)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
도 2는 본 발명의 일실시예에 따른 대칭 블록 단위 연접 비씨에이치 부호(Symmetric Block-wise Concatenated Bose-Chadhuri-Hocquenghem, SBC-BCH)에 대한 다이어그램이다.
도 2를 참조하면, 대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)의 구성 부호로 이루어진 매트릭스는 메시지로부터 생성된 메시지 매트릭스(MM) 및 상기 메시지 매트릭스(MM)에 연접되어 생성된 패리티 매트릭스(Parity Matrix, PM)를 포함한다.
대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)의 메시지 매트릭스(MM)는 복수의 메시지 블록을 포함하고 있는 상부 삼각 매트릭스(A), 상기 상부 삼각 매트릭스(A)와 대칭 구조를 이루고 있는 하부 삼각 매트릭스(B) 및 상기 상부 및 하부 삼각 매트릭스(A, B) 사이에 형성된 복수의 제로 패딩 블록을 포함한다. 상기 복수의 제로 패딩 블록은 메시지 블록들(Bi,j) 중에서, 'i=j' 경우에 해당하는 메시지 블록들, 즉, 메시지 매트릭스(MM)의 제1행의 제1열에 위치한 메시지 블록에서 시작하는 제1대각 행렬에 포함된 메시지 블록들이다. 상부 삼각 매트릭스(A)에 포함된 메시지 블록 Bi,j는 B영역에 포함된 메시지 블록 Bj,i와 동일한 메시지를 포함한다. 즉, 메시지 블록 Bi,j와 메시지 블록 Bj,i는 동일한 크기 및 내용을 가진다. 예를 들어, 상부 삼각 매트릭스(A)에 포함된 메시지 블록 B1,2는 하부 삼각 매트릭스(B)에 포함된 메시지 블록 B2,1과 동일한 메시지를 가진다. 여기서, i, j는 1 이상 k 이하의 정수이며, k는 메시지 매트릭스(MM)의 행(또는 열)의 개수이다. 일반적으로, 대각 행렬은 정방행렬의 원소들 중 제1대각선에 위치하는 원소들이 영이 아닌 값을 가질 수 있는 행렬(즉, 제1대각선 이외에 위치하는 원소들은 모두 0의 값을 가지며, 제1대각선에 위치하는 원소들은 0 또는 그 외의 값을 가지는 행렬)을 의미하는 것이지만, 본 발명의 명세서에서는 정방행렬 내에서 제i대각선에 위치한 원소들을 제i대각 행렬로서 지칭하기로 한다. 여기서, 제i대각선은, 메시지 매트릭스(MM)를 이용하여 예를 들면, 메시지 매트릭스(MM)의 메시지 블록 B1,i에서 시작하는 대각선이다. 예를 들어, 제2대각선은 메시지 매트릭스(MM)의 메시지 블록 B1,2에서 시작하는 대각선이다.
패리티 매트릭스(PM)의 제i패리티 블록(Ri)은 상기 메시지 매트릭스(MM)의 제i행에 위치한 메시지 블록들(Bi,1 내지 Bi,k)에 대한 패리티 정보를 포함할 수 있다. 예를 들어, 패리티 블록 R1은 제1행에 위치한 메시지 블록들(B1,1 내지 B1,k)에 대한 패리티 정보를 포함하며, 패리티 블록 R3는 제3행에 위치한 메시지 블록들(B3,1 내지 B3,k)에 대한 패리티 정보를 포함한다.
대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)의 매트릭스의 제i행에 위치한 메시지 블록들(Bi,1 내지 Bi,k) 및 제i행에 위치한 패리티 블록(Ri)은 제i구성 부호(Ci)를 형성한다. 예를 들어, 제1행에 위치한 메시지 블록들(B1,1 내지 B1,k) 및 패리티 블록(R1)은 제1구성 부호(C1)를 형성하며, 제k행에 위치한 메시지 블록들(Bk,1 내지 Bk,k) 및 패리티 블록(Rk)은 제k구성 부호(Ck)를 형성한다. 여기서, 각 구성 부호들의 개수는 메시지 매트릭스(MM)의 행의 개수와 동일한 k개이다.
제i구성 부호(Ci)의 메시지 블록 Bi,j는 제j구성 부호(Cj)의 메시지 블록 Bj,i와 동일하므로, 제i구성 부호(Ci)는 제j구성 부호(Cj)의 메시지 블록과 동일한 메시지 블록을 적어도 하나 가진다. 예를 들어, 제1구성 부호(C1)는 제2구성 부호(C2)의 메시지 블록 B2,1과 동일한 메시지 블록 B1,2를 가진다.
상기 메시지 매트릭스(MM)의 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)에 포함된 전체 메시지 길이는 'K'이고, 메시지 블록의 개수는 'NB'이고, 각 메시지 블록(Bi,j)에 포함된 비트의 개수 즉, 크기는 'nB'이고, 상기 매트릭스를 구성하는 구성 부호의 개수는 'k'이다.
상기 메시지 매트릭스(MM)의 상기 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)에 포함된 메시지 블록의 개수(NB)는 수학식 1과 같이 나타낼 수 있다.
그리고, 메시지 매트릭스(MM)의 전체 메시지 길이(K)는 수학식 2와 같이 나타낼 수 있다.
여기서, α는 전체 메시지 길이(K)를 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)의 메시지 블록의 개수(NB)로 나누었을 때의 몫, 즉, 이며, β는 전체 메시지 길이(K)를 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)의 메시지 블록의 개수(NB)로 나누었을 때의 나머지, 즉, 이다. 여기서, β는 수학식 3을 만족한다.
즉, β는 0 이상 메시지 블록의 개수(NB) 미만의 값을 가진다.
따라서, 수학식 1 내지 3을 종합할 때, 상기 메시지 매트릭스(MM)의 전체 메시지 길이(K)가 메시지 블록의 개수(NB)로 나누어떨어지지 않는 경우, 즉, β가 0이 아니면, 상기 각 메시지 블록의 크기(nB)는 서로 다를 수 있다. 예를 들어, 각 메시지 블록의 크기(nB)는 α 또는 α+1일 수 있다.
메시지 블록의 크기(nB)의 차이가 큰 경우, 각 구성 부호의 길이도 차이가 클 수 있고, 그에 따라, 대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)의 오류 정정 능력이 떨어지거나 구현 복잡도가 상승할 수 있다. 따라서, 상기 메시지 매트릭스(MM)의 전체 메시지 길이(K)가 메시지 블록의 개수(NB)로 나누어떨어지지 않는 경우에도 각 구성 부호의 길이 차이 및 메시지 블록 차이를 최소로 하는 메시지 매트릭스 설계기법이 필요하다. 즉, 상기 메시지의 크기를 상기 상부 삼각 매트릭스의 메시지 블록들의 개수로 나누었을 때 몫이 α이고, 나머지가 β인 경우, β개의 메시지 블록들을 선택하여 상기 선택된 메시지 블록들의 크기를 α+1로 설정하고 그 외의 메시지 블록들의 크기를 α로 설정함으로써 각 구성 부호의 길이 및 메시지 블록의 크기 차이가 최소인 메시지 매트릭스 설계기법이 필요하다.
이하에서는, 도 3 내지 5를 참조하여 상기 메시지 매트릭스(MM)의 전체 메시지 길이(K)가 메시지 블록의 개수(NB)로 나누어떨어지지 않는 경우에도 각 구성 부호의 길이 및 메시지 블록의 크기 차이가 최소인 메시지 매트릭스 설계 기법을 설명하도록 한다.
도 3은 메시지 매트릭스(MM)의 상부 삼각 매트릭스(A)에 포함된 각 메시지 블록들(Bi,j)의 크기를 설정하는 방법을 도시한 흐름도이다.
먼저, S305 단계에서, 컨트롤러(120)는 모든 메시지 블록들의 크기를 α로 설정한다. 여기서, α는 전체 메시지 길이(K)를 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)의 메시지 블록의 개수(NB)로 나누었을 때의 몫이다.
그 다음, S310 단계에서, 컨트롤러(120)는 잔여 나머지(γ)가 k 이상인지 판정하고, 판정 결과 잔여 나머지(γ)가 k 이상이면("예" 판정) S320 단계로 진행하고, 판정 결과 잔여 나머지(γ)가 k 미만이면("아니오" 판정) S360 단계로 진행한다. 여기서, 잔여 나머지(γ)의 초기값은 β이다. 여기서 k는 구성 부호의 개수이며, β는 전체 메시지 길이(K)를 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)의 메시지 블록의 개수(NB)로 나누었을 때의 나머지이다.
S320 단계에서, 컨트롤러(120)는 제i대각 행렬 그룹(Gi)에 포함된 메시지 블록들의 크기를 α+1로 설정한다.
제i대각 행렬 그룹(Gi)은 매트릭스의 제1행의 제i+1열에 위치한 메시지 블록에서 시작하는 제i+1대각 행렬 및 상기 매트릭스의 제1행의 제k+1-i열에 위치한 메시지 블록에서 시작하는 제k+1-i대각 행렬을 포함한다. 이에 따라, 구성 부호의 개수(k)가 홀수이면, 각 대각 행렬 그룹들(Gi)은 각각 k개의 메시지 블록들을 포함하고, 구성 부호의 개수(k)가 짝수이면, k/2번째 대각 행렬 그룹, 즉, 제k/2대각 행렬 그룹은 k/2개의 메시지 블록들을 포함하고, 그 외의 대각 행렬 그룹들은 각각 k개의 메시지 블록들을 포함한다. 예를 들어, 구성 부호의 개수(k)가 6인 경우, 제1대각 행렬 그룹(G1)은 매트릭스의 제1행의 제2열에 위치한 메시지 블록 R1,2에서 시작하는 제2대각 행렬과 상기 매트릭스의 제1행의 제6열에 위치한 메시지 블록 B1,6에서 시작하는 제6대각 행렬을 포함한다. 즉, 제1대각 행렬 그룹(G1)은 제2대각 행렬에 포함된 메시지 블록들 B1,2, B2,3, B3,4, B4,5 및 B5,6과 제6대각 행렬에 포함된 메시지 블록 B1,6을 포함한다. 유사한 방식으로, 제2대각 행렬 그룹(G2)은 제3대각 행렬에 포함된 메시지 블록들 B1,3, B2,4, B3,5 및 B4,6과 제5대각 행렬에 포함된 메시지 블록들 B1,5, B2,6을 포함하며, 제2대각 행렬 그룹(G2)은 제3대각 행렬에 포함된 메시지 블록들 B1,4, B2,5, B3,6을 포함한다.
그 다음, S310 단계에서, 컨트롤러(120)는 잔여 나머지(γ)가 k 이상인지 판정하고, 판정 결과 잔여 나머지(γ)가 k 이상이면("예" 판정) S320 단계로 진행하고, 판정 결과 잔여 나머지(γ)가 k 미만이면("아니오" 판정) S360 단계로 진행한다. 여기서, 잔여 나머지(γ)의 초기값은 β이다.
S320 단계에서, 컨트롤러(120)는 제i대각 행렬 그룹(Gi)에 포함된 메시지 블록들의 크기를 α+1로 설정한다.
S330 단계에서, 컨트롤러(120)는 잔여 나머지(γ)를 k만큼 감소된 값으로 갱신한다.
S340 단계에서, 컨트롤러(120)는 i를 1만큼 증가된 값으로 갱신한다.
S350 단계에서, 컨트롤러(120)는 잔여 나머지(γ)가 0 이하인지 판정하고, 판정 결과 잔여 나머지(γ)가 0 이하이면("예" 판정) 메모리 블록의 크기 설정을 종료하고, 판정 결과 잔여 나머지(γ)가 0을 초과하면("아니오" 판정) S310 단계로 진행한다.
S360 단계에서, 컨트롤러(120)는 구성 부호의 개수(k)가 홀수인지 판정하고, 판정 결과 구성 부호의 개수(k)가 짝수이면("아니오" 판정) S370 단계로 진행하고, 판정 결과 구성 부호의 개수(k)가 홀수이면("예" 판정) S390 단계로 진행한다.
S370 단계에서, 컨트롤러(120)는 잔여 나머지(γ)가 k/2 이하인지 판정하고, 판정 결과 잔여 나머지(γ)가 k/2 이하이면("예" 판정) S380 단계로 진행하고, 판정 결과 잔여 나머지(γ)가 k/2를 초과하면("아니오" 판정) S390 단계로 진행한다.
S380 단계에서, 컨트롤러(120)는 제k/2대각 행렬 그룹에 포함된 메시지 블록들 중 γ 개의 메시지 블록들을 선택하고, 선택된 메시지 블록들의 크기를 α+1로 설정한다.
S390 단계에서, 컨트롤러(120)는 제i대각 행렬 그룹에 포함된 메시지 블록들 중 γ 개의 메시지 블록들을 선택하고, 선택된 메시지 블록들의 크기를 α+1로 설정한다.
도 4는 제i대각 행렬 그룹에 포함된 메시지 블록들 중 γ 개의 메시지 블록들을 선택하는 방법을 도시한 흐름도이다.
S410 단계에서, 컨트롤러(120)는 제i대각 행렬 그룹에 포함된 메시지 블록들을 2개의 순서그룹으로 나눈다. 여기서, 제i대각 행렬 그룹의 제1순서그룹에 포함된 메시지 블록들은 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이고, 제2순서그룹에 포함된 메시지 블록들은 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들이다. 여기서, n은 1 이상의 정수이다. 각 대각 행렬에 포함된 메시지 블록들의 순서는 제i+1대각 행렬 그룹에 포함된 메시지 블록들의 순서가 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지고, 동일한 대각 행렬에 포함된 메시지 블록들은 높은 행에 위치한 메시지 블록들이 높은 순서를 가지도록 정해진다. 예를 들어, 구성 부호의 개수(k)가 6인 경우, 제1대각 행렬 그룹(G1)은 제2대각 행렬에 포함된 메시지 블록 B1,2, B2,3, B3,4, B4,5, B5,6 및 제6대각 행렬에 포함된 메시지 블록 B1,6의 순으로 높은 순서를 가지도록 정해진다. 이에 따라, 구성 부호의 개수(k)가 6이고, i가 1인 경우, 제1대각 행렬 그룹(G1)의 메시지 블록들 중 1, 3, 5번째 메시지 블록들이 제1순서그룹에 포함되고, 2, 4, 5번째 메시지 블록들이 제2순서그룹에 포함되며, i가 2인 경우, 제2대각 행렬 그룹(G2)의 메시지 블록들 중 1, 2, 4, 6번째 메시지 블록들이 제1순서그룹에 포함되고, 3, 5번째 메시지 블록들이 제2순서그룹에 포함된다. 즉, 제1대각 행렬 그룹(G1)의 제1순서그룹에 포함된 메시지 블록들은 메시지 블록들 B1,2, B3,4, B5,6이고, 제2순서그룹에 포함된 메시지 블록들은 메시지 블록들 B2,3, B4,5, B1,6이며, 제2대각 행렬 그룹(G2)의 제1순서그룹에 포함된 메시지 블록들은 메시지 블록들 B1,3, B2,4, B1,5, B2,6이고, 제2순서그룹에 포함된 메시지 블록들은 메시지 블록들 B3,5, B4,6이다.
S420 단계에서, 컨트롤러(120)는 제1, 2순서그룹에 포함된 메시지 블록들 중 γ 개의 메시지 블록들을 선택하되, 제1순서그룹에 포함된 메시지 블록들을 제2순서그룹에 포함된 메시지 블록들보다 먼저 선택한다.
도 3 및 4를 참조하여 설명한 메시지 매트릭스(MM)의 상부 삼각 매트릭스(A)에 포함된 각 메시지 블록들(Bi,j)의 크기를 설정하는 방법을 종합하면, 제i대각 행렬 그룹의 순서대로 메시지 블록들을 선정함으로써, β개의 메시지 블록들을 선택하되, 상기 제i대각 행렬 그룹에서 메시지 블록들을 선정하는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들을 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선정하고, 상기 k가 짝수이고, β가 하기 수학식 4를 만족하면, 상기 제(k/2)대각 행렬 그룹에서 메시지 블록들을 선정하되, γ개의 메시지 블록들을 선정함을 알 수 있다.
도 5는 메시지 매트릭스(MM)의 제로 패딩 블록 및 하부 삼각 매트릭스(B)에 포함된 각 메시지 블록들(Bi,j)의 크기를 설정하는 방법을 도시한 흐름도이다.
S510 단계에서, 컨트롤러(120)는 제i제로 패딩 블록(Bi,i)의 크기(nB)를 제i구성 부호의 패리티 블록(Ri)과 동일하게 설정한다.
S520 단계에서, 컨트롤러(120)는 하부 삼각 매트릭스(B)에 포함된 각 메시지 블록들(Bi,j)의 크기(nB)를 하부 삼각 매트릭스(B)에 포함된 각 메시지 블록들(Bi,j)에 대응하는 상부 삼각 매트릭스(A)에 포함된 각 메시지 블록들(Bj,i)과 동일하게 설정한다.
상기와 같은 매트릭스는 메시지 블록의 크기(nB)가 α+1인 메시지 블록을 효과적으로 배치함으로써 각 구성 부호의 길이 차이가 최소이다. 그에 따라, 대칭 블록 단위 연접 비씨에이치 부호(SBC-BCH)의 오류 정정 성능이 개선된다.
또한, 제로 패딩 블록(Bi,i)의 크기(nB)를 제i구성 부호의 패리티 블록(Ri)과 동일하게 설정함으로써, CDA(Collaborative Decoding Algorithm)을 활용하여 코드워드를 디코딩하는 경우 발생할 수 있는 겹침 문제가 개선되고, 오류 마루도 개선할 수 있다. 한편, 제로 패딩 블록을 활용하지 않을 수도 있으며, 제로 패딩 블록을 활용하는 경우에도 제로 패딩 블록은 사전 약속된 데이터에 해당하므로 제로 패딩 블록에 대한 기록 및 전송이 실제로 이뤄지는 것은 아니다.
도 6은 본 발명의 일실시예에 따른 메모리 시스템의 인코딩 동작 방법에 대한 흐름도이다.
S601 단계에서, 컨트롤러(120)는 상기 호스트(100)로부터 메시지를 수신한다.
S603 단계에서, 컨트롤러(120)는 상기 메시지를 설계된 코드에 따라 복수의 메시지 블록으로 분할한다.
S605a 단계에서, 컨트롤러(120)는 상기 복수의 메시지 블록을 이용하여 제1삼각 매트릭스를 생성한다. 여기서 제1삼각 매트릭스는 상부 삼각 매트릭스(A) 또는 하부 삼각 매트릭스(B)이다.
S605b 단계에서, 컨트롤러(120)는 상기 복수의 메시지 블록을 이용하여 제2삼각 매트릭스를 생성한다. 여기서, 제2삼각 매트릭스는 제1삼각 매트릭스와 대칭되는 구조이다. 즉, 제1삼각 매트릭스가 상부 삼각 매트릭스(A)인 경우, 제2삼각 매트릭스는 하부 삼각 매트릭스(B)이다. 상기 제1삼각 매트릭스 및 제2삼각 매트릭스는 동시에 생성되거나, 또는, 제1삼각 매트릭스 생성 후, 제2삼각 매트릭스가 생성되거나, 또는 상기 제2삼각 매트릭스 생성 후, 상기 제1삼각 매트릭스가 생성될 수 있다.
S607 단계에서, 상기 제1삼각 매트릭스 및 상기 제2삼각 매트릭스를 결합하여 하나의 메시지 매트릭스(MM)를 생성한다. 상기 메시지 매트릭스(MM)는 반대칭구조(ANTI-SYMMETRIC) 또는 쇼트닝(shortening) 구조로 나타낼 수 있다. 상기 반대칭구조로 나타내는 상기 메시지 매트릭스(MM)는 상기 제1삼각 매트릭스, 제2삼각 매트릭스 및 상기 제1 및 2삼각 매트릭스를 결합시킬 때, 접하는 부분인 대각선 방향에 제로 비트로 패딩된 복수의 제로 패딩 블록을 포함하고 있다. 반면에, 쇼트닝 구조를 갖는 상기 메시지 매트릭스는 상기 제1삼각 매트릭스 및 상기 제2삼각 매트릭스만 포함하고 있다. 즉, 쇼트닝 구조를 갖는 상기 메시지 매트릭스(MM)는 상기 제1삼각 매트릭스 및 상기 제2삼각 매트릭스를 결합시킬 때, 대각선 방향에 제로 비트로 패딩된 블록이 제거된 매트릭스이다. 예컨대, 본 발명의 실시예에서는 설명의 편의를 위해, 반대칭 구조를 갖는 상기 메시지 매트릭스(MM)를 통해 설명하기로 한다.
S609 단계에서, 상기 컨트롤러(120)는 상기 메시지 매트릭스(MM)의 각 행에 포함된 메시지 블록들을 인코딩하여, 상기 메시지 매트릭스(MM)의 각 행에 대응하는 패리티 블록을 생성한다. 상기 메시지 매트릭스(MM)의 각 행에 포함된 메시지 블록들 및 상기 메시지 매트릭스(MM)의 각 행에 대응하여 생성된 패리티 블록은 각 행에 대해 구성 부호를 형성한다. 상기 메시지 매트릭스(MM)의 각 행에 대응하여 생성된 패리티 블록들은 도 2의 패리티 매트릭스(PM)를 형성한다.
S611 단계에서, 상기 컨트롤러(120)는 상기 인코딩된 상기 메시지 매트릭스에서 상기 제1삼각 매트릭스에 포함된 상기 복수의 메시지 블록 및 복수의 패리티 블록을 추출함으로써 인코딩을 완료한다. 상기 메시지 매트릭스에서 상기 제1삼각 매트릭스에 포함된 복수의 메시지 블록 및 복수의 패리티 블록을 추출하여 인코디드 메시지(encoded message)를 생성하는 이유는 상기 제2삼각 매트릭스에 포함된 복수의 메시지 블록은 상기 제1삼각 매트릭스와 대칭된 구조이기 때문이다.
도 7은 본 발명의 일실시예에 따른 메모리 시스템의 디코딩 동작 방법에 대한 흐름도이다.
S701 단계에서, 상기 호스트(100)로부터 커맨드 및 메시지를 전달받은 상기 컨트롤러(120)는 상기 메모리 장치(130)로부터 인코디드 메시지를 리드한다.
S703 단계에서, 상기 컨트롤러(120)는 상기 인코디드 메시지를 설계된 매트릭스에 따라 복수의 인코디드 메시지 블록 및 복수의 패리티 블록으로 분할할 수 있다.
S705a 단계에서, 상기 컨트롤러(120)는 상기 복수의 인코디드 메시지 블록으로 제1삼각 매트릭스를 생성한다.
S705b 단계에서, 상기 복수의 인코디드 메시지 블록을 이용하여 제2삼각 매트릭스를 생성한다. 상기 제2삼각 매트릭스는 상기 제1삼각 매트릭스와 대칭되는 구조이다. 상기 제1삼각 매트릭스 및 제2삼각 매트릭스는 동시에 생성되거나, 또는, 제1삼각 매트릭스 생성 후, 제2삼각 매트릭스가 생성되거나, 또는 상기 제2삼각 매트릭스 생성 후, 상기 제1삼각 매트릭스가 생성될 수 있다.
S707 단계에서, 상기 제1삼각 매트릭스 및 상기 제2삼각 매트릭스를 이용하여 하나의 메시지 매트릭스를 형성한다. 상기 메시지 매트릭스는 반대칭(anti-symmetric) 또는 쇼트닝(shortening) 구조로 나타낼 수 있다. 상기 반대칭 구조 또는 쇼트닝 구조를 갖는 메시지 매트릭스에 대해 상기 S607에서 설명하였기에, 이에 관련된 설명은 생략하기로 한다. 본 발명의 일실시예에서는 설명의 편의를 위해, 상기 반대칭 구조를 갖는 메시지 매트릭스로 설명하기로 한다.
S708 단계에서, 상기 복수의 패리티 블록을 이용하여 패리티 매트릭스(PM)를 생성한다.
S709 단계에서, 상기 컨트롤러(120)는 상기 메시지 매트릭스(MM) 및 패리티 매트릭스(PM)의 각 행마다 디코딩을 수행하여 디코디드 메시지를 생성한다. 즉, 상기 컨트롤러(120)는 상기 메시지 매트릭스(MM)의 각 행에 포함된 상기 복수의 인코디드 메시지 블록 및 상기 패리티 매트릭스(PM)의 각 행의 상기 패리티 블록에 대하여 디코딩을 수행하여 상기 디코디드 메시지를 생성할 수 있다.
도 8는 본 발명의 일실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 일실시예에 따른 메모리 컨트롤러(15000) 및 플래시 메모리(16000)를 포함하는 전자 장치(10000)의 블록도이다.
도 8를 참조하면, 이동 전화기(cellular phone), 스마트 폰(smart phone), 또는 태블릿(tablet) PC와 같은 전자 장치(10000)는 예를 들어 플래시 메모리 장치로 구현될 수 있는 플래시 메모리(16000)와, 플래시 메모리(16000)의 동작을 제어할 수 있는 메모리 컨트롤러(15000)를 포함할 수 있다.
플래시 메모리(16000)는 반도체 메모리 시스템(200)에 대응된다. 플래시 메모리(16000)는 랜덤 데이터를 저장 할 수 있다.
메모리 컨트롤러(15000)는 전자 장치의 전반적인 동작을 제어하는 프로세서(11000)에 의하여 제어될 수 있다.
플래시 메모리(16000)에 저장된 데이터는 프로세서(11000)의 제어에 따라 동작하는 메모리 컨트롤러(15000)의 제어에 따라 디스플레이(13000)를 통하여 디스플레이될 수 있다.
무선 송수신기(12000)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예를 들어, 무선 송수신기(12000)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(11000)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(11000)는 무선 송수신기(12000)로부터 출력된 신호를 처리하고, 처리된 신호를 메모리 컨트롤러(15000)를 통하여 플래시 메모리(16000)에 저장하거나 또는 디스플레이(13000)를 통하여 디스플레이할 수 있다.
무선 송수신기(12000)는 프로세서(11000)로부터 출력된 신호를 무선 신호로 변환하고, 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(14000)는 프로세서(11000)의 동작을 제어하기 위한 제어 신호 또는 프로세서(11000)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(11000)는 플래시 메모리(16000)로부터 출력된 데이터, 무선 송수신기(12000)로부터 출력된 무선 신호, 또는 입력 장치(14000)로부터 출력된 데이터가 디스플레이(13000)를 통하여 디스플레이될 수 있도록 디스플레이(13000)를 제어할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 일실시예에 따른 메모리 컨트롤러(24000) 및 플래시 메모리(25000)를 포함하는 전자 장치(20000)의 블록도이다.
도 9를 참조하면, PC(personal computer), 태블릿 컴퓨터(tablet computer), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(20000)는 플래시 메모리 장치와 같은 플래시 메모리(25000)와, 플래시 메모리(25000)의 동작을 제어할 수 있는 메모리 컨트롤러(24000)를 포함할 수 있다.
전자 장치(20000)는 전자 장치(20000)의 전반적인 동작을 제어하기 위한 프로세서(21000)를 포함할 수 있다. 메모리 컨트롤러(24000)는 프로세서(21000)에 의하여 제어될 수 있다.
프로세서(21000)는 입력 장치(22000)에 의하여 발생한 입력 신호에 따라 반도체 메모리 시스템에 저장된 데이터를 디스플레이를 통하여 디스플레이할 수 있다. 예들 들어, 입력 장치(22000)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 또 다른 일실시예에 따른 메모리 컨트롤러(32000) 및 반도체 메모리 시스템(34000)를 포함하는 전자 장치(30000)의 블록도이다.
도 10을 참조하면, 전자 장치(30000)는 카드 인터페이스(31000), 메모리 컨트롤러(32000), 및 반도체 메모리 시스템(34000), 예들 들어 플래시 메모리 장치를 포함할 수 있다.
전자 장치(30000)는 카드 인터페이스(31000)를 통하여 호스트(HOST)와 데이터를 주거나 받을 수 있다. 일실시예에 따라, 카드 인터페이스(31000)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(31000)는 전자 장치(30000)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 메모리 컨트롤러(32000) 사이에서 데이터 교환을 인터페이스할 수 있다.
메모리 컨트롤러(32000)는 전자 장치(30000)의 전반적인 동작을 제어하며, 카드 인터페이스(31000)와 반도체 메모리 시스템(34000) 사이에서 데이터의 교환을 제어할 수 있다. 또한 메모리 컨트롤러(32000)의 버퍼 메모리(325)는 카드 인터페이스(31000)와 반도체 메모리 시스템(34000) 사이에서 주고받는 데이터를 버퍼링할 수 있다.
메모리 컨트롤러(32000)는 데이터 버스(DATA) 및 어드레스 버스(ADDRESS)를 통하여 카드 인터페이스(31000)와 반도체 메모리 시스템(34000)와 접속될 수 있다. 일실시예에 따라 메모리 컨트롤러(32000)는 카드 인터페이스(31000)로부터 리드 또는 라이트하고자 하는 데이터의 어드레스를 어드레스 버스(ADDRESS)를 통하여 수신하고 이를 반도체 메모리 시스템(34000)로 전송할 수 있다.
또한, 메모리 컨트롤러(32000)는 카드 인터페이스(31000) 또는 반도체 메모리 시스템(34000) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 또는 라이트하고자 하는 데이터를 수신하거나 전송할 수 있다.
도 10의 전자 장치(30000)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(31000)와 메모리 컨트롤러(32000)를 통하여 반도체 메모리 시스템(34000)에 저장된 데이터를 주거나 받을 수 있다.
본 발명의 상세한 설명에서는 구체적인 일실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 수 있다.
Claims (15)
- 컨트롤러의 동작 방법에 있어서,
상기 컨트롤러에 의해 k×k 정방형 메시지 매트릭스를 생성하는 제1단계; 및
상기 컨트롤러에 의해 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하는 제2단계;
를 포함하고,
상기 정방형 메시지 매트릭스는
대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며,
상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하고,
상기 α, β, N은 하기 수학식 1 및 2의 관계를 가지며,
상기 β개의 메시지 블록들은 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서대로 선택되며,
상기 제i대각 행렬 그룹은 제i+1대각 행렬 및 제k+1-i대각 행렬을 포함하고,
상기 i은 하기 수학식 3의 관계를 가지는
컨트롤러의 동작 방법.
[수학식 1]
[수학식 2]
[수학식 3]
M은 호스트로부터 입력되는 메시지의 크기, N은 상기 상부 삼각 매트릭스를 구성하는 메시지 블록들의 개수이고, i 및 k는 정수임.
- 삭제
- 제1항에 있어서,
상기 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서는, 상기 제i+1대각 행렬에 포함된 메시지 블록들은 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지되, 동일한 대각 행렬에 포함된 메시지 블록들의 순서는 높은 행에 위치한 메시지 블록들이 높은 순서를 가지며,
상기 β개의 메시지 블록들이 상기 제i대각 행렬 그룹에서 선택되는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선택되는-n은 1 이상의 정수-
컨트롤러의 동작 방법.
- 제3항에 있어서,
상기 k가 짝수이고, β가 하기 수학식 4를 만족하면,
상기 β개의 메시지 블록들 중 γ개의 메시지 블록들이 상기 제(k/2)대각 행렬 그룹에서 선택되고,
상기 γ는 하기 수학식 5의 관계를 가지는
컨트롤러의 동작 방법.
[수학식 4]
[수학식 5]
- 제1항에 있어서,
상기 제로 패딩 블록의 크기는 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 생성되는 패리티 부호의 크기와 동일한
컨트롤러의 동작 방법.
- 컨트롤러에 있어서,
k×k 정방형 메시지 매트릭스를 생성하고, 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하되,
상기 정방형 메시지 매트릭스는
대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며,
상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하고,
상기 α, β, N은 하기 수학식 1 및 2의 관계를 가지며,
상기 β개의 메시지 블록들은 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서대로 선택되며,
상기 제i대각 행렬 그룹은 제i+1대각 행렬 및 제k+1-i대각 행렬을 포함하고,
상기 i은 하기 수학식 3의 관계를 가지는
컨트롤러.
[수학식 1]
[수학식 2]
[수학식 3]
M은 호스트로부터 입력되는 메시지의 크기, N은 상기 상부 삼각 매트릭스를 구성하는 메시지 블록들의 개수이고, i 및 k는 정수임.
- 삭제
- 제6항에 있어서,
상기 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서는, 상기 제i+1대각 행렬에 포함된 메시지 블록들은 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지되, 동일한 대각 행렬에 포함된 메시지 블록들의 순서는 높은 행에 위치한 메시지 블록들이 높은 순서를 가지며,
상기 β개의 메시지 블록들이 상기 제i대각 행렬 그룹에서 선택되는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선택되는-n은 1 이상의 정수-
컨트롤러.
- 제8항에 있어서,
상기 k가 짝수이고, β가 하기 수학식 4를 만족하면,
상기 β개의 메시지 블록들 중 γ개의 메시지 블록들이 상기 제(k/2)대각 행렬 그룹에서 선택되고,
상기 γ는 하기 수학식 5의 관계를 가지는
컨트롤러.
[수학식 4]
[수학식 5]
- 제6항에 있어서,
상기 제로 패딩 블록의 크기는 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 생성되는 패리티 부호의 크기와 동일한
컨트롤러.
- 컨트롤러 및 메모리 장치를 포함하는 반도체 메모리 시스템에 있어서,
k×k 정방형 메시지 매트릭스를 생성하고, 상기 생성된 메시지 매트릭스의 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 인코디드 메시지를 생성하는 컨트롤러; 및
상기 인코디드 메시지를 저장하는 메모리 장치를 포함하고,
상기 정방형 메시지 매트릭스는
대각선 방향에 포함된 제로 패딩 블록을 기준으로 대칭하는 상부 및 하부 삼각 매트릭스들을 포함하며,
상기 상부 삼각 매트릭스는 (α+1)의 크기를 가지는 β개의 메시지 블록들과, α의 크기를 가지는 (N-β)개의 메시지 블록들을 포함하고,
상기 α, β, N은 하기 수학식 1 및 2의 관계를 가지며,
상기 β개의 메시지 블록들은 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서대로 선택되며,
상기 제i대각 행렬 그룹은 제i+1대각 행렬 및 제k+1-i대각 행렬을 포함하고,
상기 i은 하기 수학식 3의 관계를 가지는
반도체 메모리 시스템.
[수학식 1]
[수학식 2]
[수학식 3]
M은 호스트로부터 입력되는 메시지의 크기, N은 상기 상부 삼각 매트릭스를 구성하는 메시지 블록들의 개수이고, i 및 k는 정수임.
- 삭제
- 제11항에 있어서,
상기 제i대각 행렬 그룹에 포함된 메시지 블록들의 순서는, 상기 제i+1대각 행렬에 포함된 메시지 블록들은 상기 제k+1-i대각 행렬에 포함된 메시지 블록들보다 높은 순서를 가지되, 동일한 대각 행렬에 포함된 메시지 블록들의 순서는 높은 행에 위치한 메시지 블록들이 높은 순서를 가지며,
상기 β개의 메시지 블록들이 상기 제i대각 행렬 그룹에서 선택되는 경우에, 상기 제i대각 행렬 그룹에 포함된 메시지 블록들 중 2*(n-1)*i+1번째 내지 (2n-1)*i번째 메시지 블록들이 (2n-1)*i+1번째 내지 2n*i번째 메시지 블록들보다 먼저 선택되는-n은 1 이상의 정수-
반도체 메모리 시스템.
- 제13항에 있어서,
상기 k가 짝수이고, β가 하기 수학식 4를 만족하면,
상기 β개의 메시지 블록들 중 γ개의 메시지 블록들이 상기 제(k/2)대각 행렬 그룹에서 선택되고,
상기 γ는 하기 수학식 5의 관계를 가지는
반도체 메모리 시스템.
[수학식 4]
[수학식 5]
- 제11항에 있어서,
상기 제로 패딩 블록의 크기는 각 행마다 비씨에이치 부호(BCH)를 이용하여 인코딩함으로써 생성되는 패리티 부호의 크기와 동일한
반도체 메모리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160092551A KR102666852B1 (ko) | 2016-07-21 | 2016-07-21 | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 |
US15/602,255 US10484014B2 (en) | 2016-07-21 | 2017-05-23 | Controller, semiconductor memory system and operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160092551A KR102666852B1 (ko) | 2016-07-21 | 2016-07-21 | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180010447A KR20180010447A (ko) | 2018-01-31 |
KR102666852B1 true KR102666852B1 (ko) | 2024-05-20 |
Family
ID=60988172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160092551A KR102666852B1 (ko) | 2016-07-21 | 2016-07-21 | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10484014B2 (ko) |
KR (1) | KR102666852B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387254B2 (en) * | 2017-10-12 | 2019-08-20 | Samsung Electronics Co, Ltd. | Bose-chaudhuri-hocquenchem (BCH) encoding and decoding tailored for redundant array of inexpensive disks (RAID) |
KR101940141B1 (ko) * | 2018-10-30 | 2019-01-18 | 제주대학교 산학협력단 | 하이브리드 타입의 가돌리늄 저온도차 발전기 |
KR101940145B1 (ko) * | 2018-10-30 | 2019-01-18 | 제주대학교 산학협력단 | 실린더 타입의 회전형 마찰전기시스템과 연계한 가돌리늄 저온도차 발전기 |
US11016844B2 (en) * | 2019-03-15 | 2021-05-25 | Toshiba Memory Corporation | Error correction code structure |
US11409601B1 (en) * | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100594818B1 (ko) * | 2004-04-13 | 2006-07-03 | 한국전자통신연구원 | 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법 |
KR20090106620A (ko) * | 2005-05-13 | 2009-10-09 | 닛본 덴끼 가부시끼가이샤 | Ldpc 부호화 방식에 의한 인코더 및 디코더 |
US7904793B2 (en) * | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US9667383B2 (en) | 2009-01-22 | 2017-05-30 | Lg Electronics Inc. | Apparatus for transmitting and receiving a signal and method of transmitting and receiving a signal |
US8495465B1 (en) * | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
KR101751497B1 (ko) * | 2010-06-11 | 2017-06-27 | 삼성전자주식회사 | 행렬 네트워크 코딩을 사용하는 장치 및 방법 |
US8788922B2 (en) * | 2011-02-28 | 2014-07-22 | Apple Inc | Error correction codes for incremental redundancy |
US9166626B2 (en) * | 2011-11-18 | 2015-10-20 | Korea Advanced Institute Of Science And Technology | Encoding, decoding, and multi-stage decoding circuits for concatenated BCH, and error correction circuit of flash memory device using the same |
US9813080B1 (en) * | 2013-03-05 | 2017-11-07 | Microsemi Solutions (U.S.), Inc. | Layer specific LDPC decoder |
US9397701B1 (en) * | 2013-03-11 | 2016-07-19 | Microsemi Storage Solutions (Us), Inc. | System and method for lifetime specific LDPC decoding |
KR101496052B1 (ko) | 2013-11-28 | 2015-02-25 | 한국과학기술원 | 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로 |
KR101948952B1 (ko) * | 2014-01-09 | 2019-02-15 | 에스케이하이닉스 주식회사 | 인코딩 장치 및 메시지 매트릭스 생성 방법 |
KR20150084560A (ko) | 2014-01-14 | 2015-07-22 | 에스케이하이닉스 주식회사 | 인코딩 장치, 디코딩 장치 및 그 동작 방법 |
US9692451B2 (en) * | 2014-09-30 | 2017-06-27 | Avago Technologies General Ip (Singapore) Pte. Ltd | Non-binary low density parity check (NB-LDPC) codes for communication systems |
US9406377B2 (en) * | 2014-12-08 | 2016-08-02 | Sandisk Technologies Llc | Rewritable multibit non-volatile memory with soft decode optimization |
KR102606866B1 (ko) * | 2016-03-16 | 2023-11-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
-
2016
- 2016-07-21 KR KR1020160092551A patent/KR102666852B1/ko active IP Right Grant
-
2017
- 2017-05-23 US US15/602,255 patent/US10484014B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20180010447A (ko) | 2018-01-31 |
US10484014B2 (en) | 2019-11-19 |
US20180026661A1 (en) | 2018-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108062258B (zh) | 用于错误恢复的循环交错的xor阵列 | |
KR101739878B1 (ko) | 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템 | |
KR102275717B1 (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
CN108073467B (zh) | 具有硬信道信息的位翻转ldpc解码算法 | |
KR102529666B1 (ko) | LDPC 코드(Low Density Parity Check Code) 부호를 위한 복호 방법 및 장치 | |
US11050438B2 (en) | Memory controller | |
KR102666852B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 | |
CN109671459B (zh) | 存储器系统及其操作方法 | |
US11115064B2 (en) | Error correction decoder and memory system having the same | |
CN108268337B (zh) | 于记忆装置中进行数据管理的方法、记忆装置及其控制器 | |
US10985780B2 (en) | Error correction circuit, and memory controller having the error correction circuit and memory system having the memory controller | |
KR102606866B1 (ko) | 메모리 시스템 및 그의 동작 방법 | |
CN107728932B (zh) | 存储器系统及其操作方法 | |
KR102706981B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
KR20170012006A (ko) | 메모리 컨트롤러와 이를 포함하는 메모리 시스템 | |
CN106158046B (zh) | 用于turbo乘积码的误校正避免 | |
US20100115225A1 (en) | Memory Device and Memory System Including the Same | |
CN112687323A (zh) | 具有用于解码的错误减少方案的存储器系统及其操作方法 | |
KR20210152738A (ko) | 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법 | |
CN108877869B (zh) | 控制器及其操作方法 | |
KR20210147686A (ko) | 오류 정정 회로 및 오류 정정 인코딩 방법 | |
KR102513782B1 (ko) | 컨트롤러 및 그것의 동작 방법 | |
KR20180086687A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20180058327A (ko) | 컨트롤러, 메모리 시스템 및 그의 동작 방법 | |
KR102714110B1 (ko) | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |