KR102292198B1 - 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102292198B1
KR102292198B1 KR1020140163396A KR20140163396A KR102292198B1 KR 102292198 B1 KR102292198 B1 KR 102292198B1 KR 1020140163396 A KR1020140163396 A KR 1020140163396A KR 20140163396 A KR20140163396 A KR 20140163396A KR 102292198 B1 KR102292198 B1 KR 102292198B1
Authority
KR
South Korea
Prior art keywords
memory
block
time
memory blocks
dummy
Prior art date
Application number
KR1020140163396A
Other languages
English (en)
Other versions
KR20160044989A (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 US14/825,853 priority Critical patent/US9798657B2/en
Publication of KR20160044989A publication Critical patent/KR20160044989A/ko
Priority to US15/701,978 priority patent/US10133665B2/en
Priority to US16/173,390 priority patent/US10671524B2/en
Application granted granted Critical
Publication of KR102292198B1 publication Critical patent/KR102292198B1/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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention

Abstract

본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은: 복수의 메모리 블록들 중 전부 프로그램되지 않은 메모리 블록을 더미 데이터로 프로그램하는 단계; 메모리 블록들 각각이 물리적으로 소거된 시점과 전부 프로그램된 시점 사이의 시간인 제 1 시간, 및 상기 전부 프로그램된 시점 후 전부 프로그램된 상태가 지속된 시간인 제 2 시간을 획득하는 단계; 상기 제 1 시간이 증가할수록 그리고 상기 제 2 시간이 감소할수록 증가하는 디스터브 지수를 산출하는 단계; 상기 디스터브 지수에 따라 가비지 컬렉션을 위한 희생 블록을 선택하는 단계; 그리고 상기 희생 블록의 유효 페이지의 데이터를 자유 블록으로 복사하는 단계를 포함할 수 있다. 본 발명의 실시 예에 따르면, 데이터 저장 장치의 신뢰성을 향상시킬 수 있다.

Description

불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE INCLUDING NONVOLATILE MEMORY DEVICE AND OPERATING METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽기 및 쓰기 속도가 빠른 장점이 있지만, 전원 공급이 끊기면 저장된 데이터가 사라져 버리는 단점이 있다. 반면에, 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 저장된 데이터가 보존된다. 그러므로, 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 저장하는 데 쓰인다.
한편, 불휘발성 메모리 장치는 겹쳐 쓰기(over write) 동작을 지원하지 않기 때문에, 프로그램 동작 전에 소거 동작이 선행되어야 한다. 이러한 불휘발성 메모리 장치의 특성으로 인해 가비지 컬렉션(garbage collection)이 수행된다. 가비지 컬렉션은 희생 블록(victim block)을 선택하고, 희생 블록의 유효 페이지(valid page)를 자유 블록(free block)에 복사하고, 희생 블록을 소거한 다음에 그것을 자유 블록으로 만든 동작이다.
일반적으로 가비지 컬렉션 동작시, 무효 페이지의 수가 가장 많은 메모리 블록이 희생 블록으로써 선택된다. 그러나, 메모리 셀이 연결되는 셀 스트링이 기판에 수직으로 형성되는 3차원 불휘발성 메모리 장치의 경우, 제조 공정의 특성에 의해 야기되는 여러 문제로 인하여, 데이터 저장시 그 신뢰성을 확보하기 어려울 수 있다. 따라서, 불휘발성 메모리 장치의 신뢰성을 확보하기 위하여, 기존과는 다른 새로운 기준(criteria)을 마련하여 가비지 컬렉션을 실행할 필요성이 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 디스터브 지수를 이용하여 가비지 컬렉션 동작을 실행할 수 있다. 그 결과, 데이터 저장 장치의 신뢰성을 향상시킬 수 있다.
본 발명의 실시 예에 따른, 기판과 수직 방향으로 형성되는 복수의 셀 스트링들을 포함하고 복수의 메모리 블록들로 구성되는 불휘발성 메모리 장치, 및 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법은: 상기 메모리 블록들 각각이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에, 상기 복수의 메모리 블록들 중 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 메모리 블록들을 더미 데이터로 프로그램하는 단계; 상기 메모리 블록들 각각이 물리적으로 소거된 시점과 전부 프로그램된 시점 사이의 시간인 제 1 시간, 및 상기 전부 프로그램된 시점 후 전부 프로그램된 상태가 지속된 시간인 제 2 시간을 획득하는 단계; 상기 제 1 시간 및 상기 제 2 시간에 기초하여, 상기 제 1 시간이 증가할수록 그리고 상기 제 2 시간이 감소할수록 증가하는 디스터브 지수를 산출하는 단계; 상기 디스터브 지수에 따라, 가비지 컬렉션을 위한 희생 블록을 선택하는 단계; 그리고 상기 희생 블록의 유효 페이지의 데이터를 자유 블록으로 복사하는 단계를 포함할 수 있다.
실시 예로써, 상기 희생 블록을 선택하는 단계는 상기 디스터브 지수가 0인지 여부를 판단하는 단계를 포함할 수 있다.
다른 실시 예로써, 상기 판단 결과, 상기 디스터브 지수가 O인 메모리 블록들이 상기 희생 블록으로 우선적으로 선택될 수 있다.
또 다른 실시 예로써, 상기 디스터브 지수가 0인 메모리 블록들 중 무효 페이지의 수가 가장 많은 메모리 블록이 상기 희생 블록으로 우선적으로 선택될 수 있다.
또 다른 실시 예로써, 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 메모리 블록은 상기 희생 블록으로 선택되지 않을 수 있다.
또 다른 실시 예로써, 상기 복수의 메모리 블록들 중 상기 디스터브 지수가 0인 메모리 블록이 없는 경우, 상기 디스터브 지수가 가장 작은 메모리 블록이 상기 희생 블록으로 선택될 수 있다.
또 다른 실시 예로써, 상기 희생 블록을 선택하는 단계는 상기 메모리 블록들 각각의 무효 페이지의 수가 기준 값 이상인지 여부를 판단하는 단계를 포함할 수 있다.
또 다른 실시 예로써, 상기 무효 페이지의 수가 상기 기준 값 이상인 메모리 블록들 중, 상기 디스터브 지수가 0인 메모리 블록이 상기 희생 블록으로 선택될 수 있다.
또 다른 실시 예로써, 상기 디스터브 지수를 산출하는 단계에서, 상기 제 1 시간 및 상기 제 2 시간에 따라 상기 제 1 시간 및 상기 제 2 시간에 각각 가중치가 부여될 수 있다.
또 다른 실시 예로써, 상기 자유 블록이 전부 프로그램되지 않은 경우, 상기 자유 블록이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에 상기 자유 블록의 프로그램되지 않은 페이지를 더미 데이터로 프로그램하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 자유 블록이 전부 프로그램되지 않고, 서든 파워-오프(sudden power-off) 또는 파워-온 리셋(power-on reset; POR)이 발생한 경우, 상기 자유 블록의 프로그램되지 않은 페이지를 더미 데이터로 프로그램하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시 예에 따른, 복수의 메모리 블록들로 구성된 3차원 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법은: 상기 메모리 블록들 각각이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에, 상기 복수의 메모리 블록들 중 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 메모리 블록들을 더미 데이터로 프로그램하는 단계; 상기 메모리 블록들 각각이 전부 프로그램된 시점 후 전부 프로그램된 상태가 지속된 시간을 획득하는 단계; 가비지 컬렉션을 위한 희생 블록으로서, 상기 전부 프로그램된 상태가 지속된 시간이 임계 시간 이상인 메모리 블록들을 선택하는 단계; 그리고 상기 희생 블록의 유효 페이지의 데이터를 자유 블록으로 복사하는 단계를 포함할 수 있다.
실시 예로써, 상기 전부 프로그램된 상태가 지속된 시간이 상기 임계 시간 이상인 메모리 블록들 중, 무효 페이지의 수가 가장 많은 메모리 블록이 상기 희생 블록으로 우선적으로 선택될 수 있다.
다른 실시 예로써, 상기 임계 시간은, 상기 메모리 블록들 각각이 물리적으로 소거된 시점과 상기 전부 프로그램된 시점 사이의 시간에 따라 가변할 수 있다.
또 다른 실시 예로써, 상기 자유 블록이 전부 프로그램되지 않은 경우, 상기 자유 블록이 물리적으로 소거된 시점부터 기준 시간이 경과한 시점에 상기 자유 블록의 프로그램되지 않은 페이지를 더미 데이터로 프로그램하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 데이터 저장 장치는: 복수의 메모리 블록들을 포함하고, 각각의 메모리 블록은 복수의 워드 라인들과 복수의 비트 라인들을 포함하고, 각각의 비트 라인은 기판과 수직 방향으로 형성된 복수의 셀 스트링들과 연결되는 불휘발성 메모리 장치; 그리고 상기 메모리 블록들 각각이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에 상기 복수의 메모리 블록들 중 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 메모리 블록들을 더미 데이터로 프로그램하고, 상기 메모리 블록들 각각이 물리적으로 소거된 시점과 전부 프로그램된 시점 사이의 시간인 제 1 시간, 및 상기 전부 프로그램된 시점 후 전부 프로그램된 상태가 지속된 시간인 제 2 시간을 획득하고, 상기 제 1 시간이 증가할수록 그리고 상기 제 2 시간이 감소할수록 증가하는 디스터브 지수를 산출하고, 상기 디스터브 지수에 따라 가비지 컬렉션을 위한 희생 블록을 선택하고, 그리고 상기 희생 블록의 유효 페이지의 데이터를 자유 블록으로 복사하도록 구성된 메모리 컨트롤러를 포함할 수 있다.
실시 예로써, 상기 메모리 컨트롤러는 상기 디스터브 지수가 0인지 여부를 판단하고, 상기 판단 결과에 따라, 상기 디스터브 지수가 O인 메모리 블록들을 상기 희생 블록으로 우선적으로 선택할 수 있다.
다른 실시 예로써, 상기 메모리 컨트롤러는 상기 디스터브 지수가 0인 메모리 블록들 중 무효 페이지의 수가 가장 많은 메모리 블록을 상기 희생 블록으로 우선적으로 선택할 수 있다.
또 다른 실시 예로써, 상기 메모리 컨트롤러는, 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 완전하게 프로그램되지 않은 메모리 블록은 상기 희생 블록으로 선택하지 않을 수 있다.
또 다른 실시 예로써, 상기 자유 블록이 전부 프로그램되지 않은 경우, 상기 메모리 컨트롤러는 상기 자유 블록이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에 상기 자유 블록의 프로그램되지 않은 페이지를 더미 데이터로 프로그램할 수 있다.
본 발명의 실시 예에 따르면, 불휘발성 메모리 장치의 신뢰성을 향상시킬 수 있는 데이터 저장 장치를 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 컨트롤러의 일 실시 예를 보여주는 블록도이다.
도 3은 도 1에 도시된 불휘발성 메모리 장치의 일 실시 예를 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따라 메모리 컨트롤러의 소프트웨어 (또는, 펌웨어)의 구성을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 테이블의 일 예를 보여주는 표이다.
도 6a는 본 발명의 실시 예에 따른 가비지 컬렉션 동작을 보여주는 블록도이다.
도 6b는 도 6a에 도시된 메모리 블록들의 상태를 시간의 흐름에 따라 보여주는 도면이다.
도 7은 본 발명의 다른 실시 예에 따른 가비지 컬렉션 동작을 보여주는 블록도이다.
도 8은 본 발명의 다른 실시 예에 따른 테이블의 일 예를 보여주는 표이다.
도 9는 본 발명의 또 다른 실시 예에 따른 가비지 컬렉션 동작을 보여주는 블록도이다.
도 10은 가비지 컬렉션 동작이 실행되기 전에 메모리 블록들에 대해 실행되는 더미 프로그래밍 동작을 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 가비지 컬렉션 동작시, 시간의 흐름에 따라 희생 블록에서의 프로그램 상태를 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 가비지 컬렉션 동작시, 시간의 흐름에 따라 자유 블록에서의 프로그램 상태를 보여주는 도면이다.
도 13은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 순서도이다.
도 14는 도 13에 도시된 S140 단계의 일 실시 예를 상세하게 보여주는 순서도이다.
도 15는 도 13에 도시된 S140 단계의 다른 실시 예를 상세하게 보여주는 순서도이다.
도 16은 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 순서도이다.
도 17은 본 발명의 실시 예에 따른 VNAND의 블록을 보여주는 도면이다.
도 18은 본 발명의 다른 실시 예에 따른 VNAND의 블록을 보여주는 도면이다.
도 19는 본 발명의 실시 예에 따른 SSD를 예시적으로 보여주는 블록도이다.
도 20은 본 발명의 실시 예에 따른 eMMC를 예시적으로 보여주는 블록도이다.
도 21은 본 발명이 적용된 모바일 기기를 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.
"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 보여주는 블록도이다. 도 1을 참조하면, 데이터 저장 장치(1000)는 메모리 컨트롤러(1100) 및 불휘발성 메모리 장치(1200)를 포함할 수 있다.
메모리 컨트롤러(1100)는 호스트로부터의 요청에 응답하여 불휘발성 메모리 장치(1200)에 데이터를 기록하거나, 또는 불휘발성 메모리 장치(1200)에 저장된 데이터를 읽을 수 있다. 메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)에 데이터를 기록하기 위해 어드레스(ADDR), 커맨드(CMD), 및 제어 신호(CTRL)를 불휘발성 메모리 장치(1200)로 전송할 수 있다.
본 발명의 실시 예에 따르면, 메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)를 구성하는 각각의 메모리 블록에 대한 제 1 시간(1st interval), 및 제 2 시간(2nd interval)에 관한 정보를 관리할 수 있다. 여기서, 제 1 시간이란 각각의 메모리 블록이 물리적으로 소거된 시점과 전부 프로그램된(fully-programmed) 시점 사이의 시간이며, 제 2 시간이란 전부 프로그램된 시점 후 프로그램된 상태가 지속된 시간으로 정의된다. 메모리 컨트롤러(1100)는 제 1 시간 및 제 2 시간을 독립 변수로 하는 디스터브 지수(disturb index)를 산출할 수 있다.
한편, 데이터 저장 장치(1000)에 저장할 수 있는 공간은 한정되어 있다. 따라서, 데이터 저장 장치(1000)의 저장 공간을 효율적으로 활용하기 위해, 메모리 컨트롤러(1100)는 불휘발성 메모리 장치(1200)에 대해 가비지 컬렉션 동작을 실행할 수 있다. 본 발명의 실시 예에 따른 메모리 컨트롤러(1100)는 제 1 시간 및 제 2 시간에 기초하여 산출된 디스터브 지수를 이용하여 불휘발성 메모리 장치(1200)에 대해 가비지 컬렉션 동작을 실행할 수 있다. 또는, 메모리 컨트롤러(1100)는 제 2 시간을 이용하여 불휘발성 메모리 장치(1200)에 대해 가비지 컬렉션 동작을 실행할 수 있다. 디스터브 지수 또는 제 2 시간을 이용하여 가비지 컬렉션 동작을 실행함으로써, 데이터 저장 장치의 신뢰성을 향상시킬 수 있다. 이에 대해서는 상세하게 후술될 것이다.
도 2는 도 1에 도시된 메모리 컨트롤러의 일 실시 예를 보여주는 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(1100)는 적어도 하나의 프로세서(1110), 워킹 메모리(1120), 호스트 인터페이스(1130), ECC 회로(1140), 및 불휘발성 메모리 인터페이스(1150)를 포함할 수 있다. 그러나 이에 한정되는 것은 아니며, 메모리 컨트롤러(1100)는 초기 부팅(Booting) 동작에 필요한 코드 데이터를 저장하는 ROM(Read Only Memory) 등을 더 포함할 수 있다.
프로세서(1110)는 메모리 컨트롤러(1100)의 전반적인 동작을 제어할 수 있다. 프로세서(1110)는 메모리 컨트롤러(1100)를 구동하기 위한 펌웨어(firmware)를 구동할 수 있다. 펌웨어는 워킹 메모리(1120)에 로딩되어 구동될 수 있으며, 펌 웨어는 디스터브 매니저 및 플래시 변환 계층(flash translation layer; FTL) 등이 있을 수 있다.
워킹 메모리(1120)에는 메모리 컨트롤러(1100)를 제어하기 위한 소프트웨어, 펌웨어가 로딩될 수 있다. 워킹 메모리(1120)는 캐시 메모리, DRAM(dynamic random access memory), SRAM(static random access memory), PRAM(Phase-change RAM), 또는 플래시 메모리 장치 중 적어도 하나를 포함할 수 있다. 본 발명의 실시 예에 따르면, 워킹 메모리(1120)에는 디스터브 매니저 및 플래시 변환 계층이 로드될 수 있다.
호스트 인터페이스(1130)는 호스트와 메모리 컨트롤러(1100) 사이의 인터페이스를 제공할 수 있다. 호스트와 메모리 컨트롤러(1100)는 다양한 표준 인터페이스들(Standardized Interfaces) 중 적어도 하나를 통해 연결될 수 있다. 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral component Interconnection), PCI-E(PCI Express), USB(Universal Serial Bus), IEEE 1394, Card 인터페이스 등과 같은 다양한 인터페이스를 포함할 수 있다.
ECC 회로(1140)는 플래시 메모리 장치(1200)로부터 수신된 데이터의 페일 비트(fail bit) 또는 에러 비트(error bit)를 정정하기 위한 에러 정정 코드(error correction code; ECC)를 생성할 수 있다. ECC 회로(1140)는 플래시 메모리 장치(1200)로 제공되는 데이터의 에러 정정 인코딩을 수행하여, 패리티(parity) 비트가 부가된 데이터를 형성할 수 있다. 패리티 비트는 플래시 메모리(1200)에 저장될 수 있다.
불휘발성 메모리 인터페이스(1150)는 메모리 컨트롤러(1100)와 불휘발성 메모리 장치(1200) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 메모리 컨트롤러(1100)는 불휘발성 메모리 인터페이스(1150)를 통하여 불휘발성 메모리 장치(1200)와 데이터를 송수신할 수 있다.
도 3은 도 1에 도시된 불휘발성 메모리 장치의 일 실시 예를 보여주는 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(1200)는 메모리 셀 어레이(1210), 로우 디코더(1220), 페이지 버퍼 회로(1230), 데이터 입출력 회로(1240), 및 제어 로직(1250)을 포함할 수 있다.
메모리 셀 어레이(1210)는 복수의 블록들(BLK1~BLKn)을 포함할 수 있다. 각각의 메모리 블록은 3차원 구조를 가질 수 있다. 3차원 구조를 갖는 메모리 블록에서는, 메모리 블록을 구성하는 메모리 셀들이 기판과 수직 방향으로 형성될 수 있다. 그리고, 메모리 셀들은 각각 1 비트 이상의 데이터를 저장할 수 있다.
로우 디코더(1220)는 로우 어드레스에 응답하여 복수의 메모리 블록들 중 어느 하나를 선택할 수 있다. 로우 디코더(1220)는 구동에 필요한 워드 라인 전압들(예를 들어, 프로그램 전압, 패스 전압, 소거 전압, 검증 전압, 읽기 전압, 읽기 패스 전압 등)을 워드 라인들(WLs)로 전송할 수 있다.
페이지 버퍼 회로(1230)는 동작 모드에 따라 쓰기 드라이버 또는 센스 앰프로써 동작할 수 있다. 예를 들어, 페이지 버퍼 회로(1230)는 읽기 동작시 센스 앰프(sense amplifier)로써 동작하거나, 쓰기 동작시 쓰기 드라이버(write driver)로써 동작할 수 있다. 페이지 버퍼 회로(1230)는 복수의 비트 라인들(BLs)에 각각 대응하는 복수의 페이지 버퍼들을 포함할 수 있다.
데이터 입출력 회로(1240)는 컬럼 어드레스에 응답하여 페이지 버퍼 회로(1230)의 페이지 버퍼들을 선택할 수 있다. 프로그램 동작시, 선택된 페이지 버퍼에는 데이터 입출력 회로(1240)를 통해 제공되는 프로그램 비트들이 저장될 수 있다. 읽기 동작시, 선택된 페이지 버퍼로부터 제공되는 데이터는 데이터 입출력 회로(1140)를 통해 외부로 출력될 수 있다.
제어 로직(1250)은 수신된 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여 로우 디코더(1220), 페이지 버퍼(1230), 및 데이터 입출력 회로(1240)를 제어할 수 있다. 예를 들어, 제어 로직(1250)은 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여 데이터(DATA)가 메모리 셀 어레이(1210)에 프로그램될 수 있도록, 로우 디코더(1220), 및 페이지 버퍼 회로(1230) 등을 제어할 수 있다. 또는, 제어 로직(1250)은 커맨드(CMD) 및 제어 신호(CTRL)에 응답하여 메모리 셀 어레이(1210)에 프로그램된 데이터(DATA)가 출력되도록, 로우 디코더(1220), 및 페이지 버퍼 회로(1230) 등을 제어할 수 있다.
도 4는 본 발명의 실시 예에 따라 메모리 컨트롤러의 소프트웨어 (또는, 펌웨어)의 구성을 보여주는 블록도이다. 도 4를 참조하면, 메모리 컨트롤러의 소프트웨어 (또는, 펌웨어)는 플래시 변환 계층(1124), 및 맵핑 테이블(1126)을 포함할 수 있다. 이들은 메모리 컨트롤러의 워킹 메모리(1120)에 로딩될 수 있다. 비록 도면에는 맵핑 테이블(1126)이 별도의 소프트웨어 (또는, 펌웨어)로써 로딩되는 것으로 도시되었으나, 맵핑 테이블(1126)은 플래시 변환 계층(1124)의 기능에 포함될 수도 있다.
디스터브 매니저(1122)는 불휘발성 메모리 장치(1200)를 구성하는 메모리 블록들(BLK1~BLKn) 각각에 대한 제 1 시간 및 제 2 시간에 관한 정보를 관리할 수 있다. 그리고, 디스터브 매니저(1122)는 제 1 시간 및 제 2 시간을 기초로 하여 산출되는 디스터브 지수를 관리할 수 있다. 디스터브 매니저(1122)는 이와 같은 정보를 실시간으로 관리할 수 있다. 그리고, 디스터브 매니저(1122)는 제 1 시간, 제 2 시간 및 디스터브 지수에 관한 정보를 주기적으로 불휘발성 메모리 장치(1200)의 메타 영역(미도시)에 저장할 수 있다. 이 정보들이 저장되는 메타 영역은 불휘발성 메모리 장치(1200)의 적어도 하나의 블록의 일부 또는 전부에 할당될 수 있다.
플래시 변환 계층(1124)은 덮어쓰기가 허용되지 않는 불휘발성 메모리 장치(1200)의 희생 블록(victim block)들에 저장된 데이터들 중 유효한 데이터들만을 모아서 하나의 자유 블록(free block)에 복사하는 가비지 컬렉션(garbage collection) 동작을 실행할 수 있다. 본 발명의 실시 예에 따르면, 디스터브 지수를 참조하여 가비지 컬렉션 동작이 실행될 수 있다. 예를 들어, 디스터브 지수는 제 1 시간 및 제 2 시간을 독립 변수로 하는 함수일 수 있다. 디스터브 지수는 제 1 시간이 길수록, 그리고 제 2 시간이 짧을수록 커지는 특성이 있다. 가비지 컬렉션 동작 실행시, 디스터브 지수가 0이거나, 또는 가장 낮은 메모리 블록이 희생 블록으로 선택될 수 있다. 또는 다른 실시 예로써, 가비지 컬렉션 동작 실행시, 제 2 시간이 임계치 이상인 블록이 희생 블록으로 선택될 수 있다. 가비지 컬렉션 동작에 따라, 맵핑 테이블(1126)은 업데이트 될 수 있다.
맵핑 테이블(1126)은 불휘발성 메모리 장치(1200)에 저장된 데이터의 논리 어드레스(logical address)와 물리 어드레스(physical address)의 대응 관계에 관한 정보를 포함할 수 있다. 맵핑 테이블(1126)은 초기 부팅시 불휘발성 메모리 장치(1200)의 메타 영역(미도시)으로부터 로딩될 수 있다. 그리고 맵핑 테이블(1126)은 워킹 메모리(1120)에서 실시간으로 관리될 수 있으며, 주기적으로 불휘발성 메모리 장치(1200)의 메타 영역에 저장될 수 있다.
본 발명의 실시 예에 따르면, 메모리 블록들의 무효 페이지의 개수 또는 웨어 레벨링을 고려하여 가비지 컬렉션 동작을 실행하는 종전의 방법과는 달리, 디스터브 지수, 또는 제 2 시간을 고려하여 가비지 컬렉션 동작을 실행한다. 그 결과, 데이터 저장 장치의 신뢰성을 향상시킬 수 있다.
도 5는 본 발명의 실시 예에 따른 테이블의 일 예를 보여주는 표이다. 도면에 도시된 바와 같이, 테이블은 각각의 메모리 블록에 대한 디스터브 지수, 제 1 시간, 제 2 시간, 및 임계 시간(Tth)에 관한 정보를 포함할 수 있다. 앞서 설명된 바와 같이, 제 1 시간이란 각각의 메모리 블록이 물리적으로 소거된 시점과 전부 프로그램된 시점 사이의 시간이며, 제 2 시간이란 각각의 메모리 블록이 전부 프로그램된 후 프로그램된 상태가 지속된 시간으로 정의된다. 임계 시간(Tth)이란, 제 1 시간에 따라 요구되는 제 2 시간을 의미한다. 그리고, 전부 프로그램되었다 함은 메모리 블록이 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되었음을 의미한다.
디스터브 지수는 제 1 시간 및 제 2 시간을 독립 변수로 하는 함수로써 표현될 수 있다. 그리고, 디스터브 지수는 제 1 시간이 길수록 커지며, 제 2 시간이 짧을수록 커지는 특성이 있다. 디스터브 지수를 예시적으로 수학식 1과 같이 표현될 수 있다.
Figure 112014112525588-pat00001
이때, a, b는 양수이다. 그리고, 상수 a, b의 값은 X, Y의 값에 따라 변할 수 있다. 즉, X, Y의 크기에 따라 X, Y의 값에 가중치가 부여될 수 있다. 예를 들어, 제 1 시간이 길어질수록, 제 2 시간에 부여되는 가중치의 값 b는 커질 수 있다. 그리고, 제 2 시간이 길어질수록, 제 2 시간에 부여되는 가중치의 값 b는 작아질 수 있다. 즉, 디스터브 지수는 0 이상의 값이 되도록 상수 a, b의 값이 조절되며, 제 2 시간이 무한대로 수렴하더라도, 디스터브 지수가 0이 되도록 b의 값이 조절될 수 있다. 그러나, 디스터브 지수는 수학식 1에 한정되지 않는다. 디스터브 지수는 수학식 2 또는 수학식 3 등과 같이 제 1 시간이 길수록, 그리고 제 2 시간이 짧을수록 그 값이 커지는 다양한 식으로 표현될 수 있다.
Figure 112014112525588-pat00002
Figure 112014112525588-pat00003
수학식 2 및 수학식 3의 경우에도 앞서 설명한 바와 같이 상수 a, b의 값이 조절될 수 있다.
도 6a는 본 발명의 실시 예에 따른 가비지 컬렉션 동작을 보여주는 블록도이다. 테이블은 도 4에 도시된 디스터브 매니저(1122)에서 관리될 수 있으며, 주기적으로 메모리 블록(도 4 참조, 1200)의 메타 영역으로 저장될 수 있다. 설명의 편의를 위해 복수의 메모리 블록들(BLK1 내지 BLK3)만을 고려하여 설명하기로 한다.
가비지 컬렉션이 실행되기 전에 데이터가 기록되는 메모리 블록들에 대하여 더미 클로우징(dummy closing) 동작이 실행될 수 있다. 더미 클로우징 동작은 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않은 메모리 블록에 대해 실행될 수 있다. 그리고, 더미 클로우징 동작은 메모리 블록에 대해 미리 정해진 임계 시간(Tth)에 대응하는 기준 시점이 경과하였는지 여부에 따라 결정될 수 있다. 예를 들어, 만일 메모리 블록 1(BLK1)이 Tth1의 임계 시간을 갖도록 관리하고자 한다면, 메모리 블록 1(BLK1)의 제 1 시간이 X1이 되는 시점에 더미 클로우징 동작을 실행할 수 있다. 더미 클로우징 동작에 따라 메모리 블록들(BLK1 내지 BLK3)은 전부 프로그램되었다(fully-programmed).
또는, 메모리 블록에 대해 임의의 시점이 지난 후에 더미 클로우징 동작을 실행하고, 더미 클로우즈된 메모리 블록의 제 1 시간에 대응하는 임계 시간 동안 프로그램된 상태가 유지되도록 관리할 수도 있다. 예를 들어, 메모리 블록 1(BLK1)이 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않은 상태이고, 일정 시간이 지난 후에도 완전히 프로그램되지 않아서 임의의 시점에 더미 클로우징 동작을 실행하였다고 가정하자. 이때, 메모리 블록 1(BLK1)이 물리적으로 소거된 후 더미 클로우징 동작이 완료된 시점까지가 제 1 시간(X1)이 될 것이다. 이 경우, 메모리 블록 1(BLK1)은 제 1 시간(X1)에 대응하는 임계 시간(Tth1) 동안 프로그램된 상태가 유지되도록 관리될 것이다.
더미 클로우징 동작이 실시된 후, 가비지 컬렉션의 대상이 되는 희생 블록이 선택될 수 있다. 희생 블록을 선택하기 위하여, 수학식 1에서 설명한 바와 같이, 각각의 메모리 블록들(BLK1 내지 BLK3)에 대해 디스터브 지수가 계산된다. 도면에 도시된 바와 같이, 메모리 블록 1(BLK1)의 디스터브 지수는 0이 아니고, 메모리 블록 2(BLK2) 및 메모리 블록 2(BLK2)의 디스터브 지수는 0이라고 가정하자. 이는 메모리 블록 1(BLK1)은 전부 프로그램된 상태로 충분한 시간(예를 들어, 도 5의 임계 시간, Tth1)이 경과하지 않았음을 의미할 수 있다. 그리고, 메모리 블록 2(BLK2) 및 메모리 블록 3(BLK3)은 완전히 프로그램된 상태로 충분한 시간(예를 들어, 도 5의 임계 시간, Tth2 및 Tth3)이 경과 하였음을 의미할 수 있다. 디스터브 지수가 0이 아닌 메모리 블록 1(BLK1)은 가비지 컬렉션의 대상이 되는 희생 블록에서 일단 제외된다. 그리고 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않은 메모리 블록도 희생 블록에서 제외된다. 비록 가비지 컬렉션 동작이 실행되기 전이라고 할지라도, 특수한 경우에는 더미 클로우징 동작이 실행되지 않은 메모리 블록도 있을 수 있기 때문이다.
그리고, 디스터브 지수가 0인 메모리 블록들 중에서, 무효 페이지의 수가 가장 많은 메모리 블록 3(BLK3)이 희생 블록으로 선택된다. 이때, 무효 페이지에는 플래시 변환 계층에 의해 맵핑 테이블에서 그 정보가 삭제된(즉, 논리적 소거) 페이지뿐만 아니라, 더미 데이터로 프로그램된 페이지도 포함된다. 그러나, 물리적으로 소거된 페이지는 포함되지 않는다. 즉, 유저 데이터 또는 더미 데이터로 전부 프로그램되지 않은 페이지(non-fully programmed page)를 갖는 메모리 블록은 희생 블록에서 제외된다. 도면에서는 무효 페이지의 수가 가장 많은 하나의 메모리 블록(BLK3)만이 희생 블록으로 선택되는 것으로 도시되었다. 그러나, 희생 블록의 수는 복수일 수 있으며, 희생 블록은 디스터브 지수가 작은 순서대로 선택될 수 있다.
희생 블록으로 선택된 메모리 블록(BLK3)에 저장된 데이터는 복사된 후, 자유 블록(BLKj)으로 프로그램될 수 있다. 이때, 희생 블록(BLK3)에 있던 데이터는 물리적으로 소거된다.
한편, 자유 블록(BLKj)이 물리적으로 소거된 순간부터 제 1 시간(Xj)이 경과할 것이다. 만일 자유 블록(BLKj)이 전부 프로그램된다면, 자유 블록(BLKj)이 물리적으로 소거된 순간부터 전부 프로그램된 순간 까지가 제 1 시간(Xj)이 될 것이다. 이 경우는 문제되지 않지만, 자유 블록(BLKj)이 전부 프로그램되지 않고 제 1 시간(Xj)이 계속 진행되는 경우가 문제된다.
만일 자유 블록(BLKj)이 전부 프로그램되지 않고 프로그램되지 않은 페이지가 존재한다면, 자유 블록(BLKj)에 대해 더미 프로그래밍 동작이 실행될 수 있다. 더미 프로그래밍 동작은 앞서 설명된 더미 클로우징 동작에 따라 실행될 수 있다. 또는 예외적으로, 서든 파워-오프(sudden power-off)나 사용자에 의한 POR (power-off reset)이 발생한 경우에도 실행될 수 있다. 즉, 제 1 시간이 무한대가 되도록 방치하는 대신에, 파워-오프와 같은 일정 조건이 발생한 경우, 자유 블록(BLKj)의 프로그램되지 않은 페이지를 더미 데이터로 프로그램하는 것이다. 자유 블록(BLKj)이 물리적으로 소거된 후, 더미 프로그래밍 동작이 완료된 순간까지가 자유 블록(BLKj)에 대한 제 1 시간(Xj)이 될 것이다.
도 6b는 도 6a에 도시된 메모리 블록들의 상태를 시간의 흐름에 따라 보여주는 도면이다. 설명의 편의를 위하여, 메모리 블록들(BLK1 내지 BLK3)에 대해 처음에 동시에 소거 동작이 실행되었다고 가정하자.
그 후, 메모리 블록들(BLK1 내지 BLK3)은 임의의 시점에 전부 프로그램 된다. 이때, 각각의 메모리 블록은 유저 데이터로 전부 프로그램되었거나, 또는 더미 클로우징 정책(dummy-closing policy)에 따라 더미 데이터로 프로그램되었을 수 있다. 더미 클로우징 정책에 대해서는 앞서 도 6b에서 메모리 블록 1(BLK1)을 예로 들어 설명하였다.
도면에 도시된 바와 같이, 메모리 블록들(BLK1 내지 BLK3)이 물리적으로 소거된 순간부터 전부 프로그램된 순간까지가 제 1 시간이 될 것이다. 그리고, 메모리 블록들(BLK1 내지 BLK3)이 각각 전부 프로그램된 순간부터 현시점까지가 제 2 시간이 될 것이다. 제 1 시간에 따라 가변하는 임계 시간(Tth)이 경과한 메모리 블록들만 희생 블록으로 선택되므로, 일단 메모리 블록 1(BLK1)은 제외된다. 메모리 블록 2(BLK2) 및 메모리 블록 3(BLK3)은 임계 시간이 모두 경과하였으나, 메모리 블록 3(BLK3)의 무효 페이지가 더 많으므로 메모리 블록 3(BLK3)이 희생 블록으로 선택된 것이다.
한편, 자유 블록(BLKj)이 물리적으로 소거된 시점부터 제 1 시간이 진행된다. 그리고, 가비지 컬렉션 동작시 메모리 블록 3(BLK3)의 데이터가 자유 블록(BLKj)으로 복사된다. 만일 자유 블록이 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않았다면, 앞서 설명된 더미-클로우징 동작에 따라 더미 데이터로 프로그램될 수 있다. 아니면, 예외적으로, 제 1 시간이 계속 진행되는 것을 방지하기 위해, 일정 조건(예를 들어, 서든 파워-오프 또는 POR)하에서 더미 프로그래밍 동작이 실행될 수도 있다.
도 7은 본 발명의 다른 실시 예에 따른 가비지 컬렉션 동작을 보여주는 블록도이다. 마찬가지로, 설명의 편의를 위해 복수의 메모리 블록들(BLK1 내지 BLK3)만을 고려하여 설명하기로 한다.
가비지 컬렉션이 실행되기 전에 데이터가 기록되는 메모리 블록들에 대하여 더미 클로우징 동작이 실행될 수 있다. 더미 클로우징 동작에 따라 메모리 블록들(BLK1 내지 BLK3)은 전부 프로그램되었다. 더미 클로우징 동작은 앞서 상세하게 설명하였으므로 이와 중복되는 설명은 생략하기로 한다.
가비지 컬렉션의 대상이 되는 희생 블록을 선택하기 위하여, 각각의 메모리 블록들의 무효 페이지의 수가 기준 값(Threshold #) 이상인지 여부가 판단될 수 있다. 무효 페이지에는 논리적으로 소거된 페이지뿐만 아니라, 더미 데이터로 프로그램된 페이지도 포함된다. 그러나, 물리적으로 소거된 페이지는 포함되지 않는다. 즉, 유저 데이터 또는 더미 데이터로 완전하게 프로그램되지 않은 페이지(non-fully programmed page)를 갖는 메모리 블록은 희생 블록에서 제외된다. 그리고, 무효 페이지의 수가 기준 값(Threshold #) 미만인 메모리 블록(BLK1)은 디스터브 지수가 0인지 여부에 상관없이 희생 블록에서 제외된다.
무효 페이지의 수가 기준 값(Threshold #) 이상인 메모리 블록들(BLK2 및 BLK3) 중 무효 페이지의 수가 가장 많은 메모리 블록(BLK3)이 희생 블록으로써 선택될 수 있다. 도면에서는 무효 페이지의 수가 가장 많은 하나의 메모리 블록(BLK3)만이 희생 블록으로 선택되는 것으로 도시되었다. 그러나, 희생 블록의 수는 복수일 수 있으며, 무효 페이지의 수가 많은 순서대로 선택될 수 있다.
희생 블록으로 선택된 메모리 블록(BLK3)에 저장된 데이터는 복사된 후, 자유 블록(BLKj)으로 프로그램될 수 있다. 이때, 희생 블록(BLK3)에 있던 데이터는 물리적으로 소거된다.
한편, 자유 블록(BLKj)이 물리적으로 소거된 시점부터 제 1 시간이 진행된다. 그리고, 가비지 컬렉션 동작시 메모리 블록 3(BLK3)의 데이터가 자유 블록(BLK3)으로 복사된다. 만일 자유 블록이 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않았다면, 앞서 설명된 더미-클로우징 동작에 따라 더미 데이터로 프로그램될 수 있다. 아니면, 예외적으로, 제 1 시간이 계속 진행되는 것을 방지하기 위해, 일정 조건(예를 들어, 서든 파워-오프 또는 POR)하에서 더미 프로그래밍 동작이 실행될 수도 있다.
본 발명의 실시 예에 따르면, 일반적인 가비지 컬렉션 동작과는 달리 제 1 시간 및 제 2 시간에 근거하여 산출된 디스터브 지수에 기초하여 가비지 컬렉션 동작이 실행될 수 있다. 그 결과, 불휘발성 메모리 장치의 신뢰성을 향상시킬 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 테이블의 일 예를 보여주는 표이다. 도면에 도시된 바와 같이, 테이블은 각각의 메모리 블록에 대한 제 2 시간(Tc), 및 임계 시간(Tth)에 관한 정보를 포함할 수 있다. 본 실시 예에 따르면, 도 5에 도시된 테이블에 비하여 테이블의 정보 양이 적고, 디스터브 지수를 계산할 필요가 없다. 따라서, 시스템 리소스가 상대적으로 부족한 경우에 본 실시 예가 적용될 수 있을 것이다. 그러나, 이에 한정되는 것은 아니다.
도 9는 본 발명의 또 다른 실시 예에 따른 가비지 컬렉션 동작을 보여주는 블록도이다. 테이블은 도 4에 도시된 디스터브 매니저(1122)에서 관리될 수 있으며, 주기적으로 메모리 블록(도 4 참조, 1200)의 메타 영역으로 저장될 수 있다. 설명의 편의를 위해 복수의 메모리 블록들(BLK1 내지 BLK3)만을 고려하여 설명하기로 한다.
가비지 컬렉션이 실행되기 전에 데이터가 기록되는 메모리 블록들에 대하여 더미 클로우징 동작이 실행될 수 있다. 더미 클로우징 동작에 따라 메모리 블록들(BLK1 내지 BLK3)은 전부 프로그램되었다. 더미 클로우징 동작은 앞서 상세하게 설명하였으므로 이와 중복되는 설명은 생략하기로 한다.
가비지 컬렉션의 대상이 되는 희생 블록을 선택하기 위하여, 제 2 시간이 임계 시간(Tth)을 경과한 메모리 블록들(BLK 2 및 BLK3)이 선택된다. 물론, 선택되는 메모리 블록들은 전부 프로그램된 메모리 블록들이어야 한다.
그리고, 제 2 시간이 임계 시간(Tth) 이상인 메모리 블록들(BLK 2 및 BLK3) 중에서, 무효 페이지의 수가 가장 많은 메모리 블록 3(BLK3)이 희생 블록으로 선택된다.
이때, 무효 페이지에는 논리적으로 소거된 페이지뿐만 아니라, 더미 데이터로 프로그램된 페이지도 포함된다. 그러나, 물리적으로 소거된 페이지는 포함되지 않는다. 도면에서는 무효 페이지의 수가 가장 많은 하나의 메모리 블록(BLK3)만이 희생 블록으로 선택되는 것으로 도시되었다. 그러나, 희생 블록의 수는 복수일 수 있으며, 희생 블록은 무효 페이지의 수가 많은 메모리 블록부터 순서대로 선택될 수 있다.
희생 블록으로 선택된 메모리 블록(BLK3)에 저장된 데이터는 복사된 후, 자유 블록(BLKj)으로 프로그램될 수 있다. 이때, 희생 블록(BLK3)에 있던 데이터는 물리적으로 소거된다.
한편, 자유 블록(BLKj)이 물리적으로 소거된 시점부터 제 1 시간이 진행된다. 그리고, 가비지 컬렉션 동작시 메모리 블록 3(BLK3)의 데이터가 자유 블록(BLKj)으로 복사된다. 만일 자유 블록이 유저 데이터 또는 더미 데이터로 전부 프로그램되지 않았다면, 앞서 설명된 더미-클로우징 동작에 따라 더미 데이터로 프로그램될 수 있다. 아니면, 예외적으로, 제 1 시간이 계속 진행되는 것을 방지하기 위해, 일정 조건(예를 들어, 서든 파워-오프 또는 POR)하에서 더미 프로그래밍 동작이 실행될 수도 있다.
도 10은 가비지 컬렉션 동작이 실행되기 전에 메모리 블록들에 대해 실행되는 더미 프로그래밍 동작을 보여주는 도면이다.
불휘발성 메모리 장치를 구성하는 각각의 메모리 블록들은 어느 시점에 물리적으로 소거되었을 것이다(①). 도면에 도시된 로그 블록(Log BLK)은 데이터가 기록되는 메모리 블록을 말한다.
메모리 블록들 중에는 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않은 메모리 블록들이 있을 것이다(②).
전부 프로그램되지 않은 메모리 블록들에 대해서는 어떠한 특정한 시점에 더미 데이터로 프로그램하는 더미-클로우징 동작이 실행될 수 있다(③). 더미 클로우징 동작이 실행되는 시점은 메모리 블록에 대해 미리 정해진 임계 시간(Tth)에 따라 결정될 수 있다. 즉, 어떤 메모리 블록에 저장된 데이터가 적어도 임계 시간(Tth) 동안 유지되도록 하고자 한다면, 그에 대응하는 제 1 시간이 경과하는 시점에 더미 프로그래밍 동작이 실행될 수 있다. 또는, 메모리 블록에 대해 임의의 시점에 더미 프로그래밍 동작을 실행하고, 제 1 시간에 대응하는 임계 시간(Tth) 동안 데이터가 유지되도록 관리할 수 있다.
그리고, 제 2 시간이 임계 시간(Tth)을 초과함과 동시에, 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램된 메모리 블록들만 가비지 컬렉션의 희생 블록으로써 고려될 수 있다(⑤).
도 11은 본 발명의 실시 예에 따른 가비지 컬렉션 동작시, 시간의 흐름에 따라 희생 블록에서의 프로그램 상태를 보여주는 도면이다.
희생 블록(BLK3)은 가비지 컬렉션이 실행되기 전의 임의의 시점에서 물리적으로 소거되었을 것이다(①). 희생 블록(BLK3)이 물리적으로 소거된 순간부터 제 1 시간이 경과할 것이다.
그리고, 가비지 컬렉션이 실행되기 전의 임의의 시점에 희생 블록(BLK3)은 전부 프로그램될 것이다. 이때, 희생 블록(BLK3)은 유효 페이지 또는 무효 페이지를 포함할 수 있다. 이때, 무효 페이지에는 논리적으로 소거된 페이지뿐만 아니라, 더미 데이터로 프로그램된 페이지도 포함된다. 그러나, 물리적으로 소거된 페이지는 포함되지 않는다.
가비지 컬렉션 동작시 메모리 블록 3(BLK3)이 희생 블록으로 선택되면, 희생 블록(BLK3)에 저장된 데이터는 다른 자유 블록으로 복사되고, 희생 블록은 물리적으로 소거될 것이다(③). 도면에 도시된 바와 같이, 희생 블록(BLK3)이 전부 프로그램된 순간(②)부터 물리적으로 소거된 순간(③)까지가 제 2 시간이 될 것이다. 메모리 블록(BLK3)에 대한 제 2 시간이, 제 1 시간에 의존하는 임계 시간(Tth3)을 경과하였기 때문에, 메모리 블록 3(BLK3)이 희생 블록으로 선택될 수 있음은 앞서 설명한 바와 같다.
희생 블록(BLK3)이 물리적으로 소거된 순간(③)부터 다시 제 1 시간이 경과할 것이다. 희생 블록(BLK3)이 유저 데이터, 더미 데이터, 또는 유저 및 더미 데이터로 전부 프로그램되면 문제되지 않지만, 그렇지 않은 경우가 문제이다. 이 경우, 앞서 설명된 더미-클로우징 정책에 따라 더미 프로그래밍 동작이 실행될 수 있다. 또는, 예외적으로 서든-파워 오프 또는 POR과 같은 상황이 발생한 경우에도, 희생 블록(BLK3)의 프로그램되지 않은 페이지를 더미 데이터로 프로그램한다(④).
도 12는 본 발명의 실시 예에 따른 가비지 컬렉션 동작시, 시간의 흐름에 따라 자유 블록에서의 프로그램 상태를 보여주는 도면이다.
가비지 컬렉션 동작이 실행되기 전의 임의의 시점에 자유 블록(BLKj)은 물리적으로 소거되었을 것이다(①). 이 순간부터 제 1 시간이 경과한다.
가비지 컬렉션 동작이 실행되면, 희생 블록에 저장된 데이터는 자유 블록(BLKj)으로 복사된다(②). 만일, 자유 블록(BLKj)이 유저 데이터, 더미 데이터, 또는 유저 및 더미 데이터로 전부 프로그램되면 문제되지 않지만, 그렇지 않은 경우가 문제이다. 이 경우, 앞서 설명된 더미-클로우징 정책에 따라 더미 프로그래밍 동작이 실행될 수 있다. 또는, 예외적으로 서든-파워 오프 또는 POR과 같은 상황이 발생한 경우에도, 희생 블록(BLK3)의 프로그램되지 않은 페이지를 더미 데이터로 프로그램한다(③).
본 발명의 실시 예에 따르면, 일반적인 가비지 컬렉션 동작과는 달리 제 1 시간 및 제 2 시간에 근거하여 가비지 컬렉션 동작이 실행될 수 있다. 앞서 설명된 바와 같이, 임계 시간에 대응하는 기준 시간 이내에 특정 메모리 블록이 전부 프로그램되지 않으면, 기준 시간이 경과한 시점에 특정 메모리 블록은 더미 데이터로 전부 프로그램된다. 그 결과, 불휘발성 메모리 장치의 신뢰성을 향상시킬 수 있다.
도 13은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 순서도이다.
S110 단계에서, 메모리 블록들 중, 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않은 메모리 블록들에 대해 더미 프로그래밍 동작이 실행될 수 있다. 더미 프로그래밍 동작은 메모리 블록의 임계 시간에 대응하는 기준 시간이 지났는지 여부에 따라 실행될 수 있다. 특정 블록에 대해 기준 시간이 경과하는 순간에 더미 프로그래밍 동작이 실행되었다면, 특정 블록이 물리적으로 소거된 순간부터 기준 시간이 경과한 시점까지의 시간이 제 1 시간이 될 것이다. 또는, 메모리 블록에 대해 임의의 시점이 지난 후에 더미 프로그래밍 동작을 실행하고, 더미 클로우즈된 메모리 블록의 제 1 시간에 대응하는 임계 시간 동안 프로그램된 상태가 유지되도록 관리할 수도 있다.
S120 단계에서, 각각의 메모리 블록에 대한 제 1 시간, 및 제 2 시간에 관한 정보가 획득될 수 있다. 획득된 정보는 메모리 컨트롤러의 디스터브 매니저(도 4 참조, 1122)에서 관리될 수 있다. 그리고, 획득된 정보는 주기적으로 불휘발성 메모리 장치(도 4 참조, 1200)의 메타 영역에 저장될 수 있다. 제 1 시간 및 제 2 시간의 기초가 되는, 각각의 블록에 대해 마지막으로 프로그램 동작이 완료된 시점에 관한 정보는, 예를 들어, 메모리 컨트롤러(도 1 참조, 1100)가 불휘발성 메모리 장치(1200)로 전송한 레디/비지 신호(R/B)에 대한 응답으로부터 얻어질 수 있다.
S130 단계에서, 디스터브 지수가 제 1 시간 및 제 2 시간에 기초하여 계산될 수 있다. 디스터브 지수는, 앞서 설명된 바와 같이, 제 1 시간이 증가할수록 그리고 제 2 시간이 감소할수록 증가하는 다양한 식으로 표현될 수 있다. 디스터브 지수는 디스터브 매니저(도 4 참조, 1122)에서 실시간으로 관리될 수 있으며, 주기적으로 불휘발성 메모리 장치의 메타 영역에 저장될 수 있다.
S140 단계에서, 계산된 디스터브 지수에 따라 가비지 컬렉션의 대상이 되는 희생 블록이 선택될 수 있다.
S150 단계에서, 희생 블록에 저장된 유저 데이터가 자유 블록으로 복사될 수 있다. 이와 동시에, 희생 블록에 저장된 유저 데이터는 물리적으로 소거될 것이다.
S160 단계에서, 자유 블록의 프로그램되지 않은 페이지 및 다른 메모리 블록들의 프로그램되지 않은 페이지가 더미 프로그래밍 될 것이다. 더미 프로그래밍 동작은 앞서 설명된 더미 클로우징 정책에 따라 실행될 수 있다. 또는, 예외적으로, 서든 파워 오프 또는 POR이 발생한 경우에도 실행될 수 있다.
도 14는 도 13에 도시된 S140 단계의 일 실시 예를 상세하게 보여주는 순서도이다.
S141 단계에서, 각각의 메모리 블록에 대한 디스터브 지수가 0인지 여부가 판단될 수 있다. 디스터브 지수가 0인 메모리 블록이 존재하는지 여부에 따라 동작 분기가 발생한다. 디스터브 지수가 0인 메모리 블록이 존재한다면(Yes), S143 단계로 이동할 것이다. 그렇지 않다면(No), S147 단계로 이동할 것이다.
S143 단계에서, 디스터브 지수가 0인 블록들이 희생 블록으로써 우선 선택될 것이다.
S145 단계에서, 디스터브 지수가 0인 블록들 중, 무효 페이지의 수가 가장 많은 메모리 블록이 희생 블록으로써 최종적으로 선택될 것이다. 이때, 무효 페이지에는 논리적으로 소거된 페이지뿐만 아니라, 더미 데이터로 프로그램된 페이지도 포함된다. 그러나, 물리적으로 소거된 페이지는 포함되지 않는다. 희생 블록은 하나만 선택되는 것은 아니며, 무효 페이지의 수가 많은 순서대로 복수의 블록들이 선택될 수 있다.
메모리 블록들 중 디스터브 지수가 0인 블록이 없는 경우, S147 단계에서, 디스터브 지수가 가장 작은 메모리 블록이 선택될 수 있다. 마찬가지로, 희생 블록은 하나만 선택되는 것은 아니며, 디스터브 지수가 작은 순서대로 복수의 블록들이 선택될 수 있다.
도 15는 도 13에 도시된 S140 단계의 다른 실시 예를 상세하게 보여주는 순서도이다. 도 8에서 설명된 바와 같이, 본 실시 예는 시스템 리소스가 상대적으로 부족한 경우에 실시될 수 있다. 그러나, 이에 한정되는 것은 아니다.
S142 단계에서, 각각의 메모리 블록의 무효 페이지의 수가 기준 값(Threshold #) 이상인지 여부가 판단될 수 있다. 무효 페이지의 수가 기준 값 이상인 페이지가 존재하는지 여부에 따라 동작 분기가 발생한다. 무효 페이지의 수가 기준 값 이상인 페이지가 있다면, S144 단계로 이동할 것이다. 그렇지 않으면, S146 단계로 이동할 것이다.
S144 단계에서, 디스터브 지수가 0인 메모리 블록이 희생 블록으로써 선택될 것이다. 만일 디스터브 지수가 0인 메모리 블록이 복수 개 존재하면, 디스터브 지수가 0인 메모리 블록들 중 랜덤하게 희생 블록이 선택될 수 있다. 또는 제 2 시간이 가장 길거나, 가장 짧은 메모리 블록이 선택될 수 있다. 뿐만 아니라, 복수의 희생 블록이 선택될 수도 있다.
S146 단계에서, 디스터브 지수가 가장 작은 메모리 블록이 희생 블록으로써 선택될 수 있다. 마찬가지로, 복수의 희생 블록이 선택될 수 있으며, 디스터브 지수가 낮은 순서대로 복수 개 선택될 수 있다.
도 16은 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 순서도이다.
S210 단계에서 메모리 블록들 중, 유저 데이터, 더미 데이터, 또는 유저 데이터 및 더미 데이터로 전부 프로그램되지 않은 메모리 블록들에 대해 더미 프로그래밍 동작이 실행될 수 있다. 본 단계는 도 13의 S110 단계와 유사하므로, 중복되는 설명은 생략하기로 한다.
S220 단계에서, 제 2 시간에 관한 정보가 획득될 수 있다. 획득된 제 2 시간에 관한 정보는 메모리 컨트롤러의 디스터브 매니저(도 4 참조, 1122)에서 관리될 수 있다. 그리고, 획득된 정보는 주기적으로 불휘발성 메모리 장치(도 4 참조, 1200)의 메타 영역에 저장될 수 있다. 제 2 시간의 기초가 되는, 각각의 블록에 대해 마지막으로 프로그램이 완료된 시점에 관한 정보는, 예를 들어, 메모리 컨트롤러(도 1 참조, 1100)가 불휘발성 메모리 장치(1200)로 전송한 레디/비지 신호(R/B)에 대한 응답으로부터 얻어질 수 있다.
S230 단계에서, 가비지 컬렉션의 대상이 되는 희생 블록이 선택될 수 있다. 희생 블록을 선택하기 위해, 우선 제 2 시간이 기준 값보다 큰 메모리 블록들이 선택될 수 있다. 그리고, 제 2 시간이 기준 값보다 큰 메모리 블록들 중에서 무효 페이지의 수가 가장 많은 메모리 블록이 희생 블록으로 선택될 수 있다. 그러나, 희생 블록의 수는 복수일 수 있으며, 이 경우 희생 블록은 무효 페이지의 수가 많은 메모리 블록부터 순서대로 선택될 수 있다.
S240 단계에서, 희생 블록에 저장된 유저 데이터가 자유 블록으로 복사될 수 있다. 이와 동시에, 희생 블록에 저장된 유저 데이터는 물리적으로 소거될 것이다.
S250 단계에서, 자유 블록의 프로그램되지 않은 페이지는 더미 데이터로 프로그램될 것이다. 더미 프로그래밍 동작은 앞서 설명된 더미 클로우징 정책에 따라 실행될 수 있다. 또는, 예외적으로, 서든 파워 오프 또는 POR이 발생한 경우에도 실행될 수 있다.
본 발명의 실시 예에 따르면, 일반적인 가비지 컬렉션 동작과는 달리 제 1 시간 및 제 2 시간에 근거하여 산출된 디스터브 지수에 기초하여 가비지 컬렉션 동작이 실행될 수 있다. 또는, 제 2 시간에 기초하여 가비지 컬렉션 동작이 실행될 수 있다. 그 결과, 3차원 불휘발성 메모리 장치의 제조 공정상의 특성에 의하여 야기되는 다양한 문제를 해결하여, 불휘발성 메모리 장치의 신뢰성을 향상시킬 수 있다.
본 발명은 VNAND에 적용 가능하다.
도 17은 본 발명의 실시 예에 따른 VNAND의 블록을 보여주는 도면이다. 도 16을 참조하면, 기판 위에 4개의 서브 블록들이 형성될 수 있다. 각각의 서브 블록들은 기판 위의 워드 라인 컷들 사이에 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)이 레이어 형태로 적층됨으로써 형성될 수 있다. 적어도 하나의 스트링 선택 라인(SSL)은 스트링 선택 라인 컷으로 분리될 수 있다. 각각의 워드 라인 컷들은, 도시되지 않았지만 공통 소스 라인(Common Source Line: CSL)을 포함할 수 있다. 예를 들어, 각각의 워드 라인 컷에 포함된 공통 소스 라인(CSL)은 공통으로 연결될 수 있다. 비트 라인에 연결된 필라(pilar)가 적어도 하나의 접지 선택 라인(GSL), 복수의 워드 라인들(WLs), 적어도 하나의 스트링 선택 라인(SSL)을 관통함으로써, 스트링이 형성될 수 있다.
도 16에서는 워드 라인 컷들 사이의 대상을 서브 블록으로 도시하였는데, 본 발명이 반드시 여기에 제한되지 않는다. 본 발명의 서브 블록은 워드 라인 컷과 스트링 선택 라인 컷 사이의 대상을 서브 블록으로 명명할 수 있다.
본 발명의 실시 예에 따른 블록(BLK)은 두 개의 워드 라인들이 하나로 병합된 구조, 달리 말하면, 워드 라인 병합 구조(merged wordline structure)로 구현될 수 있다.
도 18은 본 발명의 다른 실시 예에 따른 VNAND의 블록을 보여주는 도면이다. 설명의 편의를 위하여 메모리 블록(BLK)의 워드 라인의 층수는 4라고 가정한다. 메모리 블록(BLK)은 인접한 직렬 연결된 메모리 셀들의 하단들을 파이프로 연결하는 PBiCS(pipe-shaped bit cost scalable) 구조로 구현될 수 있다. 메모리 블록(BLK)은 m×n (m, n은 자연수)의 스트링들(NS)을 포함한다.
도 18에서는 예시적으로 m=6, n=2인 경우가 도시되었다. 각 스트링(NS)은 직렬 연결된 메모리 셀들(MC1 내지 MC8)을 포함할 수 있다. 여기서 메모리 셀들(MC1 내지 MC8)의 제 1 상단은 스트링 선택 트랜지스터(SST)에 연결되고, 메모리 셀들(MC1 내지 MC8)의 제 2 상단은 접지 선택 트랜지스터(GST)에 연결되고, 메모리 셀들(MC1 내지 MC8)의 하단은 파이프 연결될 수 있다.
스트링(NS)을 구성하는 메모리 셀들은 복수의 반도체 층에 적층됨으로써 형성될 수 있다. 각 스트링(NS)은 제 1 필라(P11), 제 2 필라(PL1), 제 1 필라(P11) 및 제 2 필라(P12)를 연결하는 필라 연결부(P13)를 포함할 수 있다. 제 1 필라(P11)는 비트 라인(예를 들어, BL1)과 필라 연결부(P13)에 연결되고, 스트링 선택 라인(SSL), 워드 라인들(WL5 ~ WL8) 사이를 관통함으로써 형성될 수 있다. 제 2 필라(P12)는 공통 소스 라인(CSL)과 필라 연결부(P13)에 연결되고, 접지 선택 라인(GSL), 워드 라인들(WL1 ~ WL4) 사이를 관통함으로써 형성될 수 있다. 도 12에 도시된 바와 같이, 스트링(NS)은 U 자형 필라 형태로 구현될 수 있다.
예를 들어, 백-게이트(BG)는 기판 위에 형성되고, 백-게이트(BC) 내부에 필라 연결부(P13)가 구현될 수 있다. 예를 들어, 백-게이트(BG)는 블록(BLK)에 공통적으로 존재할 수 있다. 백-게이트(BG)는 다른 블록의 백-게이트와 서로 분리된 구조일 수 있다.
본 발명은 솔리드 스테이트 드라이브(solid state drive; SSD)에 적용 가능하다.
도 19는 본 발명의 실시 예에 따른 SSD를 예시적으로 보여주는 블록도이다. 도 18을 참조하면, SSD(2000)는 SSD 컨트롤러(2100) 및 복수의 불휘발성 메모리 장치들(2200)을 포함한다.
SSD 컨트롤러(2100)는 복수의 채널들(CH1 ~ CHi, i는 2 이상의 정수)을 통하여 불휘발성 메모리 장치들(2200)에 연결된다. SSD 컨트롤러(2100)는 적어도 하나의 프로세서(2110), 워킹 메모리(2120), 에러 정정 회로(2130), 호스트 인터페이스(2140) 및 불휘발성 메모리 인터페이스(2150)를 포함할 수 있다.
워킹 메모리(2120)는 메모리 컨트롤러(2100)의 동작에 필요한 데이터를 임시로 저장할 수 있다. 예를 들어, 워킹 메모리(2120)는 불휘발성 메모리 장치(2200)의 메타 영역(미도시)에 저장된 정보(예를 들어, 제 1 시간, 제 2 시간, 디스터브 지수 등)를 로딩하고, 각각의 메모리 블록에 관한 정보를 실시간으로 관리할 수 있다. 그리고, 워킹 메모리(2120)에 로딩된 정보는 업데이트 되어, 주기적으로 불휘발성 메모리 장치(2200)의 메타 영역에 저장될 수 있다. 워킹 메모리(2120)에 로딩된 플래시 변환 계층은 테이블에 따라 가비지 컬렉션 동작을 실행할 수 있다.
에러 정정 회로(2130)는 쓰기 동작에서 프로그램될 데이터의 에러 정정 코드값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 불휘발성 메모리 장치(2200)로부터 복구된 데이터의 에러를 정정할 수 있다. 도시되지 않았지만, 메모리 컨트롤러(2100)를 동작하는 데 필요한 코드 데이터를 저장하는 코드 메모리가 더 포함될 수 있다. 코드 메모리는 불휘발성 메모리 장치로 구현될 수 있다.
호스트 인터페이스(2140)는 외부의 장치와 인터페이스 기능을 제공할 수 있다. 여기서 호스트 인터페이스(2140)는 낸드 플래시 인터페이스일 수 있다. 이 외에도 호스트 인터페이스(2140)는 다양한 인터페이스에 의해 구현될 수 있으며, 복수의 인터페이스들로 구현될 수도 있다. 불휘발성 메모리 인터페이스(2150)는 불휘발성 메모리 장치(2100)와 인터페이스 기능을 제공할 수 있다.
불휘발성 메모리 장치(2200)는 메모리 셀들이 연결되는 셀 스트링이 기판에 수직으로 형성되는 3차원 불휘발성 메모리 장치일 수 있다. 불휘발성 메모리 장치(2200)는 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다. 불휘발성 메모리 장치(2200)의 메타 영역(미도시)에는 디스터브 매니저에 의해 관리되는 정보들이 주기적으로 저장될 수 있다.
본 발명의 실시 예에 따른 SSD(2000)는 정보에 기초하여 가비지 컬렉션 동작을 실행하도록 구성될 수 있다. 그 결과, 3차원 불휘발성 메모리 장치의 제조 공정상의 특성으로 인하여 야기되는 다양한 문제를 해결하여, SSD(2000)의 신뢰성이 향상될 수 있다.
본 발명은 eMMC(embedded multimedia card, moviNAND, iNAND)에도 적용 가능하다.
도 20은 본 발명의 실시 예에 따른 eMMC를 예시적으로 보여주는 블록도이다. 도 19를 참조하면, eMMC(3000)는 및 컨트롤러(3100) 및 적어도 하나의 낸드 플래시 메모리 장치(3200)를 포함할 수 있다.
메모리 컨트롤러(3100)는 채널을 통하여 낸드 플래시 메모리 장치(3200)에 연결될 수 있다. 메모리 컨트롤러(3100)는 적어도 하나의 컨트롤러 코어(3110), 워킹 메모리(3120), 호스트 인터페이스(3130), 및 낸드 인터페이스(3140)를 포함할 수 있다. 적어도 하나의 컨트롤러 코어(3110)는 eMMC(3000)의 전반적인 동작을 제어할 수 있다. 워킹 메모리(3120)에는 가비지 컬렉션 동작을 실행하기 위한 디스터브 매니저 및 플래시 변환 계층 등이 로딩될 수 있다. 호스트 인터페이스(3130)는 컨트롤러(3100)와 호스트의 인터페이싱을 수행할 수 있다. 낸드 인터페이스(3140)는 낸드 플래시 메모리 장치(3200)와 컨트롤러(3100)의 인터페이싱을 수행할 수 있다. 예를 들어, 호스트 인터페이스(3130)는 병렬 인터페이스(예를 들어, MMC 인터페이스)일 수 있다. 예를 들어, 호스트 인터페이스(3130)는 직렬 인터페이스(예를 들어, UHS-II, UFS 인터페이스)일 수 있다. 예를 들어, 호스트 인터페이스(3130)는 낸드 인터페이스일 수 있다.
낸드 플래시 메모리 장치(3200)는 메모리 셀들이 연결되는 셀 스트링이 기판에 수직으로 형성되는 3차원 불휘발성 메모리 장치일 수 있다. 낸드 플래시 메모리 장치(3200)의 메타 영역(미도시)에는 디스터브 매니저에 의해 관리되는 정보들이 주기적으로 저장될 수 있다.
eMMC(3000)는 호스트로부터 전원 전압들(Vcc 및 Vccq)을 제공받을 수 있다. 여기서, 제 1 전원 전압(Vcc, 예를 들어 3.3V)은 낸드 플래시 메모리 장치(3200) 및 낸드 인터페이스(3140)에 제공되고, 제 2 전원 전압(Vccq, 예를 들어 1.8V/3.3V)은 컨트롤러(3100)에 제공될 수 있다. 예를 들어, eMMC(3000)는 외부 고전압(Vpp)을 옵션적으로 제공받을 수 있다.
본 발명의 실시 예에 따른 eMMC(3000)는 정보에 기초하여 가비지 컬렉션 동작을 실행하도록 구성될 수 있다. 그 결과, eMMC(3000)의 신뢰성이 향상될 수 있다.
도 21은 본 발명이 적용된 모바일 기기를 보여주는 블록도이다. 도 20을 참조하면, 모바일 기기(4000)는 MIPI(mobile industry processor interface) 표준 또는 eDP(Embedded DisplayPort) 표준을 지원할 수 있도록 구성될 수 있다. 모바일 기기(4000)는 애플리케이션 프로세서(4100), 워킹 메모리(4200), 디스플레이부(4300), 이미지 처리부(4400), 데이터 스토리지(4500), 무선 송수신부(4600), 및 유저 인터페이스(4800)를 포함할 수 있다.
워킹 메모리(4200)에는 본 발명의 실시 예에 따른 가비지 컬렉션 동작을 실행하기 위해, 디스터브 매니저가 로딩될 수 있다. 데이터 스토리지(4500)를 구성하는 각각의 메모리 블록과 관련된 정보는 디스터브 매니저에 의해 실시간으로 관리될 수 있으며, 데이터 스토리지(4500)를 구성하는 메모리 블록의 메타 영역에 주기적으로 저장될 수 있다.
디스플레이부(4300)는 디스플레이 패널(4310) 및 DSI (display serial interface) 주변 회로(4320)를 포함할 수 있다. 디스플레이 패널(4310)은 영상 데이터를 디스플레이할 수 있다. 애플리케이션 프로세서(4100)에 내장된 DSI 호스트는 DSI를 통하여 디스플레이 패널(4310)과 시리얼 통신을 수행할 수 있다. DSI 주변 회로(4320)는 디스플레이 패널(4310)을 구동하는데 필요한 타이밍 컨트롤러, 데이터 드라이버 등을 포함할 수 있다.
이미지 처리부(4400)는 카메라 모듈(4410) 및 CSI (camera serial interface) 주변 회로(4420)를 포함할 수 있다. 카메라 모듈(4410) 및 CSI 주변 회로(4420)는 렌즈, 이미지 센서, 이미지 프로세서 등을 포함할 수 있다. 카메라 모듈(4410)에서 생성된 이미지 데이터는 이미지 프로세서에서 처리될 수 있으며, 처리된 이미지는 CSI를 통하여 애플리케이션 프로세서(4100)로 전달될 수 있다.
데이터 스토리지(4500)는 임베디드 UFS 스토리지(4510) 및 탈착형 UFS 카드(4520)를 포함할 수 있다. 임베디드 UFS 스토리지(4510) 및 탈착형 UFS 카드(4520)는 M-PHY 계층을 통하여 애플리케이션 프로세서(4100)와 통신을 수행할 수 있다. 한편, 호스트(애플리케이션 프로세서, 4100)는 탈착형 UFS 카드(4520)와 UFS 프로토콜이 아닌 다른 프로토콜에 의해 통신하도록 브릿지(bridge)를 구비할 수 있다. 애플리케이션 프로세서(4100)와 탈착형 UFS 카드(4520)는 다양한 카드 프로토콜(예를 들어, UFDs, MMC, eMMC SD(secure digital), mini SD, Micro SD 등)에 의해 통신할 수 있다. 임베디드 UFS 스토리지(4510) 및 탈착형 UFS 카드(4520)는 메모리 셀이 연결되는 셀 스트링이 기판과 수직으로 형성되는 3차원 불휘발성 메모리 장치로 구성될 수 있다. 임베디드 UFS 스토리지(4510) 및 탈착형 UFS 카드(4520)의 메타 영역에는 각각의 메모리 블록에 관한 정보가 저장될 수 있다.
무선 송수신부(4500)는 안테나(4610), RF 부(4620), 및 모뎀(4630)을 포함할 수 있다. 모뎀(4630)은 M-PHY 계층을 통하여 애플리케이션 프로세서(4100)와 통신하는 것으로 도시되었다. 그러나, 실시 예에 따라서, 모뎀(4630)은 애플리케이션 프로세서(4100)에 내장될 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
1000: 데이터 저장 장치 1100: 메모리 컨트롤러
1110: 프로세서(들) 1120: 워킹 메모리
1122: 디스터브 매니저 1124: 플래시 변환 계층
1126: 맵핑 테이블 1130: 호스트 인터페이스
1140: ECC 회로 1150: 불휘발성 메모리 인터페이스
1200: 불휘발성 메모리 장치 1210: 메모리 셀 어레이
1220: 로우 디코더 1230: 페이지 버퍼 회로
1240: 데이터 입출력 회로 1250: 제어 로직

Claims (20)

  1. 기판과 수직 방향으로 형성되는 복수의 셀 스트링들을 포함하고 복수의 메모리 블록들로 구성되는 불휘발성 메모리 장치, 및 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법에 있어서:
    상기 복수의 메모리 블록들 중 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 N개의 메모리 블록들 각각이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에, 상기 N개의 메모리 블록들을 더미 데이터로 프로그램하는 단계(N은 1보다 크고 상기 복수의 메모리 블록들의 개수보다 작음);
    상기 N개의 메모리 블록들 각각이 물리적으로 소거된 시점과 전부 프로그램된 시점 사이의 시간인 제 1 시간, 및 상기 전부 프로그램된 시점 후 전부 프로그램된 상태가 지속된 시간인 제 2 시간을 획득하는 단계;
    상기 제 1 시간 및 상기 제 2 시간에 기초하여, 상기 제 1 시간이 증가할수록 그리고 상기 제 2 시간이 감소할수록 증가하는 디스터브 지수를 상기 N개의 메모리 블록들 각각에 대해 산출하는 단계;
    상기 디스터브 지수에 기반하여, 상기 N개의 메모리 블록들 중 가비지 컬렉션을 위한 희생 블록을 선택하는 단계; 그리고
    상기 희생 블록의 유효 페이지의 데이터를, 상기 복수의 메모리 블록들 중 자유 블록으로 복사하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  2. 제 1 항에 있어서,
    상기 희생 블록을 선택하는 단계는:
    상기 N개의 메모리 블록들 중 적어도 하나에 대해 상기 디스터브 지수가 0인지 여부를 판단하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  3. 제 2 항에 있어서,
    상기 희생 블록을 선택하는 단계는:
    상기 N개의 메모리 블록들 중 상기 디스터브 지수가 0인 메모리 블록들을 상기 희생 블록으로 우선적으로 선택하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  4. 제 3 항에 있어서,
    상기 희생 블록을 선택하는 단계는:
    상기 디스터브 지수가 0인 메모리 블록들 중 무효 페이지의 수가 가장 많은 메모리 블록을 상기 희생 블록으로 우선적으로 선택하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  5. 제 3 항에 있어서,
    유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 메모리 블록은 상기 희생 블록으로 선택되지 않는 데이터 저장 장치의 동작 방법.
  6. 제 2 항에 있어서,
    상기 N개의 메모리 블록들 중 상기 디스터브 지수가 0인 메모리 블록이 없는 경우, 상기 희생 블록을 선택하는 단계는:
    상기 N개의 메모리 블록들 중 상기 디스터브 지수가 가장 작은 메모리 블록을 상기 희생 블록으로 선택하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  7. 제 1 항에 있어서,
    상기 자유 블록이 전부 프로그램되지 않은 경우, 상기 자유 블록이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에 상기 자유 블록의 프로그램되지 않은 페이지를 더미 데이터로 프로그램하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  8. 복수의 메모리 블록들로 구성된 3차원 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 데이터 저장 장치의 동작 방법에 있어서:
    상기 복수의 메모리 블록들 중 유저 데이터, 더미 데이터, 또는 상기 유저 데이터 및 상기 더미 데이터로 전부 프로그램되지 않은 N개의 메모리 블록들 각각이 물리적으로 소거된 시점으로부터 기준 시간이 경과한 시점에, 상기 N개의 메모리 블록들을 더미 데이터로 프로그램하는 단계(N은 1보다 크고 상기 복수의 메모리 블록들의 개수보다 작음);
    상기 N개의 메모리 블록들 각각이 전부 프로그램된 시점 후 전부 프로그램된 상태가 지속된 시간을 획득하는 단계;
    가비지 컬렉션을 위한 희생 블록으로서, 상기 전부 프로그램된 상태가 지속된 시간이 임계 시간 이상인 메모리 블록들을 선택하는 단계; 그리고
    상기 희생 블록의 유효 페이지의 데이터를 자유 블록으로 복사하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  9. 제 8 항에 있어서,
    상기 전부 프로그램된 상태가 지속된 시간이 상기 임계 시간 이상인 메모리 블록들 중, 무효 페이지의 수가 가장 많은 메모리 블록이 상기 희생 블록으로 우선적으로 선택되는 데이터 저장 장치의 동작 방법.
  10. 제 9 항에 있어서,
    상기 임계 시간은, 상기 N개의 메모리 블록들 각각이 물리적으로 소거된 시점과 상기 전부 프로그램된 시점 사이의 시간에 따라 가변하는 데이터 저장 장치의 동작 방법.
  11. 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치의 가비지 컬렉션을 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하고, 상기 복수의 메모리 블록들의 각각은 기판에 수직으로 형성되는 복수의 메모리 셀 스트링들을 포함하고, 상기 메모리 컨트롤러는 디스터브 매니저를 포함하는, 데이터 스토리지 장치의 동작 방법에 있어서:
    상기 복수의 메모리 블록들 중 완전하게 프로그램 되지 않은 N개의 메모리 블록들에 대해 더미 클로우징을 실행하는 단계(N은 1보다 크고 상기 복수의 메모리 블록들의 개수보다 작음);
    상기 N개의 메모리 블록들 각각에 대하여, 상기 N개의 메모리 블록들 중 대응하는 메모리 블록의 상기 더미 클로우징으로부터 경과한 시간을 나타내는 간격(interval), 및 상기 더미 클로우징과 상기 대응하는 메모리 블록의 상기 가비지 컬렉션 사이에 최소한으로 요구되는 시간 지연을 나타내는 문턱 시간(threshold time)을 상기 디스터브 매니저에 저장하는 단계;
    상기 N개의 메모리 블록들의 상기 간격들에 기반하여 상기 N개의 메모리 블록들 중 희생 블록을 선택하는 단계; 그리고
    상기 희생 블록의 유효 페이지 데이터를 상기 복수의 메모리 블록들 중 자유 블록으로 복사하는 단계를 포함하되,
    상기 희생 블록을 선택하는 단계는, 상기 문턱 시간 이상인, 특정 메모리 블록의 상기 간격에 기반하여 상기 희생 블록을 선택하는 단계를 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 더미 클로우징을 실행하는 단계는, 유저 데이터로 완전하게 프로그램 되지 않은 메모리 블록에 대한 더미 클로우징을 실행하는 것을 포함하고,
    상기 더미 클로우징을 실행하는 단계는, 상기 메모리 블록에 물리적으로 소거된 페이지 없이 유저 데이터 및 더미 데이터로 상기 메모리 블록을 완전하게 프로그램 하는 것을 포함하는 방법.
  13. 제 11 항에 있어서,
    상기 N개의 메모리 블록들이 상기 문턱 시간을 초과하는 간격들을 갖는 제 1 메모리 블록들을 포함하는 경우, 상기 희생 블록을 선택하는 단계는, 상기 제 1 메모리 블록들 중 가장 많은 무효 페이지들을 갖는 메모리 블록을 상기 희생 블록으로 선택하는 것을 포함하는 방법.
  14. 제 11 항에 있어서,
    상기 더미 클로우징을 실행하는 단계는, 서든 파워-오프 또는 파워-온 리셋이 발생할 때 상기 더미 클로우징을 실행하는 것을 포함하는 방법.
  15. 삭제
  16. 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치의 가비지 컬렉션을 제어하도록 구성되는 메모리 컨트롤러를 포함하되, 상기 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함하고, 상기 복수의 메모리 블록들의 각각은 기판에 수직으로 형성되는 복수의 메모리 셀 스트링들을 포함하고, 상기 메모리 컨트롤러는 디스터브 매니저를 포함하는, 데이터 스토리지 장치의 동작 방법에 있어서:
    상기 복수의 메모리 블록들 중 N개의 메모리 블록들에 대해 더미 클로우징을 실행하는 단계로써,
    상기 N은 1보다 크고 상기 복수의 메모리 블록들의 개수보다 적은 정수이고,
    상기 N개의 메모리 블록들의 각각은, 상기 더미 클로우징을 실행하기 전에 완전하게 프로그램 되어 있지 않고,
    상기 더미 클로우징은, 상기 N 개의 메모리 블록들의 각각이 더미 데이터, 또는 유저 데이터와 더미 데이터로 완전하게 프로그램 되도록, 상기 N개의 메모리 블록들의 각각을 더미 데이터로 프로그램하는 것을 포함하는 것;
    상기 N개의 메모리 블록들의 각각에 대한 제 1 간격, 제 2 간격, 제 1 문턱 시간, 및 제 2 문턱 시간을 획득하는 단계로써,
    상기 제 1 간격은, 상기 N개의 메모리 블록들 중 대응하는 메모리 블록의 물리적 소거로부터 상기 더미 클로우징까지 경과한 시간이고,
    상기 제 2 간격은, 상기 대응하는 메모리 블록의 상기 더미 클로우징부터 경과한 시간이고,
    상기 제 1 문턱 시간은 상기 대응하는 메모리 블록의 상기 물리적 소거와 상기 더미 클로우징 사이에 최소한으로 요구되는 시간 지연이고,
    상기 제 2 문턱 시간은 상기 대응하는 메모리 블록의 상기 더미 클로우징과 상기 가비지 컬렉션 사이에 최소한으로 요구되는 시간 지연인 것;
    상기 N개의 메모리 블록들의 상기 제 2 간격들에 기반하여 상기 N개의 메모리 블록들 중에서 희생 블록을 선택하는 단계;
    상기 희생 블록의 유효 페이지 데이터를 상기 복수의 메모리 블록들 중 자유 블록으로 복사하는 단계를 포함하되,
    상기 희생 블록을 선택하는 단계는, 상기 제 2 간격이 상기 제 2 문턱 시간 이상인 특정 메모리 블록을 상기 희생 블록으로 선택하는 것을 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 더미 클로우징을 실행하는 단계는, 유저 데이터로 완전하게 프로그램 되지 않은 메모리 블록에 대한 더미 클로우징을 실행하는 것을 포함하고,
    상기 더미 클로우징을 실행하는 단계는, 상기 메모리 블록에 물리적으로 소거된 페이지 없이, 상기 메모리 블록을 유저 데이터로 완전하게 프로그램 하는 것을 포함하는 방법.
  18. 제 16 항에 있어서,
    상기 더미 클로우징을 실행하는 단계는 상기 제 1 간격이 상기 제 1 문턱 시간을 초과하는 경우에 실행되는 방법.
  19. 제 18 항에 있어서,
    상기 디스터브 매니저에 저장된 상기 제 1 간격과 상기 제 1 문턱 시간을 비교함으로써 상기 메모리 블록에 대한 상기 더미 클로우징을 실행할지 여부를 판별하는 단계를 더 포함하는 방법.
  20. 제 16 항에 있어서,
    상기 N개의 메모리 블록들이 상기 제 2 문턱 시간을 초과하는 제 2 간격들을 갖는 제 1 메모리 블록들을 포함하는 경우, 상기 희생 블록을 선택하는 단계는:
    희생 블록으로써 상기 제 1 메모리 블록들 중 가장 큰 수의 유효 페이지들을 포함하는 메모리 블록을 선택하는 것을 포함하는 방법.
KR1020140163396A 2014-10-15 2014-11-21 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 KR102292198B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US14/825,853 US9798657B2 (en) 2014-10-15 2015-08-13 Data storage device including nonvolatile memory device and operating method thereof
US15/701,978 US10133665B2 (en) 2014-10-15 2017-09-12 Data storage device including nonvolatile memory device and operating method thereof
US16/173,390 US10671524B2 (en) 2014-10-15 2018-10-29 Data storage device including nonvolatile memory device and operating method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462064093P 2014-10-15 2014-10-15
US62/064,093 2014-10-15

Publications (2)

Publication Number Publication Date
KR20160044989A KR20160044989A (ko) 2016-04-26
KR102292198B1 true KR102292198B1 (ko) 2021-08-25

Family

ID=55919303

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140163396A KR102292198B1 (ko) 2014-10-15 2014-11-21 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법

Country Status (1)

Country Link
KR (1) KR102292198B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102630116B1 (ko) * 2016-10-18 2024-01-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20180135188A (ko) 2017-06-12 2018-12-20 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190040607A (ko) 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190075563A (ko) 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190102790A (ko) 2018-02-27 2019-09-04 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
US11030094B2 (en) 2018-07-31 2021-06-08 SK Hynix Inc. Apparatus and method for performing garbage collection by predicting required time
KR20200033459A (ko) 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102620731B1 (ko) 2018-09-27 2024-01-05 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20200066907A (ko) 2018-12-03 2020-06-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200073604A (ko) 2018-12-14 2020-06-24 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
KR20200078046A (ko) 2018-12-21 2020-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200142698A (ko) 2019-06-13 2020-12-23 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120063231A1 (en) 2010-09-15 2012-03-15 Fusion-Io, Inc. Apparatus, System, and Method for Non-Volatile Storage Element Programming
US20120268990A1 (en) 2009-04-12 2012-10-25 Naftali Sommer Selective re-programming of analog memory cells
US20120268991A1 (en) 2011-04-22 2012-10-25 Silicon Motion, Inc. Data storage device and block selection method for a flash memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
KR20120028581A (ko) * 2010-09-15 2012-03-23 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
KR20140094278A (ko) * 2013-01-22 2014-07-30 에스케이하이닉스 주식회사 반도체 장치 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120268990A1 (en) 2009-04-12 2012-10-25 Naftali Sommer Selective re-programming of analog memory cells
US20120063231A1 (en) 2010-09-15 2012-03-15 Fusion-Io, Inc. Apparatus, System, and Method for Non-Volatile Storage Element Programming
US20120268991A1 (en) 2011-04-22 2012-10-25 Silicon Motion, Inc. Data storage device and block selection method for a flash memory

Also Published As

Publication number Publication date
KR20160044989A (ko) 2016-04-26

Similar Documents

Publication Publication Date Title
KR102292198B1 (ko) 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US10671524B2 (en) Data storage device including nonvolatile memory device and operating method thereof
US11340790B2 (en) Storage device for migrating data based on random read workload and operating method of the same
KR102254392B1 (ko) 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
KR102365269B1 (ko) 데이터 스토리지 및 그것의 동작 방법
KR102211865B1 (ko) 불휘발성 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US20220004496A1 (en) Memory system, memory controller, and method of operating memory system
KR102272248B1 (ko) 불휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법
KR20210099184A (ko) 저장 디바이스의 순차적 데이터 최적화 서브 영역
KR102660399B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20210026431A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR102292172B1 (ko) 불휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
CN112860178A (zh) 存储器装置、存储器控制器、存储器系统及存储器系统的操作方法
KR20200137244A (ko) 메모리 시스템 및 그것의 동작방법
CN112416809A (zh) 用于可扩展存储区域的分配模式
KR102586786B1 (ko) 메모리 시스템 및 그것의 동작방법
CN111580744A (zh) 存储器控制器及其操作方法
US20210365382A1 (en) Memory system, memory controller, and operation method thereof
KR20200033459A (ko) 메모리 시스템 및 그것의 동작방법
US11237984B2 (en) Memory system, memory controller and operating method thereof
KR20190102790A (ko) 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
CN113377281A (zh) 存储装置、存储器装置及其操作方法
CN112860176A (zh) 存储器系统、存储器控制器及其操作方法
KR20210041233A (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
CN111338978A (zh) 存储装置以及操作存储装置的方法

Legal Events

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