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

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

Info

Publication number
KR101355986B1
KR101355986B1 KR1020120073371A KR20120073371A KR101355986B1 KR 101355986 B1 KR101355986 B1 KR 101355986B1 KR 1020120073371 A KR1020120073371 A KR 1020120073371A KR 20120073371 A KR20120073371 A KR 20120073371A KR 101355986 B1 KR101355986 B1 KR 101355986B1
Authority
KR
South Korea
Prior art keywords
decoding
output
bch
code
axis
Prior art date
Application number
KR1020120073371A
Other languages
English (en)
Other versions
KR20140006445A (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 KR1020120073371A priority Critical patent/KR101355986B1/ko
Priority to US13/678,812 priority patent/US9166626B2/en
Publication of KR20140006445A publication Critical patent/KR20140006445A/ko
Application granted granted Critical
Publication of KR101355986B1 publication Critical patent/KR101355986B1/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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Landscapes

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

Abstract

본 발명은 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치에 관한 것으로,
본 발명에 의한 연접 BCH 복호 회로는, 플래쉬 메모리 장치로부터 제공되는 저장 데이터 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부; 상기 제1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제1 출력 BCH 부호 또는 제1 출력 데이터의 방향성을 변환하는 제1 인터리빙부; 상기 제1 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2 스테이지 복호부; 상기 제2 출력 BCH 부호 또는 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제2 출력 BCH 부호 또는 제2 출력 데이터의 방향성을 변환하는 제2 인터리빙부; 상기 제2 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제3 출력 BCH 부호 또는 그에 의해 보호되는 제3 출력 데이터를 출력하는 제3 스테이지 복호부; 및 상기 제3 출력 BCH 부호 또는 제3 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제3 출력 BCH 부호 또는 제3 출력 데이터의 방향성을 변환한 후 상기 제1 스테이지 복호부로 출력하는 제3 인터리빙부를 포함하고 있다.

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 부호를 통해서 플래쉬 메모리에 대한 오류 정정 성능을 향상시키고, 다계층 복호를 통해서 오류 정도에 따라 지연 시간을 조정하고, 이에 더 나아가 부호의 물리적 차원을 증가시킴으로써 오류 정정 능력을 향상시켜 줄 수 있도록 하는 연접 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 부호, 복호 및 다계층 복호 회로 및 방법을 제시하는 데 있다.
또한, 부호를 3차원 매트릭스 형태로 구성하거나, 부호 내 메시지 블록의 조합을 다양화함으로써 오류 정정 능력을 향상시켜 줄 수 있도록 하는 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법을 제시하는 데 있다.
그리고, 본 발명이 이루고자 하는 다른 기술적 과제는, 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치를 제시하는 데 있다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명의 제1형태에 따른 연접 BCH 부호 회로는, 플래쉬 메모리 장치로부터 제공되는 저장 데이터 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부; 상기 제1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제1 출력 BCH 부호 또는 제1 출력 데이터의 방향성을 변환하는 제1 인터리빙부; 상기 제1 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2 스테이지 복호부; 상기 제2 출력 BCH 부호 또는 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제2 출력 BCH 부호 또는 제2 출력 데이터의 방향성을 변환하는 제2 인터리빙부; 상기 제2 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제3 출력 BCH 부호 또는 그에 의해 보호되는 제3 출력 데이터를 출력하는 제3 스테이지 복호부; 및 상기 제3 출력 BCH 부호 또는 제3 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제3 출력 BCH 부호 또는 제3 출력 데이터의 방향성을 변환한 후 상기 제1 스테이지 복호부로 출력하는 제3 인터리빙부를 포함할 수 있다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명의 제2형태에 따른 연접 BCH 부호 회로는, 플래쉬 메모리 장치로부터 제공되는 저장 데이터 일부 또는 인터리빙 결과를 인가받아 BCH 복호를 수행하는 다수개의 스테이지 복호부; 및 서로 상이한 스테이지 복호부 사이에 위치하여, 앞단의 스테이지 복호부의 복호 결과를 블록 단위로 인터리빙하여 데이터 방향성을 변환한 후, 뒷단의 스테이지 복호부에 제공하는 다수의 인터리빙부를 포함하는 연접 BCH 복호 회로를 제공한다.
여기서, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 3차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 x축, y축, z축에 각각 할당된 x축 패리티 정보, y축 패리티 정보, 및 z축 패리티 정보를 포함할 수 있다.
더하여, 상기 연접 BCH 복호 회로는 반복 복호 방식으로 x축 복호, y축 복호, z축 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료할 수 있다.
또한, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 또한, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 2차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호에 대해 3가지 이상의 방향성을 가지도록 할당된 다수의 패리티 정보를 포함할 수 있다.
이때의 상기 다수의 패리티 정보는 상기 다수의 부호의 열 방향, 행 방향, 그리고 대각선 방향에 각각 할당된 열 방향 패리티 정보, 행 방향 패리티 정보, 및 대각선 방향 패리티 정보를 포함할 수 있다.
더하여, 상기 연접 BCH 복호 회로는 반복 복호 방식으로 열 방향, 행 방향, 대각선 방향 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료할 수 있다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명의 제3 형태에 따른 연접 BCH 다계층 복호 방법은 제1 스테이지 복호부가 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 생성한 후, 1차 인터리빙(de-interleaving)하여 데이터 방향성을 변환하는 단계; 제2 스테이지 복호부가 상기 1차 인터리빙 결과를 BCH 복호를 수행하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 생성한 후, 2차 인터리빙(de-interleaving)하여 데이터 방향성을 변환하는 단계; 제3 스테이지 복호부가 상기 2차 인터리빙 결과를 BCH 복호를 수행하여 제3 출력 BCH 부호 또는 그에 의해 보호되는 제3 출력 데이터를 생성한 후, 반복 복호 수행 여부를 확인하는 단계; 및 반복 복호시에는 상기 제3 출력 BCH 부호 또는 제3 출력 데이터를 3차 인터리빙하여 상기 제1 스테이지 복호부로 출력하고, 그렇지 않으면 반복 복호 동작을 종료하는 단계를 포함할 수 있다.
여기서, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 3차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 x축, y축, z축에 각각 할당된 x축 패리티 블록, y축 패리티 블록, 및 z축 패리티 블록를 포함할 수 있다.
더하여, 상기 연접 BCH 다계층 복호 방법은 반복 복호 방식으로 x축 복호, y축 복호, z축 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료할 수 있다.
또한, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 2차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호에 대해 3가지 이상의 방향성을 가지도록 할당된 다수의 패리티 정보를 포함할 수 있다.
이때의 상기 다수의 패리티 정보는 상기 다수의 부호의 열 방향, 행 방향, 그리고 대각선 방향에 각각 할당된 열 방향 패리티 정보, 행 방향 패리티 정보, 및 대각선 방향 패리티 정보를 포함할 수 있다.
2차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 열 방향, 행 방향, 그리고 대각선 방향에 각각 할당된 열 방향 패리티 블록, 행 방향 패리티 블록, 및 대각선 방향 패리티 블록를 포함할 수 있다.
더하여, 상기 연접 BCH 다계층 복호 방법은 반복 복호 방식으로 열 방향, 행 방향, 대각선 방향 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료할 수 있다.
그리고 상기 다수의 부호 각각은 동일한 메시지 길이를 가지며, 메시지 부분과 패리티 부분이 완벽히 구분이 되는 체계적 부호(systematic code) 인 것을 특징으로 한다.
상기 다수의 부호 각각은 비트의 묶음으로 이루어진 블록 단위로 구성될 수 있으며, 상기 메시지 길이는 플래쉬 메모리 장치에 데이터를 저장하는 파일 시스템의 데이터 접근 단위 크기에 의해 결정될 수 있다.
본 발명에 따르면, BCH 부호를 외부 및 내부 부호로 하되 외부 부호를 블록 단위로 인터리빙하여 내부 부호로 부호화하고, 부호화된 저장 데이터를 오류 정도에 따라 다계층으로 복호하여 외부 부호 또는 내부 부호 중 어느 하나에 대해서만 복호하거나, 오류가 완전히 고쳐지거나 더 이상 고칠 수 없을 때까지 내부 부호와 외부 부호의 복호를 반복적으로 수행하거나, 또는 블록 단위의 오류가 발생했을 때 추가 정보를 얻어 복호를 수행하여, 에러 정정 능력을 향상시킴과 동시에 복호 지연 시간을 적응적으로 줄일 수 있다.
또한, 오류가 적어 외부 부호 또는 내부 부호의 복호로 오류가 정정되는 경우, 전체 데이터의 일부분인 작은 크기의 데이터에 대한 접근이 용이해진다.
더하여, 부호를 3차원 매트릭스 형태로 구성하거나 부호 내 메시지 블록의 조합을 다양화한 후, 복호화 동작의 차원 수를 증가시켜 줌으로써, 각각의 부호가 보다 많은 패리티 블록을 이용하여 오류 정정될 수 있도록 함으로써, 오류 정정 능력을 향상될 수 있도록 한다.
도 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 복호 회로를 도시한 기능 블록도이다.
도 5a는 본 발명의 다른 실시예에 따른 연접 BCH 부호의 구조를 도시한 도면이다.
도 5b는 본 발명의 또 다른 실시예에 따른 연접 BCH 부호의 구조를 도시한 도면이다.
도 6은 본 발명의 다른 실시예에 따른 플래쉬 메모리 장치를 위한 연접 BCH 복호 회로의 기능 블록을 도시한 기능 블록도이다.
도 7은 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 연접 BCH 다계층 복호 방법을 도시한 도면이다.
도 8은 본 발명의 블록 단위의 오류에 의한 하계(lower bound) 및 실험 결과를 비교한 도면이다.
도 9은 본 발명의 하나의 블록 오류를 해결하는 추가 정보를 이용한 복호 방법의 실험 결과와 기존 BCH 부호의 성능을 비교한 도면이다.
도 10은 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 추가 복호가 가능한 연접 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 부호이다. 행 부호는 총 nr 비트, 보호하는 메시지 kr 비트, 패리티 mr 비트로 부호 전체 내에서 tr개의 비트 오류를 고칠 수 있다. 열 부호는 총 nc 비트, 보호하는 메시지 kc 비트, 패리티 mc 비트로 부호 전체 내에서 tc개의 비트 오류를 고칠 수 있다.
이후, 본 발명의 실시예에 대한 설명에서 연접 BCH 부호로 보호되는 데이터의 크기는 k(k는 자연수)이다.
도 2a는 본 발명에서 사용하는 연접 BCH 부호가 병렬 연접으로 구성된 형태의 구조도이다.
도 2a를 참조하면, 데이터는 메시지 블록으로 이루어진 kr B× kc B 크기의 메시지 매트릭스에 해당된다. 하나의 행 부호는 메시지 블록 kc B 개와 하나 이상의 패리티 블록으로 이루어진다. 하나의 열 부호는 메시지 블록 kr B개와 하나 이상의 패리티 블록으로 이루어진다.
예를 들어 다음과 같이, 각 메시지 블록이 동일하게 nB개의 비트를 포함하는, 병렬 연접 BCH 부호의 구성이 가능하다. 도 2a를 참조하면, i번째 행 부호는 i번째 행의 메시지 블록들과 i번째 행의 패리티 블록으로 이루어지며, 수학식 1과 같이 나타낼 수 있다.
Figure 112012053923133-pat00001
도 2a를 참조하면, j번째 열 부호는 j번째 열의 메시지 블록들과 j번째 열의 패리티 블록으로 이루어지며, 수학식 2와 같이 나타낼 수 있다.
Figure 112012053923133-pat00002
이때, 행 부호의 메시지 길이는 수학식 3과 같이 나타낼 수 있다.
Figure 112012053923133-pat00003
또한, 행 부호의 부호 길이는 수학식 4와 같이 나타낼 수 있다.
Figure 112012053923133-pat00004
마찬가지로, 열 부호의 메시지 길이는 수학식 5과 같이 나타낼 수 있다.
Figure 112012053923133-pat00005
마찬가지로, 열 부호의 부호 길이는 수학식 6과 같이 나타낼 수 있다.
Figure 112012053923133-pat00006
이때, 병렬 연접 BCH 부호의 부호율(code rate)은 수학식 7과 같이 나타낼 수 있다.
Figure 112012053923133-pat00007
상기 실시예에서 메시지 블록은 개의
Figure 112012053923133-pat00008
비트를 포함하며 모든 메시지 블록의 크기는 같다.
인터리빙을 다르게 하여 다른 열마다 다른 크기의 메시지 블록을 가지고 하나의 열 내에서만 같은 크기의 메시지 블록을 가지는 실시예에 대해, 행 부호는 상기 수학식 1과 같고, 열 부호는 수학식 8과 같이 나타낼 수 있다.
Figure 112012053923133-pat00009
where f(x) ={(x-1) mod kc B} +1
도 2b는 본 발명에서 사용하는 연접 BCH 부호가 직렬 연접으로 구성된 형태의 구조도이다.
도 2b를 참조하면, 데이터는 메시지 블록으로 할당되며, 각 행의 마지막 메시지 블록은 그 행의 행 부호의 패리티 블록 또는 그 일부와 합쳐져 메시지-패리티 블록이 된다. 열 부호의 패리티 블록을 제외하고, 메시지 블록, 각 행의 메시지-패리티 블록, 그리고 각 행의 여분의 패리티 블록은 kr B ×kc B 크기의 메시지 매트릭스를 이룬다. 하나의 행 부호는 메시지 블록 kc B -1 개와 하나의 메시지-패리티 블록으로 이루어진다. 하나의 열 부호는 메시지 블록 또는 메시지-패리티 블록 kr B개와 하나의 패리티 블록으로 이루어진다. 직렬 연접 BCH 부호의 경우, 열 부호가 행 부호보다 오류를 더 많이 정정할 수 있게(tr≤tc) 설계될 수 있다.
예를 들어 다음과 같이, 각 메시지 블록과 메시지-패리티 블록이 동일하게 nB개의 비트를 포함하는, 직렬 연접 BCH 부호의 구성이 가능하다. 도 2b를 참조하면, i번째 행 부호는 i번째 행의 메시지 블록들과 i번째 행의 패리티 블록으로 이루어지며, 상기 수학식 1과 같이 나타낼 수 있다.
도 2b를 참조하면, j번째 열 부호는 j번째 열의 메시지 블록들과 j번째 열의 패리티 블록으로 이루어지며, 1≤j≤kc B에 대해 수학식 9와 같이 나타낼 수 있다.
Figure 112012053923133-pat00010
j=kc B의 경우, 수학식 10과 같이 나타낼 수 있다.
Figure 112012053923133-pat00011
이때, 행 부호의 메시지 길이는 수학식 11과 같이 나타낼 수 있다.
Figure 112012053923133-pat00012
또한, 행 부호의 부호 길이는 수학식 12와 같이 나타낼 수 있다.
Figure 112012053923133-pat00013
마찬가지로, 열 부호의 메시지 길이는 수학식 13과 같이 나타낼 수 있다.
Figure 112012053923133-pat00014
마찬가지로, 열 부호의 부호 길이는 상기 수학식 6과 같이 나타낼 수 있다.
이때, 직렬 연접 BCH 부호의 부호율(code rate)은 상기 수학식 7과 같이 나타낼 수 있다.
상기 직렬 연접 BCH 부호의 실시예에서 각 메시지 블록과 메시지-패리티 블록은
Figure 112012053923133-pat00015
개의 비트를 포함하며, 모든 메시지 블록과 메시지-패리티 블록의 크기는 서로 같다.
인터리빙을 다르게 하여 다른 열마다 다른 크기의 메시지 블록을 가지고 하나의 열 내에서만 같은 크기의 메시지 블록을 가지는 실시예에 대해, 행 부호는 상기 수학식 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)는 mr (1), … ,
Figure 112012053923133-pat00016
로 나뉘어져 행 부호기(Row Code Encoder)에 인가되거나 블록 단위 인터리버(Block-wise Interleaver)에 인가되어 mc (1), … ,
Figure 112012053923133-pat00017
로 바뀌어 열 부호기(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을 참조하면, 플래쉬 메모리 장치에 저장하기 위해 입력된 데이터는 mr (1), … ,
Figure 112012053923133-pat00018
로 나뉘어져 행 부호기에 인가된다. 행 부호는 블록 단위 인터리버에 인가되어 mc (1), … ,
Figure 112012053923133-pat00019
로 바뀌어 열 부호기에 인가된다. 행 부호기와 열 부호기는 체계적 부호기(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 스테이지 복호부는 다수의 열 복호기(Column Code Decoder)이고, 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고, 제 2 스테이지 복호부는 다수의 열 복호기(Row Code Decoder)이고, 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이다.
연접 BCH 복호 회로는 반복 복호 방식으로, 열 복호와 행 복호를 반복한다. 최대 반복 횟수 또는 반복 종료 조건에 의해 반복 종료가 선언된다. 반복 종료 조건은, 한 번의 반복 동안, 열 부호와 행 부호 중 그 이전 반복까지 복호에 실패했던 부호 모두가 복호에 계속 실패하는 조건일 수 있다. 이 조건은 반복 복호를 계속 진행해도 더 이상 오류가 고쳐지지 않는 상태를 의미한다.
도 4를 참조하면, 플래쉬 메모리 장치의 메모리 셀에서 읽힌 n 비트의 저장 데이터는 kc B개의 열 부호로 나뉘어 열 복호기에 인가되어 BCH 복호기로 복호된 뒤, kc B개의 열 메시지로 출력된다. kc B개의 열 메시지는 블록 단위의 디인터리버를 거쳐 나오되, 병렬 연접 BCH 부호의 경우 kr B개의 행 메시지로, 직렬 연접 BCH 부호의 경우 행 메시지를 포함하는 kr B개의 행 부호로 출력된다. 상기 열 복호기가 kc B개의 열 부호 모두에 대해 복호에 성공하면, 상기 행 메시지 또는 행 부호의 일부인 행 메시지는 바로 데이터로 출력된다. 그렇지 않은 경우, 상기 kr B개의 행 메시지 또는 행 부호는 행 복호기에 인가되어 BCH 복호기로 복호된 뒤, kr B개의 행 메시지 또는 행 메시지를 포함하는 kr B개의 행 부호로 출력된다. 반복 종료가 선언되거나 행 복호기가 kr B개의 행 부호 모두에 대해 복호에 성공하면, 상기 행 메시지 또는 행 부호에 포함된 행 메시지는 바로 데이터로 출력된다. 그렇지 않은 경우, 블록 단위의 인터리버에 인가되어 kc B개의 열 메시지가 출력된다. 반복 복호를 진행하기 위해 상기 kc B개의 열 메시지는 상기 열 복호기에 다시 인가된다.
참고로, 본 발명에서 사용하는 연접 BCH 부호 및 복호 과정은 기본적으로 행부호와 열부호를 이용해 블록이 두개의 독립적인 행/열부호로 보호하는 데. 이러한 경우 메시지가 중복되어 부호로 보호받았기 때문에 구성 부호의 길이가 짧더라도 오류 정정 능력이 우수해진다. 만약, 메시지가 중복되어 보호받는 횟수를 늘이게 된다면 추가적인 패리티 블록가 필요해 부호율이 낮아지지만 오류 정정 능력이 우수하게 부호를 설계할 수 있을 것이다.
이에 본 발명에서는 메시지 블록이 중복되게 보호받는 횟수를 늘리는 방법을 제안하고자 한다. 첫 번째 방법으로는 도5a에서와 같이 첫째로 부호를 이루고 있는 물리적인 차원을 늘려 2차원 부호(행/열 부호)가 아닌 3차원 부호(X/Y/Z축 부호)로 확장하는 방법이 있고, 두번째 방법으로는 도5b에서와 같이 2차원 부호에서도 메시지 블록을 조합(행/열/대각선)하는 방법을 바꾸어 패리티 블록를 만들어내는 방법이 있다.
더욱 상세하게는 플래쉬 메모리 장치로부터 제공되는 데이터가 도5a의 구조를 가지는 경우, 상기 데이터는 3차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 x축, y축, z축에 각각 할당된 x축 패리티 블록, y축 패리티 블록, 및 z축 패리티 블록를 포함할 수 있으며, 도5b의 구조를 가지는 경우, 상기 데이터는 2차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 열 방향, 행 방향, 그리고 대각선 방향에 각각 할당된 열 방향 패리티 블록, 행 방향 패리티 블록, 및 대각선 방향 패리티 블록를 포함할 수 있다.
더하여, 이때의 부호는 2차 매트릭스 구조를 가지는 부호 특성을 그대로 가지도록 한다. 예를 들어, 부호 각각은 동일한 메시지 길이를 가지며, 메시지 부분과 패리티 부분이 완벽히 구분이 되는 체계적 부호(systematic code)이며, 비트의 묶음으로 이루어진 블록 단위로 구성될 수 있다. 이때의 상기 메시지 길이는 플래쉬 메모리 장치에 데이터를 저장하는 파일 시스템의 데이터 접근 단위 크기에 의해 결정될 수 있다.
도 6은 본 발명의 다른 실시예에 따른 플래쉬 메모리 장치를 위한 연접 BCH 복호 회로의 기능 블록을 도시한 기능 블록도로, 이는 도5a 및 도5b에서와 같이 부호를 이루고 있는 물리적 차원을 2차원에서 3차원으로 확장할 수 있도록 하는 구조를 제안한다.
도6의 연접 BCH 복호 회로는 연접 BCH 부호 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부와, 제1 스테이지 복호부의 제1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 X축 부호에서 Y축 부호로(또는 열 부호에서 행 부호로) 변환하는 제1 인터리빙부와, 제1 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2 스테이지 복호부와, 제2 스테이지 복호부의 제2 출력 BCH 부호 또는 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 Y축 부호에서 Z축 부호로(또는 행 부호에서 대각선 부호로) 변환하는 제2 인터리빙부와, 제2 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제3 출력 BCH 부호 또는 그에 의해 보호되는 제3 출력 데이터를 출력하는 제3 스테이지 복호부와, 제3 스테이지 복호부의 제3 출력 BCH 부호 또는 제3 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 Z축 부호에서 X축 부호로(또는 대각선 부호에서 열 부호로) 변환하는 제3 인터리빙부을 포함하고 있다.
여기서, 제1 내지 제3 스테이지 복호부는 서로 상이한 방향성을 가지는 부호를 블록 단위로 복호할 수 있는 다수의 복호기(Decoder)로 구성되고, 제1 내지 제3 인터리빙부는 부호의 방향성을 변화시켜 줄 수 있는 블록 단위 인터리버(Block-wise Interleaver)로 구현된다.
계속하여 도6을 참조하여, 연접 BCH 복호 회로는 동작을 설명하면 다음과 같다. 다만, 도6에서는 설명의 편이를 위해, 도5a의 구조를 가지는 연접 BCH 부호를 복호화하는 경우에 한해 설명하기로 한다.
먼저, 플래쉬 메모리 코어의 메모리 셀에서 읽힌 n 비트의 저장 데이터가 개의 x축 부호로 나뉘어 제1 스테이지 복호부의 다수의 복호기 각각에 인가된다.
그러면,
Figure 112012053923133-pat00020
개의 x축 부호로 나뉘어 제1 스테이지 복호부의 다수의 복호기를 거쳐 BCH 복호된 뒤,
Figure 112012053923133-pat00021
개의 x축 메시지로 출력되고, 이는 블록 단위의 제1 인터리빙부를 통해
Figure 112012053923133-pat00022
개의 y축 메시지 또는 y축 부호로 변환되어 출력된다.
제1 스테이지 복호부의 다수의 복호기가
Figure 112012053923133-pat00023
개의 x축 부호 모두에 대해 복호에 성공하면, 상기 y축 메시지 또는 y축 부호의 일부인 y축 메시지는 바로 데이터로 출력되나, 그렇지 않은 경우, y축 복호 동작을 수행하기 위해 상기
Figure 112012053923133-pat00024
개의 y축 메시지 또는 y축 부호는 다시 제2 스테이지 복호부의 다수의 복호기에 인가되어 BCH 복호된 뒤,
Figure 112012053923133-pat00025
개의 y축 메시지 또는 y축 메시지를 포함하는
Figure 112012053923133-pat00026
개의 y축 부호로 출력된다. 그리고 블록 단위의 제2 인터리빙부를 통해
Figure 112012053923133-pat00027
개의 y축 메시지 또는 y축 부호는
Figure 112012053923133-pat00028
개의 z축 메시지 또는 z축 부호로 변환되어 출력된다.
또한, 제2 스테이지 복호부의 다수의 복호기가
Figure 112012053923133-pat00029
개의 z축 부호 모두에 대해 복호에 성공하면, 상기 z축 메시지 또는 z축 부호의 일부인 z축 메시지는 바로 데이터로 출력되고, 그렇지 않은 경우에는 z축 복호 동작을 수행하기 위해 상기
Figure 112012053923133-pat00030
개의 z축 메시지 또는 z축 부호는 다시 제3 스테이지 복호부의 다수의 복호기에 인가된다.
그러면, 제3 스테이지 복호부의 다수의 복호기는 상기
Figure 112012053923133-pat00031
개의 z축 메시지 또는 z축 부호를 BCH 복호된 뒤,
Figure 112012053923133-pat00032
개의 z축 메시지 또는 z축 메시지를 포함하는
Figure 112012053923133-pat00033
개의 z축 부호로 출력된다.
반복 종료가 선언되거나 제3 스테이지 복호부의 다수의 복호기가
Figure 112012053923133-pat00034
개의 z축 메시지 또는 z축 부호 모두에 대해 복호에 성공하면, 상기 z축 메시지 또는 z축 부호는 바로 데이터로 출력된다. 그렇지 않은 경우, x축 복호 동작을 다시 수행하기 위해 블록 단위의 제3 인터리버에 인가되어
Figure 112012053923133-pat00035
개의 x축 부호가 출력되고, 이는 상기 제1 스테이지 복호부의 다수의 복호기에 다시 인가된다.
이와 같이 도6의 연접 BCH 복호 회로는 서로 상이한 방향성을 가지는 부호 각각에 대응되는 3개의 스테이지 복호부와 부호의 방향성을 변환하기 위한 3개의 인터리빙부를 구비함으로써, 3차원으로 확장된 부호에 대해서도 복호 동작을 모두 수행하도록 한다. 이러한 경우, 연접 BCH 복호는 보다 많은 구성 코드를 통해 오류 보호를 받기 때문에, 비교적 낮은 신호대 잡음비(SNR)의 채널에 대해서도 낮은 오류율을 얻을 수 있다는 장점이 있다.
더하여, 본 발명에서는 3차원 부호에 한하여 설명하였지만, 스테이지 복호부와 인터리빙부의 개수를 확장하고, 이에 상응하는 부호 방향성을 정의함으로써, 복호화 가능한 부호의 차원을 다양하게 확장할 수 있음은 물론 당연할 것이다.
도 7은 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 연접 BCH 다계층 복호 방법을 도시한 도면이다.
본 발명에서는 블록 단위의 연접 BCH 부호를 사용하여 복잡도와 복호 지연 시간을 적응적으로 줄이는 연접 부호 시스템을 설계한다. 상기 연접 부호 시스템은 적어도 3개의 레벨로 구성된다.
첫 번째 레벨은 블록 단위의 연접 BCH 부호의 구성 부호에서의 오류 정정 단계이다. 상기 구성 부호는 블록 단위의 연접 BCH 부호의 일부이므로, 상기 구성 부호만을 복호하면 비교적 낮은 복잡도와 짧은 지연 시간으로 오류를 정정할 수 있다. 상기 구성 부호는 부호 길이가 상대적으로 길어 높은 부호율에서도 비교적 많은 오류를 고칠 수 있다. 상기 구성 부호는 페이지의 일부일 수 있으며 열 부호이거나 행 부호일 수 있다. 플래쉬 메모리 장치에 데이터를 저장하는 파일 시스템에서, 플래쉬 메모리 장치의 데이터 접근을 효율적으로 실행하기 위해 파일 시스템의 데이터 접근 단위 크기에 맞게 상기 구성 부호를 설계할 수 있다. 예를 들어, 512 바이트 단위로 데이터 접근을 수행하는 파일 시스템에 대해 구성 부호의 메시지 길이가 512 바이트, 즉 4096 비트가 되도록 설계하여 데이터 접근을 효율적으로 수행할 수 있다. 상기 구성 부호가 정정에 실패할 확률은 부호 길이가 nc, 정정 가능한 비트 수가 tc, 그리고 초기 오류 확률이 Pe일 때, 수학식 14와 같다.
Figure 112012053923133-pat00036
두 번째 레벨은 오류가 많이 발생하여 상기 구성 부호가 오류 정정에 실패했을 경우 전체 연접 BCH 부호를 복호하여 첫 번째 레벨에서 정정하지 못한 오류를 정정하는 단계이다. 연접 BCH 부호의 복호는 상기 도 4를 참조하여 설명하였다. 연접 BCH 부호는 블록 단위로 이루어져 있으므로 오류 블록에 의해 복호에 실패하게 되며, 플래쉬 메모리 코어가 동작하는 낮은 오류율 영역에서는 주로 소수의 오류 블록에 의해 복호에 실패하게 된다. 이러한 소수의 오류 블록에 의한 복호 실패 확률은 수학식 15와 같이 하계로 계산할 수 있다. 수학식 15는 예로서 모든 메시지 블록이 같은 크기인 병렬 연접 BCH 부호에서 하나의 오류 블록에 의한 복호 실패 확률을 나타낸다.
Figure 112012053923133-pat00037
상기 수학식 15에서 Pi,j는 i개의 복호 실패한 행 부호와 j개의 복호 실패한 열 부호에 의한 오류 확률을 의미하며, Pe는 평균 초기 비트 오류율(average raw bit error rate)을 가리킨다. 또한, nB는 메시지 블록 크기, mr은 하나의 행 부호의 패리티 블록 크기, mc는 하나의 열 부호의 패리티 블록 크기, ne(=n1 e+n2 e+n3 e)는 발생한 모든 비트 오류의 개수, n1 e는 메시지 블록에 발생한 비트 오류의 개수, n2 e는 하나의 행 부호의 패리티 블록에 발생한 비트 오류의 개수, n3 e는 하나의 열 부호의 패리티 블록에 발생한 비트 오류의 개수를 의미한다.
Figure 112012053923133-pat00038
는 조건 S1,1가 만족될 때에는 1이고 그 외에는 0인 논리값이다. 이때 상기 조건 S1,1는 tr<n1 e + n2 e, 그리고 tr<n1 e + n3 e를 나타낸다. 즉, 하나의 오류 블록과 하나의 행 부호의 패리티 블록에 발생한 비트 오류의 개수가, 그 블록들이 속하는 행 부호가 고칠 수 없을 정도로 많고, 동시에 하나의 오류 블록과 하나의 열 부호의 패리티 블록에 발생한 비트 오류의 개수가, 그 블록들이 속하는 열 부호가 고칠 수 없을 정도로 많은 조건을 나타낸다. 수학식 16는 예로서 모든 메시지 블록이 같은 크기인 병렬 연접 BCH 부호에서 하나의 행에 있는 두 개의 오류 블록에 의한 복호 실패 확률을 나타낸다.
Figure 112012053923133-pat00039
상기 수학식 16에서 Pi,j는 i개의 복호 실패한 행 부호와 j개의 복호 실패한 열 부호에 의한 오류 확률을 의미하며, Pe는 평균 초기 비트 오류율(average raw bit error rate)을 가리킨다. 또한, nB는 메시지 블록 크기, mr은 하나의 행 부호의 패리티 블록 크기, mc는 하나의 열 부호의 패리티 블록 크기, ne(= n1 e + n2 e+ n3 e + n4 e+ n5 e)는 발생한 모든 비트 오류의 개수, n1 e는 첫 번째 메시지 블록에 발생한 비트 오류의 개수, n2 e는 두 번째 메시지 블록에 발생한 비트 오류의 개수, n3 e는 하나의 행 부호의 패리티 블록에 발생한 비트 오류의 개수, n4 e는 첫 번째 열 부호의 패리티 블록에 발생한 비트 오류의 개수, n5 e는 두 번째 열 부호의 패리티 블록에 발생한 비트 오류의 개수를 의미한다.
Figure 112012053923133-pat00040
는 조건 S2,1가 만족될 때에는 1이고 그 외에는 0인 논리값이다. 이때 상기 조건 S2,1는 1) tr < n1 e + n2 e+ n3 e, 2) tc < n1 e + n4 e, 그리고 3) tc < n2 e + n5 e를 나타낸다. 이와 같은 방식으로 하계를 구하면 도 6과 같이 연접 BCH 부호의 컴퓨터 시뮬레이션에 의한 성능 측정 결과가 하계에 의해 제한되는 것을 확인할 수 있다.
연접 BCH 부호의 성능이 하계에 의해 제한되는 것은 복호 실패가 그 하계가 가리키는 오류 블록에 의해 발생하는 것을 의미한다. 예를 들어, 도 6을 참조하면, 연접 BCH 부호를 초기 비트 오류율이 약 2.75 × 10(-3)이하일 때 복호하면, 대부분 1개의 오류 블록에 의한 복호 실패가 발생한다.
본 발명에서 사용하는 연접 BCH 부호에서 복호 실패가 발생했을 때, 오류 블록의 위치는 복호에 실패한 구성 부호에 의해 결정된다. 따라서 오류 블록에 의한 복호 실패가 발생했을 때, 해당 오류 블록에 대해서만 추가적인 동작을 수행할 수 있다.
세 번째 레벨은 상기 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생할 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 비교적 낮은 복잡도로 추가 복호를 수행하여 두 번째 레벨보다 더 많은 오류를 정정하는 단계이다. 도 10을 참조하면, 연접 BCH 부호의 경판정 반복 복호에서 반복 종료가 선언되면, 상기 추가 복호가 진행되며, 상기 추가 복호를 위해서 상기 행 복호기와 열 복호기 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 상기 소수 오류 블록의 위치를 확정한다. 상기 추가 정보는, 상기 위치가 확정된 소수 오류 블록에 해당하는 비트들에 대한 정보로, 예를 들어, 플래쉬 메모리 코어에서 해당 비트들이 저장된 셀과 그 주변 셀을 읽어 얻거나, 해당 비트들이 저장된 셀의 문턱 전압에 대해 비트 값을 결정하는 읽기 기준 문턱 전압 값을 이전 읽기 기준 문턱 전압 값과 바꾸어 적용하여 비트 값을 결정하는 방법으로 얻을 수 있다. 상기 추가적인 복호는 상기 추가 정보를 이용하는 복호 방법으로, 예를 들어 체이스 복호(Chase decoding)와 같은 신뢰성 기반 복호(reliability-based decoding) 방법을 사용할 수 있다.
이하에서는, 본 발명의 연접 부호를 사용하는 오류 정정 회로와 종래의 오류 정정 회로들과의 성능 차이를 예를 들어 설명한다.
도 9을 참조하면, Sim.은 16 개의 행 부호((4226, 4096, 10) BCH 부호)와 16 개의 열 부호((4278, 4096, 14) BCH 부호)로 이루어진 (70528, 65536) 병렬 연접 BCH 부호의 성능을 컴퓨터 시뮬레이션한 결과이다.
Imax는 상기 신뢰성 기반 복호 방법에서 최대 시도 횟수를 의미하며, Imax = N은 N회 최대 시도 횟수의 상기 신뢰성 기반 복호를 세 번째 레벨로 수행했을 때의 성능을 의미한다. 도 7의 예에서 신뢰성 기반 복호 방법은 일정 수의 비트만 선택하여 값을 뒤집는 방법을 사용하였다. 하나의 블록 오류에 대해 최대 시도 횟수가 512번 수행할 수 있는 신뢰성 기반 복호를 수행하면, 목표 페이지 오류율(page-error rate) 에 대해 하나의 오류 블록을 대부분 고칠 수 있음을 알 수 있다. 표 1은 도 7에 대해 최대 시도 횟수가 16, 32, 64, 128, 512 번일 때, 평균 시도 횟수가 적음을 보여준다. 이는 비교적 낮은 복잡도로 상기 세 번째 레벨의 복호가 이루어짐을 의미한다.
Figure 112012053923133-pat00041
도 9을 참조하면, Sim.으로 표시된 세 번째 레벨의 오류 정정 능력은 Short BCH로 표시된 부호보다 뛰어남을 알 수 있다. Short BCH는 512 바이트 당 24 비트를 정정하는 BCH 부호를 8KB에 대해 적용한 부호(16개의 (4278, 4096, 24) BCH 부호)이다. Short BCH와 Sim.으로 표시된 두 부호는 같은 부호율(0.929)을 가지며 부호 길이가 같고 패리티 비트 수도 같다.
도 9을 참조하면, Sim.으로 표시된 세 번째 레벨의 오류 정정 능력은 Long BCH로 표시된 부호와 큰 차이가 없음을 알 수 있다. Long BCH는 8KB 당 295 비트를 정정하는 BCH 부호(1 개의 (70534, 65536, 295) BCH 부호)이다. Long BCH와 Sim.으로 표시된 두 부호는 같은 부호율(0.929)을 가지며 부호 길이가 거의 같고 패리티 비트 수도 거의 같다. 상기 Long BCH로 표시된 부호는 단순한 BCH 부호로 달성할 수 있는 최대의 성능을 가지나, 복잡도와 지연 시간이 지나치게 높아 현실적으로 구현이 어렵거나 플래쉬 메모리 장치에 사용할 수 없는 오류 정정 부호이다.
도 10은 본 발명의 플래쉬 메모리 장치의 추가 복호가 가능한 연접 BCH 다계층 복호 회로를 도시한 기능 블록도이다.
연접 BCH 다계층 복호 회로는 도 10에 도시된 바와 같이, 연접 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)이고, 디인터리빙부는 블록 단위 디인터리버(Block-wise De-interleaver)이고, 제 2 스테이지 복호부는 행 복호기(Row Code Decoder)이고, 인터리빙부는 블록 단위 인터리버(Block-wise Interleaver)이다.
추가 복호부는 연접 BCH 부호의 복호 실패가 소수의 오류 블록에 대해서 발생했을 때 상기 오류 블록에 해당하는 추가 정보만을 얻어 추가 복호를 수행하여 오류를 정정한다. 이때, 추가 정보는 위치가 확정된 소수의 오류 블록에 해당하는 비트들에 대한 정보를 포함한다.
추가 복호부는 추가 복호를 위해서 제 1 및 제 2 스테이지 부호부 모두에서 각 구성 부호들의 복호 실패 여부를 인가받아 소수의 오류 블록의 위치를 확정한다. 구성 부호는 읽기(read) 및 쓰기(write) 단위인 페이지의 일부 또는 전부이거나 열(Column) 부호 또는 행(Row) 부호이다.
더하여, 도시되지는 않았지만 도9의 연접 BCH 다계층 복호 회로도 도5에서와 같이 디코더 전력 제어부(Decoder power control)를 추가 구비하여, 전력 절감 효과를 추가 제공할 수 있음은 물론 당연할 것이다.
본 발명에 의한 플래쉬 메모리 장치의 오류 정정 회로는, 입력 데이터를 두 개 이상의 데이터로 분리한 후 각각 BCH 부호화하여 상기 분리된 데이터와 같은 개수의 행 BCH 부호를 출력하는 외부 부호부와, 행 BCH 부호 또는 그에 의해 보호되는 데이터를 다시 두 개 이상의 블록으로 나눠 그 블록들을 인터리빙하고 같은 개수의 블록을 출력하는 인터리빙부와, 인터리빙부에서 인터리빙된 블록들을 BCH 부호화하여 열 BCH 부호를 출력하는 내부 부호부와, 플래쉬 메모리 코어로부터 제공되는 저장 데이터의 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 그에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부와, 제1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록으로 나눠 디인터리빙하여 출력하는 디인터리빙부와, 디인터리빙부의 출력을 BCH 복호하여 제2 출력 BCH 부호 또는 그에 의해 보호되는 제2 출력 데이터를 출력하는 제2차 스테이지 복호부와, 제2 출력 BCH 부호 또는 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 제1 스테이지 복호부로 출력하는 인터리빙부를 포함하고 있다.
본 발명의 플래쉬 메모리 장치는 기본적으로 낸드 플래쉬 메모리 장치에 적용될 수 있으나, 노어 플래쉬 메모리와 같은 다른 종류의 메모리 장치에도 적용 될 수 있다.
이와 같이 구성된 본 발명의 연접 BCH 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치는, 플래쉬 메모리 장치를 위한 부호, 복호 및 다계층 복호를 통해서 오류 정도에 따라 지연 시간을 조정함으로써, 본 발명의 기술적 과제를 해결할 수가 있다.
이상에서 설명한 본 발명의 바람직한 실시 예들은 기술적 과제를 해결하기 위해 개시된 것으로, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자(당업자)라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가 등이 가능할 것이며, 이러한 수정 변경 등은 이하의 특허청구범위에 속하는 것으로 보아야 할 것이다.

Claims (16)

  1. 플래쉬 메모리 장치로부터 제공되는 저장 데이터 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 상기 제1 출력 BCH 부호에 의해 보호되는 제1 출력 데이터를 출력하는 제1 스테이지 복호부;
    상기 제1 출력 BCH 부호 또는 제1 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제1 출력 BCH 부호 또는 제1 출력 데이터의 방향성을 변환하는 제1 인터리빙부;
    상기 제1 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제2 출력 BCH 부호 또는 상기 제2 출력 BCH 부호에 의해 보호되는 제2 출력 데이터를 출력하는 제2 스테이지 복호부;
    상기 제2 출력 BCH 부호 또는 제2 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제2 출력 BCH 부호 또는 제2 출력 데이터의 방향성을 변환하는 제2 인터리빙부;
    상기 제2 인터리빙부의 출력을 인가받아 BCH 복호를 수행하여 제3 출력 BCH 부호 또는 상기 제3 출력 BCH 부호에 의해 보호되는 제3 출력 데이터를 출력하는 제3 스테이지 복호부; 및
    상기 제3 출력 BCH 부호 또는 제3 출력 데이터를 두 개 이상의 블록으로 나눠 인터리빙하여 상기 제3 출력 BCH 부호 또는 제3 출력 데이터의 방향성을 변환한 후 상기 제1 스테이지 복호부로 출력하는 제3 인터리빙부를 포함하는 연접 BCH 복호 회로.
  2. 플래쉬 메모리 장치로부터 제공되는 저장 데이터 일부 또는 인터리빙 결과를 인가받아 BCH 복호를 수행하는 다수개의 스테이지 복호부; 및
    서로 상이한 스테이지 복호부 사이에 위치하여, 앞단의 스테이지 복호부의 복호 결과를 블록 단위로 인터리빙하여 데이터 방향성을 변환한 후, 뒷단의 스테이지 복호부에 제공하는 다수의 인터리빙부를 포함하는 연접 BCH 복호 회로.
  3. 제 1 항 또는 제2항에 있어서, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는
    3차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 x축, y축, z축에 각각 할당된 x축 패리티 정보, y축 패리티 정보, 및 z축 패리티 정보를 포함하는 연접 BCH 복호 회로.
  4. 제 3 항에 있어서, 상기 연접 BCH 복호 회로는
    반복 복호 방식으로 x축 복호, y축 복호, z축 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료하는 연접 BCH 복호 회로.
  5. 제 1 항 또는 제2항에 있어서, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는
    2차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호에 대해 3가지 이상의 방향성을 가지도록 할당된 다수의 패리티 정보를 포함하는 연접 BCH 복호 회로.
  6. 제5항에 있어서, 상기 다수의 패리티 정보는
    상기 다수의 부호의 열 방향, 행 방향, 그리고 대각선 방향에 각각 할당된 열 방향 패리티 정보, 행 방향 패리티 정보, 및 대각선 방향 패리티 정보를 포함하는 연접 BCH 복호 회로.
  7. 제 6 항에 있어서, 상기 연접 BCH 복호 회로는
    반복 복호 방식으로 열 방향, 행 방향, 대각선 방향 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료하는 연접 BCH 복호 회로.
  8. 제1 스테이지 복호부가 플래쉬 메모리 장치로부터 제공되는 저장 데이터는 일부를 인가받아 BCH 복호를 수행하여 제1 출력 BCH 부호 또는 상기 제1 출력 BCH 부호에 의해 보호되는 제1 출력 데이터를 생성한 후, 1차 인터리빙(de-interleaving)하여 데이터 방향성을 변환하는 단계;
    제2 스테이지 복호부가 상기 1차 인터리빙 결과를 BCH 복호를 수행하여 제2 출력 BCH 부호 또는 상기 제2 출력 BCH 부호에 의해 보호되는 제2 출력 데이터를 생성한 후, 2차 인터리빙(de-interleaving)하여 데이터 방향성을 변환하는 단계;
    제3 스테이지 복호부가 상기 2차 인터리빙 결과를 BCH 복호를 수행하여 제3 출력 BCH 부호 또는 상기 제3 출력 BCH 부호에 의해 보호되는 제3 출력 데이터를 생성한 후, 반복 복호 수행 여부를 확인하는 단계; 및
    반복 복호시에는 상기 제3 출력 BCH 부호 또는 제3 출력 데이터를 3차 인터리빙하여 상기 제1 스테이지 복호부로 출력하고, 그렇지 않으면 반복 복호 동작을 종료하는 단계를 포함하는 연접 BCH 다계층 복호 방법.
  9. 제 8항에 있어서, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는
    3차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호의 x축, y축, z축에 각각 할당된 x축 패리티 블록, y축 패리티 블록, 및 z축 패리티 블록를 포함하는 연접 BCH 다계층 복호 방법.
  10. 제 9항에 있어서, 상기 연접 BCH 다계층 복호 방법은
    반복 복호 방식으로 x축 복호, y축 복호, z축 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료하는 연접 BCH 다계층 복호 방법.
  11. 제 8항에 있어서, 상기 플래쉬 메모리 장치로부터 제공되는 저장 데이터는
    2차원 매트릭스 구조를 가지는 다수의 부호와, 상기 다수의 부호에 대해 3가지 이상의 방향성을 가지도록 할당된 다수의 패리티 정보를 포함하는 연접 BCH 복호 방법.
  12. 제 11항에 있어서, 상기 다수의 패리티 정보는
    상기 다수의 부호의 열 방향, 행 방향, 그리고 대각선 방향에 각각 할당된 열 방향 패리티 블록, 행 방향 패리티 블록, 및 대각선 방향 패리티 블록를 포함하는 연접 BCH 다계층 복호 방법.
  13. 제 12항에 있어서, 상기 연접 BCH 다계층 복호 방법은
    반복 복호 방식으로 열 방향, 행 방향, 대각선 방향 복호를 반복하며, 최대 반복 횟수 또는 반복 종료 조건에 의해 반복을 종료하는 연접 BCH 다계층 복호 방법.
  14. 제 11 항에 있어서, 상기 다수의 부호 각각은
    동일한 메시지 길이를 가지며, 메시지 부분과 패리티 부분이 완벽히 구분이 되는 체계적 부호(systematic code) 인 것을 특징으로 하는 연접 BCH 다계층 복호 방법.
  15. 제 11 항에 있어서, 상기 다수의 부호 각각은
    비트의 묶음으로 이루어진 블록 단위로 구성된 연접 BCH 다계층 복호 방법.
  16. 제 14 항에 있어서, 상기 메시지 길이는
    플래쉬 메모리 장치에 데이터를 저장하는 파일 시스템의 데이터 접근 단위 크기에 의해 결정되는 연접 BCH 다계층 복호 방법.
KR1020120073371A 2011-11-18 2012-07-05 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치 KR101355986B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120073371A KR101355986B1 (ko) 2012-07-05 2012-07-05 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
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
KR1020120073371A KR101355986B1 (ko) 2012-07-05 2012-07-05 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Publications (2)

Publication Number Publication Date
KR20140006445A KR20140006445A (ko) 2014-01-16
KR101355986B1 true KR101355986B1 (ko) 2014-01-29

Family

ID=50141371

Family Applications (1)

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

Country Status (1)

Country Link
KR (1) KR101355986B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102205614B1 (ko) * 2014-09-19 2021-01-21 삼성전자주식회사 반복 복호를 사용하는 비트 인터리빙 부호화 변조 방식을 지원하는 통신 시스템에서 신호 송/수신 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980084636A (ko) * 1997-05-23 1998-12-05 김영환 회전형 인터리버/디인터리버의 메모리 주소 발생장치 및 그 방법
KR19990012450A (ko) * 1997-07-29 1999-02-25 윤종용 3차원 에러정정방법 및 그 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980084636A (ko) * 1997-05-23 1998-12-05 김영환 회전형 인터리버/디인터리버의 메모리 주소 발생장치 및 그 방법
KR19990012450A (ko) * 1997-07-29 1999-02-25 윤종용 3차원 에러정정방법 및 그 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A High-Speed Low-Complexity Concatenated BCH Decoder Architecture for 100 Gb/s Optical Communications, Kihoon Lee, Inha Univ. *
Concatenated BCH Codes for NAND Flash Memories, Sung-gun Cho, KAIST *

Also Published As

Publication number Publication date
KR20140006445A (ko) 2014-01-16

Similar Documents

Publication Publication Date Title
US11347584B2 (en) Memory system
US9166626B2 (en) Encoding, decoding, and multi-stage decoding circuits for concatenated BCH, and error correction circuit of flash memory device using the same
US8751911B2 (en) Semiconductor memory device
US9294132B1 (en) Dual-stage data decoding for non-volatile memories
US8560930B2 (en) Systems and methods for multi-level quasi-cyclic low density parity check codes
US20120254686A1 (en) Non-volatile semiconductor memory devices and error correction methods
US11016844B2 (en) Error correction code structure
US20110029835A1 (en) Systems and Methods for Quasi-Cyclic LDPC Code Production and Decoding
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
US10824346B2 (en) Logical format utilizing lateral encoding of data for storage on magnetic tape
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
KR101320684B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
KR101913900B1 (ko) 조기 디코딩 종료 검출을 갖는 디코더
US9639421B2 (en) Operating method of flash memory system
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US8627183B1 (en) Systems and methods for storing variable rate product codes
CN109935263B (zh) 非易失性存储器的编译码方法及存储系统
KR101355986B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
KR102007163B1 (ko) 인코더, 디코더 및 이를 포함하는 반도체 장치
CN110795271A (zh) 对用户数据执行纠错的纠错电路和使用其的纠错方法
KR101357544B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US11258464B1 (en) Codeword concatenation for correcting errors in data storage devices
KR101496052B1 (ko) 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로
KR101355982B1 (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
FPAY Annual fee payment

Payment date: 20161227

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee