KR100706808B1 - 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법 - Google Patents

쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법 Download PDF

Info

Publication number
KR100706808B1
KR100706808B1 KR1020060010842A KR20060010842A KR100706808B1 KR 100706808 B1 KR100706808 B1 KR 100706808B1 KR 1020060010842 A KR1020060010842 A KR 1020060010842A KR 20060010842 A KR20060010842 A KR 20060010842A KR 100706808 B1 KR100706808 B1 KR 100706808B1
Authority
KR
South Korea
Prior art keywords
data
block
flash memory
buffer
stored
Prior art date
Application number
KR1020060010842A
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 KR1020060010842A priority Critical patent/KR100706808B1/ko
Priority to US11/668,412 priority patent/US7987315B2/en
Application granted granted Critical
Publication of KR100706808B1 publication Critical patent/KR100706808B1/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
    • DTEXTILES; PAPER
    • D03WEAVING
    • D03DWOVEN FABRICS; METHODS OF WEAVING; LOOMS
    • D03D35/00Smallware looms, i.e. looms for weaving ribbons or other narrow fabrics
    • DTEXTILES; PAPER
    • D03WEAVING
    • D03DWOVEN FABRICS; METHODS OF WEAVING; LOOMS
    • D03D49/00Details or constructional features not specially adapted for looms of a particular type
    • DTEXTILES; PAPER
    • D03WEAVING
    • D03JAUXILIARY WEAVING APPARATUS; WEAVERS' TOOLS; SHUTTLES
    • D03J1/00Auxiliary apparatus combined with or associated with looms
    • D03J1/14Apparatus for threading warp stop-motion droppers, healds, or reeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0674Disk device
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

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)
  • Textile Engineering (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

여기에 제공되는 데이터 저장 장치는 저장 매체와; 상기 저장 매체에 저장될 쓰기 데이터를 저장하도록 구성된 플래시 메모리 버퍼와; 그리고 상기 플래시 메모리 버퍼와 상기 저장 매체 사이의 데이터 전송 동작을 제어하도록 구성된 컨트롤러를 포함하며, 상기 컨트롤러는 상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 작은 지의 여부와 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 작은 지의 여부를 판별하며, 판별 결과에 따라 무효한 데이터가 저장된 상기 플래시 메모리 버퍼의 메모리 블록들에 대한 블록 회수 동작과 상기 플래시 메모리 버퍼의 유효 데이터에 대한 버퍼 플러시 동작을 선택적으로 수행하도록 구성된다.

Description

쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터 저장 장치 및 그것의 블록 회수 방법{DATA STORAGE APPARATUS WITH NON-VOLATILE MEMORY OPERATING AS WRITE BUFFER AND ITS BLOCK RECLAIM METHOD}
도 1은 일반적인 데이터 저장 장치를 갖는 컴퓨터 시스템을 개략적으로 보여주는 블록도이다.
도 2 및 도 3은 도 1에 도시된 데이터 저장 장치의 버퍼 플러시 동작을 설명하기 위한 도면들이다.
도 4는 본 발명에 따른 데이터 저장 장치의 블록 회수 동작을 개략적으로 설명하기 위한 도면이다.
도 5 내지 도 7은 본 발명의 일 실시예에 따른 데이터 저장 장치의 블록 회수 동작을 설명하기 위한 도면들이다.
도 8은 내지 도 10은 본 발명의 다른 실시예에 따른 데이터 저장 장치의 블록 회수 동작을 설명하기 위한 도면들이다.
도 11은 본 발명에 따른 데이터 저장 장치의 블록 회수 동작을 설명하기 위한 흐름도이다.
* 도면의 주요 부분에 대한 부호 설명 *
1 : 데이터 저장 장치 2 : 쓰기 버퍼
3 : 디스크 4 : 스핀들 모터
5 : 헤드미디어 6 : 자성 저장 매체
7 : 호스트 8 : 컨트롤러
본 발명은 데이터 저장 장치에 관한 것으로, 좀 더 구체적으로는 쓰기 버퍼로서 불 휘발성 메모리를 구비한 데이터 저장 장치를 제공하는 것이다.
하드 디스크 드라이브(HDD)와 같은 데이터 저장 장치는, 일반적으로, 쓰기 버퍼를 채용하며, 이 쓰기 버퍼는 반도체 메모리를 이용하여 구현될 것이다. 일반적인 데이터 저장 장치의 쓰기 버퍼는 DRAM과 같은 휘발성 메모리를 이용하여 구현될 수 있다. 쓰기 버퍼의 주된 목적은 호스트로부터의 데이터 쓰기 요청을 재정렬함으로써 디스크 헤드의 탐색 시간을 최소화하기 위한 것이다. DRAM과 같은 휘발성 메모리로 쓰기 버퍼가 구현되는 경우, 쓰기 버퍼에 저장된 데이터는 전원 공급이 중단될 때 소실될 수 있다. 그러한 까닭에, 호스트로부터 전송된 쓰기 데이터는 휘발성 메모리로 구현된 쓰기 버퍼에 비교적 짧은 시간동안만 저장될 것이다.
이러한 단점을 해결하기 위해서, 플래시 메모리와 같은 불 휘발성 메모리가 쓰기 버퍼로서 채용될 수 있다. 이러한 경우, 비교적 장시간 동안 데이터를 버퍼링하는 것이 가능하다. 즉, 전원 공급이 중단되어도 쓰기 버퍼에 기록된 데이터는 소실되지 않는다. 그러한 까닭에, 디스크 등의 저장 매체에 공급되는 전원이 중단된 상태에서 호스트로부터 제공된 쓰기 데이터를 쓰기 버퍼에 기록해 두는 것이 가능하다. 쓰기 버퍼로서 불 휘발성 메모리를 사용하는 경우, HDD의 전력 소모의 대부분을 차지하는 스핀들 모터의 구동에 의하여 야기되는 전력 소모를 줄일 수 있다. 디스크의 헤드미디어를 안전한 위치에 고정시켜 둠으로써 시스템의 이동이나 취급 부주의 등에 의하여 발생하는 충격과 진동 등에 의한 고장을 감소시킬 수 있다. 또한, 디스크 내부의 기계적인 부품의 작동을 줄임으로써 내구성 향상에도 도움이 된다.
도 1은 일반적인 데이터 저장 장치를 갖는 컴퓨터 시스템을 개략적으로 보여주는 블록도이다. 도 1을 참조하면, 일반적인 컴퓨터 시스템은 데이터 저장 장치(1)와 호스트(7)를 포함한다. 호스트(7)는, 예를 들면, 노트북 컴퓨터와 같은 이동 컴퓨팅 장치들을 포함한다. 데이터 저장 장치(1)는 쓰기 버퍼(2), 디스크(3), 디스크(3)를 구동하기 위한 스핀들 모터(4), 그리고 컨트롤러(8)를 포함한다. 디스크(3)는, 도 1에 도시된 바와 같이, 헤드 미디어(5)와 자성 저장 매체(6)를 포함한다. 컨트롤러(8)는 디스크(3)와 쓰기 버퍼(2) 사이의 데이터 전송을 그리고 디스크(3)와 호스트(7) 사이의 데이터 전송을 제어하도록 구성된다.
데이터 저장 장치(1)가 호스트(7)(예를 들면, 노트북 PC)로부터 데이터 쓰기 요청을 받으면, 쓰기 버퍼(2)에 미사용 공간이 존재하는 한 쓰기 데이터는 컨트롤러(3)의 제어하에 불휘발성 메모리로 구성된 쓰기 버퍼(2) 내에 저장된다. 이때, 디스크(3)에 대한 데이터 쓰기 동작은 일어나지 않는다. 그러한 이유로, 디스크(3)를 구동하기 위한 스핀들 모터(4)에 공급되는 전원을 차단할 수 있다. 또한, 충분 한 크기의 쓰기 버퍼(2)를 제공하는 경우, 장시간 동안 스핀들 모터(4)를 세워 둠에 따라 전력 소모를 줄이는 효과를 증대시킬 수 있다. 경우에 따라서 자성 저장 매체(6) 전체에 공급되는 전원을 차단함으로써 전력 소모를 더욱 줄일 수 있다. 또한, 장시간 동안 스핀들 모터(4)를 세워 두고 헤드미디어(5)를 자성 저장 매체(6) 위에 두지 않음으로써, 시스템의 이동이나 취급 부주의 등에 의하여 발생하는 충격, 진동 등에 의한 저장 장치의 고장 발생 확률을 줄일 수 있다.
불 휘발성 메모리인 플래시 메모리를 이용하여 쓰기 버퍼(2)를 구현하는 경우, 쓰기 버퍼(2)는 다음과 같은 방식에 따라 관리될 것이다. 일반적으로, 플래시 메모리 내의 같은 위치에 데이터가 덮어 쓰여지지 않고 데이터가 메모리 블록 내에서 순차적으로 기록되어야 한다는 2가지 동작 특성들 때문에, 호스트(7)로부터 전송된 쓰기 데이터는 요청된 시간 순서에 따라 순차적으로 쓰기 버퍼(2) 내에 기록된다. 예를 들면, 도 2에 도시된 바와 같이, 호스트로부터 데이터 쓰기 동작이 계속해서 요청됨에 따라, 플래시 메모리로 구현되는 쓰기 버퍼(2)의 미사용 공간이 줄어든다. 쓰기 버퍼(2)의 미사용 공간이 부족한 경우, 쓰기 버퍼(2)에 기록된 데이터를 저장 매체로서 디스크(3)로 옮김으로써 쓰기 버퍼(2) 내의 미사용 공간을 재확보하는 것이 가능하다. 이러한 동작을 "버퍼 플러시 동작"이라고 부른다. 버퍼 플러시 동작이 발생하는 경우, 쓰기 버퍼(2)에 기록되어 있던 데이터를 디스크(3)에 저장하기 위하여 디스크(3)에 전원이 공급되어야 한다.
만약 호스트(7)로부터 전달된 쓰기 데이터와 동일한 주소를 갖는 디스크(3) 내의 데이터가 이미 쓰기 버퍼(2)에 기록되어 있으면, 새로 요청된 쓰기 데이터는 쓰기 버퍼(2)에 순차적으로 기록되고, 이미 기록되어 있던 데이터는 낡은 데이터이기 때문에 무효화된다.
무효화된 데이터는 앞서 설명된 플래시 메모리의 동작 특성 즉, 동일한 위치에 데이터가 덮어 쓰어질 수 없다는 동작 특성에 기인하여 발생된다. 즉, 도 3의 (a)에서 보인 바와 같이, 쓰기 버퍼(2)에 이미 기록되어 있는 데이터와 동일한 주소를 갖는 디스크(3)의 데이터에 대한 쓰기 동작이 호스트(7)에 의해서 요청되면, 플래시 메모리의 데이터 덮어쓰기 동작이 수행될 수 없기 때문에, 호스트(7)에서 새롭게 전송된 쓰기 데이터는 쓰기 버퍼(2)에 순차적으로 기록되고, 기존에 기록되어 있던 데이터는 무효화된다(도 3의 (a) 및 (b)에서, 빗금친 부분). 동일 주소에 대한 데이터 쓰기 요청은, 예를 들면, 호스트(7)의 파일시스템, 메타데이터 등에 의하여 빈번하게 발생될 수 있다. 따라서, 시간이 흐름에 따라 동일 주소에 대한 데이터 쓰기 요청이 빈번하게 발생하면, 도 3의 (b)에 도시된 바와 같이, 무효화된 데이터가 플래시 메모리로 구성된 쓰기 버퍼(2) 내의 여러 위치에 다수 존재하게 된다.
상술한 바와 같이, 데이터(무효화된 데이터 및 유효한 데이터를 포함)가 쓰기 버퍼(2) 내의 많은 공간을 차지하고 있는 경우, 쓰기 버퍼(2)의 미사용 공간이 부족해질 것이다. 이러한 경우, 앞서 설명된 버퍼 플러시 동작을 통해 유효한 데이터를 디스크(3)로 옮겨야 한다. 이러한 버퍼 플러시 동작에 따라 미사용 공간을 확보하는 것이 가능하다.
하지만, 버퍼 플러시 동작은, 앞서 언급된 바와 같이, 스핀들 모터(4)를 회 전시키기 위해서 전력 소모를 수반하게 된다. 만약 버퍼 플러시 동작이 빈번하게 수행되면, 데이터 저장 장치(1)로 인한 전력 소모가 증가하게 될 것이다. 따라서, 이동 컴퓨팅 시스템의 전원 공급에 이용되는 배터리의 재충전간 시간이 감소하게 된다. 이는 배터리에 의해서 동작 가능한 시간이 감소함을 그리고 이동성에 따른 충격이나 진동에 대한 데이터 저장 장치의 내구성이 저하됨을 의미한다.
결론적으로, 재충전간 시간을 증가시키고 데이터 저장 장치의 내구성을 증대시키기 위한 쓰기 버퍼의 새로운 관리 기법이 요구되고 있다.
본 발명의 목적은 전력 소모를 줄일 수 있는 데이터 저장 장치 및 그것의 관리 방법을 제공하는 것이다.
본 발명의 다른 목적은 무효화된 영역을 회수하여 재사용할 수 있는 데이터 저장 장치 및 그것의 관리 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 버퍼 플러시 동작을 줄일 수 있는 향상된 성능을 갖는 데이터 저장 장치 및 그것의 관리 방법을 제공하는 것이다.
상술한 제반 목적을 달성하기 위한 본 발명의 특징에 따르면, 데이터 저장 장치는 저장 매체와; 상기 저장 매체에 저장될 쓰기 데이터를 저장하도록 구성된 플래시 메모리 버퍼와; 그리고 상기 플래시 메모리 버퍼와 상기 저장 매체 사이의 데이터 전송 동작을 제어하도록 구성된 컨트롤러를 포함하며, 상기 컨트롤러는 상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 작은 지의 여부와 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 작은 지의 여부를 판별하며, 판별 결과에 따라 무효한 데이터가 저장된 상기 플래시 메모리 버퍼의 메모리 블록들에 대한 블록 회수 동작과 상기 플래시 메모리 버퍼의 유효 데이터에 대한 버퍼 플러시 동작을 선택적으로 수행하도록 구성된다.
이 실시예에 있어서, 상기 저장 매체는 자성 저장 매체를 포함한다.
이 실시예에 있어서, 상기 무효 데이터가 저장된 메모리 블록들이 회수되는 동안 외부로부터 데이터 전송 동작이 요청될 때, 상기 컨트롤러는 상기 요청된 데이터 전송 동작이 수행되도록 상기 블록 회수 동작을 중지한다.
이 실시예에 있어서, 상기 컨트롤러는 외부로부터 데이터 전송 동작이 일정 시간 동안 요청되지 않을 때 상기 중지된 블록 회수 동작을 재개한다.
이 실시예에 있어서, 상기 플래시 메모리 버퍼의 미사용 공간이 상기 제 1 기준값보다 작고 상기 플래시 메모리 버퍼의 유효 데이터 비율이 상기 제 2 기준값보다 적을 때, 상기 컨트롤러는 상기 무효 데이터가 저장된 메모리 블록들에 대한 상기 블록 회수 동작을 개시한다.
이 실시예에 있어서, 상기 플래시 메모리 버퍼의 미사용 공간이 상기 제 1 기준값보다 작고 상기 플래시 메모리 버퍼의 유효 데이터 비율이 상기 제 2 기준값보다 클을 때, 상기 컨트롤러는 상기 플래시 버퍼 메모리에 저장된 유효 데이터가 상기 저장 매체로 옮겨지도록 상기 버퍼 플러시 동작을 수행한다.
이 실시예에 있어서, 상기 플래시 메모리 버퍼가 물리적인 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 베이스 포인터를 데이터 쓰기 방향과 반대로 적어도 하나의 메모리 블록만큼 이동하고 이전의 베이스 포인터에 의해서 지정된 메모리 블록의 데이터를 현재의 베이스 포인터에 의해서 지정된 메모리 블록으로 복사함으로써 회수되어 재사용된다.
이 실시예에 있어서, 상기 무효 데이터가 저장된 메모리 블록들을 회수하기 위한 상기 블록 회수 동작은 액티브 페이지 리스트 테이블에 저장된 유효 데이터의 시작 어드레스 정보 및 페이지 개수 정보에 의거하여 수행된다.
이 실시예에 있어서, 상기 플래시 메모리 버퍼가 가상 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 플래시 메모리 버퍼의 논리-물리 주소 사상을 제거하고 적어도 하나의 페이지에 유효한 데이터를 저장한 메모리 블록에 대한 논리-물리 주소 사상을 변경함으로써 회수되어 재사용된다.
이 실시예에 있어서, 유효한 데이터와 무효한 데이터가 혼재한 유효 블록이 존재할 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 유효 블록의 유효한 데이터를 빈 메모리 블록으로 복사하여 상기 유효 블록을 무효 블록으로 처리하고, 상기 무효 데이터가 저장된 메모리 블록들에 대한 논리-물리 주소 사상을 제거함으로써 회수되어 재사용된다.
본 발명의 다른 특징에 따르면, 저장 매체와; 상기 저장 매체에 저장될 쓰기 데이터를 저장하기 위한 플래시 메모리 버퍼를 구비한 데이터 저장 장치를 관리하는 방법이 제공되며, 이 방법은 상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 작은 지의 여부를 판별하는 단계와; 상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 적을 때, 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 작은 지의 여부를 판별하는 단계와; 그리고 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 적을 때, 상기 플래시 메모리 버퍼의 무효 블록들에 대한 블록 회수 동작을 수행하는 단계를 포함한다.
이 실시예에 있어서, 이 방법은 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 클 때, 상기 플래시 메모리 버퍼의 유효 데이터에 대한 버퍼 플러시 동작을 수행하는 단계를 더 포함한다.
이 실시예에 있어서, 이 방법은 상기 블록 회수 동작이 수행되는 동안, 외부로부터 데이터 전송 동작이 요청되었는 지의 여부를 판별하는 단계를 더 포함한다.
이 실시예에 있어서, 외부로부터 데이터 전송 동작이 요청된 경우, 상기 블록 회수 동작은 중지된다.
이 실시예에 있어서, 상기 요청된 데이터 전송 동작이 완료되고 일정 시간이 경과한 후, 상기 중지된 블록 회수 동작이 재개된다.
이 실시예에 있어서, 상기 플래시 메모리 버퍼가 물리적인 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 베이스 포인터를 데이터 쓰기 방향과 반대로 적어도 하나의 메모리 블록만큼 이동하고 이전의 베이스 포인터에 의해서 지정된 메모리 블록의 데이터를 현재의 베이스 포인터에 의해서 지정된 메모리 블록으로 복사함으로써 회수되어 재사용된다.
이 실시예에 있어서, 상기 무효 데이터가 저장된 메모리 블록들을 회수하기 위한 상기 블록 회수 동작은 액티브 페이지 리스트 테이블에 저장된 유효 데이터의 시작 어드레스 정보 및 페이지 개수 정보에 의거하여 수행된다.
이 실시예에 있어서, 상기 플래시 메모리 버퍼가 가상 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 플래시 메모리 버퍼의 논리-물리 주소 사상을 제거하고 적어도 하나의 페이지에 유효한 데이터를 저장한 메모리 블록에 대한 논리-물리 주소 사상을 변경함으로써 회수되어 재사용된다.
이 실시예에 있어서, 유효한 데이터와 무효한 데이터가 혼재한 유효 블록이 존재할 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 유효 블록의 유효한 데이터를 빈 메모리 블록으로 복사하여 상기 유효 블록을 무효 블록으로 처리하고, 상기 무효 데이터가 저장된 메모리 블록들에 대한 논리-물리 주소 사상을 제거함으로써 회수되어 재사용된다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다.
참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 쓰기 버퍼로서 사용되는 플래시 메모리가 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
본 발명에 따른 데이터 저장 장치는 플래시 메모리와 같은 불 휘발성 메모리로 구성된 쓰기 버퍼를 포함하며, 무효화된 데이터가 저장된 공간을 회수하여 재사용할 수 있는 블록 회수 기법을 채용한다. 다시 말해서, 데이터가 쓰기 버퍼 내의 많은 공간을 차지함에 따라, 도 4에 도시된 바와 같이, 쓰기 버퍼의 미사용 공간이 감소하게 된다(또는 미사용 공간이 쓰기 버퍼의 전체 저장 공간 중 일정 비율 이하로 낮아진다). 이러한 경우, 본 발명의 데이터 저장 장치에 따르면, 버퍼 플러시 동작을 수행하지 않고 이후 설명될 본 발명의 블록 회수 기법을 통해 미사용 공간을 재확보하는 것이 가능하다. 본 발명의 블록 회수 기법은 버퍼 플러시 동작을 최소화시키며(또는, 버퍼 플러시 동작들 사이의 시간 간격을 증대시키고), 이는 저장 매체(예를 들면, 스핀들 모터)로의 전원 공급이 최소화되게 한다. 결과적으로, 데이터 저장 장치의 전력 소모의 감소 효과를 극대화할 수 있을 뿐만 아니라 기계적 부품의 동작 최소화를 통해 데이터 저장 장치의 내구성을 향상시키는 것이 가능하다.
본 발명에 따른 블록 회수 기법은 물리 주소 사상(physical address mapping)과 가상 주소 사상(virtual address mapping)을 이용하여 쓰기 버퍼를 관리하는 데이터 저장 장치에 적용될 것이다. 하지만, 본 발명에 따른 블록 회수 기법이 여기에 개시된 것에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 먼저, 물리 주소 사상을 이용하는 데이터 저장 장치의 블록 회수 기법이 이하 상세히 설명될 것이다.
물리 주소 사상이란 논리적으로 연속한 플래시 메모리의 메모리 블록들이 물 리적으로도 연속한 메모리 블록들로 할당됨을 의미한다. 이러한 물리 주소 사상이 쓰기 버퍼로서 사용되는 플래시 메모리의 메모리 블록을 관리하는 데 사용되는 경우, 본 발명의 데이터 저장 장치는 쓰기 버퍼의 메모리 블록들을 환형 큐(circular queue)의 형태로 관리함으로써 무효한 데이터가 저장된 메모리 블록들을 회수 및 재사용하도록 구성될 것이다.
예를 들면, 도 5에 도시된 바와 같이, 복수 개의 메모리 블록들(M1-Mn)을 갖는 플래시 메모리가 데이터 저장 장치의 쓰기 버퍼로서 사용된다고 가정하자. 쓰기 버퍼는 특정한 시작 블록 주소를 가지는 환형 큐의 형태로 관리되고, 이 시작 주소를 이하 베이스 포인터(base pointer)라고 칭한다. 도 5에 있어서, 예를 들면, 베이스 포인터는 초기에 메모리 블록(M3)을 지정하도록 설정될 것이다. 이러한 경우, 호스트로부터 제공되는 쓰기 데이터는 베이스 포인터에 의해서 지정되는 메모리 블록(M3)부터 저장될 것이다. 호스트로부터의 데이터 쓰기 요청이 발생함에 따라, 쓰기 데이터는 블록 번호들의 오름차순으로 순차적으로 플래시 메모리 즉, 쓰기 버퍼에 기록될 것이다. 이와 반대로, 쓰기 데이터가 블록 번호들의 내림차순으로 순차적으로 플래시 메모리 즉, 쓰기 버퍼에 기록될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 도 5의 예에 있어서는 호스트로부터 쓰여진 데이터가 메모리 블록(M3)부터 메모리 블록(M(n-3))까지 저장되어 있으며, 쓰기 버퍼의 미사용 공간은 메모리 블록들 (M1, M2, M(n-2), M(n-1), Mn)로 구성된다.
쓰기 버퍼가 앞서 설명된 방식으로 관리될 때 수행되는 블록 회수 기법이 이하 상세히 설명될 것이다.
호스트로부터의 데이터 쓰기 요청이 발생함에 따라, 쓰기 데이터는 블록 번호들의 오름차순으로 순차적으로 플래시 메모리 즉, 쓰기 버퍼에 기록될 것이다. 쓰기 동작이 반복됨에 따라, 도 6의 (a)에 도시된 바와 같이, 쓰기 버퍼 내의 미사용 공간이 부족해질 것이다. 이러한 경우, 먼저, 베이스 포인터가 변경될 것이다.
쓰기 데이터는 블록 번호들의 오름차순으로 순차적으로 플래시 메모리에 저장되는 경우, 베이스 포인터는 데이터 기록 순서의 반대 방향으로 변경될 것이다. 즉, 도 6의 (b)에 도시된 바와 같이, 베이스 포인터는 메모리 블록(M3) 대신에 메모리 블록(M2)을 지정하도록 변경될 것이다. 여기서, 베이스 포인터의 변경이 이에 국한되지 않음은 자명하다. 예를 들면, 베이스 포인터가 데이터 기록 순서의 반대 방향으로 변경될 때 2 또는 그 보다 많은 메모리 블록들만큼 변경될 수 있다. 도 6의 (b)에 도시된 예의 경우, 데이터 기록이 블록 주소가 증가하는 방향으로 일어나므로 베이스 포인터의 이동은 블록 주소가 감소하는 방향으로 일어난다. 이전의 베이스 포인터는 메모리 블록(M3)을 가리키지만, 블록 회수 동작이 개시되면서 베이스 포인터가 메모리 블록(M2)을 가리키게 된다. 베이스 포인터가 메모리 블록(M1)을 가리키고 있는 경우, 블록 회수 동작이 개시되면, 쓰기 버퍼가 환형 큐의 형태로 관리됨에 따라 새로운 베이스 포인터는 메모리 블록(Mn)을 가리키게 된다.
일단 베이스 포인터가 변경되면, 이전의 베이스 포인터에 의해서 지정된 메모리 블록의 유효한 데이터가 새로운(또는 현재의) 베이스 포인터에 의해서 지정된 메모리 블록으로 복사된다. 이때, 기존의 베이스 포인터에 의해서 지정된 메모리 블록의 블록 주소보다 작은 블록 주소를 가지는 데이터 블록은 쓰기 버퍼의 미사용 공간에 해당되기 때문에, 새로운 베이스 포인터에 의해서 지정되는 메모리 블록(M2)에는 유효한 데이터가 저장되어 있지 않을 것이다. 하지만, 플래시 메모리 관리 정책에 따라서 새로운 베이스 포인터에 의해서 지정되는 메모리 블록(M2)에 대한 블록 소거 동작이 수반될 수 있다.
도 6의 (b)에 도시된 바와 같이, 이전의 베이스 포인터에 의해서 지정되는 메모리 블록으로부터 복사된 유효한 데이터는 새로운 베이스 포인터가 가리키고 있는 메모리 블록에서부터 순차적으로 쓰여지게 될 것이다. 하나의 블록이 모두 쓰여지고 나면 데이터 기록 방향과 같은 방향(예를 들면, 블록 주소가 증가하는 방향)으로 새 메모리 블록이 할당된다. 블록 회수 동작시 유효한 데이터만 복사되기 때문에, 데이터 기록 방향과 같은 방향으로 새 메모리 블록을 할당할 때 해당 메모리 블록에 유효한 데이터가 없음이 보장될 것이다. 따라서, 물리 주소 사상을 이용한 쓰기 버퍼 관리 기법에서는 쓰기 버퍼 내의 미사용 공간이 적어도 하나의 메모리 블록을 포함하는 경우 블록 회수 동작을 수행하는 것이 가능하다. 블록 회수 동작이 완료되면, 도 6의 (c)에 도시된 바와 같이, 무효한 데이터가 차지하고 있던 저장 공간이 회수되고, 회수된 저장 공간을 미사용 공간으로 재사용하는 것이 가능하다. 무효 데이터가 저장된 메모리 블록들을 회수하여 재사용함에 따라, 앞서 언급된 바와 같이, 버퍼 플러시 동작을 최소화시키는 것이 가능하다.
무효 데이터가 저장된 메모리 블록을 회수하기 위해서 유효한 데이터를 새로운 메모리 블록으로 복사하는 경우, 모든 데이터 페이지에 대하여 유효/무효 식별을 위한 데이터 필드를 기록하고 매 페이지에 대해 이 식별자를 읽음으로써 유효한 데이터만을 선택적으로 복사할 수도 있다. 하지만, 이러한 방법을 이용할 경우 모든 데이터 페이지에 대한 읽기 동작이 수반되어야 한다. 따라서 모든 데이터 페이지들을 읽지 않고도 유효한 데이터 페이지들을 가려낼 수 있는 방법이 요구된다. 이를 위해서, 본 발명의 데이터 저장 장치에는 액티브 페이지 리스트 테이블(Active Page List table)(이하, "APL 테이블"이라 칭함)을 이용하여 유효한 페이지를 식별하는 방법이 제공된다.
APL 테이블을 보여주는 도 7을 참조하면, APL 테이블에는 플래시 메모리의 주소 순서에 따라 정렬된 APL 정보가 저장된다. APL 정보는 유효 데이터가 저장되는 페이지의 시작 주소(메모리 블록 주소 및 페이지 주소를 포함함)를 나타내는 어드레스 정보(Si)(i=1∼p)와 유효한 데이터가 저장된 페이지들의 개수를 나타내는 페이지 정보(Ni)를 포함한다. APL 테이블은 쓰기 버퍼의 사상 정보로부터 구성될 수 있다. 이러한 APL 테이블을 이용하는 경우, 블록 회수 동작시 APL 정보에 따라 유효한 데이터만을 복사하는 것이 가능하다.
물리 주소 사상과 달리, 쓰기 버퍼를 관리하기 위해서 가상 주소 사상 방식이 데이터 저장 장치에 적용될 수 있다. 이하, 가상 주소 사상을 이용하는 데이터 저장 장치의 블록 회수 기법이 상세히 설명될 것이다.
가상 주소 사상이란 쓰기 버퍼의 논리적 주소 공간에서 데이터 쓰기가 블록 주소가 증가하는 방향(또는 감소하는 방향)으로 이루어지고, 이 논리적 블록들이 플래시 메모리의 임의의 물리적 블록에 사상되는 것을 의미한다. 예를 들면, 논리적 블록의 개수(M)가 물리적 블록의 개수(N) 보다 클 수 있으므로, 도 8에 도시된 바와 같이, 논리적 블록들은 데이터 쓰기에 이용됨에 따라 동적으로 물리적 블록에 할당된다. 즉, 데이터 쓰기에 이용되기 이전에는 논리적 블록에 물리적 블록을 할당하지 않으며, 호스트로부터의 데이터 쓰기 요청이 발생하여 추가의 블록이 요구될 때마다 블록 관리 정책에 따라 물리적 블록이 할당된다.
이러한 가상 주소 사상을 이용한 블록 회수 동작이 이하 상세히 설명될 것이다.
먼저, 도 9에 도시된 바와 같이, 블록 회수 동작은 무효한 데이터만이 저장되어 있는 메모리 블록(이하, "무효 블록"이라 칭함)에 대한 논리-물리 주소 사상을 제거하고, 적어도 하나의 페이지에 유효한 데이터가 저장된 메모리 블록(이하, 유효 블록이라 칭함)에 대한 논리-물리 주소 사상을 변경함으로써 달성될 수 있다. 블록 회수 동작이 수행된 후, 쓰기 버퍼의 가상 주소 공간은 유효 블록들이 서로 연속한 가상 블록 주소를 가지도록 결정될 것이다. 따라서, 데이터의 복사를 거치지 않고 무효 블록들을 회수하는 것이 가능하다. 이후, 호스트로부터의 데이터 쓰기 요청에 의하여 새 데이터 블록이 요구될 때 새로운 논리-물리 주소 사상을 통하여 회수된 메모리 블록들을 재사용할 수 있다. 도 9에서, 플래시 메모리의 물리 블록들(예를 들면, B, C, E)이 무효 블록에 사상되어 있다고 가정하면, 블록 회수 동작이 수행됨에 따라 그러한 물리 블록들(B, C, E)에 대한 논리-물리 주소 사상이 제거될 것이다. 이후, 메모리 블록들(B, C, E)이 재사용될 수 있다. 이하, 앞서 설명된 과정은 가상 블록 주소 컴팩션(Virtual Block Address Compaction)(이하, VBAC라 표기됨) 과정이라 칭한다.
이에 반해서, 유효한 데이터와 무효한 데이터가 혼재하는 메모리 블록 역시 아래와 같은 과정을 통해 회수될 수 있다. 즉, 데이터를 복사하지 않은 상태에서 단지 논리-물리 주소 사상을 변경하는 것과 달리, 유효 블록에 저장된 유효 데이터가 다른 메모리 블록으로 복사되고, 그 유효 블록은 무효 블록으로 처리될 수 있다. 이러한 과정을 통해 추출된 무효 블록들과 본래의 무효 블록들은 도 9에서 설명된 절차(무효 블록들에 대한 논리-물리 주소 사상의 제거)를 통해 회수될 것이다. 이러한 절차는 이후 물리적인 가비지 블록 콜렉션(Physical Garbage Block Collection)(이하, PGBC라 표기됨) 과정이라 칭한다.
상술한 PGBC 과정에서는 서로 다른 메모리 블록들 사이의 데이터 복사가 요구될 것이다. 예를 들면, 도 10의 (a)는 PGBC 과정이 이루어지기 전에 데이터 블록들 내에 유효한 데이터와 무효한 데이터가 혼재하는 예를 보여주고 잇다. 일단 PGBC 과정이 개시되면, 도 10의 (b)에 도시된 바와 같이, 메모리 블록에 저장된 유효한 데이터가 빈 메모리 블록으로 복사된다. 빈 메모리 블록으로의 데이터 복사 완료시, 도 10의 (c)에 도시된 바와 같이, 유효 데이터가 저장되었던 메모리 블록(예를 들면, 1번 메모리 블록)은 무효 블록이 될 것이다. 이후, 앞서 설명된 VBAC 과정을 통해 즉, 무효 블록들에 대한 논리-물리 주소 사상을 제거함으로써 무효 블록들을 회수하는 것이 가능하다. 그렇게 회수된 메모리 블록들은 이후 재사용될 것이다.
PGBC 과정에서 유효한 데이터가 저장된 유효 블록의 페이지들의 개수를 기준으로 (즉, 무효 블록을 추출해내기 위하여 요구되는 데이터 복사의 양을 기준으로) 각 블록에 대한 데이터 복사 비용을 정의하고, 데이터 복사 비용이 작은 블록을 우선적으로 무효 블록 추출의 대상으로 결정함으로써 최소한의 데이터 복사를 통해 무효 블록을 추출할 수 있다. 이와 같은 최적화는 무효 블록의 추출에 소요되는 실행 시간을 최소화한다. 또한, 데이터 복사 비용이 작은 블록으로부터 무효 블록을 추출함에 있어서도, 모든 페이지를 읽어들이지 않고 유효한 데이터 페이지들만을 읽어들이기 위하여 앞서 언급된 APL 테이블을 이용할 수 있다.
물리 주소 사상을 이용하는 경우와 비교하여 볼 때, 가상 주소 사상을 이용한 블록 회수 동작에 요구되는 데이터 복사의 양을 크게 줄일 수 있다는 장점이 있다. 또한, 무효 블록을 추출하는 단계와 논리-물리 주소 사상을 변경하여 무효 블록을 회수하는 단계를 분리함으로써 필요에 따라 부분적으로 블록 회수 동작을 행할 수 있다는 장점이 있다. 그러나, 쓰기 버퍼의 가상 주소 공간으로부터 플래시 메모리의 물리 주소 공간으로의 사상 정보를 유지해야 하는 부담이 증가하며, 특히 빈번한 사상 정보의 변경이 이루어지므로 정전 복구에 대한 많은 고려가 필요하다.
도 11은 본 발명에 따른 데이터 저장 장치의 쓰기 버퍼를 관리하는 방법을 설명하기 위한 흐름도이다. 이하, 본 발명에 따른 데이터 저장 장치의 쓰기 버퍼를 관리하는 방법이 참조 도면들에 의거하여 상세히 설명될 것이다.
일단 블록 회수 절차가 개시되면, 쓰기 버퍼의 미사용 공간이 기준값(K%) 이하 인지의 여부가 판별될 것이다(S100). 앞에서 설명한 바와 같이, 블록 회수 동작은 쓰기 버퍼 내의 미사용 데이터 저장 공간이 부족할 때 미사용 공간을 재확보하기 위하여 이루어진다. 앞에서 설명한 바와 같이 호스트로부터의 데이터 요청에 대 한 응답 시간을 지연시키지 않기 위해서는 블록 회수 동작이 수행되는 동안에도 쓰기 버퍼를 이용하여 호스트로부터의 데이터 쓰기 요청을 처리할 필요가 있다. 그러므로, 블록 회수 동작의 개시 시점에서도 쓰기 버퍼 내에는 여분의 미사용 공간이 필요하다. 즉, 쓰기 버퍼 내에 일정 정도의 미사용 공간이 아직 남아있을 때 블록 회수 동작을 시작하는 것이 시스템 전체의 성능 측면에서 유리하다. 이를 위하여 본 발명에서는 쓰기 버퍼 내의 미사용 공간이 전체 쓰기 버퍼 영역의 특정 비율(K %) 미만일 때 블록 회수 동작이 개시될 것이다.
S100 단계에서 쓰기 버퍼의 미사용 공간이 정해진 공간(K%)보다 많은 경우, 블록 회수 절차는 종료될 것이다. 만약 쓰기 버퍼의 미사용 공간이 정해진 공간(K%) 이하인 것으로 판별되면, 쓰기 버퍼에 저장된 유효 데이터의 비율이 기준값(M%) 이하 인지의 여부가 판별될 것이다(S110). 쓰기 버퍼 내의 미사용 공간이 K % 미만인 경우에 대해서도, 항상 블록 회수 동작을 개시하기 보다는 버퍼 플러시 동작과 블록 회수 동작을 선택적으로 행하는 것이 유리하다. 즉, 쓰기 버퍼 내에서 이미 이용된 데이터 저장 공간 내에서 무효한 데이터가 차지하는 비율이 높은 경우에는 블록 회수를 통하여 무효한 데이터가 차지하고 있던 저장 공간을 재사용하는 것이 유리하다. 하지만, 무효한 데이터가 차지하는 비율이 낮은 경우에는 블록 회수에 요구되는 데이터 복사의 양이 크고, 블록 회수를 통하여 재확보할 수 있는 데이터 저장 공간이 작으므로 플러시 동작을 수행하는 것이 바람직하다.
만약 쓰기 버퍼에 저장된 유효 데이터의 비율이 기준값(M%) 이하인 것으로 판별되면, 버퍼 플러시 동작이 수행될 것이다(S120). 즉, 쓰기 버퍼에 저장된 유효 한 데이터는 컨트롤러의 제어하에 디스크로 옮겨질 것이다. 만약 쓰기 버퍼에 저장된 유효 데이터의 비율이 기준값(M%) 이상인 것으로 판별되면, 블록 회수 동작이 수행될 것이다(S130). 블록 회수 동작은 앞서 설명된 방법들 중 어느 하나를 이용하여 수행될 수 있다. 예를 들면, 데이터 저장 장치의 쓰기 버퍼가 물리 주소 사상을 이용하여 관리되는 경우, 도 5 내지 도 7에서 설명된 방법에 따라 블록 회수 동작이 수행될 수 있다. 이에 반해서, 데이터 저장 장치의 쓰기 버퍼가 가상 주소 사상을 이용하여 관리되는 경우, 도 8 내지 도 10에서 설명된 방법에 따라 블록 회수 동작이 수행될 수 있다. 블록 회수 동작은 상술한 과정들을 통해 무효 블록을 회수하는 단계(S131)와 블록 회수 동작이 완료되었는 지의 여부를 판별하는 단계(S132)를 포함한다.
계속해서 도 11을 참조하면, 블록 회수 동작이 수행되는 동안, 호스트로부터 데이터 전송 동작이 요청되었는 지의 여부가 판별될 것이다(S140). 호스트로부터 데이터 전송 동작이 요청되는 경우, 블록 회수 동작은 일시 중지되고 호스트에 의해서 요청된 데이터 전송 동작이 처리될 것이다(S150). 이와 동시에, 타이머가 리세트될 것이다.
여기서 타이머는 다음과 같은 이유때문에 사용될 것이다. 호스트로부터 데이터 읽기/쓰기 요청이 발생한 경우, 높은 확률로 가까운 미래에 또다시 데이터 읽기/쓰기 요청이 발생함이 이 분야에 잘 알려져 있다. 따라서, 본 발명에서 제안하는 블록 회수 기법에서는, 블록 회수 동작이 이루어지고 있는 동안에 호스트에서 데이터 읽기/쓰기 요청이 발생하면 일단 블록 회수 동작을 현재 상태에서 중지하고 우 선적으로 호스트로부터의 데이터 읽기/쓰기 요청을 처리한다. 호스트로부터의 데이터 요청에 대한 처리를 완료한 이후에는, 미리 정해진 시간 동안 더이상 호스트로부터의 데이터 요청이 발생하지 않을 때까지 기다렸다가 블록 회수 동작을 재개한다. 미리 정해진 시간 동안 호스트로부터 데이터 전송 동작이 요청되는 지를 판별하기 위해서 타이머가 사용될 것이다.
일단 데이터 전송 동작이 처리되면, 타이머가 만료되었는 지의 여부가 판별될 것이다(S160). 타이머가 만료되지 않은 것으로 판별되면, 절차는 S140 단계로 진행한다. 타이머가 만료된 것으로 판별되면, 절차는 블록 회수 동작이 재개되도록 S130 단계로 진행할 것이다. S132 단계에서 블록 회수 동작이 완료된 것으로 판별되면, 블록 회수 절차는 종료될 것이다.
본 발명에 따른 블록 회수 동작은 유효한 데이터를 플래시 메모리 내의 한 메모리 블록에서 다른 블록으로 옮기기 위한 데이터 복사 동작을 필요로 한다. 이러한 데이터 복사 동작은 플래시 메모리의 데이터 읽기, 쓰기, 그리고 블록 소거 동작들을 포함하며, 이러한 동작들을 수행하는 데 시간이 소요될 것이다. 그러한 까닭에, 도 11에서 설명된 바와 같이, 본 발명에 따른 블록 회수 동작 도중에 호스트로부터 데이터 읽기 및 쓰기 동작이 요청되는 경우, 그러한 요청의 응답 시간에 미치는 영향을 최소화하기 위해서는 블록 회수 작업이 백그라운드로 이루어진다. 즉, 블록 회수 동작에는 호스트에 의해서 요청되는 데이터 전송 동작보다 낮은 우선 순위가 부여될 것이다. 결정된 우선순위에 따라 블록 회수 동작 및 데이터 전송 동작을 적절히 스케줄링함으로써 호스트의 데이터 요청에 대한 응답시간의 지연으 로 인한 성능 저하를 최소화시키는 것이 가능하다.
본 발명에 따른 데이터 저장 장치에 있어서, 앞서 설명된 블록 회수 동작은 도 1의 컨트롤러(8)의 제어하에 자동적으로 수행될 것이다. 또한, 앞서 언급된 타이머는 컨트롤러(8) 내에 제공될 것이다. 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
상술한 바와 같이, 무효 데이터가 저장된 메모리 블록들을 회수하여 재사용함으로써 버퍼 플러시 동작을 최소화시키는 것이 가능하다. 버퍼 플러시 동작의 최소화를 통해 데이터 저장 장치의 전력 모소를 줄이는 것이 가능하다. 또한, 버퍼 플러시 동작의 최소화를 통해 데이터 저장 장치의 내구성을 향상시킬 수 있다.

Claims (19)

  1. 저장 매체와;
    상기 저장 매체에 저장될 쓰기 데이터를 저장하도록 구성된 플래시 메모리 버퍼와; 그리고
    상기 플래시 메모리 버퍼와 상기 저장 매체 사이의 데이터 전송 동작을 제어하도록 구성된 컨트롤러를 포함하며,
    상기 컨트롤러는 상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 작은 지의 여부와 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 작은 지의 여부를 판별하며, 판별 결과에 따라 무효한 데이터가 저장된 상기 플래시 메모리 버퍼의 메모리 블록들에 대한 블록 회수 동작과 상기 플래시 메모리 버퍼의 유효 데이터에 대한 버퍼 플러시 동작을 선택적으로 수행하도록 구성된 데이터 저장 장치.
  2. 제 1 항에 있어서,
    상기 저장 매체는 자성 저장 매체를 포함하는 데이터 저장 장치.
  3. 제 1 항에 있어서,
    상기 무효 데이터가 저장된 메모리 블록들이 회수되는 동안 외부로부터 데이터 전송 동작이 요청될 때, 상기 컨트롤러는 상기 요청된 데이터 전송 동작이 수행 되도록 상기 블록 회수 동작을 중지하는 데이터 저장 장치.
  4. 제 3 항에 있어서,
    상기 컨트롤러는 외부로부터 데이터 전송 동작이 일정 시간 동안 요청되지 않을 때 상기 중지된 블록 회수 동작을 재개하는 데이터 저장 장치.
  5. 제 1 항에 있어서,
    상기 플래시 메모리 버퍼의 미사용 공간이 상기 제 1 기준값보다 작고 상기 플래시 메모리 버퍼의 유효 데이터 비율이 상기 제 2 기준값보다 적을 때, 상기 컨트롤러는 상기 무효 데이터가 저장된 메모리 블록들에 대한 상기 블록 회수 동작을 개시하는 데이터 저장 장치.
  6. 제 1 항에 있어서,
    상기 플래시 메모리 버퍼의 미사용 공간이 상기 제 1 기준값보다 작고 상기 플래시 메모리 버퍼의 유효 데이터 비율이 상기 제 2 기준값보다 클을 때, 상기 컨트롤러는 상기 플래시 버퍼 메모리에 저장된 유효 데이터가 상기 저장 매체로 옮겨지도록 상기 버퍼 플러시 동작을 수행하는 데이터 저장 장치.
  7. 제 1 항에 있어서,
    상기 플래시 메모리 버퍼가 물리적인 주소 사상에 따라 관리될 때, 상기 무 효 데이터가 저장된 메모리 블록들은 베이스 포인터를 데이터 쓰기 방향과 반대로 적어도 하나의 메모리 블록만큼 이동하고 이전의 베이스 포인터에 의해서 지정된 메모리 블록의 데이터를 현재의 베이스 포인터에 의해서 지정된 메모리 블록으로 복사함으로써 회수되어 재사용되는 데이터 저장 장치.
  8. 제 7 항에 있어서,
    상기 무효 데이터가 저장된 메모리 블록들을 회수하기 위한 상기 블록 회수 동작은 액티브 페이지 리스트 테이블에 저장된 유효 데이터의 시작 어드레스 정보 및 페이지 개수 정보에 의거하여 수행되는 데이터 저장 장치.
  9. 제 1 항에 있어서,
    상기 플래시 메모리 버퍼가 가상 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 플래시 메모리 버퍼의 논리-물리 주소 사상을 제거하고 적어도 하나의 페이지에 유효한 데이터를 저장한 메모리 블록에 대한 논리-물리 주소 사상을 변경함으로써 회수되어 재사용되는 데이터 저장 장치.
  10. 제 9 항에 있어서,
    유효한 데이터와 무효한 데이터가 혼재한 유효 블록이 존재할 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 유효 블록의 유효한 데이터를 빈 메모리 블록으로 복사하여 상기 유효 블록을 무효 블록으로 처리하고, 상기 무효 데이터가 저장된 메모리 블록들에 대한 논리-물리 주소 사상을 제거함으로써 회수되어 재사용되는 데이터 저장 장치.
  11. 저장 매체와; 상기 저장 매체에 저장될 쓰기 데이터를 저장하기 위한 플래시 메모리 버퍼를 구비한 데이터 저장 장치를 관리하는 방법에 있어서:
    상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 작은 지의 여부를 판별하는 단계와;
    상기 플래시 메모리 버퍼의 미사용 공간이 제 1 기준값보다 적을 때, 상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 작은 지의 여부를 판별하는 단계와; 그리고
    상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 적을 때, 상기 플래시 메모리 버퍼의 무효 블록들에 대한 블록 회수 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 플래시 메모리 버퍼의 유효 데이터 비율이 제 2 기준값보다 클 때, 상기 플래시 메모리 버퍼의 유효 데이터에 대한 버퍼 플러시 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제 11 항에 있어서,
    상기 블록 회수 동작이 수행되는 동안, 외부로부터 데이터 전송 동작이 요청되었는 지의 여부를 판별하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서,
    외부로부터 데이터 전송 동작이 요청된 경우, 상기 블록 회수 동작은 중지되는 것을 특징으로 하는 방법.
  15. 제 14 항에 있어서,
    상기 요청된 데이터 전송 동작이 완료되고 일정 시간이 경과한 후, 상기 중지된 블록 회수 동작이 재개되는 것을 특징으로 하는 방법.
  16. 제 11 항에 있어서,
    상기 플래시 메모리 버퍼가 물리적인 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 베이스 포인터를 데이터 쓰기 방향과 반대로 적어도 하나의 메모리 블록만큼 이동하고 이전의 베이스 포인터에 의해서 지정된 메모리 블록의 데이터를 현재의 베이스 포인터에 의해서 지정된 메모리 블록으로 복사함으로써 회수되어 재사용되는 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서,
    상기 무효 데이터가 저장된 메모리 블록들을 회수하기 위한 상기 블록 회수 동작은 액티브 페이지 리스트 테이블에 저장된 유효 데이터의 시작 어드레스 정보 및 페이지 개수 정보에 의거하여 수행되는 것을 특징으로 하는 방법.
  18. 제 11 항에 있어서,
    상기 플래시 메모리 버퍼가 가상 주소 사상에 따라 관리될 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 플래시 메모리 버퍼의 논리-물리 주소 사상을 제거하고 적어도 하나의 페이지에 유효한 데이터를 저장한 메모리 블록에 대한 논리-물리 주소 사상을 변경함으로써 회수되어 재사용되는 것을 특징으로 하는 방법.
  19. 제 18 항에 있어서,
    유효한 데이터와 무효한 데이터가 혼재한 유효 블록이 존재할 때, 상기 무효 데이터가 저장된 메모리 블록들은 상기 유효 블록의 유효한 데이터를 빈 메모리 블록으로 복사하여 상기 유효 블록을 무효 블록으로 처리하고, 상기 무효 데이터가 저장된 메모리 블록들에 대한 논리-물리 주소 사상을 제거함으로써 회수되어 재사용되는 것을 특징으로 하는 방법.
KR1020060010842A 2006-02-03 2006-02-03 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법 KR100706808B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060010842A KR100706808B1 (ko) 2006-02-03 2006-02-03 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법
US11/668,412 US7987315B2 (en) 2006-02-03 2007-01-29 Data storage apparatus with block reclaim for nonvolatile buffer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060010842A KR100706808B1 (ko) 2006-02-03 2006-02-03 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법

Publications (1)

Publication Number Publication Date
KR100706808B1 true KR100706808B1 (ko) 2007-04-12

Family

ID=38161688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060010842A KR100706808B1 (ko) 2006-02-03 2006-02-03 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법

Country Status (2)

Country Link
US (1) US7987315B2 (ko)
KR (1) KR100706808B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008147752A1 (en) * 2007-05-24 2008-12-04 Sandisk Corporation Managing housekeeping operations in flash memory
US8375158B2 (en) 2008-02-29 2013-02-12 Samsung Electronics Co., Ltd. Memory system and block merge method
US8902649B2 (en) 2011-11-08 2014-12-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and related method of operation
KR20190018321A (ko) 2017-08-14 2019-02-22 성균관대학교산학협력단 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법
KR20200008476A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1936946B1 (en) * 2006-12-22 2019-06-19 Brother Kogyo Kabushiki Kaisha Data processor
KR100882740B1 (ko) * 2007-02-22 2009-02-09 삼성전자주식회사 맵 히스토리 기반의 불휘발성 메모리의 매핑 방법 및 저장장치
US8370562B2 (en) * 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
EP2000913A1 (en) * 2007-06-08 2008-12-10 Axalto SA Method of managing flash memory allocation in an electronic token
US20100180072A1 (en) * 2007-06-22 2010-07-15 Shigekazu Kogita Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
TWI472916B (zh) * 2008-06-02 2015-02-11 A Data Technology Co Ltd 記憶體儲存空間管理方法
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
US7818525B1 (en) * 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US8285918B2 (en) 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US20110208898A1 (en) * 2010-02-23 2011-08-25 Samsung Electronics Co., Ltd. Storage device, computing system, and data management method
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
JP4886887B2 (ja) * 2010-07-23 2012-02-29 株式会社東芝 コマンド管理装置及び同コマンド管理装置を備えた記憶装置
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
JP2012208980A (ja) * 2011-03-30 2012-10-25 Hitachi-Lg Data Storage Inc 光ディスク装置
US8537613B2 (en) * 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
US10877669B1 (en) * 2011-06-30 2020-12-29 Amazon Technologies, Inc. System and method for providing a committed throughput level in a data store
KR101824068B1 (ko) * 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9928177B2 (en) * 2013-08-21 2018-03-27 Lite-On Electronics (Guangzhou) Limited Managing method for cache memory of solid state drive
US9400745B2 (en) * 2013-11-06 2016-07-26 International Business Machines Corporation Physical address management in solid state memory
US9430508B2 (en) 2013-12-30 2016-08-30 Microsoft Technology Licensing, Llc Disk optimized paging for column oriented databases
US9723054B2 (en) 2013-12-30 2017-08-01 Microsoft Technology Licensing, Llc Hierarchical organization for scale-out cluster
US9898398B2 (en) * 2013-12-30 2018-02-20 Microsoft Technology Licensing, Llc Re-use of invalidated data in buffers
US9690491B2 (en) * 2014-12-17 2017-06-27 Sandisk Technologies Llc System and method for managing data in a memory device
CN105893266B (zh) * 2015-01-04 2020-04-28 伊姆西Ip控股有限责任公司 用于重新使用文件系统的存储块的方法和装置
WO2016112957A1 (en) * 2015-01-13 2016-07-21 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for managing defragmentation in file systems
US9436392B1 (en) 2015-02-17 2016-09-06 Nimble Storage, Inc. Access-based eviction of blocks from solid state drive cache memory
CN105278876B (zh) * 2015-09-23 2018-12-14 华为技术有限公司 一种固态硬盘的数据擦除方法及装置
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
KR102625637B1 (ko) * 2016-02-01 2024-01-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN110785734A (zh) * 2018-04-25 2020-02-11 深圳市大疆创新科技有限公司 数据处理方法和装置
KR102578188B1 (ko) * 2018-05-15 2023-09-14 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이의 동작 방법
US10969994B2 (en) * 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
KR20200068259A (ko) * 2018-12-05 2020-06-15 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
KR20210001206A (ko) * 2019-06-27 2021-01-06 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
US11467777B1 (en) * 2020-10-12 2022-10-11 iodyne, LLC Method and system for storing data in portable storage devices
US11954022B2 (en) * 2022-03-02 2024-04-09 International Business Machines Corporation Throttling host writes in a host buffer to a storage device
US20240053921A1 (en) * 2022-08-10 2024-02-15 Micron Technology, Inc. Techniques for storing journaling information
CN115499393B (zh) * 2022-09-02 2024-05-07 深圳市楠菲微电子有限公司 一种基于网络接口芯片的tcp连接报文处理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH1153261A (ja) 1997-08-07 1999-02-26 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JP2003256289A (ja) 2002-02-27 2003-09-10 Microsoft Corp 一様なウェアレベルをフラッシュメモリデバイスで達成するためのシステムおよび方法
US6725342B1 (en) 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US6785767B2 (en) 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259292A (ja) 1993-03-08 1994-09-16 Nippon Telegr & Teleph Corp <Ntt> 外部記憶装置のオンラインガーベッジコレクション方法
US5542066A (en) * 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5860124A (en) 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US6182127B1 (en) * 1997-02-12 2001-01-30 Digital Paper, Llc Network image view server using efficent client-server tilting and caching architecture
JPH1153235A (ja) 1997-08-08 1999-02-26 Toshiba Corp ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム
US6226728B1 (en) * 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
GB9906629D0 (en) 1999-03-23 1999-05-19 Koninkl Philips Electronics Nv Memory reclamation method
JP2003122630A (ja) 2001-10-12 2003-04-25 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP3702231B2 (ja) 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US7702873B2 (en) * 2005-04-25 2010-04-20 Network Appliance, Inc. Managing common storage by allowing delayed allocation of storage after reclaiming reclaimable space in a logical volume

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JPH1153261A (ja) 1997-08-07 1999-02-26 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6725342B1 (en) 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US6785767B2 (en) 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium
JP2003256289A (ja) 2002-02-27 2003-09-10 Microsoft Corp 一様なウェアレベルをフラッシュメモリデバイスで達成するためのシステムおよび方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008147752A1 (en) * 2007-05-24 2008-12-04 Sandisk Corporation Managing housekeeping operations in flash memory
US8375158B2 (en) 2008-02-29 2013-02-12 Samsung Electronics Co., Ltd. Memory system and block merge method
US8631192B2 (en) 2008-02-29 2014-01-14 Samsung Electronics Co., Ltd. Memory system and block merge method
US8902649B2 (en) 2011-11-08 2014-12-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and related method of operation
US9025376B2 (en) 2011-11-08 2015-05-05 Samsung Electronics Co., Ltd. Nonvolatile memory device and related method of operation
KR20190018321A (ko) 2017-08-14 2019-02-22 성균관대학교산학협력단 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법
KR20200008476A (ko) * 2018-07-16 2020-01-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102495539B1 (ko) 2018-07-16 2023-02-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Also Published As

Publication number Publication date
US20070186065A1 (en) 2007-08-09
US7987315B2 (en) 2011-07-26

Similar Documents

Publication Publication Date Title
KR100706808B1 (ko) 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법
US5860124A (en) Method for performing a continuous over-write of a file in nonvolatile memory
US10216639B2 (en) Identification of blocks to be retained in a cache based on temperature
US6571326B2 (en) Space allocation for data in a nonvolatile memory
US8327076B2 (en) Systems and methods of tiered caching
US7774540B2 (en) Storage system and method for opportunistic write-verify
US8838875B2 (en) Systems, methods and computer program products for operating a data processing system in which a file delete command is sent to an external storage device for invalidating data thereon
TWI394164B (zh) 在快閃記憶體系統中可中斷的快取清空
KR100725410B1 (ko) 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US9690694B2 (en) Apparatus, system, and method for an address translation layer
KR101702201B1 (ko) 솔리드 스테이트 드라이브(ssd)에 대한 최적화된 컨텍스트 드롭
KR100684942B1 (ko) 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
US7447836B2 (en) Disk drive storage defragmentation system
US7536500B2 (en) Header blocks for flash memory writes
KR100926865B1 (ko) 데이터 기억 장치, 그 데이터 재배치 방법, 프로그램을기록한 기록 매체
US20080025706A1 (en) Information recording apparatus and control method thereof
JP2009181314A (ja) 情報記録装置およびその制御方法
US20040268070A1 (en) Method and apparatus for backing up data in virtual storage medium
CN110674056B (zh) 一种垃圾回收方法及装置
KR20090012821A (ko) 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
KR20000022716A (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치
KR20030061948A (ko) 정보 저장 장치 및 그를 이용한 파일 관리 방법
JP2005149620A (ja) 記憶装置およびファイルシステム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment
FPAY Annual fee payment
FPAY Annual fee payment

Payment date: 20190329

Year of fee payment: 13