KR20160089870A - 메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러 - Google Patents

메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러 Download PDF

Info

Publication number
KR20160089870A
KR20160089870A KR1020160005499A KR20160005499A KR20160089870A KR 20160089870 A KR20160089870 A KR 20160089870A KR 1020160005499 A KR1020160005499 A KR 1020160005499A KR 20160005499 A KR20160005499 A KR 20160005499A KR 20160089870 A KR20160089870 A KR 20160089870A
Authority
KR
South Korea
Prior art keywords
data
level
length string
input data
length
Prior art date
Application number
KR1020160005499A
Other languages
English (en)
Other versions
KR102414620B1 (ko
Inventor
베르만 아밋
베이틀러 유리
공준진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160089870A publication Critical patent/KR20160089870A/ko
Application granted granted Critical
Publication of KR102414620B1 publication Critical patent/KR102414620B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • G11C16/0441Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors comprising cells containing multiple floating gate devices, e.g. separate read-and-write FAMOS transistors with connected floating gates
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/102Compression or decompression of data before storage

Abstract

메모리 장치의 동작 방법이 개시된다. 메모리 장치는 각 메모리셀이 L 레벨들을 포함하는 복수의 멀티레벨 메모리셀들을 포함한다. 상기 메모리 장치의 동작 방법은 이진수로 표현된 데이터를 수신하는 단계; 상기 데이터로부터 P-길이 스트링을 생성하는 단계; 상기 L 레벨들로부터 적어도 하나의 레벨을 추정함으로써 상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계; 및 상기 Q-길이 스트링을 상기 복수의 메모리셀들로 프로그래밍하는 단계를 포함한다.

Description

메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러 {METHOD OF OPERATING MEMORY DEVICE AND MEMORY CONTROLLER FOR OPERATNG MEMORY DEVICE}
본 발명의 개념에 따른 실시 예는 메모리 장치의 동작 방법 및 상기 메모리 장치를 동작시키는 메모리 컨트롤러에 관한 것이다.
비휘발성 메모리 내의 메모리 셀당 레벨수가 증가함에 따라, 프로그램 및 리드 동작의 레이턴시(latency) 역시 증가된다. 프로그램(program) 및 검증(verify) 펄스들은 정확한 전하 터널링(charge tunneling)이 발생하도록 제어된다. 메모리셀로부터 데이터를 읽기 위하여 필요한 기준 비교들(reference comparisons)의 수는 레벨 수에 비례하여 증가한다. 이러한 프로그램 및 검증 펄스들의 미세한 제어, 및 비교 수에서의 비례적인 증가는 레이턴시, 전력 소모 및 동작 시간의 증가를 야기한다.
본 발명이 이루고자 하는 기술적인 과제는 전력 소모 및 리드 동작 시간을 줄일 수 있는 메모리 장치의 동작 방법을 제공하는 것이다.
본 발명의 실시 예에 따르면, 메모리 장치의 동작 방법이 제공된다. 메모리 장치는 각 메모리셀이 L 레벨들을 포함하는 복수의 멀티레벨 메모리셀들을 포함한다.
상기 메모리 장치의 동작 방법은 이진수로 표현된 데이터를 수신하는 단계; 상기 데이터로부터 P-길이 스트링을 생성하는 단계; 상기 L 레벨들로부터 적어도 하나의 레벨을 제거함으로써 상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계; 및 상기 Q-길이 스트링을 상기 복수의 메모리셀들로 프로그래밍하는 단계를 포함한다.
P 및 Q는 상기 P-길이 스트링 및 상기 Q-길이 스트링의 이진 비트 길이를 나타내고, Q는 P보다 크고, L은 각 멀티레벨 메모리셀이 가지는 최대 레벨 수를 나타내며, 상기 Q-길이 스트링은 I 레벨들을 이용하여 분산되고, I는 L보다 작다.
P/Q는 logL(I)와 같거나 작을 수 있다.
상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계는 상기 P-길이 스트링과 상기 Q-길이 스트링 간의 복수의 일대일 매핑 관계들의 정보를 포함하는 테이블을 이용하여 수행될 수 있다.
상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계는 L 진수(number of base L)로 표현되는 상기 P-길이 스트링을, 상기 L 진수로부터 I 진수로의 진수변환을 이용하여, I 진수로 표현되는 상기 Q-길이 스트링으로 변환하는 단계를 포함할 수 있다.
상기 방법은 (I-1) 기준 전압들을 이용하여 상기 복수의 메모리셀들로부터 상기 Q-길이 스트링을 독출하는 단계; 및 상기 Q-길이 스트링을 상기 P-길이 스트링으로 디코딩하는 단계를 더 포함할 수 있다.
상기 Q-길이 스트링을 상기 P-길이 스트링으로 디코딩하는 단계는 상기 P-길이 스트링과 상기 Q-길이 스트링 간의 일대일 매핑 관계들의 정보를 포함하는 상기 테이블을 이용하여 수행될 수 있다.
상기 Q-길이 스트링을 P-길이 스트링으로 디코딩하는 단계는 상기 L 진수(number of base L)로 표현되는 상기 Q-길이 스트링을, 상기 I 진수로부터 L 진수로의 진수변환을 이용하여, 상기 I 진수로 표현되는 상기 P-길이 스트링으로 변환하는 단계를 포함할 수 있다.
상기 P-길이 스트링을 생성하는 단계는 상기 데이터를 압축된 데이터로 압축하는 단계; 및 상기 압축된 데이터에 대하여 패리티 비트들을 연관시킴으로써 상기 압축된 데이터를 인코딩하여 상기 P-길이 스트링을 생성하는 단계를 포함하며, 상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계는 상기 압축된 데이터의 상기 인코딩 후에 수행될 수 있다.
상기 P-길이 스트링을 생성하는 단계는 상기 데이터를 압축된 데이터로 압축하는 단계를 포함할 수 있다.
상기 방법은 상기 Q-길이 스트링에 기초하여 X-길이 패리티 비트를 생성하는 단계; 및 상기 X-길이 패리티 비트를 Y-길이 패리티 비트로 인코딩하는 단계를 포함하며, Y는 X보다 크고, 상기 Y-길이 패리티 비트는 상기 I 레벨들로 분산될 수 있다.
상기 방법은 상기 X-길이 패리티 비트를 상기 복수의 메모리셀들로 프로그래밍하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 메모리 장치를 프로그래밍하는 방법이 제공된다. 상기 메모리 장치는 복수의 멀티레벨 메모리셀들을 포함한다.
본 발명의 실시예에 따른 메모리 장치의 프로그래밍 방법은 이진수로 표현된 P-길이 스트링을 수신하는 단계; 상기 P-길이 스트링을 2m(L) 진수로 표현되는 제1 수로 인코딩하는 단계-각 멀티레벨 메모리셀은 L 레벨들을 포함하고, m은 2이상임-; 및 상기 제1 수를 Q-길이 스트링으로 변환하는 단계-상기 Q-길이 스트링은 I 진수로 표현되는 제1 수로 표현되고, L은 I보다 크고, Q는 P보다 크고, P 및 Q는 상기 P-길이 스트링 및 상기 Q-길이 스트링의 이진 비트 길이를 나타냄-; 및 상기 Q-길이 스트링을 상기 복수의 메모리셀들의 Q/m 메모리셀들로 프로그래밍하는 단계를 포함한다.
상기 Q-길이 스트링은 각 메모리셀의 I 레벨들을 이용하여 Q/m 메모리셀들로 분산된다.
상기 P-길이 스트링을 변환하는 단계는 상기 L 레벨들로부터 적어도 하나의 레벨을 제거하는 단계를 포함하고, 상기 적어도 하나의 레벨의 수는 (L-I)일 수 있다.
상기 P-길이 스트링을 변환하는 단계는 상기 P-길이 스트링과 상기 Q-길이 스트링 간의 복수의 일대일 매핑 관계들의 정보를 포함하는 테이블을 이용하여 수행될 수 있다.
본 발명의 실시 예에 따르면, 각 메모리셀이 L 레벨들을 포함하는 복수의 멀티레벨 메모리셀들을 포함하는 비휘발성 메모리 장치를 작동시키는 메모리 컨트롤러가 제공된다.
본 발명의 실시예에 따른 메모리 컨트롤러는 P-길이 스트링을 Q-길이 스트링으로 변환하는 레벨 감소 인코더; 및 상기 Q-길이 스트링을 상기 P-길이 스트링으로 디코딩하는 레벨 감소 디코더를 포함한다.
상기 P-길이 스트링은 L 진수로 표현되고, 상기 Q-길이 스트링은 I 진수로 표현되고, P 및 Q는 상기 P-길이 스트링 및 상기 Q-길이 스트링의 이진 비트 길이를 나타내고, Q는 P보다 크고, L은 각 멀티레벨 메모리셀이 가지는 최대 레벨 수를 나타내며, I는 L보다 작다.
본 발명의 실시 예에 따르면, 리드 동작에서 수행되는 기준 비교의 수가 감소될 수 있다. 이에 따라 빠른 리드 동작이 가능하여, 전력 소모 및 리드 동작 시간을 줄일 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 본 발명의 일 실시예에 따른 플래시 메모리 장치를 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 레벨 감소 알고리즘을 나타내는 도면이다.
도 4 및 도 5는 본 발명의 실시예에 따른 태블러(tabular) 인코딩 방식을 이용하여 입력 데이터를 인코딩된 입력 데이터로 매핑하는 복수의 엔트리를 포함하는 테이블을 나타내는 도면이다.
도 6은 본 발명의 실시예에 따른 열거 인코딩 방식을 나타내는 플로우차트이다.
도 7은 본 발명의 실시예에 따른 열거 디코딩 방식을 나타내는 플로우차트이다.
도 8은 멀티레벨 셀로 저장된 각 단일 페이지를 리드하기 위한 단일 기준 비교(single reference comparison)를 나타내는 레벨 감소 테이블이다.
도 9는 본 발명의 실시예에 따른 레벨 감소 인코더와 레벨 감소 디코더를 포함하는 도 1의 메모리 시스템을 나타낸다.
도 10은 본 발명의 실시예에 따른 레벨 감소 인코더와 레벨 감소 디코더를 포함하는 도 1의 메모리 시스템을 나타낸다.
도 11은 실시예에 따른 인코딩된 입력 데이터를 저장하는 메모리 셀의 증가된 수를 수용하기 위해 추가 메모리 셀을 사용하는 워드라인 분할을 설명하기 위한 도면이다.
도 12는 추가 메모리 셀을 이용하지 않는 워드라인 분할을 설명하기 위한 도면이다.
도 13은 본 발명의 실시예에 따라 더 높은 레벨을 이용하여 페이지-바이-페이지 방식으로 복수의 페이지를 저장하는 MLC에 대한 일대일 매핑 관계를 나타내는 테이블이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
이하, 도 1 내지 도 3을 참조하여, 본 발명의 실시예에 따른 레벨 감소 알고리즘(level reduction algorithm)을 이용한 메모리 시스템이 기술된다. 도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 2는 본 발명의 일 실시예에 따른 플래시 메모리 장치를 나타내는 블록도이다. 도 3은 본 발명의 일 실시예에 따른 레벨 감소 알고리즘을 나타내는 도면이다.
도 1에서, 메모리 시스템(200)은 컨트롤러(210) 및 메모리(220)를 포함한다. 컨트롤러(210)는 호스트 인터페이스(211) 및 메모리 인터페이스(212)를 포함한다. 메모리 시스템(200)는 호스트 인터페이스(211)를 통하여 호스트(100)와 통신한다. 메모리(200)는 메모리 인터페이스(212)를 통하여 컨트롤러(210)의 제어 하에 동작한다. 예를 들어, 호스트 인터페이스(211)는 시리얼 ATA(SATA), eSATA 또는 PCIe(Peripheral Component Interconnect Express)를 포함할 수 있다.
컨트롤러(210)는 프로세서(213), 롬(ROM: read only memory)(214), 및 램(RAM: random access memory)(215)를 더 포함한다. 롬(214)은 프로세서가 메모리 시스템(200)를 작동시키는데 필요한 펌웨어를 저장할 수 있다. 예를 들어, 펌웨어는 본 발명의 실시예에 따른 레벨 감소 알고리즘에 대한 프로그램 코드를 포함할 수 있다. 또한, 펌웨어는 에러 정정 알고리즘 및 데이터 압축 알고리즘에 대한 프로그램 코드들을 포함할 수 있다. 예를 들어, 에러 정정 알고리즘은 BCH 코드, 리드-솔로몬 코드(Reed-Solomon code) 또는 저밀도 패리티 체크(LDPC: low-density parity-check) 코드를 포함할 수 있다. 데이터 압축 알고리즘은 허프만 코드(Huffman code), 턴스톨 코드(Tunstall code), 산술 부호(Arithmetic code), 또는 렘펠-지브 코드(Lempel-Ziv code)를 포함할 수 있다.
도 2에서 메모리(220)는 멀티레벨 셀(MLC: multi-level cell) 메모리 어레이(221)를 포함하는 멀티레벨 셀(MLC) 메모리를 포함한다. MLC 메모리 어레이(221)는 메모리셀들(MC), 비트라인들(BL0-BLm) 및 워드라인들(WL0-WLn)을 포함한다. 메모리셀들(MC)은 4 이상의 레벨들을 사용하여 적어도 2-비트 정보를 저장할 수 있다. 그러나 적어도 하나의 레벨은 본 발명의 일 실시예에 따른 레벨 감소 알고리즘에 따라 사용되지 않는다. 예를 들어, 입력 데이터가 레벨 감소 알고리즘을 이용하여 인코딩되면, 인코딩된 입력 데이터는 MLC당 저장된 비트수에 따라 MLC가 갖는 4 이상의 레벨들로부터 적어도 하나의 레벨을 갖지 않는다. 레벨 감소 알고리즘에 대해서는 후술된다.
메모리셀들(MC)의 각 로우(row)는 페이지로 지칭될 수 있다. 각 로우에 있는 메모리셀들(MC)은 워드라인들(WL0-WLn) 중 하나에 병렬로 연결된다. 예를 들어, 페이지(PG)에 있는 메모리셀들은 워드라인(WL3)에 병렬로 연결된다. MLC 동작에서 하나의 페이지는 SLC 동작에서 적어도 둘 이상의 페이지들에 해당한다. 예를 들어, SLC 동작의 적어도 두 페이지들은 페이지(PG)의 동일 셀이 프로그램된다. 또는 하나의 페이지(PG)가 분할되어, 각 분할된 페이지가 SLC 동작의 하나의 페이지를 저장할 수 있다.
메모리셀들(MC)의 각 칼럼은 스트링으로 지칭될 수 있다. 각 스트링의 메모리셀들(MC)는 상호 직렬(in series)로 연결된다. 각 스트링의 일단은 비트라인들(BL0-BLm) 중 하나에 연결되고, 다른 일단은 공통 소스라인(SL)에 연결된다. 예를 들어, 스트링(ST)의 일 단은 비트라인(BL0)에 연결되고, 다른 일단은 공통 소스라인(SL)에 연결된다. 스트링(ST)의 메모리셀들은 워드라인들(WL0 -WLn) 중 적어도 하나를 활성화함으로써 비트라인(BL0)을 통하여 프로그램 또는 독출된다.
MLC 메모리 어레이(221)는 동시에 소거(erase)될 수 있다. 이 경우, MLC 메모리 어레이(221)는 메모리 블락으로 지칭될 수 있다. 설명의 편의를 위하여, MLC 메모리 어레이(221)는 하나의 메모리 블락을 포함한다. 그러나, 본 발명의 실시예는 이에 한정되지 않으며, MLC 메모리 어레이(221)는 둘 이상의 블락들을 포함할 수 있다. 이 경우, 블락들은 상호 독립적으로 소거될 수 있다.
메모리 시스템(200)은 메모리 카드, 솔리드 스테이트 장치(SSD) 또는 임베디드 메모리 시스템의 형태일 수 있다.
도 3에서 MLC 메모리 어레이(221)는 4 레벨(Level 0 내지 Level 3)을 사용하여 MLC당 2-비트 정보를 저장할 수 있는 두 종류의 MLC들을 포함한다. MLC들은 제1 MLC(MC1) 및 제2 MLC(MC2)를 포함한다. 제1 MLC(MC1)는 실시예에 따른 레벨 감소 알고리즘(level reduction algorithm)을 사용하지 않고 입력 데이터(DATA)를 저장한다. 제2 MLC(MC2)는 실시예에 따른 레벨 감소 알고리즘을 사용하여 입력 데이터(DATA)를 저장한다. 또 다른 실시예에 따라, 메모리(220)는 MLC 메모리 어레이(221)에 제2 MLC(MC2)만을 포함할 수 있다.
예를 들어, "10010011102"의 입력 데이터(DATA)가 제1 MLC(MC1)에 저장되는 경우, "10010011102"의 입력 데이터(DATA)에서 아래 첨자 "2"는 입력 데이터(DATA)를 표현하는 진수(또는 진법)(base of number)을 나타낸다. 예컨대, "2"는 입력데이터(DATA)가 이진수임을 나타낼 수 있다. 이 경우, 입력 데이터(DATA)는 실시예에 따른 레벨 감소 알고리즘을 수행하는 레벨 감소 인코더(300)에 의해 인코딩되지 않는다. 따라서, 제1 MLC(MC1)는 4 레벨(Level 0 내지 Level 3)을 사용하여 입력 데이터(DATA)를 저장한다. 4 레벨(Level 0 내지 Level 3)은 제1 MLC(MC1)의 최대 레벨들이다. 예를 들어, 입력 데이터(DATA)는 4 레벨(Level 0 내지 Level 3)을 사용하여 5개의 제1 MLC(MC1a 내지 MC1e)로 분산된다. 제1 MLC(MC1a 내지 MC1d) 각각은 입력 데이터(DATA)의 2-비트 정보를 저장한다. 예를 들어, 제1 셀(MC1a)은 입력 데이터(DATA)의 가장 오른쪽의 2-비트 정보인 '10'을 제3 레벨(Level 3)에 저장하고; 제2 셀(MC1b)은 입력 데이터(DATA)의 두 번째 2-비트 정보인 '11'을 제0 레벨(Level 0)에 저장하고; 제3 셀(MC1c)은 입력 데이터(DATA)의 세 번째 2-비트 정보인 '00'을 제2 레벨(Level 2)에 저장하고; 제4 셀(MC1d)은 입력 데이터(DATA)의 네 번째 2-비트 정보인 '01'을 제1 레벨(Level 1)에 저장하고; 제5 셀(MC1e)은 입력 데이터(DATA)의 가장 왼쪽의 2-비트 정보인 '10'을 제3 레벨(Level 3)에 저장한다.
따라서, 레벨 감소 알고리즘의 사용 없이, 입력 데이터(DATA)는 4 레벨(Level 0 내지 Level 3)을 사용하여 제1 MLC(MC1a 내지 MC1e)로 분산된다. 제1 MLC(MC1)는 4진수를 이용하여 입력 데이터(DATA)를 저장한다. 예를 들어, 제1 MLC(MC1a 내지 MC1e)는 "302134"를 저장한다. 진수(base)는 입력 데이터(DATA)가 차지하는 레벨의 수를 나타낸다. 따라서, 레벨 감소 알고리즘의 사용 없이 입력 데이터(DATA)가 저장되는 경우, 사용되는 레벨의 수는 MLC당 허용되는 레벨의 최대수에 상응한다.
그러나, "10010011102"의 동일한 입력 데이터(DATA)가 레벨 감소 알고리즘을 사용하여 제2 MLC(MC2)에 저장되는 경우, 가능한 4 레벨(Level 0 내지 Level 3) 중 하나의 레벨이 사용되지 않는다. 예를 들어, 레벨 감소 인코더(level reduction encoder, 300)는 실시예에 따른 레벨 감소 알고리즘을 사용하여 입력 데이터(DATA)를 인코딩된 입력 데이터(E_DATA)로 변환한다. 도 3의 경우, 인코딩된 입력 데이터(E_DATA)는 레벨 감소 알고리즘에 의해 제거된 제3 레벨(Level 3)을 포함하지 않으므로, 인코딩된 입력 데이터(E_DATA)는 더 적은 레벨을 사용하여 제2 MLC(MC2a 내지 MC2g)에 저장된다.
인코딩된 입력 데이터(E_DATA)는 인코딩된 입력 데이터(E_DATA)에 하나의 레벨이 포함되지 않도록 표현될 수 있다. 예를 들어, 인코딩된 입력 데이터(E_DATA)는 "011101110001002"에 상응할 수 있다. 인코딩된 입력 데이터(E_DATA)는 제3 레벨(Level 3)에 상응하는 2-비트 정보 "10"을 포함하지 않는다. 예를 들어, 제1 셀(MC2a)은 인코딩된 입력 데이터(E_DATA)의 가장 오른쪽의 2-비트 정보인 '00'을 제2 레벨(Level 2)에 저장하고; 제2 셀(MC2b)은 인코딩된 입력 데이터(E_DATA)의 두 번째 2-비트 정보인 '01'을 제1 레벨(Level 1)에 저장하고; 제3 셀(MC2c)은 인코딩된 입력 데이터(E_DATA)의 세 번째 2-비트 정보인 '00'을 제2 레벨(Level 2)에 저장하고; 제4 셀(MC2d)은 인코딩된 입력 데이터(E_DATA)의 네 번째 2-비트 정보인 '11'을 제0 레벨(Level 0)에 저장하고; 제5 셀(MC2e)은 인코딩된 입력 데이터(E_DATA)의 다섯 번째 2-비트 정보인 '01'을 제1 레벨(Level 1)에 저장하고; 제6 셀(MC2f)은 인코딩된 입력 데이터(E_DATA)의 여섯 번째 2-비트 정보인 '11'을 제0 레벨(Level 0)에 저장하고; 제7 셀(MC2g)은 인코딩된 입력 데이터(E_DATA)의 가장 왼쪽의 2-비트 정보인 '01'을 제1 레벨(Level 1)에 저장한다.
따라서, 제2 MLC(MC2)는 입력 데이터(DATA)를 3진수로 저장한다. 예를 들어, 제2 MLC(MC2a 내지 MC2g)는 "212101013"을 저장한다. 이 경우, 사용되는 레벨의 수는 3이고, 제3 레벨(Level 3)이 제2 MLC(MC2)에 대해 허용되는 4 레벨(Level 0 내지 Level 3)에서 제거된다. 각 자릿수(digit number)는 레벨들(Level 0 내지 Level 2) 중 하나를 나타낸다. 사용되는 레벨의 수는 MLC당 허용되는 레벨의 최대수보다 적다.
상술한 바와 같이, 가능한 4 레벨 중 3 레벨만을 사용하여 입력 데이터(DATA)를 분산하도록 레벨 감소 알고리즘이 설정되어 있는 경우, 입력 데이터(DATA)는 3 레벨(Level 0 내지 Level 2)을 사용하여 7개의 메모리 셀(MC2a 내지 MC2g)로 분산된다.
실시예에 따른 레벨 감소 알고리즘에 따라, 인코딩된 입력 데이터(E_DATA)의 비트 길이가 입력 데이터(DATA)의 비트 길이보다 크다. 예를 들어, 입력 데이터(DATA)의 비트 길이는 '10' 이고, 인코딩된 입력 데이터(E_DATA)의 비트 길이는 '14' 이다. 입력 데이터(DATA)의 비트 길이와 인코딩된 입력 데이터(E_DATA)의 비트 길이 사이의 관계에 대해서는 후술된다.
입력 데이터(DATA)는 예를 들어, '10010011102'의 2진수를 갖도록 가정될 수 있다. 입력 데이터(DATA)는 입력 비트 스트림의 청크(chunk)일 수 있다. 입력 비트 스트림의 비트 길이는 페이지당 셀 수의 적어도 두 배일 수 있다. 비트 스트림의 청크(chunk)에 상응하는 입력 데이터(DATA)는 레벨 감소 인코더(300)에 의해 인코딩될 수 있다. 상술한 바와 같은 실시예에서, 입력 비트 스트림 또는 입력 데이터(DATA)의 청크(chunk)는 10-비트 청크(chunk)에 상응한다.
본 발명의 실시예는 이에 한정되지 않으며, MLC들(MC1 및 MC2)은 MLC당 3 이상의 비트 정보를 저장할 수 있다. 예를 들어, MLC들(MC1 및 MC2)이 MLC당 3-비트 정보를 저장할 수 있는 경우, MLC들(MC1 및 MC2)의 문턱 전압에 의해 서로 구별되는 8 레벨을 갖는다.
이하에서는, 레벨 감소 알고리즘을 상세히 설명한다.
레벨 감소 알고리즘은, MLC가 입력 데이터(DATA)를 저장하기 위해 가능한 레벨들에서 적어도 하나의 레벨을 제거한다. MLC가 MLC당 m-비트 정보를 저장하는 경우, MLC의 최대 레벨 수는 2의 m 제곱(2m)인 L로 나타낼 수 있다. 설명의 편의를 위해, 입력 데이터(DATA)가 P-비트 길이의 비트 스트림에 상응하는 것으로 가정한다. 즉, 레벨 감소 인코더(300)는 P-길이 이진 정보(P-length binary information)의 입력 데이터(DATA)를 수신한다.
입력 데이터(DATA)를 저장하는 MLC의 수는 P/m인 N으로 나타낼 수 있다. 따라서, 레벨 감소 알고리즘의 사용 없이 입력 데이터(DATA)가 저장된 경우, 입력 데이터(DATA)는 L 레벨(Level 0 내지 Level (L-1))을 사용하여 P/m MLC 또는 N MLC들로 분산된다.
레벨 감소 인코더(300)는 L 레벨들로부터 적어도 하나의 레벨을 제거하여 입력 데이터(DATA)를 인코딩된 입력 데이터(E_DATA)로 변환한다. 제거된 레벨의 수는 K로 나타낼 수 있다. 인코딩된 입력 데이터(E_DATA)의 크기는 Q이다. 인코딩된 입력 데이터(E_DATA)는 Q-길이 이진 정보(Q-length binary information) 이다. 따라서, Q-길이 인코딩된 입력 데이터(E_DATA)가 적은 레벨을 이용하여 분산되도록 하기 위해, 레벨 감소 인코더(300)는 P-길이 입력 데이터(DATA)를 Q-길이 인코딩된 입력 데이터(E_DATA)로 변환한다.
인코딩된 입력 데이터(E_DATA)를 저장하는 MLC의 수는 Q/m에 상응한다. 따라서, 인코딩된 입력 데이터(E_DATA)가 Level 0 내지 Level (I-1)을 사용하여 Q/m MLC로 분산된다. 이때, (L-K)와 같은 I는 인코딩된 입력 데이터(E_DATA)를 저장하기 위해 사용되는 레벨 수이다. Level (L-K) 내지 Level (L-1)의 레벨은 레벨 감소 알고리즘을 사용하여 가능한 레벨들(Level 0 내지 Level (L-1))에서 제거된다.
변환 비율(P/Q)은 P-길이 스트링과 Q-길이 스트링을 고려한 입력 데이터(DATA)와 인코딩된 입력 데이터(E_DATA) 사이의 변환 비율을 나타낸다. 실시예에 따른 레벨 감소 알고리즘을 적용하기 위해, 하기와 같이, 변환 비율(P/Q)은 logL(I)의 최대 변환 비율보다 작거나 같아야 한다.
Figure pat00001
여기서,
Figure pat00002
이고, L보다 작은 I는 인코딩된 입력 데이터(E_DATA)를 저장하기 위해 사용되는 레벨의 수이고, N은 P 비트 길이의 입력 데이터(DATA)를 저장하는데 필요한 MLC의 수이다.
변화 비율(P/Q)의 최대 변환 비율은 logL(I)의 값이다. IN의 값은, N개의 셀들 중 I 레벨을 사용하여 나타나는 조합의 수이다.
Figure pat00003
은, N개의 셀들에 대해
Figure pat00004
레벨을 이용하여 분산된 입력 데이터(DATA)의 비트 수이다.
실시예에 따라, 한 페이지의 크기를 갖는 입력 비트 스트림은 인코딩된 입력 데이터 스트림이 동일한 페이지에 저장되도록 압축될 수 있다. 이 경우, 인코딩된 입력 데이터 스트림을 저장하기 위한 추가 메모리 셀이 필요하지 않다. 그 대신, 인코딩된 입력 데이터의 증가된 크기를 제공하기 위해, MLC 메모리 어레이(221)의 페이지 크기가 증가될 수 있다. 페이지(또는 워드라인) 할당에 대해서는 도 11 내지 도 12를 참고하여 후술된다.
레벨 감소 알고리즘은 태블러 코딩 방식(tabular coding method) 또는 열거 코딩 방식(enumerative coding method) 중 하나에 의해 수행될 수 있다. 두 방법에서, 첫 번째 단계는 인코딩된 입력 데이터(E_DATA)를 저장하는데 사용되는 레벨의 수에 따라 변환 비율(P/Q)을 결정하는 것이다.
도 4 및 도 5는 본 발명의 실시예에 따른 태블러(tabular) 인코딩 방식을 이용하여 입력 데이터(DATA)를 인코딩된 입력 데이터(E_DATA)로 매핑하는 복수의 엔트리를 포함하는 테이블을 나타내는 도면이다. 도 4 및 도 5를 참조하면, 각 엔트리는 입력 데이터(DATA)와 인코딩된 입력 데이터(E_DATA)의 한 쌍을 포함한다. P-길이 스트링에 상응하는 입력 데이터(DATA)는 L 레벨(Level 0 내지 Level (L-1)을 사용하여 표현되고, Q-길이 스트링에 상응하는 인코딩된 입력 데이터(E_DATA)는 I 레벨(Level 0 내지 Level (I-1)을 사용하여 표현된다. 예를 들어, 입력 데이터(DATA)는 4 레벨(Level 0 내지 Level 3)을 사용하여 표현된다. 입력 데이터(DATA)의 각 자릿수는 4 레벨(Level 0 내지 Level 3) 중 하나를 나타낸다. 인코딩된 입력 데이터(E_DATA)는 가장 높은 레벨(Level 3)없이 3 레벨(Level 0 내지 Level 2)을 이용하여 표현된다. 인코딩된 입력 데이터(E_DATA)의 각 자릿수는 3 레벨(Level 0 내지 Level 2) 중 하나를 나타낸다.
도 4에서, 입력 데이터(DATA)는 상응하는 인코딩된 입력 데이터(E_DATA)에 일대일로 매핑된다.
도 3의 레벨 감소 인코더(300)는, 입력 데이터(DATA)를 수신하고, 예를 들어 도 4 및 도 5의 테이블 중 하나를 이용한 매칭 동작을 수행하여 입력 데이터(DATA)에 상응하는 인코딩된 입력 데이터(E_DATA)를 검색하고, 메모리(220)에 저장될 인코딩된 입력 데이터(E_DATA)를 생성한다.
리드 동작에 대해, 메모리(220)에 저장된 인코딩된 입력 데이터(E_DATA)는 반대 방향으로 동일한 방식으로 수행되는 디코딩 동작을 이용하여 디코딩될 수 있다. 레벨 감소 알고리즘을 사용하지 않고 리드 동작이 수행되는 경우, 이러한 리드 동작은 필요한 기준 전압보다 작은 전압을 이용하여 수행될 수 있다.
도 4는, MLC 당 2-비트 정보를 저장할 수 있는 MLC에 대해 일대일 매핑 관계의 일 예를 나타내는 테이블이다. 실시예에 따라, 레벨의 수는 4에서 3으로 감소된다. 이 경우, 최대 변환 비율은 log43(=0.79)이다. P/Q의 변환 비율은 6/8(=0.75)이다. 이때, P는 왼쪽 컬럼(column)에 나타난 입력 데이터(DATA)의 이진 비트 크기이고, Q는 오른쪽 컬럼(column)에 나타난 인코딩된 입력 데이터(E_DATA)의 이진 비트 크기이다. 입력 데이터(DATA)와 인코딩된 입력 데이터(E_DATA)의 각 자릿수는 2-비트 정보에 상응하는 레벨을 나타낸다. P/Q의 변환 비율은 최대 변환 비율보다 작다.
수학식 1에 따라 P/Q의 변환 비율이 최대 변환 비율보다 작거나 같은 경우, 레벨 감소 알고리즘이 적용된다. 도 4에서, P/Q의 변환 비율(=0.75)은 최대 변환 비율(=0.79)보다 작다. 따라서, 입력 데이터(DATA)에 레벨 감소 알고리즘을 적용하여, 인코딩된 입력 데이터(E_DATA)를 생성한다.
입력 데이터(DATA)는 4 레벨(Level 0 내지 Level 3) 중 하나를 나타내는 각 자릿수의 4진수로 표현된다. 이 경우, 입력 데이터(DATA)는 테이블에서 43의 조합 중 하나로 표현된다. 인코딩된 입력 데이터(E_DATA)는 3 레벨(Level 0 내지 Level 2) 중 하나를 나타내는 각 자릿수의 3진수로 표현된다. 테이블을 구성하면, 제3 레벨(Level 3)을 갖지 않는 인코딩된 입력 데이터(E_DATA)는 그에 상응하는 입력 데이터(DATA)에 할당된다. 예를 들어, 도 4의 엔트리 A(Entry A)에 대하여, 입력 데이터(DATA)는 "3304"으로 표현되고, 그에 상응하는 인코딩된 입력 데이터(E_DATA) "20203"으로 표현된다. 인코딩된 입력 데이터(E_DATA)는 제3 레벨(Level 3) 없이 3 레벨(Level 0 내지 Level 2)만을 이용하여 표현된다.
실시예는 도 4의 테이블에 한정되지 않는다. 예를 들어, 실시예에 따라, 제3 레벨(Level 3)이 인코딩된 입력 데이터(E_DATA)에 할당되지 않도록 일대일 관계는 다양한 방식으로 랜덤하게 할당될 수 있으므로, 도 4의 테이블은 도 4에 도시된 바와 같이 다른 일대일 관계를 포함한다.
설명의 편의를 위해, 4 레벨에서 3 레벨로의 감소에 대해 상술하였다. 그러나 본 발명이 이에 한정되지 않는다. 예를 들어, P/Q의 변환 비율이 log42의 최대 변환 비율보다 작거나 같으면 레벨 감소 알고리즘에 따라 4 레벨에서 2 레벨로 감소시키는 것이 가능하다. 이 경우, P/Q의 변환 비율은 1/2에 상응한다.
도 5는, MLC 당 3-비트 정보를 저장할 수 있는 MLC에 대한 일대일 매핑 관계의 일 예를 나타내는 테이블이다. 실시예에 따라, 레벨의 수는 8에서 4로 감소된다. 이 경우, 상기 수학식 1에 따라 최대 변환 비율은 log84(=0.66)의 값이다. P/Q의 변환 비율은 4/6(=0.66)이다. 이때, P는 왼쪽 컬럼(column)에 나타난 입력 데이터(DATA)의 이진 비트 크기이고, Q는 오른쪽 컬럼(column)에 나타난 인코딩된 입력 데이터(E_DATA)의 이진 비트 크기이다. 입력 데이터(DATA)와 인코딩된 입력 데이터(E_DATA)의 각 자릿수는 레벨을 나타낸다. P/Q의 변환 비율이 최대 변환 비율보다 작거나 같은 경우, 레벨 감소 알고리즘이 적용된다. 이 경우, P/Q의 변환 비율은 최대 변환 비율과 같다. 따라서, 입력 데이터(DATA)에 레벨 감소 알고리즘을 적용하여, 인코딩된 입력 데이터(E_DATA)를 생성한다.
입력 데이터(DATA)는 8 레벨(Level 0 내지 Level 7)중 하나를 나타내는 각 자릿수의 8진수로 표현된다. 이 경우, 입력 데이터(DATA)는 테이블에서 72의 조합 중 하나로 표현된다. 인코딩된 입력 데이터(E_DATA)는 4 레벨(Level 0 내지 Level 3) 중 하나를 나타내는 각 자릿수의 4진수로 표현된다. 테이블을 구성하면, 인코딩된 입력 데이터(E_DATA)는 4 레벨(Level 4 내지 Level 7)을 갖지 않는 수로 표현된다. 인코딩된 입력 데이터(E_DATA)는 그에 상응하는 입력 데이터(DATA)에 할당된다. 예를 들어, 도 5의 엔트리 B(Entry B)에 대하여, 입력 데이터(DATA)는 "748"로 표현되고, 그에 상응하는 인코딩된 입력 데이터(E_DATA) "3304"으로 표현된다. 인코딩된 입력 데이터(E_DATA)는 레벨들(Level 4 내지 Level 7) 없이 4 레벨(Level 0 내지 Level 3)만을 이용하여 표현된다.
실시예에 따라, 4 레벨(Level 4 내지 Level 7)이 인코딩된 입력 데이터(E_DATA)에 할당되지 않도록 일대일 관계는 랜덤하게 할당될 수 있으므로, 일대일 관계는 다양한 방식으로 나타낼 수 있다.
설명의 편의를 위해, 8 레벨에서 4 레벨로의 감소에 대해 상술하였다. 그러나 본 발명이 이에 한정되지 않는다. 예를 들어, 상기 수학식 1이 충족되는 경우 8 레벨에서 2 레벨로의 감소가 가능하다. 이 경우, 최대 변환 비율은 log82(=0.33)이다. P/Q의 변환 비율이 1/3(=0.33)에 상응하는 경우, 수학식 1이 충족된다. 예를 들어, 수학식 1이 충족되는 경우 8 레벨에서 3 레벨로의 감소가 가능하다. 이 경우, 최대 변환 비율은 log83(=0.52)이다. P/Q의 변환 비율이 1/2에 상응하는 경우, 수학식 1이 충족된다.
실시예에 따라, 태블러(tabular) 인코딩 테이블에는 LP 엔트리가 포함되어 있다.
이하에서는, 열거(enumerative) 인코딩/디코딩 방식에 대해 도 6 내지 도 7을 참조하여 설명한다. 도 6은 본 발명의 실시예에 따른 열거 인코딩 방식을 나타내는 플로우차트이다. 도 7은 본 발명의 실시예에 따른 열거 디코딩 방식을 나타내는 플로우차트이다. 설명의 편의를 위해, 도 6 및 도 7의 각 단계는 도 3을 참조하여 설명된다.
열거 인코딩 방식은 L 진수로 표현된 P-길이 스트링에서 I 진수로 표현된 Q-길이 스트링으로의 진법 변환(base conversion)을 사용하여 레벨 감소 알고리즘을 구현한다. P-길이 스트링은 입력 데이터(DATA)에 상응하고, Q-길이 스트링은 인코딩된 입력 데이터(E_DATA)에 상응한다. 변환은 반복적으로 수행된다. 첫 번째 반복에서, 입력 데이터(DATA)는 I에 의해 나누어진다. 나머지는 제1 인코딩된 숫자이다. 정수의 몫은 결과로 인한 나머지가 제1 인코딩된 숫자의 왼쪽에 연계되는 다음 반복으로 입력된다. 정수의 몫이 0이 될 때까지 프로세스를 반복한다. 디코딩 프로세스는 반대 방향으로 진법(base)을 변환한다. 변환은 자릿수(place, j)에서 진법(base, I)의 각 숫자를 I의 j 제곱(Ij)과 곱하여 수행된다. 여기서, j는 진법(base) I의 자릿수(place)를 나타낸다.
610 단계에서, 제거된(또는 제거될) 레벨의 수가 설정된다. MLC에 저장될 데이터 비트의 수 또한 설정될 수 있다. 예를 들어, 도 3에 있어서, MLC들(MC1 및 MC2)은 MLC당 2-비트 정보를 저장할 수 있고, 제거될 레벨의 수는 1이다. 실시예에 따른 도 3의 레벨 감소는 4 레벨에서 3 레벨로의 감소에 상응한다. 예를 들어, L은 4이고, I는 3이다. 수학식 1에 따른 최대 변환 비율은 0.79이다. 이 경우, 0.79보다 작거나 같으면 P/Q의 변환 비율이 허용된다. 도 3에서, P/Q의 변환 비율은 10/14(=0.71)이다.
620 단계에서, 입력 데이터(DATA)가 수신된다. 예를 들어, 입력 데이터(DATA)는 '10010011102'이다. 입력 데이터(DATA)의 비트 길이(P)는 10이다.
630 단계에서, 인코딩된 입력 데이터(E_DATA)가 초기화된다. 상기 수학식 1에 따라 인코딩된 입력 데이터(E_DATA)를 저장하기 위해 인코딩된 입력 데이터(E_DATA)의 크기는 14이다.
640 단계에서, 입력 데이터(DATA)는 I로 나누어진다. I는 610 단계에서 제거된 레벨의 수에 따른 MLC의 허용 레벨의 수이다. 나눗셈 연산은 입력 데이터(DATA)의 10진수에 적용된다. 예를 들어, 입력 데이터가 '10010011102'이고, 10진수는 59010이다. 첫 번째 나눗셈 연산에서, 몫(quotient)은 196이고, 나머지(remainder)는 2이다.
645 단계에서, 몫과 나머지는 각각 변수 M과 w로 임시로 저장된다.
660 단계에서, 변수(M)에 저장된 몫이 0인지 여부를 판단한다. 몫이 0이 아닌 경우, 레벨 감소 알고리즘은 670 단계를 진행하여 임시 변수(w)를 인코딩된 입력 데이터(E_DATA)와 연관시킨다. 예를 들어, 몫(M)이 59010이므로, 레벨 감소 알고리즘은 670 단계를 진행하여 인코딩된 입력 데이터(E_DATA)를 23 값으로 저장한다.
680 단계에서, 변수(M)의 값은 I로 나누어진다.
685 단계에서, 각각의 변수들(M, w)은 680 단계에서 산출된 몫과 나머지로 업데이트된다.
임시 변수(M)의 값이 0이 될 때까지, 660, 670, 680 및 685 단계가 반복된다. 각 반복에서 생성된 나머지를 인코딩된 입력 데이터(E_DATA)와 연관시킨다.
따라서, 입력 데이터(DATA)는 I 진수로 표현되는 인코딩된 입력 데이터(E_DATA)로 변환된다. 인코딩된 입력 데이터(E_DATA)의 각 자릿수는 인코딩된 입력 데이터(E_DATA)에 해당하는 2-비트 정보를 나타낸다.
도 7에 도시된 바와 같이, 디코딩 프로세스는 반대 방향으로 진수(base)를 변환한다.
710 단계에서, 제2 MLC(MC2)에 저장된 인코딩된 출력 데이터(E_ODATA)가 리드된다. 인코딩된 출력 데이터(E_ODATA)는 인코딩된 입력 데이터(E_DATA)에 상응한다. I 진수로 표현된 인코딩된 출력 데이터(E_ODATA)는 이진수로 리드된다.
720 단계에서, 출력 데이터(ODATA)가 초기화된다. 출력 데이터(ODATA)는 인코딩된 출력 데이터(E_ODATA)로부터 디코딩된 횟수를 저장한다. 디코딩된 횟수는 입력 데이터(DATA)의 수와 동일하다.
반복 횟수(J)가 인코딩된 출력 데이터(E_ODATA)의 이진 비트 길이의 최대값에 도달할 때까지 730 단계 내지 760 단계가 반복된다. 반복하는 횟수는 반복 횟수(J)를 사용하여 카운트된다. 반복 횟수(J)는 인코딩된 출력 데이터(E_ODATA)의 자릿수(place)를 나타낸다. 760 단계에서, log2(I) 보다 크거나 같은 최소 정수에 상응하는 ceil 값([log2(I)])에 의해 반복 횟수(J)가 증가한다. 상술한 바와 같이, I는 레벨 감소 알고리즘에 따른 허용 레벨 수이고, ceil 값([log2(I)])은 제2 MLC(MC2)에서 허용되는 최대 레벨 수에 상응한다. 예를 들어, 제2 MLC(MC2)가 MLC당 2-비트 정보를 저장하는 경우, ceil 값([log2(I)])은 2이다.
740 단계에서, ceil([log2(I)-1)])에 대한 자릿수(place, j)에서의 인코딩된 출력 데이터(E_ODATA)의 비트 값은 임시 변수(SUB)로 저장된다.
750 단계에서, 임시 변수(SUB)에는 인코딩된 출력 데이터(E_ODATA)를 나타내는 I 진수에 대해 I((j-1)/2)의 자리 값(place value)이 곱해진다. 도 3에 도시된 바와 같이 4 레벨에서 3 레벨로의 감소에 대해, 제2 MLC(MC2)는 3진수를 저장하고, I((j-1)/2)의 자리 값은 30, 31, 32, ..., 36을 포함한다.
730 단계에서, 반복 횟수(J)가 인코딩된 출력 데이터(E_ODATA)의 비트 길이의 최대값에 도달하는 경우, 열거(enumerative) 디코딩 프로세스는 770 단계에서 종료한다. 출력 데이터(ODATA)의 값은 10진수의 입력 데이터(DATA)의 값에 상응한다.
이하에서는, 실시예에 따라 레벨 감소 알고리즘을 이용하여 프로그램되는 멀티레벨 셀에 대해 리드 동작이 수행되는 과정을 설명한다. 도 8은 멀티레벨 셀로 저장된 각 단일 페이지를 리드하기 위한 단일 기준 비교(single reference comparison)를 나타내는 레벨 감소 테이블이다.
설명의 편의를 위해, 각 메모리 셀은 메모리 셀 당 4 레벨을 이용하여 2-비트 정보를 저장할 수 있다. 입력 데이터(DATA)는 제1 컬럼(Page-1) 및 제2 컬럼(Page-2)에 2-비트 정보를 이용하여 표현된다. 레벨 감소 알고리즘에 따라 제1 컬럼(Page-1) 및 제2 컬럼(Page-2)의 2-비트 정보가 제3 컬럼에 나타난 인코딩된 입력 데이터(E_DATA)로 인코딩된다. 기준 전압(Ref-1 및 Ref-2)를 이용하는 단일 기준 비교를 이용하여 각 페이지가 리드되도록, 인코딩된 입력 데이터는 컬럼(Page-1) 및 제2 컬럼(Page-2)의 2-비트 정보로 할당될 수 있다.
2-비트 정보, 인코딩된 데이터, 기준 전압(Ref-1 및 Ref-2)의 조합 사이의 매칭 관계는 도 8의 테이블에 한정되지 않으며, 매칭 관계는 다양한 방식으로 나타날 수 있다.
설명의 편의를 위해, 최대 변환 비율이 0.792 이하 또는 동일한 것으로 가정하고, 레벨 감소 알고리즘은 P/Q의 변환 비율(3/4)을 이용하여 적용된다. 따라서, 인코딩된 입력 데이터(E_DATA)의 2-비트 정보는 3 레벨을 이용하여 4개의 셀에 대해 분산된다. 두 개의 단일 기준(Ref-1 및 Ref-2)을 이용한 비교 결과는 각 메모리 셀의 비교 결과를 나타낸다.
도 3에 도시된 바와 같이, 기준(Ref-1) 비교는 제0 레벨(Level 0)과 제1 레벨(Level 1)을 구분하는 기준 전압(Ref-1)을 이용하는 비교를 나타낼 수 있다. 기준(Ref-1) 비교는 "0"과 "+" 두 개의 결과를 가질 수 있다. "0"은 제0 레벨(Level 0)을 나타낼 수 있고, "+"는 제1 레벨(Level 1) 또는 제2 레벨(Level 2)을 나타낼 수 있다.
도 3에 도시된 바와 같이, 기준(Ref-2) 비교는 제1 레벨(Level 1)과 제2 레벨(Level 2)을 구분하는 기준 전압(Ref-2)을 이용하는 비교를 나타낼 수 있다. 기준(Ref-3) 비교는 "2" 또는 "-" 두 개의 결과를 가질 수 있다. "2"는 제2 레벨(Level 2)을 나타낼 수 있고, "-"는 제0 레벨(Level 0) 또는 제1 레벨(Level 1)을 나타낼 수 있다.
실시예에 따른 단일 기준 비교 방법은, 두 페이지(Page-1 및 Page-2) 각각이, 인코딩된 입력 데이터(E_DATA)를 저장하는 4개의 셀들에 대해 두 기준 전압(Ref-1 및 Ref-2) 중 하나를 이용하는 단일 기준 비교를 적용하여 고유하게 리드될 수 있다.
예를 들어, 제2 페이지(Page-2)는 "----"의 비교 결과를 제외하고 기준 전압(Ref-1)을 이용하는 비교 없이 제2 기준 전압(Ref-2)을 이용하는 단일 기준 비교를 포함하여 고유하게 리드될 수 있다. 예를 들어, 4개의 제2 기준 전압(Ref-2)의 비교 결과가 "222-"를 갖는 경우 제2 페이지(Page-2)는 "001"을 가지며, 4개의 제1 기준 전압(Ref-1)의 비교 결과가 "+0++"를 갖는 경우 제2 페이지(Page-2)는 "111"을 가질 수 있다. 따라서, 제2 페이지(Page-2)의 비트 정보는 제2 기준 전압(Ref-2)만을 이용하는 비교 결과와 고유하게 관련될 수 있다. 예를 들어, 제2 페이지(Page-2)의 "000", "011", "101", 및 "111"은 "----"의 동일한 비교 결과를 갖는다. 따라서, 제1 기준 전압(Ref-1)을 이용하는 추가적인 비교는 제2 페이지(Page-2)의 복수의 정보 중 하나를 선택하는 것이 필요하다.
본 발명은 8-레벨 MLC에 적용될 수 있다. 예를 들어, 도 8에 도시된 바와 같은 특유의 4-레벨을 연관시켜서 테이블이 형성될 수 있다.
실시예에 따라, 단일 기준 비교를 이용하여 각 페이지가 리드될 수 있도록, 리드 동작은 데이터 분산에 의해 가속화될 수 있다.
이하에서는, 도 9 내지 도 10을 참조하여 메모리 시스템(200)을 설명한다. 도 9는 본 발명의 실시예에 따른 레벨 감소 인코더와 레벨 감소 디코더를 포함하는 도 1의 메모리 시스템(200)을 나타낸다. 도 10은 본 발명의 실시예에 따른 레벨 감소 인코더(210c-1 및 210c-2)와 레벨 감소 디코더(210d-1 및 210d-2)를 포함하는 도 1의 메모리 시스템(200)을 나타낸다.
도 9에 있어서, 도 1의 메모리 시스템(200)은 실시예에 따른 레벨 감소 인코더와 레벨 감소 디코더를 포함한다. 메모리 시스템(200)은 소스 인코더(210a), 채널 인코더(210b) 및 실시예에 따른 레벨 감소 알고리즘을 사용하여 인코딩 동작을 수행하는 레벨 감소 인코더(210c)를 포함한다.
소스 인코더(210a)는 입력 비트 스트림(I_DATA)을 압축하고, 압축된 입력 비트 스트림(CI_DATA)을 생성한다. 압축은 허프만 코드(Huffman code), 턴스톨 코드(Tunstall code), 산술 부호(Arithmetic code), 렘펠-지브(Lempel-Ziv) 또는 Dynamic Markov Chain과 같은 압축 알고리즘 중 적어도 하나를 이용하여 수행될 수 있다.
채널 인코더(210b)는 채널 인코더 입력(PCI_DATA)을 생성하기 위해 압축된 입력 비트 스트림(CI_DATA)에 대해 패리티 비트를 이용하여 에러 검출 알고리즘을 수행한다. 에러 검출 알고리즘은 BCH 코드(BCH code), 리드-솔로몬 코드(Reed-Solomon code), LDPC 코드(Low Density Parity Check code), 컨볼루션 코드(Convolution code), 곱 코드(Product code)와 같은 에러 검출 알고리즘 중 적어도 하나를 이용하여 수행될 수 있다.
레벨 감소 인코더(210c)는 실시예에 따라 입력 데이터(DATA)에 대해 레벨 감소 알고리즘을 수행한다. 레벨 감소 인코더(210c)는 채널 인코더 입력(PCI_DATA)을 수신하고, 채널 인코더 입력(PCI_DATA)에 대해 레벨 감소 알고리즘을 수행한다. 도 3에 도시된 바와 같이, 레벨 감소 인코더(210c)는 입력 데이터(DATA)의 청크(chunk)에서의 채널 인코더 입력(PCI_DATA)을 수신한다. 입력 데이터(DATA)의 비트 길이(P)와 인코딩된 입력 데이터(E_DATA)의 비트 길이(Q)는 상기 수학식 1을 충족하도록 설정될 수 있다. 인코딩된 입력 데이터(E_DATA)는 L 레벨의 I 레벨에 대해서만 분산된다. 제거된 레벨이 프로그램 시퀀스의 끝에서의 레벨에 상응하는 경우, 프로그래밍 단계가 단순화되므로 프로그래밍 시간이 감소된다.
레벨 감소 인코더(210c)는 상기 태블러(tabular) 인코딩 방식 또는 상기 열거(enumerative) 인코딩 방식을 이용하여 구현될 수 있다.
레벨 감소 인코더(210c)는 로직 게이트를 이용하여 구현될 수 있다. 또는, 레벨 감소 인코더는 컴퓨터 프로그램으로 구현될 수 있다.
메모리 시스템(200)은 레벨 감소 디코더(210d), 채널 디코더(210e), 및 실시예에 따른 레벨 감소의 디코딩 동작을 수행하는 소스 디코더(210f)를 더 포함한다. 레벨 감소 디코더(210d)는 상술한 디코딩 방식을 이용하여 인코딩된 출력 데이터(E_ODATA)에 대한 디코딩 동작을 수행한다. 인코딩된 출력 데이터(E_ODATA)는 메모리(220)에 저장된다. 따라서, 레벨 감소 디코더(210d)는 채널 인코더 입력(PCI_DATA)에 상응하는 채널 인코더 출력(PCI_ODATA)을 생성한다.
예를 들어, 디코딩 방법은 도 4 및 도 5에 도시된 태블러(tabular) 인코딩 테이블 또는 도 7에 도시된 열거 디코딩 방식을 이용하여 수행될 수 있다. 채널 디코더(210e)는 패리티 비트를 제거하고, 압축된 입력 데이터(CI_DATA)에 상응하는 압축된 출력 데이터(CI_ODATA)를 생성한다. 소스 디코더(210f)는 압축된 출력 데이터(CI_ODATA)에 대해 압축해제를 수행하고, 입력 비트 스트림(I_DATA)에 상응하는 출력 비트 스트림(O_DATA)을 생성한다.
실시예에 따라, 메모리 시스템(200)은 낮은 레벨을 사용하여 데이터를 프로그램 및 리드하여 동작 시간을 감소시킬 수 있다.
도 10에 있어서, 도 1의 메모리 시스템(200)은 실시예에 따른 레벨 감소 인코더(210c-1 및 210c-2)와 레벨 감소 디코더(210d-1 및 210d-2)를 포함한다. 메모리 시스템(200)은 레벨 감소 알고리즘이 입력 비트 스트림(I_DATA) 및 채널 인코더의 패리티 비트에 대해 별도로 수행되는 것을 제외하고는, 도 9의 메모리 시스템(200)과 유사하다. 본 발명의 레벨 감소 알고리즘에 따라 인코딩된 수에 기초하여 패리티 비트가 생성된다.
메모리 시스템(200)은 소스 인코더(210a), 채널 인코더(210b) 및 실시예에 따른 인코딩 동작을 수행하는 제1 레벨 감소 인코더(210c-1), 제2 레벨 감소 인코더(210c-2)를 포함한다. 제1 레벨 감소 인코더(210c-1)는 도 4 및 도 5에 도시된 태블러(tabular) 인코딩 방식 또는 도 6에 도시된 열거(enumerative) 인코딩 방식으로 동작하도록 구현될 수 있다. 제2 레벨 감소 인코더(210c-2)는 태블러(tabular) 인코딩 방식 또는 열거(enumerative) 인코딩 방식으로 동작하도록 구현될 수 있다.
소스 인코더(210a) 및 채널 인코더(210b)는 도 9의 인코더와 실질적으로 동일하다. 설명의 편의를 위해, 소스 인코더(210a) 및 채널 인코더(210b)의 설명에 대해서는 생략한다.
제1 레벨 감소 인코더(210c-1)는 소스 인코더(210a)로부터 압축된 입력 데이터(CI_DATA)를 수신하고, 인코딩된 압축 입력 데이터(ECI_DATA)를 생성한다. 채널 인코더(210b)는 인코딩된 압축 입력 데이터(ECI_DATA)를 수신하여 패리티 비트(PB)를 생성한다. 제2 레벨 감소 인코더(210c-2)는 채널 인코더(210b)로부터 패리티 비트(PB)를 수신하고, 인코딩된 패리티 비트(E_PB)를 생성한다. 인코딩된 압축 입력 데이터(ECI_DATA) 및 인코딩된 패리티 비트(E_PB)는 메모리(220)에 저장된다.
제1 및 제2 레벨 감소 인코더(210c-1, 210c-2)는 압축된 입력 데이터(CI_DATA) 및 패리티 비트(PB)에 대해 입력 데이터(DATA) 단위(unit)로 레벨 감소 알고리즘을 수행한다. 실시예에서, 제1 및 제2 레벨 감소 인코더(210c-1, 210c-2)는 입력 데이터(DATA)에 대한 다른 단위를 가질 수 있다.
인코딩된 압축 입력 데이터(ECI_DATA) 및 인코딩된 패리티 비트(E_PB)는 메모리(220)의 동일한 페이지에 저장된다.
메모리 시스템(200)은 제1 레벨 감소 디코더(210d-1), 제2 레벨 감소 디코더(210d-2), 채널 디코더(210e), 및 레벨 감소 알고리즘의 디코딩 동작을 수행하는 소스 디코더(210f)를 포함한다. 채널 디코더(210e) 및 소스 디코더(210f)는 도 9의 디코더와 실질적으로 동일하다. 설명의 편의를 위해, 채널 디코더(210e) 및 소스 디코더(210f)의 설명에 대해서는 생략한다.
제1 레벨 감소 디코더(210d-1)는 메모리 장치(220)로부터 인코딩된 패리티 비트(E_PB)를 수신하고, 실시예에 따른 레벨 감소 알고리즘을 이용하여 패리티 비트(PB)를 생성한다. 채널 디코더(210e)는 (1) 제1 인코딩된 압축 출력 데이터(ECI_ODATA1), 및 (2) 패리티 비트(PB)의 두 정보를 수신하고, 인코딩된 압축 입력 데이터(ECI_DATA)에 상응하는 제2 인코딩된 압축 출력 데이터(ECI_ODATA2)를 생성한다. 패리티 비트(PB)를 별도로 수신하는 채널 디코더(210e)는 레벨 감소 알고리즘과 관련하여 동작할 때 복구 에러(recovery error)를 감소시킬 수 있다.
제2 레벨 감소 디코더(210d-2)는 제2 인코딩된 압축 출력 데이터(ECI_ODATA2)를 수신하고, 레벨 감소 알고리즘의 디코딩 방식에 따라 압축된 출력 데이터(CI_ODATA)를 생성한다. 압축된 출력 데이터(CI_ODATA)는 압축된 입력 데이터(CI_DATA)에 상응한다.
소스 디코더(210f)는 압축된 출력 데이터(CI_ODATA)에 대해 압축해제를 수행하고, 입력 비트 스트림(I_DATA)에 상응하는 출력 비트 스트림(O_DATA)을 생성한다.
이하에서는, 본 발명의 실시예에 따른 워드라인 분할(wordline segmentation)을 도 11 및 도 12를 참조하여 설명한다. 도 11은 실시예에 따른 인코딩된 입력 데이터를 저장하는 메모리 셀의 증가된 수를 수용하기 위해 추가 메모리 셀을 사용하는 워드라인 분할을 설명하기 위한 도면이다. 도 12는 추가 메모리 셀을 이용하지 않는 워드라인 분할을 설명하기 위한 도면이다.
패리티 비트가 도 10에 도시된 바와 같은 레벨 감소 알고리즘을 이용하여 별도로 인코딩되는 경우 워드라인 분할이 적용될 수 있다. 워드라인은 도 2의 페이지를 나타낼 수 있다. 각 페이지의 길이는 고정된 워드라인에 연결된 메모리 셀들의 수이다. 상술한 바와 같이, 데이터와 패리티 비트는 레벨 감소 알고리즘이 사용되지 않았을 때보다 더 많은 메모리 셀들을 이용하고 적은 수의 레벨을 이용하여 각 페이지에 분산될 수 있다. 인코딩된 데이터와 패리티 비트를 저장하기 위해, 두 개의 워드라인 분할 방법이 사용될 수 있다.
도 11에 있어서, 실시예에 따라 인코딩된 입력 데이터를 저장하기 위해 증가된 메모리 셀의 수를 수용하기 위해 추가 메모리 셀을 포함하는 각 워드라인이 분할된다. 각 페이지(PG)의 길이는 레벨 감소 알고리즘에 따라 인코딩된 압축 입력 데이터(ECI_DATA)와 인코딩된 패리티 비트(E_PB)를 저장하기에 충분하지 않다. 따라서, 인코딩된 압축 입력 데이터(ECI_DATA)와 인코딩된 패리티 비트(E_PB)를 저장하기 위해 추가 메모리 셀(PG+)이 각 페이지(PG)에 추가된다. 예를 들어, 각 페이지(PG)의 소정의 길이는 인코딩된 압축 입력 데이터(ECI_DATA)에 할당되고, 각 페이지(PG)의 나머지 부분과 추가 메모리 셀(PG+)은 인코딩된 패리티 비트(E_PB)에 할당된다. 추가 메모리 셀의 수는 P/Q의 변환 비율에 따라 달라진다.
도 12에 있어서, 추가 메모리 셀을 이용하지 않고 각 워드라인이 분할된다. 추가 메모리 셀 없이 인코딩된 압축 입력 데이터(ECI_DATA)와 인코딩된 패리티 비트(E_PB)가 페이지에 대해 분산된다. 이 경우, 인코딩된 압축 입력 데이터(ECI_DATA)는 더 높은 변환 비율(P/Q)을 사용하는 것보다 더 적은 메모리 셀을 사용하여 저장되고 인코딩된 패리티 비트(E_PB)가 추가 메모리 셀 없이 각 페이지(PG)에 저장되도록 하기 위해, 더 작은 P/Q의 변환 비율이 사용된다.
도 13은 본 발명의 실시예에 따라 더 높은 레벨을 이용하여 페이지-바이-페이지(page-by-page) 방식으로 복수의 페이지를 저장하는 MLC에 대한 일대일 매핑 관계를 나타내는 테이블이다. 도 13에 있어서, 테이블의 각 로우(row)는 레벨 감소 알고리즘에 따른 입력 데이터(DATA)와 인코딩된 입력 데이터(E_DATA) 사이의 일대일 관계를 포함한다. 설명의 편의를 위해, 입력 데이터(DATA)는 두 페이지를 포함한다. 예를 들어, 제1 컬럼은 제1 페이지의 제1 데이터를 나타내고, 제2 컬럼은 제2 페이지의 제2 데이터를 나타낸다. 제3 컬럼은 제1 데이터에 대한 제1 인코딩된 입력 데이터(E_DATA1)를 나타낸다. 제1 데이터의 인코딩된 입력 데이터(E_DATA)는 더 낮은 2 레벨(Level 0 및 Level 1)을 이용하여 4개의 셀들에 분산된다. 제4 컬럼은 제1 및 제2 데이터에 대한 제2 인코딩된 입력 데이터(E_DATA2)를 나타낸다. 제2 인코딩된 입력 데이터(E_DATA2)는 더 낮은 2 레벨(Level 0 및 Level 1)의 더 높은 Level 2로 추가하여 형성된다. 각 로우는 제1 인코딩된 입력 데이터(E_DATA1)와 제2 인코딩된 입력 데이터(E_DATA2)를 리드하기 위한 리드 전압을 나타내는 제5 컬럼을 더 포함한다.
제2 페이지를 제1 페이지에 추가하는 경우, 제1 페이지의 적어도 하나의 셀의 인코딩 레벨은 더 높은 레벨로 시프트된다. 로우 A에 나타난 바와 같이, 4개의 MLC를 이용하여 제1 페이지의 "001"이 "0010"으로 인코딩된다. 제2 페이지의 "000"이 제1 페이지에 추가되는 경우, 제1 및 제2 페이지의 인코딩 레벨이 "0011"이 되도록 하기 위해 네 번째 셀의 레벨이 Level 0에서 Level 1로 시프트된다.
로우 B에 나타난 바와 같이, 4개의 MLC를 이용하여 제1 페이지의 "011"이 "0110"으로 인코딩된다. 제2 페이지의 "010"이 제1 페이지에 추가되는 경우, 제1 및 제2 페이지의 인코딩 레벨이 "0121"이 되도록 하기 위해 세 번째 셀의 레벨이 Level 1에서 Level 2로 시프트되고 네 번째 셀의 레벨이 Level 0에서 Level 1로 시프트된다.
로우 C에 나타난 바와 같이, 4개의 MLC를 이용하여 제1 페이지의 "110"이 "1100"으로 인코딩된다. 제2 페이지의 "010"이 제1 페이지에 추가되는 경우, 제1 및 제2 페이지의 인코딩 레벨이 "2202"가 되도록 하기 위해 첫 번째 셀의 레벨이 Level 1에서 Level 2로 시프트되고 두 번째 셀의 레벨이 Level 1에서 Level 2로 시프트되며 네 번째 셀의 레벨이 Level 0에서 Level 2로 시프트된다.
레벨 감소 알고리즘을 이용하는 페이지-바이-페이지(page-by-page) 프로그래밍은, MLC를 가장 낮은 레벨에서 가장 높은 레벨로 프로그램하는 방식으로 MLC의 레벨이 시프트되는 특성을 이용하여 수행된다. 도 4 및 도 5의 테이블에 비해, 도 13의 테이블을 이용하여 레벨 감소 알고리즘이 수행되는 경우 각 페이지가 별도로 리드될 수 있다.
실시예에 따라, 메모리 시스템은 낮은 레벨을 사용하여 데이터를 프로그램 및 리드함으로써 동작 시간을 감소시킬 수 있다.
실시예에 따라, 메모리 시스템은 레벨 감소 알고리즘이 사용되는 동안 페이지 오류를 줄일 수 있다. 예를 들어, 페이지 오류율(page error rate)은 도 9보다 도 10의 메모리 시스템(200)에서 더 작을 수 있다. 도 9에 있어서, 레벨 감소 디코딩은 입력 데이터(DATA)와 패리티 비트(PB)의 조합된 데이터에 적용된다. 이 경우, 레벨 감소 디코딩으로 인한 에러가 입력 데이터(DATA)와 패리티 비트(PB)에 걸쳐있다. 그러나, 도 10에서는, 인코딩된 입력 데이터(E_DATA)에 대한 패리티 비트가 이미 산출되므로 레벨 감소 디코딩이 패리티 비트에만 적용된다. 예를 들어, 채널 인코더(210b)는 인코딩된 압축 입력 데이터(ECI_DATA)를 수신하여 패리티 비트(PB)를 생성한다. 이 경우, 레벨 감소 알고리즘에 의한 오류는 패리티 비트(PB)에만 영향을 미칠 수 있다.
실시예에 따라, 리드 동작에서 수행되는 기준 비교의 수가 감소될 수 있다. 예를 들어, L 레벨을 갖는 MLC에 대해 리드 동작이 수행되고 레벨 감소 알고리즘이 적용되지 않는 경우, 기준 비교의 수는 (L-1)이다. 그러나, 레벨 감소 알고리즘이 적용되고 L 레벨보다 작은 I 레벨이 사용되는 경우, 기준 비교의 수는 (I-1)로 단축된다. 실시예에 따른 리드 동작은, 빠른 동작 및 적은 전력을 소모한다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 호스트
200: 메모리 시스템
210: 컨트롤러
211: 호스트 인터페이스
212: 메모리 인터페이스
213: 프로세서
214: 롬(ROM)
215: 램(RAM)
210a: 소스 인코더
210b: 채널 인코더
210c, 210c-1, 210c-2: 레벨 감소 인코더
210d, 210d-1, 210d-2: 레벨 감소 디코더
210e: 채널 디코더
210f: 소스 디코더
220: 메모리
221: 메모리 어레이
300: 레벨 감소 인코더

Claims (10)

  1. 각 메모리셀이 L 레벨들을 포함하는 복수의 멀티레벨 메모리셀들을 포함하는 메모리 장치의 동작 방법에 있어서,
    이진수로 표현된 데이터를 수신하는 단계;
    상기 데이터로부터 P-길이 스트링을 생성하는 단계;
    상기 L 레벨들로부터 적어도 하나의 레벨을 제거함으로써 상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계; 및
    상기 Q-길이 스트링을 상기 복수의 메모리셀들로 프로그래밍하는 단계를 포함하며,
    P 및 Q는 상기 P-길이 스트링 및 상기 Q-길이 스트링의 이진 비트 길이를 나타내고, Q는 P보다 크고, L은 각 멀티레벨 메모리셀이 가지는 최대 레벨 수를 나타내며,
    상기 Q-길이 스트링은 I 레벨들을 이용하여 분산되고, I는 L보다 작은, 메모리 장치의 동작 방법.
  2. 제1항에 있어서,
    P/Q는 logL(I)와 같거나 작은 메모리 장치의 동작 방법.
  3. 제1항에 있어서, 상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계는
    상기 P-길이 스트링과 상기 Q-길이 스트링 간의 복수의 일대일 매핑 관계들의 정보를 포함하는 테이블을 이용하여 수행되는 메모리 장치의 동작 방법.
  4. 제1항에 있어서, 상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계는
    L 진수(number of base L)로 표현되는 상기 P-길이 스트링을, 상기 L 진수로부터 I 진수로의 진수변환을 이용하여, I 진수로 표현되는 상기 Q-길이 스트링으로 변환하는 단계를 포함하는 메모리 장치의 동작 방법.
  5. 제1항에 있어서, 상기 방법은
    (I-1) 기준 전압들을 이용하여 상기 복수의 메모리셀들로부터 상기 Q-길이 스트링을 독출하는 단계; 및
    상기 Q-길이 스트링을 상기 P-길이 스트링으로 디코딩하는 단계를 더 포함하는 메모리 장치의 동작 방법.
  6. 제5항에 있어서, 상기 Q-길이 스트링을 상기 P-길이 스트링으로 디코딩하는 단계는
    상기 P-길이 스트링과 상기 Q-길이 스트링 간의 일대일 매핑 관계들의 정보를 포함하는 상기 테이블을 이용하여 수행되는 메모리 장치의 동작 방법.
  7. 제6항에 있어서, 상기 Q-길이 스트링을 P-길이 스트링으로 디코딩하는 단계는
    상기 L 진수(number of base L)로 표현되는 상기 Q-길이 스트링을, 상기 I 진수로부터 상기 L 진수로의 진수변환을 이용하여, 상기 I 진수로 표현되는 상기 P-길이 스트링으로 변환하는 단계를 포함하는 메모리 장치의 동작 방법.
  8. 제1항에 있어서, 상기 P-길이 스트링을 생성하는 단계는
    상기 데이터를 압축된 데이터로 압축하는 단계; 및
    상기 압축된 데이터에 대하여 패리티 비트들을 연관시킴으로써 상기 압축된 데이터를 인코딩하여 상기 P-길이 스트링을 생성하는 단계를 포함하며,
    상기 P-길이 스트링을 Q-길이 스트링으로 변환하는 단계는 상기 압축된 데이터의 상기 인코딩 후에 수행되는, 메모리 장치의 동작 방법.
  9. 복수의 멀티레벨 메모리셀들을 포함하는 메모리 장치를 프로그래밍하는 방법에 있어서,
    이진수로 표현된 P-길이 스트링을 수신하는 단계;
    상기 P-길이 스트링을 2m(L) 진수로 표현되는 제1 수로 인코딩하는 단계-각 멀티레벨 메모리셀은 L 레벨들을 포함하고, m은 2이상임-; 및
    상기 제1 수를 Q-길이 스트링으로 변환하는 단계-상기 Q-길이 스트링은 I 진수로 표현되는 제1 수로 표현되고, L은 I보다 크고, Q는 P보다 크고, P 및 Q는 상기 P-길이 스트링 및 상기 Q-길이 스트링의 이진 비트 길이를 나타냄-; 및
    상기 Q-길이 스트링을 상기 복수의 메모리셀들의 Q/m 메모리셀들로 프로그래밍하는 단계를 포함하며,
    상기 Q-길이 스트링은 각 메모리셀의 I 레벨들을 이용하여 Q/m 메모리셀들로 분산되는, 메모리 장치의 프로그래밍 방법.
  10. 제9항에 있어서, 상기 P-길이 스트링을 변환하는 단계는
    상기 L 레벨들로부터 적어도 하나의 레벨을 제거하는 단계를 포함하고,
    상기 적어도 하나의 레벨의 수는 (L-I)인 메모리 장치의 프로그래밍 방법.
KR1020160005499A 2015-01-20 2016-01-15 메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러 KR102414620B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/600,754 2015-01-20
US14/600,754 US9613664B2 (en) 2015-01-20 2015-01-20 Method of operating memory device including multi-level memory cells

Publications (2)

Publication Number Publication Date
KR20160089870A true KR20160089870A (ko) 2016-07-28
KR102414620B1 KR102414620B1 (ko) 2022-06-30

Family

ID=56408336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160005499A KR102414620B1 (ko) 2015-01-20 2016-01-15 메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러

Country Status (2)

Country Link
US (1) US9613664B2 (ko)
KR (1) KR102414620B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10043557B1 (en) 2017-10-10 2018-08-07 Micron Technology, Inc. Apparatuses and methods for parallel I/O operations in a memory
CN113874940A (zh) 2019-05-30 2021-12-31 美光科技公司 包含多电平命令和地址信号的装置和方法
US20230060813A1 (en) * 2021-09-01 2023-03-02 Micron Technology, Inc. Data Masking for Pulse Amplitude Modulation

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100057977A1 (en) * 2008-08-28 2010-03-04 Agere Systems Inc. Reduced-power programming of multi-level cell (mlc) memory
KR20100139010A (ko) * 2008-03-11 2010-12-31 에이저 시스템즈 인크 멀티-레벨 셀 플래쉬 메모리 디바이스 내에 데이터를 저장하는 방법 및 멀티-레벨 셀 플래쉬 메모리 디바이스
KR20110051190A (ko) * 2008-07-01 2011-05-17 엘에스아이 코포레이션 플래시 메모리 프로그래밍 방법 및 시스템, 플래시 메모리 판독 방법 및 시스템
KR20140009548A (ko) * 2011-05-12 2014-01-22 마이크론 테크놀로지, 인크. 메모리 셀들의 프로그래밍
US20140059406A1 (en) * 2010-03-15 2014-02-27 Fusion-Io, Inc. Reduced level cell mode for non-volatile memory
KR20140076127A (ko) * 2012-12-12 2014-06-20 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 동작 방법과, 이를 포함하는 데이터 처리 시스템
KR20140098702A (ko) * 2013-01-31 2014-08-08 엘에스아이 코포레이션 선택적 이진 및 비-이진 디코딩을 이용한 플래시 메모리에서의 검출 및 디코딩
KR20140113851A (ko) * 2013-03-15 2014-09-25 삼성전자주식회사 메모리 컨트롤러, 및 이의 동작 방법
KR20140136059A (ko) * 2010-06-04 2014-11-27 마이크론 테크놀로지, 인크. 비휘발성 메모리를 갖춘 멀티레벨 시스템에서의 진보된 비트별 동작 및 장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005092923A (ja) * 2003-09-12 2005-04-07 Renesas Technology Corp 半導体記憶装置
JP2007157234A (ja) 2005-12-05 2007-06-21 Matsushita Electric Ind Co Ltd メモリシステム
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
KR101261052B1 (ko) 2006-05-10 2013-05-06 주식회사 팬택앤큐리텔 멀티레벨 셀 메모리 장치 및 그 데이터 저장 방법
KR100822030B1 (ko) 2006-12-26 2008-04-15 삼성전자주식회사 고 부호화율 부호를 이용한 멀티 레벨 셀 메모리 장치
US7697325B2 (en) 2007-09-24 2010-04-13 Sandisk Corporation Non-volatile memory cell endurance using data encoding
KR101466695B1 (ko) * 2008-04-30 2014-12-01 삼성전자주식회사 멀티 비트 레벨 데이터의 부호화 및 복호화 방법
US8762626B2 (en) 2011-09-12 2014-06-24 Sandisk Technologies Inc. Data modification based on matching bit patterns

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100139010A (ko) * 2008-03-11 2010-12-31 에이저 시스템즈 인크 멀티-레벨 셀 플래쉬 메모리 디바이스 내에 데이터를 저장하는 방법 및 멀티-레벨 셀 플래쉬 메모리 디바이스
KR20110051190A (ko) * 2008-07-01 2011-05-17 엘에스아이 코포레이션 플래시 메모리 프로그래밍 방법 및 시스템, 플래시 메모리 판독 방법 및 시스템
US20100057977A1 (en) * 2008-08-28 2010-03-04 Agere Systems Inc. Reduced-power programming of multi-level cell (mlc) memory
US20140059406A1 (en) * 2010-03-15 2014-02-27 Fusion-Io, Inc. Reduced level cell mode for non-volatile memory
KR20140136059A (ko) * 2010-06-04 2014-11-27 마이크론 테크놀로지, 인크. 비휘발성 메모리를 갖춘 멀티레벨 시스템에서의 진보된 비트별 동작 및 장치
KR20140009548A (ko) * 2011-05-12 2014-01-22 마이크론 테크놀로지, 인크. 메모리 셀들의 프로그래밍
KR20140076127A (ko) * 2012-12-12 2014-06-20 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 동작 방법과, 이를 포함하는 데이터 처리 시스템
KR20140098702A (ko) * 2013-01-31 2014-08-08 엘에스아이 코포레이션 선택적 이진 및 비-이진 디코딩을 이용한 플래시 메모리에서의 검출 및 디코딩
KR20140113851A (ko) * 2013-03-15 2014-09-25 삼성전자주식회사 메모리 컨트롤러, 및 이의 동작 방법

Also Published As

Publication number Publication date
US9613664B2 (en) 2017-04-04
US20160211028A1 (en) 2016-07-21
KR102414620B1 (ko) 2022-06-30

Similar Documents

Publication Publication Date Title
US9583217B2 (en) Decoding method, memory storage device and memory control circuit unit
JP5785330B2 (ja) メモリエンデュランスのために動作させる装置および方法
US9985651B2 (en) Read threshold calibration for LDPC
CN111326199B (zh) 用于存储器设备的多态编程
US8176234B2 (en) Multi-write coding of non-volatile memories
JP6059358B2 (ja) メモリのための整形符号
US8463985B2 (en) Constrained coding to reduce floating gate coupling in non-volatile memories
US9136875B2 (en) Decoding method, memory storage device and rewritable non-volatile memory module
US9761325B1 (en) Memory system
US10103748B2 (en) Decoding method, memory control circuit unit and memory storage device
US8935589B2 (en) Controller and data access method for flash memories
KR20080110994A (ko) 비전단사 맵핑을 하는 셀당 멀티 비트의 플래시 메모리 디바이스
KR101550762B1 (ko) 연접 오류 정정 장치
CN110444240B (zh) 存储器系统的编码器和解码器及其方法
KR102628009B1 (ko) 부분 페이지 압축을 위한 메모리 시스템
US10193569B2 (en) Decoding method, memory storage device and memory control circuit unit
CN105023613A (zh) 解码方法、存储器存储装置及存储器控制电路单元
KR102414620B1 (ko) 메모리 장치의 동작 방법 및 메모리 장치를 동작시키는 메모리 컨트롤러
JP2018160064A (ja) メモリコントローラ、メモリシステムおよび制御方法
US20170134053A1 (en) Fixed point conversion of llr values based on correlation
US9697892B1 (en) Generation and application of gray codes
US11574698B1 (en) Compressing deep neural networks used in memory devices
US20140289450A1 (en) Dynamic Log Likelihood Ratio Quantization for Solid State Drive Controllers
KR20200033688A (ko) 에러 정정 회로 및 이의 동작 방법
JP6303039B2 (ja) ストレージシステム用のセル位置プログラミング

Legal Events

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