KR101289931B1 - 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 - Google Patents

다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 Download PDF

Info

Publication number
KR101289931B1
KR101289931B1 KR1020110096302A KR20110096302A KR101289931B1 KR 101289931 B1 KR101289931 B1 KR 101289931B1 KR 1020110096302 A KR1020110096302 A KR 1020110096302A KR 20110096302 A KR20110096302 A KR 20110096302A KR 101289931 B1 KR101289931 B1 KR 101289931B1
Authority
KR
South Korea
Prior art keywords
mapping
size
storage device
block
address
Prior art date
Application number
KR1020110096302A
Other languages
English (en)
Other versions
KR20130032603A (ko
Inventor
강수용
원유집
차재혁
박성민
윤성로
최종무
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020110096302A priority Critical patent/KR101289931B1/ko
Priority to PCT/KR2012/006958 priority patent/WO2013042880A2/ko
Priority to US14/346,448 priority patent/US9298384B2/en
Publication of KR20130032603A publication Critical patent/KR20130032603A/ko
Application granted granted Critical
Publication of KR101289931B1 publication Critical patent/KR101289931B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치가 제공된다. 저장 장치는, 호스트 시스템이 요청한 데이터의 크기에 기반하여 호스트 시스템이 사용하는 블록의 크기를 판별하고, 판별된 블록의 크기를 사상의 단위로 사용한다. 또한, 저장 장치는 논리적 주소 공간을 하나 이상의 영역들로 구획하고, 구획된 영역들마다 서로 상이한 사상의 최소 단위를 사용하여 주소를 사상한다.

Description

다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치{METHOD AND APPARATUS FOR STORING DATA IN FLASH MEMORY USING ADDRESS MAPPING WITH VARIOUS BLOCK SIZES}
아래의 실시예들은 플래시 메모리를 사용하여 데이터를 저장하기 위한 방법 및 장치에 관한 것이다.
다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치가 개시된다.
저장 장치(storage)는 호스트(host)와 연결되어, 호스트의 요청에 따라 데이터에 대한 접근 동작을 수행한다. 예컨대, 저장 장치는 호스트의 읽기 요청에 따라 저장 장치 내에 저장된 데이터를 읽어 호스트에게 제공한다. 또한, 저장 장치는 호스트의 쓰기 요청에 따라 호스트가 제공한 데이터를 저장 장치 내에 저장한다. 저장 장치는 데이터를 저장하기 위해 종류에 따라 다양한 매체를 사용한다. 솔리드 스테이트 디스크(Solid State Disk; SSD)와 같은 플래시 메모리 저장 장치는 플래시 메모리를 사용하여 데이터를 저장하는 장치이다.
플래시 메모리는 블록이라는 비교적 큰 단위로 데이터를 소거하며, 페이지라는 작은 단위로 데이터를 읽거나 쓴다. 또한, 플래시 메모리에는, 블록마다 소거 횟수에 한계에 있는 것과 같이, 다양한 제약이 존재한다.
플래시 메모리 저장 장치 내의 플래시 변환 계층(flash transition layer; FTL)은 데이터의 논리적 주소를 물리적 주소로 변환하는 사상(mapping) 기능을 제공한다. 데이터의 논리적 주소는 호스트가 읽기 또는 쓰기 등을 요청하는 데이터를 특정하기 위해 사용하는 주소이다. 데이터의 논리적 주소는 섹터(sector) 번호일 수 있다. 데이터의 물리적 주소는 저장 장치가 자신의 내부에 저장된 데이터를 특정하기 위해 사용하는 주소이다. 데이터의 물리적 주소는 데이터의 저장 장치 내 위치일 수 있다. FTL은 플래시 메모리 저장 장치가 기존의 다른 저장 장치와 같이 섹터 단위로 데이터를 읽거나 쓸 수 있게 한다.
플래시 메모리 저장 장치는 메모리 주소의 사상에 필요한 자료 구조를 관리한다. 또한, 플래시 메모리 저장 장치는 특정한 크기를 사상의 단위로서 사용한다. 한국공개특허 제10-2010-0117560호(공개일 2010년 11월 03일)에는 서로 상이한 크기를 갖는 페이지들의 집합을 제공하는 플래시 메모리 저장 장치가 개시되어 있다.
본 발명의 일 실시예는 호스트 시스템이 사용하는 블록의 크기를 사상의 단위로 사용하는 플래시 메모리 저장 장치 및 플래시 메모리 저장 장치의 사상 방법을 제공할 수 있다.
본 발명의 일 실시예는 영역마다 서로 상이한 사상의 최소 단위를 사용하는 플래시 메모리 저장 장치 및 플래시 메모리 저장 장치의 사상 방법을 제공할 수 있다.
본 발명의 일 측에 따르면, 저장 장치에 있어서, 데이터를 저장하는 플래시 메모리, 상기 저장 장치와 연결된 호스트 시스템이 사용하는 블록의 크기를 판별하는 블록 크기 판별부 및 상기 판별된 블록 크기를 사상의 단위로서 사용하여 상기 저장 장치의 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 주소 사상 관리부를 포함하는, 저장 장치가 제공된다.
상기 블록 크기 판별부는 상기 호스트 시스템으로부터의 데이터 접근 요청에 기반하여 상기 호스트 시스템이 사용하는 블록의 크기를 판별할 수 있다.
상기 블록 크기 판별부는 상기 데이터 접근 요청이 요청하는 데이터의 크기에 기반하여 상기 호스트 시스템이 사용하는 블록의 크기를 판별할 수 있다.
상기 블록 크기 판별부는 상기 호스트 시스템이 사용하는 블록의 크기는 하나 이상의 데이터 접근 요청들 각각이 요청하는 데이터의 크기들 중 가장 작은 데이터의 크기인 것으로 판별할 수 있다.
상기 블록의 크기는 상기 호스트 시스템의 파일 시스템 또는 상기 호스트 시스템의 데이터베이스 시스템이 사용하는 블록의 크기일 수 있다.
상기 저장 장치의 논리적 주소 공간은 하나 이상의 영역들로 분할될 수 있다.
상기 블록 크기 판별부는 상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 호스트 시스템이 사용하는 블록들의 크기를 상기 하나 이상의 영역들 각각에 대해 판별할 수 있다.
상기 주소 사상 관리부는 상기 블록들의 크기를 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 상기 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상할 수 있다.
본 발명의 다른 일 측에 따르면, 저장 장치에 있어서, 데이터를 저장하는 플래시 메모리, 상기 저장 장치의 논리적 주소 공간을 하나 이상의 영역들로 분할하여 상기 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정하는 블록 크기 판별부 및 상기 결정된 사상의 최소 단위들을 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 주소 사상 관리부를 포함하는, 저장 장치가 제공된다.
상기 주소 사상 관리부는 상기 하나 이상의 영역들을 각각 서로 상이한 고정 크기 단위를 갖는 범위 사상을 사용하여 관리할 수 있다.
상기 고정 크기 단위는 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위일 수 있다.
상기 블록 크기 판별부는 상기 하나 이상의 영역들 각각의 상기 사상의 최소 단위 및 상기 하나 이상의 영역들 각각의 사상 정보를 가리키는 포인터들을 저장하는 영역 테이블을 관리할 수 있다.
상기 주소 사상 관리부는 상기 하나 이상의 영역들 각각의 사상 정보를 저장하는 범위 사상 트리(tree)들을 관리할 수 있다.
상기 범위 사상 트리는 상기 범위 사상 트리에 대응하는 영역에 대한 호스트 시스템의 데이터 쓰기 요청의 패턴에 따라 확장될 수 있다.
상기 범위 사상 트리가 미리 지정된 크기 이상으로 커지면 상기 주소 사상 관리부는 상기 범위 사상 트리의 특정한 부분을 하나 이상의 상기 고정 크기 단위들을 가리키는 고정 크기 단위 테이블로 변환할 수 있다.
상기 플래시 메모리는 상기 영역 테이블, 상기 범위 사상 트리들 및 상기 고정 크기 단위 테이블을 저장할 수 있다.
상기 저장 장치는 상기 영역 테이블, 상기 범위 사상 트리들 및 상기 고정 크기 단위 테이블을 캐슁하는 임의 접근 메모리를 더 포함할 수 있다.
상기 블록 크기 판별부는 상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 호스트 시스템이 사용하는 데이터의 크기에 기반하여 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위를 결정할 수 있다.
상기 사상의 최소 단위는 상기 하나 이상의 영역들 각각에 대하여 상기 호스트 시스템의 파일 시스템 또는 상기 호스트 시스템의 데이터베이스 시스템이 사용하는 블록의 크기일 수 있다.
본 발명의 또 다른 일 측에 따르면, 플래시 메모리를 사용하는 저장 장치가 주소를 사상하는 방법에 있어서, 상기 저장 장치와 연결된 호스트 시스템이 사용하는 블록의 크기를 판별하는 단계 및 판별된 블록 크기를 사상의 단위로서 사용하여 상기 저장 장치의 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 단계를 포함하는, 주소 사상 방법이 제공된다.
상기 주소 사상 방법은, 상기 호스트 시스템으로부터 데이터 접근 요청을 수신하는 단계를 더 포함할 수 있다.
상기 블록의 크기는 상기 데이터 접근 요청이 요청하는 데이터의 크기에 기반하여 판별될 수 있다.
상기 저장 장치의 논리적 주소 공간은 하나 이상의 영역들로 분할될 수 있다.
상기 판별하는 단계는, 상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 호스트 시스템이 사용하는 블록들의 크기를 상기 하나 이상의 영역들 각각에 대해 판별하는 단계를 포함할 수 있다.
상기 사상하는 단계는, 상기 블록들의 크기를 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 상기 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 단계를 포함할 수 있다.
본 발명의 또 다른 일 측에 따르면, 플래시 메모리를 사용하는 저장 장치가 주소를 사상하는 방법에 있어서, 상기 저장 장치의 논리적 주소 공간을 하나 이상의 영역들로 분할하여 상기 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정하는 단계 및 상기 결정된 사상의 최소 단위들을 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 단계를 포함하는, 주소 사상 방법이 제공된다.
상기 하나 이상의 영역은 각각 서로 상이한 고정 크기 단위를 갖는 범위 사상을 사용하여 관리되고, 상기 고정 크기 단위는 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위일 수 있다.
상기 주소 사상 방법은, 상기 하나 이상의 영역들 각각의 상기 사상의 최소 단위 및 상기 하나 이상의 영역들 각각의 사상 정보를 가리키는 포인터들을 저장하는 영역 테이블을 관리하는 단계 및 상기 하나 이상의 영역들 각각의 사상 정보를 저장하는 범위 사상 트리들을 관리하는 단계를 더 포함할 수 있다.
상기 사상의 최소 단위는 상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 호스트 시스템이 사용하는 데이터의 크기에 기반하여 결정될 수 있다.
호스트 시스템이 사용하는 블록의 크기를 사상의 단위로 사용하는 플래시 메모리 저장 장치 및 플래시 메모리 저장 장치의 사상 방법이 제공된다.
영역마다 서로 상이한 사상의 최소 단위를 사용하는 플래시 메모리 저장 장치 및 플래시 메모리 저장 장치의 사상 방법이 제공된다.
호스트 시스템의 파일 시스템 또는 데이터베이스 시스템이 주소 사상을 관리하기 위해 단위와, FTL에서 주소 사상을 위해 관리하는 단위를 일치시킴으로써 성능이 증가된 플래시 메모리 저장 장치가 제공된다.
도 1은 블록 사상 기법을 위해 사용되는 블록 사상 테이블을 도시한다.
도 2는 페이지 사상 기법을 위해 사용되는 페이지 사상 테이블을 도시한다.
도 3은 범위 사상 기법을 위해 사용되는 범위 사상 테이블을 도시한다.
도 4는 본 발명의 일 예에 따른 호스트 및 저장 장치의 동작을 설명한다.
도 5는 본 발명의 일 실시예에 따른 저장 장치의 구조도이다.
도 6은 본 발명의 일 예에 따른 하나 이상의 영역들로 분할된 저장 장치의 논리적 주소 공간을 설명한다.
도 7은 본 발명의 일 예에 따른 하나 이상의 영역들이 서로 상이한 사상의 최소 단위를 사용하는 구성을 설명한다.
도 8은 본 발명의 일 예에 따른 블록 크기 판별부 및 주소 사상 관리부가 사용하는 자료 구조를 설명한다.
도 9는 본 발명의 일 예에 따른 범위 사상 트리를 설명한다.
도 10은 본 발명의 일 예에 따른 범위 사상 트리 및 고정 크기 단위 테이블을 설명한다.
도 11은 본 발명의 일 실시예에 따른 플래시 메모리를 사용하는 저장 장치의 주소 사상 방법의 흐름도이다.
도 12는 본 발명의 일 실시예에 따른 플래시 메모리를 사용하는 저장 장치의 주소 사상 방법의 흐름도이다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
FTL의 사상 기법으로는, 블록 사상 기법, 페이지 사상 기법 및 범위 사상 기법 등이 있다. 하기의 도 1 내지 도 3에서, 블록 사상 기법, 페이지 사상 기법 및 범위 사상 기법이 각각 설명된다.
도 1은 블록 사상 기법을 위해 사용되는 블록 사상 테이블을 도시한다.
블록 사상 기법은 플래시 메모리 전체의 영역에 대해 블록을 사상의 단위로서 사용하는 기법이다. 블록 사상 기법을 사용하는 FTL을 블록 사상 FTL로 칭한다. 블록 사상 FTL은 플래시 메모리의 소거의 단위인 블록을 사상의 단위로서 사용한다.
블록 사상 테이블(100)의 각 엔트리(entry)(즉, 테이블 내의 각 행)는 플래시 메모리의 물리적 블록의 주소를 저장한다. 예컨대, 블록 사상 테이블(100)에서, 인덱스 0에 해당하는 논리적 주소의 데이터(예컨대, 논리적 블록 0)는, 물리적 블록 주소가 2 인 블록(예컨대, 물리적 블록 2) 내에 저장되었다. 여기에서, 인덱스는 논리적 블록의 주소를 나타낼 수 있다.
블록 사상 기법은 플래시 메모리 내의 데이터가 순차적으로 참조될 경우에 적절할 수 있다.
도 2는 페이지 사상 기법을 위해 사용되는 페이지 사상 테이블을 도시한다.
페이지 사상 기법은 플래시 메모리 전체의 영역에 대해 페이지를 사상의 단위로서 사용하는 기법이다. 페이지 사상 기법을 사용하는 FTL을 페이지 사상 FTL로 칭한다. 페이지 사상 FTL은 섹터 단위 또는 플래시 메모리의 읽기 및 쓰기의 단위인 페이지를 사상의 단위로서 사용한다.
페이지 사상 기법은 플래시 메모리를 데이터 영역 및 빈 영역으로 구획한다. 페이지 사상 기법은 영역이 차지하는 공간이 일정한 임계 값에 도달하면(예컨대, 데이터 영역이 차지하는 공간이 일정한 임계 값 이상이 되거나, 빈 영역이 차지하는 공간이 일정한 임계 값 이하가 되면), 쓰레기 수집(garbage collection) 과정을 실행함으로써 빈 영역이 차지하는 공간을 확보한다. 여기에서, 쓰레기 수집 과정이란, 1) 플래시 메모리 내의 사용중인 블록들 중 일부 블록들을 선택하고, 2) 상기 선택된 일부 블록들 내의 유효한 페이지들을 다른 빈 블록으로 이동시킨 후, 3) 상기 선택된 일부 블록들 내의 내용들을 소거함으로써, 상기 선택된 일부 블록들을 빈 블록으로 만드는 과정을 의미한다.
페이지 사상 테이블(200)의 각 엔트리는 플래시 메모리의 물리적 페이지의 주소를 저장한다. 예컨대, 페이지 사상 테이블(100)에서, 인덱스 0에 해당하는 논리적 주소의 데이터(예컨대, 논리적 페이지 0)는, 물리적 페이지 주소가 10 인 페이지(예컨대, 물리적 페이지 10) 내에 저장되었다. 여기에서, 인덱스는 논리적 페이지의 주소를 나타낼 수 있다.
페이지 사상 기법은 플래시 메모리 내의 데이터가 비 순차적으로 참조될 경우에 적합할 수 있다.
전술된 테이블들(100 및 200) 은 전체가 메모리(memory)(특히, 동적 임의 접근 메모리(Dynamic Random Access Memory; DRAM) 및 정적 임의 접근 메모리(Static Random Access Memory; SRAM)휘발성(volatile) 메모리) 내에서 유지될 수 있다. 한편, 테이블들(100 및 200)은 플래시 메모리 내에서 유지되며, 일부만이 메모리 내에 캐슁될 수 있다.
블록 사상 기법은 단독으로는 잘 사용되지 않으며, 블록 사상을 기본으로 사용하고 플래시 메모리의 일부 구간에 대해서는 페이지 사상을 사용하는 혼합 사상 기법이 주로 사용된다.
혼합 사상 기법은, 블록 사상 영역에 대해서는 블록 단위의 맵(map)(예컨대, 블록 사상 테이블)을 유지하며, 페이지 사상 영역에 대해서는 페이지 단위의 맵(예컨대, 페이지 사상 테이블)을 유지한다.
호스트로부터의 데이터 쓰기 요청이 혼합 사상 기법을 사용하는 저장 장치에 전달되면, 저장 장치는 우선 페이지 사상 영역에 데이터를 쓴다. 페이지 사상 영역의 공간이 차게 되면, 저장 장치는 병합 연산을 사용함으로써 다시 페이지 사상 영역 내의 공간을 확보한다. 상기의 병합 연산은 하나 이상의 페이지들을 병합하여 병합된 페이지들의 데이터를 블록 사상 영역 내의 블록에 쓰는 것을 의미할 수 있다. 병합된 페이지들의 데이터가 블록으로 옮겨지면 상기의 병합된 페이지들은 빈 페이지가 된다.
호스트로부터의 데이터 읽기 요청이 혼합 사상 기법을 사용하는 저장 장치에 전달되면, 저장 장치는 우선적으로 페이지 사상 영역을 탐색하여 페이지 사상 영역 내에 요청된 데이터가 존재하는지 여부를 판단한다. 만약, 페이지 사상 영역 내에 요청된 데이터가 존재하는 경우, 저장 장치는 페이지 사상 영역으로부터 요청된 데이터를 읽고, 읽혀진 데이터를 호스트에게 제공한다. 페이지 사상 영역 내에 요청된 데이터가 존재하지 않는 경우, 저장 장치는 블록 사상 영역으로부터 요청된 데이터를 읽고, 읽혀진 데이터를 호스트에게 제공한다.
도 3은 범위 사상 기법을 위해 사용되는 범위 사상 테이블을 도시한다.
블록 사상 기법 및 페이지 사상 기법과는 달리, 범위 사상은 호스트에 의해 전송된 데이터 쓰기 요청이 요청하는 데이터의 크기로 사상의 크기를 결정한다. 블록 사상 및 페이지 사상은 일정한 크기로 사상의 단위를 구성한다. 따라서, 블록 사상 테이블(100)(또는, 페이지 사상 테이블(200))의 각 엔트리(entry)는 플래시 메모리의 물리적 블록(또는, 페이지)의 주소만을 유지하는 반면, 범위 사상 테이블(300)의 각 엔트리는 1) 논리적 페이지의 시작 주소, 2) 크기(또는, 논리적 페이지의 마지막 주소) 및 3) 플래시 메모리의 물리적 페이지의 시작 주소를 유지한다. 예컨대, 범위 사상 테이블(300)에서, 논리적 페이지 100 내지 논리적 페이지 179는, 물리적 페이지 150 내지 물리적 페이지 229로 사상된다. 즉 논리적 페이지 100의 데이터는 물리적 페이지 150 내에 저장되었다.
페이지 사상 기법과 마찬가지로, 범위 사상 기법은 플래시 메모리를 데이터 영역 및 빈 영역으로 구획한다. 범위 사상 기법은 빈 영역의 공간이 일정한 임계 값에 도달하면(예컨대, 빈 영역이 차지하는 공간이 일정한 임계 값 이하가 되면) 쓰레기 수집 과정을 실행한다.
도 4는 본 발명의 일 예에 따른 호스트 및 저장 장치의 동작을 설명한다.
호스트 시스템(host system)(400)은 파일 시스템(file system)(410) 및/또는 데이터베이스(database) 시스템(420)을 사용한다. 파일 시스템(410) 및/또는 데이터베이스 시스템(420)은 자신이 사용하는 논리적 영역(예컨대, 논리적 주소 공간)을 일정한 크기를 갖는 블록들을 사용하여 관리한다. 파일 시스템(410)은 특정한 파티션(partition) 영역을, 예컨대 128KB부터 512KB까지, 사용자가 원하는 블록의 크기로 포맷할 수 있다.
일반적으로, 파일 시스템(410)은 저장 장치에게 데이터 접근을 요청할 때, 포맷(format)된 블록을 요청의 최소 단위로서 사용한다. 즉, 파일 시스템(410)이 저장 장치(450)로부터 데이터를 읽을 경우, 파일 시스템(410)은 상기의 블록의 크기의 n 배수만큼의 크기의 데이터를 저장 장치(450)에게 요청한다. 또한, 파일 시스템(410)이 저장 장치(450)에 데이터를 쓸 경우, 파일 시스템(410)은 상기의 최소 요청 크기의 배수만큼의 크기의 데이터를 저장 장치로 전송한다.
또한, 데이터베이스 시스템(420)은, 파일 시스템(410)이 사용하는 블록의 크기와는 별개로, 특정한 크기의 블록을 데이터 입출력의 최소 단위로서 사용할 수 있다. 즉, 데이터베이스 시스템(420)이 저장 장치(450)로부터 데이터를 읽을 경우, 데이터베이스 시스템(420)은 자신이 사용하는 블록의 크기의 n 배수만큼의 크기의 데이터를 저장 장치(450)에게 요청한다.
FTL이 사용하는 사상의 단위가 호스트 시스템(400)의 파일 시스템(410) 또는 데이터베이스 시스템(420)이 사용하는 블록의 크기와 무관할 경우, 저장 장치에 오버헤드(overhead)가 발생할 수 있다. 예컨대, 호스트가 요청하는 데이터의 최소 단위가 2KB인데, FTL이 사용하는 사상의 단위가 1KB인 경우, 저장 장치(450)는 하나의 요청을 처리하기 위해 적어도 2번의 사상을 통해 내부의 데이터에 2번 접근해야 한다. 또한, 호스트가 요청하는 데이터의 최소 단위가 3KB인데, FTL이 사용하는 사상의 단위가 4KB인 경우, 저장 장치(450)는 하나의 요청을 처리하기 위해 경우에 따라 2번의 사상을 통해 내부의 데이터에 2번 접근해야 한다.
따라서, 저장 장치(450)의 FTL이 사용하는 사상의 단위가, 호스트 시스템(400)의 파일 시스템(410) 또는 데이터베이스 시스템(420)이 사용하는 블록의 크기와 동일할 경우, 저장 장치(450)는 호스트 시스템(400)으로부터의 데이터 접근 요청을 효율적으로 처리할 수 있다.
도 5는 본 발명의 일 실시예에 따른 저장 장치의 구조도이다.
저장 장치(450)는 블록 크기 판별부(510), 주소 사상 관리부(520), RAM(530) 및 플래시 메모리(540)를 포함할 수 있다. 블록 크기 판별부(510) 및 주소 사상 관리부(520)는 FTL(590)의 일부일 수 있다. 즉, 저장 장치(450)의 FTL(590)은 블록 크기 판별부(510) 및 주소 사상 관리부(520)를 포함할 수 있다.
RAM(530) 및 플래시 메모리(540)는 각각 데이터를 저장한다.
블록 크기 판별부(510)는 저장 장치와 연결된 호스트 시스템이 사용하는 블록의 크기를 판별한다.
주소 사상 관리부(520)는 판별된 블록 크기를 사상의 단위로서 사용하여 저장 장치(450)의 논리적 주소를 플래시 메모리(540)의 물리적 주소로 사상한다.
여기에서, 블록 크기 판별부(510)는 호스트 시스템(400)으로부터의 데이터 접근 요청에 기반하여 호스트 시스템(400)이 사용하는 블록의 크기를 판별할 수 있다. 블록 크기 판별부(510)는 데이터 접근 요청이 요청하는 데이터의 크기에 기반하여 호스트 시스템(400)이 사용하는 블록의 크기를 판별할 수 있다. 블록 크기 판별부(510)는 호스트 시스템이 사용하는 블록의 크기는 데이터 접근 요청이 요청하는 데이터의 크기인 것으로 판별할 수 있다.
호스트 시스템(400)은 자신이 사용하는 블록의 크기의 배수만큼의 데이터를 저장 장치(450)에게 요청할 수 있다. 따라서, 블록 크기 판별부(510)는 호스트 시스템(400)으로부터의 하나 이상의 데이터 접근 요청들 각각이 요청하는 데이터의 크기들 중 가장 작은 데이터의 크기에 기반하여 호스트 시스템(400)이 사용하는 블록의 크기를 판별할 수 있다. 블록 크기 판별부(510)는 호스트 시스템(400)이 사용하는 블록의 크기는 하나 이상의 데이터 접근 요청들 각각이 요청하는 데이터의 크기들 중 가장 작은 데이터의 크기인 것으로 판별할 수 있다.
전술된 것처럼, 호스트 시스템(400)이 사용하는 블록의 크기는 호스트 시스템(400)의 파일 시스템(410) 또는 호스트 시스템(400)의 데이터베이스 시스템(420)이 사용하는 블록의 크기일 수 있다.
도 6은 본 발명의 일 예에 따른 하나 이상의 영역들로 분할된 저장 장치의 논리적 주소 공간을 설명한다.
저장 장치(450)의 논리적 주소 공간(600)은 하나 이상의 영역들로 분할될 수 있다. 도 6에서, 저장 장치(450)의 전체 논리적 주소 공간(600)은 n 개의 일정한 크기를 갖는 영역들로 구획되었다.
각 영역은 범위 사상을 사용하여 관리될 수 있다. 각 범위 사상은 고정된 크기 단위를 사용하여 관리될 수 있다. 도 6에서, 제k 영역(650)은 4 개의 범위들(652, 654, 656 및 658)을 사용한다. 제1 범위(652)는 15 개의 고정된 크기 단위만큼의 범위를 가리킨다.
도 7은 본 발명의 일 예에 따른 하나 이상의 영역들이 서로 상이한 사상의 최소 단위를 사용하는 구성을 설명한다.
도 7에서, 제1 영역 내지 제k 영역은 호스트 시스템(400)의 파일 시스템(410) 중 제1 파티션(예컨대, 드라이브(drive) C)이 사용하는 영역들이다. 제k+1 영역 내지 제n 영역은 파일 시스템(410) 중 제2 파티션(예컨대, 드라이브 D)이 사용하는 영역들이다.
파일 시스템(410)은 각 파티션에서 사용하는 블록의 크기는, 파티션 마다 서로 상이할 수 있다. 예컨대, 파일 시스템(410)은 제1 파티션에서 1KB의 블록을 사용할 수 있고, 제2 파티션에서는 4KB의 블록을 사용할 수 있다.
또한, 도 7에서, 제m+1 영역 내지 제n 영역은 호스트 시스템(400)의 데이터베이스 시스템(420)이 사용하는 영역들이다. 데이터베이스 시스템(420)이 사용하는 블록의 크기는 파일 시스템(410)이 사용하는 블록의 크기와 다를 수 있다.
따라서, 하나 이상의 영역들은 각각 서로 상이한 고정된 크기 단위를 사용할 수 있으며, 호스트 시스템(400)이 하나 이상의 영역들 중 특정한 영역에 대응하는 논리적 주소의 데이터를 접근할 때 사용하는 블록의 크기가, 상기의 특정한 영역이 사용하는 고정된 크기 단위가 될 수 있다.
블록 크기 판별부(510)는 저장 장치(450)의 논리적 주소 공간(600)을 하나 이상의 영역들로 분할할 수 있고, 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정할 수 있다. 블록 크기 판별부(510)는 각 영역에 대해 데이터 접근 요청이 요청하는 데이터의 최소 크기를 추적할 수 있다. 블록 크기 판별부(510)는 하나 이상의 영역들 각각에 접근하기 위해 호스트 시스템(400)이 사용하는 데이터의 크기에 기반하여, 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정할 수 있다.
주소 사상 관리부(520)는 결정된 사상의 최소 단위를 사용하여 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 플래시 메모리(540)의 물리적 주소로 사상할 수 있다. 주소 사상 관리부(520)는 하나 이상의 영역들을 각각 서로 상이한 고정 크기 단위를 갖는 범위 사상을 사용하여 관리할 수 있다. 여기서, 고정 크기 단위는 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위일 수 있다.
전술된 것처럼, 하나 이상의 영역들 각각의 블록의 크기는, 상기의 하나 이상의 영역들 각각에 대해여 호스트 시스템(400)의 파일 시스템(410) 또는 호스트 시스템(400)의 데이터베이스 시스템(420)이 사용하는 블록의 크기일 수 있다. 즉, 블록 크기 판별부(510)는 하나 이상의 영역들 각각에 접근하기 위해 호스트 시스템(400)이 사용하는 블록들의 크기를 하나 이상의 영역들 각각에 대해 판별할 수 있다. 주소 사상 관리부(520)는 판별된 블록들의 크기를 사용하여 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 플래시 메모리(540)의 물리적 주소로 사상할 수 있다.
도 8은 본 발명의 일 예에 따른 블록 크기 판별부 및 주소 사상 관리부가 사용하는 자료 구조를 설명한다.
플래시 메모리(540)는 영역 테이블(810), 범위 사상 트리들(820) 및 고정 크기 단위 테이블들(830)을 저장할 수 있다.
RAM(530)은 영역 테이블(810)을 저장할 수 있다. 또한, RAM(530)은 영역 테이블(810)의 전부 또는 일부를 캐슁(caching)할 수 있다. RAM(530)은 범위 사상 트리들(820)의 전부 또는 일부를 캐슁할 수 있다. RAM(530)은 고정 크기 단위 테이블들(810)의 전부 또는 일부를 캐슁할 수 있다. 예컨대, 저장 장치(450)가 부팅될 때, 블록 크기 판별부(510)는 플래시 메모리(540) 내의 일부 영역을 스캔(scan)하여, 영역 테이블(810) 전체를 RAM 내로 캐슁할 수 있다.
영역 테이블(810)은 하나 이상의 영역들 각각의 사상의 최소 단위 크기 및 하나 이상의 영역들 각각의 사상 정보를 가리키는 포인터들을 저장한다. 즉, 영역 테이블(810)은 하나 이상의 엔트리들을 포함할 수 있으며, 각 엔트리는 대응하는 영역의 사상의 최소 단위 및 상기 대응하는 영역의 사상 정보를 가리키는 포인터를 저장할 수 있다. 포인터는 범위 사상 트리의 플래시 메모리(540) 내에서의 물리적 위치를 가리킬 수 있다.
블록 크기 판별부(510)는 영역 테이블을 관리할 수 있다. 블록 크기 판별부(510)는 각 영역에 대해 추적된 데이터 접근 요청이 요청하는 데이터의 최소 크기를 영역 테이블 내에 기록할 수 있다.
주소 사상 관리부(520)는 범위 사상 트리들(820)을 관리할 수 있다. 범위 사상 트리들(820) 및 고정 크기 단위 테이블들(830)에 대해, 도 9 내지 도 10을 참조하여, 하기에서 상세히 설명된다.
도 9는 본 발명의 일 예에 따른 범위 사상 트리를 설명한다.
주소 사상 관리부(520)는 하나의 영역을 위해 하나의 범위 사상 트리(900)를 관리할 수 있다. 즉, 하나의 영역에 대해 하나의 범위 사상 트리(900)가 구성될 수 있다.
범위 사상 트리(900)의 노드(node)는 1) 논리적 페이지의 시작 주소, 2) 크기 및 3) 물리적 페이지의 시작 주소를 포함할 수 있다. 여기에서, 논리적 페이지의 시작 주소(또는, 논리적 페이지의 시작 주소 및 크기)가 범위 사상 트리(900)의 키로서 사용될 수 있고, 크기 및 물리적 페이지의 시작 주소(또는, 물리적 페이지의 시작 주소)가 범위 사상 트리(900)의 데이터로서 사용될 수 있다.
주소 사상 관리부(520)는 이진 트리(binary tree), B-트리, B+-트리 및 AVL-트리 등 다양한 트리 자료 구조를 범위 사상 트리(900)로서 사용할 수 있다.
범위 사상 트리(900)는 범위 사상 트리(900)에 대응하는 영역에 대한, 호스트 시스템(400)의 데이터 쓰기 요청의 패턴에 따라 확장될 수 있다. 예컨대, 범위 사상 트리 내에 4 개의 노드들(910, 920, 930 및 940)이 있을 때, 호스트 시스템(400)이 논리적 페이지의 시작 주소가 420이고, 크기(즉, 블록들의 개수)가 30인 데이터의 쓰기를 요청하면, 저장 장치(450)는 상기의 데이터를 플래시 메모리(540)의 물리적 페이지들 내에 저장한다. 이 때, 데이터는 주소가 180인 물리적 페이지로부터 주소가 209인 물리적 페이지 내에 저장된다. 또한, 주소 사상 관리부(520)는 제5 노드(950)를 범위 사상 트리(900) 내에 추가한다.
도 10은 본 발명의 일 예에 따른 범위 사상 트리 및 고정 크기 단위 테이블을 설명한다.
범위 사상 트리(900)의 최대 크기는 제한될 수 있다. 범위 사상 트리(900)의 최대 크기는 플래시 메모리(540)의 1 개의 페이지 내에 들어갈 수 있는 크기(예컨대 2KB 내지 16KB) 내로 제한될 수 있다. 호스트 시스템(400)에 의해 전송된 데이터 쓰기 요청의 패턴에 따라 범위 사상 트리(900)가 확장되어, 범위 사상 트리(900)의 크기가 미리 지정된 크기(예컨대, 플래시 메모리(540)의 한 페이지) 이상으로 커지면, 주소 사상 관리부(520)는 범위 사상 트리(900)의 특정한 부분(즉, 범위 사상 트리(900)의 특정한 노드 또는 리프(leaf) 노드)을 고정 크기 단위 테이블(1000)로 변환할 수 있다. 범위 사상 트리(900)의 특정한 노드는 노드 대신 고정 크기 단위 테이블(1000)을 가리킬 수 있다.
고정 크기 단위 테이블(1000)의 각 엔트리는, 범위 사상 트리(900)의 노드와 마찬가지로, 1) 논리적 페이지의 시작 주소, 2) 크기 및 3) 물리적 페이지의 시작 주소를 포함할 수 있다.
고정 크기 단위 테이블(1000)의 크기는 영역 테이블(810) 내의 사상의 최소 단위에 기반하여 결정될 수 있다. 즉, 고정 크기 단위 테이블(1000)의 최대 크기는 사상의 최소 단위 내로 제한될 수 있다.
호스트 시스템(400)이 저장 장치(450)에게 연속적인 쓰기를 요청한 경우, 주소 사상에 따른 주소 변환은 대부분 범위 사상 트리(900)의 데이터를 사용함으로써 처리될 수 있다. 호스트 시스템(400)이 저장 장치(450)에게 임의적인 쓰기를 요청한 경우, 영역 테이블(810) 내의 사상의 최소 단위에 따라, 고정 크기 단위 테이블(1000)을 사용함으로써 주소 사상에 따른 주소 변환이 처리될 수 있다.
도 11은 본 발명의 일 실시예에 따른 플래시 메모리를 사용하는 저장 장치의 주소 사상 방법의 흐름도이다.
단계(1110)에서, 저장 장치(450)는 호스트 시스템(400)으로부터 데이터 접근 요청을 수신한다.
단계(1120)에서, 블록 크기 판별부(510)는 저장 장치(450)와 연결된 호스트 시스템(400)이 사용하는 블록의 크기를 판별한다. 여기에서, 블록의 크기는 상기 데이터 접근 요청이 요청하는 데이터의 크기에 기반하여 판별될 수 있다.
단계(1130)에서, 주소 사상 관리부(520)는 판별된 블록 크기를 사상의 단위로서 사용하여 저장 장치(450)의 논리적 주소를 플래시 메모리(540)의 물리적 주소로 사상한다.
저장 장치(450)의 논리적 주소 공간(600)은 하나 이상의 영역들로 분할될 수 있다. 단계(1120)는, 하나 이상의 영역들 각각에 접근하기 위해, 호스트 시스템(400)이 사용하는 블록들의 크기를 하나 이상의 영역들 각각에 대해 판별하는 단계를 포함할 수 있다. 단계(1130)는, 판별된 블록들의 크기를 사용하여 상하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 플래시 메모리(540)의 물리적 주소로 사상하는 단계를 포함할 수 있다.
앞서 도 1 내지 도 10을 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
도 12는 본 발명의 일 실시예에 따른 플래시 메모리를 사용하는 저장 장치의 주소 사상 방법의 흐름도이다.
단계(1210)에서, 블록 크기 판별부(510)는 저장 장치(450)의 논리적 주소 공간(600)을 하나 이상의 영역들로 분할하여, 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정한다. 블록 크기 판별부(510)는 하나 이상의 영역들 각각에 접근하기 위해, 호스트 시스템(400)이 사용하는 데이터의 크기에 기반하여 상기의 사상의 최소 단위를 결정할 수 있다.
블록 크기 판별부(510)는 하나 이상의 영역들을 각각 서로 상이한 고정 크기 단위를 갖는 범위 사상을 사용하여 관리할 수 있다. 여기에서, 고정 크기 단위는 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위일 수 있다.
단계(1220)에서, 블록 크기 판별부(510)는 하나 이상의 영역들 각각의 상기 사상의 최소 단위 및 하나 이상의 영역들 각각의 사상 정보를 가리키는 포인터들을 저장하는 영역 테이블(810)을 관리한다.
단계(1230)에서, 주소 사상 관리부(520)는 하나 이상의 영역들 각각의 사상 정보를 저장하는 범위 사상 트리들(820)을 관리한다.
단계(1230)는, 주소 사상 관리부(520)가 특정한 범위 사상 트리(900)에 대응하는 영역에 대한 호스트 시스템(400)의 데이터 쓰기 요청의 패턴에 따라 상기 특정한 범위 사상 트리(900)를 확장하는 단계를 포함할 수 있다. 단계(1230)는, 범위 사상 트리(900)가 미리 지정된 크기 이상으로 커지면, 주소 사상 관리부(520)가 범위 사상 트리(900)의 특정한 부분을 하나 이상의 상기 고정 크기 단위들을 가리키는 고정 크기 단위 테이블(1000)로 변환하는 단계를 포함할 수 있다.
단계(1240)에서, 주소 사상 관리부(520)는 결정된 사상의 최소 단위들을 사용하여 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 플래시 메모리(540)의 물리적 주소로 사상한다.
앞서 도 1 내지 도 11을 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
450: 저장 장치
510: 블록 크기 판별부
520: 주소 사상 관리부
530: RAM
540: 플래시 메모리

Claims (15)

  1. 저장 장치에 있어서,
    데이터를 저장하는 플래시 메모리;
    상기 저장 장치와 연결된 호스트 시스템이 사용하는 블록의 크기를 판별하는 블록 크기 판별부; 및
    상기 판별된 블록 크기를 사상의 단위로서 사용하여 상기 저장 장치의 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 주소 사상 관리부
    를 포함하는, 저장 장치.
  2. 제1항에 있어서,
    상기 블록 크기 판별부는 상기 호스트 시스템으로부터의 데이터 접근 요청에 기반하여 상기 호스트 시스템이 사용하는 블록의 크기를 판별하는, 저장 장치.
  3. 제1항에 있어서,
    상기 블록 크기 판별부는 상기 데이터 접근 요청이 요청하는 데이터의 크기에 기반하여 상기 호스트 시스템이 사용하는 블록의 크기를 판별하는, 저장 장치.
  4. 제1항에 있어서,
    상기 블록 크기 판별부는 상기 호스트 시스템이 사용하는 블록의 크기는 하나 이상의 데이터 접근 요청들 각각이 요청하는 데이터의 크기들 중 가장 작은 데이터의 크기인 것으로 판별하는, 저장 장치.
  5. 제1항에 있어서,
    상기 블록의 크기는 상기 호스트 시스템의 파일 시스템 또는 상기 호스트 시스템의 데이터베이스 시스템이 사용하는 블록의 크기인, 저장 장치.
  6. 제1항에 있어서,
    상기 저장 장치의 논리적 주소 공간은 하나 이상의 영역들로 분할되며,
    상기 블록 크기 판별부는 상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 호스트 시스템이 사용하는 블록들의 크기를 상기 하나 이상의 영역들 각각에 대해 판별하며,
    상기 주소 사상 관리부는 상기 블록들의 크기를 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 상기 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는, 저장 장치.
  7. 저장 장치에 있어서,
    데이터를 저장하는 플래시 메모리;
    상기 저장 장치의 논리적 주소 공간을 하나 이상의 영역들로 분할하여 상기 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정하는 블록 크기 판별부; 및
    상기 결정된 사상의 최소 단위들을 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 주소 사상 관리부
    를 포함하고,
    상기 블록 크기 판별부는 상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 저장 장치가 연결된 호스트 시스템이 사용하는 데이터의 크기에 기반하여 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위를 결정하는, 저장 장치.
  8. 제7항에 있어서,
    상기 주소 사상 관리부는 상기 하나 이상의 영역들을 각각 서로 상이한 고정 크기 단위를 갖는 범위 사상을 사용하여 관리하고, 상기 고정 크기 단위는 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위인, 저장 장치.
  9. 제7항에 있어서,
    상기 블록 크기 판별부는 상기 하나 이상의 영역들 각각의 상기 사상의 최소 단위 및 상기 하나 이상의 영역들 각각의 사상 정보를 가리키는 포인터들을 저장하는 영역 테이블을 관리하고,
    상기 주소 사상 관리부는 상기 하나 이상의 영역들 각각의 사상 정보를 저장하는 범위 사상 트리들을 관리하는, 저장 장치.
  10. 제9항에 있어서,
    상기 범위 사상 트리는 상기 범위 사상 트리에 대응하는 영역에 대한 상기 호스트 시스템의 데이터 쓰기 요청의 패턴에 따라 확장되고, 상기 범위 사상 트리가 미리 지정된 크기 이상으로 커지면 상기 주소 사상 관리부는 상기 범위 사상 트리의 특정한 부분을 하나 이상의 고정 크기 단위들을 가리키는 고정 크기 단위 테이블로 변환하는, 저장 장치.
  11. 제10항에 있어서,
    상기 플래시 메모리는 상기 영역 테이블, 상기 범위 사상 트리들 및 상기 고정 크기 단위 테이블을 저장하고,
    상기 영역 테이블, 상기 범위 사상 트리들 및 상기 고정 크기 단위 테이블을 캐슁하는 임의 접근 메모리
    를 더 포함하는, 저장 장치.
  12. 삭제
  13. 제7항에 있어서,
    상기 사상의 최소 단위는 상기 하나 이상의 영역들 각각에 대하여 상기 호스트 시스템의 파일 시스템 또는 상기 호스트 시스템의 데이터베이스 시스템이 사용하는 블록의 크기인, 저장 장치.
  14. 플래시 메모리를 사용하는 저장 장치가 주소를 사상하는 방법에 있어서,
    상기 저장 장치와 연결된 호스트 시스템이 사용하는 블록의 크기를 판별하는 단계; 및
    판별된 블록 크기를 사상의 단위로서 사용하여 상기 저장 장치의 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 단계
    를 포함하는, 주소 사상 방법.
  15. 플래시 메모리를 사용하는 저장 장치가 주소를 사상하는 방법에 있어서,
    상기 저장 장치의 논리적 주소 공간을 하나 이상의 영역들로 분할하여 상기 하나 이상의 영역들 각각이 사용하는 사상의 최소 단위를 결정하는 단계; 및
    상기 결정된 사상의 최소 단위들을 사용하여 상기 하나 이상의 영역들 중 특정한 영역에 해당하는 논리적 주소를 상기 플래시 메모리의 물리적 주소로 사상하는 단계
    를 포함하고,
    상기 하나 이상의 영역들 각각에 접근하기 위해, 상기 저장 장치가 연결된 호스트 시스템이 사용하는 데이터의 크기에 기반하여 상기 하나 이상의 영역들 각각이 사용하는 상기 사상의 최소 단위를 결정하는, 주소 사상 방법.
KR1020110096302A 2011-09-23 2011-09-23 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 KR101289931B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110096302A KR101289931B1 (ko) 2011-09-23 2011-09-23 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치
PCT/KR2012/006958 WO2013042880A2 (ko) 2011-09-23 2012-08-31 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치
US14/346,448 US9298384B2 (en) 2011-09-23 2012-08-31 Method and device for storing data in a flash memory using address mapping for supporting various block sizes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110096302A KR101289931B1 (ko) 2011-09-23 2011-09-23 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20130032603A KR20130032603A (ko) 2013-04-02
KR101289931B1 true KR101289931B1 (ko) 2013-07-25

Family

ID=47914986

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110096302A KR101289931B1 (ko) 2011-09-23 2011-09-23 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치

Country Status (3)

Country Link
US (1) US9298384B2 (ko)
KR (1) KR101289931B1 (ko)
WO (1) WO2013042880A2 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US10282286B2 (en) * 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US9495288B2 (en) 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US20140328127A1 (en) * 2013-05-02 2014-11-06 Skymedi Corporation Method of Managing Non-Volatile Memory and Non-Volatile Storage Device Using the Same
JP5978259B2 (ja) * 2013-08-16 2016-08-24 エルエスアイ コーポレーション 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ
CN104866428B (zh) * 2014-02-21 2018-08-31 联想(北京)有限公司 数据存取方法和数据存取装置
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
KR102430198B1 (ko) * 2014-06-12 2022-08-05 삼성전자주식회사 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
KR20160028680A (ko) * 2014-09-04 2016-03-14 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US9836229B2 (en) * 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
KR101626218B1 (ko) * 2014-11-21 2016-06-13 한양대학교 산학협력단 블록 기반의 페이지 매핑 방법
US9652179B2 (en) * 2014-12-01 2017-05-16 Macronix International Co., Ltd. Memory system and a data managing method thereof
KR101676159B1 (ko) * 2015-01-06 2016-11-14 한양대학교 산학협력단 드라이브 컨트롤러를 포함하는 저장 장치 및 상기 드라이브 컨트롤러가 수행하는 주소 사상 방법
WO2016174744A1 (ja) * 2015-04-28 2016-11-03 株式会社日立製作所 不揮発性メモリの制御方法、制御装置、および半導体記憶装置
US10055162B2 (en) * 2015-10-30 2018-08-21 Netapp, Inc. Using a tree-based data structure to map logical addresses to physical addresses on a storage device
US10095413B2 (en) * 2016-01-28 2018-10-09 Toshiba Memory Corporation Memory system with address translation between a logical address and a physical address
KR101805828B1 (ko) * 2016-03-21 2017-12-07 주식회사 디에이아이오 스토리지 시스템의 주소 변환 방법 및 스토리지 시스템의 메모리 장치 컨트롤러
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10671317B2 (en) * 2016-05-25 2020-06-02 Samsung Electronics Co., Ltd. Block cleanup: page reclamation process to reduce garbage collection overhead in dual-programmable NAND flash devices
US10474567B2 (en) 2016-05-25 2019-11-12 Samsung Electronics Co., Ltd. Multi-bit data representation framework to enable dual program operation on solid-state flash devices
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
CN108268380A (zh) * 2016-12-30 2018-07-10 北京兆易创新科技股份有限公司 一种读写数据的方法和装置
US10817472B2 (en) 2017-10-23 2020-10-27 Dropbox, Inc. Storage organization system with associated storage utilization values
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US10970310B2 (en) 2018-08-02 2021-04-06 Netapp Inc. Synchronous replication based cutover engine
CN111949203B (zh) * 2019-05-17 2024-03-01 兆易创新科技集团股份有限公司 一种存储器及其控制方法和控制装置
US11544107B2 (en) * 2020-04-17 2023-01-03 Western Digital Technologies, Inc. Storage system and method for multiprotocol handling
KR20210142477A (ko) * 2020-05-18 2021-11-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN117952082A (zh) * 2024-03-25 2024-04-30 冠骋信息技术(苏州)有限公司 Plc地址解析方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163139A (ja) * 2000-11-22 2002-06-07 Sharp Corp データ管理装置およびそれを用いたデータ管理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1139210A (ja) 1997-07-23 1999-02-12 Casio Comput Co Ltd フラッシュメモリのメモリ制御装置
JPH11250672A (ja) 1998-03-05 1999-09-17 Oki Electric Ind Co Ltd 不揮発性半導体記憶装置
JP4634157B2 (ja) * 2005-01-17 2011-02-16 株式会社日立製作所 ストレージシステム
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US8068365B2 (en) 2008-02-04 2011-11-29 Mosaid Technologies Incorporated Non-volatile memory device having configurable page size
KR101663667B1 (ko) 2009-02-03 2016-10-07 삼성전자주식회사 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
JP5388976B2 (ja) * 2010-09-22 2014-01-15 株式会社東芝 半導体記憶制御装置
US9152552B2 (en) * 2012-09-11 2015-10-06 International Business Machines Corporation Securing sensitive information in a network cloud
KR102430198B1 (ko) * 2014-06-12 2022-08-05 삼성전자주식회사 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163139A (ja) * 2000-11-22 2002-06-07 Sharp Corp データ管理装置およびそれを用いたデータ管理方法

Also Published As

Publication number Publication date
WO2013042880A3 (ko) 2013-05-23
KR20130032603A (ko) 2013-04-02
US20140223089A1 (en) 2014-08-07
WO2013042880A2 (ko) 2013-03-28
US9298384B2 (en) 2016-03-29

Similar Documents

Publication Publication Date Title
KR101289931B1 (ko) 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치
TWI739859B (zh) 操作對多重名稱空間進行管理的儲存裝置的方法
CN107066393B (zh) 提高地址映射表中映射信息密度的方法
JP6205650B2 (ja) 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置
KR102042643B1 (ko) 비휘발성 메모리(nvm)에서 다중 네임스페이스 관리
US10740251B2 (en) Hybrid drive translation layer
KR101453313B1 (ko) 플래시 메모리 기반의 페이지 주소 사상 방법 및 시스템
KR101663667B1 (ko) 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
US20120079167A1 (en) Memory system
US20070094440A1 (en) Enhanced data access in a storage device
JP2019020788A (ja) メモリシステムおよび制御方法
US9524238B2 (en) Systems and methods for managing cache of a data storage device
US8621134B2 (en) Storage tiering with minimal use of DRAM memory for header overhead
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
US20200218465A1 (en) Selective erasure of data in a ssd
JP2015515047A5 (ko)
KR20100132244A (ko) 메모리 시스템 및 메모리 시스템 관리 방법
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
US10055162B2 (en) Using a tree-based data structure to map logical addresses to physical addresses on a storage device
KR20160106240A (ko) 반도체 장치 및 그 동작 방법
US11989423B2 (en) Techniques for zoned namespace (ZNS) storage using multiple zones
WO2023045407A1 (zh) 一种i/o请求处理方法、装置、设备及可读存储介质
JP2007220107A (ja) 不揮発性メモリのマッピング情報管理装置及び方法
KR101936364B1 (ko) 플래시 메모리를 이용한 메모리 관리 시스템 및 메모리 관리 방법

Legal Events

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

Payment date: 20160705

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 7