KR20190133987A - 컨트롤러 및 그것의 동작 방법 - Google Patents

컨트롤러 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20190133987A
KR20190133987A KR1020180059080A KR20180059080A KR20190133987A KR 20190133987 A KR20190133987 A KR 20190133987A KR 1020180059080 A KR1020180059080 A KR 1020180059080A KR 20180059080 A KR20180059080 A KR 20180059080A KR 20190133987 A KR20190133987 A KR 20190133987A
Authority
KR
South Korea
Prior art keywords
array
message
generating
interleaving
decoding
Prior art date
Application number
KR1020180059080A
Other languages
English (en)
Other versions
KR102513782B1 (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 KR1020180059080A priority Critical patent/KR102513782B1/ko
Publication of KR20190133987A publication Critical patent/KR20190133987A/ko
Application granted granted Critical
Publication of KR102513782B1 publication Critical patent/KR102513782B1/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
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations

Abstract

본 발명의 일 실시 예에 따른 컨트롤러의 동작방법에 있어서, 오리지널 메시지를 소정의 크기로 분할하여 오리지널 메시지 어레이를 생성하는 단계; 상기 오리지널 메시지 어레이의 열 단위 구성부호를 선형 블록 부호로 제 1 부호화하는 단계; 상기 메시지 어레이의 행 단위 구성부호를 CRC 부호로 제 2 부호화하는 단계; 상기 제 2 부호화된 행 단위 구성부호를 극 부호로 제 3 부호화하는 단계; 및 상기 제 1 부호화 내지 제 3 부호화된 메시지 어레이를 출력하는 단계를 포함할 수 있다.

Description

컨트롤러 및 그것의 동작 방법{CONTROLLER AND OPERATING METHOD THEREOF}
본 발명은 컨트롤러 및 그것의 동작 방법에 관한 것이다.
메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구분된다.
휘발성 메모리 장치는 전원이 차단되면 저장된 데이터를 잃지만, 비휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존할 수 있다. 특히, 플래시 메모리는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 가지기 때문에, 컴퓨터 시스템 등에서 저장 매체로 광범위하게 사용되고 있다.
비휘발성 메모리, 예를 들어 플래시 메모리는, 각각의 메모리 셀에 저장되는 비트 수에 따라서 각각의 메모리 셀에 저장 가능한 데이터 상태들이 결정될 수 있다. 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀은 단일 비트 셀(single-bit cell) 또는 단일 레벨 셀(single-level cell; SLC)이다. 하나의 메모리 셀에 2 비트 데이터를 저장하는 메모리 셀은 멀티 비트 셀(multi-bit cell), 멀티 레벨 셀(multi-level cell; MLC), 또는 멀티 스테이트 셀(multi-state cell)이다. 그리고 하나의 메모리 셀에 3 비트 데이터를 저장하는 메모리 셀은 트리플 레벨 셀(triple-level cell; TLC)이다. MLC 및 TLC는 메모리의 고집적화에 유리한 장점을 갖는다. 그러나 하나의 메모리 셀에 프로그램되는 비트의 수가 증가할수록 신뢰성은 떨어지고, 판독 실패율(read failure rate)은 증가하게 된다.
예를 들어, 하나의 메모리 셀에 k개의 비트를 프로그램하려면, 2k 개의 문턱 전압들 중 어느 하나가 메모리 셀에 형성된다. 메모리 셀들 간의 미세한 전기적 특성의 차이로 인해, 동일한 데이터가 프로그램된 메모리 셀들의 문턱 전압들은 일정한 범위의 문턱 전압 산포(threshold voltage distribution)를 형성한다. 각각의 문턱 전압 산포는 k개의 비트에 의해 생성될 수 있는 2k 개의 데이터 값 각각에 대응된다.
그러나 문턱 전압 산포들이 배치될 수 있는 전압 윈도우(voltage window)는 제한되어 있기 때문에, k가 증가할수록 인접한 문턱 전압 산포들 간의 거리는 줄어들게 되고, 인접한 문턱 전압 산포들이 서로 중첩될 수 있게 된다. 인접한 문턱 전압 산포들이 중첩됨에 따라, 읽혀진 데이터에는 많은 에러 비트들(예를 들면, 수개의 에러 비트들 또는 수십 개의 에러 비트들)이 포함될 수 있다.
도 1은 3 비트 트리플 레벨 셀(TLC) 비휘발성 메모리 장치의 프로그램 상태 및 소거 상태를 나타내는 문턱 전압 산포 그래프이다.
도 2는 3 비트 트리플 레벨 셀 비휘발성 메모리 장치의 특성 열화로 인하여 변형될 수 있는 프로그램 상태 및 소거 상태를 나타내는 문턱 전압 산포 그래프이다.
TLC 비휘발성 메모리 장치, 예를 들어 TLC 플래시 메모리의 싱글 메모리 셀에 3개의 비트(즉, k=3)를 프로그램하면, 23, 즉, 8 개의 문턱 전압 산포들 중 어느 하나가 메모리 셀에 형성된다.
다수의 메모리 셀들 간의 미세한 전기적 특성의 차이로 인해, 동일한 데이터가 프로그램된 메모리 셀들 각각의 문턱 전압들 각각은 일정한 범위의 문턱 전압 산포를 형성한다. 3 비트 TLC의 경우, 도면에 도시된 바와 같이 7개의 프로그램 상태(state)의 문턱 전압의 산포(P1 to P7)와 하나의 소거 상태(state)의 문턱 전압 산포(E)가 형성된다. 도 1은 이상적인 산포도로 상태 산포가 하나도 겹치지 아니하고, 각 문턱 전압의 산포 별로 일정 범위의 리드 전압 마진을 가지게 된다.
도 2에 도시된 바와 같이, 플래시 메모리의 경우, 시간이 지남에 따라, 플로팅 게이트(floating gate) 또는 터널 산화물(tunnel oxide)에 포획(trap)된 전자들이 방출되는 차지 로스(charge loss)가 발생할 수 있다. 또한, 프로그램 및 소거를 반복하면서 터널 산화물이 열화 되어 차지 로스(charge loss)를 더욱 증가할 수 있다. 차지 로스(charge loss)는 문턱 전압을 감소시킬 수 있다. 예들 들어 문턱 전압의 산포는 왼쪽으로 이동될 수 있다.
또한, 프로그램 디스터번스, 소거 디스터번스, 및/또는 백 패턴 디펜던시(back pattern dependency) 현상은 서로 문턱 전압의 산포를 증가시킬 수 있다. 따라서, 상술한 이유로 인한 메모리 셀의 특성 열화로 기인하여, 도 1B에 도시된 바와 같이 인접한 각 상태(E and P1 to P7)의 문턱 전압 산포가 서로 중첩될 수 있다.
문턱 전압 산포가 중첩되면, 리드되는 데이터에는 많은 오류가 포함될 수 있다. 예를 들면, 제3 리드 전압(Vread3)이 인가되었을 때, 당해 메모리 셀이 온(on)상태이면 당해 메모리 셀은 제2 프로그램 상태(P2)를 가지는 것으로 판단되며, 당해 메모리 셀이 오프(off) 상태이면 당해 메모리 셀은 제3 프로그램 상태(P3)를 가지는 것으로 판단된다. 그러나 제2 프로그램 상태(P2)와 제3 프로그램 상태(P3)가 중첩되어 있는 구간에서 제3 리드 전압(Vread3)가 인가되면, 당해 메모리 셀이 오프(off) 상태임에도 불구하고, 온(on) 상태로 리드될 수 있다. 따라서, 문턱 전압 산포가 중첩됨에 따라, 리드된 데이터에는 많은 에러 비트들이 포함될 수 있다.
이러한 문제를 해결하기 위해, 일반적으로 에러정정부호를 사용하고 있다. 에러정정코드로서 극부호(Polar Code), BCH 부호(Bose-Chaudhuri-Hocquenghem code), LDPC 부호(Low Density Parity Code) 등이 사용될 수 있다.
특히, 극부호는 부호화/복호화 과정인 구조화된 행렬을 기반으로 이루어지기 때문에 부호화기/복호기의 설계가 용이할 수 있다. 하지만, 극부호는 오류정정성능이 LDPC 부호보다 부족하기 때문에, 복잡한 리스트 복호화를 이용하고, 극부호의 메시지 비트를 CRC 부호(cyclic redundancy check code)로 보호해야 충분한 오류정정성능을 가질 수 있다. 이때, 극부호와 CRC 부호를 연접하여 사용하는 기술을 SCL(Successive Cancellation List) 복호 극부호화 기술이라 불린다.
SCL 복호 극부호 기술은 LDPC 부호와 대비하여 충분한 오류정정성능을 가지고 있다. 하지만, SCL 복호 극부호 기술을 사용할 수 있는 복호기를 구현하기 위한 요구 메모리의 크기가 매우 크다는 문제점이 있다.
본 발명의 실시 예에 따른 컨트롤러는 다수의 짧은 극부호들을 연접하는 구조를 생성하는 부호화기와 짧은 단위 극부호를 복호하는 복호기를 포함하여 SCL 복호 극부호 기술의 문제점을 해결할 수 있다.
본 발명의 일 실시 예에 따른 컨트롤러의 동작방법에 있어서, 오리지널 메시지를 소정의 크기로 분할하여 오리지널 메시지 어레이를 생성하는 단계; 상기 오리지널 메시지 어레이의 열 단위 구성부호를 선형 블록 부호로 제 1 부호화하는 단계; 상기 메시지 어레이의 행 단위 구성부호를 CRC 부호로 제 2 부호화하는 단계; 상기 제 2 부호화된 행 단위 구성부호를 극 부호로 제 3 부호화하는 단계; 및 상기 제 1 부호화 내지 제 3 부호화된 메시지 어레이를 출력하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 컨트롤러는 긴 단일 극부호 대신, 복수의 짧고 독립적인 구성 행 극부호를 사용하여 복호화 과정에서 짧은 단위 극부호에 해당하는 작은 행/열 복호기만으로 전체 연접부호의 복호가 가능하다. 그 결과, 요구 메모리 크기가 작아질 수 있다.
도 1은 각각 3 비트 멀티 레벨 셀(MLC) 비휘발성 메모리 장치의 프로그램 상태 및 소거 상태를 나타내는 문턱 전압 산포 그래프이다.
도 2는 3비트 멀티 레벨 셀 비휘발성 메모리 장치의 특성 열화로 인하여 변형될 수 있는 프로그램 상태 및 소거 상태를 나타내는 문턱 전압 산포 그래프이다.
도 3a는 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 3b은 본 발명의 실시 예에 따른 메모리 장치에서 메모리 블록들의 메모리 셀 어레이 회로를 개략적으로 도시한 도면이다.
도 4은 본 발명의 실시 예에 따른 ECC 부의 구조를 개략적으로 나타내는 도면이다.
도 5는 도 4에 도시된 컨트롤러의 동작을 나타내는 흐름도이다.
도 6은 도 5에 도시된 소프트 디시전 리드 동작으로서, 2비트 소프트 디시전 리드 동작을 나타내는 개념도이다.
도 7은 도 5에 도시된 소프트 디시전 리드 동작으로서, 3비트 소프트 디시전 리드 동작을 나타내는 개념도이다.
도 8a는 본 발명의 실시 예에 따른 ECC 부호화기의 구조를 나타내는 도면이다.
도 8b는 오리지널 메시지 어레이가 인코디드 메시지 어레이로 부호화되는 과정을 나타내는 개념도이다.
도 9a는 본 발명의 실시 예에 따른 ECC 복호화기의 구조를 나타낸 도면이다.
도 9b는 본 발명의 실시 예에 따른 ECC 복호화기의 복호 동작 과정을 나타낸 흐름도이다.
도 10는 본 발명의 일 실시 예에 따라 ECC 부의 오류 정정성능을 나타내는 그래프이다.
도 11는 본 발명의 일실시예에 따른 메모리 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 12은 본 발명의 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 13은 본 발명의 또 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 14는 본 발명의 또 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 15은 본 발명의 또 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치를 나타내는 블록도이다.
도 16는 도 15에 도시된 전자 장치를 포함하는 데이터 처리 시스템을 나타내는 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 할 수 있다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 범위는 본원의 특허 청구 범위에 의해서 이해되어야 할 수 있다.
도 3a은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 3a을 참조하면, 데이터 처리 시스템(100)은, 호스트(Host)(102) 및 메모리 시스템(110)을 포함한다.
그리고, 호스트(102)는, 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함, 즉 유무선 전자 장치들을 포함한다.
또한, 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system) 혹은 복수의 운영 시스템들을 포함할 수 있으며, 또한 사용자의 요청에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행한다. 여기서, 호스트(102)는, 사용자 요청에 해당하는 복수의 커맨드들을 메모리 시스템(110)으로 전송하며, 그에 따라 메모리 시스템(110)에서는 커맨드들에 해당하는 동작들, 즉 사용자 요청에 상응하는 동작들을 수행한다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다.
또한, 메모리 시스템(110)은, 호스트(102)의 요청에 응답하여 동작하며, 특히 호스트(102)에 의해서 액세스되는 데이터를 저장한다. 다시 말해, 메모리 시스템(110)은, 호스트(102)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다. 여기서, 메모리 시스템(110)은 호스트(102)와 연결되는 호스트 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치(솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC))들 중 어느 하나로 구현될 수 있다.
아울러, 메모리 시스템(110)을 구현하는 저장 장치들은, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구현될 수 있다.
메모리 시스템(110)은 메모리 장치(150), 및 컨트롤러(130)를 포함한다.
여기서, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD, PC 카드(PCMCIA: Personal Computer Memory Card International Association), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등으로 구성할 수 있다. 또한, 다른 일 예로, 메모리 시스템(110)은, 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나(컴퓨터, 스마트폰, 휴대용 게임기) 등을 구성할 수 있다.
한편, 메모리 시스템(110)에서의 메모리 장치(150)는, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 라이트(write) 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(102)로 제공한다. 여기서, 메모리 장치(150)는, 복수의 메모리 블록(memory block)들(152,154,156)을 포함하며, 각각의 메모리 블록들(152,154,156)은, 복수의 페이지들(pages)을 포함하며, 또한 각각의 페이지들은, 복수의 워드라인(WL: Word Line)들이 연결된 복수의 메모리 셀들을 포함한다. 또한, 메모리 장치(150)는, 복수의 메모리 블록들(152,154,156)이 각각 포함된 복수의 플래인들(plane)을 포함하며, 특히 복수의 플래인들이 각각 포함된 복수의 메모리 다이(memory die)들을 포함할 수 있다. 아울러, 메모리 장치(150)는, 비휘발성 메모리 장치, 일 예로 플래시 메모리가 될 수 있으며, 이때 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다.
그리고, 메모리 시스템(110)에서의 컨트롤러(130)는, 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어한다. 예컨대, 컨트롤러(130)는, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 이를 위해 컨트롤러(130)는, 메모리 장치(150)의 리드, 라이트, 프로그램(program), 이레이즈(erase) 등의 동작을 제어한다.
보다 구체적으로 설명하면, 컨트롤러(130)는, 호스트 인터페이스(Host I/F) 유닛(132), 프로세서(Processor)(134), 에러 정정 코드(ECC: Error Correction Code) 유닛(138), 파워 관리 유닛(PMU: Power Management Unit)(140), 메모리 인터페이스(Memory I/F) 유닛(142), 및 메모리(Memory)(144)를 포함한다.
또한, 호스트 인터페이스 유닛(132)은, 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), SATA(Serial Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다. 여기서, 호스트 인터페이스 유닛(132)은, 호스트(102)와 데이터를 주고 받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
아울러, ECC 부(138)은, 메모리 장치(150)에서 처리되는 데이터의 에러 비트를 정정하며, ECC 인코더와 ECC 디코더를 포함할 수 있다. 여기서, ECC 인코더(ECC encoder)는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 부호화(error correction encoding)하여, 패리티(parity) 비트가 부가된 데이터를 생성하며, 패리티 비트가 부가된 데이터는, 메모리 장치(150)에 저장될 수 있다. 그리고, ECC 디코더(ECC decoder)는, 메모리 장치(150)에 저장된 데이터를 리드할 경우, 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. 여기서, ECC 부(138)은, LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, ECC 부(138)는 오류 정정을 위한 회로, 모듈, 시스템, 또는 장치를 모두 포함할 수 있다.
그리고, PMU(140)는, 컨트롤러(130)의 파워, 즉 컨트롤러(130)에 포함된 구성 요소들의 파워를 제공 및 관리한다.
또한, 메모리 인터페이스 유닛(142)은, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 수행하는 메모리/스토리지(storage) 인터페이스가 된다.
아울러, 메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장한다.
여기서, 메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 이때 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.
또한, 메모리(144)는, 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터, 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장하며, 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함한다.
그리고, 프로세서(134)는, 메모리 시스템(110)의 전체적인 동작을 제어하며, 특히 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 프로그램 동작 또는 리드 동작을 제어한다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 호스트(102)로부터 요청된 동작을 메모리 장치(150)에서 수행, 다시 말해 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작을, 메모리 장치(150)와 수행한다. 또한 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 여기서, 메모리 장치(150)에 대한 백그라운드 동작은, 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함한다.
도 3b를 참조하면, 메모리 시스템(110)의 메모리 장치(150)에 포함된 복수의 메모리 블록들(152,154,156)에서 각 메모리 블록(330), 메모리 셀 어레이로 구현되어 비트라인들(BL0 to BLm-1)에 각각 연결된 복수의 셀 스트링들(340)을 포함할 수 있다. 각 열(column)의 셀 스트링(340)은, 적어도 하나의 드레인 선택 트랜지스터(DST)와, 적어도 하나의 소스 선택 트랜지스터(SST)를 포함할 수 있다. 선택 트랜지스터들(DST, SST) 사이에는, 복수 개의 메모리 셀들, 또는 메모리 셀 트랜지스터들(MC0 to MCn-1)이 직렬로 연결될 수 있다. 각각의 메모리 셀(MC0 to MCn-1)은, 셀 당 복수의 비트들의 데이터 정보를 저장하는 MLC로 구성될 수 있다. 셀 스트링들(340)은 대응하는 비트라인들(BL0 to BLm-1)에 각각 전기적으로 연결될 수 있다.
여기서, 도 3b는, 낸드 플래시 메모리 셀로 구성된 각 메모리 블록(330)을 일 예로 도시하고 있으나, 본 발명의 실시 예에 따른 메모리 장치(150)에 포함된 복수의 메모리 블록(152,154,156)은, 낸드 플래시 메모리에만 국한되는 것은 아니라 노어 플래시 메모리(NOR-type Flash memory), 적어도 두 종류 이상의 메모리 셀들이 혼합된 하이브리드 플래시 메모리, 메모리 칩 내에 컨트롤러가 내장된 One-NAND 플래시 메모리 등으로도 구현될 수 있다.
그리고, 메모리 장치(150)의 전압 공급부(310)는, 동작 모드에 따라서 각각의 워드라인들로 공급될 워드라인 전압들(예를 들면, 프로그램 전압, 리드 전압, 패스 전압 등)과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 전압을 제공할 수 있으며, 이때 전압 공급 회로(310)의 전압 발생 동작은 제어 회로(도시하지 않음)의 제어에 의해 수행될 수 있다. 또한, 전압 공급부(310)는, 다수의 리드 데이터를 생성하기 위해 복수의 가변 리드 전압들을 생성할 수 있으며, 제어 회로의 제어에 응답하여 메모리 셀 어레이의 메모리 블록들(또는 섹터들) 중 하나를 선택하고, 선택된 메모리 블록의 워드라인들 중 하나를 선택할 수 있으며, 워드라인 전압을 선택된 워드라인 및 비선택된 워드라인들로 각각 제공할 수 있다.
아울러, 메모리 장치(150)의 리드/라이트(read/write) 회로(320)는, 제어 회로에 의해서 제어되며, 동작 모드에 따라 감지 증폭기(sense amplifier)로서 또는 라이트 드라이버(write driver)로서 동작할 수 있다. 예를 들면, 검증/정상 리드 동작의 경우 리드/라이트 회로(320)는, 메모리 셀 어레이로부터 데이터를 리드하기 위한 감지 증폭기로서 동작할 수 있다. 또한, 프로그램 동작의 경우 리드/라이트 회로(320)는, 메모리 셀 어레이에 저장될 데이터에 따라 비트라인들을 구동하는 라이트 드라이버로서 동작할 수 있다. 리드/라이트 회로(320)는, 프로그램 동작 시 셀 어레이에 라이트될 데이터를 버퍼(미도시)로부터 수신하고, 입력된 데이터에 따라 비트라인들을 구동할 수 있다. 이를 위해, 리드/라이트 회로(320)는, 열(column)들(또는 비트라인들) 또는 열쌍(column pair)(또는 비트라인 쌍들)에 각각 대응되는 복수 개의 페이지 버퍼들(PB)(322,324,326)을 포함할 수 있으며, 각각의 페이지 버퍼(page buffer)(322,324,326)에는 복수의 래치들(도시하지 않음)이 포함될 수 있다.
도 4는 본 발명의 실시 예에 따른 컨트롤러(130) 내 ECC 부(138)의 구조를 개략적으로 나타낸 도면이다.
컨트롤러(130)는 전반적으로 메모리 장치(150) 동작을 제어할 수 있다. 컨트롤러(130)는 에러 비트를 정정하는 ECC(Error Correcting Code) 부(138)를 포함할 수 있다. ECC 부(138)는 ECC 부호화기(170) 및 ECC 복호화기(180)를 포함할 수 있다.
ECC 부호화기(170)는 메모리 장치(150)에 프로그램될 데이터를 오류정정 부호화를 하여, 패리티(parity) 비트가 부가된 데이터를 형성할 수 있다. 패리티 비트는 메모리 장치(150)에 저장될 수 있다.
ECC 복호화기(180)는 메모리 장치(150)로부터 리드한 데이터에 대하여 에러 정정 복호화를 수행할 수 있다. ECC 복호화기(180)는 에러 정정 복호화의 성공 여부를 판단하고 판단 결과에 따라 지시 신호를 출력할 수 있다. ECC 복호화기(180)는 ECC 부호화 과정에서 생성된 페리티(parity) 비트를 사용하여 데이터의 에러 비트를 정정할 수 있다.
한편, ECC 부(138)는 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없다. 이때에는 에러 정정 페일(fail) 신호가 발생될 수 있다.
본 발명의 일실시예에 따르면, ECC 부(138)는 하드 디시전 데이터 및 소프트 디시전 데이터를 사용하여 에러 비트 정정을 수행할 수 있다.
ECC 부(138)는 앞서 설명한 바와 같이 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정할 수 있다. 메모리 인터페이스 유닛(142)는 메모리 장치(150)와 인터페이싱할 수 있다. 도 4는 ECC 부(138)가 ECC 부호화기(170)와 ECC 복호화기(180)를 모두 포함하는 일실시예를 도시하고 있으나, 실질적으로 ECC 부호화기(170)와 ECC 복호화기(180)는 실질적으로 상호 별개의 구성으로 구현될 수도 있다. 프로세서(134)은 전반적인 제반 제어 동작을 수행할 수 있다.
본 발명의 일실시예에 따르면, 프로그램 동작에서, 메모리 장치(150)로 프로그램될 데이터에 대하여 ECC 부(138)가 오리지널 데이터(original data)에 대하여 ECC 부호화를 수행할 수 있다. 이 경우, 리드 동작에서, 메모리 장치(150)에 프로그램된 인코디드 데이터(encoded data), 즉, 코드워드(codeword)에 대해서 ECC 부(138)가 ECC 복호화를 수행하게 된다.
상기 ECC 부(138)는 메모리 장치(150)에 저장되어 있는 인코디드 데이터, 즉 코드워드를 복호화함으로써 부호화되기 이전의 오리지널 데이터(original data)로 복원할 수 있다.
도 5를 참조하여 후술되는 바와 같이, 메모리 장치(150)에 저장되어 있는 데이터에 대한 리드 동작은 단계 S511의 하드 디시전 리드 동작과 단계 S531의 소프트 디시전 리드 동작을 포함할 수 있다. 하드 디시전 리드 동작은 하드 디시전 리드 전압(VHD)으로 메모리 장치(150)로부터 데이터를 리드하는 동작이다. 소프트 디시전 리드 동작은 하드 디시전 리드 전압(VHD)과 다른 레벨을 가지는 소프트 디시전 리드 전압들(VSD)로 메모리 장치(150)로부터 데이터를 리드하는 동작이다. 예를 들어, 하드 디시전 리드 전압들(VHD)을 이용하여 읽어진 메모리 셀들에서, 소프트 디시전 리드 전압들(VSD)을 이용하여 추가적으로 소프트 디시전 리드 동작이 수행될 수 있다.
상기 하드 디시전 리드 동작에 의해 메모리 장치(150)로부터 리드된 인코디드 데이터, 즉 코드워드는 ECC 부(138)에 의해 오리지널 데이터로 복호화될 수 있다.
상기 소프트 디시전 리드 동작은 메모리 장치(150)에 저장된 데이터를 단순히 리드하는 동작이라기 보다는, 하드 디시전 리드 동작에 의하여 리드된 데이터에 신뢰도를 부가할 수 있는 정보인 로그 우도비(log likelihood ratio; LLR)를 소프트 디시전 리드 전압들(VSD)에 의해 생성하는 동작을 의미한다.
상기 LLR은 ECC 부(138)에 의해 ECC 복호화될 수 있다. ECC 부(138)는 LLR을 이용하여 메모리 장치(150)로부터 리드된 인코디드 데이터, 즉 코드워드의 에러를 검출하고 정정할 수 있다.
도 5를 참조하면, 컨트롤러(130)의 동작 방법은 하드 디시전 복호화 단계(S510)로 구성되며, 소프트 디시전 복호화 단계(S530)가 추가적으로 구성될 수 있다. 하드 및 소프트 디시전 복호화 단계(S510 및 S530)의 대상 데이터, 즉 메모리 장치(150)에 저장되어 있는 데이터는 ECC 부(138)에 의해 ECC 부호화된 인코디드 데이터(encoded data), 즉 코드워드(codeword)이다.
예를 들어, 하드 디시전 복호화 단계(S510)는 하드 디시전 리드 전압(VHD)으로 메모리 블록(150 내지 156)의 메모리 셀로부터 리드된 소정 길이의 하드 디시전 리드 데이터에 대한 하드 디시전 ECC 복호화 단계일 수 있다. 하드 디시전 복호화 단계(S510)는 단계 S511 내지 단계 S515로 구성될 수 있다.
예를 들어, 소프트 디시전 복호화 단계(S530)는, 하드 디시전 복호화 단계(S510)에서 하드 디시전 ECC 복호화가 최종적으로 실패한 경우에, 특정 하드 디시전 리드 전압(VHD)에 대하여 소프트 디시전 리드 데이터를 형성하여 ECC 복호화를 수행하는 소프트 디시전 ECC 복호화 단계일 수 있다. 소프트 디시전 복호화 단계(S530)는 단계 S531 내지 단계 S535로 구성될 수 있다.
앞서 설명된 바와 같이, 하드 디시전 리드 단계인 단계 S511에서, 하드 디시전 리드 전압들(VHD)로 메모리 장치(150)로부터 하드 디시전 리드 데이터가 리드될 수 있다. 컨트롤러(130)는 읽기 커맨드 및 주소를 메모리 장치(150)로 전송할 수 있다. 메모리 장치(150)는 읽기 커맨드 및 주소에 응답하여, 하드 디시전 리드 전압들(VHD)로 메모리 장치(150)로부터 하드 디시전 리드 데이터를 리드할 수 있다. 리드된 하드 디시전 리드 데이터는 컨트롤러(130)로 전송될 수 있다.
단계 S513에서, 제1 ECC 복호화로서 하드 디시전 ECC 복호화가 수행될 수 있다. ECC 부(138)는 메모리 장치(150)로부터 하드 디시전 리드 전압들(VHD)을 이용하여 리드된 하드 디시전 리드 데이터를 에러 정정 코드를 이용하여 하드 디시전 ECC 복호화를 수행할 수 있다.
단계 S515에서, 하드 디시전 ECC 복호화가 성공되었는지 판별된다. 즉, 단계 S515에서는 단계 S513에서 하드 디시전 ECC 복호화된 하드 디시전 데이터의 에러가 정정되었는지 판별된다. 예를 들어, 컨트롤러(130)는 하드 디시전 ECC 복호화된 하드 디시전 데이터 및 패리티 체크 행렬(Parity Check Matrix)을 이용하여, 하드 디시전 ECC 복호화된 하드 디시전 데이터의 에러가 정정되었는지 판별한다. 예를 들어, 하드 디시전 ECC 복호화된 하드 디시전 데이터와 패리티 체크 행렬의 연산 결과가 영행렬('0')일 때, 하드 디시전 ECC 복호화된 하드 디시전 데이터는 올바른 데이터인 것으로 판별될 수 있다. 반면, 하드 디시전 ECC 복호화된 하드 디시전 데이터와 패리티 체크 행렬의 연산 결과가 영행렬('0')이 아닐 때, 하드 디시전 ECC 복호화된 하드 디시전 데이터는 올바른 데이터가 아닌 것으로 판별될 수 있다.
상기 단계 S515의 판단 결과, 단계 S513의 하드 디시전 ECC 복호화가 성공적인 것으로 판별된 경우, 단계 S520에서는 단계 S511의 하드 디시전 리드 전압(VHD)에 의한 리드 동작이 성공적인 것으로 평가되며 에러 정정 복호화는 종료될 수 있다. 단계 S513의 하드 디시전 ECC 복호화된 하드 디시전 데이터는 에러 정정된 데이터로서 컨트롤러(130) 외부로 출력되거나 컨트롤러(130)의 내부에서 사용될 수 있다.
상기 단계 S515의 판단 결과, 단계 S513의 하드 디시전 ECC 복호화가 실패인 것으로 판별된 경우, 소프트 디시전 복호화 단계(S530)가 수행될 수 있다.
앞서 설명된 바와 같이 소프트 디시전 리드 단계인 단계 S531에서, 소프트 디시전 리드 전압들(VSD)로 메모리 장치(150)로부터 소프트 디시전 리드 데이터가 리드될 수 있다. 예를 들어, 하드 디시전 리드 전압들(VHD)을 이용하여 읽어진 메모리 셀들에서, 소프트 디시전 리드 전압들(VSD)을 이용하여 추가적인 리드가 수행될 수 있다. 소프트 디시전 리드 전압들(VSD)은 하드 디시전 리드 전압들(VHD)과 다른 레벨들을 가질 수 있다.
단계 S533에서, 제2 ECC 복호화로서 소프트 디시전 ECC 복호화가 수행될 수 있다. 소프트 디시전 ECC 복호화는 하드 디시전 리드 데이터와 소프트 디시전 리드 전압들(VSD)을 이용하여 리드된 데이터를 포함하는 소프트 디시전 리드 데이터에 기반하여 수행될 수 있다. 하드 디시전 리드 전압들(VHD)과 소프트 디시전 리드 전압들(VSD)은 서로 다른 레벨들을 가질 수 있다.
예를 들어, 메모리 장치(150)의 메모리 셀들(MC0 to MCn-1) 각각은 도 2에서 예시된 7개의 프로그램 상태(state)의 문턱 전압 산포(P1 to P7)와 하나의 소거 상태(state) 문턱 전압 산포(E) 중 어느 하나의 상태에 속할 수 있다.
상기 하드 디시전 리드 전압들(VHD)들 각각은 복수의 상태들 중에서 인접한 두 개의 논리 상태들간의 전압 레벨을 가질 수 있다. 소프트 디시전 리드 전압들(VSD) 각각은 복수의 상태들 중에서 인접한 두 개의 논리 상태들간 레벨을 갖되, 하드 디시전 리드 전압들(VHD)과 다른 레벨을 가질 수 있다.
상기 메모리 셀들(MC0 to MCn-1)에서 하드 디시전 리드 전압(VHD)으로 리드된 하드 디시전 리드 데이터 값과 소프트 디시전 리드 전압(VSD)으로 리드된 소프트 디시전 리드 데이터 값은 서로 다를 수 있다. 예를 들어, 메모리 셀들 중 정상적인 논리 상태의 전압 분포보다 낮거나 높은 문턱 전압을 갖는 테일(tail) 셀들이 존재할 수 있다. 테일 셀들에서 하드 디시전 리드 전압(VHD)으로 리드된 데이터 값과 소프트 디시전 리드 전압(VSD)으로 리드된 데이터 값은 서로 다를 수 있다. 하드 디시전 리드 전압(VHD)에 따른 리드에 더하여, 소프트 디시전 리드 전압들(VSD)에 따른 추가적인 리드가 수행되면, 메모리 셀들(MC0 to MCn-1)의 문턱 전압들에 대한 추가적인 정보, 즉 하드 디시전 리드 동작에 의하여 리드된 데이터에 신뢰도를 부가할 수 있는 정보인 LLR(예를 들어, 테일 셀들에 대한 정보)이 획득될 수 있다.
상기 추가적인 정보가 획득되면, 메모리 셀들(MC0 to MCn-1)이 저장하는 데이터가 제1 상태(예를 들어, '1') 또는 제2 상태(예를 들어, '0')일 확률 또는 우도(likelihood ratio)의 정확성이 증가할 수 있다. 즉, ECC 복호화의 신뢰성이 증가할 수 있다. 컨트롤러(130)는 하드 디시전 리드 전압(VHD) 및 소프트 디시전 리드 전압(VSD)으로 리드된 소프트 디시전 리드 데이터를 이용하여 소프트 디시전 ECC 복호화를 수행할 수 있다. 하드 디시전 리드 전압(VHD)과 소프트 디시전 리드 전압(VSD)간 관계는 도 6 및 도 7을 참조하여 후술된다.
단계 S535에서, 소프트 디시전 ECC 복호화가 성공되었는지 판별된다. 즉, 단계 S535에서는 단계 S533에서 소프트 디시전 ECC 복호화된 소프트 디시전 데이터의 에러가 정정되었는지 판별된다. 예를 들어, 컨트롤러(130)는 소프트 디시전 ECC 복호화된 소프트 디시전 데이터 및 패리티 체크 행렬(Parity Check Matrix)을 이용하여, 소프트 디시전 ECC 복호화된 소프트 디시전 데이터의 에러가 정정되었는지 판별한다. 예를 들어, 소프트 디시전 ECC 복호화된 소프트 디시전 데이터와 패리티 체크 행렬의 연산 결과가 영행렬('0')일 때, 소프트 디시전 ECC 복호화된 소프트 디시전 데이터는 올바른 데이터인 것으로 판별될 수 있다. 반면, 소프트 디시전 ECC 복호화된 소프트 디시전 데이터와 패리티 체크 행렬의 연산 결과가 영행렬('0')이 아닐 때, 소프트 디시전 ECC 복호화된 소프트 디시전 데이터는 올바른 데이터가 아닌 것으로 판별될 수 있다.
상기 소프트 디시전 ECC 복호화된 소프트 디시전 데이터와 패리티 체크 행렬의 연산, 그리고 하드 디시전 ECC 복호화된 하드 디시전 데이터와 패리티 체크 행렬의 연산은 동일하게 수행될 수 있다.
상기 단계 S535의 판단 결과, 단계 S533의 소프트 디시전 ECC 복호화가 성공적인 것으로 판별된 경우, 단계 S520에서는 단계 S531의 소프트 디시전 리드 전압(VSD)에 의한 리드 동작이 성공적인 것으로 평가되며 에러 정정 복호화는 종료될 수 있다. 단계 S533의 소프트 디시전 ECC 복호화된 소프트 디시전 데이터는 에러 정정된 데이터로서 컨트롤러(130) 외부로 출력되거나 컨트롤러(130)의 내부에서 사용될 수 있다.
상기 단계 S535의 판단 결과, 단계 S533의 소프트 디시전 ECC 복호화가 실패인 것으로 판별된 경우, 단계 S540에서는 단계 S531의 소프트 디시전 리드 전압(VSD)에 의한 리드 동작이 실패인 것으로 평가되며 에러 정정 복호화는 종료될 수 있다.
도 6은 도 5에 도시된 소프트 디시전 리드 동작으로서, 2비트 소프트 디시전 리드 동작을 나타내는 개념도이고, 도 7은 도 5에 도시된 소프트 디시전 리드 동작으로서, 3비트 소프트 디시전 리드 동작을 나타내는 개념도이다.
도 6을 참조하면, 도 5를 참조하여 설명된 하드 디시전 복호화 단계(S510)에서, 하드 디시전 리드 전압(VHD)이 메모리 장치(150)의 메모리 셀로 인가될 때, 메모리 셀의 온-오프 상태에 따라 하드 디시전 데이터(2-1)는 1 및 0 중 어느 하나의 값을 가질 수 있다.
상기 소프트 디시전 복호화 단계(S530)에서, 소프트 디시전 리드 동작은 하드 디시전 리드 전압(VHD)을 기준으로 일정한 전압 차를 갖는 복수의 소프트 디시전 리드 전압들(VSD1 , VSD2)을 메모리 셀에 인가하여 하드 디시전 리드 데이터에 신뢰도를 부가하는 정보, 즉 LLR을 형성할 수 있다.
도 6에 도시된 바와 같이, 2-비트 소프트 디시전 리드 동작의 경우, 복수의 소프트 디시전 리드 전압들(VSD1 , VSD2) 중 제1 소프트 디시전 리드 전압(VSD1)이 메모리 셀에 인가되면, 메모리 셀의 온 또는 오프에 따라 제1 소프트 디시전 리드 데이터 값 (2-2)은 "1000"이 될 수 있다. 유사하게, 복수의 소프트 디시전 리드 전압들(VSD1, VSD2) 중 제2 소프트 디시전 리드 전압(VSD2)에 따라 제2 소프트 디시전 리드 데이터 값(2-3)은 "1110"이 될 수 있다.
예를 들어, ECC 부(138)는 제1, 2 소프트 디시전 리드 데이터 값(2-2, 2-3)에 대하여 XNOR(exclusive NOR) 연산을 수행하여, 소프트 디시전 데이터(2-4), 즉 LLR을 생성할 수 있다. LLR(2-4)은 하드 디시전 데이터(2-1)에 신뢰도를 부가할 수 있다.
예를 들어, 소프트 디시전 데이터(2-4) "1"은 하드 디시전 데이터(2-1)의 제1 상태(예를 들어, '1') 또는 제2 상태(예를 들어, '0')일 확률이 강하다(strong)는 것을 나타내며, "0"은 하드 디시전 데이터(2-1)의 제1 상태(예를 들어, '1') 또는 제2 상태(예를 들어, '0')일 확률이 약하다(weak)는 것을 나타낼 수 있다.
도 6을 참조하면, 도 5를 참조하여 설명된 하드 디시전 복호화 단계(S510)에서, 하드 디시전 리드 전압(VHD)이 메모리 장치(150)의 메모리 셀로 인가될 때, 메모리 셀의 온-오프 상태에 따라 하드 디시전 데이터(3-1)는 1 및 0 중 어느 하나의 값을 가질 수 있다.
상기 소프트 디시전 복호화 단계(S530)에서, 소프트 디시전 리드 동작은 하드 디시전 리드 전압(VHD)을 기준으로 일정한 전압 차를 갖는 복수의 소프트 디시전 리드 전압들(VSD1 to VSD6)을 메모리 셀에 인가하여 하드 디시전 리드 데이터에 신뢰도를 부가하는 정보, 즉 LLR을 형성할 수 있다.
도 6에 도시된 바와 같이, 3-비트 소프트 디시전 리드 동작의 경우, 복수의 소프트 디시전 리드 전압들(VSD1 to VSD6) 중 제1, 2 소프트 디시전 리드 전압(VSD1 , VSD2)이 메모리 셀에 인가되면, 도 6을 참조하여 설명된 바와 같이 제1, 2 소프트 디시전 리드 데이터 값이 생성되며, 이러한 제1, 2 소프트 디시전 리드 데이터 값에 대하여 XNOR(exclusive NOR) 연산이 수행됨으로써 제1 소프트 디시전 데이터(3-2) "1001"이 생성될 수 있다.
또한, 제1, 2 소프트 디시전 리드 전압(VSD1, VSD2)를 중심으로 일정한 전압 차를 가지는 제3 내지 6 소프트 디시전 리드 전압(VSD3 to VSD6)이 메모리 셀에 인가되면, 도 6을를 참조하여 설명된 바와 유사하게 제3 내지 6 소프트 디시전 리드 데이터 값이 생성되며, 이러한 제3 내지 6 소프트 디시전 리드 데이터 값에 대하여 XNOR(exclusive NOR) 연산이 수행됨으로써 제2 소프트 디시전 데이터(3-3), 즉 LLR "10101"이 생성될 수 있다. LLR(3-3)은 제1 소프트 디시전 데이터(3-2)에 가중치를 부여할 수 있다.
예를 들어, 제2 소프트 디시전 데이터(3-3) "1"은 제1 소프트 디시전 데이터(3-2)의 제1 상태(예를 들어, '1')일 확률이 매우 강하다(very strong)는 것을 나타내며, "0"은 제1 소프트 디시전 데이터(3-2)의 제1 상태(예를 들어, '1')일 확률이 강하다(strong)는 것을 나타낼 수 있다.
유사하게, 제2 소프트 디시전 데이터(3-3) "1"은 제1 소프트 디시전 데이터(3-2)의 제2 상태(예를 들어, '0')일 확률이 매우 약하다(very weak)는 것을 나타내며, "0"은 제1 소프트 디시전 데이터(3-2)의 제2 상태(예를 들어, '0')일 확률이 약하다(weak)는 것을 나타낼 수 있다. 즉, 도 6에서 설명된 바와 유사하게, LLR(3-3)은 하드 디시전 데이터(3-1)에 보다 많은 신뢰도를 부가할 수 있다.
이하에서, 도 8a 및 8b를 참조하여, ECC 부호화기(170)가 오리지널 메시지 어레이를 인코디드 메시지 어레이(encoded message array)로 부화하하는 과정을 설명하도록 한다.
도 8a는 본 발명의 실시 예에 따른 ECC 부호화기(170)의 구조를 나타내는 도면이다.
본 발명의 실시 예에 따른 ECC 부호화기(170)는 열 부호화기(810), 인터리버(830) 및 행 부호화기(850)를 포함할 수 있다.
먼저, ECC 부호화기(170)는 호스트 인터페이스 유닛(132)로부터 입력된 오리지널 메시지를 어레이(array) 모양으로 배열할 수 있다. 즉, ECC 복호화기(170)는 호스트 인터페이스 유닛(132)로부터 입력된 부호길이가 긴 오리지널 메시지를 사전 설정된 길이를 갖는 복수의 메시지들로 분할한 후, 어레이 모양으로 배열하여 오리지널 메시지 어레이(Original message array)를 생성할 수 있다. 그리고, 오리지널 메시지 어레이는 먼저 ECC 부호화기(170) 내부의 열 부호화기(810)에 입력될 수 있다.
열 부호화기(810)는 오리지널 메시지 어레이를 입력받아 오리지널 메시지 어레이에 포함된 비트들 중 각 열에 위치한 비트들을 열부호로 부호화할 수 있다. 예를 들면, 열 부호화기(810)는 오리지널 메시지 어레이를 단일 패리티 체크 부호(SPC) 혹은 BCH 부호 혹은 RS 부호로 부호화할 수 있다. 다만, 이는 하나의 실시 예일 뿐이며, 이에 제한되는 것은 아니다. 나아가, SPC 부호, BCH 부호 및 RS 부호를 통하여 패리티 비트를 부가하는 부호화 동작은 공지된 기술이므로 본 명세서에서는 설명되지 아니한다.
열 부호화기(810)는 오리지널 메시지 어레이에 포함된 각 열을 개별적으로 하나의 열부호를 통하여 부호화할 수 있다. 뿐만 아니라, 열 부호화기(810)는 복수의 열을 그룹핑하고, 각 열 그룹마다 개별적인 하나의 열부호로 부호화할 수도 있다. 나아가, 열 부호화기(810)는 각각의 열 혹은 열 그룹에 대응되도록 모든 부호화를 조직적인(systematic) 방식으로 수행할 수 있다. 열 부호화기(810)는 열 부호화를 통하여 제 1 패리티 부가 어레이(Mp1)를 생성할 수 있다. 제 1 패리티 부가 어레이(Mp1)는 오리지널 메시지 어레이에 열부호의 패리티들을 모은 하나 혹은 다수의 패리티 비트로 구성된 행들이 추가된 메시지 어레이이다.
열 부호화기(810)는 열 부호화 동작을 통하여 생성된 제 1 패리티 부가 어레이(Mp1)를 인터리버(830)로 제공할 수 있다.
인터리버(830)는 제 1 패리티 부가 어레이(Mp1)내 포함된 복수의 비트들의 위치를 재배열하는 인터리빙 동작을 수행할 수 있다. 본 발명의 실시 예에 따른 인터리버(830)는 제 1 패리티 부가 어레이(Mp1)내 전체 복수의 비트들 각각에 대하여 무작위(random)로 인터리빙할 수 있다. 본 발명의 다른 실시 예에 따른, 인터리버(830)는 제 1 패리티 부가 어레이(Mp1) 내 전체 복수의 비트들을 복수의 그룹으로 분할한 후, 각각의 그룹들을 무작위로 인터리빙할 수 있다. 나아가, 본 발명의 또 다른 실시 예에 따른 인터리버(830)는 제 1 패리티 부가 어레이(Mp1) 내 복수의 열들을 그룹핑하여 각각의 그룹들의 비트들을 특정 행 위치에 재배열하도록 인터리빙할 수 있다. 그 결과, 인터리버(830)는 인터리빙 어레이(M'p1)를 생성할 수 있다. 인터리버(830)는 인터리빙 어레이(M'p1)를 행 부호화기(850)으로 제공할 수 있다.
행 부호화기(850)는 CRC 부호화기(851) 및 극 부호화기(853)를 포함할 수 있으며, 인터리빙 어레이(M'p1)의 복수의 행들 각각을 부호화할 수 있다. 구체적으로, CRC 부호화기(851)는 인터리빙 어레이(M'p1)의 복수의 행들 각각에 대하여 순환중복검사 부호(이하, CRC 부호)를 통하여 부호화할 수 있다. 즉, CRC 부호화기(851)는 인터리빙 어레이(M'p1)의 복수의 행들 각각에 CRC 패리티 비트를 부가하는 부호화 동작을 수행할 수 있다. 그 결과, CRC 부호화기(851)는 제 2 패리티 부가 어레이(Mp2)를 생성할 수 있다. CRC 부호를 통하여 패리티 비트를 부가하는 부호화 동작은 공지된 기술이므로 본 명세서에서는 설명되지 아니한다.
CRC 패리티 비트들을 제외한 제 2 패리티 부가 어레이(Mp2)는 인터리빙 어레이(M'p1)와 동일하다. 즉, 제 2 패리티 부가 어레이(Mp2)는 인터리빙 어레이(M'p1)에 CRC 패리티 비트들이 부가된 형태로서, 인터리빙 어레이(M'p1)가 제 2 패리티 부가 어레이(Mp2)의 인터리빙 어레이(M'p1)의 행 부분에 일대일 매칭된다. 즉, CRC 코드는 조직 부호(Systematic Code)이다. 나아가, CRC 부호화기(851)는 생성된 제 2 패리티 부가 어레이(Mp2)를 극 부호화기(853)에 제공할 수 있다.
그 후, 극 부호화기(853)는 제 2 패리티 부가 어레이(Mp2) 내 복수의 행들 각각에 극 부호화를 수행함으로써 인코디드 메시지 어레이를 생성할 수 있다. 구체적으로, 극 부호화기(853)는 제 2 패리티 부가 어레이(Mp2) 내 복수의 행들 각각에 대하여 조직 극 부호(systematic polar code)로 부호화할 수 있다.
일반 극 부호(non-systematic polar code)는 메시지에 프로즌 비트들을 추가로 붙여 생성행렬(G)을 곱하는 방식으로 부호화가 진행될 수 있다. 여기서, 비트 벡터(m)의 일부분에 메시지 비트가 위치하고, 나머지 부분에 프로즌 비트들이 위치할 수 있다. 그리고, 이러한 위치들은 각각의 메시지 비트별 사전 결정된 채널 용량에 따라 결정될 수 있다. 사전 결정된 채널 용량은 극 패리티 부가 메시지의 각 심볼들의 채널 용량(channel capacity)이다. 일반적으로 극 패리티 부가 메시지에 대해 생성 행렬(G)을 곱함으로써 인코디드 메시지를 생성할 경우, 극 패리티 부가 메시지의 앞쪽에 위치한 심볼들의 채널 용량은 대체로 낮으며, 뒤쪽에 위치한 심볼들의 채널 용량은 대체로 높다. 이에 따라, 극 패리티 부가 메시지에서 극 패리티 비트는 주로 앞쪽에 위치한다.
반면에, 조직 극부호는 코드워드에 메시지 비트들이 그대로 존재하기 위하여, 비트 벡터(m)에 메시지 비트들을 위치되지 않고, 비트 벡터(m)와 생성행렬(G)과의 곱에 의하여 생성된 출력 벡터(x)에 위치될 수 있다. 출력 벡터(x)에서 메시지 비트들이 차지한 위치를 제외한 나머지 위치는 일단 비워둘 수 있다. 그 후, 비트 벡터(m)에 대해서, 출력 벡터(x)에서 메시지 비트들이 차지한 위치와 같은 위치에 프로즌 비트들이 위치될 수 있다. 현재까지의 설명에서, 조직 극부호가 일반 극부호와 다른 점은 부호화를 위하여 비트 벡터(m)을 구하고, 생성행렬(G)를 곱하여 부호화를 수행하는 것이 아니라, 비트 벡터(m)에 프로즌 비트들을 채우고, 가상의 출력 벡터(x)에 메시지 비트들을 특정 위치에 채운 후, 비트 벡터(m)과 출력 벡터(x) 내의 남은 위치들을 행렬 연산을 통하여 역으로 추산할 수 있다.
이러한 과정을 통하여, 비트 벡터(m)에는 처음에 주어진 메시지 비트들은 아니지만, 역으로 추산된 메시지들과 프로즌 비트들이 비트 벡터(m)에 위치될 수 있다. 또한, 출력 벡터(x)에는 실제 메시지 비트들과 역으로 추산된 나머지 비트들이 위치할 수 있다. 즉, 조직 부호화 형태가 될 수 있다.
다만, 이는 하나의 실시 예일 뿐이며, 이에 제한되는 것은 아니다.
극 패리티 비트들을 제외한 극 패리티 부가 메시지는 제 2 패리티 부가 어레이(Mp2) 내 복수의 행들 각각과 동일하다. 즉, 극 패리티 부가 메시지는 제 2 패리티 부가 어레이(Mp2) 내 복수의 행들 각각에 극 패리티 비트들이 부가된 형태로서, 제 2 패리티 부가 어레이가 극 패리티 부가 메시지의 제 2 패리티 부가 어레이(Mp2) 복수의 행들 각각에 일대일 매칭된다.
인코디드 메시지 어레이는 컨트롤러(130)에 의하여 메모리 장치(150) 내 메모리 셀 어레이(330)에 저장될 수 있다.
도 8b는 오리지널 메시지 어레이가 인코디드 메시지 어레이로 부호화되는 과정을 나타내는 개념도이다. 도 8b에서는 설명의 편의를 위하여 4x4 오리지널 메시지 어레이가 부호화 되는 과정이 예로써 설명된다.
앞서 설명된 바와 같이, ECC 부호화기(170)는 호스트 인터페이스 유닛(132)로부터 입력된 오리지널 메시지를 어레이 모양으로 배열할 수 있다. 즉, 도 8b에 도시된 바와 같이, ECC 복호화기(170)는 오리지널 메시지를 사전 설정된 길이를 갖는 복수의 메지시들로 분할한 후, 소정의 행의 개수(4) 및 소정의 열의 개수(4)를 갖는 4x4 오리지널 메시지 어레이를 생성할 수 있다.
먼저, 생성된 4x4 오리지널 메시지 어레이는 열 부호화기(810)에 입력될 수 있으며, 열 부호화기(810)는 4x4 오리지널 메시지 어레이에 포함된 4개의 열들 각각에 대하여 부호화 동작을 수행할 수 있다. 그 결과, 4x4 오리지널 메시지 어레이에 포함된 복수의 열들 각각에 대응하는 제 1 패리티 비트로 구성된 하나의 행이 생성될 수 있다. 도 8b에는 제 1 패리티 비트로 구성된 하나의 행이 생성되었으나, 이는 하나의 실시 예에 해당하며 이에 제한되는 것은 아니다. 도 8b에서 생성된 제 1 패리티 비트들은 메시지 어레이 내 음영된 형태로 나타난다.
열 부호화기(810)는 생성된 제 1 패리티 비트로 구성된 행을 4x4 오리지널 메시지 어레이에 부가하여 5x4 제 1 패리티 부가 어레이(Mp1)를 생성할 수 있다. 그리고 나서, 5x4 제 1 패리티 부가 어레이(Mp1)는 인터리버(830)에 제공될 수 있으며, 인터리버(830)는 5x4 제 1 패리티 부가 어레이(Mp1)를 인터리빙할 수 있다.
인터리버(830)는 인터리빙 동작를 통하여 5x4 제 1 패리티 부가 어레이(Mp1)에 포함된 복수의 비트들 즉, 오리지널 메시지 어레이에 포함된 복수의 비트들 및 제 1 패리티 비트들의 위치가 무작위(random)로 변경된 5x4 인터리빙 어레이(M'p1)를 생성할 수 있다. 생성된 5x4 인터리빙 어레이(M'p1)는 행 부호화기(850)에 제공될 수 있다.
행 부호화기(850) 내 포함된 CRC 부호화기(851)는 5x4 인터리빙 어레이(M'p1) 내 포함된 5개의 행들 각각에 대하여 개별적으로 복호화 동작을 수행할 수 있다. 그 결과, CRC 부호화기(851)는 5x4 인터리빙 어레이(M'p1)에 포함된 5개의 행들 각각에 대응되도록 CRC 패리티 비트를 생성할 수 있으며, CRC 패리티 비트로 구성된 하나의 열을 생성할 수 있다. 도 8b에는 CRC 패리티 비트로 구성된 하나의 열이 생성되었으나, 이는 하나의 실시 예에 해당할 뿐이며, 이에 제한되는 것은 아니다. CRC 부호화기(851)는 생성된 CRC 패리티 비트 열을 5x4 인터리빙 어레이(M'p1)에 부가하여 5x5 제 2 패리티 부가 어레이(Mp2)를 생성할 수 있다. 도 8b에서, CRC 패리티 비트들은 메시지 어레이 내 사선 형태로 나타난다. 그리고, 5x5 제 2 패리티 부가 어레이(Mp2)는 극 부호화기(853)에 제공될 수 있다.
극 부호화기(853)는 5x5 제 2 패리티 부가 어레이(Mp2)에 포함된 5개 행들 각각에 대하여 극 부호화를 수행하여 5x7 인코디드 메시지 어레이를 생성할 수 있다. 도 8b에서 극 부호화에 의하여 생성된 극 패리티 비트들은 메시지 어레이 내 점박이 무늬로 나타난다. 도 8b에서는 극 패리티 비트들로 구성된 열이 2개 생성되었으나, 이는 하나의 실시 예일 뿐이며, 이에 제한되는 것은 아니다. 나아가, 생성된 5x7 인코디드 메시지 어레이는 ECC 복호화기(170)에서 출력될 수 있으며, 컨트롤러(130)는 메모리 장치(150) 내 메모리 셀 어레이(330)에 5x7 인코디드 메시지 어레이를 저장할 수 있다.
이하에서는, 도 9a 및 도 9b를 참조하여, 인코디드 메시지 어레이를 오리지널 메시지 어레이로 복호화하는 과정이 설명된다. 부호화 동작이 종료된 후, 인코디드 메시지 어레이에 대한 복호화 과정은 도 8a 및 8b에서 설명된 부호화 과정의 역순으로 진행될 수 있다.
도 9a는 본 발명의 실시 예에 따른 ECC 복호화기(180)의 구조를 나타낸 도면이다.
ECC 복호화기(180)는 행 복호화기(910), 디 인터리버(930) 및 열 복호화기(950)를 포함할 수 있으며, 행 복화하기(910)는 극 복호화기(911) 및 CRC 복호화기(913)를 포함할 수 있다. ECC 복호화기(180)는 메모리 장치(150)로부터 로딩된 인코디드 메시지 어레이를 제공받을 수 있다. 인코디드 메시지 어레이는 LLR 값으로 구성된 어레이이다.
먼저, 인코디드 메시지 어레이는 행 복호화기(910)에 포함된 극 복호화기(911)에 입력될 수 있다. 극 복호화기(911)은 인코디드 메시지 어레이에 포함된 복수의 행들 각각을 극부호의 SCL 복호화 과정을 통하여 복호할 수 있다.
구체적으로, 극 복호화기(911)는 메모리 장치(150)를 통해 입력되는 인코디드 메시지 어레이에 포함된 복수의 행들 각각에 대하여 극 복호화를 수행함으로써 행들 각각에 대응하는 제 1 후보 메시지들을 생성할 수 있다. 극 복호화기(911)는 연속 소거 리스트 복호화(successive cancellation list decoding) 방식으로 사전 설정된 리스트 개수 이하의 제 2 후보 메시지들을 생성하며, 생성된 제 2 후보 메시지들에서 극 패리티 비트를 제거함으로써 제 1 후보 메시지들을 생성할 수 있다. 이때, 사용되는 리스트의 수는
Figure pat00001
(x는 음이 아닌 정수) 형태의 어떠한 정수도 가능하다. 연속 소거 리스트 복호화는 채널 용량을 바탕으로 인코디드 메시지 어레이의 i 번째 심볼의 로그 우도 비(log likelihood ratio)를 계산하고, 계산된 로그 우도 비와 프로즌 비트의 위치에 기초하여 사전 설정된 리스트 개수 이하의 제 2 후보 메시지를 생성하는 복호화 방법이다. 여기서, i는 1 이상 n 이하이며, n은 인코디드 어레이의 행의 길이 즉, 열의 개수이다.
다만, 상기 기재된 극 부호화 방법은 하나의 실시 예에 해당할 뿐이며, 이에 제한되는 것은 아니다. 즉, 본 발명의 극 부호화기(911)는 공지된 극 부호화 방법을 사용할 수 있다.
극 복호화기(911)는 인코디드 메시지 어레이에 포함된 복수의 행들 각각의 에 대해 연속 소거 리스트 복호화를 수행하여 추정된 제 2 후보 메시지들의 극 패리티 비트를 제거함으로써 복수의 행들 각각에 대응하는 제 1 후보 메시지들을 생성하고, 생성된 제 1 후보 메시지들을 CRC 복호화기(913)에 제공할 수 있다.
CRC 복호화기(913)는 극 복호화기(911)로부터 입력된 복수의 행들 각각에 대한 사전 설정된 리스트 개수 이하의 제 1 후보 메시지들이 CRC 패리티 체크를 만족하는지를 판정할 수 있다. 나아가, CRC 복호화기(913)는 복수의 제 1 후보 메시지들 중 CRC 패리티 체크를 통과한 메시지들을 출력할 수 있다. 반대로, CRC 복호화기(913)는 복수의 제 1 후보 메시지들 중 CRC 패리티 체크를 통과하지 못한 메시지들을 출력하지 않을 수 있다.
만약, 복수의 제 1 후보 메시지들 모두가 CRC 패리티 체크를 통과한다면, 각각의 행들은 복호 결과 값에 해당하는 최대의 LLR 값으로 치환되어 디-인터리버(930)에 제공될 수 있다.
반면에, CRC 복호화기(913)는 복수의 제 1 후보 메시지들 중 CRC 패리티 체크를 통과하지 못한 메시지들을 존재하는 경우, 복호결과가 출력된 행(즉, CRC 패리티 체크를 통과한 행)은 복호결과 값에 해당하는 최대의 LLR 값으로 치환될 수 있으나, 복호결과가 출력되지 않은 행(즉, CRC 패리티 체크를 통과하지 못한 행)은 채널 LLR 값으로 그대로 유지될 수 있다. 즉, CRC 복호화 결과, 최대 LLR 값으로 치환된 행과 채널 LLR 값으로 유지된 행들로 구성된 제 1 복호 메시지 어레이가 생성될 수 있다. 나아가, 제 1 복호 메시지 어레이는 디-인터리버(930)에 제공될 수 있다.
디-인터리버(930)는 제 1 복호 메시지 어레이를 디-인터리빙할 수 있다. 디-인터리빙 동작은 도 8a 및 도 8b에서 설명된 인터리빙 동작에 반대되는 동작이다. 디-인터리버(930)는 제 1 복호 메시지 어레이를 디-인터리빙한 디-인터리빙 어레이를 생성할 수 있다. 만약, 제 1 복호 메시지 어레이에 포함된 모든 행이 CRC 패리티 체크를 통과하였다면, 디-인터리버(930)는 디-인터리빙 어레이를 ECC 복호화기(180)으로부터 외부로 출력할 수 있다. 반면에, 제 1 복호 메시지 어레이에 포함된 복수의 행들 중 일부가 CRC 패리티 체크를 통과하지 못하였다면, 디-인터리버(930)는 디-인터리빙 어레이를 열 복호화기(950)에 제공할 수 있다.
디-인터리빙 후, 열 복호화기(950)는 부호화된 디-인터리빙 어레이에 포함된 열 부호들을 복호하여 제 2 복호 메시지 어레이를 생성할 수 있다. 열 복호화기(950)는 디-인터리빙 어레이에 포함된 열들 각각에 대하여 복호할 수 있다. 만약, 열 부호들이 SPC 부호라면, 열 복호화기(950)는 단일 체크부호의 한번의 BP(belief propagation) 복호를 수행할 수 있다. 또한, 열 부호들이 BCH, RS 부호와 같은 MDS 부호라면, 경판정 정보만을 이용하여 부호되는 특성을 활용하여, 열 복호화기(950)는 경판정 복호를 수행할 수 있다. 이러한 복호 과정은 오류검출 검사를 수행할 수 없기 때문에, 열 복호화기(950)는 열 복호 동작에 의하여 출력된 LLR 값으로 열 복호화기(950)에 입력된 디-인터리빙 어레이의 LLR 값을 변경하여 제 2 복호 메시지 어레이를 생성할 수 있다. 나아가, 열 복호화기(950)는 생성된 제 2 복호 메시지 어레이를 인터리버(830)에 제공할 수 있다.
인터리버(830)는 제공받은 제 2 복호 메시지 어레이에 대하여 인터리빙 동작을 수행할 수 있다. 그리고 나서, 인터리버(830)는 인터리빙된 메시지 어레이를 행 복호화기(910)에 제공할 수 있다. 행 복호화기(910)는 인터리빙된 메시지 어레이에 대하여 극 복호화 및 CRC 패리티 체크를 수행할 수 있다. 만약, 여전히 CRC 패리티 체크를 통과하지 못한 행이 존재한다면, 디-인터리버(930), 열 복호화기(950) 및 인터리버(830)에서 수행되는 동작을 반복할 수 있다. 반복 복호 결과, 모든 행이 CRC 패리티 체크를 통과하거나, 반복복호 횟수가 사전 설정된 최대반복횟수에 도달하면 복호과정은 멈출 수 있다. 모든 행이 CRC 패리티 체크를 통과하면, 앞서 설명된 바와 같이, 디-인터리버(930)가 디-인터리빙 동작을 수행한 후 ECC 복호화기(180)으로부터 외부로 출력할 수 있다. 반면에, 반복복호 횟수가 사전 설정된 최대반복횟수에 도달하여 복호 과정이 멈춘 경우, ECC 복호화기(180)는 해당 인코디드 메시지 어레이에 대하여 복호 실패로 판단할 수 있다.
다만, 도면에 도시되진 아니하였으나, 모든 행이 CRC 패리티 체크를 통과하였다 하더라도, ECC부(138)은 상기 반복동작을 한번 더 수행하여 복호결과의 신뢰를 향상시킬 수 있다. 그 이유는 행복호에서, 잘못된 복호결과가 CRC 패리티 체크를 통과하는 경우가 발생될 수 있기 때문이다. 이런 경우, 모든 행이 복호화에 성공(CRC 패리티 체크 관점)하였다고 하더라도, ECC부(138)는 열부호에 대한 복호화 과정을 추가로 수행할 수 있으며, 다시 행부호에 대한 복호화를 수행할 수 있다. 그 결과, ECC부(138)는 존재할 수 있는 잘못된 CRC 패리티 체크 결과를 바로잡을 수 있다.
도 9b는 본 발명의 실시 예에 따른 ECC 복호화기(180)의 복호 동작 과정을 나타낸 흐름도이다.
먼저, 단계 S901에서, 반복횟수(i)가 '1'로 설정될 수 있다.
단계 S903에서, ECC 복호화기(180)는 메모리 장치(150)로부터 로딩된 인코디드 메시지 어레이를 수신할 수 있다. 수신된 인코디드 메시지 어레이는 극부호화기(911)에 제공될 수 있다.
단계 S905에서, 극 부호화기(911)는 인코디드 메시지 어레이에 포함된 복수의 행들 각각에 대하여 극 복호 동작을 수행할 수 있다. 극 복호 동작으로 인하여 인코디드 메시지 어레이 포함된 복수의 행들 각각에 대응하는 극 패리티 비트가 제거될 수 있다.
단계 S907에서, CRC 부호화기(913)는 극 패리티가 제거된 행들 각각에 대하여 CRC 복호 동작을 수행할 수 있다. CRC 복호 동작을 통하여 제 1 복호 메시지 어레이가 생성될 수 있다. 나아가, CRC 부호화기(913)는 각각의 행들에 대하여 CRC 패리티 체크를 판단할 수 있다.
만약, 제 1 복호 메시지 어레이에 포함된 모든 행이 CRC 패리티 체크를 통과한다면(단계 S909에서, 'Yes'), 단계 S911에서, CRC 복호화기(913)는 각각의 행들의 LLR 값을 복호 결과 값에 해당하는 최대의 LLR 값으로 치환하여 생성된 제 1 복호 메시지 어레이를 디 인터리버(930)에 제공할 수 있다. 그리고, 디-인터이빙(930)은 제공받은 제 1 복호 메시지 어레이에 대하여 디-인터리빙 동작을 수행할 수 있다.
그리고, 단계 S913에서, ECC 복호화기(180)는 디-인터리빙 어레이를 출력할 수 있다.
반면에, 제 1 복호 메시지 어레이에 포함된 복수의 행들 중 일부라도 CRC 패리티 체크에 통과하지 못한다면(단계 S909에서, 'No'), 단계 S915에서, 행 복호화기(180)는 현재 복호 반복횟수가 최대 반복횟수에 도달하였는지 판단할 수 있다.
만약, 현재 복호 반복횟수가 최대 반복횟수에 도달하였다면(단계 S915에서, 'Yes'), 단계 S917에서, ECC 복호화기(180)는 해당 메시지 어레이에 대한 복호 동작을 실패로 판단할 수 있다.
반면에, 현재 복호 반복횟수가 최대 반복횟수에 도달하지 아니하였다면(단계 S915에서, 'No'), 단계 S919에서, 디-인터리버(930)는 제 1 복호 메시지 어레이에 대하여 디-인터리빙 동작을 수행할 수 있다. 그 결과, 디-인터리버(930)는 제 1 복호 메시지 어레이를 디-인터리빙한 디-인터리빙 어레이를 생성할 수 있다. 생성된 디-인터리빙 어레이는 열 복호화기(950)에 제공될 수 있다.
단계 S921에서, 열 복호화기(950)는 디-인터리빙 어레이에 포함된 열부호들을 복호하여 제 2 복호 메시지 어레이를 생성할 수 있다. 앞서 설명된 바와 같이, SPC 부호를 통하여 혹은 BCH 부호, RS 부호를 통하여 부호화 된 경우, 열 복호화기(950)는 각각의 부호에 대응하는 복호 방법을 사용하여 디-인터리빙 어레이에 포함된 열 부호들 각가에 대한 복호 동작을 수행할 수 있다. 생성된 제 2 복호 메시지 어레이는 인터리버(830)에 제공될 수 있다.
단계 S923에서, 인터리버(830)는 제공된 제 2 복호 메시지 어레이에 대하여 인터리빙 동작을 수행할 수 있다. 그리고, 인터리빙된 제 2 복호 메시지 어레이는 다시 행 복호화기(910) 특히, 극 복호화기(911)에 제공될 수 있다.
이때, 단계 S925에서, 현재 복호 반복횟수가 1증가될 수 있다. 나아가, 단계 S915에서 판단된 것과 같이, 현재 복호 반복횟수가 최대 복호 반복횟수에 도달할 때까지, 단계 S905 내지 단계 S925의 동작이 반복하여 수행될 수 있다.
상기와 같이, 본 발명의 실시 예에 따른 컨트롤러(130)는 부호길이가 긴 단일 극부호를 사용하지 않고, 복수의 짧고 독립적인 행 극부호를 사용하므로써, 복호화 과정에서 짧은 단위 극부호에 해당하는 작은 행/열 복호기만으로 전체 연접 부호의 복호가 가능하다. 그 결과, 요구 메모리 크기가 매우 크다는 극부호의 단점을 극복할 수 있어, 실용적인 연접 부호 설계가 가능하다.
도 10는 본 발명의 일 실시 예에 따라, 행복호에서 CRC 체크에 오류가 없다고 가정하고, 열 복호에서 잘못된 오류 정정이 없다고 가정하였을 때, 열 부호를 단일 패리티 체크 부호를 사용하였을 때, 혹은 BCH 부호를 사용하였을 때, 경판정 채널 LLR을 기반으로 복호하였을 때의 오류 정정성능을 나타내는 그래프이다.
도 10은 부호의 길이가 2KB인 경우, 단순히 BCH 부호 만으로 혹은 LDPC 부호 만을 사용하여 복호하였을 때의 오류정정성능보다 본 발명의 실시 예에 따라 SPC 부호와 극 부호를 연접 혹은 BCH 부호와 극 부호를 연접하여 복호하였을 때의 오류정정성능이 더 뛰어나다는 것을 나타낸다.
도 11는 본 발명의 일실시예에 따른 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 일실시예에 따른 컨트롤러(15000) 및 메모리 장치(16000)를 포함하는 전자 장치(10000)의 블록도이다.
도 11를 참조하면, 이동 전화기(cellular phone), 스마트 폰(smart phone), 또는 태블릿(tablet) PC와 같은 전자 장치(10000)는 예를 들어 플래시 메모리 장치로 구현될 수 있는 메모리 장치(16000)와, 메모리 장치(16000)의 동작을 제어할 수 있는 컨트롤러(15000)를 포함할 수 있다.
메모리 장치(16000)는 도 3a 내지 도 4를 참조하여 설명된 메모리 장치(150)에 대응된다. 메모리 장치(16000)는 랜덤 데이터를 저장 할 수 있다.
컨트롤러(15000)는 도 3a 내지 도 10를 참조하여 설명된 컨트롤러(130)에 대응된다. 컨트롤러(15000)는 전자 장치의 전반적인 동작을 제어하는 프로세서(11000)에 의하여 제어될 수 있다.
메모리 장치(16000)에 저장된 데이터는 프로세서(11000)의 제어에 따라 동작하는 컨트롤러(15000)의 제어에 따라 디스플레이(13000)를 통하여 디스플레이될 수 있다.
무선 송수신기(12000)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예들 들어, 무선 송수신기(12000)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(11000)가 처리할 수 있는 신호로 변환할 수 있다. 따라서 프로세서(11000)는 무선 송수신기(12000)로부터 출력된 신호를 처리하고, 처리된 신호를 컨트롤러(15000)를 통하여 메모리 장치(16000)에 저장하거나 또는 디스플레이(13000)를 통하여 디스플레이할 수 있다.
무선 송수신기(12000)는 프로세서(11000)로부터 출력된 신호를 무선 신호로 변환하고, 변환된 무선 신호를 안테나(ANT)를 통하여 외부로 출력할 수 있다.
입력 장치(14000)는 프로세서(11000)의 동작을 제어하기 위한 제어 신호 또는 프로세서(11000)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(11000)는 메모리 장치(16000)로부터 출력된 데이터, 무선 송수신기(12000)로부터 출력된 무선 신호, 또는 입력 장치(14000)로부터 출력된 데이터가 디스플레이(13000)를 통하여 디스플레이될 수 있도록 디스플레이(13000)를 제어할 수 있다.
도 12은 본 발명의 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 일실시예에 따른 컨트롤러(24000) 및 메모리 장치(25000)를 포함하는 전자 장치(20000)의 블록도이다.
컨트롤러(24000) 및 메모리 장치(25000)는 도 3a 내지 도 10를 참조하여 설명된 컨트롤러(130) 및 메모리 장치(150)에 대응될 수 있다.
도 12을 참조하면, PC(personal computer), 태블릿 컴퓨터(tablet computer), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(20000)는 플래시 메모리 장치와 같은 메모리 장치(25000)와, 메모리 장치(25000)의 동작을 제어할 수 있는 컨트롤러(24000)를 포함할 수 있다.
전자 장치(20000)는 전자 장치(20000)의 전반적인 동작을 제어하기 위한 프로세서(21000)를 포함할 수 있다. 컨트롤러(24000)는 프로세서(21000)에 의하여 제어될 수 있다.
프로세서(21000)는 입력 장치(22000)에 의하여 발생한 입력 신호에 따라 메모리 장치에 저장된 데이터를 디스플레이를 통하여 디스플레이할 수 있다. 예들 들어, 입력 장치(22000)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
도 13은 본 발명의 또 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 또 다른 일실시예에 따른 컨트롤러(32000) 및 메모리 장치(34000)를 포함하는 전자 장치(30000)의 블록도이다.
컨트롤러(32000) 및 메모리 장치(34000)는 도 3a 내지 도 10를 참조하여 설명된 컨트롤러(130) 및 메모리 장치(150)에 대응될 수 있다.
도 13을 참조하면, 전자 장치(30000)는 카드 인터페이스(31000), 컨트롤러(32000), 및 메모리 장치(34000), 예들 들어 플래시 메모리 장치를 포함할 수 있다.
전자 장치(30000)는 카드 인터페이스(31000)를 통하여 호스트(HOST)와 데이터를 주거나 받을 수 있다. 일실시예에 따라, 카드 인터페이스(31000)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(31000)는 전자 장치(30000)와 통신할 수 있는 호스트(HOST)의 통신 프로토콜에 따라 호스트(HOST)와 컨트롤러(32000) 사이에서 데이터 교환을 인터페이스할 수 있다.
컨트롤러(32000)는 전자 장치(30000)의 전반적인 동작을 제어하며, 카드 인터페이스(31000)와 메모리 장치(34000) 사이에서 데이터의 교환을 제어할 수 있다. 또한 컨트롤러(32000)의 버퍼 메모리(325)는 카드 인터페이스(31000)와 메모리 장치(34000) 사이에서 주고받는 데이터를 버퍼링할 수 있다.
컨트롤러(32000)는 데이터 버스(DATA) 및 어드레스 버스(ADDRESS)를 통하여 카드 인터페이스(31000)와 메모리 장치(34000)와 접속될 수 있다. 일실시예에 따라 컨트롤러(32000)는 카드 인터페이스(31000)로부터 리드 또는 라이트하고자 하는 데이터의 어드레스를 어드레스 버스(ADDRESS)를 통하여 수신하고 이를 메모리 장치(34000)로 전송할 수 있다.
또한, 컨트롤러(32000)는 카드 인터페이스(31000) 또는 메모리 장치(34000) 각각에 접속된 데이터 버스(DATA)를 통하여 리드 또는 라이트하고자 하는 데이터를 수신하거나 전송할 수 있다.
도 13의 전자 장치(30000)가 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(HOST)에 접속될 때, 호스트(HOST)는 카드 인터페이스(31000)와 컨트롤러(32000)를 통하여 메모리 장치(34000)에 저장된 데이터를 주거나 받을 수 있다.
도 14는 본 발명의 또 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 또 다른 일실시예에 따른 컨트롤러(44000) 및 메모리 장치(45000)를 포함하는 전자 장치의 블록도를 나타낸다.
컨트롤러(44000) 및 메모리 장치(45000)는 도 3a 내지 도 10를 참조하여 설명된 컨트롤러(130) 및 메모리 장치(150)에 대응될 수 있다.
도 14를 참조하면, 전자 장치(40000)는 플래시 메모리 장치와 같은 메모리 장치(45000), 메모리 장치(45000)의 데이터 처리 동작을 제어하기 위한 컨트롤러(44000), 및 전자 장치(40000)의 전반적인 동작을 제어할 수 있는 이미지 센서(41000)를 포함할 수 있다.
전자 장치(40000)의 이미지 센서(42000)는 광학 신호를 디지털 신호로 변환하고, 변환된 디지털 신호는 이미지 센서(41000)의 제어하에 메모리 장치(45000)에 저장되거나 또는 디스플레이(43000)를 통하여 디스플레이될 수 있다. 또한, 메모리 장치(45000)에 저장된 디지털 신호는 이미지 센서(41000)의 제어하에 디스플레이(43000)를 통하여 디스플레이될 수 있다.
도 15은 본 발명의 또 다른 실시예에 따른 메모리 시스템을 포함하는 전자 장치로서, 본 발명의 또 다른 일실시예에 따른 컨트롤러(61000) 및 메모리 장치(62000A, 62000B, 62000C)를 포함하는 전자 장치(60000)의 블록도이다.
컨트롤러(61000) 및 메모리 장치(62000A, 62000B, 62000C)는 도 3a 내지 도 10를 참조하여 설명된 컨트롤러(130) 및 메모리 장치(150)에 대응될 수 있다.
도 15을 참조하면, 전자 장치(60000)는 SSD(solid state drive)와 같은 데이터 저장 장치로 구현될 수 있다.
전자 장치(60000)는 다수개의 메모리 장치들(62000A, 62000B, 62000C)과, 다수개의 메모리 장치들(62000A, 62000B, 62000C) 각각의 데이터 처리 동작을 제어할 수 있는 컨트롤러(61000)를 포함할 수 있다.
전자 장치(60000)는 메모리 시스템 또는 메모리 모듈로 구현될 수 있다.
일실시예에 따라 컨트롤러(61000)는 전자 장치(60000)의 내부 또는 외부에 구현될 수 있다.
도 16는 도 15에 도시된 전자 장치(60000)를 포함하는 데이터 처리 시스템의 블록도이다.
도 15 및 도 16를 참조하면, RAID(Redundant Array of Independent Disks) 시스템으로 구현될 수 있는 데이터 저장 장치(70000)는 RAID 컨트롤러(71000)와, 다수개의 메모리 시스템들(72000A, 72999B to 72000N)을 포함할 수 있다.
다수개의 메모리 시스템들(72000A, 72999B to 72000N) 각각은 도 15에 도시된 전자 장치(60000)일 수 있다. 다수개의 메모리 시스템들(72000A, 72999B to 72000N)은 RAID 어레이를 구성할 수 있다. 데이터 저장 장치(70000)는 SSD로 구현될 수 있다.
프로그램 동작 동안, RAID 컨트롤러(71000)는 호스트로부터 출력된 프로그램 데이터를 다수개의 RAID 레벨들 중에서 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라 다수개의 메모리 시스템들(72000A, 72999B to 72000N) 중에서 어느 하나의 메모리 시스템으로 출력할 수 있다.
또한, 리드 동작 동안, RAID 컨트롤러(71000)는 다수개의 RAID 레벨들 중에서 호스트로부터 출력된 RAID 레벨 정보에 기초하여 선택된 어느 하나의 RAID 레벨에 따라서 다수개의 메모리 시스템중(72000A, 72999B to 72000N)에서 어느 하나의 메모리 시스템으로부터 리드된 데이터를 호스트로 전송할 수 있다.
본 발명의 상세한 설명에서는 구체적인 일실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 수 있다.

Claims (20)

  1. 메모리 시스템에 있어서,
    호스트로부터 제공된 오리지널 메시지를 활용하여 오리지널 메시지 어레이를 생성하고, 상기 오리지널 메시지 어레이 내 복수의 열들 각각에 대하여 제 1 부호화하여 제 1 패리티 부가 어레이를 생성하고, 상기 제 1 패리티 부가 어레이에 포함된 복수의 비트들에 대하여 인터리빙 동작을 수행하여 인터리빙 어레이를 생성하며, 상기 인터리빙 어레이 내 복수의 행들 각각에 대하여 제 2 부호화하여 인코디드 메시지 어레이를 생성하는 컨트롤러; 및
    상기 인코디드 메시지 어레이를 저장하는 메모리 장치
    를 포함하고,
    상기 제 2 부호화는 제 1 서브 부호화 및 제 2 서브 부호화를 포함하는
    메모리 시스템.
  2. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 오리지널 메시지를 사전 설정된 길이로 분할한 후, 어레이 모양으로 배열하여 상기 오리지널 메시지 어레이를 생성하는
    메모리 시스템.
  3. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 오리지널 메시지 어레이를 단일 패리티 체크 부호, BCH부호 혹은 RS부호 중 어느 하나로 상기 제 1 부호화하여 상기 제 1 패리티 부가 어레이를 생성하는
    메모리 시스템.
  4. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 오리지널 메시지 어레이에 포함된 복수의 열들을 사전 설정된 수로 그룹핑하고, 각 그룹들마다 상기 제 1 부호화하여 상기 제 1 패리티 부가 어레이를 생성하는
    메모리 시스템.
  5. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 제 1 패리티 부가 어레이 내 복수의 열들을 그룹핑하여, 각각의 그룹들 내 복수의 행들에 대하여 상기 인터리빙 동작을 수행하여 상기 인터리빙 어레이를 생성하는
    메모리 시스템.
  6. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 인터리빙 어레이의 복수의 행들 각각에 대하여 순환중복 검사부호를 통하여 상기 제 1 서브 부호화하여 제 2 패리티 부가 어레이를 생성하는
    메모리 시스템.
  7. 제 6 항에 있어서,
    상기 컨트롤러는
    상기 제 2 패리티 부가 어레이의 복수의 행들 각각에 대하여 조직 극 부호를 통하여 상기 제 2 서브 부호화하여 상기 인코디드 메시지 어레이를 생성하는
    메모리 시스템.
  8. 제 1 항에 있어서,
    상기 컨트롤러는
    상기 인코디드 메시지 어레이를 상기 메모리 장치로부터 리드하고, 상기 인코디드 메시지 어레이에 포함된 복수의 행들 각각에 대하여 제 1 서브 복호화하여 제 1 후보 메시지를 생성하고, 상기 제 1 후보 메시지에 포함된 복수의 행들 각각에 대하여 제 2 서브 복호화하여 제 1 복호 메시지 어레이를 생성하는
    메모리 시스템.
  9. 제 8 항에 있어서,
    상기 컨트롤러는
    상기 제 1 복호 메시지 어레이에 포함된 복수의 비트들에 대하여 디-인터리빙 동작을 수행하여 디-인터리빙 어레이를 생성하는
    메모리 시스템.
  10. 제 9 항에 있어서,
    상기 컨트롤러는
    상기 디-인터리빙 어레이에 포함된 열들 각각에 대하여 복호화하여 제 2 복호 메시지 어레이를 생성하고, 상기 제 2 복호 메시지 어레이에 포함된 모든 행들이 상기 제 2 서브 복호화를 성공한 경우, 상기 제 2 복호 메시지 어레이를 상기 호스트로 출력하는
    메모리 시스템.
  11. 메모리 시스템의 동작방법에 있어서,
    호스트로부터 제공된 오리지널 메시지를 활용하여 오리지널 메시지 어레이를 생성하는 단계;
    상기 오리지널 메시지 어레이 내 복수의 열들 각각에 대하여 제 1 부호화하여 제 1 패리티 부가 어레이를 생성하는 단계;
    상기 제 1 패리티 부가 어레이에 포함된 복수의 비트들에 대하여 인터리빙 동작을 수행하여 인터리빙 어레이를 생성하는 단계;
    상기 인터리빙 어레이 내 복수의 행들 각각에 대하여 제 1 서브 부호화하여 제 2 패리티 부가 어레이를 생성하는 단계;
    상기 패리티 부가 어레이 내 복수의 행들 각각에 대하여 제 2 서브 부호화하여 인코디드 메시지 어레이를 생성하는 단계; 및
    상기 인코디드 메시지 어레이를 메모리 장치에 저장하는 단계
    를 포함하는 동작방법.
  12. 제 11 항에 있어서,
    상기 오리지널 메시지 어레이를 생성하는 단계는
    상기 오리지널 메시지를 사전 설정된 길이로 분할한 후, 어레이 모양으로 배열하여 상기 오리지널 메시지 어레이를 생성하는 단계
    를 포함하는 동작방법.
  13. 제 11 항에 있어서,
    상기 제 1 패리티 부가 어레이를 생성하는 단계는
    상기 오리지널 메시지 어레이를 단일 패리티 체크부호, BCH 부호 혹은 RS 부호 중 어느 하나로 상기 제 1 부호화하여 상기 제 1 패리티 부가 어레이를 생성하는 단계
    를 포함하는 동작방법.
  14. 제 11 항에 있어서,
    상기 제 1 패리티 부가 어레이를 생성하는 단계는
    상기 오리지널 메시지 어레이에 포함된 복수의 열들을 사전 설정된 수로 그룹핑하고, 각 그룹들마다 상기 제 1 부호화하여 상기 제 1 패리티 부가 어레이를 생성하는 단계
    를 포함하는 동작방법.
  15. 제 11 항에 있어서,
    상기 인터리빙 어레이를 생성하는 단계는
    상기 제 1 패리티 부가 어레이 내 복수의 열들을 그룹핑하여, 각각의 그룹들 내 비트들의 행 위치에 대하여 상기 인터리빙 동작을 수행하여 상기 인터리빙 어레이를 생성하는 단계
    를 포함하는 동작방법.
  16. 제 11 항에 있어서,
    상기 제 2 패리티 부가 어레이를 생성하는 단계는
    상기 인터리빙 어레이의 복수의 행들 각각에 대하여 순환중복 검사부호로 상기 제 1 서브 부호화하여 상기 제 2 패리티 부가 어레이를 생성하는 단계
    를 더 포함하는 동작방법.
  17. 제 16 항에 있어서,
    상기 인코디드 메시지 어레이를 생성하는 단계는
    상기 제 2 패리티 부가 어레이의 복수의 행들 각각에 대하여 조직 극 부호로 상기 제 2 서브 부호화하여 상기 인코디드 메시지 어레이를 생성하는 단계
    를 포함하는 동작방법.
  18. 제 11 항에 있어서,
    상기 인코디드 메시지 어레이를 상기 메모리 장치로부터 리드하는 단계;
    상기 인코디드 메시지 어레이에 포함된 복수의 행들 각각에 대하여 제 1 서브 복호화하여 제 1 후보 메시지를 생성하는 단계; 및
    상기 제 1 후보 메시지에 포함된 복수의 행들 각각에 대하여 제 2 서브 복호화하여 제 1 복호 메시지 어레이를 생성하는 단계
    를 더 포함하는 동작방법.
  19. 제 18 항에 있어서,
    상기 제 1 복호 메시지 어레이에 포함된 복수의 비트들에 대하여 디-인터리빙 동작을 수행하여 디-인터리빙 어레이를 생성하는 단계
    를 더 포함하는 동작방법.
  20. 제 19 항에 있어서,
    상기 디-인터리빙 어레이에 포함된 열들 각각에 대하여 복호화하여 제 2 복호 메시지 어레이를 생성하는 단계; 및
    상기 제 2 복호 메시지 어레이에 포함된 모든 행들이 상기 제 2 서브 복호화를 성공한 경우, 상기 제 2 복호 메시지 어레이를 상기 호스트로 출력하는 단계
    를 더 포함하는 동작방법.

KR1020180059080A 2018-05-24 2018-05-24 컨트롤러 및 그것의 동작 방법 KR102513782B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180059080A KR102513782B1 (ko) 2018-05-24 2018-05-24 컨트롤러 및 그것의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180059080A KR102513782B1 (ko) 2018-05-24 2018-05-24 컨트롤러 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190133987A true KR20190133987A (ko) 2019-12-04
KR102513782B1 KR102513782B1 (ko) 2023-03-27

Family

ID=69004317

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180059080A KR102513782B1 (ko) 2018-05-24 2018-05-24 컨트롤러 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102513782B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022188752A1 (zh) * 2021-03-10 2022-09-15 华为技术有限公司 一种编译码方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140071640A (ko) * 2012-12-04 2014-06-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
KR20150108362A (ko) * 2013-01-23 2015-09-25 삼성전자주식회사 연접한 극성 코드를 사용하여 인코딩 및 디코딩하는 방법 및 시스템
KR20180022175A (ko) * 2016-08-23 2018-03-06 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140071640A (ko) * 2012-12-04 2014-06-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
KR20150108362A (ko) * 2013-01-23 2015-09-25 삼성전자주식회사 연접한 극성 코드를 사용하여 인코딩 및 디코딩하는 방법 및 시스템
KR20180022175A (ko) * 2016-08-23 2018-03-06 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022188752A1 (zh) * 2021-03-10 2022-09-15 华为技术有限公司 一种编译码方法及装置

Also Published As

Publication number Publication date
KR102513782B1 (ko) 2023-03-27

Similar Documents

Publication Publication Date Title
CN109616148B (zh) 具有解码器的存储器系统、其操作方法和解码器
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
KR102559925B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102257050B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US20150358036A1 (en) Decoding method, memory storage device and memory control circuit unit
US11050438B2 (en) Memory controller
KR20180027803A (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR102556479B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
CN107608818B (zh) 解码方法、存储器存储装置及存储器控制电路单元
CN111258794A (zh) 存储器系统及其操作方法
KR102617832B1 (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR102314481B1 (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
KR20180022175A (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20170107769A (ko) 메모리 시스템 및 그의 동작 방법
KR102606829B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
US11095316B2 (en) Controller and operating method for performing read operation to read data in memory device
CN106158046B (zh) 用于turbo乘积码的误校正避免
KR102513782B1 (ko) 컨트롤러 및 그것의 동작 방법
KR20180033740A (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US10528496B2 (en) Controller and operating method thereof
KR20230019573A (ko) 컨트롤러 및 컨트롤러의 동작 방법
CN112687323A (zh) 具有用于解码的错误减少方案的存储器系统及其操作方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant