Nothing Special   »   [go: up one dir, main page]

KR101618313B1 - 불휘발성 메모리 장치의 프로그램 방법 - Google Patents

불휘발성 메모리 장치의 프로그램 방법 Download PDF

Info

Publication number
KR101618313B1
KR101618313B1 KR1020090052978A KR20090052978A KR101618313B1 KR 101618313 B1 KR101618313 B1 KR 101618313B1 KR 1020090052978 A KR1020090052978 A KR 1020090052978A KR 20090052978 A KR20090052978 A KR 20090052978A KR 101618313 B1 KR101618313 B1 KR 101618313B1
Authority
KR
South Korea
Prior art keywords
program
logic
states
logic states
memory cells
Prior art date
Application number
KR1020090052978A
Other languages
English (en)
Other versions
KR20100134377A (ko
Inventor
이종수
유한웅
김용준
손홍락
공준진
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090052978A priority Critical patent/KR101618313B1/ko
Priority to US12/786,732 priority patent/US8295084B2/en
Publication of KR20100134377A publication Critical patent/KR20100134377A/ko
Application granted granted Critical
Publication of KR101618313B1 publication Critical patent/KR101618313B1/ko

Links

Images

Classifications

    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input 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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 불휘발성 메모리 장치의 프로그램 방법에 관한 것이다. 본 발명의 불휘발성 메모리 장치의 프로그램 방법은 프로그램 데이터를 수신하고, 수신된 프로그램 데이터에 대응하는 논리 상태들을 검출하고, 검출 결과에 따라 논리 상태들의 마진들(margin)을 가변하고, 그리고 가변된 마진들에 기반하여, 프로그램 데이터를 대응하는 메모리 셀들에 프로그램하는 것을 포함한다.

Description

불휘발성 메모리 장치의 프로그램 방법{PROGRAMMING METHOD OF NONVOLATILE MEMORY DEVICE}
본 발명은 반도체 메모리 장치에 관한 것으로, 더 상세하게는 불휘발성 메모리 장치의 프로그램 방법에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM, DRAM, SDRAM 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터가 소멸하지 않는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM, PROM, EPROM, EEPROM, 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등이 있다. 플래시 메모리 장치는 크게 노어 타입과 낸드 타입으로 구분된다.
본 발명의 목적은 향상된 신뢰성을 갖는 불휘발성 메모리 장치 및 그것의 프로그램 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 프로그램 방법은, 프로그램 데이터를 수신하고; 상기 수신된 프로그램 데이터에 대응하는 논리 상태들을 검출하고; 상기 검출 결과에 따라, 상기 논리 상태들의 마진들(margin)을 가변하고; 그리고 상기 가변된 마진들에 기반하여, 상기 프로그램 데이터를 대응하는 메모리 셀들에 프로그램하는 것을 포함한다.
실시 예로서, 상기 수신된 프로그램 데이터에 대응하는 논리 상태들을 검출하는 것은, 상기 수신된 프로그램 데이터에 대응하는 논리 상태들의 수가, 상기 메모리 셀들이 가질 수 있는 논리 상태들의 수 보다 작은지 검출하는 것을 포함한다.
실시 예로서, 상기 메모리 셀들은 각각 적어도 세 비트를 저장할 수 있도록 구성된다.
실시 예로서, 상기 논리 상태들의 마진들을 가변하는 것은, 상기 논리 상태들의 마진들이 평준화 되도록 조절하는 것을 포함한다.
실시 예로서, 상기 논리 상태들 각각의 수를 카운트하는 것을 더 포함한다.
실시 예로서, 상기 논리 상태들의 마진들을 가변하는 것은, 상기 논리 상태들 중 가장 수가 많은 논리 상태의 마진이 나머지 논리 상태들의 마진보다 커지도록 조절하는 것을 포함한다.
실시 예로서, 상기 논리 상태들은 논리 값에 따라 순차적으로 배열되고, 상기 카운트된 값에 기반하여, 논리 값에 따른 상기 논리 상태들의 위치를 재배열하는 것을 더 포함한다.
실시 예로서, 상기 수신된 프로그램 데이터에 대응하는 논리 상태들을 검출하는 것은, 상기 메모리 셀들에 미리 저장되어 있는 데이터를 읽고; 그리고 상기 프로그램 데이터 및 상기 읽어진 데이터를 이용하여, 상기 프로그램 데이터의 논리 상태들을 판별하는 것을 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치의 프로그램 방법은 프로그램 데이터를 수신하고; 상기 수신된 프로그램 데이터에 대응하는 논리 상태들 각각의 수를 카운트하고; 상기 카운트된 값에 기반하여, 상기 논리 상태들의 마진들(margin)을 가변하고; 그리고 상기 가변된 마진들에 기반하여, 상기 프로그램 데이터를 대응하는 메모리 셀들에 프로그램하는 것을 포함한다.
실시 예로서, 상기 논리 상태들의 마진들을 가변하는 것은 제 1 논리 상태의 카운트 값보다 큰 카운트 값을 갖는 제 2 논리 상태의 마진을 상기 제 1 논리 상태의 마진보다 크게 설정하는 것을 포함한다.
본 발명에 따르면, 논리 상태들의 마진들이 향상된다. 따라서, 불휘발성 메모리 장치의 신뢰성이 향상된다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명 의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조 번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조 번호들을 이용하여 인용될 것이다.
도 1은 본 발명의 제 1 실시 예에 따른 메모리 시스템(10)을 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(10)은 컨트롤러(100) 및 불휘발성 메모리 장치(200)를 포함한다.
컨트롤러(100)는 호스트(Host) 및 불휘발성 메모리 장치(200)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(100)는 불휘발성 메모리 장치(200)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(100)는 불휘발성 메모리 장치(200)의 읽기, 쓰기, 그리고 소거 동작을 제어하도록 구성된다. 컨트롤러(100)는 불휘발성 메모리 장치(200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(100)는 불휘발성 메모리 장치(200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 컨트롤러(100)는 도 2를 참조하여 더 상세하게 설명된다.
불휘발성 메모리 장치(200)는 컨트롤러(100)의 제어에 응답하여, 데이터를 저장하도록 구성된다. 불휘발성 메모리 장치(200)는 컨트롤러(100)의 제어에 응답하여 저장된 데이터를 출력하도록 구성된다. 예시적으로, 불휘발성 메모리 장치(200)는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등과 같은 메모리 중 적어도 하나를 포함할 것이다. 불휘발성 메모리 장치(200)는 도 3을 참조하여 더 상세하게 설명된다.
컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 것이다. 예를 들면, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등을 구성할 것이다.
다른 예로서, 컨트롤러(100) 및 불휘발성 메모리 장치(200)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 것이다. 예시적으로, 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함할 것이다. 메모리 시스템(10)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(10)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선될 것이다.
다른 예로서, 메모리 시스템(10)은 컴퓨터, 휴대용 컴퓨터, UMPC, 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화 기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나(예를 들면, 반도체 드라이브(SSD), 메모리 카드 등)에 적용될 것이다.
다른 예로서, 불휘발성 메모리 장치(200) 또는 메모리 시스템(10)은 다양한 형태들의 패키지로 실장 될 수 있다. 예를 들면, 불휘발성 메모리 장치(200) 또는 메모리 시스템(10)은 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(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 것이다.
도 2는 도 1의 컨트롤러(100)를 보여주는 블록도이다. 도 2를 참조하면, 컨트롤러(100)는 시스템 버스(110), 프로세서(120), 램(130, RAM, Random Access Memory), 프로그램 로직(140), 호스트 인터페이스(150), 에러 정정 블록(160), 그 리고 메모리 인터페이스(170)를 포함한다.
시스템 버스(110)는 컨트롤러(100)의 구성 요소들 사이에 채널을 제공하도록 구성된다.
프로세서(120)는 채널(110)을 통해 컨트롤러(100)의 구성 요소들과 통신하도록 구성된다. 프로세서(120)는 컨트롤러(100)의 제반 동작을 제어하도록 구성된다. 예를 들면, 프로세서(120)는 컨트롤러(100)의 제반 동작을 제어하기 위한 펌웨어(Firmware)를 구동하도록 구성될 것이다. 예를 들면, 프로세서(120)는 불휘발성 메모리 장치(200)를 제어하기 위한 펌웨어를 구동하도록 구성될 것이다.
램(130)은 시스템 버스(110)에 연결된다. 예시적으로, 램(130)은 컨트롤러(100)의 동작 메모리로 사용될 것이다. 예를 들면, 프로세서(120)는 램(130)을 이용하여 펌웨어를 구동할 것이다. 예시적으로, 램(130)은 버퍼 메모리(buffer memory)로 이용될 것이다. 예를 들면, 램(130)은 호스트(Host) 및 불휘발성 메모리 장치(200) 사이의 버퍼 메모리로 동작하도록 구성될 것이다. 예시적으로, 램(130)은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 램, 또는 노어 플래시 메모리(NOR flash memory), PRAM (Phase change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 램을 포함할 것이다.
프로그램 로직(140)은 시스템 버스(110)에 연결된다. 프로그램 로직(140)은 불휘발성 메모리 장치(200)의 프로그램 동작 및 읽기 동작을 제어하도록 구성된다. 예시적으로, 프로그램 로직(140)은 프로세서(120)에 의해 구동되는 소프트웨어일 것이다. 다른 예로서, 프로그램 로직(140)은 아날로그 회로, 디지털 회로, 또는 아날로그 회로 및 디지털 회로가 조합된 하드웨어로 구현될 것이다. 다른 예로서, 프로그램 로직(140)은 소프트웨어 및 하드웨어가 결합된 형태로 구현될 것이다. 프로그램 로직(140)에 의해 수행되는 프로그램 및 읽기 동작들은 도 4 내지 14를 참조하여 더 상세하게 설명된다.
호스트 인터페이스(150)는 시스템 버스(110)에 연결된다. 호스트 인터페이스(150)는 호스트(Host) 및 컨트롤러(100) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 것이다. 예시적으로, 호스트 인터페이스(150)는 USB, MMC, PCI, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(호스트)와 통신하도록 구성될 것이다.
에러 정정 블록(160)은 시스템 버스(160)에 연결된다. 에러 정정 블록(160)은 불휘발성 메모리 장치(200)로부터 읽어진 데이터의 오류를 검출하고, 정정하도록 구성될 것이다. 에러 정정 블록(160)은 에러를 정정하기 위한 에러 정정 코드(ECC, error correcting code)를 포함할 것이다. 예를 들면, 에러 정정 블록(160)은 CRC (Cyclic Redundancy Check) 코드, BCH (Bose, Chaudhuri, and Hocquenghem) 코드, RS (Reed-Solomon) 코드 등을 포함할 것이다.
메모리 인터페이스(170)는 시스템 버스(110)에 연결된다. 메모리 인터페이스(170)는 불휘발성 메모리 장치(200)와 통신하기 위한 프로토콜을 포함한다. 예를 들면, 메모리 인터페이스(170)는 낸드 프로토콜을 포함할 것이다.
도 3은 도 1의 불휘발성 메모리 장치(200)를 보여주는 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(200)는 메모리 셀 어레이(210), 어드레스 디코더(220), 읽기 및 쓰기 회로(230), 그리고 제어 로직(240)을 포함한다.
메모리 셀 어레이(210)는 워드 라인들(WL)을 통해 어드레스 디코더(220)에 연결되고, 비트 라인들(BL)을 통해 읽기 및 쓰기 회로(230)에 연결된다. 메모리 셀 어레이(210)는 복수의 메모리 셀들을 포함한다. 예시적으로, 행 방향으로 배열되는 메모리 셀들은 워드 라인들(WL)에 연결될 것이다. 열 방향으로 배열되는 메모리 셀들은 비트 라인들(BL)에 연결될 것이다. 예시적으로, 메모리 셀 어레이(210)는 셀 당 하나 또는 그 이상의 비트를 저장할 수 있도록 구성될 것이다. 예를 들면, 메모리 셀 어레이(210)는 하나의 메모리 셀에 적어도 세 비트를 저장할 수 있도록 구성될 것이다.
어드레스 디코더(220)는 워드 라인들(WL)을 통해 메모리 셀 어레이(210)에 연결된다. 어드레스 디코더(220)는 제어 로직(240)의 제어에 응답하여 동작한다. 어드레스 디코더(220)는 외부로부터 어드레스(ADDR)를 전달받는다. 예시적으로, 어드레스(ADDR)는 도 1의 컨트롤러(100)로부터 전달될 것이다.
어드레스 디코더(220)는 전달된 어드레스(ADDR) 중 행 어드레스를 디코딩할 것이다. 디코딩된 행 어드레스를 이용하여, 어드레스 디코더(220)는 워드 라인들(WL)을 선택할 것이다. 어드레스 디코더(220)는 전달된 어드레스(ADDR) 중 열 어드레스를 디코딩할 것이다. 디코딩된 열 어드레스는 읽기 및 쓰기 회로(230)에 전달될 것이다. 예시적으로, 어드레스 디코더(220)는 행 디코더, 열 디코더, 어드레 스 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
읽기 및 쓰기 회로(230)는 비트 라인들(BL)을 통해 메모리 셀 어레이(210)에 연결된다. 읽기 및 쓰기 회로(230)는 외부와 데이터(DATA)를 교환하도록 구성된다. 예를 들면, 읽기 및 쓰기 회로(230)는 도 1의 컨트롤러(100)와 데이터를 교환하도록 구성될 것이다. 읽기 및 쓰기 회로(230)는 제어 로직(240)의 제어에 응답하여 동작한다. 읽기 및 쓰기 회로(230)는 어드레스 디코더(220)로부터 디코딩된 열 어드레스를 수신할 것이다. 디코딩된 열 어드레스를 이용하여, 읽기 및 쓰기 회로(230)는 비트 라인들(BL)을 선택할 것이다.
예시적으로, 읽기 및 쓰기 회로(230)는 외부로부터 데이터를 수신하고, 수신된 데이터를 메모리 셀 어레이(210)에 기입할 것이다. 다른 예로서, 읽기 및 쓰기 회로(230)는 메모리 셀 어레이(210)로부터 데이터를 읽고, 읽어진 데이터를 외부로 출력할 것이다. 다른 예로서, 읽기 및 쓰기 회로(230)는 메모리 셀 어레이(210)의 제 1 저장 영역으로부터 데이터를 읽고, 읽어진 데이터를 메모리 셀 어레이(210)의 제 2 저장 영역에 기입할 것이다. 예를 들면, 읽기 및 쓰기 회로(230)는 카피-백(copy-back) 동작을 수행할 것이다.
예시적으로, 읽기 및 쓰기 회로(230)는 페이지 버퍼, 열 선택 회로, 데이터 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다. 다른 예로서, 읽기 및 쓰기 회로(230)는 감지 증폭기, 쓰기 드라이버, 열 선택 회로, 데이터 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
제어 로직(240)은 어드레스 디코더(220)와 읽기 및 쓰기 회로(230)에 연결된 다. 제어 로직(240)은 플래시 메모리 장치(200)의 제반 동작을 제어하도록 구성된다. 제어 로직(240)은 외부로부터 전달되는 제어 신호(CTRL)에 응답하여 동작한다. 예시적으로, 제어 신호(CTRL)는 도 1의 컨트롤러(100)로부터 전달될 것이다.
도 4는 도 3의 불휘발성 메모리 장치(200)의 메모리 셀들에 프로그램되는 논리 상태들의 제 1 실시 예를 보여주는 다이어그램이다. 도 4에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 미리 설정된 논리 값 구간에 대응하는 논리 값들은 대응하는 논리 상태들인 것으로 이해될 것이다. 논리 상태들 사이의 논리값 구간들은 대응하는 논리 상태들의 마진들인 것으로 이해될 것이다.
메모리 셀들은 프로그램되는 논리 상태들에 기반하여 데이터를 저장하도록 구성될 것이다. 예시적으로, 하나의 메모리 셀에 1 비트가 저장되면, 메모리 셀들은 제 1 및 제 2 논리 상태들을 갖도록 구성될 것이다. 다른 예로서, 하나의 메모리 셀에 2 비트가 저장되면, 메모리 셀들은 제 1 내지 제 4 논리 상태들을 갖도록 구성될 것이다. 이하에서, 하나의 메모리 셀이 8 개의 논리 상태들 중 하나를 가질 수 있도록 구성되는 것으로 가정한다. 즉, 하나의 메모리 셀에 3 비트가 저장되는 것으로 가정한다. 그러나, 본 발명의 기술적 사상은 8 개의 논리 상태들을 가질 수 있는 메모리 셀들을 포함하는 불휘발성 메모리 장치에 한정되지 않음이 이해될 것이다.
예시적으로, 논리 상태들은 논리 값에 따라 구별될 것이다. 예시적으로, 불휘발성 메모리 장치(200)가 MRAM, FRAM, PRAM, RRAM 등과 같은 가변 저항 메모리 장치를 포함하면, 논리 값은 메모리 셀들의 저항 값을 나타낼 것이다. 예시적으로, 불휘발성 메모리 장치(200)가 ROM, PROM, EPROM, EEPROM, 플래시 메모리 장치 등과 같은 메모리 장치를 포함하면, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 이하에서, 논리 값은 메모리 셀들의 문턱 전압인 것으로 가정한다. 그러나, 본 발명의 기술적 사상은 메모리 셀들의 문턱 전압에 따라 논리 상태들을 구별하는 불휘발성 메모리 장치에 한정되지 않음이 이해될 것이다.
도 1 내지 4를 참조하면, 메모리 셀 어레이(210)의 메모리 셀들 각각은 8 개의 논리 상태들 중 하나를 갖는다. 즉, 각각의 메모리 셀은 3 비트를 저장할 수 있도록 구성된다. 예시적으로, 8 개의 논리 상태들은 소거 상태(E) 및 제 1 내지 7 프로그램 상태들(P1~P7)을 나타낼 것이다.
프로그램 데이터는 컨트롤러(100)로부터 불휘발성 메모리 장치(200)로 전달된다. 불휘발성 메모리 장치(200)의 프로그램 동작은 프로그램 로직(140)에 의해 제어된다. 제어 로직(240)은 프로그램 로직(140)으로부터 제공되는 제어 신호(예를 들면, CTRL)에 응답하여, 읽기 및 쓰기 회로(230)를 제어하도록 구성된다.
프로그램 동작은 프로그램될 메모리 셀의 문턱 전압을 상승시키는 동작을 포함한다. 예시적으로, 메모리 셀은 전하 저장층(예를 들면, 플로팅 게이트 또는 전하 트랩)을 포함하는 메모리 셀 트랜지스터일 것이다. 메모리 셀의 소스 및 드레인 영역들 사이에 채널이 형성되고, 메모리 셀의 제어 게이트에 채널 전압(예를 들면, 접지 전압)보다 높은 고전압(예를 들면, 프로그램 전압)이 인가되면, 채널로부터 전하 저장층으로 전하가 유입(예를 들면, 축적, 포획, 또는 주입)될 것이다. 전하 저장층의 전하가 증가하면, 해당 메모리 셀의 문턱 전압이 증가한다.
메모리 셀들을 제 1 프로그램 상태(P1)로 프로그램하기 위해, 제 1 검증 전압(Vv1)이 이용된다. 메모리 셀들의 제어 게이트에 제 1 검증 전압(Vv1)이 인가될 때 턴-온 되는 메모리 셀들은 제 1 검증 전압(Vv1)보다 낮은 문턱 전압을 갖는다. 이때, 해당 메모리 셀들은 프로그램 페일인 것으로 판별된다. 메모리 셀들의 제어 게이트에 제 1 검증 전압(Vv1)이 인가될 때 턴-오프 되는 메모리 셀들은 제 1 검증 전압(Vv1)보다 높은 문턱 전압을 갖는다. 이때, 해당 메모리 셀들은 프로그램 패스인 것으로 판별된다.
프로그램되는 메모리 셀들이 모두 프로그램 패스될 때까지, 프로그램이 반복될 것이다. 예를 들면, 프로그램 전압이 단계적으로 상승되면서, 프로그램이 반복될 것이다. 즉, ISPP (Incremental Step Pulse Program)가 수행될 것이다.
마찬가지로, 메모리 셀들을 제 2 내지 제 7 프로그램 상태들(P2~P7)로 프로그램하기 위해, 제 2 내지 제 7 검증 전압들(Vv2~Vv7)이 이용될 것이다.
불휘발성 메모리 장치(200)의 읽기 동작은 프로그램 로직(140)에 의해 제어된다. 제어 로직(240)은 프로그램 로직(140)으로부터 제공되는 제어 신호(예를 들면, CTRL)에 응답하여, 읽기 및 쓰기 회로(230)를 제어하도록 구성된다.
제 1 읽기 전압(Vr1)은 소거 상태(E) 및 제 1 프로그램 상태(P1) 사이의 전압 레벨을 갖는다. 제 1 읽기 전압(Vr1)이 메모리 셀들의 제어 게이트에 인가될 때, 소거 상태(E)의 메모리 셀들은 턴-온 될 것이다. 제 1 읽기 전압(Vr1)이 메모리 셀들의 제어 게이트에 인가될 때, 제 1 내지 제 7 프로그램 상태들(P1~P7)의 메 모리 셀들은 턴-오프 될 것이다. 즉, 제 1 읽기 전압(Vr1)이 제 1 전압 구간(△Vm1) 내의 값을 가질때, 소거 상태(E)와 제 1 내지 제 7 프로그램 상태들(P1~P7)의 메모리 셀들이 판별되는 것이 가능하다.
마찬가지로, 제 2 내지 제 7 읽기 전압들(Vr2~Vr7)은 각각 제 1 내지 제 7 프로그램 상태들(P1~P7) 사이의 전압 레벨을 갖는다. 즉, 제 1 읽기 전압(Vr1)을 인가할 때 턴-오프 되고, 제 2 읽기 전압(Vr2)을 인가할 때 턴-온 되는 메모리 셀들은 제 1 프로그램 상태(P1)인 것으로 판별될 것이다. 즉, 제 1 내지 제 7 읽기 전압들(Vr1~Vr7)을 이용하여, 메모리 셀들의 논리 상태들을 판별하는 것이 가능하다.
간결한 설명을 위하여, "논리 상태의 마진"이라는 개념을 정의하기로 한다. 논리 상태의 마진은 특정 논리 상태, 그리고 특정 논리 상태와 가장 인접하며 특정 논리 상태보다 논리 값이 높은 논리 상태 사이의 마진을 나타내는 것으로 정의한다. 즉, 소거 상태(E)의 마진은 소거 상태(E) 및 제 1 프로그램 상태(P1) 사이의 전압 구간, 즉 제 1 전압 구간(△Vm1)일 것이다. 그리고, 제 1 내지 제 6 프로그램 상태들(P1~P6) 각각의 마진은 제 2 전압 구간(△Vm2)일 것이다.
제 1 검증 전압(Vv1)과 제 7 검증 전압(Vv7) 사이의 전압 구간(△V)에, 제 1 내지 제 6 프로그램 상태들(P1~P6)이 배치된다. 그리고, 제 1 내지 제 6 프로그램 상태들(P1~P6)은 각각 제 2 전압 구간(△Vm2)에 대응하는 마진을 갖는 것으로 도시되어 있다.
이하에서, 도 4를 참조하여 설명된 바와 마찬가지로, 검증 전압들(Vv1~Vv7) 중 하나를 이용하여 프로그램되는 논리 상태는 노멀(normal) 프로그램되는 것으로 정의한다.
도 5는 도 3의 불휘발성 메모리 장치(200)의 메모리 셀들에 프로그램되는 논리 상태들의 제 2 실시 예를 보여주는 다이어그램이다. 도 5에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 불휘발성 메모리 장치(200)의 프로그램 동작은 도 2의 프로그램 로직(140)에 의해 제어될 것이다.
도 1 내지 도 3, 그리고 도 5를 참조하면, 메모리 셀들은 소거 상태(E), 제 1 내지 제 4 프로그램 상태들(P1~P4), 그리고 제 6 및 제 7 프로그램 상태들(P6, P7)로 프로그램된다. 즉, 불휘발성 메모리 장치(200)에 프로그램되는 프로그램 데이터는 제 5 프로그램 상태(P5)를 포함하지 않는다. 즉, 제 5 프로그램 상태(P5)가 미사용된다. 미사용 논리 상태가 존재하면, 논리 상태들(E, P1~P4, P6, P7)의 마진들이 선택적으로 가변된다. 예를 들면, 전압 구간(△V) 내의 프로그램 상태들(P1, P2, P3, P4, P6)의 마진들이 평준화도록(예를 들면, 제 3 전압 구간(△Vm3)으로) 조절될 것이다.
도 4를 참조하여 설명된 바와 마찬가지로, 제 1 프로그램 상태(P1)는 제 1 검증 전압(Vv1)을 이용하여 노멀 프로그램되고, 제 7 프로그램 상태(P7)는 제 7 검증 전압(Vv7)을 이용하여 노멀 프로그램된다. 제 2 내지 제 4 프로그램 상태들(P2~P4), 그리고 제 6 프로그램 상태(P6)는 가변된 검증 전압들(Vv2a, Vv3a, Vv4a, Vv6a)을 이용하여 프로그램된다.
예시적으로, 가변된 검증 전압들(Vv2a, Vv3a, Vv4a, Vv6a)은 전압 구간(△V) 내의 프로그램 상태들(P1, P2, P3, P4, P6)의 마진들이 평준화되도록(예를 들면, 제 3 전압 구간(△Vm3)으로) 설정될 것이다. 즉, 전압 구간(△V) 내의 프로그램 상태들(P1, P2, P3, P4, P6)의 마진들이 평준화되도록, 전압 구간(△V) 내의 논리 상태들(P2~P4, P6)을 프로그램하기 위한 검증 전압들이 가변될 것이다.
메모리 셀들을 읽기 위하여, 제 1 읽기 전압(Vr1), 그리고 가변된 읽기 전압들(Vr2a, Vr3a, Vr4a, Vr6a, Vr7a)이 이용될 것이다. 도 5에 도시된 바와 같이, 전압 범위(△V) 내의 프로그램 상태들(P1, P2, P3, P4, P6)의 마진들은 제 3 전압 구간(△Vm3)으로 평준화된다. 그리고, 제 3 전압 구간(△Vm3)는 제 2 전압 구간(△Vm2) 보다 크다. 즉, 도 4를 참조하여 설명된 프로그램 상태들과 비교하면, 제 5 프로그램 상태(P5)를 미사용하는 프로그램 데이터로 프로그램된 메모리 셀들의 마진이 향상된다. 따라서, 불휘발성 메모리 장치(200)의 신뢰성이 향상된다.
도 4 및 5를 비교하면, 도 4의 제 6 읽기 전압(Vr6)은 도 5의 가변된 제 6 검증 전압(Vv6a)과 동일한 레벨을 가질 수 있다. 이와 같이, 제 2 내지 제 6 검증 전압들(Vv2~Vv6)과 제 2 내지 제 7 읽기 전압들(Vr2~Vr7), 그리고 가변된 제 2 내지 제 6 검증 전압들(Vv2a~Vv6a)과 가변된 제 2 내지 제 7 읽기 전압들(Vr2a~Vr7a) 중 동일한 레벨을 갖는 전압들이 존재하면, 동일한 전압 발생 회로를 이용하여 해당 전압들을 발생하는 것이 가능하다. 따라서, 전압 발생 회로(미도시)의 구성이 단순화될 수 있음이 이해될 것이다.
도 5에서, 프로그램 데이터가 제 5 프로그램 상태(P5)를 미사용하는 경우가 설명되었다. 프로그램 데이터가 제 5 프로그램 상태(P5) 이외의 다른 프로그램 상태를 미사용하는 경우에도, 전압 구간(△V) 내의 논리 상태들의 마진은 평준화(예를 들면, 제 3 전압 구간(△Vm3)으로)될 것이다. 따라서, 가변된 검증 및 읽기 전압들의 레벨은, 도 5에 도시된 바와 같음이 이해될 것이다.
도 6은 도 3의 불휘발성 메모리 장치(200)의 메모리 셀들에 프로그램되는 논리 상태들의 제 3 실시 예를 보여주는 다이어그램이다. 도 6에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 불휘발성 메모리 장치(200)의 프로그램 동작은 도 2의 프로그램 로직(140)에 의해 제어될 것이다.
도 1 내지 3, 그리고 6을 참조하면, 메모리 셀들은 소거 상태(E), 제 1, 2, 4, 6, 7 프로그램 상태들(P1, P2, P4, P6, P7)로 프로그램된다. 즉, 불휘발성 메모리 장치(200)에 프로그램되는 프로그램 데이터는 제 3 및 제 5 프로그램 상태(P3, P5)를 미사용한다. 미사용 논리 상태들(P3, P5)이 존재하면, 논리 상태들(E, P1, P2, P4, P6, P7)의 마진들이 선택적으로 가변된다. 예를 들면, 전압 범위(△V) 내의 프로그램 상태들(P1, P2, P4, P6)의 마진들이 평준화도록(예를 들면, 제 4 전압 구간(△Vm4)으로) 조절될 것이다.
도 4를 참조하여 설명된 바와 마찬가지로, 제 1 프로그램 상태(P1)는 제 1 검증 전압(Vv1)을 이용하여 프로그램되고, 제 7 프로그램 상태(P7)는 제 7 검증 전압(Vv7)을 이용하여 프로그램된다. 제 2, 4, 및 6 프로그램 상태들(P2, P4, P6)은 가변된 검증 전압들(Vv2b, Vv4b, Vv6b)을 이용하여 프로그램된다. 가변된 검증 전 압들(Vv2b, Vv4b, Vv6b)은 전압 범위(△V) 내의 프로그램 상태들(P1, P2, P4, P6)의 마진들이 평준화되도록(예를 들면, 제 4 전압 구간(△Vm4)으로) 설정될 것이다.
예시적으로, 가변된 검증 전압들(Vv2b, Vv4b, Vv6b)은 전압 구간(△V) 내의 프로그램 상태들(P1, P2, P4, P6)의 마진들이 평준화되도록(예를 들면, 제 4 전압 구간(△Vm4)으로) 설정될 것이다. 즉, 전압 구간(△V) 내의 프로그램 상태들(P1, P2, P4, P6)의 마진들이 평준화되도록, 전압 구간(△V) 내의 논리 상태들(P2, P4, P6)을 프로그램하기 위한 검증 전압들이 가변될 것이다.
메모리 셀들을 읽기 위하여, 제 1 읽기 전압(Vr1), 그리고 가변된 읽기 전압들(Vr2b, Vr4b, Vr6b, Vr7b)이 이용될 것이다. 도 6에 도시된 바와 같이, 전압 범위(△V) 내의 프로그램 상태들(P1, P2, P4, P6)의 마진들은 제 4 전압 범위(△Vm4)로 평준화된다. 그리고, 제 4 전압 범위(△Vm4)는 제 2 및 제 3 전압 범위(△Vm2, △Vm3) 보다 크다. 즉, 도 4 및 5를 참조하여 설명된 프로그램 상태들과 비교하면, 제 3 및 제 5 프로그램 상태들(P3, P5)을 미사용하는 프로그램 데이터로 기입된 메모리 셀들의 마진이 향상된다. 따라서, 불휘발성 메모리 장치(200)의 신뢰성이 향상된다.
도 4 및 6을 비교하면, 도 4의 제 4 검증 전압(Vv4)은 도 6의 가변된 제 4 검증 전압(Vv4b)과 동일한 레벨을 가질 수 있다. 도 5 및 6을 비교하면, 도 5의 가변된 제 6 읽기 전압(Vr6a)은 도 6의 가변된 제 6 검증 전압(Vv6b)과 유사한 레벨을 가질 수 있다. 즉, 동일한 전압 발생 회로를 이용하여 해당 전압들을 발생하는 것이 가능하다. 따라서, 전압 발생 회로(미도시)의 구성이 단순화될 수 있음이 이 해될 것이다.
도 6에서, 프로그램 데이터가 제 3 및 제 5 프로그램 상태들(P3, P5)을 미사용하는 경우가 설명되었다. 프로그램 데이터가 제 3 및 5 프로그램 상태들(P3, P5) 이외의 다른 프로그램 상태들을 미사용하는 경우에도, 논리 상태들의 마진은 평준화될(예를 들면, 제 4 전압 구간(△Vm4)으로) 것이다. 따라서, 가변된 검증 및 읽기 전압들의 레벨은, 도 6에 도시된 바와 같음이 이해될 것이다.
도 7은 도 2의 프로그램 로직(140)이 도 4 내지 6을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다. 도 2 및 7을 참조하면, S110 단계에서, 프로그램 데이터가 수신된다. 예를 들면, 프로그램 데이터는 호스트(Host)로부터 수신될 것이다.
S120 단계에서, 미사용 상태가 존재하는지 판별된다. 프로그램 로직(140)은 수신된 프로그램 데이터를 분석할 것이다. 불휘발성 메모리 장치(200)의 메모리 셀들이 3 비트를 저장하도록 구성될 때, 각 메모리 셀은 8 개의 논리 상태들 중 하나를 갖도록 구성될 것이다. 프로그램 로직(140)은 메모리 셀들이 가질 수 있는 논리 상태들의 수와, 프로그램 데이터에 대응하는 논리 상태들의 수를 비교할 것이다. 메모리 셀들이 갖도록 구성되는 논리 상태들의 수보다 프로그램 데이터에 대응하는 논리 상태들의 수가 작으면, 미사용 논리 상태가 존재하는 것으로 판별될 것이다. 미사용 논리 상태가 존재하지 않으면, S140 단계에서 노멀 프로그램이 수행된다. 미사용 논리 상태가 존재하면, S130 단계가 수행된다.
S130 단계에서, 논리 상태들의 마진들이 선택적으로 가변된다. 예시적으로, 프로그램 로직(140)은 논리 상태들의 마진들이 평준화되도록 조절할 것이다. 예를 들면, 프로그램 데이터에 대응하는 논리 상태들이 7개이면, 도 5를 참조하여 설명된 바와 같이 논리 상태들의 마진들이 가변될 것이다. 예를 들면, 프로그램 데이터에 대응하는 논리 상태들이 6개이면, 도 6을 참조하여 설명된 바와 같이 논리 상태들의 마진들이 가변될 것이다.
예시적으로, 도 5 및 6을 참조하여 설명된 바와 마찬가지로, 논리 상태들의 마진들의 가변은, 메모리 셀들을 프로그램하기 위한 검증 전압들을 조절함으로써 수행될 것이다. 예를 들면, 논리 상태들의 마진들의 가변은 검증 전압들 및 프로그램 전압들을 조절함으로써 수행될 것이다.
예를 들면, 프로그램 로직(140)은 미리 설정된 검증 전압들의 세트들 중 하나를 선택하도록 구성될 것이다. 미리 설정된 검증 전압들의 세트들은, 하나의 논리 상태가 미사용된 때의 검증 전압들의 세트, 두 개의 논리 상태들이 미사용된 때의 검증 전압들의 세트, 세 개의 논리 상태들이 미사용된 때의 검증 전압들의 세트 등을 포함할 것이다.
예를 들면, 프로그램 로직(140)은 미리 설정된 검증 전압들 및 프로그램 전압들의 세트들 중 하나를 선택하도록 구성될 것이다. 미리 설정된 검증 전압들 및 프로그램 전압들의 세트들은 하나의 논리 상태가 미사용된 때의 검증 전압들 및 프로그램 전압들의 세트, 두 개의 논리 상태가 미사용된 때의 검증 전압들 및 프로그램 전압들의 세트 등을 포함할 것이다.
S140 단계에서, 프로그램이 수행된다. 예시적으로, 프로그램 데이터는 불휘 발성 메모리 장치(200)로 제공될 것이다. 그리고, 프로그램 로직(140)은 가변된 마진에 기반하여 프로그램이 수행되도록 불휘발성 메모리 장치(200)를 제어할 것이다. 예를 들면, 프로그램 로직(140)은 마진 가변 프로그램 커맨드를 불휘발성 메모리 장치(200)에 제공하도록 구성될 것이다. 예를 들면, 프로그램 로직(140)은 검증 전압 세트 선택 신호, 또는 검증 전압 및 프로그램 전압 세트 선택 신호를 불휘발성 메모리 장치(200)에 제공하도록 구성될 것이다.
불휘발성 메모리 장치(200)는 프로그램 로직(140)의 제어에 응답하여, 선택된 검증 전압들의 세트, 또는 선택된 검증 전압들 및 프로그램 전압들의 세트에 대응하는 전압들을 발생할 것이다. 발생된 전압들을 이용하여, 프로그램이 수행될 것이다.
프로그램 동작 시에, 프로그램 데이터와 함께 스페어 데이터가 기입될 것이다. 스페어 데이터는 프로그램 데이터의 논리 상태들의 마진들의 가변에 대한 정보를 포함할 것이다. 예를 들면, 스페어 데이터는 논리 상태들 중 미사용된 논리 상태의 수 및 종류에 대한 정보를 포함할 것이다. 예시적으로, 스페어 데이터는 프로그램 로직(140)에 의해 생성될 것이다. 읽기 동작 시에, 스페어 데이터를 참조하여, 읽기 전압들이 선택될 것이다.
예를 들면, 스페어 데이터를 참조하여, 읽기 전압들의 세트들 중 하나가 선택될 것이다. 읽기 전압들의 세트들은 하나의 논리 상태가 미사용된 때의 읽기 전압들의 세트, 두 개의 논리 상태가 미사용된 때의 읽기 전압들의 세트, 세 개의 논리 상태가 미사용된 때의 읽기 전압들의 세트 등을 포함할 것이다.
읽어진 스페어 데이터에 응답하여, 프로그램 로직(140)은 읽어진 데이터를 판별할 것이다. 예를 들면, 미사용된 논리 상태에 대한 정보에 기반하여, 프로그램 로직(140)은 읽어진 데이터를 판별할 것이다.
상술한 바와 같이, 메모리 셀들이 프로그램될 수 있는 논리 상태들 중 적어도 하나의 논리 상태가 미사용되면, 논리 상태들의 마진들이 선택적으로 가변된다. 예를 들면, 전압 구간(△V) 내의 논리 상태들의 마진들이 평준화된다. 따라서, 논리 상태들의 마진들이 향상되고, 불휘발성 메모리 장치(200)의 신뢰성이 향상된다.
상술한 실시 예에서, 하나의 메모리 셀에 3 비트가 저장되는 것으로 설명되었다. 그러나, 하나의 메모리 셀에 3 비트가 저장되는 것으로 한정되지 않음이 이해될 것이다. 본 발명의 기술적 사상은 셀 당 적어도 2 비트를 저장하는 불휘발성 메모리 장치에 적용 및 응용될 수 있음이 이해될 것이다.
상술한 실시 예에서, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 설명되었다. 그러나, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 한정되지 않음이 이해될 것이다. 예를 들면, 본 발명의 기술적 사상은 메모리 셀들의 저항값을 이용하여 메모리 셀들의 논리 상태들을 구별하는 것으로 적용 및 응용될 수 있음이 이해될 것이다.
도 8은 도 3의 불휘발성 메모리 장치(200)의 메모리 셀들에 프로그램되는 논리 상태들의 제 4 실시 예를 보여주는 다이어그램이다. 도 8에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으 로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 불휘발성 메모리 장치(200)의 프로그램 동작은 도 2의 프로그램 로직(140)에 의해 제어될 것이다. 예시적으로, 프로그램 데이터는 제 5 프로그램 상태(P5)를 미사용하는 것으로 가정한다.
메모리 셀들의 문턱 전압이 높을수록, 메모리 셀들의 전하 손실(charge loss)은 증가한다. 즉, 메모리 셀들의 문턱 전압이 높을수록, 메모리 셀들에서 읽기 오류가 발생될 확률이 증가한다. 전하 손실에 의한 읽기 오류를 방지하기 위하여, 프로그램 로직(140)은 문턱 전압이 높은 논리 상태들의 마진들을 선택적으로 가변하는 것이 가능하다.
도 1 내지 3, 그리고 8을 참조하면, 제 1 내지 제 4 프로그램 상태들(P1~P4)은 제 1 내지 제 4 검증 전압들(Vv1~Vv4)을 이용하여 노멀 프로그램된다. 제 7 프로그램 상태(P7)는 제 7 검증 전압(Vv7)을 이용하여 노멀 프로그램된다. 그리고, 제 6 프로그램 상태(P6)는 가변된 제 6 검증 전압(Vv6c)을 이용하여 프로그램된다. 메모리 셀들을 읽기 위하여, 제 1 내지 제 4 읽기 전압들(Vr1~Vr4), 그리고 가변된 제 6 및 7 읽기 전압들(Vr6c, Vr7c)이 이용된다.
소거 상태(E)의 마진은 제 1 전압 구간(△Vm1)에 대응한다. 제 1 내지 제 3 프로그램 상태들(P1~P3)의 마진들은 각각 제 2 전압 구간(△Vm2)에 대응한다. 제 4 및 제 6 프로그램 상태들(P4, P6)의 마진들은 각각 제 5 전압 구간(△Vm5)에 대응한다. 제 5 전압 구간(△Vm5)는 제 2 전압 구간(△Vm2)보다 크다.
즉, 미사용 논리 상태가 존재하면, 문턱 전압이 낮은 논리 상태들(예를 들 면, P1~P3)의 마진들은 유지하고, 문턱 전압이 높은 논리 상태들(예를 들면, P4, P6)의 마진들을 가변하는 것이 가능하다. 예를 들면, 전압 구간(△V2) 내의 논리 상태들 중 하나가 미사용되면, 논리 상태들의 마진들이 선택적으로 가변될 것이다. 예를 들면, 전압 구간(△V2) 내의 논리 상태들(예를 들면, P4, P6)의 마진들은 평준화될 것이다.
도 9는 도 2의 프로그램 로직(150)이 도 8을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다. 도 2 및 9를 참조하면, S210 단계에서, 프로그램 데이터가 수신된다. 예를 들면, 프로그램 데이터는 호스트(Host)로부터 수신될 것이다.
S220 단계에서, 미사용 논리 상태가 존재하는지 판별된다. 프로그램 로직(140)은 수신된 프로그램 데이터를 분석할 것이다. 불휘발성 메모리 장치(200)의 메모리 셀들이 3 비트를 저장하도록 구성될 때, 각 메모리 셀은 8 개의 논리 상태들 중 하나를 갖도록 구성될 것이다. 프로그램 로직(140)은 메모리 셀들이 갖도록 구성되는 논리 상태들의 수와, 프로그램 데이터에 대응하는 논리 상태들의 수를 비교할 것이다. 메모리 셀들이 갖도록 구성되는 논리 상태들의 수보다 프로그램 데이터에 대응하는 논리 상태들의 수가 작으면, 미사용 상태가 존재하는 것으로 판별될 것이다. 미사용 논리 상태가 존재하지 않으면, S250 단계에서 노멀 프로그램이 수행된다. 미사용 논리 상태가 존재하면, S230 단계가 수행된다.
S230 단계에서, 미사용 논리 상태가 미리 설정된 논리 상태들과 연관되어 있는지 판별된다. 예를 들면, 미사용 논리 상태의 논리 값(예를 들면, 문턱 전압)이 미리 설정된 값보다 높은지 판별될 것이다. 예를 들면, 미사용 논리 상태가 전압 구간(△V2) 내에 존재하는지 판별될 것이다. 예를 들면, 미사용 논리 상태가 미리 설정된 논리 상태들(예를 들면, 제 4 내지 제 6 프로그램 상태들(P4~P6)) 중 하나인지 판별될 것이다. 미사용 논리 상태가 미리 설정된 논리 상태들(예를 들면, P4~P6)과 무관하면, S250 단계에서 노멀 프로그램이 수행된다. 미사용 논리 상태가 미리 설정된 논리 상태들(P4~P6)과 연관되어 있으면, S240 단계가 수행된다.
S240 단계에서, 논리 상태들의 마진들이 선택적으로 가변된다. 예시적으로, 프로그램 로직(140)은 전압 범위(△V2) 내의 논리 상태들의 마진들이 평준화되도록(예를 들면, 제 5 전압 구간(△Vm5)으로) 조절할 것이다. 예를 들면, 제 5 프로그램 상태(P5)가 미사용되는 경우, 도 8을 참조하여 설명된 바와 같이 논리 상태들의 마진들이 가변될 것이다.
예시적으로, 도 8을 참조하여 설명된 바와 마찬가지로, 논리 상태들의 마진들의 가변은, 메모리 셀들을 프로그램하기 위한 검증 전압들을 조절함으로써 수행될 것이다. 예를 들면, 논리 상태들의 마진들의 가변은 검증 전압들 및 프로그램 전압들을 조절함으로써 수행될 것이다. 예를 들면, 프로그램 로직(140)은 미리 설정된 검증 전압들의 세트들 중 하나를 선택하도록 구성될 것이다. 예를 들면, 프로그램 로직(140)은 미리 설정된 검증 전압들 및 프로그램 전압들의 세트들 중 하나를 선택하도록 구성될 것이다.
S250 단계에서, 프로그램이 수행된다. 예시적으로, 프로그램 데이터는 불휘발성 메모리 장치(200)로 제공될 것이다. 그리고, 프로그램 로직(140)은 가변된 마 진들에 기반하여 프로그램이 수행되도록 불휘발성 메모리 장치(200)를 제어할 것이다. 예를 들면, 프로그램 로직(140)은 마진 가변 프로그램 커맨드를 불휘발성 메모리 장치에 제공하도록 구성될 것이다. 예를 들면, 프로그램 로직(140)은 검증 전압 세트 선택 신호, 또는 검증 전압 및 프로그램 전압 세트 선택 신호를 불휘발성 메모리 장치(200)에 제공할 것이다.
불휘발성 메모리 장치(200)는 프로그램 로직(140)의 제어에 응답하여, 선택된 검증 전압들의 세트, 또는 선택된 검증 전압들 및 프로그램 전압들의 세트에 대응하는 전압들을 발생할 것이다. 발생된 전압들을 이용하여, 프로그램이 수행될 것이다.
프로그램 동작 시에, 프로그램 데이터와 함께 스페어 데이터가 기입될 것이다. 스페어 데이터는 프로그램 데이터의 논리 상태들의 마진들의 가변에 대한 정보를 포함할 것이다. 예를 들면, 스페어 데이터는 논리 상태들 중 미사용된 논리 상태의 수 및 종류에 대한 정보를 포함할 것이다. 예시적으로, 스페어 데이터는 프로그램 로직(140)에 의해 생성될 것이다. 읽기 동작 시에, 스페어 데이터를 참조하여, 읽기 전압들이 선택될 것이다.
예를 들면, 스페어 데이터를 참조하여, 읽기 전압들의 세트들 중 하나가 선택될 것이다. 읽기 전압들의 세트들은 하나의 논리 상태가 미사용된 때의 읽기 전압들의 세트, 두 개의 논리 상태가 미사용된 때의 읽기 전압들의 세트, 세 개의 논리 상태가 미사용된 때의 읽기 전압들의 세트 등을 포함할 것이다.
읽어진 스페어 데이터에 응답하여, 프로그램 로직(140)은 읽어진 데이터를 판별할 것이다. 예를 들면, 미사용된 논리 상태에 대한 정보에 기반하여, 프로그램 로직(140)은 읽어진 데이터를 판별할 것이다.
상술한 바와 같이, 메모리 셀들이 프로그램될 수 있는 논리 상태들 중 적어도 하나가 미사용되면, 그리고 미사용 논리 상태가 미리 설정된 논리 상태와 연관되어 있으면, 논리 상태들의 마진들이 선택적으로 가변된다. 예를 들면, 전압 구간(△V2) 내의 논리 상태들의 마진들이 평준화된다. 즉, 전하 손실이 상대적으로 큰 논리 상태들(예를 들면, P4~P6)의 마진들이 향상된다.
전하 손실이 상대적으로 작은 논리 상태들(예를 들면, E, P1~P3)은 노멀 프로그램된다. 즉, 프로그램 로직(140)이 단순화될 수 있으며, 검증 전압들 및 읽기 전압들을 발생하기 위한 전압 발생 회로(미도시)가 단순화될 수 있으며, 그리고 스페어 데이터가 단순화될 수 있다.
따라서, 불휘발성 메모리 장치(200)의 신뢰성을 향상시키며, 메모리 시스템(10)의 복잡성을 감소시키는 것이 가능함이 이해될 것이다.
상술한 실시 예에서, 제 5 프로그램 상태(P5)가 미사용된 경우를 참조하여, 본 발명의 실시 예가 설명되었다. 그러나, 도 4 내지 6을 참조하여 설명된 바와 마찬가지로, 적어도 하나의 논리 상태가 미사용될 수 있음이 이해될 것이다.
상술한 실시 예에서, 미사용 논리 상태가 미리 설정된 논리 상태(예를 들면, P4~P6)와 무관하면, 노멀 프로그램이 수행되는 것으로 설명되었다. 그러나, 미사용 논리 상태가 미리 설정된 논리 상태와 무관하여도, 논리 상태들의 마진들을 선택적으로 가변하는 것이 가능하다.
예시적으로, 제 2 프로그램 상태(P2)가 미사용되는 것으로 가정하자. 이때, 제 2 프로그램 상태(P2) 및 제 5 프로그램 상태(P5)는 교환될 것이다. 즉, 프로그램 데이터는 제 2 프로그램 상태(P2)를 사용하고, 제 5 프로그램 상태(P5)를 미사용하는 것으로 조절될 것이다. 이후에, 도 8을 참조하여 설명된 바와 같이, 논리 상태들의 마진들이 선택적으로 가변될 것이다. 그리고, 제 2 프로그램 상태(P2) 및 제 5 프로그램 상태(P5)가 교환되었음을 나타내는 정보가 스페어 데이터에 포함될 것이다.
즉, 미사용 논리 상태가 미리 설정된 논리 상태와 무관하면, 미사용 논리 상태를 미리 설정된 논리 상태와 교환하고, 그리고 미리 설정된 논리 상태들의 마진들을 가변하는 것이 가능함이 이해될 것이다.
상술한 실시 예에서, 하나의 메모리 셀에 3 비트가 저장되는 것으로 설명되었다. 그러나, 하나의 메모리 셀에 3 비트가 저장되는 것으로 한정되지 않음이 이해될 것이다. 본 발명의 기술적 사상은 셀 당 적어도 2 비트를 저장하는 불휘발성 메모리 장치에 적용 및 응용될 수 있음이 이해될 것이다.
상술한 실시 예에서, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 설명되었다. 그러나, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 한정되지 않음이 이해될 것이다. 예를 들면, 본 발명의 기술적 사상은 메모리 셀들의 저항값을 이용하여 메모리 셀들의 논리 상태들을 구별하는 것으로 적용 및 응용될 수 있음이 이해될 것이다.
도 10은 도 3의 불휘발성 메모리 장치(200)의 메모리 셀들에 프로그램되는 논리 상태들의 제 5 실시 예를 보여주는 다이어그램이다. 도 10에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 불휘발성 메모리 장치(200)의 프로그램 동작은 도 2의 프로그램 로직(140)에 의해 제어될 것이다. 예시적으로, 프로그램 데이터는 제 3 프로그램 상태(P3)를 미사용하는 것으로 가정한다.
도 1 내지 3, 그리고 10을 참조하면, 프로그램 데이터는 소거 상태(E), 제 1 및 제 2 프로그램 상태들(P1, P2), 그리고 제 4 내지 제 7 프로그램 상태들(P4~P7)에 대응한다. 그리고, 전압 범위(△V) 내의 논리 상태들(P1, P2, P4~P6) 중 제 4 프로그램 상태(P4)의 수가 가장 많은 것으로 도시되어 있다.
제 6 프로그램 상태(P6)는 가변된 제 4 검증 전압(Vv6c)을 이용하여 프로그램된다. 그리고 읽기 동작 시에, 가변된 제 6 및 제 7 읽기 전압들(Vr6c, Vr7c)이 이용된다. 이때, 논리 상태들(P1, P5, P6)의 마진은 제 2 전압 범위(△Vm2)로 유지되며, 제 2 및 제 4 프로그램 상태(P4)의 마진들은 제 6 전압 범위(△Vm6)로 가변된다. 제 6 전압 범위(△Vm6)는 제 2 전압 범위(△Vm2)보다 크다. 즉, 가장 수가 많은 논리 상태의 마진이 확장되므로, 읽기 오류가 감소될 수 있음이 이해될 것이다.
도 11은 도 2의 프로그램 로직(140)이 도 10을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다. 도 2 및 11을 참조하면, S310 단계에 서, 프로그램 데이터가 수신된다. 예를 들면, 프로그램 데이터는 호스트(Host)로부터 수신될 것이다.
S320 단계에서, 수신된 프로그램 데이터에 대응하는 논리 상태들이 카운트된다. 예를 들면, 소거 상태(E)의 수, 그리고 제 1 내지 제 7 프로그램 상태들(P1~P7)의 수들이 각각 카운트될 것이다. 예를 들면, 프로그램 로직(140)은 논리 상태들의 수들을 카운트할 것이다.
S330 단계에서, 미사용 논리 상태가 존재하는지 판별된다. 프로그램 로직(140)은 카운트 결과에 기반하여, 미사용 논리 상태가 존재하는지 판별할 것이다. 예를 들면, 카운트 값이 0인 논리 상태가 존재하면, 해당 논리 상태는 미사용 논리 상태인 것으로 판별될 것이다. 미사용 논리 상태가 존재하지 않으면, S350 단계에서 노멀 프로그램이 수행된다. 미사용 논리 상태가 존재하면, S340 단계가 수행된다.
S340 단계에서, 논리 상태들의 마진들이 선택적으로 가변된다. 예시적으로, 프로그램 로직(140)은 전압 범위(△V) 내의 논리 상태들 중 가장 수가 많은 논리 상태(예를 들면, P4)의 마진을 증가시킬 것이다. 예를 들면, 프로그램 로직(140)은 가장 수가 많은 논리 상태(예를 들면, P4)와, 가장 수가 많은 논리 상태(예를 들면, P4)에 인접한 논리 상태들(예를 들면, P2, P5) 사이의 마진을 평준화할(예를 들면, 제 6 전압 구간(△Vm6)으로) 것이다.
예시적으로, 도 10을 참조하여 설명된 바와 마찬가지로, 논리 상태들의 마진들의 가변은, 메모리 셀들을 프로그램하기 위한 검증 전압들을 조절함으로써 수행 될 것이다. 예를 들면, 논리 상태들의 마진들의 가변은 검증 전압들 및 프로그램 전압들을 조절함으로써 수행될 것이다. 예를 들면, 프로그램 로직(140)은 미리 설정된 검증 전압들의 세트들 중 하나를 선택하도록 구성될 것이다. 예를 들면, 프로그램 로직(140)은 미리 설정된 검증 전압들 및 프로그램 전압들의 세트들 중 하나를 선택하도록 구성될 것이다.
S350 단계에서, 프로그램이 수행된다. 예시적으로, 프로그램 데이터는 불휘발성 메모리 장치(200)로 제공될 것이다. 그리고, 프로그램 로직(140)은 가변된 마진들에 기반하여 프로그램이 수행되도록 불휘발성 메모리 장치(200)를 제어할 것이다. 예를 들면, 프로그램 로직(140)은 마진 가변 프로그램 커맨드를 불휘발성 메모리 장치에 제공하도록 구성될 것이다. 예를 들면, 프로그램 로직(140)은 검증 전압 세트 선택 신호, 또는 검증 전압 및 프로그램 전압 세트 선택 신호를 불휘발성 메모리 장치(200)에 제공할 것이다.
불휘발성 메모리 장치(200)는 프로그램 로직(140)의 제어에 응답하여, 선택된 검증 전압들의 세트, 또는 선택된 검증 전압들 및 프로그램 전압들의 세트에 대응하는 전압들을 발생할 것이다. 발생된 전압들을 이용하여, 프로그램이 수행될 것이다.
프로그램 동작 시에, 프로그램 데이터와 함께 스페어 데이터가 기입될 것이다. 스페어 데이터는 프로그램 데이터의 논리 상태들의 마진들의 가변에 대한 정보를 포함할 것이다. 예를 들면, 스페어 데이터는 논리 상태들 중 미사용된 논리 상태의 수 및 종류에 대한 정보를 포함할 것이다. 예시적으로, 스페어 데이터는 프로 그램 로직(140)에 의해 생성될 것이다. 읽기 동작 시에, 스페어 데이터를 참조하여, 읽기 전압들이 선택될 것이다.
예를 들면, 스페어 데이터를 참조하여, 읽기 전압들의 세트들 중 하나가 선택될 것이다. 읽기 전압들의 세트들은 하나의 논리 상태가 미사용된 때의 읽기 전압들의 세트, 두 개의 논리 상태가 미사용된 때의 읽기 전압들의 세트, 세 개의 논리 상태가 미사용된 때의 읽기 전압들의 세트 등을 포함할 것이다.
읽어진 스페어 데이터에 응답하여, 프로그램 로직(140)은 읽어진 데이터를 판별할 것이다. 예를 들면, 미사용된 논리 상태에 대한 정보에 기반하여, 프로그램 로직(140)은 읽어진 데이터를 판별할 것이다.
상술한 바와 같이, 메모리 셀들이 프로그램될 수 있는 논리 상태들 중 적어도 하나가 미사용되면, 논리 상태들의 마진들이 선택적으로 가변된다. 예를 들면, 전압 범위(△V) 내의 논리 상태들 중 가장 수가 많은 논리 상태(예를 들면, P4)의 마진이 증가된다. 즉, 수가 가장 많은 논리 상태(P4)의 읽기 오류가 감소된다.
수가 상대적으로 적은 논리 상태들(예를 들면, E, P1, P2, P5, P6, P7)은 노멀 프로그램된다. 즉, 프로그램 로직(140)이 단순화될 수 있으며, 검증 전압들 및 읽기 전압들을 발생하기 위한 전압 발생 회로가 단순화될 수 있으며, 그리고 스페어 데이터가 단순화될 수 있다.
따라서, 불휘발성 메모리 장치(200)의 신뢰성을 향상시키며, 메모리 시스템(10)의 복잡성을 검소시키는 것이 가능함이 이해될 것이다.
상술한 실시 예에서, 제 3 프로그램 상태(P3)가 미사용된 경우를 참조하여, 본 발명의 실시 예가 설명되었다. 그러나, 도 4 내지 6을 참조하여 설명된 바와 마찬가지로, 하나의 논리 상태가 미사용될 수 있음이 이해될 것이다.
상술한 실시 예에서, 가장 수가 많은 논리 상태(예를 들면, P4)의 마진이 증가되는 것으로 설명되었다. 그러나, 미사용 논리 상태들의 수에 따라, 마진이 가변되는 논리 상태들의 수가 가변될 수 있다. 예시적으로, 하나의 논리 상태가 미사용되면, 전압 범위(△V) 내의 논리 상태들 중 가장 수가 많은 논리 상태의 마진이 증가될 것이다. 두 개의 논리 상태가 미사용되면, 전압 범위(△V) 내의 논리 상태들 중 첫번째 및 두 번째로 수가 많은 논리 상태들의 마진들이 증가될 것이다. 예시적으로, 첫번째 및 두 번째로 수가 많은 논리 상태들의 가변된 마진들은 평준화될 것이다.
상술한 실시 예에서, 하나의 메모리 셀에 3 비트가 저장되는 것으로 설명되었다. 그러나, 하나의 메모리 셀에 3 비트가 저장되는 것으로 한정되지 않음이 이해될 것이다. 본 발명의 기술적 사상은 셀 당 적어도 2 비트를 저장하는 불휘발성 메모리 장치에 적용 및 응용될 수 있음이 이해될 것이다.
상술한 실시 예에서, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 설명되었다. 그러나, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 한정되지 않음이 이해될 것이다. 예를 들면, 본 발명의 기술적 사상은 메모리 셀들의 저항값을 이용하여 메모리 셀들의 논리 상태들을 구별하는 것으로 적용 및 응용될 수 있음이 이해될 것이다.
도 12는 도 3의 불휘발성 메모리 장치(200)의 메모리 셀들에 프로그램되는 논리 상태들의 제 6 실시 예를 보여주는 다이어그램이다. 도 12에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다.
도 12를 참조하면, 도 4를 참조하여 설명된 바와 마찬가지로, 소거 상태(E) 및 제 1 내지 제 7 프로그램 상태들(P1~P7)은 노멀 프로그램된다. 단, 논리 상태들 중 수가 가장 많은 논리 상태는 소거 상태(E)로, 두 번째로 수가 많은 논리 상태는 제 1 프로그램 상태(P1)로, 그리고 세 번째로 수가 많은 논리 상태는 제 2 프로그램 상태(P2)로 매핑된다.
메모리 셀들의 문턱 전압이 낮을수록, 전하 손실(charge loss)에 의한 읽기 오류는 적게 발생한다. 즉, 수가 많은 논리 상태를 문턱 전압이 낮은 논리 상태에 매핑함으로써, 읽기 오류가 감소될 수 있음이 이해될 것이다. 논리 상태들의 매핑 정보는 스페어 데이터에 포함될 것이다. 즉, 읽기 동작 시에, 스페어 데이터를 참조하여 읽기 동작이 수행될 것이다.
도 13은 도 2의 프로그램 로직(140)이 도 12를 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다. 도 2 및 13을 참조하면, S410 단계에서, 프로그램 데이터가 수신된다. 예시적으로, 프로그램 데이터는 호스트(Host)로부터 수신될 것이다.
S420 단계에서, 프로그램 데이터에 대응하는 논리 상태들이 카운트된다. 예를 들면, 프로그램 로직(140)은 소거 상태(E)의 수, 그리고 제 1 내지 제 7 프로그 램 상태들(P1~P7) 각각의 수를 카운트할 것이다.
S430 단계에서, 논리 상태들이 변환된다. 카운트 값에 기반하여, 프로그램 로직(140)은 논리 상태들을 변환할 것이다. 예를 들면, 프로그램 로직(140)은 논리 상태들 중 가장 수가 많은 논리 상태를 소거 상태(E)로 매핑할 것이다. 프로그램 로직(140)은 논리 상태들 중 두 번째로 수가 많은 논리 상태를 제 1 프로그램 상태(P1)로 매핑할 것이다. 그리고, 프로그램 로직(140)은 논리 상태들 중 세 번째로 수가 많은 논리 상태를 제 2 프로그램 상태(P2)로 매핑할 것이다. 마찬가지로, 제 3 내지 제 7 프로그램 상태들(P3~P7) 또한 각 논리 상태의 수에 따라 매핑될 것이다. 논리 상태들의 매핑 정보는 스페어 데이터에 포함될 것이다. 예를 들면, 읽기 동작 시에, 스페어 데이터가 참조될 것이다.
S440 단계에서, 프로그램이 수행된다. 프로그램 데이터 및 스페어 데이터가 불휘발성 메모리 장치(200)에 프로그램될 것이다.
상술한 바와 같이, 논리 상태들의 수에 따라 논리 상태들이 배치되면, 읽기 오류가 감소될 수 있음이 이해될 것이다.
이와 같이, 수가 많은 논리 상태들을 문턱 전압이 낮은 논리 상태에 매핑하는 것은, 도 4 내지 11을 참조하여 설명된 프로그램 방법들에 적용 및 응용될 수 있음이 이해될 것이다.
예를 들면, 도 4 내지 7을 참조하여 설명된 프로그램 방법에서, 가장 수가 많은 논리 상태가 소거 상태(E)로 매핑되고, 이후에 논리 상태들의 수에 따라 제 1 내지 제 7 프로그램 상태들(P1~P7)에 매핑될 수 있음이 이해될 것이다. 미사용 논 리 상태들이 존재하면, 전압 구간(△V) 내의 논리 상태들의 마진들이 선택적으로 가변될 것이다.
예를 들면, 도 8 및 9을 참조하여 설명된 프로그램 방법에서, 가장 수가 많은 논리 상태가 소거 상태(E)로 매핑되고, 이후에 논리 상태들의 수에 따라 제 1 내지 제 7 프로그램 상태들(P1~P7)에 매핑될 수 있음이 이해될 것이다. 이때, 미사용 논리 상태는 항상 전압 구간(△V2) 내의 논리 상태들에 매핑될 것이다. 미사용 논리 상태들이 존재하면, 전압 구간(△V2) 내의 논리 상태들의 마진들이 선택적으로 가변될 것이다.
예를 들면, 도 10 및 11을 참조하여 설명된 프로그램 방법에서, 가장 수가 많은 논리 상태가 소거 상태(E)로 매핑되고, 이후에 논리 상태들의 수에 따라 제 1 내지 제 7 프로그램 상태들(P1~P7)에 매핑될 수 있음이 이해될 것이다. 미사용 논리 상태가 존재하면, 전압 구간(△V) 내의 논리 상태들 중 가장 수가 많은 논리 상태의 마진이 증가될 것이다.
상술한 실시 예에서, 하나의 메모리 셀에 3 비트가 저장되는 것으로 설명되었다. 그러나, 하나의 메모리 셀에 3 비트가 저장되는 것으로 한정되지 않음이 이해될 것이다. 본 발명의 기술적 사상은 셀 당 적어도 2 비트를 저장하는 불휘발성 메모리 장치에 적용 및 응용될 수 있음이 이해될 것이다.
상술한 실시 예에서, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 설명되었다. 그러나, 메모리 셀들의 논리 상태들은 메모리 셀들의 문턱 전압들을 이용하여 구별되는 것으로 한정되지 않음이 이해될 것이다. 예를 들면, 본 발명의 기술적 사상은 메모리 셀들의 저항값을 이용하여 메모리 셀들의 논리 상태들을 구별하는 것으로 적용 및 응용될 수 있음이 이해될 것이다.
예시적으로, 메모리 셀들이 n 비트를 저장할 수 있으면, 프로그램될 메모리 셀들의 수와 n 의 곱에 대응하는 프로그램 데이터가 수신된 후에, 도 4 내지 13을 참조하여 설명된 프로그램 방법이 수행될 수 있음이 이해될 것이다.
도 14는 본 발명의 제 2 실시 예에 따른 메모리 시스템(20)을 보여주는 블록도이다. 도 14를 참조하면, 메모리 시스템(20)은 컨트롤러(300) 및 불휘발성 메모리 장치(400)를 포함한다.
컨트롤러(300)는 프로그램 로직(140)이 제공되지 않는 것을 제외하면, 도 2를 참조하여 설명된 컨트롤러(100)와 동일하게 구성된다. 따라서, 상세한 설명은 생략된다. 불휘발성 메모리 장치(400)는 프로그램 로직(450)을 더 포함하는 것을 제외하면, 도 3을 참조하여 설명된 불휘발성 메모리 장치(200)와 동일하게 구성된다. 불휘발성 메모리 장치(400)는 도 15를 참조하여 더 상세하게 설명된다.
도 1을 참조하여 설명된 바와 마찬가지로, 컨트롤러(300) 및 불휘발성 메모리 장치(400)는 메모리 카드 또는 반도체 드라이브로 집적될 수 있음이 이해될 것이다. 도 1을 참조하여 설명된 바와 마찬가지로, 컨트롤러(300) 및 불휘발성 메모리 장치(400)는 다양한 전자 장치 또는 전자 시스템들의 구성 요소들 중 하나일 수 있음이 이해될 것이다. 도 1을 참조하여 설명된 바와 마찬가지로, 컨트롤러(300) 및 불휘발성 메모리 장치(400)는 다양한 형태의 패키지로 실장될 수 있음이 이해될 것이다.
도 15는 도 14의 불휘발성 메모리 장치(400)를 보여주는 블록도이다. 도 15를 참조하면, 불휘발성 메모리 장치(400)는 메모리 셀 어레이(410), 어드레스 디코더(420), 읽기 및 쓰기 회로(430), 그리고 제어 로직(4400을 포함한다.
메모리 셀 어레이(410), 어드레스 디코더(420), 그리고 읽기 및 쓰기 회로(430)는 도 3을 참조하여 설명된 메모리 셀 어레이(210), 어드레스 디코더(220), 그리고 읽기 및 쓰기 회로(230)와 동일하게 구성된다. 따라서, 상세한 설명은 생략된다.
제어 로직(440)는 불휘발성 메모리 장치(400)의 제반 동작을 제어하도록 구성된다. 제어 로직(440)은 제어 신호(CTRL)에 응답하여 동작한다. 예를 들면, 제어 신호(CTRL)는 도 14의 컨트롤러(300)로부터 제공될 것이다.
제어 로직(450)은 프로그램 로직(450)을 포함한다. 예시적으로, 프로그램 로직(450)은 제어 로직(440)에서 구동되는 소프트웨어일 것이다. 예시적으로, 프로그램 로직(450)은 디지털 회로, 아날로그 회로, 또는 디지털 회로 및 아날로그 회로가 조합된 하드웨어로 구현될 것이다. 예시적으로, 프로그램 로직(450)은 소프트웨어 및 하드웨어가 조합된 형태로 구현될 것이다.
프로그램 로직(450)은 불휘발성 메모리 장치(400)의 프로그램 동작 및 읽기 동작을 제어하도록 구성된다. 프로그램 로직(450)에 의해 수행되는 프로그램 동작 및 읽기 동작은 도 16 내지 19를 참조하여 더 상세하게 설명된다.
도 16은 도 15의 프로그램 로직(450)에 프로그램되는 데이터의 논리 상태들 의 제 1 실시 예를 보여주는 다이어그램이다. 도 16에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 예시적으로, 메모리 셀들은 각각 3 비트를 저장할 수 있도록 구성되는 것으로 가정한다. 즉, 메모리 셀들은 각각 8 개의 논리 상태들 중 하나를 가질 수 있도록 구성되는 것으로 가정한다.
예시적으로, 불휘발성 메모리 장치(200)는 플래시 메모리 장치인 것으로 가정한다. 즉, 불휘발성 메모리 장치(200)의 읽기 및 쓰기 동작의 단위는 페이지인 것으로 가정한다. 그러나, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 플래시 메모리 장치로 한정되지 않는다. 예를 들면, 본 발명의 실시 예에 따른 불휘발성 메모리 장치(200)는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등과 같은 메모리들을 포함할 수 있음이 이해될 것이다.
하나의 메모리 셀에 3 비트가 저장되면, 플래시 메모리 장치(200)의 하나의 물리 페이지는 3 개의 논리 페이지들을 포함한다. 예를 들면, 하나의 물리 페이지의 메모리 셀들에 저장되는 최하위 비트들(LSB, Least Significant Bit)은 최하위 페이지를 형성할 것이다. 하나의 물리 페이지의 메모리 셀들에 저장되는 최상위 비트들(MSB, Most Significant Bit)은 최상위 페이지를 형성할 것이다. 그리고, 하나의 물리 페이지의 메모리 셀들에 저장되는 중간 비트들(CSB, Central Significant Bit)은 중간 페이지를 형성할 것이다.
예시적으로, 플래시 메모리 장치(200)는 최하위 페이지로부터 최상위 페이지의 순서로, 순차적으로 프로그램하는 것으로 가정한다. 그리고, 최하위 페이지는 제 1 페이지(Page1), 중간 페이지는 제 2 페이지(Page2), 그리고 최상위 페이지는 제 3 페이지(Page3)에 각각 대응하는 것으로 가정한다.
도 16을 참조하면, 메모리 셀들은 소거 상태로부터 프로그램된다. 제 1 페이지(Page1) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 1 중간 프로그램 상태(PL1)로 프로그램된다.
제 2 페이지(Page2) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 제 2 중간 프로그램 상태(PL2)로 프로그램된다. 그리고, 제 1 중간 프로그램 상태(PL1)로부터 제 3 및 제 4 중간 프로그램 상태들(PL3, Pl4)로 프로그램된다.
제 3 페이지(Page3) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 1 프로그램 상태(P1)로 프로그램된다. 메모리 셀들은 제 2 중간 프로그램 상태(PL2)로부터 제 2 및 제 3 프로그램 상태들(P2, P3)로 프로그램된다. 메모리 셀들은 제 3 중간 프로그램 상태(PL3)로부터 제 4 및 제 5 프로그램 상태들(P4, P5)로 프로그램된다. 메모리 셀들은 제 4 중간 프로그램 상태(PL4)로부터 제 6 및 제 7 프로그램 상태들(P6, P7)로 프로그램된다.
도 17은 도 15의 프로그램 로직(450)에 프로그램되는 데이터의 논리 상태들의 제 2 실시 예를 보여주는 다이어그램이다. 도 17에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 예시적으로, LSB 프로그램 데이터는 "1" 또는 "0" 중 하나만을 포함하는 것으로 가정한다. 예를 들면, 도 17은 제 1 페이지(Page1) 프로그램 시에 미사용 논리 상태가 존재하는 경우의 프로그램을 나 타낸다.
메모리 셀들은 소거 상태(E)로부터 프로그램된다. 예시적으로, 제 1 페이지(Page1) 프로그램 시에, 프로그램 데이터는 "1" 만을 포함하는 것으로 가정한다. 이 경우, 제 1 페이지 프로그램(Page1) 시에, 메모리 셀들은 소거 상태(E)를 유지할 것이다. 그리고, 제 1 페이지(Page1) 프로그램 시에, 메모리 셀들은 소거 상태(E)를 유지하였음을 나타내는 정보가 스페어 데이터로서 제공될 것이다.
다른 예로서, 제 1 페이지(Page1) 프로그램 시에, 프로그램 데이터는 "0" 만을 포함하는 것으로 가정한다. 이 경우, 제 1 페이지(Page1) 프로그램 시에, 메모리 셀들은 소거 상태(E)를 유지할 것이다. 그리고, 제 1 페이지(Page1) 프로그램 시에, 메모리 셀들은 소거 상태(E)를 유지하였음을 나타내는 정보가 스페어 데이터로서 제공될 것이다. 또한, 제 1 페이지(Page1) 프로그램 시에, 데이터가 반전되었음을 나타내는 정보가 스페어 데이터로서 제공될 것이다.
제 2 페이지(Page2) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 1 중간 프로그램 상태(PL1)로 프로그램된다.
제 3 페이지(Page3) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 2 중간 프로그램 상태(PL2)로 프로그램된다. 메모리 셀들은 제 1 중간 프로그램 상태(PL2)로부터 제 3 및 제 4 중간 프로그램 상태들(PL3, PL4)로 프로그램된다.
도 16의 논리 상태들과 비교하면, 도 17의 논리 상태들은 제 3 페이지(Page3) 프로그램 시에, 소거 상태(E) 및 제 2 내지 제 4 프로그램 상태 들(PL2~PL4)로 프로그램된다. 즉, 논리 상태들이 마진이 향상되므로, 플래시 메모리 장치(400)의 신뢰성이 향상됨이 이해될 것이다.
다른 예로서, 제 1 페이지(Page1) 프로그램 시에 미사용 논리 상태가 존재하여도, 프로그램은 도 16을 참조하여 설명된 바와 같이 수행될 것이다. 이때, 제 3 페이지(Page3) 프로그램이 수행되면, 소거 상태(E)와 제 1 내지 제 3 프로그램 상태들(P1~P3)이 존재할 것이다. 제 3 페이지(Page3) 프로그램 시에, 도 4 및 7을 참조하여 설명된 프로그램 방법을 이용하여, 논리 상태들의 마진들이 선택적으로 가변될 수 있음이 이해될 것이다.
도 18은 도 15의 프로그램 로직(450)에 프로그램되는 데이터의 논리 상태들의 제 3 실시 예를 보여주는 다이어그램이다. 도 18에서, 가로 축은 메모리 셀들의 논리 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 예시적으로, 논리 값은 메모리 셀들의 문턱 전압을 나타낼 것이다. 예시적으로, 도 18은 제 2 페이지(Page2) 프로그램 시에 미사용 논리 상태가 존재하는 경우의 프로그램을 보여준다.
제 1 페이지(Page1) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 1 중간 프로그램 상태(PL1)로 프로그램된다.
제 2 페이지(Page2) 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 2 중간 프로그램 상태(PL2)로 프로그램된다. 메모리 셀들은 제 1 중간 프로그램 상태(PL1)로부터 제 3 중간 프로그램 상태(PL3)로 프로그램된다. 즉, 중간 비트들(CSB)은 제 4 중간 프로그램 상태(PL4)에 대응하는 데이터를 포함하지 않는다.
제 3 페이지 프로그램 시에, 메모리 셀들은 소거 상태(E)로부터 소거 상태(E) 및 제 1 프로그램 상태(P1)로 프로그램된다. 메모리 셀들은 제 2 중간 프로그램 상태(PL2)로부터 제 2 및 제 3 프로그램 상태들(P2, P3)로 프로그램된다. 메모리 셀들은 제 3 중간 프로그램 상태(PL3)로부터 제 4 및 제 5 프로그램 상태들(P4, P5)로 프로그램된다.
도 16의 논리 상태들과 비교하면, 도 18에서 제 6 및 제 7 프로그램 상태들(P6, P7)이 제공되지 않는다. 따라서, 도 18의 논리 상태들에서, 전하 손실에 의한 읽기 오류가 감소될 수 있음이 이해될 것이다.
예시적으로, 제 2 페이지(Page2) 프로그램 시에, 제 4 중간 프로그램 상태(PL4) 대신 제 2 또는 제 3 중간 프로그램 상태(PL2, PL3)가 미사용될 수 있다. 이때, 미사용 논리 상태는 제 4 중간 프로그램 상태(PL4)와 교환될 것이다. 그리고, 미사용 논리 상태와 제 4 중간 프로그램 상태(PL4)가 교환되었음을 나타내는 정보가 스페어 정보로서 제공될 것이다.
예시적으로, 제 3 페이지(Page3) 프로그램 시에, 도 5 내지 7을 참조하여 설명된 방법, 또는 도 8 및 9를 참조하여 설명된 방법으로 프로그램이 수행될 수 있음이 이해될 것이다.
예시적으로, 제 1 및 제 2 페이지(Page1, Page2) 프로그램 시에 미사용 논리 상태가 존재하지 않고, 제 3 페이지 프로그램 시에, 미사용 논리 상태가 존재할 수 있음이 이해될 것이다. 이때, 제 3 페이지 프로그램은 도 5 내지 7을 참조하여 설 명된 방법, 또는 도 8 및 9를 참조하여 설명된 방법으로 수행될 수 있음이 이해될 것이다.
도 19는 도 15의 프로그램 로직(450)이 도 16 내지 18을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다. 도 15 및 19를 참조하면, S510 단계에서, 프로그램 데이터가 수신된다. 예시적으로, 도 15의 컨트롤러(300)로부터 프로그램 데이터가 수신될 것이다. 예시적으로, 수신되는 프로그램 데이터는 제 3 페이지(Page3) 데이터인 것으로 가정한다. 예를 들면, 프로그램 데이터는 읽기 및 쓰기 회로(430)에 로딩될 것이다.
S520 단계에서, 하위 페이지 데이터가 읽어진다. 프로그램 데이터가 제 3 페이지(Page3) 데이터이므로, 제 1 페이지(Page1) 데이터와 제 2 페이지(Page2) 데이터가 읽어질 것이다. 읽어진 하위 페이지 데이터는 읽기 및 쓰기 회로(430)에 로딩될 것이다.
S530 단계에서, 미사용 논리 상태가 존재하는지 판별된다. 예를 들면, 프로그램 로직(450)은 수신된 프로그램 데이터 및 읽어진 하위 페이지 데이터를 분석할 것이다. 프로그램 로직(450)은 수신된 프로그램 데이터가 프로그램될 때, 미사용되는 논리 상태가 존재하는지 판별할 것이다. 미사용 논리 상태가 존재하지 않으면, S550 단계에서, 노멀 프로그램이 수행된다. 미사용 논리 상태가 존재하면, S540 단계가 수행된다.
S540 단계에서, 논리 상태들의 마진들이 가변된다. 예를 들면, 도 4 내지 7을 참조하여 설명된 바와 마찬가지로, 논리 상태들의 마진들이 평준화되도록 조절 될 것이다. 예를 들면, 논리 상태들의 마진들이 평준화되도록, 검증 전압들이 가변될 것이다.
예를 들면, 프로그램 로직(450)은 검증 전압들의 세트들 중 하나를 선택할 것이다. 예를 들면, 프로그램 로직(450)은 검증 전압들의 세트들 중 하나, 그리고 프로그램 전압들의 세트들 중 하나를 선택할 것이다.
S550 단계에서, 프로그램이 수행된다. 예를 들면, 프로그램 로직(450)은 가변된 마진들에 기반하여 프로그램이 수행되도록, 플래시 메모리 장치(200)를 제어할 것이다. 예를 들면, 프로그램 로직(450)은 선택된 검증 전압들의 세트를 이용하여 메모리 셀들이 프로그램되도록 제어할 것이다. 예를 들면, 프로그램 로직(450)은 선택된 검증 전압들의 세트와 프로그램 전압들의 세트를 이용하여 메모리 셀들의 프로그램되도록 제어할 것이다.
상술한 바와 같이, 제 1 및 제 2 페이지(Page1, Page2) 프로그램은 노멀 프로그램이 수행될 수 있다. 그리고, 제 3 페이지(Page3) 프로그램 시에, 도 4 내지 7을 참조하여 설명된 바와 마찬가지로, 논리 상태들의 마진들이 선택적으로 가변될 수 있다. 따라서, 불휘발성 메모리 장치(200)의 신뢰성이 향상된다.
상술한 바와 같이, 제 1 페이지(Page1) 프로그램 시에 미사용 논리 상태가 존재하면, 도 17에 도시된 바와 마찬가지로, 제 3 페이지(Page3) 프로그램을 생략하는 것이 가능하다. 따라서, 불휘발성 메모리 장치(200)의 신뢰성이 향상된다.
상술한 실시 예에서, 도 4 내지 13을 참조하여 설명된 프로그램 방법들은 컨트롤러(100)의 프로그램 로직(140)에 의해 제어되는 것으로 설명되었다. 그러나, 도 5 내지 14를 참조하여 설명된 프로그램 방법들은 도 16의 프로그램 로직(450)에 의해 수행될 수 있음이 이해될 것이다. 즉, 프로그램 데이터는 읽기 및 쓰기 회로(430)에 저장되고, 프로그램 로직(450)은 읽기 및 쓰기 회로(430)에 저장된 프로그램 데이터에 기반하여, 도 4 내지 13을 참조하여 설명된 바와 마찬가지로, 논리 상태들의 마진들을 가변할 수 있음이 이해될 것이다.
도 20은 도 1의 메모리 시스템(10) 또는 도 14의 메모리 시스템(20)의 다른 실시 예를 보여주는 블록도이다. 도 20을 참조하면, 메모리 시스템(10, 20)은 컨트롤러(100, 300) 및 불휘발성 메모리 장치(200, 400)를 포함한다. 불휘발성 메모리 장치(200, 400)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 불휘발성 메모리 칩들의 각 그룹은 하나의 채널을 통해 컨트롤러(100, 300)와 통신하도록 구성된다. 도 21에서, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(100, 300)와 통신하는 것으로 도시되어 있다. 각 불휘발성 메모리 칩은 도 3 또는 도 15를 참조하여 설명된 바와 마찬가지로 구성될 것이다.
도 21은 도 1 또는 15의 메모리 시스템(10, 20)을 포함하는 컴퓨팅 시스템(500)을 보여주는 블록도이다. 도 21을 참조하면, 본 발명의 실시 예에 따른 컴퓨팅 시스템(500)은 중앙 처리 장치(510), 램(520, RAM, Random Access Memory), 사용자 인터페이스(530), 전원(540), 그리고 메모리 시스템(10, 20)을 포함한다.
메모리 시스템(10, 20)은 시스템 버스(550)를 통해, 중앙처리장치(510), 램(520), 사용자 인터페이스(530), 그리고 전원(540)에 전기적으로 연결된다. 사용 자 인터페이스(530)를 통해 제공되거나, 중앙 처리 장치(510)에 의해서 처리된 데이터는 메모리 시스템(10, 20)에 저장된다. 메모리 시스템(10, 20)은 컨트롤러(100, 300) 및 불휘발성 메모리 장치(200, 400)를 포함한다.
예시적으로, 불휘발성 메모리 장치(200, 400)는 복수의 불휘발성 메모리 칩들을 포함할 것이다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할될 것이다. 불휘발성 메모리 칩들의 각 그룹은 공통 채널을 통해 컨트롤러(100, 300)와 통신하도록 구성될 것이다. 도 21에서, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 m 채널들(CH1~CHm)을 통해 컨트롤러(100, 300)와 통신하는 것으로 도시되어 있다.
메모리 시스템(10, 20)이 반도체 드라이브(SSD)로 장착되는 경우, 컴퓨팅 시스템(300)의 부팅 속도가 획기적으로 빨라질 수 있다. 도면에 도시되지 않았지만, 본 발명에 따른 시스템은 응용 칩셋(Application Chipset), 카메라 이미지 프로세서(Camera Image Processor) 등을 더 포함할 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 이해될 것이다.
상술한 실시 예에서, 논리 상태들에 기반하여 논리 상태들의 마진을 가변하는 프로그램 방법이 설명되었다. 본 발명의 기술적 사상은 논리 상태들의 카운트 값에 기반하여 논리 상태들의 마진을 가변하는 것으로 응용될 수 있음이 이해될 것이다. 예를 들면, 미사용 논리 상태들의 존재 여부에 관계 없이, 도 10을 참조하여 설명된 바와 마찬가지로, 제 1 논리 상태의 카운트 값보다 큰 카운트 값을 갖는 제 2 논리 상태의 마진을 제 1 논리 상태의 마진보다 크게 설정할 수 있음이 이해될 것이다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 자명하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 제 1 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 컨트롤러를 보여주는 블록도이다.
도 3은 도 1의 불휘발성 메모리 장치를 보여주는 블록도이다.
도 4는 도 3의 불휘발성 메모리 장치의 메모리 셀들에 프로그램되는 논리 상태들의 제 1 실시 예를 보여주는 다이어그램이다.
도 5는 도 3의 불휘발성 메모리 장치의 메모리 셀들에 프로그램되는 논리 상태들의 제 2 실시 예를 보여주는 다이어그램이다.
도 6은 도 3의 불휘발성 메모리 장치의 메모리 셀들에 프로그램되는 논리 상태들의 제 3 실시 예를 보여주는 다이어그램이다.
도 7은 도 2의 프로그램 로직이 도 4 내지 6을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다.
도 8은 도 3의 불휘발성 메모리 장치의 메모리 셀들에 프로그램되는 논리 상태들의 제 4 실시 예를 보여주는 다이어그램이다.
도 9는 도 2의 프로그램 로직이 도 8을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다.
도 10은 도 3의 불휘발성 메모리 장치의 메모리 셀들에 프로그램되는 논리 상태들의 제 5 실시 예를 보여주는 다이어그램이다.
도 11은 도 2의 프로그램 로직이 도 10을 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다.
도 12는 도 3의 불휘발성 메모리 장치의 메모리 셀들에 프로그램되는 논리 상태들의 제 6 실시 예를 보여주는 다이어그램이다.
도 13은 도 2의 프로그램 로직이 도 12를 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다.
도 14는 본 발명의 제 2 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 15는 도 14의 불휘발성 메모리 장치를 보여주는 블록도이다.
도 16은 도 15의 프로그램 로직에 프로그램되는 데이터의 논리 상태들의 제 1 실시 예를 보여주는 다이어그램이다.
도 17은 도 15의 프로그램 로직에 프로그램되는 데이터의 논리 상태들의 제 2 실시 예를 보여주는 다이어그램이다.
도 18은 도 15의 프로그램 로직에 프로그램되는 데이터의 논리 상태들의 제 3 실시 예를 보여주는 다이어그램이다.
도 19는 도 15의 프로그램 로직이 도 16 내지 18를 참조하여 설명된 프로그램 동작을 수행하는 과정을 보여주는 순서도이다.
도 20은 도 1의 메모리 시스템 및 도 14의 메모리 시스템의 다른 실시 예를 보여주는 블록도이다.
도 21는 도 1 또는 15의 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.

Claims (10)

  1. 불휘발성 메모리 장치의 프로그램 방법에 있어서:
    프로그램 데이터를 수신하고;
    상기 수신된 프로그램 데이터에 대응하는 논리 상태들을 검출하고;
    상기 프로그램 데이터가 갖는 논리 상태들의 수가 제1 값일 때, 제1 검증 전압들을 이용하여 상기 프로그램 데이터를 선택된 워드 라인에 연결된 메모리 셀들에 프로그램하고; 그리고
    상기 프로그램 데이터가 갖는 논리 상태들의 수가 상기 제1 값보다 작은 제2 값일 때, 제2 검증 전압들을 이용하여 상기 프로그램 데이터를 상기 선택된 워드 라인에 연결된 상기 메모리 셀들에 프로그램하는 것을 포함하고,
    상기 제2 검증 전압들 사이의 차이는 상기 제1 검증 전압들 사이의 차이보다 큰 프로그램 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    각 메모리 셀은 적어도 세 비트를 저장할 수 있도록 구성되는 프로그램 방법.
  4. 제 1 항에 있어서,
    상기 논리 상태들의 마진들이 평준화 되도록 상기 제2 검증 전압들의 간격이 조절되는 프로그램 방법.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 논리 상태들 중 가장 수가 많은 논리 상태의 마진이 나머지 논리 상태들의 마진보다 커지도록 상기 제2 검증 전압들의 간격이 조절되는 프로그램 방법.
  7. 제 1 항에 있어서,
    상기 논리 상태들 각각의 수에 따라, 상기 논리 상태들의 문턱 전압에 따른 순서를 재배열하는 것을 더 포함하는 프로그램 방법.
  8. 제 1 항에 있어서,
    상기 수신된 프로그램 데이터에 대응하는 논리 상태들을 검출하는 것은,
    상기 메모리 셀들에 미리 저장되어 있는 데이터를 읽고; 그리고
    상기 프로그램 데이터 및 상기 읽어진 데이터를 이용하여, 상기 프로그램 데이터의 논리 상태들을 판별하는 것을 포함하는 프로그램 방법.
  9. 불휘발성 메모리 장치의 프로그램 방법에 있어서:
    프로그램 데이터를 수신하고;
    상기 수신된 프로그램 데이터에 대응하는 논리 상태들 각각의 수를 카운트하고;
    상기 카운트된 값에 기반하여, 상기 논리 상태들의 마진들(margin)을 가변하고; 그리고
    상기 가변된 마진들에 기반하여, 상기 프로그램 데이터를 대응하는 메모리 셀들에 프로그램하는 것을 포함하는 프로그램 방법
  10. 제 9 항에 있어서,
    상기 논리 상태들의 마진들을 가변하는 것은
    제 1 논리 상태의 카운트 값보다 큰 카운트 값을 갖는 제 2 논리 상태의 마진을 상기 제 1 논리 상태의 마진보다 크게 설정하는 것을 포함하는 프로그램 방법.
KR1020090052978A 2009-06-15 2009-06-15 불휘발성 메모리 장치의 프로그램 방법 KR101618313B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090052978A KR101618313B1 (ko) 2009-06-15 2009-06-15 불휘발성 메모리 장치의 프로그램 방법
US12/786,732 US8295084B2 (en) 2009-06-15 2010-05-25 Nonvolatile memory device and related programming method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090052978A KR101618313B1 (ko) 2009-06-15 2009-06-15 불휘발성 메모리 장치의 프로그램 방법

Publications (2)

Publication Number Publication Date
KR20100134377A KR20100134377A (ko) 2010-12-23
KR101618313B1 true KR101618313B1 (ko) 2016-05-09

Family

ID=43306307

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090052978A KR101618313B1 (ko) 2009-06-15 2009-06-15 불휘발성 메모리 장치의 프로그램 방법

Country Status (2)

Country Link
US (1) US8295084B2 (ko)
KR (1) KR101618313B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI437570B (zh) * 2010-03-10 2014-05-11 Macronix Int Co Ltd 藉由編程準位的交換改善多位階單元的編程速度
US8819503B2 (en) * 2010-07-02 2014-08-26 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737141B2 (en) 2010-07-07 2014-05-27 Stec, Inc. Apparatus and method for determining an operating condition of a memory cell based on cycle information
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
US9195586B2 (en) 2012-02-23 2015-11-24 Hgst Technologies Santa Ana, Inc. Determining bias information for offsetting operating variations in memory cells based on wordline address
KR102112596B1 (ko) * 2013-03-15 2020-05-19 삼성전자주식회사 비휘발성 메모리 장치 및 이의 프로그래밍 방법
US9171624B2 (en) * 2013-12-20 2015-10-27 Apple Inc. Management of data storage in analog memory cells using a non-integer number of bits per cell
US9064569B1 (en) * 2014-07-03 2015-06-23 Sandisk Technologies Inc. Memory controller with resistive random access memory (ReRAM)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007042222A (ja) 2005-08-04 2007-02-15 Renesas Technology Corp 半導体装置
WO2009048898A1 (en) 2007-10-10 2009-04-16 Micron Technology, Inc. Non-equal threshold voltage ranges in mlc nand
WO2009058195A1 (en) 2007-10-31 2009-05-07 Micron Technology, Inc. Non-volatile multilevel memory cells

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1055687A (ja) 1996-08-09 1998-02-24 Sony Corp 不揮発性半導体記憶装置
JP2000298992A (ja) 1999-04-13 2000-10-24 Hitachi Ltd 多値記憶不揮発性半導体メモリの制御装置
JP2003242787A (ja) 2002-02-14 2003-08-29 Mitsubishi Electric Corp 不揮発性半導体記憶装置
KR100550789B1 (ko) * 2002-07-18 2006-02-08 주식회사 하이닉스반도체 플래시 메모리 소자의 프로그램/소거 전압 공급 회로
JP2005100527A (ja) 2003-09-25 2005-04-14 Matsushita Electric Ind Co Ltd 半導体不揮発性記憶装置
US7355892B2 (en) * 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007042222A (ja) 2005-08-04 2007-02-15 Renesas Technology Corp 半導体装置
WO2009048898A1 (en) 2007-10-10 2009-04-16 Micron Technology, Inc. Non-equal threshold voltage ranges in mlc nand
WO2009058195A1 (en) 2007-10-31 2009-05-07 Micron Technology, Inc. Non-volatile multilevel memory cells

Also Published As

Publication number Publication date
KR20100134377A (ko) 2010-12-23
US8295084B2 (en) 2012-10-23
US20100315873A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
KR101618313B1 (ko) 불휘발성 메모리 장치의 프로그램 방법
KR102065665B1 (ko) 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
US9478300B2 (en) Operation method of nonvolatile memory system
KR101944793B1 (ko) 플래시 메모리를 포함하는 플래시 메모리 시스템 및 그것의 비정상 워드 라인 검출 방법
KR101636248B1 (ko) 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법
US11037639B2 (en) Memory controller and method of operating the same for processing the failed read operation
KR101600539B1 (ko) 불휘발성 메모리 장치의 프로그램 방법
US8498160B2 (en) Nonvolatile memory device and related programming method using selective bit line precharging
KR102452994B1 (ko) 반도체 메모리 장치 및 그 동작 방법
JP2009037619A (ja) メモリシステム及びその読み出し方法
KR20140092027A (ko) 메모리 시스템의 동작 방법 및 메모리 시스템
US10332606B2 (en) Memory Controller for controlling memory device based on erase state information and method of operating the memory controller
KR20100106142A (ko) 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US9679638B2 (en) Semiconductor device and method of operating the same
KR20220006467A (ko) 기계 학습에 기반한 오류 정정을 수행하는 메모리 장치 및 이의 동작 방법
US9570178B2 (en) Semiconductor memory device and operating method thereof
KR20100045739A (ko) 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
US9502105B2 (en) Resistive memory device, operating method thereof, and system having the same
KR20100109223A (ko) 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법
KR20100050789A (ko) 메모리 장치 및 그것을 포함하는 메모리 시스템
KR101565974B1 (ko) 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
US10418116B2 (en) Memory device with control logic configured to group memory blocks, and determine driving voltages to be respectively applied to the groups to control memory operation
KR20200069892A (ko) 메모리 시스템 및 이의 동작 방법
US10937511B2 (en) Semiconductor memory device, memory system including controller, and method of operating controller
US8531879B2 (en) Semiconductor memory device and an operating method thereof

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190329

Year of fee payment: 4