KR20210062845A - 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터 - Google Patents

비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터 Download PDF

Info

Publication number
KR20210062845A
KR20210062845A KR1020190151005A KR20190151005A KR20210062845A KR 20210062845 A KR20210062845 A KR 20210062845A KR 1020190151005 A KR1020190151005 A KR 1020190151005A KR 20190151005 A KR20190151005 A KR 20190151005A KR 20210062845 A KR20210062845 A KR 20210062845A
Authority
KR
South Korea
Prior art keywords
data
parity bits
bits
state
generating
Prior art date
Application number
KR1020190151005A
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 KR1020190151005A priority Critical patent/KR20210062845A/ko
Priority to US16/891,517 priority patent/US11150987B2/en
Priority to CN202010839192.0A priority patent/CN112837738A/zh
Publication of KR20210062845A publication Critical patent/KR20210062845A/ko

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • 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
    • 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
    • G06F11/1032Simple parity
    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/47Error detection, forward error correction or error protection, not provided for in groups H03M13/01 - H03M13/37

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

비휘발성 메모리 장치의 동작 제어 방법은, 채널 정보에 기초하여 입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공하는 단계, 상기 ECC 패리티 비트들의 값을 발생하는 단계, 상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하도록 상기 스테이트 쉐이핑 패리티 비트들의 값을 발생하는 단계, 상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생하는 단계, 상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생하는 단계 및 상기 코드워드에 기초하여 상기 비휘발성 메모리 장치에 기입 데이터를 기입하는 단계를 포함한다.

Description

비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터{Method of controlling operation of nonvolatile memory device and data converter for performing the same}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터에 관한 것이다.
데이터를 저장하기 위한 반도체 메모리 장치는 크게 휘발성(volatile) 메모리 장치와 비휘발성(non-volatile) 메모리 장치로 대별될 수 있다. 셀 커패시터의 충전 또는 방전에 의해 데이터가 저장되는 디램(DRAM: Dynamic Random Access Memory) 등의 휘발성 메모리 장치는 전원이 인가되는 동안에는 저장된 데이터가 유지되지만 전원이 차단되면 저장된 데이터가 손실된다. 한편, 비휘발성 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 휘발성 메모리 장치는 주로 컴퓨터 등의 메인 메모리로 사용되고, 비휘발성 메모리 장치는 컴퓨터, 휴대용 통신기기 등 넓은 범위의 응용 기기에서 프로그램 및 데이터를 저장하는 대용량 메모리로 사용되고 있다.
반도체 메모리 장치의 집적도를 향상시키기 위하여 수직형(vertical) 낸드 메모리 장치와 같이 메모리 셀들이 3차원으로 적층되는 비휘발성 메모리 장치가 활발히 연구되고 있다. 또한 메모리 용량을 증가시키기 위해 하나의 메모리 셀에 복수의 비트들을 저장하는 멀티 레벨 셀(MLC) 방식이 이용되고 있다. 이 경우, 메모리 셀에 프로그램되는 상태들의 수가 증가하여 메모리 셀의 열화가 증가하고 비휘발성 메모리 장치의 동작 속도가 저하된다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 비휘발성 메모리 장치의 신뢰성을 향상시킬 수 있는 비휘발성 메모리 장치의 동작 제어 방법을 제공하는 것이다.
또한 본 발명의 일 목적은, 비휘발성 메모리 장치의 신뢰성을 향상시킬 수 있는 데이터 컨버터 및 이를 포함하는 스토리지 시스템을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법은, 메모리 셀들의 각각에 복수의 비트들을 저장하는 비휘발성 메모리 장치의 동작 제어 방법으로서, 채널 정보에 기초하여 입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공하는 단계, 상기 ECC 패리티 비트들의 값을 발생하는 단계, 상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하도록 상기 스테이트 쉐이핑 패리티 비트들의 값을 발생하는 단계, 상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생하는 단계, 상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생하는 단계, 및 상기 코드워드에 기초하여 상기 비휘발성 메모리 장치에 기입 데이터를 기입하는 단계를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 데이터 컨버터는, 메모리 셀들의 각각에 복수의 비트들을 저장하는 비휘발성 메모리 장치의 동작을 제어하기 위한 데이터 컨버터로서, 입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공하는 채널 선택기, 상기 ECC 패리티 비트들을 발생하는 ECC 비트 발생기, 상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하는 값을 갖도록 상기 스테이트 쉐이핑 패리티 비트들을 발생하는 쉐이핑 비트 발생기, 상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생하는 데이터 정렬기, 상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생하는 인코더를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 메모리 시스템은,
메모리 셀들의 각각에 복수의 비트들을 저장하는 비휘발성 메모리 장치 및 상기 비휘발성 메모리 장치의 동작을 제어하기 위한 데이터 컨버터를 포함하는 메모리 콘트롤러를 포함한다. 상기 데이터 컨버터는, 입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공하는 채널 선택기, 상기 ECC 패리티 비트들의 값을 발생하는 ECC 비트 발생기, 상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하도록 상기 스테이트 쉐이핑 패리티 비트들의 값을 발생하는 쉐이핑 비트 발생기, 상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생하는 데이터 정렬기, 상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생하는 인코더 및 상기 타겟 상태들이 기입되는 메모리 셀들의 개수가 0이 되는 기입 데이터를 발생하도록 상기 코드워드를 변환하는 상태 변환기를 포함한다.
본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터는 스테이트 쉐이핑 동작 및 ECC 동작을 동시에 수행하여 멀티 레벨 셀의 복수의 상태들 중에서 일부 상태를 감소 또는 제거함으로써 비휘발성 메모리 장치 및 이를 포함하는 시스템의 신뢰성을 향상시킬 수 있다.
또한 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법 및 데이터 컨버터는 문턱 전압 분포가 높은 상태를 제거함으로써 프로그램 동작 및 독출 동작을 위한 전압의 개수 및 전압 레벨을 감소하고 메모리 셀의 열화를 감소하고 비휘발성 메모리 장치 및 이를 포함하는 시스템의 동작 속도를 향상시킬 수 있다.
또한 본 발명의 실시예들에 따른 데이터 컨버터는 폴라 코드와 같은 하나의 코드로 스테이트 쉐이핑 동작과 ECC 동작을 동시에 수행하기 때문에 스테이트 쉐이핑 로직과 ECC 로직이 공유되면서 회로의 구조를 단순화하고 점유 면적을 감소할 수 있다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 4는 도 3의 비휘발성 메모리 장치의 메모리 셀 어레이를 나타내는 블록도이다.
도 5는 도 4의 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 6은 본 발명의 실시예들에 따른 데이터 컨버터를 나타내는 블록도이다.
도 7은 도 6의 데이터 컨버터에 포함되는 죠인트 인코더의 일 실시예를 나타내는 블록도이다.
도 8은 도 7의 데이터 컨버터에 포함되는 데이터 정렬기의 동작을 설명하기 위한 도면이다.
도 9 및 10은 폴라 코드를 이용한 인코딩 및 디코딩을 설명하기 위한 도면들이다.
도 11은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 방법이 적용될 수 있는 멀티 레벨 셀의 상태들의 일 예를 나타내는 도면이다.
도 12 및 13은 본 발명의 실시예들에 따른 동작 방법이 적용될 수 있는 독출 시퀀스를 설명하기 위한 도면들이다.
도 14 내지 18은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법에 의한 기입 동작을 나타내는 도면들이다.
도 19는 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법에 의해 기입된 상태들의 일 예를 나타내는 도면이다.
도 20은 본 발명의 실시예들에 따른 에스에스디(SSD: solid state disk or solid state drive)를 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법을 나타내는 순서도이다.
도 1에는 메모리 셀들의 각각에 복수의 비트들을 저장하는 멀티 레벨 셀(MLC, multi-level cell)들을 포함하는 비휘발성 메모리 장치의 동작 제어 방법이 도시되어 있다.
도 1을 참조하면, 채널 정보에 기초하여 입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공한다(S100). 일 실시예에서 상기 채널 정보는 폴라 코드(polar code)의 채용시 채널 편향에 따라 복수의 채널들 중에서 정보 비트들을 전송하기에 적합한 채널들에 관한 정보일 수 있다.
상기 ECC 패리티 비트들의 값을 발생한다(S200). 일 실시예에서, 상기 ECC 패리티 비트들의 값은 상기 입력 데이터에 관계 없이 고정된 값일 수 있다. 다른 실시예에서, 상기 ECC 패리티 비트들의 값은 상기 입력 데이터에 의존하는 값일 수 있다.
상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하도록 상기 스테이트 쉐이핑 패리티 비트들의 값을 발생한다(S300). 도 14 내지 19를 참조하여 후술하는 바와 같이, 상기 타겟 상태는 상기 복수의 상태들 중에서 문턱 전압 분포가 가장 높은 상태를 포함할 수 있다.
상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생한다(S400). 이러한 데이터 비트들의 정렬에 대해서는 도 8을 참조하여 후술한다.
상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생한다(S500). 일 실시예에서, 폴라 코드를 이용하여 상기 정렬 벡터에 대한 인코딩을 수행하여 상기 코드워드를 발생할 수 있다.
상기 타겟 상태들이 기입되는 메모리 셀들의 개수가 0이 되는 기입 데이터를 발생하도록 상기 코드워드를 변환하고(S600), 상기 비휘발성 메모리 장치에 상기 기입 데이터를 기입한다(S700). 실시예에 따라서, 상기 코드워드를 상기 기입 데이터로 변환하는 단계(S600)를 생략하고 상기 코드워드 자체를 상기 비휘발성 메모리 장치에 기입되는 상기 기입 데이터로서 제공할 수도 있다.
종래 기술은 데이터 쉐이핑(data shaping) 또는 스테이트 쉐이핑(state shaping) 후에 ECC(error check and correction, 또는 error correction code) 인코딩을 수행하기 때문에 ECC 패리티 부분은 데이터 쉐이핑이 적용되지 않았다. 그로 인하여 동일한 워드라인 또는 페이지 내에 쉐이핑이 적용된 셀들과 적용되지 않은 셀들간 신뢰성 차이가 발생할 수 있다. 또한, 종래의 방법으로는 쉐이핑이 적용된 부분은 특정 상태들을 제거할 수 있지만, 쉐이핑 이후에 ECC 인코딩을 수행하기 때문에 ECC 패리티 부분은 특정 상태들을 완전히 제거할 수 없었다.
본 발명은 비휘발성 메모리 장치에 대한 기입 동작 또는 프로그램 수행 시 특정 데이터 패턴에 의해서 메모리 셀들 사이에 발생하는 교란(disturb) 및/또는 커플링(coupling)을 감소할 수 있도록 상기 타겟 상태들을 감소 또는 제거하기 위한 것이다. 본 발명의 실시예들에 따라서, 데이터 비트들, 스테이트 쉐이핑 비트들 및 ECC 패리티 비트들을 모두 포함하는 정렬 벡터에 대해서 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행함으로써 비휘발성 메모리 장치에 상기 타겟 상태가 기입되지 않도록 변환된 기입 데이터를 제공할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법은, 스테이트 쉐이핑 동작 및 ECC 동작을 동시에 수행하여 멀티 레벨 셀의 복수의 상태들 중에서 일부 상태를 감소 또는 제거함으로써 비휘발성 메모리 장치 및 이를 포함하는 시스템의 신뢰성을 향상시킬 수 있다.
도 2는 본 발명의 실시예들에 따른 메모리 시스템을 나타내는 블록도이다.
도 2를 참조하면, 메모리 시스템(10)은 메모리 컨트롤러(20) 및 적어도 하나의 메모리 장치(30)를 포함할 수 있다.
도 2에 도시된 메모리 장치(30)는 비휘발성 메모리 장치일 수 있고, 메모리 시스템(10)은 메모리 카드, USB 메모리, SSD 등과 같은 플래시 메모리를 기반으로 하는 데이터 저장 매체를 포함할 수 있다.
비휘발성 메모리 장치(30)는 메모리 컨트롤러(20)의 제어에 따라 소거, 기입 또는 독출 동작 등을 수행할 수 있다. 이를 위하여, 비휘발성 메모리 장치(30)는 입출력 라인을 통해 메모리 컨트롤러(20)로부터 커맨드(CMD), 어드레스(ADDR)를 수신하고, 메모리 컨트롤러(20)와 프로그램 동작 또는 독출 동작을 위한 데이터(DATA)를 송수신한다. 또한, 비휘발성 메모리 장치(30)는 제어 라인을 통하여 제어 신호(CTRL)를 수신할 수 있고, 비휘발성 메모리 장치(30)는 메모리 컨트롤러(20)로부터 파워(PWR)를 제공받을 수 있다.
메모리 컨트롤러(20)는 도 1을 참조하여 전술한 바와 같은 비휘발성 메모리 장치(30)의 동작 제어 방법을 위한 데이터 컨버터(DCON)(500)를 포함한다. 데이터 컨버터(500)에 대해서는 도 6을 참조하여 후술한다.
도 3은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 일 실시예를 나타내는 블록도이다.
도 3을 참조하면, 비휘발성 메모리 장치(30)는 메모리 셀 어레이(100), 어드레스 디코더(430), 페이지 버퍼 회로(410), 데이터 입출력 회로(420), 제어 회로(450) 및 전압 생성기(460)를 포함할 수 있다.
메모리 셀 어레이(100)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 어드레스 디코더(430)와 연결될 수 있다. 또한, 메모리 셀 어레이(100)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(410)와 연결될 수 있다.
메모리 셀 어레이(100)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(100)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(100)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 낸드 스트링들을 포함할 수 있다.
제어 회로(450)는 메모리 컨트롤러(20)로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(10)의 소거 루프, 프로그램 루프 및 독출 동작을 제어할 수 있다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함할 수 있고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다. 여기서 독출 동작은 노멀 독출 동작과 데이터 리커버리 독출 동작을 포함할 수 있다.
예를 들어, 제어 회로(450)는 커맨드 신호(CMD)에 기초하여 전압 생성기(460)를 제어하기 위한 제어 신호들(CTL) 및 페이지 버퍼 회로(410)를 제어하기 위한 제어 신호들(PBC)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(450)는 로우 어드레스(R_ADDR)를 어드레스 디코더(430)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(420)에 제공할 수 있다. 어드레스 디코더(430)는 복수의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(100)와 연결될 수 있다.
프로그램 동작 또는 독출 동작시, 어드레스 디코더(430)는 제어 회로(450)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WL) 중의 하나를 선택 워드 라인으로 결정하고, 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
또한, 프로그램 동작 또는 독출 동작시, 어드레스 디코더(430)는 제어 회로(450)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 스트링 선택 라인들(SSL) 중의 하나를 선택 스트링 선택 라인으로 결정하고, 나머지 스트링 선택 라인들을 비선택 스트링 선택 라인들로 결정할 수 있다.
전압 생성기(460)는 제어 회로(450)로부터 제공되는 제어 신호들(CTL)에 기초하여 비휘발성 메모리 장치(30)의 동작에 필요한 워드 라인 전압들(VWL)을 생성할 수 있다. 전압 생성기(460)로부터 생성되는 워드 라인 전압들(VWL)은 어드레스 디코더(430)를 통해 복수의 워드 라인들(WL)에 구동 전압들로서 인가될 수 있다.
예를 들어, 프로그램 동작시, 전압 생성기(460)는 선택 워드 라인에 프로그램 전압을 인가하고, 비선택 워드 라인들에는 프로그램 패스 전압을 인가할 수 있다. 또한 프로그램 검증 동작시, 전압 생성기(460)는 선택 워드 라인에 검증 독출 전압을 인가하고, 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다.
또한, 통상의 독출 동작시, 전압 생성기(460)는 선택 워드 라인에 노말 독출 전압을 인가하고, 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다. 또한 데이터 리커버 독출 동작시, 전압 생성기(460)는 선택 워드 라인에 인접한 워드 라인에 독출 전압을 인가하고, 선택 워드 라인에는 리커버 독출 전압을 인가할 수 있다.
페이지 버퍼 회로(410)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(100)와 연결될 수 있다. 페이지 버퍼 회로(410)는 복수의 페이지 버퍼를 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(410)는 프로그램 동작시 선택된 페이지에 프로그램될 데이터 또는 기입 데이터를 임시로 저장하고, 독출 동작시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(420)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(410)와 연결될 수 있다. 프로그램 동작시, 데이터 입출력 회로(420)는 메모리 컨트롤러(20)로부터 프로그램 데이터(DATA)를 수신하고, 제어 회로(450)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 프로그램 데이터(DATA)를 페이지 버퍼 회로(410)에 제공할 수 있다. 독출 동작시, 데이터 입출력 회로(420)는 제어 회로(450)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(410)에 저장된 독출 데이터(DATA)를 상기 메모리 컨트롤러(20)에 제공할 수 있다.
또한, 페이지 버퍼 회로(410)와 입출력 회로(420)는 메모리 셀 어레이(100)의 제1 저장 영역으로부터 데이터를 독출하고, 독출된 데이터를 메모리 셀 어레이(100)의 제2 저장 영역에 기입할 수 있다. 즉, 페이지 버퍼 회로(410)와 입출력 회로(420)는 카피-백(copy-back) 동작을 수행할 수 있다. 페이지 버퍼 회로(410)와 입출력 회로(420)는 제어 회로(450)에 의하여 제어될 수 있다.
이하, 기판 상면에 실질적으로 수직한 방향을 제1 방향(D1), 상기 기판 상면에 평행하면서 서로 교차하는 두 방향을 각각 제2 방향(D2) 및 제3 방향(D3)으로 정의한다. 예를 들면, 제2 방향(D2) 및 제3 방향(D3)은 실질적으로 서로 수직하게 교차할 수 있다. 제1 방향(D1)은 수직 방향, 제2 방향(D2)은 행 방향, 제3 방향(D3)은 열 방향이라 칭할 수도 있다.
도 4는 도 3의 비휘발성 메모리 장치의 메모리 셀 어레이를 나타내는 블록도이고, 도 5는 도 4의 메모리 블록의 등가 회로를 나타내는 회로도이다.
도 4에 도시된 바와 같이, 메모리 셀 어레이(100)는 복수의 메모리 블록들(BLK1~BLKz)을 포함할 수 있다. 메모리 블록들(BLK1~BLKz)은 어드레스 디코더(430)에 의해 선택된다. 예를 들면, 어드레스 디코더(430)는 메모리 블록들(BLK1~BLKz) 중 블록 어드레스에 대응하는 메모리 블록을 선택할 수 있다.
도 5에 도시된 메모리 블록(BLKi)은 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 블록을 나타낸다. 예를 들어, 메모리 블록(BLKi)에 포함되는 복수의 메모리 낸드 스트링들은 상기 기판과 수직한 제1 방향(D1)으로 형성될 수 있다.
도 5를 참조하면, 메모리 블록(BLKi)은 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 셀 스트링들, 즉 복수의 메모리 낸드 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 낸드 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다. 도 12에는 복수의 메모리 낸드 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 게이트 라인(GTL1, GTL2, ..., GTL8)에 연결될 수 있다. 게이트 라인(GTL1, GTL2, ..., GTL8)은 워드 라인들에 해당할 수 있으며, 게이트 라인(GTL1, GTL2, ..., GTL8)의 일부는 더미 워드 라인에 해당할 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, GTL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다. 한편, 도면에 도시하지는 않았으나 중간 스위칭 라인에 해당하는 게이트 라인은 후술하는 바와 같이 분리될 수 있다. 도 5에는 메모리 블록(BLK)이 여덟 개의 게이트 라인(GTL1, GTL2, ..., GTL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
도 5를 참조하여 삼차원 낸드 플래시 장치 또는 수직형 낸드 플래시 장치에 대해서 설명하였으나, 본 발명의 실시예들에 따른 비휘발성 메모리 장치는 각 메모리 셀에 복수의 비트들이 저장될 수 있는 임의의 비휘발성 메모리 장치일 수 있다. 예를 들어, 비휘발성 메모리 장치는 PRAM (Phase-change random access memory), MRAM (Magnetic random access memory), RRAM (Resistive random access memory), FRAM (Ferroelectric random access memory) 등을 포함할 수 있다.
도 6은 본 발명의 실시예들에 따른 데이터 컨버터를 나타내는 블록도이다.
도 6을 참조하면, 데이터 컨버터(500)는 죠인트 인코딩부(JENC)(600) 및 죠인트 디코딩부(JDEC)(700)를 포함할 수 있다.
죠인트 인코딩부(600)는 입력 데이터(IDATA)를 수신하여 스테이트 쉐이핑 및 ECC 인코딩을 수행하여 기입 데이터(WDATA)를 발생한다. 기입 데이터(WDATA)는 비휘발성 메모리 장치(NVM)에 제공되어 기입된다.
죠인트 디코딩부(700)는 비휘발성 메모리 장치(NVM)로부터 독출된 독출 데이터(RDATA)를 수신하여 ECC 디코딩 및 디쉐이핑(deshaping)을 수행하여 에러가 정정된 데이터(ECDATA)를 발생한다. 죠인트 디코딩부(700)는 죠인트 인코딩부(600)와 상호연관되어 동작할 수 있다. 이를 위해, 죠인트 디코딩부(700)는 죠인트 인코딩부(600)에서 이용되는 동작 정보를 함께 공유할 수 있다. 도 6에는 죠인트 인코딩부(600)와 죠인트 디코딩부(700)가 별개의 구성요소들로 구현된 예를 도시하였으나, 실시예들에 따라서, 죠인트 인코딩부(600)와 죠인트 디코딩부(700)는 일부 구성요소를 공유할 수 있다.
일 실시예에서, 죠인트 인코딩부(600)는 폴라 코드를 이용하여 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행할 수 있다. 이 경우, 죠인트 인코딩부(600)는 ECC 패리티 비트들과 데이터 비트들을 기초로 하여 연속 제거(successive cancellation) 인코딩 또는 리스트 연속 제거(list successive cancellation) 인코딩을 수행하여 스테이트 쉐이핑 패리티 비트들을 결정할 수 있다. 죠인트 디코딩부(700)는 독출 데이터(RDATA)에 대하여 연속 제거(successive cancellation) 디코딩 또는 리스트 연속 제거(list successive cancellation) 디코딩을 수행하여 독출 데이터(RDATA)에 포함된 에러를 정정할 수 있다.
도 7은 도 6의 데이터 컨버터에 포함되는 죠인트 인코더의 일 실시예를 나타내는 블록도이다.
도 7을 참조하면, 죠인트 인코더(600)는 채널 선택기(CSEL), ECC 비트 발생기(EBG), 쉐이핑 비트 발생기(SBG), 데이터 정렬기(ALGN), 인코더(ENC), 상태 변환기(SCON), 인디케이터 데이터 발생기(INDG) 및 버퍼(BUFF)를 포함할 수 있다. 실시예에 따라서, 상태 변환기(SCON)는 생략될 수도 있고, 채널 선택기(CSEL)는 죠인트 인코더(600)의 외부에 구현될 수도 있다.
채널 선택기(CSEL)는 입력 데이터(IDATA)의 데이터 비트들(DB)의 위치, 입력 데이터(IDATA)의 에러 정정을 위한 ECC 패리티 비트들(EB)의 위치 및 스테이트 쉐이핑 패리티 비트들(SB)의 위치를 나타내는 채널 선택 정보(CSI)를 제공할 수 있다.
ECC 비트 발생기(EBG)는 ECC 패리티 비트들(EB)을 발생할 수 있다. 쉐이핑 비트 발생기(SBG)는 상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하는 값을 갖도록 상기 스테이트 쉐이핑 패리티 비트들을 발생할 수 있다.
데이터 정렬기(ALGN)는 채널 선택 정보(CSI)에 기초하여 데이터 비트들(DB), ECC 패리티 비트들(EB) 및 스테이트 쉐이핑 패리티 비트들(SB)을 정렬하여 정렬 벡터(u)를 발생할 수 있다.
인코더(ENC)는 정렬 벡터(u)에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드(x)를 발생할 수 있다. 일 실시예에서 인코더(ENC)는 정렬 벡터(u)에 폴라 코드의 생성 행렬(generator matrix)을 곱하여 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행할 수 있다.
상태 변환기(SCON)는 코드워드(x)를 변환하여 상기 타겟 상태들이 기입되는 메모리 셀들의 개수가 0이 되는 기입 데이터(WDATA)를 발생할 수 있다. 상태 변환기(SCON)가 생략되는 경우, 코드워드(x)가 그대로 기입 데이터(WDATA)로서 비휘발성 메모리 장치에 제공될 수 있다.
일 실시예에서, 인코더(ENC)는 폴라 코드(polar code)를 이용하여 정렬 벡터(u)에 대한 인코딩을 수행하여 코드워드(x)를 발생할 수 있다. 이 경우, 채널 선택기(CSEL)는 바타차리야 패러미터(Bhattacharyya parameter)의 값에 기초하여 채널 선택 정보(CSI)를 결정할 수 있다. 예를 들어, 채널 선택기(CSEL)는 바타차리야 패러미터의 값들을 오름차순으로 정렬한 순서에 기초하여 쉐이핑 패리티 비트들의 위치를 결정하고, 바타차리야 패러미터의 값들을 내림차순으로 정렬한 순서에 기초하여 ECC 패리티 비트들의 위치를 결정할 수 있다.
일 실시예에서, ECC 비트 발생기(EBG)는 입력 데이터(IDATA)에 관계 없이 고정된 값을 갖도록 ECC 패리티 비트들(EB)을 발생할 수 있다. 예를 들어, 인코더(ENC)는 폴라 코드(polar code)를 이용하여 정렬 벡터(u)에 대한 인코딩을 수행하는 경우, ECC 패리티 비트들(EB)은 모두 0의 값을 갖는 프로즌 비트들(static frozen bit)로 설정될 수 있다.
다른 실시예에서, ECC 비트 발생기(EBG)는 입력 데이터(IDATA)에 의존하는 값을 갖도록 ECC 패리티 비트들(EB)의 값을 발생할 수 있다. ECC 비트 발생기(EBG)의 방식에 따라서, 데이터 비트들(DB)과 ECC 패리티 비트들(EB)은 인코디드 데이터 비트들로서 불가분적으로 통합될 수 있다(dynamic frozen bit).
일 실시예에서, 쉐이핑 비트 발생기(SBG)는 입력 데이터(IDATA), ECC 패리키 비트들(EB) 및 인디케이터 데이터(IND)에 기초하여 연속 제거 인코딩 또는 리스트 연속 제거 인코딩을 수행하여 쉐이핑 패리티 비트들(SB)을 발생할 수 있다.
감소 또는 제거하고자 하는 타겟 상태의 비트-매핑(bit-mapping)이 (b1, b2, , bm)이라고 가정할 때, 비휘발성 메모리 장치에 기입되는 첫번째 페이지의 로그우도비(LLR, log-likelihood ratio)는 수학식 1 및 2와 같이 결정될 수 있다.
[수학식 1]
LLR=log2{Pr(y=0)/Pr(y=1)}
[수학식2]
LLR=log2{p/(1-p)} (b1=0일 때)
LLR=log2{(1-p)/p} (b1=1일 때)
수학식 1 및 2에서, y는 전술한 코드워드의 비트값이고, p는 타겟 상태의 감소 정도에 관계되는 타겟 확률로서 0.5보다 작은 값으로 설정된다. 결과적으로 수학식 2로부터 인디케이터 데이터의 비트값에 관계없이 b1=0 일 때 LLR의 부호값은 -1이 되고, b1=1일 때 LLR의 부호값은 1이 된다.
한편, i번째(i는 2이상의 자연수) 페이지의 로그우도비(LLR)는 수학식 3 및 4와 같이 결정될 수 있다.
[수학식 3]
LLR=log2{Pr(y=0|B)/Pr(y=1|B)}
[수학식 4]
LLR=log2{p/(1-p)} (bi=0 이고 B=1일 때)
LLR=log2{(1-p)/p} (bi=1 이고 B=1일 때)
LLR=0 (B=0일 때)
수학식 3 및 4에서, B는 인디케이터 데이터(IND)의 상응하는 비트값이다. 결과적으로 수학식 4로부터 bi=0 이고 B=1일 때 LLR의 부호값은 -1이 되고, bi=1이고 B=1일 때 LLR의 부호값은 1이 되고, B=0일 때 bi에 관계없이 LLR의 부호값은 0이 된다.
이와 같이, 인디케이터 데이터(IND)를 참조하여 연속 제거 인코딩 또는 리스트 연속 제거 인코딩을 수행함으로써 쉐이핑 패리키 비트들(SB)을 결정할 수 있다.
도 8은 도 7의 데이터 컨버터에 포함되는 데이터 정렬기의 동작을 설명하기 위한 도면이다.
도 8에는 채널 선택 정보(CSI), ECC 패리티 비트들(EB), 쉐이핑 패리티 비트들(SB), 입력 데이터(DB)의 데이터 비트들(DB) 및 이에 상응하는 정렬 벡터(u)의 일 예가 도시되어 있다. 도 8에 도시된 비트들의 비트수들은 도시의 편의를 위한 예시일 뿐이며, 채널 선택 정보(CSI), ECC 패리티 비트들(EB), 쉐이핑 패리티 비트들(SB), 입력 데이터(DB)의 데이터 비트들(DB)의 비트수들은 다양하게 결정될 수 있다. 실제 구현에 있어서, 데이터 변환의 단위가 되는 정렬 벡터(u)의 비트수는 수백 바이트 이상일 수 있으며, 정렬 벡터(u)의 비트수의 약 7%가 ECC 패리티 비트들(EB)에 해당하고, 약 3%가 쉐이핑 패리티 비트들(SB)에 해당하고, 나머지 약 90%가 데이터 비트들(DB)로서 할당될 수 있다.
도 7의 정렬기(ALGN)는, 도 8에 도시된 바와 같이, 채널 선택 정보(CSI)에 포함된 ECC 패리티 비트 위치(EBP)에, 즉 정렬 벡터(u)의 제1 비트(B1) 및 제5 비트(B5)에 ECC 패리티 비트들(EB0, EB1)을 정렬하고, 채널 선택 정보(CSI)에 포함된 쉐이핑 패리티 비트 위치(SBP)에, 정렬 벡터(u)의 제11 비트(B11) 및 제13 비트(B13)에 쉐이핑 패리티 비트들(SB0, SB1)을 정렬하고, 정렬 벡터(u)의 나머지 비트들(B0, B2, B3, B4, B6, B7, B8, B9, B10, B12, B14, B15)에 데이터 비트들(DB0~DB11)을 정렬할 수 있다.
도 9 및 10은 폴라 코드를 이용한 인코딩 및 디코딩을 설명하기 위한 도면들이다.
채널 양극화(Channel polarization)는 B-DMC(binary input discrete memoryless channel) W의 N 개의 독립적인 사본의 제1 세트로부터 N 개의 2진 입력 채널
Figure pat00001
의 제2 세트를 구성하는 동작으로서, N이 커질수록 대칭 채널 용량
Figure pat00002
이 1에 가까운 지표 i의 비율(fraction)은 I(W)로 표시되는 채널 용량에 가까워지고,
Figure pat00003
가 0에 가까운 비율은 1- I(W)에 접근한다.
채널 양극화 동작은 채널 결합 단계(channel combining phase) 및 채널 분할 단계(channel splitting phase)를 포함한다. 이러한 원칙을 기반으로 구성된 코드를 폴라 코드(또는 극 부호)(polar code)라고 한다. 다음 설명에서, 모든 스칼라, 벡터, 행렬 및 이들에 대한 연산은 이진 필드(binary field) GF(2) 상의 벡터 공간에서 수행된다. 그러나, 실시예들은 이진 필드(GF(2)) 상의 벡터 공간에 한정되지 않으며, 본 발명의 실시예들은 N이 양의 정수인 임의의 이산 필드(discrete field) GF(N) 상의 벡터 공간에 적용 가능하다. 커널(kernel)이 더 이상 2x2 행렬이 아닌 아리칸(Arikan)의 오리지널 코드에 대한 일반화가 있으며, 코드가 비-이진 알파벳(non-binary alphabets) 상에 구성되는 다른 일반화가 있다.
표기
Figure pat00004
는 행(row) 벡터 (a1, ..., aN)를 나타낸다. 폴라 코딩(Polar coding)은 각 좌표 채널
Figure pat00005
에 개별적으로 액세스할 수 있고 최대 우도 결정 오류 확률(probability of maximum-likelihood decision error)이 0에 가까운 부호를 통해 데이터를 전송하는 코딩 시스템을 생성한다. 폴라 코딩에서는
Figure pat00006
은 채널(WN)을 통해 전송되는 코드 워드(
Figure pat00007
)로 인코딩되고, 채널 출력은
Figure pat00008
이다.
채널 결합은 주어진 B-DMC W의 복사본을 재귀적으로 결합하여 벡터 채널 WN: XN -> YN을 생성한다. 여기서 N = 2n, n은 양의 정수이다. 합성 채널 WN 의 입력(
Figure pat00009
)을 기본 원시 채널 WN 의 입력(
Figure pat00010
)으로의 인코딩은
Figure pat00011
으로 표현될 수 있다. 여기서 GN 은 다음의 수학식 5에 의해 정의되는 생성 행렬(generator matrix)이다.
[수학식 5]
Figure pat00012
상기 수학식 1에서 GN은 상기 생성 행렬이고, BN은 비트-반전 행렬(bit-reversal matrix)이고, F2는 커널 매트릭스(kernel matrix)이고, F2 ⓧn 는 F2의 n번째 크로넥커 파워(n-th Kronecker power)이고, N=2n이다. 실시예에 따라서, 비트-반전 행렬(BN)은 생략될 수 있다.
두 채널(WN 및 WN)의 전이 확률(transition probabilities)은 다음 수학식 6과 같은 관계를 갖는다.
[수학식 6]
Figure pat00013
크기 K의 {1, ..., N}의 임의의 부분 집합 A에 대하여, 수학식6은 수학식 7로 표현될 수 있다.
[수학식 7]
Figure pat00014
여기서, GN(A)는 A에서 인덱스를 가지는 행(rows)에 의해 형성된 GN의 서브행렬을 나타낸다. uA 를 고정시키지 않고, A와
Figure pat00015
가 고정되면 소스 블록 uA 에서 코드 워드
Figure pat00016
으로의 매핑이 얻어진다. A는 정보 집합으로 불리며,
Figure pat00017
는 고정된 비트 또는 벡터로 불린다.
채널 분할은 WN 을 다음 수학식의 전이 확률(transition probabilities)로 정의되는 N 개의 이진 입력 좌표 채널들(binary-input coordinate channels)의 집합
Figure pat00018
으로 되돌린다.
[수학식 8]
Figure pat00019
수학식 8에서,
Figure pat00020
Figure pat00021
의 출력 및 ui 의 입력을 나타낸다.
도 9는 N = 8에 대한 인코더를 나타낸다. 회로에 대한 입력은
Figure pat00022
의 비트 반전된 버전(bit-reversed version), 즉
Figure pat00023
이다. 신호는 왼쪽에서 오른쪽으로 전달된다. 각 에지(edge)는 신호 0 또는 1을 전달한다. 각 노드는 왼쪽에서 들어오는 모든 에지의 신호를 더하고(mod-2), 오른쪽의 모든 에지로 결과를 보낸다.
출력은
Figure pat00024
에 의해 주어진다. 일반적으로, 이 구현의 복잡성은 BN에 대해서는 O(N),
Figure pat00025
Figure pat00026
에 대해서는 O (N log N)을 가지는 O(N log N) 이다.
도 10은 N = 8에 대한 디코더를 도시한다. 채널 출력이
Figure pat00027
이면, 디코더의 작업은 A,
Figure pat00028
, and
Figure pat00029
이 주어질 때,
Figure pat00030
의 추정치
Figure pat00031
를 생성하는 것이다. 디코더는
Figure pat00032
를 설정함으로써 고정된 부분을 고정하고, 이는 uA의 추정치(
Figure pat00033
)를 생성하는 디코딩 태스크를 줄인다. 디코더는 소스 벡터(
Figure pat00034
)의 각 요소(ui)에 대해 하나씩의 결정 요소(determination element)를 포함하며 일반적으로 그래프에 대한 노드 처리 일정(schedule)이 있다. 이는 특정 스케줄링에만 국한되지는 않으며, 모든 디코딩 알고리즘은, 하드웨어/소프트웨어 리소스에 따라 달라질 수 있는 가능한 자체 작업 스케줄 세트를 가지고 있다.
일정에 따라 데이터 처리가 그래프 내로 쇄도하고, 처리는 노드들에서 수행되고, 데이터는 에지를 기반으로 전송된다. 노드(ui)에 대해, 입력은 관심 비율(ratio of interest)을 생성하는 데 사용할 수 있는 임시 메시지일 수 있다.
도 10에 도시된 바와 같이, 본 발명의 비제한적인 실시 예에서, 결정 요소는 1에서 N까지의 순서로 활성화될 수 있다.
Figure pat00035
이고, 원소가 알려져 있으면, i 번째 결정 요소는 차례가 되면,
Figure pat00036
로 단순히 설정하여, 이 결과를 모든 후속 결정 요소에 보낸다.
모든 중간 노드는 두 개의 왼쪽 인접 노드가 처리를 끝내자마자, 특정 이전 결정(previous decisions)을 사용할 수 있게 되는 즉시 활성화될 수 있다.
Figure pat00037
이면, i 번째 결정 요소는 이전 결정(
Figure pat00038
)을 수신할 때까지 기다리고, 두 개의 왼쪽 노드가 자신의 처리를 끝내고, 이를 수신하자마자 이전의 결정과 임시 중간 노드 메시지에 기초하여, 수학식 9와 같은 우도 비(LR: likelihood ratio) 를 산출하고, 그 결정을 수학식 10과 같이 생성할 수 있으며, 그 결정은 모든 성공 결정 요소들로 전송된다.
[수학식 9]
Figure pat00039
[수학식 10]
Figure pat00040
이러한 알고리즘의 복잡성은 기본적으로 LR을 계산하는 복잡성에 의해 결정될 수 있다.
도 10의 각 노드는 알고리즘 과정에서 발생하는 LR 요청을 계산한다. 왼쪽에서 시작하여 노드의 첫 번째 열(column)은 길이 8(결정 레벨)의 LR 요청, 노드의 두 번째 열은 길이 4의 요청, 세 번째는 길이 2, 및 네 번째는 길이 1(채널 수준)에 해당한다. 그래프의 각 노드는 두 개의 라벨(label)을 가진다. 제1 라벨은 계산할 LR 값을 나타내며 제2 라벨은 이 노드가 활성화될 시기를 나타낸다. 도 10과 관련하여 도시된 노드 프로세싱의 스케줄은, 예시적이고 비 제한적임을 이해해야 한다.
도 11은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법이 적용될 수 있는 멀티 레벨 셀의 상태들의 일 예를 나타내는 도면이다.
도 11에는 각 메모리 셀이 3 비트의 데이터를 저장하는 TLC(triple level cell)의 제1 내지 제8 상태들(S1~S8)이 도시되어 있다. 도 11에서 가로축은 메모리 셀의 문턱 전압(VTH)을 나타내고 가로축은 문턱 전압(VTH)에 상응하는 메모리 셀의 개수를 나타낸다. 프로그램 동작시 제1 내지 제8 상태들(S1~S8)에 대한 프로그램 수행 결과는 제1 내지 제7 검증 독출 전압들(VVR1~VVR7)을 선택 워드 라인에 순차적으로 인가함으로써 판별될 수 있다. 또한, 프로그램 동작시 제1 내지 제8 상태들(S1~S8)은 도 12 및 13을 참조하여 후술하는 바와 같이 노말 독출 전압들(VR1~VR7)의 일부를 선택 워드 라인에 순차적으로 인가함으로써 판별될 수 있다.
도 12 및 13은 본 발명의 실시예들에 따른 동작 방법이 적용될 수 있는 독출 시퀀스를 설명하기 위한 도면들이다.
도 12에는 도 11의 제1 내지 제8 상태들(S1~S8)의 예시적인 비트 값들이 도시되어 있다. 제1 내지 제8 상태들(S1~S8)은 LSB, CSB 및 MSB 비트들로 이루어진 서로 다른 값들으로 구별될 수 있다. 예를 들어, 도 15에 예시된 바와 같이 제1 상태(S1)는 '111'에 상응하고, 제2 상태(S2)는 '110'에 상응하고, 제3 상태(S3)는 '100'에 상응하고, 제4 상태(S4)는 '000'에 상응하고, 제5 상태(S5)는 '010'에 상응하고, 제6 상태(S6)는 '011'에 상응하고, 제7 상태(S7)는 '001'에 상응하고, 제8 상태(S1)는 '101'에 상응할 수 있다.
이 경우, LSB를 판독하기 위해서는 제1 노말 독출 전압(VR1) 및 제5 노말 독출 전압(VR5)이 이용되고, CSB를 판독하기 위해서는 제2 노말 독출 전압(VR2), 제4 노말 독출 전압(VR4) 및 제6 노말 독출 전압(VR6)이 이용되고, MSB를 판독하기 위해서는 제3 노말 독출 전압(VR3) 및 제7 노말 독출 전압(VR7)이 이용될 수 있다.
도 13은 도 12의 예에 상응하는 하이-투-로우(high-to-low) 독출 시퀀스를 나타내는 도면이다.
LSB 독출 동작의 경우에는 제5 노말 독출 전압(VR5) 및 제1 노말 독출 전압(VR1)이 순차적으로 선택 워드 라인에 인가될 수 있다.
CSB 독출 동작의 경우에는 제6 노말 독출 전압(VR6), 제4 노말 독출 전압(VR4) 및 제2 노말 독출 전압(VR2)이 순차적으로 선택 워드 라인에 인가될 수 있다.
MSB 독출 동작의 경우에는 제7 노말 독출 전압(VR7) 및 제3 노말 독출 전압(VR3)이 순차적으로 선택 워드 라인에 인가될 수 있다.
도 14 내지 18은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법에 의한 기입 동작을 나타내는 도면들이다.
도 14는 도 11 및 12와 같은 메모리 셀들의 문턱전압 상태들을 보여준다. 도 14에서, 가로 축은 메모리 셀들의 문턱 전압을 가리키고, 세로 축은 메모리 셀들의 수를 가리킨다.
도 14를 참조하면, 예를 들어, 각 메모리 셀에 LSB, CSB 및 MSB가 기입될 수 있다. 각 메모리 셀에 기입되는 LSB, CSB 및 MSB의 값에 따라, 각 메모리 셀의 상태가 결정된다. LSB, CSB 및 MSB의 가능한 조합이 8가지 이므로, LSB, CSB 및 MSB가 기입되는 메모리 셀은 8개의 상태들(S1~S8) 중 하나를 가질 수 있다.
예를 들어, LSB가 '1'로 기입되고, CSB가 '1'로 기입되고, MSB가 '1'로 기입되는 메모리 셀은 제1 상태(S1)를 가질 수 있다. 제1 상태(S1)의 메모리 셀들은 제1 내지 제8 상태들(S1~S8) 중 가장 낮은 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '0'으로 기입되고, CSB가 '1'로 기입되고, MSB가 '1'로 기입되는 메모리 셀은 제2 상태(S2)를 가질 수 있다. 제2 상태(S2)의 메모리 셀들은, 제1 상태(S1)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '0'으로 기입되고, CSB가 '0'로 기입되고, MSB가 '1'로 기입되는 메모리 셀은 제3 상태(S3)를 가질 수 있다. 제3 상태(S3)의 메모리 셀들은, 제2 상태(S2)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '0'으로 기입되고, CSB가 '0'로 기입되고, MSB가 '0'로 기입되는 메모리 셀은 제4 상태(S4)를 가질 수 있다. 제4 상태(S4)의 메모리 셀들은, 제3 상태(S3)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '0'으로 기입되고, CSB가 '1'로 기입되고, MSB가 '0'로 기입되는 메모리 셀은 제5 상태(S5)를 가질 수 있다. 제5 상태(S5)의 메모리 셀들은, 제4 상태(S4)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '1'으로 기입되고, CSB가 '1'로 기입되고, MSB가 '0'로 기입되는 메모리 셀은 제6 상태(S6)를 가질 수 있다. 제6 상태(S6)의 메모리 셀들은, 제5 상태(S5)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '1'으로 기입되고, CSB가 '0'로 기입되고, MSB가 '0'로 기입되는 메모리 셀은 제7 상태(S7)를 가질 수 있다. 제7 상태(S7)의 메모리 셀들은, 제6 상태(S6)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
LSB가 '1'으로 기입되고, CSB가 '0'로 기입되고, MSB가 '1'로 기입되는 메모리 셀은 제8 상태(S8)를 가질 수 있다. 제8 상태(S8)의 메모리 셀들은, 제7 상태(S7)의 메모리 셀들의 문턱 전압 산포 범위보다 높은 레벨의 문턱 전압 산포 범위를 가질 수 있다.
도 14에 도시된 제1 내지 제8 상태들(S1~S8) 각각에 대응하는 LSB, CSB 및 MSB의 값들은, 본 발명의 기술적 사상의 이해를 돕기 위해 예시적으로 제시된 것이다. 제1 내지 제8 상태들(S1~S8) 각각에 대응하는 LSB, CSB, MSB의 값들은 다양하게 변경될 수 있다.
제1 내지 제8 상태들(S1~S8) 중 제8 상태(S8)의 문턱 전압 산포 범위의 레벨이 가장 높다. 제8 상태(S8)를 프로그램하기 위해서는 가장 높은 프로그램 전압이 워드라인에 인가되어야 하고, 따라서 제8 상태(S8)의 프로그램시 동일한 워드라인에 연결된 메모리 셀의 열화가 가장 크게 발생하게 된다. 예를 들어, 이와 같이 문턱 전압 분포가 가장 높은 제8 상태(S8)가 본 발명의 실시예들에 따라서 제거되는 타겟 상태에 해당할 수 있다.
도 15 내지 도 17은 LSB 데이터, CSB 데이터 및 MSB 데이터에 대해 인코딩이 수행된 때의 메모리 셀들의 문턱 전압 산포들의 변화들을 보여준다. 도 15 내지 도 17에서, 가로 축은 메모리 셀들의 문턱 전압을 가리키고, 세로 축은 메모리 셀들의 수를 가리킨다.
도 15를 참조하면, 메모리 셀들에 LSB로 기입되는 기입 데이터에서, 가장 높은 제8 상태(S8)의 LSB의 값에 대응하는 비트들의 수가 감소되도록 기입 데이터가 인코딩될 수 있다. 예를 들어, 가장 높은 제8 상태(S8)의 LSB의 값인 '1'의 값을 갖는 비트들이 감소되도록, 기입 데이터가 인코딩될 수 있다. 예를 들어, 기입 데이터에서, '1'의 값을 갖는 비트들 중 일부는 '0'의 값을 갖도록 변환될 수 있다.
제1 내지 제8 상태들(S1~S8) 중 제1 상태(S1) 및 제6 내지 제8 상태들(S6~S8)의 LSB의 값이 '1'이다. '1'의 값을 갖는 비트들의 수가 감소되도록 기입 데이터가 변환되면, 제1 상태(S1) 및 제6 내지 제8 상태들(S6~S8)을 갖는 메모리 셀들의 수가 감소한다. 또한, 기입 데이터에서 '0'의 값을 갖는 비트들의 수가 증가하므로, 제2 내지 제5 상태들(S2~S5)을 갖는 메모리 셀들의 수는 증가한다.
도 15에서, LSB 데이터가 인코딩되기 전의 메모리 셀들의 문턱 전압 산포는 점선으로 도시되어 있고, LSB 데이터가 인코딩된 후의 메모리 셀들의 문턱 전압 산포는 실선으로 도시되어 있다.
예를 들어, 기입 데이터에 대해 전술한 인디케이터 데이터에 기초한 참조 인코딩(Referred Encoding)이 수행될 수 있다. 참조 인코딩은 기입 데이터가 기입되는 메모리 셀들에 이미 저장된 하위 데이터에 기초하여 인디케이터 데이터(IND)를 제공하고, 인디케이터 데이터(IND)에 기초하여 기입 데이터의 스테이트 쉐이핑 패리티 비트들의 값을 발생하는 것을 말한다.
메모리 셀들에 이미 저장된 하위 데이터의 값이 타겟 상태들의 하위 비트들의 값과 일치하는 인디케이터 데이터(IND)의 각 비트는 1의 값을 갖고, 메모리 셀들에 이미 저장된 상기 하위 데이터의 값이 상기 타겟 상태들의 하위 비트들의 값과 일치하지 않는 인디케이터 데이터(IND)의 각 비트는 0의 값을 가질 수 있다.
한편, 메모리 셀들에 이미 저장된 하위 데이터가 존재하지 않고 기입 데이터가 상기 메모리 셀들에 최초로 기입되는 경우에는 인디케이터 데이터(IND)의 모든 비트들은 1의 값을 가질 수 있다. 도 15의 LSB 데이터의 인코딩의 경우에는 메모리 셀들에 이미 저장된 하위 데이터가 존재하지 않으므로 인디케이터 데이터(IND)의 모든 비트들은 1의 값을 가질 수 있다.
도 16을 참조하면, 메모리 셀들에 CSB로 기입되는 기입 데이터에서, 가장 높은 제8 상태(S8)의 CSB의 값에 대응하는 비트들의 수가 감소되도록 기입 데이터가 인코딩될 수 있다.
기입 데이터가 CSB 데이터인 경우, LSB 데이터는 기입 데이터의 하위 데이터이다. 참조 인코딩의 경우, 메모리 셀들에 기입된 LSB 데이터(예를 들어, 인코딩된 데이터) 중에서, 가장 높은 제8 상태(S8)의 LSB의 값을 갖는 비트들이 검출된다. 기입 데이터 중에서, 검출된 비트들에 대응하고 그리고 가장 높은 제8 상태(S8)의 CSB의 값을 갖는 비트들의 수가 감소되도록, 기입 데이터가 인코딩된다. 예를 들어, 검출된 비트들에 대응하고, 가장 높은 제8 상태(S8)의 CSB의 값인 '0'의 값을 갖는 비트들이 감소되도록, 기입 데이터가 인코딩될 수 있다. 예를 들어, LSB로서 '1'이 기입되는 메모리 셀들에 기입되는 CSB 데이터 중 '0'의 값을 갖는 비트들이 감소되도록, 인코딩이 수행될 수 있다.
제1 내지 제8 상태들(S1~S8) 중 LSB의 값이 가장 높은 제8 상태(S8)의 LSB의 값과 일치하는 상태들은 제1 상태(S1) 및 제6 내지 제8 상태들(S6~S8)이다. 제1 상태(S1) 및 제6 내지 제8 상태들(S6~S8) 중에서, 가장 높은 제8 상태(S8)의 CSB의 값과 일치하는 CSB를 갖는 상태들은 제7 및 제8 상태들(S7, S8)이다. 따라서, 제7 및 제8 상태들(S7, S8)을 갖는 메모리 셀들의 수가 감소한다. 또한, 제1 내지 제6 상태들(S1~S6)을 갖는 메모리 셀들의 수는 증가한다.
도 16의 참조 인코딩에서, LSB 데이터만 인코딩되고 CSB 데이터가 인코딩되기 전의 메모리 셀들의 문턱 전압 산포는 점선으로 도시되어 있고, LSB 데이터 및 CSB 데이터가 인코딩된 후의 메모리 셀들의 문턱 전압 산포는 실선으로 도시되어 있다.
도 16에 도시된 바와 같이, 메모리 셀들에 이미 저장된 하위 데이터에 해당하는 LSB의 값이 타겟 상태에 해당하는 제8 상태(S8)의 하위 비트들의 값과 일치하는 인디케이터 데이터(IND)의 비트들은 1의 값을 갖고, 메모리 셀들에 이미 저장된 LSB의 값이 제 8상태(S8)의 하위 비트들의 값과 일치하지 않는 인디케이터 데이터(IND)의 비트들은 0의 값을 가질 수 있다.
도 17을 참조하면, 메모리 셀들에 MSB로 기입되는 기입 데이터에서, 가장 높은 제8 상태(S8)의 MSB의 값에 대응하는 비트들의 수가 감소되도록 기입 데이터가 인코딩될 수 있다.
기입 데이터가 MSB 데이터이므로, LSB 데이터 및 CSB 데이터는 MSB 데이터인 기입 데이터의 하위 데이터이다. 참조 인코딩의 경우, 메모리 셀들에 기입된 LSB 데이터(예를 들어, 인코딩된 데이터) 및 CSB 데이터(예를 들어, 인코딩된 데이터) 중에서, 가장 높은 제8 상태(S8)의 LSB의 값 및 CSB의 값을 갖는 비트들이 검출된다. 예를 들어, LSB 데이터(예를 들어, 인코딩된 데이터) 중에서 가장 높은 제8 상태(S8)의 LSB의 값을 갖는 비트들이 기입되고, 그리고 CSB 데이터(예를 들어, 인코딩된 데이터) 중에서 가장 높은 제8 상태(S8)의 CSB의 값을 갖는 비트들의 위치들이 검출될 수 있다. 기입 데이터 중에서, 검출된 위치들에 대응하고 그리고 가장 높은 제8 상태(S8)의 CSB의 값을 갖는 비트들의 수가 감소되도록, 기입 데이터가 인코딩된다. 예를 들어, 기입 데이터 중에서, 검출된 위치들에 기입되고 그리고 가장 높은 제8 상태(S8)의 MSB의 값인 '1'의 값을 갖는 비트들의 수가 감소되도록, 기입 데이터가 인코딩될 수 있다. 예를 들어, LSB로서 '1'이 기입되고, CSB로서 '0'이 기입되는 메모리 셀들에 기입되는 MSB 데이터 중 '1'의 값을 갖는 비트들이 감소되도록, 인코딩이 수행될 수 있다.
제1 내지 제8 상태들(S1~S8) 중에서, LSB의 값이 가장 높은 제8 상태(S8)의 LSB의 값과 일치하고 그리고 CSB의 값이 가장 높은 제8 상태(S8)의 CSB의 값과 일치하는 상태들은 제7 및 제8 상태들(S7, S8)이다. 제7 및 제8 상태들(S7, S8) 중에서, 가장 높은 제8 상태(S8)의 MSB의 값과 일치하는 MSB의 값을 갖는 상태는 제8 상태(S8)이다. 따라서, 제8 상태(S8)를 갖는 메모리 셀들의 수가 감소한다. 또한, 제1 내지 제7 상태들(S1~S7)을 갖는 메모리 셀들의 수는 증가한다.
도 17의 참조 인코딩에서, LSB 데이터 및 CSB 데이터만 인코딩되고 MSB 데이터가 인코딩되기 전의 메모리 셀들의 문턱 전압 산포는 점선으로 도시되어 있고, LSB 데이터, CSB 데이터 및 MSB 데이터가 인코딩된 후의 메모리 셀들의 문턱 전압 산포는 실선으로 도시되어 있다.
도 17에 도시된 바와 같이, 메모리 셀들에 이미 저장된 하위 데이터에 해당하는 LSB 및 CSB의 값이 타겟 상태에 해당하는 제8 상태(S8)의 하위 비트들의 값과 일치하는 인디케이터 데이터(IND)의 비트들은 1의 값을 갖고, 메모리 셀들에 이미 저장된 LSB 및 CSB의 값이 제 8상태(S8)의 하위 비트들의 값과 일치하지 않는 인디케이터 데이터(IND)의 비트들은 0의 값을 가질 수 있다.
도 18을 참조하면, 전술한 도 7의 상태 변환기(SCON)는 코드워드(x)를 변환하여 상기 타겟 상태들이 기입되는 메모리 셀들의 개수가 0이 되는 기입 데이터(WDATA)를 발생할 수 있다. 즉 상태 변환기(SCON)는 도 17의 제8 상태(S8)에 해당하는 메모리 셀들의 개수가 0이 되도록 코드워드(w)를 변환하여 기입 데이터(WDATA), 즉 MSB 데이터를 발생할 수 있다.
일 실시예에서, 상태 변환기(SCON)는 기입 데이터가 메모리 셀들에 기입되는 최상위 데이터(MSB)인 경우, 타겟 상태(S8)에 상응하는 코드워드의 비트 값을 반전할 있다. 즉 제8 상태(S8)의 MSB 데이터의 비트 값을 1에서 0으로 반전할 수 있다. 결과적으로 도 18에 도시된 바와 같이, 제8 상태(S8)에 해당하는 “101”의 값이 제7 상태(S7)에 해당하는 “001”로 변환되어, 제8 상태(S8)에 해당하는 메모리 셀들의 개수가 0이 되는 대신 제7 상태(S7)에 해당하는 메모리 셀들의 개수가 증가함을 알 수 있다.
도 15 및 16에서와 같이, 기입 데이터가 상기 메모리 셀들에 기입되는 최상위 데이터가 아닌 경우에는, 코드워드를 그대로 상기 기입 데이터로서 제공할 수 있다.
이와 같이, 타겟 상태를 제거함으로써, 기입 데이터의 기입시, 복수의 상태들의 개수가 L이고 타겟 상태들의 개수가 M인 경우, L-M-1개의 프로그램 검증 전압들을 이용하여 상기 기입 데이터를 상기 메모리 셀들에 프로그램할 수 있다.
또한, 타겟 상태를 제거함으로써, 독출 데이터의 독출시, 복수의 상태들의 개수가 L이고 상기 타겟 상태들의 개수가 M인 경우, L-M-1개의 독출 전압들을 이용하여 상기 메모리 셀들에 기입된 상기 복수의 상태들을 판별할 수 있다.
도 18의 예에서, L=8 이고 M=1이고, 타겟 상태인 제8 상태(S8)가 제거된 경우이므로, 도 11의 경우와 비교하여, 기입 동작시에는 제7 검증 독출 전압(VVR7)을 제거하고 독출 동작시에는 제7 노말 독출 전압을 제거할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법 및 데이터 컨버터는 문턱 전압 분포가 높은 상태를 제거함으로써 프로그램 동작 및 독출 동작을 위한 전압의 개수 및 전압 레벨을 감소하고 메모리 셀의 열화를 감소하고 비휘발성 메모리 장치 및 이를 포함하는 시스템의 동작 속도를 향상시킬 수 있다.
도 19는 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 제어 방법에 의해 기입된 상태들의 일 예를 나타내는 도면이다.
도 19에는 각 메모리 셀이 4 비트의 데이터를 저장하는 QLC(Quadruple level cell)의 제1 내지 제16 상태들(S1~S16)이 도시되어 있다. QLC에 대한 본 발명의 실시예들은 전술한 TLC의 실시예들과 실질적으로 동일하므로 중복되는 설명은 생략한다.
도 19에는, 데이터가 인코딩되지 않은 경우의 메모리 셀들의 문턱 전압 산포는 점선으로 도시되어 있고, 데이터가 인코딩된 경우의 메모리 셀들의 문턱 전압 산포는 실선으로 도시되어 있다. 문턱 전압 분포가 가장 높은 제16 상태(S16)가 전술한 타겟 상태에 해당한다.
이 때, 비트-매핑(bit-mapping)에 따라서 타겟 상태(S16)를 감소 또는 제거할 때, 다른 상태들 중에서 최상위 비트를 제외한 하위 비트들이 동일한 다른 상태(예를 들어, 제15 상태(S15))도 함께 감소하게 된다.
이와 같이, 문턱 전압 분포가 높은 타겟 상태를 제거하여 프로그램할 경우 높은 전압으로 프로그램하는 동작이 줄어 들기 때문에 프로그램 교란(program disturb)이 감소하여 메모리 셀의 열화를 줄일 수 있다. 그로 인해 소거 상태인 제1 상태(S1)의 산포가 오른쪽으로 퍼져서 쉬프트(shift)되는 것이 감소되는 것을 확인 할 수 있다. 따라서, 본 발명의 실시예들에 따라서, 메모리 셀의 열화를 감소하여 신뢰성이 향상되는 효과를 얻을 수 있다.
도 20은 본 발명의 실시예들에 따른 에스에스디(SSD: solid state disk or solid state drive)를 나타내는 블록도이다.
도 20을 참조하면, SSD(1000)는 복수의 비휘발성 메모리 장치들(1100) 및 SSD 제어기(1200)를 포함한다.
비휘발성 메모리 장치들(1100)은 옵션적으로 외부 고전압(VPP)을 제공받도록 구현될 수 있다. 비휘발성 메모리 장치들(1100)은 전술한 비휘발성 메모리 장치(30)로 구현될 수 있다.
SSD 제어기(1200)는 복수의 채널들(CH1~CH4)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. SSD 제어기(1200)는 적어도 하나의 프로세서(1210), 버퍼 메모리(1220), 데이터 컨버터(DCON)(1230), 호스트 인터페이스(1250) 및 비휘발성 메모리 인터페이스(1260)를 포함한다. 버퍼 메모리(1220)는 메모리 제어기(1200)의 구동에 필요한 데이터를 임시로 저장할 수 있다. 또한, 버퍼 메모리(1220)는 기입 요청시 프로그램 동작에 이용될 데이터를 버퍼링할 수 있다. 데이터 컨버터(1230)는 전술한 바와 같이 스테이트 쉐이핑 동작 및 ECC 동작을 동시에 수행하여 멀티 레벨 셀의 복수의 상태들 중에서 일부 상태를 감소 또는 제거함으로써 비휘발성 메모리 장치(1100) 및 이를 포함하는 시스템(1000)의 신뢰성을 향상시킬 수 있다.
본 발명의 실시예들은 비휘발성 메모리 장치 및 이를 포함하는 시스템에 유용하게 이용될 수 있다. 특히 본 발명의 실시예들은 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive; SSD), 임베디드 멀티미디어 카드(eMMC, embedded multimedia card), 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 메모리 셀들의 각각에 복수의 비트들을 저장하는 비휘발성 메모리 장치의 동작 제어 방법으로서,
    채널 정보에 기초하여 입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공하는 단계;
    상기 ECC 패리티 비트들의 값을 발생하는 단계;
    상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하도록 상기 스테이트 쉐이핑 패리티 비트들의 값을 발생하는 단계;
    상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생하는 단계;
    상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생하는 단계; 및
    상기 코드워드에 기초하여 상기 비휘발성 메모리 장치에 기입 데이터를 기입하는 단계를 포함하는 비휘발성 메모리 장치의 동작 제어 방법.
  2. 제1 항에 있어서,
    상기 ECC 패리티 비트들의 값을 발생하는 단계는,
    상기 입력 데이터에 관계 없이 고정된 값을 갖도록 상기 ECC 패리티 비트들을 발생하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  3. 제1 항에 있어서,
    상기 ECC 패리티 비트들의 값을 발생하는 단계는,
    상기 입력 데이터에 의존하는 값을 갖도록 상기 ECC 패리티 비트들을 발생하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  4. 제1 항에 있어서,
    상기 코드워드를 발생하는 단계는,
    폴라 코드(polar code)를 이용하여 상기 정렬 벡터에 대한 인코딩을 수행하여 상기 코드워드를 발생하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  5. 제4 항에 있어서,
    상기 코드워드를 발생하는 단계는,
    상기 정렬 벡터에 생성 행렬을 곱하여 상기 코드워드를 발생하는 단계를 포함하고,
    상기 생성 행렬은 하기의 수학식을 만족하는 것을 특징으로 하는 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
    GN=F2 ⓧn
    (상기 수학식에서 GN은 상기 생성 행렬이고, F2는 커널 매트릭스(kernel matrix)이고, F2 ⓧn 는 F2의 n번째 크로넥커 파워(n-th Kronecker power)이고, N=2n이다)
  6. 제1 항에 있어서,
    상기 타겟 상태는 상기 복수의 상태들 중에서 문턱 전압 분포가 가장 높은 상태를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  7. 제1 항에 있어서,
    상기 ECC 패리티 비트들 및 상기 데이터 비트들에 기초하여 연속 제거(successive cancellation) 인코딩 또는 리스트 연속 제거(list successive cancellation) 인코딩을 수행하여 상기 스테이트 쉐이핑 패리티 비트들을 결정하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  8. 제1 항에 있어서,
    상기 코드워드를 변환하는 단계는,
    상기 기입 데이터가 상기 메모리 셀들에 기입되는 최상위 데이터인 경우, 상기 타겟 상태들에 상응하는 상기 코드워드의 비트 값들을 반전하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  9. 제1 항에 있어서,
    상기 비휘발성 메모리 장치에 저장된 데이터를 독출하여 독출 데이터를 제공하는 단계; 및
    상기 독출 데이터에 대하여 연속 제거(successive cancellation) 디코딩 또는 리스트 연속 제거(list successive cancellation) 디코딩을 수행하여 상기 독출 데이터에 포함된 에러를 정정하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 제어 방법.
  10. 메모리 셀들의 각각에 복수의 비트들을 저장하는 비휘발성 메모리 장치의 동작을 제어하기 위한 데이터 컨버터로서,
    입력 데이터의 데이터 비트들의 위치, 상기 입력 데이터의 에러 정정을 위한 에러 정정 코드(ECC) 패리티 비트들의 위치 및 스테이트 쉐이핑 패리티 비트들의 위치를 나타내는 채널 선택 정보를 제공하는 채널 선택기;
    상기 ECC 패리티 비트들을 발생하는 ECC 비트 발생기;
    상기 메모리 셀들의 복수의 상태들 중에서 하나 이상의 타겟 상태들이 기입되는 메모리 셀들의 개수가 감소하는 값을 갖도록 상기 스테이트 쉐이핑 패리티 비트들을 발생하는 쉐이핑 비트 발생기;
    상기 채널 선택 정보에 기초하여 상기 데이터 비트들, 상기 ECC 패리티 비트들 및 상기 스테이트 쉐이핑 패리티 비트들을 정렬하여 정렬 벡터를 발생하는 데이터 정렬기; 및
    상기 정렬 벡터에 대해 스테이트 쉐이핑 및 ECC 인코딩을 동시에 수행하여 코드워드를 발생하는 인코더를 포함하는 데이터 컨버터.
KR1020190151005A 2019-11-22 2019-11-22 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터 KR20210062845A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190151005A KR20210062845A (ko) 2019-11-22 2019-11-22 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터
US16/891,517 US11150987B2 (en) 2019-11-22 2020-06-03 Methods of controlling operation of nonvolatile memory devices and data converters for performing the same
CN202010839192.0A CN112837738A (zh) 2019-11-22 2020-08-19 控制非易失性存储器件的操作的方法、用于执行该方法的数据转换器以及存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190151005A KR20210062845A (ko) 2019-11-22 2019-11-22 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터

Publications (1)

Publication Number Publication Date
KR20210062845A true KR20210062845A (ko) 2021-06-01

Family

ID=75923239

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190151005A KR20210062845A (ko) 2019-11-22 2019-11-22 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터

Country Status (3)

Country Link
US (1) US11150987B2 (ko)
KR (1) KR20210062845A (ko)
CN (1) CN112837738A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11263079B2 (en) * 2020-06-30 2022-03-01 Kabushiki Kaisha Toshiba Endurance modulation for flash storage
KR102511779B1 (ko) * 2021-04-12 2023-03-17 아주대학교산학협력단 극 부호 연속 제거 비트 반전 복호 장치 및 방법
CN113609801B (zh) * 2021-07-12 2023-11-10 海南师范大学 一种异步时序控制电路设计方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2396791B1 (en) 2009-02-12 2014-08-06 Ramot at Tel-Aviv University Ltd. Apparatus and method for enhancing flash endurance by encoding data
TWI441181B (zh) * 2010-09-09 2014-06-11 Silicon Motion Inc 用來進行資料整形之方法以及其記憶裝置及控制器
TWI533134B (zh) * 2010-12-28 2016-05-11 慧榮科技股份有限公司 快閃記憶裝置及其運作方法
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8799559B2 (en) * 2011-10-24 2014-08-05 Sandisk Technologies Inc. Endurance enhancement coding of compressible data in flash memories
US9419653B1 (en) 2012-03-14 2016-08-16 Marvell International Ltd. Systems and methods for combining constrained codes and error correcting codes
US8984369B2 (en) 2012-11-21 2015-03-17 Micron Technology, Inc. Shaping codes for memory
US9135155B2 (en) * 2012-11-30 2015-09-15 Sandisk Technologies Inc. Storage and retrieval of shaped data
KR102081081B1 (ko) 2013-08-01 2020-02-25 삼성전자주식회사 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
KR102149770B1 (ko) * 2013-08-26 2020-08-31 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
KR20150085375A (ko) * 2014-01-15 2015-07-23 삼성전자주식회사 메모리 컨트롤러의 동작방법 및 메모리 컨트롤러
KR102392821B1 (ko) * 2015-03-16 2022-05-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US9484098B1 (en) * 2015-08-05 2016-11-01 Sandisk Technologies Llc Smart reread in nonvolatile memory
US10114549B2 (en) * 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
KR20180021324A (ko) 2016-08-19 2018-03-02 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US10735031B2 (en) * 2018-09-20 2020-08-04 Western Digital Technologies, Inc. Content aware decoding method and system
US11029872B2 (en) * 2018-12-18 2021-06-08 Western Digital Technologies, Inc. Non-volatile storage system with data shaping memory partitions

Also Published As

Publication number Publication date
US20210157672A1 (en) 2021-05-27
US11150987B2 (en) 2021-10-19
CN112837738A (zh) 2021-05-25

Similar Documents

Publication Publication Date Title
KR101939234B1 (ko) 메모리 장치, 메모리 시스템 및 상기 메모리 장치의 독출 전압의 제어 방법
KR102081415B1 (ko) 비휘발성 메모리 장치의 llr 최적화 방법 및 비휘발성 메모리 장치의 에러 정정 방법
KR101979734B1 (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US8228728B1 (en) Programming method for multi-level cell flash for minimizing inter-cell interference
KR102326659B1 (ko) 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
KR101927212B1 (ko) 비휘발성 메모리 장치의 프로그래밍 방법
US9921749B2 (en) Memory system and method including determining a read voltage based on program order information and a plurality of mapping tables
US9715341B2 (en) Operating a memory device using a program order stamp to control a read voltage
KR101606880B1 (ko) 데이터 저장 시스템 및 그것의 채널 구동 방법
KR101636248B1 (ko) 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
KR20110092090A (ko) 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
US20140351487A1 (en) Nonvolatile memory and related reprogramming method
KR20100055906A (ko) 멀티-레벨 비휘발성 메모리 장치, 상기 장치를 포함하는 메모리 시스템 및 그 동작 방법
KR102128825B1 (ko) 불휘발성 메모리 장치 및 그것의 동작 방법
KR20210082875A (ko) 머신 러닝을 이용한 비휘발성 메모리 장치의 동작 제어 방법 및 스토리지 시스템
KR20210062845A (ko) 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터
KR20220006467A (ko) 기계 학습에 기반한 오류 정정을 수행하는 메모리 장치 및 이의 동작 방법
KR20190112421A (ko) 메모리 장치
CN112185450A (zh) 存储器系统、存储器控制器和用于操作存储器系统的方法
KR20140008098A (ko) 메모리 장치 및 상기 메모리 장치의 독출 방법
US11249848B2 (en) Error check code (ECC) decoder and memory system including ECC decoder
JP2019149220A (ja) 半導体記憶装置及びメモリシステム
KR20190099624A (ko) 메모리 장치
CN110197689B (zh) 半导体存储装置及存储器系统
KR20210143612A (ko) 비휘발성 메모리 및 비휘발성 메모리의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination