KR20200040044A - 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법 - Google Patents
하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20200040044A KR20200040044A KR1020180119808A KR20180119808A KR20200040044A KR 20200040044 A KR20200040044 A KR 20200040044A KR 1020180119808 A KR1020180119808 A KR 1020180119808A KR 20180119808 A KR20180119808 A KR 20180119808A KR 20200040044 A KR20200040044 A KR 20200040044A
- Authority
- KR
- South Korea
- Prior art keywords
- block
- page
- data
- victim
- worm
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법이 개시된다. 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치는 제1 블록 영역과 제2 블록 영역이 설정되는 제1 디바이스, 제3 블록 영역이 설정되는 제2 디바이스 및 상기 제1 블록 영역에 저장된 제1 페이지에 대한 제1 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제1 업데이트 버전을 상기 제2 블록 영역에 저장하고, 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대한 제2 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 컨트롤러를 포함한다.
Description
본 발명은 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 메모리 장치의 동작 방법에 관한 것으로, 구체적으로는 SLC(Single-Level Cell), MLC(Multi-Level Cell), TLC(Tri-Level Cell), 및 QLC(Quad-Level Cell)와 같이 둘 이상의 서로 다른 종류의 디바이스를 포함하는 비휘발성 메모리 장치를 효율적으로 동작시킬 수 있는 방법에 관한 것이다.
본 발명은 교육부 및 한국연구재단의 지역대학우수과학자지원사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 1345276641, 과제명: 고신뢰성 스마트 IT 환경 구현을 위한 하이브리드 비휘발성 메모리 아키텍쳐 기반의 효율적인 시스템 소프트웨어].
플래시 메모리(flash memory)는 하나의 메모리 셀에 저장 가능한 비트 수에 따라 SLC(Single-Level Cell), MLC(Multi-Level Cell), TLC(Tri-Level Cell), QLC(Quad-Level Cell)로 여러 종류의 반도체 칩(chip)으로 구분되며, 일반적으로 SLC는 고급형, MLC는 중급형, TLC/QLC는 보급형으로 취급되고 있다.
한편, 최근 이러한 여러 종류의 반도체 칩들을 혼합하여 하나의 저장장치에 사용하는 하이브리드 SSD(Solid State Drive)가 제안되었다. 이와 같은 저장장치는 고급형과 중급/보급형 반도체 칩을 하나의 SSD에 보유하고 있기 때문에, 파일 시스템(file system)으로부터 쓰기 요청 발생시 데이터를 고급형과 중급/보급형 반도체 칩 중 어느 위치에 저장할 것인가를 결정해야 한다. 이 때, 데이터를 분류하고 저장하는 기법이 비효율적인 경우, 합병 연산으로 인한 불필요한 데이터 이동이 빈번히 발생하여 전체적인 성능 저하가 초래될 수 있다.
이를 개선시키기 위하여 플래시 변환 계층 (Flash Translation Layer, 이하 FTL)에 대한 연구가 진행되어 왔다. 대부분의 기존 연구는 데이터가 갱신(update)될 때 로그 블록(log block)에 데이터가 쓰여지게 되는 로그 블록 기반 FTL에 관한 것이었다. 이러한 로그 블록 기반 FTL을 하이브리드 낸드(NAND) 플래시 저장장치에 적용할 경우, 각 반도체 칩의 특성이 고려되지 않아 고급형과 중급/보급형 반도체 칩 간의 데이터 이동이 빈번히 일어나게 되어 성능 저하가 발생할 수 있다.
도 1은 기존의 로그 블록 기반 FTL이 적용된 하이브리드 낸드 플래시 저장장치의 구조를 나타낸 도면이다.
대표적인 로그 블록 기반 FAST(Fully Associative Sector Translation) 기법을 하이브리드 낸드 플래시 메모리 기반의 SSD에 적용한 연구로서, MLC는 데이터 블록으로 쓰이며 SLC는 로그 블록으로 쓰이는 기존의 기법이 도 1에 도시된다. 도 1에서, 데이터가 중복 쓰기 연산에 의해 갱신되면, 데이터 블록에 저장된 데이터가 로그 블록에 쓰여진다. 그런데, 로그 블록 영역이 가득 찬 경우, 로그 블록과 연관된 데이터 블록 간에 완전 합병(full merge)이 이루어지는데, 이에 의해 성능 저하가 유발될 수 있다. 도 1의 종래 기술에서 상대적으로 연산 비용이 적게 드는 부분 합병(partial merge)은 데이터 블록의 순차 쓰기 조건이 만족되는 경우에만 이루어진다. 따라서, 부분 합병보다 완전 합병 연산이 자주 일어나며,이는 곧 SLC 메모리에 할당된 로그 블록 내에 저장되어 자주 쓰이는 핫(hot) 데이터들이 무차별하게, 자주 쓰이지 않는 콜드(cold) 데이터 취급을 받아 MLC 메모리에 할당된 데이터 블록에 쓰여진다는 것을 의미한다.
이처럼 기존 로그 블록 FTL 기법을 하이브리드 낸드 플래시 저장장치에 적용할 경우, 반도체 칩의 특성이 고려되지 않아 데이터가 SLC, MLC, TLC, QLC 메모리에 무분별하게 쓰이며(저장되며) 그에 따라 성능 및 안정성이 보장되지 않는다는 문제점을 가지고 있다.
한국공개특허 제10-2018-0012653호 "솔리드 스테이트 드라이브 장치 및 그것의 동작 방법"에서는 일정 주기마다 데이터들의 독출 빈도/접근 패턴을 분석하여 핫, 웜(Warm), 콜드 데이터로 분류하고, 핫 데이터는 SLC, 웜 데이터는 MLC, 콜드 데이터는 TLC에 저장하며, 웜 데이터가 TLC에 저장된 상태에서 MLC 영역으로 이동이 불가능할 경우(여유 공간 부족 등), TLC 내의 웜 데이터 영역을 MLC 모드로 동작하는 방식이 소개된다. 이 방식은 도 1의 2단계 구성보다 세분화된 구성으로 하이브리드 플래시 메모리의 성능을 개선하려는 시도이나, TLC 영역의 일부 영역을 MLC 모드로 동작시킴으로써 하이브리드 장치가 가진 성능의 일부를 FTL 관리 계층에서 스스로 포기하고, 성능을 최대한 이끌어내지 못하는 문제점이 있다.
또한, 한국등록특허 제10-1751571호 "핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법"에서는 호스트 데이터, 쓰기 연산(쓰기 명령)의 패턴을 분석하여 HOT 데이터와 COLD 데이터를 분류하되, HOTTEST와 COLEDST 사이에 중간 등급을 설정하며 COLDEST 데이터를 가장 소거 제한 횟수가 작은 디바이스(상기 선행기술에서는 MLC) 영역에 저장하는 방식이 소개되고 있다.
상기 선행기술에서는 가장 접근 빈도가 낮은 COLDEST 데이터를 격리하는 개념을 소개하고 있는데, 데이터의 사용 패턴은 매우 복잡하여 상기 선행기술로는 일반화된 데이터 사용 양상에 대응하여 하이브리드 플래시 메모리의 성능을 최적화하는 수단으로는 부족하다.
선행기술 한국공개특허 제10-2018-0012653호 "솔리드 스테이트 드라이브 장치 및 그것의 동작 방법"에서는 SLC, MLC, TLC의 3단계 위계를 가지는 하이브리드 디바이스를 전제로 하여 데이터를 접근 빈도에 따라 3단계로 구분하여 저장하는 점에서 기존 기술들보다 하이브리드 디바이스의 성능을 최대한 이끌어 내기 위한 방법이 시도되었다. 그러나 상기 선행기술은 TLC 영역의 일부 영역을 MLC 모드로 동작시킴으로써 하이브리드 장치가 가진 성능의 일부를 FTL 관리 계층에서 스스로 포기하고, 성능을 최대한 이끌어내지 못하는 문제점이 있다. 또한 상기 선행기술은 데이터가 물리 블록에 저장되었던 히스토리, 즉, 판정 시기 이전의 히스토리를 무시하고 특정 판정 시기에 전체적으로 분포를 리셋하는 구성이므로, 시간적 지역성(temporal locality)에 대한 고려가 없고, 이로 인하여 COLD - WARM - HOT 데이터 간의 이동 과정이 유기적으로 연결되지 않는 점에서 FTL 관리 효율이 저하되는 문제점이 있다.
또한 선행기술 한국등록특허 제10-1751571호 "핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법"에서는 데이터의 접근 빈도를 여러 단계로 구분하여 가장 접근 빈도가 낮은 데이터를 다른 단계의 데이터와 격리하는 개념이 소개되어 있으나, 한번 격리된 데이터가 계속하여 콜드 데이터로 머물러 있으리라는 보장도 없는 등, 일반화된 최적화 기법으로 보기는 어려운 문제점이 있다.
본 발명은 상기 선행기술들의 문제점을 해결하고자 도출된 것으로서, SLC 디바이스 내의 로그 영역 블록에 장시간 저장되고 유지될 필요가 있는 핫 데이터, 및/또는 로그 데이터를 걸러내고 그 걸러진 핫 데이터가 로그 블록 영역에 저장되도록 관리하여 핫 데이터/로그 데이터가 불필요하게 QLC/TLC/MLC 디바이스의 블록 영역에 저장되는 빈도를 줄이는 것을 목적으로 한다.
이로 인하여 본 발명은 QLC/TLC/MLC 디바이스의 지우기 연산이 가능한 제한 횟수 대비 QLC/TLC/MLC 디바이스에 대한 지우기 연산의 발생 빈도를 줄여 하이브리드 디바이스가 결합된 비휘발성 메모리 장치 내의 사용 연한을 극대화하고 수명을 연장시키는 것을 목적으로 한다.
또한 본 발명은 FTL 관리를 위해서 QLC/TLC/MLC 디바이스의 데이터 밀도 성능을 최대한 활용하고, 특정 밀도의 디바이스를 다른 디바이스처럼 변용하여 사용하는 일도 없이 각 디바이스의 고유의 특성을 최대한 활용하여 하이브리드 플래시 메모리 장치의 사용 연한을 최적화하는 것을 목적으로 한다. 예를 들어, QLC를 관리의 일환으로 TLC처럼 사용한다면 QLC의 데이터 밀도를 충분히 활용하지 못할 뿐 아니라, 실제로는 QLC의 쓰기 시간은 TLC의 쓰기 시간보다 길기 때문에 전체적인 디바이스의 성능은 크게 저하된다. 본 발명은 이러한 성능 저하 없이 하이브리드 디바이스 각각의 고유 성능에 기반한 최대 성능을 이끌어 내는 것을 목적으로 한다.
본 발명은 상기의 목적을 달성하기 위하여 도출된 구성으로서, 본 발명의 일 실시예에 따른 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치는 제1 블록 영역과 제2 블록 영역이 설정되는 제1 디바이스, 제3 블록 영역이 설정되는 제2 디바이스 및 상기 제1 블록 영역에 저장된 제1 페이지에 대한 제1 업데이트 연산(operation)이 발생하는 경우 상기 제1 페이지의 제1 업데이트 버전을 상기 제2 블록 영역에 저장하고, 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대한 제2 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 컨트롤러를 포함한다.
상기 제1 디바이스는 지우기 연산(erase operation)이 제1 제한횟수만큼 허용되고, 상기 제2 디바이스는 지우기 연산이 제2 제한횟수만큼 허용되며, 상기 제2 제한횟수는 상기 제1 제한횟수보다 클 수 있다.
상기 컨트롤러는 상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장할 때, 상기 제1 페이지의 논리 주소 오프셋에 기반하여 상기 제2 블록 영역 내의 물리 주소를 선택하고, 상기 선택된 물리 주소에 상기 제1 페이지의 상기 제1 업데이트 버전을 저장할 수 있다.
또한, 상기 컨트롤러는 상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장할 때, 상기 제2 블록 영역 내의 물리 블록의 물리 페이지 주소에 기반하여 순차적으로 상기 제1 페이지의 상기 제1 업데이트 버전을 저장할 수 있다.
또한, 상기 컨트롤러는 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대하여 발생하는 N번째 업데이트 연산을 - 상기 N은 기준 업데이트 횟수임 - 상기 제2 업데이트 연산으로 인정할 수 있다.
또한, 상기 컨트롤러는 상기 제2 블록 영역 중 임의의 웜 블록이 희생 웜 블록으로 선택된 경우, 상기 희생 웜 블록에 저장된 페이지 중 기준 업데이트 횟수 미만의 업데이트 연산이 발생한 제2 페이지는 제1 블록 영역으로 이주하고, 상기 기준 업데이트 횟수 이상의 업데이트 연산이 발생한 제3 페이지는 제3 블록 영역으로 이주할 수 있다.
상기 제1 디바이스 내에서 상기 제2 블록 영역의 비율은 제1 기준비율을 넘지 않도록 제어될 수 있다.
또한, 상기 컨트롤러는 상기 제1 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제1 업데이트 연산이 발생하고 상기 제2 블록 영역 내의 새로운 웜 블록을 지정하고자 하는 경우 상기 제2 블록 영역 내에 상기 새로운 웜 블록으로 새롭게 지정될 수 있는 빈 물리 블록이 없으면 상기 제1 블록 영역 내의 희생 데이터 블록과 상기 제2 블록 영역 내의 희생 웜 블록의 합병 연산(merge operation)을 수행하여 합병된 블록을 새로운 데이터 블록으로 생성하고 상기 새로운 데이터 블록은 상기 제1 블록 영역으로 지정되고, 상기 합병 연산에 수반되는 지우기 연산의 결과로서 생성되는 빈 블록을 상기 새로운 웜 블록으로 지정하고 상기 새로운 웜 블록은 상기 제2 블록 영역으로 지정될 수 있다.
또한, 상기 컨트롤러는 상기 제3 블록 영역 내의 모든 블록들이 유효 데이터로만 채워진 상태에서 상기 제2 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제2 업데이트 연산이 발생하는 경우, 상기 제3 블록 영역 중 희생 로그 블록을 선택하고, 상기 희생 로그 블록의 제1 논리 블록 주소에 기반하여 상기 제1 블록 영역 중 희생 데이터 블록을 선택하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 기반하여 상기 제2 블록 영역 중 희생 웜 블록을 선택하고, 상기 제1 블록 영역 내의 빈 블록 중 하나를 타겟 블록으로서 선택하고, 상기 희생 로그 블록, 상기 희생 데이터 블록 및 상기 희생 웜 블록 간의 합병 연산을 수행하여 상기 타겟 블록을 새로운 데이터 블록으로 생성하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 대응하는 페이지는 상기 타겟 블록으로 이주할 수 있다.
한편, 상기 희생 로그 블록 이외의 로그 블록에 저장된 페이지로서 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 대응하는 제2 페이지는 상기 타겟 블록으로 이주되고, 상기 희생 로그 블록 내에 저장된 유효한 페이지로서 상기 제1 논리 블록 주소에 대응하지 않는 제3 페이지는 상기 합병 연산의 결과로서 생성되는 새로운 로그 블록에 이주할 수 있다.
본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 동작방법은 플래시 변환 계층(FTL)의 컨트롤러에 의하여, 제1 디바이스에 설정되는 제1 블록 영역에 저장된 제1 페이지에 대한 제1 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제1 업데이트 버전을 상기 제1 디바이스에 설정되는 제2 블록 영역에 저장하는 단계, 상기 컨트롤러에 의하여, 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대한 제2 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제2 업데이트 버전을 제2 디바이스에 설정되는 제3 블록 영역에 저장하는 단계를 포함한다.
상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장하는 단계는, 상기 제1 페이지의 논리 주소 오프셋에 기반하여 상기 제2 블록 영역 내의 물리 주소를 선택하는 단계 및 상기 선택된 물리 주소에 상기 제1 페이지의 상기 제1 업데이트 버전을 저장하는 단계를 포함할 수 있다.
상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장하는 단계는, 상기 제2 블록 영역 내의 물리 블록의 물리 페이지 주소에 기반하여 순차적으로 타겟 물리 페이지 주소를 선택하는 단계 및 상기 타겟 물리 페이지 주소에 상기 제1 페이지의 상기 제1 업데이트 버전을 저장하는 단계를 포함할 수 있다.
상기 제1 페이지의 상기 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 단계는, 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대하여 발생하는 N번째 업데이트 연산을 - 상기 N은 기준 업데이트 횟수임 - 상기 제2 업데이트 연산으로 인정하는 단계 및 상기 제2 업데이트 연산에 따른 상기 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 단계를 포함할 수 있다.
상기 컨트롤러에 의하여, 상기 제1 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제1 업데이트 연산이 발생하고 상기 제2 블록 영역 내의 새로운 웜 블록을 지정하고자 하는 경우 상기 제2 블록 영역 내에 상기 새로운 웜 블록으로 새롭게 지정될 수 있는 빈 물리 블록을 탐색하는 단계, 상기 새로운 웜 블록으로 새롭게 지정될 수 있는 빈 물리 블록이 없으면 상기 제1 블록 영역 내의 희생 데이터 블록과 상기 제2 블록 영역 내의 희생 웜 블록의 합병 연산(merge operation)을 수행하여 합병된 블록을 새로운 데이터 블록으로 생성하는 단계 및 상기 컨트롤러에 의하여, 상기 합병 연산에 수반되는 지우기 연산의 결과로서 생성되는 빈 블록을 상기 새로운 웜 블록으로 지정하는 단계를 포함하고, 상기 새로운 데이터 블록은 상기 제1 블록 영역으로 지정되고, 상기 새로운 웜 블록은 상기 제2 블록 영역으로 지정될 수 있다.
상기 컨트롤러에 의하여, 상기 제3 블록 영역 내의 모든 블록들이 유효 데이터로만 채워진 상태에서 상기 제2 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제2 업데이트 연산이 발생하는 경우, 상기 제3 블록 영역 중 희생 로그 블록을 선택하는 단계, 상기 컨트롤러에 의하여, 상기 희생 로그 블록의 제1 논리 블록 주소에 기반하여 상기 제1 블록 영역 중 희생 데이터 블록을 선택하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 기반하여 상기 제2 블록 영역 중 희생 웜 블록을 선택하고, 상기 제1 블록 영역 내의 빈 블록 중 하나를 타겟 블록으로서 선택하는 단계, 상기 컨트롤러에 의하여, 상기 희생 로그 블록, 상기 희생 데이터 블록 및 상기 희생 웜 블록 간의 합병 연산을 수행하여 상기 타겟 블록을 새로운 데이터 블록으로 생성하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 대응하는 페이지는 상기 타겟 블록으로 이주하는 단계를 더 포함할 수 있다.
본 발명에 따르면, 본 발명의 비휘발성 메모리 장치는 대용량 QLC/TLC/MLC와 고성능 SLC를 혼합한 낸드 플래시 저장장치에서 각 반도체 칩의 특성을 고려함으로써 기존 로그 블록 기반 FTL에서 웜 블록 기법을 적용하여 중급/보급형 반도체 칩의 지우기 연산을 최소화하고 로그 영역 내에 하나의 자유 블록을 두어 각 반도체 칩(이종 메모리 디바이스) 간 데이터 이동을 최소화할 수 있다.
또한, 본 발명에 따르면, 본 발명의 비휘발성 메모리 장치는 중급/보급형 반도체 칩의 지우기 연산을 최소화하여 지우기 연산에 취약하지만 용량이 큰 QLC를 데이터 블록과 웜 블록에 이용하고, 핫 데이터를 효율적으로 관리하기 위해 입출력 성능이 높은 SLC를 로그 블록에 이용하여, QLC+SLC 하이브리드 낸드 플래시 기반의 대용량 저장장치를 효과적으로 구현할 수 있다. 이때 본 발명의 QLC는 사용 목적에 따라 MLC 또는 TLC로 대체될 수 있음은 당업자에게 자명할 것이다.
또한, 본 발명에 따르면, 본 발명의 비휘발성 메모리 장치는 최근 많이 연구되는 구조인 QLC와 다른 타입의 메모리를 혼합한 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치에서, 웜 블록을 통해 핫 블록을 별도로 구분하여 QLC의 단점 중 하나인 수명 문제를 보완할 수 있다.
또한, 본 발명에 따르면, 본 발명의 비휘발성 메모리 장치는 웜 블록을 이용하여 부분 합병을 최대한 효과적으로 증대시켜 완전 합병의 수를 줄임에 따라, 지우기 연산의 수를 감소시켜 전반적인 성능을 향상할 수 있다.
또한, 본 발명에 따르면, 본 발명의 비휘발성 메모리 장치는 기존에 핫 블록과 콜드 블록으로 나누어져 있는 방식과 다르게 '웜 블록'이라는 신규 구역을 할당하므로, 기존에 데이터 이주와 데이터 삭제가 이루어지는 조건이 데이터가 순차적으로 쓰여졌을 때만 가능한 것과 달리, 쓰기 명령이 순차적이 아니더라도 오버라이트(overwrite) 연산으로 인한 업데이트 발생 시 웜 블록에 LPN(Logical Page Number)을 유지한 채 업데이트 및 제반 연산을 수행하며 데이터 이주 및 삭제가 가능하다. 즉, 웜 블록은 단순히 데이터의 접근 빈도에 따라 핫 블록과 콜드 블록 간의 중간 단계로 구분되는 영역이 아니고, 데이터 블록의 데이터가 로그 블록으로 이주하는 과정에서 일종의 버퍼 기능을 수행하며 이러한 본 발명의 웜 블록에 의하여 순차적 쓰기 명령 뿐 아니라 랜덤 쓰기 명령에 대해서도 FTL 관리 효율을 증대시킬 수 있다.
도 1은 기존의 로그 블록 기반 FTL이 적용된 하이브리드 낸드 플래시 저장장치의 구조를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 다양한 동작을 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 메모리 컨트롤러에서 실행되는 비휘발성 메모리 장치의 동작 방법을 도시하는 동작 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 제1 업데이트 연산 시 메모리 컨트롤러가 실행하는 동작 방법을 도시하는 동작 흐름도이다.
도 6은 본 발명의 다른 일 실시예에 따른 제1 업데이트 연산 시 메모리 컨트롤러가 실행하는 동작 방법을 도시하는 동작 흐름도이다. 도 7은 도 4의 비휘발성 메모리 장치의 동작 방법을 구현한 쓰기 연산 알고리즘에 대한 슈도 코드(pseudo code)의 일 예이다.
도 8은 도 4의 비휘발성 메모리 장치의 동작 방법의 일 단계를 더욱 상세히 도시하는 동작 흐름도의 일 예이다.
도 9는 도 4의 비휘발성 메모리 장치의 동작 방법의 일 단계를 더욱 상세히 도시하는 동작 흐름도의 일 예이다.
도 2는 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 다양한 동작을 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 메모리 컨트롤러에서 실행되는 비휘발성 메모리 장치의 동작 방법을 도시하는 동작 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 제1 업데이트 연산 시 메모리 컨트롤러가 실행하는 동작 방법을 도시하는 동작 흐름도이다.
도 6은 본 발명의 다른 일 실시예에 따른 제1 업데이트 연산 시 메모리 컨트롤러가 실행하는 동작 방법을 도시하는 동작 흐름도이다. 도 7은 도 4의 비휘발성 메모리 장치의 동작 방법을 구현한 쓰기 연산 알고리즘에 대한 슈도 코드(pseudo code)의 일 예이다.
도 8은 도 4의 비휘발성 메모리 장치의 동작 방법의 일 단계를 더욱 상세히 도시하는 동작 흐름도의 일 예이다.
도 9는 도 4의 비휘발성 메모리 장치의 동작 방법의 일 단계를 더욱 상세히 도시하는 동작 흐름도의 일 예이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명에서 플래시 변환 계층(FTL, Flash Translation Layer)은 메모리 컨트롤러에 의하여 실행되는 프로그램 인스트럭션에 의하여 실행된다. 메모리 컨트롤러는 가상의 논리 계층인 FTL에서 실행되는 주소 사상(address mapping), 물리 주소와 논리 주소 간의 차이에서 오는 플래시 메모리 장치 내부의 데이터의 이동, 데이터의 복제, 데이터의 갱신/업데이트, 블록의 소거 등을 관리할 수 있다.
본 출원에서 서술되는 용어인 이주, 이주 연산(move operation)은 이송, 또는 이동 등의 용어로 표현되기도 하며, 데이터를 임의의 물리 블록에서 논리 주소가 지정하는 다른 물리 블록으로 카피(copy)하고, 원래 물리 주소에 남아 있는 데이터는 무효(valid)로 표시하거나, 소거가 가능한 경우에 지우는 연산을 의미한다.
본 출원에서 업데이트 버전(update version)을 새로운 블록 영역(웜 블록 또는 로그 블록)으로 저장할 때에는 원래 물리 블록에 저장되었던 이전 버전은 무효로 표시되는 과정이 수반된다.
이하에서는, 본 발명의 일 실시예에 따른 하이브리드 디바이스(Hybrid Device)를 포함하는 비휘발성 메모리 장치 및 그 동작 방법을 첨부된 도 2 내지 도 14를 참조하여 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치(100)의 구조를 나타낸 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치(100)는 제1 디바이스(110)로서 대용량의 QLC 낸드(NAND) 플래시를 포함하고, QLC 낸드 플래시 디바이스를 데이터 블록(data block) 영역과 웜 블록(warm block) 영역으로 이용하며, 제2 디바이스(120)로서 SLC 낸드 플래시를 포함하고, SLC 낸드 플래시 디바이스를 로그 블록(log block) 영역으로 이용한다. 설명의 편의상 제1 디바이스(110) 내에서 데이터 블록(111)들이 설정된 논리 영역을 데이터 블록 영역, 제1 디바이스(110) 내에서 웜 블록(112)들이 설정된 논리 영역을 웜 블록 영역이라 하기로 한다. 제2 디바이스(120) 내의 일부 또는 전부는 로그 블록(121)을 위한 로그 블록 영역으로 지정될 수 있다. 여기서, 대용량의 QLC 낸드 플래시에는 주소 사상(address mapping)과 관련하여 블록 레벨에서 주소를 매핑하고, SLC 낸드 플래시에는 페이지 레벨에서 주소를 매핑할 수 있다. 이는 QLC 낸드 플래시가 대용량 데이터를 취급하고, SLC 낸드 플래시가 로그 데이터를 취급하는 점 때문에 고려된 사항이지만, 본 발명의 사상이 이러한 블록 레벨 주소 매핑 또는 페이지 레벨 주소 매핑의 실시예로 한정되는 것은 아니다. 또한 도 2는 제1 디바이스(110)가 QLC 낸드 플래시이고 제2 디바이스(120)가 SLC 낸드 플래시인 것을 가정하고 있으나, 본 발명은 도 2의 실시예에만 국한되는 것은 아니며, 제1 디바이스(110)가 제2 디바이스(120)보다 데이터 밀도가 높고, 소거 제한 횟수가 작은 경우라면 SLC, MLC, TLC, QLC 등의 조합에 따라 다양하게 적용될 수 있다.
제1 디바이스(110) 내의 데이터 블록 영역, 및 웜 블록 영역의 설정/관리, 데이터 블록 영역 내 데이터 블록(111)의 지정, 웜 블록 영역 내 웜 블록(112)의 지정/할당 등의 과정은 FTL 관리를 위한 메모리 컨트롤러(도시되지 않음)에 의하여 실행될 수 있다.
본 발명의 하이브리드 디바이스 즉, 하이브리드 낸드(NAND) 플래시 메모리를 포함하는 비휘발성 메모리 장치(100)는 기존의 로그 블록 기반의 FTL 알고리즘에 웜 블록 기법을 적용한 것으로 데이터 블록,웜 블록,핫 데이터 블록,자유 블록으로 총 네 종류의 물리 블록을 가진다. 기존의 일반적인 단일 디바이스의 FTL은 데이터 블록 일부에 해당하는 비율, 예를 들어 3%∼5% 만큼의 고정적인 수를 로그 블록으로 설정한다. 본 발명의 하이브리드 낸드 플래시 메모리를 포함하는 비휘발성 메모리 장치(100)에서는 제1 디바이스(110)의 일정 비율이 웜 블록 영역으로 지정될 수 있다. 제2 디바이스(120)에서 로그 블록이 지정되며, 예를 들어 웜 블록 영역이 전체 또는 데이터 블록 영역의 2%, 로그 블록 영역이 전체 또는 데이터 블록 영역의 3%의 비율로 지정될 수도 있다. 따라서 제1 디바이스(110) 내에서 웜 블록 영역이 메모리 컨트롤러의 FTL에 의해 제1 기준 비율을 넘지 않도록 제어될 수 있으며, 제2 디바이스(120) 내에서 로그 블록 영역은 제1 디바이스(110) 또는 데이터 블록 영역과 비교하여 제2 기준비율을 넘지 않도록 제어될 수 있다.
웜 블록(112)은 논리 구조 상 데이터 블록(111)과 로그 블록(121) 사이에 존재한다. 도 1에 도시된 기존의 일반화된 로그 블록 기반 FTL 알고리즘은 MLC 데이터 블록에서 데이터에 대한 쓰기 연산이 중복인 경우, 즉, 오버라이트(overwrite)인 경우 업데이트 연산을 필요로 한다. 이때 도 1의 MLC 데이터 블록에서 갱신/업데이트가 필요한 데이터는 SLC 로그 블록으로 저장된다. 도 1과 달리, 도 2의 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치(100)에서는 데이터 블록(111)에서 갱신/업데이트된 데이터를 로그 블록(121)으로 쓰기 이전에 해당 데이터를 웜 데이터로 간주하고, 대용량 QLC 메모리/제1 디바이스(110)의 웜 블록 영역에서 웜 블록(112)을 할당한 후에 갱신/업데이트 데이터를 논리 주소에 따른 옵셋(offset)에 맞게 또는 물리 블록 내 순차적으로 웜 블록(112)에(웜 블록(112) 내의 빈 페이지에) 저장한다. 데이터 블록(111) 내의 데이터가 웜 블록(112)으로 이동하는 업데이트 과정을 편의상 제1 업데이트 연산으로 명명하기로 한다.
본 발명의 일 실시예에서는 데이터 블록(111) 내에 저장되었던 데이터가 갱신/업데이트될 시에는 웜 블록(112)에 갱신 데이터/업데이트 버전이 해당 논리 주소의 옵셋에 맞게 쓰여질 수 있다. 이는 곧 쓰기 요청이 순차 쓰기든 임의 쓰기든 간에 추후에 부분 합병이 가능하다는 것을 의미한다. 따라서, 순차 쓰기 조건이 만족되는 경우에만 부분 합병이 가능한 도 1의 기존 알고리즘과 달리 본 발명은 어떠한 경우에도 데이터-웜 블록 간 부분 합병이 가능하다. 부분 합병이 완전 합병보다 합병의 비용이 작음은 앞에서 설명한 바 있다. 본 발명의 일 실시예에서는 부분 합병이 완전 합병보다 빈번하게 일어나도록 유도할 수 있으므로 전체적인 비휘발성 메모리 장치(100)의 수명을 연장하는 주요한 수단이 될 수 있다. 이는 데이터가 업데이트 연산의 빈도 또는 발생 양상에 따라 데이터 블록(111) - 웜 블록(112) - 로그 블록(121)의 단계를 거치면서 이동하기 때문인데, 웜 블록(112)은 일종의 버퍼로서, 쓰기 요청의 분포(순차 쓰기인지 랜덤 쓰기인지)에 관계 없이 데이터를 한번 더 정렬되도록 관리할 수 있다. 즉, 웜 블록 내에서 LPN(Logic Page Number)가 유지된 채 업데이트 연산 및 제반 연산이 실행될 수 있음을 의미한다. 이와 같은 구성은 제1 디바이스(110)에서 블록 레벨 주소 매핑, 제2 디바이스(120)에서 페이지 레벨 주소 매핑을 이용하는 경우에 더 효과적일 수 있다.
이때, 웜 블록은 한 개일 수도 있고 여러 개일 수도 있다. 웜 블록 내에 저장된 데이터가 업데이트될 시에는 해당 데이터를 자주 쓰이는 핫(hot) 데이터로 간주하여 제2 디바이스(120)인 SLC 메모리 내의 로그 블록(121)으로 갱신 데이터/업데이트 버전이 쓰여지며, 핫 데이터로 간주된 데이터는 SLC 메모리 내의 로그 블록(121) 내에 오랜 시간 유지된다. 도 2에 도시되지는 않았으나, FTL 관리를 수행하는 메모리 컨트롤러는 로그 블록(121) 내 무효데이터가 존재함에 따라 로그 블록 영역 내 가비지 컬렉션(Garbage Collection)을 자체적으로 실행함으로써 최대한 핫 데이터를 로그 블록 영역에 위치시키도록 관리하므로 제2 디바이스(120) 내의 로그 블록(121) 및 로그 블록 영역에 핫 데이터를 오랜 시간 유지할 수 있다. 설명의 편의 상 웜 블록(112)에 저장된 데이터가 로그 블록(121)으로 이주하는 업데이트 과정을 제2 업데이트 연산이라 명명하기로 한다.
제2 업데이트 연산은 웜 블록(112) 내의 데이터가 갱신되는 경우에 발생할 수 있지만, 본 발명의 실시예에 따라서는 웜 블록(112) 내의 데이터가 N번 갱신된 경우에 발생하는 것으로 설정될 수도 있다. 이때 N은 제2 업데이트 연산이 발생하기 위한 기준 업데이트 횟수라고 간주할 수 있다. N=1인 실시예에서는 웜 블록(112) 내의 데이터가 한번만 갱신되는 경우에도 제2 업데이트 연산으로 인정되어 갱신 데이터는 로그 블록(121)으로 이주할 수 있다.
웜 블록(112)이 합병 연산을 위한 희생 웜 블록으로 선택된 경우, 희생 웜 블록에 저장된 페이지 중 예를 들어 기준 업데이트 횟수 N 미만의 업데이트 연산이 발생한 제2 페이지는 데이터 블록 영역 내의 데이터 블록(111)으로(즉, 콜드 블록으로) 이주하고, 기준 업데이트 횟수 N 이상의 업데이트 연산이 발생한 제3 페이지는 로그 블록 영역 내의 로그 블록(121)으로(즉, 핫 블록으로) 이주할 수 있다.
만일, 로그 블록 영역의 모든 로그 블록(121) 내에 무효 데이터가 전혀 존재하지 않는다면, 그 때에 이르러서야 비로소 합병 연산이 가장 큰 완전 합병 연산(full merge, 즉, 유효 초과 합병 연산)이 이루어진다. 이는 곧 로그 블록 영역 내 모든 로그 블록(121)이 유효 데이터로 가득 찼음을 의미하며 로그 블록 영역의 공간 활용도가 이미 극대화 되었음을 의미한다.
반도체 칩의 특성에 따라 QLC 플래시 메모리의 지우기 제한 횟수는 1,000번 이하, TLC 플래시 메모리의 지우기 제한 횟수는 1,000번 이하, MLC 플래시 메모리의 지우기 제한 횟수는 1,000~3,000번 이하인 반면 SLC 플래시 메모리의 지우기 제한 횟수는 100,000번 이상이다. 지우기 제한 횟수는 플래시 메모리 장치의 수명과 직결된다. 따라서, 본 발명은 중복 쓰기(overwrite)에 의하여 업데이트 연산이 빈번히 발생하는 핫 데이터를 수명이 긴 SLC 플래시 메모리인 제2 디바이스(120)에 효율적으로 배치함으로써 QLC 플래시 메모리인 제1 디바이스(110)에 읽기/쓰기/지우기 연산들이 과부하되는 현상을 방지할 수 있다.
이러한, 본 발명의 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 동작 방법에 대해서는 도 3을 참조하여 자세히 후술한다.
도 3은 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 구성을 뒷받침하기 위한 다양한 동작을 도시하는 도면이다.
1. 데이터-웜 부분 합병 연산(Data-Warm Partial Merge Operation)
도 3에서 파선 부분(연산 4.1 데이터-웜 부분 합병)을 참조하면, 도 2의 데이터 블록(111) 내 제1 데이터 페이지가 업데이트되어 제1 데이터 페이지에 대한 제1 업데이트 연산이 필요한 경우에, 웜 블록 영역에서 새로운 웜 블록(112)에 대한 할당이 요구되는 상황임에도 불구하고, 더 이상 웜 블록(112)으로 할당 가능한 자유 블록이 존재하지 않을 경우 가장 합병 연산 비용이 적은 데이터 블록을 희생 데이터 블록(311)으로 선정하여 데이터-웜 부분 합병(data-warm partial merge)을 수행한다. 만일, 선정된 희생 데이터 블록(311) 내에 유효한 데이터가 존재하지 않는다면 합병 연산 중 가장 연산 비용이 적은 스위치 합병(switch merge)이 가능해진다.
더 이상 웜 블록(112)으로 할당 가능한 자유 블록이 존재하지 않는 경우란, 실제로 제1 디바이스(110) 내에 빈 블록이 부족하거나, 웜 블록(112)을 추가 할당하는 경우 웜 블록 영역의 비율이 제1 기준 비율(예를 들어 2%)을 넘게 되는 경우를 의미할 수 있다. 웜 블록 영역의 비율이 제1 기준 비율을 넘지 않도록 하는 경우 또는 빈 블록이 부족한 경우에 웜 블록 영역에서 희생 웜 블록(312)을 선정하여 합병 연산을 수행하고, 합병 연산의 결과로서 빈 블록을 생성한 후, 생성된 빈 블록을 새로운 웜 블록으로 선정한다.
로그 블록 기반 FTL의 기존 방법들의 스위치 합병(switch merge) 및 부분 합병(partial merge)은 페이지 매핑(mapping)이 되는 로그 블록에 순차적인 갱신 데이터에 대해서만 수행이 가능하지만,본 발명의 일 실시예에 따른 알고리즘은 쓰기 요청이 순차 쓰기든 임의 쓰기이든 간에 웜 블록(112)의 데이터를 해당 논리 주소에 대응하는 옵셋에 따라 그 위치에 맞게 저장할 수 있기 때문에 어떠한 경우에도 스위치 합병 및 부분 합병이 가능하도록 구현될 수 있다.
다시 도 3에서 파선 부분(연산 4.1 데이터-웜 부분 합병)을 참조하면, 데이터-웜 부분 합병으로서, 희생 데이터 블록(311)의 유효 페이지에 저장된 D1 데이터와 F1 데이터가 희생 웜 블록(312)의 페이지 내에 D1' 데이터와 F1' 데이터로 '복사 후 쓰기' 연산이 일어남을 보여준다. 이후에는 데이터-웜 부분 합병에 수반되는 지우기 연산으로서 희생 데이터 블록(311)의 지우기 연산 후, 희생 웜 블록(312)이 새로운 데이터 블록으로 지정된다. 즉, 희생 웜 블록(312)이 희생 데이터 블록(311)을 대체하여 데이터 블록 영역에 새롭게 귀속된다. 이 경우 지우기 연산은 희생 데이터 블록(311)에서 단 한 번 일어난다. 희생 데이터 블록(311)의 지우기 연산 후 생성된 빈 물리 블록은 논리적으로 웜 블록으로 새롭게 지정된다. 결과적으로 합병 연산 전의 희생 데이터 블록(311)은 합병 이후에는 웜 블록 영역에 귀속되고, 희생 웜 블록(312)은 합병 이후에는 데이터 블록 영역에 귀속된다. 합병 연산 전후로 희생 데이터 블록(311)과 희생 웜 블록(312)은 논리적인 귀속 영역(데이터 블록 영역, 논리 블록 영역)이 서로 뒤바뀐다.
희생 데이터 블록(311)으로는 합병 연산 비용이 가장 적은 블록이 선택될 수 있는데, 예를 들어 웜 블록(112) 또는 로그 블록(121)과 관련도가 가장 낮은 블록이 희생 데이터 블록(311)로 선택될 수 있다.
2. 로그 데이터(Log Data) 이주
도 3의 점선 부분(연산 4.2 로드 데이터 이주)을 참조하면, 본 발명의 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치(100)는 제2 디바이스(120)인 SLC 낸드 플래시 메모리에 할당된 로그 블록 영역에서 로그 블록들(121, 321, 322, 323)이 데이터로 가득 찬 경우에 각 로그 블록(121, 321, 322, 323) 중 무효 데이터가 많은(또는 가장 많은) 로그 블록을 제1 희생 로그 블록(323)으로 선정하여 자유 블록(free block)(324)으로 유효 데이터 이주를 수행한다. 즉, 제2 업데이트 연산으로 인하여 로그 블록들(121, 321, 322, 323)에 새로운 데이터 페이지를 저장해야 하는데, 로그 블록들(121, 321, 322, 323)에 빈 페이지가 없어서 새로운 로그 블록을 할당해야 하는 경우에 본 절의 로그 데이터 이주 연산 또는 다음 절의 유효 초과 합병 연산이 고려된다.
로그 블록들(121, 321, 322, 323)에 빈 페이지가 없으면서 희생 로그 블록(323)과 같이 무효 페이지가 존재하는 경우, 제1 희생 로그 블록(323)이 선택되며, 제1 희생 로그 블록(323)의 데이터 페이지는 자유 로그 블록(324)으로 이주하고, 제1 희생 로그 블록(323)이 소거되어 자유 로그 블록(324)를 대체하는 새로운 로그 블록으로 지정된다.
로그 블록 영역 내에서 z3, z4, z5, z6 데이터 페이지가 저장된 로그 블록(323)이 가장 무효데이터가 많은 블록이기에 제1 희생 로그 블록(323)으로 선정되어 제1 희생 로그 블록(323) 내 유효데이터인 z6 데이터 페이지를 자유 블록(324)에 이주하는 로그 데이터 이주 연산이 실행됨이 도시된다. 로그 데이터 이주를 수행한 뒤 제1 희생 로그 블록(323)을 지워 다음에 사용 가능한 새로운 자유 공간을 만들어준다. 이 경우 지우기 연산은 제1 희생 로그 블록(323)에 대하여 단 한 번 일어난다.
3. 유효 초과 합병
도 3의 실선 부분(연산 4.3 유효 초과 합병)을 참조하면, 유효 초과 합병은 데이터 블록,웜 블록,및 로그 블록 간의 완전 합병(full merge)으로서, 로그 블록 영역의 로그 블록들(121, 321, 322)이 모두 유효 데이터로 가득 찬 경우에, 메모리 컨트롤러에 의해 수행된다.
도 3에는 제1 희생 로그 블록(323)이 도시되어 있지만, 유효 초과 합병 연산의 설명을 위하여 편의상 제1 희생 로그 블록(323)은 이미 소거 연산 등으로 존재하지 않는 상황을 가정한다. z3, z4, z5, z6 데이터 페이지와 같은 무효데이터가 저장된 제1 희생 로그 블록(323)이 없다고 가정한 후에 도 3의 로그 블록 영역을 살펴보면 로그 블록들(321, 322)은 전부 유효 데이터로 저장되어 있다. 이 경우에 임의의 웜 블록 내 데이터가 업데이트되어(제2 업데이트 연산에 의하여) 임의의 로그 블록에 데이터를 쓰고자 한다면 유효 초과 합병 연산이 일어날 필요가 있다. 유효 초과 합병 연산 후에 남겨진 제2 희생 로그 블록(321)의 j3, k3 데이터 페이지에 대해서는 자유 블록(324)으로 이주하는 로그 데이터 이주 연산이 실행된다. 유효 초과 합병 연산에서는 어차피 제2 희생 로그 블록(321)의 소거를 동반하므로 유효 초과 합병 연산은 제2 희생 로그 블록(321)에 대한 로그 데이터 이주 연산을 포함하는 개념으로도 이해할 수 있다.
메모리 컨트롤러는 로그 블록(121, 321, 322) 중 합병 연산의 비용이 가장 낮은 로그 블록을 제2 희생 로그 블록(321)으로 선택할 수 있다. 예를 들어, 메모리 컨트롤러는 로그 블록들(121, 321, 322) 중 상호 간의 연관도가 가장 낮은 블록을 제2 희생 로그 블록(321)으로 선정할 수 있다. 메모리 컨트롤러는 제2 희생 로그 블록(321)의 LBN(Logical Block Number)에서 지정되는 데이터를 가장 많이 포함하는 데이터 블록을 희생 데이터 블록(311)으로 지정하고,역시 제2 희생 로그 블록(321) 및 희생 데이터 블록(311)과 LBN 상의 관련도가 가장 높은 웜 블록을 희생 웜 블록(312)으로 지정하여 제2 희생 로그 블록(321), 희생 데이터 블록(311), 및 희생 웜 블록(312)을 함께 대상으로 하는 유효 초과 합병을 수행한다.
제2 디바이스(120)에 대해서는 페이지 레벨 주소 매핑이 이루어지므로 제2 희생 로그 블록(321) 내의 데이터는 하나의 LBN에만 할당되지 않을 수 있다. 이때 합병 연산의 효율을 가장 높일 수 있도록 제2 희생 로그 블록(321) 내의 데이터가 가장 많이 연관되는 LBN이 제1 LBN으로 지정되어 희생 데이터 블록(311) 및 희생 웜 블록(312)의 선택에 영향을 미칠 수 있다.
메모리 컨트롤러는 로그 블록 영역 내의 빈 블록 중 하나를 타겟 블록(313)으로 선택할 수 있다. 제2 희생 로그 블록(321), 희생 데이터 블록(311) 및 희생 웜 블록(312) 간의 합병 연산을 수행하는 결과로 타겟 블록(313)이 새로운 데이터 블록으로서 생성된다. 제2 희생 로그 블록(321)의 제1 LBN에 대응하는 페이지(C3, E3)는 타겟 블록(313)으로 이주한다. 유효 초과 합병 연산에서는 제2 희생 로그 블록(321)에 대한 소거가 수반되고, 희생 데이터 블록(311) 및 희생 웜 블록(312)에 대해서도 조건이 충족되면 소거 연산이 수행된다.
본 발명의 일 실시예 중 하나인 제1 디바이스(110)에 블록 레벨 매핑이 이루어지는 경우라면, 희생 데이터 블록(311)과 희생 웜 블록(312)은 모두 제1 LBN에 대응할 것이므로 희생 데이터 블록(311)의 모든 유효 페이지(D1, F1)와 희생 웜 블록의 모든 유효 페이지(A2)는 타겟 블록(313)으로 이주한다. 희생 데이터 블록(311)과 희생 웜 블록(312)은 더 이상 유효 페이지를 보유하지 않으므로 소거 연산의 대상이 된다.
본 발명의 다른 실시예에 따라서는 제1 디바이스(110)에도 페이지 레벨 매핑이 이루어지는 경우도 있을 수 있는데, 이때는 유효 초과 합병 연산의 결과로 희생 데이터 블록(311)과 희생 웜 블록(312)에 대해서 반드시 소거 연산이 이루어지지 않을 수도 있을 것이다.
다시 본 발명의 일 실시예인 제1 디바이스(110)에 블록 레벨 매핑이 이루어지는 실시예로서, 제2 희생 로그 블록(321) 외에 로그 블록(322)에 제1 희생 로그 블록(321)의 제1 LBN에 포함되는 데이터(G3)가 있는 경우, 해당 데이터(G3)를 제1 디바이스(110)인 QLC 낸드 플래시의 자유 블록, 즉, 타겟 블록(313)으로 이주를 실행할 뿐, 로그 블록(322)은 로그 데이터 이주를 별도로 실행하지 않으며, 희생 블록으로 선정된 하나의 로그 블록인 제2 희생 로그 블록(321)만 로그 데이터 이주를 수행한 뒤 제2 희생 로그 블록(321)을 지워 다음에 사용 가능한 자유 공간을 만들어준다. 이 경우 지우기 연산은 희생 데이터 블록(311),희생 웜 블록(312) 그리고 제2 희생 로그 블록(321)으로 총 세 번 일어난다. 유효 초과 합병은 로그 블록 영역의 로그 블록들(112, 321, 322) 전체가 유효 데이터일 경우 일어나며 이는 곧 로그 블록 영역의 공간 활용도가 이미 극대화 되었음을 의미한다.
제2 희생 로그 블록(321)의 제1 LBN에 대응하지 않는 j3, k3 데이터 페이지에 대해서는 자유 블록(324)으로 이주하는 로그 데이터 이주 연산이 실행됨은 앞에서 설명한 바와 같다. 자유 블록(324)은 유효 초과 합병 연산 및 그에 수반되는 제2 희생 로그 블록(321)에 대한 로그 데이터 이주 연산의 결과로서 새로운 로그 블록으로서 지정된다.
도 4는 본 발명의 일 실시예에 따른, 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치의 메모리 컨트롤러에서 실행되는 비휘발성 메모리 장치의 동작 방법을 도시하는 동작 흐름도이다.
도 4의 동작 방법은 호스트로부터 수신된 쓰기 연산의 객체인 제1 페이지가 제1 디바이스(110) 내에 저장되어 있음이 파악된 상태를 가정하기로 한다. 메모리 컨트롤러는 제1 디바이스(110) 내의 제1 페이지에 대한 쓰기 연산을 호스트로부터 수신한다(S410).
메모리 컨트롤러는 제1 페이지에 대한 쓰기 연산이 업데이트가 필요한 쓰기 연산인지를 판정한다(S420). 업데이트가 필요한 쓰기 연산이 아니면, 메모리 컨트롤러는 제1 디바이스(110)에 설정되는 제1 블록 영역에 제1 페이지의 쓰기 연산을 수행한다(S430).
업데이트가 필요한 쓰기 연산인 경우에는 해당 업데이트가 제1 업데이트인지 제2 업데이트인지를 식별할 필요가 있다. 메모리 컨트롤러는 제1 블록 영역에 저장된 제1 페이지에 대한 제1 업데이트 연산이 발생한 경우인지를 식별한다(S440). 제1 업데이트 연산이 발생한 경우, 메모리 컨트롤러는 제1 디바이스(110)에 설정되는 제2 블록 영역에 제1 페이지에 대한 제1 업데이트 버전의 쓰기 연산을 실행한다(S450).
제1 업데이트 연산이 아니고 제2 블록 영역의 제1 페이지에 대한 제2 업데이트 연산이 발생한 경우이면, 메모리 컨트롤러는 제1 페이지에 대한 제2 업데이트 버전을 저장할 제2 디바이스(120)의 제3 블록 영역 내의 로그 블록을 지정한다(S460). 메모리 컨트롤러는 지정된 로그 블록에 제2 업데이트 버전의 쓰기 연산을 수행한다(S470).
도 5는 본 발명의 일 실시예에 따른 제1 업데이트 연산 시 메모리 컨트롤러가 실행하는 동작 방법을 도시하는 동작 흐름도이다. 특히 도 4의 제1 업데이트 연산을 실행하는 경우(S450), 메모리 컨트롤러가 논리 주소에 따른 오프셋에 맞게 웜 블록에 데이터를 작성하는 실시예를 도시하는 동작 흐름도이다. 본 발명의 메모리 컨트롤러는 쓰기 연산이 순차적이 아니더라도 업데이트 발생시 웜 블록의 LPN(Logical Page Number)을 유지한 채 업데이트 및 제반 연산을 수행하며 데이터 이주 및 삭제가 가능하다.
도 5의 실시예에 따르면, 메모리 컨트롤러는 제1 페이지의 제1 업데이트 버전을 웜 블록에 저장할 때, 제1 페이지의 LPN(Logical Page Number)과 같은 논리 주소 오프셋에 기반하여 웜 블록 내의 물리 주소(오프셋)를 선택하고, 선택된 물리 주소에 제1 페이지의 제1 업데이트 버전을 저장할 수 있다.
도 5를 참조하면, 메모리 컨트롤러는 제1 페이지의 제1 업데이트 버전을 웜 블록에 저장해야 하는 상황임을 파악하였으므로, 제1 페이지의 쓰기 요청을 제2 블록 영역의 웜 블록에 대한 데이터 쓰기 요청으로 인지한다(S510).
메모리 컨트롤러는 제1 페이지의 논리 블록 주소에 웜 블록이 할당되어 있는지 판단한다(5520). 만약, 웜 블록이 할당되어 있지 않다면, 웜 블록을 새롭게 할당하고(S530), 그 새롭게 할당된 웜 블록에 데이터를 저장하는 쓰기 연산을 실행함으로써 제1 업데이트 연산을 실행한다(S560).
이미 할당되어 있는 웜 블록이 있는 경우, 메모리 컨트롤러는 할당된 웜 블록의 논리 페이지 주소에 따른 오프셋 위치의 페이지가 비어있는지 판단하고(S540), 비어있다면, 해당 페이지에 제1 페이지의 제1 업데이트 버전의 쓰기 연산을 실행함으로써 제1 업데이트 연산을 실행한다(S560).
단계 S540의 판정 결과 할당된 웜 블록의 논리 페이지 주소에 따른 오프셋 위치의 페이지가 비어있지 않다면, 할당된 웜 블록에 대한 처리 연산이 필요하다. 즉, 메모리 컨트롤러는 할당된 웜 블록에 저장된 유효한 데이터 페이지를 데이터 블록 또는 로그 블록으로 이동하고, 할당된 웜 블록을 소거한다(S550).
메모리 컨트롤러는 웜 블록에 저장된 유효한 데이터 페이지 중 기준 업데이트 횟수 N번 미만의 업데이트 연산이 발생한 제2 페이지는 제1 블록 영역 내의 데이터 블록으로 이주하고, 기준 업데이트 횟수 N번 이상의 업데이트 연산이 발생한 제3 페이지는 제3 블록 영역 내의 로그 블록으로 이주할 수 있다.
도 6은 본 발명의 다른 일 실시예에 따른 제1 업데이트 연산 시 메모리 컨트롤러가 실행하는 동작 방법을 도시하는 동작 흐름도이다. 특히 도 4의 제1 업데이트 연산을 실행하는 경우(S450), 오프셋과 무관하게 순차대로 웜 블록에 데이터가 작성되는 실시예를 도시하는 동작 흐름도이다.
도 6의 실시예에서 메모리 컨트롤러는 제1 페이지의 제1 업데이트 버전을 웜 블록에 저장할 때, 논리 주소 오프셋에 기반하는 것이 아니라, 제2 블록 영역 내의 웜 블록에 물리 페이지 주소에 기반하여 순차적으로 제1 페이지의 제1 업데이트 버전을 저장할 수 있다.
도 6을 참조하면, 메모리 컨트롤러는 제1 페이지의 제1 업데이트 버전을 웜 블록에 저장해야 하는 상황임을 파악하였으므로, 제1 페이지의 쓰기 요청을 제2 블록 영역의 웜 블록에 대한 데이터 쓰기 요청으로 인지한다(S610).
메모리 컨트롤러는 제1 페이지의 논리 블록 주소에 웜 블록이 할당되어 있는지 판단한다(S620).
이미 할당되어 있는 웜 블록이 없는 경우, 새로운 웜 블록을 할당하고(S630), 그 새롭게 할당된 웜 블록에 데이터의 쓰기 연산을 실행함으로써(S650) 제1 업데이트 연산을 실행한다(S450). 한편, 이미 할당되어 있는 웜 블록이 있는 경우, 메모리 컨트롤러는 웜 블록이 가득 찼는지 판단(S640)하고, 할당된 웜 블록이 가득 차지 않았다고 판단하면, 그 웜 블록의 빈 페이지에 데이터의 쓰기 연산을 실행함으로써 제1 업데이트 연산을 실행한다(S650). 이때 웜 블록의 물리 페이지 주소에 기반하여 순차적으로 빈 페이지를 탐색하고 타겟 물리 페이지 주소가 선택될 수 있다. 웜 블록 내의 타겟 물리 페이지 주소의 페이지에 데이터 페이지의 제1 업데이트 버전의 쓰기 연산이 실행될 수 있다.
만약, 웜 블록이 가득 찼다고 판단하면, 메모리 컨트롤러는 웜 블록의 기존 데이터를 데이터 블록 또는 로그 블록으로 이동 및 삭제함으로써(S660) 새로운 빈 웜 블록을 생성한다. 새롭게 생성된 빈 웜 블록에 메모리 컨트롤러가 데이터의 쓰기 연산을 실행함으로써 제1 업데이트 연산을 실행한다(S650).
단계 S660을 실행하는 과정에서, 데이터가 꽉 찬 웜 블록의 페이지들 중 기준 업데이트 횟수인 N번 미만의 업데이트 연산이 발생한 제2 페이지는 데이터 블록으로 이주하고, 기준 업데이트 횟수인 N번 이상의 업데이트 연산이 발생한 제3 페이지는 로그 블록으로 이주하는 연산을 실행할 수 있다. 이때 제3 페이지에 한해서는 제2 업데이트 연산이 실행되는 셈인데, 이러한 과정을 통하여 핫 페이지(hot page)에 대한 추가적인 검증을 거쳐 로그 블록의 활용 효율성을 더욱 높일 수 있다.
도 7은 도 4의 비휘발성 메모리 장치의 동작 방법을 구현한 쓰기 연산 알고리즘에 대한 슈도 코드(pseudo code)의 일 예이다.
도 8은 도 4의 비휘발성 메모리 장치의 동작 방법의 일 단계를 더욱 상세히 도시하는 동작 흐름도의 일 예이다.
도 9는 도 4의 비휘발성 메모리 장치의 동작 방법의 일 단계를 더욱 상세히 도시하는 동작 흐름도의 일 예이다.
도 7을 참조하면, 메모리 컨트롤러는 쓰기 연산 요청을 받고 데이터를 입력할 논리 페이지 번호(LPN, Logical Page Number)에 해당하는 데이터 블록의 옵셋의 페이지가 비어 있는지 확인하고, 비어있다면 해당 옵셋의 페이지에 데이터를 입력(쓰기 연산을 실행)한다(알고리즘 1-3행). 알고리즘 1-3행은 도 4의 단계(S410), 단계(S420), 단계(S430) 및 단계(S440)에 대응한다. 즉, 데이터 블록의 옵셋의 페이지가 비어 있으면 업데이트가 필요하지 않은 쓰기 연산이고, 데이터 블록의 옵셋의 페이지가 비어 있지 않으면 업데이트가 필요한 쓰기 연산이다(S420). 이때 해당 논리 페이지 번호(LPN)의 데이터에 대해서는 업데이트가 발생하지만 제1 업데이트 연산인지 또는 제2 업데이트 연산인지는 알고리즘의 3행, 6행, 및 8행의 실행 결과에 기반하여 결정된다(S440),
만일 해당 옵셋의 페이지가 비어있지 않다면, 메모리 컨트롤러는 해당 논리 페이지 번호(LPN) 및 그 데이터 블록에 대하여 할당된 웜 블록의 유무를 파악한다(5행). 알고리즘 5행은 도 5의 단계(S520)에 대응한다. 데이터 블록에 이미 할당된 웜 블록이 존재한다면(5행, S520), 웜 블록 내의 해당 옵셋(논리 페이지 번호에 대응함)의 페이지의 공간을 확인하고(6행, S540) 그에 따라 공간이 비어있으면, 해당 웜 블록에 데이터를 입력(쓰기 연산을 실행)하고(7행, S560) 비어있지 않다면(8행, S540), 해당 논리 페이지 번호는 핫(hot) 데이터로 간주되어 로그 블록으로 쓰여지게 된다. 이때 단계(S540)의 판단 결과에도 불구하고 웜 블록 내에서 N번의 업데이트 연산이 허용되는 실시예에서는 단계(S550) 및 단계(S560)가 실행될 수 있다. 즉, 웜 블록 내에서 업데이트가 발생하였지만 N번의 기준 업데이트 횟수 미만인 경우에는 제1 업데이트 연산으로 분류되어 웜 블록 내의 다른 페이지에 해당 LPN의 데이터가 저장될 수 있다. N번의 기준 업데이트 횟수 이상인 경우 또는 N=1인 실시예에서는 웜 블록에 오프셋 위치가 비어 있지 않으면(S540), 제2 업데이트 연산이 발생한 것으로 간주된다(S440, S460).
알고리즘 9행-16행의 내용은 제2 업데이트 연산이 발생한 경우에 로그 블록의 관리에 관련된 연산으로, 도 9와 함께 참조될 수 있다.
도 7과 도 9를 함께 참조하면 웜 블록의 해당 옵셋의 페이지가 비어 있지 않고(8행), 지정된 로그 블록의 빈 페이지 공간이 존재한다면(9행, S910) 메모리 컨트롤러는 로그 블록의 해당 페이지에 데이터(제2 업데이트 버전)를 입력(쓰기 연산을 실행)하면 되지만(10행, S470), 만약 로그 블록 내 빈 페이지 공간이 존재하지 않는다면(11행, S910) 로그 영역에서 자유 공간을 만들어줘야 하는 상황이 요구된다(12행-15행). 이를 위해 먼저 전체 로그 블록 내 무효 데이터의 존재를 파악하여 무효데이터가 존재한다면(12행, S920), 메모리 컨트롤러는 제1 희생 로그 블록을 선정한 후, 제1 희생 로그 블록의 유효 페이지에 대한 로그 데이터 이주 합병 연산을 실행한 후에 제1 희생 로그 블록을 지우고 생긴 빈 공간에 데이터를 입력한다(13행, S950). 이때 소거된 제1 희생 로그 블록은 새로운 로그 블록으로 지정된다. 그러나, 전체 로그 블록 데이터가 모두 유효 데이터로 가득 찬 경우에는(14행, S920) 로그 영역 내 빈 공간을 생성해 줄 수 없으므로 메모리 컨트롤러는 유효 초과 합병 연산을 통해 서로 연관된 데이터 블록,웜 블록,로그 블록에 대하여 가비지 컬렉션을 실행하여 빈 공간을 만들어 준 후에 데이터를 입력한다(14행, S930, S940). 유효 초과 합병 연산은 제2 희생 로그 블록, 희생 데이터 블록 및 희생 웜 블록에 대하여 실행되며 유효 초과 합병 연산의 1차 결과로 타겟 블록이 새로운 데이터 블록으로 지정된다(S930). 제2 희생 로그 블록의 잔존 유효 페이지에 대해서는 로그 데이터 이주 연산이 실행되고, 제2 희생 로그 블록은 소거되어 새로운 로그 블록으로 지정된다(S940).
알고리즘 19행-22행의 내용은 제1 업데이트 연산이 발생한 상태에서 웜 블록을 신규로 할당할 필요가 있을 때에 새로운 웜 블록을 생성하는 연산으로, 도 8과 함께 참조될 수 있다. 도 7과 도 8을 함께 참조하면, 데이터 블록에 대하여 할당된 웜 블록이 존재하지 않는다면(19행, S520), 메모리 컨트롤러는 웜 영역 내에 할당 가능한 웜 블록을 파악한다(19행, S810). 만일 할당 가능한 웜 블록이 존재한다면(19행, S810), 메모리 컨트롤러는 가능한 웜 블록을 할당한 후에 할당된 웜 블록에 데이터의 제1 업데이트 버전을 입력(쓰기 연산을 실행)하지만(20행, S560), 할당 가능한 웜 블록이 존재하지 않을 경우(21행, S810) 메모리 컨트롤러는 데이터-웜 부분 합병 연산을 실행하여 가비지 컬렉션을 실행 후 새롭게 할당 가능한 웜 블록을 생성한다(21행, S820, S830). 데이터-웜 부분 합병 연산은 희생 데이터 블록과 희생 웜 블록 간에 실행되며, 데이터-웜 부분 합병 연산의 희생 웜 블록은 새로운 데이터 블록으로 지정된다. 희생 데이터 블록이 소거되어 생성되는 빈 블록은 새로운 웜 블록으로 지정된다. 메모리 컨트롤러는 새롭게 생성되고 지정된 웜 블록을 쓰기 연산의 LPN에 대응하는 데이터 블록에 할당하여 연관시키고, 웜 블록에 데이터를 입력(쓰기 연산을 실행)한다(21행, S560).
전술한 바와 같이 반도체 칩의 특성에 따라 QLC 플래시 메모리의 수명은 지우기 횟수가 1,000번 이하인 반면, SLC 플래시 메모리의 수명은 지우기 횟수가 100,000번 이상이다. 따라서, 본 발명은 업데이트가 빈번히 발생하는 핫 데이터를 수명이 긴 SLC 플래시 메모리에 효율적으로 배치함으로써 QLC 플래시 메모리에 읽기/쓰기/지우기 연산들이 과부하 되는 현상을 방지할 수 있다. 즉,본 발명에서 제안된 웜 블록 알고리즘은 QLC+SLC 하이브리드 낸드 플래시 저장장치의 수명을 연장시키고, 성능을 향상시키는 효과가 있다.
본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 동작 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다. 본 발명의 실시예와 도면에 소개된 길이, 높이, 크기, 폭 등은 이해를 돕기 위해 과장된 것일 수 있다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 비휘발성 메모리 장치
110: 제1 디바이스 120: 제2 디바이스
111: 데이터 블록 112: 웜 블록
113: 제1 디바이스 내 자유 블록(빈 블록)
121: 로그 블록 122: 제2 디바이스 내 자유 블록
311: 희생 데이터 블록 312: 희생 웜 블록
313: 타겟 블록
321: 제2 희생 로그 블록 322: 로그 블록
323: 제1 희생 로그 블록 324: 자유 로그 블록
110: 제1 디바이스 120: 제2 디바이스
111: 데이터 블록 112: 웜 블록
113: 제1 디바이스 내 자유 블록(빈 블록)
121: 로그 블록 122: 제2 디바이스 내 자유 블록
311: 희생 데이터 블록 312: 희생 웜 블록
313: 타겟 블록
321: 제2 희생 로그 블록 322: 로그 블록
323: 제1 희생 로그 블록 324: 자유 로그 블록
Claims (16)
- 제1 블록 영역과 제2 블록 영역이 설정되는 제1 디바이스;
제3 블록 영역이 설정되는 제2 디바이스; 및
상기 제1 블록 영역에 저장된 제1 페이지에 대한 제1 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제1 업데이트 버전을 상기 제2 블록 영역에 저장하고, 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대한 제2 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 컨트롤러;
를 포함하는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 제1 디바이스는 지우기 연산이 제1 제한횟수만큼 허용되고, 상기 제2 디바이스는 지우기 연산이 제2 제한횟수만큼 허용되며, 상기 제2 제한횟수는 상기 제1 제한횟수보다 큰 비휘발성 메모리 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장할 때, 상기 제1 페이지의 논리 주소 오프셋에 기반하여 상기 제2 블록 영역 내의 물리 주소를 선택하고, 상기 선택된 물리 주소에 상기 제1 페이지의 상기 제1 업데이트 버전을 저장하는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장할 때, 상기 제2 블록 영역 내의 물리 블록의 물리 페이지 주소에 기반하여 순차적으로 상기 제1 페이지의 상기 제1 업데이트 버전을 저장하는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대하여 발생하는 N번째 업데이트 연산을 - 상기 N은 기준 업데이트 횟수임 - 상기 제2 업데이트 연산으로 인정하는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 컨트롤러는
상기 제2 블록 영역 중 임의의 웜 블록이 희생 웜 블록으로 선택된 경우, 상기 희생 웜 블록에 저장된 페이지 중 기준 업데이트 횟수 미만의 업데이트 연산이 발생한 제2 페이지는 제1 블록 영역으로 이주하고, 상기 기준 업데이트 횟수 이상의 업데이트 연산이 발생한 제3 페이지는 제3 블록 영역으로 이주하는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 제1 디바이스 내에서 상기 제2 블록 영역의 비율은 제1 기준비율을 넘지 않도록 제어되는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 제1 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제1 업데이트 연산이 발생하고 상기 제2 블록 영역 내의 새로운 웜 블록을 지정하고자 하는 경우 상기 제2 블록 영역 내에 상기 새로운 웜 블록으로 새롭게 지정될 수 있는 빈 물리 블록이 없으면 상기 제1 블록 영역 내의 희생 데이터 블록과 상기 제2 블록 영역 내의 희생 웜 블록의 합병 연산(merge operation)을 수행하여 합병된 블록을 새로운 데이터 블록으로 생성하고 상기 새로운 데이터 블록은 상기 제1 블록 영역으로 지정되고, 상기 합병 연산에 수반되는 지우기 연산의 결과로서 생성되는 빈 블록을 상기 새로운 웜 블록으로 지정하고 상기 새로운 웜 블록은 상기 제2 블록 영역으로 지정되는 비휘발성 메모리 장치. - 제1항에 있어서,
상기 컨트롤러는 상기 제3 블록 영역 내의 모든 블록들이 유효 데이터로만 채워진 상태에서 상기 제2 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제2 업데이트 연산이 발생하는 경우, 상기 제3 블록 영역 중 희생 로그 블록을 선택하고, 상기 희생 로그 블록의 제1 논리 블록 주소에 기반하여 상기 제1 블록 영역 중 희생 데이터 블록을 선택하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 기반하여 상기 제2 블록 영역 중 희생 웜 블록을 선택하고, 상기 제1 블록 영역 내의 빈 블록 중 하나를 타겟 블록으로서 선택하고, 상기 희생 로그 블록, 상기 희생 데이터 블록 및 상기 희생 웜 블록 간의 합병 연산을 수행하여 상기 타겟 블록을 새로운 데이터 블록으로 생성하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 대응하는 페이지는 상기 타겟 블록으로 이주하는 비휘발성 메모리 장치. - 제9항에 있어서,
상기 희생 로그 블록 이외의 로그 블록에 저장된 페이지로서 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 대응하는 제2 페이지는 상기 타겟 블록으로 이주되고, 상기 희생 로그 블록 내에 저장된 유효한 페이지로서 상기 제1 논리 블록 주소에 대응하지 않는 제3 페이지는 상기 합병 연산의 결과로서 생성되는 새로운 로그 블록에 이주하는 비휘발성 메모리 장치. - 플래시 변환 계층(FTL)의 컨트롤러에 의하여, 제1 디바이스에 설정되는 제1 블록 영역에 저장된 제1 페이지에 대한 제1 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제1 업데이트 버전을 상기 제1 디바이스에 설정되는 제2 블록 영역에 저장하는 단계; 및
상기 컨트롤러에 의하여, 상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대한 제2 업데이트 연산이 발생하는 경우 상기 제1 페이지의 제2 업데이트 버전을 제2 디바이스에 설정되는 제3 블록 영역에 저장하는 단계;
를 포함하는 비휘발성 메모리 장치의 동작방법. - 제11항에 있어서,
상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장하는 단계는,
상기 제1 페이지의 논리 주소 오프셋에 기반하여 상기 제2 블록 영역 내의 물리 주소를 선택하는 단계; 및
상기 선택된 물리 주소에 상기 제1 페이지의 상기 제1 업데이트 버전을 저장하는 단계;
를 포함하는 비휘발성 메모리 장치의 동작방법. - 제11항에 있어서,
상기 제1 페이지의 상기 제1 업데이트 버전을 상기 제2 블록 영역에 저장하는 단계는,
상기 제2 블록 영역 내의 물리 블록의 물리 페이지 주소에 기반하여 순차적으로 타겟 물리 페이지 주소를 선택하는 단계; 및
상기 타겟 물리 페이지 주소에 상기 제1 페이지의 상기 제1 업데이트 버전을 저장하는 단계;
를 포함하는 비휘발성 메모리 장치의 동작방법. - 제11항에 있어서,
상기 제1 페이지의 상기 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 단계는,
상기 제1 페이지가 상기 제2 블록 영역에 저장된 상태에서 상기 제1 페이지에 대하여 발생하는 N번째 업데이트 연산을 - 상기 N은 기준 업데이트 횟수임 - 상기 제2 업데이트 연산으로 인정하는 단계; 및
상기 제2 업데이트 연산에 따른 상기 제2 업데이트 버전을 상기 제3 블록 영역에 저장하는 단계;
를 포함하는 비휘발성 메모리 장치의 동작방법. - 제11항에 있어서,
상기 컨트롤러에 의하여, 상기 제1 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제1 업데이트 연산이 발생하고 상기 제2 블록 영역 내의 새로운 웜 블록을 지정하고자 하는 경우 상기 제2 블록 영역 내에 상기 새로운 웜 블록으로 새롭게 지정될 수 있는 빈 물리 블록을 탐색하는 단계;
상기 새로운 웜 블록으로 새롭게 지정될 수 있는 빈 물리 블록이 없으면 상기 제1 블록 영역 내의 희생 데이터 블록과 상기 제2 블록 영역 내의 희생 웜 블록의 합병 연산(merge operation)을 수행하여 합병된 블록을 새로운 데이터 블록으로 생성하는 단계; 및
상기 컨트롤러에 의하여, 상기 합병 연산에 수반되는 지우기 연산의 결과로서 생성되는 빈 블록을 상기 새로운 웜 블록으로 지정하는 단계;
를 포함하고,
상기 새로운 데이터 블록은 상기 제1 블록 영역으로 지정되고, 상기 새로운 웜 블록은 상기 제2 블록 영역으로 지정되는 비휘발성 메모리 장치의 동작방법. - 제11항에 있어서,
상기 컨트롤러에 의하여, 상기 제3 블록 영역 내의 모든 블록들이 유효 데이터로만 채워진 상태에서 상기 제2 블록 영역에 저장된 상기 제1 페이지에 대한 상기 제2 업데이트 연산이 발생하는 경우, 상기 제3 블록 영역 중 희생 로그 블록을 선택하는 단계;
상기 컨트롤러에 의하여, 상기 희생 로그 블록의 제1 논리 블록 주소에 기반하여 상기 제1 블록 영역 중 희생 데이터 블록을 선택하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 기반하여 상기 제2 블록 영역 중 희생 웜 블록을 선택하고, 상기 제1 블록 영역 내의 빈 블록 중 하나를 타겟 블록으로서 선택하는 단계; 및
상기 컨트롤러에 의하여, 상기 희생 로그 블록, 상기 희생 데이터 블록 및 상기 희생 웜 블록 간의 합병 연산을 수행하여 상기 타겟 블록을 새로운 데이터 블록으로 생성하고, 상기 희생 로그 블록의 상기 제1 논리 블록 주소에 대응하는 페이지는 상기 타겟 블록으로 이주하는 단계;
를 더 포함하는 비휘발성 메모리 장치의 동작방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180119808A KR102243920B1 (ko) | 2018-10-08 | 2018-10-08 | 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180119808A KR102243920B1 (ko) | 2018-10-08 | 2018-10-08 | 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200040044A true KR20200040044A (ko) | 2020-04-17 |
KR102243920B1 KR102243920B1 (ko) | 2021-04-22 |
Family
ID=70460939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180119808A KR102243920B1 (ko) | 2018-10-08 | 2018-10-08 | 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102243920B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419678A (zh) * | 2021-06-18 | 2021-09-21 | 上海盈方微电子有限公司 | 一种用于嵌入式***的存储管理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100012263A (ko) * | 2008-07-28 | 2010-02-08 | 주식회사 하이닉스반도체 | 반도체 스토리지 시스템 및 그 제어 방법 |
KR20130017748A (ko) * | 2011-08-12 | 2013-02-20 | 아주대학교산학협력단 | 메모리 컨트롤러 및 이의 데이터 관리방법 |
US20130227203A1 (en) * | 2008-11-12 | 2013-08-29 | Micron Technology, Inc. | Dynamic slc/mlc blocks allocations for non-volatile memory |
KR101551584B1 (ko) * | 2011-06-15 | 2015-09-08 | 애플 인크. | 하이브리드 slc/mlc 메모리 내의 블록 관리 방식들 |
KR101751571B1 (ko) | 2011-05-17 | 2017-07-11 | 샌디스크 테크놀로지스 엘엘씨 | 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법 |
KR20180012653A (ko) | 2016-07-27 | 2018-02-06 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법 |
-
2018
- 2018-10-08 KR KR1020180119808A patent/KR102243920B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100012263A (ko) * | 2008-07-28 | 2010-02-08 | 주식회사 하이닉스반도체 | 반도체 스토리지 시스템 및 그 제어 방법 |
US20130227203A1 (en) * | 2008-11-12 | 2013-08-29 | Micron Technology, Inc. | Dynamic slc/mlc blocks allocations for non-volatile memory |
KR101751571B1 (ko) | 2011-05-17 | 2017-07-11 | 샌디스크 테크놀로지스 엘엘씨 | 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법 |
KR101551584B1 (ko) * | 2011-06-15 | 2015-09-08 | 애플 인크. | 하이브리드 slc/mlc 메모리 내의 블록 관리 방식들 |
KR20130017748A (ko) * | 2011-08-12 | 2013-02-20 | 아주대학교산학협력단 | 메모리 컨트롤러 및 이의 데이터 관리방법 |
KR20180012653A (ko) | 2016-07-27 | 2018-02-06 | 삼성전자주식회사 | 솔리드 스테이트 드라이브 장치 및 그것의 동작 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419678A (zh) * | 2021-06-18 | 2021-09-21 | 上海盈方微电子有限公司 | 一种用于嵌入式***的存储管理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102243920B1 (ko) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100526190B1 (ko) | 플래시 메모리의 재사상 방법 | |
KR101477047B1 (ko) | 메모리 시스템 및 그것의 블록 병합 방법 | |
US11216368B2 (en) | Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction | |
US8635399B2 (en) | Reducing a number of close operations on open blocks in a flash memory | |
KR101374065B1 (ko) | 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치 | |
KR20160008365A (ko) | 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법 | |
JP2014515531A (ja) | メモリデバイスにおける動的メモリキャッシュサイズ調節 | |
KR102349999B1 (ko) | 반도체 장치 및 그 동작 방법 | |
KR101017067B1 (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
KR101403922B1 (ko) | 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법 | |
CN109471594B (zh) | 一种mlc闪存读写方法 | |
JP4682261B2 (ja) | 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法 | |
US20100318726A1 (en) | Memory system and memory system managing method | |
CN112130749A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
JP2010507147A (ja) | 最悪の場合におけるデータ管理を伴う不揮発性メモリおよびそのための方法 | |
KR101480424B1 (ko) | 하이브리드 플래시 메모리의 성능과 수명 최적화 장치 및 방법 | |
US11487658B2 (en) | Memory system including plural regions storing data and operating method thereof | |
KR102243920B1 (ko) | 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법 | |
KR102243923B1 (ko) | 캐쉬를 동반한 효율적인 페이지 컬렉션 매핑을 이용하는 비휘발성 메모리 장치 및 그 동작 방법 | |
KR101191650B1 (ko) | 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법 | |
WO2014185038A1 (ja) | 半導体記憶装置およびその制御方法 | |
Jung et al. | Hierarchical architecture of flash-based storage systems for high performance and durability | |
KR101027687B1 (ko) | 라이트 동작을 제어하는 반도체 스토리지 시스템 및 그 제어 방법 | |
KR20130017749A (ko) | 솔리드 스테이트 드라이브의 쓰기 데이터 분별 방법 및 그 컨트롤러 | |
Kwon et al. | Data pattern aware FTL for SLC+ MLC hybrid SSD |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |