KR20130055095A - 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 - Google Patents

연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 Download PDF

Info

Publication number
KR20130055095A
KR20130055095A KR1020110120623A KR20110120623A KR20130055095A KR 20130055095 A KR20130055095 A KR 20130055095A KR 1020110120623 A KR1020110120623 A KR 1020110120623A KR 20110120623 A KR20110120623 A KR 20110120623A KR 20130055095 A KR20130055095 A KR 20130055095A
Authority
KR
South Korea
Prior art keywords
code
bch
output
decoding
block
Prior art date
Application number
KR1020110120623A
Other languages
English (en)
Other versions
KR101320684B1 (ko
Inventor
하정석
조성근
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020110120623A priority Critical patent/KR101320684B1/ko
Priority to US13/678,812 priority patent/US9166626B2/en
Publication of KR20130055095A publication Critical patent/KR20130055095A/ko
Application granted granted Critical
Publication of KR101320684B1 publication Critical patent/KR101320684B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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 using interleaving techniques

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치에 관한 것으로, 플래쉬 메모리 장치를 위한 부호, 복호 및 다계층 복호를 통해서 오류 정도에 따라 지연 시간을 조정할 수 있다.
본 발명에 의한 연접 BCH 다계층 복호 회로는, 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부와, 상기 제 1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부와, 상기 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부와, 상기 제 2 출력 BCH 부호 또는 상기 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제 1 스테이지 복호부로 출력하는 인터리빙부 및, 상기 제 1 및 제 2 스테이지 복호부에서 복호 실패 정보를 인가받고 상기 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 인가받아 복호 실패 블록에 대해 추가 복호를 실행하는 추가 복호부를 포함하고 있다.

Description

연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치{ENCODING, DECODING, AND MULTI-STAGE DECODING CIRCUITS AND METHODS FOR CONCATENATED BCH CODE, ERROR CORRECT CIRCUIT OF FLASH MEMORY DEVICE USING THE SAME, AND FLASH MEMORY DEVICE USING THE SAME}
본 발명은 연접 BCH(Bose-Chadhuri-Hocquenghem) 부호(Encode), 복호(Decode) 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치에 관한 것이다. 보다 상세하게는, 연접 BCH 부호를 통해서 플래쉬 메모리에 대한 오류 정정 성능을 향상시키고, 다계층 복호를 통해서 오류 정도에 따라 지연 시간을 조정하는 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치에 관한 것이다.
근래에 들어 많은 전자 제품에서 사용되는 프로세서 및 램 등의 주기억장치의 스피드가 빨라짐에 따라서 보조 기억 장치의 속도에 의해서 전자 제품의 연산 처리 속도가 결정되는 병목 현상이 심화되고 있다. 기존의 보조 기억 장치로 주로 사용되던 것은 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을 참조하여 낸드 플래쉬 메모리의 저장 밀도 증가에 따른 문제 및 오류 정정 부호의 필요성을 설명한다.
도 1을 참조하면, SLC(Single-Level Cell) 플래쉬 메모리(a)는 1 비트의 정보를 저장하는 낸드 소자이고, MLC(Multi-Level Cell) 플래쉬 메모리(b)는 2 비트의 정보를 저장하는 낸드 소자이고, TLC(Tri-Level Cell) 플래쉬 메모리(c)는 3 비트의 정보를 저장하는 낸드 소자이며, QLC(Quad-Level Cell) 플래쉬 메모리(d)는 4 비트의 정보를 저장하는 낸드 소자이다.
도 1을 참조하면, 한 셀 당 저장하는 비트의 수가 증가함에 따라, 읽기 동작 시 레벨 간 간섭에 의한 오류가 발생할 확률이 증가하며, 읽기/쓰기 동작이 반복 될수록 오류 발생 확률이 크게 증가하여 제품의 신뢰도가 떨어지는 문제가 발생한다. 그러므로 저 전력 및 높은 처리량의 오류정정회로는 합리적인 가격과 안정적인 낸드 플래쉬 메모리를 설계하는데 필수적인 요소가 된다.
이러한 문제를 해결하기 위해 일반적으로 오류 정정부호를 사용하는데, 오류 정정부호는 오류의 탐지 및 오류의 정정을 위한 정보를 담은 여분의 비트들이 필요로 한다. 따라서 상기 여분 비트들을 저장하기 위해 셀의 여분 면적이 요구된다. 하지만, 저장 매체의 저장 용량을 최대화하기 위해서는 여분 비트를 저장하기 위해 필요한 셀의 면적은 최소화하므로, 여분 비트를 최소화 할 필요성이 있다.
또한, 저장 데이터 오류의 증가로, 오류 개수에 대해 지수적인 복잡도와 많은 여분 비트를 요하는 기존의 BCH 부호나 RS(Reed-Solomon) 부호를 대체할 새로운 오류 정정 부호가 필요하다.
높은 성능의 오류 정정 부호일수록 높은 복잡도와 긴 복호 지연 시간을 가지게 된다. 낸드 플래쉬 메모리의 경우, 초기에는 오류가 적게 발생하다가 사용 시간이 길어짐에 따라 오류의 발생 개수가 많아진다. 단순히 높은 성능의 오류 정정 부호만을 사용하면 오류가 적을 때에는 필요 이상의 긴 복호 지연 시간을 가지게 되므로 효율적이지 않다.
전술한 문제점을 해결하기 위하여 본 발명이 이루고자 하는 기술적 과제는, 플래쉬 메모리 장치를 위한 부호, 복호 및 다계층 복호를 통해서 오류 정도에 따라 지연 시간을 조정하는 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법을 제시하는 데 있다.
또한, 본 발명이 이루고자 하는 다른 기술적 과제는, 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치를 제시하는 데 있다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 연접 BCH 부호 회로는, 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 BCH 부호화를 수행하여 제1 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 1 스테이지 부호부와, 상기 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 인터리빙(interleaving)하여 출력하는 인터리빙부 및, 상기 인터리빙부의 출력인 BCH 부호 또는 데이터를 BCH 부호화하여 제 2 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 2 스테이지 부호부를 포함할 수 있다.
여기서, 상기 제 1 스테이지 부호부는 행 부호기(Row Code Encoder)일 수 있고, 상기 제 2 스테이지 부호부는 열 부호기(Column Code Encoder)일 수 있으며, 상기 제 1 및 제 2 스테이지 부호부는 적어도 해당 부호의 패리티 블록을 출력할 수 있다.
상기 연접 BCH 부호 회로는 상기 제 1 및 제 2 스테이지 부호부의 출력을 조합하여 상기 플래쉬 메모리 코어에 저장될 코드워드를 생성할 수 있다.
또한, 전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 다른 연접 BCH 부호 회로는, 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 BCH 부호화를 수행하여 제 1 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 1 스테이지 부호부와, 상기 제 1 출력 BCH 부호 또는 그에 의해 보호되는 데이터를 인터리빙(interleaving)하여 출력하는 인터리빙부 및, 상기 인터리빙부의 출력인 BCH 부호 또는 데이터를 BCH 부호화하여 제 2 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 2 스테이지 부호부를 포함할 수 있다.
여기서, 상기 제 1 스테이지 부호부는 행 부호기(Row Code Encoder)일 수 있고, 상기 제 2 스테이지 부호부는 열 부호기(Column Code Encoder)일 수 있으며, 상기 제 1 및 제 2 스테이지 부호부는 적어도 해당 부호에 맞는 메시지 블록과 패리티 블록을 동시에 출력하여 저장될 코드워드를 생성할 수 있다.
또한, 전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 연접 BCH 복호 회로는, 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부와, 상기 제 1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부와, 상기 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부 및, 상기 제 2 출력 BCH 부호 또는 상기 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제 1 스테이지 복호부로 출력하는 인터리빙부를 포함할 수 있다.
여기서, 상기 연접 BCH 복호 회로는 반복 복호 방식으로 열(Column) 복호와 행(Row) 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료할 수 있다.
상기 제 1 스테이지 복호부는 열 복호기(Column Code Decoder)이고, 상기 제 2 스테이지 부호부는 행 복호기(Row Code Decoder)이고, 상기 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고, 상기 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이다.
상기 제 1 스테이지 복호부는 열 복호기(Column Code Decoder)일 수 있고, 상기 제 2 스테이지 부호부는 행 복호기(Row Code Decoder)일 수 있다.
상기 연접 BCH 복호 회로는 상기 제 1 및 제 2 스테이지 복호부에서 열(Column) 및 행(Row) 복호에 성공하면 상기 제 1 및 제 2 스테이지 복호부의 출력을 조합하여 상기 플래쉬 메모리 코어에 저장될 코드워드를 생성할 수 있다.
또한, 전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 연접 BCH 다계층 복호 회로는, 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부와, 상기 제 1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부와, 상기 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부와, 상기 제 2 출력 BCH 부호 또는 상기 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제 1 스테이지 복호부로 출력하는 인터리빙부 및, 상기 제 1 및 제 2 스테이지 복호부에서 복호 실패 정보를 인가받고 상기 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 인가받아 복호 실패 블록에 대해 추가 복호를 실행하는 추가 복호부를 포함할 수 있다.
여기서, 상기 제 1 스테이지 복호부는 열 복호기(Column Code Decoder)이고, 상기 제 2 스테이지 부호부는 행 복호기(Row Code Decoder)이고, 상기 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고, 상기 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이다. 이때, 상기 제 1 스테이지 복호부는 열 복호기(Column Code Decoder)일 수 있고, 상기 제 2 스테이지 부호부는 행 복호기(Row Code Decoder)일 수 있다.
상기 추가 복호부는 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생했을 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 추가 복호를 수행하여 오류를 정정할 수 있다. 이때, 상기 추가 정보는 위치가 확정된 소수의 오류 블록에 해당하는 비트들에 대한 정보를 포함할 수 있다.
상기 추가 복호부는 상기 추가 복호를 위해서 상기 제 1 및 제 2 스테이지 부호부 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 상기 소수의 오류 블록의 위치를 확정할 수 있다.
상기 구성 부호는 읽기(read) 및 쓰기(write) 단위인 페이지의 일부 또는 전부이거나 열(Column) 부호 또는 행(Row) 부호를 포함할 수 있다.
또한, 전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 플래쉬 메모리 장치의 오류 정정 회로는, 입력 데이터를 두 개 이상의 데이터로 분리한 후 각각 BCH 부호화하여 상기 분리된 데이터와 같은 개수의 행 BCH 부호를 출력하는 외부 부호부와, 상기 행 BCH 부호 또는 그에 의해 보호되는 데이터를 다시 두 개 이상의 블록으로 나눠 그 블록들을 인터리빙하고 같은 개수의 블록을 출력하는 인터리빙부와, 상기 인터리빙부에서 인터리빙된 블록들을 BCH 부호화하여 열 BCH 부호를 출력하는 내부 부호부와, 플래쉬 메모리 코어로부터 제공되는 저장 데이터의 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부와, 상기 제1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록으로 나눠 디인터리빙하여 출력하는 디인터리빙부와, 상기 디인터리빙부의 출력을 BCH 복호하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2차 스테이지 복호부 및, 상기 제2 출력 BCH 부호 또는 상기 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제1 스테이지 복호부로 출력하는 인터리빙부를 포함할 수 있다.
또한, 전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 연접 BCH 다계층 복호 방법은, (a) 블록 단위의 연접 BCH 부호의 구성 부호를 복호하여 오류를 정정하는 단계와, (b) 상기 구성 부호의 오류 정정에 실패했을 경우 전체 연접 BCH 부호를 복호하여 상기 (a)단계에서 정정하지 못한 오류를 정정하는 단계 및, (c) 상기 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생했을 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 추가 복호를 수행하여 오류를 정정하는 단계를 포함할 수 있다.
여기서, 상기 연접 BCH 부호는 비트의 묶음으로 이루어진 블록 단위로 구성될 수 있다. 이때, 상기 블록은 메시지 블록(message block), 패리티 블록(parity block)을 포함하거나 상기 메시지 블록 뒤에 상기 패리티 블록이 합쳐진 메시지-패리티 블록을 포함할 수 있다.
또한, 상기 연접 BCH 부호는 행 부호(Row Code), 열 부호(Column Code)를 포함할 수 있다. 이때, 상기 행 부호 및 열 부호는 복수 개의 메시지 블록과 하나 이상의 패리티 블록으로 각각 이루어질 수 있다.
상기 연접 BCH 부호는 메시지 매트릭스를 구성하는 각 메시지 블록이 동일한 수의 비트를 포함하는 병렬 연접으로 구성될 수 있다. 이때, 상기 연접 BCH 부호는 하나의 행 부호와 하나의 열 부호가 항상 하나의 블록만을 서로 공유하고 그 외의 블록들은 서로 공유하지 않으며, 상기 하나의 행 부호(또는 열 부호)는 모든 열 부호(또는 행 부호)와 블록을 하나씩만 공유할 수 있다.
또한, 상기 연접 BCH 부호는 메시지 매트릭스를 구성하는 각 메시지 블록과 메시지-패리티 블록이 동일한 수의 비트를 포함하는 직렬 연접으로 구성될 수 있다.
상기 연접 BCH 부호는 플래쉬 메모리 장치에 데이터를 저장하는 파일 시스템의 데이터 접근 단위 크기에 맞게 상기 구성 부호의 메시지 길이를 정할 수 있다.
상기 구성 부호는 읽기(read) 및 쓰기(write) 단위인 페이지의 일부 또는 전부이거나 열(Column) 부호 또는 행(Row) 부호를 포함할 수 있다.
상기 (c)단계에서 상기 추가 복호는 상기 연접 BCH 부호의 경판정 반복 복호에서 반복 종료가 선언되면 진행될 수 있다.
상기 연접 BCH 다계층 복호 방법은 상기 추가 복호를 위해서 행(Row) 복호기와 열(Column) 복호기 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 상기 소수의 오류 블록의 위치를 확정할 수 있다.
상기 추가 정보는 위치가 확정된 소수의 오류 블록에 해당하는 비트들에 대한 정보를 포함할 수 있다.
상기 추가 정보는 플래쉬 메모리 코어에서 해당 비트들이 저장된 셀과 그 주변 셀을 읽어 얻거나, 해당 비트들이 저장된 셀의 문턱 전압에 대해 비트 값을 결정하는 읽기 기준 문턱 전압 값을 이전 읽기 기준 문턱 전압 값과 바꾸어 적용하여 비트 값을 결정하는 방법으로 획득할 수 있다.
상기 추가 복호는 체이스 복호(Chase decoding)와 같은 신뢰성 기반 복호(reliability-based decoding) 방법을 사용할 수 있다.
상기 연접 BCH 부호에서 복호 실패가 발생했을 때 오류 블록의 위치는 복호에 실패한 구성 부호에 의해 결정될 수 있다.
상기 블록 단위의 연접 BCH 부호가 경판정 반복 복호에 실패했을 경우, 소수의 오류 블록에 대해 추가 정보를 얻어 오류 블록을 정정하여 오류 마루를 해결할 수 있다.
또한, 전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명에 의한 플래쉬 메모리 장치는 상기 연접 BCH 다계층 복호 방법을 이용하여 제조될 수 있다.
본 발명에 따르면, BCH 부호를 외부 및 내부 부호로 하되 외부 부호를 블록 단위로 인터리빙하여 내부 부호로 부호화하고, 부호화된 저장 데이터를 오류 정도에 따라 다계층으로 복호하여 외부 부호 또는 내부 부호 중 어느 하나에 대해서만 복호하거나, 오류가 완전히 고쳐지거나 더 이상 고칠 수 없을 때까지 내부 부호와 외부 부호의 복호를 반복적으로 수행하거나, 또는 블록 단위의 오류가 발생했을 때 추가 정보를 얻어 복호를 수행하여, 에러 정정 능력을 향상시킴과 동시에 복호 지연 시간을 적응적으로 줄일 수 있다.
또한, 오류가 적어 외부 부호 또는 내부 부호의 복호로 오류가 정정되는 경우, 전체 데이터의 일부분인 작은 크기의 데이터에 대한 접근이 용이해진다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
도 1은 SLC(Single Level Cell), MLC(Multi Level Cell), TLC(Tri-Level Cell) 및 QLC(Quad Level Cell) 플래쉬 메모리에서 문턱 전압의 분포를 도시한 도면이다.
도 2a는 본 발명에서 사용하는 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도이다.
도 2b는 본 발명에서 사용하는 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도이다.
도 3a는 본 발명의 바람직한 실시 예에 의한 플래쉬 메모리 장치의 병렬 연접 BCH 부호 회로를 도시한 기능 블록도이다.
도 3b는 본 발명의 바람직한 실시 예에 의한 플래쉬 메모리 장치의 직렬 연접 BCH 부호 회로를 도시한 기능 블록도이다.
도 4는 본 발명의 바람직한 실시 예에 의한 플래쉬 메모리 장치의 연접 BCH 복호 회로를 도시한 기능 블록도이다.
도 5는 본 발명의 바람직한 실시 예에 의한 플래쉬 메모리 장치의 연접 BCH 다계층 복호 방법을 도시한 도면이다.
도 6은 본 발명의 블록 단위의 오류에 의한 하계(lower bound) 및 실험 결과를 비교한 도면이다.
도 7은 본 발명의 하나의 블록 오류를 해결하는 추가 정보를 이용한 복호 방법의 실험 결과와 기존 BCH 부호의 성능을 비교한 도면이다.
도 8은 본 발명의 바람직한 실시 예에 의한 플래쉬 메모리 장치의 추가 복호가 가능한 연접 BCH 다계층 복호 회로를 도시한 기능 블록도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시 예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙여 설명하기로 한다.
일반적으로, 플래쉬 메모리 장치는 병렬로 연결된 다이(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 구성 부호로 구성된다. 긴 길이의 구성 부호는 플래쉬 메모리 장치에서 요구되는 높은 부호율에서도 충분한 오류 정정 능력을 가진다. 예를 들어, 도 7을 참조하면, 각각 10 비트와 14 비트의 오류를 고칠 수 있는 구성 부호로 이루어져 있음을 알 수 있다. 이로 인해 경판정(hard decision)만 가능한 플래쉬 메모리 장치에서도, 상기 블록 단위 연접 BCH 부호에는 정정에 실패하는 구성 부호가 낮은 확률로 생겨, 상기 비트 단위 연접 BCH 부호보다 높은 성능을 가지게 된다.
한편, 블록 단위 연접 BCH 부호는 블록 단위로 구성되어 있기 때문에 오류 블록(erroneous block)에 의해 복호에 실패할 수 있다. 도 6을 참고하면, 오류 블록의 하계(lower bound)에 의해 오류 마루가 발생하는 것을 확인할 수 있다. 도 6에 도시된 것처럼, 오류 마루는 주로 소수의 오류 블록에 의해 발생한다.
따라서, 본 발명에서는 소수의 오류 블록에 대해 추가 정보를 얻어 오류 블록을 정정하여 오류 마루를 해결하는 방법을 제시한다. 블록 단위 연접 BCH 부호가 경판정 반복 복호에 실패했을 경우에만, 소수의 오류 블록에 한정되어 추가 정보를 사용하므로, 복잡도와 복호 지연 시간을 효과적으로 줄일 수 있다.
이후의 설명에서 따로 명시하지 않은 경우 연접 BCH 부호는 블록 단위 연접 BCH 부호를 의미한다.
이하, 본 발명에서 실시하고자 하는 구체적인 기술내용에 대해 첨부도면을 참조하여 상세하게 설명하기로 한다.
도 2a는 본 발명에서 사용하는 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도이고, 도 2b는 본 발명에서 사용하는 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도이다.
연접 BCH 부호의 블록은 메모리 블록과 구분되며, 다른 의미를 갖는다. 블록은 비트의 묶음으로, 도 2a 또는 도 2b에서 사각형으로 도시되나, 블록 내에서 비트들은 일렬로 나열되어 일정한 순서를 가진다. 블록은 메시지 블록(message block), 패리티 블록(parity block), 또는 메시지 블록 뒤에 패리티 블록이 합쳐진 메시지-패리티 블록(message-parity block)을 포함할 수 있다.
연접 BCH 부호에는 두 종류의 구성 부호(constituent code)가 있는데, 편의상 이를 각각 행 부호, 열 부호라고 지칭한다. 병렬 연접 구조에서 행 부호와 열 부호의 역할이 같으므로, 그 설명에서 행 부호와 열 부호는 서로 대치될 수 있다. 직렬 연접 구조에서는 행 부호는 외부 부호(outer code), 열 부호는 내부 부호(inner code)의 역할을 하며, 서로 대치될 수 없다. 하나의 행 부호와 하나의 열 부호는 항상 하나의 블록만을 서로 공유하며, 그 외의 블록들은 서로 공유하지 않는다. 또한 하나의 행 부호(또는 열 부호)는 모든 열 부호(또는 행 부호)와 블록을 하나씩만 공유한다.
행 부호와 열 부호는 모두 BCH 부호이다. 행 부호는 총
Figure pat00001
비트, 보호하는 메시지
Figure pat00002
비트, 패리티
Figure pat00003
비트로 부호 전체 내에서
Figure pat00004
개의 비트 오류를 고칠 수 있다. 열 부호는 총
Figure pat00005
비트, 보호하는 메시지
Figure pat00006
비트, 패리티
Figure pat00007
비트로 부호 전체 내에서
Figure pat00008
개의 비트 오류를 고칠 수 있다.
이후, 본 발명의 실시예에 대한 설명에서 연접 BCH 부호로 보호되는 데이터의 크기는 k(k는 자연수)이다.
도 2a는 본 발명에서 사용하는 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도이다.
도 2a를 참조하면, 데이터는 메시지 블록으로 이루어진
Figure pat00009
크기의 메시지 매트릭스에 해당된다. 하나의 행 부호는 메시지 블록
Figure pat00010
개와 하나 이상의 패리티 블록으로 이루어진다. 하나의 열 부호는 메시지 블록
Figure pat00011
개와 하나 이상의 패리티 블록으로 이루어진다.
예를 들어 다음과 같이, 각 메시지 블록이 동일하게
Figure pat00012
개의 비트를 포함하는, 병렬 연접 BCH 부호의 구성이 가능하다. 도 2a를 참조하면, i번째 행 부호는 i번째 행의 메시지 블록들과 i번째 행의 패리티 블록으로 이루어지며, 수학식 1과 같이 나타낼 수 있다.
Figure pat00013
도 2a를 참조하면, j번째 열 부호는 j번째 열의 메시지 블록들과 j번째 열의 패리티 블록으로 이루어지며, 수학식 2와 같이 나타낼 수 있다.
Figure pat00014
이때, 행 부호의 메시지 길이는 수학식 3과 같이 나타낼 수 있다.
Figure pat00015
또한, 행 부호의 부호 길이는 수학식 4와 같이 나타낼 수 있다.
Figure pat00016
마찬가지로, 열 부호의 메시지 길이는 수학식 5과 같이 나타낼 수 있다.
Figure pat00017
마찬가지로, 열 부호의 부호 길이는 수학식 6과 같이 나타낼 수 있다.
Figure pat00018
이때, 병렬 연접 BCH 부호의 부호율(code rate)은 수학식 7과 같이 나타낼 수 있다.
Figure pat00019
상기 실시예에서 메시지 블록은
Figure pat00020
개의 비트를 포함하며 모든 메시지 블록의 크기는 같다.
인터리빙을 다르게 하여 다른 열마다 다른 크기의 메시지 블록을 가지고 하나의 열 내에서만 같은 크기의 메시지 블록을 가지는 실시예에 대해, 행 부호는 상기 수학식 1과 같고, 열 부호는 수학식 8과 같이 나타낼 수 있다.
Figure pat00021
도 2b는 본 발명에서 사용하는 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도이다.
도 2b를 참조하면, 데이터는 메시지 블록으로 할당되며, 각 행의 마지막 메시지 블록은 그 행의 행 부호의 패리티 블록 또는 그 일부와 합쳐져 메시지-패리티 블록이 된다. 열 부호의 패리티 블록을 제외하고, 메시지 블록, 각 행의 메시지-패리티 블록, 그리고 각 행의 여분의 패리티 블록은
Figure pat00022
크기의 메시지 매트릭스를 이룬다. 하나의 행 부호는 메시지 블록
Figure pat00023
개와 하나의 메시지-패리티 블록으로 이루어진다. 하나의 열 부호는 메시지 블록 또는 메시지-패리티 블록
Figure pat00024
개와 하나의 패리티 블록으로 이루어진다. 직렬 연접 BCH 부호의 경우, 열 부호가 행 부호보다 오류를 더 많이 정정할 수 있게(
Figure pat00025
) 설계될 수 있다.
예를 들어 다음과 같이, 각 메시지 블록과 메시지-패리티 블록이 동일하게
Figure pat00026
개의 비트를 포함하는, 직렬 연접 BCH 부호의 구성이 가능하다. 도 2b를 참조하면, i번째 행 부호는 i번째 행의 메시지 블록들과 i번째 행의 패리티 블록으로 이루어지며, 상기 수학식 1과 같이 나타낼 수 있다.
도 2b를 참조하면, j번째 열 부호는 j번째 열의 메시지 블록들과 j번째 열의 패리티 블록으로 이루어지며,
Figure pat00027
에 대해 수학식 9와 같이 나타낼 수 있다.
Figure pat00028
Figure pat00029
의 경우, 수학식 10과 같이 나타낼 수 있다.
Figure pat00030
이때, 행 부호의 메시지 길이는 수학식 11과 같이 나타낼 수 있다.
Figure pat00031
또한, 행 부호의 부호 길이는 수학식 12와 같이 나타낼 수 있다.
Figure pat00032
마찬가지로, 열 부호의 메시지 길이는 수학식 13과 같이 나타낼 수 있다.
Figure pat00033
마찬가지로, 열 부호의 부호 길이는 상기 수학식 6과 같이 나타낼 수 있다.
이때, 직렬 연접 BCH 부호의 부호율(code rate)은 상기 수학식 7과 같이 나타낼 수 있다.
상기 직렬 연접 BCH 부호의 실시예에서 각 메시지 블록과 메시지-패리티 블록은
Figure pat00034
개의 비트를 포함하며, 모든 메시지 블록과 메시지-패리티 블록의 크기는 서로 같다.
인터리빙을 다르게 하여 다른 열마다 다른 크기의 메시지 블록을 가지고 하나의 열 내에서만 같은 크기의 메시지 블록을 가지는 실시예에 대해, 행 부호는 상기 수학식 1과 같고, 열 부호는 수학식 8과 유사한 방법으로 나타낼 수 있다.
도 3a는 본 발명의 플래쉬 메모리 장치를 위한 병렬 연접 BCH 부호 회로의 기능 블록을 도시한 기능 블록도이다.
병렬 연접 BCH 부호 회로는 도 3a에 도시된 바와 같이, 플래쉬 메모리 코어로 입력되는 데이터(m) 중 일부 또는 전부를 인가받아 BCH 부호화를 수행하여 제1 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 1 스테이지 부호부와, 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 인터리빙(interleaving)하여 출력하는 인터리빙부와, 인터리빙부의 출력인 BCH 부호 또는 데이터를 BCH 부호화하여 제 2 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 2 스테이지 부호부를 포함하고 있다. 여기서, 제 1 스테이지 부호부는 행 부호기(Row Code Encoder)이고, 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이고, 제 2 스테이지 부호부는 열 부호기(Column Code Encoder)이다.
도 3a를 참조하면, 플래쉬 메모리 코어에 저장하기 위해 입력된 데이터(m)는
Figure pat00035
로 나뉘어져 행 부호기(Row Code Encoder)에 인가되거나 블록 단위 인터리버(Block-wise Interleaver)에 인가되어
Figure pat00036
로 바뀌어 열 부호기(Column Code Encoder)에 인가된다.
행 부호기와 열 부호기는 체계적 부호기(systematic encoder)로, 행 부호기 또는 열 부호기에서 메시지 블록과 패리티 블록이 동시에 출력될 수 있다. 행 부호기와 열 부호기는 적어도 해당 부호의 패리티 블록을 출력한다. 행 부호기의 메시지 블록, 열 부호기의 메시지 블록, 또는 입력된 데이터의 메시지 블록은 부호 회로 출력의 메시지 블록으로 출력될 수 있다. 행 부호기와 열 부호기, 또는 행 부호기와 열 부호기 그리고 데이터 입력단에서 나오는 출력을 조합하여 플래쉬 메모리 코어에 저장될 코드워드를 생성한다.
도 3a에서는 행 부호기가 메시지 블록과 패리티 블록을 동시에 출력하며, 열 부호기에서는 패리티 블록을 출력해 저장될 코드워드를 생성한다. 도 3a에서는 행 부호기와 열 부호기가 병렬로 구성되었으나, 두 부호기의 순서에 상관없이 직렬로 구성하되 두 부호기 사이에 인터리버를 두어 직렬로 구성할 수 있다.
도 3b는 본 발명의 플래쉬 메모리 장치를 위한 직렬 연접 BCH 부호 회로의 기능 블록을 도시한 기능 블록도이다.
직렬 연접 BCH 부호 회로는 도 3b에 도시된 바와 같이, 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 BCH 부호화를 수행하여 제 1 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 1 스테이지 부호부와, 제 1 출력 BCH 부호 또는 그에 의해 보호되는 데이터를 인터리빙(interleaving)하여 출력하는 인터리빙부와, 인터리빙부의 출력인 BCH 부호 또는 데이터를 BCH 부호화하여 제 2 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 2 스테이지 부호부를 포함하고 있다. 여기서, 제 1 스테이지 부호부는 행 부호기(Row Code Encoder)이고, 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이고, 제 2 스테이지 부호부는 열 부호기(Column Code Encoder)이다.
도 3b을 참조하면, 플래쉬 메모리 코어에 저장하기 위해 입력된 데이터는
Figure pat00037
로 나뉘어져 행 부호기에 인가된다. 행 부호는 블록 단위 인터리버에 인가되어
Figure pat00038
로 바뀌어 열 부호기에 인가된다. 행 부호기와 열 부호기는 체계적 부호기(systematic encoder)로, 각 부호기에서 메시지 블록과 패리티 블록이 동시에 출력될 수 있다. 행 부호기와 열 부호기는 적어도 해당 부호의 패리티 블록을 출력한다. 행 부호기의 메시지 블록, 열 부호기의 메시지 블록, 또는 입력된 데이터의 메시지 블록은 부호 회로 출력의 메시지 블록으로 출력될 수 있다. 행 부호기와 열 부호기, 또는 행 부호기와 열 부호기 그리고 데이터 입력단에서 나오는 출력을 조합하여 플래쉬 메모리 코어에 저장될 코드워드를 생성한다.
도 3b에서는 행 부호기와 열 부호기 각각에서 각 부호에 맞는 메시지 블록과 패리티 블록을 동시에 출력하여 저장될 코드워드를 생성한다. 도 3b에서는 행 부호기와 열 부호기가 직렬로 구성되었으나, 두 부호기를 병렬로 구성하되 열 부호기는 입력된 데이터로 부호화를 진행하다가 열 부호기와 인터리버를 거친 패리티 블록을 받아 부호화를 계속 진행하여 저장될 코드워드를 생성하는 구조를 가질 수 있다.
도 4는 본 발명의 플래쉬 메모리 장치를 위한 연접 BCH 복호 회로의 기능 블록을 도시한 기능 블록도이다.
연접 BCH 복호 회로는 도 4에 도시된 바와 같이, 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부와, 제 1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부와, 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부와, 제 2 출력 BCH 부호 또는 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 제 1 스테이지 복호부로 출력하는 인터리빙부를 포함하고 있다.
여기서, 제 1 스테이지 복호부는 행 복호기(Row Code Decoder)이고, 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고, 제 2 스테이지 복호부는 열 복호기(Column Code Decoder)이고, 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이다.
연접 BCH 복호 회로는 반복 복호 방식으로, 열 복호와 행 복호를 반복한다. 최대 반복 횟수 또는 반복 종료 조건에 의해 반복 종료가 선언된다. 반복 종료 조건은, 한 번의 반복 동안, 열 부호와 행 부호 중 그 이전 반복까지 복호에 실패했던 부호 모두가 복호에 계속 실패하는 조건일 수 있다. 이 조건은 반복 복호를 계속 진행해도 더 이상 오류가 고쳐지지 않는 상태를 의미한다.
도 4를 참조하면, 플래쉬 메모리 코어의 메모리 셀에서 읽힌 n 비트의 저장 데이터는
Figure pat00039
개의 열 부호로 나뉘어 열 복호기에 인가되어 BCH 복호기로 복호된 뒤,
Figure pat00040
개의 열 메시지로 출력된다.
Figure pat00041
개의 열 메시지는 블록 단위의 디인터리버를 거쳐 나오되, 병렬 연접 BCH 부호의 경우
Figure pat00042
개의 행 메시지로, 직렬 연접 BCH 부호의 경우 행 메시지를 포함하는
Figure pat00043
개의 행 부호로 출력된다. 상기 열 복호기가
Figure pat00044
개의 열 부호 모두에 대해 복호에 성공하면, 상기 행 메시지 또는 행 부호의 일부인 행 메시지는 바로 데이터로 출력된다. 그렇지 않은 경우, 상기
Figure pat00045
개의 행 메시지 또는 행 부호는 행 복호기에 인가되어 BCH 복호기로 복호된 뒤,
Figure pat00046
개의 행 메시지 또는 행 메시지를 포함하는
Figure pat00047
개의 행 부호로 출력된다. 반복 종료가 선언되거나 행 복호기가
Figure pat00048
개의 행 부호 모두에 대해 복호에 성공하면, 상기 행 메시지 또는 행 부호에 포함된 행 메시지는 바로 데이터로 출력된다. 그렇지 않은 경우, 블록 단위의 인터리버에 인가되어
Figure pat00049
개의 열 메시지가 출력된다. 반복 복호를 진행하기 위해 상기
Figure pat00050
개의 열 메시지는 상기 열 복호기에 다시 인가된다.
도 5는 본 발명의 플래쉬 메모리 장치를 위한 연접 BCH 다계층 복호 방법을 도시한 도면이다.
본 발명에서는 블록 단위의 연접 BCH 부호를 사용하여 복잡도와 복호 지연 시간을 적응적으로 줄이는 연접 부호 시스템을 설계한다. 상기 연접 부호 시스템은 적어도 3개의 레벨로 구성된다.
첫 번째 레벨은 블록 단위의 연접 BCH 부호의 구성 부호에서의 오류 정정 단계이다. 상기 구성 부호는 블록 단위의 연접 BCH 부호의 일부이므로, 상기 구성 부호만을 복호하면 비교적 낮은 복잡도와 짧은 지연 시간으로 오류를 정정할 수 있다. 상기 구성 부호는 부호 길이가 상대적으로 길어 높은 부호율에서도 비교적 많은 오류를 고칠 수 있다. 상기 구성 부호는 페이지의 일부일 수 있으며 열 부호이거나 행 부호일 수 있다. 플래쉬 메모리 코어에 데이터를 저장하는 파일 시스템에서, 플래쉬 메모리 코어의 데이터 접근을 효율적으로 실행하기 위해 파일 시스템의 데이터 접근 단위 크기에 맞게 상기 구성 부호를 설계할 수 있다. 예를 들어, 512 바이트 단위로 데이터 접근을 수행하는 파일 시스템에 대해 구성 부호의 메시지 길이가 512 바이트, 즉 4096 비트가 되도록 설계하여 데이터 접근을 효율적으로 수행할 수 있다. 상기 구성 부호가 정정에 실패할 확률은 부호 길이가
Figure pat00051
, 정정 가능한 비트 수가
Figure pat00052
, 그리고 초기 오류 확률이
Figure pat00053
일 때, 수학식 14와 같다.
Figure pat00054
두 번째 레벨은 오류가 많이 발생하여 상기 구성 부호가 오류 정정에 실패했을 경우 전체 연접 BCH 부호를 복호하여 첫 번째 레벨에서 정정하지 못한 오류를 정정하는 단계이다. 연접 BCH 부호의 복호는 상기 도 4를 참조하여 설명하였다. 연접 BCH 부호는 블록 단위로 이루어져 있으므로 오류 블록에 의해 복호에 실패하게 되며, 플래쉬 메모리 코어가 동작하는 낮은 오류율 영역에서는 주로 소수의 오류 블록에 의해 복호에 실패하게 된다. 이러한 소수의 오류 블록에 의한 복호 실패 확률은 수학식 15와 같이 하계로 계산할 수 있다. 수학식 15는 예로서 모든 메시지 블록이 같은 크기인 병렬 연접 BCH 부호에서 하나의 오류 블록에 의한 복호 실패 확률을 나타낸다.
Figure pat00055
상기 수학식 15에서
Figure pat00056
는 i개의 복호 실패한 행 부호와 j개의 복호 실패한 열 부호에 의한 오류 확률을 의미하며,
Figure pat00057
는 평균 초기 비트 오류율(average raw bit error rate)을 가리킨다. 또한,
Figure pat00058
는 메시지 블록 크기,
Figure pat00059
은 하나의 행 부호의 패리티 블록 크기,
Figure pat00060
는 하나의 열 부호의 패리티 블록 크기,
Figure pat00061
는 발생한 모든 비트 오류의 개수,
Figure pat00062
는 메시지 블록에 발생한 비트 오류의 개수,
Figure pat00063
는 하나의 행 부호의 패리티 블록에 발생한 비트 오류의 개수,
Figure pat00064
는 하나의 열 부호의 패리티 블록에 발생한 비트 오류의 개수를 의미한다.
Figure pat00065
는 조건
Figure pat00066
가 만족될 때에는 1이고 그 외에는 0인 논리값이다. 이때 상기 조건
Figure pat00067
Figure pat00068
, 그리고
Figure pat00069
를 나타낸다. 즉, 하나의 오류 블록과 하나의 행 부호의 패리티 블록에 발생한 비트 오류의 개수가, 그 블록들이 속하는 행 부호가 고칠 수 없을 정도로 많고, 동시에 하나의 오류 블록과 하나의 열 부호의 패리티 블록에 발생한 비트 오류의 개수가, 그 블록들이 속하는 열 부호가 고칠 수 없을 정도로 많은 조건을 나타낸다. 수학식 16는 예로서 모든 메시지 블록이 같은 크기인 병렬 연접 BCH 부호에서 하나의 행에 있는 두 개의 오류 블록에 의한 복호 실패 확률을 나타낸다.
Figure pat00070
상기 수학식 16에서
Figure pat00071
는 i개의 복호 실패한 행 부호와 j개의 복호 실패한 열 부호에 의한 오류 확률을 의미하며,
Figure pat00072
는 평균 초기 비트 오류율(average raw bit error rate)을 가리킨다. 또한,
Figure pat00073
는 메시지 블록 크기,
Figure pat00074
은 하나의 행 부호의 패리티 블록 크기,
Figure pat00075
는 하나의 열 부호의 패리티 블록 크기,
Figure pat00076
는 발생한 모든 비트 오류의 개수,
Figure pat00077
는 첫 번째 메시지 블록에 발생한 비트 오류의 개수,
Figure pat00078
는 두 번째 메시지 블록에 발생한 비트 오류의 개수,
Figure pat00079
는 하나의 행 부호의 패리티 블록에 발생한 비트 오류의 개수,
Figure pat00080
는 첫 번째 열 부호의 패리티 블록에 발생한 비트 오류의 개수,
Figure pat00081
는 두 번째 열 부호의 패리티 블록에 발생한 비트 오류의 개수를 의미한다.
Figure pat00082
는 조건
Figure pat00083
가 만족될 때에는 1이고 그 외에는 0인 논리값이다. 이때 상기 조건
Figure pat00084
는 1)
Figure pat00085
, 2)
Figure pat00086
, 그리고 3)
Figure pat00087
를 나타낸다. 이와 같은 방식으로 하계를 구하면 도 6과 같이 연접 BCH 부호의 컴퓨터 시뮬레이션에 의한 성능 측정 결과가 하계에 의해 제한되는 것을 확인할 수 있다.
연접 BCH 부호의 성능이 하계에 의해 제한되는 것은 복호 실패가 그 하계가 가리키는 오류 블록에 의해 발생하는 것을 의미한다. 예를 들어, 도 6을 참조하면, 연접 BCH 부호를 초기 비트 오류율이 약
Figure pat00088
이하일 때 복호하면, 대부분 1개의 오류 블록에 의한 복호 실패가 발생한다.
본 발명에서 사용하는 연접 BCH 부호에서 복호 실패가 발생했을 때, 오류 블록의 위치는 복호에 실패한 구성 부호에 의해 결정된다. 따라서 오류 블록에 의한 복호 실패가 발생했을 때, 해당 오류 블록에 대해서만 추가적인 동작을 수행할 수 있다.
세 번째 레벨은 상기 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생할 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 비교적 낮은 복잡도로 추가 복호를 수행하여 두 번째 레벨보다 더 많은 오류를 정정하는 단계이다. 도 8을 참조하면, 연접 BCH 부호의 경판정 반복 복호에서 반복 종료가 선언되면, 상기 추가 복호가 진행되며, 상기 추가 복호를 위해서 상기 행 복호기와 열 복호기 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 상기 소수 오류 블록의 위치를 확정한다. 상기 추가 정보는, 상기 위치가 확정된 소수 오류 블록에 해당하는 비트들에 대한 정보로, 예를 들어, 플래쉬 메모리 코어에서 해당 비트들이 저장된 셀과 그 주변 셀을 읽어 얻거나, 해당 비트들이 저장된 셀의 문턱 전압에 대해 비트 값을 결정하는 읽기 기준 문턱 전압 값을 이전 읽기 기준 문턱 전압 값과 바꾸어 적용하여 비트 값을 결정하는 방법으로 얻을 수 있다. 상기 추가적인 복호는 상기 추가 정보를 이용하는 복호 방법으로, 예를 들어 체이스 복호(Chase decoding)와 같은 신뢰성 기반 복호(reliability-based decoding) 방법을 사용할 수 있다.
이하에서는, 본 발명의 연접 부호를 사용하는 오류 정정 회로와 종래의 오류 정정 회로들과의 성능 차이를 예를 들어 설명한다.
도 7을 참조하면, Sim.은 16 개의 행 부호((4226, 4096, 10) BCH 부호)와 16 개의 열 부호((4278, 4096, 14) BCH 부호)로 이루어진 (70528, 65536) 병렬 연접 BCH 부호의 성능을 컴퓨터 시뮬레이션한 결과이다.
Figure pat00089
는 상기 신뢰성 기반 복호 방법에서 최대 시도 횟수를 의미하며,
Figure pat00090
은 N회 최대 시도 횟수의 상기 신뢰성 기반 복호를 세 번째 레벨로 수행했을 때의 성능을 의미한다. 도 7의 예에서 신뢰성 기반 복호 방법은 일정 수의 비트만 선택하여 값을 뒤집는 방법을 사용하였다. 하나의 블록 오류에 대해 최대 시도 횟수가 512번 수행할 수 있는 신뢰성 기반 복호를 수행하면, 목표 페이지 오류율(page-error rate) 에 대해 하나의 오류 블록을 대부분 고칠 수 있음을 알 수 있다. 표 1은 도 7에 대해 최대 시도 횟수가 16, 32, 64, 128, 512 번일 때, 평균 시도 횟수가 적음을 보여준다. 이는 비교적 낮은 복잡도로 상기 세 번째 레벨의 복호가 이루어짐을 의미한다.
Figure pat00091
도 7을 참조하면, Sim.으로 표시된 세 번째 레벨의 오류 정정 능력은 Short BCH로 표시된 부호보다 뛰어남을 알 수 있다. Short BCH는 512 바이트 당 24 비트를 정정하는 BCH 부호를 8KB에 대해 적용한 부호(16개의 (4278, 4096, 24) BCH 부호)이다. Short BCH와 Sim.으로 표시된 두 부호는 같은 부호율(0.929)을 가지며 부호 길이가 같고 패리티 비트 수도 같다.
도 7을 참조하면, Sim.으로 표시된 세 번째 레벨의 오류 정정 능력은 Long BCH로 표시된 부호와 큰 차이가 없음을 알 수 있다. Long BCH는 8KB 당 295 비트를 정정하는 BCH 부호(1 개의 (70534, 65536, 295) BCH 부호)이다. Long BCH와 Sim.으로 표시된 두 부호는 같은 부호율(0.929)을 가지며 부호 길이가 거의 같고 패리티 비트 수도 거의 같다. 상기 Long BCH로 표시된 부호는 단순한 BCH 부호로 달성할 수 있는 최대의 성능을 가지나, 복잡도와 지연 시간이 지나치게 높아 현실적으로 구현이 어렵거나 플래쉬 메모리 장치에 사용할 수 없는 오류 정정 부호이다.
도 8은 본 발명의 플래쉬 메모리 장치의 추가 복호가 가능한 연접 BCH 다계층 복호 회로를 도시한 기능 블록도이다.
연접 BCH 다계층 복호 회로는 도 8에 도시된 바와 같이, 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부와, 제 1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부와, 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부와, 제 2 출력 BCH 부호 또는 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 제 1 스테이지 복호부로 출력하는 인터리빙부와, 제 1 및 제 2 스테이지 복호부에서 복호 실패 정보를 인가받고 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 인가받아 복호 실패 블록에 대해 추가 복호를 실행하는 추가 복호부를 포함하고 있다.
여기서, 제 1 스테이지 복호부는 행 복호기(Row Code Decoder)이고, 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고, 제 2 스테이지 복호부는 열 복호기(Column Code Decoder)이고, 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이다.
추가 복호부는 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생했을 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 추가 복호를 수행하여 오류를 정정한다. 이때, 추가 정보는 위치가 확정된 소수의 오류 블록에 해당하는 비트들에 대한 정보를 포함한다.
추가 복호부는 추가 복호를 위해서 제 1 및 제 2 스테이지 부호부 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 소수의 오류 블록의 위치를 확정한다. 구성 부호는 읽기(read) 및 쓰기(write) 단위인 페이지의 일부 또는 전부이거나 열(Column) 부호 또는 행(Row) 부호이다.
본 발명에 의한 플래쉬 메모리 장치의 오류 정정 회로는, 입력 데이터를 두 개 이상의 데이터로 분리한 후 각각 BCH 부호화하여 상기 분리된 데이터와 같은 개수의 행 BCH 부호를 출력하는 외부 부호부와, 행 BCH 부호 또는 그에 의해 보호되는 데이터를 다시 두 개 이상의 블록으로 나눠 그 블록들을 인터리빙하고 같은 개수의 블록을 출력하는 인터리빙부와, 인터리빙부에서 인터리빙된 블록들을 BCH 부호화하여 열 BCH 부호를 출력하는 내부 부호부와, 플래쉬 메모리 코어로부터 제공되는 저장 데이터의 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부와, 제1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록으로 나눠 디인터리빙하여 출력하는 디인터리빙부와, 디인터리빙부의 출력을 BCH 복호하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2차 스테이지 복호부와, 제2 출력 BCH 부호 또는 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 제1 스테이지 복호부로 출력하는 인터리빙부를 포함하고 있다.
본 발명의 플래쉬 메모리 장치는 기본적으로 낸드 플래쉬 메모리 장치에 적용될 수 있으나, 노어 플래쉬 메모리와 같은 다른 종류의 메모리 장치에도 적용 될 수 있다.
이와 같이 구성된 본 발명의 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치는, 플래쉬 메모리 장치를 위한 부호, 복호 및 다계층 복호를 통해서 오류 정도에 따라 지연 시간을 조정함으로써, 본 발명의 기술적 과제를 해결할 수가 있다.
이상에서 설명한 본 발명의 바람직한 실시 예들은 기술적 과제를 해결하기 위해 개시된 것으로, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자(당업자)라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가 등이 가능할 것이며, 이러한 수정 변경 등은 이하의 특허청구범위에 속하는 것으로 보아야 할 것이다.

Claims (36)

  1. 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 BCH 부호화를 수행하여 제1 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 1 스테이지 부호부;
    상기 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 인터리빙(interleaving)하여 출력하는 인터리빙부; 및
    상기 인터리빙부의 출력인 BCH 부호 또는 데이터를 BCH 부호화하여 제 2 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 2 스테이지 부호부;
    를 포함하는 연접 BCH 부호 회로.
  2. 제 1 항에 있어서,
    상기 제 1 스테이지 부호부는 행 부호기(Row Code Encoder)이고,
    상기 제 2 스테이지 부호부는 열 부호기(Column Code Encoder)인 연접 BCH 부호 회로.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 1 및 제 2 스테이지 부호부는 적어도 해당 부호의 패리티 블록을 출력하는 연접 BCH 부호 회로.
  4. 제 1 항에 있어서, 상기 연접 BCH 부호 회로는:
    상기 제 1 및 제 2 스테이지 부호부의 출력을 조합하여 상기 플래쉬 메모리 코어에 저장될 코드워드를 생성하는 연접 BCH 부호 회로.
  5. 플래쉬 메모리 코어로 입력되는 데이터 중 일부 또는 전부를 인가받아 BCH 부호화를 수행하여 제 1 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 1 스테이지 부호부;
    상기 제 1 출력 BCH 부호 또는 그에 의해 보호되는 데이터를 인터리빙(interleaving)하여 출력하는 인터리빙부; 및
    상기 인터리빙부의 출력인 BCH 부호 또는 데이터를 BCH 부호화하여 제 2 출력 BCH 부호 또는 그 패리티 비트를 출력하는 제 2 스테이지 부호부;
    를 포함하는 연접 BCH 부호 회로.
  6. 제 5 항에 있어서,
    상기 제 1 스테이지 부호부는 행 부호기(Row Code Encoder)이고,
    상기 제 2 스테이지 부호부는 열 부호기(Column Code Encoder)인 연접 BCH 부호 회로.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 제 1 및 제 2 스테이지 부호부는 적어도 해당 부호에 맞는 메시지 블록과 패리티 블록을 동시에 출력하여 저장될 코드워드를 생성하는 연접 BCH 부호 회로.
  8. 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부;
    상기 제 1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부;
    상기 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부; 및
    상기 제 2 출력 BCH 부호 또는 상기 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제 1 스테이지 복호부로 출력하는 인터리빙부;
    를 포함하는 연접 BCH 복호 회로.
  9. 제 8 항에 있어서, 상기 연접 BCH 복호 회로는:
    반복 복호 방식으로 열(Column) 복호와 행(Row) 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료하는 연접 BCH 복호 회로.
  10. 제 8 항에 있어서,
    상기 제 1 스테이지 복호부는 열 복호기(Column Code Decoder)이고,
    상기 제 2 스테이지 부호부는 행 복호기(Row Code Decoder)이고,
    상기 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고,
    상기 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)인 연접 BCH 복호 회로.
  11. 제 8 항에 있어서, 상기 연접 BCH 복호 회로는:
    상기 제 1 및 제 2 스테이지 복호부에서 열(Column) 및 행(Row) 복호에 성공하면 상기 제 1 및 제 2 스테이지 복호부의 출력을 조합하여 상기 플래쉬 메모리 코어에 저장될 코드워드를 생성하는 연접 BCH 복호 회로.
  12. 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제 1 출력 BCH 부호 또는 그에 의해 보호되는 제 1 출력 데이터를 출력하는 제 1 스테이지 복호부;
    상기 제 1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록(block)으로 나눠 디인터리빙(de-interleaving)하여 출력하는 디인터리빙부;
    상기 디인터리빙부의 출력을 BCH 복호하여 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 출력하는 제 2 스테이지 복호부;
    상기 제 2 출력 BCH 부호 또는 상기 제 2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제 1 스테이지 복호부로 출력하는 인터리빙부; 및
    상기 제 1 및 제 2 스테이지 복호부에서 복호 실패 정보를 인가받고 상기 제 2 출력 BCH 부호 또는 그에 의해 보호되는 제 2 출력 데이터를 인가받아 복호 실패 블록에 대해 추가 복호를 실행하는 추가 복호부;
    를 포함하는 연접 BCH 다계층 복호 회로.
  13. 제 12 항에 있어서,
    상기 제 1 스테이지 복호부는 열 복호기(Column Code Decoder)이고,
    상기 제 2 스테이지 부호부는 행 복호기(Row Code Decoder)이고,
    상기 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고,
    상기 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)인 연접 BCH 다계층 복호 회로.
  14. 제 12 항에 있어서, 상기 추가 복호부는:
    연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생했을 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 추가 복호를 수행하여 오류를 정정하는 연접 BCH 다계층 복호 회로.
  15. 제 14 항에 있어서,
    상기 추가 정보는 위치가 확정된 소수의 오류 블록에 해당하는 비트들에 대한 정보를 포함하는 연접 BCH 다계층 복호 회로.
  16. 제 14 항에 있어서, 상기 추가 복호부는:
    상기 추가 복호를 위해서 상기 제 1 및 제 2 스테이지 복호부 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 상기 소수의 오류 블록의 위치를 확정하는 연접 BCH 다계층 복호 회로.
  17. 제 16 항에 있어서,
    상기 구성 부호는 읽기(read) 및 쓰기(write) 단위인 페이지의 일부 또는 전부이거나 열(Column) 부호 또는 행(Row) 부호인 연접 BCH 다계층 복호 회로.
  18. 입력 데이터를 두 개 이상의 데이터로 분리한 후 각각 BCH 부호화하여 상기 분리된 데이터와 같은 개수의 행 BCH 부호를 출력하는 외부 부호부;
    상기 행 BCH 부호 또는 그에 의해 보호되는 데이터를 다시 두 개 이상의 블록으로 나눠 그 블록들을 인터리빙하고 같은 개수의 블록을 출력하는 인터리빙부;
    상기 인터리빙부에서 인터리빙된 블록들을 BCH 부호화하여 열 BCH 부호를 출력하는 내부 부호부;
    플래쉬 메모리 코어로부터 제공되는 저장 데이터의 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부;
    상기 제1 출력 BCH 부호 또는 상기 제1 출력 데이터를 두 개 이상의 블록으로 나눠 디인터리빙하여 출력하는 디인터리빙부;
    상기 디인터리빙부의 출력을 BCH 복호하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2차 스테이지 복호부; 및
    상기 제2 출력 BCH 부호 또는 상기 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제1 스테이지 복호부로 출력하는 인터리빙부;
    를 포함하는 플래쉬 메모리 장치의 오류 정정 회로.
  19. (a) 블록 단위의 연접 BCH 부호의 구성 부호를 복호하여 오류를 정정하는 단계;
    (b) 상기 구성 부호의 오류 정정에 실패했을 경우 전체 연접 BCH 부호를 복호하여 상기 (a)단계에서 정정하지 못한 오류를 정정하는 단계; 및
    (c) 상기 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생했을 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 추가 복호를 수행하여 오류를 정정하는 단계;
    를 포함하는 연접 BCH 다계층 복호 방법.
  20. 제 19 항에 있어서,
    상기 연접 BCH 부호는 비트의 묶음으로 이루어진 블록 단위로 구성된 연접 BCH 다계층 복호 방법.
  21. 제 20 항에 있어서,
    상기 블록은 메시지 블록(message block), 패리티 블록(parity block)을 포함하거나 상기 메시지 블록 뒤에 상기 패리티 블록이 합쳐진 메시지-패리티 블록을 포함하는 연접 BCH 다계층 복호 방법.
  22. 제 19 항에 있어서,
    상기 연접 BCH 부호는 행 부호(Row Code), 열 부호(Column Code)를 포함하는 연접 BCH 다계층 복호 방법.
  23. 제 22 항에 있어서,
    상기 행 부호 및 열 부호는 복수 개의 메시지 블록과 하나 이상의 패리티 블록으로 각각 이루어진 연접 BCH 다계층 복호 방법.
  24. 제 19 항에 있어서,
    상기 연접 BCH 부호는 메시지 매트릭스를 구성하는 각 메시지 블록이 동일한 수의 비트를 포함하는 병렬 연접으로 구성된 연접 BCH 다계층 복호 방법.
  25. 제 24 항에 있어서, 상기 연접 BCH 부호는:
    하나의 행 부호와 하나의 열 부호가 항상 하나의 블록만을 서로 공유하고 그 외의 블록들은 서로 공유하지 않으며,
    상기 하나의 행 부호(또는 열 부호)는 모든 열 부호(또는 행 부호)와 블록을 하나씩만 공유하는 연접 BCH 다계층 복호 방법.
  26. 제 19 항에 있어서,
    상기 연접 BCH 부호는 메시지 매트릭스를 구성하는 각 메시지 블록과 메시지-패리티 블록이 동일한 수의 비트를 포함하는 직렬 연접으로 구성된 연접 BCH 다계층 복호 방법.
  27. 제 19 항에 있어서,
    상기 연접 BCH 부호는 플래쉬 메모리 장치에 데이터를 저장하는 파일 시스템의 데이터 접근 단위 크기에 맞게 상기 구성 부호의 메시지 길이를 정하는 연접 BCH 다계층 복호 방법.
  28. 제 19 항에 있어서,
    상기 구성 부호는 읽기(read) 및 쓰기(write) 단위인 페이지의 일부 또는 전부이거나 열(Column) 부호 또는 행(Row) 부호인 연접 BCH 다계층 복호 방법.
  29. 제 19 항에 있어서, 상기 (c)단계에서 상기 추가 복호는:
    상기 연접 BCH 부호의 경판정 반복 복호에서 반복 종료가 선언되면 진행되는 연접 BCH 다계층 복호 방법.
  30. 제 19 항에 있어서, 상기 연접 BCH 다계층 복호 방법은:
    상기 추가 복호를 위해서 행(Row) 복호기와 열(Column) 복호기 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 상기 소수의 오류 블록의 위치를 확정하는 연접 BCH 다계층 복호 방법.
  31. 제 19 항에 있어서,
    상기 추가 정보는 위치가 확정된 소수의 오류 블록에 해당하는 비트들에 대한 정보를 포함하는 연접 BCH 다계층 복호 방법.
  32. 제 19 항에 있어서,
    상기 추가 정보는 플래쉬 메모리 코어에서 해당 비트들이 저장된 셀과 그 주변 셀을 읽어 얻거나, 해당 비트들이 저장된 셀의 문턱 전압에 대해 비트 값을 결정하는 읽기 기준 문턱 전압 값을 이전 읽기 기준 문턱 전압 값과 바꾸어 적용하여 비트 값을 결정하는 방법으로 획득하는 연접 BCH 다계층 복호 방법.
  33. 제 19 항에 있어서,
    상기 추가 복호는 체이스 복호(Chase decoding)와 같은 신뢰성 기반 복호(reliability-based decoding) 방법을 사용하는 연접 BCH 다계층 복호 방법.
  34. 제 19 항에 있어서,
    상기 연접 BCH 부호에서 복호 실패가 발생했을 때 오류 블록의 위치는 복호에 실패한 구성 부호에 의해 결정되는 연접 BCH 다계층 복호 방법.
  35. 제 19 항에 있어서,
    상기 블록 단위의 연접 BCH 부호가 경판정 반복 복호에 실패했을 경우, 소수의 오류 블록에 대해 추가 정보를 얻어 오류 블록을 정정하여 오류 마루를 해결하는 연접 BCH 다계층 복호 방법.
  36. 제 19 항 내지 제 35 항 중 어느 한 항에 기재된 연접 BCH 다계층 복호 방법을 이용한 플래쉬 메모리 장치.
KR1020110120623A 2011-11-18 2011-11-18 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 KR101320684B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110120623A KR101320684B1 (ko) 2011-11-18 2011-11-18 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US13/678,812 US9166626B2 (en) 2011-11-18 2012-11-16 Encoding, decoding, and multi-stage decoding circuits for concatenated BCH, and error correction circuit of flash memory device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110120623A KR101320684B1 (ko) 2011-11-18 2011-11-18 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Publications (2)

Publication Number Publication Date
KR20130055095A true KR20130055095A (ko) 2013-05-28
KR101320684B1 KR101320684B1 (ko) 2013-10-18

Family

ID=48663671

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110120623A KR101320684B1 (ko) 2011-11-18 2011-11-18 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Country Status (1)

Country Link
KR (1) KR101320684B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150023087A (ko) * 2013-08-22 2015-03-05 에스케이하이닉스 주식회사 연접 bch 부호화 방법, 부호화 장치 및 신뢰성 기반 복호화 방법
KR101506207B1 (ko) * 2013-10-24 2015-03-26 라이트웍스 주식회사 기가 비트 수동형 광 네트워크를 위한 비씨에이치 코드 구성 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102606866B1 (ko) 2016-03-16 2023-11-29 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
KR102369313B1 (ko) 2017-08-18 2022-03-03 에스케이하이닉스 주식회사 에러 정정 회로, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100891332B1 (ko) * 2007-03-30 2009-03-31 삼성전자주식회사 에러 정정 부호화기를 이용하여 에러를 체크하는 bch에러 정정 방법 및 회로
JP5007676B2 (ja) 2008-01-31 2012-08-22 富士通株式会社 符号化装置、復号化装置、符号化・復号化装置及び記録再生装置
JP5166074B2 (ja) * 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
JP5467270B2 (ja) 2010-04-28 2014-04-09 国立大学法人 東京大学 データ入出力制御装置および半導体記憶装置システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150023087A (ko) * 2013-08-22 2015-03-05 에스케이하이닉스 주식회사 연접 bch 부호화 방법, 부호화 장치 및 신뢰성 기반 복호화 방법
KR101506207B1 (ko) * 2013-10-24 2015-03-26 라이트웍스 주식회사 기가 비트 수동형 광 네트워크를 위한 비씨에이치 코드 구성 방법

Also Published As

Publication number Publication date
KR101320684B1 (ko) 2013-10-18

Similar Documents

Publication Publication Date Title
US9166626B2 (en) Encoding, decoding, and multi-stage decoding circuits for concatenated BCH, and error correction circuit of flash memory device using the same
US8560930B2 (en) Systems and methods for multi-level quasi-cyclic low density parity check codes
US9710327B2 (en) Flash memory system and operating method thereof
US11016844B2 (en) Error correction code structure
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
US20150155888A1 (en) Concatenated error correction device
US11082069B1 (en) Decoding scheme for error correction code structure in data storage devices
US11632135B2 (en) Apparatuses and methods for interleaved BCH codes
KR102098202B1 (ko) 부호화 장치 및 그의 부호화 방법
US10481971B2 (en) Encoding device, memory controller, communication system, and encoding method
KR101320684B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
JP2019057752A (ja) メモリシステム
US9639421B2 (en) Operating method of flash memory system
KR101913900B1 (ko) 조기 디코딩 종료 검출을 갖는 디코더
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US8627183B1 (en) Systems and methods for storing variable rate product codes
CN109935263B (zh) 非易失性存储器的编译码方法及存储系统
CN110795271A (zh) 对用户数据执行纠错的纠错电路和使用其的纠错方法
KR102007163B1 (ko) 인코더, 디코더 및 이를 포함하는 반도체 장치
KR101355986B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
KR101357544B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US11258464B1 (en) Codeword concatenation for correcting errors in data storage devices
KR101496052B1 (ko) 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로

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
FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170928

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 6