KR20190051245A - 폴라 부호 복호화 장치 및 방법 - Google Patents

폴라 부호 복호화 장치 및 방법 Download PDF

Info

Publication number
KR20190051245A
KR20190051245A KR1020170146674A KR20170146674A KR20190051245A KR 20190051245 A KR20190051245 A KR 20190051245A KR 1020170146674 A KR1020170146674 A KR 1020170146674A KR 20170146674 A KR20170146674 A KR 20170146674A KR 20190051245 A KR20190051245 A KR 20190051245A
Authority
KR
South Korea
Prior art keywords
bit
sub
decoding
data
codeword
Prior art date
Application number
KR1020170146674A
Other languages
English (en)
Other versions
KR102426047B1 (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 KR1020170146674A priority Critical patent/KR102426047B1/ko
Priority to US16/013,053 priority patent/US10693503B2/en
Priority to CN201811059583.XA priority patent/CN109753377A/zh
Publication of KR20190051245A publication Critical patent/KR20190051245A/ko
Application granted granted Critical
Publication of KR102426047B1 publication Critical patent/KR102426047B1/ko

Links

Images

Classifications

    • 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/134Non-binary linear block codes not provided for otherwise
    • 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/29Coding, 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/2906Coding, 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
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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
    • 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
    • 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
    • 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
    • H03M13/2792Interleaver wherein interleaving is performed jointly with another technique such as puncturing, multiplexing or routing
    • 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/29Coding, 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/2906Coding, 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/2927Decoding strategies
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0054Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Artificial Intelligence (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Error Detection And Correction (AREA)

Abstract

폴라 부호 복호화 장치 및 방법이 제공된다. 상기 폴라 부호 복호화 방법은 인코더가 제1 프리 코드워드를 폴라 부호화하여 제1 서브 코드워드를 생성하되, 상기 제1 프리 코드워드는 제1 언프로즌 비트와, 제1 프로즌 비트를 포함하고, 상기 제1 언프로즌 비트는 제1 데이터 비트와 제2 데이터 비트를 포함하고, 상기 인코더가 제2 프리 코드워드를 폴라 부호화하여 제2 서브 코드워드를 생성하되, 상기 제2 프리 코드워드는 제2 언프로즌 비트와, 제2 프로즌 비트를 포함하고, 상기 제2 언프로즌 비트는 제3 데이터 비트와 상기 제2 데이터 비트를 포함하고, 디코더가 상기 제1 및 제2 서브 코드워드를 각각 복호화하고, 상기 제1 및 제2 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트를 이용하여 상기 제1 및 제2 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함한다.

Description

폴라 부호 복호화 장치 및 방법{Device and method for decoding polar code}
본 발명은 폴라 부호 복호화 장치 및 방법에 관한 것이다.
메모리 시스템에서 LDPC(Low Density Parity Check) 부호 또는 터보(Turbo) 부호 등을 이용하여 부호화 및 복호 처리를 수행한다. 최근 이들 부호 이외에 폴라(Polar) 부호도 주목을 받고 있다. 이에 따라서, 폴라 부호의 우수한 성능을 달성하기 위하여 복잡도를 개선시키기 위한 효율적인 복호 알고리즘들에 대한 연구가 활발히 진행되고 있다.
폴라 부호는 연속 제거(successive cancellation) 복호 방식을 이용하여 이산 무기억 채널(discrete memoryless channel)의 채널 용량을 달성할 수 있으면서도 부호의 설계와 효율적인 부호화 및 복호화 알고리즘이 제시되어 있기 때문에 주목받고 있는 부호이다.
이산 무기억 채널은 채널 분극 과정을 통하여 서로 다른 신뢰도를 가지는 채널들의 집합으로 변환된다. 만일, 신뢰도가 높은 채널들을 통해서만 데이터를 전송하면 전체 시스템의 신뢰도를 향상시킬 수 있다.
채널 분극(channel polarization)은 주어진 이산 무기억 채널 W를 N번 독립적으로 이용하여 서로 다른 신뢰도를 가지는 N개의 채널들의 집합
Figure pat00001
을 생성하는 과정을 의미한다.
폴라 부호어는 채널 분극 현상을 통하여 서로 다른 신뢰도를 가지는 N개의 분극 채널들이 발생되면 신뢰도가 낮은 채널들을 통해서는 값이 고정된 동결 비트(frozen bit)를 전송하고 신뢰도가 높은 채널들을 통해서만 정보 비트(information bit 또는 unfrozen bit)를 전송하도록 구성된다.
폴라 부호를 복호하는 방식으로는 연속 제거(successive cancellation) 복호 방식과 리스트 연속 제거(list successive cancellation) 복호 방식이 있다. 리스트 연속 제거 복호 방식은 리스트 복호 방식으로 불리워지기도 한다. 폴라 부호의 복호 방식 중 리스트 연속 제거 복호 방식을 사용하는 경우 현존하는 ECC(erroe correction code) 중 가장 강력한 정정 능력을 얻을 수 있다고 알려져 있다.
하지만, 이러한 폴라 부호는 복호 복잡도 및 복호 지연 시간(decoding latency)이 매우 높아 실제 적용 가능성은 상대적으로 낮을 수 있다. 특히, 메모리 장치는 무선 통신 시스템보다도 복호 복잡도 및 복호 시간이 중요시되므로 폴라 부호를 그대로 사용하는 것은 어려울 수 있다.
본 발명이 해결하려는 과제는, 정정 능력은 유지하되, 복호 복잡도 및 복호 시간이 개선된 폴라 부호 복호화 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 정정 능력은 유지하되, 복호 복잡도 및 복호 시간이 개선된 폴라 부호 복호화 장치를 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 특성 데이터의 에러를 줄이고, 이를 이용하여 성능이 향상된 메모리 제어 시스템을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 폴라 부호 복호화 방법은, 인코더가 제1 프리 코드워드를 폴라 부호화하여 제1 서브 코드워드를 생성하되, 상기 제1 프리 코드워드는 제1 언프로즌 비트와, 제1 프로즌 비트를 포함하고, 상기 제1 언프로즌 비트는 제1 데이터 비트와 제2 데이터 비트를 포함하고, 상기 인코더가 제2 프리 코드워드를 폴라 부호화하여 제2 서브 코드워드를 생성하되, 상기 제2 프리 코드워드는 제2 언프로즌 비트와, 제2 프로즌 비트를 포함하고, 상기 제2 언프로즌 비트는 제3 데이터 비트와 상기 제2 데이터 비트를 포함하고, 디코더가 상기 제1 및 제2 서브 코드워드를 각각 복호화하고, 상기 제1 및 제2 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트를 이용하여 상기 제1 및 제2 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 폴라 부호 복호화 방법은 인코더가 제1 프리 코드워드를 폴라 부호화하여 제1 서브 코드워드를 생성하되, 상기 제1 프리 코드워드는 제1 언프로즌 비트와, 제1 프로즌 비트를 포함하고, 상기 제1 언프로즌 비트는 제1 데이터 비트와 제2 데이터 비트를 포함하고, 상기 인코더가 제2 프리 코드워드를 폴라 부호화하여 제2 서브 코드워드를 생성하되, 상기 제2 프리 코드워드는 제2 언프로즌 비트와, 제2 프로즌 비트를 포함하고, 상기 제2 언프로즌 비트는 제3 데이터 비트와 상기 제2 데이터 비트와 연관된 제4 데이터 비트를 포함하고, 디코더가 상기 제1 및 제2 서브 코드워드를 각각 복호화하고, 상기 제1 및 제2 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트 또는 제4 데이터 비트를 이용하여 상기 제1 및 제2 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 폴라 부호 복호화 방법은 인코더에 의해서 복수의 프리 코드워드를 각각 폴라 부호화하여 복수의 서브 코드워드를 생성하되, 상기 복수의 프리 코드워드는 각각 프로즌 비트와 언프로즌 비트를 포함하고, 상기 언프로즌 비트는 상기 복수의 프리 코드워드끼리 공유되지 않는 비공유 비트와, 서로 공유 또는 연관되는 공유 비트를 포함하고, 디코더에 의해서 상기 복수의 서브 코드워드를 1차 복호화를 시도하고, 상기 1차 복호화에 의해서 복호화된 적어도 하나의 서브 코드워드의 공유 비트를 획득하고, 상기 공유 비트를 이용하여, 상기 디코더에 의해서 상기 1차 복호화에 의해서 복호화되지 못한 적어도 하나의 서브 코드워드를 2차 복호화하는 것을 포함한다.
상기 다른 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 폴라 부호 복호화 장치는 폴라 부호화된 제1 및 제2 서브 코드워드를 입력받아 복호화하는 디코더로서, 상기 제1 프리 코드워드는 제1 언프로즌 비트와, 제1 프로즌 비트를 포함하고, 상기 제1 언프로즌 비트는 제1 데이터 비트와 제2 데이터 비트를 포함하고, 상기 제2 프리 코드워드는 제2 언프로즌 비트와, 제2 프로즌 비트를 포함하고, 상기 제2 언프로즌 비트는 제3 데이터 비트와 상기 제2 데이터 비트와 연관된 제4 데이터 비트를 포함하는 디코더 및 상기 제1 서브 코드워드는 복호되지 않고, 상기 제2 서브 코드워드는 복호되는 경우에, 상기 디코더로부터 상기 제4 데이터 비트를 전송받아 상기 제2 데이터 비트를 획득하고, 상기 제2 데이터 비트를 상기 디코더로 전달하는 프로즌 비트 복원기를 포함하되, 상기 디코더는 상기 프로즌 비트 복원기로부터 상기 제2 데이터 비트를 받아 상기 제1 서브 코드워드를 다시 복호화한다.
도 1은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치를 설명하기 위한 블록도이다.
도 2는 도 1의 폴라 부호의 복호화 장치를 설명하기 위한 블록도이다.
도 3은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더의 동작을 설명하기 위한 개념도이다.
도 4는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더의 동작을 설명하기 위한 개념도이다.
도 5 내지 도 7은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더의 동작을 설명하기 위한 개념도이다.
도 8은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더 및 디코더의 동작을 설명하기 위한 개념도이다.
도 9는 도 1의 폴라 부호의 복호화 장치의 디코더를 세부적으로 설명하기 위한 블록도이다.
도 10은 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치를 설명하기 위한 블록도이다.
도 11은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명하기 위한 개념도이다.
도 12는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명하기 위한 개념도이다.
도 13은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명하기 위한 개념도이다.
도 14는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 데이터 구조를 설명하기 위한 개념도이다.
도 15는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치가 채용된 전자 장치의 구현예를 나타내는 블록도이다.
도 16은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 방법을 설명하기 위한 순서도이다.
도 17은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 방법을 설명하기 위한 순서도이다.
도 18은 도 17의 경판정(hard decision) 및 연판정(soft decision)을 설명하기 위한 그래프이다.
이하에서, 도 1 및 도 2를 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치에 대해서 설명한다.
도 1은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치를 설명하기 위한 블록도이고, 도 2는 도 1의 폴라 부호의 복호화 장치를 설명하기 위한 블록도이다.
도 1 및 도 2를 참조하면, 폴라 부호의 복호화 장치(1000)은 메모리 컨트롤러(100) 및 메모리 장치(200)를 포함한다.
메모리 장치(200)는 비휘발성 메모리 디바이스로 구현할 수 있다. 예로서, 메모리 장치(200)는 플래시 메모리 디바이스, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 디바이스 등으로 구성될 수 있다. 메모리 장치(200)는 적어도 하나의 비휘발성 메모리 디바이스들과 적어도 하나의 휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수 있고, 적어도 두 종류 이상의 비휘발성 메모리 디바이스들이 혼합된 형태로 구성될 수도 있다.
그리고, 메모리 장치(200)는 단일의 플래시 칩으로 구성할 수 있다. 또한, 메모리 장치(200)는 복수의 플래시 메모리 칩들로 구성할 수도 있다.
메모리 컨트롤러(100)는 프로세서(110), 인코더(120), 디코더(130), RAM(Random Access Memory; 140), 호스트 인터페이스(150), 메모리 인터페이스(160) 및 버스(170)를 구비한다.
프로세서(110)는 버스(170)를 통하여 인코더(120), 디코더(130), RAM(140), 호스트 인터페이스(150) 및 메모리 인터페이스(160)와 전기적으로 접속된다.
버스(170)는 메모리 컨트롤러(100)의 구성 수단들 간의 정보를 전송하는 전송로를 의미한다.
프로세서(110)는 폴라 부호의 복호화 장치(1000)의 전반적인 동작을 제어한다. 세부적으로, 호스트로부터 수신되는 커맨드를 해독하고, 해독된 결과에 따른 동작을 수행하도록 폴라 부호의 복호화 장치(1000)을 제어한다.
프로세서(110)는 리드 동작 시에는 리드 커맨드 및 어드레스를 메모리 장치(200)에 제공하고, 라이트 동작 시에는 라이트 커맨드, 어드레스, 그리고 부호화 처리된 부호어를 메모리 장치(200)에 제공한다. 그리고, 프로세서(110)는 RAM(140)에 저장된 메타 데이터를 이용하여 호스트로부터 수신되는 논리적 주소를 물리적 페이지 주소로 변환시키는 처리를 수행한다.
RAM(140)에는 호스트로부터 전송된 데이터 및 프로세서(110)에서 생성된 데이터가 임시로 저장되거나 메모리 장치(200)에서 읽어낸 데이터가 임시로 저장된다. RAM(140)에는 메모리 장치(200)로부터 읽어낸 메타 데이터도 저장될 수 있다. 그리고, RAM(140)에는 부호화 또는 복호 처리에 필요한 정보들도 저장될 수 있다. RAM(200)은 DRAM, SRAM 등으로 구현될 수 있다.
메타 데이터(meta data)는 메모리 장치(200)를 관리하기 위하여 폴라 부호의 복호화 장치(1000)에서 생성된 정보이다. 관리 정보인 메타 데이터에는 논리적 주소(Logical Address)를 메모리 장치(200)의 물리적 페이지 주소(PPA)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보가 포함되어 있다. 일 예로서, 메타 데이터에는 페이지 단위로 어드레스 매핑 처리를 수행하는데 필요한 페이지 매핑 테이블 정보가 포함될 수 있다. 또한, 메타 데이터에는 메모리 장치(200)의 저장 공간을 관리하기 위한 정보들도 포함할 수 있다.
호스트 인터페이스(150)는 메모리 장치(200)와 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고 메모리 장치(200)와 호스트를 상호 연결한다. 호스트 인터페이스(150)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 세부적으로, 호스트 인터페이스(150)는 프로세서(110)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(160)는 메모리 장치(200)와 전기적으로 연결되어 있다. 메모리 인터페이스(160)는 NAND 플래시 메모리 칩 또는 NOR 플래시 메모리 칩과의 인터페이스를 지원하도록 구성될 수 있다. 메모리 인터페이스(160)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
프로세서(110)는 폴라 부호의 복호화 장치(1000)에 전원이 공급되면 메모리 장치(200)에 저장되어 있는 메타 데이터 및 부호화 또는 복호 처리에 필요한 정보들을 읽어내어 RAM(140)에 저장하도록 폴라 부호의 복호화 장치(1000)을 제어한다. 프로세서(110)는 메모리 장치(200)에서의 메타 데이터 변경을 발생시키는 동작에 따라서 RAM(140)에 저장된 메타 데이터를 업데이트 하도록 폴라 부호의 복호화 장치(1000)을 제어한다. 그리고, 프로세서(110)는 폴라 부호의 복호화 장치(1000)에서 파워 오프(POWER OFF) 되기 전에 RAM(140)에 저장되어 있는 메타 데이터를 메모리 장치(200)에 라이트하도록 폴라 부호의 복호화 장치(1000)을 제어한다.
프로세서(110)는 라이트 동작 시에는 호스트로부터 수신된 정보어를 인코더(120)에서 본 발명에서 제안하는 부호화 방식에 따라서 부호화 처리하고, 리드 동작 시에는 메모리 장치(200)로부터 읽어낸 데이터를 디코더(130)에서 본 발명에서 제안하는 복호 방식에 따라서 복호 처리하도록 메모리 컨트롤러(100)를 제어한다.
인코더(120)는 호스트로부터 수신된 정보어를 폴라 부호를 이용하여 부호화 처리를 수행한다. 폴라 부호는 이진 폴라 부호 또는 비이진 폴라 부호가 포함될 수 있다. 세부적으로, 호스트로 수신된 정보어에 프로즌 비트를 결합하여 입력 심볼 벡터를 생성하고, 생성된 입력 심볼 벡터와 생성 행렬을 이용하여 부호어 심볼들을 생성한다. 이에 대해서는 추후에 다시 설명한다.
디코더(130)는 메모리 장치(200)로부터 읽어낸 데이터를 본 발명에서 제안하는 폴라 부호의 복호 방식에 따라서 복호 처리한다. 이에 대해서는 추후에 다시 설명한다.
폴라 부호의 복호화 장치(1000)의 메모리 장치(200)는 복수개의 플래시 메모리 칩들(201, 203)을 포함할 수 있다. 단, 이는 본 실시예의 하나의 예시에 불과하고 본 실시예가 이에 제한되는 것은 아니다.
폴라 부호의 복호화 장치(1000)는 N(N은 자연수)개의 채널을 갖고, 채널별로 복수의 플래시 메모리 칩들로 구성될 수 있다. 물론, 채널별로 구성되는 플래시 메모리 칩들의 개수는 다양하게 설정될 수 있다.
도 3은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더의 동작을 설명하기 위한 개념도이다.
도 1 및 도 3을 참조하여, 인코더(120)가 폴라 코드 부호화를 수행하는 것을 설명한다.
폴라 코드 부호화에서 실제 데이터(d)는 언프로즌 비트(u1~uk)일 수 있다. 먼저, 언프로즌 비트(u1~uk)에 프로즌 비트(f1~fm)를 붙인다. 언프로즌 비트(u1~uk)가 k 비트이고, 프로즌 비트(f1~fm)가 m 비트이므로, 부호화되기 전의 프리 코드워드(u)의 크기는 k+m 비트일 수 있다.
이러한 k+m 비트의 크기를 가지는 입력 코드()는 부호화에 따라서, k+m 비트의 크기를 가지는 폴라 코드워드(c)가 될 수 있다. 부호화는 프리 코드워드(u)는 c=uG의 벡터 연산을 통해서 정의될 수 있다. 폴라 코드워드(c)는 k+m 비트의 폴라 코드(c1~ck+m)를 포함할 수 있다.
여기서, 프로즌 비트(f1~fm)란, 디코더(130)가 미리 알고있는 비트를 의미할 수 있다. 일반적으로, 프로즌 비트(f1~fm)는 각각의 모든 비트가 '0'으로 표현될 수 있다. 단, 이에 제한되는 것은 아니고, 프로즌 비트(f1~fm)는 디코더(130)가 아는 값인 경우에는 '0'이외에 다른 값도 가질 수 있다. 디코더(130)는 미리 프로즌 비트(f1~fm)에 대한 정보를 가지고 있어서, 폴라 부호의 복호화에 이용할 수 있다.
도 4는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더의 동작을 설명하기 위한 개념도이다.
도 1 및 도 4를 참조하면, 도 3과는 다르게 입력 코드()를 구성하는 언프로즌 비트(u1~uk)와 프로즌 비트(f1~fm)가 서로 교차 배치(interleaved)될 수 있다. 즉, 언프로즌 비트(u1~uk)와 프로즌 비트(f1~fm) 각각을 구성하는 비트가 동일한 종류별로 인접하게 배치되는 것이 아니라 서로 뒤섞여 배치될 수 있다. 구체적으로, 언프로즌 비트(u1~uk)인 u2와 u3 사이에 프로즌 비트(f1~fm)인 f1이 배치될 수 있다.
디코더(130)는 프로즌 비트(f1~fm)의 배치에 대한 정보도 미리 가지고 있을 수 있다. 상기와 같이 언프로즌 비트(u1~uk)와 프로즌 비트(f1~fm)는 폴라 부호의 특성 상 각각의 배치 위치 즉, 채널에 대해서 서로 다른 퀄리티(혹은 신뢰도)를 가질 수 있다. 따라서, 퀄리티가 좋은 채널에 프로즌 비트(f1~fm)를 배치하고, 퀄리티가 나쁜 채널에 언프로즌 비트(u1~uk)를 배치하는 것이 추후 복호화의 성공 확률을 높이는 방법일 수 있다.
도 5 내지 도 7은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더의 동작을 설명하기 위한 개념도이다.
먼저 도 5를 참조하면, 2 x 2의 경우의 폴라 부호의 부호화는 [G]2의 행렬에 의해서 정의될 수 있다. c1은 u1과 u2의 합으로 정의되고, c2는 u2가 그대로 출력될 수 있다.
이어서, 도 6을 참조하면, 4 x 4의 경우의 폴라 부호의 부호화는 [G]4의 행렬에 의해서 정의될 수 있다. c1은 u1, u2, u3 및 u4의 합으로 정의되고, c4는 u4가 그대로 출력될 수 있다.
이어서, 도 7을 참조하면, 8 x 8의 경우의 폴라 부호의 부호화는 [G]8의 행렬에 의해서 정의될 수 있다. c1은 u1 내지 u8의 합으로 정의되고, c8은 u8이 그대로 출력될 수 있다.
여기서, c1 내지 c8이 각각 다시 u1 내지 u8로 복호화 되는 경로를 채널이라고 정의할 때 각각의 채널의 퀄리티는 복호화되는 확률의 좋고 나쁨을 의미할 수 있다. 즉, 채널의 퀄리티가 좋다는 것은 복호화 확률이 높다는 것을 의미하고, 채널의 퀄리티가 나쁘다는 것은 복호화 확률이 낮다는 것을 의미할 수 있다.
도 7에서, 퀄리티가 가장 좋은 채널은 c8과 u8이 연결되는 채널일 수 있다. 반대로, 퀄리티가 가장 나쁜 채널은 c1과 u1이 연결되는 채널일 수 있다.
폴라 부호는 여러 채널의 퀄리티가 서로 다를 수 있고, 이론적으로 코드 길이가 길어질수록 각각의 채널의 퀄리티가 분극(polarization)될 수 있다. 즉, 코드 길이가 길어질수록 상대적으로 퀄리티가 아주 높거나 아주 낮은 채널의 비율이 높아질 수 있다.
도 8은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 인코더 및 디코더의 동작을 설명하기 위한 개념도이다.
도 8을 참조하면, 인코더(120)는 2개의 프리 코드워드(ua, ub)를 각각 폴라 부호화하여 연접할 수 있다.
구체적으로, 제1 프리 코드워드(ua)는 제1 언프로즌 비트(UF1)와 제1 프로즌 비트(F1)를 포함할 수 있다. 제1 언프로즌 비트(UF1)는 제1 데이터 비트(D1) 및 제2 데이터 비트(D2)를 포함할 수 있다.
제1 데이터 비트(D1)는 k비트로서, u1~uk의 비트를 의미할 수 있다. 이 때, 상기 u1~uk의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
제2 데이터 비트(D2)는 n-k비트로서, uk+1~un의 비트를 의미할 수 있다. 이 때, 상기 uk+1~un의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
제1 프로즌 비트(F1)는 m비트로서, f1~fm의 비트를 의미할 수 있다. 이 때, 상기 f1~fm의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
즉, 도 8에서는 제1 데이터 비트(D1), 제2 데이터 비트(D2) 및 제1 프로즌 비트(F1)가 서로 분리되어 연접된 것으로 보이지만, 본 발명의 몇몇 실시예에 따르면, 제1 데이터 비트(D1), 제2 데이터 비트(D2) 및 제1 프로즌 비트(F1)가 서로 교차 배치될(interleaved) 수 있다.
마찬가지로, 제2 프리 코드워드(ub)는 제2 언프로즌 비트(UF2)와 제2 프로즌 비트(F2)를 포함할 수 있다. 제2 언프로즌 비트(UF2)는 제3 데이터 비트(D3) 및 제2 데이터 비트(D2)를 포함할 수 있다.
제3 데이터 비트(D3)는 k비트로서, v1~vk의 비트를 의미할 수 있다. 이 때, 상기 v1~vk의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
제2 데이터 비트(D2)는 제1 언프로즌 비트(UF1)에 포함된 것과 동일한 비트일 수 있다.
제2 프로즌 비트(F2)는 m비트로서, g1~gm의 비트를 의미할 수 있다. 이 때, 상기 g1~gm의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
즉, 본 발명의 몇몇 실시예에 따르면, 제3 데이터 비트(D3), 제2 데이터 비트(D2) 및 제2 프로즌 비트(F2)가 서로 교차 배치될 수 있다.
제1 프리 코드워드(ua)는 폴라 부호화 행렬 G에 의해서 제1 서브 폴라 코드워드(Ca)로 부호화될 수 있다. 마찬가지로, 제2 프리 코드워드(ub)는 폴라 부호화 행렬 G에 의해서 제2 서브 폴라 코드워드(Cb)로 부호화될 수 있다.
제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb)는 서로 연접되어 폴라 코드워드(c)를 구성할 수 있다.
이 때, 상술한 바와 같이 제1 프로즌 비트(F1)와 제2 프로즌 비트(F2)는 도 1의 디코더(130)가 알고있는 값으로서, 일반적으로 '0'일 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
또한, 도 8에서는 제1 프로즌 비트(F1)와 제2 프로즌 비트(F2)의 크기가 서로 m 비트로 동일한 것으로 도시하였지만, 이에 제한되는 것은 아니다. 필요에 따라서, 본 발명의 몇몇 실시예에서는 제1 프로즌 비트(F1)와 제2 프로즌 비트(F2)의 크기가 서로 다를 수도 있다.
도 9는 도 1의 폴라 부호의 복호화 장치의 디코더를 세부적으로 설명하기 위한 블록도이다.
도 8 및 도 9를 참조하면, 디코더(130)는 폴라 코드 디코더(131) 및 프로즌 비트 복원기(132)를 포함할 수 있다.
디코더(130)는 폴라 코드워드(c)를 입력 받아 프리 코드워드(u)를 출력할 수 있다.
구체적으로, 폴라 코드 디코더(131)는 폴라 코드워드(c)를 입력 받을 수 있다. 폴라 코드 디코더(131)가 입력 받은 폴라 코드워드(c)는 제1 서브 폴라 코드워드(Ca) 및 제2 서브 폴라 코드워드(Cb)를 포함할 수 있다. 폴라 코드 디코더(131)는 제1 서브 폴라 코드워드(Ca)를 복호화하여 제1 프리 코드워드(ua)를 획득하는 것을 시도하고, 제2 서브 폴라 코드워드(Cb)를 복호화하여 제2 프리 코드워드(ub)를 획득하는 것을 시도한다. 이 때, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb)의 복호화는 순차적으로 진행될 수 있다. 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb)의 복호화는 서로 독립적으로 진행될 수 있다.
이 때, 복호화는 채널의 퀄리티에 따라서 성공 확률이 다르고, 각각의 서브 폴라 코드워드에 따라서도 성공과 실패가 나누어질 수 있다.
만일, 모든 서브 폴라 코드워드의 복호화가 성공이면 당연히 복호화를 종료한다. 만일, 모든 서브 폴라 코드워드의 복호화가 실패한 경우에는 복호화를 종료한다.
그렇지만, 일부의 서브 폴라 코드워드의 복호화만 성공인 경우에는 복호화가 바로 종료되지 않을 수 있다.
제2 데이터 비트(D2)는 제1 프리 코드워드(ua)와 제2 프리 코드워드(ub)에 모두 포함되어 있을 수 있다. 즉, 제2 데이터 비트(D2)는 제1 프리 코드워드(ua) 및 제2 프리 코드워드(ub)의 공유 비트로서 기능할 수 있다.
만일, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb) 중 제1 서브 폴라 코드워드(Ca)의 복호화가 실패하고, 제2 서브 폴라 코드워드(Cb)의 복호화가 성공한 경우에는, 중간 결과(intermediate results) 즉, 제2 프리 코드워드(ub)의 제3 데이터 비트(D3) 및 제2 데이터 비트(D2)가 프로즌 비트 복원기(132)로 전송될 수 있다.
이에 따라, 제1 프리 코드워드(ua)와 제2 프리 코드워드(ub)의 공유 비트인 제2 데이터 비트(D2)가 공개될 수 있다.
프로즌 비트 복원기(132)는 제2 데이터 비트(D2)를 추가 프로즌 비트(additional frozen bit) 즉, 공개된 제2 데이터 비트(D2)를 폴라 코드 디코더(131)에 전송할 수 있다.
폴라 코드 디코더(131)는 제1 서브 폴라 코드워드(Ca)의 복호화에 기존의 제1 프로즌 비트(F1)와 제2 데이터 비트(D2)를 프로즌 비트로 활용될 수 있다. 즉, 프로즌 비트는 폴라 코드 디코더(131)도 알고 있는 값을 가지는 비트이므로, 폴라 코드 디코더(131)는 원래부터 알려진 제1 프로즌 비트(F1)와 제2 서브 폴라 코드워드(Cb)의 복호화 과정에서 밝혀진 제2 데이터 비트(D2)를 프로즌 비트로 활용하여 밝혀지지 않은 제1 데이터 비트(D1)의 복호화에 활용할 수 있다.
이 때에는 최초의 복호화 단계보다 프로즌 비트의 비율이 더 커지므로 복호화의 성공 확률도 당연히 더 커질 수 있다. 따라서, 폴라 코드 디코더(131)는 더욱 높은 확률로 제1 서브 폴라 코드워드(Ca)의 복호화를 시도할 수 있다.
반대의 경우 즉, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb) 중 제2 서브 폴라 코드워드(Cb)의 복호화가 실패하고, 제1 서브 폴라 코드워드(Ca)의 복호화가 성공한 경우에는, 중간 결과 즉, 제1 프리 코드워드(ua)의 제1 데이터 비트(D1) 및 제2 데이터 비트(D2)가 프로즌 비트 복원기(132)로 전송될 수 있다.
이에 따라, 제1 프리 코드워드(ua)와 제2 프리 코드워드(ub)의 공유 비트인 제2 데이터 비트(D2)가 공개될 수 있다.
프로즌 비트 복원기(132)는 제2 데이터 비트(D2)를 추가 프로즌 비트(additional frozen bit) 즉, 공개된 제2 데이터 비트(D2)를 폴라 코드 디코더(131)에 전송할 수 있다.
폴라 코드 디코더(131)는 제2 서브 폴라 코드워드(Cb)의 복호화에 기존의 제2 프로즌 비트(F2)와 제2 데이터 비트(D2)를 프로즌 비트로 활용될 수 있다. 즉, 프로즌 비트는 폴라 코드 디코더(131)도 알고 있는 값을 가지는 비트이므로, 폴라 코드 디코더(131)는 원래부터 알려진 제2 프로즌 비트(F2)와 제1 서브 폴라 코드워드(Ca)의 복호화 과정에서 밝혀진 제2 데이터 비트(D2)를 프로즌 비트로 활용하여 밝혀지지 않은 제3 데이터 비트(D3)의 복호화에 활용할 수 있다.
이 경우에도 당연히 최초의 복호화 단계보다 더 높은 확률로 제2 서브 폴라 코드워드(Cb)의 복호화를 시도할 수 있다.
본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치는 코드가 폴라 코드의 복호 복잡도와 복호 시간을 대폭 감소할 수 있다. 나아가, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치 및 방법은 기존의 폴라 부호의 장점인 높은 정정 능력을 여전히 가질 수 있다. 나아가, 부분 복호화(Partial decoding)가 가능하므로, 전체적인 복호화가 불가능한 경우에도 일부의 복호화를 통해서 일부 데이터의 정정(error correction)이 가능할 수 있다.
이하, 도 10을 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 방법의 부호화 및 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 10은 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치를 설명하기 위한 블록도이다.
도 10을 참조하면, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치의 디코더(130)는 제1 폴라 코드 디코더(131a), 제2 폴라 코드 디코더(131b) 및 프로즌 비트 복원기(132)를 포함한다.
즉, 본 실시예의 디코더(130)는 복수의 폴라 코드 디코더(130a, 130b)를 포함할 수 있다.
제1 폴라 코드 디코더(131a)는 제1 서브 폴라 코드워드(Ca)를 입력받아 제1 프리 코드워드(ua)를 출력할 수 있다. 제2 폴라 코드 디코더(131b)는 제2 서브 폴라 코드워드(Cb)를 입력받아 제2 프리 코드워드(ub)를 출력할 수 있다.
프로즌 비트 복원기(132)는 제1 폴라 코드 디코더(131a) 및 제2 폴라 코드 디코더(131b)로부터 중간 결과를 받아 추가 프로즌 비트를 제공할 수 있다.
디코더(130) 내에 폴라 코드 디코더(131)가 복수로 존재함에 따라서, 서로 독립적인 서브 폴라 코드워드의 복호화 과정의 시간이 더 줄어들 수 있다. 즉, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb)의 복호화가 동시에 진행될 수 있어서 본 실시예에 따른 폴라 부호의 복호화 장치의 복호 지연 시간이 대폭 감소할 수 있다.
이 때, 제1 폴라 코드 디코더(131a)와 제2 폴라 코드 디코더(131b)는 서로 동일한 구조를 가질 수 있다. 따라서, 제1 폴라 코드 디코더(131a) 및 제2 폴라 코드 디코더(131b)에 입력이 도 10과 반대로 제공되어도 각각 제1 프리 코드워드(ua) 및 제2 프리 코드워드(ub)를 출력하는 것은 아무런 문제가 없다.
즉, 본 실시예에 따른 폴라 부호의 복호화 장치는 어떤 폴라 코드워드를 어떤 폴라 코드 디코더(131)를 사용하여 복호화하는 지에 대해서는 아무런 제한이 없으므로 리소스를 할당할 필요가 없다.
이하, 도 1 및 도 11을 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 11은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명하기 위한 개념도이다.
도 1 및 도 11을 참조하면, 본 발명의 몇몇 실시예에 다른 폴라 부호의 복호화 장치의 인코더(120)는 3개의 프리 코드워드(ua, ub, uc)를 각각 폴라 부호화하여 연접할 수 있다.
구체적으로, 제3 프리 코드워드(uc)는 제3 언프로즌 비트(UF3)와 제3 프로즌 비트(F3)를 포함할 수 있다. 제3 언프로즌 비트(UF3)는 제4 데이터 비트(D4) 및 제2 데이터 비트(D2)를 포함할 수 있다.
제4 데이터 비트(D4)는 k비트로서, w1~wk의 비트를 의미할 수 있다. 이 때, 상기 w1~wk의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
제2 데이터 비트(D2)는 제1 언프로즌 비트(UF1) 및 제2 언프로즌 비트(UF2)에 포함된 것과 동일한 비트일 수 있다.
제3 프로즌 비트(F3)는 m비트로서, h1~hm의 비트를 의미할 수 있다. 이 때, 상기 h1~hm의 비트는 도 3처럼 서로 인접할 수도 있으나, 도 4처럼 서로 분리 배치될 수도 있다.
즉, 본 발명의 몇몇 실시예에 따르면, 제4 데이터 비트(D4), 제2 데이터 비트(D2) 및 제3 프로즌 비트(F3)가 서로 교차 배치될 수 있다.
제1 프리 코드워드(ua)는 폴라 부호화 행렬 G에 의해서 제1 서브 폴라 코드워드(Ca)로 부호화되고, 제2 프리 코드워드(ub)는 폴라 부호화 행렬 G에 의해서 제2 서브 폴라 코드워드(Cb)로 부호화될 수 있다. 마찬가지로, 제3 프리 코드워드(uc)는 폴라 부호화 행렬 G에 의해서 제3 서브 폴라 코드워드(Cc)로 부호화될 수 있다.
제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb)와 제3 서브 폴라 코드워드(Cc)는 서로 연접되어 폴라 코드워드(c)를 구성할 수 있다.
디코더(130)는 먼저, 제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb)와 제3 서브 폴라 코드워드(Cc)에 대해서 각각 복호화를 수행할 수 있다.
만일, 모든 서브 폴라 코드워드의 복호화가 성공이면 당연히 복호화를 종료한다. 만일, 모든 서브 폴라 코드워드의 복호화가 실패한 경우에는 복호화를 종료한다. 그렇지만, 일부의 서브 폴라 코드워드의 복호화만 성공인 경우에는 복호화가 바로 종료되지 않을 수 있다.
제2 데이터 비트(D2)는 제1 프리 코드워드(ua), 제2 프리 코드워드(ub) 및 제3 프리 코드워드(uc)에 모두 포함되어 있을 수 있다. 즉, 제2 데이터 비트(D2)는 제1 프리 코드워드(ua), 제2 프리 코드워드(ub) 및 제3 프리 코드워드(uc)의 공유 비트로서 기능할 수 있다.
제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb)와 제3 서브 폴라 코드워드(Cc) 중 적어도 하나가 복호화에 성공한 경우 상기 공유 비트인 제2 데이터 비트(D2)가 복호화에 실패한 서프 폴라 코드워드의 프로즌 비트로 활용될 수 있다. 이를 통해서, 최초 복호화에서 실패한 서브 폴라 코드워드의 복호화가 다시 수행되고, 그 성공 확률은 최초 복호화에 비해서 더 높아질 수 있다.
본 실시예에 따른 폴라 부호의 복호화 장치는 3개의 프리 코드워드를 연접해서 하나의 폴라 코드워드를 획득하므로, 3개의 서브 폴라 코드워드 중 어느 하나만 복호화에 성공해도 더 높은 확률로 추가 복호화를 진행할 수 있어 복호화 확률을 크게 높일 수 있다. 나아가, 본 실시예에 따른 폴라 부호의 복호화 장치는 복호 지연 시간도 줄이고, 복호 복잡도도 매우 작게할 수 있다.
상술한 설명에서는 3개의 프리 코드워드에 대한 부호화 및 복호화를 설명하였지만, 본 실시예가 이에 제한되는 것은 아니다. 즉, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치는 4개 이상의 프리 코드워드를 이용한 부호화 및 복호화도 수행할 수 있다.
이하, 도 1 및 도 12를 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 12는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명하기 위한 개념도이다.
도 1 및 도 12를 참조하면, 제2 프리 코드워드(ub)는 제2 데이터 비트(D2)와 다른 제5 데이터 비트(D5)를 포함하고, 제3 프리 코드워드(uc)는 제2 데이터 비트(D2)와 제5 데이터 비트(D5)의 패리티 정보를 포함하는 제1 패리티 비트(P1)를 포함할 수 있다.
인코더(120)는 제1 프리 코드워드(ua), 제2 프리 코드워드(ub) 및 제3 프리 코드워드(uc)를 각각 폴라 부호화 하여 제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb) 및 제3 서브 폴라 코드워드(Cc)를 생성할 수 있다. 인코더(120)는 제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb) 및 제3 서브 폴라 코드워드(Cc)를 연접하여 폴라 코드워드(c)를 생성할 수 있다.
디코더(130)는 제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb) 및 제3 서브 폴라 코드워드(Cc) 중 2개의 서브 폴라 코드워드의 복호화를 성공한 경우 나머지 한 개의 서브 폴라 코드워드의 복호화를 재시도할 수 있다.
구체적으로, 디코더(130)가 제1 서브 폴라 코드워드(Ca) 및 제2 서브 폴라 코드워드(Cb)의 복호화에 성공하고, 제3 서브 폴라 코드워드(Cc)의 복호화에 실패한 경우에, 공개된 제2 데이터 비트(D2) 및 제5 데이터 비트(D5)에 의해서 제1 패리티 비트(P1)가 복원될 수 있다.
이 경우, 디코더(130)는 복원된 제1 패리티 비트(P1)를 제3 프로즌 비트(F3)와 같이 프로즌 비트로 활용하여 제3 프리 코드워드(uc)를 복호화할 수 있다.
마찬가지로, 디코더(130)가 제1 서브 폴라 코드워드(Ca) 및 제3 서브 폴라 코드워드(Cc)의 복호화에 성공하고, 제2 서브 폴라 코드워드(Cb)의 복호화에 실패한 경우에, 공개된 제2 데이터 비트(D2) 및 제1 패리티 비트(P1)에 의해서 제5 데이터 비트(D5)가 복원될 수 있다.
이 경우, 디코더(130)는 복원된 제5 데이터 비트(D5)를 제2 프로즌 비트(F2)와 같이 프로즌 비트로 활용하여 제2 프리 코드워드(ub)를 복호화할 수 있다.
또한, 디코더(130)가 제2 서브 폴라 코드워드(Cb) 및 제3 서브 폴라 코드워드(Cc)의 복호화에 성공하고, 제1 서브 폴라 코드워드(Ca)의 복호화에 실패한 경우에, 공개된 제5 데이터 비트(D5) 및 제1 패리티 비트(P1)에 의해서 제2 데이터 비트(D2)가 복원될 수 있다.
이 경우, 디코더(130)는 복원된 제2 데이터 비트(D2)를 제2 프로즌 비트(F2)와 같이 프로즌 비트로 활용하여 제2 프리 코드워드(ub)를 복호화할 수 있다.
본 실시예에 따른 폴라 부호의 복호화 장치는 3개의 프리 코드워드에서 중복되는 공유 비트를 최소화할 수 있다. 즉, 제2 데이터 비트(D2)와 제5 데이터 비트(D5)는 서로 다른 데이터를 포함하므로, 서로 중복되는 경우보다 더 많은 데이터를 복호화를 통해 획득할 수 있다.
이하, 도 1 및 도 13을 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 13은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명하기 위한 개념도이다.
도 1 및 도 13을 참조하면, 제1 프리 코드워드(ua)는 제1 언프로즌 비트(UF1)와 제1 프로즌 비트(F1)를 포함할 수 있다. 제1 언프로즌 비트(UF1)는 제1 데이터 비트(D1), 제2 데이터 비트(D2) 및 제6 데이터 비트(D6)를 포함할 수 있다.
본 발명의 몇몇 실시예에 따르면, 제1 데이터 비트(D1), 제2 데이터 비트(D2), 제6 데이터 비트(D6) 및 제1 프로즌 비트(F1)가 서로 교차 배치될 수 있다.
제2 프리 코드워드(ub)는 제2 언프로즌 비트(UF2)와 제2 프로즌 비트(F2)를 포함할 수 있다. 제2 언프로즌 비트(UF2)는 제3 데이터 비트(D3), 제5 데이터 비트(D5) 및 제6 데이터 비트(D6)를 포함할 수 있다.
본 발명의 몇몇 실시예에 따르면, 제3 데이터 비트(D3), 제5 데이터 비트(D5), 제6 데이터 비트(D6) 및 제2 프로즌 비트(F2)가 서로 교차 배치될 수 있다.
제3 프리 코드워드(uc)는 제3 언프로즌 비트(UF3)와 제3 프로즌 비트(F3)를 포함할 수 있다. 제3 언프로즌 비트(UF3)는 제4 데이터 비트(D4), 제1 패리티 비트(P1) 및 제6 데이터 비트(D6)를 포함할 수 있다.
본 발명의 몇몇 실시예에 따르면, 제4 데이터 비트(D4), 제1 패리티 비트(P1), 제6 데이터 비트(D6) 및 제3 프로즌 비트(F3)가 서로 교차 배치될 수 있다.
인코더(120)는 본 발명의 몇몇 실시예에 다른 폴라 부호의 복호화 장치의 인코더(120)는 3개의 프리 코드워드(ua, ub, uc)를 각각 폴라 부호화하여 연접할 수 있다.
구체적으로, 제1 프리 코드워드(ua)는 폴라 부호화 행렬 G에 의해서 제1 서브 폴라 코드워드(Ca)로 부호화되고, 제2 프리 코드워드(ub)는 폴라 부호화 행렬 G에 의해서 제2 서브 폴라 코드워드(Cb)로 부호화될 수 있다. 마찬가지로, 제3 프리 코드워드(uc)는 폴라 부호화 행렬 G에 의해서 제3 서브 폴라 코드워드(Cc)로 부호화될 수 있다.
제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb)와 제3 서브 폴라 코드워드(Cc)는 서로 연접되어 폴라 코드워드(c)를 구성할 수 있다.
디코더(130)는 먼저, 제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb)와 제3 서브 폴라 코드워드(Cc)에 대해서 각각 복호화를 수행할 수 있다.
만일, 모든 서브 폴라 코드워드의 복호화가 성공이면 당연히 복호화를 종료한다. 만일, 모든 서브 폴라 코드워드의 복호화가 실패한 경우에는 복호화를 종료한다.
만일 제1 서브 폴라 코드워드(Ca), 제2 서브 폴라 코드워드(Cb)와 제3 서브 폴라 코드워드(Cc) 중 어느 하나만 복호화에 성공하고 나머지 2개가 복호화에 실패한 경우에는, 제6 데이터 비트(D6)가 공유 비트로서 공개될 수 있다.
디코더(130)는 제6 데이터 비트(D6)를 이용하여 나머지 2개의 서브 폴라 코드워드를 다시 복호화할 수 있다. 이 경우, 제6 데이터 비트(D6)가 프로즌 비트 즉, 디코더(130)가 아는 값을 가지는 비트로서 복호화 확률이 높아질 수 있다.
2번째 복호화 수행결과, 추가적으로 하나의 서브 폴라 코드워드가 복호화에 성공하고, 나머지 하나의 서브 폴라 코드 워드가 복호화에 실패한 경우에는, 제2 데이터 비트(D2), 제5 데이터 비트(D5) 및 제1 패리티 비트(P1) 중 공개된 2개를 통해서 나머지를 복원할 수 있다. 이를 통해서 디코더(130)는 또다시 3번째로 복호화를 수행할 수 있다. 이 경우, 제2 데이터 비트(D2), 제5 데이터 비트(D5) 및 제1 패리티 비트(P1) 중 어느 하나와 제6 데이터 비트(D6)가 이미 공개되어 프로즌 비트로 활용되므로 복호화 확률은 한번 더 높아질 수 있다.
도 13에서는 공유 비트에 따른 복호화가 2 단계로 진행될 수 있도록 언프로즌 비트가 3개의 영역을 가지고 있었지만, 본 실시예가 이에 제한되는 것은 아니다. 즉, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치는 4개 이상의 영역을 가지는 언프로즌 비트를 포함하는 프리 코드워드를 부호화 및 복호화할 수도 있다.
본 실시예에 따른 폴라 부호의 복호화 장치는 3개의 프리 코드워드에서 제1 패리티 비트(P1)를 이용하여 서로 다른 제2 데이터 비트(D2)와 제5 데이터 비트(D5) 즉, 비공유 데이터 비트의 비율을 늘리되, 제6 데이터 비트(D6)를 통해서 3개의 프리 코드워드 중 어느 하나만 복호화에 성공하더라도 다른 프리 코드워드의 복호화의 확률을 높일 수 있다.
이하, 도 1 및 도 14를 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치의 부호화 및 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 14는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치의 데이터 구조를 설명하기 위한 개념도이다.
도 1 및 도 14를 참조하면, 제1 프리 코드워드(ua)는 제1 언프로즌 비트(UF1)와 제1 프로즌 비트(F1)를 포함할 수 있다. 제1 언프로즌 비트(UF1)는 제1 데이터 비트(D1) 및 제2 패리티 비트(P2)를 포함할 수 있다.
제1 데이터 비트(D1)는 공유 비트를 포함할 수 있다. 여기서 공유 비트란, 다른 프리 코드워드와 공통되는 비트일 수 있다.
제2 패리티 비트(P2)는 제1 데이터 비트(D1)에 대한 패리티 비트일 수 있다. 제2 패리티 비트(P2)는 오류 검출 코드(cyclic redundancy check, CRC)일 수도 있다.
또는, 제1 데이터 비트(D1)는 다른 프리 코드워드와 공유되지 않고, 제2 패리티 비트(P2)가 다른 프리 코드워드와 공유되는 공유비트일 수도 있다. 이 때의 제2 패리티 비트(P2)는 다른 프리 코드워드의 오류 검출 기능은 없지만, 제1 프리 코드워드(ua)에서만 오류 검출 기능을 적용할 수 있다.
본 실시예에 따른 폴라 부호 복호화 장치는 정정 능력이 탁월한 폴라 부호를 사용하면서, 복호 복잡도 및 복호 지연 시간이 크게 향상되고, 나아가 데이터의 오류 검출도 수행할 수 있다.
도 15는 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 장치가 채용된 전자 장치의 구현예를 나타내는 블록도이다.
도 15를 참조하면, 전자 장치(2000)는 프로세서(2100), RAM(2200), 입출력 장치(2300), 전원 장치(2400) 및 메모리 시스템(1000)을 포함할 수 있다. 한편, 도 15에는 도시되지 않았지만, 전자 장치(2000)는 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 전자 장치(2000)는 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 15에 도시된 폴라 부호의 복호화 장치(1000)는 도 1 내지 도 14에 의해서 설명된 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치(1000)가 적용될 수 있다. 따라서, 메모리 장치(200)에서 읽어낸 데이터를 폴라 부호 복호화 처리를 할 수 있다.
프로세서(2100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2500)를 통하여 RAM(2200), 입출력 장치(2300) 및 메모리 시스템(1000)과 통신을 수행할 수 있다. 실시예에 따라, 프로세서(2100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2200)는 전자 장치(2000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2400)는 전자 장치(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
이하, 도 8 및 도 16을 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 16은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 방법을 설명하기 위한 순서도이다.
도 16를 참조하면, 먼저 서브 폴라 코드워드를 각각 복호화한다(S10).
구체적으로, 도 8을 참조하면, 제1 서브 폴라 코드워드(Ca)를 복호화하여 제1 프리 코드워드(ua)를 획득하는 것을 시도하고, 제2 서브 폴라 코드워드(Cb)를 복호화하여 제2 프리 코드워드(ub)를 획득하는 것을 시도한다. 이 때, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb)의 복호화는 순차적으로 진행될 수도 있고, 동시에 진행될 수도 있다. 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb)의 복호화는 서로 독립적으로 진행될 수 있다.
이 때, 복호화는 채널의 퀄리티에 따라서 성공 확률이 다르고, 각각의 서브 폴라 코드워드에 따라서도 성공과 실패가 나누어질 수 있다.
다시, 도 16를 참조하면, 서브 폴라 코드워드의 복호화의 성공 여부를 판단한다(S20).
(1) 만일, 모든 서브 폴라 코드워드의 복호화가 성공이면 당연히 복호화를 종료한다.
(2) 만일, 일부의 서브 폴라 코드워드의 복호화만 성공인 경우에는, 복호화가 종료되지 않고, 다음 단계로 진행된다.
(3) 만일, 모든 서브 폴라 코드워드의 복호화가 실패한 경우에는 복호화를 종료한다.
이어서, 상기 (2)의 경우에 프로즌 비트를 복원한다(S30).
구체적으로, 도 8을 참조하면, 제2 데이터 비트(D2)는 제1 프리 코드워드(ua)와 제2 프리 코드워드(ub)에 모두 포함되어 있을 수 있다. 즉, 제2 데이터 비트(D2)는 제1 프리 코드워드(ua) 및 제2 프리 코드워드(ub)의 공유 비트로서 기능할 수 있다.
만일, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb) 중 제1 서브 폴라 코드워드(Ca)의 복호화가 실패하고, 제2 서브 폴라 코드워드(Cb)의 복호화가 성공한 경우에는, 제2 프리 코드워드(ub)의 제3 데이터 비트(D3) 및 제2 데이터 비트(D2)가 도 1의 디코더(130)에 알려질 수 있다. 즉, 제1 프리 코드워드(ua)와 제2 프리 코드워드(ub)의 공유 비트인 제2 데이터 비트(D2)가 공개될 수 있다.
이에 따라서, 제1 서브 폴라 코드워드(Ca)의 복호화에는 기존의 제1 프로즌 비트(F1)와 제2 데이터 비트(D2)가 프로즌 비트로 활용될 수 있다. 즉, 프로즌 비트는 디코더도 알고 있는 값을 가지는 비트이므로, 원래부터 알려진 제1 프로즌 비트(F1)와 제2 서브 폴라 코드워드(Cb)의 복호화 과정에서 밝혀진 제2 데이터 비트(D2)를 프로즌 비트로 활용하여 밝혀지지 않은 제1 데이터 비트(D1)의 복호화에 활용할 수 있다.
이 때에는 최초의 복호화 과정(S10)보다 프로즌 비트의 비율이 더 커지므로 복호화의 성공 확률도 당연히 더 커질 수 있다. 따라서, 더욱 높은 확률로 제1 서브 폴라 코드워드(Ca)의 복호화를 시도할 수 있다.
반대의 경우 즉, 제1 서브 폴라 코드워드(Ca)와 제2 서브 폴라 코드워드(Cb) 중 제2 서브 폴라 코드워드(Cb)의 복호화가 실패하고, 제1 서브 폴라 코드워드(Ca)의 복호화가 성공한 경우에는, 제1 프리 코드워드(ua)의 제1 데이터 비트(D1) 및 제2 데이터 비트(D2)가 도 1의 디코더(130)에 알려질 수 있다. 즉, 제1 프리 코드워드(ua)와 제2 프리 코드워드(ub)의 공유 비트인 제2 데이터 비트(D2)가 공개될 수 있다.
이에 따라서, 제2 서브 폴라 코드워드(Cb)의 복호화에는 기존의 제2 프로즌 비트(F2)와 제2 데이터 비트(D2)가 프로즌 비트로 활용될 수 있다. 즉, 프로즌 비트는 디코더도 알고 있는 값을 가지는 비트이므로, 원래부터 알려진 제2 프로즌 비트(F2)와 제1 서브 폴라 코드워드(Ca)의 복호화 과정에서 밝혀진 제2 데이터 비트(D2)를 프로즌 비트로 활용하여 밝혀지지 않은 제2 데이터 비트(D2)의 복호화에 활용할 수 있다.
이 경우에도 당연히 최초의 복호화 과정(S10)보다 더 높은 확률로 제2 서브 폴라 코드워드(Cb)의 복호화를 시도할 수 있다.
본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치 및 방법은 코드가 길어짐에 따라서, 복호 복잡도가 높고, 복호 시간이 긴 폴라 부호를 사용하면서도, 기존의 복호 복잡도와 복호 시간을 대폭 감소할 수 있다. 나아가, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 장치 및 방법은 기존의 폴라 부호의 장점인 높은 정정 능력을 여전히 가질 수 있다. 나아가, 부분 복호화(Partial decoding)이 가능하므로, 전체적인 복호화가 불가능한 경우에도 일부의 복호화를 통해서 일부 데이터의 정정(error correction)이 가능할 수 있다.
이하, 도 8, 도 16, 도 17 및 도 18을 참조하여, 본 발명의 몇몇 실시예에 따른 폴라 부호의 복호화 방법을 설명한다. 상술한 설명과 중복되는 부분은 생략하거나 간략히 한다.
도 17은 본 발명의 몇몇 실시예들에 따른 폴라 부호의 복호화 방법을 설명하기 위한 순서도이고, 도 18은 도 17의 경판정(hard decision) 및 연판정(soft decision)을 설명하기 위한 그래프이다.
도 17을 참조하면, 먼저 경판정(hard decision, HD) 복호화를 수행한다(S100).
구체적으로, 도 2 및 도 18을 참조하면, 플래시 메모리 칩들(201, 203)은 각각 전압에 따른 셀 카운트 즉, 산포 특성을 가질 수 있다.
상기 산포 특성은 복수의 스테이트(S1, S2)를 가질 수 있는데, 현재 플래시 메모리 칩(201, 203)이 어떠한 스테이트를 가지는 지 알기 위한 리드(read) 동작에서는 제1 리드 레벨(R1)에서의 한번의 리드 동작만으로 스테이트(S1, S2)를 판단할 수 있다. 이를 경판정(hard decision) 복호화라고 정의할 수 있다. 경판정 복호화는 상대적으로 빠른 속도로 리드 동작이 수행되지만, 현재 플래시 메모리 칩(201, 203)의 스테이트(S1, S2)에 대한 정확성은 상대적으로 떨어질 수 있다.
상기 경판정 복호화는 상술한 도 8 및 도 16에 의한 방식과 동일할 수 있다. 이러한 경판정 복호화는 속도가 빠르지만, 상대적으로 낮은 정확성에 의해서 복호화가 실패할 가능성이 상대적으로 높다. 따라서, 복호화가 실패할 수 있다.
다시, 도 17을 참조하면, 경판정 복호화가 실패한 경우, 연판정(soft decision, SD) 복호화를 수행한다(S200).
연판정 복호화의 경우 제1 리드 레벨(R1)에서의 한번의 리드 동작에 추가로, 제1 리드 레벨(R1)과 인접한 제2 리드 레벨(R2) 및/또는 제3 리드 레벨(R3)에서 스테이트(S1, S2)를 판단할 수 있다. 연판정 복호화는 상대적으로 느린 속도로 리드 동작이 수행되지만, 현재 플래시 메모리 칩(201, 203)의 스테이트(S1, S2)에 대한 정확성은 상대적으로 높을 수 있다.
상기 연판정 복호화는 상술한 도 8 및 도 16에 의한 방식과 동일할 수 있다.
본 실시예는, 1차적으로 빠른 속도로 경판정 복호화를 수행하고, 이어서 실패했을 경우에만 추가적으로 연판정 복호화를 수행하므로, 1차적으로 빠르게 복호화를 수행할 수 있고, 복호화에 실패하더라도 추후에 이를 보완할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
120: 인코더
130: 디코더

Claims (20)

  1. 인코더가 제1 데이터를 폴라 부호화하여 제1 서브 코드워드를 생성하되, 상기 제1 데이터는 제1 언프로즌 비트와, 제1 프로즌 비트를 포함하고, 상기 제1 언프로즌 비트는 제1 데이터 비트와 제2 데이터 비트를 포함하고,
    상기 인코더가 제2 프리 코드워드를 폴라 부호화하여 제2 서브 코드워드를 생성하되, 상기 제2 프리 코드워드는 제2 언프로즌 비트와, 제2 프로즌 비트를 포함하고, 상기 제2 언프로즌 비트는 제3 데이터 비트와 상기 제2 데이터 비트를 포함하고,
    디코더가 상기 제1 및 제2 서브 코드워드를 각각 복호화하고,
    상기 제1 및 제2 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트를 이용하여 상기 제1 및 제2 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  2. 제1 항에 있어서,
    상기 인코더가 제3 데이터를 폴라 부호화하여 제3 서브 코드워드를 생성하되, 상기 제3 데이터는 제3 언프로즌 비트와, 제3 프로즌 비트를 포함하고, 상기 제3 언프로즌 비트는 제4 데이터 비트와 상기 제2 데이터 비트와 연관된 제5 데이터 비트를 포함하고,
    상기 디코더가 상기 제3 서브 코드워드를 복호화하고,
    상기 제1 내지 제3 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트 또는 제5 데이터 비트를 이용하여 상기 제1 내지 제3 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  3. 제2 항에 있어서,
    상기 제5 데이터 비트는 상기 제2 데이터 비트와 동일한 폴라 부호 복호화 방법.
  4. 제2 항에 있어서,
    상기 제5 데이터 비트는 상기 제2 데이터 비트의 패리티 비트인 폴라 부호 복호화 방법.
  5. 제1 항에 있어서,
    상기 제1 언프로즌 비트는 데이터 영역과 상기 데이터 영역에 대한 패리티 정보를 포함하는 패리티 영역을 포함하는 폴라 부호 복호화 방법.
  6. 제1 항에 있어서,
    1차 복호화는,
    상기 디코더가 상기 제1 및 제2 서브 코드워드를 각각 복호화 하고,
    상기 제1 서브 코드워드가 복호화를 실패하고, 상기 제2 서브 코드워드가 복호화를 성공한 경우, 상기 제2 데이터 비트를 이용하여 상기 제1 서브 코드워드를 다시 복호화하는 것을 포함하고,
    상기 1차 복호화 이후에, 상기 디코더가 2차 복호화 하는 것을 더 포함하되,
    상기 1차 복호화는 하드 디시전(hard decision) 복호화이고, 상기 2차 복호화는 소프트 디시전(soft decision) 복호화인 폴라 부호 복호화 방법.
  7. 인코더가 제1 데이터를 폴라 부호화하여 제1 서브 코드워드를 생성하되, 상기 제1 데이터는 제1 언프로즌 비트와, 제1 프로즌 비트를 포함하고, 상기 제1 언프로즌 비트는 제1 데이터 비트와 제2 데이터 비트를 포함하고,
    상기 인코더가 제2 프리 코드워드를 폴라 부호화하여 제2 서브 코드워드를 생성하되, 상기 제2 프리 코드워드는 제2 언프로즌 비트와, 제2 프로즌 비트를 포함하고, 상기 제2 언프로즌 비트는 제3 데이터 비트와 상기 제2 데이터 비트와 연관된 제4 데이터 비트를 포함하고,
    디코더가 상기 제1 및 제2 서브 코드워드를 각각 복호화하고,
    상기 제1 및 제2 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트 또는 제4 데이터 비트를 이용하여 상기 제1 및 제2 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  8. 제7 항에 있어서,
    상기 제4 데이터 비트는 상기 제2 데이터 비트와 동일한 폴라 부호 복호화 방법.
  9. 제8 항에 있어서,
    상기 인코더가 제3 프리 코드워드를 폴라 부호화하여 제3 서브 코드워드를 생성하되, 상기 제3 프리 코드워드는 제3 언프로즌 비트와, 제3 프로즌 비트를 포함하고, 상기 제3 언프로즌 비트는 제5 데이터 비트와 상기 제2 데이터 비트를 포함하고,
    상기 디코더가 상기 제3 서브 코드워드를 복호화하고,
    상기 제1 내지 제3 서브 코드워드 중 어느 하나만 복호화를 성공한 경우, 상기 디코더가 상기 제2 데이터 비트를 이용하여 상기 제1 내지 제3 서브 코드워드 중 복호화에 실패한 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  10. 제7 항에 있어서,
    상기 인코더가 제3 프리 코드워드를 폴라 부호화하여 제3 서브 코드워드를 생성하되, 상기 제3 프리 코드워드는 제3 언프로즌 비트와, 제3 프로즌 비트를 포함하고, 상기 제3 언프로즌 비트는 제4 데이터 비트와 제5 데이터 비트를 포함하고, 상기 제4 데이터 비트는 상기 제2 데이터 비트 및 상기 제5 데이터 비트의 패리티 비트이고,
    상기 디코더가 상기 제3 서브 코드워드를 복호화하고,
    상기 제2 및 제3 서브 코드워드가 복호화를 성공하고, 상기 제1 서브 코드워드가 복호화를 실패한 경우, 상기 디코더가 상기 제4 및 제5 데이터 비트를 이용하여 상기 제1 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  11. 제10 항에 있어서,
    상기 제4 및 제5 데이터 비트를 이용하여 상기 제1 서브 코드워드를 다시 복호화하는 것은,
    상기 디코더가 상기 제4 및 제5 데이터 비트를 이용하여 상기 제2 데이터 비트를 복원하고,
    상기 디코더가 상기 제2 데이터 비트를 프로즌 비트화하여 상기 제1 서브 코드워드를 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  12. 제10 항에 있어서,
    상기 제1 및 제2 서브 코드워드가 복호화를 성공하고, 상기 제3 서브 코드워드가 복호화를 실패한 경우, 상기 디코더가 상기 제2 및 제4 데이터 비트를 이용하여 상기 제3 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  13. 제10 항에 있어서,
    상기 제1 및 제3 서브 코드워드가 복호화를 성공하고, 상기 제2 서브 코드워드가 복호화를 실패한 경우, 상기 디코더가 상기 제2 및 제5 데이터 비트를 이용하여 상기 제2 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  14. 제10 항에 있어서,
    상기 제1 내지 제3 언프로즌 비트는 제6 내지 제9 데이터 비트를 포함하고,
    상기 제6 내지 제9 데이터 비트는 서로 연관되고,
    상기 제1 내지 제3 서브 코드워드 중 적어도 1개의 복호화를 성공하는 경우, 상기 디코더가 상기 제6 내지 제9 데이터 비트 중 적어도 1개를 이용하여 상기 제1 내지 제3 서브 코드워드 중 복호화를 실패한 서브 코드워드를 다시 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  15. 인코더에 의해서 복수의 프리 코드워드를 각각 폴라 부호화하여 복수의 서브 코드워드를 생성하되, 상기 복수의 프리 코드 워드는 각각 프로즌 비트와 언프로즌 비트를 포함하고, 상기 언프로즌 비트는 상기 복수의 프리 코드워드끼리 공유되지 않는 비공유 비트와, 서로 공유 또는 연관되는 공유 비트를 포함하고,
    디코더에 의해서 상기 복수의 서브 코드워드를 1차 복호화를 시도하고,
    상기 1차 복호화에 의해서 복호화된 적어도 하나의 서브 코드워드의 공유 비트를 획득하고,
    상기 공유 비트를 이용하여, 상기 디코더에 의해서 상기 1차 복호화에 의해서 복호화되지 못한 적어도 하나의 서브 코드워드를 2차 복호화하는 것을 포함하는 폴라 부호 복호화 방법.
  16. 제15 항에 있어서,
    상기 복수의 프리 코드워드에 포함되는 상기 공유 비트는 모두 동일한 폴라 부호 복호화 방법.
  17. 제15 항에 있어서,
    상기 복수의 프리 코드워드는 제1 내지 제3 프리 코드워드를 포함하고,
    상기 제1 및 제2 프리 코드워드의 상기 공유 비트는 서로 다르고,
    상기 제3 프리 코드워드의 상기 공유 비트는 상기 제1 및 제2 프리 코드워드의 공유 비트들의 패리티 비트인 폴라 부호 복호화 방법.
  18. 제15 항에 있어서,
    상기 언프로즌 비트는 데이터 영역과 상기 데이터 영역의 패리티 정보를 포함하는 패리티 영역을 포함하는 폴라 부호 복호화 방법.
  19. 제15 항에 있어서,
    상기 언프로즌 비트와 상기 프로즌 비트는 서로 교차 배치되는(interleaved) 폴라 부호 복호화 방법.
  20. 제15 항에 있어서,
    상기 1차 및 2차 복호화는 하드 디시전 복호화이고,
    상기 2차 복호화 이후에, 상기 디코더가 상기 2차 복호화에 의해서 복호화되지 못한 적어도 하나의 서브 코드워드를 3차 복호화하는 것을 더 포함하되,
    상기 3차 복호화는 소프트 디시전 복호화인 폴라 부호 복호화 방법.
KR1020170146674A 2017-11-06 2017-11-06 폴라 부호 복호화 장치 및 방법 KR102426047B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170146674A KR102426047B1 (ko) 2017-11-06 2017-11-06 폴라 부호 복호화 장치 및 방법
US16/013,053 US10693503B2 (en) 2017-11-06 2018-06-20 Polar code decoding apparatus and method
CN201811059583.XA CN109753377A (zh) 2017-11-06 2018-09-11 极化码解码装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170146674A KR102426047B1 (ko) 2017-11-06 2017-11-06 폴라 부호 복호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20190051245A true KR20190051245A (ko) 2019-05-15
KR102426047B1 KR102426047B1 (ko) 2022-07-26

Family

ID=66328974

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170146674A KR102426047B1 (ko) 2017-11-06 2017-11-06 폴라 부호 복호화 장치 및 방법

Country Status (3)

Country Link
US (1) US10693503B2 (ko)
KR (1) KR102426047B1 (ko)
CN (1) CN109753377A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020262775A1 (ko) * 2019-06-28 2020-12-30 재단법인대구경북과학기술원 극부호 복호 장치 및 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114598424A (zh) * 2017-02-15 2022-06-07 中兴通讯股份有限公司 一种数据处理方法及装置
CN113472362A (zh) * 2020-03-31 2021-10-01 华为技术有限公司 用于数据通信的编码方法及装置
US11528038B2 (en) * 2020-11-06 2022-12-13 Western Digital Technologies, Inc. Content aware decoding using shared data statistics

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347186B1 (en) 2012-04-19 2013-01-01 Polaran Yazilim Bilisim Danismanlik Ithalat Ihracat Sanayi Ticaret Limited Sirketi Method and system for error correction in transmitting data using low complexity systematic encoder
CN103516476B (zh) 2012-06-29 2016-12-21 华为技术有限公司 编码方法和设备
US9503126B2 (en) * 2012-07-11 2016-11-22 The Regents Of The University Of California ECC polar coding and list decoding methods and codecs
US9362956B2 (en) 2013-01-23 2016-06-07 Samsung Electronics Co., Ltd. Method and system for encoding and decoding data using concatenated polar codes
CN104038234B (zh) 2013-03-07 2017-09-29 华为技术有限公司 极性码的译码方法和译码器
US9007241B2 (en) 2013-09-16 2015-04-14 Seagate Technology Llc Reduced polar codes
US10135460B2 (en) * 2013-10-01 2018-11-20 Texas Instruments Incorporated Apparatus and method for multilevel coding (MLC) with binary alphabet polar codes
US9317365B2 (en) 2014-03-06 2016-04-19 Seagate Technology Llc Soft decoding of polar codes
RU2571587C2 (ru) * 2014-04-10 2015-12-20 Самсунг Электроникс Ко., Лтд. Способ и устройство кодирования и декодирования данных в скрученном полярном коде
US20150333775A1 (en) 2014-05-15 2015-11-19 Broadcom Corporation Frozen-Bit Selection for a Polar Code Decoder
US9628114B2 (en) 2015-03-31 2017-04-18 Macronix International Co., Ltd. Length-compatible extended polar codes
TW201733322A (zh) * 2015-12-14 2017-09-16 Idac控股公司 使用極化碼凍結位元之wtru識別
EP3364542A4 (en) * 2015-12-23 2019-04-03 Huazhong University of Science and Technology ERROR CORRECTION ENCODING METHOD BASED ON CASCADE POLAR CODES AND REPETITION CODES OR MULTIBIT PARITY CHECK CODES
WO2017127973A1 (en) * 2016-01-25 2017-08-03 Qualcomm Incorporated Generation of polar codes with a variable block length utilizing puncturing
WO2017156792A1 (en) 2016-03-18 2017-09-21 Qualcomm Incorporated Transmission of new data in a hybrid automatic repeat request (harq) retransmission with polar coded transmissions
US10651973B2 (en) * 2017-03-22 2020-05-12 Huawei Technologies Co., Ltd. Method and apparatus for error-correction encoding using a polar code
DE102018113351A1 (de) * 2017-06-08 2018-12-13 Samsung Electronics Co., Ltd. Polares Codieren und Decodieren unter Verwendung von vordefinierten Informationen
US10998922B2 (en) * 2017-07-28 2021-05-04 Mitsubishi Electric Research Laboratories, Inc. Turbo product polar coding with hard decision cleaning
US10903938B2 (en) * 2017-08-21 2021-01-26 Mediatek Inc. Techniques of additional bit freezing for polar codes with rate matching
KR102482876B1 (ko) * 2018-01-30 2022-12-29 삼성전자 주식회사 Mimo 채널에 대한 폴라 코드 생성 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Universal Polar Codes (Computer Science Information Theory, December 2013) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020262775A1 (ko) * 2019-06-28 2020-12-30 재단법인대구경북과학기술원 극부호 복호 장치 및 방법

Also Published As

Publication number Publication date
KR102426047B1 (ko) 2022-07-26
US20190140665A1 (en) 2019-05-09
US10693503B2 (en) 2020-06-23
CN109753377A (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
KR101306645B1 (ko) 시행착오에 의한 에러 보정 디코딩
KR100845529B1 (ko) 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
JP5345201B2 (ja) 符号化および/または復号化メモリ装置および方法
KR102426047B1 (ko) 폴라 부호 복호화 장치 및 방법
KR101759658B1 (ko) 메모리 장치 및 메모리 시스템
US8954831B2 (en) Error correction codes for incremental redundancy
CN111352765B (zh) 控制器及存储器系统
WO2018171111A1 (zh) 多容错性的mds阵列码编码以及修复方法
KR20110073932A (ko) Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
US11397641B2 (en) Systems and methods for ultra fast ECC with parity
KR101645837B1 (ko) 에러 코딩 및 변조 기법들을 조합하기 위한 장치들 및 방법들
WO2011121490A1 (en) Two -level bch codes for solid state storage devices
JP2008141439A (ja) 誤り訂正処理装置及び誤り訂正処理方法
CN112486725B (zh) 一种对压缩数据进行纠错编码的方法和装置
KR20220021186A (ko) 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법
CN112068778B (zh) 用于保持从存储阵列中读取的数据的完整性的方法和设备
KR20090078285A (ko) 메모리 장치 및 멀티 비트 프로그래밍 방법
TW202001920A (zh) 在資料儲存系統中用於改善資料回復之方法及裝置
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
US10229003B2 (en) Method and system for iterative data recovery and error correction in a distributed system
JP6975047B2 (ja) ライトワンスメモリコードのエラー訂正コード管理
CN112134573B (zh) 用于将数据存储在存储器装置内的方法和检索数据的方法
JP6491482B2 (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
US8910013B1 (en) Methods and apparatus for providing multi-layered coding for memory devices
JP4327883B1 (ja) 情報処理装置、情報処理方法

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