KR102187521B1 - 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법 - Google Patents

불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법 Download PDF

Info

Publication number
KR102187521B1
KR102187521B1 KR1020140010629A KR20140010629A KR102187521B1 KR 102187521 B1 KR102187521 B1 KR 102187521B1 KR 1020140010629 A KR1020140010629 A KR 1020140010629A KR 20140010629 A KR20140010629 A KR 20140010629A KR 102187521 B1 KR102187521 B1 KR 102187521B1
Authority
KR
South Korea
Prior art keywords
program
data
memory
nonvolatile memory
latches
Prior art date
Application number
KR1020140010629A
Other languages
English (en)
Other versions
KR20150090369A (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 KR1020140010629A priority Critical patent/KR102187521B1/ko
Priority to US14/526,661 priority patent/US9607688B2/en
Publication of KR20150090369A publication Critical patent/KR20150090369A/ko
Application granted granted Critical
Publication of KR102187521B1 publication Critical patent/KR102187521B1/ko

Links

Images

Classifications

    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법에 관한 것이다. 본 발명의 프로그램 방법은, 제1 프로그램에 사용될 데이터를 로딩하는 단계, 로딩된 데이터에 기반하여 복수의 메모리 셀들에 제1 프로그램을 시작하는 단계, 그리고 제1 프로그램이 완료되기 전에 제1 프로그램에 후속하는 제2 프로그램에 사용될 적어도 두 개의 페이지 데이터를 로딩하는 단계로 구성된다. 제1 페이지 데이터 및 제2 페이지 데이터는 하나의 메모리 셀에 프로그램되는 제1 비트 및 제2 비트에 각각 대응한다.

Description

불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법{MEMORY SYSTEM INCLUDING NONVOLATILE MEMORY AND MEMORY CONTROLLER AND PROGRAMMING METHOD FOR PROGRAMMING DATA INTO NONVOLATILE MEMORY}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법에 관한 것이다.
반도체 메모리(semiconductor memory)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비소 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리는 크게 휘발성 메모리(Volatile memory)와 불휘발성 메모리(Nonvolatile memory)로 구분된다.
휘발성 메모리는 전원 공급이 차단되면 저장하고 있던 데이터를 소실하는 메모리 장치이다. 휘발성 메모리는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등을 포함한다. 불휘발성 메모리는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다.
컴퓨터, 스마트폰, 스마트패드와 같은 전자 장치는 반도체 메모리를 사용한다. 전자 장치에서 사용되는 콘텐츠가 대용량화되면서, 전자 장치가 반도체 메모리에 데이터를 프로그램하는 빈도가 증가하고 있다. 예를 들어, 그림 파일은 한 번의 프로그램을 통해 반도체 메모리에 저장되는 반면, 대용량의 동영상 파일은 복수회의 프로그램을 통해 반도체 메모리에 저장된다. 프로그램의 빈도가 증가하면서, 프로그램들 사이의 지연 시간이 반도체 메모리의 동작 속도를 결정하는 중요한 요인 중 하나로 부각되고 있다. 따라서, 프로그램 사이에 발생하는 지연 시간을 감소시키고자 하는 요구가 끊임없이 제기되고 있다.
본 발명의 목적은, 향상된 동작 속도를 갖는 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법을 제공하는 데에 있다.
복수의 메모리 셀들 및 상기 복수의 메모리 셀들에 각각 연결된 복수의 비트 라인들을 포함하는 불휘발성 메모리에 데이터를 프로그램하는 본 발명의 실시 예에 따른 프로그램 방법은, 제1 프로그램에 사용될 데이터를 로딩하는 단계; 상기 로딩된 데이터에 기반하여, 상기 복수의 메모리 셀들에 상기 제1 프로그램을 시작하는 단계; 그리고 상기 제1 프로그램이 완료되기 전에, 상기 제1 프로그램에 후속하는 제2 프로그램에 사용될 제1 페이지 데이터 및 제2 페이지 데이터를 포함하는 적어도 두 개의 페이지 데이터를 로딩하는 단계를 포함하고, 상기 제1 페이지 데이터 및 상기 제2 페이지 데이터는 하나의 메모리 셀에 프로그램되는 제1 비트 및 제2 비트에 각각 대응한다.
실시 예로서, 상기 불휘발성 메모리는, 상기 복수의 비트 라인들에 각각 연결되는 복수의 제1 데이터 래치들, 상기 복수의 비트 라인들에 각각 연결되는 복수의 제2 데이터 래치들, 그리고 상기 복수의 비트 라인들에 각각 대응하는 복수의 캐시 래치들을 더 포함하고, 상기 제1 프로그램에 사용될 상기 데이터를 로딩하는 단계는, 상기 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계; 그리고 상기 복수의 캐시 래치들에 로딩된 상기 데이터를 상기 복수의 제1 데이터 래치들로 덤프(dump)하는 단계를 포함한다.
실시 예로서, 상기 제1 프로그램은 상기 복수의 제1 데이터 래치들에 저장된 상기 데이터에 기반하여 수행된다.
실시 예로서, 상기 적어도 두 개의 페이지 데이터를 로딩하는 단계는, 상기 제1 프로그램이 수행되는 동안, 상기 제1 페이지 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계; 그리고 상기 제1 프로그램이 수행되는 동안, 상기 복수의 캐시 래치들에 로딩된 상기 제1 페이지 데이터를 상기 복수의 제2 데이터 래치들로 덤프하는 단계를 포함한다.
실시 예로서, 상기 적어도 두 개의 페이지 데이터를 로딩하는 단계는, 상기 제1 프로그램이 수행되는 동안 그리고 상기 제1 페이지 데이터가 상기 복수의 제2 데이터 래치들로 덤프된 후에, 상기 제2 페이지 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계를 더 포함한다.
실시 예로서, 상기 제1 프로그램이 완료된 후에, 상기 복수의 캐시 래치들에 로딩된 상기 제2 페이지 데이터를 상기 복수의 제1 데이터 래치들로 덤프하는 단계; 그리고 상기 제2 페이지 데이터가 덤프된 후에, 상기 복수의 제1 데이터 래치들에 저장된 상기 제2 페이지 데이터 및 상기 복수의 제2 데이터 래치들에 저장된 상기 제1 페이지 데이터에 기반하여 상기 제2 프로그램을 시작하는 단계를 더 포함한다.
실시 예로서, 상기 불휘발성 메모리는 상기 복수의 비트 라인들에 각각 연결되는 복수의 제3 데이터 래치들을 더 포함하고, 상기 적어도 두 개의 페이지 데이터를 로딩하는 단계는, 상기 제1 프로그램이 수행되는 동안, 상기 복수의 캐시 래치들에 로딩된 상기 제2 페이지 데이터를 상기 복수의 제3 데이터 래치들로 덤프하는 단계를 더 포함한다.
실시 예로서, 상기 제1 프로그램이 완료된 후에, 상기 복수의 제2 데이터 래치들에 저장된 상기 제1 페이지 데이터 및 상기 복수의 제1 데이터 래치들에 저장된 상기 제2 페이지 데이터에 기반하여 상기 제2 프로그램을 시작하는 단계를 더 포함한다.
실시 예로서, 상기 로딩하는 단계는, 상기 제1 프로그램이 수행되는 동안, 상기 제2 프로그램에 사용될 제3 페이지 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계; 상기 제1 프로그램이 완료된 후에, 상기 복수의 캐시 래치들에 로딩된 상기 제3 페이지 데이터를 상기 복수의 제1 데이터 래치들로 덤프하는 단계; 그리고 상기 복수의 제1 데이터 래치들에 저장된 상기 제3 페이지 데이터, 상기 복수의 제2 데이터 래치들에 저장된 상기 제1 페이지 데이터, 그리고 상기 복수의 제3 데이터 래치들에 저장된 상기 제2 페이지 데이터에 기반하여 상기 제2 프로그램을 시작하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 메모리 시스템은, 복수의 메모리 셀들, 상기 복수의 메모리 셀들에 연결되는 복수의 비트 라인들, 상기 복수의 비트 라인들에 연결되는 복수의 데이터 래치들, 그리고 상기 복수의 비트 라인들에 각각 대응하는 복수의 캐시 래치들을 포함하는 불휘발성 메모리; 그리고 상기 복수의 메모리 셀들에 프로그램될 데이터를 상기 불휘발성 메모리로 전송하고, 상기 불휘발성 메모리가 상기 데이터를 상기 복수의 메모리 셀들에 프로그램하도록 제어하는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 정상 모드 및 덤프 모드 중 하나를 선택하고, 상기 정상 모드 시에 상기 복수의 메모리 셀들의 프로그램에 후속하는 후속 프로그램에 사용될 페이지 데이터를 상기 불휘발성 메모리로 전송하고, 상기 덤프 모드 시에 상기 후속 프로그램에 사용될 상기 페이지 데이터를 덤프 커맨드와 함께 상기 불휘발성 메모리로 전송하고, 상기 불휘발성 메모리는, 상기 메모리 컨트롤러로부터 수신되는 페이지를 상기 복수의 캐시 래치들에 저장하고, 상기 메모리 컨트롤러로부터 상기 덤프 커맨드가 수신될 때 상기 복수의 캐시 래치들에 저장된 데이터를 상기 복수의 데이터 래치들로 덤프하도록 구성된다.
실시 예로서, 상기 메모리 컨트롤러는, 상기 불휘발성 메모리의 상기 복수의 메모리 셀들 중 제1 메모리 셀들의 각 메모리 셀에 i 개의 비트들을 프로그램하고, 상기 복수의 메모리 셀들 중 제2 메모리 셀들의 각 메모리 셀에 상기 i 개 보다 적은 수의 비트들을 프로그램하고, 상기 메모리 컨트롤러는, 상기 프로그램이 상기 제1 메모리 셀들에서 수행될 때 상기 정상 모드를 선택하고, 상기 프로그램이 상기 제2 메모리 셀들에서 수행될 때 상기 덤프 모드를 선택한다.
실시 예로서, 상기 불휘발성 메모리는 복수의 메모리 블록들을 포함하고, 상기 제1 메모리 셀들은 제1 메모리 블록에 포함되고, 상기 제2 메모리 셀들은 상기 제1 메모리 블록과 다른 제2 메모리 블록에 포함되고, 상기 불휘발성 메모리는 메모리 블록의 단위로 소거를 수행한다.
실시 예로서, 상기 메모리 컨트롤러는, 상기 프로그램이 수행되는 동안 상기 복수의 비트 라인들에 연결된 상기 복수의 데이터 래치들 중 상기 데이터를 저장하지 않는 데이터 래치들이 존재하지 않을 때 상기 정상 모드를 선택하고, 상기 데이터를 저장하지 않는 데이터 래치들이 존재할 때 상기 덤프 모드를 선택한다.
실시 예로서, 상기 불휘발성 메모리는 상기 프로그램이 수행되는 동안 복수의 덤프 포인트들을 갖고, 상기 프로그램이 수행되는 동안 상기 메모리 컨트롤러로부터 상기 덤프 커맨드가 수신되면 가장 가까운 덤프 포인트에서 상기 복수의 캐시 래치들에 저장된 데이터를 상기 복수의 데이터 래치들로 덤프하도록 구성된다.
실시 예로서, 상기 복수의 덤프 포인트들은 상기 프로그램의 복수의 프로그램 루프들 사이의 포인트들이고, 각 프로그램 루프는, 상기 복수의 메모리 셀들에 프로그램 전압을 인가한 후 검증 전압을 인가하는 동작을 포함한다.
본 발명에 따르면, 불휘발성 메모리에서 제1 프로그램이 수행되는 동안, 제2 프로그램에 사용될 페이지 데이터가 불휘발성 메모리로 로드되고, 불휘발성 메모리의 캐시 래치들로부터 비어 있는 데이터 래치들로 덤프(dump)된다. 이후에, 비어있는 캐시 래치로 두 번째 페이지 데이터가 로드된다. 따라서, 제1 프로그램이 수행된 후 제2 프로그램이 수행될 때까지의 지연 시간이 감소하고, 향상된 동작 속도를 갖는 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 메모리 블록을 보여주는 회로도이다.
도 4는 본 발명의 실시 예에 따른 페이지 버퍼 회로를 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 프로그램 방법을 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작 방법을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 불휘발성 메모리의 동작 방법을 보여주는 순서도이다.
도 8은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제1 예를 보여주는 타이밍도이다.
도 9는 도 8의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 10은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제2 예를 보여주는 타이밍도이다.
도 11은 도 10의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치 및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 12는 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제3 예를 보여주는 타이밍도이다.
도 13은 도 12의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치 및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 14는 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제4 예를 보여주는 타이밍도이다.
도 15는 도 14의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치 및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 16은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제5 예를 보여주는 타이밍도이다.
도 17은 도 16의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치 및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 18은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제6 예를 보여주는 타이밍도이다.
도 19는 도 18의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치 및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 20은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제6 예를 보여주는 타이밍도이다.
도 21 및 도 22는 도 20의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치 및 데이터 래치들의 데이터 흐름을 보여주는 블록도이다.
도 23은 덤프 포인트들의 예를 설명하기 위한 순서도이다.
도 24는 본 발명의 다른 실시 예에 따른 메모리 블록을 보여주는 회로도이다.
도 25는 본 발명의 제 2 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 26은 본 발명의 실시 예에 따른 스토리지 모듈을 보여주는 블록도이다.
도 27은 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 불휘발성 메모리(110) 및 메모리 컨트롤러(120)를 포함한다.
불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신할 수 있다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)로 레디 및 비지 신호(RnB)를 출력할 수 있다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)와 데이터(DATA)를 교환할 수 있다.
커맨드(CMD)는 미리 정해진 동작을 수행할 것을 지시하는 신호일 수 있다. 불휘발성 메모리(110)는 커맨드(CMD)에 응답하여 읽기, 프로그램, 소거 등과 같은 다양한 동작들을 수행할 수 있다. 어드레스(ADDR)는 불휘발성 메모리(110)의 저장 공간들을 식별하는 신호일 수 있다. 불휘발성 메모리(110)는 어드레스(ADDR)에 의해 식별된 저장 공간에 대해, 커맨드(CMD)에 의해 지정된 동작(예를 들어, 읽기, 프로그램, 소거 등)을 수행할 수 있다.
레디 및 비지 신호(RnB)는 불휘발성 메모리(110)의 상태를 가리키는 신호일 수 있다. 레디 및 비지 신호(RnB)가 비지 상태(Busy state), 예를 들어 로우 레벨을 가리킬 때, 불휘발성 메모리(110)는 메모리 컨트롤러(120)의 제어를 받을 수 없는 상태일 수 있다. 예를 들어, 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 커맨드(CMD) 또는 어드레스(ADDR)를 수신할 수 없는 상태일 때, 또는 메모리 컨트롤러(120)와 데이터(DATA)를 교환할 수 없는 상태일 때, 비지 상태로 진입할 수 있다.
레디 및 비지 신호(RnB)가 레디 상태(Ready state), 예를 들어 하이 상태를 가리킬 때, 불휘발성 메모리9110)는 메모리 컨트롤러(120)의 제어를 받을 수 있는 상태일 수 있다. 예를 들어, 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 커맨드(CMD) 또는 어드레스(ADDR)를 수신할 수 있는 상태일 때, 또는 메모리 컨트롤러(120)와 데이터(DATA)를 교환할 수 있는 상태일 때, 레디 상태로 진입할 수 있다.
메모리 컨트롤러(120)는 불휘발성 메모리(110)를 제어하도록 구성된다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 커맨드(CMD) 및 어드레스(ADDR)를 전송할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)와 데이터(DATA)를 교환할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로부터 레디 및 비지 신호(RnB)를 수신할 수 있다.
레디 및 비지 신호(RnB)가 레디 상태를 가리킬 때, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 커맨드(CMD) 또는 어드레스(ADDR)를 전송할 수 있다. 레디 및 비지 신호(RnB)가 레디 상태를 가리킬 때, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 데이터(DATA)를 전송하거나 불휘발성 메모리(110)로부터 데이터(DATA)를 수신할 수 있다.
메모리 컨트롤러(120)는 읽기 커맨드, 프로그램 커맨드 또는 소거 커맨드를 불휘발성 메모리(110)로 전송하여, 불휘발성 메모리(110)가 읽기, 프로그램 또는 소거를 수행하도록 제어할 수 있다.
메모리 컨트롤러(120)는 프로그램 동작 제어부(130)를 포함한다. 프로그램 동작 제어부(130)는 불휘발성 메모리(110)의 프로그램 동작을 제어할 수 있다. 프로그램 동작은 불휘발성 메모리(110)에 프로그램될 데이터를 로딩하는 동작 및 불휘발성 메모리(110)가 로딩된 데이터를 프로그램하는 동작을 포함할 수 있다. 프로그램 동작 제어부(130)는 메모리 컨트롤러(120)가 불휘발성 메모리(110)로 전송하는 데이터(DATA) 또는 커맨드(CMD)를 결정함으로써, 불휘발성 메모리(110)의 프로그램 동작을 제어할 수 있다.
프로그램 동작 제어부(130)는 불휘발성 메모리(110)의 프로그램 동작을 정상 모드 또는 덤프 모드로 제어할 수 있다. 프로그램 동작 제어부(130)는 메모리 컨트롤러(120)가 정상 모드 또는 덤프 모드에 따라 커맨드(CMD) 및 데이터(DATA)를 불휘발성 메모리(110)로 전송하도록 메모리 컨트롤러(120)를 제어할 수 있다. 정상 모드에서, 메모리 컨트롤러(120)는 불휘발성 메모리(110)가 제1 프로그램을 수행하는 동안, 제2 프로그램에 사용될 하나의 페이지 데이터를 불휘발성 메모리(110)에 로딩할 수 있다. 덤프 모드에서, 메모리 컨트롤러(120)는 불휘발성 메모리(110)가 제1 프로그램을 수행하는 동안, 제2 프로그램에 사용될 하나 또는 그 이상의 페이지 데이터를 불휘발성 메모리(110)로 전송할 수 있다. 정상 모드 및 덤프 모드는 첨부된 도면들을 참조하여 후술된다.
예시적으로, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제어 신호들(미도시)을 더 전송할 수 있다. 예를 들어, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 어드레스 래치 인에이블(ALE, Address Latch Enable) 신호, 커맨드 래치 인에이블(CLE, Command Latch Enable) 신호, 읽기 인에이블(RE, Read Enable) 신호, 쓰기 인에이블(WE, Write Enable) 신호, 칩 인에이블(CE, Chip Enable) 신호, 데이터 스트로브(DQS, Data Strobe) 신호, 쓰기 보호(WP, Write Protect) 신호 등을 전송할 수 있다.
어드레스 래치 인에이블(ALE) 신호는 불휘발성 메모리(110)로 어드레스(ADDR)가 전송됨을 알리는 신호일 수 있다. 커맨드 래치 인에이블(CLE) 신호는 불휘발성 메모리(110)로 커맨드(CMD)가 전송됨을 알리는 신호일 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 읽기 인에이블(RE) 신호를 전송하여, 불휘발성 메모리(110)의 읽기를 제어할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 쓰기 인에이블(WE) 신호를 전송하여, 불휘발성 메모리(110)의 프로그램을 제어할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 칩 인에이블(CE) 신호를 전송하여, 불휘발성 메모리(110)의 메모리 칩들 중 하나를 선택할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 데이터 스트로브(DQS) 신호를 전송하여, 불휘발성 메모리(110)와의 데이터 통신을 제어할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 쓰기 보호(WP) 신호를 전송하여, 불휘발성 메모리(110)에서 의도하지 않은 쓰기가 발생하는 것을 방지할 수 있다.
예시적으로, 메모리 컨트롤러(120)는 불휘발성 메모리(110)에 다양한 전압들을 제공할 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)에 전원 전압(VCC), 접지 전압(VSS), 입출력용 전원 전압(VCCQ), 입출력용 접지 전압(VSSQ) 등을 제공할 수 있다.
이하에서, 본 발명의 기술적 사상을 간결하게 설명하기 의하여, 불휘발성 메모리(110)는 낸드 플래시 메모리를 포함하는 것으로 설명된다. 그러나, 본 발명의 기술적 사상은 낸드 플래시 메모리에 한정되지 않는다. 본 발명의 기술적 사상은 플래시 메모리, EPROM (Electrically Programmable Read Only Memory), EEPROM(Electrically Erasible & Programmable ROM), PRAM (Phase Change Random Access Memory), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함하는 불휘발성 메모리에 적용될 수 있다. 또한, 본 발명의 기술적 사상은 불휘발성 메모리(110)에 한정되지 않는다. 본 발명의 기술적 사상은 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리에도 적용될 수 있다.
도 2는 본 발명의 실시 예에 따른 불휘발성 메모리(110)를 보여주는 블록도이다. 도 2를 참조하면, 불휘발성 메모리(110)는 메모리 셀 어레이(111), 어드레스 디코더 회로(113), 페이지 버퍼 회로(115), 데이터 입출력 회로(117), 그리고 제어 로직 회로(119)를 포함한다.
메모리 셀 어레이(111)는 복수의 메모리 블록들(BLK1~BLKz)을 포함한다. 각 메모리 블록은 복수의 메모리 셀들을 포함한다. 각 메모리 블록은 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WL), 그리고 적어도 하나의 스트링 선택 라인(SSL)을 통해 어드레스 디코더 회로(113)에 연결될 수 있다. 각 메모리 블록은 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(115)에 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)은 복수의 비트 라인들(BL)에 공통으로 연결될 수 있다. 복수의 메모리 블록들(BLK1~BLKz)의 메모리 셀들은 동일한 구조들을 가질 수 있다.
복수의 메모리 블록들(BLK1~BLKz) 각각에 레벨이 설정될 수 있다. 각 메모리 블록에 설정된 레벨은, 각 메모리 블록의 하나의 메모리 셀에 저장되는 비트들의 수를 가리킬 수 있다. 예를 들어, 제1 메모리 블록(BLK1)은 단일 레벨(single level)로 설정될 수 있다. 제1 메모리 블록(BLK1)의 하나의 메모리 셀은 하나의 비트를 저장할 수 있다. 즉, 제1 메모리 블록(BLK1)의 메모리 셀들은 단일 레벨 셀들(SLC, Single Level Cells)로 동작할 수 있다.
제2 메모리 블록(BLK2)은 다중 레벨(Multi level)로 설정될 수 있다. 제2 메모리 블록(BLK2)의 하나의 메모리 셀은 두 개의 비트들을 저장할 수 있다. 제2 메모리 블록(BLK2)의 메모리 셀들은 다중 레벨 셀들(MLC, Multi Level Cells)로 동작할 수 있다.
마찬가지로, 제3 및 제4 메모리 블록들(BLK3, BLK4)은 각각 삼중 레벨(Triple Level) 및 사중 레벨(Quad Level)로 설정될 수 있다. 제3 메모리 블록(BLK3)의 하나의 메모리 셀은 세 개의 비트들을 저장하고, 제4 메모리 블록(BLK4)의 하나의 메모리 셀은 네 개의 비트들을 저장할 수 있다. 제3 메모리 블록(BLK3)의 메모리 셀들은 삼중 레벨 셀들(TLC, Triple Level Cells)로 동작하고, 제4 메모리 블록(BLK4)의 메모리 셀들은 사중 레벨 셀들(QLC, Quad Level Cells)로 동작할 수 있다.
예시적으로, 메모리 블록들(BLK1~BLKz)의 레벨들은 불휘발성 메모리(110)에서 내부적으로 설정될 수 있다. 예를 들어, 메모리 블록들(BLK1~BLKz)의 레벨들은 불휘발성 메모리(110)의 퓨즈들(레이저 퓨즈들, 전기 퓨즈들 등), 메탈 옵션들, 펌웨어 등에 의해 결정될 수 있다.
다른 예로서, 메모리 블록들(BLK1~BLKz)의 레벨들은 불휘발성 메모리(110)의 외부에서 설정될 수 있다. 예를 들어, 메모리 컨트롤러(120, 도 1 참조)는 불휘발성 메모리(110)의 제1 메모리 블록(BLK1)의 각 메모리 셀에 하나의 비트를 프로그램하기로 결정할 수 있다. 메모리 컨트롤러(120)는 제1 메모리 블록(BLK1)의 각 메모리 셀에 하나의 비트만 프로그램하도록 불휘발성 메모리(110)를 제어할 수 있다. 메모리 컨트롤러(120)는 제2 메모리 블록(BLK2)의 각 메모리 셀에 두 개의 비트를 프로그램하기로 결정할 수 있다. 메모리 컨트롤러(120)는 제2 메모리 블록(BKL2)의 각 메모리 셀에 두 개의 비트들만 프로그램하도록 불휘발성 메모리(110)를 제어할 수 있다. 마찬가지로, 메모리 컨트롤러(120)는 제3 메모리 블록(BLK3)의 각 메모리 셀에 세 개의 비트들을 프로그램하고, 제4 메모리 블록(BLK4)의 각 메모리 셀에 네 개의 비트들을 프로그램하도록 불휘발성 메모리(110)를 제어할 수 있다.
이하에서, '최대 레벨'이 정의된다. '최대 레벨'은 메모리 셀 어레이(111)의 메모리 셀들의 레벨들 중 가장 높은 레벨을 가리킨다. 예를 들어, 메모리 셀 어레이(111)의 메모리 셀들 중 오중 레벨을 갖는 메모리 셀들이 존재하지 않는 경우, 제4 메모리 블록(BLK4)의 메모리 셀들이 갖는 사중 레벨이 최대 레벨일 수 있다.
어드레스 디코더 회로(113)는 복수의 접지 선택 라인들(GSL), 복수의 워드 라인들(WL), 그리고 복수의 스트링 선택 라인들(SSL)을 통해 메모리 셀 어레이(111)에 연결된다. 어드레스 디코더 회로(113)는 제어 로직 회로(119)의 제어에 따라 동작한다. 어드레스 디코더 회로(113)는 메모리 컨트롤러(120)로부터 어드레스를 수신할 수 있다. 어드레스 디코더 회로(113)는 수신된 어드레스(ADDR)를 디코딩하고, 디코딩된 어드레스에 따라 워드 라인들(WL)에 인가되는 전압들을 제어할 수 있다. 예를 들어, 프로그램 시에, 어드레스 디코더 회로(113)는, 제어 로직 회로(119)의 제어 따라, 워드 라인들(WL)에 패스 전압을 인가할 수 있다. 프로그램 시에, 어드레스 디코더 회로(113)는, 제어 로직 회로(119)의 제어에 따라, 워드 라인들(WL) 중 어드레스(ADDR)가 가리키는 워드 라인에 프로그램 전압을 더 인가할 수 있다.
페이지 버퍼 회로(115)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(111)에 연결된다. 페이지 버퍼 회로(115)는 복수의 데이터 라인들(L)을 통해 데이터 입출력 회로(117)와 연결된다. 페이지 버퍼 회로(115)는 제어 로직 회로(119)의 제어에 따라 동작한다. 페이지 버퍼 회로(115)는 제어 로직 회로(119)로부터 덤프 신호(DUMP)를 수신할 수 있다.
페이지 버퍼 회로(115)는 메모리 셀 어레이(111)의 메모리 셀들에 프로그램될 데이터 또는 메모리 셀들로부터 읽히는 데이터를 저장할 수 있다. 프로그램 시에, 페이지 버퍼 회로(115)는 메모리 셀들에 프로그램될 데이터를 저장할 수 있다. 저장된 데이터에 기반하여, 페이지 버퍼 회로(115)는 복수의 비트 라인들(BL)을 바이어스할 수 있다. 프로그램 시에, 페이지 버퍼 회로(115)는 쓰기 드라이버로 기능할 수 있다. 읽기 시에, 페이지 버퍼 회로(115)는 비트 라인들(BL)의 전압들을 센싱하고, 센싱 결과를 저장할 수 있다. 읽기 시에, 페이지 버퍼 회로(115)는 감지 증폭기로 기능할 수 있다.
데이터 입출력 회로(117)는 복수의 데이터 라인들(L)을 통해 페이지 버퍼 회로(115)와 연결된다. 데이터 입출력 회로(117)는 메모리 컨트롤러(120, 도 1 참조)와 데이터(DATA)를 교환할 수 있다.
데이터 입출력 회로(117)는 메모리 컨트롤러(120)로부터 수신되는 데이터(DATA)를 임시로 저장할 수 있다. 데이터 입출력 회로(117)는 저장된 데이터를 페이지 버퍼 회로(115)로 전달할 수 있다. 데이터 입출력 회로(117)는 페이지 버퍼 회로(115)로부터 전달되는 데이터(DATA)를 임시로 저장할 수 있다. 데이터 입출력 회로(117)는 저장된 데이터(DATA)를 메모리 컨트롤러(110)로 전송할 수 있다. 데이터 입출력 회로(117)는 버퍼 메모리로 기능할 수 있다.
제어 로직 회로(119)는 메모리 컨트롤러(120)로부터 커맨드(CMD)를 수신한다. 제어 로직 회로(119)는 수신된 커맨드(CMD)를 디코딩하고, 디코딩된 커맨드에 따라 불휘발성 메모리(110)의 제반 동작을 제어할 수 있다. 제어 로직 회로(119)는 메모리 컨트롤러(120)로부터 다양한 제어 신호들 및 전압들을 더 수신할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 블록(BLKa)을 보여주는 회로도이다. 예시적으로, 도 2에 도시된 메모리 셀 어레이(111)의 복수의 메모리 블록들(BLK1~BLKz) 중 하나의 메모리 블록(BLKa)이 도 3에 도시된다.
도 2 및 도 3을 참조하면, 메모리 블록(BKLa)은 복수의 스트링들(SR)을 포함한다. 복수의 스트링들(SR)은 복수의 비트 라인들(BL1~BLn)에 각각 연결될 수 있다. 각 스트링(SR)은 접지 선택 트랜지스터(GST), 메모리 셀들(MC), 그리고 스트링 선택 트랜지스터(SST)를 포함한다.
각 스트링(SR)의 접지 선택 트랜지스터(GST)는 메모리 셀들(MC) 및 공통 소스 라인(CSL)의 사이에 연결된다. 복수의 스트링들(SR)의 접지 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결된다.
각 스트링(SR)의 스트링 선택 트랜지스터(SST)는 메모리 셀들(MC) 및 비트 라인(BL)의 사이에 연결된다. 복수의 스트링들(SR)의 스트링 선택 트랜지스터들(SST)은 복수의 비트 라인들(BL1~BLn)에 각각 연결된다. 복수의 비트 라인들(BL1~BLn)은 페이지 버퍼 회로(115)에 연결될 수 있다.
각 스트링(SR)에서, 접지 선택 트랜지스터(GST) 및 스트링 선택 트랜지스터(SST) 사이에 복수의 메모리 셀들(MC)이 제공된다. 각 스트링(SR)에서, 복수의 메모리 셀들(MC)은 직렬 연결될 수 있다.
복수의 스트링들(SR)에서, 공통 소스 라인(CSL)으로부터 동일한 순서에 위치한 메모리 셀들(MC)은 하나의 워드 라인에 공통으로 연결될 수 있다. 복수의 스트링들(SR)의 메모리 셀들(MC)은 복수의 워드 라인들(WL1~WLm)에 연결될 수 있다. 복수의 워드 라인들(WL1~WLm)은 어드레스 디코더 회로(113)에 연결될 수 있다.
하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)은 하나 또는 그 이상의 페이지 데이터들(PD)을 저장할 수 있다. 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 프로그램되는 페이지 데이터들은 하나의 메모리 셀(MC)에 프로그램되는 비트들에 각각 대응할 수 있다.
하나의 메모리 셀(MC)에 프로그램되는 제1 비트는 제1 페이지 데이터(PD1)에 대응할 수 있다. 제1 페이지 데이터(PD1)는 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 제1 비트들로 프로그램될 수 있다. 하나의 메모리 셀(MC)에 프로그램되는 제2 비트는 제2 페이지 데이터(PD2)에 대응할 수 있다. 제2 페이지 데이터(PD2)는 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 제2 비트들로 프로그램될 수 있다. 하나의 메모리 셀(MC)에 프로그램되는 제3 비트는 제3 페이지 데이터(PD3)에 대응할 수 있다. 제3 페이지 데이터(PD3)는 하나의 워드 라인(WL)에 연결된 메모리 셀들에 제3 비트들로 프로그램될 수 있다. 하나의 메모리 셀(MC)에 프로그램되는 제4 비트는 제4 페이지 데이터(PD4)에 대응할 수 있다. 제4 페이지 데이터(PD4)는 하나의 워드 라인(WL)에 연결된 메모리 셀들에 제4 비트들로 프로그램될 수 있다.
즉, 메모리 블록(BLKa)이 사중 레벨을 가질 때, 메모리 블록(BLKa)의 메모리 셀들(MC) 중 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 네 개의 페이지 데이터들이 프로그램될 수 있다. 메모리 블록(BLKa)이 삼중 레벨을 가질 때, 메모리 블록(BLKa)의 메모리 셀들(MC) 중 하나의 워드 라인(WL)에 연결된 메모리 셀들(MC)에 세 개의 페이지 데이터들이 프로그램될 수 있다. 메모리 블록(BLKa)이 i 레벨을 가질 때, 메모리 블록(BLKa)의 메모리 셀들(MC) 중 하나의 워드 라인(WL)에 연결된 메모리 셀들에 i 개의 페이지 데이터들이 프로그램될 수 있다.
도 4는 본 발명의 실시 예에 따른 페이지 버퍼 회로(115)를 보여주는 블록도이다. 예시적으로, 도 2에 도시된 불휘발성 메모리(110)의 페이지 버퍼 회로(115)가 도 4 도시된다.
도 2 내지 도 4를 참조하면, 페이지 버퍼 회로(115)는 복수의 페이지 버퍼들(PB1~PBn)을 포함한다. 복수의 페이지 버퍼들(PB1~PBn)은 복수의 비트 라인들(BL1~BLn)에 각각 연결될 수 있다. 복수의 비트 라인들(BL1~Bln)은 메모리 셀 어레이(111)에 연결될 수 있다. 복수의 페이지 버퍼들(PB1~PBn)은 복수의 데이터 라인들(L1~Ln)에 각각 연결될 수 있다. 복수의 데이터 라인들(L1~Ln)은 데이터 입출력 회로(117)에 연결될 수 있다.
복수의 페이지 버퍼들(PB1~PBn)은 제어 로직 회로(119)로부터 덤프 신호(DUMP)를 수신할 수 있다.
복수의 페이지 버퍼들(PB1~PBn) 각각은 복수의 데이터 래치들(DL1~DL4) 및 캐시 래치(CL)를 포함한다. 각 데이터 래치는 하나의 비트를 저장할 수 있다. 각 캐시 래치는 하나의 비트를 저장할 수 있다.복수의 페이지 버퍼들(PB1~PBn)의 캐시 래치들(CL)은 하나의 페이지 데이터를 저장할 수 있다. 복수의 페이지 버퍼들(PB1~PBn)의 제1 데이터 래치들(DL1)은 하나의 페이지 데이터를 저장할 수 있다. 복수의 페이지 버퍼들(PB1~PBn)의 제2 데이터 래치들(DL2)은 하나의 페이지 데이터를 저장할 수 있다. 복수의 페이지 버퍼들(PB1~PBn)의 제3 데이터 래치들(DL3)은 하나의 페이지 데이터를 저장할 수 있다. 복수의 페이지 버퍼들(PB1~PBn)의 제4 데이터 래치들(DL4)은 하나의 페이지 데이터를 저장할 수 있다.
제1 내지 제n 페이지 버퍼들(PB1~PBn)의 구조들 및 동작 방법들은 동일할 수 있다. 이하에서, 간결한 설명을 위하여, 제1 페이지 버퍼(PB1)의 구조 및 기능이 대표로 설명된다.
페이지 버퍼(PB1)의 데이터 래치들(DL1~DL4)은 비트 라인(BL1)에 연결된다. 예시적으로, 데이터 래치들(DL1~DL4)의 수는, 불휘발성 메모리(100)가 지원하는 최대 레벨의 수와 동일할 수 있다. 예를 들어, 불휘발성 메모리(100)의 하나의 메모리 셀에 프로그램될 수 있는 최대 비트 수에 해당하는 수의 데이터 래치들이 페이지 버퍼(PB1)에 제공될 수 있다. 불휘발성 메모리(100)의 메모리 블록들(BLK1~BLKz)에 설정될 수 있는 최대 레벨의 값에 해당하는 수의 데이터 래치들이 페이지 버퍼(PB1)에 제공될 수 있다. 불휘발성 메모리(100)의 하나의 워드 라인(WL)에 프로그램되는 페이지 데이터들의 최대 수에 해당하는 수의 데이터 래치들이 페이지 버퍼(PB1)에 제공될 수 있다.
프로그램 시에, 비트 라인(BL1)에 연결된 메모리 셀에 프로그램될 데이터가 데이터 래치들(DL1~DL4)에 저장된다. 프로그램될 데이터는 데이터 래치들(DL1~DL4)의 일부 또는 전부에 저장될 수 있다. 사중 레벨의 메모리 셀에 프로그램될 데이터는 4비트이다. 사증 레벨의 메모리 셀이 프로그램될 때, 프로그램될 데이터는 데이터 래치들(DL1~DL4)에 저장될 수 있다. 삼중 레벨의 메모리 셀에 프로그램될 데이터는 3비트이다. 삼중 레벨의 메모리 셀이 프로그램될 때, 프로그램될 데이터는 데이터 래치들(DL1~DL4) 중 세 개의 데이터 래치들에 저장될 수 있다. 마찬가지로, i 중 레벨의 메모리 셀이 프로그램될 때, 프로그램될 데이터는 데이터 래치들(DL1~DL4) 중 i 개의 데이터 래치들에 저장될 수 있다.
프로그램 시에, 페이지 버퍼(PB1)는 데이터 래치들(DL1~DL4)에 저장된 프로그램될 데이터에 기반하여, 비트 라인(BL1)에 전압을 인가할 수 있다.
캐시 래치(CL)는 데이터 라인(L1)에 연결된다. 캐시 래치(CL)는 데이터 라인(L1)을 통해 수신되는 데이터를 저장할 수 있다. 덤프 신호(DUMP)에 응답하여, 캐시 래치(CL)는 저장된 데이터를 데이터 래치들(DL1~DL4) 중 하나의 데이터 래치로 덤프(dump)할 수 있다.
도 5는 본 발명의 실시 예에 따른 프로그램 방법을 보여주는 순서도이다. 도 1 및 도 5를 참조하면, S110 단계에서, 데이터가 로드된다. 예시적으로, 메모리 컨트롤러(120)는 불휘발성 메모리(110)에 프로그램될 데이터를 불휘발성 메모리(1100에 로드할 수 있다.
S120 단계에서, 로딩된 데이터에 기반하여 제1 프로그램이 수행된다. 메모리 컨트롤러(120)는 로딩된 데이터를 프로그램하도록 불휘발성 메모리(110)를 제어할 수 있다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)의 제어에 따라, 로딩된 데이터를 프로그램하는 제1 프로그램을 수행할 수 있다.
S130 단계에서, 메모리 컨트롤러(120)는 제1 프로그램이 완료되기 전에, 제2 프로그램에 사용될 적어도 두 개의 페이지 데이터를 불휘발성 메모리(110)에 로딩할 수 있다.
도 6은 본 발명의 실시 예에 따른 메모리 컨트롤러(120)의 동작 방법을 보여주는 순서도이다. 예시적으로, 불휘발성 메모리(110)의 제1 프로그램이 완료되기 전에 적어도 두 개의 페이지 데이터들을 불휘발성 메모리(110)로 전송하는 방법(S130 단계)이 도 6에 도시된다.
도 1 및 도 6을 참조하면, S210 단계에서, 다음 동작이 프로그램인지 판별된다. 다음 동작이 프로그램이 아니면, 페이지 데이터의 로딩은 수행되지 않는다. 다음 동작이 프로그램이면, S220 단계에서, 자유 데이터 래치가 존재하는지 판별된다. 예를 들어, 각 비트 라인(BL)에 연결된 데이터 래치들(DL1~DL4, 도 4 참조) 중 제1 프로그램에 사용되지 않는 자유 데이터 래치가 존재하는지 판별될 수 있다. 예를 들어, 각 비트 라인에 연결된 데이터 래치가 i 개(i는 자연수) 이고, 메모리 컨트롤러(120)가 제1 프로그램을 위해 j 개(j는 i와 같거나 적은 자연수)의 페이지 데이터들을 데이터 래치들(DL1~DL4)에 로딩한 경우, 각 비트 라인(BL)에 대응하는 i-j 개의 데이터 래치들이 제1 프로그램을 위해 사용되지 않는 자유 데이터 래치들일 수 있다. 즉, 메모리 컨트롤러(120)는 제1 프로그램 시에 불휘발성 메모리(110)로 전송한 페이지 데이터들의 수 및 불휘발성 메모리(110)의 각 비트 라인(BL)에 연결된 데이터 래치들의 수에 기반하여, 자유 데이터 래치가 존재하는지 판별할 수 있다.
자유 데이터 래치가 존재하지 않으면, 프로그램 동작 제어부(130)는 정상 모드인 것으로 판별할 수 있다. 프로그램 동작 제어부(130)는 정상 모드에 따라 제1 프로그램에 후속하는 제2 프로그램과 연관된 프로그램 동작을 제어할 수 있다.
정상 모드인 경우, S230 단계에서, 제1 프로그램에 후속하는 제2 프로그램에 사용될 제1 페이지 데이터가 전송된다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제1 페이지 데이터를 전송할 수 있다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 전송되는 제1 페이지 데이터를 캐시 래치들(CL)에 로딩할 수 있다.
자유 데이터 래치가 존재하면, 프로그램 동작 제어부(130)는 덤프 모드인 것으로 판별할 수 있다. 프로그램 동작 제어부(130)는 덤프 모드에 따라 제1 프로그램에 후속하는 제2 프로그램과 연관된 프로그램 동작을 제어할 수 있다.
덤프 모드인 경우, S240 단계에서, 제1 프로그램에 후속하는 제2 프로그램에 사용될 제1 페이지 데이터가 전송된다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제1 페이지 데이터를 전송할 수 있다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 전송되는 제1 페이지 데이터를 캐시 래치들(CL)에 로딩할 수 있다. S250 단계에서, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드를 전송할 수 있다. 덤프 커맨드는 불휘발성 메모리(110)가 덤프 신호(DUMP)를 활성화하도록 제어하는 커맨드일 수 있다. 덤프 커맨드는 불휘발성 메모리(110)가 각 비트 라인(BL)의 캐시 래치(CL)에 저장된 데이터를 데이터 래치들(DL1~DL4) 중 하나로 로딩하도록 제어하는 커맨드일 수 있다. S260 단계에서, 메모리 컨트롤러(120)는 제2 프로그램에 사용될 적어도 하나의 추가 페이지 데이터를 불휘발성 메모리(110)로 전송할 수 있다.
S230 단계 또는 S240 단계 내지 S260 단계는 제1 프로그램이 완료되기 전에 수행될 수 있다. 자유 데이터 래치가 존재할 때, 즉 덤프 모드에서, 불휘발성 메모리(110)에서 제1 프로그램이 완료되기 전에, 불휘발성 메모리(110)의 제2 프로그램에 사용될 둘 이상의 페이지 데이터들이 불휘발성 메모리(110)에 로딩될 수 있다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)의 제1 프로그램이 완료되기 전에, 제2 프로그램과 연관된 덤프 커맨드를 불휘발성 메모리(110)로 전송할 수 있다.
도 7은 본 발명의 실시 예에 따른 불휘발성 메모리(110)의 동작 방법을 보여주는 순서도이다. 예시적으로, 불휘발성 메모리(110)의 제1 프로그램이 완료되기 전에 적어도 두 개의 페이지 데이터들이 불휘발성 메모리(110)에 로딩되는 방법(S130 단계)이 도 7에 도시된다. 도 1 및 도 7을 참조하면, S310 단계에서, 제1 프로그램이 시작된다. 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 수신된 적어도 하나의 페이지 데이터에 기반하여 제1 프로그램을 시작할 수 있다.
S320 단계에서, 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 수신되는 제1 페이지 데이터를 캐시 래치들(CL, 도 4 참조)에 저장한다. 예를 들어, 메모리 컨트롤러(120)는 제2 프로그램에 사용될 제1 페이지 데이터를 불휘발성 메모리(110)로 전송할 수 있다. 즉, 불휘발성 메모리(110)는 제2 프로그램에 사용될 제1 페이지 데이터를 캐시 래치들(CL)에 저장할 수 있다.
S330 단계에서, 덤프 커맨드가 수신되는지 판별된다. 덤프 커맨드가 수신되지 않으면, 불휘발성 메모리(110)는 추가적인 페이지 데이터를 로딩하지 않는다.
덤프 커맨드가 수신되면, S340 단계에서, 불휘발성 메모리(110)는 캐시 래치들(CL)에 저장된 제1 페이지 데이터를 자유 데이터 래치들에 저장한다. 예를 들어, 메모리 컨트롤러(120)는 각 비트 라인에 연결된 데이터 래치들(DL1~DL4) 중 자유 데이터 래치가 존재할 때, 덤프 커맨드를 불휘발성 메모리(110)로 전송한다. 덤프 커맨드에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 저장된 제1 페이지 데이터를 자유 데이터 래치들로 덤프한다. 제1 페이지 데이터가 덤프되면, 캐시 래치들(CL)은 비워진다.
S350 단계에서, 불휘발성 메모리(110)는 메모리 컨트롤러(120)로부터 수신되는 제2 페이지 데이터를 캐시 래치들(CL)에 저장한다.
도 8은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제1 예를 보여주는 타이밍도이다. 도 8에서, 입출력 채널(IOC)은 불휘발성 메모리 및 메모리 컨트롤러(120) 사이에서 교환되는 신호 또는 정보를 보여준다. 레디 및 비지 신호(RnB)는 불휘발성 메모리(110)의 상태를 가리키며, 불휘발성 메모리(110)로부터 메모리 컨트롤러(120)로 출력되는 신호일 수 있다. 내부 동작(IntOP)은 불휘발성 메모리(110)가 내부적으로 동작하고 있는지를 보여준다. 연관 설명(DES)은 메모리 시스템(100, 도 1 참조)의 동작과 연관된 부연 설명을 보여준다.
도 9는 도 8의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
도 1, 도 8 및 도 9를 참조하면, 제1 시간(T1)에, 불휘발성 메모리(110)의 제1 프로그램에 사용될 데이터가 로딩되기 시작한다.
제1 시간(T1) 내지 제2 시간(T2)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제1 프로그램과 연관된 제1 페이지 데이터(P1_PD1)를 전송한다. 제1 페이지 데이터(P1_PD1)는 불휘발성 메모리(110)의 캐시 래치들(CL)에 로딩될 수 있다(①). 메모리 컨트롤러(120)는 제1 프로그램과 연관된 프로그램 동작의 시작을 알리는 커맨드 및 제1 프로그램과 연관된 어드레스를 입출력 채널(IOC)을 통해 불휘발성 메모리(110)로 더 전송할 수 있다.
제1 페이지 데이터(P1_PD1)가 전송되는 동안, 불휘발성 메모리(110)는 레디 상태를 가리키는 하이 레벨의 레디 및 비지 신호(RnB)를 메모리 컨트롤러(120)로 출력한다. 제1 페이지 데이터(P1_PD1)가 전송되는 동안, 불휘발성 메모리(110)가 별도의 동작을 수행하지 않고 있으므로, 내부 동작(IntOP)은 레디 상태를 가리키는 하이 레벨에 대응할 수 있다.
제2 시간(T2) 내지 제3 시간(T3)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 저장된 데이터를 제1 데이터 래치들(DL1)로 덤프한다(②). 제1 페이지 데이터(PD1)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태를 가리키는 로우 레벨로 전환할 수 있다. 제1 페이지 데이터(P1_PD1)의 덤프가 완료되면, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태를 가리키는 하이 레벨로 전환할 수 있다. 제1 페이지 데이터(P1_PD1)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 덤프로 인해 비지 상태를 가리키는 로우 레벨에 대응할 수 있다. 제1 페이지 데이터(P1_PD1)의 덤프가 완료되면, 불휘발성 메모리(110)의 내부 동작(IntOP)은 레디 상태를 가리키는 하이 레벨에 대응할 수 있다.
제3 시간(T3) 내지 제4 시간(T4)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제1 프로그램과 연관된 제2 페이지 데이터(P1_PD2)를 전송한다. 메모리 컨트롤러(120)는 레디 및 비지 신호(RnB)가 하이 레벨로 천이하는 것에 응답하여, 불휘발성 메모리(110)로 제2 페이지 데이터(P1_PD2)를 전송할 수 있다. 불휘발성 메모리(110)는 제2 페이지 데이터(P1_PD2)를 캐시 래치들(CL)에 로딩할 수 있다(③).
제4 시간(T4) 내지 제5 시간(T5)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제2 페이지 데이터(P1_PD2)를 제2 데이터 래치들(DL2)로 덤프할 수 있다(④). 제2 페이지 데이터(P1_PD2)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태를 가리키는 로우 레벨로 전환할 수 있다. 제2 페이지 데이터(P1_PD2)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제5 시간(T5) 내지 제6 시간(T6)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제1 프로그램과 연관된 제3 페이지 데이터(P1_PD3)를 전송한다. 불휘발성 메모리(110)는 제3 페이지 데이터(P1_PD3)를 캐시 래치들(CL)에 로딩할 수 있다(⑤).
제6 시간(T6) 내지 제7 시간(T7)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제3 페이지 데이터(P1_PD3)를 제3 데이터 래치들(DL3)로 덤프할 수 있다(⑥). 제3 페이지 데이터(P1_PD3)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제3 페이지 데이터(P1_PD3)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
도 10은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제2 예를 보여주는 타이밍도이다. 예시적으로, 도 10은 도 8에 도시된 동작의 후속 동작을 보여준다. 도 11은 도 10의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
도 1, 도 10 및 도 11을 참조하면, 제7 시간(T7) 내지 제8 시간(T8)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제1 프로그램과 연관된 제4 페이지 데이터(P1_PD4)를 전송한다. 불휘발성 메모리(110)는 제4 페이지 데이터(P1_PD4)를 캐시 래치들(CL)에 로딩할 수 있다(①).
제8 시간(T8) 내지 제9 시간(T9)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제3 페이지 데이터(P1_PD4)를 제4 데이터 래치들(DL4)로 덤프할 수 있다(②). 제4 페이지 데이터(P1_PD4)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제4 페이지 데이터(P1_PD4)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
예시적으로, 제1 프로그램은 제1 내지 제4 페이지 데이터들(P1_PD1~P1_PD4)에 기반한 프로그램일 수 있다. 예를 들어, 제1 프로그램은 4의 레벨(예를 들어, 최대 레벨)을 갖는 제4 메모리 블록(BLK4, 도 2 참조)의 메모리 셀들에 대한 프로그램일 수 있다. 제4 페이지 데이터(P1_PD4)가 불휘발성 메모리(110)에 로딩됨으로써, 제1 프로그램을 위한 모든 페이지 데이터가 불휘발성 메모리(110)에 로딩된다. 따라서, 불휘발성 메모리(110)는 제9 시간(T9)에, 제1 내지 제4 페이지 데이터들(P1_PD1~P1_PD4)에 기반하여 제1 프로그램을 시작할 수 있다(③). 예를 들어, 메모리 컨트롤러(120)는 제1 프로그램의 시작을 지시하는 별도의 커맨드를 불휘발성 메모리(110)로 전송할 수 있다. 불휘발성 메모리(110)는 프로그램의 시작을 지시하는 별도의 커맨드에 응답하여, 제1 프로그램을 시작할 수 있다.
제4 페이지 데이터(P1_PD4)의 덤프가 완료되면, 제9 시간(T9)에, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다. 제1 프로그램이 시작되면, 제9 시간(T9)에, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)로 유지된다. 불휘발성 메모리(110)의 내부 동작(IntOP)은 제1 프로그램이 완료될 때까지 비지 상태(즉, 로우 레벨)로 유지될 수 있다.
하나의 비트 라인(BL)에 연결된 데이터 래치들(DL1~DL4)의 수는 4개 이다. 제1 프로그램은 네 개의 페이지 데이터들(P1_PD1~P1_PD4)에 기반하여 수행된다. 따라서, 제1 프로그램이 수행되는 동안, 프로그램 동작 제어부(130)는 정상 모드를 식별할 수 있다.
제10 시간(T10) 및 제11 시간(T11)은 제1 프로그램이 시작된 후 그리고 제1 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제10 시간(T10) 내지 제11 시간(T11)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 프로그램과 연관된 제1 페이지 데이터(P2_PD1)를 전송한다. 불휘발성 메모리(110)는 제1 페이지 데이터(P2_PD1)를 캐시 래치들(CL)에 로딩할 수 있다(④). 제1 페이지 데이터(P2_PD1)가 캐시 래치들(CL)에 로딩되면, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다.
도 12는 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제3 예를 보여주는 타이밍도이다. 예시적으로, 도 12는 도 10에 도시된 동작의 후속 동작을 보여준다. 도 13은 도 12의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
도 1, 도 12 및 도 13을 참조하면, 제12 시간(T12)에, 제1 프로그램이 완료된다. 제1 프로그램이 완료되면, 레디 및 비지 신호(RnB)는 레디 상태(즉, 하이 레벨)로 전환된다. 제1 프로그램이 완료되면, 불휘발성 메모리(110)의 내부 동작(IntOP)은 레디 상태(즉, 하이 레벨)에 대응할 수 있다.
레디 상태를 가리키는 레디 및 비지 신호(RnB)에 응답하여, 제13 시간(T13) 내지 제14 시간(T14)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제1 페이지 데이터(P2_PD1)를 제1 데이터 래치들(DL1)로 덤프할 수 있다(①). 제1 페이지 데이터(P2_PD1)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제1 페이지 데이터(P2_PD1)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
즉, 정상 모드인 경우, 메모리 컨트롤러(120)는 제1 프로그램이 수행되는 동안, 제1 프로그램에 후속하는 제2 프로그램과 연관된 하나의 페이지 데이터를 불휘발성 메모리(110)로 전송한다. 전송된 페이지 데이터는 불휘발성 메모리(110)의 캐시 래치들(CL)에 로딩된다. 메모리 컨트롤러(120)는 불휘발성 메모리(110)에서 제1 프로그램이 완료될 때까지 대기한다. 제1 프로그램이 완료되어 레디 및 비지 신호(RnB)가 레디 상태(즉, 하이 레벨)로 전환되면, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 결과적으로, 제1 프로그램이 수행되는 동안, 제2 프로그램과 연관된 하나의 페이지 데이터가 불휘발성 메모리(110)에 미리 로딩되고, 제2 프로그램과 연관된 프로그램 동작의 수행 시간이 단축된다.
제14 시간(T14) 내지 제15 시간(T15)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 프로그램과 연관된 제2 페이지 데이터(P2_PD2)를 전송한다. 불휘발성 메모리(110)는 제2 페이지 데이터(P2_PD2)를 캐시 래치들(CL)에 로딩할 수 있다(②).
제15 시간(T15) 내지 제16 시간(T16)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제2 페이지 데이터(P2_PD2)를 제2 데이터 래치들(DL2)로 덤프할 수 있다(③). 제2 페이지 데이터(P2_PD2)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제2 페이지 데이터(P2_PD2)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제16 시간(T16) 내지 제17 시간(T17)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 프로그램과 연관된 제3 페이지 데이터(P2_PD3)를 전송한다. 불휘발성 메모리(110)는 제3 페이지 데이터(P2_PD3)를 캐시 래치들(CL)에 로딩할 수 있다(④).
제17 시간(T17) 내지 제18 시간(T18)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제3 페이지 데이터(P2_PD3)를 제3 데이터 래치들(DL3)로 덤프할 수 있다(⑤). 제3 페이지 데이터(P2_PD3)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제3 페이지 데이터(P2_PD3)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
예시적으로, 제2 프로그램은 제1 내지 제3 페이지 데이터들(P2_PD1~P2_PD3)에 기반한 프로그램일 수 있다. 예를 들어, 제2 프로그램은 3의 레벨을 갖는 제3 메모리 블록(BLK3, 도 2 참조)의 메모리 셀들에 대한 프로그램일 수 있다. 제3 페이지 데이터(P2_PD3)가 불휘발성 메모리(110)에 로딩됨으로써, 제2 프로그램을 위한 모든 페이지 데이터가 불휘발성 메모리(110)에 로딩된다. 따라서, 불휘발성 메모리(110)는 제18 시간(T18)에, 제1 내지 제3 페이지 데이터들(P2_PD1~P2_PD3)에 기반하여 제2 프로그램을 시작할 수 있다(⑥).
제3 페이지 데이터(P2_PD3)의 덤프가 완료되면, 제18 시간(T18)에, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다. 제2 프로그램이 시작되면, 제18 시간(T18)에, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)로 유지된다. 불휘발성 메모리(110)의 내부 동작(IntOP)은 제2 프로그램이 완료될 때까지 비지 상태(즉, 로우 레벨)로 유지될 수 있다.
하나의 비트 라인(BL)에 연결된 데이터 래치들(DL1~DL4)의 수는 4개 이다. 제2 프로그램은 세 개의 페이지 데이터들(P2_PD1~P2_PD3)에 기반하여 수행된다. 제4 데이터 래치들(DL4)은 제2 프로그램과 연관된 페이지 데이터를 저장하지 않는 자유 데이터 래치이다. 따라서, 제2 프로그램이 수행되는 동안, 프로그램 동작 제어부(130)는 덤프 모드를 식별할 수 있다.
도 14는 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제4 예를 보여주는 타이밍도이다. 예시적으로, 도 14는 도 12에 도시된 동작의 후속 동작을 보여준다. 도 15는 도 14의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
제19 시간(T19) 및 제20 시간(T20)은 제2 프로그램이 시작된 후 그리고 제2 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제19 시간(T19) 내지 제20 시간(T20)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제3 프로그램과 연관된 제1 페이지 데이터(P3_PD1)를 전송한다. 불휘발성 메모리(110)는 제1 페이지 데이터(P3_PD1)를 캐시 래치들(CL)에 로딩할 수 있다(①).
제21 시간(T21)은 제2 프로그램이 시작된 후 그리고 제2 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제20 시간(T20) 내지 제21 시간(T21)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 덤프 커맨드(D2)를 전송한다. 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제1 페이지 데이터(P3_PD1)를 자유 데이터 래치들인 제4 데이터 래치들(DL4)로 덤프할 수 있다(②).
예를 들어, 불휘발성 메모리(110)는 제2 프로그램을 중지하고, 제1 페이지 데이터(P3_PD1)를 덤프할 수 있다. 불휘발성 메모리(110)의 프로그램은 미리 정해진 복수의 덤핑 포인트들을 가질 수 있다. 덤핑 포인트는 프로그램에 영향을 주지 않고, 프로그램을 중지 및 재개할 수 있는 포인트일 수 있다. 제2 덤프 커맨드(D2)가 수신되면, 불휘발성 메모리(110)는 가장 먼저 도달하는 덤핑 포인트에서 제2 프로그램을 중지하고, 제1 페이지 데이터(P3_PD1)를 덤프할 수 있다.
다른 예로서, 불휘발성 메모리(110)는 제2 프로그램이 수행되는 동안, 제1 페이지 데이터(P3_PD1)를 덤프할 수 있다. 불휘발성 메모리(110)의 프로그램은 미리 정해진 복수의 덤핑 포인트들을 가질 수 있다. 덤핑 포인트는 프로그램에 영향을 주지 않고, 프로그램과 병렬적으로 덤핑을 수행할 수 있는 포인트일 수 있다. 제2 덤프 커맨드(D2)가 수신되면, 불휘발성 메모리(110)는 가장 먼저 도달하는 덤핑 포인트에서 제2 프로그램과 병렬적으로, 제1 페이지 데이터(P3_PD1)를 덤프할 수 있다.
간결한 설명을 위하여, 프로그램이 중지되고, 덤핑이 수행되고, 그리고 프로그램이 재개되는 예를 참조하여 본 발명의 기술적 사상이 설명된다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않는다.
제2 덤프 커맨드(D2)는 프로그램(예를 들어, 제2 프로그램)이 수행되는 동안에 불휘발성 메모리(110)로 전송되는 커맨드이다. 예를 들어, 제2 덤프 커맨드(D2)는 프로그램이 수행되지 않을 때에 불휘발성 메모리(110)로 전송되는 덤프 커맨드(D1)와 다를 수 있다. 메모리 컨트롤러(120)는 레디 및 비지 신호(RnB)가 비지 상태(즉, 로우 레벨)를 가리키고, 덤프 모드가 식별된 경우, 제2 덤프 커맨드(D2)를 불휘발성 메모리(110)로 전송할 수 있다. 제2 덤프 커맨드(D2)가 수신되면, 불휘발성 메모리(110)는 덤프 모드를 식별할 수 있다. 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 저장된 데이터를 자유 데이터 래치인 제4 데이터 래치들(DL4)로 덤프할 수 있다.
다른 예로서, 제2 덤프 커맨드(D2)는 덤프 커맨드(D1)와 동일한 커맨드일 수 있다. 메모리 컨트롤러(120)는 레디 및 비지 신호(RnB)가 비지 상태(즉, 로우 레벨)를 가리키고, 덤프 모드가 식별된 경우, 제2 덤프 커맨드(D2)를 불휘발성 메모리(110)로 전송할 수 있다. 제2 덤프 커맨드(D2)가 수신되면, 불휘발성 메모리(110)는 내부 동작(IntOP) 및 데이터 래치들(DL1~DL4) 중 자유 데이터 래치들이 존재하는지에 따라 덤프 모드를 식별할 수 있다. 덤프 모드가 식별되면, 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 저장된 데이터를 자유 데이터 래치인 제4 데이터 래치들(DL4)로 덤프할 수 있다.
제1 페이지 데이터(P3_PD1)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제1 페이지 데이터(P3_PD1)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제1 페이지 데이터(P3_PD1)가 제4 데이터 래치들(DL4)로 덤프되면, 자유 데이터 래치가 존재하지 않는다. 따라서, 프로그램 동작 제어부(130)는 제1 페이지 데이터(P3_PD1)와 연관된 제2 덤프 커맨드(D2)가 불휘발성 메모리(110)로 전송되면, 덤프 모드가 정상 모드로 전환된 것으로 식별할 수 있다.
제1 페이지 데이터(P3_PD1)의 덤프가 완료되면, 캐시 래치들(CL)이 비워진다. 컨트롤러(120)로부터 데이터를 수신할 수 있으므로, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다.
제22 시간(T22)은 제2 프로그램이 시작된 후 그리고 제2 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제22 시간(T22)에, 제1 페이지 데이터(P3_PD2)의 덤프가 완료되면, 불휘발성 메모리(110)는 제2 프로그램을 재개한다.
제21 시간(T21) 내지 제22 시간(T22)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제3 프로그램과 연관된 제2 페이지 데이터(P3_PD2)를 전송한다. 메모리 컨트롤러(120)는 레디 상태(즉, 하이 레벨)로 전환된 레디 및 비지 신호(RnB)에 응답하여 제2 페이지 데이터(P3_PD2)를 전송할 수 있다. 불휘발성 메모리(110)는 제2 페이지 데이터(P3_PD2)를 캐시 래치들(CL)에 로딩할 수 있다(③). 제2 페이지 데이터(P3_PD2)가 캐시 래치들(CL)에 로딩되면, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다.
도 16은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제5 예를 보여주는 타이밍도이다. 예시적으로, 도 16은 도 14에 도시된 동작의 후속 동작을 보여준다. 도 17은 도 16의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
도 1, 도 16 및 도 17을 참조하면, 제23 시간(T23)에, 제2 프로그램이 완료된다. 제2 프로그램이 완료되면, 레디 및 비지 신호(RnB)는 레디 상태(즉, 하이 레벨)로 전환된다. 제2 프로그램이 완료되면, 불휘발성 메모리(110)의 내부 동작(IntOP)은 레디 상태(즉, 하이 레벨)에 대응할 수 있다.
레디 상태를 가리키는 레디 및 비지 신호(RnB)에 응답하여, 제24 시간(T24) 내지 제25 시간(T25)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제2 페이지 데이터(P3_PD2)를 제3 데이터 래치들(DL3)로 덤프할 수 있다(①). 제2 페이지 데이터(P3_PD2)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제2 페이지 데이터(P3_PD2)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
즉, 덤프 모드인 경우, 메모리 컨트롤러(120)는 제2 프로그램이 수행되는 동안, 제2 프로그램에 후속하는 제3 프로그램과 연관된 둘 이상의 페이지 데이터를 불휘발성 메모리(110)로 전송한다. 메모리 컨트롤러(120)는 제2 프로그램이 수행되는 동안 적어도 하나의 제2 덤프 커맨드(D2)를 불휘발성 메모리(110)로 전송한다. 결과적으로, 제2 프로그램이 수행되는 동안, 제3 프로그램과 연관된 둘 이상의 페이지 데이터들이 불휘발성 메모리(110)에 로딩되고, 제3 프로그램과 연관된 프로그램 동작의 수행 시간이 단축된다.
제3 프로그램은 제1 및 제2 페이지 데이터들(P3_PD1, P3_PD2)에 기반한 프로그램일 수 있다. 예를 들어, 제3 프로그램은 2의 레벨을 갖는 제2 메모리 블록(BLK2, 도 2 참조)의 메모리 셀들에 대한 프로그램일 수 있다. 제2 페이지 데이터(P3_PD2)가 불휘발성 메모리(110)에 로딩됨으로써, 제3 프로그램을 위한 모든 페이지 데이터가 불휘발성 메모리(110)에 로딩된다. 따라서, 불휘발성 메모리(110)는 제25 시간(T25)에, 제1 및 제2 페이지 데이터들(P3_PD1, P3_PD2)에 기반하여 제2 프로그램을 시작할 수 있다(②).
제2 페이지 데이터(P3_PD2)의 덤프가 완료되면, 제25 시간(T25)에, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다. 제3 프로그램이 시작되면, 제25 시간(T25)에, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)로 유지된다. 불휘발성 메모리(110)의 내부 동작(IntOP)은 제3 프로그램이 완료될 때까지 비지 상태(즉, 로우 레벨)로 유지될 수 있다.
하나의 비트 라인(BL)에 연결된 데이터 래치들(DL1~DL4)의 수는 4개 이다. 제3 프로그램은 두 개의 페이지 데이터들(P3_PD1, P3_PD2)에 기반하여 수행된다. 제1 및 제2 데이터 래치들(DL1, DL2)은 제3 프로그램과 연관된 페이지 데이터를 저장하지 않는 자유 데이터 래치이다. 따라서, 제3 프로그램이 수행되는 동안, 프로그램 동작 제어부(130)는 덤프 모드를 식별할 수 있다.
제26 시간(T26) 및 제27 시간(T27)은 제3 프로그램이 시작된 후 그리고 제3 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제26 시간(T26) 내지 제27 시간(T27)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제4 프로그램과 연관된 제1 페이지 데이터(P4_PD1)를 전송한다. 불휘발성 메모리(110)는 제1 페이지 데이터(P4_PD1)를 캐시 래치들(CL)에 로딩할 수 있다(③).
제28 시간(T28)은 제3 프로그램이 시작된 후 그리고 제3 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제27 시간(T27) 내지 제28 시간(T28)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 덤프 커맨드(D2)를 전송한다. 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제1 페이지 데이터(P4_PD1)를 자유 데이터 래치들인 제1 데이터 래치들(DL1)로 덤프할 수 있다(④). 예를 들어, 불휘발성 메모리(110)는 제3 프로그램을 중지하고 제1 페이지 데이터(P4_PD1)를 덤프할 수 있다.
제1 페이지 데이터(P4_PD1)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제1 페이지 데이터(P4_PD1)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제1 페이지 데이터(P4_PD1)의 덤프가 완료되면, 캐시 래치들(CL)이 비워진다. 컨트롤러(120)로부터 데이터를 수신할 수 있으므로, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다.
제1 페이지 데이터(P4_PD1)의 덤프가 완료되면, 불휘발성 메모리(110)는 제3 프로그램을 재개할 수 있다(⑤).
도 18은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제6 예를 보여주는 타이밍도이다. 예시적으로, 도 18은 도 16에 도시된 동작의 후속 동작을 보여준다. 도 19는 도 18의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
도 1, 도 18 및 도 19를 참조하면, 제29 시간(T29)에, 제3 프로그램이 완료된다. 제3 프로그램이 완료되면, 불휘발성 메모리(110)의 내부 동작(IntOP)은 레디 상태(즉, 하이 레벨)에 대응할 수 있다.
예시적으로, 제4 프로그램은 제1 페이지 데이터(P4_PD1)에 기반하여 수행될 수 있다. 예를 들어, 제4 프로그램은 1의 레벨을 갖는 제1 메모리 블록(BLK1, 도 2 참조)의 메모리 셀들에 대한 프로그램일 수 있다. 제4 프로그램에 필요한 제1 페이지 데이터(P4_PD1)는 이미 불휘발성 메모리(110)에 로딩되어 있다. 따라서, 제3 프로그램이 종료되면, 제29 시간(T29)에, 제4 프로그램이 시작될 수 있다(①). 제4 프로그램이 수행되는 동안, 프로그램 동작 제어부(130)는 덤프 모드를 식별할 수 있다.
덤프 모드인 경우, 메모리 컨트롤러(120)는 제3 프로그램이 수행되는 동안, 제3 프로그램에 후속하는 제4 프로그램과 연관된 모든 페이지 데이터들을 불휘발성 메모리(110)로 전송할 수 있다. 따라서, 제4 프로그램과 연관된 프로그램 동작의 수행 시간이 단축된다.
제30 시간(T30) 및 제31 시간(T31)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제30 시간(T30) 내지 제31 시간(T31)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제5 프로그램과 연관된 제1 페이지 데이터(P5_PD1)를 전송한다. 불휘발성 메모리(110)는 제1 페이지 데이터(P5_PD1)를 캐시 래치들(CL)에 로딩할 수 있다(②).
제32 시간(T32)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제31 시간(T31) 내지 제32 시간(T32)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 덤프 커맨드(D2)를 전송한다. 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제1 페이지 데이터(P5_PD1)를 자유 데이터 래치들인 제4 데이터 래치들(DL4)로 덤프할 수 있다(③). 예를 들어, 불휘발성 메모리(110)는 제4 프로그램을 중지하고 제1 페이지 데이터(P5_PD1)를 덤프할 수 있다.
제1 페이지 데이터(P5_PD1)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제1 페이지 데이터(P5_PD1)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제1 페이지 데이터(P5_PD1)의 덤프가 완료되면, 캐시 래치들(CL)이 비워진다. 컨트롤러(120)로부터 데이터를 수신할 수 있으므로, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다.
제1 페이지 데이터(P5_PD1)의 덤프가 완료되면, 제32 시간(T32)에, 불휘발성 메모리(110)는 제4 프로그램을 재개할 수 있다(④).
제33 시간(T33)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제32 시간(T32) 내지 제33 시간(T33)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제5 프로그램과 연관된 제2 페이지 데이터(P5_PD2)를 전송한다. 불휘발성 메모리(110)는 제2 페이지 데이터(P5_PD2)를 캐시 래치들(CL)에 로딩할 수 있다(④).
제34 시간(T34)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제33 시간(T33) 내지 제34 시간(T34)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 덤프 커맨드(D2)를 전송한다. 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제2 페이지 데이터(P5_PD2)를 자유 데이터 래치들인 제3 데이터 래치들(DL3)로 덤프할 수 있다(③). 예를 들어, 불휘발성 메모리(110)는 제4 프로그램을 중지하고 제2 페이지 데이터(P5_PD2)를 덤프할 수 있다.
제2 페이지 데이터(P5_PD2)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제2 페이지 데이터(P5_PD2)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제2 페이지 데이터(P5_PD2)의 덤프가 완료되면, 캐시 래치들(CL)이 비워진다. 컨트롤러(120)로부터 데이터를 수신할 수 있으므로, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다.
도 20은 도 5 내지 도 7을 참조하여 설명된 방법에 따라 프로그램이 수행되는 제6 예를 보여주는 타이밍도이다. 예시적으로, 도 20은 도 18에 도시된 동작의 후속 동작을 보여준다. 도 21 및 도 22는 도 20의 예가 수행될 때, 하나의 비트 라인에 연결된 캐시 래치(CL) 및 데이터 래치들(DL1~DL4)의 데이터 흐름을 보여주는 블록도이다.
도 1, 도 20 및 도 21을 참조하면, 제2 페이지 데이터(P5_PD2)의 덤프가 완료되면, 제35 시간(T35)에, 불휘발성 메모리(110)는 제4 프로그램을 재개할 수 있다(①).
제36 시간(T36)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제35 시간(T35) 내지 제36 시간(T36)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제5 프로그램과 연관된 제3 페이지 데이터(P5_PD3)를 전송한다. 불휘발성 메모리(110)는 제3 페이지 데이터(P5_PD3)를 캐시 래치들(CL)에 로딩할 수 있다(①).
제37 시간(T37)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제36 시간(T36) 내지 제37 시간(T37)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제2 덤프 커맨드(D2)를 전송한다. 제2 덤프 커맨드(D2)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제3 페이지 데이터(P5_PD3)를 자유 데이터 래치들인 제2 데이터 래치들(DL2)로 덤프할 수 있다(②). 예를 들어, 불휘발성 메모리(110)는 제4 프로그램을 중지하고 제3 페이지 데이터(P5_PD3)를 덤프할 수 있다.
제3 페이지 데이터(P5_PD3)가 제2 데이터 래치들(DL2)로 덤프되면, 자유 데이터 래치가 존재하지 않는다. 따라서, 프로그램 동작 제어부(130)는 제3 페이지 데이터(P5_PD3)와 연관된 제2 덤프 커맨드(D2)가 불휘발성 메모리(110)로 전송되면, 덤프 모드가 정상 모드로 전환된 것으로 식별할 수 있다.
제3 페이지 데이터(P5_PD3)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제3 페이지 데이터(P5_PD3)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
제3 페이지 데이터(P5_PD3)의 덤프가 완료되면, 캐시 래치들(CL)이 비워진다. 컨트롤러(120)로부터 데이터를 수신할 수 있으므로, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 레디 상태(즉, 하이 레벨)로 전환한다.
제3 페이지 데이터(P5_PD3)의 덤프가 완료되면, 제37 시간(T37)에, 불휘발성 메모리(110)는 제4 프로그램을 재개할 수 있다(③).
제38 시간(T38)은 제4 프로그램이 시작된 후 그리고 제4 프로그램이 완료되기 전의 임의의 시간일 수 있다. 제37 시간(T37) 내지 제38 시간(T38)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 제5 프로그램과 연관된 제4 페이지 데이터(P5_PD4)를 전송한다. 불휘발성 메모리(110)는 제4 페이지 데이터(P5_PD4)를 캐시 래치들(CL)에 로딩할 수 있다(③).
제39 시간(T39)에, 제4 프로그램이 완료된다. 제4 프로그램이 완료되면, 레디 및 비지 신호(RnB)는 레디 상태(즉, 하이 레벨)로 전환된다. 제4 프로그램이 완료되면, 불휘발성 메모리(110)의 내부 동작(IntOP)은 레디 상태(즉, 하이 레벨)에 대응할 수 있다.
도 1, 도 20 및 도 22를 참조하면, 레디 상태를 가리키는 레디 및 비지 신호(RnB)에 응답하여, 제40 시간(T40) 내지 제41 시간(T41)에, 메모리 컨트롤러(120)는 불휘발성 메모리(110)로 덤프 커맨드(D1)를 전송한다. 덤프 커맨드(D1)에 응답하여, 불휘발성 메모리(110)는 캐시 래치들(CL)에 로딩된 제4 페이지 데이터(P5_PD4)를 제1 데이터 래치들(DL1)로 덤프할 수 있다(①). 제4 페이지 데이터(P5_PD4)가 덤프되는 동안, 불휘발성 메모리(110)는 레디 및 비지 신호(RnB)를 비지 상태(즉, 로우 레벨)로 전환할 수 있다. 제4 페이지 데이터(P5_PD4)가 덤프되는 동안, 불휘발성 메모리(110)의 내부 동작(IntOP)은 비지 상태(즉, 로우 레벨)에 대응할 수 있다.
예시적으로, 제5 프로그램은 제1 내지 제4 페이지 데이터들(P5_PD1~P5_PD4)에 기반하여 수행될 수 있다. 예를 들어, 제5 프로그램은 4의 레벨(예를 들어, 최대 레벨)을 갖는 제4 메모리 블록(BLK4, 도 2 참조)의 메모리 셀들에 대한 프로그램일 수 있다. 제4 페이지 데이터(P5_PD4)의 로딩이 완료되면, 제41 시간(T41)에, 제5 프로그램이 시작될 수 있다(②). 자유 데이터 래치들이 존재하지 않으므로, 프로그램 동작 제어부(130)는 정상 모드를 식별할 수 있다.
상술된 바와 같이, 메모리 블록들(BLK1~BLKz)은 서로 다른 레벨을 가질 수 있다. 최대 레벨을 갖는 메모리 블록의 메모리 셀들에 대한 프로그램이 수행될 때, 정상 모드가 식별된다. 메모리 컨트롤러(120)는 정상 모드에서, 다음 프로그램에 사용될 하나의 페이지 데이터를 불휘발성 메모리(110)에 로딩한다. 최대 레벨보다 낮은 레벨을 갖는 메모리 블록의 메모리 셀들에 대한 프로그램이 수행될 때, 덤프 모드가 식별된다. 메모리 컨트롤러(120)는 덤프 모드에서, 다음 프로그램에 사용될 둘 이상의 페이지 데이터들을 불휘발성 메모리(110)에 로딩한다. 메모리 컨트롤러(120)는 적어도 하나의 덤프 커맨드를 불휘발성 메모리(110)로 전송한다. 즉, 프로그램이 수행되는 메모리 블록의 레벨에 따라 정상 모드 및 덤프 모드에 따른 후속 프로그램이 수행된다. 따라서, 향상된 동작 속도를 갖는 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법이 제공된다.
도 23은 덤프 포인트들의 예를 설명하기 위한 순서도이다. 예시적으로, 프로그램이 수행되는 과정이 도 23에 순서도로 도시되어 있다. 도 2, 도 3 및 도 23을 참조하면, S410 단계에서, 프로그램 전압(VPGM)이 인가된다. 불휘발성 메모리(110)는 복수의 워드 라인들(WL1~WLm) 중 어드레스(ADDR)에 대응하는 선택된 워드 라인에 프로그램 전압(VPGM)을 인가할 수 있다. 불휘발성 메모리(110)는 어드레스(ADDR)에 대응하지 않는 비선택된 워드 라인들에 프로그램 전압(VPASS)을 인가할 수 있다.
S420 단계에서, 검증 전압(VVER)이 인가된다. 불휘발성 메모리(110)는 복수의 워드 라인들(WL1~WLm) 중 어드레스(ADDR)에 대응하는 선택된 워드 라인에 검증 전압(VVER)을 인가할 수 있다. 불휘발성 메모리(110)는 어드레스(ADDR)에 대응하지 않는 비선택된 워드 라인들에 읽기 전압(VREAD)을 인가할 수 있다. 불휘발성 메모리(110)는 비트 라인들(BL1~BLn)을 전원 전압(VCC)으로 프리차지한 후에 비트 라인들(BL1~BLn)을 플로팅할 수 있다. 불휘발성 메모리(110)는 비트 라인들(BL1~BLn)의 전압들을 감지할 수 있다.
S430 단계에서, 프로그램 패스인지 판별된다. 불휘발성 메모리(110)는 비트 라인들(BL1~BLn)의 감지 결과에 따라, 프로그램 패스인지 판별할 수 있다. 비트 라인들(BL1~BLn)의 감지 결과가 프로그램 패스를 가리키면, 프로그램은 종료된다. 프비트 라인들(BL1~BLn)의 감지 결과가 프로그램 페일을 가리키면, S410 단계 내지 S430 단계가 다시 수행된다. 예를 들어, 프로그램 전압(VPGM)의 레벨이 증가된 후, S410 단계 내지 S430 단계가 다시 수행될 수 있다.
S410 단계 내지 S420 단계는 프로그램 루프를 형성할 수 있다. 즉, 반복적으로 수행되는 프로그램 루프들이 프로그램을 형성할 수 있다. 프로그램 루프들의 사이의 포인트들이 덤핑 포인트들로 사용될 수 있다. 즉, 불휘발성 메모리(110)에 제2 덤핑 커맨드(D2)가 수신되면, 불휘발성 메모리(110)는 현재 수행 중인 프로그램 루프를 완료하고, 덤핑을 수행할 수 있다. 덤핑이 완료되면, 불휘발성 메모리(110)는 다음 프로그램 루프를 시작할 수 있다. 불휘발성 메모리(110)에 제2 덤핑 커맨드(D2)가 수신되면, 불휘발성 메모리(110)는 비트 라인들(BL1~BLn)의 감지 결과에 따라 프로그램 패스 또는 프로그램 페일을 판별하고, 동시에 덤핑을 수행할 수 있다.
도 23을 참조하여 설명된 덤핑 포인트들은 예시적인 것이다. 본 발명의 기술적 사상에 따른 덤핑 포인트들은 도 23을 참조하여 설명된 예에 한정되지 않는다.
도 24는 본 발명의 다른 실시 예에 따른 메모리 블록(BLKb)을 보여주는 회로도이다. 도 24를 참조하면, 메모리 블록(BLKb)은 복수의 셀 스트링들(CS11~CS21, CS12~CS22)을 포함한다. 복수의 셀 스트링들(CS11~CS21, CS12~CS22)은 행 방향(row direction)및 열 방향(column direction)을 따라 배열되어, 행들 및 열들을 형성할 수 있다.
예를 들어, 행 방향(row direction)을 따라 배열된 셀 스트링들(CS11, CS12)은 제1 행을 형성하고, 행 방향(row direction)을 따라 배열된 셀 스트링들(CS21, CS22)은 제2 행을 형성할 수 있다. 열 방향(column direction)을 따라 배열된 셀 스트링들(CS11, CS21)은 제1 열을 형성하고, 열 방향(column direction)을 따라 배열된 셀 스트링들(CS12, CS22)은 제2 열을 형성할 수 있다.
각 셀 스트링은 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들은 접지 선택 트랜지스터들(GSTa, GSTb), 메모리 셀들(MC1~MC6), 그리고 스트링 선택 트랜지스터들(SSTa, SSTb)을 포함한다. 각 셀 스트링의 접지 선택 트랜지스터들(GSTa, GSTb), 메모리 셀들(MC1~MC6), 그리고 스트링 선택 트랜지스터들(SSTa, GSTb)은 셀 스트링들(CS11~CS21, CS12~CS22)이 행들 및 열들을 따라 배열되는 평면(예를 들어, 메모리 블록(BLKb)의 기판 상의 평면)과 수직한 높이 방향으로 적층될 수 있다.
최하단의 접지 선택 트랜지스터들(GSTa)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 접지 선택 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다.
예시적으로, 동일한 높이(또는 순서)의 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결되고, 서로 다른 높이(또는 순서)를 갖는 접지 선택 트랜지스터들은 서로 다른 접지 선택 라인들에 연결될 수 있다. 예를 들어, 제1 높이의 접지 선택 트랜지스터들(GSTa)은 제1 접지 선택 라인에 공통으로 연결되고, 제2 높이의 접지 선택 트랜지스터들(GSTb)은 제2 접지 선택 라인에 공통으로 연결될 수 있다.
예시적으로, 동일한 행의 접지 선택 트랜지스터들은 동일한 접지 선택 라인에 연결되고, 서로 다른 행의 접지 선택 트랜지스터들은 서로 다른 접지 선택 라인들에 연결될 수 있다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GSTa, GSTb)은 제1 접지 선택 라인에 연결되고, 제2 행의 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GSTa, GSTb)은 제2 접지 선택 라인에 연결될 수 있다.
기판(또는 접지 선택 트랜지스터들(GST))으로부터 동일한 높이(또는 순서)에 위치한 메모리 셀들은 하나의 워드 라인에 공통으로 연결되고, 서로 다른 높이(또는 순서)에 위치한 메모리 셀들은 서로 다른 워드 라인들(WL1~WL6)에 각각 연결될 수 있다. 예를 들어, 메모리 셀들(MC1)은 워드 라인(WL1)에 공통으로 연결된다. 메모리 셀들(MC2)은 워드 라인(WL2)에 공통으로 연결된다. 메모리 셀들(MC3)은 워드 라인(WL3)에 공통으로 연결된다. 메모리 셀들(MC4)은 워드 라인(WL4)에 공통으로 연결된다. 메모리 셀들(MC5)은 워드 라인(WL5)에 공통으로 연결된다. 메모리 셀들(MC6)은 워드 라인(WL6)에 공통으로 연결된다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 동일한 높이(또는 순서)의 제1 스트링 선택 트랜지스터들(SSTa)에서, 서로 다른 행의 제1 스트링 선택 트랜지스터들(SSTa)은 서로 다른 스트링 선택 라인들(SSL1a~SSL2a)에 각각 연결된다. 예를 들어, 셀 스트링들(CS11, CS12)의 제1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)에 공통으로 연결된다. 셀 스트링들(CS21, CS22)의 제1 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SSL2a)에 공통으로 연결된다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 동일한 높이(또는 순서)의 제2 스트링 선택 트랜지스터들(SSTb)에서, 서로 다른 행의 제2 스트링 선택 트랜지스터들(SSTb)은 서로 다른 스트링 선택 라인들(SSL1b~SSL2b)에 각각 연결된다. 예를 들어, 셀 스트링들(CS11, CS12)의 제2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)에 공통으로 연결된다. 셀 스트링들(CS21, CS22)의 제2 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)에 공통으로 연결된다.
즉, 서로 다른 행의 셀 스트링들은 서로 다른 스트링 선택 라인들에 연결된다. 동일한 행의 셀 스트링들의 동일한 높이(또는 순서)의 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인에 연결된다. 동일한 행의 셀 스트링들의 서로 다른 높이(또는 순서)의 스트링 선택 트랜지스터들은 서로 다른 스트링 선택 라인들에 연결된다.
예시적으로, 동일한 행의 셀 스트링들의 스트링 선택 트랜지스터들은 하나의 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제1 행의 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTa, SSTb)은 하나의 스트링 선택 라인에 공통으로 연결될 수 있다. 제2 행의 샐 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTa, SSTb)은 하나의 스트링 선택 라인에 공통으로 연결될 수 있다.
복수의 셀 스트링들(CS11~CS21, CS12~CS22)의 열들은 서로 다른 비트 라인들(BL1, BL2)에 각각 연결된다. 예를 들어, 제1 열의 셀 스트링들(CS11~CS21)의 스트링 선택 트랜지스터들(SSTb)은 비트 라인(BL1)에 공통으로 연결된다. 제2 열의 셀 스트링들(CS12~CS22)의 스트링 선택 트랜지스터들(SST)은 비트 라인(BL2)에 공통으로 연결된다.
도 24에 도시된 메모리 블록(BLKb)은 예시적인 것이다. 본 발명의 기술적 사상은 도 24에 도시된 메모리 블록(BLKb)에 한정되지 않는다. 예를 들어, 셀 스트링들의 행들의 수는 증가 또는 감소될 수 있다. 셀 스트링들의 행들의 수가 변경됨에 따라, 셀 스트링들의 행들에 연결되는 스트링 선택 라인들 또는 접지 선택 라인의 수, 그리고 하나의 비트 라인에 연결되는 셀 스트링들의 수 또한 변경될 수 있다.
셀 스트링들의 열들의 수는 증가 또는 감소될 수 있다. 셀 스트링들의 열들의 수가 변경됨에 따라, 셀 스트링들의 열들에 연결되는 비트 라인들의 수, 그리고 하나의 스트링 선택 라인에 연결되는 셀 스트링들의 수 또한 변경될 수 있다.
셀 스트링들의 높이는 증가 또는 감소될 수 있다. 예를 들어, 셀 스트링들 각각에 적층되는 접지 선택 트랜지스터들, 메모리 셀들 또는 스트링 선택 트랜지스터들의 수는 증가 또는 감소될 수 있다.
예시적으로, 쓰기 및 읽기는 셀 스트링들(CS11~CS21, CS12~CS22)의 행의 단위로 수행될 수 있다. 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해, 셀 스트링들(CS11~CS21, CS12~CS22)이 하나의 행 단위로 선택될 수 있다.
셀 스트링들(CS11~CS21, CS12~CS22)의 선택된 행에서, 쓰기 및 읽기는 워드 라인의 단위로 수행될 수 있다. 셀 스트링들(CS11~CS21, CS12~CS22)의 선택된 행에서, 선택된 워드 라인에 연결된 메모리 셀들이 프로그램될 수 있다.
도 25는 본 발명의 제 2 실시 예에 따른 메모리 시스템(200)을 보여주는 블록도이다. 도 25를 참조하면, 메모리 시스템(200)은 불휘발성 메모리(210) 및 메모리 컨트롤러(220)를 포함한다. 불휘발성 메모리(210)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 불휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(220)와 통신하도록 구성된다. 예시적으로, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(220)와 통신하는 것으로 도시되어 있다.
도 25에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록 메모리 시스템(200)이 변경될 수 있다.
메모리 컨트롤러(220)는 프로그램 동작 제어부(230)를 포함할 수 있다. 즉, 메모리 컨트롤러(220)는 불휘발성 메모리(210)에서 프로그램이 수행되는 동안 정상 모드 또는 덤프 모드를 식별할 수 있다. 메모리 컨트롤러(220)는 판별된 모드에 따라, 후속 프로그램과 연관된 페이지 데이터를 불휘발성 메모리(210)에 로딩할 수 잇다. 정상 모드에서, 메모리 컨트롤러(220)는 후속 프로그램과 연관된 하나의 페이지 데이터를 불휘발성 메모리(210)에 로딩할 수 있다. 덤프 모드에서, 메모리 컨트롤러(220)는 후속 프로그램과 연관된 둘 이상의 페이지 데이터들을 불휘발성 메모리(210)로 전송할 수 있다. 덤프 모드에서, 메모리 컨트롤러(220)는 후속 프로그램과 연관된 적어도 하나의 덤프 커맨드를 불휘발성 메모리(210)로 전송할 수 있다.
도 26은 본 발명의 실시 예에 따른 스토리지 모듈(300)을 보여주는 블록도이다. 도 26을 참조하면, 스토리지 모듈(300)은 불휘발성 메모리(310), 메모리 컨트롤러(320), 그리고 커넥터(340)를 포함한다.
메모리 컨트롤러(320)는 프로그램 동작 제어부(330)를 포함할 수 있다. 즉, 메모리 컨트롤러(320)는 불휘발성 메모리(310)에서 프로그램이 수행되는 동안 정상 모드 또는 덤프 모드를 식별할 수 있다. 메모리 컨트롤러(320)는 판별된 모드에 따라, 후속 프로그램과 연관된 페이지 데이터를 불휘발성 메모리(310)에 로딩할 수 잇다. 정상 모드에서, 메모리 컨트롤러(320)는 후속 프로그램과 연관된 하나의 페이지 데이터를 불휘발성 메모리(310)에 로딩할 수 있다. 덤프 모드에서, 메모리 컨트롤러(320)는 후속 프로그램과 연관된 둘 이상의 페이지 데이터들을 불휘발성 메모리(310)로 전송할 수 있다. 덤프 모드에서, 메모리 컨트롤러(320)는 후속 프로그램과 연관된 적어도 하나의 덤프 커맨드를 불휘발성 메모리(210)로 전송할 수 있다.
커넥터(340)는 스토리지 모듈(300)과 외부 장치를 연결할 수 있다. 커넥터(340)는 SATA (Serial AT Attachment), eSATA, PCI (Peripheral Component Interconnect), PCI-e, SCSI (Small Computer System Interface), USB (Universal Serial Bus), Mini USB, Micro USB, Firewire 등의 표준에 따른 소켓을 포함할 수 있다. 커넥터(340)는 PGA (Pin Grid Array), BGA (Ball Grid Array) 등과 같은 연결 수단을 포함할 수 있다.
스토리지 모듈(300)은 솔리드 스테이트 드라이브(SSD, Solid State Drive), PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 스토리지(UFS) 모듈, eMMC (embeded MMC) 모듈 등과 같은 다양한 스토리지 모듈을 형성할 수 있다.
도 27은 본 발명의 실시 예에 따른 컴퓨팅 장치(1000)를 보여주는 블록도이다. 도 27을 참조하면, 컴퓨팅 장치(1000)는 프로세서(1100), 메모리(1200), 스토리지(1300), 모뎀(1400), 그리고 사용자 인터페이스(1500)를 포함한다.
프로세서(1100)는 컴퓨팅 장치(1000)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(1100)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(1100)는 범용 컴퓨터에 사용되는 범용 프로세서, 특수 목적 컴퓨터에 사용되는 특수 목적 프로세서, 또는 모바일 컴퓨팅 장치에 사용되는 어플리케이션 프로세서일 수 있다.
메모리(1200)는 프로세서(1100)와 통신할 수 있다. 메모리(1200)는 프로세서(1100) 또는 컴퓨팅 장치(1000)의 메인 메모리일 수 있다. 프로세서(1100)는 메모리(1200)에 코드 또는 데이터를 임시로 저장할 수 있다. 프로세서(1100)는 메모리(1200)를 이용하여 코드를 실행하고, 데이터를 처리할 수 있다. 프로세서(1100)는 메모리(1200)를 이용하여 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 실행할 수 있다. 프로세서(1100)는 메모리(1200)를 이용하여 컴퓨팅 장치(1000)의 제반 동작을 제어할 수 있다. 메모리(1200)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 메모리(120)는 랜덤 액세스 메모리로 구성될 수 있다.
스토리지(130)는 프로세서(1100)와 통신할 수 있다. 스토리지(1300)는 장기적으로 보존되어야 하는 데이터를 저장할 수 있다. 즉, 프로세서(1100)는 장기적으로 보전되어야 하는 데이터를 스토리지(1300)에 저장할 수 있다. 스토리지(1300)는 컴퓨팅 장치(1000)를 구동하기 위한 부트 이미지를 저장할 수 있다. 스토리지(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들의 소스 코드들을 저장할 수 있다. 스토리지(1300)는 운영체제, 어플리케이션과 같은 다양한 소프트웨어들에 의해 처리된 데이터를 저장할 수 있다.
예시적으로, 프로세서(1100)는 스토리지(1300)에 저장된 소스 코드들을 메모리(1200)에 로드하고, 메모리(1200)에 로드된 코드들을 실행함으로써, 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 구동할 수 있다. 프로세서(1100)는 스토리지(1300)에 저장된 데이터를 메모리(1200)에 로드하고, 메모리(1200)에 로드된 데이터를 처리할 수 있다. 프로세서(1100)는 메모리(1200)에 저장된 데이터 중 장기적으로 보존하고자 하는 데이터를 스토리지(1300)에 저장할 수 있다.
스토리지(1300)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지(1300)는 도 26을 참조하여 설명된 스토리지 모듈(300)을 포함할 수 있다. 컴퓨팅 장치(1000)에 도 26을 참조하여 설명된 스토리지 모듈(300)이 채용되면, 프로세서(1100)가 스토리지(1300)에 데이터를 기입하는 속도가 획기적으로 개선된다. 따라서, 컴퓨팅 장치(1000)의 동작 성능이 향상된다.
모뎀(1400)은 프로세서(1100)의 제어에 따라 외부 장치와 통신을 수행할 수 있다. 예를 들어, 모뎀(1400)은 외부 장치와 유선 또는 무선 통신을 수행할 수 있다. 모뎀(140)은 LTE (Long Term Evolution), 와이맥스(WiMax), GSM (Global System for Mobile communication), CDMA (Code Division Multiple Access), 블루투스(Bluetooth), NFC (Near Field Communication), 와이파이(WiFi), RFID (Radio Frequency IDentification) 등과 같은 다양한 무선 통신 방식들, 또는 USB (Universal Serial Bus), SATA (Serial AT Attachment), SCSI (Small Computer System Interface), 파이어와이어(Firewire), PCI (Peripheral Component Interconnection) 등과 같은 다양한 유선 통신 방식들 중 적어도 하나에 기반하여 통신을 수행할 수 있다.
사용자 인터페이스(1500)는 프로세서(1100)의 제어에 따라 사용자와 통신할 수 있다. 예를 들어, 사용자 인터페이스(1500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(150)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
컴퓨팅 장치(1000)는 스마트 폰, 스마트 패드, 스마트 카메라 등과 같은 모바일 컴퓨팅 장치를 형성할 수 있다. 컴퓨팅 장치(1000)는 개인용 컴퓨터, 노트북 컴퓨터, 스마트 텔레비전 등과 같은 다양한 장치들을 형성할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100; 메모리 시스템
110; 불휘발성 메모리
120; 메모리 컨트롤러
130; 프로그램 동작 제어부
111; 메모리 셀 어레이
113; 어드레스 디코더 회로
115; 페이지 버퍼 회로
117; 데이터 입출력 회로
119; 제어 로직 회로
BLKa~BLKz; 메모리 블록들
WL1~WLm; 워드 라인들
BL1~BLn; 비트 라인들
PB1~PBn; 페이지 버퍼들
L1~Ln; 데이터 라인들
CL; 캐시 래치
DL1~DL4; 데이터 래치들

Claims (10)

  1. 복수의 메모리 셀들 및 상기 복수의 메모리 셀들에 각각 연결된 복수의 비트 라인들을 포함하는 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법에 있어서:
    제1 프로그램에 사용될 데이터를 로딩하는 단계;
    상기 로딩된 데이터에 기반하여, 상기 복수의 메모리 셀들에 상기 제1 프로그램을 시작하는 단계; 그리고
    상기 제1 프로그램이 완료되기 전에, 상기 제1 프로그램에 후속하는 제2 프로그램에 사용될 제1 페이지 데이터 및 제2 페이지 데이터를 포함하는 적어도 두 개의 페이지 데이터를 로딩하는 단계를 포함하고,
    상기 제1 페이지 데이터 및 상기 제2 페이지 데이터는 하나의 메모리 셀에 프로그램되는 제1 비트 및 제2 비트에 각각 대응하는 프로그램 방법.
  2. 제1 항에 있어서,
    상기 불휘발성 메모리는, 상기 복수의 비트 라인들에 각각 연결되는 복수의 제1 데이터 래치들, 상기 복수의 비트 라인들에 각각 연결되는 복수의 제2 데이터 래치들, 그리고 상기 복수의 비트 라인들에 각각 대응하는 복수의 캐시 래치들을 더 포함하고,
    상기 제1 프로그램에 사용될 상기 데이터를 로딩하는 단계는,
    상기 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계; 그리고
    상기 복수의 캐시 래치들에 로딩된 상기 데이터를 상기 복수의 제1 데이터 래치들로 덤프(dump)하는 단계를 포함하는 프로그램 방법.
  3. 제2 항에 있어서,
    상기 적어도 두 개의 페이지 데이터를 로딩하는 단계는,
    상기 제1 프로그램이 수행되는 동안, 상기 제1 페이지 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계; 그리고
    상기 제1 프로그램이 수행되는 동안, 상기 복수의 캐시 래치들에 로딩된 상기 제1 페이지 데이터를 상기 복수의 제2 데이터 래치들로 덤프하는 단계를 포함하는 프로그램 방법.
  4. 제3 항에 있어서,
    상기 적어도 두 개의 페이지 데이터를 로딩하는 단계는,
    상기 제1 프로그램이 수행되는 동안 그리고 상기 제1 페이지 데이터가 상기 복수의 제2 데이터 래치들로 덤프된 후에, 상기 제2 페이지 데이터를 상기 복수의 캐시 래치들에 로딩하는 단계를 더 포함하는 프로그램 방법.
  5. 제4 항에 있어서,
    상기 제1 프로그램이 완료된 후에, 상기 복수의 캐시 래치들에 로딩된 상기 제2 페이지 데이터를 상기 복수의 제1 데이터 래치들로 덤프하는 단계; 그리고
    상기 제2 페이지 데이터가 덤프된 후에, 상기 복수의 제1 데이터 래치들에 저장된 상기 제2 페이지 데이터 및 상기 복수의 제2 데이터 래치들에 저장된 상기 제1 페이지 데이터에 기반하여 상기 제2 프로그램을 시작하는 단계를 더 포함하는 프로그램 방법.
  6. 제4 항에 있어서,
    상기 불휘발성 메모리는 상기 복수의 비트 라인들에 각각 연결되는 복수의 제3 데이터 래치들을 더 포함하고,
    상기 적어도 두 개의 페이지 데이터를 로딩하는 단계는,
    상기 제1 프로그램이 수행되는 동안, 상기 복수의 캐시 래치들에 로딩된 상기 제2 페이지 데이터를 상기 복수의 제3 데이터 래치들로 덤프하는 단계를 더 포함하는 프로그램 방법.
  7. 복수의 메모리 셀들, 상기 복수의 메모리 셀들에 연결되는 복수의 비트 라인들, 상기 복수의 비트 라인들에 연결되는 복수의 데이터 래치들, 그리고 상기 복수의 비트 라인들에 각각 대응하는 복수의 캐시 래치들을 포함하는 불휘발성 메모리; 그리고
    상기 복수의 메모리 셀들에 프로그램될 데이터를 상기 불휘발성 메모리로 전송하고, 상기 불휘발성 메모리가 상기 데이터를 상기 복수의 메모리 셀들에 프로그램하도록 제어하는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는, 정상 모드 및 덤프 모드 중 하나를 선택하고, 상기 정상 모드 시에 상기 복수의 메모리 셀들의 제1 프로그램이 완료되기 전에 상기 제1 프로그램에 후속하는 제2 프로그램에 사용될 페이지 데이터를 상기 불휘발성 메모리로 전송하고, 상기 덤프 모드 시에 상기 제2 프로그램에 사용될 상기 페이지 데이터를 상기 제1 프로그램이 완료되기 전에 덤프 커맨드와 함께 상기 불휘발성 메모리로 전송하고,
    상기 불휘발성 메모리는, 상기 메모리 컨트롤러로부터 수신되는 페이지를 상기 복수의 캐시 래치들에 저장하고, 상기 메모리 컨트롤러로부터 상기 덤프 커맨드가 수신될 때 상기 복수의 캐시 래치들에 저장된 데이터를 상기 제1 프로그램이 완료되기 전에 상기 복수의 데이터 래치들로 덤프하도록 구성되는 메모리 시스템.
  8. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 불휘발성 메모리의 상기 복수의 메모리 셀들 중 제1 메모리 셀들의 각 메모리 셀에 i 개의 비트들을 프로그램하고, 상기 복수의 메모리 셀들 중 제2 메모리 셀들의 각 메모리 셀에 상기 i 개 보다 적은 수의 비트들을 프로그램하고,
    상기 메모리 컨트롤러는, 상기 프로그램이 상기 제1 메모리 셀들에서 수행될 때 상기 정상 모드를 선택하고, 상기 프로그램이 상기 제2 메모리 셀들에서 수행될 때 상기 덤프 모드를 선택하는 메모리 시스템.
  9. 제7 항에 있어서,
    상기 메모리 컨트롤러는, 상기 프로그램이 수행되는 동안 상기 복수의 비트 라인들에 연결된 상기 복수의 데이터 래치들 중 상기 데이터를 저장하지 않는 데이터 래치들이 존재하지 않을 때 상기 정상 모드를 선택하고, 상기 데이터를 저장하지 않는 데이터 래치들이 존재할 때 상기 덤프 모드를 선택하는 메모리 시스템.
  10. 제7 항에 있어서,
    상기 불휘발성 메모리는 상기 프로그램이 수행되는 동안 복수의 덤프 포인트들을 갖고, 상기 프로그램이 수행되는 동안 상기 메모리 컨트롤러로부터 상기 덤프 커맨드가 수신되면 가장 가까운 덤프 포인트에서 상기 복수의 캐시 래치들에 저장된 데이터를 상기 복수의 데이터 래치들로 덤프하도록 구성되는 메모리 시스템.
KR1020140010629A 2014-01-28 2014-01-28 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법 KR102187521B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140010629A KR102187521B1 (ko) 2014-01-28 2014-01-28 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법
US14/526,661 US9607688B2 (en) 2014-01-28 2014-10-29 Memory system including nonvolatile memory and memory controller and programming method for programming data into nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140010629A KR102187521B1 (ko) 2014-01-28 2014-01-28 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법

Publications (2)

Publication Number Publication Date
KR20150090369A KR20150090369A (ko) 2015-08-06
KR102187521B1 true KR102187521B1 (ko) 2020-12-08

Family

ID=53679639

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140010629A KR102187521B1 (ko) 2014-01-28 2014-01-28 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법

Country Status (2)

Country Link
US (1) US9607688B2 (ko)
KR (1) KR102187521B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9799402B2 (en) * 2015-06-08 2017-10-24 Samsung Electronics Co., Ltd. Nonvolatile memory device and program method thereof
KR102396435B1 (ko) * 2015-08-11 2022-05-11 삼성전자주식회사 불휘발성 메모리 장치, 버퍼 메모리 및 컨트롤러를 포함하는 스토리지 장치를 포함하는 컴퓨팅 장치의 동작 방법
CN107045892B (zh) * 2015-11-26 2023-08-29 三星电子株式会社 非易失性存储器和包括非易失性存储器的存储装置
KR102606468B1 (ko) * 2015-11-26 2023-11-29 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치에 데이터를 프로그램 하는 프로그램 방법
KR102470606B1 (ko) 2015-11-26 2022-11-28 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
KR102639697B1 (ko) * 2017-01-09 2024-02-21 삼성전자주식회사 비휘발성 메모리 장치 및 그 프로그램 방법
JP6856400B2 (ja) * 2017-02-20 2021-04-07 キオクシア株式会社 半導体記憶装置及びメモリシステム
KR20200034312A (ko) * 2018-09-21 2020-03-31 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2022510720A (ja) * 2018-12-10 2022-01-27 長江存儲科技有限責任公司 フラッシュメモリのマルチパスプログラミングのための先読み技法
KR20210155660A (ko) 2020-06-16 2021-12-23 에스케이하이닉스 주식회사 메모리 장치 및 이의 제어 방법
JP2023038769A (ja) * 2021-09-07 2023-03-17 キオクシア株式会社 半導体記憶装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020126531A1 (en) * 2000-03-08 2002-09-12 Koji Hosono Non-volatile semiconductor memory
US20100074011A1 (en) * 2008-09-23 2010-03-25 Samsung Electronics Co., Ltd. Non-volatile memory device and page buffer circuit thereof
US20130132644A1 (en) 2011-11-23 2013-05-23 Samsung Electronics Co., Ltd. Method of programming a nonvolatile memory device
US20130176783A1 (en) 2012-01-06 2013-07-11 Makoto Senoo Nonvolatile semiconductor memory device and write-in method thereof
US8570801B2 (en) 2010-06-04 2013-10-29 Hynix Semiconductor Inc. Method of programming a semiconductor memory device

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970005645B1 (ko) 1994-10-01 1997-04-18 삼성전자 주식회사 불휘발성 반도체 메모리의 부분 프로그램을 위한 데이터 로딩회로
US5603041A (en) 1994-12-13 1997-02-11 International Business Machines Corporation Method and system for reading from a m-byte memory utilizing a processor having a n-byte data bus
KR100609568B1 (ko) 2004-07-15 2006-08-08 에스티마이크로일렉트로닉스 엔.브이. 비휘발성 메모리 장치의 페이지 버퍼 및 이를 이용한프로그램 방법과 독출 방법
US7158421B2 (en) 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
KR100672148B1 (ko) 2005-02-17 2007-01-19 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 그것의 페이지 버퍼 동작 방법
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
JP2010257540A (ja) 2009-04-27 2010-11-11 Toshiba Corp 不揮発性半導体記憶装置
JP2012109403A (ja) 2010-11-17 2012-06-07 Elpida Memory Inc 半導体装置及びその制御方法
KR20120091648A (ko) 2011-02-09 2012-08-20 삼성전자주식회사 비휘발성 메모리, 이를 포함하는 시스템, 및 이의 프로그램 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020126531A1 (en) * 2000-03-08 2002-09-12 Koji Hosono Non-volatile semiconductor memory
US20100074011A1 (en) * 2008-09-23 2010-03-25 Samsung Electronics Co., Ltd. Non-volatile memory device and page buffer circuit thereof
US8570801B2 (en) 2010-06-04 2013-10-29 Hynix Semiconductor Inc. Method of programming a semiconductor memory device
US20130132644A1 (en) 2011-11-23 2013-05-23 Samsung Electronics Co., Ltd. Method of programming a nonvolatile memory device
US20130176783A1 (en) 2012-01-06 2013-07-11 Makoto Senoo Nonvolatile semiconductor memory device and write-in method thereof

Also Published As

Publication number Publication date
US20150213895A1 (en) 2015-07-30
US9607688B2 (en) 2017-03-28
KR20150090369A (ko) 2015-08-06

Similar Documents

Publication Publication Date Title
KR102187521B1 (ko) 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법
US10102910B2 (en) Nonvolatile memory device with first and second precharge circuit
US9690654B2 (en) Operation method of nonvolatile memory system
KR102249810B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR102285462B1 (ko) 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템의 동작 방법
KR101903095B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 컨트롤러의 동작 방법
KR102333743B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 동작 방법
KR102470606B1 (ko) 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
US9640264B2 (en) Memory system responsive to flush command to store data in fast memory and method of operating memory system
KR20170036964A (ko) 불휘발성 메모리 시스템의 동작 방법
US20210141532A1 (en) Storage device and method of operating the same
US9030878B2 (en) Semiconductor memory device including a plurality of cell strings, memory system including the same, and control method thereof
US11289165B2 (en) Memory device and method of operating the same
US20190318786A1 (en) Storage device and method of operating the same
KR102272248B1 (ko) 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법
KR20160016007A (ko) 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 구동 방법
US9552896B2 (en) Memory controller and method of reading data from nonvolatile memory by memory controller
US11650927B2 (en) Memory device with a training buffer and method of operating the same
KR20200046495A (ko) 메모리 시스템 및 그것의 동작방법
US11314652B2 (en) Memory controller and method of operating the same
KR20230031696A (ko) 메모리 장치 및 그것의 동작 방법
KR20170062351A (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치에 데이터를 프로그램 하는 프로그램 방법
KR20200136183A (ko) 스토리지 장치 및 그것의 동작 방법
US20230317168A1 (en) Memory device and method of operating the same

Legal Events

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