KR102012740B1 - 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법 - Google Patents

복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법 Download PDF

Info

Publication number
KR102012740B1
KR102012740B1 KR1020120078315A KR20120078315A KR102012740B1 KR 102012740 B1 KR102012740 B1 KR 102012740B1 KR 1020120078315 A KR1020120078315 A KR 1020120078315A KR 20120078315 A KR20120078315 A KR 20120078315A KR 102012740 B1 KR102012740 B1 KR 102012740B1
Authority
KR
South Korea
Prior art keywords
memory
buffer
program
data
area
Prior art date
Application number
KR1020120078315A
Other languages
English (en)
Other versions
KR20140011667A (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 KR1020120078315A priority Critical patent/KR102012740B1/ko
Priority to US13/945,460 priority patent/US9147475B2/en
Publication of KR20140011667A publication Critical patent/KR20140011667A/ko
Application granted granted Critical
Publication of KR102012740B1 publication Critical patent/KR102012740B1/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
    • 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
    • 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/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5622Concurrent multilevel programming of more than one cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

본 발명의 실시 예에 따른 저장 장치는, 각각 제 1 메모리 영역과 제 2 메모리 영역으로 구분되는 불휘발성 메모리 셀들을 포함하는 복수의 메모리 칩들, 그리고 부로부터 제공되는 데이터를 버퍼링하고, 버퍼링된 데이터를 상기 제 1 메모리 영역에 저장하는 버퍼 프로그램 동작과, 상기 제 1 메모리 영역에 저장된 데이터를 상기 제 2 메모리 영역에 기입하는 메인 프로그램 동작을 수행하도록 상기 복수의 메모리 칩들을 제어하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 복수의 메모리 칩들 중 제 1 메모리 칩의 메인 프로그램 동작 동안에 제 2 메모리 칩에 기입될 데이터를 버퍼링한다.

Description

복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법{STORAGE DEVICE COMPRISING NON-VOLATILE MEMORY CHIPS AND CONTROL METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다.
불휘발성 반도체 메모리 장치로는 마스크 롬(Mask read-only memory, MROM), 프로그램 가능한 롬(Programmable read-only memory, PROM), 소거 및 프로그램 가능한 롬(Erasable programmable read-only memory, EPROM), 전기적으로 소거 및 프로그램 가능한 롬(Electrically erasable programmable read-only memory, EEPROM) 등이 있다.
불휘발성 메모리 장치의 대표적인 예로 플래시 메모리 장치가 있다. 플래시 메모리 장치는 컴퓨터, 휴대폰, PDA, 디지털카메라, 캠코더, 보이스 리코더, MP3 플레이어, 개인용 휴대 단말기(PDA), 휴대용 컴퓨터(Handheld PC), 게임기, 팩스, 스캐너, 프린터 등(이하, '호스트'라 함)과 같은 정보기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다.
최근 들어 메모리 장치에 대한 고용량화 요구의 증가에 따라, 하나의 메모리 셀에 멀티 비트를 저장하는 멀티 레벨 셀(Multi-Level Cell: MLC) 또는 멀티-비트 메모리 장치들이 보편화되고 있다. 더불어, 고용량화를 위해서 하나의 패키지에 복수의 메모리 장치들이 탑재되는 멀티-칩 패키지가 일반화되고 있다.
본 발명의 목적은 멀티-칩 불휘발성 메모리를 포함하는 저장 장치의 성능을 높이기 위한 제어 방법을 제공하는 데 있다.
상술한 목적을 달성하기 위한 본 발명의 실시 예에 따른 저장 장치는, 각각 제 1 메모리 영역과 제 2 메모리 영역으로 구분되는 불휘발성 메모리 셀들을 포함하는 복수의 메모리 칩들, 그리고 부로부터 제공되는 데이터를 버퍼링하고, 버퍼링된 데이터를 상기 제 1 메모리 영역에 저장하는 버퍼 프로그램 동작과, 상기 제 1 메모리 영역에 저장된 데이터를 상기 제 2 메모리 영역에 기입하는 메인 프로그램 동작을 수행하도록 상기 복수의 메모리 칩들을 제어하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는 상기 복수의 메모리 칩들 중 제 1 메모리 칩의 메인 프로그램 동작 동안에 제 2 메모리 칩에 기입될 데이터를 버퍼링한다.
이 실시 예에 있어서,
상술한 목적을 달성하기 위한 각각 싱글 레벨 셀 방식으로 관리되는 버퍼 영역과 멀티 레벨 셀 방식으로 관리되는 메인 영역을 포함하는 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치의 제어 방법은, 외부에서 제공되는 데이터를 버퍼 메모리에 저장하는 버퍼링 단계, 상기 버퍼 메모리에 버퍼링된 데이터를 제 1 메모리 칩의 버퍼 영역에 기입하는 버퍼 프로그램 단계, 그리고 제 2 메모리 칩의 버퍼 영역에 저장된 복수의 페이지를 상기 제 2 메모리 칩의 메인 영역에 기입하는 메인 프로그램 단계를 포함하되, 상기 버퍼링 단계 또는 상기 버퍼 프로그램 단계는 상기 메인 프로그램 단계와 중첩되어 수행된다.
본 발명의 실시 예에 따른 저장 장치에 따르면 시퀀셜 데이터에 대한 쓰기 성능을 획기적으로 높일 수 있다.
도 1은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다.
도 2는 도 1의 온칩 버퍼 프로그램(OBP)을 간략히 보여주는 블록도이다.
도 3은 도 2의 메인 영역에 대한 프로그램 방법을 단계적으로 보여주는 도면이다.
도 4는 본 발명의 일 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 5a 및 도 5b는 도 4의 저장 장치의 동작을 간략히 보여주는 타이밍도이다.
도 6a 및 도 6b는 호스트 접근 가능 구간과 호스트 접근 불가 구간에서 발생하는 메모리 컨트롤러와 메모리 칩의 동작을 각각 보여주는 타이밍도이다.
도 7은 본 발명의 다른 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 8a 및 도 8b는 도 7의 저장 장치의 동작을 간략히 보여주는 타이밍도이다.
도 9는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 프로그램 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따른 성능 향상의 효과를 가시적으로 보여주는 그래프이다.
도 11은 본 발명의 또 다른 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 12는 셀 어레이를 구성하는 메모리 블록의 구조를 보여주는 사시도이다.
도 13은 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(이하, SSD)를 포함하는 사용자 장치를 보여주는 블록도이다.
도 14는 본 발명의 다른 실시 예에 따른 메모리 시스템을 예시적으로 보여주는 블록도이다.
도 15는 본 발명의 다른 실시 예에 따른 데이터 저장 장치를 예시적으로 보여주는 블록도이다.
도 16은 본 발명에 따른 저장 장치 및 그것을 포함하는 컴퓨팅 시스템의 구성을 보여주는 도면이다.
도 17은 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다. 동일한 구성 요소들은 동일한 참조번호를 이용하여 인용될 것이다. 유사한 구성 요소들은 유사한 참조번호들을 이용하여 인용될 것이다. 아래에서 설명될 본 발명에 따른 플래시 메모리 장치의 회로 구성과, 그것에 의해 수행되는 읽기 동작은 예를 들어 설명한 것에 불과하며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다.
도 1은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 보여주는 블록도이다. 도 1을 참조하면, 불휘발성 메모리 장치(100)의 셀 어레이(110)는 버퍼 영역(112)과 메인 영역(114)을 포함한다.
셀 어레이(110)는 워드 라인들(WLs) 또는 선택 라인들(SSL, GSL)을 통해 행 디코더(120)에 연결된다. 셀 어레이(110)는 비트 라인(BL)을 통해서 페이지 버퍼(130)에 연결된다. 셀 어레이(110)는 복수의 낸드형 셀 스트링들(NAND Cell Strings)을 포함한다. 특히, 셀 어레이(110)를 구성하는 메모리 영역은 버퍼 영역(112)과 메인 영역(114)으로 크게 분류될 수 있다. 프로그램 동작시, 먼저 데이터는 버퍼 영역(112)에 기입된 후, 메인 영역(114)에 프로그램된다. 버퍼 영역(112)에 데이터를 프로그램하는 동작을 버퍼 프로그램 동작, 그리고 메인 영역(114)에 데이터를 프로그램하는 동작을 메인 프로그램 동작이라 칭하기로 한다.
메인 프로그램 동작은 버퍼 메모리 영역(112)에 저장된 데이터와 관련된 어드레스 정보에 따라 수행될 것이다. 예시적으로, 버퍼 영역(112)에 대한 최소 프로그램 단위와 메인 영역(114)에 대한 최소 프로그램 단위는 프로그램 방식, 셀 당 저장되는 데이터 비트 수 등에 따라 다양하게 결정될 수 있다. 본 발명의 실시 예에 따르면, 버퍼 영역(112)에 대한 최소 프로그램 단위와 메인 영역(114)에 대한 최소 프로그램 단위는 서로 다를 것이다.
본 발명의 실시 예에 따르면, 셀 어레이(110)의 메모리 블록들은 적어도 버퍼 영역(112)과 메인 영역(114)으로 구분될 것이다. 여기에서, 메모리 영역들(112 및 114)은 물리적인 것이 아니라 논리적으로 구분될 수 있음은 잘 이해될 것이다. 즉, 메모리 영역들(112 및 114)은 논리적으로 가변 가능할 것이다. 버퍼 영역(112)에 속한 메모리 블록들은 메인 영역(114)에 속한 메모리 블록들과 다른 방식으로 프로그램될 것이다. 예를 들면, 버퍼 영역(112)에 속한 메모리 블록들은 싱글 레벨 셀(SLC) 프로그램 방식(이하, SLC 프로그램 방식이라 칭함)에 따라 프로그램될 수 있다. 반면, 메인 영역(114)에 속한 메모리 블록들은 멀티 레벨 셀(MLC) 프로그램 방식(이하, MLC 프로그램 방식이라 칭함)에 따라 프로그램될 수 있을 것이다.
다른 예로써, 버퍼 영역(112)에 속한 메모리 블록들과 메인 영역(114)에 속한 메모리 블록들은 MLC 프로그램 방식에 따라 프로그램될 것이다. 예를 들면, 버퍼 영역(112)에 속한 메모리 셀들 각각은 2-비트 데이터를 저장하고, 메인 영역(114)에 속한 메모리 셀들 각각은 N-비트 데이터들(N은 3 또는 그보다 큰 정수)을 저장할 것이다. 또한, 버퍼 영역(112)에 속한 메모리 셀들 각각은 메인 영역(114)에 속한 메모리 셀들 각각에 저장되는 N-비트(N은 3 또는 그보다 큰 정수)보다 작은 수의 데이터 비트들을 저장할 것이다.
행 디코더(120)는 어드레스(ADD)에 응답하여 셀 어레이(110)의 메모리 블록들 중 어느 하나를 선택할 수 있다. 행 디코더(120)는 선택된 메모리 블록의 워드 라인들 중 어느 하나를 선택할 수 있다. 행 디코더(120)는 선택된 메모리 블록의 워드 라인들에 워드 라인 전압(VWL)을 전달한다. 행 디코더(120)는 선택된 메모리 블록의 선택 라인들(예를 들면, SSL이나 GSL)에 선택 신호들을 전달한다. 행 디코더(120)는 선택 워드 라인(Selected WL)에 프로그램 전압(Vpgm)과 검증 전압(Vvfy)을, 비선택 워드 라인(Unselected WL)에는 패스 전압(Vpass)을 전달할 수 있다.
페이지 버퍼(130)는 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작한다. 프로그램 동작시, 페이지 버퍼(130)는 셀 어레이(110)의 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 전달한다. 읽기 동작시, 페이지 버퍼(130)는 선택된 메모리 셀에 저장된 데이터를 비트 라인을 통해서 감지한다. 페이지 버퍼(130)는 감지된 데이터를 래치하여 외부로 출력할 수 있다.
입출력 버퍼(140)는 프로그램 동작시에 입력받는 쓰기 데이터를 페이지 버퍼 (130)에 전달한다. 입출력 버퍼(140)는 읽기 동작시에 페이지 버퍼(130)로부터 제공되는 읽기 데이터를 외부로 출력한다. 입출력 버퍼(140)는 입력되는 어드레스 또는 명령어를 제어 로직(150)이나 행 디코더(120)에 전달한다.
제어 로직(150)은 입출력 버퍼(140)로부터 전달되는 명령어(CMD) 및 어드레스(ADD)에 응답하여 페이지 버퍼(130)를 제어한다. 제어 로직(150)은 입출력 버퍼(1450)를 통해서 제공되는 쓰기 명령, 읽기 명령, 소거 명령에 응답하여 선택된 메모리 영역을 액세스하기 위한 제어 동작을 수행한다.
본 발명의 실시 예에 따르면, 불휘발성 메모리 장치(100)는 버퍼 영역(112)에 저장된 데이터를 다시 메인 영역(114)으로 프로그램할 수 있다. 이러한 프로그램 동작을 온칩 버퍼 프로그램(On-Chip Buffered Programming: 이하, OBP)이라 한다.
도 2는 도 1의 온칩 버퍼 프로그램(OBP)을 간략히 보여주는 블록도이다. 도 2를 참조하면, 불휘발성 메모리 장치(100)는 외부에서 제공되는 쓰기 데이터(Write data)를 버퍼 영역(112)에 프로그램하고, 버퍼 영역(112)에 프로그램된 데이터를 다시 메인 영역(114)에 프로그램한다. 여기서, 버퍼 영역(112)에 대한 프로그램 동작을 버퍼 프로그램 동작(Buffer program operation)이라 칭하고, 메인 영역(114)에 대한 프로그램 동작을 메인 프로그램 동작(Main program operation)이라 칭하기로 한다.
버퍼 영역(112)에 대응하는 메모리 셀들은 싱글 레벨 셀(SLC)로 사용될 수 있다. 따라서, 버퍼 영역(112)에 대응하는 메모리 셀들 각각에는 1-비트의 데이터가 저장된다. 싱글 레벨 셀(SLC)로 사용되는 버퍼 영역(112)에 대한 쓰기 속도나 데이터 신뢰성(Data integrity)은 멀티 레벨 셀(MLC)로 관리되는 메인 영역(114)보다 높은 편이다. 따라서, 버퍼 영역(112)에 데이터가 기입되는 버퍼 프로그램 동작의 속도는 상대적으로 높다. 버퍼 프로그램 동작을 위해서 외부로부터 쓰기 데이터(Write data)가 입력된다. 쓰기 데이터(Write data)는 페이지 버퍼(130)에 로드될 것이다. 외부로부터 입력된 쓰기 데이터가 페이지 버퍼(130)에 로드되는 경로는 데이터 경로(①)로 표시되어 있다.
버퍼 프로그램 동작시, 페이지 버퍼(130)에 저장된 쓰기 데이터는 버퍼 영역(112)에 프로그램된다. 페이지 단위(예를 들면, 2K Byte)의 데이터가 페이지 버퍼(130)에 로드되면, 페이지 버퍼(130)는 버퍼 영역(112)에 로드된 데이터를 프로그램한다. 이때, 버퍼 영역(112)에 프로그램되는 데이터는 싱글 레벨 셀(SLC) 방식에 의거하여 기입될 수 있다. 이러한 방식으로 복수의 페이지 단위의 데이터가 버퍼 영역(112)에 프로그램될 수 있다. 이러한 프로그램 절차는 데이터 경로(②)로 표시되어 있다.
버퍼 영역(112)에 저장된 복수의 페이지 단위의 데이터를 메인 영역(114)의 타깃 영역으로 프로그램하기 위해서는 버퍼 영역(112)에 대한 읽기 동작이 우선되어야 한다. 따라서, 버퍼 영역(112)에 저장된 복수의 페이지들이 페이지 버퍼(130)에 의해서 센싱된다. 이러한 동작은 데이터 경로(③)로 도시되어 있다. 센싱된 복수의 페이지 데이터는 페이지 버퍼(130)의 내부에 구비되는 복수의 래치들(미도시됨)에 저장되어 유지될 것이다. 버퍼 영역(112)에 대한 읽기 동작은 불휘발성 메모리 장치(100)의 외부 명령에 의해서 제어될 것이다.
버퍼 영역(112)에 대한 읽기가 완료되면, 불휘발성 메모리 장치(100)는 읽혀진 복수의 페이지들을 메인 영역(114)에 프로그램하기 위한 쓰기 명령을 제공받는다. 쓰기 명령에는 타깃 영역(Target Area)에 대응하는 타깃 어드레스(Target address)가 포함될 것이다. 이때, 페이지 버퍼(130)는 멀티 레벨 셀(MLC) 방식에 따라 타깃 영역(Target Area)에 복수의 페이지를 프로그램할 수 있다. 예를 들면, 버퍼 영역(112)으로부터 읽어낸 복수의 페이지를 한꺼번에 프로그램할 수 있다. 그리고 페이지 버퍼(130)는 이러한 프로그램 절차를 복수의 스텝 동안 반복할 수 있다. 이러한 절차는 데이터 경로(④)로 표시되어 있다.
이상에서는 버퍼 영역(112)이 싱글 레벨 셀(SLC) 방식으로 관리되는 것으로 설명되었으나, 본 발명은 여기에 국한되지 않는다. 즉, 버퍼 영역(112)의 셀당 저장되는 비트 수가 메인 영역(114)의 셀당 저장되는 비트 수보다 적은 불휘발성 메모리 장치들에 본 발명이 적용될 수 있을 것이다.
메인 프로그램 동작은 버퍼 영역(112)에 저장된 데이터와 관련된 어드레스 정보에 따라 수행될 것이다. 예시적으로, 버퍼 영역(112)에 대한 최소 프로그램 단위와 메인 영역(114)에 대한 최소 프로그램 단위는 프로그램 방식, 셀 당 저장되는 데이터 비트 수 등에 따라 다양하게 결정될 수 있다. 본 발명의 실시 예에 따르면, 버퍼 영역(112)에 대한 최소 프로그램 단위와 메인 영역(114)에 대한 최소 프로그램 단위는 서로 다를 것이다.
도 3은 도 2의 메인 영역에 대한 프로그램 방법을 단계적으로 보여주는 도면이다. 도 3을 참조하면, 메인 영역(114)에 3개의 페이지 단위의 데이터가 3회의 스텝(Step) 동안 프로그램되는 동안, 문턱 전압 분포의 변화 양상이 예시적으로 도시되어 있다. 여기서, 제 1 내지 제 3 스텝(1st step ~ 3rd step) 각각의 프로그램 동작에서 3-비트 데이터가 프로그램되는 (8-8-8 방식)이 예시적으로 설명될 것이다.
먼저, 선택된 워드 라인의 메모리 셀들에는 3개의 페이지 데이터가 저장되는 제 1 스텝 프로그램(1st step PGM)이 진행될 것이다. 이때, 선택된 메모리 셀들의 문턱 전압은 8개의 상태들(E0, P1, P2, P3, P4, P5, P6, P7) 중 어느 하나에 대응하는 값을 가질 것이다. 제 1 스텝 프로그램(1st step PGM)에 의해서 형성되는 메모리 셀들의 문턱 전압 분포는 상대적으로 넓을 수 있다. 이러한 프로그램 방식을 인접한 메모리 셀들로부터 받는 영향에 따라 이후에 넓어질 수 있기 때문이다.
이어서, 선택된 워드 라인의 메모리 셀들의 문턱 전압 산포를 모으기 위한 제 2 내지 제 3 스텝 프로그램(2nd step PGM ~ 3rd step PGM)이 수행된다. 제 2 내지 제 3 스텝 프로그램(2nd step PGM ~ 3rd step PGM)에서 각각의 상태들에 대한 프로그램 검증 전압이 점차로 높아질 수 있다. 이러한 방법을 위시하여 제 2 내지 제 3 스텝 프로그램(2nd step PGM ~ 3rd step PGM)에서는 각각의 상태들에 대한 문턱 전압 산포를 모으기 위한 제반 프로그램 방법들이 동원될 수 있을 것이다.
각각의 상태들에 대응하는 문턱 전압 산포를 모으기 위해서는 검증 전압과 프로그램 전압의 제어가 동반된다. 검증 전압을 높이거나, 프로그램 펄스의 증가 폭을 가변하여 이러한 문턱 전압 산포를 모을 수 있다. 하지만, 문턱 전압 산포를 모으기 위해서는 프로그램에 소요되는 시간이 증가할 수밖에 없다. 따라서, 제 1 스텝 프로그램(1st step PGM)보다 제 2 스텝 프로그램(2nd step PGM)에 소요되는 시간이 길어질 수 있다. 그리고 제 2 스텝 프로그램(2nd step PGM)보다 제 3 스텝 프로그램(3rd step PGM)에 소요되는 시간이 더 길어질 수 있다.
앞서 설명된 바와 같이, 제 1 내지 제 3 스텝 프로그램(1st step PGM ~ 3rd step PGM) 동작들 각각은 버퍼 영역(112)으로부터 복수의 페이지 데이터를 읽고, 복수의 페이지 데이터를 타깃 영역에 프로그램하는 절차가 포함된다. 따라서, 이 동작 구간 동안에 불휘발성 메모리 장치(100)는 외부로부터 접근이 불가한 비지 상태(Busy status)가 된다. 따라서, 복수의 불휘발성 메모리 칩들을 구비하는 멀티 칩 패키지에서, 모든 불휘발성 메모리 칩들이 동시에 비지 상태가 되는 구간을 줄이는 것이 저장 장치의 성능 향상과 직결된다.
도 4는 본 발명의 일 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 4를 참조하면, 저장 장치(200)는 메모리 컨트롤러(210) 및 불휘발성 메모리 장치(220)를 포함할 수 있다.
메모리 컨트롤러(210)는 호스트(Host)의 요청에 응답하여 불휘발성 메모리 장치(220)를 제어하도록 구성될 것이다. 호스트(Host)의 쓰기 요청에 응답하여 메모리 컨트롤러(210)는 불휘발성 메모리 장치(220)에 쓰기 명령어, 어드레스, 그리고 데이터를 제공한다. 불휘발성 메모리 장치(220)의 버퍼 영역(미도시됨)에 대한 최소 프로그램 단위의 데이터(예를 들면, 페이지 데이터)가 버퍼 메모리(215)에 저장되면, 메모리 컨트롤러(210)는 최소 프로그램 단위의 데이터가 버퍼 영역에 저장되도록 불휘발성 메모리 장치(220)를 제어할 것이다.
버퍼 프로그램 동작은 어드레스 정보에 따라 수행될 것이다. 메인 영역에 대한 최소 프로그램 단위의 데이터가 버퍼 영역에 저장되면, 메모리 컨트롤러(210)는 메인 영역에 대한 최소 프로그램 단위의 데이터가 프로그램되도록 불휘발성 메모리 장치(220)를 제어할 것이다. 버퍼 프로그램 동작을 통해 버퍼 영역에 데이터를 저장하고, 메인 프로그램 동작을 통해 메인 영역에 데이터를 저장함으로써 메모리 컨트롤러(210)의 버퍼 메모리(215)의 크기를 최소화시킬 수 있다. 다시 말해서, 버퍼 메모리(215)에 앞서 설명된 메인 프로그램 동작(제 1 스텝 내지 제 3 스텝 프로그램)을 위한 데이터를 유지할 필요가 없다. 그러한 까닭에, 메모리 컨트롤러(210)의 버퍼 메모리(215)의 크기를 최소화시킬 수 있다.
불휘발성 메모리 장치(220)는 복수의 메모리 칩들(222, 224)을 포함할 수 있다. 복수의 메모리 칩들(222, 224) 각각은 실질적으로 도 1에서 설명된 불휘발성 메모리 장치(100)와 동일한 구성일 수 있다. 복수의 메모리 칩들(222, 224) 각각은 버퍼 영역과 메인 영역을 사용하여, 버퍼 프로그램 동작과 메인 프로그램 동작에 의해서 데이터를 저장하는 방식으로 관리될 수 있다. 복수의 메모리 칩들(222, 224) 각각은 액세스가 가능한지를 나타내는 상태 신호(Status signal)를 출력한다. 예를 들면, 메모리 칩(222)은 상태 신호(RnB0)를, 메모리 칩(224)은 상태 신호(RnB1)를 출력한다. 상태 신호들(RnB0, RnB1) 중 어느 하나라도 레디 상태(Ready status)인 경우, 불휘발성 메모리 장치(220)는 액세스(Access) 될 수 있다. 반면, 상태 신호들(RnB0, RnB1) 모두가 비지 상태(Busy status)인 경우, 불휘발성 메모리 장치(220)는 액세스 될 수 없다.
호스트(Host)로부터 연속 데이터(Sequential data)에 대한 쓰기 요청이 발생하면, 메모리 컨트롤러(210)는 제공받은 데이터를 버퍼 메모리(215)에 저장한다. 그리고 메모리 컨트롤러(210)는 버퍼 메모리(215)에 저장된 데이터를 레디 상태(Ready status)로 유지되는 메모리 칩의 버퍼 영역에 프로그램할 것이다. 하지만, 본 발명의 메모리 컨트롤러(210)는 메모리 칩들(222, 224)이 모두 비지 상태(Busy status)인 구간이 최소가 되도록 제어할 수 있다. 하나의 칩이 제 3 스텝 프로그램(3rd step PGM) 중인 경우, 다른 하나의 칩이 제 1 스텝 프로그램(1st step PGM) 또는 제 2 스텝 프로그램(2nd step PGM)을 수행하도록 제어할 수 있다. 이 경우, 두 개의 메모리 칩들(222, 224) 모두가 비지 상태(Busy status)가 되는 시간을 최소화시킬 수 있다. 따라서, 연속 데이터(Sequential data)의 쓰기 동작시에 메모리 컨트롤러(210)의 버퍼 메모리(215)로의 버퍼링이 불가한 구간의 길이를 최소화할 수 있다.
불휘발성 메모리 장치(220)와 메모리 컨트롤러(210)는, 메모리 카드, 솔리드 스테이트 드라이브(Solid State Drive: SSD), 메모리 스틱, 또는 그와 같은 것으로 구성될 수 있다. 불휘발성 메모리 장치(220)는 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 행들과 열들로 배열된 복수의 메모리 셀들을 포함할 것이다. 메모리 셀들 각각은 멀티-레벨(또는, 멀티-비트) 데이터를 저장할 것이다. 메모리 셀들은 2차원 어레이 구조를 갖도록 또는 3차원(또는, 수직) 어레이 구조를 갖도록 배열될 수 있다.
도 5a 및 도 5b는 도 4의 저장 장치의 동작을 보여주는 타이밍도이다. 도 5a는 메모리 칩들 각각이 연속적으로 버퍼 프로그램 동작과 메인 프로그램 동작을 진행하도록 제어하는 경우를 보여준다. 반면, 도 5b는 어느 하나의 메모리 칩이 메인 프로그램 동작의 가장 긴 스텝을 수행하는 동안, 다른 하나의 메모리 칩이 메인 프로그램 동작의 가장 짧은 스텝을 진행하는 경우를 보여주는 타이밍도이다.
도 5a를 참조하면, 메모리 칩(Chip0)에 대한 버퍼 프로그램(Buffer Program)과 메인 프로그램(Main Program)이 연속적으로 진행된다. 그리고 메모리 칩(Chip0)에 대한 제 1 페이지의 버퍼 프로그램(BP0)이 시작되면, 메모리 칩(Chip1)으로의 버퍼 프로그램 및 메인 프로그램 동작이 이어진다. 이러한 파이프라인 방식의 프로그램을 통해서 각각의 메모리 칩들은 유휴 시간없이 연속적으로 버퍼 프로그램 동작과 메인 프로그램 동작을 진행할 수 있다. 좀더 자세히 설명하면 다음과 같다.
시점(t0)에서, 메모리 칩(Chip0)으로 기입될 제 1 페이지가 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B0'로 도시되어 있다. 버퍼 메모리(215)로의 데이터 저장이 완료되는 시점(t1)에서, 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 1 페이지가 저장되는 버퍼 프로그램 동작이 진행된다. 이러한 동작 구간은 타이밍도의 'BP0'로 도시되어 있다. 물론, 'BP0'로 나타난 제 1 페이지의 버퍼 프로그램 구간에는 메모리 컨트롤러(210)와 메모리 칩(Chip0) 간의 명령어, 어드레스, 데이터 전송을 포함하는 복수의 트랜잭션(Transaction)이 포함될 것이다. 이러한 동작 예는 후술하는 도면에서 상세히 설명될 것이다.
이어서, 시점(t3)에서 메모리 칩(Chip0)으로 기입될 제 2 페이지가 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B1'로 도시되어 있다. 연속하여 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 2 페이지가 저장되는 버퍼 프로그램 동작이 진행된다. 이러한 동작 구간은 타이밍도의 'BP1'로 도시되어 있다. 메모리 칩(Chip0)으로 기입될 제 3 페이지가 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B2'로 도시되어 있다. 연속하여 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 3 페이지가 저장되는 버퍼 프로그램 동작이 진행된다. 이러한 동작 구간은 타이밍도의 'BP2'로 도시되어 있다. 제 3 페이지의 버퍼 프로그램 동작은 시점(t5)에서 종료되는 것으로 가정한다.
3개의 페이지에 대한 버퍼 프로그램(Buffer Program) 동작이 종료되는 시점(t5)에서, 메모리 칩(Chip0)의 메인 프로그램(Main Program) 동작이 진행된다. 메인 프로그램 동작을 위해서 버퍼 영역에 저장된 3개의 페이지에 대한 읽기 동작이 선행한다. 이러한 동작은 타이밍도에 'S0'로 도시되어 있다. 이때, 읽혀진 3개의 페이지는 메모리 칩(Chip0)의 외부로 출력되지 않고 페이지 버퍼의 래치에 유지될 수 있을 것이다. 여기서, 3개의 페이지가 읽혀지는 실시 예가 설명되었으나 본 발명은 여기에 국한되지 않는다. 2개의 페이지가 버퍼 영역으로부터 읽혀질 수도 있을 것이다.
버퍼 영역에 대한 읽기 동작이 완료되는 시점(t6)에서 메모리 칩(Chip0)에서의 제 1 스텝 프로그램(1st step PGM)이 실시된다. 제 1 스텝 프로그램(1st step PGM)에서, 래치에 저장된 3개의 페이지에 대한 3-비트 MLC, 즉 TLC(Three Layer Cell) 프로그램이 실시된다. 이러한 제 1 스텝 프로그램은 '1st step'로 타이밍도에 도시되어 있다. 앞서 설명된 데로, 메모리 칩(Chip0)의 내부에서 제 2 스텝 및 제 3 스텝 프로그램이 진행된다. 이러한 메모리 칩(Chip0)에 대한 프로그램은 시점(t8)에서 종료될 것이다.
메모리 칩(Chip0)의 버퍼 프로그램 동작이 시작되는 시점(t1)에서, 메모리 칩(Chip1)의 버퍼 프로그램 동작을 위한 제 1 페이지가 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B0'로 도시되어 있다. 버퍼 메모리(215)로의 데이터 저장이 완료되는 시점(t2)에서, 메모리 칩(Chip1)의 버퍼 영역(Buffer region)으로 제 1 페이지가 저장되는 버퍼 프로그램 동작이 진행된다. 이러한 동작 구간은 타이밍도의 'BP0'로 도시되어 있다. 메모리 칩(Chip1)에 대한 버퍼 프로그램 및 메인 프로그램은 메모리 칩(Chip0)과 동일한 절차에 의해서 진행된다. 따라서, 메모리 칩(Chip1)의 구체적인 프로그램 절차는 생략하기로 한다. 메모리 칩들(Chip0, Chip1)에 대한 프로그램 동작은 파이프라인 방식으로 진행될 것이다.
상술한 도 5a에 따르면, 호스트(Host) 측에서 액세스 가능한 시점은 시점(t0)부터 시점(t4) 사이의 구간에 해당한다. 반면, 시점(t4)에서 시점(t7)까지의 구간 동안, 메모리 칩들(Chip0, Chip1)은 모두 프로그램 동작 중이다. 따라서, 메모리 칩들(Chip0, Chip1)은 외부에서 액세스가 불가한 비지 상태(Busy status)가 된다. 이처럼, 두 개의 메모리 칩들(Chip0, Chip1)에 대한 파이프라인 방식의 제어에 따르면, 호스트(Host)에서 액세스가 불가한 구간(t4~t7)이 상대적으로 길어지게 된다.
도 5b는 어느 하나의 메모리 칩이 메인 프로그램 동작의 가장 긴 스텝을 수행하는 동안, 다른 하나의 메모리 칩이 메인 프로그램 동작의 가장 짧은 스텝과 중간 스텝을 진행하는 본 발명의 실시 예를 보여준다.
시점(T0)에서, 메모리 칩(Chip0)으로 기입될 제 1 페이지가 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B0'로 도시되어 있다. 버퍼 메모리(215)로의 데이터 저장이 완료되는 시점(T1)에서, 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 1 페이지를 저장하기 위한 버퍼 프로그램 동작이 시작된다. 이러한 동작 구간은 타이밍도의 'BP0'로 도시되어 있다. 'BP0'로 나타난 제 1 페이지의 버퍼 프로그램 구간에는 메모리 컨트롤러(210)와 메모리 칩(Chip0) 간의 명령어, 어드레스, 데이터 전송을 포함하는 복수의 트랜잭션(Transaction)이 포함될 것이다. 이때, 메모리 칩(Chip1)은 메인 프로그램 동작의 제 2 스텝(2nd step)을 진행 중인 것으로 간주한다.
제 1 페이지에 대한 버퍼 프로그램 동작이 진행중인 시점(T2)에서, 제 2 페이지가 호스트(Host)로부터 버퍼 메모리(215)에 저장될 수 있다. 왜냐하면, 메모리 칩(Chip1)은 제 2 스텝을 수행 중이고, 메모리 칩(Chip0) 만이 메모리 컨트롤러(210)와 데이터를 교환하고 있기 때문이다. 메모리 칩(Chip0)이 버퍼 프로그램 동작을 진행하는 동안에, 버퍼 메모리(215)로는 호스트(Host)에 의해서 액세스될 수 있다. 따라서, 제 1 페이지의 버퍼 프로그램 중에, 제 2 페이지의 버퍼링이 가능하고, 제 2 페이지의 버퍼 프로그램 중에, 제 3 페이지의 버퍼링이 가능하다. 따라서, 메모리 칩들(Chip0, Chip1) 각각에 대한 데이터를 교대로 버퍼링하는 도 5a의 경우보다 버퍼링 및 버퍼 프로그램에 소요되는 시간은 감소될 수 있다.
메모리 칩(Chip0)에 대한 버퍼링 및 버퍼 프로그램 동작이 완료되는 시점(T6)에서, 메모리 칩(Chip1)에 대한 제 3 스텝(3rd step) 프로그램이 시작될 수 있다. 따라서, 제 3 스텝(3rd step) 프로그램을 위해서 시점(T6) 이전에, 메모리 컨트롤러(210)는 메모리 칩(Chip1)의 버퍼 영역에 저장된 복수의 페이지에 대한 읽기 명령어를 제공할 것이다. 그리고 메모리 칩(Chip1)은 읽기 명령어에 응답하여 복수의 페이지를 버퍼 영역으로부터 읽어내어 페이지 버퍼에 래치하게 될 것이다. 그리고 제 3 스텝(3rd step) 프로그램을 수행하도록 메모리 컨트롤러(210)로부터 명령어 시퀀스가 제공될 것이다. 이러한 과정이 'S2'로 도시되어 있다. 'S2'에 이어서, 메모리 칩(Chip1)은 페이지 버퍼에 래치된 복수 페이지들을 제 3 스텝(3rd step) 프로그램 절차에 따라 타깃 영역으로 프로그램할 것이다.
메모리 칩(Chip1)의 제 3 스텝(3rd step) 프로그램 동작 중에, 메모리 컨트롤러(210)는 메모리 칩(Chip0)이 제 1 스텝(1st step) 프로그램을 수행하도록 제어할 수 있다. 이러한 메모리 칩(Chip0)이 제 1 스텝(1st step) 프로그램을 위해서 메모리 컨트롤러(210)와 메모리 칩(Chip0) 사이에 발생하는 트랜잭션이 시점(T7) 이후로 나타나는 'S0'로 도시되어 있다. 'S0'에 이어서 메모리 칩(Chip0)에 대한 제 1 스텝(1st step) 프로그램이 진행된다.
그리고 메모리 칩(Chip1)의 제 3 스텝(3rd step) 프로그램이 진행 중인 동안에, 메모리 컨트롤러(210)는 메모리 칩(Chip0)이 제 2 스텝(2nd step) 프로그램을 수행하도록 제어할 수 있다. 이러한 메모리 칩(Chip0)이 제 2 스텝(2nd step) 프로그램을 위해서 메모리 컨트롤러(210)와 메모리 칩(Chip0) 사이에 발생하는 트랜잭션이 시점(T8) 이후로 나타나는 'S1'로 도시되어 있다. 'S1'에 이어서 메모리 칩(Chip0)에 대한 제 2 스텝(2nd step) 프로그램이 진행된다. 메모리 칩(Chip0)에 대한 제 2 스텝(2nd step) 프로그램은 메모리 칩(Chip1)의 제 3 스텝(3rd step) 프로그램이 완료된 이후에도 계속될 수 있다.
메모리 칩(Chip1)의 제 3 스텝(3rd step) 프로그램이 완료되는 시점(T9) 이전에, 메모리 컨트롤러(210)는 호스트로부터 제공되는 데이터를 버퍼링할 수 있다. 그리고 순차적으로 버퍼링 된 데이터를 메모리 칩(Chip1)의 버퍼 영역에 프로그램하는 버퍼링-버퍼 프로그램(Buffering - Buffer program) 동작을 반복할 것이다. 따라서, 제 1 페이지의 버퍼 프로그램 중(BP0)에, 제 2 페이지의 버퍼링(B1)이 가능하고, 제 2 페이지의 버퍼 프로그램 중(BP1)에, 제 3 페이지의 버퍼링(B2)이 가능하다.
이러한 방식으로 메모리 칩들(Chip0, Chip1)은 어느 하나의 칩이 제 3 스텝 프로그램을 수행하는 동안에, 다른 하나의 칩은 제 1 스텝 및 제 2 스텝의 일부 동작을 수행하도록 제어될 수 있다. 따라서, 두 메모리 칩들이 모두 비지 상태로 존재하는 시간을 단축시켜, 호스트에서 저장 장치(200)로의 데이터 기입이 불가능한 호스트 접근 불가 구간(ΔI´)의 길이를 줄일 수 있다.
도 6a 및 도 6b는 도 5b의 호스트 접근 가능 구간과 호스트 접근 불가 구간에서 발생하는 메모리 컨트롤러(210)와 메모리 칩(Chip0)의 동작을 각각 보여주는 타이밍도이다. 도 6a는 호스트 접근 가능 구간(ΔA´)에서, 메모리 컨트롤러(210)에서 제공되는 명령어 시퀀스와 메모리 칩(Chip0)의 상태 신호를 보여준다. 도 6b는 호스트 접근 불가 구간(ΔI´), 특히, 제 1 스텝(1st step) 프로그램을 수행하기 위한 제반 명령어 시퀀스와 메모리 칩(Chip0)의 상태 신호를 보여준다.
도 6a를 참조하면, 호스트 접근 가능 구간(ΔA´)에서 메모리 컨트롤러(210)와 메모리 칩(Chip0)의 동작이 개시된다. 먼저, 시점(T0)에서, 호스트(Host)로부터 메모리 칩(Chip0)에 기입될 제 1 페이지가 메모리 컨트롤러(210)에 구비되는 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B0'로 도시되어 있다. 버퍼 메모리(215)로의 데이터 저장이 완료되는 시점(T1)에서, 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 1 페이지가 저장되는 버퍼 프로그램 동작이 시작된다. 이러한 동작 구간은 타이밍도의 'BP0'로 도시되어 있다.
'BP0'로 나타난 제 1 페이지의 버퍼 프로그램 구간은 메모리 컨트롤러(210)로부터 메모리 칩(Chip0)으로 쓰기 명령어, 어드레스, 제 1 페이지를 제공하는 명령어 시퀀스(80h-ADD1-Data-10h) 구간이 포함된다. 이어서, 컨펌 명령(10h)에 응답하여 메모리 칩(Chip0)이 제 1 페이지를 버퍼 영역에 프로그램하는 구간(tPROG1)이 이어진다. 명령어 시퀀스가 제공되는 구간에서 메모리 칩(Chip0)은 레디 상태(Ready status: RnB High)를 출력하게 될 것이다. 반면, 버퍼 프로그램 동작이 진행 중인 구간에서 메모리 칩(Chip0)은 비지 상태(Busy status: RnB Low)를 출력하게 될 것이다.
제 1 페이지에 대한 버퍼 프로그램 중인 시점(T2)에서, 호스트(Host)로부터 메모리 칩(Chip0)에 기입될 제 2 페이지가 메모리 컨트롤러(210)에 구비되는 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B1'로 도시되어 있다. 버퍼 메모리(215)로의 데이터 저장이 완료되는 시점(T2)에서, 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 2 페이지가 저장되는 버퍼 프로그램 동작이 시작된다. 이러한 동작 구간은 타이밍도의 'BP1'로 도시되어 있다.
'BP1'로 나타난 제 2 페이지의 버퍼 프로그램 구간은 메모리 컨트롤러(210)로부터 메모리 칩(Chip0)으로 쓰기 명령어, 어드레스, 제 2 페이지 데이터를 제공하는 명령어 시퀀스(80h-ADD2-Data-10h) 구간이 포함된다. 이어서, 컨펌 명령(10h)에 응답하여 메모리 칩(Chip0)이 제 2 페이지를 버퍼 영역에 프로그램하는 구간(tPROG1)이 이어진다. 명령어 시퀀스가 제공되는 구간에서 메모리 칩(Chip0)은 레디 상태(Ready status: RnB High)를 출력하게 될 것이다. 반면, 버퍼 프로그램 동작이 진행 중인 구간에서 메모리 칩(Chip0)은 비지 상태(Busy status: RnB Low)를 출력하게 될 것이다.
제 2 페이지에 대한 버퍼 프로그램 중인 시점(T4)에서, 호스트(Host)로부터 메모리 칩(Chip0)에 기입될 제 3 페이지가 메모리 컨트롤러(210)에 구비되는 버퍼 메모리(215)에 저장될 것이다. 이러한 버퍼 메모리(215)로의 데이터 입력은 타이밍도의 'B2'로 도시되어 있다. 버퍼 메모리(215)로의 데이터 저장이 완료되는 시점(T5)에서, 메모리 칩(Chip0)의 버퍼 영역(Buffer region)으로 제 3 페이지가 저장되는 버퍼 프로그램 동작이 시작된다. 이러한 동작 구간은 타이밍도의 'BP2'로 도시되어 있다.
'BP2'로 나타난 제 3 페이지의 버퍼 프로그램 구간은 메모리 컨트롤러(210)로부터 메모리 칩(Chip0)으로 쓰기 명령어, 어드레스, 제 3 페이지 데이터를 제공하는 명령어 시퀀스(80h-ADD3-Data-10h) 구간이 포함된다. 이어서, 컨펌 명령(10h)에 응답하여 메모리 칩(Chip0)이 제 3 페이지를 버퍼 영역에 프로그램하는 구간(tPROG1)이 이어진다. 명령어 시퀀스가 제공되는 구간에서 메모리 칩(Chip0)은 레디 상태(Ready status: RnB High)를 출력하게 될 것이다. 반면, 버퍼 프로그램 동작이 진행 중인 구간에서 메모리 칩(Chip0)은 비지 상태(Busy status: RnB Low)를 출력하게 될 것이다.
도 6b는 호스트 접근 불가 구간(ΔIA´), 특히, 제 1 스텝(1st step) 프로그램을 수행하기 위해 제공되는 명령어 시퀀스와 메모리 칩(Chip0)의 상태를 보여준다. 도 6b를 참조하면, 3개 페이지에 대한 읽기와, 읽혀진 페이지들을 타깃 영역으로 프로그램하는 절차가 도시되어 있다.
먼저, 버퍼 영역에 저장된 3개 페이지 데이터에 대한 읽기 동작이 순차적으로 실시된다. 이러한 동작을 위해서 버퍼 영역에 대한 3회의 버퍼 읽기 명령이 제공된다. 버퍼 읽기 명령은 메모리 칩(Chip0, 222)의 버퍼 영역에 저장된 복수의 페이지들 각각에 대해서 제공된다. 여기서, 버퍼 영역으로부터 읽혀진 데이터는 메모리 칩(Chip0, 222)의 외부로 출력될 필요는 없다. 따라서, 도시되지는 않았지만 이런 읽기 모드를 지시하는 내부 읽기 명령어(DAh, DFh)가 버퍼 읽기 동작의 시작과 종료 지점에서 입력될 수 있다. 만일, 에러 정정(Error correction)과 같은 목적으로 또는 타깃 영역에 기입되기 이전에 버퍼 영역에 저장된 데이터의 출력이 필요한 경우라면, 내부 읽기 명령어(DAh, DFh)는 생략될 수 있을 것이다.
내부 읽기 동작의 시작을 나타내는 코드(DAh)가 입력되고, 제 1 페이지(1st page)를 버퍼 영역으로부터 읽기 위한 명령어 시퀀스(00h-ADDR1-39h)가 제공된다. 그러면, 메모리 칩(Chip0, 222)의 페이지 버퍼는 버퍼 영역으로부터 제 1 페이지(1st page)를 읽기 시간(tR) 동안 센싱하여 래치할 것이다. 페이지 버퍼가 제 1 페이지(1st page)를 센싱하고 래치하는 구간 동안 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 비지 상태(논리 'L')로 유지할 것이다.
제 1 페이지(1st page)에 대한 내부 읽기 동작이 완료도면, 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 레디 상태(논리 'H')로 천이시킨다. 그러면, 메모리 컨트롤러(210)는 제 2 페이지(2nd page)를 버퍼 영역으로부터 읽기 위한 명령어 시퀀스(00h-ADDR2-39h)를 제공한다. 그러면, 메모리 칩(Chip0, 222)의 페이지 버퍼는 버퍼 영역으로부터 제 2 페이지(2nd page)를 읽기 시간(tR) 동안 센싱하여 래치할 것이다. 페이지 버퍼가 제 2 페이지(2nd page)를 센싱하고 래치하는 구간 동안 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 비지 상태(논리 'L')로 유지할 것이다.
제 2 페이지(2nd page)에 대한 내부 읽기가 완료되면, 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 레디 상태(논리 'H')로 천이시킨다. 그러면, 메모리 컨트롤러(210)는 제 3 페이지(3rd page)를 버퍼 영역으로부터 읽기 위한 명령어 시퀀스(00h-ADDR3-39h)가 제공한다. 그러면, 메모리 칩(Chip0, 222)의 페이지 버퍼는 버퍼 영역으로부터 제 3 페이지(3rd page)를 읽기 시간(tR) 동안 센싱하여 래치할 것이다. 페이지 버퍼가 제 3 페이지(3rd page)를 센싱하고 래치하는 구간 동안 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 비지 상태(논리 'L')로 유지할 것이다.
제 3 페이지(3rd page)에 대한 내부 읽기가 완료되면, 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 레디 상태(논리 'H')로 천이시킨다. 그러면, 메모리 컨트롤러(210)는 내부 읽기 동작의 종료를 지시하는 명령어 시퀀스(DFh)를 입력하고, 메인 프로그램 동작을 지시하는 명령어 시퀀스(8Bh-ADDR4-10h)를 제공하게 될 것이다. 명령어 시퀀스(8Bh-ADDR4-10h)에 응답하여 메모리 칩(Chip0, 222)은 상태 신호(RnB)를 프로그램 실행 구간(tPROG2) 동안 비지 상태(논리 'L')로 전환시키고, 페이지 버퍼에 래치된 복수의 페이지들을 타깃 영역(Target area)에 프로그램할 것이다.
도 6b에서는 메인 프로그램 동작의 제 1 스텝(1st step)만이 간략히 설명되었다. 하지만, 제 2 스텝(2nd step)과 제 3 스텝(3rd step)에 대응하는 메인 프로그램 동작도 동일한 명령어 시퀀스를 통해서 수행될 수 있다. 다만, 제 2 스텝(2nd step)의 프로그램 실행 구간은 제 1 스텝의 프로그램 실행 구간(tPROG2)보다 길어지게 될 것이다. 마찬가지로, 제 3 스텝(3rd step)의 프로그램 실행 구간은 제 2 스텝의 프로그램 실행 구간보다 길어지게 될 것이다.
도 7은 본 발명의 다른 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 7을 참조하면, 저장 장치(300)는 메모리 컨트롤러(310) 및 불휘발성 메모리 장치(320)를 포함할 수 있다.
메모리 컨트롤러(310)는 호스트(Host)의 요청에 응답하여 불휘발성 메모리 장치(320)를 제어하도록 구성될 것이다. 호스트(Host)의 쓰기 요청에 응답하여, 메모리 컨트롤러(310)는 불휘발성 메모리 장치(320)에 쓰기 명령어, 어드레스, 그리고 데이터를 제공한다. 불휘발성 메모리 장치(320)의 버퍼 영역(미도시됨)에 대한 최소 프로그램 단위의 데이터(예를 들면, 페이지 데이터)가 버퍼 메모리(315)에 저장되면, 메모리 컨트롤러(310)는 최소 프로그램 단위의 데이터가 버퍼 영역에 저장되도록 불휘발성 메모리 장치(320)를 제어할 것이다.
불휘발성 메모리 장치(320)는 복수의 메모리 칩들(322, 324, 326, 328)을 포함할 수 있다. 복수의 메모리 칩들(322, 324, 326, 328) 각각은 실질적으로 도 1에서 설명된 불휘발성 메모리 장치(100)와 동일한 구성일 수 있다. 복수의 메모리 칩들(322, 324, 326, 328) 각각은 버퍼 영역과 메인 영역을 사용하여, 버퍼 프로그램 동작과 메인 프로그램 동작에 의해서 데이터를 저장할 수 있다. 복수의 메모리 칩들(322, 324, 326, 328) 각각은 액세스가 가능한지를 나타내는 상태 신호(Status signal)를 출력한다. 예를 들면, 메모리 칩(322)은 상태 신호(RnB0)를, 메모리 칩(324)은 상태 신호(RnB1)를, 메모리 칩(326)은 상태 신호(RnB2)를, 메모리 칩(328)은 상태 신호(RnB3)를 출력한다.
상태 신호들(RnB0, RnB1, RnB2, RnB3) 중 어느 하나라도 레디 상태(Ready status)인 경우, 불휘발성 메모리 장치(320)는 액세스될 수 있다. 반면, 상태 신호들(RnB0, RnB1, RnB2, RnB3) 모두가 비지 상태(Busy status)인 경우, 불휘발성 메모리 장치(220)는 액세스될 수 없다. 이 경우, 버퍼 메모리(315)에 버퍼링된 데이터는 불휘발성 메모리(320)로 기입할 수 없다.
호스트(Host)로부터 연속 데이터(Sequential data)에 대한 쓰기 요청이 발생하면, 메모리 컨트롤러(310)는 제공받은 데이터를 버퍼 메모리(315)에 저장한다. 그리고 메모리 컨트롤러(310)는 버퍼 메모리(315)에 저장된 데이터를 레디 상태(Ready)인 메모리 칩에 버퍼 프로그램 방식으로 기입할 것이다. 하지만, 본 발명의 메모리 컨트롤러(310)는, 어느 하나의 칩이 제 3 스텝 프로그램(3rd step) 중인 경우, 다른 하나의 칩이 제 2 스텝(2nd step)과 제 3 스텝(3rd step)의 일부 동작을 수행하도록 제어할 것이다. 그리고 메모리 컨트롤러(310)는 또 다른 하나의 칩이 제 1 스텝(1st step) 및 제 2 스텝(2nd step)의 일부 동작을 수행하도록 제어할 것이다. 더불어, 메모리 컨트롤러(310)는 어느 하나의 칩이 제 3 스텝 프로그램(3rd step) 중일 때, 나머지 하나의 메모리 칩에 버퍼 메모리(315)에 저장된 데이터를 저장하는 버퍼 프로그램 동작을 수행하게 될 것이다.
이러한 메모리 컨트롤러(310)와 불휘발성 메모리 장치(320)의 동작에 따라 어느 하나의 메모리 칩이 가장 긴 프로그램 시간을 점유하는 제 3 스텝(3rd step)을 수행할 때, 적어도 하나의 메모리 칩으로는 버퍼 프로그램 동작이 가능하게 된다. 따라서, 어느 하나의 메모리 칩이 제 3 스텝(3rd step)을 진행 중일 경우에도 버퍼 메모리(315)로의 데이터 버퍼링과 다른 하나의 칩에 대한 버퍼 프로그램 동작이 가능하다. 결국, 메모리 칩들 각각이 파이프라인 방식으로 제 3 스텝을 수행하게 되면, 호스트 접근이 불가 구간(Host Inaccessible Duration)은 최소화될 것이다.
도 8a 및 도 8b는 도 7의 저장 장치의 동작을 간략히 보여주는 타이밍도이다. 도 8a는 메모리 칩들 각각이 연속적으로 버퍼 프로그램 동작과 메인 프로그램 동작을 진행하도록 제어하는 경우를 보여준다. 반면, 도 8b는 어느 하나의 메모리 칩이 메인 프로그램 동작의 가장 긴 스텝을 수행하는 동안, 적어도 하나의 메모리 칩이 버퍼링 및 버퍼 프로그램 동작을 수행하도록 제어되는 동작을 보여준다.
도 8a를 참조하면, 메모리 칩들(Chip0, Chip1, Chip2, Chip3) 각각에 대한 버퍼 프로그램(Buffer Program)과 메인 프로그램(Main Program)이 파이프라인 방식으로 진행된다. 이러한 파이프라인 방식의 프로그램을 통해서 각각의 메모리 칩들은 유휴 시간없이 연속적으로 버퍼 프로그램 동작과 메인 프로그램 동작을 진행할 수 있다. 좀더 자세히 설명하면 다음과 같다.
시점(t0)에서, 메모리 칩(Chip0)으로 기입될 제 1 페이지가 버퍼 메모리(315)에 저장될 것이다. 이러한 버퍼 메모리(315)로의 데이터 입력은 타이밍도의 'B0'로 도시되어 있다. 버퍼 메모리(315)에 저장된 제 1 페이지의 메모리 칩(Chip0)으로의 버퍼 프로그램 'BP0'이 시작되면, 메모리 칩(Chip1)에 저장될 제 1 페이지가 버퍼 메모리(315)에 버퍼링(B0) 된다. 그리고 버퍼 메모리(315)에 저장된 제 1 페이지의 메모리 칩(Chip1)으로의 버퍼 프로그램(BP0)이 시작되면, 메모리 칩(Chip2)에 저장될 제 1 페이지가 버퍼 메모리(315)에 버퍼링(B0) 된다. 그리고 버퍼 메모리(315)에 저장된 제 1 페이지의 메모리 칩(Chip2)으로의 버퍼 프로그램(BP0)이 시작되면, 메모리 칩(Chip3)에 저장될 제 1 페이지가 버퍼 메모리(315)에 버퍼링(B0) 된다.
이러한 방식으로 메모리 칩들(Chip0, Chip1, Chip2, Chip3) 각각에 대한 제 1 내지 제 3 페이지가 파이프라인 방식으로 버퍼링(B0, B1, B2) 및 버퍼 프로그램(BP0, BP1, BP2) 절차에 따라 처리된다. 이때, 버퍼링이 시작되는 시점(t0)으로부터 메모리 칩(Chip3)에 저장될 제 3 페이지가 버퍼링 완료되는 시점(t1)까지는 호스트(Host)에서 액세스가 가능하다. 즉, 호스트 접근 가능 구간(ΔA) 동안, 버퍼 메모리(315)에 저장된 데이터는 즉시 메모리 칩들 중 어느 하나에 프로그램될 수 있다. 호스트 접근 가능 구간(ΔA)은 호스트(Host)에서 저장 장치(300)로의 접근(Access)이 가능한 구간이다.
메모리 칩들(Chip0, Chip1, Chip2, Chip3) 각각의 버퍼 영역에 3개의 페이지가 프로그램된 이후, 파이프라인 방식으로 메모리 칩들(Chip0, Chip1, Chip2, Chip3) 각각에 대한 메인 프로그램(Main Program)이 진행된다. 메인 프로그램 동작을 위해서 메모리 칩들(Chip0, Chip1, Chip2, Chip3) 각각은 버퍼 영역에 저장된 3개의 페이지를 읽는다. 이러한 동작은 타이밍도에 'S0'들로 도시되어 있다. 이때, 읽혀진 3개의 페이지는 메모리 칩들(Chip0, Chip1, Chip2, Chip3)의 외부로 출력되지 않고 페이지 버퍼의 래치에 유지될 수 있을 것이다. 여기서, 3개의 페이지가 읽혀지는 실시 예가 설명되었으나 본 발명은 여기에 국한되지 않는다. 2개의 페이지가 버퍼 영역으로부터 읽혀질 수도 있을 것이다.
여기서, 메인 프로그램 동작이 시작되는 시점(t1)으로부터 메모리 칩(Chip0)의 버퍼링이 시작되는 시점(t2)까지는 모든 메모리 칩들이 비지 상태(Busy status)로 존재한다. 또는, 시점(t1)으로부터 시점(t2)까지는 극히 짧은 시간에 레디 상태가 되는 칩이 존재하더라도, 데이터를 입력받을 수 있는 메모리 칩은 존재하지 않는다. 따라서, 버퍼 메모리(315)로의 데이터 버퍼링은 불가능한 구간이 된다. 즉, 어느 하나의 메모리 칩의 메인 프로그램 동작이 시작되는 시점(t1)으로부터 메인 프로그램 동작이 거의 종료되어, 버퍼링이 가능한 시점(t2)까지는 호스트 접근 불가능 구간(ΔI)에 해당한다.
도 8b는 어느 하나의 메모리 칩이 메인 프로그램 동작의 가장 긴 스텝을 수행하는 동안, 적어도 하나의 메모리 칩에서는 복수의 페이지 데이터에 대한 버퍼링과 버퍼 프로그램 동작이 수행되는 실시 예를 보여준다.
시점(T0)에서, 메모리 칩(Chip0)으로 기입될 복수의 페이지 데이터가 버퍼 메모리(215)에 버퍼링되고, 동시에 버퍼링이 완료된 데이터는 메모리 칩(Chip0)의 버퍼 영역에 프로그램될 것이다. 이러한 버퍼 메모리(315)로의 데이터 입력은 타이밍도의 'B0', 'B1', 'B2'로 도시되어 있다. 그리고 버퍼 메모리(315)로부터 메모리 칩(Chip0)으로의 버퍼 프로그램 동작은 타이밍도의 'BP0', 'BP1', 'BP2'로 도시되어 있다. 이러한 어느 하나의 메모리 칩(예를 들면, Chip0)에 대한 버퍼링과 버퍼 프로그램 동작이 발생하는 구간은, 다른 하나의 메모리 칩(예를 들면, Chip1)이 메인 프로그램 동작의 가장 긴 스텝(예를 들면, 3rd step)을 진행 중인 구간에 포함된다.
시점(T1) 이후를 참조하면, 시점(T1)에서 메모리 칩(Chip2)의 제 3 스텝(3rd step)이 시작된다. 메모리 칩(Chip2)의 제 3 스텝(3rd step)이 진행중인 구간(T1~T3: ΔT1)에서, 먼저 메모리 칩(Chip3)이 메인 프로그램 동작의 제 2 스텝(2nd step)을 진행하도록 제어될 수 있다. 그리고 메모리 칩(Chip3)이 메인 프로그램 동작의 제 2 스텝(2nd step)에 이어서 제 3 스텝(3rd step)의 일부를 진행하도록 제어될 수 있다.
메모리 칩(Chip3)의 제 2 스텝(2nd step)의 시작과 함께, 메모리 칩(Chip0)의 메인 프로그램 동작의 제 1 스텝(1st step)을 위한 버퍼 읽기 동작이 'S0'이 시작된다. 메모리 칩(Chip0)의 버퍼 읽기 'S0'에 뒤따라 메인 프로그램 동작의 제 1 스텝(1st step)이 시작된다. 그리고 메모리 칩(Chip0)의 제 1 스텝(1st step)에 뒤따라, 메모리 칩(Chip1)의 제 3 스텝(3rd step)이 종료되기 직전에 버퍼링 동작 'B0'과 버퍼 프로그램 'BP0'이 시작된다. 이어서, 메모리 칩(Chip1)의 버퍼링 동작과 버퍼 프로그램 동작이 시점(T2)까지 반복될 것이다. 더불어, 메모리 칩(Chip1)의 메인 프로그램 동작을 위한 버퍼 읽기 'S0'와 제 1 스텝(1st step)의 일부 동작이 추가적으로 실시될 것이다.
이상에서는 메모리 칩(Chip2)의 제 3 스텝(3rd step)이 진행중인 구간(T1~T3: ΔT1)에서 나머지 메모리 칩들(Chip0, Chip1, Chip3)의 동작을 살펴보았다. 마찬가지로, 메모리 칩(Chip3)의 제 3 스텝(3rd step)이 진행중인 구간(T2~T3: ΔT2)에서 나머지 메모리 칩들(Chip0, Chip1, Chip2)의 동작도 동일한 방식으로 설명될 수 있다.
메모리 칩(Chip3)의 제 3 스텝(3rd step)이 시작됨과 함께, 메모리 칩(Chip0)의 버퍼 읽기 'S1', 제 2 스텝(2nd step), 버퍼 읽기 'S2', 그리고 제 3 스텝(3rd step)의 일부 동작이 순차적으로 실시된다. 그리고 메모리 칩(Chip0)의 버퍼 읽기 'S1'이 완료됨과 함께, 메모리 칩(Chip1)의 버퍼 읽기 'S0' 및 제 1 스텝(1st step)이 진행될 것이다. 이어서, 메모리 칩(Chip2)에서의 버퍼링 'B0', 'B1', 'B2'와 버퍼 프로그램 'BP0', 'BP1', 'BP2'가 교대로 진행된다.
이상에서 살펴본 바와 같이, 어느 하나의 메모리 칩에서 제 3 스텝(3rd step)을 수행하고 있을 때, 다른 메모리 칩들은 버퍼링-버퍼 프로그램 사이클이나, 제 1 스텝 또는 제 2 스텝 프로그램을 수행할 수 있다. 따라서, 호스트(Host)에 의해서 실질적으로 액세스가 불가능한 호스트 접근 불가 구간(ΔI´)이 짧아질 수 있다.
도 9는 본 발명의 실시 예에 따른 불휘발성 메모리 장치의 프로그램 방법을 보여주는 순서도이다. 도 9를 참조하면, 어느 하나의 메모리 칩(예를 들면, Chip3)이 제 3 스텝(3rd step) 프로그램을 진행중인 경우에 메모리 칩들에 대한 파이프라인 프로그램 방법이 도시되어 있다. 이하에서는 도 7과 도 8b를 참조하여 본 발명의 파이프라인 방식의 프로그램이 설명될 것이다. 더불어, 도 8b에서 메모리 칩(Chip3)의 제 3 스텝(3rd step) 프로그램이 진행되는 구간(T2~T6)에 국한하여 메모리 컨트롤러(310)의 제어 동작이 설명될 것이다. 그리고 칩 선택 순서는 현재 제 3 스텝(3rd step)을 진행중인 메모리 칩(Chip3)이 가장 나중에 선택되는 것으로 간주하면 (Chip2 → Chip0 → Chip1 → Chip2 → Chip3)가 될 것이다.
S110 단계에서, 메모리 칩(Chip2)에서의 버퍼 프로그램 동작을 위해서 메모리 컨트롤러(310)는 호스트(Host)로부터 제공되는 제 1 페이지를 'BO' 구간 동안 버퍼링할 것이다. 버퍼링 동작은 시점(T3)에서 시작된다. 그리고 버퍼링이 완료되면, 메모리 컨트롤러(310)는 버퍼 메모리(315)에 저장된 제 1 페이지를 메모리 칩(Chip2)의 버퍼 영역에 프로그램할 것이다. 이러한 버퍼 프로그램 동작은 시점(T4)에서 시작된다. 이러한 버퍼링과 버퍼 프로그램 동작은 제 2 페이지에 대해 'B1', 'BP1' 구간에서, 그리고 제 3 페이지에 대해 'B2', 'BP2' 구간에서 파이프라인 방식으로 진행될 것이다.
S120 단계에서, 메모리 칩(Chip2)에 대한 버퍼 프로그램 명령이 전송된 이후나 버퍼 프로그램 동작이 진행 중인 때, 메모리 컨트롤러(310)는 메모리 칩(Chip0)을 선택한다. 그리고 메모리 칩(Chip0)의 버퍼 영역으로부터 복수의 페이지들을 읽어 페이지 버퍼에 저장하도록 메모리 칩(Chip0)을 제어할 것이다. 이러한 동작은 도 8b의 'S2'으로 도시되어 있다. 그리고 메모리 컨트롤러(310)는 버퍼 영역으로부터 읽혀진 복수의 페이지들을 메인 영역으로 프로그램하도록 메모리 칩(Chip0)에 명령어를 제공할 것이다. 구체적으로, 메모리 컨트롤러(310)는 제 3 스텝(3rd step)의 메인 프로그램 동작을 수행하도록 메모리 칩(Chip0)을 제어할 것이다. 메모리 칩(Chip0)에 대한 제 3 스텝(3rd step)의 프로그램 실행 명령이 제공되면, 메모리 칩(Chip0)은 제 3 스텝(3rd step) 프로그램을 수행할 것이다.
S130 단계에서, 메모리 컨트롤러(310)는 메모리 칩(Chip0)에 대한 제 3 프로그램 실행 명령이 제공된 이후, 즉시 메모리 칩(Chip1)을 선택할 것이다. 그리고 메모리 칩(Chip1)의 버퍼 영역으로부터 복수의 페이지들을 읽어 페이지 버퍼에 저장하도록 메모리 칩(Chip1)을 제어할 것이다. 이러한 동작은 도 8b의 'S1'으로 도시되어 있다. 그리고 메모리 컨트롤러(310)는 버퍼 영역으로부터 읽혀진 복수의 페이지들을 타깃 영역으로 제 2 스텝(2nd step)의 메인 프로그램 동작을 수행하도록 명령어를 제공할 것이다. 메모리 칩(Chip1)에 대한 제 2 스텝(2nd step) 프로그램 실행 명령이 제공되면, 메모리 칩(Chip1)은 제 2 스텝(2nd step) 프로그램을 수행할 것이다.
S140 단계에서, 메모리 컨트롤러(310)는 메모리 칩(Chip1)에 대한 제 2 스텝(2nd step) 프로그램의 실행 명령이 제공된 이후에 곧바로 메모리 칩(Chip2)을 선택할 것이다. 그리고 메모리 칩(Chip2)의 버퍼 영역으로부터 복수의 페이지들을 읽어 페이지 버퍼에 저장하도록 메모리 칩(Chip2)을 제어할 것이다. 이러한 동작은 도 8b의 'S0'으로 도시되어 있다. 그리고 메모리 컨트롤러(310)는 버퍼 영역으로부터 읽혀진 복수의 페이지들을 타깃 영역으로 제 1 스텝(1st step)의 메인 프로그램 동작을 수행하도록 명령어를 제공할 것이다. 메모리 칩(Chip2)에 대한 제 1 스텝(1st step) 프로그램 실행 명령이 제공되면, 메모리 칩(Chip2)은 제 1 스텝(1st step) 프로그램을 수행할 것이다.
S150 단계에서, 메모리 컨트롤러(310)는 메모리 칩(Chip3)이 제 3 스텝(3rd step)의 메인 프로그램 동작을 종료했는지 판단하게 될 것이다. 만일, 메모리 칩(Chip3)의 제 3 스텝(3rd step)에 대응하는 메인 프로그램 동작이 완료된 것으로 판단되면(Yes 방향), 절차는 S160 단계로 이동한다. 반면, 메모리 칩(Chip3)의 제 3 스텝(3rd step)에 대응하는 메인 프로그램 동작이 여전히 진행중인 것으로 판단되면(No 방향), 절차는 메모리 칩(Chip3)의 제 3 스텝(3rd step) 프로그램이 종료될 때까지 대기하게 될 것이다.
S160 단계에서, 메모리 컨트롤러(310)는 호스트(Host)로부터 제공되는 쓰기 요청되는 데이터가 더 존재하는지 판단한다. 만일, 호스트(Host)로부터 제공되는 더 이상의 데이터가 없거나, 호스트(Host)로부터 프로그램 중지 명령을 제공받는 경우(No 방향), 제반 파이프라인 프로그램 절차는 종료될 것이다. 하지만, 연속적으로 제공되는 쓰기 데이터가 추가적으로 존재하는 경우(Yes 방향), 절차는 S170 단계로 이동한다.
S170 단계에서, 메모리 컨트롤러(310)는 S110 내지 S160 단계에서 선택되는 메모리 칩들을 순차적으로 카운트 업(Count up) 하게 될 것이다. 예를 들면, 버퍼링된 복수의 페이지 데이터에 대한 버퍼 프로그램 동작을 수행할 대상으로 제 3 스텝(3rd step)의 메인 프로그램 동작을 종료한 메모리 칩(Chip3)을 선택할 것이다. 이처럼 이전 단계에서 선택된 메모리 칩들이 각각 쉬프트되도록 선택될 것이다. 이러한 메모리 칩들의 선택 순서가 카운트 업된 상태에서 절차는 S110 단계로 복귀하게 된다.
이상에서 순서도를 통해서 설명된 본 발명의 각 단계별 메모리 칩들의 선택 순서에 따르면, 호스트에서 접근 불가한 구간(ΔI´)이 상대적으로 감소하게 된다. 즉, 어느 하나의 메모리 칩이 가장 긴 비지 상태에 대응하는 제 3 스텝(3rd step)의 메인 프로그램 동작을 진행 중일 때, 적어도 하나의 메모리 칩에 대한 버퍼링 및 버퍼 프로그램 동작이 가능하도록 파이프라인 프로그램이 스케쥴링된다. 따라서, 호스트(Host) 측에서는 접근 가능 구간의 상대적으로 길게 감지될 것이다.
도 10은 본 발명의 실시 예에 따른 성능 향상의 효과를 가시적으로 보여주는 그래프이다. 도 10을 참조하면, 도 8a에 도시된 파이프라인 프로그램 방법을 적용할 때의 액세스 성능 곡선(C1)과 도 8b의 파이프라인 프로그램 방법을 적용할 때의 액세스 성능 곡선(C2)이 도시되어 있다.
성능 곡선(C1)에 따르면, 호스트 접근 가능 구간(ΔA)과 호스트 접근 불가 구간(ΔI)이 대비되어 있다. 호스트 접근 가능 구간(ΔA) 동안에는 복수의 메모리 칩들이 각각 버퍼링과 버퍼 프로그램 동작을 파이프라인 방식으로 수행된다. 반면, 호스트 접근 불가 구간(ΔI) 동안에는 메모리 칩들에 대한 제 1 내지 제 3 스텝(1st step~3rd step)의 메인 프로그램 동작이 수행된다. 호스트 접근 가능 구간(ΔA) 동안에는 외부에서 자유롭게 버퍼 메모리(315)에 데이터의 기입이 가능하여 높은 성능을 나타낸다. 반면, 호스트 접근 불가 구간(ΔI)에서는 외부에서 버퍼 메모리(315)에 데이터의 기입이 불가능하여 성능이 상대적으로 낮아지게 된다. 이처럼, 메인 프로그램 동작이 연속적으로 발생하는 도 8a의 파이프라인 프로그램 방식에서는 성능의 편차가 크고, 호스트 접근 불가 구간(ΔI)이 상대적으로 길어짐을 알 수 있다.
반면, 도 8b의 파이프라인 방식에 대응하는 성능 곡선(C2)에 따르면, 복수의 메모리 칩들 각각이 수행하는 제 3 스텝(3rd step)의 메인 프로그램 구간에서 적어도 하나의 메모리 칩으로는 액세스가 가능하도록 스케쥴링된다. 따라서, 호스트에 의한 접근(Access)이 불가능한 구간이 상대적으로 짧아지게 되고, 전체적인 성능은 향상되는 것으로 관찰된다.
도 11은 본 발명의 또 다른 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 11을 참조하면, 저장 장치(400)는 스토리지 컨트롤러(410)와 복수의 채널들(CH1, CH2, …, CHn)을 통해서 데이터를 교환하는 멀티 칩 패키지로 제공되는 불휘발성 메모리 장치(420)를 포함한다.
제 1 채널(CH0)에는 복수의 메모리 칩들(Chip_00~Chip_03) 각각의 입출력 포트(예를 들면, 8-비트 I/O 포트)가 연결된다. 제 2 채널(CH1) 내지 제 4 채널(CH3) 각각에도 동일한 방식으로 복수의 메모리 칩들이 입출력 포트들을 공유한다.
스토리지 컨트롤러(410)는 불휘발성 메모리 장치(420)에 데이터를 프로그램할 때, 채널 단위 또는 웨이 단위(Way: 각각의 채널에서 동시에 선택되는 메모리 장치들)로 선택할 수 있다. 본 발명의 스토리지 컨트롤러(410)는 채널들(CH0~CH3) 각각에 대해서 앞서 설명된 도 8a 또는 도 8b의 파이프라인 프로그램 방법을 적용할 수 있다. 4개 또는 그 이상의 채널들에 대응하는 버퍼 메모리(415)를 구비하고, 복수의 채널들 각각에 대해서 파이프라인 프로그램을 적용하면, 높은 액세스 성능이 제공될 수 있을 것으로 기대된다.
도 12는 도 1의 셀 어레이(110)를 구성하는 메모리 블록(BLKi)의 구조를 보여주는 사시도이다. 도 12를 참조하면, 메모리 블록(BLKi)은 제 1 내지 제 3 방향들(x, y, z)을 따라 신장된 구조물들을 포함한다.
먼저, 메모리 블록을 형성하기 위한 기판(511)이 제공된다. 예시적으로, 기판(511)은 제 1 도전형(Conductive type)을 갖는 웰(Well) 일 수 있다. 예를 들면, 기판(511)은 붕소(B, Boron)와 같은 3족 원소가 주입되어 형성된 P 웰 일 수 있다. 예를 들면, 기판(511)은 N 웰 내에 제공되는 포켓 P 웰 일 수 있다. 이하에서, 기판(511)은 P 웰(또는 포켓 P 웰)인 것으로 가정한다. 그러나 기판(511)은 P 도전형을 갖는 것으로 한정되지 않는다.
기판(511) 상에, 제 1 방향(y)을 따라 신장된 복수의 도핑 영역들(511~513)이 제공된다. 복수의 도핑 영역들(511~513)은 기판(511) 상에서 제 3 방향(x)을 따라 특정 거리만큼 이격되어 제공된다. 제 1 내지 제 3 도핑 영역들(511~513)은 기판(511)과 상이한 제 2 도전형을 갖는다. 예를 들면, 제 1 내지 제 3 도핑 영역들(511~513)은 N 도전형을 가질 수 있다. 이하에서, 제 1 내지 제 3 도핑 영역들(511~513)은 N 도전형을 갖는 것으로 가정한다. 그러나 제 1 내지 제 3 도핑 영역들(511~513)은 N 도전형을 갖는 것으로 한정되지 않는다.
제 1 내지 제 3 도핑 영역들(511~513) 중 인접한 두 개의 도핑 영역들 사이에서, 복수의 절연 물질들(512)이 제 2 방향(z 방향)을 따라 기판(511) 상에 순차적으로 제공된다. 복수의 절연 물질들(512)은 제 2 방향(z)을 따라 특정 거리만큼 이격되어 제공된다. 복수의 절연 물질들(512)은 제 1 방향(y)을 따라 신장된다. 예시적으로, 복수의 절연 물질들(512)은 실리콘 산화막과 같은 절연 물질을 포함할 수 있다.
제 1 내지 제 3 도핑 영역들(511~513) 중 인접한 두 개의 도핑 영역들 사이에서, 제 1 방향(y)을 따라 순차적으로 배치되며 제 2 방향(z)을 따라 복수의 절연 물질들(512)을 관통하는 복수의 필라들이 제공된다. 예시적으로, 복수의 필라들은 절연 물질들(112)을 관통하여 기판(511)과 접촉할 수 있다.
채널막들(514)은 제 1 도전형을 갖는 반도체 물질(예를 들면, 실리콘)을 포함할 수 있다. 예를 들면, 채널막들(514)은 기판(511)과 동일한 도전형 갖는 반도체 물질(예를 들면, 실리콘)을 포함할 수 있다. 이하에서, 채널막들(514)은 P 타입 실리콘을 포함하는 것으로 가정한다. 그러나, 채널막들(514)은 P 타입 실리콘을 포함하는 것으로 한정되지 않는다. 예를 들면, 채널막들(514)은 도전형을 갖지 않는 진성 반도체(Intrinsic Semiconductor)를 포함할 수 있다.
절연 물질들(512) 중 최상부에 위치한 절연 물질의 상부면에 제공되는 정보 저장막은 제거될 수 있다. 예시적으로, 절연 물질들(512)의 측면들 중 필라들과 대향하는 측면에 제공되는 정보 저장막은 제거될 수 있다.
복수의 필라들 상에 복수의 드레인들(720)이 제공된다. 예시적으로, 드레인들(720)은 제 2 도전형을 갖는 반도체 물질(예를 들면, 실리콘)을 포함할 수 있다. 예를 들면, 드레인들(720)은 N 도전형을 갖는 반도체 물질(예를 들면, 실리콘)을 포함할 수 있다. 이하에서, 드레인들(720)은 N 타입 실리콘을 포함하는 것으로 가정한다. 그러나, 드레인들(720)은 N 타입 실리콘을 포함하는 것으로 한정되지 않는다. 예시적으로, 드레인들(720)은 필라들의 채널막들(514)의 상부로 확장될 수 있다.
드레인들(720) 상에, 제 3 방향(x)으로 신장되며, 제 1 방향(y)을 따라 특정 거리만큼 이격된 비트 라인들(731, 732, 733)이 제공된다. 비트 라인들(731, 732, 733)은 드레인들(720)과 연결된다. 예시적으로, 드레인들(720) 및 비트 라인들(731, 732, 733)은 콘택 플러그들(미도시)을 통해 연결될 수 있다. 예시적으로, 비트 라인들(731, 732, 733)은 금속성 도전 물질들을 포함할 수 있다. 예시적으로, 비트 라인들(731, 732, 733)은 폴리 실리콘 등과 같은 비금속성 도전 물질들을 포함할 수 있다.
필라들(515) 각각은 인접한 정보 저장막들(516), 그리고 인접한 도전 물질들과 함께 하나의 셀 스트링을 구성한다. 즉, 필라들(515)은 정보 저장막들(516) 및 복수의 도전 물질들과 함께 복수의 셀 스트링들을 형성한다.
도 13은 본 발명의 실시 예에 따른 솔리드 스테이트 디스크(이하, SSD)를 포함하는 사용자 장치를 보여주는 블록도이다. 도 13을 참조하면, 사용자 장치(1000)는 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 SSD 컨트롤러(1210), 버퍼 메모리(1220), 그리고 불휘발성 메모리 장치(1230)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)와 SSD(1200)와의 물리적 연결을 제공한다. 즉, SSD 컨트롤러(1210)는 호스트(1100)의 버스 포맷(Bus format)에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 특히, SSD 컨트롤러(1210)는 호스트(1100)로부터 제공되는 명령어를 디코딩한다. 디코딩된 결과에 따라, SSD 컨트롤러(1210)는 불휘발성 메모리 장치(1230)를 액세스한다. 호스트(1100)의 버스 포맷(Bus format)으로 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등이 포함될 수 있다.
버퍼 메모리(1220)에는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치(1230)로부터 읽혀진 데이터가 일시 저장된다. 호스트(1100)의 읽기 요청시에 불휘발성 메모리 장치(1230)에 존재하는 데이터가 캐시되어 있는 경우에는, 버퍼 메모리(1220)는 캐시된 데이터를 직접 호스트(1100)로 제공하는 캐시 기능을 지원한다. 일반적으로, 호스트(1100)의 버스 포맷(예를 들면, SATA 또는 SAS)에 의한 데이터 전송 속도는 SSD(1200)의 메모리 채널의 전송 속도보다 월등히 빠르다. 즉, 호스트(1100)의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(1220)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 최소화할 수 있다.
버퍼 메모리(1220)는 대용량의 보조 기억 장치로 사용되는 SSD(1200)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(1220)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
불휘발성 메모리 장치(1230)는 SSD(1200)의 저장 매체로서 제공된다. 예를 들면, 불휘발성 메모리 장치(1230)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)로 제공될 수 있다. 불휘발성 메모리 장치(1230)는 복수의 메모리 장치로 구성될 수 있다. 이 경우, 각각의 메모리 장치들은 채널 단위로 SSD 컨트롤러(1210)와 연결된다. 저장 매체로서 불휘발성 메모리 장치(1230)가 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템도 적용될 수 있다. 불휘발성 메모리 장치(1230)는 버퍼 프로그램 동작을 위한 버퍼 영역과 메인 프로그램 동작을 위한 메인 영역을 포함한다.
SSD 컨트롤러(1210)는 쓰기 동작시 복수의 메모리 장치들 단위로 도 8b에 설명된 방식의 파이프라인 프로그램을 수행할 수 있다. SSD(1200)는 호스트(1100)에 의한 접근 가능 시간을 충분히 제공할 수 있다. 본 발명의 쓰기 방식을 사용하는 경우, 버퍼 메모리(1220)의 용량을 증가시키지 않고도 높은 성능의 SSD(1200)를 제공할 수 있다. 특히, 본 발명의 실시 예에 따른 SSD(1200)는 연속 데이터의 쓰기 동작시 높은 쓰기 성능을 제공할 수 있다.
도 14는 본 발명의 다른 실시 예에 따른 메모리 시스템(2000)을 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 본 발명에 따른 메모리 시스템(2000)은 메모리 컨트롤러(2100)와 불휘발성 메모리 장치(2200)를 포함할 수 있다.
불휘발성 메모리 장치(2200)는 도 4 또는 도 7의 불휘발성 메모리 장치들(220, 320) 중 어느 하나와 실질적으로 동일하게 구성될 수 있다. 따라서, 불휘발성 메모리 장치(2200)에 대한 구체적인 설명은 생략하기로 한다.
메모리 컨트롤러(2100)는 불휘발성 메모리 장치(2200)를 제어하도록 구성될 수 있다. SRAM(2110)은 CPU(2120)의 워킹 메모리로 사용될 수 있다. 호스트 인터페이스(2130)는 메모리 시스템(2000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비할 수 있다. 메모리 컨트롤러(2100)에 구비된 에러 정정 회로(2140)는 불휘발성 메모리 장치(2200)로부터 읽어 온 읽기 데이터에 포함되어 있는 에러를 검출 및 정정할 수 있다. 메모리 인터페이스(2150)는 본 발명의 불휘발성 메모리 장치(2200)와 인터페이싱 할 수 있다. CPU(2120)는 메모리 컨트롤러(2100)의 데이터 교환을 위한 제반 제어 동작을 수행할 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 메모리 시스템(2000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있다.
메모리 컨트롤러(2100)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 것이다.
본 발명에 따른 메모리 시스템(2000)은, 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(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), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 사용자 장치들 중 하나에 적용될 수 있다.
메모리 컨트롤러(2100)는 쓰기 동작시 복수의 메모리 장치들 단위로 도 8b에 설명된 방식의 파이프라인 프로그램을 수행한다. 메모리 시스템(2000)은 호스트에 의한 접근 가능 시간을 충분히 제공할 수 있다. 따라서, 메모리 시스템(2000)은 연속 데이터의 쓰기 동작시 높은 쓰기 성능을 제공할 수 있다.
도 15는 본 발명의 다른 실시 예에 따른 데이터 저장 장치(3000)를 예시적으로 보여주는 블록도이다. 도 15를 참조하면, 본 발명에 따른 데이터 저장 장치(3000)는 플래시 메모리 칩들(3100)과 플래시 컨트롤러(3200)를 포함할 수 있다. 플래시 컨트롤러(3200)는 데이터 저장 장치(3000) 외부로부터 수신된 제어 신호들에 기초하여 플래시 메모리 칩들(3100)을 제어할 수 있다.
또한, 플래시 메모리 칩들(3100)의 구성은 도 4, 도 7에 도시된 불휘발성 메모리 장치(220, 320)와 실질적으로 동일하며, 멀티 칩으로 구성된다. 본 발명의 플래시 메모리 칩들(3100) 각각은 어레이들이 다층으로 적층된 스택 플래시 구조, 소스-드레인이 없는 플래시 구조, 핀-타입 플래시 구조, 및 3차원 플래시 구조 중 어느 하나로 구성될 수 있다.
본 발명의 데이터 저장 장치(3000)는 메모리 카드 장치, SSD 장치, 멀티미디어 카드 장치, SD 장치, 메모리 스틱 장치, 하드 디스크 드라이브 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치를 구성할 수 있다. 예를 들면, 본 발명의 데이터 저장 장치(3000)는 디지털, 카메라, 개인 컴퓨터 등과 같은 사용자 장치를 사용하기 위한 산업 표준을 만족하는 카드를 구성할 수 있다.
플래시 컨트롤러(3200)는 쓰기 동작시 복수의 메모리 장치들 단위로 도 8b에 설명된 방식의 파이프라인 프로그램을 수행한다. 데이터 저장 장치(3000)는 호스트에 의한 접근 가능 시간을 충분히 제공할 수 있다. 따라서, 데이터 저장 장치(3000)는 연속 데이터의 쓰기 동작시 높은 쓰기 성능을 제공할 수 있다.
도 16은 본 발명에 따른 저장 장치(4100) 및 그것을 포함하는 컴퓨팅 시스템(4000)의 개략적인 구성을 보여주는 도면이다. 도 16을 참조하면, 본 발명에 따른 컴퓨팅 시스템(4000)은 버스(4600)에 전기적으로 연결된 저장 장치(4100), 마이크로프로세서(4200), 램(4300), 유저 인터페이스(4400), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(4500)를 포함할 수 있다.
저장 장치(4100)의 구성은 도 4 또는 도 7에 도시된 저장 장치(200, 300)와 실질적으로 동일하며, 본 발명의 플래시 메모리는 어레이들이 다층으로 적층된 스택 플래시 구조, 소스-드레인이 없는 플래시 구조, 핀-타입 플래시 구조, 및 3차원 플래시 구조 중 어느 하나로 구성될 수 있다.
본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있다. 메모리 컨트롤러(4110)와 플래시 메모리 장치(4120)는, 예를 들면, 데이터를 저장하는 데 불 휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
도 17은 본 발명의 실시 예에 따른 휴대용 단말기를 나타내는 블록도이다. 도 17을 참조하면, 본 발명의 실시 예에 따른 휴대용 단말기(5000)는 이미지 처리부(5100), 무선 송수신부(5200), 오디오 처리부(5300), 이미지 파일 생성부(5400), 메모리(5500), 유저 인터페이스(5600), 그리고 컨트롤러(5700)를 포함한다.
이미지 처리부(5100)는 렌즈(5110), 이미지 센서(5120), 이미지 프로세서(5130), 그리고 디스플레이부(5140)를 포함한다. 무선 송수신부(5210)는 안테나(5210), 트랜시버(5220), 모뎀(5230)을 포함한다. 오디오 처리부(5300)는 오디오 프로세서(5310), 마이크(5320), 그리고 스피커(5330)를 포함한다.
이미지 처리부(5100)는 앞서 설명된 실시 예들 중 적어도 어느 하나의 방식으로 영상 데이터를 처리할 수 있다. 즉, 이미지 프로세서(5130)는 이미지 센서(5120)로부터 제공되는 영상 데이터를 코덱에 입력되기 이전에 전처리하여 채널의 대역폭 마진을 확보할 수 있다.
여기서, 메모리(5500)는 본 발명의 실시 예에 따라 구동되는 멀티 칩 불휘발성 메모리 장치로 제공될 수 있다. 이 경우, 메모리(5500)는 높은 쓰기 성능을 제공하여 타임 아웃 이내에 응답할 수 있다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110 : 셀 어레이 112 : 버퍼 영역
114 : 메인 영역 120 : 행 디코더
130 : 페이지 버퍼 140 : 입출력 버퍼
150 : 제어 로직 210, 310 : 메모리 컨트롤러
215, 315 : 버퍼 메모리
220, 320, 420 : 불휘발성 메모리 장치
222, 224, 322, 324, 326, 328 : 메모리 칩
1100 : 호스트 1200 : SSD
1210 : SSD 컨트롤러 1220 : 버퍼 메모리
1230 : 불휘발성 메모리 장치 2100 : 플래시 메모리
2200 : 메모리 컨트롤러 2210 : CPU
2220 : 호스트 인터페이스 2230 : SRAM
2240 : ECC 2260 : 메모리 인터페이스
3100 : 플래시 메모리 칩들 3200 : 플래시 인터페이스
4100 : 저장 장치 4200 : 마이크로프로세서
4300 : 램 4400 : 유저 인터페이스
4500 : 모뎀 4600 : 시스템 버스
5110 : 렌즈 5120 : 이미지 센서
5130 : 이미지 프로세서 5140 : 디스플레이 유닛
5210 : 안테나 5220 : 송수신기
5230 : 모뎀 5310 : 오디오 처리기
5400 : 이미지 파일 생성 유닛 5500 : 불휘발성 메모리
5600 : 유저 인터페이스 5700 : 컨트롤러

Claims (10)

  1. 각각 제 1 메모리 영역과 제 2 메모리 영역으로 구분되는 불휘발성 메모리 셀들을 포함하는 복수의 메모리 칩들; 그리고
    외부로부터 제공되는 데이터를 버퍼 메모리에 버퍼링하고, 버퍼링된 상기 데이터를 상기 제 1 메모리 영역에 저장하는 버퍼 프로그램 동작과, 상기 버퍼 프로그램 동작보다 긴 프로그램 시간을 가지며, 상기 제 1 메모리 영역에 저장된 데이터를 상기 제 2 메모리 영역에 기입하는 메인 프로그램 동작을 수행하도록 상기 복수의 메모리 칩들을 제어하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는 상기 복수의 메모리 칩들 중 제 1 메모리 칩의 메인 프로그램 동작 동안에 제 2 메모리 칩에 기입될 데이터를 상기 버퍼 메모리에 버퍼링하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 영역은 싱글 레벨 셀로 관리되고, 상기 제 2 메모리 영역은 멀티 레벨 셀로 관리되는 저장 장치.
  3. 제 1 항에 있어서,
    상기 메인 프로그램 동작시, 상기 제 1 메모리 영역으로부터 읽혀진 복수의 페이지들이 복수의 스텝들에 의거하여 상기 제 2 메모리 영역에 기입되며, 상기 복수의 스텝들 각각에서 상기 복수의 페이지들은 동시에 프로그램되는 저장 장치.
  4. 제 3 항에 있어서,
    상기 메모리 컨트롤러는 상기 제 1 메모리 칩의 메인 프로그램 동작 동안에 상기 버퍼 메모리에 버퍼링된 상기 데이터를 상기 버퍼 프로그램 동작에 따라 상기 제 2 메모리 칩에 프로그램하는 저장 장치.
  5. 제 4 항에 있어서,
    상기 메모리 컨트롤러는 상기 제 1 메모리 칩이 상기 복수의 스텝들 중 가장 긴 프로그램 시간을 갖는 스텝을 진행 중일 때, 상기 제 2 메모리 칩에 기입될 데이터의 버퍼링 및 버퍼링된 데이터에 대한 버퍼 프로그램 동작을 수행하도록 상기 제 2 메모리 칩을 제어하는 저장 장치.
  6. 삭제
  7. 각각 싱글 레벨 셀 방식으로 관리되는 버퍼 영역과 멀티 레벨 셀 방식으로 관리되는 메인 영역을 포함하는 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치의 제어 방법에 있어서:
    외부에서 제공되는 데이터를 버퍼 메모리에 저장하는 버퍼링 단계;
    상기 버퍼 메모리에 저장된 데이터를 제 1 메모리 칩의 버퍼 영역에 기입하는 버퍼 프로그램 단계; 그리고
    상기 버퍼 프로그램 단계보다 긴 프로그램 시간을 가지며, 제 2 메모리 칩의 버퍼 영역에 저장된 복수의 페이지를 상기 제 2 메모리 칩의 메인 영역에 기입하는 메인 프로그램 단계를 포함하되,
    상기 버퍼링 단계 또는 상기 버퍼 프로그램 단계는 상기 메인 프로그램 단계와 중첩되어 수행되는 제어 방법.
  8. 제 7 항에 있어서,
    상기 외부에서 제공되는 데이터는 페이지 단위로 버퍼링되며, 상기 제 1 메모리 칩의 버퍼 영역에 페이지 단위로 프로그램되는 제어 방법.
  9. 제 7 항에 있어서,
    상기 메인 프로그램 단계는 각각 상기 복수의 페이지를 상기 메인 영역에 프로그램하기 위한 복수의 스텝들로 세분화되며, 상기 버퍼링 단계 또는 상기 버퍼 프로그램 단계는 상기 복수의 스텝들 중 어느 하나와 중첩되는 제어 방법.
  10. 제 9 항에 있어서,
    상기 버퍼링 단계 또는 상기 버퍼 프로그램 단계는, 상기 복수의 스텝들 중 가장 긴 프로그램 시간에 대응하는 어느 하나의 스텝과 중첩되는 제어 방법.
KR1020120078315A 2012-07-18 2012-07-18 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법 KR102012740B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120078315A KR102012740B1 (ko) 2012-07-18 2012-07-18 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법
US13/945,460 US9147475B2 (en) 2012-07-18 2013-07-18 Data storage device comprising nonvolatile memory chips and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120078315A KR102012740B1 (ko) 2012-07-18 2012-07-18 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법

Publications (2)

Publication Number Publication Date
KR20140011667A KR20140011667A (ko) 2014-01-29
KR102012740B1 true KR102012740B1 (ko) 2019-08-21

Family

ID=49946436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120078315A KR102012740B1 (ko) 2012-07-18 2012-07-18 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법

Country Status (2)

Country Link
US (1) US9147475B2 (ko)
KR (1) KR102012740B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092340B2 (en) * 2009-12-18 2015-07-28 Sandisk Technologies Inc. Method and system for achieving die parallelism through block interleaving
US9218885B2 (en) 2014-02-17 2015-12-22 Seagate Technology Llc System to control a width of a programming threshold voltage distribution width when writing hot-read data
US9887009B2 (en) * 2014-10-14 2018-02-06 Macronix International Co., Ltd. Memory page buffer with simultaneous multiple bit programming capability
KR102245822B1 (ko) * 2014-11-26 2021-04-30 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
US20190214087A1 (en) * 2018-01-09 2019-07-11 Western Digital Technologies, Inc. Non-volatile storage system with decoupling of write transfers from write operations
US10957410B1 (en) * 2018-03-02 2021-03-23 Crossbar, Inc. Methods and apparatus for facilitated program and erase of two-terminal memory devices
US11966621B2 (en) 2022-02-17 2024-04-23 Sandisk Technologies Llc Non-volatile storage system with program execution decoupled from dataload

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100972712B1 (ko) * 2006-12-28 2010-07-27 주식회사 하이닉스반도체 반도체 장치와 멀티 칩 패키지 장치 및 동작 방법
KR101005120B1 (ko) * 2009-02-04 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7827348B2 (en) * 2000-01-06 2010-11-02 Super Talent Electronics, Inc. High performance flash memory devices (FMD)
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
TW200515147A (en) * 2003-10-17 2005-05-01 Matsushita Electric Ind Co Ltd Semiconductor memory device, controller, and read/write control method thereof
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
JP2006040497A (ja) * 2004-07-30 2006-02-09 Renesas Technology Corp 半導体記憶装置、不揮発性半導体記憶装置
US7120051B2 (en) 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
KR100843546B1 (ko) 2006-11-21 2008-07-04 삼성전자주식회사 멀티 칩 패키지 플래시 메모리 장치 및 그것의 상태 신호독출 방법
US7852654B2 (en) * 2006-12-28 2010-12-14 Hynix Semiconductor Inc. Semiconductor memory device, and multi-chip package and method of operating the same
KR100866957B1 (ko) * 2007-02-08 2008-11-05 삼성전자주식회사 데이터 프로그램 시간을 단축시킨 불휘발성 메모리 장치 및그 구동방법
CN100458751C (zh) 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US7813181B2 (en) 2008-12-31 2010-10-12 Sandisk Corporation Non-volatile memory and method for sensing with pipelined corrections for neighboring perturbations
KR101626084B1 (ko) 2009-11-25 2016-06-01 삼성전자주식회사 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법
KR20110101642A (ko) * 2010-03-09 2011-09-16 삼성전자주식회사 멀티-비트 메모리 장치를 포함한 데이터 저장 시스템 및 그것의 동작 방법
KR101644169B1 (ko) 2010-04-29 2016-08-01 삼성전자주식회사 비휘발성 메모리 장치 및 이를 포함하는 비휘발성 메모리 시스템
KR101923157B1 (ko) 2012-02-22 2018-11-28 삼성전자주식회사 메모리 시스템 및 그것의 프로그램 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100972712B1 (ko) * 2006-12-28 2010-07-27 주식회사 하이닉스반도체 반도체 장치와 멀티 칩 패키지 장치 및 동작 방법
KR101005120B1 (ko) * 2009-02-04 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법

Also Published As

Publication number Publication date
US9147475B2 (en) 2015-09-29
KR20140011667A (ko) 2014-01-29
US20140022842A1 (en) 2014-01-23

Similar Documents

Publication Publication Date Title
JP6742964B2 (ja) 不揮発性メモリ装置、メモリシステム、及びそれのプログラム方法
KR102053953B1 (ko) 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR102012740B1 (ko) 복수의 불휘발성 메모리 칩들을 포함하는 저장 장치 및 그것의 제어 방법
KR102024850B1 (ko) 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR102179270B1 (ko) 불휘발성 메모리 장치 및 그것의 동작 방법
KR101792870B1 (ko) 불휘발성 메모리 장치 및 그것의 읽기 방법
US8990483B2 (en) Nonvolatile memory device, memory system, and program method therof
KR102245822B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
KR101891164B1 (ko) 프로그램 스케줄러를 포함하는 플래시 메모리 장치
US9520201B2 (en) Nonvolatile memory device comprising page buffer and program verification operation method thereof
US9281068B2 (en) Nonvolatile memory and related reprogramming method
US20160011779A1 (en) Nonvolatile memory device, memory controller, and operating method of the same
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US9891838B2 (en) Method of operating a memory system having a meta data manager
KR20130060795A (ko) 불휘발성 메모리 장치 및 그것의 동작 방법
US20130039130A1 (en) Program method of nonvolatile memory device
US9524781B2 (en) Nonvolatile memory device and operating method thereof
US20150220269A1 (en) Storage device and operating method thereof
US9496013B1 (en) Semiconductor device and operating method thereof
KR20150106778A (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
KR102254099B1 (ko) 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
KR20130036851A (ko) 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
CN109215696A (zh) 执行编程操作的非易失性存储器件及其操作方法
KR20140121159A (ko) 멀티 레벨 셀 메모리 시스템
KR102157875B1 (ko) 불휘발성 메모리 장치 및 그것을 포함한 메모리 시스템

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