KR20160075001A - 플래시 메모리 시스템 동작 방법 - Google Patents
플래시 메모리 시스템 동작 방법 Download PDFInfo
- Publication number
- KR20160075001A KR20160075001A KR1020140184378A KR20140184378A KR20160075001A KR 20160075001 A KR20160075001 A KR 20160075001A KR 1020140184378 A KR1020140184378 A KR 1020140184378A KR 20140184378 A KR20140184378 A KR 20140184378A KR 20160075001 A KR20160075001 A KR 20160075001A
- Authority
- KR
- South Korea
- Prior art keywords
- bits
- error
- block
- code
- message
- Prior art date
Links
Images
Classifications
-
- 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/1068—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 sector programmable memories, e.g. flash disk
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
-
- 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/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- 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/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- 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/12005—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details comprising voltage or current generators
-
- 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
-
- 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/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50004—Marginal testing, e.g. race, voltage or current testing of threshold voltage
-
- 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
- H03M13/2909—Product 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
- H03M13/2927—Decoding strategies
-
- 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/2957—Turbo codes and decoding
- H03M13/296—Particular turbo code structure
- H03M13/2963—Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative 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/65—Purpose and implementation aspects
- H03M13/6577—Representation or format of variables, register sizes or word-lengths and quantization
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/14—Dummy cell management; Sense reference voltage generators
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/451—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
- H03M13/453—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD] wherein the candidate code words are obtained by an algebraic decoder, e.g. Chase decoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Mathematical Physics (AREA)
- Read Only Memory (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
Abstract
본 기술은 플래시 메모리 시스템 동작 방법에 있어서, 블록 단위 연접 BCH(BLOCK-WISE CONCATENATED BCH, BC-BCH) 방식에 의해 행 부호와 열 부호로 구성되는 메시지 블록단위로 부호화되어 메모리 장치에 저장된 데이터에 대하여 경판정 복호를 수행하는 제1단계 상기 경판정 복호를 실패한 경우, 상기 데이터의 메시지 블록들 중에서 오류를 포함하는 메시지 블록에 대해 준거 전압을 산출하는 제2단계 및 상기 산출된 준거 전압을 이용하여 연판정 복호를 수행하는 제3단계를 포함할 수 있다.
Description
본 발명은 플래시 메모리 시스템에 관한 것으로, 보다 구체적으로는 연접 BCH(CONCATENATED BOSE-CHADHURI-HOCQUENGHEM) 부호를 이용하여 오류 정정을 수행하는 플래시 메모리 시스템동작 방법에 관한 것이다.
근래에 들어 많은 전자 제품에서 사용되는 프로세서 및 램 등의 주기억장치의 스피드가 빨라짐에 따라서 보조 기억 장치의 속도에 의해서 전자 제품의 연산 처리 속도가 결정되는 병목 현상이 심화되고 있다. 기존의 보조 기억 장치로 주로 사용되던 것은 HDD(Hard Disk Drive)와 같은 자기를 저장하는 장치, CD나 DVD와 같은 광디스크 장치(ODD, Optic Disc Drive)들이 사용되었다. 그 중, 광디스크 장치는 데이터 입출력이 자유롭지 않으며 데이터 출력의 속도 또한 극히 느렸다. 또한, 자기를 저장하는 장치는 광디스크 장치에 비해서 속도가 빠르긴 하나 여전히 병목 현상을 발생시킬 뿐만 아니라 충격에 의해서 쉽게 데이터가 훼손되거나 소실될 우려가 있었다. 이에, 기존의MOSFET 구조를 응용한 반도체 소자로 구성된 SSD(Solid State Drive)가 부각되고 있다. SSD는 HDD에 비해 작업 처리 속도가 빠르고, 데이터가 저장된 소자로 임의접근(Random Access)을 해 탐색시간 없이 고속으로 데이터를 입 출력할 수 있다. 또한, 기계적 지연이나 실패율이 현저히 작으며 외부의 충격으로 데이터가 손상되지 않는 점도 장점이다. 또한, SSD는 반도체 소자에서 소모되는 전력이 작고 별도의 기계 장치의 구동이 없어 저발열, 저소음 및 저전력 구동이 가능해 HDD에 비해 이를 포함하는 제품의 소형화, 경량화가 가능하다.
SSD로는 일반적으로 노어(NOR) 방식으로 구성되는 노어 플래시 메모리 및 낸드(NAND) 방식으로 구성되는 낸드 플래시 메모리가 있다. 그 중, 낸드 플래시 메모리는 직렬연결 방식으로 회로의 집적도가 높아 대용량으로 만들기가 쉬우며, 읽기/쓰기 속도가 빠르다. 또한 데이터 저장능력이 뛰어나고 대용량으로 만들기 용이한 특징 때문에, 대부분의 대용량 SSD에서 낸드(NAND) 플래시 메모리를 사용하고 있다.
그런데, 낸드 플래시 메모리 소자는 미세 공정의 사용과 셀 당 저장 비트 수의 증가로 미세화, 다치화 되어 가는 추세이다. 이러한 저장 밀도의 증가는 소자의 신뢰성 악화와 수명 단축 등의 부작용을 증대시켰다.
도 1을 참조하면, 한 셀 당 저장하는 비트의 수가 증가함에 따라, 읽기 동작 시 레벨 간 간섭에 의한 오류가 발생할 확률이 증가하며, 읽기/쓰기 동작이 반복 될수록 오류 발생 확률이 크게 증가하여 제품의 신뢰도가 떨어지는 문제가 발생한다. 그러므로 저 전력 및 높은 처리량의 오류정정회로는 합리적인 가격과 안정적인 낸드 플래시 메모리를 설계하는데 필수적인 요소가 된다.
이러한 문제를 해결하기 위해 일반적으로 오류 정정부호를 사용하는데, 오류 정정부호는 오류의 탐지 및 오류의 정정을 위한 정보를 담은 여분의 비트들이 필요로 한다. 따라서 상기 여분 비트들을 저장하기 위해 셀의 여분 면적이 요구된다. 하지만, 저장 매체의 저장 용량을 최대화하기 위해서는 여분 비트를 저장하기 위해 필요한 셀의 면적은 최소화하므로, 여분 비트를 최소화 할 필요성이 있다.
또한, 저장 데이터 오류의 증가로, 오류 개수에 대해 지수적인 복잡도와 많은 여분 비트를 요하는 기존의 BCH 부호 및 RS(Reed-Solomon) 부호를 대체할 새로운 오류 정정 부호가 필요하다.
이를 대체할 블록 단위 연접 BCH(BLOCK-WISE CONCATENATED BCH, BC-BCH) 부호는 경판정 정보만을 활용하는 경우 우수한 오류 정정 성능을 가지고 있을 뿐만 아니라 구현상의 복잡도 또한 기존의 BCH 부호 복호기에 비해 낮은 특성을 갖는다. 하지만 블록 단위 연접 BCH 부호의 복호 성능을 높이기 위해서는 복호부에 연판정(Soft Decision) 정보가 필수적이다. 이를 위해, 경판정 정보의 양자화 레벨(Quantization level)을높여 연판정에 가까운 정보를 산출해야한다. 이를 위해, 오류가 발생한 페이지의 문턱전압을 바꾸어 페이지를 재리드하는 방법이 있지만, 이와 같은 방법은 높은 복잡도와 복호 지연 시간을 가지게 되어 효율적이지 않다.
따라서, 제한적으로 문턱전압을 읽는 환경에서 연판정 복호기의 오류율을 최대로 낮출 수 있는 최적의 준거전압을 설정해야 한다. 즉, 최적의 준거 접압을 설정하는 방식으로 양자화 레벨을 높여야 연판정 복호기의 오류율을 낮출 수 있다.
즉, 블록 단위 연접 BCH 부호가 경판정 복호를 실패하였을 때, 추가적으로 연판정 정보를 얻어 연판정 복호, 즉, 터보 블록 단위 연접 BCH(TURBO BLOCK-WISE CONCATENATED BCH, TURBO BC-BCH) 부호 복호를 수행할 때 복호 오류율을 가장 낮게 만들 수 있는 최적의 양자화 방법이 필요하다.
본 발명의 실시 예들은, 양자화 레벨을 높이기 위해 최적의 준거 전압을 설정하기 위한 플래시 메모리 시스템의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 플래시 메모리 시스템 동작 방법에 있어서, 블록 단위 연접 BCH(BLOCK-WISE CONCATENATED BCH, BC-BCH) 방식에 의해 행 부호와 열 부호로 구성되는 메시지 블록단위로 부호화되어 메모리 장치에 저장된 데이터에 대하여 경판정 복호를 수행하는 제1단계 상기 경판정 복호를 실패한 경우, 상기 데이터의 메시지 블록들 중에서 오류를 포함하는 메시지 블록에 대해 준거 전압을 산출하는 제2단계 및 상기 산출된 준거 전압을 이용하여 연판정 복호를 수행하는 제3단계를 포함할 수 있다.
본 발명에 따르면, 블록 단위 연접 BCH(BLOCK-WISE CONCATENATED BCH, TURBO BC-BCH) 부호 복호화 과정에서 경판정 복호 실패 후, 경판정 복호 결과를 활용해 오류 위치 및 오류 블록 수를 산출하고, 이를 바탕으로 연판정 복호 시 정정 가능한 오류 비트 수가 평균적으로 최대화되는 준거전압을 산출 및 이를 활용하여 최적의 양자화를 통해 연판정 복호를 수행할 수 있다.
도 1은 플래시 메모리에서 셀당 저장되는 비트수에 따른 문턱 전압의 분포를 도시한 도면.
도 2는 일반적인 플래시 메모리의 구조를 도시한 도면.
도 3a는 본 발명에 따른 블록 단위 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도.
도 3b는 본 발명에 따른 블록 단위 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도.
도 4는 본 발명에 따른 병렬 연접으로 구성된 형태의 블록 단위 연접 BCH 부호가 경판정 복호에 실패한 형태의 구조도.
도 5는 본 발명의 일실시예에 따른 블록 단위 블록 단위 연접 BCH를 포함하는 메모리 시스템의 동작 방법을 나타내는 흐름도.
도 6은 본 발명의 일실시예에 따른 이진 입력 가산 백색 가우시안 잡음(Binary input addictive white Gauussian noise, BI-AWGN)채널 대한 도면.
도 7(a), 도 7(b) 및 도 8은 본 발명의 일실시예에 따른 양자화 구간 변화에 따른 분석값 및 실험을 통해 산출된 오류율 결과를 나타낸 도면.
도 2는 일반적인 플래시 메모리의 구조를 도시한 도면.
도 3a는 본 발명에 따른 블록 단위 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도.
도 3b는 본 발명에 따른 블록 단위 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도.
도 4는 본 발명에 따른 병렬 연접으로 구성된 형태의 블록 단위 연접 BCH 부호가 경판정 복호에 실패한 형태의 구조도.
도 5는 본 발명의 일실시예에 따른 블록 단위 블록 단위 연접 BCH를 포함하는 메모리 시스템의 동작 방법을 나타내는 흐름도.
도 6은 본 발명의 일실시예에 따른 이진 입력 가산 백색 가우시안 잡음(Binary input addictive white Gauussian noise, BI-AWGN)채널 대한 도면.
도 7(a), 도 7(b) 및 도 8은 본 발명의 일실시예에 따른 양자화 구간 변화에 따른 분석값 및 실험을 통해 산출된 오류율 결과를 나타낸 도면.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다. 이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
일반적으로, 플래시 메모리 장치는 병렬로 연결된 다이(die)를 기본 구조로 가지고 있고, 다이는 한번에 지울(erase) 수 있는 단위인 메모리 블록으로 구성된다. 각 메모리 블록은 읽기/쓰기(read/write) 단위인 페이지(page)로 구성된다. 그러므로 오류 정정 부호는 읽기/쓰기 단위인 페이지 단위로 수행됨이 바람직하다. 페이지의 단위는 제조사마다 다르지만 일반적으로 SLC 소자에서는 1KB 페이지를, MLC 소자에서는 4KB 또는 8KB 페이지를 많이 사용한다.
플래시 메모리 장치는 저장 장치로서 높은 신뢰성을 요구하므로, 오류 정정부호를 적용했을 때 매우 낮은 오류율 영역에서 동작해야 한다. 또한, 빠른 읽기 및 쓰기 속도를 위해 부호 및 복호기의 지연 시간과 복잡도가 제한된다. 동시에, 저장 공간의 효율을 위해서 데이터 이외의 여분 공간이 제한되므로, 전체 저장 데이터 대비 패리티 비트의 비율이 제한된다. 따라서 플래시 메모리 장치에 적합한 부호는 높은 부호율(예를 들어, 0.9 이상)을 가지면서, 오류 마루(error floor)가 없거나, 오류 마루가 있더라도 이를 해결할 수 있는 방법이 충분히 짧은 지연 시간과 낮은 복잡도를 바탕으로 제시되어야 한다.
본 발명에서 사용하는 블록 단위 연접 BCH 부호는 블록 단위로 구성된다. 기존 BCH 부호보다 오류 정정 성능을 높이기 위해서 블록 단위 연접 BCH 부호를 블록 단위가 아닌 비트 단위로 사용한다면, 블록 단위 연접 BCH 부호는 다수의 짧은 길이의 BCH 구성 부호(constituent code)로 구성된다.
짧은 길이의 구성 부호는 플래시 메모리 장치에서 요구되는 높은 부호율 때문에 매우 작은 오류 정정 능력(1 비트 또는 2 비트 정정)을 가진다. 이로 인해 경판정 복호(hard decision)만 가능한 플래시 메모리 장치에서, 비트 단위 블록 단위 연접 BCH 부호에는 정정에 실패하는 구성 부호가 쉽게 생겨, 상기 비트 단위 블록 단위 연접 BCH 부호는 낮은 성능을 가지게 된다. 이때, 추가 정보를 이용하면 성능을 향상시킬 수 있지만, 이를 모든 복호에 대해서 필요로 하게 되기 때문에 높은 복잡도와 상대적으로 긴 지연 시간 문제를 가지게 된다.
본 발명에서 사용하는 블록 단위 연접 BCH 부호는 플래시 메모리 장치에 적합한 특징을 가진다. 블록 단위 연접 BCH 부호는 소수의 긴 길이의 BCH 구성 부호로 구성된다. 긴 길이의 구성 부호는 플래시 메모리 장치에서 요구되는 높은 부호율에서도 충분한 오류 정정 능력을 가진다. 일례로, 각각 10 비트와 14 비트의 오류를 고칠 수 있는 구성 부호로 이루질 수 있다. 이로 인해 경판정 복호(hard decision)만 가능한 플래시 메모리 장치에서도, 블록 단위 연접 BCH 부호에는 오류 정정에 실패하는 구성 부호가 낮은 확률로 생겨, 비트 단위 블록 단위 연접 BCH 부호보다 높은 성능을 가지게 된다.
한편, 블록 단위 연접BCH 부호는 블록 단위로 구성되어 있기 때문에 오류 블록(erroneous block)에 의해 복호에 실패할 수 있다. 예를 들어, 오류 블록의 하계(lower bound)에 의해 오류 마루(error floor)가 발생할 수 있다. 오류 마루는 주로 소수의 오류 블록에 의해 발생한다.
이하, 본 발명에서 실시하고자 하는 구체적인 기술내용에 대해 첨부도면을 참조하여 상세하게 설명하기로 한다.
도 2는 일반적인 플래시 메모리의 구조를 도시한 도면이다. 이하, 도 2를 참조하여 플래시 메모리의 구조, 오류정정 부호의 부/복호 단위 및 간섭 채널 환경에 대해 설명한다.
도 2를 참조하면, 플래시 메모리의 오류정정 부호는 1개의 페이지 단위로 읽고 쓴다. 1개의 블록은 다수의 워드 라인 (word line) 으로 구성되며 이와 별개로 비트 라인 (bit line)이 있다. 1개의 워드라인 홀/짝 (odd/even) 비트 라인으로 나눌 수 있으며 각 셀(cell)을 구성하는 비트 수에 따라 다시 세분화하여 페이지 단위로 나뉜다. 예를 들면 한 셀에 2비트를 저장하는 MLC 방식의 경우 1개의 워드 라인은 홀/짝 비트라인, 그리고 각 비트 라인에 속하는 셀의 MSB(Most Significant Bit)/LSB(Least Significant Bit) 단위, 즉 4개의 페이지로 구성된다. 상기한 바와 같이, 플래시 메모리의 오류정정 부호는 1개의 페이지 단위로 셀에 발생한 오류를 정정한다.
도 3a는 본 발명에 따른 블록 단위 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도이고, 도 3b는 본 발명에 따른 블록 단위 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도이다.
블록 단위 연접 BCH 부호의 블록은 메모리 블록과 구분되며, 다른 의미를 갖는다. 블록은 비트의 묶음으로, 도 3a 또는 도 3b에서 사각형으로 도시되나, 블록 내에서 비트들은 일렬로 나열되어 일정한 순서를 가진다. 블록은 메시지 블록(message block), 패리티 블록(parity block), 또는 메시지 블록 뒤에 패리티 블록이 합쳐진 메시지-패리티 블록(message-parity block)을 포함할 수 있다.
블록 단위 연접 BCH 부호에는 두 종류의 구성 부호(constituent code)가 있는데, 편의상 이를 각각 행 부호, 열 부호라고 지칭한다.
병렬 연접 구조에서 행 부호와 열 부호의 역할이 같으므로, 그 설명에서 행 부호와 열 부호는 서로 대치될 수 있다.
직렬 연접 구조에서는 행 부호는 외부 부호(outer code), 열 부호는 내부 부호(inner code)의 역할을 하며, 서로 대치될 수 없다. 하나의 행 부호와 하나의 열 부호는 항상 하나의 블록만을 서로 공유하며, 그 외의 블록들은 서로 공유하지 않는다. 또한 하나의 행 부호(또는 열 부호)는 모든 열 부호(또는 행 부호)와 블록을 하나씩만 공유한다.
행 부호와 열 부호는 모두 BCH 부호이다. 행 부호는 총 nr 비트, 보호하는 메시지 kr 비트, 패리티 mr 비트로 부호 전체 내에서 tr개의 비트 오류를 고칠 수 있다. 열 부호는 총 nc 비트, 보호하는 메시지 kc 비트, 패리티 mc 비트로 부호 전체 내에서 tc개의 비트 오류를 고칠 수 있다. 이후, 본 발명의 실시예에 대한 설명에서 블록 단위 연접 BCH 부호로 보호되는 데이터의 크기는 k(k는 자연수)이다.
도 3a는 본 발명에 따른 블록 단위 블록 단위 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도이다.
도 3a를 참조하면, 데이터는 메시지 블록(Bi,j)으로 이루어진 kr B x kc B 크기의 메시지 매트릭스에 해당된다. 하나의 행 부호는 메시지 블록 kc B 개와 하나 이상의 패리티 블록으로 이루어진다. 하나의 열 부호는 메시지 블록 kr B 개와 하나 이상의 패리티 블록으로 이루어진다.
예를 들어 다음과 같이, 각 메시지 블록이 동일하게 nB개의 비트를 포함하는, 병렬 연접 BCH 부호의 구성이 가능하다. 도 3a를 참조하면, i번째 행 부호는 i번째 행의 메시지 블록들과 i번째 행의 패리티 블록으로 이루어지며, 수학식 1과 같이 나타낼 수 있다.
도 3a를 참조하면, j번째 열 부호는 j번째 열의 메시지 블록들과 j번째 열의 패리티 블록으로 이루어지며, 수학식 2와 같이 나타낼 수 있다.
이때, 행 부호의 메시지 길이는 수학식 3과 같이 나타낼 수 있다.
또한, 행 부호의 부호 길이는 수학식 4와 같이 나타낼 수 있다.
마찬가지로, 열 부호의 메시지 길이는 수학식 5과 같이 나타낼 수 있다.
마찬가지로, 열 부호의 부호 길이는 수학식 6과 같이 나타낼 수 있다.
이때, 병렬 연접 BCH 부호의 부호율(code rate)은 수학식 7과 같이 나타낼 수 있다.
인터리빙을 다르게 하여 다른 열마다 다른 크기의 메시지 블록을 가지고 하나의 열 내에서만 같은 크기의 메시지 블록을 가지는 실시예에 대해, 행 부호는 상기 수학식 1과 같고, 열 부호는 수학식 8과 같이 나타낼 수 있다.
where f(x) ={(x-1) mod kc B} +1
도 3b를 참조하면, 데이터는 메시지 블록으로 할당되며, 각 행의 마지막 메시지 블록은 그 행의 행 부호의 패리티 블록 또는 그 일부와 합쳐져 메시지-패리티 블록이 된다. 열 부호의 패리티 블록을 제외하고, 메시지 블록, 각 행의 메시지-패리티 블록, 그리고 각 행의 여분의 패리티 블록은 kr B x kc B 크기의 메시지 매트릭스를 이룬다. 하나의 행 부호는 메시지 블록 kc B-1개와 하나의 메시지-패리티 블록으로 이루어진다. 하나의 열 부호는 메시지 블록 또는 메시지-패리티 블록 kr B개와 하나의 패리티 블록으로 이루어진다. 직렬 블록 단위 연접 BCH 부호의 경우, 열 부호가 행 부호보다 오류를 더 많이 정정할 수 있게() 설계될 수 있다.
예를 들어 다음과 같이, 각 메시지 블록과 메시지-패리티 블록이 동일하게 nB 개의 비트를 포함하는, 직렬 연접 BCH 부호의 구성이 가능하다. 도 3b를 참조하면, i번째 행 부호는 i번째 행의 메시지 블록들과 i번째 행의 패리티 블록으로 이루어지며, 상기 수학식 1과 같이 나타낼 수 있다.
도 3b를 참조하면, j번째 열 부호는 j번째 열의 메시지 블록들과 j번째 열의 패리티 블록으로 이루어지며, 1≤≤j≤≤kc B에 대해 수학식 9와 같이 나타낼 수 있다.
j=kc B의 경우, 수학식 10과 같이 나타낼 수 있다.
이때, 행 부호의 메시지 길이는 수학식 11과 같이 나타낼 수 있다.
또한, 행 부호의 부호 길이는 수학식 12와 같이 나타낼 수 있다.
마찬가지로, 열 부호의 메시지 길이는 수학식 13과 같이 나타낼 수 있다.
마찬가지로, 열 부호의 부호 길이는 상기 수학식 6과 같이 나타낼 수 있다.
이때, 직렬 연접 BCH 부호의 부호율(code rate)은 상기 수학식 7과 같이 나타낼 수 있다.
인터리빙을 다르게 하여 다른 열마다 다른 크기의 메시지 블록을 가지고 하나의 열 내에서만 같은 크기의 메시지 블록을 가지는 실시예에 대해, 행 부호는 상기 수학식 1과 같고, 열 부호는 수학식 8과 유사한 방법으로 나타낼 수 있다.
설명의 편의를 위해 병렬 연접으로 구성된 블록 단위 연접 BCH 부호로 설명하기로 한다. 하지만 본문에서 기술하는 기법은 직렬 연접을 통해 생성된 블록 단위연접 BCH 부호에도 쉽게 확장될 수 있다.
도 4는 본 발명에 따른 병렬 연접으로 구성된 형태의 블록 단위 연접 BCH 부호가 경판정 복호에 실패한 형태의 구조도이다.
블록 단위 연접 BCH 복호는 반복 복호 방식으로 행 부호와 열 부호를 반복하며 수행된다. 이러한 반복 복호가 실패한 경우, 반복 경판정을 통해 보다 연판정에 가까운 정보가 새로이 복호기에 전달되어 체이스(Chase) 복호가 수행된다. 여기에서 새로이 복호기에 전달되는 정보는 실패한 메시지 블록과 마찬가지로 복호에 실패한 패리티 블록으로 한정된다.
도 4를 참조하면, 한 쌍의 구성 부호의 복호 실패로 인해 블록 단위 연접 BCH 부호가 복호에 실패한 경우를 나타낸다. 일례로, 경판정 복호를 반복한 후 두 번째 행 부호와 열 부호가 각각 복호에 실패한 경우를 나타내고 있다.
블록 단위 연접 BCH 부호의 경우 구성부호의 오류 정정 능력이 곱 부호에 비해 크기 때문에 복호 오류 (decoding error) 확률이 매우 낮아, 구성부호가 복호에 성공하는 경우 오류가 모두 제거된다. 만약, 블록 단위 연접 BCH 부호가 블록 단위로 구성되어 있기 때문에 오류 메시지 블록에 의해 복호가 실패될 경우, 오류가 남아 있는 메시지 블록만을 재리드하여 복호를 시도할 수 있다. 하지만, 상기한 바와 같이, 한번 읽은 페이지를 다시 읽는 것은 높은 복잡도와 복호 지연 시간을 가지게 되어 손실이 크기 때문에 메시지 블록을 재리드하지 않고 경판정 복호 결과를 이용하여 성능을 개선하는 것이 중요하다.
도 5는 본 발명의 일실시예에 따른 블록 단위 블록 단위 연접 BCH를 포함하는 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 5를 설명하기에 앞서, 도 6을 통해 본 발명에 따른 전제 조건에 대해 먼저 설명하기로 한다. 즉, 한 셀에 한 비트 정보만을 저장하는 SLC 환경을 가정한다. 그러나 MLC 및 TLC 등으로 확장할 수 있다.
연판정 정보는 플래시 메모리 3회 읽기를 통한 2비트의 양자화 된 정보임을 전제조건으로 한다. 즉, 0과 1로 저장된 정보들 각각이 2레벨의 신뢰도 정보와 함께 읽히는 상황을 전제로 한다. 도 6을 참조하면, 0을 첫 번째 준거전압으로, 와 -을 각각 두 번째와 세 번째 준거전압으로 설정하는 경우 채널의 출력이 4 종류가 되는 것을 확인할 수 있다. 여기서, 의 값을 최적의 준거전압이라 할 수 있다. 여기서, 준거전압을 이용하여 리드할 경우, 와 -사이에 있는 비트들은 신뢰도가 낮다고 판단하여, 신뢰도가 낮은 nu개의 비트에 포함될 수 있으며, 그 외 영역에 있는 비트들은 신뢰도가 높다 판단하여 신뢰도가 높은 nr개의 비트가 포함될 수 있다.
특히, 연판정 복호를 위해, 즉, 터보 블록 단위 연접 BCH(TURBO BLOCK-WISE CONCATENATED BCH, TURBO BC-BCH) 부호 복호를 위해, 블록 단위 연접 BCH 부호를 구성하는 각 구성부호들(행 부호들 및 열 부호들)은 체이스 복호(Chase decoding)에 기반하여 신뢰도가 낮은 비트 중 가장 낮은 신뢰도를 갖는 p개의 비트를 선택하고 2p가지 방법으로 반전시키게 된다. 이때, 신뢰도가 낮은 nu개의 비트는, 0 또는 1 일 확률간 비의 절대값이 작은 비트를 의미한다.
여기서, 신뢰도가 낮은 nu개의 비트가 p개 비트 이상이면 신뢰도가 낮은 nu개의 비트 중에서 임의로 p개 비트를 선택한다. 일반적으로, 신뢰도가 낮은 nu개의 비트가 p개 비트 이하이면 선택한 p개 비트 가운데 신뢰도가 높은 nr개의 비트가 포함될 확률이 높다. 즉, 신뢰도가 높은 nr개의 비트는 오류일 확률이 낮기 때문에 체이스 복호를 시도했을 경우, 복호기 성능을 향상시키기 어렵다. 즉, 양자화구간 가 충분히 넓어 신뢰도가 낮은 nu개의 비트가 p개 비트 이상이어야 성능을 향상시킬 수 있다. 따라서, nu>p가 성립함을 가정할 수 있다.
도 5를 참조하면, 단계 S501에서, 컨트롤러는 메모리 장치의 메모리 블록으로부터 리드전압을 통해 데이터를 리드한다.
단계 S503에서, 메모리 블록으로부터 리드한 데이터를 수신한 컨트롤러는 데이터의 에러 검출 및 정정을 위해 경판정 복호를 실시하여, 경판정 복호 성공 여부를 판단한다(S505).
단계 S505에서, 경판정 복호 성공 여부를 판단한 결과, 경판정 복호가 성공된 경우(Y), 컨트롤러는 메모리 블록으로부터 리드한 데이터를 호스트에 전달한다.
그러나 경판정 복호 시 에러 정정에 의하여도 정정되지 아니할 수 있다.
단계 S505에서, 경판정 복호 성공 여부를 판단한 결과, 경판정 복호가 실패된 경우(N), 컨트롤러는 경판정 복호 실패 결과를 통해 오류 블록의 위치 및 오류 블록의 개수를 산출한다(S507). 즉, 블록 단위 연접 BCH 부호를 구성하는 복수의 행 부호 및 열 부호의 복호 실패 여부를 인가받아 오류 블록의 위치 및 오류 블록의 개수를 산출한다.
단계 S509에서, 상기 단계 S507에서 산출된 오류 블록의 위치 및 오류 블록의 개수를 이용하여 터보 블록 단위 연접 BCH 부호 복호, 즉, 체이스 복호 수행시 평균 오류 비트 수를 최대화하기 위한 최적의 준거 전압을 산출한다.
즉, 블록 단위 연접 BCH 부호의 경판정 복호에서 반복 종료가 선언되면, 경판정 복호 실패 여부를 확인한 후, 경판정 복호 실패 시 연판정 복호, 즉, 체이스 복호를 수행한다. 체이스 복호의 성능을 좋게 하기 위해서는 구성부호의 복호 수행 시, 신뢰도가 낮은 nu개의 비트 중 선택된 신뢰도가 가장 낮은 p개 비트에 오류 비트가 다수 포함되어 있어야 한다. 이로써, 체이스 복호 수행 시, 반전되는 오류 비트가 많아지게 되고, 구성부호의 복호 성공률이 높아 짐으로써, 터보 블록 단위 연접 BCH 부호 복호 성능을 향상시킬 수 있다.
즉, p개의 비트 내에 오류 비트가 많이 포함시킬 수 있는 최적의 준거 전압을 산출해야한다. 따라서, 신뢰도가 낮은 nu개의 비트 중 신뢰도가 가장 낮은 p개의 비트를 반전시키는데 이때, 반전시키는 p개의 비트 가운데 포함된 오류 비트 수인 nfe를 평균적으로 최대화하는 최적의 준거 전압을 산출해야 한다. 이는 다음 [수학식 14]와 같이 나타낼 수 있다.
여기에서 는 상기 경판정 복호 실패 시, 상기 오류를 포함하는 메시지 블록에서 신뢰도가 낮은 비트들 중에서 임의로 선택된 비트들에 포함되는 오류 비트 수의 평균값을 의미하며, dF는 경판정복호가 실패한 경우를 의미한다. 또한 는 준거 전압을 의미하며, 상기 [수학식 14]를 통해 준거 전압을 산출할 수 있다. 가 결정되면 3회 리드 시 준거 전압은 {-,0,}로 결정될 수 있다.
이하 상기 준거 전압을 설정하는 [수학식 14]에 대한 과정을 설명하기로 한다. 설명하기에 앞서, 구성부호 내의 오류 비트 수를 ne, 구성부호 내의 신뢰도가 낮은 구간으로 양자화 된 비트들에 포함된 실제 오류 비트 수를 nue, 반복적 경판정 복호 수행 시, 구성 부호 내의 복호 실패한 메시지 블록의 수를 nbf로 나타낼 수 있으며, E[nfe|dF]는 다음 [수학식 15]와 같이 나타낼 수 있다.
확률 p(nu,ne,nue,nfe,nbf,dF)를 직접 구하는 것은 어렵기 때문의 조건부 확률의 성질을 활용하여 다음 [수학식16]과 같이 표현할 수 있다.
후술에 의해 상기 수학식에 포함된 각 항들을 계산하는 방법에 대해 설명하기로 한다. 각각의 항을 계산에 의해, E[nfe|dF]를 준거전압의 함수로 표현할 수 있고, 따라서 를 도출할 수 있다.
신뢰도가 낮은 nu개의 비트가 나올 확률을 pu로 정의하고, 한 블록 내의 비트의 수를 Sb로 정의하면, p(nu|nbf)는 B(nbfSb + nc - kc, nu, pu)의 이항분포를 따른다. 여기에서 nc - kc는 오류가 남아있을 수 있는 구성부호내 패리티 블록의 크기와 같으며 상기한 mc로 대체 가능하다. 또, 이항 분포는 로 정의된다. 또한 신뢰도가 낮은 nu개의 비트가 나올 확률 pu는 도 6을 참조하면 가우시안 분포의 특성을 활용하여 계산될 수 있다.
복호하려는 구성 부호의 길이 n과 구성부호의 메시지 비트의 수 k는 확률변수가 아니다. 또한, 구성 부호 내의 신뢰도가 높은 구간으로 양자화된 비트들에 포함된 실제 오류 비트 수를 nre라고 하면, nre+nue=ne가 될 수 있다. 그렇다면, 는 다음 [수학식 17]과 같이 나타낼 수 있다.
복호하려는 구성 부호 내의 신뢰도가 낮은 비트수 nu 와 신뢰도가 높은 비트 수 가 주어졌을 때, nue비트는 신뢰도가 낮은 비트수 nu 중에서만 발생하고, nre비트는 신뢰도가 높은 비트 수 중에서 발생하기 때문에 신뢰도가 낮은 비트 nu 와 신뢰도가 높은 비트가 주어졌을 때, nue비트와 nre비트는 조건부 독립이다. 여기에서 신뢰도가 높게 검출되는 비트의 수가 인 까닭은, 연판정 복호를 하고자 하는 구성 부호가 있을 때, 실제로 복호해야 하는 부분은 경판정 복호시 정정하지 못한 메시지 블록 들과 패리티 블록의 길이 합(= nbfSb + nc - kc)으로 한정되기 때문이며, 또한 모든 비트들은 신뢰도가 낮거나 혹은 높게 검출되기 때문이다.
확률 pre는 신뢰도가 높은 구간에서 비트 오류가 발생할 확률이며, 확률 pue 는 신뢰도가 낮은 구간에서 비트 오류가 발생할 확률이라 정의하면, p(nre|ntr)은 B(ntr, nre, pre)의 이항 분포로, p(nue|nu)은 B(nu, nue, pue)의 이항 분포로 나타낼 수 있다. 확률 pre 와 확률 pue는 각각 도 6의 가우시안 분포로부터 산출할 수 있다.
물론 nfe는 범위의 값을 가지며, 남은 비트 오류의 개수가 복호를 수행하려는 구성 부호의 오류 정정 능력보다 커야한다. 기본적으로 경판정 복호를 실패(dF)의 확률을 산출해야하기 때문이다.
p(nbf)는 구성 부호 내에 복호 실패한 블록에 대한 확률분포이다. 이를 산출하기 위해서는 경판정 복호 이후, 경판정 복호 실패 시 오류가 발생된 메시지 블록 수에 대한 확률분포를 산출해야한다. 하지만 이에 대응하는 확률분포를 산출하는데 어려움이 있다. 따라서, 경판정 복호를 실패한 열 부호의 개수 분포를 통해, 연판정 복호 수행 후에 행 부호에 오류가 남아 있는 메시지 블록의 개수 분포를 대신할 수 있다.
낸드 플래시 메모리의 원 비트 오류율 (raw bit error rate, raw BER) 을 pe로 나타내면 열 부호의 복호를 실패할 확률 p(dcf)과, 복호에 실패한 열 부호의 개수가 nbf일 확률로 근사된p(nbf)는 다음의 [수학식 20]과 같이 나타낼 수 있다.
여기에서 tc는 열 부호 또는 다음 복호될 구성부호 의 오류 정정 능력을 나타낸다.
를 구하기 위해 필요한 등의 확률은 앞서 설명한 바와 같이, 이항 분포에 들어가는 확률 pu, pue, pr, pre, pe를 활용하면 구할 수 있는데 이는 도 6의 양자화 구간 의 함수로 표현할 수 있다. BI-AWGN (Binary Additive White Gaussian Noise) 채널을 가정하였고 노이즈의 분산을 σσ^2으로 나타내면 위의 확률들은 다음 [수학식 21]과 같이 나타낼 수 있다.
따라서, 양자화 구간인 준거전압을 변화시키면서 경판정 복호 실패시 오류비트를 산출하여, 이에 대한 평균 오류 비트를 최대화하는 준거전압을 산출함으로써 최적의 양자화 값을 산출 할 수 있다.
다시 도 5로 돌아와, 단계 S511에서, 상기 단계 S509에서 산출된 최적의 준거전압을 이용하여 체이스 복호를 수행함으로써 연판정 정보를 도출한다.
단계 S513에서, 상기 S511에서 도출된 연판정 정보를 이용하여 연판정 복호를 수행하여 연판정 복호의 성공여부를 판단한다(S515).
단계 S515에서, 연판정 복호 성공 여부를 판단한 결과, 연판정 복호가 실패된 경우(N), 메모리 블록의 메모리 셀로부터의 데이터 리드는 실패한 것으로 최종 평가된다(S517).
단계 S515에서, 연판정 복호 성공 여부를 판단한 결과, 연판정 복호가 성공한 경우(Y), 컨트롤러는 연판정 복호에 성공한 데이터를 호스트에 전달한다.
도 7(a), 도 7(b) 및 도 8은 본 발명의 양자화 구간을 변화에 따른 분석값과 실험을 통해 산출된 오류율 결과를 나타낸 도면이다.
도 7(a), 도 7(b) 및 도 8은 38개의 행 부호와 38개의 열 부호로 이루어진 (36568,32768) 블록 단위 연접 BCH 부호의 성능을 컴퓨터 시뮬레이션한 결과이다.
도 7(a) 및 도 7(b)를 참조하면, 시뮬레이션은 원비트오류율(0.0085)에서 실험을 수행하였고, BI-AWGN (Binary Additive White Gaussian Noise) 채널 모형을 전제로 하였다. 도 7(a)에서, 이 최대가 되는 지점, 즉, 평균 오류 비트 수가 최대가 되는 지점을 살펴보면 양자화구간 0.1 이다. 이를 참조하여 도 7(b)를 살펴보면, 양자화 구간 0.1 근처에서 오류율이 가장 낮은 것을 확인할 수 있다.
도 8은 본 발명에 따른 양자화 방법에 따른 결과와 종래의 양자화 방법에 따른 결과를 비교한 도면이다.
도 8을 참조하면, 연판정 복호를 통해 블록 단위 연접 BCH 부호를 복호하되 플래시 메모리로부터 읽어오는 방식을 다르게 하여 그 복호 성능을 비교한 도면이며, 준거전압을 결정하는 방법에 따라 블록 단위 연접 BCH 부호의 복호 성능이 달라지는 것을 확인할 수 있다. 본 발명의 양자화 방법과 비교가 되는 양자화 방법은 1) 상호 정보를 최대화 하는 방법(maximizing mutual information), 2) 신뢰도가 낮은 구간의 확률과 구성부호의 곱이 반전시키는 비트의 수가 되는 양자화 방법(probabilistic approach)이다.
도 8을 참조하면, 연판정 복호 성능(using soft information)과 가장 유사한 성능을 갖는 양자화 방법은 본 발명에서 제안한 양자화 방법(proposed algorithm)이다. 산출된 준거전압을 이용하여 3회만 리드하였음에도 불구하고 연판정 복호 성능과 가장 유사한 결과가 산출된다는 것을 확인할 수 있다.
본 발명의 상세한 설명에서는 구체적인 일실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 수 있다.
Claims (9)
- 블록 단위 연접 BCH(BLOCK-WISE CONCATENATED BCH, BC-BCH) 방식에 의해 행 부호와 열 부호로 구성되는 메시지 블록단위로 부호화되어 메모리 장치에 저장된 데이터에 대하여 경판정 복호를 수행하는 제1단계
상기 경판정 복호를 실패한 경우, 상기 데이터의 메시지 블록들 중에서 오류를 포함하는 메시지 블록에 대해 준거 전압을 산출하는 제2단계 및
상기 산출된 준거 전압을 이용하여 연판정 복호를 수행하는 제3단계
를 포함하는 플래시 메모리 시스템 동작 방법.
- 제1항에 있어서,
상기 연판정 복호는,
터보 블록 단위 연접 BCH 부호 복호인
플래시 메모리 시스템 동작 방법.
- 상기 제2항에 있어서,
상기 터보 블록 단위 연접 BCH 부호 복호는,
체이스 복호(Chase decoding)를 기반으로 하는
플래시 메모리 시스템 동작 방법.
- 제1항에 있어서,
상기 준거 전압은,
상기 연판정 복호 시, 상기 오류를 포함하는 메시지 블록에서 신뢰도가 낮은 비트 수 중 임의로 선택된 비트 수에 포함되는 오류 비트 수를 평균적으로 최대화하는
플래시 메모리 시스템 동작 방법.
- 제4항에 있어서,
상기 오류를 포함하는 메시지 블록에서 신뢰도가 낮은 비트 수 중 임의로 선택된 비트 수에 포함되는 오류 비트 수를 평균적으로 최대화하는 준거 전압은,
하기 수학식 1에 기초하여 결정되는
플래시 메모리 시스템 동작 방법.
[수학식 1]
여기서, 는 상기 준거 전압, nfe는 상기 오류를 포함하는 메시지 블록의 오류 비트 수, dF는 상기 경판정 복호가 실패하여 오류를 포함하는 메시지 블록, 는 상기 경판정 복호 실패 시, 상기 오류를 포함하는 메시지 블록에서 신뢰도가 낮은 비트 수 중 임의로 선택된 비트 수에 포함되는 오류 비트 수의 평균값, 상기 는 범위 내에 포함하며, 상기 는 상기 신뢰도가 낮은 비트 수 중 임의로 선택되는 비트 수임.
- 제5항에 있어서,
상기 경판정 복호 실패 시, 상기 오류를 포함하는 메시지 블록에서 신뢰도가 낮은 비트 수 중 임의로 선택된 비트 수에 포함되는 오류 비트 수의 평균값 ()은,
하기 수학식 2에 기초하여 결정되는
플래시 메모리 시스템 동작 방법.
[수학식 2]
여기서, 상기 nu는 상기 메시지 블록에서 신뢰도가 낮은 비트의 수, 상기 ne는 상기 메시지 블록의 오류 비트 수, 상기 nue는 상기 메시지 블록에서 신뢰도가 낮은 구간으로 양자화된 비트들에 포함된 실제 오류 비트 수, 상기 nbf는 상기 메시지 블록들 중에서 상기 오류를 포함하는 메시지 블록 수, 상기 는 상기 메시지 블록들 중에서 상기 경판정 복호 실패한 메시지 블록에 대한 확률 분포, 상기 는 상기 오류를 포함하는 메시지 블록에서 신뢰도가 낮은 비트 수가 나올 확률. 상기 는 하나의 메시지 블록의 비트의 수, 상기 n은 복호하려는 상기 메시지 블록의 길이, 상기 k는 상기 메시지 블록의 비트 수, 상기 는 상기 오류를 포함하는 메시지 블록에 포함된 신뢰도가 높은 비트 수, 상기 는 상기 메시지 블록에서 신뢰도가 높은 구간으로 양자화된 비트들에 포함된 실제 오류 비트 수, 상기 ntr은 상기 메시지 블록의 비트 중에서 신뢰도가 높은 비트 수, 상기 은 신뢰도가 높은 구간에서 오류 비트가 발생할 확률, 상기 은 신뢰도가 낮은 구간에서 오류 비트가 발생할 확률임.
- 제1항에 있어서,
상기 제3단계는,
상기 산출된 준거 전압을 이용하여 연판정 정보를 도출하여 상기 연판정 복호를 수행하는
플래시 메모리 시스템 동작 방법.
- 제1항에 있어서,
상기 연판정 복호를 실패한 경우,
오류 실패 신호를 호스트에 전송하는
플래시 메모리 시스템 동작 방법.
- 제1항에 있어서,
상기 연판정 복호를 성공한 경우,
상기 연판정 복호에 성공한 데이터를 상기 호스트에 전달하는
플래시 메모리 시스템 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140184378A KR20160075001A (ko) | 2014-12-19 | 2014-12-19 | 플래시 메모리 시스템 동작 방법 |
US14/793,309 US9639421B2 (en) | 2014-12-19 | 2015-07-07 | Operating method of flash memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140184378A KR20160075001A (ko) | 2014-12-19 | 2014-12-19 | 플래시 메모리 시스템 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160075001A true KR20160075001A (ko) | 2016-06-29 |
Family
ID=56129521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140184378A KR20160075001A (ko) | 2014-12-19 | 2014-12-19 | 플래시 메모리 시스템 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9639421B2 (ko) |
KR (1) | KR20160075001A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10908992B2 (en) | 2018-08-27 | 2021-02-02 | SK Hynix Inc. | Controller and operation method thereof |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120585B2 (en) * | 2016-08-10 | 2018-11-06 | SK Hynix Inc. | Memory system of optimal read reference voltage and operating method thereof |
CN109390027B (zh) * | 2017-08-08 | 2021-05-07 | 慧荣科技股份有限公司 | 解码方法及相关的闪存控制器与电子装置 |
US11323296B1 (en) * | 2020-07-30 | 2022-05-03 | Cadence Design Systems, Inc. | Decision feedback equalization training scheme for GDDR applications |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961197B1 (en) | 2001-12-28 | 2005-11-01 | Marvell International Ltd. | Correcting errors in disk drive read back signals by iterating with the Reed-Solomon decoder |
US7966546B2 (en) | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Non-volatile memory with soft bit data transmission for error correction control |
US7966550B2 (en) | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Soft bit data transmission for error correction control in non-volatile memory |
WO2009072103A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells |
US8700970B2 (en) * | 2010-02-28 | 2014-04-15 | Densbits Technologies Ltd. | System and method for multi-dimensional decoding |
US20120240007A1 (en) * | 2010-10-20 | 2012-09-20 | Stec, Inc. | Ldpc decoding for solid state storage devices |
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 |
-
2014
- 2014-12-19 KR KR1020140184378A patent/KR20160075001A/ko not_active Application Discontinuation
-
2015
- 2015-07-07 US US14/793,309 patent/US9639421B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10908992B2 (en) | 2018-08-27 | 2021-02-02 | SK Hynix Inc. | Controller and operation method thereof |
Also Published As
Publication number | Publication date |
---|---|
US20160179616A1 (en) | 2016-06-23 |
US9639421B2 (en) | 2017-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100845529B1 (ko) | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 | |
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
KR100842680B1 (ko) | 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템 | |
KR101576102B1 (ko) | 플래시 메모리의 블록으로부터 데이터를 판독하는 방법 및 관련 메모리 장치 | |
US20190252035A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9583217B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
KR101991911B1 (ko) | 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템 | |
US9092350B1 (en) | Detection and handling of unbalanced errors in interleaved codewords | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US10067824B2 (en) | Error processing method, memory storage device and memory controlling circuit unit | |
US20100251075A1 (en) | Memory controller and semiconductor memory apparatus | |
KR102275717B1 (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US20160306693A1 (en) | Read voltage level estimating method, memory storage device and memory control circuit unit | |
US8463985B2 (en) | Constrained coding to reduce floating gate coupling in non-volatile memories | |
JP2012118979A (ja) | Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム | |
CN104283570A (zh) | 低密度奇偶性检验(ldpc)解码器中的对数似然比(llr)阻尼 | |
US10574272B2 (en) | Memory system | |
KR20200111509A (ko) | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 | |
JP2019057812A (ja) | メモリシステム | |
KR20160075001A (ko) | 플래시 메모리 시스템 동작 방법 | |
KR102314481B1 (ko) | Siso 복호 방법, 디코더 및 반도체 메모리 시스템 | |
US11204834B1 (en) | Implementation of keeping data integrity in multiple dimensions | |
KR20140006444A (ko) | 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 | |
KR101496052B1 (ko) | 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |