KR102094334B1 - 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법 - Google Patents

비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법 Download PDF

Info

Publication number
KR102094334B1
KR102094334B1 KR1020130028065A KR20130028065A KR102094334B1 KR 102094334 B1 KR102094334 B1 KR 102094334B1 KR 1020130028065 A KR1020130028065 A KR 1020130028065A KR 20130028065 A KR20130028065 A KR 20130028065A KR 102094334 B1 KR102094334 B1 KR 102094334B1
Authority
KR
South Korea
Prior art keywords
data
backup
channel
page
lsb data
Prior art date
Application number
KR1020130028065A
Other languages
English (en)
Other versions
KR20140113110A (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 KR1020130028065A priority Critical patent/KR102094334B1/ko
Priority to US14/208,600 priority patent/US9747170B2/en
Publication of KR20140113110A publication Critical patent/KR20140113110A/ko
Application granted granted Critical
Publication of KR102094334B1 publication Critical patent/KR102094334B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법이 개시된다. 본 발명의 적응적 데이터 백업 방법은 호스트로부터 쓰기 요청을 수신하고, 상기 쓰기 요청된 데이터 중 백업이 필요한 데이터의 크기(백업 데이터 크기)를 판단하는 단계; 상기 백업 데이터 크기에 따라, 둘 이상의 다른 백업 유형들 중 하나를 선택하는 단계; 및 상기 선택된 백업 유형에 따라 백업을 실행하는 단계를 포함한다.

Description

비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법{Non-volatile multi-level cell memory system and Method for performing adaptive data back-up in the system}
본 발명은 비휘발성 메모리 장치에 관한 것으로, 보다 상세하게는 MLC 비휘발성 메모리 장치, 이를 포함하는 시스템 및 상기 시스템에서의 적응적 페이지 백업 방법에 관한 것이다.
MLC 낸드 플래시 메모리에서 쓰기 성능을 저하시키는 여러 원인 중 페어드 페이지(혹은 LSB 페이지)에 대한 백업 동작이 있다.
페어드 페이지 백업 방식은 백업 시점에 따라 크게 포스트-백업 방식과 프리-백업 방식으로 구분될 수 있다. 현재 많이 사용되는 것은 포스트-백업이다.
종래 기술에 따른 페어드 페이지 백업의 일 예가 한국공개특허 10-2010-0033855에 개시되어 있다.
LSB 페이지 백업은 포스트-백업 방식으로 MSB 페이지가 수행될 때 LSB 페이지 백업을 수행한다. 이에 따라, LSB 페이지 백업을 위해서는 LSB 페이지에 대한 읽기와 읽은 LSB 페이지를 백업 블록에 쓰는 동작이 요구되며, 백업 시간이 길어 성능상 비효율적이다. 즉, 데이터의 백업으로 인하여 쓰기 오버헤드가 발생한다.
본 발명이 이루고자 하는 기술적인 과제는 비휘발성 멀티-레벨 셀 메모리 장치를 포함하는 메모리 시스템에서의 데이터 백업에 의한 쓰기 성능의 저하를 줄이기 위한 적응적 데이터 백업 방법 및 이를 수행하는 시스템을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따르면, 비휘발성 멀티-레벨 셀 메모리 장치를 포함하는 메모리 시스템에서의 적응적 데이터 백업 방법이 제공된다. 상기 데이터 백업 방법은 호스트로부터 쓰기 요청을 수신하고, 상기 쓰기 요청된 데이터 중 백업이 필요한 데이터의 크기(백업 데이터 크기)를 판단하는 단계; 상기 백업 데이터 크기에 따라, 둘 이상의 다른 백업 유형들 중 하나를 선택하는 단계; 및 상기 선택된 백업 유형에 따라 백업을 실행하는 단계를 포함한다.
상기 하나를 선택하는 단계는, 상기 백업 데이터 크기가 기준 크기 이하인 경우, 제1 백업 유형(인터리빙 프리 백업)을 선택하는 단계; 및 상기 백업 데이터 크기가 상기 기준 크기보다 큰 경우 백업 횟수를 더 판단하고, 상기 백업 데이터 크기 및 상기 백업 횟수에 따라, 제2 백업 유형(카피-백 프리 백업) 및 제3 백업 유형(패리티 페이지 프리 백업) 중 하나를 선택하는 단계를 포함할 수 있다.
상기 비휘발성 메모리 장치는 N(2이상)개의 채널을 통하여 컨트롤러와 연결되고, 상기 채널들 각각에는 복수(2이상)의 메모리 소자들이 연결되며, 상기 기준 크기는 N/2 개의 채널에 해당하는 페이지 크기일 수 있다.
상기 제2 백업 유형 및 제3 백업 유형 중 하나를 선택하는 단계는 상기 백업 횟수가 상기 미리 정해진 횟수 이하이면 상기 제2 백업 유형(카피-백 프리 백업)을 선택하는 단계; 및 상기 백업 횟수가 상기 미리 정해진 횟수 보다 크면 상기 제3 백업 유형을 선택하는 단계를 포함할 수 있다.
상기 제1 백업 유형(인터리빙 프리 백업)이 선택된 경우, 상기 선택된 백업 유형에 따라 백업을 실행하는 단계는 페이지 프로그램 셋업 명령을 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계; 제1 채널 어드레스를 상기 제1 채널로 인가하는 동시에 제2 채널 어드레스를 상기 제2 채널로 인가하는 단계; 쓰기 요청된 LSB 데이터를 상기 제1 채널로 전송하는 동시에, 상기 LSB 데이터를 상기 제2 채널로 전송하는 단계; 및 페이지 프로그램 컨펌 명령을 상기 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계를 포함할 수 있다.
상기 제1 채널 어드레스는 상기 제1 채널에 연결된 제1 메모리 소자에서 상기 LSB 데이터를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 상기 제2 채널 어드레스는 상기 제2 채널에 연결된 제2 메모리 소자에서 상기 LSB 데이터를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스일 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따르면, 백업 데이터 크기와 같은 쓰기 패턴에 따라 데이터 백업 유형을 적응적으로 선택한다. 이에 따라, 데이터 백업으로 인해 발생하는 쓰기 오버헤드를 줄여 데이터 백업으로 인한 쓰기 성능의 저하를 줄일 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템의 개략적인 구성 블록도이다.
도 2는 도 1에 도시된 컨트롤러의 구성의 일 예를 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 비휘발성 메모리 시스템의 구조를 개략적으로 나타내는 도면이다.
도 4는 도 3에 도시된 비휘발성 메모리 시스템에서의 인터리빙 기법을 이용한 쓰기 동작을 나타내는 도면이다.
도 5는 본 발명의 실시예에 따른 비휘발성 메모리 시스템의 계층적인 구조를 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 비휘발성 메모리 소자를 구체적으로 나타낸 블록도이다.
도 7은 도 6에 도시된 메모리 셀 어레이를 구체적으로 나타낸 일실시예다.
도 8은 도 6에 도시된 메모리 셀 어레이를 구체적으로 나타낸 다른 실시예이다.
도 9는 본 발명의 일 실시예에 따른 적응적 페어드 페이지 프리-백업 방법을 나타내는 플로우챠트이다.
도 10은 본 발명의 일 실시예에 따른 인터리빙 프리-백업 방법을 나타내는 플로우챠트이다.
도 11은 본 발명의 일 실시예에 따른 인터리빙 프리-백업 방법을 설명하기 위한 도면이다.
도 12는 본 발명의 일 실시예에 따른 인터리빙 프리-백업 방법의 개략적인 타이밍도이다.
도 13은 본 발명의 일 실시예에 따른 카피-백 프리-백업 방법을 나타내는 플로우챠트이다.
도 14는 본 발명의 일 실시예에 따른 카피-백 프리-백업 방법을 설명하기 위한 도면이다.
도 15는 본 발명의 일 실시예에 따른 카피백 프리-백업 방법의 개략적인 타이밍도이다.
도 16은 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법을 나타내는 플로우챠트이다.
도 17a 및 도 17b는 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법을 설명하기 위한 도면이다.
도 18은 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법의 개략적인 타이밍도이다.
도 19는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 다른 실시 예를 나타낸다.
도 20은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다.
도 21은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다.
도 22는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 전자 시스템의 개략적인 구성 블록도이다. 도 2는 도 1에 도시된 메모리 컨트롤러의 구성 블록도이다.
도 1을 참조하면, 전자 시스템(1)은 호스트(10)와 비휘발성 메모리 시스템(20)을 포함한다. 호스트(10)와 연결되는 비휘발성 메모리 시스템(20)은 메모리 컨트롤러(100) 및 비휘발성 메모리 장치(200)를 포함한다.
본 발명의 실시예에 따른 비휘발성 메모리 시스템(20)은 솔리드 스테이트 드라이브(Solid State Drive, 이하 'SSD'라 함), MMC(Multimedia card), eMMC(embedded Multimedia card) 또는 SD(secure digital) 카드일 수 있으나, 이에 한정되지 않는다. 또한, 비휘발성 메모리 장치(200)는 플래시 메모리 장치일 수 있으나, 이에 한정되지 않으며, PRAM, MRAM, ReRAM, 또는 FeRAM 장치일 수 있다. 비휘발성 메모리 장치(200)가 플래시 메모리 장치인 경우, 플로팅 게이트 방식의 NAND 플래시 메모리 장치 또는 CTF(Charge Trap Flash) 방식의 NAND 플래시 메모리 장치일 수 있다. 비휘발성 메모리 장치(200)의 메모리 셀 트랜지스터들은 2차원적으로 배열된 구조를 가질 수도 있고, 또는 3차원적으로 배열된 구조를 가질 수도 있다. 이에 대해서는 자세히 후술하기로 한다.
컨트롤러(100)는 메모리 시스템(20)의 동작을 전반적으로 제어하며, 또한 호스트(10)와 비휘발성 메모리 장치(200) 간의 제반 데이터 교환을 제어한다. 예컨대, 컨트롤러(100)는 호스트(10)의 요청에 따라 비휘발성 메모리 장치(200)를 제어하여 데이터를 쓰거나 데이터를 독출한다. 또한, 컨트롤러(100)는 비휘발성 메모리 장치(200)의 특성이나 비휘발성 메모리 장치(200)의 효율적인 관리를 위하여 필요한 일련의 내부 동작(예컨대, 성능 조절, 머지, 웨어 레벨링 등)을 제어한다.
비휘발성 메모리 장치(200)는 데이터를 비휘발적으로 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다.
도 2를 참조하여 컨트롤러(100)의 구성을 보다 세부적으로 살펴보면, 컨트롤러(100)는 버퍼 메모리(110), CPU(120), 호스트 인터페이스(130), 메모리 인터페이스(140), ECC 블록(에러 정정 블록, 150) 및 버스(160)를 포함할 수 있다.
버퍼 메모리(110)는 휘발성 메모리로서, 예컨대 SRAM, DRAM 등일 수 있으나, 이에 한정되지 않는다. 버퍼 메모리(110)는 비휘발성 메모리 장치(200)에 저장될 데이터 및 비휘발성 메모리 장치(200)로부터 독출된 데이터를 일시적으로 저장하는 버퍼 역할을 수행한다. 본 실시예에서는, 버퍼 메모리(110)가 컨트롤러(100)의 내부에 구현되나 이에 한정되지 않으며, 컨트롤러(100)의 외부에 구현될 수도 있다.
호스트 인터페이스(130)는 호스트와 통신하기 위하여 인터페이스 프로토콜을 구비한다. 호스트와의 인터페이스 프로토콜은 UHS(UHS-I 또는 UHS-II), PCI-E(peripheral component interconnect - express), ATA(Advanced Technology Attachment), SATA(serial ATA), PATA(parallel ATA), 또는 SAS(serial attached SCSI)와 같은 인터페이스 프로토콜일 수 있다. 그러나, 호스트(10)와 메모리 시스템(20)간의 인터페이스 프로토콜들은 상술한 예에 한정되지 않으며, USB(Universal Serial Bus), MMC(multi-media card), ESDI(enhanced small disk interface), 또는 IDE(Integrated Drive Electronics) 등과 같은 다른 인터페이스 프로토콜들 중 하나일 수 있다.
비휘발성 메모리 인터페이스(140)는 비휘발성 메모리 장치(200)와 메모리 컨트롤러(100) 사이에서 데이터의 교환을 인터페이스할 수 있다.
CPU(120)는 비휘발성 메모리 장치(200)로/로부터 데이터 기록/독출을 위한 제반 제어 동작을 수행한다. CPU(120)는 버스(160)를 통하여 버퍼 메모리(110), 호스트 인터페이스(130), ECC 블록(150), 및 비휘발성 메모리 인터페이스(140) 사이에서 데이터의 교환을 제어할 수 있다. CPU(120)는 또한, FTL(Flash Translation Layer)을 구동할 수 있다. FTL에 대해서는 도 5를 참조하여 후술한다.
ECC(error correction code) 블록(150)은 비휘발성 메모리 장치(200)에 저장될 데이터를 인코딩하고 비휘발성 메모리 장치(200)로부터 읽혀진 데이터를 디코딩함으로써 독출된 데이터에 포함된 에러를 검출하고 정정할 수 있다.
비록 도면에는 도시되지 않았지만, 비휘발성 메모리 시스템(20)은 메모리 시스템(20)의 파워-온(power-on)시 실행되는 코드 데이터를 저장하는 ROM(read only memory), 클럭 신호를 발생하는 클럭 모듈, 타이머 등의 구성요소를 더 구비할 수 있다.
도 3은 본 발명의 실시예에 따른 비휘발성 메모리 시스템(20A)의 구조를 개략적으로 나타내는 도면이다.
이를 참조하면, 컨트롤러(100A)는 낸드 플래시 컨트롤러일 수 있고, 비휘발성 메모리 장치(200A)는 다수의 낸드 플래시 메모리 소자들(200-1~200-4, 201-1~201-4)을 포함할 수 있다. 도 3에는 2-채널(2-channel)/ 4-뱅크(4-bank) 방식의 하드웨어 구조를 갖는 비휘발성 메모리 시스템(20A)이 예시적으로 도시되나, 본 발명이 이에 한정되는 것은 아니다. 각 낸드 플래시 메모리 소자는 낸드 플래시 칩으로 구현될 수 있다.
도 3에 도시된 비휘발성 메모리 시스템(10A)에서, 컨트롤러(100A)와 비휘발성 메모리 장치(200A)는 2개의 채널(Channel 0, Channel 1)로 연결되며, 각 채널에는 4개의 플래시 메모리 소자들 연결되는 구조이다. 예컨대, 제1 채널(Channel 0)에는 4개의 플래시 메모리 소자들(200-1~200-4)이 연결되고, 제2 채널(Channel 1)에는 4개의 플래시 메모리 소자들(201-1~201-4)이 연결된다. 동일한 채널에 연결된 플래시 메모리 소자들은 I/O 버스와 컨트롤 신호를 공유한다. 채널의 수 및 뱅크의 수는 상술한 예에 한정되지 않고 변경될 수 있음은 당연하다.
낸드 플래시 컨트롤러(100A)는 제1 및 제2 채널(Channel 0, Channel 1)을 완전히 독립적으로 운용할 수 있다. 즉, 낸드 플래시 컨트롤러(100A)는 2개의 낸드 플래시 칩(예컨대, 200-1과 201-1)에 동시에 쓰기 명령어를 입력할 수 있고, 2개의 플래시 칩(예컨대, 200-1과 201-1)은 동시에 동작을 수행할 수 있어 쓰기 동작에 대한 성능을 개선할 수 있다.
하나의 채널에 연결된 낸드 플래시 칩(예컨대, 200-1 내지 200-4)은 서로 다른 CE 신호(CE0 ~ CE3)를 주어 선택될 수 있다. 하나의 채널 내의 여러 낸드 플래시 칩으로 명령어 입력 및 데이터 전송을 동시에 수행할 수는 없다. 즉, 낸드 플래시 칩에 대한 명령어 입력 및 데이터 전송 시간은 중첩될 수 없지만, 플래시 칩에서의 페이지 프로그램 동작은 서로 중첩될 수 있다. 이러한 시스템의 특성을 이용한 기법을 인터리빙이라고 한다.
도 4는 도 3에 도시된 비휘발성 메모리 시스템에서의 인터리빙 기법을 이용한 쓰기 동작을 나타내는 도면이다. 도 4를 참조하면, 하나의 채널 내의 여러 낸드 플래시 칩(예컨대, 200-1~200-4)에 대한 명령어 인가 및 데이터 전송은 순차적으로 이루어지지만, 여러 낸드 플래시 칩(예컨대, 200-1~200-4) 내에서의 프로그램 동작은 중첩될 수 있다. 도 4에 도시되듯이, 각 낸드 플래시 칩(200-1 내지 200-4)에 대한 명령어 입력 및 데이터 전송 시간(T11, T12, T13, T14)는 서로 중첩되지 않고 순차적으로 이루어지지만, 각 플래시 칩에서의 페이지 프로그램 동작 시간(T21, T22, T23, T24)는 중첩될 수 있다.
또한, 제1 채널(Channel 0)을 이용한 쓰기 동작(예컨대, 제1 채널에 연결된 플래시 칩으로의 쓰기 명령어 입력, 데이터 전송 및 해당 플래시 칩에서의 프로그램 동작)과 제2 채널을 이용한 쓰기 동작은 독립적이므로, 동시에 이루어질 수 있다.
도 5는 본 발명의 실시예에 따른 비휘발성 메모리 시스템(1A)의 계층적인 구조를 나타내는 도면이다.
호스트 시스템(10A)은 OS(operating system)과 OS 상에서 동작하는 응용 프로그램(Applicaion1~ApplicationN)을 포함할 수 있다. 플래시 컨트롤러(100A)는 FTL(Flash Translation Layer, 170)과 로우 레벨 드라이버(140A)를 포함할 수 있다. 메모리 장치 드라이버(140A)는 도 2에 도시된 메모리 인터페이스(140) 또는 그 일부일 수 있다.
FTL(170)은 플래시 메모리 장치(200A)를 관리하기 위한 소프트웨어 계층이다. FTL(170)은 호스트(10A)와 메모리 장치 드라이버(140A) 사이에 위치하여 파일 시스템의 수정 없이 플래시 메모리(200A)를 사용할 수 있도록 한다. FTL(170)은 기능적으로 논리-물리 주소 매핑부(171), 가비지 콜렉션부(172), 웨어 레벨링부(173), 인터리빙부(174) 및 파워-오프 복구부(175)를 포함할 수 있다.
논리-물리 주소 매핑부(171)는 주소 매핑 테이블을 이용하여 파일시스템의 논리적 주소와 플래시 메모리(200A)의 물리적 주소를 연결한다. 특정 페이지를 수정하고자 할 경우 FTL(170)은 새로운 페이지를 할당하여 데이터를 저장하고 이를 주소 매핑 테이블을 갱신하여 관리한다.
가비지 콜렉션부(172)는 플래시 메모리(200A)의 블록 내의 유효한 페이지를 관리하기 위한 가비지 콜렉션(garbage collection) 기법을 사용한다. 가비지 콜렉션 기법은 플래시 메모리(200A)의 블록 내의 유효한 페이지를 새로운 블록에 복사하고 해당 블록을 삭제하여 재사용할 수 있도록 하는 기법이다.
웨어 레벨링부(173)는 플래시 메모리(200A)의 수명을 늘리기 위해 웨어레벨링(Wear-leveling) 기법을 사용한다. 웨어레벨링은 블록들의 삭제 가능 횟수를 최대한 비슷하게 관리하여 특정 블록이 빨리 수명이 닳아 사용하지 못하는 상황이 발생하지 않도록 하는 기법이다.
인터리빙부(174)는 도 4를 참조하여 상술한 인터리빙 기법을 지원하기 위한 기능 블록이다. 파워-오프 복구부(175)는 갑작스런 전원 차단에 대한 데이터 손상을 복구할 수 있는 기법을 제공한다. 플래시 메모리(200A)의 블록 관리를 위해 수행되는 일련의 내부 동작에는 가비지 콜렉션, 웨어 레벨링 외에도, 병합(merge), 성능 조절, 등이 더 있을 수 있다.
병합은, 플래시 메모리(200A)에서 비연속적으로 분산되어 있는 데이터를 어느 하나의 블록에 모아서 기록하는 동작을 의미한다. 병합은 프리 블록(데이터가 쓰여지지 않은 블록 또는 소거된 블록)이 없는 경우, 프리 블록을 만들기 위하여 수행될 수 있다. 성능 조절은 비연속적으로 분산되어 있는, 즉 프래그먼트(fragment)로 나뉘어져 있는 페이지들을 정렬하여 한데 모으는 동작을 포함할 수 있다.
LLD(140A)는 플래시 메모리(200A)에 직접 접근할 수 있도록 낸드 플래시 인터페이스를 제공하는 계층이다.
도 6은 본 발명의 일 실시예에 따른 비휘발성 메모리 소자를 구체적으로 나타낸 블록도이다. 도 7은 도 6에 도시된 메모리 셀 어레이를 구체적으로 나타낸 일실시예이고, 도 8은 도 6에 도시된 메모리 셀 어레이를 구체적으로 나타낸 다른 실시예이다.
도 6을 참조하면, 비휘발성 메모리 소자(200-1)는 메모리 셀 어레이(210)와 액세스 회로(212)를 포함한다.
메모리 셀 어레이(210)는 각 비트라인에 접속된 각 NAND 메모리 셀 스트링을 포함하고, 상기 각 NAND 메모리 셀 스트링은 직렬로 접속된 다수의 비휘발성 메모리 셀들을 포함한다. 각 NAND 메모리 셀 스트링은 도 7a에 도시된 바와 같이, 2차원적으로 동일한 평면(또는 레이어(layer))에 배치(또는 구현)될 수 있다. 실시예에 따라, 메모리 셀 어레이(210)는 웨이퍼 적층(wafer stack), 칩 적층(chip stack) 또는 셀 적층(cell stack)을 통하여 도 7b에 도시된 바와 같이 3차원적으로 구현될 수 있다.
도 7및 도 8을 참조하면, NAND 메모리 셀 스트링은 비트라인에 접속된 스트링 선택 트랜지스터(ST1)와 공통소스라인(Common Source Line; CSL)에 접속된 접지 선택 트랜지스터(ST2) 사이에, 직렬로 접속된 다수의 비휘발성 메모리 셀들을 포함한다.
상기 스트링 선택 트랜지스터(ST1)의 게이트는 스트링 선택 라인(string selection line ; SSL)에 접속되고, 다수의 비휘발성 메모리 셀들 각각의 게이트는 다수의 워드라인들 각각에 접속되고, 상기 접지 선택 트랜지스터(ST2)의 게이트는 접지 선택 라인(ground selection line; GSL)에 접속된다. 상기 NAND 메모리 셀 스트링 각각은 각 페이지 버퍼(도 7a의 221-11 내지 221-1m 또는 도 7b의 221-1 내지 221-m)에 연결된다. 이때 실시예에 따라 워드라인들의 개수는 다양하게 구현될 수 있다.
각 NAND 메모리 셀 스트링에 포함된 다수의 비휘발성 메모리 셀들 각각은 1 비트 이상을 저장할 수 있는 플래시 EEPROM(Electrically Erasable Programmable Read-Only Memory)으로 구현될 수 있다.
따라서 다수의 비휘발성 메모리 셀들 각각은 1비트 이상을 저장할 수 있는 NAND 플래시 메모리 셀, 예컨대 MLC(Multi-Level Cell)로 구현될 수 있다.
액세스 회로(212)는 외부, 예컨대 메모리 컨트롤러(100)로부터 출력된 명령 (또는 명령 세트들(command sets))과 어드레스에 따라 데이터 액세스 동작, 예컨대 프로그램 동작, 리드 동작, 또는 이레이즈 동작을 수행하기 위하여 메모리 셀 어레이(210)를 액세스한다. 액세스 회로(212)는 전압 발생기(240), 로우 디코더(250), 컨트롤 로직(260), 컬럼 디코더(270), 페이지 버퍼 & 감지 증폭기 블록(220), Y 게이팅 회로(230) 및 입출력 블록(280)을 포함할 수 있다.
전압 발생기(240)는 컨트롤 로직(260)에 의해 생성된 제어 코드(CMD)에 따라 데이터 액세스 동작에 필요한 전압을 생성할 수 있다. 전압 발생기(240)는 프로그램 동작을 수행하기 위해 필요한 프로그램 전압(Vpgm)과 프로그램 검증 전압(Vpvfy)을 생성하고, 리드 동작을 수행하기 위하여 필요한 리드 전압(Vrd)들을 생성하고, 이레이즈 동작을 수행하기 위하여 필요한 이레이즈 전압(Verase)과 이레이즈 검증 전압(Vevfy)을 생성하고, 각 동작을 수행하기 위하여 필요한 전압을 로우 디코더(250)로 출력한다.
컨트롤 로직(260)은 메모리 컨트롤러(100)로부터 출력된 제어신호(CMD)에 따라 액세스 회로(212)의 전반적인 동작을 제어한다. 예컨대, 컨트롤 로직(260)은 메모리 리드 동작 동안 메모리 리드 상태 정보를 센싱하고, 리드되는 데이터를 메모리 컨트롤러(100)로 출력하도록 제어할 수 있다.
컬럼 디코더(270)는 컨트롤 로직(260)의 제어 하에 컬럼 어드레스(YADD)들을 디코딩하여 다수의 선택신호들을 Y 게이팅 회로(230)로 출력한다.
페이지 버퍼 & 감지 증폭기 블록(220)은 다수의 페이지 버퍼(Page Buffer; PB)들을 포함한다. 다수의 페이지 버퍼들(PB) 각각은 다수의 비트라인들 각각에 접속된다.
다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(260)의 제어에 따라 데이터 리드 동작 동안에는 메모리 셀 어레이(210)에서 리드(read)된 데이터를 임시로 저장하기 위한 드라이버로써 동작할 수 있다. 또한 다수의 페이지 버퍼들(PB) 각각은 컨트롤 로직(260)의 제어에 따라 리드 동작 동안에 다수의 비트라인들 각각의 전압 레벨을 감지 증폭할 수 있는 감지 증폭할 수 있는 감지 증폭기로써 동작할 수 있다.
Y 게이팅 회로(230)는 컬럼 디코더(270)로부터 출력된 다수의 선택신호들에 응답하여 페이지 버퍼 & 감지 증폭기 블록(220)과 입출력 블록(280) 사이에서 데이터(DATA)의 전송을 제어할 수 있다.
입출력 블록(280)은 외부로부터 입력된 데이터(DATA)를 Y 게이팅 회로(230)로 전송하거나 또는 Y 게이팅 회로(230)로부터 출력된 데이터(DATA)를 다수의 입출력 핀들(또는 데이터 버스)를 통하여 메모리 컨트롤러(100)로 전송할 수 있다.
도 9는 본 발명의 일 실시예에 따른 적응적 페어드 페이지 프리-백업 방법을 나타내는 플로우챠트이다. 도 9의 방법은 상술한 본 발명의 실시예에 따른 비휘발성 메모리 시스템에서 수행될 수 있다.
도 9를 참조하면, 메모리 컨트롤러는 호스트로부터 쓰기 요청을 수신하고, 쓰기 요청된 데이터 중 백업이 필요한 데이터(예컨대, LSB 데이터)의 크기를 확인한다(S105).
백업이 필요한 데이터의 크기(이하, "백업 데이터 크기(Backup Data Size)"라 함)가 기준 크기(PDS) 보다 작거나 같으면, 복수(2이상)의 백업 유형들(type) 중 제1 백업 유형을 선택한다(S200). 일 실시예에서 제1 백업 유형은 인터리빙 프리 백업이다. 따라서, 백업 데이터 크기가 기준 크기(PDS) 보다 작거나 같으면 인터리빙 프리 백업을 수행한다(S200).
백업 데이터 크기는 쓰기 요청된 데이터 중 백업이 필요한 데이터(예컨대, LSB 데이터)의 크기(양)을 말한다. 백업 데이터 크기는 페이지 단위일 수 있다. 예컨대, 백업 데이터 크기는 프로그램해야 할 LSB 페이지의 수로 표시될 수 있고, 백업 데이터 크기가 기준 페이지 수 이하이면, 인터리빙 프리 백업을 수행한다(S200).
기준 크기(PDS)는 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수의 1/2 일 수 있다. 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수는 채널 수(N)와 뱅크 수, 그리고 플레인(Plane) 수를 곱한 값일 수 있다. 예컨대, 도 3에 도시된 실시예의 경우, 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수는 [채널수(2)* 뱅크수(4) * 플레인 수] 일 수 있다. 또한, 기준 크기(PDS)는 N/2 개의 채널에 해당하는 페이지 크기일 수 있다. N/2 개의 채널에 해당하는 페이지 크기란, N/2 개의 채널로 동시에 프로그램할 수 있는 페이지수일 수 있다.
그러나, 기준 크기(PDS)가 고정된 값일 필요는 없으며, 가변될 수 있다. 예컨대 N개의 채널들 중 일부 채널이 "비지(busy)"상태라면 동시에 프로그램할 수 있는 페이지수는 달라질 수 있으며, 이에 따라 기준 크기(PDS) 역시 달라질 수 있다.
만약, 백업 데이터 크기가 기준 크기(예컨대, 기준 페이지 수) 보다 크면 메모리 컨트롤러는 백업 횟수를 확인한다(S120). 예컨대, 백업 횟수(# of Backup)가 기준 횟수(PBN, 예컨대, 1) 보다 작거나 같은지를 확인하여(120), 작거나 같으면 제2 백업 유형을 선택하고(S300), 그렇지 않으면 제3 백업 유형을 선택한다(S400). 기준 횟수(PBN)는 1 이상의 정수일 수 있다.
일 실시예에서 제2 백업 유형은 카피-백 프리 백업이고, 제3 백업 유형은 패리티 페이지 프리 백업이다.
따라서, 백업 데이터 크기가 기준 크기(PDS)보다 크고, 백업 횟수가 기준 횟수(PBN) 이하이면, 카피-백 프리 백업을 수행한다(S300), 백업 데이터 크기가 기준 크기(PDS)보다 크고 백업 횟수가 기준 횟수(PBN) 보다 크다면 패리티 페이지 프리 백업을 수행한다(S400).
백업 횟수란, 백업 데이터 크기에 따라 달라질 수 있는 값으로서, 백업 데이터 크기가 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수 이하이면 백업 횟수는 1이고, 백업 데이터 크기가 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수 보다는 크고 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수의 두 배 이하이면 백업 횟수2일 수 있다. 따라서, S120 단계에서, PBN을 기준 횟수가 아닌 제2 기준 크기로 설정하고, 백업 데이터 크기를 제2 기준 크기와 비교하여 카피-백 프리 백업을 할 것인지 패리티 페이지 프리 백업을 할 것인지 결정할 수도 있다.
제2 기준 크기는 비휘발성 메모리 장치에서 동시에 프로그램 할 수 있는 전체 페이지 수일 수 있다. 그러다, 제2 기준 크기는 상술한 기준 페이지수와 마찬가지로, 고정된 값일 필요는 없으며, 가변될 수 있다. 예컨대 N개의 채널들 중 일부 채널이 "비지(busy)" 상태라면 동시에 프로그램할 수 있는 페이지수는 달라질 수 있으며, 이에 따라 제2 기준 크기 역시 달라질 수 있다.
상술한 바와 같이, 본 실시예에 따르면 호스트로부터 쓰기 요청을 수신하며, 백업 데이터 크기 및 백업 횟수를 판단하고, 이에 따라 백업의 종류(유형)을 적응적으로 결정한다.
이하, 본 발명의 일 실시예에 따른 비휘발성 메모리 시스템의 전체 채널의 수가 2인 것으로 가정하여, 인터리빙 프리 백업, 카피-백 프리 백업 및 패리티 페이지 프리 백업에 대하여 상세히 설명한다. 그러나, 채널의 수가 2에 한정되지 않으며, 채널의 수가 N(2이상의 정수)일 때도 본 발명의 실시예가 적용될 수 있음은 물론이다.
도 10은 본 발명의 일 실시예에 따른 인터리빙 프리-백업 방법을 나타내는 플로우챠트이고, 도 11은 본 발명의 일 실시예에 따른 인터리빙 프리-백업 방법을 설명하기 위한 도면이다.
도 10 및 도 11을 참조하면, 본 발명의 일 실시예에 따른 인터리빙 프리-백업 기법은 백업 데이터 크기가 한 개의 채널에 해당하는 경우(예컨대, 한 개의 채널을 이용하여 동시에 프로그램할 수 있는 페이지수 이하인 경우) 사용될 수 있다. 이 경우, 다른 하나의 채널은 유휴(idle)상태가 되는데, 이를 채널 인터리빙 기법을 이용하여 백업 시간을 감출 수 있다. 만약, 채널의 수가 N(2이상의 정수)이라면, 백업 데이터 크기(예컨대, 백업 데이터 페이지 수)가 N/2 이하의 채널에 해당하는 경우(예컨대, N/2 채널을 이용하여 동시에 프로그램할 수 있는 페이지수 이하인 경우), 인터리빙 프리-백업이 사용될 수 있다.
FTL은 페이지 프로그램 셋업 명령(예컨대, "80h")을 제1 및 제2 채널(Channel 0, 1)로 동시에 인가하고, 제1 및 제2 채널 어드레스를 해당 채널로 동시에 인가한다(S220).
S220 단계에서, 페이지 프로그램 셋업 명령(예컨대, "80h")은 제1 및 제2 채널에 공통적으로 인가된다. 제1 및 제2 채널 어드레스는 서로 다를 수 있으며, 제1 채널 어드레스는 제1 채널(Channel 0)로 인가되고, 동시에 제2 채널 어드레스는 제2 채널(Channel 1)로 인가된다. 예컨대, 제1 채널 어드레스는 제1 채널(Channel 0)에 연결된 메모리 소자(예컨대, 플래시 칩)에서 상기 LSB 데이터를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 제2 채널 어드레스는 제2 채널(Channel 1)에 연결된 메모리 소자에서 상기 LSB 데이터를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스이다.
다음으로, 쓰기 요청된 LSB 데이터를 제1 채널 및 제2 채널(Channel 0, 1)을 통하여 동시에 해당 메모리 소자의 페이지 버퍼로 전송한다(S230). 제1 및 제2 채널(Channel 0, 1)로 전송되는 쓰기 데이터는 동일한 데이터이다. 예컨대, 동일한 데이터에 대해서 제1 채널(Channel 0)을 통해서는 쓰기 동작이 수행되고, 제2 채널(Channel 1)을 통해서는 백업 동작이 수행된다.
제1 채널 및 제2 채널(Channel 0, 1)을 통하여 LSB 데이터를 제1 및 제2 채널(Channel 0, 1)의 페이지 버퍼로 전송하면, 도 11에 도시된 바와 같이, LSB 데이터는 제1 및 제2 채널(Channel 0, 1)의 각 캐시 버퍼에 입력된다(도 11의 G1). 페이지 버퍼는 도 11, 도 14, 도 17a 및 도 17b에 도시된 바와 같이, 캐시 버퍼와 페이지 버퍼를 포함할 수 있다.
다음으로, 메모리 컨트롤러는 페이지 프로그램 컨펌 명령(예컨대, "10h")을 제1 및 제2 채널(Channel 0, 1)로 동시에 공통적으로 인가한다.
그러면, 도 11에 도시된 바와 같이, 제1 및 제2 채널(Channel 0, 1)의 해당 비휘발성 메모리 소자(예컨대, 낸드 플래시 칩) 각각은 캐시 버퍼에 저장되어 있는 LSB 데이터를 데이터 버퍼로 저장하고(G2), 데이터 버퍼의 LSB 데이터를 해당 어드레스에 상응하는 페이지로 프로그램한다(G3).
예컨대, 제1 채널의 해당 메모리 소자는 제1 데이터 버퍼의 LSB 데이터를 지정된 데이터 블록의 지정된 페이지로 프로그램하고(G3), 제2 채널의 해당 메모리 소자는 제2 데이터 버퍼의 LSB 데이터를 지정된 백업 블록의 지정된 페이지로 프로그램한다(G3).
다시 도 10을 참조하면, 메모리 컨트롤러는 각 메모리 소자로 상태 체크 명령(예컨대, 70h)를 인가하여, 각 메모리 소자에서 원본 데이터의 프로그램 및 백업 프로그램이 완료되었는지 체크할 수 있다(S250).
도 12는 본 발명의 일 실시예에 따른 인터리빙 프리-백업 방법의 개략적인 타이밍도이다. 도 12에 도시된 바와 같이, 인터리빙 프리-백업 방법에 의하면, 제1 채널(Channel 0)의 페이지 버퍼(예컨대, 캐시 버퍼)로의 데이터 전송과 제2 채널(Channel 1)의 페이지 버퍼(예컨대, 캐시 버퍼)로의 데이터 전송이 동시에 이루어지며(G1), 제1 채널(Channel 0)에서의 원본 데이터의 프로그램과 제2 채널(Channel 1)에서의 백업 데이터의 프로그램이 동시에 이루어진다(G2&G3).
상술한 바와 같이 인터리빙 프리-백업 기법은 원본과 백업을 동시에 수행하기 때문에 채널 인터리빙 기법을 사용하여 백업 시간을 감출 수 있게 된다. 이 기법은 백업 데이터 크기가 총 채널 수의 1/2보다 작거나 같을 경우에 적용될 수 있다.
도 13은 본 발명의 일 실시예에 따른 카피-백 프리-백업 방법을 나타내는 플로우챠트이고, 도 14는 본 발명의 일 실시예에 따른 카피-백 프리-백업 방법을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 카피-백 프리-백업 방법은 낸드 플래시 메모리의 카피-백 동작을 활용한 백업 기법으로서, 하나의 쓰기 요청 내에서 백업이 필요한 데이터의 크기(즉, 백업 데이터 크기)가 기준 크기(PDS)보다 크고 백업 횟수가 1 인 경우 적용될 수 있다. 만약, 채널의 수가 N이라면, 백업 데이터 크기(예컨대, 백업 데이터 페이지 수)가 N/2 채널 크기보다 크고 백업 횟수가 1회 일 때, 카피-백 프리-백업 방법이 사용될 수 있다.
백업 데이터 크기(예컨대, 백업 데이터 페이지 수)가 N/2 채널 크기보다 크다는 것은, N/2 개 채널을 이용하여 동시에 프로그램할 수 있는 페이지 수보다 크다는 것을 의미할 수 있다.
낸드 플래시 메모리는 하나의 페이지가 프로그램이 완료된 이후에도 페이지 버퍼 내에 그 데이터가 그대로 존재한다. 이 데이터를 백업할 때 사용함으로써 데이터 재전송에 대한 오버헤드를 줄일 수 있다.
도 13 및 도 14를 참조하면, 메모리 컨트롤러는 페이지 프로그램 셋업 명령(예컨대, "80h")을 제1 및 제2 채널(Channel 0, 1)로 동시에 공통적으로 인가하고 제1 및 제2 채널 어드레스를 해당 채널로 동시에 인가한다(S320).
다음으로, 제1 및 제2 LSB 데이터(DA, DB)를 해당 채널을 통하여 해당 채널의 페이지 버퍼로 동시에 전송한다(S330). 제1 채널(Channel 0)로 전송되는 제1 LSB 데이터(DA)는 쓰기 요청된 LSB 데이터의 일부이고, 제2 채널(Channel 1)로 전송되는 제2 LSB 데이터(DB)는 쓰기 요청된 LSB 데이터의 다른 일부이다. 따라서, 제1 및 제2 LSB 데이터(DA, DB)는 서로 다른 데이터이다.
제1 채널 어드레스는 제1 채널(Channel 0)에 연결된 메모리 소자(예컨대, 플래시 칩)에서 제1 LSB 데이터(DA)를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 제2 채널 어드레스는 제2 채널(Channel 1)에 연결된 메모리 소자에서 제2 LSB 데이터(DB)를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이다.
도 14에 도시된 바와 같이, 제1 채널(Channel 0)을 통하여 전송된 제1 LSB 데이터(DA)는 제1 채널(Channel 0)의 캐시 버퍼에 입력되고, 제2 채널(Channel 1)을 통하여 전송된 제2 LSB 데이터(DB)는 제2 채널(Channel 1)의 캐시 버퍼에 입력된다(도 14의 G1).
다음으로, 메모리 컨트롤러는 페이지 프로그램 컨펌 명령(예컨대, "10h")을 제1 및 제2 채널로 동시에 공통적으로 인가한다(S340).
그러면, 도 14에 도시된 바와 같이, 제1 및 제2 채널의 해당 비휘발성 메모리 소자 각각은 캐시 버퍼에 저장되어 있는 LSB 데이터(DA, DB)를 해당 데이터 버퍼로 저장하고(G2), 데이터 버퍼의 LSB 데이터(DA, DB)를 해당 어드레스에 상응하는 페이지로 프로그램한다(G3).
예컨대, 제1 채널(Channel 0)의 해당 메모리 소자는 제1 데이터 버퍼의 제1 LSB 데이터(DA)를 지정된 데이터 블록의 지정된 페이지로 프로그램하고(G3), 제2 채널(Channel 1)의 해당 메모리 소자는 제2 데이터 버퍼의 제2 LSB 데이터(DB)를 지정된 데이터 블록의 지정된 페이지로 프로그램한다(G3).
다시 도 13을 참조하면, 메모리 컨트롤러는 각 메모리 소자로 상태 체크 명령(예컨대, 70h)를 인가하여, 각 메모리 소자에서 제1 및 제2 LSB 데이터(DA, DB)의 프로그램이 완료되었는지 체크할 수 있다(S350).
각 메모리 소자에서 제1 및 제2 LSB 데이터(DA, DB)의 프로그램이 완료되었다면, 메모리 컨트롤러는 카피백 프로그램 명령(예컨대, 85h)을 제1 및 제2 채널(Channel 0, 1)로 공통적으로 인가하고, 제3 채널 어드레스를 제1 채널(Channel 0)로, 제4 채널 어드레스를 제2 채널(Channel 1)로 동시에 인가한다(S360).
이 때 제3 채널 어드레스는 제1 채널(Channel 0)에 연결된 메모리 소자(예컨대, 플래시 칩)에서 제1 LSB 데이터(DA)를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스이고, 제4 채널 어드레스는 제2 채널(Channel 1)에 연결된 메모리 소자(예컨대, 플래시 칩)에서 제2 LSB 데이터(DB)를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스이다.
이 때, 제1 및 제2 LSB 데이터(DA, DB)를 해당 채널을 통하여 해당 채널의 페이지 버퍼로 다시 전송할 필요는 없다. 왜냐하면, 제1 및 제2 LSB 데이터(DA, DB)는 해당 채널의 각 페이지 버퍼(예컨대, 캐시 버퍼나 데이터 버퍼)에 남아 있기 때문이다. 따라서, 이 데이터를 재-로딩(re-loading)없이 바로 백업 블록으로 프로그램할 수 있다.
프로그램 컨펌 명령(예컨대, "10h")을 제1 및 제2 채널(Channel 0, 1)로 동시에 공통적으로 인가한다(S370).
그러면, 도 14에 도시된 바와 같이, 제1 및 제2 채널(Channel 0, 1)의 해당 비휘발성 메모리 소자 각각은 캐시 버퍼에 저장되어 있는 LSB 데이터(DA, DB)를 해당 어드레스에 상응하는 페이지로 프로그램함으로써 백업한다(G4).
예컨대, 제1 채널(Channel 0)의 해당 메모리 소자는 제1 캐시 버퍼의 제1 LSB 데이터(DA)를 지정된 백업 블록의 지정된 페이지로 프로그램하고(G4), 제2 채널(Channel 1)의 해당 메모리 소자는 제2 캐시 버퍼의 제2 LSB 데이터(DB)를 지정된 백업 블록의 지정된 페이지로 프로그램한다(G4).
다시 도 13을 참조하면, 메모리 컨트롤러는 각 메모리 소자로 상태 체크 명령(예컨대, 70h)를 인가하여, 각 메모리 소자에서 제1 및 제2 LSB 데이터(DA, DB)의 백업 프로그램이 완료되었는지 체크할 수 있다(S380).
도 15는 본 발명의 일 실시예에 따른 카피백 프리-백업 방법의 개략적인 타이밍도이다. 도 15에 도시된 바와 같이, 카피백 프리-백업 방법에 의하면, 제1 채널(Channel 0)의 페이지 버퍼(예컨대, 캐시 버퍼)로의 제1 LSB 데이터(DA)의 전송과 제2 채널(Channel 1)의 페이지 버퍼(예컨대, 캐시 버퍼)로의 제2 LSB 데이터(DB)의 전송이 병렬적으로 이루어지며(G1), 또한 각 메모리 소자 내에서의1 LSB 데이터(DA)의 프로그램과 제2 LSB 데이터의 프로그램이 병렬적으로 이루어진다(G2&G3).
다음으로, 제1 및 제2 LSB 데이터(DA, DB)의 재-로딩(re-loading)없이, 페이지 버퍼에 남아 있는 제1 및 제2 LSB 데이터(DA< DB)를 백업 블록으로 동시에 프로그램한다(G4).
도 16은 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법을 나타내는 플로우챠트이고, 도 17a 및 도 17b는 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법을 설명하기 위한 도면이다.
도 16, 도 17a 및 도 17b를 참조하면, 먼저, 제1 그룹 LSB 데이터들(DA, DB)에 대한 프로그램을 수행한다(S420).
S420 단계는 도 12에 도시된 S320 내지 S350 단계들과 유사할 수 있다.
예컨대, 프로그램 셋업 명령(예컨대, "80h")을 제1 및 제2 채널(Channel 0, 1)로 공통적으로 인가하고, 제1 및 제2 채널 어드레스를 해당 채널로 동시에 인가한다. 이 때, 제1 채널 어드레스는 제1 LSB 데이터(DA)를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 제2 채널 어드레스는 제2 LSB 데이터(DB)를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이다.
다음으로, 제1 및 제2 LSB 데이터(DA, DB)를 해당 채널을 통하여 해당 채널의 페이지 버퍼로 동시에 전송한다. 제1 및 제2 채널(Channel 0, 1)로 각각 전송되는 제1 및 제2 LSB 데이터(DA, DB)는 서로 다른 데이터로서, 제1 그룹 LSB 데이터에 해당한다.
도 17a에 도시된 바와 같이, 제1 채널(Channel 0)을 통하여 전송된 제1 LSB 데이터(DA)는 제1 채널(Channel 0)의 캐시 버퍼에 입력되고, 제2 채널(Channel 1)을 통하여 전송된 제2 LSB 데이터(DB)는 제2 채널(Channel 1)의 캐시 버퍼에 입력된다(도 17a의 G1).
다음으로, 페이지 프로그램 컨펌 명령(예컨대, "10h")을 제1 및 제2 채널로 동시에 공통적으로 인가한다. 그러면, 도 17a에 도시된 바와 같이, 제1 및 제2 채널(Channel 0, 1)의 해당 비휘발성 메모리 소자 각각은 캐시 버퍼에 저장되어 있는 제1 및 제2 LSB 데이터(DA, DB)를 해당 데이터 버퍼로 저장하고(G2), 데이터 버퍼의 LSB 데이터(DA, DB)를 해당 어드레스에 상응하는 페이지로 프로그램한다(G3).
예컨대, 제1 채널(Channel 0)의 해당 메모리 소자는 제1 데이터 버퍼의 LSB데이터(DA)를 지정된 데이터 블록의 지정된 페이지로 프로그램하고(G3), 제2 채널(Channel 0)의 해당 메모리 소자는 제2 데이터 버퍼의 LSB데이터(DB)를 지정된 데이터 블록의 지정된 페이지로 프로그램한다(G3).
상기와 같은 과정을 통해 제1 그룹 LSB 데이터(DA, DB)에 대한 프로그램이 완료된다.
다시 도 16을 참조하면, 제1 그룹 LSB 데이터들(DA, DB)에 대한 프로그램이 완료된 후, 제2 그룹 데이터(DC, DD)에 대한 프로그램을 수행한다(S430). S430 단계는 S420 단계와 유사하다.
즉, 제3 및 제4 LSB 데이터(DC, DD)에 대한 프로그램은 제1 및 제2 LSB 데이터들(DA, DB)에 대한 프로그램과 유사하므로, 이에 대한 설명은 생략한다.
제3 및 제4 LSB 데이터(DC, DD)에 대한 프로그램 수행 후, 제1 및 제2 LSB 데이터들(DA, DB)을 해당 데이터 블록의 페이지로부터 해당 데이터 버퍼로 독출한다(S440). 이를 위하여, 메모리 컨트롤러는 명령(예컨대, "00h")을 제1 및 제2 채널(Channel 0, 1)로 동시에 공통적으로 인가하고, 또한, 제1 및 제2 채널 어드레스를 해당 채널로 동시에 인가한다. 이 때, 제1 채널 어드레스는 제1 LSB 데이터(DA)를 독출할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 제2 채널 어드레스는 제2 LSB 데이터(DB)를 독출할 데이터 블록의 페이지를 지정하기 위한 어드레스이다.
다음으로, 해당 데이터 버퍼로 독출된 제1 LSB 데이터(DA)와 캐시 버퍼에 남아있는 제3 LSB 데이터(DC)를 배타적 논리합(XOR) 연산하고, 데이터 버퍼로 독출된 제 2 LSB 데이터(DB)와 캐시 버퍼에 남아있는 제4 LSB 데이터(DD)를 배타적 논리합(XOR) 연산한다(S450). XOR 연산한 데이터(이하, XOR 데이터)는 데이터 버퍼에 저장될 수 있다. 독출한 데이터와 페이지 버퍼에 남아있는 데이터의 XOR 연산을 수행하기 위한 XOR 회로가 페이지 버퍼 내에 구현될 수 있다.
다음으로, 메모리 컨트롤러는 데이터 버퍼의 XOR 데이터를 백업 블록으로 프로그램하기 위하여, 카피백 프로그램 명령(예컨대, 85h)을 제1 및 제2 채널(Channel 0, 1)로 공통적으로 인가하고, 제5 및 제6 채널 어드레스를 제1 및 제2 채널을 통해 인가한다(S460).
이 때, 제5 채널 어드레스는 제1 XOR 데이터(DA XOR DC)를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스이고, 제6 채널 어드레스는 제2 XOR 데이터(DB XOR DD)를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스이다.
메모리 컨트롤러는 카피백 프로그램 컨펌 명령(10h)을 제1 및 제2 채널(Channel 0, 1)을 통해 공통적으로 인가한다(S480).
그러면, 도 17b에 도시된 바와 같이, 제1 및 제2 채널(Channel 0, 1)의 해당 비휘발성 메모리 소자 각각은 데이터 버퍼에 저장되어 있는 XOR 데이터를 백업 블록의 해당 어드레스에 상응하는 페이지로 프로그램함으로써 백업한다(G7).
메모리 컨트롤러는 각 메모리 소자로 상태 체크 명령(예컨대, 70h)를 인가하여, 각 메모리 소자에서 XOR 데이터의 프로그램이 완료되었는지 체크할 수 있다(S480).
상술한 바와 같이, 본 발명의 실시예에 따른 패리티 페이지 프리-백업 방법에 의하면, 백업 횟수가 기준 횟수보다 많은 경우, 프로그램할 데이터를 둘 이상의 그룹으로 나누어 순차적으로 프로그램하고, 백업은 둘 이상의 그룹 데이터를 연산하여 한번에 프로그램할 수 있다.
도 18은 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법의 개략적인 타이밍도이다.
패리티 데이터를 이용한 프리-백업 기법은 한 쓰기 요청내에서 2회 이상의 LSB 페이지 백업을 해야 할 경우 적용된다. 즉, 매우 큰 크기의 쓰기 요청이 들어왔을 경우 유리하다. 도 18에 도시된 바와 같이, 본 발명의 일 실시예에 따른 패리티 페이지 프리-백업 방법에 의하면, 제1 그룹 LSB 데이터(DA, DB)를 병렬로 전송하고(G1), 각 메모리 소자 내에서의 프로그램 역시 병렬로 수행된다(G2&G3).
제1 그룹 LSB 데이터(DA, DB)의 프로그램이 완료되면, 제2 그룹 LSB 데이터(DC, DD)를 병렬로 전송하고(G4), 각 메모리 소자 내에서의 프로그램 역시 병렬로 수행된다(G5).
제2 그룹 LSB 데이터(DC, DD)의 프로그램이 완료되면, 상기 제1 그룹 LSB 데이터(DA, DB)와 상기 제2 그룹 LSB 데이터(DC, DD)를 논리 연산하여(G6), 상기 논리 연산된 데이터(이를 패리티 데이터라 함)를 프로그램함으로써 백업한다(G7).
본 발명의 실시예에 따른 패리티 페이지 프리-백업 방법은 통상의 백업 방법과 대비하여 1회의 쓰기 동작을 1회의 읽기 동작으로 대체할 수 있다. 일반적으로 쓰기 동작은 약 ~600us (LSB 페이지 기준) 인데 반해, 읽기 동작은 약 50us 미만이다.
상술한 바와 같이, 본 발명의 실시예에 따르면, 백업 데이터 크기에 따라 백업 유형을 적응적으로 선택한다. 이에 따라, 통상의 백업 기법 대비 쓰기 지연에서 큰 성능 개선을 보인다.
도 19는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 다른 실시 예를 나타낸다. 도 19를 참조하면, 전자 시스템(400)은 이동 전화기(cellular phone), 스마트 폰(smart phone), PDA(personal digital assistant), 또는 무선 통신 장치로 구현될 수 있다. 전자 시스템(400)은 비휘발성 메모리 장치(200)와 비휘발성 메모리 장치(200)의 동작을 제어할 수 있는 메모리 컨트롤러(100)를 포함한다. 메모리 컨트롤러(100)는 프로세서(410)의 제어에 따라 비휘발성 메모리 장치(200)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 이레이즈(erase) 동작, 또는 리드(read) 동작을 제어할 수 있다.
비휘발성 메모리 장치(200)에 프로그램된 데이터는 프로세서(410) 및/또는 메모리 컨트롤러(100)의 제어에 따라 디스플레이(420)를 통하여 디스플레이될 수 있다.
무선 송수신기(430)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(430)는 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(410)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 프로세서(410)는 무선 송수신기(430)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 컨트롤러(100) 또는 디스플레이(420)로 전송할 수 있다. 메모리 컨트롤러(450)는 프로세서(410)에 의하여 처리된 신호를 비휘발성 메모리 장치(200)에 프로그램할 수 있다.
또한, 무선 송수신기(430)는 프로세서(410)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(440)는 프로세서(410)의 동작을 제어하기 위한 제어 신호 또는 프로세서(410)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
프로세서(410)는 메모리 컨트롤러(100)로부터 출력된 데이터, 무선 송수신기 (430)로부터 출력된 데이터, 또는 입력 장치(440)로부터 출력된 데이터가 디스플레이(420)를 통하여 디스플레이될 수 있도록 디스플레이(420)의 동작을 제어할 수 있다.
실시 예에 따라, 비휘발성 메모리 장치(200)의 동작을 제어할 수 있는 메모리 컨트롤러(100)는 프로세서(410)의 일부로서 구현될 수 있고 또한 프로세서(410)와 별도의 칩으로 구현될 수 있다.
도 20은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다. 도 20에 도시된 전자 시스템(600)은 메모리 카드 (memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 전자 시스템(600)은 비휘발성 메모리 장치(200), 메모리 컨트롤러(100), 및 카드 인터페이스(620)를 포함한다.
메모리 컨트롤러(100)는 메모리 장치(100)와 카드 인터페이스(620) 사이에서 데이터의 교환을 제어할 수 있다.
실시 예에 따라, 카드 인터페이스(620)는 SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 카드 인터페이스(620)는 호스트(630)의 프로토콜에 따라 호스트(630)와 메모리 컨트롤러(100) 사이에서 데이터 교환을 인터페이스할 수 있다.
실시 예에 따라 카드 인터페이스(620)는 USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스라 함은 호스트(630)가 사용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어, 또는 신호 전송 방식을 의미할 수 있다.
전자 시스템(600)이 PC, 태블릿 PC, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(630)의 호스트 인터페이스(650)와 접속될 때, 호스트 인터페이스(650)는 마이크로프로세서(640)의 제어에 따라 카드 인터페이스(620)와 메모리 컨트롤러(100)를 통하여 비휘발성 메모리 장치(200)와 데이터 통신을 수행할 수 있다.
도 21은 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 전자 시스템의 또 다른 실시 예를 나타낸다. 도 21을 참조하면, 전자 시스템(900)은 SSD(solid state drive)와 같은 데이터 처리 장치로 구현될 수 있다. 전자 시스템(900)은 다수의 메모리 장치들(200), 다수의 메모리 장치들(200) 각각의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(100), DRAM과 같은 휘발성 메모리 장치(930), 메모리 컨트롤러(100)와 호스트(940) 사이에서 주고받는 데이터를 휘발성 메모리 장치(930)에 저장하는 것을 제어하는 버퍼 매니저(920)를 포함할 수 있다.
도 22는 본 발명의 실시예에 따른 비휘발성 메모리 시스템을 포함하는 데이터 처리 시스템의 또 다른 실시 예를 나타낸다. RAID(redundant array of independent disks) 시스템으로 구현될 수 있는 데이터 처리 시스템(1000)은 RAID 컨트롤러(1010)와 다수의 메모리 시스템들(900-1~900-n; n는 자연수)을 포함할 수 있다.
다수의 메모리 시스템들(900-1~900-n) 각각은 도 21에 도시된 시스템 (900)일 수 있다. 다수의 메모리 시스템들(900-1~900-n)은 RAID 어레이를 구성할 수 있다. 데이터 처리 장치(1000)는 PC(personal computer) 또는 SSD로 구현될 수 있다.
프로그램 동작 동안, RAID 컨트롤러(1010)는 호스트(HOST)로부터 출력된 프로그램 명령에 따라 호스트(HOST)로부터 출력된 프로그램 데이터를 RAID 레벨에 따라 다수의 메모리 시스템들(900-1~900-n) 중에서 적어도 어느 하나의 메모리 시스템로 출력할 수 있다.
리드 동작 동안, RAID 컨트롤러(1010)는 호스트(HOST)로부터 출력된 리드 명령에 따라 다수의 메모리 시스템들(900-1~900-n) 중에서 적어도 어느 하나의 메모리 시스템으로부터 읽혀진 데이터를 호스트(HOST)로 전송할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
상기 본 발명의 내용은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
메모리 시스템: 10
컨트롤러 : 100
비휘발성 메모리 장치 : 200
호스트 인터페이스 : 110
메모리: 120
메모리 인터페이스: 140
CPU : 150

Claims (10)

  1. 비휘발성 멀티-레벨 셀 메모리 장치를 포함하는 메모리 시스템에서의 데이터 백업 방법에 있어서,
    호스트로부터 쓰기 요청을 수신하고, 상기 쓰기 요청된 데이터중 백업이 필요한 데이터의 크기(이하, 백업 데이터 크기)를 판단하는 단계;
    상기 백업 데이터 크기에 따라, 둘 이상의 다른 백업 유형들 중 하나를 선택하는 단계; 및
    상기 선택된 백업 유형에 따라 백업을 실행하는 단계를 포함하고,
    상기 하나를 선택하는 단계는
    상기 백업 데이터 크기가 기준 크기 이하인 경우, 제1 백업 유형을 선택하는 단계; 및
    상기 백업 데이터 크기가 상기 기준 크기보다 큰 경우 백업 횟수를 더 판단하고, 상기 백업 데이터 크기 및 상기 백업 횟수에 따라, 제2 백업 유형 및 제3 백업 유형 중 하나를 선택하는 단계를 포함하는 적응적 데이터 백업 방법.
  2. 삭제
  3. 제1 항에 있어서, 상기 비휘발성 멀티-레벨 셀 메모리 장치는
    N(2이상)개의 채널을 통하여 컨트롤러와 연결되고,
    상기 채널들 각각에는 복수(2이상)의 메모리 소자들이 연결되며,
    상기 기준 크기는 N/2 개 채널에 해당하는 페이지인 적응적 데이터 백업 방법.
  4. 제3 항에 있어서, 상기 제2 백업 유형 및 상기 제3 백업 유형 중 하나를 선택하는 단계는
    상기 백업 횟수가 기준 횟수 이하이면 상기 제2 백업 유형(카피-백 프리 백업)을 선택하는 단계; 및
    상기 백업 횟수가 상기 기준 횟수 보다 크면 상기 제3 백업 유형을 선택하는 단계를 포함하는 적응적 데이터 백업 방법.
  5. 제4 항에 있어서, 상기 제1 백업 유형이 선택된 경우,
    상기 선택된 백업 유형에 따라 백업을 실행하는 단계는
    페이지 프로그램 셋업 명령을 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계;
    제1 채널 어드레스를 상기 제1 채널로 인가하는 동시에 제2 채널 어드레스를 상기 제2 채널로 인가하는 단계;
    쓰기 요청된 LSB 데이터를 상기 제1 채널로 전송하는 동시에, 상기 LSB 데이터를 상기 제2 채널로 전송하는 단계; 및
    페이지 프로그램 컨펌 명령을 상기 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계를 포함하며,
    상기 제1 채널 어드레스는 상기 제1 채널에 연결된 제1 메모리 소자에서 상기 LSB 데이터를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이고,
    상기 제2 채널 어드레스는 상기 제2 채널에 연결된 제2 메모리 소자에서 상기 LSB 데이터를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스인 적응적 데이터 백업 방법.
  6. 제5 항에 있어서, 상기 선택된 백업 유형에 따라 백업을 실행하는 단계는
    상기 제1 채널을 통해 전송된 상기 LSB 데이터를 상기 제1 메모리 소자의 페이지 버퍼에 저장하는 단계;
    상기 제1 채널을 통해 전송된 상기 LSB 데이터를 상기 제2 메모리 소자의 페이지 버퍼에 저장하는 단계;
    상기 제1 메모리 소자가 상기 페이지 프로그램 컨펌 명령에 응답하여 해당 페이지 버퍼의 상기 LSB 데이터를 상기 제1 채널 어드레스에 상응하는 상기 데이터 블록의 페이지에 프로그램하는 단계; 및
    상기 제2 메모리 소자가 상기 페이지 프로그램 컨펌 명령에 응답하여 해당 페이지 버퍼의 상기 LSB 데이터를 상기 제2 채널 어드레스에 상응하는 상기 백업 블록의 페이지에 프로그램하는 단계를 더 포함하며,
    상기 데이터 블록의 페이지에 프로그램하는 단계 및 상기 백업 블록의 페이지에 프로그램하는 단계는 병렬적으로 수행되는 적응적 데이터 백업 방법.
  7. 제4 항에 있어서, 상기 제2 백업 유형이 선택된 경우,
    상기 선택된 백업 유형에 따라 백업을 실행하는 단계는
    페이지 프로그램 셋업 명령을 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계;
    제1 채널 어드레스를 상기 제1 채널로 인가하는 동시에 제2 채널 어드레스를 상기 제2 채널로 인가하는 단계-상기 제1 채널 어드레스는 상기 제1 채널에 연결된 제1 메모리 소자에서 제1 LSB 데이터를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 상기 제2 채널 어드레스는 상기 제2 채널에 연결된 제2 메모리 소자에서 제2 LSB 데이터를 기입할 데이터 블록의 페이지를 지정하기 위한 어드레스임-;
    쓰기 요청된 LSB 데이터의 일부인 상기 제1 LSB 데이터를 상기 제1 채널로 전송하는 동시에, 상기 쓰기 요청된 LSB 데이터의 다른 일부인 상기 제2 LSB 데이터를 상기 제2 채널로 전송하는 단계;
    페이지 프로그램 컨펌 명령을 상기 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계;
    상기 제1 및 제2 채널로 공통적으로 상태 체크 명령을 인가하는 단계;
    상기 상태 체크 명령에 따른 응답을 통해 상기 제1 및 제2 메모리 소자에서의 상기 제1 LSB 데이터 및 상기 제2 LSB 데이터의 프로그램이 완료되었는지 체크한 후, 상기 제1 및 제2 채널로 공통적으로 카피백 프로그램 명령을 인가하는 단계;
    제3 채널 어드레스를 상기 제1 채널로 인가하는 동시에 제4 채널 어드레스를 상기 제2 채널로 인가하는 단계-상기 제3 채널 어드레스는 상기 제1 메모리 소자에서 상기 제1 LSB 데이터를 백업할 데이터 블록의 페이지를 지정하기 위한 어드레스이고, 상기 제4 채널 어드레스는 상기 제2 메모리 소자에서 상기 제2 LSB 데이터를 백업할 백업 블록의 페이지를 지정하기 위한 어드레스임-; 및
    프로그램 컨펌 명령을 상기 제1 및 제2 채널로 동시에 공통적으로 인가하는 단계를 포함하는 적응적 데이터 백업 방법.
  8. 제7 항에 있어서, 상기 선택된 백업 유형에 따라 백업을 실행하는 단계는
    (c1) 상기 제1 채널을 통해 전송된 상기 제1 LSB 데이터를 상기 제1 메모리 소자의 페이지 버퍼에 저장하는 단계;
    (c2) 상기 제2 채널을 통해 전송된 상기 제2 LSB 데이터를 상기 제2 메모리 소자의 페이지 버퍼에 저장하는 단계;
    (c3) 상기 제1 메모리 소자가 상기 페이지 프로그램 컨펌 명령에 응답하여 해당 페이지 버퍼의 상기 제1 LSB 데이터를 상기 제1 채널 어드레스에 상응하는 데이터 블록의 페이지에 프로그램하는 단계;
    (c4) 상기 제2 메모리 소자가 상기 페이지 프로그램 컨펌 명령에 응답하여 해당 페이지 버퍼의 상기 제2 LSB 데이터를 상기 제2 채널 어드레스에 상응하는 데이터 블록의 페이지에 프로그램하는 단계;
    (c5) 상기 제1 메모리 소자가 상기 페이지 프로그램 컨펌 명령에 응답하여 해당 페이지 버퍼에 남아 있던 상기 제1 LSB 데이터를 상기 제3 채널 어드레스에 상응하는 백업 블록의 페이지에 프로그램하는 단계;
    (c6) 상기 제2 메모리 소자가 상기 페이지 프로그램 컨펌 명령에 응답하여 해당 페이지 버퍼에 남아 있던 상기 제2 LSB 데이터를 상기 제4 채널 어드레스에 상응하는 백업 블록의 페이지에 프로그램하는 단계를 포함하며,
    (c3) 단계와 (c4) 단계는 병렬적으로 수행되고, (c5) 단계와 (c6) 단계는 병렬적으로 수행되는 적응적 데이터 백업 방법.
  9. 제4 항에 있어서, 상기 제3 백업 유형이 선택된 경우,
    상기 선택된 백업 유형에 따라 백업을 실행하는 단계는
    제1 그룹 LSB 데이터를 제1 및 제2 채널을 통하여 전송하여 제1 및 제2 채널의 메모리 소자들에 프로그램하는 단계
    상기 제1 그룹 LSB 데이터의 프로그램이 완료된 후, 제2 그룹 LSB 데이터를 제1 및 제2 채널을 통하여 전송하여 제1 및 제2 채널의 메모리 소자들에 프로그램하는 단계;
    상기 제1 그룹 LSB 데이터와 상기 제2 그룹 LSB 데이터를 논리 연산하여 패리티 데이터를 생성하는 단계; 및
    상기 패리티 데이터를 상기 제1 및 제2 채널의 메모리 소자들에 백업하는 단계를 포함하는 적응적 데이터 백업 방법.
  10. 제9 항에 있어서, 상기 선택된 백업 유형에 따라 백업을 실행하는 단계는
    상기 패리티 데이터를 생성하는 단계 이전에
    상기 제1 그룹 LSB 데이터를 페이지 버퍼로 독출하는 단계를 더 포함하며,
    상기 패리티 데이터는 상기 페이지 버퍼 내에서 상기 제1 그룹 LSB 데이터와 상기 제2 그룹 LSB 데이터를 배타적 논리합 연산을 통해 생성되는 적응적 데이터 백업 방법.
KR1020130028065A 2013-03-15 2013-03-15 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법 KR102094334B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130028065A KR102094334B1 (ko) 2013-03-15 2013-03-15 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법
US14/208,600 US9747170B2 (en) 2013-03-15 2014-03-13 Non-volatile multi-level cell memory system and method of performing adaptive data back-up in the system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130028065A KR102094334B1 (ko) 2013-03-15 2013-03-15 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법

Publications (2)

Publication Number Publication Date
KR20140113110A KR20140113110A (ko) 2014-09-24
KR102094334B1 true KR102094334B1 (ko) 2020-03-27

Family

ID=51533849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130028065A KR102094334B1 (ko) 2013-03-15 2013-03-15 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법

Country Status (2)

Country Link
US (1) US9747170B2 (ko)
KR (1) KR102094334B1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2507961A (en) 2012-11-14 2014-05-21 Ibm Back-up and restoration of data between volatile and flash memory
GB2517435A (en) 2013-08-19 2015-02-25 Ibm Fast data back-up and restore between volatile and flash memory
US9245633B2 (en) * 2014-01-22 2016-01-26 Htc Corporation Storage device, electronic device, and method for programming memory
US9710326B2 (en) 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
KR102310580B1 (ko) * 2014-10-24 2021-10-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102248207B1 (ko) 2014-10-30 2021-05-06 삼성전자주식회사 저장 장치 및 그것의 동작 방법
US9778848B2 (en) * 2014-12-23 2017-10-03 Intel Corporation Method and apparatus for improving read performance of a solid state drive
US10338817B2 (en) * 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
US10223311B2 (en) * 2015-03-30 2019-03-05 Samsung Electronics Co., Ltd. Semiconductor memory device for sharing inter-memory command and information, memory system including the same and method of operating the memory system
US9632715B2 (en) 2015-08-10 2017-04-25 International Business Machines Corporation Back-up and restoration of data between volatile and flash memory
KR20170025714A (ko) * 2015-08-31 2017-03-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN105302489B (zh) * 2015-10-30 2018-03-13 致象尔微电子科技(上海)有限公司 一种异构多核远程嵌入式存储器系统与方法
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
CN107957921B (zh) * 2017-12-08 2022-04-26 武汉瑞纳捷半导体有限公司 一种均衡磨损的智能卡掉电数据保护方法
US10636459B2 (en) 2018-05-30 2020-04-28 Micron Technology, Inc. Wear leveling
US10740188B2 (en) 2018-12-07 2020-08-11 Winbond Electronics Corp. Volatile memory device and method for efficient bulk data movement, backup operation in the volatile memory device
CN109783275A (zh) * 2018-12-17 2019-05-21 北京春鸿科技有限公司 向多个wifi存储设备进行文件备份的方法及终端
TWI686815B (zh) * 2018-12-18 2020-03-01 華邦電子股份有限公司 高效資料移動的方法以及揮發性記憶體裝置
US11221950B2 (en) * 2019-12-19 2022-01-11 Western Digital Technologies, Inc. Storage system and method for interleaving data for enhanced quality of service
US11150839B2 (en) 2019-12-19 2021-10-19 Western Digital Technologies, Inc. Host and method for interleaving data in a storage system for enhanced quality of service
US11269779B2 (en) 2020-05-27 2022-03-08 Microsoft Technology Licensing, Llc Memory system with a predictable read latency from media with a long write latency
CN114063883A (zh) * 2020-07-31 2022-02-18 伊姆西Ip控股有限责任公司 存储数据方法、电子设备和计算机程序产品
CN112667446B (zh) * 2021-01-13 2022-11-08 珠海妙存科技有限公司 Mlc nand的数据备份方法、装置及闪存系统
KR20230056901A (ko) 2021-10-21 2023-04-28 에스케이하이닉스 주식회사 메모리 장치에 데이터를 프로그램하는 장치 및 방법
US20230376243A1 (en) * 2022-05-18 2023-11-23 Micron Technology, Inc. Storing parity during refresh operations

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100799688B1 (ko) 2007-01-03 2008-02-01 삼성전자주식회사 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
US20120233417A1 (en) * 2011-03-11 2012-09-13 Microsoft Corporation Backup and restore strategies for data deduplication

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100512181B1 (ko) 2003-07-11 2005-09-05 삼성전자주식회사 멀티 레벨 셀을 갖는 플래시 메모리 장치와 그것의 독출방법 및 프로그램 방법
KR100673703B1 (ko) 2005-06-14 2007-01-24 주식회사 하이닉스반도체 멀티 레벨 셀들을 포함하는 플래시 메모리 장치의 카피백동작 제어 방법
KR20070109686A (ko) 2006-05-12 2007-11-15 주식회사 하이닉스반도체 멀티 레벨 셀 낸드 플래쉬 메모리에서 에러 정정 기법을사용한 개선된 카피백 동작
US7848141B2 (en) 2006-10-31 2010-12-07 Hynix Semiconductor Inc. Multi-level cell copyback program method in a non-volatile memory device
JP2009205555A (ja) 2008-02-28 2009-09-10 Toshiba Corp メモリシステム
KR101541736B1 (ko) * 2008-09-22 2015-08-04 삼성전자주식회사 멀티-레벨 셀 플래시 메모리 장치에서의 lsb 페이지 복구 방법
KR101024142B1 (ko) 2009-02-02 2011-03-22 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법
US7990795B2 (en) 2009-02-19 2011-08-02 Freescale Semiconductor, Inc. Dynamic random access memory (DRAM) refresh
CN101872644A (zh) 2009-04-24 2010-10-27 威刚科技(苏州)有限公司 电子存储装置及其存储方法
KR20110065757A (ko) 2009-12-10 2011-06-16 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 이것의 카피백 방법
KR101626080B1 (ko) 2010-02-17 2016-06-01 삼성전자주식회사 페이지 버퍼 관리 방법과 상기 방법을 수행할 수 있는 장치들
KR101041837B1 (ko) 2010-04-09 2011-06-17 (주)다윈텍 파일저장 제어장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100799688B1 (ko) 2007-01-03 2008-02-01 삼성전자주식회사 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
US20120233417A1 (en) * 2011-03-11 2012-09-13 Microsoft Corporation Backup and restore strategies for data deduplication
KR101994491B1 (ko) 2011-03-11 2019-06-28 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 데이터 중복제거를 위한 백업 및 복원 전략

Also Published As

Publication number Publication date
US9747170B2 (en) 2017-08-29
US20140281174A1 (en) 2014-09-18
KR20140113110A (ko) 2014-09-24

Similar Documents

Publication Publication Date Title
KR102094334B1 (ko) 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법
US11334448B2 (en) Memory system and operating method thereof
US8904090B2 (en) Non-volatile memory device, devices having the same, and method of operating the same
JP5585919B2 (ja) 電源遮断管理
US20160179422A1 (en) Method of performing garbage collection and raid storage system adopting the same
US20150347291A1 (en) Flash memory based storage system and operating method
CN110275673B (zh) 存储装置及其操作方法
TWI451249B (zh) 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置
TW201437807A (zh) 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
TWI421870B (zh) 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
US10296233B2 (en) Method of managing message transmission flow and storage device using the method
US11675543B2 (en) Apparatus and method for processing data in memory system
US9378130B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
CN112015329A (zh) 存储系统及其操作方法
US8943289B2 (en) Data moving method for flash memory module, and memory controller and memory storage apparatus using the same
CN111580744A (zh) 存储器控制器及其操作方法
TWI521346B (zh) 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置
KR102415218B1 (ko) 메모리 시스템 및 이의 동작 방법
US11586379B2 (en) Memory system and method of operating the same
CN106935265B (zh) 非易失性存储器装置以及包括该非易失性存储器装置的数据存储装置
CN110851382B (zh) 存储控制器及其操作方法和具有存储控制器的存储器系统
US20240069750A1 (en) Storage device including nonvolatile memory device and operating method of storage device
US20230033610A1 (en) Memory system and operating method thereof
KR20240008590A (ko) 저장 장치 및 그 동작 방법
KR20230160620A (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