KR20170067656A - Nand 플래시용 터보 프로덕트 코드 - Google Patents

Nand 플래시용 터보 프로덕트 코드 Download PDF

Info

Publication number
KR20170067656A
KR20170067656A KR1020160165024A KR20160165024A KR20170067656A KR 20170067656 A KR20170067656 A KR 20170067656A KR 1020160165024 A KR1020160165024 A KR 1020160165024A KR 20160165024 A KR20160165024 A KR 20160165024A KR 20170067656 A KR20170067656 A KR 20170067656A
Authority
KR
South Korea
Prior art keywords
parity
xor
row
data
error pattern
Prior art date
Application number
KR1020160165024A
Other languages
English (en)
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
Priority claimed from US14/962,818 external-priority patent/US9673840B2/en
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Publication of KR20170067656A publication Critical patent/KR20170067656A/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/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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using 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
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/2909Product 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/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/2942Coding, 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 wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits

Landscapes

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

Abstract

데이터 블록 내의 데이터를 인코딩하는 방법은 상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR로부터 제1 XOR 패리티를 생성하는 단계, 상기 마지막 행에 상기 제1 XOR 패리티를 저장하는 단계, 및 상기 데이터 블록 내의 모든 열의 모든 열 패리티의 XOR 및 상기 마지막 행의 패리티의 XOR로부터 제2 XOR 패리티를 생성하는 단계를 포함한다.

Description

NAND 플래시용 터보 프로덕트 코드{TURBO PRODUCT CODES FOR NAND FLASH}
관련 출원에 대한 상호 참조
본 출원은 2015년 12월 8일에 출원된 "NAND 플래시용 터보 프로덕트 코드(TURBO PRODUCT CODES FOR NAND FLASH)"라는 명칭의 미국 특허 출원 제14/962,818호의 이익을 청구하며, 그 전체 내용은 참조로 본 명세서에 통합되어 있다.
분야
본 개시내용의 예시적인 실시예는 신호 처리 및 부호화 기술에 관한 것이다.
자기 저장 기술 (Magnetic Storage Technology)은 데이터를 기억하기 위해 가장 일반적으로 사용되었지만, 보다 경량화되고, 보다 빠른 판독/기록 동작을 요구하는 현재의 전자 장치에 있어서 자기 저장 기술은 선호도가 줄어들었다. NAND 기반 기술이 고밀도 데이터 저장 장치에 대한 요구를 충족시킬 수 있지만 이 기술은 고가이다. 성능 레벨을 유지하면서 NAND 기반 기술의 비용을 낮출 필요가 있다.
본 발명의 실시예는 데이터 블록 내의 데이터를 인코딩하는 방법을 포함한다. 이 방법은 상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR로부터 제1 XOR 패리티를 생성하는 단계; 상기 마지막 행에 상기 제1 XOR 패리티를 저장하는 단계; 및 상기 데이터 블록 내의 모든 열의 모든 열 패리티의 XOR 및 상기 마지막 행의 패리티의 XOR로부터 제2 XOR 패리티를 생성하는 단계를 포함할 수 있다.
본 발명의 실시예는 데이터 블록 내의 데이터를 인코딩하는 장치를 포함한다. 이 장치는 상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR로부터 제1 XOR 패리티를 생성하고, 상기 마지막 행에 상기 제1 XOR 패리티를 저장하며, 상기 데이터 블록 내의 모든 열의 모든 열 패리티의 XOR 및 상기 마지막 행의 패리티의 XOR로부터 제2 XOR 패리티를 생성하도록 구성된 인코더를 포함할 수 있다.
도 1은 본 발명의 실시예가 적용되는 메모리 시스템을 포함하는 데이터 처리 시스템을 예시한다.
도 2는 본 발명의 실시예들에 따르는 인코더 및 디코더를 포함하는 메모리 시스템의 블록도이다.
도 3a 및 도 3b는 본 발명의 실시예에 따르는 인코딩 프로세스를 예시하는 도면이다.
도 4는 본 발명의 실시예에 따르는 인코딩 프로세스를 나타내는 도면이다.
도 5, 도 6, 도 7, 도 8, 도 9a, 도 9b 및 도 10은 본 발명의 실시예에 따르는 갇힌(stuck) 에러 패턴을 예시하는 도면이다.
도 11은 본 발명의 실시예에 따르는 인코딩 및 디코딩 방식의 성능을 예시하는 도면이다.
여러 가지 실시예들을 첨부하는 도면을 참조하여 이하 더욱 상세히 설명한다. 본 발명은 그러나, 다른 형태로 구현될 수 있으며 본 명세서에서 제시되는 실시예들에 한정되는 것으로 해석되지 않아야 한다. 오히려, 이들 실시예는 본 개시내용이 빠짐없이 및 완전하게 되도록, 그리고 본 발명의 범위를 당업자에게 충분히 전달하도록 제공된다. 본 개시내용 전체에 걸쳐, 같은 참조 번호는 본 발명의 여러 도면 및 실시예들 전체에 걸쳐 같은 부분을 가리킨다.
본 발명은 프로세스; 장치; 시스템; 물질의 구성; 컴퓨터 판독 가능한 저장 매체 상에서 구현되는 컴퓨터 프로그램 제품; 및/또는 프로세서에 결합되는 메모리 상에 저장되고/되거나 그 메모리에 의해 제공되는 명령을 실행하도록 구성되는 프로세서와 같은 프로세서를 포함하는 다수의 방식으로 실현될 수 있다. 본 명세서에서, 이들 실현예 또는 본 발명이 취할 수 있는 임의의 다른 형태가 기술이라고 칭해질 수 있다. 일반적으로, 개시된 프로세스들의 단계들의 순서는 본 발명의 범위 내에서 변경될 수도 있다. 달리 언급되지 않으면, 작업을 수행하기 위해 구성되는 것으로 기재되는 프로세서 또는 메모리와 같은 구성요소는 작업을 수행하기 위해 제조되는 특정 구성요소 또는 정해진 시간에 작업을 수행하도록 일시적으로 구성되는 일반적인 구성요소로서 실현될 수 있다. 본 명세서에 사용되는 바와 같이, 용어 '프로세서'는 컴퓨터 프로그램 명령과 같은 데이터를 처리하도록 구성되는 하나 이상의 장치, 회로, 및/또는 처리 코어를 지칭한다.
NAND 기반 기술의 비용을 줄이기 위한 한가지 방법은 프로세스를 축소하는 것을 수반하지만, 프로세스를 축소하는 것은 성능을 저하시킨다. 이 성능 손실은 진보된 신호 처리 및 부호화 기술을 사용함으로써 보상될 수 있다. 보스-차우더리-호퀭헴(BCH: Bose-Chaudhuri-Hocquenghem) 코드 및 저밀도 패리티 검사(LDPC: low density parity check)가 데이터 무결성을 정정하기 위해 사용되어 왔다. BCH 코드에 있어서, 키 결함은 BCH 코드가 이들 코드를 쓸모없게 만드는 소프트 판정 디코딩(soft decision decoding)에 사용될 수 없다는 것이다. LDPC 코드는 양호한 하드(hard) 및 소프트 판정 디코딩 성능을 제공한다. 그러나, LDPC 디코더의 복잡성은 상당히 높아서, 하드웨어 실현을 위한 이 해법은 비용이 많이 들 수 있다. 더 낮은 하드웨어 복잡성과 함께 고성능 이득을 제공할 수 있는 진보된 부호화 기술이 아래에 개시 및 기재되어 있다.
터보 프로덕트 코드(TPC)는 LDPC 코드와 비교하여 매우 낮은 하드웨어 복잡성으로 커다란 이득을 제공할 수 있는 진보된 부호화 기술로 고려된다. 하드 판정 디코딩 시에, TPC는 BCH 및 LDPC 코드와 비교하여 커다란 성능 이득을 제공한다. 소프트 판정 디코딩 시에, TPC는 LDPC 코드에 가까운 성능 이득을 달성한다.
그 결과, 터보 프로덕트 코드를 사용하는 시스템에서 성능 및 처리량에 관하여 이득을 제공하기 위한 진보된 부호화 기술이 필요하다.
일부 실시예에서, 본 발명은 도 1에 도시된 데이터 처리 시스템에 적용될 것이다.
도 1은 본 발명의 실시예들이 적용되는 메모리 시스템을 포함하는 데이터 처리 시스템(100)을 예시한다. 도 1에 도시된 데이터 처리 시스템(100)은 예시만을 위한 것이다. 데이터 처리 시스템(100)의 다른 구성이 본 개시내용의 범위로부터 벗어나지 않고 사용될 수 있다. 도 1이 데이터 처리 시스템(100)의 일례를 예시하고 있지만, 도 1에 대해 다양한 변경이 이루어질 수 있다. 예를 들면, 데이터 처리 시스템(100)은 임의의 적절한 배열에서 요소들 중 어느 하나를 포함할 수 있거나 요소들 중 어느 하나를 포함하지 않을 수도 있다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함할 수 있다.
호스트(102)는 예를 들면, 휴대 전화기, MP3 플레이어 및 랩탑(laptop) 컴퓨터와 같은 휴대용 전자 장치 또는 데스크탑 컴퓨터, 게임 플레이어, TV 및 프로젝터와 같은 전자 장치를 포함할 수 있다.
메모리 시스템(110)은 호스트(102)로부터의 요구에 응답하여 동작할 수 있고, 특히 호스트(102)에 의해 액세스되는 데이터를 저장한다. 바꿔 말하면, 메모리 시스템(110)은 호스트(102)의 메인 메모리 시스템 또는 보조 메모리 시스템으로서 사용될 수 있다. 메모리 시스템(110)은 호스트(102)와 전기적으로 결합되는 호스트 인터페이스의 프로토콜에 따라서 다양한 종류의 저장 장치 중 어느 하나로 실현될 수 있다. 메모리 시스템(110)은 고체 상태 드라이브(SSD), 멀티미디어 카드(MMC), 매립형 MMC(eMMC), 축소형(reduced size) MMC(RS-MMC) 및 마이크로-MMC, 시큐어 디지털(SD) 카드, 미니-SD 및 마이크로-SD, 유니버설 시리얼 버스(USB) 저장 장치, 유니버설 플래시 저장(UFS) 장치, 컴팩트 플래시(CF) 카드, 스마트 미디어(SM) 카드, 메모리 스틱 등과 같은 다양한 종류의 저장 장치 중 어느 하나로 실현될 수 있다.
메모리 시스템(110)용의 저장 장치는 동적 랜덤 액세스 메모리(DRAM) 및 정적 랜덤 액세스 메모리(SRAM)와 같은 휘발성 메모리 또는 판독 전용 메모리(ROM), 마스크 ROM(MROM), 프로그램 가능 ROM(PROM), 소거 가능한 프로그램 가능 ROM(EPROM), 전기적으로 소거 가능한 프로그램 가능 ROM(EEPROM), 강유전체 랜덤 액세스 메모리(FRAM), 상 변화 RAM(PRAM), 자기 저항 RAM(MRAM) 및 저항 RAM(RRAM)과 같은 비휘발성 메모리로 실현될 수 있다.
메모리 시스템(110)은 호스트(102)에 의해 액세스되는 데이터를 저장하는 메모리 장치(150) 및 메모리 장치(150) 내에서의 데이터의 저장을 제어하는 제어기(130)를 포함할 수 있다.
제어기(130) 및 메모리 장치(150)는 하나의 반도체 장치 내에 일체화될 수도 있다. 예를 들면, 제어기(130) 및 메모리 장치(150)는 하나의 반도체 장치 내에 일체화되어 고체 상태 드라이브(SSD)를 구성할 수도 있다. 메모리 시스템(110)이 SSD로서 사용되는 경우, 메모리 시스템(110)과 전기적으로 결합되는 호스트(102)의 동작 속도가 크게 증가할 수도 있다.
제어기(130) 및 메모리 장치(150)는 하나의 반도체 장치 내에 일체화되어 메모리 카드를 구성할 수도 있다. 제어기(130) 및 메모리 장치(150)는 하나의 반도체 장치 내에 일체화되어, 퍼스널 컴퓨터 메모리 카드 국제 협회(PCMCIA) 카드, 컴팩트 플래시(CF) 카드, 스마트 미디어(SM) 카드(SMC), 메모리 스틱, 멀티미디어 카드(MMC), RS-MMC 및 마이크로-MMC, 시큐어 디지털(SD) 카드, 미니-SD, 마이크로-SD 및 SDHC, 및 유니버설 플래시 저장(UFS) 장치와 같은 메모리 카드를 구성할 수도 있다.
다른 예에 있어서, 메모리 시스템(110)은 컴퓨터, 울트라 모바일(Ultra-mobile) PC(UMPC), 워크스테이션, 넷북, 개인 디지털 정보단말(PDA), 휴대용 컴퓨터, 웹 태블릿, 태블릿 컴퓨터, 무선 전화기, 휴대 전화기, 스마트폰, 이북(e-book), 휴대용 멀티미디어 플레이어(PMP), 휴대용 게임 플레이어, 내비게이션 장치, 블랙박스, 디지털 카메라, 디지털 멀티미디어 방송(DMB) 플레이어, 3차원(3D) 텔레비전, 스마트 텔레비전, 디지털 오디오 레코더, 디지털 오디오 플레이어, 디지털 영상 레코더, 디지털 영상 플레이어, 디지털 비디오 레코더, 디지털 비디오 플레이어, 데이터 센터를 구성하는 저장장치, 무선 환경 하에서 정보를 송신 및 수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치 중 하나, 텔레매틱스(telematics) 네트워크를 구성하는 다양한 전자 장치 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 부품 구성요소 중 하나를 구성할 수도 있다.
메모리 시스템(110)의 메모리 장치(150)는 전력 공급이 중단될 때 저장된 데이터를 유지할 수 있고, 특히, 기록 동작 동안 호스트(102)로부터 제공되는 데이터를 저장하며, 판독 동작 동안 호스트(102)로 저장된 데이터를 제공할 수 있다. 메모리 장치(150)는 복수의 메모리 블록(152, 154 및 156)을 포함할 수 있다. 각각의 메모리 블록(152, 154 및 156)은 복수의 페이지를 포함할 수 있다. 각각의 페이지는 복수의 워드 라인(WL)이 전기적으로 결합되는 복수의 메모리 셀을 포함할 수 있다. 메모리 장치(150)는 비휘발성 메모리 장치 예를 들면, 플래시 메모리일 수도 있다. 플래시 메모리는 3차원(3D) 스택 구조를 가질 수 있다.
메모리 시스템(110)의 제어기(130)는 호스트(102)로부터의 요구에 응답하여 메모리 장치(150)를 제어할 수 있다. 제어기(130)는 메모리 장치(150)로부터 판독된 데이터를 호스트(102)로 제공할 수 있고, 호스트(102)로부터 제공되는 데이터를 메모리 디바이스(150)에 저장할 수 있다. 이를 위하여, 제어기(130)는 판독, 기록, 프로그램 및 소거 동작과 같은 메모리 장치(150)의 전체 동작을 제어할 수 있다.
상세하게는, 제어기(130)는 호스트 인터페이스 유닛(132), 프로세서(134), 에러 정정 코드(ECC) 유닛(138), 전력 관리 유닛(PMU)(140), 메모리 제어기(MC)(142) 및 메모리(144)를 포함할 수 있다.
호스트 인터페이스 유닛(132)은 호스트(102)로부터 제공되는 명령 및 데이터를 처리할 수 있고, 유니버설 시리얼 버스(USB), 멀티미디어 카드(MMC), 주변 부품 상호연결 - 익스프레스(PCI-E: peripheral component interconnect-express), 시리얼 부착 SCSI(SAS), 시리얼 첨단 기술 부착(SATA: serial advanced technology attachment), 병렬 첨단 기술 부착(PATA), 소형 컴퓨터 시스템 인터페이스(SCSI), 향상된 소형 디스크 인터페이스(ESDI), 및 통합 드라이브 전자장치(IDE: integrated drive electronics)와 같은 다양한 인터페이스 프로토콜 중 적어도 하나를 통해 호스트(102)와 통신할 수 있다.
ECC 유닛(138)은 판독 동작 동안 메모리 장치(150)로부터 판독된 데이터 내의 에러를 검출하여 정정할 수 있다. ECC 유닛(138)은 에러 비트의 수가 정정 가능한 에러 비트의 임계 수보다 크거나 같은 경우 에러 비트를 정정하지 않을 수도 있고, 에러 비트를 정정하는 데 실패한 것을 나타내는 에러 정정 실패 신호를 출력할 수도 있다.
ECC 유닛(138)은 저밀도 패리티 검사(LDPC) 코드, 보스-차우더리-호퀭헴(BCH: Bose-Chaudhuri-Hocquenghem) 코드, 터보 코드, 터보 프로덕트 코드(TPC), 리드-솔로몬(RS: Reed-Solomon) 코드, 콘볼루션(convolution) 코드, 순환 조직 코드(RSC: recursive systematic code), 트렐리스 부호화 변조(TCM: trellis-coded modulation), 블록 부호화 변조(BCM) 등과 같은 부호화 변조에 의겨하여 에러 정정 동작을 수행할 수 있다. ECC 유닛(138)은 에러 정정 동작을 위한 모든 회로, 시스템 또는 장치를 포함할 수 있다.
PMU(140)는 제어기(130)에 대한 전력 즉, 제어기(130)에 포함되는 부품 구성요소에 대한 전력을 제공 및 관리할 수 있다.
MC(142)는 호스트(102)로부터의 요구에 응답하여 제어기(130)가 메모리 장치(150) 수 있도록 하기 위해 제어기(130)와 메모리 장치(150) 사이의 메모리 인터페이스로서의 역할을 할 수 있다. MC(142)는 메모리 장치(150)에 대한 제어 신호를 생성할 수 있고, 프로세서(134)의 제어 하에 데이터를 처리할 수 있다. 메모리 장치(150)는 NAND 플래시 메모리와 같은 플래시 메모리이고, MC(142)는 NAND 플래시 메모리(150)에 대한 제어 신호를 생성할 수 있고 프로세서(134)의 제어 하에 데이터를 처리할 수 있다.
메모리(144)는 제어기(130) 및 메모리 시스템(110)의 작업 메모리로서의 역할을 할 수 있고, 제어기(130) 및 메모리 시스템(110)을 구동시키기 위한 데이터를 저장할 수 있다. 제어기(130)는 호스트(102)로부터의 요구에 응답하여 메모리 장치(150)를 제어할 수 있다. 예를 들면, 제어기(130)는 메모리 장치(150)로부터 판독되는 데이터를 호스트(102)로 제공할 수 있고 호스트(102)로부터 제공되는 데이터를 메모리 장치(150)에 저장할 수 있다. 제어기(130)가 메모리 장치(150)의 동작을 제어할 때, 메모리(144)는 판독, 기록, 프로그램 및 소거 동작과 같은 동작을 위해 메모리 장치(150) 및 제어기(130)에 의해 사용되는 데이터를 저장할 수 있다.
메모리(144)는 휘발성 메모리로 실현될 수 있다. 메모리(144)는 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)로 실현될 수 있다. 상술한 바와 같이, 메모리(144)는 판독 및 기록 동작을 위해 호스트(102) 및 메모리 장치(150)에 의해 사용되는 데이터를 저장할 수 있다. 데이터를 저장하기 위해서, 메모리(144)는 프로그램 메모리, 데이터 메모리, 기록 버퍼, 판독 버퍼, 맵(map) 버퍼 등을 포함할 수 있다.
프로세서(134)는 호스트(102)로부터의 기록 요구 또는 판독 요구에 응답하여 메모리 장치(150)에 대한 기록 동작 또는 판독 동작 및 메모리 시스템(110)의 전반적인 동작을 제어할 수 있다. 프로세서(134)는 메모리 시스템(110)의 전반적인 동작을 제어하기 위해서 플래시 변환 레이어(FTL: flash translation layer)라고 칭해지는 펌웨어를 구동할 수 있다. 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU)로 실현될 수 있다.
관리 유닛(도시하지 않음.)이 프로세서(134)에 포함될 수 있고, 관리 유닛은 메모리 장치(150)의 배드(bad) 블록 관리를 수행할 수 있다. 관리 유닛은 더 사용하기에 불만족스러운 상태에 있는 메모리 장치(150)에 포함되는 배드 메모리 블록을 찾을 수 있고 배드 메모리 블록에 대해 배드 블록 관리를 수행할 수 있다. 메모리 장치(150)가 플래시 메모리 예를 들면, NAND 플래시 메모리인 경우에, 프로그램 고장(failure)이 NAND 로직 함수의 특성으로 인해 기록 동작 동안 예를 들면, 프로그램 동작 동안 발생할 수 있다. 배드 블록 관리 동안, 프로그램 고장 메모리 블록 또는 배드 메모리 블록의 데이터는 새로운 메모리 블록에 프로그램될 수 있다. 또한, 프로그램 고장으로 인한 배드 블록은 3D 스택 구조를 갖는 메모리 장치(150)의 이용 효율 및 메모리 시스템(110)의 신뢰성을 심각하게 저해하므로, 신뢰성 있는 배드 블록 관리가 요구된다.
도 2는 본 발명의 실시예들에 따르는 인코더 및 디코더를 포함하는 메모리 시스템(200)의 블록도이다. 예를 들면, 메모리 시스템(200)은 도 1에 도시되어 있는 메모리 시스템(110)에 대응한다. 명확하게 하기 위해, 본 발명의 실시예들에 직접 관련되는 도 1의 구성요소들은 도 2에서는 도시되지 않을 수 있다.
도 2를 참조하면, 메모리 시스템(200)은 저장장치(210), 기록 제어기(220) 및 판독 제어기(230)를 포함한다. 예를 들면, 저장장치(210)는 도 1에 도시되어 있는 메모리 장치(150)에 대응하고, 기록 제어기(220) 및 판독 제어기(230)는 도 1에 도시되어 있는 ECC 유닛(138)에 대응한다.
저장장치(210)는 NAND 플래시와 같은 고체 상태 저장장치를 포함할 수 있다. 기록 제어기(220)는 도 1의 호스트(102)로부터 데이터를 수신하여 그 데이터를 저장장치(210)에서 처리한다. 판독 제어기(230)는 저장장치(210) 상의 데이터를 판독하여 그 데이터를 처리한다. 각각 TPC 방식용의 구성요소로서, 기록 제어기(220)는 TPC 인코더(222)를 포함하고 판독 제어기(230)는 TPC 디코더(232)를 포함한다.
본 명세서에 기재된 바와 같이, TPC 코드는 Nr 행(row) 코드 및 NC 열(column) 코드를 포함한다. 이들 코드는 모두 아래의 파라미터를 갖는 BCH 코드이다:
행 코드 : (nr, kr, Tr, mr);
열 코드 : (nc, kc, Tc, mc);
XOR 코드 : (nx, kx, Tx, mx);
여기에서 n은 코드의 길이를 나타내고, k는 코드의 차원을 나타내며, T는 코드의 에러 정정 능력을 나타내고, m은 코드의 유한 필드 크기를 나타낸다. 열 패리티를 생성하기 위해 결합된 열의 수는 C#으로 지정되며, 여기에서 C#은 결합된 열의 수이다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따르는 TPC 인코딩 방식을 예시하는 플로우차트이다.
도 4는 데이터의 직사각형 블록의 일례를 나타내는 도면이다.
인코딩 방식은 도 3 및 도 4를 참조하여 이하에 기재된다.
데이터(300)가 직사각형 블록 내에 배치될 수 있다(도 4 참조). 데이터(300)는 행 데이터 및 열 데이터를 포함한다. 제1 행(행 1 내지 R-1)은 구성 코드로 인코딩될 수 있다. 일 실시예에서, 당업자는 본 발명이 그러한 구성 코드의 선택에 제한되지 않는 것으로 이해할 것이며, 제1 행은 구성 코드로서 BCH를 사용하여 인코딩된다.
행 1 내지 (R-1)에 대한 행 패리티(302)가 생성되며, 모든 데이터 비트와 모든 행 패리티의 XOR(즉, 여기서, 모든 행 패리티는 행 1 내지 (R-1)의 패리티를 포함한다)이 취해진다. XOR 비트의 수는 C#으로 제공된다. 행 패리티가 Tr*mr을 포함하고, Tr*mr은 C#의 정수배가 아니기 때문에, 행 패리티는 이들을 C#의 정수배로 만들기 위해 0 채우기 될 수 있다. 예를 들면, 행 피리티 길이가 42이고 C#이 24로서 제공되는 경우, 6 비트가 행 패리티를 48 비트 길이로 만들기 위해 0 채우기 될 수 있고 길이 24의 2개의 블록이 행 패리티로부터 구성될 수 있다.
XOR은 데이터(300) 및 행 패리티(302)에 대해 취해지고 데이터의 마지막 행(406)에 포함된다. 이 XOR은 XOR 패리티 1(360, 450)로 식별될 수 있다. XOR 패리티 1(306, 450)은 C#의 길이를 갖는다.
XOR 패리티 1(306, 450)은 데이터의 마지막 행(406)(예를 들면, 행 R)에 포함되고 마지막 행 패리티(308, 460)이 생성된다. 중요한 것은, 마지막 행 패리티(308, 460)는 XOR 패리티 1(306, 450)을 포함하여 생성된다.
열 패리티(304)는 열들을 결합하여 생성된다. 정해진 수의 열 C(예를 들면, C#)에 있어서, 열 패리티는 열 패리티 1(440), 열 패리티 2(442), 열 패리티 (C-1)(444) 및 열 패리티 C(446)를 포함할 수 있다. 이러한 방식의 예들에서, 열 패리티 (C-1)(444)은 XOR 패리티 1(450)의 포함에 의해 생성되고, 열 패리티 C(446)는 상술한 바와 같이, 행 R 패리티(460)를 포함하는 각각의 행 패리티의 포함과 함께 생성되며, 행 R 패리티는 XOR 패리티 1(450)의 포함과 함께 생성된다. 정정 능력(T) 및 갈로아 필드(Galois field)(m)는 행 및 열 패리티에 대해 동일한 것으로 상정된다.
XOR 패리티 2(310, 470)는 모든 열 패리티 및 마지막 행 패리티에 대한 XOR을 취하여 생성될 수 있다. XOR 패리티 3(310, 470)의 길이가 Tr*mr(=Tc*mc)로서 제공된다. 단순화를 위해, Tr*mr=Tc*mc인 것으로 상정된다. Tr*mr≠Tc*mc인 경우, XOR 패리티 2(310, 470)를 생성하기 위해 0 채우기가 사용될 수 있다.
다른 구성 코드가 XOR 패리티 2(310, 470)에 적용될 수 있으며 그 코드 파라미터는 (nx, kx, Tx, mx)(예를 들면, XOR 패리티 2(312, 480) 상의 패리티)로서 제공된다. 일반적으로, XOR 패리티 2에 대한 이 BCH 코드의 갈로아 필드는 상당히 작으므로, 이 코드에 대한 인코딩/디코딩의 복잡성이 최소화된다. 주의해야 할 점은 XOR 패리티 2의 이 패리티가 NAND 상에만 기록된다는 것이다. 이러한 방식으로, 패리티가 XOR 패리티 2를 기록하지 않음으로써 세이브될 수 있다. 이 방식의 패리티 오버헤드는 아래와 같이 제공된다,
제안된 방식의 총 패리티 = Tr*mr+Tc*mc+C#+Tx*mx
행 및 열 패리티 이외의 XOR 패리티 오버헤드(C#+Tx*mx)는 이전에 실현된 방식에 비해 상당히 작다. 따라서 이 방식은 다른 방식에 비해 큰 성능 이득을 갖는다.
도 5 내지 도 10을 참조하면, 상기 개시된 인코딩 방식에 대한 다양한 디코딩 프로세스가 기재되어 있다. 디코딩 절차는 데이터가 연속적으로 디코딩될 때까지 또는 반복 횟수가 최대 반복 횟수를 초과할 때까지 반복 루프에서 열 디코딩이 행 디코딩에 후속하는 규칙적인 TPC 디코딩과 유사하다. 에러 패턴의 가중이 작은 경우에도 디코딩 시에 갇힘이 생기는 특정 에러 패턴이 존재한다.
도 5 내지도 8에서는, (1,1) 갇힌 에러 패턴이 도시되어 있다. (1,1) 갇힌 에러 패턴은 정확하게 하나의 행 및 하나의 열 결함이 존재하는 갇힌 에러 패턴이다. 도 9a 및 도 9b에서는, 2개의 행 및 2개의 열 결함이 존재하는 (2,2) 갇힌 에러 패턴이 도시되어 있다. 도 10에서는, (0,2) 갇힌 에러 패턴이 도시되어 있다.
도 5에서는, 디코딩 시에 갇힘이 생길 수 있는 에러 패턴(500)이 도시되어 있다. 이 예에서는, 행 및 열 코드의 정정 능력이 2와 같다고 상정된다. 에러 패턴(500)의 가중이 4인 경우에도, 디코딩 시에 갇힘이 생긴다. 이 에러 패턴(500)은 XOR 패리티 1(450)을 사용하여 정정될 수 있다. 행/열 교차부는 결함 행 및 결함 열이 알려져 있기 때문에 알려져 있다. 먼저, XOR이 모든 데이터의 결함 행/열 교차부를 제외하고 행 패리티 및 XOR 패리티 1에 행해진다. 이러한 생성된 XOR 패리티가 결함 행/열 교차부를 대체할 수 있어 행/열 교차부 내의 모든 에러 비트를 정정한다.
유사하게, 도 6에서는, 갇힌 에러 패턴(600)이 도시되어 있다. 갇힌 에러 패턴(600)은 행 패리티 부분에 존재한다. 도 5에 대하여 상술한 바와 같은 디코딩 프로세스를 사용하면, 갇힌 에러 패턴(600)이 또한 정정될 수도 있다.
도 7에서는, R번째 행 패리티에 존재하는 갇힌 에러 패턴(700)이 도시되어 있다. 이 패턴(700)을 정정하기 위해서, XOR 패리티 2가 R번째 행 패리티 및 모든열 패리티의 XOR을 행함으로써 얻어지는 디코딩 종료 시에 생성될 수 있다. BCH 디코딩은 이 XOR 패리티 2 상에서 실행되어 XOR 패리티 2 상의 BCH가 큰 정정 능력을 가지기 때문에 모든 에러를 정정한다. 정확한 XOR 패리티 2가 얻어지면, 이 패리티가 갇힌 에러 패턴(700)을 정정하는 데 사용될 수 있다.
도 8에서는, 갇힌 에러 패턴(800)이 열 패리티 부분에 도시되어 있으며, 이것도 또한 도 7에 대해 상술한 프로세스로 정정될 수 있다. 그와 같이, 존재하는 모든 (1,1) 갇힌 에러 패턴이 디코딩 절차에서 디코딩될 수 있다.
이어서, 도 9a를 참조하면, (2,2) 갇힌 에러 패턴이 도시되어 있다. 즉, 데이터는 에러 패턴(900) 및 에러 패턴(902)을 포함한다. XOR 패리티 1 및 XOR 패리티 2는 이러한 갇힌 에러 패턴(900, 902)을 정정하는 데 사용될 수 없다. 도 9a에서는, C#이 6과 같은 예가 단순화를 위해 도시되어 있다. 그 목표는 대부분의 문제가 있는 에러 위치를 식별함으로써 이러한 갇힌 에러 패턴(900, 902)을 정정하기 위함이다. 에러 위치가 알려지면, 간단한 플립핑(flipping) 알고리즘이 이러한 갇힌 에러 패턴(900, 902)을 정정하는 데 사용될 수 있다. 도 9a에서는, 갇힌 에러 패턴은 행 및 열 교차부 내의 상이한 위치에서 발생하는 6개의 에러를 갖는다.
정확한 XOR 패리티 1이 알려짐에 따라, 모든 데이터 및 행 패리티(1 내지 (R-1) 행)의 XOR이 찾아질 수 있어 XOR 패리티 1과 비교될 수 있다. XOR 패리티 1은 최대 6개의 위치에서 이들 계산된 XOR 패리티와 상이하다. 에러의 현재 위치가 알려져 있지만, 행/열 교차부에서의 에러의 정확한 위치는 아니다.
도 9b에 도시된 바와 같이, (2,2) 갇힌 에러 패턴에서는, 에러를 가질 수도 있는 4개의 행/열 교차부(910, 912, 914, 916)가 존재한다. 비트 플립핑 프로세스(예를 들면, 체이스(Chase) 디코딩)가 사용될 수 있고, 여기에서 비트들이 XOR 패리티 1에 의해 결정되는 에러 비트 위치에서 플롭핑된다(flopped). 체이스 디코딩 시에, 모든 2^flip_bits가 시도되며, 여기에서 flip_bits는 저장된 xor와 데이터 계산된 xor로부터 검출되는 플립핑된 다수의 비트이다.
본 발명의 다른 예에서는, 플립_비트 중 하나의 비트(예를 들면, nchoosek(flip_bits, 1))가 선택되며, 이 비트 플립은 모든 결함이 있는 n*m 갇힌 에러 교차부에서 시도된 후 디코딩이 시도된다. 이어서, n*m 결함이 있는 갇힌 에러 패턴에 대한 nchoosek(flip_bits, 2)가 시도되며, 이 프로세스(예를 들면, nchoosek(flip_bits, flip_bits))가 모든 n*m 결함이 있는 갇힌 에러 패턴에 대해 반복된다. 에러 교차부 외부에 더 많은 에러를 도입하는 것을 피하기 위해 결함이 있는 교차부 내부에서 모든 정정이 행해져야 한다.
첫 번째 실행 시에, 6개의 에러 위치 비트 중에서 단일 비트가 모두 4개의 행/열 교차부(910, 912, 914, 916)에서 플립핑될 수 있다. 1 비트 플립핑 후에, 결함 행/열 디코딩에 대해 규칙적인 디코딩이 사용될 수 있다. 디코딩하는 동안, BCH 디코딩 동안 디코딩되는 비트가 행/열 결함 교차부 내에 있어야 하는 것을 보증한다. 이 방식으로, 오정정이 TPC 구조에 도입되지 않는다.
도 9a에 도시된 에러 패턴에서는, 제1 행/열 교차부 내의 1 비트 플립이 불충분하다. 제2 행/열 교차부가 그 후 1 비트 플립핑으로 처리되며, 이것은 행 코드를 디코딩할 뿐만 아니라 열 코드를 만족한다. 하나의 행/열 교차부 내의 에러가 정정되면, 갇힌 에러 패턴은 XOR 패리티 1을 사용하여 쉽게 정정될 수 있는 (1,1) 에러 패턴이 된다.
이 패턴은 모든 결함이 있는 행/열 교차부 내의 모든 단일 비트 플립을 시도하여 패턴이 디코딩되지 않는 경우 일반적으로 단일 비트 플립으로 디코딩된다. 2 비트 및 그 이상의 비트 플립이 결함이 있는 행/열 교차부에 대해 시도될 수 있다.
도 9a 및 도 9b에서는, C#의 값은 6과 같다. 그러나, 규칙적인 TPC 코드 설계에서는, C#의 값은 더 크다. 그러한 종류의 시나리오에서는, 개시된 플립핑 알고리즘으로부터의 이점이 랜덤 비트 플립핑 프로세서와 실질적인 비교가 된다. 랜덤 비트 플립핑과 달리, 대부분의 문제가 있는 에러 위치가 XOR 패리티 1 및 XOR 패리티 2의 도움으로 알려져 있고, 이것이 제안된 방식을 적산하는(integrating) 복잡성을 크게 감소시킨다. 상기 개시된 방식은 n 행 및 n 열이 결함이 있는 (n,n) 갇힌 에러 패턴에 대해 쉽게 일반화될 수 있다. 그러나, 복잡성은 n의 값이 큰 경우 증가한다. 그러므로, 하드웨어 복잡성 내에서 패턴은 이 제안된 방식을 사용하여 정정된다.
이어서, 도 10을 참조하면, (0,2)의 대체 에러 패턴이 도시되어 있다. (0,k) 갇힌 에러 패턴을 디코딩하는 대체 방법은 또한 디코딩의 단순화를 위해 행해질 수 있다. (0,k) 갇힌 에러 패턴(예컨대, 1000, 1002)에서는, 모든 행이 정정되고, k 열이 결함이 있다. 이 패턴은 정정되는 데이터를 사용하여 정정될 수 있다. 데이터의 정정은 XOR 패리티 1 및 행 패리티를 통해 검증된다. (k-1) 열 패리티는 데이터를 통해 생성될 수 있고 마지막 결함이 있는 열 패리티가 XOR 패리티 2를 통해 생성될 수 있다. 정정된 k번째 열 패리티는 k번째 열 데이터로부터 검증될 수 있다. k번째 열 데이터의 패리티가 정정된 k번째 패리티와 일치하는 경우, TPC가 성공적으로 디코딩된 것으로 표명된다. XOR 패리티 2의 정정 능력은 매우 크지 않으므로 이 절차는 (0,k) 갇힌 에러 패턴을 디코딩하는 데 적용될 수 있다. 도 10에 도시되는 갇힌 에러 패턴(1000, 1002)은 상술한 방식에 의해 정정될 수 있다. 일반적으로, (0,k) 발생 확률은 매우 낮으므로 제안된 방식이 디코딩에 드물게 사용된다.
(n,n) 및 (0,k)의 에러 코드 패턴을 디코딩하는 것이 개시되어 있지만, 본 명세서에 기재되어 있는 프로세스들은 또한 (n,m), (m,n) 등의 에러 코드 패턴을 디코딩하기 위한 기능을 할 수도 있다.
추가의 설명을 위해, n 행 및 m 열이 결함이 있는 (n,m) 결함이 있는 패턴의 디코딩이 아래와 같이 수행될 수 있다. 먼저, 모든 데이터 및 행 패리티의 XOR이 계산되어 저장된 패리티(예를 들면, XOR_data)와 비교된다. XOR_data가 수신되면, 이것이 에러 비트 위치를 찾기 위해 XOR_stored와 비교된다. 에러 비트 위치는 현재 알려져 있지만, 이들 에러가 n*m 결함 교차부 내에 있는 위치가 결정될 필요가 있다. 그와 같이, 상기 비교로부터 밝혀진 에러 비트가 취해지고 이들 비트는 모든 n*m 결함 교차부에서의 특정 위치에서 플립핑된다. 구성 코드워드가 디코딩되고 모든 정정이 결함이 있는 구성 코드워드 내에서 행해지면, 정정이 적용된다. 대응하는 열 코드워드를 정정하려고 시도하고 결함 교차부에서 모든 정정이 행해짐으로써 임의의 행 코드워드가 플립핑 비트를 통해 정정되는지 여부에 대해 추가의 검사가 수행될 수 있다. 이들 비트 플립핑은 XOR_data 및 XOR_stored로부터 일치하지 않는 비트의 수에 따라서 동시에 1 에러 비트, 2 에러 비트, 3 에러 비트 등을 취하여 행해질 수 있다.
또한, (0,k) 에러 패턴에 대해, 디코딩 프로세스가 아래와 같이 수행될 수 있다. 모든 행이 지나가고 XOR_stored가 데이터 및 행 패리티에 대해 계산된 XOR와 일치하는 경우, 'k' 결함 열 코드워드가 대응하는 k 열 패리티를 얻기 위해 인코딩된다. 이 경우에, 모든 에러가 패리터 내에 있고, 이 방법으로 생성되는 패리티의 정정은 XOR 패리티 2를 통해 확인될 수 있다.
상기 개시된 방식의 성능을 측정하여 2K BCH 코드와 비교하였다. 상기 개시된 방식에 의거하여 구성된 TPC 코드의 값을 테스트하였다:
데이터 길이 = 32864.
허용되는 패리티 = 308 바이트.
행 코드 : (nr,kr,Tr,mr)=(1310,1266,4,11).
열 코드 : (nc,kc,Tc,mc)=(1318,1274,4,11).
Nr = 26, Nc = 27 및 C# = 49.
XOR 패리티 2 상의 코드 : (nx,kx,Tx,mx)=(121,44,11,7).
성능은 도 11에 도시되어 있다. 도 11의 그래프는 2k BCH(1102) 및 상술한 바와 같은 방식(1104)의 성능을 도시한다. 코드 설계에서의 관측은 갈로아 필드(m) 및 정정 능력(T)을 갖는 코드가 현저하게 짧은 비트가 적합하게 된 (11,4)와 같다는 것이다. 정정 능력이 더 크면 오정정 가능성이 감소하고 단축 비트는 오정정 검출에 사용될 수 있다. BCH 디코딩 동안 단축 비트에서 플립핑된 비트가 있는 경우, BCH 디코더가 코드워드를 오정정하여 이 오정정이 TPC 디코딩 시에 회피될 수 있다는 것이 알려져 있다.
본 발명은 특히 그 예시적인 실시예를 참조하여 도시 및 기재되어 있지만, 당업자는 여러가지 형태 및 상세의 변경이 아래의 특허청구범위에 의해 한정된 바와 같은 본 발명의 사상 및 범위로부터 벗어남 없이 본 명세서에서 이루어질 수 있다는 것을 이해할 것이다. 그러므로, 이상은 단지 예일 뿐이고 제한하고자 의도된 것은 아니다. 예를 들면, 본 명세서에 예시되고 기재되어 있는 임의의 수의 요소들은 단지 예일 뿐이다. 본 발명은 아래의 특허청구범위 및 그 등가물에 한정된 것으로서만 제한된다.

Claims (14)

  1. 데이터 블록 내의 데이터를 인코딩하는 방법으로서,
    상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR로부터 제1 XOR 패리티를 생성하는 단계;
    상기 마지막 행에 상기 제1 XOR 패리티를 저장하는 단계; 및
    상기 데이터 블록 내의 모든 열의 모든 열 패리티의 XOR 및 상기 마지막 행의 패리티의 XOR로부터 제2 XOR 패리티를 생성하는 단계를 포함하는 데이터 인코딩 방법.
  2. 제1항에 있어서,
    상기 제2 XOR 패리티의 패리티를 생성하도록 상기 제2 XOR 패리티에 구성 코드를 적용하는 단계를 더 포함하는 데이터 인코딩 방법.
  3. 제1항에 있어서,
    상기 행 패리티의 길이가 상기 데이터 블록 내의 다수의 열의 정수 배가 되도록 상기 행 패리티를 0 채우기(zero padding)하는 단계를 더 포함하는 데이터 인코딩 방법.
  4. 제1항에 있어서,
    상기 데이터 내의 갇힌(stuck) 에러 패턴을 디코딩하는 단계를 더 포함하는 데이터 인코딩 방법.
  5. 제4항에 있어서,
    상기 디코딩하는 단계는,
    상기 갇힌 에러 패턴을 포함하는 결함 행/열 교차부로부터는 제외하고 상기 데이터, 행 패리티 및 상기 제1 XOR 패리티로부터 제3 XOR 패리티를 생성하는 단계; 및
    생성된 상기 제3 XOR 패리티에 기초하여 상기 갇힌 에러 패턴 내의 비트를 플립핑함으로써 상기 갇힌 에러 패턴을 정정하는 단계를 포함하는 데이터 인코딩 방법.
  6. 제4항에 있어서,
    상기 디코딩하는 단계는,
    상기 제1 XOR 패리티를 상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 상기 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR와 비교함으로써 상기 갇힌 에러 패턴을 갖는 상기 데이터 블록 내의 행/열 교차부를 결정하는 단계; 및
    결정된 상기 행/열 교차부 내의 비트를 비트-플립핑함으로써 상기 갇힌 에러 패턴 내의 에러 비트의 위치를 결정하는 단계를 더 포함하는 데이터 인코딩 방법.
  7. 제1항에 있어서,
    갇힌 에러 패턴은 (n,m) 갇힌 에러 패턴 또는 (0,k) 갇힌 에러 패턴 중 적어도 하나인 데이터 인코딩 방법.
  8. 데이터 블록 내의 데이터를 인코딩하는 장치로서,
    상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR로부터 제1 XOR 패리티를 생성하고;
    상기 마지막 행에 상기 제1 XOR 패리티를 저장하며;
    상기 데이터 블록 내의 모든 열의 모든 열 패리티의 XOR 및 상기 마지막 행의 패리티의 XOR로부터 제2 XOR 패리티를 생성하도록 구성된 인코더를 포함하며,
    상기 데이터는 상기 제1 XOR 패리티 및 상기 제2 XOR 패리티에 기초하여 인코딩되는 데이터 인코딩 장치.
  9. 제8항에 있어서,
    상기 인코더는 또한, 상기 제2 XOR 패리티의 패리티를 생성하도록 상기 제2 XOR 패리티에 구성 코드를 적용하도록 구성되는 데이터 인코딩 장치.
  10. 제8항에 있어서,
    상기 인코더는 또한, 상기 행 패리티의 길이가 상기 데이터 블록 내의 다수의 열의 정수 배가 되게 하기 위해 상기 행 패리티를 0 채우기(zero padding)하도록 구성되는 데이터 인코딩 장치.
  11. 제8항에 있어서,
    상기 데이터 내의 갇힌 에러 패턴을 디코딩하도록 구성되는 디코더를 더 포함하는 데이터 인코딩 장치.
  12. 제11항에 있어서,
    상기 디코더는,
    상기 갇힌 에러 패턴을 포함하는 결함 행/열 교차부로부터는 제외하고 상기 데이터, 행 패리티 및 상기 제1 XOR 패리티로부터 제3 XOR 패리티를 생성하고; 및
    생성된 상기 제3 XOR 패리티에 기초하여 상기 갇힌 에러 패턴 내의 비트를 플립핑함으로써 상기 갇힌 에러 패턴을 정정하는 것에 의해,
    상기 갇힌 에러 패턴을 디코딩하도록 구성되는 데이터 인코딩 장치.
  13. 제11항에 있어서,
    상기 디코더는,
    상기 제1 XOR 패리티를 상기 데이터 블록 내의 모든 데이터 비트의 XOR 및 상기 마지막 행 외의 상기 데이터 블록 내의 모든 행의 모든 행 패리티의 XOR와 비교함으로써 상기 갇힌 에러 패턴을 갖는 상기 데이터 블록 내의 행/열 교차부를 결정하고; 및
    결정된 상기 행/열 교차부 내의 비트를 비트-플립핑함으로써 상기 갇힌 에러 패턴 내의 에러 비트의 위치를 결정하는 것에 의해,
    상기 갇힌 에러 패턴을 디코딩하도록 구성되는 데이터 인코딩 장치.
  14. 제8항에 있어서,
    갇힌 에러 패턴은 (n,m) 갇힌 에러 패턴 또는 (0,k) 갇힌 에러 패턴 중 적어도 하나인 데이터 인코딩 장치.
KR1020160165024A 2015-12-08 2016-12-06 Nand 플래시용 터보 프로덕트 코드 KR20170067656A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/962,818 US9673840B2 (en) 2014-12-08 2015-12-08 Turbo product codes for NAND flash
US14/962,818 2015-12-08

Publications (1)

Publication Number Publication Date
KR20170067656A true KR20170067656A (ko) 2017-06-16

Family

ID=59283833

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160165024A KR20170067656A (ko) 2015-12-08 2016-12-06 Nand 플래시용 터보 프로덕트 코드

Country Status (1)

Country Link
KR (1) KR20170067656A (ko)

Similar Documents

Publication Publication Date Title
US9673840B2 (en) Turbo product codes for NAND flash
US10388400B2 (en) Generalized product codes for flash storage
US10700706B2 (en) Memory system with decoders and method of operating such memory system and decoders
US9984771B2 (en) Multi-level raid-type encoding with random correction capability
US9977713B2 (en) LDPC decoder, semiconductor memory system and operating method thereof
KR102108386B1 (ko) 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
US10445175B2 (en) Controller and operating method thereof
US10484008B2 (en) Memory system with on-the-fly error detection and termination and operating method thereof
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US10135464B2 (en) Reliability-assisted bit-flipping decoding algorithm
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US10200063B2 (en) Memory controller, semiconductor memory system and operating method thereof
US10514980B2 (en) Encoding method and memory storage apparatus using the same
KR20180123393A (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
US10348335B2 (en) Miscorrection avoidance for turbo product codes
US9954556B2 (en) Scheme to avoid miscorrection for turbo product codes
US10396825B2 (en) Memory controller, semiconductor memory system and operating method thereof
US9906241B2 (en) Apparatus and method for turbo product codes
US10528496B2 (en) Controller and operating method thereof
KR20170067656A (ko) Nand 플래시용 터보 프로덕트 코드
US11689216B1 (en) Low gate-count generalized concatenated code (GCC) by online calculation of syndromes instead of buffer
KR20190132877A (ko) 컨트롤러 및 그것의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal