KR101157763B1 - Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치 - Google Patents

Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치 Download PDF

Info

Publication number
KR101157763B1
KR101157763B1 KR1020100135998A KR20100135998A KR101157763B1 KR 101157763 B1 KR101157763 B1 KR 101157763B1 KR 1020100135998 A KR1020100135998 A KR 1020100135998A KR 20100135998 A KR20100135998 A KR 20100135998A KR 101157763 B1 KR101157763 B1 KR 101157763B1
Authority
KR
South Korea
Prior art keywords
block
fusion
group
memory management
blocks
Prior art date
Application number
KR1020100135998A
Other languages
English (en)
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 KR1020100135998A priority Critical patent/KR101157763B1/ko
Application granted granted Critical
Publication of KR101157763B1 publication Critical patent/KR101157763B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, compaction, garbage collection, erase control

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)
  • Memory System (AREA)

Abstract

플래시 메모리를 포함하는 스토리지 디바이스에서 플래시 변환 계층 (Flash Translation Layer, FTL)을 구현하고, TRIM 명령이 주어질 때 이를 처리하는 방법 및 장치가 제공된다. 본 발명의 FTL은 융합 그룹에 포함되는 블록에 페이지 사상 기법을 적용하여 데이터를 저장하고, 순차 그룹에 포함되는 블록에는 블록 사상 기법 적용 또는 순차적으로 데이터를 저장하는 FTL에서, TRIM 명령으로 무효화된 페이지를 고려하여 최적으로 블록을 융합 그룹 또는 순차 그룹으로 분류한 수 있는 비용 모델 및 처리 방법을 제시한다. 본 발명은 한정된 여유 블록을 이용하여 수행되는 FTL의 가비지 콜렉션 연산의 효율을 높여 전체적인 플래시 메모리 저장장치의 성능을 향상할 수 있다. 본 발명은 또한 비용 모델을 계산함에 있어, 전체 융합 영역 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 예측할 때 정확도를 높이기 위하여 참조 모델과 실제 측정한 값과의 차이를 이용하는 방법을 제시한다.

Description

TRIM 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치 {VARIABLE SPACE PAGE MAPPING METHOD AND APPARATUS FOR FLASH MEMORY DEVICE WITH TRIM COMMAND PROCESSING}
본 발명은 메모리 장치 및 메모리 장치의 관리 방법에 관한 것으로서, 특히 비휘발성 메모리(non-volatile memory)에 기반한 메모리 장치(memory device) 및 메모리 장치의 관리 방법에 관한 것이다.
데이터를 저장하는 스토리지 디바이스로는 자기 디스크(magnetic disk), 반도체 메모리 등이 있을 수 있다. 스토리지 디바이스는 종류 별로 서로 다른 물리적 특성을 가지기 때문에 물리적 특성에 상응하는 관리 방법이 필요하다.
종래의 스토리지 디바이스로는 자기 디스크가 널리 사용되어 왔다. 자기 디스크는 평균적으로 킬로바이트(kilobyte) 당 수 밀리초(millisecond)의 읽기/쓰기 시간을 특성으로 가진다. 또한, 자기 디스크는 데이터가 저장된 물리적 위치에 따라 암(arm)이 도달하는 시간이 다르기 때문에 읽기/쓰기 시간이 달라지는 특성을 가진다.
최근에는 자기 디스크에 비하여 읽기/쓰기 시간이 짧고 작은 전력을 소모하며 작은 부피를 차지하는 비휘발성 메모리 장치가 급속하게 자기 디스크를 대체하고 있다. 이는 비휘발성 메모리 장치의 대용량화가 이루어졌기 때문에 가능한 결과이다.
비휘발성 메모리 장치는 전기적으로 읽기(read), 쓰기(write) 및 소거(erase)가 가능하며, 공급 전원이 없는 상태에서도 저장된 데이터를 유지할 수 있는 반도체 메모리 장치이다. 비휘발성 메모리 장치에 대한 데이터의 저장 과정은 쓰기 외에도 프로그래밍(programming)이라고 불리기도 한다.
비휘발성 메모리 장치에 대한 프로그래밍은 페이지 단위로 수행될 수 있고 소거는 블록 단위로 수행될 수 있다. 블록은 복수의 페이지들을 포함할 수 있다. 비휘발성 메모리 장치의 컨트롤러는 외부의 호스트(host) 또는 프로세서(processor)에 논리 주소 (logical address)를 제공하고, 비휘발성 메모리 장치에 대해서는 물리 주소 (physical address)를 제공할 수 있다. 컨트롤러는 물리 주소를 이용하여 비휘발성 메모리 장치를 관리하고, 물리 주소를 논리 주소로 또는 논리 주소를 물리 주소로 변환할 수 있다. 이처럼 물리 주소 및 논리 주소의 변환이 수행되는 계층을 플래시 변환 계층 (Flash Translation Layer)라 하기도 한다. FTL에서 수행되는 판정, 분류, 정렬 등의 연산(operation)은 플래시 메모리 장치의 관리 방법이라고 불리기도 한다.
본 발명은 비휘발성 메모리의 복수의 블록들을 순차 그룹과 융합 그룹으로 블록을 나누어 관리하고, TRIM 명령이 주어질 때 이를 처리하는 메모리 관리 장치 및 방법을 제공한다.
본 발명은 비용 모델을 계산함에 있어, 전체 융합 그룹 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 예측할 때 정확도를 높이기 위하여 참조 모델과 실제 측정한 값과의 오차 정보를 이용하여, 그룹 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 정확하게 추론하는 기법을 제공한다.
본 발명의 일 실시 예에 따른 메모리 관리 장치 또는 방법은 한정된 여유 블록을 이용하는 가비지 콜렉션 (garbage collection) 연산의 효율을 높이기 위하여 비순차 블록 및 여유 블록을 융합 그룹으로 지정하고 관리할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 순차적으로 데이터가 저장된 블록의 재사용 비용을 줄이기 위하여 순차적으로 데이터가 저장된 블록을 순차 그룹으로 지정하고 별도로 관리할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 비순차 참조 연산으로 인한 데이터 갱신 비용을 줄이기 위하여 융합 그룹으로 선택된 블록 내에서는 페이지 맵핑 (page mapping) 기법을 적용할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 비휘발성 메모리 전체에 대한 데이터 갱신 비용을 줄이기 위하여 순차 참조 및 비순차 참조를 구분하고 각 참조 연산에 대하여 교환 병합(switch merge) 또는 가비지 콜렉션 (garbage collection) 연산을 선택적으로 적용할 수 있다.
본 발명의 일 실시 예에 따른 메모리 관리 장치 또는 방법은 TRIM 명령이 주어질 때, 상기 TRIM 명령 또는 그 이전의 TRIM 명령으로 데이터가 저장된 순차 블록의 활용도(utilization)이 낮아진 경우 이를 융합 그룹으로 이동하여 관리할 수 있다.
본 발명의 일 실시 예에 따른 메모리 관리 장치 또는 방법은 융합 그룹을 최적화하기 위하여 참조 연산 비용 및 가비지 콜렉션 연산 비용에 대한 수학적 모델을 설립하고 이용할 수 있다. 이러한 수학적 모델은 TRIM 명령으로 무효화된 섹터의 개수를 고려하여 참조 연산 비용 및 가비지 콜렉션 연산 비용을 계산한다.
본 발명의 일 실시 예에 따른 메모리 관리 장치 또는 방법은 융합 그룹 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 예측함에 있어, 그룹 이용율로부터 수학적으로 또는 표본 조사로 도출된 표준 참조 이용율과의 오차를 측정하고, 이러한 오차 정보를 사용하여 예측값을 보정하여, 가비지 콜렉션 대상 블록의 이용율을 정확히 예측할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치는 비휘발성 메모리에 포함되는 복수의 블록들을 상기 복수의 블록들 각각에 대한 접근 연산의 지역성에 기초하여 순차 그룹 및 융합 그룹으로 구분하는 블록 지정부, 및 상기 순차 그룹에 포함되는 블록에 데이터 섹터를 순차적으로 저장하고, 상기 융합 그룹에 포함되는 블록에 페이지 사상 기법을 적용하여 데이터 섹터를 저장하는 사상부를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 방법은 전체 플래시 메모리 블록을 맵을 저장하는 메타 블록, 데이터를 저장하는 데이터 블록, 그리고 초기 여유 블록으로 구분하는 단계, 비휘발성 메모리에 포함되는 복수의 블록들 각각에 대한 접근 연산의 지역성을 판정하는 단계, 상기 판정된 지역성에 기초하여 상기 복수의 데이터 블록들 각각을 순차 블록, 비순차 블록 및 여유 블록으로 구분하는 단계, 상기 비순차 블록 및 상기 초기 여유 블록의 일부를 융합 그룹으로 지정하는 단계, 및 상기 융합 그룹에 포함되는 블록에 페이지 사상 기법을 적용하여 데이터 섹터를 저장하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 방법은, 저장장치에 대해 TRIM 명령이 주어질 때, TRIM 명령의 대상 섹터가 순차 블록에 존재하거나 또는 융합 그룹에 존재하는 경우 이를 무효화 하는 단계, 무효화된 섹터를 맵에 표시하기 위하여 맵을 갱신하는 단계, 순차 블록에 무효화된 섹터가 많은 경우 적절한 판단 기준에 의해 순차 블록을 융합 그룹에 포함시키는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 방법은, 융합 그룹에 포함된 초기 여유 블록과 데이타 블록의 개수 및 TRIM 명령의 의해 무효화된 섹터 수를 고려하여 융합 그룹의 이용율(utilization)을 계산하는 단계, 이용율을 바탕으로 융합 그룹의 페이지 갱신 비용을 계산하는 단계, 융합 그룹에 또 다른 데이터 블록을 포함시키거나, 융합 그룹으로부터 기존의 데이터 블록을 제거할 때 페이지 갱신 비용을 예측하여 최소 페이지 갱신 비용을 제공하는 융합 그룹 이용율을 예측하는 단계, 예측한 결과로 인하여 융합 그룹에 새로 데이터 블록을 추가하거나 융합 그룹으로부터 기존 데이터 블록을 제거하는 단계를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 일부 비순차 쓰기 지역성을 보이는 데이터 블록과 일부 초기 여유 블록을 융합 그룹으로 지정하고 관리함으로써 제한된 개수의 여유 블록을 이용하는 가비지 콜렉션 (garbage collection) 연산의 효율을 높일 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 순차적으로 데이터가 저장된 블록을 순차 그룹으로 지정하고 별도로 관리함으로써 순차적으로 데이터가 저장된 블록의 재사용 비용을 줄일 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 융합 그룹으로 선택된 블록 내에서는 페이지 맵핑 (page mapping) 기법을 적용함으로써 비순차 참조 연산으로 인한 데이터 갱신 비용을 줄일 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 순차 참조 및 비순차 참조를 구분하고 각 참조 연산에 대하여 병합(merge) 또는 가비지 콜렉션 연산을 선택적으로 적용함으로써 비휘발성 메모리 전체에 대한 데이터 갱신 비용을 줄일 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 융합 그룹에 소속된 블록을 동적으로 순차 블록으로 전환하고, 순차 블록을 동적으로 융합 그룹에 포함시켜 참조 패턴에 유연하게 대처하여 성능을 향상시킬 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 참조 연산 비용 및 가비지 콜렉션 연산 비용에 대한 수학적 모델을 설립하고 이용함으로써 융합 그룹의 페이지 갱신 비용을 최적화할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 순차 블록 또는 융합 그룹에 소속된 섹터에 대해 TRIM 명령이 주어질 때 이들을 무효화시키기 위하여 맵을 갱신하고, 가비지 콜렉션 또는 병합 연산을 수행할 때 이러한 무효화된 섹터들은 복사하지 않으며, 수학적 모델에서 무효화된 섹터들을 고려하여 페이지 갱신 비용을 최소화 시키는 융합 그룹 이용율을 계산하고, 이러한 이용율이 되도록 융합 그룹과 순차 그룹 간에 데이터 블록을 이동시켜 융합그룹의 페이지 갱신 비용을 최소화 시킬 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 또는 방법은 수학적 모델이 융합 그룹의 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 예측함에 있어, 표준 참조 이용율과의 오차율을 바탕으로 더 정확하게 예측할 수 있다.
도 1은 본 발명의 일실시예에 따른 메모리 관리 장치에 의하여 관리되는 플래시 메모리 (100)의 예를 도시하는 도면이다.
도 2는 본 발명의 일실시예에 따른 메모리 관리 장치 (200)를 도시하는 도면이다.
도 3은 도 2의 메모리 관리 장치 (200)의 동작의 일 예를 도시하는 도면이다.
도 4는 도 2의 메모리 관리 장치 (200)의 동작의 일 예를 도시하는 도면으로, 융합 연산의 일 예를 도시한 도면이다.
도 5는 도 2의 메모리 관리 장치 (200)의 융합 연산의 일 예와 가비지 콜렉션 연산의 일 예를 도시하는 도면이다.
도 6은 도 2의 메모리 관리 장치 (200)의 TRIM 명령 연산의 일 예를 도시하는 도면이다.
도 7은 도 2의 메모리 관리 장치 (200)가 TRIM 명령으로 이용율이 낮은 블록을 융합 시키는 융합 연산의 일 예를 도시하는 도면이다.
도 8은 도 2의 메모리 관리 장치 (200)의 융합 해제 연산의 일 예를 도시하는 도면이다.
도 9은 도 2의 메모리 관리 장치 (200)가 융합 해제 연산 후 가비지 콜렉션을 수행하는 일 예를 도시하는 도면이다.
도 10은 도 2의 메모리 관리 장치 (200)가 GF, GR, UF, UR, UB로부터 보정 데이터를 얻고, 이를 이용하여 GB를 도출하는 일 예를 도시하는 도면이다.
도 11은 융합 그룹에 포함된 논리 블록 개수가 변화할 때 적중율을 도시하는 도면이다.
도 12는 융합 그룹에 포함된 논리 블록 개수가 변화할 때 페이지 갱신 비용 그래프를 도시하는 도면이다.
이하에서, 본 발명의 일실시예에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명에 제시된 메모리 관리 방법은 기존 특허 제 10-0965051에서 명시한 가변 공간 페이지 사상 (Variable Space Page Mapping, VSPM)에서 TRIM 명령 처리를 추가한 것으로 "TRIM 명령 처리 기능이 추가된 가변 공간 페이지 사상 (Variable Space page Mapping with TRIM command processing) 이라 명명될 수 있다. 그러나 이러한 명칭이 본 발명의 권리 범위를 제한되는 일이 없도록 해석되어야 함은 기술 분야의 종사자에게 자명하다. 아울러 본 발명에 제시된 메모리 관리 기법은 기존 특허 제 10-0965051에서 명시한 가변 공간 페이지 사상 (Variable Space Page Mapping, VSPM)에서 가비지 콜렉션 대상 블록의 이용율을 예측함에 있어 오차율 기반 보정 기법을 적용하여 더 정교하게 예측하는 기법을 제공한다.
본 명세서에서 사용되는 메모리 장치 (memory device)는 데이터를 저장하는 스토리지 장치 (storage device) 및 비휘발성 메모리 (non-volatile memory)를 포함하는 개념이다.
도 1은 본 발명의 일실시예에 따른 메모리 관리 장치에 의하여 관리되는 플래시 메모리 (100)의 예를 도시하는 도면이다.
메모리 관리 장치는 플래시 메모리 (100)의 복수의 블록들을 메타 블록 (110), 순차(sequential) 그룹 (120), 융합(fusion) 그룹 (130) 및 여유(free) 블록 (140)으로 구분할 수 있다.
메타 블록 (110)은 플래시 메모리 (100)의 복수의 블록들 각각에 사상 (mapping)되는 논리 블록, 논리 페이지 정보를 저장하고, 부팅 시 필요한 정보를 저장할 수 있다.
메모리 관리 장치에서 파일 시스템과 같은 상위 계층이 인식하는 섹터 데이터와 같은 논리적인 데이터가 저장된 블록을 데이터 블록이라 부를 수 있다. 이러한 데이터 블록은 순차 그룹 (120) 또는 융합 그룹 (130)에 존재할 수 있다.
본 명세서에서 '물리 블록' 및 '물리 페이지'는 각각 플래시 메모리 (100)의 블록 및 페이지를 의미한다. '논리 블록' 및 '논리 페이지'는 플래시 메모리 (100)의 외부의 호스트가 인식하는 블록 및 페이지를 의미한다. 메모리 관리 장치는 하나의 물리 페이지에 하나의 논리 페이지를 맵핑(또는 사상)할 수 있다. 논리 페이지에는 섹터 데이터가 순차적으로 저장된다. 논리 페이지에 저장되는 섹터의 수는 논리 페이지의 크기에 따라 결정된다.
메모리 관리 장치는 플래시 메모리 (100)의 복수의 블록들 중 논리 페이지가 논리 블록에 순차적으로 저장된 블록을 순차 그룹 (120)으로 지정할 수 있다.
메모리 관리 장치는 플래시 메모리 (100)의 복수의 블록들 중 비순차적으로 데이터가 저장된 블록 및 여유 블록 중 일부를 융합 (fusion) 그룹 (130)으로 지정할 수 있다. 메모리 관리 장치는 융합 그룹 (130)에 포함되는 물리 블록에는 하나 이상의 논리 블록에 포함된 논리 페이지를 페이지 레벨 사상 기법을 적용하여 저장할 수 있다.
여유 블록 (140)은 논리적인 데이터를 저장하기 위한 블록 이외에 FTL이 다른 목적으로 사용하는 블록이다. 여유 블록의 일부는 융합 그룹 (130)에 소속되어 가비지 콜렉션을 위해 사용되고, 일부는 순차 블록의 병합 연산에 사용된다.
상기한 바와 같이, 본 명세서에서 '물리 블록' 및 '물리 페이지'는 각각 플래시 메모리 (100)의 블록 및 페이지를 의미한다. '논리 블록' 및 '논리 페이지'는 플래시 메모리 (100)의 외부의 호스트가 인식하는 블록 및 페이지를 의미한다. 메모리 관리 장치는 하나의 물리 페이지에 하나의 논리 페이지를 매핑할 수 있다. 논리 페이지에는 섹터 데이터가 순차적으로 저장된다. 논리 페이지에 저장되는 섹터의 수는 논리 페이지의 크기에 따라 결정된다.
본 발명에 제시된 메모리 관리 방법은 가변 공간 페이지 사상 (Variable Space Page Mapping, VSPM)이라 명명될 수 있다. 그러나 VSPM이라는 명칭이 본 발명의 권리 범위를 제한되는 일이 없도록 해석되어야 함은 기술 분야의 종사자에게 자명하다.
메모리 관리 장치가 블록 사상 기법을 사용하는 경우 맵의 한 엔트리는 논리 블록을 하나 이상의 물리 블록에 사상(맵핑)하고, 맵의 한 엔트리는 논리 블록 번호를 물리 블록 번호로 또는 물리 블록 번호를 논리 블록 번호로 사상한다. 이와 다르게, 융합 그룹과 같이 메모리 관리 장치가 페이지 사상 기법을 적용하는 경우, 특정 논리 블록은 특정 물리 블록에 사상되지 않고 각각의 논리 페이지는 독립적으로 물리 페이지로 맵핑되며, 따라서 맵의 한 엔트리는 논리 페이지 번호를 물리 페이지 번호로 또는 물리 페이지 번호를 논리 페이지 번호로 사상한다.
도 2는 본 발명의 일실시예에 따른 메모리 관리 장치 (200)를 도시하는 도면이다.
메모리 관리 장치 (200)는 파일 시스템 (240) 또는 데이터베이스 프로그램과 같은 상단의 소프트웨어 계층으로부터 플래시 메모리 (100)에 대한 접근 연산 및/또는 참조 연산과 TRIM 명령을 수신한다.
파일 시스템 (240)은 호스트에 의하여 인식되며, 운영 체제 (operating system)와도 관련된다. 파일 시스템 (240)은 호스트에 의하여 인식되는 파일 및 프로세스 정보로부터 메모리 관리 장치 (200)에 대한 접근 명령을 생성한다. 메모리 관리 장치 (200)는 파일 시스템 (240)이 요청한 섹터 번호를 플래시 메모리 (100)에 대한 논리 주소 정보로 변환할 수 있다. 논리 주소 정보는 논리 블록 주소 (또는 논리 블록 번호) 및 논리 페이지 주소 (또는 논리 페이지 번호)를 포함할 수 있다.
메모리 관리 장치 (200)는 플래시 변환 계층 (Flash Translation Layer, FTL)이라고도 불린다. 메모리 관리 장치 (200는 섹터 번호를 논리 주소 정보로 변환할 뿐만 아니라 논리 주소 정보를, 적절한 사상(맵핑) 기법을 이용하여, 플래시 메모리 (100)의 물리 주소 정보로 변환할 수 있다. 즉 메모리 관리 장치 (200)는 논리 블록 및 논리 페이지를 물리 블록 및 물리 페이지로 사상할 수 있다.
파일 시스템 (240) 또는 저장 장치 상단의 소프트웨어 계층은 메모리 관리 장치 (200)로 접근 연산 (access operation) 또는 참조 연산 (refer operation)을 전달할 수 있다. 접근 연산 또는 참조 연산은 플래시 메모리 (100)의 하나 이상의 섹터에 대한 읽기 및/또는 쓰기 연산을 포함할 수 있다.
본 발명의 일실시예에 따르면, 파일 시스템 (240) 또는 저장 장치 상단의 소프트웨어 계층은 메모리 관리 장치 (200)로 TRIM 명령을 전달할 수 있다. 이 경우, 메모리 관리 장치 (200)는 TRIM 명령의 대상이 되는 섹터의 존재 자체를 무효화 하여, 향후 병합 연산이나 쓰레기 수집 연산의 비용을 줄일 수 있다.
메모리 관리 장치 (200)는 패턴 검출기 (210), 블록 지정부 (220) 및 사상부 (230)를 포함할 수 있다.
메모리 관리 장치 (200)는 플래시 메모리 (100)에 포함되는 복수의 블록들 각각에 대한 접근 연산의 지역성에 기초하여 상기 복수의 블록들을 순차 그룹 및 융합 그룹으로 구분할 수 있다.
호스트는 플래시 메모리 (100)에 저장된 데이터를 한꺼번에 순차적으로 읽거나 쓰려는 경향이 있다. 이를 공간적 지역성 (spatial locality)이라 하기도 한다.
한편 호스트는 한번 접근한 데이터에 또 다시 접근하는 경향이 있다. 호스트는 한번 접근했던 데이터에 비교적 가까운 시간 내에 다시 접근하는데 이를 시간적 지역성 (temporal locality)이라 하기도 한다.
패턴 검출기 (210)는 플래시 메모리 (100)의 복수의 블록들 각각에 대한 접근 연산 패턴을 검출할 수 있다. 예를 들어 접근 연산이 임계치보다 많은 개수의 연속적인 데이타에 접근하는 경우, 패턴 검출기 (210)는 접근 연산이 순차 접근 (sequential access)이라고 간주할 수 있다.
반대로 접근 연산이 불연속적인 데이타에 접근하거나 연속적인 데이타의 수가 상기 임계치 미만인 경우 패턴 검출기 (210)는 접근 연산이 비순차 접근이라고 간주할 수 있다.
블록 지정부 (220)는 상기 복수의 데이타 각각에 대한 접근 연산이 순차 접근인지 여부에 기초하여 데이터가 저장된 블록들을 순차 그룹 (120) 또는 융합 그룹 (130)으로 지정할 수 있다.
블록 지정부 (220)는 접근 연산이 순차 접근이면 접근 연산에 대응하는 블록을 순차 그룹 (120)으로 지정하고, 접근 연산이 비순차 접근이면 접근 연산에 대응하는 블록을 융합 그룹 (130)으로 지정할 수 있다.
순차 그룹 (120) 은 순차 접근에 대응하는 블록들의 집합체(set)이고, 논리 주소 또는 물리 주소에 의해 제한되지는 않는다. 순차 그룹 (120)은 정제 영역 (refined area)이라 불려도 무방하다.
융합 그룹 (130) 또한 초기 여유 블록 및 비순차 접근에 대응하는 블록들의 집합체이고, 논리 주소 또는 물리 주소에 의해 제한되지는 않는다.
사상부 (230)는 순차 그룹 (120)에 포함되는 블록에 데이터 섹터를 순차적으로 저장하고 블록 맵핑 기법을 적용하며, 융합 그룹 (130)에 포함되는 블록에는 페이지 맵핑 기법을 적용하여 데이터를 저장한다.
사상부 (230)는 융합 그룹 (130)에 포함되는 블록 (물리 블록) 중 일부를 버퍼링 블록으로 선택하고, 이곳에 갱신된 페이지를 기록한다. 버퍼링 블록에는 하나 이상의 논리 블록에 포함되는 논리 페이지가 존재할 수 있다.
초기에 데이터가 저장되어 있지 않은 여유 블록 중 일부를 융합 그룹 (130)에 지정할 수 있다. 데이터가 저장되어 있지 않은 여유 블록들의 순수한 집합체 (pure set)가 여유 블록 (140)으로 도시되어 있다.
여유 블록 (140)중 일부는 융합 그룹에 포함되어 있으며, 일부는 융합 그룹 (130)에도 포함되어 있지 않은 순수한 형태를 가지고 있으며, 향후 순차 블록의 병합 연산이나 순차 블록을 위한 임시 버퍼 블록으로 사용될 수 있다.
블록 지정부(220)는 접근 연산의 지역성에 기초하여 순차 그룹에 소속된 논리 블록을 동적으로 융합 그룹 (130)으로 이동시킬 수 있다. 이를 융합 연산이라고 하기도 한다. 또한 블록 지정부 (220)는 융합 그룹 (130)에 소속된 논리 블록을 순차 그룹으로 이동시킬 수 있다. 이를 융합 해제 연산이라고 하기도 한다.
블록 지정부 (220) 또는 패턴 검출기 (210)는 현재 순차 그룹 (120)에 포함되어 있는 블록이더라도, 상기 블록에 대한 참조가 순차적이지 않는 경우 융합 연산을 통하여 상기 블록을 융합 그룹 (130)으로 지정할 수 있다.
블록 지정부 (220)는 상기 패턴 검출기 (210)의 판단에 의해, 현재 순차 그룹 (120)에 포함되어 있는 제1 블록에 대한 TRIM 명령으로 인해, 상기 제1 블록의 무효 페이지 개수와 연관되는 제1 조건이 만족되는 것으로 판단되면, 상기 제1 블록을 융합 그룹 (130)으로 지정할 수 있다.
상기 제1 조건이란 상기 제1 블록의 유효 페이지 개수가 제1 임계값 (threshold value) 이상인 경우 또는 상기 제1 블록의 블록 활용도 (utilization)가 현재 융합 그룹 (130)의 활용도 (utilization)보다 낮은 경우 중 적어도 하나의 경우를 만족하는 조건이다.
여기서, 상기 제1 블록의 블록 활용도는 상기 제1 블록 내의 페이지 개수 중 유효 페이지 개수일 수 있다.
한편, 상기한 제1 조건은 경우에 따라, 상기 두 가지 경우 이외에도 상황에 따라 다양한 경우의 응용 예를 포함할 수 있다.
상기 블록의 활용도 또는 상기 현재 융합 그룹 (130)의 활용도의 의미 및 그 계산에 대해서는 아래에서 다시 언급한다.
반대로 블록 지정부 (220)는, 패턴 검출기 (210)의 판단에 의해, 상기 순차 그룹에 있는 제2 블록의 적어도 일부 페이지에 대한 갱신 요청이 도착한 것으로 판단되는 경우, 해당 페이지를 융합 그룹의 미사용 페이지에 기록하고, 상기 제2 블록을 융합 연산에 의해 상기 융합 그룹으로 이동시킬 수 있다.
그러나 경우에 따라서, 상기 제2 블록을 융합 그룹에 이동시키는 것이 바람직하지 않은 경우, 예를 들어 상기 융합 그룹의 이용율을 낮추는 데에 도움이 되지 않는 것으로 판단되는 경우, 상기 블록 지정부 (220)는 상기 제2 블록을 융합 그룹으로 이동시키지 않을 수 있다.
상기 제2 블록을 융합 그룹으로 이동시키지 않는 경우, 메모리 관리 장치 (200)는 상기 제2 블록의 논리 페이지가 융합 그룹에 포함되어 있음을 맵에 표시한다. 그리고 해당 논리 페이지는 상기 블록과 병합(merge) 연산을 통해 다시 순차 그룹에 포함된다.
블록 지정부 (220)는, 패턴 검출기 (210)의 판단에 의해, 현재 융합 그룹 (130)에 포함된 논리 블록이더라도, 해당 블록의 데이터가 융합 그룹 내에서 비순차적으로 참조되지 않는다고 판단되거나 또는 융합 그룹 (130)이 가비지 콜렉션 연산 비용을 감소시키기 위해 필요하다고 판단되는 경우, 이러한 블록을 융합 그룹에서 제거하여 순차 그룹 (120)으로 이동시킬 수 있다.
순차 그룹 (120)으로 지정된 블록 내에는 논리 페이지들은 순차 조건을 만족한다. 순차 조건은 블록 내의 페이지가 주소 상의 순서대로 저장되어 있거나 또는 그렇지 않더라도 하나의 블록 내에서 페이지 각각이 한번씩 저장되어 있으면 성립할 수 있다. 즉, 블록 지정부 (220)는 복수의 블록들 중 데이터 섹터 각각이 한번씩 저장된 블록을 순차 그룹 (120)으로 지정할 수 있다.
메모리 관리 장치 (200)는 융합 그룹 (130)에 포함된 블록을 대상으로 가비지 콜렉션 연산을 수행할 수 있다. 가비지 콜렉션 연산 (garbage collection operation)은 여유 블록을 얻기 위하여 블록에 저장된 데이터를 재배치하는 과정을 의미한다.
메모리 관리 장치 (200)는 융합 그룹 (130)에 대하여 페이지 사상 기법을 적용하고, 순차 그룹 (120)에 대하여 블록 사상 기법을 적용할 수 있다. 이 때 페이지 사상 기법은 블록 사상 기법의 수퍼셋과 같은 역할을 할 수 있으므로, 플래시 메모리 (100) 내의 모든 블록에 페이지 사상 기법이 적용되는 것과 유사하다.
페이지 사상 기법이 블록 사상 기법의 수퍼셋과 같은 역할을 하는 경우 메모리 관리 장치 (200)는 순차 그룹 (120) 에 대응하는 모든 논리 페이지들을 특정 논리 블록 내에 할당함으로써 블록 사상 기법과 유사한 결과를 얻을 수 있다.
본 발명의 일실시예에 따라, 어떤 섹터에 대하여 TRIM 명령이 전달되어 상기 섹터가 차지하던 페이지에 더 이상 유효한 데이터가 존재하지 않는 경우, 상기 페이지는 무효화 되었다고 할 수 있다. 이러한 무효화된 페이지는 순차 그룹에도 존재할 수 있으며, 융합 그룹 (130)에도 존재할 수 있다.
TRIM 명령에 의해 페이지가 무효화 되는 경우, 메모리 관리 장치 (200)는 맵을 갱신하여 해당 섹터 또는 페이지가 무효화 되었음을 표시한다. 여기서, 맵에서 무효화 되었음을 표시하는 기법은 해당 섹터 또는 페이지가 존재하는 논리 페이지를 사상하는 맵의 엔트리에 특정한 값을 기록하거나 또는 무효화된 섹터를 등록하는 별도의 맵을 사용하는 것과 같은 다양한 기법이 적용 가능하다.
순차 블록에 존재하는 페이지가 무효화 된 경우 메모리 관리 장치 (200)는 병합 연산을 수행할 때 무효화된 페이지를 복사할 필요가 없다. 또한 융합 그룹 (130)에 존재하는 페이지가 무효화 된 경우 메모리 관리 장치 (200)는 쓰레기 수집 연산을 수행하거나 융합 해제 연산을 수행할 때 무효화된 페이지는 복사할 필요가 없다.
무효화된 페이지가 존재하지 않는 경우 융합 그룹 (130)의 활용도는 융합 그룹 (130)에 포함된 여유 블록의 개수 (Nempty)와 융합 그룹 (130)에 포함된 논리 블록의 개수 (Nfused)로부터 Nfused/(Nempty+Nfused)와 같이 단순한 수식에 의해 계산이 가능하다.
그러나 본 발명의 일실시예에 따라, TRIM 명령에 의해 무효화된 페이지가 융합 그룹 (130)에 존재하는 경우 융합 그룹 (130)의 활용도는 무효화된 페이지를 고려하여 계산할 필요가 있다.
메모리 관리 장치 (200)는 가비지 콜렉션 연산 및 융합 해제 연산을 위하여 융합 그룹 (130) 내에 모든 페이지가 전혀 사용되지 않은 순수한 빈 블록을 최저값 이상 유지한다. 이러한 최저값은 1 이상으로 시스템 상황에 따라 더 큰 값이 될 수 있다. 만약 최저값이 2 이면 융합 그룹 (130) 두 개 이상의 빈 블록을 유지한다. 그러나 융합 그룹 내부적으로 두 개 이상의 빈 블록을 유지하거나 또는 융합 그룹 (130) 내부에 빈 블록을 유지하지 않고 필요할 때 여유 블록 (140) 에서 빈 블록을 가져다 사용하고 연산이 종료된 후 하나의 블록을 여유 블록 (140)으로 반환하는 것은 모두 동일한 효과를 가진 동일 기법이다.
도 3은 도 2의 메모리 관리 장치 (200)의 동작의 일 예를 도시하는 도면이다.
패턴 검출기 (210)는 블록을 순차 그룹 (120) 또는 융합 그룹 (130) 중 어느 하나로 지정할 수 있다.
워크로드 (workload) 검출기 (240)는 융합 그룹 (130) 내에서 재참조되는 요청의 특성을 검출하여 융합 그룹 (130)에 포함되는 논리 블록의 수를 조정할 수 있다. 만약 하나의 논리 블록을 융합 그룹 (130)에서 제거하여 순차 블록으로 지정하면(융합 해제 연산), 해당 논리 블록을 저장하기 위한 물리 블록이 필요하며, 따라서 융합 그룹 (130)에 포함된 물리 블록의 수가 감소한다.
메모리 관리 장치 (200)는 융합 그룹 (130)에 포함되는 블록에 대하여 가비지 콜렉션 연산을 수행함으로써 융합 그룹 (130) 내부에서 사용된 공간을 다른 쓰기 요청을 위한 빈 공간으로 변환할 수 있다. 또한 가비지 콜렉션 연산을 수행하여 사용된 블록을 빈 블록 또는 여유 블록 (140)으로 변환할 수 있다.
메모리 관리 장치 (200)는 플래시 메모리 (100)의 블록 각각의 현재 상태 (포함되는 그룹)를 메인 메모리 상의 맵에서 갱신할 수도 있고, 갱신된 맵을 메타 블록 (110)에 저장할 수도 있다.
도 4의 (가)는 본 발명의 일실시예에 따른 도 2의 메모리 관리 장치 (200)의 동작의 일 예를 도시하는 도면이다.
융합 그룹 (400)은 초기에 전체 여유 블록들 중 일부인 물리 블록 B2', B1', B0'을 포함한다. B2', B1', B0'와 같이 '(프라임) 기호를 가진 블록 번호는 융합 그룹 (400)내에 포함되는 특정 물리 블록을 가리킨다.
블록 B2', B1', B0'는 소거(erase)되었을 수도 있고 아닐 수도 있다. 만약 소거되지 않았다면 메모리 관리 장치 (200)는 이들을 사용하기 전에 소거(erase)하는 과정을 수행해야 한다.
순차 영역은 페이지들이 순차 조건에 맞게 저장되어 있는 순차 블록 B3, B2, B1, B0를 포함하고 있다. 순차 영역 내 블록 번호 B3, B2, B1, B0는 논리 블록 번호를 가리킨다. 순차 영역에 존재하는 블록들에는 블록 사상 기법이 적용된다. 따라서 논리 블록 번호 B3, B2, B1, B0들은 블록 사상 기법을 통하여 특정 물리 블록 번호로 사상될 수 있다.
순차 그룹에 포함된 순차 블록 B1은 논리 페이지 P10, P11, P12, P13 및 P14를 저장한다. 그리고 순차 블록 B2은 논리 페이지 P20, P21, P22, P23 및 P24를 저장한다.
융합 그룹 (400)에는 페이지 사상 기법이 적용되므로 하나의 논리 블록이 하나의 물리 블록에 대응하지 않을 수 있다. 더 정확히 표현하면, 융합 그룹 (400)에는 논리 블록 개념이 존재하지 않는다.
그러나 메모리 관리 장치 (200)는 융합 그룹에 어떤 논리 블록들이 융합(포함)되어 있는지 리스트를 관리한다. 융합 그룹에서 각각의 논리 페이지는 페이지 사상 기법을 통하여 특정 물리 페이지로 사상될 수 있다.
도 4의 (나)를 참조하면, 논리 블록 B0에 포함된 논리 페이지 P03이 변경되는 경우 메모리 관리 장치 (200)는 해당 논리 블록 B0를, 또는 논리 블록 B0가 저장되어 있는 물리 블록 B3'를, 융합 영역 (500)에 포함시킨다. 이제 논리 블록 B0는 순차 영역에 존재하지 않는다.
메모리 관리 장치 (200)는 물리 블록 B2'를 버퍼링 블록 (buffering block)으로 선택할 수 있다. 버퍼링 블록에는 융합 그룹 (500)에 포함된 모든 논리 블록들(도 4의 (나)의 예에서 물리 블록 B3')의 논리 페이지 중 변경되는 새로운 페이지를 기록할 수 있다. 메모리 관리 장치 (200)는 하나 또는 복수의 블록을 버퍼링 블록으로 선택할 수 있다.
도 4의 (나)에서 변경된 논리 페이지 P03은 융합 영역 내에서 버퍼링 블록 B2'의 첫 번째 페이지에 기록되었으며, B3'의 P03은 무효화 되었다. 이하에서, 페이지 번호 위의 X 표시는 페이지가 무효로 되었음(invalid)을 나타낸다.
융합 그룹 내에서 각각의 논리 블록은 특정 물리 블록에만 국한되어 사상되지 않는다. 이를테면, 융합 그룹 내에 포함된 논리 블록 B0는 특정 물리 블록에 대응되지 않는다. 이제 논리 블록 B0에 소속된 페이지 P00, P01, P02, P03, P04는 융합 그룹 내 어떤 블록에도 존재할 수 있다.
도 5는 본 발명의 일실시예에 따른 융합 연산 과정을 도시한다.
도 4의 (나)의 순차 그룹에 존재하는 논리 블록 B1의 P11에 대한 쓰기가 요청된 경우 메모리 관리 장치 (200)는 논리 블록 B1을 융합 그룹에 포함시킨다. 따라서, 도 5의 (가)에서는 논리 블록 B1이 이제 순차 영역에 존재하지 않으며, 융합 그룹 (600)에 소속되어 있다.
도 5의 (가)에서 논리 블록 B1에 포함된 논리 페이지 P11는 이제 버퍼링 블록 B2'의 두 번째 페이지에 기록되었다. 그리고, P14에 대한 쓰기가 요청되면, 새로운 논리 페이지 P14는 B2'의 세 번째 페이지에 기록된다. 그리고 B4'에서 기존의 P11이나 P14에 대응하던 기존의 페이지들은 무효화 된다.
그리고, 도 5의 (가)에서 P00와 P01에 대한 쓰기가 요청되면, 이들은 버퍼링 블록인 B2'의 네 번째와 다섯 번째 페이지에 기록되며, B3'에서 P00이나 P01에 대응하던 기존 페이지들은 무효화된다.
그러면, 도 5의 (가)에서 버퍼링 블록 B2'의 모든 페이지가 사용되었다.
본 발명의 일실시예에 따르면, 융합 그룹 내 빈 블록의 개수가 임계값 이하인 경우, 메모리 관리 장치 (200)는 새로운 버퍼링 블록 만들기 위하여 가비지 콜렉션 (또는 쓰레기 수집) 연산을 수행한다. 본 실시 예에서 상기 임계 값은 2로 가정한다.
도 5의 (나)는 본 발명의 일실시예에 따른 가비지 콜렉션 연산의 일 예를 도시하는 도면이다.
다시 도 5의 (가)를 참조하면, 메모리 관리 장치 (200)는 유효한 페이지의 개수가 가장 작은 물리 블록 B4', B3' 중 어느 하나를 가비지 콜렉션 연산의 대상으로 선택할 수 있다. 그러나 가비지 콜렉션 대상 선택 기준은 다양한 형태를 가지며, 한 가지 예로 특정되어서는 안 된다.
예시적으로, 메모리 관리 장치 (200)가 물리 블록 B3'을 가비지 콜렉션 연산의 대상으로 선택했다고 가정한다.
메모리 관리 장치 (200)는 빈 블록 B1'과 B0'중 하나를 버퍼링 블록으로 선정한다.
예시적으로, 도 5의 (나)에서는 블록 B1'이 버퍼링 블록으로 선정되었다. 만약 B1'가 소거되지 않았으면, B1'를 소거한다. 그리고 메모리 관리 장치 (200)는 블록 B3'의 유효 페이지 P02와 P04를 버퍼링 블록 B1'로 복사한다. 복사가 끝나면 이제 블록 B3'에는 유효 페이지가 존재하지 않으므로 블록 B3'는 완전히 빈 블록이 된다.
메모리 관리 장치 (200)는 가비지 콜렉션 연산 및 융합 해제 연산을 위하여 임계값(상기 예에서는 임계값이 2임)보다 많거나 같은 개수의 빈 블록을 융합 그룹 (600) 내에 유지한다. 이를테면, 메모리 관리 장치 (200)는 빈 블록 B3' 및 B0'을 도 5의 (나)에 도시된 융합 그룹 (600) 내에 유지할 수 있다.
그러나, 본 발명은 일부 실시예에 한정되지 않으며, 다른 실시예에서는, 융합 그룹 (600)에 빈 블록을 유지하지 않을 수 있으며, 이 경우 필요할 때 여유 블록들 (140) 중에서 빈 블록을 가져다 사용하고 연산이 끝나면 동일한 개수의 빈 블록을 여유 블록 (140)으로 반환한다. 그러나 이하의 실시예들에 대한 설명에 있어서는 융합 그룹 (600) 내에 둘 이상의 빈 블록이 유지되는 것을 가정한다.
또한 메모리 관리 장치(200)는 시스템 유휴 시간에 미리 융합 해제 연산을 수행하여 많은 수의 빈 블록을 만들어 놓을 수 있으며 이를 "백그라운드 융합 해제 연산"이라 부른다. "백그라운드 융합 해제 연산"으로 시스템 유휴 시간에 많은 수의 빈 블록을 만들어 놓으면 융합 그룹 (600)의 활용도가 낮아지며, 당분간 가비지 콜렉션 연산 또는 융합 해제 연산을 수행하지 않고도 쓰기 요청을 처리할 수 있어 성능이 향상된다.
도 6의 (가)를 참조하면, 융합 그룹(600)에 존재하는 논리 페이지 P14에 대한 쓰기가 요청되면, P14는 버퍼링 블록 B1'의 세 번째 페이지에 기록되며, 블록 B4' 내의 기존 논리 페이지 P14는 무효화 된다.
본 발명의 일실시예에 따르면, 메모리 관리 장치(200)는 TRIM 명령을 수신하여 처리한다.
도 6의 (나)를 참고하면, 예시적으로, P22, P23, P24, P02, P03에 존재하는 섹터에 대하여 TRIM 명령이 요청되었다. 이 경우, 메모리 관리 장치 (200)는 TRIM 명령이 요청된 상기 논리 페이지들을 무효화 시킨다. 이러한 무효화 요청은 맵을 갱신함으로써 수행된다.
본 발명의 일실시예에 따르면, 이러한 무효화 과정을 수행한 다음에, 메모리 관리 장치(200)의 패턴 검출기(210)가 순차 그룹에 존재하는 제1 논리 블록 B2의 이용율 (=유효페이지수/블록내전체페이지수)에 대해 제1 조건이 만족되는 경우라고 판단하면, 블록 지정부(220)는 해당 블록의 페이지에 대한 쓰기 요청이 없더라도 논리 블록 B2를 융합 그룹 (600)에 포함시킨다.
여기서 상기 제1 조건이란 논리 블록 B2의 이용율이 제1 임계값(이를 테면 0.4와 같은 값) 이하인 경우이거나, 또는 융합 그룹 (600)의 이용율보다 낮은 경우인 것 등 다양한 기준을 만족할 조건일 수 있다.
도 7은 패턴 검출기(210)가 논리 블록 B2의 이용율에 대한 제1 조건이 만족되는 것으로 판단해서, 메모리 관리 장치 (200)의 블록 지정부(220)가 논리 블록 B2를 융합 그룹(700)에 포함시킨 직후의 상태를 도시한 도면이다.
도 7에서 논리 블록 B2는 더 이상 순차 영역에 존재하지 않으며, 논리 블록 B2가 사용하던 물리 블록은 융합영역에 포함되었다.
도 8은 도 2의 메모리 관리 장치 (200)의 융합 해제 연산의 일 예를 도시하는 도면이다.
도 7과 도 8을 참조하면 논리 블록 B0의 P02와 P03 페이지는 TRIM 명령에 의해 더 이상 어느 영역에도 존재하지 않는다. 그리고 논리 블록 B0의 나머지 논리 페이지들은 물리 블록 B2'와 B1'에 저장되어 있다.
메모리 관리 장치 (200)는 논리 블록 B0에 소속된 페이지에 대한 접근이 빈번하지 않거나 또는 융합 그룹의 이용율을 조절하는 것과 같이 여러 가지 필요에 의해 논리 블록 B0을 융합 그룹 (700)으로부터 분리할 수 있다.
메모리 관리 장치 (200)는 물리 블록 B2'로부터 논리 페이지 P00과 P01을 물리 블록 B3;로 복사하고 물리 블록 B1'로부터 논리 페이지 P04를 물리 블록 B3'로 복사할 수 있다. 복사가 끝난 후 메모리 관리 장치 (200)는 물리 블록 B2'와 B1'에 있던 논리 페이지들을 무효화할 수 있다.
메모리 관리 장치 (200)는 논리 블록 B0의 페이지들이 물리 블록 B3'에 순차 조건에 맞게 저장되어 있으므로 도 8의 (나)에 도시된 바와 같이 물리 블록 B3' 및 논리 블록 B0를 융합 그룹 (700)으로부터 분리하여 순차 그룹에 포함시킬 수 있다.
도 8의 (나)와 같이 융합 해제 연산 후 융합 그룹 (800) 내에 빈 블록의 개수가 상기 임계값(이 예에서는 2) 미만인 경우 메모리 관리 장치 (200)는 가비지 콜렉션 연산을 수행하여 빈 블록을 추가할 수 있다.
이 때 메모리 관리 장치 (200)는 유효한 페이지의 개수가 가장 작은 물리 블록 B2'를 가비지 콜렉션 연산의 대상으로 선택할 수 있다. 또는 다른 기준에 의해 가비지 콜렉션 연산의 대상을 선택할 수 있으며, 선택 기준이 한 가지로 제한되어서는 안된다.
메모리 관리 장치 (200)는 가지비 콜렉션 대상 블록의 모든 유효 페이지들을 버퍼링 블록으로 복사한다. 도 8의 (나)에서 가비지 콜렉션 대상 블록으로 선택된 물리 블록 B2'는 유효한 페이지 P11을 포함하고 있으므로, 메모리 관리 장치 (200)는 페이지 P11을 버퍼링 블록 B1'로 복사한다.
만약 가비지 콜렉션 대상 블록에 존재하는 유효 페이지가 수가 버퍼링 블록에 존재하는 미사용 페이지 수보다 많다면, 페이지를 복사하는 도중 새로운 버퍼링 블록을 생성하기 위하여 별도의 가비지 콜렉션이 필요할 수도 있다.
이 경우 남아있는 빈 블록 B0'를 사용하여 별도의 가비지 콜렉션 연산을 수행하여 새로운 버퍼링 블록을 생성한다. 그리고 새로 생성된 버퍼링 블록을 사용하여 원래 가비지 콜렉션에서 수행하던 복사를 계속한다.
그러면, 가비지 콜렉션 연산이 완료에 의해, 융합 그룹 (800)은 상기 임계값(이 예에서 2) 이상의 빈 블록을 가진다.
도 9의 (나)에서는 융합 그룹 (800)이 두 개의 빈 블록 B2', B0'를 포함하는 것이 도시되었다.
새로운 쓰기 요청이 도착하면 이 요청은 버퍼링 블록인 B1'의 미사용 페이지를 사용하여 처리된다. 그리고 이 이후의 요청은 상기 동작들을 반복적으로 적용하면서 처리된다.
한편, 다시 도 2를 참조하면, 블록 지정부 (220)는 융합 그룹 (130) 내에 포함된 논리 블록의 수 (또는 기존에 논리 블록에 대응되었던 물리 블록의 수) 및 융합 그룹 (130)에 참여한 여유 블록의 수를 결정할 수 있다. 또한 블록 지정부 (220)는 플래시 메모리 (100)에 대한 접근 연산 중 융합 그룹 (130)에 대한 접근 연산의 비율을 계산할 수 있다.
본 명세서에서는 설명의 편의 상 플래시 메모리 (100)에 대한 접근 연산 중 융합 그룹 (130)에 대한 접근 연산의 비율을 참조 확률이라고 정의하기로 한다.
TRIM 명령으로 무효화된 페이지가 없는 경우, 융합 그룹 (130) 내에 참여한 논리 블록의 수를 Nfused, 융합 그룹 (130)에 참여한 여유 블록의 수를 Ninit_empty 라고 할 때, 융합 그룹의 이용율은 Nfused/(Nfused+Ninit_empty) 라고 정의할 수 있다. 그리고 융합 그룹 (130)에 참여한 여유 블록의 수가 고정되어 있다면 융합 그룹 (130)에 참여하는 논리 블록의 수가 증가할수록 이용율이 증가한다.
예를 들어 융합 그룹 (130)에 10개의 여유 블록들이 고정적으로 포함된다고 할 때 5개의 논리 블록들이 융합 그룹 (130)에 포함되어 있다면 융합 그룹 (130)의 이용율은 5/15라 할 수 있다. 10개의 논리 블록들이 융합 그룹 (130)에 포함되어 있다면 융합 그룹 (130)의 이용율은 10/20이 된다.
만약 TRIM 명령으로 무효화된 페이지가 존재한다면 융합 그룹 (130)의 이용율은 이제 단순히 융합 그룹 (130)에 포함된 여유 블록과 논리 블록의 개수만으로 계산되지 않는다.
메모리 관리 장치 (200)는 융합 그룹 (130)에 포함된 모든 논리 블록들의 논리 페이지들 중에서 무효화된 페이지 개수를 계산할 수 있다고 가정한다. 메모리 관리 장치 (200)는 융합 그룹 (130)에 포함된 모든 논리 블록들에 소속된 섹터 또는 페이지에 대한 TRIM 명령이 요청될 때마다 무효화된 페이지 개수를 증가시킴으로써 융합 그룹 (130)내 무효화된 전체 페이지 개수를 유지할 수 있다.
또한 순차 그룹에 소속된 논리 블록이 융합 그룹 (130)으로 이동하거나 융합 그룹 (130)에 소속된 논리 블록이 순차 그룹으로 이동할 때마다 해당 블록의 무효화된 페이지 개수를 계산하여 융합 그룹 (130)내 무효화된 전체 페이지 개수에 더하거나 빼기를 수행하여 융합 그룹 (130)내 무효화된 전체 페이지 개수를 정확하게 유지할 수 있다.
그리고, 메모리 관리 장치 (200)는 순차 블록의 페이지가 참조될 때 해당 순차 블록은 융합 그룹에 포함되지 않으면서 순차 블록의 특정 페이지만 융합 그룹에 포함되는 경우에도 이를 반영하여 융합 그룹 (130)내 무효화된 페이지 개수를 정확하게 유지할 수 있다.
메모리 관리 장치 (200)는 무효화된 페이지 개수를 가지고 융합 그룹에 존재하는 유효 페이지 개수를 계산할 수 있다. 또는 상기 무효 페이지 개수를 계산하는 과정에서 유효 페이지 개수를 계산함으로써 유효 페이지 개수를 계산할 수 있다.
플래시 메모리의 블록 당 페이지 개수를 NP라고 가정한다. 그리고 융합 그룹 (130)내 전체 유효 페이지 개수를 Ntotal_valid 라고 가정한다. 융합 그룹 (130)에 포함된 여유 블록의 개수를 Ninit_empty, 융합 그룹 (130)에 포함된 논리 블록의 개수를 Nfused라고 가정한다. 그러면 융합 그룹 (130)의 이용율 UF는 수학식 1과 같이 계산될 수 있다.
한 논리 블록의 이용율은 해당 논리 블록 내 유효 페이지의 개수에 의해 결정된다. 어떤 논리 블록의 이용율을 UB라고 할 때, 논리 블록 내 무효 페이지가 하나도 없다면, 이 논리 블록에는 유효 페이지가 Np개 존재하며, 이 경우 논리 블록의 이용율 UB는 1 (=Np/Np)이다. 만약 논리 블록에 무효 페이지가 Np_inv 존재하면 논리 블록의 이용율 UB는 (Np-Np_inv)/Np이다.
만약 순차 그룹에 소속된 논리 블록이 TRIM 명령에 의해 무효(invalid) 페이지를 가지게 되면, 해당 블록을 융합 그룹 (130) 으로 이동하는 경우 융합 그룹 (130)의 이용율이 낮아질 수 있다. 특히 순차 블록의 이용율 UB가 융합 그룹 (130)의 이용율 UF보다 낮은 경우 해당 순차 블록을 융합 그룹으로 이동시키면 융합 그룹 (130) 이용율 UF를 낮출 수 있다.
블록을 순차 그룹에서 융합 그룹 (130)으로 이동하기 위해서는 맵 변경과 같은 비용이 필요하다. 논리 블록을 이동해서 얻는 이득이 이동에 필요한 비용보다 큰 경우 메모리 관리 장치 (200)는 이용율이 UB인 논리 블록을 융합 그룹 (130)으로 이동시킬 수 있다.
이용율이 UB인 블록을 이용율 UF인 융합 그룹 (130)으로 이동시키면 융합 그룹 (130)은 새로운 이용율 UF'를 가질 것이라고 메모리 관리 장치는 미리 계산할 수 있다. 메모리 관리 장치 (200)는 상기 설명한 수식에 의해 초기 여유 블록 개수, 새로운 논리 블록이 추가되었을 때 융합 그룹 내 논리 블록 개수, 그리고 새로 변경된 무효화된 페이지 개수 또는 유효 페이지 개수를 기반으로 새로운 이용율 UF'를 계산할 수 있다.
결국 메모리 관리 장치 (200)는 융합 그룹 (130)의 낮아진 이용율 (UF-UF')로 얻을 수 있는 이득이 논리 블록을 순차 그룹에서 융합 그룹 (130)으로 이동하는 데 필요한 비용보다 크다고 판단되면, 논리 블록을 융합 그룹 (130)으로 이동시킬 수 있다.
메모리 관리 장치 (200)는 이러한 이득을 정량적으로 계산하는 수식을 이용할 수 있다. 또는 메모리 관리 장치 (200)는 경험적 또는 통계적 수치를 이용하여 이득을 추론할 수 있다.
융합 그룹 (130)에 할당된 초기 여유 블록의 개수가 정해진 상태에서 융합 그룹 (130)에 참여하는 논리 블록의 수가 증가할수록, 또는 융합 그룹에 참가한 유효 페이지 개수가 증가할 수록, 융합 그룹 (130)의 이용율은 증가하며, 융합 그룹 (130)의 이용율이 높아질수록 융합 그룹 (130)에 대한 가비지 콜렉션 연산의 비용이 증가한다.
한편, 융합 그룹 (130)에 참여하는 논리 블록의 수가 증가할수록, 또는 유효 페이지 수가 증가할 수록 융합 그룹 (130) 내에 위치하는 페이지(또는 이 페이지 내 섹터 데이터)가 참조(갱신)될 확률이 높다. 융합 그룹 (130) 내에 위치하는 페이지가 갱신되는 경우를 융합 그룹 (130) 적중 (hit)이라 부를 수도 있다. 융합 그룹 (130)에 많은 수의 논리 블록 또는 유효 페이지가 참여하면 적중 비율 (hit ratio)은 높아진다.
융합 그룹 (130) 내의 페이지(섹터)에 쓰기가 요청되면 해당 페이지는 비교적 적은 비용으로 쓰기 버퍼링 블록에서 갱신될 수 있다. 융합 그룹 (130) 내 페이지 갱신에 대한 평균 비용을 계산하기 위해 가비지 콜렉션 비용을 각 페이지의 갱신이 분담하는 모델이 고려될 수 있다.
호스트는 시간적 지역성 및 공간적 지역성을 가지고 섹터 데이타를 참조할 확률이 높으므로, 비교적 최근에 참조 (또는 갱신)된 논리 페이지(섹터)가 융합 그룹 (130)에 포함되면 또는 해당 페이지가 포함된 블록이 융합 그룹 (130)에 포함되면 동일한 페이지가 다시 참조 되거나 또는 같은 블록 내 인접 섹터가 참조될 가능성이 높다. 따라서 융합 그룹 (130)에 많은 수의 논리 블록이 포함될수록 또는 융합 그룹에 많은 수의 유효 논리 페이지가 포함될수록 융합 그룹 (130)에 대한 적중 비율이 높아진다.
한편, 융합 그룹 (130)의 이용율이 증가할수록 가비지 콜렉션 연산의 비용은 증가한다. 요약하면 이용율이 증가할수록 융합 그룹 (130)에 대한 적중율이 높아지는 반면 (도 11 참고), 가비지 콜렉션 연산 비용이 증가할 것으로 예측된다. 따라서 메모리 관리 장치 (200)는 이용율 및 가비지 콜렉션 연산의 평균 비용에 대한 수학적 모델을 이용하여 융합 그룹 (130)에 대한 최적의 이용율을 계산할 수 있다. 메모리 관리 장치 (200)는 최적의 이용율에 도달하도록 융합 그룹 (130)에 존재하는 유효 페이지 개수 또는 논리 블록의 개수를 점진적으로 조절할 수 있다.
메모리 관리 장치 (200)는 융합 그룹 (130)이 최적의 이용율을 유지하도록 융합 그룹에 포함된 유효 페이지 개수 또는 논리 블록의 수를 제어할 수 이다. 만약 융합 그룹 (130)의 이용율이 최적 이용율보다 높다면, 병합 (merge) 연산으로 몇몇 유효 페이지를 융합 그룹에서 제거할 수 있다 또는 융합 해제 연산으로 논리 블록들을 융합 그룹 (130)에서 순차 그룹으로 이동시켜, 융합 그룹 (130)의 이용율을 낮출 수 있다. 반대로, 융합 그룹 (130)의 이용율이 최적 이용율보다 낮다면, 융합 연산으로 블록을 순차 그룹에서 융합 그룹으로 이동시킬 수 있다. 또는 순차 그룹에 있는 페이지가 참조될 때마다 해당 페이지를 또는 해당 페이지가 존재하는 블록을 융합 그룹에 포함시키는 점진적인 방법이 사용될 수 있다.
융합 그룹의 이용율을 최적의 상태로 유지하기 위해서는, 융합 그룹에 논리 블록 몇 개를 더 포함시키거나 융합 그룹에서 제거하여, 또는 몇몇 유효 페이지를 융합 그룹에 포함시키거나 제거하여, 융합 그룹 이용율 UF가 X에서 X'로 변화하였을 때 전체 플래시 메모리 저장 장치의 페이지 갱신 비용을 예측할 수 있어야 한다. 만약 이 때 페이지 갱신 비용이 현재 페이지 갱신 비용보다 작다면 메모리 관리 장치 (200)는 점진적으로 논리 블록이나 유효 페이지를 이동시킬 수 있다.
융합 그룹의 이용율 UF는 상기 설명한 바와 같이 메모리 관리 장치 (200)가 계산이 가능하다. 그런데 가비지 콜렉션 비용을 계산하기 위해서는 융합 그룹 (130) 의 이용율 UF가 아닌 가비지 콜렉션 대상이 되는 블록의 이용율 UB가 필요하다.
도 11은 메모리 관리 장치 (200)는 초기 여유 블록의 개수가 주어진 경우, 융합 그룹에 포함된 논리 블록의 개수에 따라 융합 그룹의 이용율의 곡선 GF를 도시한 그래프이다. 이하에서는 융합 그룹의 이용율 곡선을 GF라고 한다.
도 10의 곡선은 편의상 융합 그룹에 포함된 논리 블록의 개수에 따라 그린 그래프이며, 융합 그룹에 포함된 유효 페이지 개수에 따라서도 이러한 이용율 그래프가 가능함은 자명하다. 이하에서 설명하는 실시예들에 대해서는, 편의상 융합 그룹에 포함된 논리 블록의 개수를 중심으로 설명하지만, 이것이 유효 페이지 개수를 사용하는 예에도 적용됨은 자명하다.
메모리 관리 장치 (200)는 동작 중 어떤 시점에 융합 그룹에 포함된 논리 블록의 개수로부터 현재 융합 그룹의 이용율 UF를 계산할 수 있다. 현재 융합 그룹의 이용율 UF는 이용율 곡선 GF의 한 점을 의미한다.
메모리 관리 장치 (200)는, 현재 융합 그룹의 이용율이 UF일 때, 가비지 콜렉션 연산이 수행되는 순간 가비지 콜렉션 대상 블록에서 유효 페이지 개수를 계산하여, 가비지 콜렉션 대상 블록의 이용율 UB를 알 수 있다.
정리하면 메모리 관리 장치 (200)는 융합 그룹의 이용율 곡선 GF, 현재 융합 그룹의 이용율 UF, 그리고 이 때 가비지 콜렉션 대상 블록의 이용율 UB를 알고 있다고 가정한다. 메모리 관리 장치 (200)는 이 세 가지 정보를 이용하여 가비지 콜렉션 대상 블록의 이용율 곡선 GB를 예측할 수 있어야 한다. 이러한 GB 곡선이 예측되면, 메모리 관리 장치 (200)는 수식 1~6을 이용하여 융합 그룹에 포함된 논리 블록의 개수에 따라 페이지 갱신 비용 그래프를 그릴 수 있으며, 페이지 갱신 비용을 가장 작게 만드는 융합 그룹 내 논리 블록의 개수를 결정할 수 있다.
메모리 관리 장치 (200)는 정확히 GB 곡선을 예측하기 위하여 참조 곡선 GR을 이용할 수 있다. 참조 곡선 GR은 참조 워크로드 또는 표준 워크로드에서 융합 그룹 이용율 곡선 GF의 변화에 따라 가비지 콜렉션 대상 블록 이용율 UB가 어떻게 변화하는지를 수학적으로 계산하거나 실험적으로 수집하여 그린 곡선이다.
참조 곡선의 한 가지 예로 LFS (Log-structured File System)에 대한 연구에서 사용한 수식을 사용할 수 있다. 상기 연구에서는 전체 파일 시스템의 활용율 UD와, 클리닝(가비지 콜렉션) 대상 세그먼트의 이용율 US 사이의 관계를 수식 2와 같이 추정하였다. 이러한 수식을 플래시 메모리 저장 장치에 적용하면, UD대신 UF를 대입하고, 또한 US 대신 UB를 대입하면, 융합 그룹의 이용율 UF와 가지비 콜렉션 대상 블록의 이용율 UB 사이의 관계를 유추하는데 적용할 수도 있다. 그러나 참조 곡선이 이 한 가지 예로만 국한되는 것이 아니며, 다른 수식을 사용하거나 실험적 결과를 수집하여 참조 곡선을 도출할 수 있다는 점은 자명하다.
이러한 참조 곡선은 표준 워크로드에서 측정된 값으로 실제 다양한 워크로드에 정확히 적용될 수 없음은 자명하다. 아울러 TRIM 명령으로 융합 그룹 내에 무효화된 페이지들이 존재하는 경우 참조 패턴은 집중도가 높아질 수 있으며, 그 결과 융합 그룹 이용율로부터 가비지 콜렉션 대상 블록 이용율을 예측하는 것은 많은 오차를 가질 가능성이 있다. 따라서 이러한 오차를 보정하는 방법이 필요할 수 있다.
메모리 관리 장치 (200)는 이제 융합 그룹의 이용율 곡선 GF, 현재 융합 그룹의 이용율 UF, 그리고 이 때 가비지 콜렉션 대상 블록의 이용율 UB, 그리고 참조 곡선 GR을 알고 있다고 가정한다. 메모리 관리 장치는 현재 융합 그룹 이용율이 UF일 때, 참조 곡선 GR상의 한 점 UR을 지정할 수 있다. 그리고 메모리 관리 장치 (200)는 가비지 콜렉션 대상 블록의 이용율 UB와 UF, 그리고 UB와 UR 관계를 정량화 하고 보정 수식을 사용하여 그래프 GB를 유추할 수 있다.
보정 수식으로 다양한 방식이 적용될 수 있으며, 그 한 가지 예는 다음과 같다. 먼저 현재 메모리 관리 장치 설정으로부터 측정 가능한 UF, UR, 그리고 UB로부터 수학식 7과 같은 관계값 C를 계산한다.
그리고 관계값 C를 이용하여 융합 그룹 이용율이 미지의 값 UF'일 때 가비지 콜렉션 대상 블록 이용율 UB'를 계산할 수 있다. 한가지 예로 융합 그룹 이용율이 UF', 그리고 이 때 그래프 GR상의 값이 UR'일 때 UB'를 수학식 7과 같이 계산한다. 그리고 서로 다른 UB'를 모두 계산하면 그래프 GB를 그릴 수 있다.
또 다른 예로 이와 동일하지만 형태는 다른 수식도 존재한다. 예를 들면 관계값 C와 UB'를 수학식 8과 같이 같이 계산할 수도 있다.
도 10은 상기 보정 수식으로 유추한 그래프 GB를 보여준다. 메모리 관리 장치 (200)는 융합 그룹에 논리 블록 몇 개를 제거하거나 포함시켜 융합 그룹 이용율이 그래프 GF처럼 변화할 때, 가비지 콜렉션 대상 블록 이용율이 GB처럼 변화함을 유추하고, 다시 가비지 콜렉션 대상 블록 이용율이 GB처럼 변화함을 유추할 수 있다. 이제 메모리 관리 장치 (200)는 논리 블록 개수에 따른 융합 그룹 적중율 r이 주어지면, 수식 1~6을 적용하여 전체 플래시 메모리 저장 장치의 평균 페이지 갱신 비용 그래프를 도출할 수 있다.
논리 블록이 융합 그룹에 포함될 때마다 융합 그룹의 이용율은 증가하며, 아울러 융합 그룹의 적중율(r) 또한 증가한다. 도 11은 논리 블록의 개수에 따라 융합 그룹의 적중율(r)이 증가함을 보여준다. 융합 그룹의 이용율 증가에 따른 적중율 그래프가 도 11과 같이 주어질 때 수식 1~6을 적용하여 전체 플래시 메모리 저장 장치의 평균 페이지 갱신 비용 그래프를 도출할 수 있으며, 도 12는 도출된 페이지 갱신 비용 그래프를 보여준다. 특히 도 12의 최적 지점은 페이지 갱신 비용을 최소로 만드는 융합 그룹 내 논리 블록의 개수를 가리킨다.
메모리 관리 장치 (200)는 이러한 평균 페이지 갱신 비용 그래프에 따라 페이지 갱신 비용을 최소로 만들기 위해 융합 그룹의 이용율을 점진적으로 조절할 수 있다. 이러한 조절은 논리 블록을 융합 그룹에 포함시키거나 제거하는 방식 또는 유효 페이지를 융합 그룹에 추가하거나 제거하는 방식으로 수행될 수 있다.
도 12에서 보면 최적 지점의 왼쪽은 페이지 갱신 비용이 가파르게 상승하며, 오른 쪽은 페이지 갱신 비용이 완만하게 상승한다. 실제 컴퓨팅 환경에서 워크로드는 그 변화가 심하기 때문에, 최적 지점이 자주 변경되어야 한다. 이러한 변화와 측정 오차를 고려할 때 실제 환경에서는 최적 지점보다 오른쪽으로 δ만큼 이동한 안전 지점이 더 적절할 수 있다. 메모리 관리 장치 (200)는 본 발명의 수식으로 도출한 최적 지점이 되도록 융합 그룹 이용율을 조절할 수 있으며, 또는 최적 지점에서 δ만큼 이동한 안전 지점이 되도록 융합 그룹 이용율을 조절할 수 있으며, 이 둘은 같은 동작이라고 간주되어야 한다.
본 명세서에서, 연산의 비용은 연산이 수행되기 위해 필요로 하는 자원을 의미한다. 자원은, 예를 들어, 시간을 의미할 수도 있고, 플래시 메모리 (100)의 에너지 소모량 또는 공간을 의미할 수도 있다. 이하의 명세서에서는 시간에 대한 수학적 모델이 제시되지만 본 발명이 시간에 국한되는 것이 아님은 기술 분야의 종사자에게 자명하다.
메모리 관리 장치 (200)는 융합 연산의 비용, 융합 해제 연산의 비용 및 융합 그룹 (130)의 페이지 갱신 비용에 대한 수학적 모델을 정의할 수 있다. 또한 플래시 메모리 (100)의 메타 블록 (110) 또는 메인 메모리에 저장되는 맵 정보에 대한 갱신 비용 역시 맵 갱신 비용으로 정의될 수 있다. 만약 다른 연산의 비용보다 맵 갱신 비용이 현저하게 작다고 간주될 수 있으면 메모리 관리 장치 (200)는 맵 정보의 갱신 비용은 고려하지 않을 수도 있다.
융합 해제 연산의 비용을 정의하기 위해서는 융합 그룹 (130)의 페이지 갱신 비용 및 융합 그룹 (130)의 가비지 콜렉션 연산의 비용이 정의되어야 한다. 가비지 콜렉션 연산의 비용은 융합 그룹 (130)의 이용율에 비례한다.
융합 그룹 (130)의 이용율 UF는 다음과 같이 융합 그룹 (130)에 포함된 초기 여유 블록 개수 Ninit_empty, 융합 그룹 (130)에 포함된 논리 블록의 개수 Nfused, 그리고 융합 그룹 (130)내 유효 페이지 개수 Ntotal_valid 로부터 수학식 1과 같이 정의될 수 있다
Figure 112010086459838-pat00001
LFS에서 파일 시스템의 이용율을 UD라 하면, 클리닝 대상이 되는 세그먼트의 이용율 US는 하기 수학식 1과 같이 정의될 수 있다.
Figure 112010086459838-pat00002
여기서 ln은 자연 대수 (natural log)를 의미한다.
가비지 콜렉션 연산의 평균 비용 CGC은 하기 수학식 2와 같이 정의될 수 있다.
Figure 112010086459838-pat00003
여기서 NP는 하나의 블록이 포함할 수 있는 페이지의 개수, CCP는 하나의 블록에서 다른 블록으로 페이지를 복사(copy)하는 비용, CE는 블록의 소거(erase) 비용이다. UB는 가비지 콜렉션 대상 블록의 이용율로서 융합 그룹 이용율이 특정 값일 때 그래프 GB로부터 유추할 수 있다.
가비지 콜렉션 연산은 CE의 비용으로 블록을 소거하여 여유 블록을 생성하고, 가비지 콜렉션 연산의 대상으로 선택된 블록에서 상기 생성된 여유 블록으로 UBx NP 개의 페이지들을 복사함으로써 수행된다.
가비지 콜렉션 연산이 수행되면 상기 페이지가 복사된 블록은 쓰기 버퍼링 블록이 되며, 쓰기 버퍼링 블록은 새로운 데이터를 기록할 수 있는 (1-UB) x NP 개의 빈 페이지를 가진다. 따라서 평균적으로 (1-UB) x NP 개의 페이지가 기록될 때마다 융합 그룹 (130)에 대하여 한 번의 가비지 콜렉션 연산이 수행된다고 간주할 수 있다.
맵 갱신 비용은 작다고 가정하므로, 상기 가비지 콜렉션 연산 비용은 맵 갱신 비용을 포함하고 있지 않다. 그러나 맵 갱신 비용을 포함하는 아래와 같은 수식도 가능함은 자명한다. 아래 수식에서 CM은 맵 갱신 비용을 의미한다.
CGC = UB x NP x CCP + CE + CM
페이지 쓰기 연산을 수행할 때 분담해야 하는 쓰레기 수집 비용은 아래와 같으며 이러한 비용을 페이지 쓰기 평균 비용으로 정의한다. 페이지 쓰기 평균 비용 CPW은 하기 수학식 4와 같이 정의될 수 있다. 만약 페이지 쓰기가 맵 갱신을 요구한다면, 하기 수학식 4의 우변에 페이지 갱신 비용 CM을 더할 수 있음은 자명하다.
Figure 112010086459838-pat00004
융합 해제 연산은 융합 해제 대상 논리 블록을 선택한 후, CE의 비용으로 비어있는 블록을 소거하고, 융합 그룹 (130) 내에 분산되어 있는 융합 해제 대상 논리 블록의 모든 페이지들을 상기 생성된 여유 블록으로 복사한다. 이 때의 복사 비용은 NP x CCP이다.
복사가 끝난 후 융합 그룹 (130)에서 빈 블록의 개수가 최저값보다 작은 경우, 가비지 콜렉션을 수행하여 빈 블록을 생성한다. 그 한가지 예로 융합 그룹 (130)에서 유효한 (valid) 페이지의 수가 가장 작은 블록을 선택한 후 상기 선택된 블록의 모든 페이지들을 쓰기 버퍼링 블록으로 복사하여 여유 블록을 생성하는데, 그 비용은 UB x NP x CPW 이다. 복사하는 도중 추가적으로 가비지 콜렉션이 수행될 수도 있기 때문에 복사 비용은 평균 페이지 쓰기 비용으로 계산된다. 이들을 종합하면 융합 해제 연산의 비용 CDEF은 하기 수학식 5와 같이 정의될 수 있다. 만약 페이지 쓰기가 맵 갱신을 요구한다면, 하기 수학식 5의 우변에 페이지 갱신 비용 CM을 더할 수 있음은 자명하다.
Figure 112010086459838-pat00005
메모리 관리 장치 (200)가 융합 그룹의 이용율을 UF로 유지하기 위하여, 새로운 논리 블록이 융합 그룹 (130)에 포함되면 융합 그룹 (130)에 포함되어 있는 다른 논리 블록을 융합 해제할 수 있다.
플래시 메모리 (100)에 대한 갱신 요청 중 융합 그룹 내 페이지에 대한 참조(갱신 요청) 확률을 r이라 하면, (1-r)의 확률로 융합 그룹 (130) 외부의 페이지에 대한 참조가 요청된다.
메모리 관리 장치 (200)의 평균 쓰기 비용 Cavgw은 r의 확률로 페이지 쓰기가 수행되는 비용 r x CPW와 (1-r)의 확률로 수행되는 융합 해제 연산이 수행되는 비용 (1-r)xCDEF를 더한 값이 된다. 이러한 관계가 하기 수학식 6과 같이 정의될 수 있다.
Figure 112010086459838-pat00006
참조 확률 r은 융합 그룹 (130)의 이용율 UF에 의존한다. 호스트는 시간적 지역성 및 공간적 지역성을 가지고 플래시 메모리 (100)에 접근하므로 UF가 높을수록 r도 증가하는 경향을 가질 것으로 예측할 수 있다.
어플리케이션에 따라서는, 호스트가 비교적 큰 지역성을 가지고 플래시 메모리 (100)에 접근하는 경우가 있을 수 있고, 호스트가 비교적 랜덤하게 플래시 메모리 (100)에 접근하는 경우가 있을 수 있다.
이용율 UF가 증가할수록 참조 확률 r이 증가하지만, 호스트의 접근 경향에 따라 참조 확률 r의 증가 경향은 포화(saturate)될 수 있다.
예를 들어, 호스트가 비교적 큰 지역성을 가지고 플래시 메모리 (100)에 접근하는 경우, 이용율 UF이 3/4 이상이면 참조 확률 r이 0.8에 수렴할 수 있다. 반대로 호스트가 비교적 랜덤하게 플래시 메모리 (100)에 접근하는 경우 이용율 UF이 3/5 이상이면 참조 확률 r이 0.7에 수렴할 수 있다.
이용율 UF가 0에 가까운 값에서 증가하면 참조 확률 r이 증가하면서 평균 쓰기 비용 Cavgw는 감소한다. 그러나 이용율 UF가 더욱 증가하면 참조 확률 r의 증가 경향은 둔화되고, 가비지 콜렉션 연산의 비용이 증가하므로 평균 쓰기 비용 Cavgw가 다시 증가한다.
따라서 메모리 관리 장치 (200)는 평균 쓰기 비용 Cavgw를 최소화하는 이용율 UF를 선택할 수 있고, 상기 선택된 이용율 UF를 최적 이용율로 정의할 수 있다. 그리고 메모리 관리 장치 (200)는 융합 그룹의 이용율이 최적 이용율 UF가 되도록 융합 그룹에 포함된 논리 블록의 수나 유효 페이지 수를 점진적으로 조절할 수 있다.
파일 시스템 (240)이 운영 체제로부터의 파일 접근 요청을 플래시 메모리 (100)에 대한 순차적인 참조로 변환하도록 최적화된다면, 메모리 관리 장치 (200) 및 FTL에 대한 순차 참조 비율이 증가할 수 있다.
메모리 관리 장치 (200)는 순차 그룹 (120)에 포함되는 블록에는 데이터를 순차적으로 저장하므로 순차 참조 비율이 증가할수록 빈번하게 교환 병합 (switch merge)으로 블록을 재사용할 수 있다. 교환 병합의 비용은 융합 해제 연산 또는 융합 그룹 (130) 내의 가비지 콜렉션 연산의 비용보다 작으므로 메모리 관리 장치 (200)는 최적화된 파일 시스템 (240)과 결합되면 평균 쓰기 비용을 더욱 줄일 수 있다.
Figure 112010086459838-pat00007
Figure 112010086459838-pat00008
메모리 관리 장치 (200)는 현재 융합 그룹의 이용율 UF, 그리고 이 때 가비지 콜렉션 대상 블록의 이용율 UB를 특정할 수 있다. 아울러 참조 곡선 GR을 알고 있으므로, 융합 그룹 이용율이 UF일 때 참조 곡선 GR상에서 한 점인 UR을 알 수 있다. 이때 메모리 관리 장치는 UF, UB, UR로부터 오차 보정에 필요한 관계값 C를 계산할 수 있다. 그리고 이러한 C를 이용하여 미지의 융합 그룹 이용율이 UF', 그리고 이 때 그래프 GR상의 값이 UR'일 때, 미지의 UB'를 수학식 7과 같이 계산할 수 있다.
Figure 112010086459838-pat00009
Figure 112010086459838-pat00010
메모리 관리 장치 (200)는 현재 융합 그룹의 이용율 UF, 그리고 이 때 가비지 콜렉션 대상 블록의 이용율 UB를 특정할 수 있다. 아울러 참조 곡선 GR을 알고 있으므로, 융합 그룹 이용율이 UF일 때 참조 곡선 GR상에서 한 점인 UR을 알 수 있다. 이때 메모리 관리 장치는 UF, UB, UR로부터 오차 보정에 필요한 관계값 C를 계산할 수 있다. 그리고 이러한 C를 이용하여 미지의 융합 그룹 이용율이 UF', 그리고 이 때 그래프 GR상의 값이 UR'일 때, 미지의 UB'를 수학식 8과 같이 계산할 수 있다.
본 발명의 일실시예에 따른 메모리 관리 장치 (200)에서 수행되는 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명의 일실시예에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 구현될 수 있다. 예를 들면, 본 발명의 일실시예에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 구현될 수 있다.
플래시 메모리 장치와 메모리 컨트롤러는 메모리 카드를 구성할 수 있다. 이러한 경우, 메모리 컨트롤러는 USB, MMC, PCI-E, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 수 있다.
플래시 메모리 장치는 전력이 차단되어도 저장된 데이터를 유지할 수 있는 비휘발성 메모리 장치이다. 셀룰러 폰, PDA, 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 플래시 메모리 장치는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 보다 널리 사용될 수 있다. 플래시 메모리 장치는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 일실시예에 따른 컴퓨팅 시스템 또는 호스트는 버스에 전기적으로 연결된 마이크로프로세서, 사용자 인터페이스, 베이스밴드 칩셋(baseband chipset)과 같은 모뎀, 메모리 컨트롤러, 그리고 플래시 메모리 장치를 포함한다. 플래시 메모리 장치에는 마이크로프로세서에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 컨트롤러를 통해 저장될 것이다. 본 발명의 일실시예에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리가 추가적으로 제공될 것이다.
본 발명의 일실시예에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 메모리 컨트롤러와 플래시 메모리 장치는, 예를 들면, 데이터를 저장하는 데 비휘발성 메모리를 사용하는 SSD(Solid State Drive/Disk)를 구성할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 메모리 관리 장치
110: 메타 블록
120: 순차 그룹
130:융합 그룹
140: 여유 블록

Claims (16)

  1. 비휘발성 메모리에 포함되는 복수의 블록들을 상기 복수의 블록들 각각에 대한 접근 연산의 지역성에 기초하여 순차 그룹 또는 융합 그룹으로 구분하는 블록 지정부; 및
    상기 순차 그룹 또는 융합 그룹에 포함되는 블록에 소속된 데이터에 대해 TRIM 명령이 도착한 경우, 상기 TRIM 명령에 연관된 페이지를 무효화 하고, 상기 무효화를 반영하여, 상기 순차 그룹에는 블록 사상 기법에 의해, 상기 융합 그룹에 는 페이지 사상 기법에 의해, 데이터 섹터를 저장하는 사상부
    를 포함하는 메모리 관리 장치.
  2. 제1항에 있어서,
    상기 블록 지정부는,
    상기 TRIM 명령으로 인하여 순차 블록의 페이지 일부 또는 전부가 무효화 되어, 순차 블록의 이용율이 임계치 이하인 경우 상기 순차 블록 중 적어도 일부를 상기 융합 그룹으로 이동시키는,
    메모리 관리 장치.
  3. 제1항에 있어서,
    상기 블록 지정부는,
    가비지 콜렉션 연산 및 융합 해제 연산을 위하여 둘 이상의 빈 블록을 융합 그룹에서 유지하거나 여유 블록 공간에서 둘 이상의 빈 블록을 유지하며, 상기 TRIM 명령으로 인하여 무효화된 페이지는 상기 융합 해제 연산 수행 시 복사하지 않고 무시하는,
    메모리 관리 장치.
  4. 제1항에 있어서,
    상기 블록 지정부는,
    상기 TRIM 명령으로 무효화된 페이지를 고려하여, 상기 융합 그룹의 이용율을 결정하고, 상기 융합 그룹의 이용율, 가비지 콜렉션 비용, 융합 해제 연산의 평균 비용, 및 상기 융합 그룹과 상기 순차 그룹에 대한 접근 연산의 비율을 이용하여 상기 메모리 관리 장치의 평균 페이지 쓰기 비용을 얻는,
    메모리 관리 장치.
  5. 제4항에 있어서,
    상기 블록 지정부는,
    상기 계산된 메모리 관리 장치의 평균 페이지 쓰기 비용을 바탕으로 상기 융합 그룹 내의 블록의 수 또는 유효 페이지 수의 최적 값을 결정하고, 상기 융합 그룹 내의 블록 수 또는 상기 유효 페이지 수가 상기 최적 값에 도달되도록 점진적으로 융합 해제 연산 또는 융합 연산을 수행하는,
    메모리 관리 장치.
  6. 제5항에 있어서,
    상기 블록 지정부는,
    상기 메모리 관리 장치에 대한 워크로드의 급격한 변화 및 측정 오차를 고려하여 워크로드의 변화에 대한 안정성을 제공하도록, 상기 융합 그룹 내의 블록 수 또는 페이지 수의 최적 값에 마진(margin) δ를 더한 안전 값을 계산한 후, 상기 안전 값에 도달하기 위해 점진적으로 융합 해제연산 또는 융합 연산을 적용하는,
    메모리 관리 장치.
  7. 제6항에 있어서,
    상기 블록 지정부는,
    융합 그룹의 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 도출함에 있어 표준 워크로드로부터 도출한 참조 그래프를 이용하고, 실제 측정된 값과 참조 그래프와 차이를 측정하고, 보정 데이터를 획득하며, 이러한 보정 데이터를 이용하여 가비지 콜렉션 대상 블록의 이용율을 도출하는,
    메모리 관리 장치.
  8. 제1항에 있어서,
    상기 블록 지정부는,
    상기 메모리 관리 장치에 연관되는 컴퓨팅 시스템의 시스템 유휴 시간에 미리 융합 해제 연산을 수행하여 복수 개의 빈 블록을 만드는,
    메모리 관리 장치.
  9. 비휘발성 메모리에 포함되는 복수의 블록들을 상기 복수의 블록들 각각에 대한 접근 연산의 지역성에 기초하여 순차 그룹 또는 융합 그룹으로 구분하는 단계;
    상기 순차 그룹 또는 융합 그룹에 포함되는 블록에 소속된 데이터에 대해 TRIM 명령이 도착한 경우, 상기 TRIM 명령에 연관된 페이지를 무효화 하는 단계; 및
    상기 무효화를 반영하여, 상기 순차 그룹에는 블록 사상 기법에 의해, 상기 융합 그룹에 는 페이지 사상 기법에 의해, 데이터 섹터를 저장하는 단계
    를 포함하는 메모리 관리 방법.
  10. 제9항에 있어서,
    상기 TRIM 명령으로 인하여 순차 블록의 페이지 일부 또는 전부가 무효화 되어, 순차 블록의 이용율이 임계치 이하인 경우 상기 순차 블록의 적어도 일부를 상기 융합 그룹으로 이동시키는 단계
    를 더 포함하는, 메모리 관리 방법.
  11. 제9항에 있어서,
    상기 TRIM 명령으로 무효화된 페이지를 고려하여, 상기 융합 그룹의 이용율을 결정하고, 상기 융합 그룹의 이용율, 가비지 콜렉션 비용, 융합 해제 연산의 평균 비용, 및 상기 융합 그룹과 상기 순차 그룹에 대한 접근 연산의 비율을 이용하여 상기 메모리 관리 장치의 평균 페이지 쓰기 비용을 계산하는 단계
    를 더 포함하는, 메모리 관리 방법.
  12. 제11항에 있어서,
    상기 계산된 메모리 관리 장치의 평균 페이지 쓰기 비용을 바탕으로 상기 융합 그룹 내의 블록의 수 또는 유효 페이지 수의 최적 값을 결정하는 단계; 및
    상기 융합 그룹 내의 블록 수 또는 상기 유효 페이지 수가 상기 최적 값에 도달되도록 점진적으로 융합 해제 연산 또는 융합 연산을 수행하는 단계
    를 더 포함하는, 메모리 관리 방법.
  13. 제12항에 있어서,
    상기 최적 값을 결정하는 단계는, 상기 메모리 관리 장치에 대한 워크로드의 급격한 변화 및 측정 오차를 고려하여 워크로드의 변화에 대한 안정성을 제공하도록, 상기 융합 그룹 내의 블록 수 또는 페이지 수의 최적 값에 마진(margin) δ를 더한 안전 값을 계산하고,
    상기 점진적으로 융합 해제 연산 또는 융합 연산을 수행하는 단계는, 상기 안전 값에 도달하기 위해 점진적으로 융합 해제연산 또는 융합 연산을 적용하는,
    메모리 관리 방법.
  14. 제13항에 있어서,
    융합 그룹의 이용율로부터 가비지 콜렉션 대상 블록의 이용율을 도출하는 경우, 표준 워크로드로부터 도출한 참조 그래프를 이용하고, 실제 측정된 값과 참조 그래프와 차이를 측정하고, 보정 데이터를 획득하며, 이러한 보정 데이터를 이용하여 가비지 콜렉션 대상 블록의 이용율을 도출하는, 메모리 관리 방법.
  15. 제9항에 있어서,
    상기 메모리 관리 방법을 사용하는 컴퓨팅 시스템의 시스템 유휴 시간에 미리 융합 해제 연산을 수행하여 복수 개의 빈 블록을 만드는 단계
    를 더 포함하는, 메모리 관리 방법.
  16. 제9항 내지 제15항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020100135998A 2010-12-27 2010-12-27 Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치 KR101157763B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100135998A KR101157763B1 (ko) 2010-12-27 2010-12-27 Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100135998A KR101157763B1 (ko) 2010-12-27 2010-12-27 Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR101157763B1 true KR101157763B1 (ko) 2012-06-25

Family

ID=46689128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100135998A KR101157763B1 (ko) 2010-12-27 2010-12-27 Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101157763B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019226205A1 (en) * 2018-05-22 2019-11-28 Western Digital Technologies, Inc. Multiple sets of trim parameters
US11249897B2 (en) 2019-08-28 2022-02-15 SK Hynix Inc. Data storage device and operating method thereof

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090053901A (ko) * 2006-08-04 2009-05-28 쌘디스크 코포레이션 페이징된 가비지 콜렉션
KR20090107098A (ko) * 2008-04-08 2009-10-13 재단법인서울대학교산학협력재단 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20100037319A (ko) * 2008-10-01 2010-04-09 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
KR100977709B1 (ko) 2008-08-20 2010-08-24 주식회사 셀픽 플래시메모리 저장장치 및 그에 따른 관리 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090053901A (ko) * 2006-08-04 2009-05-28 쌘디스크 코포레이션 페이징된 가비지 콜렉션
KR20090107098A (ko) * 2008-04-08 2009-10-13 재단법인서울대학교산학협력재단 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR100977709B1 (ko) 2008-08-20 2010-08-24 주식회사 셀픽 플래시메모리 저장장치 및 그에 따른 관리 방법
KR20100037319A (ko) * 2008-10-01 2010-04-09 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019226205A1 (en) * 2018-05-22 2019-11-28 Western Digital Technologies, Inc. Multiple sets of trim parameters
US10705758B2 (en) 2018-05-22 2020-07-07 Western Digital Technologies, Inc. Multiple sets of trim parameters
US11416175B2 (en) 2018-05-22 2022-08-16 Western Digital Technologies, Inc. Multiple sets of trim parameters
US11907583B2 (en) 2018-05-22 2024-02-20 Western Digital Technologies, Inc. Multiple sets of trim parameters
US11249897B2 (en) 2019-08-28 2022-02-15 SK Hynix Inc. Data storage device and operating method thereof

Similar Documents

Publication Publication Date Title
KR100965051B1 (ko) 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
US12019872B2 (en) Storage device that writes data from a host during garbage collection
US10713161B2 (en) Memory system and method for controlling nonvolatile memory
US10789162B2 (en) Memory system and method for controlling nonvolatile memory
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
US11355197B2 (en) Memory system with nonvolatile cache and control method thereof
KR101553532B1 (ko) 스토리지 장치
US20150127889A1 (en) Nonvolatile memory system
JP2020529679A (ja) Ssdの寿命の伸長
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
WO2017022082A1 (ja) フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム
US11972143B2 (en) Techniques for balancing write commands on solid state storage devices (SSDs)
KR101456370B1 (ko) 스토리지 관리 방법 및 장치
KR101157763B1 (ko) Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치
JP6721765B2 (ja) メモリシステムおよび制御方法
JP6666405B2 (ja) メモリシステムおよび制御方法
JP6552701B2 (ja) メモリシステムおよび制御方法

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
FPAY Annual fee payment

Payment date: 20150611

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160503

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 7