KR20170028160A - 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법 - Google Patents

에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20170028160A
KR20170028160A KR1020150125052A KR20150125052A KR20170028160A KR 20170028160 A KR20170028160 A KR 20170028160A KR 1020150125052 A KR1020150125052 A KR 1020150125052A KR 20150125052 A KR20150125052 A KR 20150125052A KR 20170028160 A KR20170028160 A KR 20170028160A
Authority
KR
South Korea
Prior art keywords
data set
decoding
data
soft decision
decoding scheme
Prior art date
Application number
KR1020150125052A
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
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020150125052A priority Critical patent/KR20170028160A/ko
Priority to US15/005,237 priority patent/US20170070240A1/en
Publication of KR20170028160A publication Critical patent/KR20170028160A/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/2948Iterative decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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/2933Coding, 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 a block and a convolutional code

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Error Detection And Correction (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

본 발명의 실시 예에 따른 반도체 메모리 장치는 컨트롤러 및 반도체 메모리 장치를 포함한다. 컨트롤러는 연판정 비트열들을 제 1 디코딩 방식에 따라 디코드하여 데이터 셋을 감지하도록 구성되는 연판정 디코더, 감지된 데이터 셋을 디인터리브하도록 구성되는 디인터리버, 디인터리브된 데이터 셋에 포함된 패리티 비트들을 참조하여 디인터리브된 데이터 셋을 제 2 디코딩 방식에 따라 디코드하되 제 2 디코딩 방식에 따른 디코드가 페일될 때 페일된 데이터 셋을 출력하도록 구성되는 경판정 디코더, 그리고 페일된 데이터 셋을 인터리브하도록 구성되는 인터리버를 포함한다. 인터리브된 데이터 셋은 연판정 디코더로 피드백된다.

Description

에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법{MEMORY SYSTEM INCLUDING ERROR CORRECTOR AND OPERATING METHOD THEREOF}
본 출원은 전자 장치에 관한 것으로, 좀 더 구체적으로는 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 플래시 메모리는 크게 노어 타입과 낸드 타입으로 구분된다.
본 출원의 실시 예는 향상된 에러 정정 성능을 갖는 메모리 시스템 및 그것의 동작 방법을 제공하기 위한 것이다.
본 발명의 실시 예에 따른 메모리 시스템은, 컨트롤러; 및 메인 데이터 비트들과 패리티 비트들을 갖는 데이터 셋을 저장하되, 상기 컨트롤러의 제어에 응답하여 상기 데이터 셋에 대응하는 연판정(soft decision) 비트열들을 제공하도록 구성되는 반도체 메모리 장치를 포함한다. 상기 컨트롤러는, 상기 연판정 비트열들을 제 1 디코딩 방식에 따라 디코드하여 상기 데이터 셋을 감지하도록 구성되는 연판정 디코더; 상기 감지된 데이터 셋을 디인터리브하도록 구성되는 디인터리버; 상기 디인터리브된 데이터 셋에 포함된 상기 패리티 비트들을 참조하여 상기 디인터리브된 데이터 셋을 제 2 디코딩 방식에 따라 디코드하되, 상기 제 2 디코딩 방식에 따른 상기 디코드가 페일될 때 페일된 데이터 셋을 출력하도록 구성되는 경판정(hard decision) 디코더; 및 상기 페일된 데이터 셋을 인터리브하도록 구성되는 인터리버를 포함한다. 상기 인터리브된 데이터 셋은 상기 연판정 디코더로 피드백된다.
실시 예로서, 상기 연판정 디코더는 상기 인터리브된 데이터 셋을 참조하여 상기 연판정 비트열들을 다시 디코드할 수 있다.
실시 예로서, 상기 연판정 디코더, 상기 디인터리버, 상기 경판정 디코더, 및 상기 인터리버는 하나의 피드백 루프에 포함될 수 있다.
실시 예로서, 상기 페일된 데이터 셋은 상기 데이터 셋과 동일한 사이즈를 가질 수 있다.
실시 예로서, 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스될 때 상기 메인 데이터 비트들이 획득되고, 상기 경판정 디코더는 상기 메인 데이터 비트들을 호스트 데이터로서 출력할 수 있다.
실시 예로서, 상기 디인터리브된 데이터 셋은 복수의 데이터 블록들로 구분되고, 상기 제 2 디코딩 방식에 따른 상기 디코드는 데이터 블록 단위로 수행되고, 상기 페일된 데이터 셋은 상기 제 2 디코딩 방식에 따른 상기 디코드가 페일된 데이터 블록 및 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스된 데이터 블록을 포함할 수 있다.
실시 예로서, 상기 경판정 디코더는 상기 복수의 데이터 블록들에 각각 대응하는 플래그 정보들을 더 출력할 수 있다. 상기 플래그 정보들 각각은, 해당 데이터 블록에 대해 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스되었는지 페일되었는지 여부를 나타낸다.
실시 예로서, 상기 연판정 디코더는 상기 플래그 정보들과 상기 인터리브된 데이터 셋을 참조하여, 상기 연판정 비트열들을 다시 디코드할 수 있다.
실시 예로서, 상기 반도체 메모리 장치는 상기 컨트롤러의 제어에 응답하여 읽기 리트라이를 수행함으로써 상기 데이터 셋에 대응하는 제 2 연판정 비트열들을 상기 컨트롤러에 출력하고, 상기 리드 리트라이의 수행은 상기 제 1 디코딩 방식에 따른 상기 디코드, 상기 디인터리브, 상기 제 2 디코딩 방식에 따른 상기 디코드, 상기 인터리브 중 적어도 하나와 병렬적으로 수행될 수 있다.
실시 예로서, 상기 연판정 디코더는 상기 인터리브된 데이터 셋을 참조하여 상기 제 2 연판정 비트열들을 상기 제 1 디코딩 방식에 따라 디코드할 수 있다.
실시 예로서, 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스될 때, 상기 컨트롤러는 상기 제 2 연판정 비트열들을 폐기할 수 있다.
실시 예로서, 상기 제 1 디코딩 방식은 컨볼루션 코드에 해당할 수 있다.
실시 예로서, 상기 제 1 디코딩 방식은 LDPC 코드에 해당할 수 있다.
실시 예로서, 상기 제 2 디코딩 방식은 리드 솔로몬 코드에 해당할 수 있다.
실시 예로서, 상기 제 2 디코딩 방식은 BCH 코드에 해당할 수 있다.
실시 예로서, 상기 컨트롤러는, 호스트 데이터를 상기 제 2 디코딩 방식에 대응하는 제 2 인코딩 방식으로 인코드하여 상기 패리티 비트들을 생성하도록 구성되는 경판정 인코더; 및 상기 호스트 데이터와 상기 패리티 비트들을 인터리브하여 상기 데이터 셋을 생성하도록 구성되는 제 2 인터리버를 포함한다. 상기 데이터 셋은 상기 제 1 디코딩 방식에 대응하는 제 1 인코딩 방식으로 인코드되어 상기 반도체 메모리 장치에 저장될 것이다.
본 발명의 다른 일면은 반도체 장치의 동작 방법에 관한 것이다. 본 발명의 실시 예에 따른 반도체 장치의 동작 방법은, 데이터 셋에 대응하는 연판정 비트열들을 제공하되, 상기 데이터 셋은 메인 데이터 비트들과 패리티 비트들을 갖는 단계; 상기 연판정 비트열들을 제 1 디코딩 방식에 따라 디코드하여 상기 데이터 셋을 감지하는 단계; 상기 감지된 데이터 셋을 디인터리브하는 단계; 상기 디인터리브된 데이터 셋의 상기 패리티 비트들을 참조하여 상기 디인터리브된 데이터 셋을 제 2 디코딩 방식에 따라 디코드하는 단계; 상기 제 2 디코딩 방식에 따른 상기 디코드가 페일될 때, 페일된 데이터 셋을 출력하는 단계; 상기 페일된 데이터 셋을 인터리브하는 단계; 및 상기 인터리브된 데이터 셋을 참조하여, 상기 제 1 디코딩 방식에 따른 상기 디코드를 재수행하는 단계를 포함한다.
실시 예로서, 상기 디인터리브하는 단계, 상기 제 2 디코딩 방식에 따라 디코드하는 단계, 상기 페일된 데이터 셋을 출력하는 단계, 상기 인터리브하는 단계, 및 상기 제 1 디코딩 방식에 따른 상기 디코드를 재수행하는 단계는 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스될 때까지 반복될 수 있다.
실시 예로서, 상기 페일된 데이터 셋은 상기 데이터 셋과 동일한 사이즈를 가질 수 있다.
실시 예로서, 상기 동작 방법은 상기 데이터 셋에 대응하는 제 2 연판정 비트열들을 제공하는 단계를 더 포함할 수 있다. 이때 상기 제 2 연판정 비트열들을 제공하는 단계는 상기 제 1 디코딩 방식에 따라 디코드하는 단계, 상기 디인터리브하는 단계, 상기 제 2 디코딩 방식에 따라 디코드하는 단계, 상기 페일된 데이터 셋을 출력하는 단계, 및 상기 인터리브하는 단계 중 적어도 하나와 병렬적으로 수행될 수 있다.
실시 예로서, 상기 제 1 디코딩 방식에 따른 상기 디코드를 재수행하는 단계는, 상기 인터리브된 데이터 셋을 참조하여, 상기 제 2 연판정 비트열들을 상기 제 1 디코딩 방식에 따라 디코드하는 단계를 포함할 수 있다.
본 출원의 실시 예에 따르면, 향상된 에러 정정 성능을 갖는 메모리 시스템 및 그것의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 에러 정정기를 보여주는 블록도이다.
도 3은 도 2의 인코딩부를 보여주는 블록도이다.
도 4는 호스트 데이터를 인코딩하는 과정을 설명하기 위한 개념도이다.
도 5는 도 2의 디코딩부를 보여주는 블록도이다.
도 6은 본 발명의 실시 예에 따른 디코딩 방법을 보여주는 순서도이다.
도 7은 디코딩 방법에 따라 처리되는 데이터를 개념적으로 보여주는 도면이다.
도 8은 디인터리브된 데이터 셋 및 페일된 데이터 셋을 보여주는 개념도이다.
도 9는 플래그 정보를 보여주는 개념도이다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 보여주는 순서도이다.
도 11은 도 1의 컨트롤러를 구현하기 위한 일 실시 예를 보여주는 블록도이다.
도 12는 도 1의 반도체 메모리 장치를 보여주는 블록도이다.
도 13은 도 1의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 14는 도 13을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(50)을 보여주는 블록도이다.
메모리 시스템(50)은 반도체 장치이며, 도 1을 참조하면 메모리 시스템(50)은 반도체 메모리 장치(100) 및 컨트롤러(200)를 포함한다.
반도체 메모리 장치(100)는 컨트롤러(200)의 제어에 응답하여 동작한다. 반도체 메모리 장치(100)는 데이터를 저장하기 위한 복수의 메모리 셀들을 포함한다. 복수의 메모리 셀들은 비휘발성 메모리 셀들일 수 있다.
반도체 메모리 장치(100)는 컨트롤러(200)의 제어에 응답하여 동작한다. 반도체 메모리 장치(100)는 컨트롤러(200)의 제어에 응답하여, 복수의 메모리 셀들에 대해 프로그램 동작, 읽기 동작, 및 소거 동작을 수행하도록 구성된다. 실시 예로서, 반도체 메모리 장치(100)의 읽기 동작 및 프로그램 동작은 페이지 단위로 수행될 수 있다. 반도체 메모리 장치(100)의 소거 동작은 메모리 블록 단위로 수행될 수 있다.
반도체 메모리 장치(100)는 불휘발성(nonvolatile) 메모리 장치이다. 실시 예로서, 반도체 메모리 장치(100)는 플래시 메모리 장치(Flash Memory Device)일 수 있다.
컨트롤러(200)은 반도체 메모리 장치(100)의 제반 동작을 제어한다. 컨트롤러(200)는 호스트(Host)로부터의 요청에 응답하여 반도체 메모리 장치(100)를 액세스하도록 구성된다.
컨트롤러(200)는 반도체 메모리 장치(100)의 프로그램 동작, 읽기 동작, 소거 동작, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(1200)는 반도체 메모리 장치(100) 및 호스트(Host) 사이의 인터페이스를 제공하도록 구성된다. 컨트롤러(200)는 반도체 메모리 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
실시 예로서, 컨트롤러(200)는 플래시 변환 레이어(Flash Translation Layer, FTL)의 기능을 수행한다. 컨트롤러(200)는 호스트(Host)에 대응하는 논리 블록 어드레스(Logical Block Address)와 반도체 메모리 장치(100)에 대응하는 물리 블록 어드레스(Physical Block Address) 사이의 매핑 관계를 포함하는 맵 테이블을 관리할 수 있다. 컨트롤러(200)는 그러한 맵 테이블을 참조하여 호스트(Host)로부터 수신된 논리 블록 어드레스를 물리 블록 어드레스로 변환할 것이다.
호스트(Host)가 읽기 요청(request)을 전송할 때, 컨트롤러(200)는 읽기 요청에 포함된 논리 블록 어드레스를 물리 블록 어드레스로 변환할 것이다. 컨트롤러(200)는 읽기 커맨드, 그리고 변환된 물리 블록 어드레스를 반도체 메모리 장치(100)에 제공함으로써 물리 블록 어드레스에 해당하는 메모리 셀들에 대해 읽기 동작을 수행하도록 반도체 메모리 장치(100)를 제어할 것이다. 실시 예로서, 연판정(soft decision)을 위한 다수의 읽기 커맨드들 및 그에 대응하는 물리 블록 어드레스들이 반도체 메모리 장치(100)에 제공될 수 있다.
읽기 커맨드에 응답하여, 반도체 메모리 장치(100)는 물리 블록 어드레스에 대응하는 메모리 셀들로부터 데이터를 읽고, 읽어진 데이터를 컨트롤러(200)에 전송한다.
컨트롤러(200)는 에러 정정기(210)를 포함한다. 에러 정정기(210)는 읽어진 데이터에 포함된 에러를 정정하도록 구성된다. 에러 정정기(210)는 에러 정정 코드(Error Correction Code)에 따라 해당 데이터를 디코드하고, 에러가 정정된 데이터를 제공할 수 있다. 에러 정정 코드로서 다양한 방식들이 이용될 수 있음이 이해될 것이다. 예를 들면, BCH 코드(Bose, Chaudhri, Hocquenghem Code), 리드 솔로몬 코드(Reed Solomon Code), RM 코드(Reed Muller Codes), 해밍 코드(Hamming Code), 컨볼루션 코드(Convolution Code), LDPC 코드(Low Density Parity Check Code) 등 다양한 방식들의 에러 정정 코드들이 사용될 수 있음이 이해될 것이다. 예를 들면, BCH 코드, 리드 솔로몬 코드, RM 코드, 및 해밍 코드는 경판정(hard decision) 인코딩 및 디코딩에 적용될 수 있다. 예를 들면, 컨볼루션 코드, LDPC 코드는 연판정 인코딩 및 디코딩에 적용될 수 있다.
읽어진 데이터에 포함된 에러가 정정되면, 컨트롤러(200)는 에러가 정정된 데이터를 호스트(Host)로 출력할 것이다.
도 2는 도 1의 에러 정정기(210)를 보여주는 블록도이다.
도 2를 참조하면, 에러 정정기(210)는 인코딩부(215) 및 디코딩부(216)를 포함한다.
인코딩부(215)는 호스트(Host)로부터 수신된 호스트 데이터를 인코드하여 패리티 비트들을 생성하고, 생성된 패리티 비트들을 호스트 데이터에 부가한다. 예를 들면, 호스트(Host)로부터 쓰기 요청이 수신될 때 호스트 데이터에 대한 인코드가 수행될 것이다. 가공된 데이터는 반도체 메모리 장치(100)에 저장된다.
디코딩부(216)는 반도체 메모리 장치(100)로부터 읽어진 데이터를 해당 패리티 비트들을 참조하여 디코드함으로써 해당 데이터의 에러를 정정하고, 에러가 정정된 데이터를 제공하도록 구성된다. 예를 들면, 호스트(Host)로부터 읽기 요청이 수신될 때 데이터에 대한 디코드가 수행된다. 에러가 정정된 데이터는 호스트 데이터로서 호스트(Host)에 출력된다.
도 3은 도 2의 인코딩부(215)를 보여주는 블록도이다.
도 3을 참조하면, 인코딩부(215)는 경판정 인코더(310), 인터리버(320), 및 연판정 인코더(330)를 포함한다.
경판정 인코더(310)는 호스트 데이터(HD)를 제 2 인코딩 방식에 따라 인코드하여 경판정 패리티 비트들(HPB)을 생성하고 호스트 데이터(HD)와 경판정 패리티 비트들(HPB)을 하나의 비트열로서 출력하도록 구성된다. 이때, 호스트 데이터(HD)는 메인 데이터 비트들(MDB)로서 출력된다.
제 2 인코딩 방식은 블록 코딩(block coding)을 사용하는 방식일 수 있다. 제 2 인코딩 방식은 버스트 에러(Burst error)의 검출 및 정정에 있어 효율적이다. 실시 예로서, 제 2 인코딩 방식으로서 BCH 코딩, 리드 솔로몬 코딩, RM 코딩, 해밍 코딩 등이 사용될 수 있다. 제 2 인코딩 방식이 적용될 때, q 비트들의 소스 데이터(즉, HD)는 p 비트들의 단위로 블록화된다. 즉, 소스 데이터는 p 비트들의 단위로 분할된다. 경판정 인코더(310)는 이렇게 블록화된 q 비트들에 r1개의 경판정 패리티 비트들(HPB)을 부가하여 q+r1 비트들의 비트열(MDB+HPB)을 생성한다. 경판정 패리티 비트들(HPB)은 메인 데이터 비트들(MDB)의 에러를 정정하기 위해 부가된다.
인터리버(320)는 경판정 인코더(310)로부터 출력된 비트열(MDB+HPB)을 인터리브(interleave)하여 하나의 데이터 셋(DS)을 출력한다. 즉 인터리버(320)는 비트열(MDB+HPB) 내 데이터 비트들의 위치를 미리 정해진 방식에 따라 변경한다. 비트열(MDB+HPB) 내 데이터 비트들의 순서는 변경된다.
만약 데이터 셋(DS)에 대해 상기 미리 정해진 방식에 대응하는 디인터리브(deinterleave)가 수행되면, 비트열(MDB+HPB)이 생성될 것임이 이해될 것이다.
연판정 인코더(330)는 인터리버(320)로부터의 데이터 셋(DS)을 제 1 인코딩 방식에 따라 인코드하여 연판정 패리티 비트들(SPB)을 생성하고, 데이터 셋(DS)과 연판정 패리티 비트들(SPB)을 출력한다.
제 1 인코딩 방식은 소스 데이터(즉, DS)의 데이터 비트들 사이의 상호 연관성을 이용하여 코딩하는 방식일 수 있다. 제 1 인코딩 방식은 랜덤 에러의 검출 및 정정에 있어 효율적이다. 실시 예로서, 제 1 인코딩 방식으로서 컨볼루션 코드, LDPC 코드 등이 사용될 수 있다.
제 1 인코딩 방식이 적용될 때, q+r1 비트들의 소스 데이터(DS)를 인코딩하여 q+r1+r2 비트들의 비트열(DS+SPB)을 생성한다. 제 1 인코딩 방식에 의해 r2개의 연판정 패리티 비트들(SPB)이 부가된다. 연판정 패리티 비트들(SPB)은 소스 데이터(DS)의 에러를 정정하기 위해 부가된다.
연판정 인코더(330)로부터 출력된 비트열(DS+SPB)은 반도체 메모리 장치(100)의 선택된 메모리 셀들에 프로그램될 것이다.
도 4는 호스트 데이터(HD)를 인코딩하는 과정을 설명하기 위한 개념도이다.
도 4를 참조하면, 제 2 인코딩 방식에 따른 인코딩을 통해 경판정 패리티 비트들(HPB)이 생성된다. 호스트 데이터(HD)는 메인 데이터 비트들(MDB)로서 제공된다.
메인 데이터 비트들(MDB) 및 경판정 패리티 비트들(HPB)이 인터리빙되어 데이터 셋(DS)을 생성한다. 스팟들로서 패턴된 표시는 인터리빙된 데이터를 의미할 것이다. 여기에서, 메인 데이터 비트들(MDB) 및 경판정 패리티 비트들(HPB)은 데이터 셋(DS)에도 포함됨이 이해될 것이다.
제 1 인코딩 방식에 따른 인코딩을 통해 연판정 패리티 비트들(SPB)이 생성된다. 연판정 패리티 비트들(SPB)은 데이터 셋(DS)에 부가될 것이다. 데이터 셋(DS) 및 연판정 패리티 비트들(SPB)은 반도체 메모리 장치(100)에 프로그램될 것이다.
도 5는 도 2의 디코딩부(216)를 보여주는 블록도이다.
도 5를 참조하면, 디코딩부(216)는 데이터 셋(DS, 도 4 참조)과 연판정 패리티 비트들(SPB, 도 4 참조)에 대응하는 연판정 비트열들(SBSTM)을 반도체 메모리 장치(100)로부터 수신한다.
연판정 비트열들(SBSTM)은 데이터 셋(DS)과 연판정 패리티 비트들(SPB, 도 4 참조)에 대한 정보를 포함한다. 연판정 비트열들(SBSTM)은 데이터 셋(DS)과 연판정 패리티 비트들(SPB)에 포함된 데이터 비트들 각각을 "0" 또는 "1"로 결정하지 않고, "매우 확실한 0", "확실한 0", "확실하지 않은 0", "매우 확실하지 않은 0", "매우 확실하지 않은 1", "확실하지 않은 1", “확실한 1", “매우 확실한 1”과 같은 방식으로 정의한다. 예를 들면, 연판정 비트열들(SBSTM)의 3개의 데이터 비트들은 데이터 셋(DS)과 연판정 패리티 비트들(SPB)의 하나의 데이터 비트에 대응한다. 따라서 연판정 비트열들(SBSTM)에 포함된 비트들의 수는 데이터 셋(DS)과 연판정 패리티 비트들(SPB)보다 더 많다. 예를 들면, 연판정 비트열들(SBSTM)은 데이터 셋(DS)과 연판정 패리티 비트들(SPB)보다 정수 배(예를 들면, 3배)만큼 큰 사이즈를 가질 수 있다.
실시 예로서, 컨트롤러(200, 도 1 참조)는 연판정 비트열들(SBSTM)을 획득하기 위해 복수의 읽기 커맨드들을 반도체 메모리 장치(100)에 제공할 수 있다. 반도체 메모리 장치(100)는 복수의 읽기 커맨드들에 따라 선택된 메모리 셀들(예를 들면 DS와 SPB를 저장하는 메모리 셀들)에 대해 복수의 읽기 동작들을 수행함으로써, 연판정 비트열들(SBSTM)을 제공할 것이다. 예를 들면, 반도체 메모리 장치(100)가 페이지 단위로 읽기 동작을 수행하여 페이지 데이터를 출력하는 경우, 연판정 비트열들(SBSTM)은 복수의 페이지 데이터들에 해당한다.
디코딩부(216)는 연판정 디코더(410), 디인터리버(420), 경판정 디코더(430), 선택기(440), 및 인터리버(450)를 포함한다.
연판정 디코더(410)는 연판정 비트열들(SBSTM)을 제 1 디코딩 방식에 따라 디코드하여 데이터 셋(DS)을 감지하도록 구성된다. 연판정 디코더(410)는 연판정 비트열들(SBSTM) 중 연판정 패리티 비트들(SPB, 도 4 찾모)에 해당하는 정보를 참조하여 데이터 셋(DS)을 감지할 것이다. 감지된 데이터 셋은 디코드된 데이터 셋(DDS)으로서 출력된다. 예를 들면, 데이터 셋(DS)이 성공적으로 감지된 경우, 디코드된 데이터 셋(DDS)은 데이터 셋(DS)과 일치할 것이다. 데이터 셋(DS)이 성공적으로 감지되지 못한 경우, 디코드된 데이터 셋(DDS)은 데이터 셋(DS)과 일치하지 않을 것이다.
디코드된 데이터 셋(DDS)은 데이터 셋(DS)과 동일하게 q+r1 비트들을 가질 수 있다.
실시 예로서, 제 1 디코딩 방식으로서 컨볼루션 코드, LDPC 코드 등이 사용될 수 있다. 제 1 디코딩 방식은 제 1 인코딩 방식에 대응할 것이다. 예를 들면, 제 1 인코딩 방식으로서 컨볼루션 코딩에 따른 인코딩이 사용된 경우, 제 1 디코딩 방식으로서 컨볼루션 코딩에 따른 디코딩이 수행될 것이다.
디인터리버(420)는 디코드된 데이터 셋(DDS)을 디인터리브하여 디인터리브된 데이터 셋(DINTDS)을 출력하도록 구성된다. 디코드된 데이터 셋(DDS)에 랜덤하게 배열된 에러 비트들은 디인터리브되어 디인터리브된 데이터 셋(DINTDS)에 버스트 에러로서 위치할 수 있다. 경판정 디코더(430)에 의해 사용되는 제 2 디코딩 방식은 버스트 에러를 정정하는 데에 효율적이다.
경판정 디코더(430)는 디인터리브된 데이터 셋(DINTDS)에 포함된 경판정 패리티 비트들(HPB, 도 4 참조)을 참조하여 디인터리브된 데이터 셋(DINTDS)을 제 2 디코딩 방식에 따라 디코드하도록 구성된다. 디코드가 패스될 때 메인 데이터 비트들(MDB, 도 4 참조)이 획득될 것이다. 경판정 디코더(430)는 선택기(440)를 제어하여 메인 데이터 비트들(MDB)을 호스트 데이터(HD)로서 출력한다. 경판정 디코더(430)는 디코드가 페일될 때, 선택기(440)를 제어하여 페일된 데이터 셋(FDS)을 인터리버(450)로 출력한다.
실시 예로서, 제 2 디코딩 방식으로서 BCH 코딩, 리드 솔로몬 코딩, RM 코딩, 해밍 코딩 등이 사용될 수 있다. 제 2 디코딩 방식은 제 2 인코딩 방식에 대응할 것이다. 예를 들면, 제 2 인코딩 방식으로서 리드 솔로몬 코딩에 따른 인코딩이 사용된 경우, 제 2 디코딩 방식으로서 리드 솔로몬 코딩에 따른 디코딩이 수행될 것이다. 예를 들면, 제 2 인코딩 방식으로서 BCH 코딩에 따른 인코딩이 사용된 경우, 제 2 디코딩 방식으로서 BCH 코딩에 따른 디코딩이 수행될 것이다.
경판정 디코더(430)는 디인터리브된 데이터 셋(DINTDS)을 복수의 데이터 블록들로 구분하고, 디인터리브된 데이터 셋(DINTDS)을 데이터 블록 단위로 디코드한다. 예를 들면, 디인터리브된 데이터 셋(DINTDS)이 8개의 데이터 블록들로 구분될 때, 경판정 디코더(430)는 각 데이터 블록을 해당 경판정 패리티 비트들을 참조하여 디코드할 것이다.
이에 따라, 데이터 블록 별로 디코딩의 패스 여부가 결정될 것이다. 모든 데이터 블록들에 대한 디코딩이 패스될 때, 디인터리브된 데이터 셋(DINTDS)에 대한 디코딩이 패스된다. 적어도 하나의 데이터 블록에 대한 디코딩이 페일될 때, 디인터리브된 데이터 셋(DINTDS)에 대한 디코딩은 페일된다.
페일된 데이터 셋(FDS)은 하나의(single) 경판정 비트열로서 제공된다. 페일된 데이터 셋(FDS)은 디인터리브된 데이터 셋(DINTDS)과 동일한 데이터 사이즈를 가질 수 있다. 페일된 데이터 셋(FDS)은 디코드가 패스된 데이터 블록과 디코드가 페일된 데이터 블록을 포함한다. 이때 디코드가 페일된 데이터 블록 뿐만 아니라 디코드가 패스된 데이터 블록도 해당 경판정 패리티 비트들을 포함할 수 있다.
인터리버(450)는 페일된 데이터 셋(FDS)을 인터리브하여 인터리브된 데이터 셋(INTDS)을 생성하도록 구성된다. 인터리브된 데이터 셋(INTDS)은 연판정 디코더(410)에 피드백된다. 인터리버(450)는 도 3을 참조하여 설명된 인터리버(320)와 동일한 방식으로 인터리빙을 수행할 것이다. 페일된 데이터 셋(FDS)에 버스트 에러로서 위치하는 에러 비트들은 인터리브되어 인터리브된 데이터 셋(INTDS)에 랜덤 에러로서 위치할 것이다. 연판정 디코더(410)에 의해 사용되는 제 1 디코딩 방식은 랜덤 에러를 정정하는 데에 효율적이다.
실시 예로서, 디코드된 데이터 셋(DDS), 디인터리브된 데이터 셋(DINTDS), 페일된 데이터 셋(FDS), 및 인터리브된 데이터 셋(INTDS) 각각은 데이터 셋(DS, 도 4 참조)과 동일하게 q+r1 비트들을 가질 수 있다.
연판정 디코더(410)는 인터리브된 데이터 셋(INTDS)을 참조하여 연판정 비트열들(SBSTM)에 대해 제 1 디코딩 방식에 따른 디코드를 재수행할 것이다.
본 발명의 실시 예에 따르면, 연판정 디코더(410), 디인터리버(420), 경판정 디코더(430), 선택기(440), 인터리버(450)는 피드백 루프를 구성한다. 디인터리버(420)는 경판정 디코더(430)의 앞단에 위치하고, 디인터리버(420)에 의해 디인터리브된 데이터 셋(DINTDS)은 버스트 에러를 갖게 되고, 경판정 디코더(430)는 그러한 버스트 에러를 효율적으로 정정한다. 인터리버(450)는 연판정 디코더(410)의 앞단에 위치하고, 인터리버(450)에 의해 인터리브된 데이터 셋(INTDS)이 랜덤 에러를 갖게 되고, 연판정 디코더(410)는 그러한 랜덤 에러를 효율적으로 정정한다. 따라서, 디코딩부(216)의 에러 정정 능력은 향상된다.
본 발명의 실시 예에 따르면, 경판정 디코더(430)는 하나의(single) 경판정 비트열에 해당하는 페일된 데이터 셋(FDS)을 제공하며, 그러한 페일된 데이터 셋(FDS)은 인터리빙되어 연판정 디코더(410)에 피드백된다.
한편, 연판정 디코더(410)의 피드백으로서 또 다른 복수의 연판정 비트열들이 입력된다고 가정한다. 연판정 디코더(410)의 입력은 최초 연판정 비트열들(SBSTM) 및 또 다른 복수의 연판정 비트열들일 것이다. 연판정 디코더(410)는 최초 연판정 비트열들(SBSTM) 및 또 다른 복수의 연판정 비트열들 모두를 참조하여 디코딩을 수행해야 한다. 상대적으로 많은 피드백 데이터가 추가됨으로써, 연판정 디코더(410)의 부하(load)는 크게 증가한다.
연판정 디코더(410)의 피드백으로서 하나의 경판정 비트열이 제공될 수 있다. 연판정 디코더(410)의 입력으로서 최초 연판정 비트열들(SBSTM)에 하나의 경판정 비트열이 추가될 것이다. 이러한 경우, 연판정 디코더(410)가 피드백 루프에 포함되더라도, 연판정 디코더(410)의 부하(load)는 크게 증가하지 않는다. 따라서, 연판정 디코더(410)의 소모 전력, 소모 면적, 및 동작 시간은 세이브된다.
도 6은 본 발명의 실시 예에 따른 디코딩 방법을 보여주는 순서도이다. 도 7은 디코딩 방법에 따라 처리되는 데이터를 개념적으로 보여주는 도면이다.
도 1 및 도 7을 참조하여 도 6을 설명하면, S110단계에서, 반도체 메모리 장치(100)로부터 데이터 셋(DS, 도 4 참조)에 대응하는 연판정 비트열들(SBSTM)이 제공된다. 연판정 비트열들(SBSTM)은 데이터 셋(DS, 도 4 참조)과 연판정 패리티 비트들(SPB, 도 4 참조)에 대응하는 정보를 포함할 것이다. 예를 들면, 복수의 읽기 동작들을 수행하여, 데이터 셋(DS)과 연판정 패리티 비트들(SPB)이 연판정 비트열들(SBSTM)로서 읽어질 것이다.
도 7에서, 3개의 연판정 비트열들(SBSTM1~SBSTM3)이 제공되는 것으로 예시된다. 제 1 읽기 동작에서 제 1 연판정 비트열(SBSTM1)이 읽어질 수 있다. 제 1 연판정 비트열(SBSTM1)은 제 1 데이터 셋(DS1)과 제 1 연판정 패리티 비트들(SPB1)을 포함한다. 제 2 읽기 동작에서 제 2 연판정 비트열(SBSTM2)이 읽어질 수 있다. 제 2 연판정 비트열(SBSTM3)은 제 2 데이터 셋(DS2)과 제 2 연판정 패리티 비트들(SPB2)을 포함한다. 제 3 읽기 동작에서 제 3 연판정 비트열(SBSTM3)이 읽어질 수 있다. 제 3 연판정 비트열(SBSTM3)은 제 3 데이터 셋(DS3)과 제 3 연판정 패리티 비트들(SPB3)을 포함한다.
S120단계에서, 연판정 비트열들(SBSTM)이 제 1 디코딩 방식에 따라 디코드되어 데이터 셋(DS)을 감지한다.
도 7에서, 제 1 내지 제 3 연판정 패리티 비트들(SPB1~SPB3)을 참조하여 데이터 셋(DS)이 감지되고, 감지된 데이터 셋은 디코드된 데이터 셋(DDS)으로서 출력된다. 만약 디코드된 데이터 셋(DDS)에 에러가 포함된다면, 디코드된 데이터 셋(DDS)은 에러를 포함하는 메인 데이터 비트들(MDB_E), 그리고 에러를 포함하는 경판정 패리티 비트들(HPB_E)을 포함한다.
S130단계에서, 디코드된 데이터 셋(DDS)이 디인터리브된다.
도 7에서, 디인터리브에 의해, 에러를 포함하는 메인 데이터 비트들(MDB_E) 및 에러를 포함하는 경판정 패리티 비트들(HPB_E)은 디인터리브된 데이터 셋(DINTDS) 내에서 정렬된다. 실시 예로서, 에러를 포함하는 메인 데이터 비트들(MDB_E) 및 에러를 포함하는 경판정 패리티 비트들(HPB_E)은 데이터 블록 단위로 정렬될 수 있다.
S140단계에서, 디인터리브된 데이터 셋(DINTDS)이 제 2 디코딩 방식에 따라 디코드된다. 실시 예로서, 디인터리브된 데이터 셋(DINTDS)은 데이터 블록 단위로 디코드될 수 있다.
S150단계에서, 제 2 디코딩 방식에 따른 디코드의 패스 여부에 따라 S160단계 또는 S170단계가 수행된다. 모든 데이터 블록들에 대한 디코딩이 패스될 때 디인터리브된 데이터 셋(DINTDS)에 대한 디코딩은 패스된다. 적어도 하나의 데이터 블록에 대한 디코딩이 페일될 때 디인터리브된 데이터 셋(DINTDS)에 대한 디코딩은 페일된다.
S160단계에서, 메인 데이터 비트들(MDB)이 획득된다. 도 7에서, 메인 데이터 비트들(MDB)은 호스트 데이터(HD)로서 출력된다.
S170단계에서, 페일된 데이터 셋(FDS)이 출력된다. 페일된 데이터 셋(FDS)의 데이터 블록들 각각은 디코드가 패스된 데이터 블록 또는 디코드가 페일된 데이터 블록이다.
S180단계에서, 페일된 데이터 셋(FDS)이 인터리브된다.
도 7에서, 페일된 데이터 셋(FDS)은 인터리브된 데이터 셋(INTDS)으로 변환된다. 디코드된 데이터 셋(DDS), 디인터리브된 데이터 셋(DINTDS), 페일된 데이터 셋(FDS), 및 인터리브된 데이터 셋(INTDS) 각각은 데이터 셋(DS)과 동일한 데이터 사이즈를 가질 수 있다.
S190단계에서, 인터리브된 데이터 셋(INTDS)을 참조하여 연판정 비트열들(SBSTM)에 대해 제 1 디코딩 방식에 따른 디코드가 재수행된다.
도 7에서, 인터리브된 데이터 셋(INTDS)의 x번째 데이터 비트가 디코드가 패스된 데이터 블록에 해당할 때, 디코드된 데이터 셋(DDS)의 x번째 데이터 비트는 확정될 수 있다. 예를 들면, 인터리브된 데이터 셋(INTDS)의 x번째 데이터 비트가 "0"일 때, 제 1 내지 제 3 연판정 비트열들(SBSTM1~SBSTM3) 각각의 x번째 데이터 비트에 관계없이, 디코드된 데이터 셋(DDS)의 x번째 데이터 비트는 "0"으로서 확정될 수 있다. 예를 들면, 인터리브된 데이터 셋(INTDS)의 x번째 데이터 비트가 "1"일 때, 제 1 내지 제 3 연판정 비트열들(SBSTM1~SBSTM3) 각각의 x번째 데이터 비트에 관계없이, 디코드된 데이터 셋(DDS)의 x번째 데이터 비트는 "1"로서 확정될 수 있다. 인터리브된 데이터 셋(INTDS)의 y번째 데이터 비트가 디코드가 페일된 데이터 블록에 해당할 때, 제 1 내지 제 3 연판정 비트열들(SBSTM1~SBSTM3)에 대해 제 1 디코딩 방식에 따른 디코드가 수행됨으로써 디코드된 데이터 셋(DDS)의 y번째 데이터 비트가 결정될 것이다.
제 2 디코딩 방식에 따른 디코드가 패스될 때까지, S130단계 내지 S150단계, 그리고 S170단계 내지 S190단계는 반복된다.
도 8은 디인터리브된 데이터 셋(DINTDS) 및 페일된 데이터 셋(FDS)을 보여주는 개념도이다.
도 8을 참조하면, 디인터리브된 데이터 셋(DINTDS)은 데이터 블록 단위로 정렬된다. 디인터리브된 데이터 셋(DINTDS)은 순차적으로 정렬된 제 1 내지 제 8 데이터 블록들(DB1~DB8)을 포함한다.
하나의 데이터 블록은 에러를 포함하는 메인 데이터 비트들과 에러를 포함하는 경판정 패리티 비트들을 포함한다. 예를 들면, 제 1 데이터 블록(DB1)은 에러를 포함하는 메인 데이터 비트들(MDB_E1)과 에러를 포함하는 경판정 패리티 비트들(HPB_E1)을 포함한다. 제 8 데이터 블록(DB8)은 에러를 포함하는 메인 데이터 비트들(MDB_E8)과 에러를 포함하는 경판정 패리티 비트들(HPB_E8)을 포함한다. 에러를 포함하는 메인 데이터 비트들(MDB_E1~MDB_E8)은 도 7의 에러를 포함하는 메인 데이터 비트들(MDB_E)을 구성할 것이다. 에러를 포함하는 경판정 패리티 비트들(HPB_E1~HPB_E8)은 도 7의 에러를 포함하는 경판정 패리티 비트들(HPB_E)을 구성할 것이다.
제 2 디코딩 방식에 따른 디코드는 데이터 블록 단위로 수행된다. 제 1 내지 제 8 데이터 블록들(DB1~DB8) 각각에 대해 제 2 디코딩 방식에 따른 디코드가 수행될 것이다. 각 데이트 블록(예를 들면, DB1)에 대한 디코드 시에, 에러를 포함하는 경판정 패리티 비트들(예를 들면, HPB_E1)이 참조되어 에러를 포함하는 메인 데이터 비트들(예를 들면, MDB_E1)의 에러가 정정된다.
제 1 내지 제 8 데이터 블록들(DB1~DB8) 중 제 2 데이터 블록(DB2)에 대한 디코딩이 페일된다고 가정한다. 페일된 데이터 셋(FDS)은 패스된 데이터 블록들(PDB)과 페일된 데이터 블록(FDB)을 포함한다. 패스된 데이터 블록은 에러가 정정된 메인 데이터 비트들과 에러가 정정된 경판정 패리티 비트들을 포함할 수 있다. 제 1 데이터 블록(DB1)에 대응하는 패스된 데이터 블록(PBD)은 정정된 메인 데이터 비트들(MDB1)과 정정된 경판정 패리티 비트들(HPB1)을 포함한다. 정정된 메인 데이터 비트들(MDB1)은 에러를 포함하는 메인 데이터 비트들(MDB_E1)의 에러가 정정됨으로써 획득됨이 이해될 것이다. 정정된 경판정 패리티 비트들(HPB1)은 에러를 포함하는 경판정 패리티 비트들(HPB_E1)의 에러가 정정됨으로써 획득됨이 이해될 것이다. 제 8 데이터 블록(DB8)에 대응하는 패스된 데이터 블록(PBD)은 정정된 메인 데이터 비트들(MDB8)과 정정된 경판정 패리티 비트들(HPB8)을 포함한다.
페일된 데이터 블록은 에러를 포함하는 메인 데이터 비트들과 에러를 포함하는 경판정 패리티 비트들을 포함할 수 있다. 제 2 데이터 블록(DB2)에 대응하는 페일된 데이터 블록(FBD)은 에러를 포함하는 메인 데이터 비트들(MDB_E2)과 에러를 포함하는 경판정 패리티 비트들(HPB_E2)을 제 2 데이터 블록(DB2)과 마찬가지로 포함한다.
이러한 방식에 따르면, 페일된 데이터 블록(FBD)은 해당 데이터 블록과 동일한 사이즈를 갖고, 패스된 데이터 블록(PDB)도 해당 데이터 블록과 동일한 사이즈를 갖는다. 페일된 데이터 셋(FDS)은 디인터리브된 데이터 셋(DINTDS)과 동일한 데이터 사이즈를 가질 수 있다.
도 9는 플래그 정보(FI)를 보여주는 개념도이다.
경판정 디코더(430, 도 5 참조)는 플래그 정보(FI)를 더 생성할 수 있다. 도 9를 참조하면, 플래그 정보(FI)는 제 1 내지 제 8 플래그 정보들(FI1~FI8)을 포함한다. 제 1 내지 제 8 플래그 정보들(FI1~FI8)은 각각 제 1 내지 제 8 데이터 블록들(DB1~DB8)에 대응한다. 제 1 내지 제 8 플래그 정보들(FI1~FI8) 각각은, 해당 데이터 블록에 대한 디코딩이 패스되었는지 페일되었는지 여부를 나타낸다. 하나의 플래그 정보는 해당 데이터 블록의 데이터 비트들에 각각 대응하는 데이터 비트들을 포함할 수 있다. 즉 하나의 플래그 정보는 해당 데이터 블록과 동일한 데이터 사이즈를 가질 수 있다. 예를 들면, 각 플래그 정보에 포함된 데이터 비트들의 논리값은 모두 "1"이거나, 모두 "0"일 수 있다.
이러한 플래그 정보(FI)는 연판정 디코더(410, 도 5 참조)에 제공될 수 있다. 연판정 디코더(410)는 플래그 정보(FI) 및 인터리브된 데이터 셋(INTDS)을 참조하여 연판정 비트열들(SBSTM)에 대한 디코드를 수행할 것이다. 예를 들면, 연판정 디코더(410)는 플래그 정보(FI)를 참조하여 인터리브된 데이터 셋(INTDS)의 x번째 데이터 비트가 디코드가 패스된 데이터 블록에 해당하는지 여부를 판별할 수 있다. 연판정 디코더(410)는 플래그 정보(FI)를 참조하여 인터리브된 데이터 셋(INTDS)의 y번째 데이터 비트가 디코드가 페일된 데이터 블록에 해당하는지 여부를 판별할 수 있다.
실시 예로서, 플래그 정보(FI)는 페일된 데이터 셋(FDS)에 부가되고, 인터리버(450, 도 5 참조)는 페일된 데이터 셋(FDS) 및 플래그 정보(FI)를 함께 인터리브하고, 인터리브된 데이터가 연판정 디코더(410)에 피드백될 수 있다.
다른 실시 예로서, 플래그 정보(FI)는 인터리버(450)를 거치지 않고 연판정 디코더(410)에 제공될 수 있다.
도 10은 본 발명의 실시 예에 따른 메모리 시스템(50)의 동작 방법을 보여주는 순서도이다.
도 1 및 도 10을 참조하면, S210단계에서, 컨트롤러(200)는 반도체 메모리 장치(100)에 제 1 연판정 비트열을 요청한다. S220단계에서, 반도체 메모리 장치(100)는 읽기 동작을 수행한다. S230단계에서, 반도체 메모리 장치(100)는 읽기 동작에 의해 읽어진 제 1 연판정 비트열을 컨트롤러(200)에 전송한다.
S240단계에서, 컨트롤러(200)는 제 1 연판정 비트열을 참조하여 복수의 연판정 비트열들을 생성할 수 있다. 복수의 연판정 비트열들은 도 7을 참조하여 설명된 연판정 비트열들(SBSTM1~SBSTM3)에 해당할 것이다. 컨트롤러(200)는 제 1 연판정 비트열의 각 데이터 비트에 따라 3개의 데이터 비트들을 생성함으로써 연판정 비트열들(SBSTM1~SBSTM3)을 생성할 수 있다. 예를 들면, 제 1 연판정 비트열의 z번째 데이터 비트가 "1"일 때, 연판정 비트열들(SBSTM1~SBSTM3)의 z번째 데이터 비트들은 "매우 확실한 1"일 수 있다. 예를 들면, 제 1 연판정 비트열의 z번째 데이터 비트가 "0"일 때, 연판정 비트열들(SBSTM1~SBSTM3)의 z번째 데이터 비트들은 "매우 확실한 0"일 것이다. 이 밖에도, 잘 알려진 바와 같이, 다양한 방식들을 이용하여 하나의 비트열이 3개의 비트열들로 변환될 수 있음이 이해될 것이다.
S250단계에서, 컨트롤러(200)는 에러 정정 동작을 수행한다. 에러 정정 동작은 도 6의 S120단계 내지 S190단계를 포함할 것이다.
S260단계에서, 컨트롤러(200)는 에러 정정 동작 전 또는 에러 정정 동작 중에, 읽기 리트라이(read retry)에 따른 제 2 연판정 비트열을 요청한다. 예를 들면, 컨트롤러(200)는, 선택된 메모리 셀들과 연결된 워드 라인에 인가되는 읽기 전압을 조절하고 조절된 읽기 전압을 이용하여 읽기 동작을 수행하도록, 반도체 메모리 장치(100)를 제어할 것이다.
S270단계에서, 반도체 메모리 장치(100)는 읽기 리트라이를 수행한다. 본 발명의 실시 예에 따르면, 컨트롤러(200)에서 수행되는 에러 정정 동작(S250)과 반도체 메모리 장치(100)에서 수행되는 읽기 리트라이(S270)은 병렬적으로 수행된다. 예를 들면, 반도체 메모리 장치(100)에서 수행되는 읽기 리트라이(S270)는 도 6의 S120단계 내지 S190단계 중 어느 하나와 병렬적으로 수행된다.
S280단계에서, 반도체 메모리 장치(100)는 읽기 리트라이(S260)의 결과로서 제 2 연판정 비트열을 출력한다.
S290단계에서, 컨트롤러(200)는 S230단계 및 S280단계에서 얻어진 제 1 및 제 2 연판정 비트열들을 참조하여 복수의 연판정 비트열들을 재생성한다. 복수의 연판정 비트열들은 도 7의 연판정 비트열들(SBSTM1~SBSTM3)에 해당할 것이다. 2개의 연판정 비트열들이 참조되므로, 재생성된 연판정 비트열들은 더 높은 신뢰성을 가질 것으로 기대될 수 있다. 컨트롤러(200)는 제 1 및 제 2 연판정 비트열들 각각에서 z번째에 위치한 2개의 데이터 비트들에 따라 3개의 데이터 비트들을 생성함으로써, 연판정 비트열들(SBSTM1~SBSTM3)을 생성할 수 있다. 예를 들면, 제 1 및 제 2 연판정 비트열들의 z번째 데이터 비트들이 각각 논리값 "1" 및 "1"일 때, 연판정 비트열들(SBSTM1~SBSTM3)의 z번째 데이터 비트들은 "매우 확실한 1"일 수 있다. 예를 들면, 제 1 및 제 2 연판정 비트열들의 z번째 데이터 비트들이 각각 논리값 "1" 및 "0"일 때, 연판정 비트열들(SBSTM1~SBSTM3)의 z번째 데이터 비트들은 "확실하지 않은 0", "매우 확실하지 않은 0", "매우 확실하지 않은 1" 및 "확실하지 않은 1" 중 어느 하나를 나타낼 수 있다. 예를 들면, 제 1 및 제 2 연판정 비트열들의 z번째 데이터 비트들이 각각 논리값 "0" 및 "0"일 때, 연판정 비트열들(SBSTM1~SBSTM3)의 z번째 데이터 비트들은 "매우 확실한 0"일 수 있다.
S300단계에서, 컨트롤러(200)는 에러 정정 동작을 재수행한다. 만약, S250단계에서 제 2 디코딩 방식에 따른 디코드가 페일되면(S150, 도 6 참조), 제 1 디코딩 방식에 따른 디코딩의 입력으로서 S290단계에서 재생성된 연판정 비트열들(SBSTM1~SBSTM3)이 제공될 것이다. S290단계에서 재생성된 연판정 비트열들(SBSTM1~SBSTM3)이 입력됨으로써, 연판정 디코더(410)의 출력 데이터(DDS)에 포함되는 에러 비트들의 수는 적어질 수 있다.
만약, S250단계에서 제 2 디코딩 방식에 따른 디코드가 패스되면(S150), S300단계는 수행되지 않을 것이다. 실시 예로서, 컨트롤러(200)는 반도체 메모리 장치(100)로부터 수신된 제 2 연판정 비트열 또는 S290단계에서 재생성된 복수의 연판정 비트열들을 폐기(discard)할 것이다.
S310단계에서, 컨트롤러(200)는 S300단계의 에러 정정 동작 전 또는 S300단계의 에러 정정 동작 중에, 읽기 리트라이에 따른 제 3 연판정 비트열을 요청한다.
S320단계에서, 반도체 메모리 장치(100)는 읽기 리트라이를 수행한다. 반도체 메모리 장치(100)는 선택된 메모리 셀들과 연결된 워드 라인에 인가되는 읽기 전압을 재조절하고 해당 읽기 전압을 이용하여 읽기 동작을 수행할 것이다. S300단계의 에러 정정 동작과 S320단계의 읽기 리트라이는 병렬적으로 수행된다.
S330단계에서, 반도체 메모리 장치(100)는 읽기 리트라이(S320)의 결과로서 제 3 연판정 비트열을 출력한다.
S340단계에서, 컨트롤러(200)는 에러 정정 동작을 재수행한다. 만약, S300단계에서 제 2 디코딩 방식에 따른 디코드가 페일되면(S150, 도 6 참조), 제 1 디코딩 방식에 따른 디코딩의 입력으로서 S230단계, S280단계 및 S330단계에서 얻어진 제 1 내지 제 3 연판정 비트열들이 제공될 것이다. 그러한 제 1 내지 제 3 연판정 비트열들은 도 7의 연판정 비트열들(SBSTM1~SBSTM3)에 해당할 것이다. 그러한 연판정 비트열들(SBSTM1~SBSTM3)은 S240단계 및 S290단계에서 생성된 연판정 비트열들보다 더 높은 신뢰성을 갖는 것으로 기대될 수 있다.
본 발명의 실시 예에 따르면, 컨트롤러(200)의 에러 정정 동작과 반도체 메모리 장치(100)의 읽기 리트라이는 병렬적으로 수행된다. 따라서, 읽기 리트라이 기능이 제공되면서도, 메모리 시스템(50)의 동작 속도는 향상된다.
도 11은 도 1의 컨트롤러(200)를 구현하기 위한 일 실시 예(1200)를 보여주는 블록도이다.
도 11을 참조하면, 컨트롤러(1200)는 램(1210, Random Access Memory), 프로세싱 유닛(1220, processing unit), 호스트 인터페이스(1230, host interface), 메모리 인터페이스(1240, memory interface) 및 에러 정정기(1250)를 포함한다.
프로세싱 유닛(1220)은 컨트롤러(1200)의 제반 동작을 제어한다. 램(1210)은 프로세싱 유닛(1220)의 동작 메모리, 반도체 메모리 장치(100, 도 1 참조) 및 호스트(Host, 도 1 참조) 사이의 캐시 메모리, 그리고 반도체 메모리 장치(100) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용될 수 있다. 프로세싱 유닛(1220) 및 램(1210)은 컨트롤러(1200)의 제반 동작을 제어한다. 예를 들면, 프로세싱 유닛(1220)은 프로그램 명령, 데이터 파일, 데이터 구조 등을 램(1210)에 로드하고, 로드된 데이터를 실행함으로써 컨트롤러(1200)의 제반 동작을 수행할 것이다.
호스트 인터페이스(1230)는 호스트(Host) 및 컨트롤러(1200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 실시 예로서, 컨트롤러(1200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜, 사유(private) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(Host)와 통신하도록 구성된다.
메모리 인터페이스(1240)는 반도체 메모리 장치(100)와 인터페이싱한다. 에러 정정기(1250)는 도 1의 에러 정정기(210)의 기능을 수행한다.
컨트롤러(1200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적될 수 있다. 실시 예로서, 컨트롤러(1200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(1200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
컨트롤러(1200) 및 반도체 메모리 장치(100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 컨트롤러(1200) 및 반도체 메모리 장치(100)가 반도체 드라이브(SSD)로 이용되는 경우, 호스트의 동작 속도는 획기적으로 개선된다.
다른 예로서, 컨트롤러(1200) 및 반도체 메모리 장치(100)는 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
실시 예로서, 컨트롤러(1200) 및 반도체 메모리 장치(100)는 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 컨트롤러(1200) 및 반도체 메모리 장치(100)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline integrated circuit (SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline Package(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
도 12는 도 1의 반도체 메모리 장치(100)를 보여주는 블록도이다.
도 12를 참조하면, 반도체 메모리 장치(100)는 메모리 셀 어레이(110) 및 메모리 셀 어레이(110)를 구동하기 위한 주변 회로(120)를 포함한다. 메모리 셀 어레이(110)은 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 복수의 메모리 블록들(BLK1~BLKz) 각각은 복수의 페이지들(PG1~PGn)을 포함한다. 하나의 페이지는 하나의 워드 라인과 연결된 메모리 셀들을 포함함이 이해될 것이다.
주변 회로(120)는 컨트롤러(200)의 제어에 응답하여 동작한다.
프로그램 동작 시에, 주변 회로(120)는 컨트롤러(200)로부터 프로그램 커맨드, 물리 블록 어드레스, 및 데이터를 수신할 것이다. 물리 블록 어드레스에 의해 하나의 메모리 블록과 그것에 포함된 하나의 페이지가 선택될 것이다. 주변 회로(120)는 선택된 페이지에 데이터를 프로그램할 것이다.
읽기 동작 시에, 주변 회로(120)는 컨트롤러(200)로부터 읽기 커맨드, 물리 블록 어드레스를 수신할 것이다. 물리 블록 어드레스에 의해 하나의 메모리 블록과 그것에 포함된 하나의 페이지가 선택될 것이다. 주변 회로(120)는 선택된 페이지로부터 데이터를 읽고, 읽어진 데이터를 컨트롤러(200)에 출력할 것이다.
소거 동작 시에, 주변 회로(120)는 컨트롤러(200)로부터 소거 커맨드 및 물리 블록 어드레스를 수신할 것이다. 물리 블록 어드레스에 의해 하나의 메모리 블록이 선택될 것이다. 주변 회로(120)는 물리 블록 어드레스에 대응하는 메모리 블록의 데이터를 소거할 것이다.
도 13은 도 1의 메모리 시스템(50)의 응용 예(2000)를 보여주는 블록도이다.
도 13을 참조하면, 메모리 시스템(2000)은 반도체 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 반도체 메모리 장치(2100)는 복수의 반도체 메모리 칩들을 포함한다. 복수의 반도체 메모리 칩들은 복수의 그룹들로 분할된다.
도 13에서, 복수의 그룹들은 각각 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신하는 것으로 도시되어 있다. 각 반도체 메모리 칩은 도 12를 참조하여 설명된 반도체 메모리 장치(100)와 마찬가지로 구성되고, 동작할 것이다.
각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 컨트롤러(2200)는 도 1을 참조하여 설명된 컨트롤러(200)와 마찬가지로 구성되고, 복수의 채널들(CH1~CHk)을 통해 반도체 메모리 장치(2100)의 복수의 메모리 칩들을 제어하도록 구성될 수 있다.
도 13에서, 하나의 채널에 복수의 반도체 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 반도체 메모리 칩이 연결되도록 메모리 시스템(2000)이 변형될 수 있음이 이해될 것이다.
도 14는 도 13을 참조하여 설명된 메모리 시스템(2000)을 포함하는 컴퓨팅 시스템(3000)을 보여주는 블록도이다.
도 14를 참조하면, 컴퓨팅 시스템(3000)은 중앙 처리 장치(3100), 램(3200, Random Access Memory), 사용자 인터페이스(3300), 전원(3400), 시스템 버스(3500), 그리고 메모리 시스템(2000)을 포함한다.
메모리 시스템(2000)은 시스템 버스(3500)를 통해, 중앙처리장치(3100), 램(3200), 사용자 인터페이스(3300), 그리고 전원(3400)에 전기적으로 연결된다. 사용자 인터페이스(3300)를 통해 제공되거나, 중앙 처리 장치(3100)에 의해서 처리된 데이터는 메모리 시스템(2000)에 저장된다.
도 14에서, 반도체 메모리 장치(2100)는 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있다. 그러나, 반도체 메모리 장치(2100)는 시스템 버스(3500)에 직접적으로 연결되도록 구성될 수 있다. 이때, 컨트롤러(2200)의 기능은 중앙 처리 장치(3100) 및 램(3200)에 의해 수행될 것이다.
도 14에서, 도 13을 참조하여 설명된 메모리 시스템(2000)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(2000)은 도 1을 참조하여 설명된 메모리 시스템(10)으로 대체될 수 있다. 실시 예로서, 컴퓨팅 시스템(3000)은 도 1 및 도 13을 참조하여 설명된 메모리 시스템들(50, 2000)을 모두 포함하도록 구성될 수 있다.
본 발명의 실시 예에 따르면, 연판정 디코더, 디인터리버, 경판정 디코더, 선택기, 인터리버는 피드백 루프를 구성한다. 따라서, 디코딩부의 에러 정정 능력은 향상된다.
본 발명의 실시 예에 따르면, 경판정 디코더는 하나의(single) 경판정 비트열에 해당하는 페일된 데이터 셋을 제공하며, 그러한 페일된 데이터 셋은 인터리빙되어 연판정 디코더에 피드백된다. 따라서, 연판정 디코더의 소모 전력, 소모 면적, 및 동작 시간은 세이브된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 반도체 메모리 장치
200: 컨트롤러
200: 에러 정정기
215: 인코딩부
216: 디코딩부
410: 연판정 디코더
420: 디인터리버
430: 경판정 디코더
440: 선택기
450: 인터리버

Claims (20)

  1. 컨트롤러; 및
    메인 데이터 비트들과 패리티 비트들을 갖는 데이터 셋을 저장하되, 상기 컨트롤러의 제어에 응답하여 상기 데이터 셋에 대응하는 연판정(soft decision) 비트열들을 제공하도록 구성되는 반도체 메모리 장치를 포함하되,
    상기 컨트롤러는,
    상기 연판정 비트열들을 제 1 디코딩 방식에 따라 디코드하여 상기 데이터 셋을 감지하도록 구성되는 연판정 디코더;
    상기 감지된 데이터 셋을 디인터리브하도록 구성되는 디인터리버;
    상기 디인터리브된 데이터 셋에 포함된 상기 패리티 비트들을 참조하여 상기 디인터리브된 데이터 셋을 제 2 디코딩 방식에 따라 디코드하되, 상기 제 2 디코딩 방식에 따른 상기 디코드가 페일될 때 페일된 데이터 셋을 출력하도록 구성되는 경판정(hard decision) 디코더; 및
    상기 페일된 데이터 셋을 인터리브하도록 구성되는 인터리버를 포함하되,
    상기 인터리브된 데이터 셋은 상기 연판정 디코더로 피드백되는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 연판정 디코더는 상기 인터리브된 데이터 셋을 참조하여 상기 연판정 비트열들을 다시 디코드하는 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 연판정 디코더, 상기 디인터리버, 상기 경판정 디코더, 및 상기 인터리버는 하나의 피드백 루프에 포함되는 메모리 시스템.
  4. 제 1 항에 있어서,
    상기 페일된 데이터 셋은 상기 데이터 셋과 동일한 사이즈를 갖는 메모리 시스템.
  5. 제 1 항에 있어서,
    상기 제 2 디코딩 방식에 따른 상기 디코드가 패스될 때 상기 메인 데이터 비트들이 획득되고,
    상기 경판정 디코더는 상기 메인 데이터 비트들을 호스트 데이터로서 출력하는 메모리 시스템.
  6. 제 1 항에 있어서,
    상기 디인터리브된 데이터 셋은 복수의 데이터 블록들로 구분되고,
    상기 제 2 디코딩 방식에 따른 상기 디코드는 데이터 블록 단위로 수행되고,
    상기 페일된 데이터 셋은 상기 제 2 디코딩 방식에 따른 상기 디코드가 페일된 데이터 블록 및 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스된 데이터 블록을 포함하는 메모리 시스템.
  7. 제 6 항에 있어서,
    상기 경판정 디코더는 상기 복수의 데이터 블록들에 각각 대응하는 플래그 정보들을 더 출력하고,
    상기 플래그 정보들 각각은, 해당 데이터 블록에 대해 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스되었는지 페일되었는지 여부를 나타내는 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 연판정 디코더는 상기 플래그 정보들과 상기 인터리브된 데이터 셋을 참조하여, 상기 연판정 비트열들을 다시 디코드하는 메모리 시스템.
  9. 제 1 항에 있어서,
    상기 반도체 메모리 장치는 상기 컨트롤러의 제어에 응답하여 읽기 리트라이(read retry)를 수행함으로써 상기 데이터 셋에 대응하는 제 2 연판정 비트열들을 상기 컨트롤러에 출력하고,
    상기 리드 리트라이의 수행은 상기 제 1 디코딩 방식에 따른 상기 디코드, 상기 디인터리브, 상기 제 2 디코딩 방식에 따른 상기 디코드, 상기 인터리브 중 적어도 하나와 병렬적으로 수행되는 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 연판정 디코더는 상기 인터리브된 데이터 셋을 참조하여 상기 제 2 연판정 비트열들을 상기 제 1 디코딩 방식에 따라 디코드하는 메모리 시스템.
  11. 제 1 항에 있어서,
    상기 제 1 디코딩 방식은 컨볼류션 코드에 해당하는 메모리 시스템.
  12. 제 1 항에 있어서,
    상기 제 1 디코딩 방식은 LDPC 코드에 해당하는 메모리 시스템.
  13. 제 1 항에 있어서,
    상기 제 2 디코딩 방식은 리드 솔로몬 코드에 해당하는 메모리 시스템.
  14. 제 1 항에 있어서,
    상기 제 2 디코딩 방식은 BCH 코드에 해당하는 메모리 시스템.
  15. 제 1 항에 있어서,
    상기 컨트롤러는,
    호스트 데이터를 상기 제 2 디코딩 방식에 대응하는 제 2 인코딩 방식으로 인코드하여 상기 패리티 비트들을 생성하도록 구성되는 경판정 인코더; 및
    상기 호스트 데이터와 상기 패리티 비트들을 인터리브하여 상기 데이터 셋을 생성하도록 구성되는 제 2 인터리버를 포함하되,
    상기 데이터 셋은 상기 제 1 디코딩 방식에 대응하는 제 1 인코딩 방식으로 인코드되어 상기 반도체 메모리 장치에 저장되는 메모리 시스템.
  16. 데이터 셋에 대응하는 연판정 비트열들을 제공하되, 상기 데이터 셋은 메인 데이터 비트들과 패리티 비트들을 갖는 단계;
    상기 연판정 비트열들을 제 1 디코딩 방식에 따라 디코드하여 상기 데이터 셋을 감지하는 단계;
    상기 감지된 데이터 셋을 디인터리브하는 단계;
    상기 디인터리브된 데이터 셋의 상기 패리티 비트들을 참조하여 상기 디인터리브된 데이터 셋을 제 2 디코딩 방식에 따라 디코드하는 단계;
    상기 제 2 디코딩 방식에 따른 상기 디코드가 페일될 때, 페일된 데이터 셋을 출력하는 단계;
    상기 페일된 데이터 셋을 인터리브하는 단계; 및
    상기 인터리브된 데이터 셋을 참조하여, 상기 제 1 디코딩 방식에 따른 상기 디코드를 재수행하는 단계를 포함하는 반도체 장치의 동작 방법.
  17. 제 16 항에 있어서,
    상기 디인터리브하는 단계, 상기 제 2 디코딩 방식에 따라 디코드하는 단계, 상기 페일된 데이터 셋을 출력하는 단계, 상기 인터리브하는 단계, 및 상기 제 1 디코딩 방식에 따른 상기 디코드를 재수행하는 단계는 상기 제 2 디코딩 방식에 따른 상기 디코드가 패스될 때까지 반복되는 동작 방법.
  18. 제 16 항에 있어서,
    상기 페일된 데이터 셋은 상기 데이터 셋과 동일한 사이즈를 갖는 동작 방법.
  19. 제 16 항에 있어서,
    상기 데이터 셋에 대응하는 제 2 연판정 비트열들을 제공하는 단계를 더 포함하되,
    상기 제 2 연판정 비트열들을 제공하는 단계는 상기 제 1 디코딩 방식에 따라 디코드하는 단계, 상기 디인터리브하는 단계, 상기 제 2 디코딩 방식에 따라 디코드하는 단계, 상기 페일된 데이터 셋을 출력하는 단계, 및 상기 인터리브하는 단계 중 적어도 하나와 병렬적으로 수행되는 동작 방법.
  20. 제 19 항에 있어서,
    상기 제 1 디코딩 방식에 따른 상기 디코드를 재수행하는 단계는,
    상기 인터리브된 데이터 셋을 참조하여, 상기 제 2 연판정 비트열들을 상기 제 1 디코딩 방식에 따라 디코드하는 단계를 포함하는 동작 방법.
KR1020150125052A 2015-09-03 2015-09-03 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법 KR20170028160A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150125052A KR20170028160A (ko) 2015-09-03 2015-09-03 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법
US15/005,237 US20170070240A1 (en) 2015-09-03 2016-01-25 Memory system including error corrector and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150125052A KR20170028160A (ko) 2015-09-03 2015-09-03 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20170028160A true KR20170028160A (ko) 2017-03-13

Family

ID=58189585

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150125052A KR20170028160A (ko) 2015-09-03 2015-09-03 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US20170070240A1 (ko)
KR (1) KR20170028160A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10824507B2 (en) 2018-10-24 2020-11-03 Samsung Electronics Co., Ltd. Semiconductor memory device, controller, and memory system
US11200117B2 (en) 2018-10-24 2021-12-14 Samsung Electronics Co., Ltd. Semiconductor memory device, controller, memory system, and operation method thereof

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190086936A (ko) 2018-01-15 2019-07-24 삼성전자주식회사 메모리 장치
US10521296B2 (en) 2018-02-20 2019-12-31 Micron Technology, Inc. Performing an additional decoding operation on an identified set of bits of a data block
US10601546B2 (en) * 2018-04-03 2020-03-24 SK Hynix Inc. Dynamic interleaver change for bit line failures in NAND flash storage
US11169744B2 (en) * 2020-03-31 2021-11-09 Western Digital Technologies, Inc. Boosting reads of chunks of data
KR20220118011A (ko) * 2021-02-18 2022-08-25 에스케이하이닉스 주식회사 메모리 장치 및 메모리 장치의 동작 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3892872B2 (ja) * 2003-03-31 2007-03-14 富士通株式会社 ターボ復号器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10824507B2 (en) 2018-10-24 2020-11-03 Samsung Electronics Co., Ltd. Semiconductor memory device, controller, and memory system
US11200117B2 (en) 2018-10-24 2021-12-14 Samsung Electronics Co., Ltd. Semiconductor memory device, controller, memory system, and operation method thereof

Also Published As

Publication number Publication date
US20170070240A1 (en) 2017-03-09

Similar Documents

Publication Publication Date Title
KR102108386B1 (ko) 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
KR102663812B1 (ko) 데이터의 인코딩과 디코딩을 위한 메모리 시스템
JP5687062B2 (ja) レートコンパチブルパンクチャドコードをサポートするメモリコントローラ
KR20170028160A (ko) 에러 정정기를 포함하는 메모리 시스템 및 그것의 동작 방법
US9673840B2 (en) Turbo product codes for NAND flash
US9141467B2 (en) Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
KR101519626B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
KR101991911B1 (ko) 비트 상태 맵핑 동작을 수행하는 코드 변조 인코더와 코드 변조 디코더를 포함하는 메모리 컨트롤러, 그것을 포함하는 데이터 저장 장치 및 플래시 메모리 시스템
US8650458B2 (en) Methods of encoding/decoding for error correction code utilizing interdependent portions of codewords and related circuits
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US11016844B2 (en) Error correction code structure
US11687408B2 (en) Memory sub-system codeword quality metrics streaming
KR20170069881A (ko) 반도체 메모리 장치와 연결된 컨트롤러 및 그것의 동작 방법
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
CN111696615A (zh) 存储器系统和操作存储器系统的方法
US10942805B2 (en) Error correcting circuit performing error correction on user data and error correcting method using the error correcting circuit
KR102513782B1 (ko) 컨트롤러 및 그것의 동작 방법
CN106788465B (zh) 用于涡轮乘积码的装置和方法
US9160371B2 (en) Memory controller, storage device and memory control method
US11689216B1 (en) Low gate-count generalized concatenated code (GCC) by online calculation of syndromes instead of buffer
KR20170067656A (ko) Nand 플래시용 터보 프로덕트 코드