KR101737443B1 - 고체-상태 매체들을 포함하는 디바이스들을 위한 파일 관리 시스템 - Google Patents

고체-상태 매체들을 포함하는 디바이스들을 위한 파일 관리 시스템 Download PDF

Info

Publication number
KR101737443B1
KR101737443B1 KR1020127014512A KR20127014512A KR101737443B1 KR 101737443 B1 KR101737443 B1 KR 101737443B1 KR 1020127014512 A KR1020127014512 A KR 1020127014512A KR 20127014512 A KR20127014512 A KR 20127014512A KR 101737443 B1 KR101737443 B1 KR 101737443B1
Authority
KR
South Korea
Prior art keywords
logical block
block address
data
entry
entries
Prior art date
Application number
KR1020127014512A
Other languages
English (en)
Other versions
KR20120115243A (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 시게이트 테크놀로지 엘엘씨
Publication of KR20120115243A publication Critical patent/KR20120115243A/ko
Application granted granted Critical
Publication of KR101737443B1 publication Critical patent/KR101737443B1/ko

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0643Management of files
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM

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)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

파일 관리 시스템을 포함하는 디바이스는 복수의 제 1 엔트리들 및 제 2 엔트리들을 포함한다. 제 1 엔트리는 디바이스의 데이터 블록들에 저장된 데이터 파일들 상에서 데이터 검색 동작들을 위한 논리적 블록 어드레스 맵핑표로서 기능하도록 구성되고 제 2 엔트리들은 복수의 데이터 블록들을 별개의 논리적 그룹들로 구성하도록 구성된다.

Description

고체-상태 매체들을 포함하는 디바이스들을 위한 파일 관리 시스템{FILE MANAGEMENT SYSTEM FOR DEVICES CONTAINING SOLID-STATE MEDIA}
본 개시는 고체-상태 매체들을 포함하는 데이터 저장 디바이스들과 같은 디바이스들에 관한 것이다. 특히, 본 개시는 고체-상태 매체들을 갖는 데이터 저장 디바이스들의 데이터 파일들의 관리에 관한 것이다.
고체-상태 매체들을 포함하는 데이터 저장 디바이스는 데이터의 저장을 위해 점점 인기를 끌고 있다. 이는 주로 그들의 견고한 아키텍처, 더 낮은 전력 소비, 및 간결한 설계들에 기인한다. 예를 들어, 플래시-기반 저장 디바이스들의 공통적인 이용은 사용자들에게 편리한 방식으로 데이터를 판독 및 기록할 수 있는 빠른-액세스 플래시 드라이브들을 제공하기 위해 범용 직렬 버스(USB) 인터페이스들과 같은 컴퓨터 인터페이스들과 조합된다. 이러한 드라이브들은 통상적으로 상이한 컴퓨터 시스템들 사이에서 데이터를 저장 및 전달하는데 이상적인 실질적인 저장 용량들을 갖는다. 또한, 다수의 산업들은 다양한 컴퓨터 시스템들의 하드 디스크들을 교체하거나 보충하기 위해 더 크고 더 많은 영구 고체-상태 저장 디바이스들에 초점을 맞추고 있다. 이 고체-상태 드라이브들은 바람직하게는 큰 저장 용량들을 가지며 운영 체제들, 애플리케이션들, 문서들 및 다른 데이터 파일들을 보유하기 위한 컴퓨터 시스템들의 주 드라이브들로서 기능할 수 있다.
고체-상태 매체들은 또한 하드 디스크 저장 디바이스들에 대한 비-휘발성 캐시들로서 이용된다. 이러한 하이브리드 드라이브들에서, 논리 블록 어드레스(LBA)들은 통상적으로 1 대 1 방식으로 하드 디스크의 트랙 섹터들에 맵핑된다. 이 1 대 1 어레인지먼트는 하드 디스크들의 트랙 섹터들이 새로운 데이터로 직접 덮어쓰기될 수 있다. 그러나 비교해 보면, 고체-상태 매체들의 데이터 블록들은 주어진 데이터 블록들을 먼저 소거함 없이 재기록될 수 있다. 그럼으로써 고체-상태 매체들에 기록된 데이터는 상이한 데이터 블록들 사이에서 산재될 수 있으며, 이는 실질적으로 파일 검색 시간들을 증가시킬 수 있다. 이에 따라, 시스템이 빠른 데이터 파일 검색을 제공하고 관리 시스템을 유지하는데 요구되는 메모리 대역폭을 또한 감소시키는 고체-상태 매체들에 저장된 데이터 파일들을 관리할 필요가 있다.
본 개시의 양상은 복수의 데이터 블록들을 갖는 적어도 하나의 비휘발성 저장 매체 및 적어도 하나의 비휘발성 저장 매체 상에 저장된 파일 관리 시스템을 포함하는 디바이스에 관한 것이다. 파일 관리 시스템은 데이터 블록들에 저장된 데이터 파일들과 연관시키도록 구성되는 복수의 논리적 블록 어드레스 익스텐트 엔트리들 및 데이터 블록들과 연관시키도록 구성되는 복수의 기술자 엔트리들을 포함한다. 디바이스는 또한 파일 관리 시스템에 적어도 부분적으로 기초하여 적어도 하나의 비휘발성 저장 매체와의 동작들을 관리하도록 구성된 제어기를 포함한다.
본 개시의 다른 양상은 컴퓨터 저장 매체 상에 저장된 파일 관리 시스템에 관한 것이다. 파일 관리 시스템은 적어도 하나의 비-휘발성 저장 매체의 데이터 블록들과의 데이터 검색 동작들을 위한 논리적 블록 어드레스 맵핑표로서 기능하도록 구성되는 복수의 제 1 엔트리들(예를 들어, LBA 익스텐트 엔트리들)을 포함한다. 파일 관리 시스템은 또한 기록 및/또는 판독 동작들을 관리하기 위해 복수의 데이터 블록들을 별개의 논리적 그룹들로 구성하도록 구성되는 복수의 제 2 엔트리들(예를 들어, 기술자 엔트리들)을 포함한다.
본 개시의 다른 양상은 데이터 저장 디바이스를 동작시키기 위한 방법에 관한 것이다. 방법은 데이터 파일을 데이터 저장 디바이스에 제공하는 단계를 포함하며, 여기서 데이터 파일은 논리적 블록 어드레스 범위에 대응한다. 방법은 또한 논리적 블록 어드레스 범위에 대응하는 논리적 블록 어드레스 익스텐트 엔트리를 생성하는 단계, 데이터 저장 디바이스의 비-휘발성 저장 매체의 데이터 블록과 연관된 기술자 엔트리를 업데이트하는 단계, 및 데이터 파일의 적어도 일부를 데이터 블록에 기록하는 단계를 포함한다.
도 1은 호스트 컴퓨터에서 이용하는 본 개시의 데이터 저장 디바이스의 개략적인 예시를 도시하는 도면.
도 2는 파일 관리 시스템이 LBA 익스텐트 엔트리들의 제 1 어레이 및 기술자 엔트리들의 제 2 어레이를 포함하는 데이터 저장 디바이스에서 이용되는 파일 관리 시스템의 블록도.
도 3은 파일 관리 시스템의 LBA 익스텐트 엔트리들의 리스트의 블록도.
도 4는 예시적인 LBA 익스텐트 엔트리의 블록도.
도 5는 LBA 익스텐트 엔트리들의 계층화된 테이블의 블록도.
도 6은 기술자 엔트리들에 기초한 데이터 블록 그룹핑들의 블록도.
도 7은 예시적인 기술자 엔트리의 블록도.
도 8A 내지 도 8F는 파일 관리 시스템의 로딩 및 업데이트하는 방법을 도시하는, 데이터 저장 디바이스의 고체-상태 매체의 데이터 블록들의 개략적인 예시를 도시하는 도면.
도 9A 내지 9F는 파일 관리 시스템이 데이터 블록들을 관리하는 방법들을 도시하는, 데이터 저장 디바이스의 고체-상태 매체의 데이터 블록들의 개략적인 예시를 도시하는 도면.
본 개시는 하이브리드 드라이브들 및 고체-상태 드라이브들과 같은 고체-상태 매체들을 포함하는 디바이스들의 데이터 파일들을 관리하기 위한 파일 관리 시스템에 관한 것이다. 이하에서 논의되는 바와 같이, 파일 관리 시스템은 링크된 "LBA 익스텐트 엔트리들" 및 링크된 "기술자 엔트리들"의 이용하여 하나 이상의 고체-상태 매체들의 물리적 데이터 블록들에 LBA들을 맵핑한다. LBA 익스텐트 엔트리들은 고체-상태 매체들에 저장된 데이터 파일들과 연관되고 유효한 LBA들의 하드웨어-검색 가능 표를 제공한다. 기술자 엔트리들은 물리적 데이터 블록들에 관한 정보를 제공함으로써 LBA 익스텐트 엔트리들을 보충하고 고체-상태 매체들의 물리적 데이터 블록들과 연관된다. LBA 익스텐트 엔트리들 및 기술자 엔트리들의 조합은 데이터 블록 관리를 또한 개선하면서 검색 시산들 및 메모리 대역폭을 감소시킨다.
도 1에서 도시된 바와 같이, 저장 디바이스(10)는 본 개시의 파일 관리 시스템을 이용하여 호스트 컴퓨터(도시되지 않음)에 데이터를 저장 및 전달하기 위한 데이터 저장 디바이스이다. 저장 디바이스(10)는 제어기(12), 메모리 모듈(14), 버퍼(16), 비-휘발성 메모리(NVM)(18), 검색 하드웨어(20), 및 헤드 디스크 어셈블리(HDA)(22)를 포함한다. 저장 디바이스(10)에 이용하기 위한 적합한 호스트 컴퓨터들은 개인용 컴퓨터들, 미디어 재생기들, 개인 휴대 정보 단말들(personal digital assistants), 게임 콘솔들, 네트워크 시스템들, 서버-기반 시스템들 등과 같은 하나 이상의 컴퓨터-기반 시스템들을 포함할 수 있다.
제어기(12)는 파일 관리 시스템에 따라 저장 디바이스(10)에 대한 커맨드들을 판독 및 기록하도록 구성된 하나 이상의 마이크로처리기 어셈블리들이다. 제어기(12)는 USB(universal serial bus) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, 외부 SATA(eSTAT) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, IEEE 1394 인터페이스, SCSI(Small Computer System Interface), SAS(Serial Attached SCSI) 인터페이스, IDE(Integrated Drive Electronics) 인터페이스, 섬유 채널 인터페이스 등과 같은 임의의 적합한 인터페이스를 포함할 수 있다.
제어기(12)는 HDA(22)와 호스트 인터페이스(24) 간의 데이터 전달들을 관리하며 판독/기록 채널(26) 및 서보 제어기(28)를 이용한다. 판독/기록 채널(26)은 HDA(22)의 아날로그 신호들과 제어기(12)에 의해 처리된 디지털 신호들 사이에서 데이터를 코버트(covert)하도록 구성된 회로이다. 저장 디바이스(10)는 판독/기록 채널(26)과 HDA(22) 사이에서 전송된 판독 및 기록 신호들을 증폭하도록 구성될 수 있는, 판독/기록 채널(26)과 HDA(22) 사이에 배치된 하나 이상의 사전-증폭기들(도시되지 않음)을 또한 포함할 수 있다. 서보 제어기(28)는 제어기(12)로부터의 커맨드들에 기초하여 HDA(22)와의 후속 동작들을 직접 탐색 및 추적하도록 구성된 제 2 마이크로처리기 어셈블리이다. 개별적인 마이크로처리기 어셈블리로서 도시되는 바와 같이, 대안적인 실시예들에서, 제어기(12) 및 서보 제어기(28)의 기능들은 단일의 마이크로처리기 어셈블리와 더불어 수행될 수 있다.
제어기(12), 메모리 모듈(14), 버퍼(16), NVM(18), 검색 하드웨어(20), 판독/기록 채널(26), 서보 제어기(28)는 버스 라인(30)을 통해 서로 통신할 수 있다. 단일의 데이터 라인으로서 도시되는 바와 같이, 버스 라인(30)은 대안적으로 저장 디바이스(10)의 컴포넌트들 중 하나 이상의 컴포넌트가 서로 통신하는 것을 허용하도록 구성되는 하나 이상의 상호연결된 또는 분리된 데이터 라인들을 포함할 수 있다. 저장 디바이스(10)의 컴포넌트들은 또한 바람직하게는 저장 디바이스(10)의 하우징에 의해 보유된다. 이에 따라 저장 디바이스(10)는 호스트 컴퓨터의 케이스 내에 또는 외부에 있을 수 있다.
메모리 모듈(14)은 펌웨어와 같이, 정보를 저장하기 위한 하나 이상의 비-휘발성 메모리 모듈들(예를 들어, 플래시 메모리)이다. 버퍼(16)는 NVM(18) 및 HDA(22)와의 판독 및/또는 기록 동작들 동안 데이터 버퍼로서 기능할 수 있는 하나 이상의 비휘발성 메모리 모듈들(예를 들어, 동적 랜덤 액세스 메모리)이다.
NVM(18)은 플래시 메모리, 자기 랜덤 액세스 메모리(MRAM), 전기적으로 소거 가능한 프로그래밍 가능 판독-전용 메모리(EEPROM), 강유전성 랜덤 액세스 메모리(FeRAM) 및 이들의 조합들과 같은 하나 이상의 비-휘발성의 고체 상태 매체들이다. 도시된 실시예에서, NVM(18)은 판독 및/또는 기록 동작들(예를 들어, 하이브리드 드라이브로서) 동안 데이터를 버퍼링 및 저장하는데 있어 버퍼(16)를 돕기 위해 저장 디바이스(10)에 대한 비-휘발성 캐시로서 기능할 수 있다. 대안적인 실시예들에서, NVM(18)은 저장 디바이스(10)에 대한 주 저장 매체(예를 들어, 플래시 메모리 디바이스 또는 고체 상태 드라이브)로서 기능할 수 있다. 도시된 바와 같이, NVM(18)은 데이터를 저장하기 위한 복수의 소거 가능한 데이터 블록들(32)을 포함한다.
검색 하드웨어(20)는 제어기(12)로부터의 커맨드들에 기초하여 NVM(18) 및/또는 HDA(22)에 보유되는 데이터를 검색하도록 구성된 하드웨어-기반의 검색 제어기이다. 이는 검색 동작들이 빠르게 수행되는 것을 허용하며 본 개시의 파일 관리 시스템에 이용하는데 적합하다. 대안적인 실시예들에서, 검색 하드웨어(20)는 생략될 수 있고, NVM(18) 및/또는 HDA(22)의 데이터 검색 동작들이 제어기(!2)에 의해 수행될 수 있다.
HDA(22)는 저장 디바이스(34)와 스핀들 허브(36)를 포함하며, 여기서 스핀들 허브(spindle hub)(36)가 서보 제어기(28)에 의해 동작되는 저장 디바이스(34)의 스핀들 모터(도시되지 않음)에 연결된다. 이 어레인지먼트는 서보 제어기(38)가 제어기(12)로부터의 커맨드들에 기초하여 동작 동안 저장 디바이스(34)를 회전시키는 것을 허용한다. HDA(22)는 또한 작동 모터(38)(예를 들어, 보이스 코일 모터), 작동기 암(30), 서스펜션 어셈블리(42), 슬라이더(44)를 또한 포함하며, 여기서 슬라이더(44)는 변환 헤드(도시되지 않음)를 소지한다. 슬라이더(44)는 서스펜션 어셈블리(42)에 의해 지지되며, 서스펜션 어셈블리(42)는 차례로 작동기 암(40)에 의해 지지된다. 도시된 실시예에서, 작동 모터(38)는 또한 서보 제어기(28)에 의해 제어된다. 서보 제어기(28)로부터의 커맨드들에 기초하여, 작동기 모터(38)는 저장 디스크(34)에 걸친 아크(화살표 60으로 표현됨)에서 서스펜션 어셈블리(42) 및 슬라이더(44)를 스윕하기 위해 축을 중심으로 작동기 암(40)을 선회(pivot)시킨다. 부가적인 마이크로 작동기 시스템(도시되지 않음)은 또한 서스펜션 어셈블리(42) 및 슬라이더(44)의 정밀한 소-규모 이동들을 생성하는데 이용될 수 있다. 슬라이더(44)가 저장 디스크(34)에 걸쳐서 이동함에 따라, 슬라이더에 의해 소지되는 변환 헤드는 바람직하게는 저장 디스크(34) 상에 위치되는 선택된 섹터 트랙들에 관하여 위치된다. 이는 변환 헤드가 동작 동안 저장 디스크(34) 상의 트랙들에 데이터를 기록하고 이로부터 데이터를 판독하는 것을 허용한다.
저장 디바이스(10)의 시동 동안, 본 개시의 파일 관리 시스템은 NVM(18) 및/또는 HDA(22)로부터 버퍼(16)내로(버퍼(16)의 파일 관리 시스템(FMS)(48)으로서 도시됨)으로 로딩될 수 있다. 이하에 논의되는 바와 같이, FMS(48)는 NVM(18)의 호스트 컴퓨터에 의해 LBA들을, 데이터 블록들(32)에 보유되는 데이터 파일들에 맵핑할 수 있는 링크된 LBA 익스텐트 엔트리들을 포함한다. 이는 저장 디바이스(10)의 데이터 블록 관리가 호스트 컴퓨터에 투명하게 되는 것을 허용한다. 일 실시예에서, FMS(48)는 또한 호스트 컴퓨터에 투명한 방식으로 HDA(22)와의 판독 및 기록 동작들을 또한 관리하도록 디스크(34)의 섹터 트랙들에 LBA들을 맵핑시킬 수 있다.
HDA(22)의 이점은 저장 디스크(34)의 섹터 트랙들이 이전에 소거될 것을 요구함 없이 이들이 재기록될 수 있다는 것이다. 이럼으로써, 호스트 컴퓨터에 의해 인지 가능한 LBA들은 1대1 어레인지먼트로 저장 디스크(34)의 섹터 트랙들에 맵핑될 수 있고, 이는 맵핑표를 단순화한다. 그러나 비교하면, NVM(18)의 데이터 블록들(32)은 후속적으로 재기록되기 이전에 소거되도록 요구되지 않는다. 부가적으로, 데이터 파일이 페이지 당 원칙(per-page basis)으로 데이터 블록(32)에 기록될 수 있지만, 주어진 데이터 블록(32)으로부터의 데이터 파일들의 소거는 통상적으로 데이터 블록(32) 내의 데이터 파일들 모두가 소거될 필요가 있는지 여부와 무관하게 전체 데이터 블록(32)의 소거를 요구한다. 이는 NVM(18)에 걸쳐서 데이터의 산재를 야기할 수 있다. 또한, 데이터 블록(32)은 장애(failing) 이전에 제한된 수의 소거 카운트(erasure count)들을 갖고, 그럼으로써 NVM(18)의 수명을 데이터 블록들(32)의 이용 가능한 소거 카운트들로 제한한다.
NVM(18)의 이 특성들을 수용하기 위해, FMS(48)의 LBA 익스텐트 엔트리는 특정한 데이터 파일들을 검색하는데 요구되는 시간을 감소시키는 방식으로 데이터 블록들(32)에 저장된 데이터 파일들로의 LBA 맵핑을 관리하도록 구성된다. 이는 이에 따라 호스트 컴퓨터와의 판독 및 기록 시간들을 감소시킨다. 또한, FMS(48)의 기술자 엔트리들은 데이터 파일들이 데이터 블록들(32)로부터 소거되고 데이터 블록들(32)에 기록되는 방법을 관리함으로써 데이터 블록들(32)의 관리를 돕도록 구성된다.
도 2에서 도시되는 바와 같이, FMS(48)은 제 1 어레이(50) 및 제 2 어레이(52)를 포함하며, 여기서 제 1 어레이(50)는 "M"개의 LBA 익스텐트 엔트리들(LBA 엔트리들(54)로서 지칭됨)을 포함하고, 제 2 어레이(52)는 "N"개의 기술자 엔트리들(56)을 포함한다. 저장 디바이스(10)의 시동 동안, 제 1 어레이(50) 및 제 2 어레이(52)는 NVM(18) 및/또는 HDA(22)로부터 판독되고 버퍼(16)에 기록될 수 있으며, 그에 따라 FMS(48)를 버퍼(16)에 로딩한다. 도시된 실시예에서, 제 2 어레이(52)는 포인터(57)로 제 1 어레이(50)에 링크될 수 있고, 포인터는 별개의 어레이들을 버퍼(16)에 로딩하는데 도움을 줄 수 있다. 대안적인 실시예에서, 제 1 어레이(50) 및 제 2 어레이(52)의 순서는 반전될 수 있다.
각각의 LBA 엔트리(54)는 바람직하게는 NVM(18)의 하나 이상의 데이터 블록들(32)에 저장된 단일의 데이터 파일 또는 클러스터 데이터 파일들(데이터 파일들(58)로서 지칭됨)과 연관된다. 따라서 각각의 LBA 엔트리(54)는 바람직하게는, 연관된 데이터 파일(들)이 저장된 특정한 데이터 블록(들)(32)의 페이지 어드레스 및 물리적 데이터 어드레스와 같이 연관된 데이터 파일(들)(58)에 관련된 정보를 포함한다. 제 1 어레이(50)의 LBA 엔트리들(54)의 수(즉, "M")는 데이터 블록들(32)에 저장된 데이터 파일들(58)의 수에 의존하여 변할 수 있다.
또한, 각각의 LBA 엔트리(54)는 (예를 들어, 검색 하드웨어(20)로) 쉽게 검색 가능한 방식으로 물리적 데이터 블록들 및 페이지 어드레스들에 LBA들을 맵핑시킬 수 있다. 이하에 논의되는 바와 같이, 각각의 LBA 엔트리(54)는 바람직하게는, 연관된 데이터 파일(들)(58)의 시작 LBA, (2) 연관된 데이터 파일(들)(58)의 LBA 범위의 길이, (3) 번호 순서의 인접한 LBA 엔트리들(54)에 대한 하나 이상의 포인터들, 및 (4) 물리적 데이터 순서의 인접한 LBA 엔트리들(54)에 대한 하나 이상의 포인터들을 포함한다. 이 툴들은 데이터 블록들(32)의 데이터 파일들(58)이 그들의 물리적 위치들 및 NVM(18) 전체에 걸쳐서 산재하는 레벨에 무관하게 빠르게 검색되는 것을 허용한다.
도 2에서 추가로 도시되는 바와 같이, 각각의 기술자 엔트리(56)는 바람직하게는 단일의 데이터 블록(32)과 연관된다. 그럼으로써, 제 2 어레이(52)의 기술자 엔트리들(56)의 수(즉, "N")는 NVM(18)의 데이터 블록들(32)에 의존하여 변할 수 있다. 이는 특정한 데이터 블록들(32)보단 하나 이상의 데이터 파일들(58)과 각각 연관된 LBA 엔트리(54)에 비견된다. 아래에서 논의되는 바와 같이, 각각의 기술자 엔트리(56)는 바람직하게는 데이터 블록들(32)의 별개의 리스트들을 생성하기 위한 포인터들을 포함하고, 그럼으로써 그들이 보유하는 데이터 파일들(58)에 의존하여 상이한 카테고리들로 데이터 블록들(32)을 그룹핑한다. 데이터 블록들(32)의 이러한 그룹핑은 그들의 물리적 위치들에 기초한 그룹핑 보단 오히려 논리적인 그룹핑이며, FMS(48)가 데이터 파일들(58)이 데이터 블록들(32)로부터 소거되고 데이터 블록들(32)로 기록되는 방법을 관리하는 것을 허용한다. 또한, 각각의 기술자 엔트리(56)는 또한 블록 상태, 소거 카운트, 유효 LBA 카운트 등과 같은 그의 연관된 데이터 블록(32)에 관한 정보를 포함할 수 있다.
LBA 익스텐트 엔트리들( LBA Extent Entries )
도 3은 LBA 엔트리들(54)(예를 들어, LBA 엔트리들(54a, 54b, 및 54c))의 링크된 리스트와 데이터 블록들(32)(예를 들어, 데이터 블록들(32a, 32b 및 32c)에 저장된 그들의 연관된 데이터 파일들(58)(예를 들어, 데이터 파일들(58a, 58b, 및 58c)의 개략적인 예시이다. 버퍼(16)로 로딩된 이후, LBA 엔트리들(54a, 54b, 및 54c)의 포인터들은 번호 LBA 순서로 링크된 리스트를 형성한다. 이는 연관된 데이터 파일들(58a, 58b 및 58c)로의 LBA 맵핑표를 생성한다.
이 맵핑표는 특정한 데이터 파일(58)의 LBA 범위를 발견하기 위해 LBA들이 빠르게 검색되는 것을 허용한다. 예를 들어, 호스트 컴퓨터가 LBA 범위(150-169)에 대 응하는 데이터 파일(58b)을 판독하기 위한 요청을 송신할 때, 검색 하드웨어(20)는 그것이 LBA 엔트리(54b)를 식별할 때까지 LBA 엔트리(54)를 스캔할 수 있다. LBA 엔트리(54b)의 물리적 블록 및 페이지 어드레스들에 기초하여, 저장 디바이스(10)의 펌웨어는 그 후 데이터 블록(32b)으로부터 데이터 파일(58b)을 판독할 수 있다. 검색 하드웨어(20)가 단지 LBA 엔트리들(54)의 링크된 리스크를 검색하도록 요구되기 때문에, 원하는 데이터 파일들(58)을 포함하는 데이터 블록들(32)은 검색 시간들에 영향을 미치지 않고 NVM(18) 전체에 걸쳐서 산재될 수 있다.
도 4는 각각의 LBA 엔트리(54)의 적합한 어레인지먼트의 예인 LBA 엔트리(54b)의 블록도이다. 도시되는 바와 같이, LBA 엔트리(54b)는 데이터 블록(32b)에 저장된 데이터 파일(58b)과 연관된 정보를 포함하는 데이터 파일들인 맵핑 파일들(60 내지 74)을 포함한다. LBA 엔트리(54b)는 또한 어드레스 레벨, LBA 확장 필드들, 포인터 확장 필드들, 가장 최근 사용된 리스트 정보 등과 같은 부가적인 정보를 포함할 수 있다.
맵핑 파일(60)은 현재의 예에서 "150"인 데이터 파일(58b)에 대한 시작 LBA를 포함한다. 대응하는 맵핑 파일(62)은 데이터 파일(58b)이 저장된 데이터 블록의 페이지들의 수인 데이터 파일(58b)에 대한 LBA 범위의 길이를 포함한다. 현재의 예에서, 맵핑 파일(62)에 저장된 LBA 범위 길이는 "20"이다. 맵핑 파일들(60 및 62)의 이러한 값들은 검색 하드웨어(20)가 LBA 엔트리(54b)가 데이터 파일(58b)에 대한 원하는 LBA 범위를 포함하는지를 식별하기 위해 LBA 엔트리(54b)들을 스캔할 때 판독될 수 있는 값들이다.
맵핑 파일들(64 및 66) 각각은 번호 LBA 순서에 기초하여 이전의 그리고 다음의 LBA 엔트리들(54)에 대한 포인터들을 포함한다. 현재의 예에서, 맵핑 파일의 이전의 LBA 익스텐트 엔트리 포인터(64)는 LBA 엔트리(54b)를 LBA 엔트리(54a)에 링크한다. 유사하게, 맵핑 파일의 다음의 LBA 익스텐트 엔트리(66)는 LBA 엔트리(54b)를 LBA 엔트리(54c)에 링크한다. 이 전방 및 후방 어레인지먼트는 LBA 범위들에 기초하여 리스트의 LBA 엔트리들(54)을 링크하고, 그에 의해 검색 하드웨어(20)가 스캔할 맵핑표를 제공한다. 또한, 링크된 LBA 엔트리들(54)의 리스트는 새로운 LBA 엔트리가 부가(예를 들어, 새로운 데이터를 기록)될 때마다 그리고 기존의 LBA 범위가 제거(예를 들어, 주어진 LBA 범위가 유효하지 않을 때에)될 때마다 업데이트될 수 있다.
맵핑 파일(68)은 LBA 범위(150-169)(즉, 데이터 블록(32b))와 연관된 데이터 파일을 포함하는 데이터 블록(32)의 물리적 블록 어드레스를 포함한다. 유사하게, 맵핑 파일(70)은 데이터 파일(58b)이 저장되는 데이터 블록(32b) 내의 시작 페이지 어드레스를 포함한다. 여기서 논의되는 실시예들에서, 각각의 LBA는 데이터 블록(32) 내의 단일의 물리적 페이지와 연관된다. 그러나 FMS(48)는 대안적으로 다양한 상이한 LBA 연관들(예를 들어, 섹터-기반 연관들)을 통해 유사한 방식으로 기능할 수 있다. 검색 하드웨어(20)가 LBA 범위(150-169)를 포함하는 것으로서 LBA 엔트리(54b)를 식별할 때, NVM(18)의 데이터 파일(58b)의 물리적 위치는 맵핑 파일들(68 및 70)에 저장된 정보에 의해 식별될 수 있다. 이는 그 후 저장 디바이스(10)의 펌웨어가 데이터 블록(32b)으로부터 데이터 파일(58b)을 판독하는 것을 허용한다.
맵핑 파일들(72 및 74)은 각각 데이터 파일(58b)에 물리적으로 인접하게 위치되는 데이터 파일들(58)을 포함하는 이전의 그리고 다음의 LBA 엔트리들(54)에 대한 포인터들을 포함한다. 이는 서로 물리적으로 인접한 데이터 파일들(58)의 LBA 엔트리들(54)이 캐시 플러싱 동작(cache flushing operation)들의 경우에 대해 쉽게 식별되는 것을 허용한다.
도 5는 LBA 엔트리들(54)의 LBA 범위들을 검색하기 위한 적합한 대안적인 어레인지먼트의 예인 계층화된 테이블(76)의 개략적인 예시이다. 도시된 바와 같이, 계층화된 테이블(76)은 3-레벨 어레인지먼트를 포함하며, 여기서 레벨 0 엔트리들은 번호 LBA 순서로 LBA 엔트리들(54)의 리스트에 대응한다. 레벨 1 엔트리들은 중간 세트들(78)(예를 들어, 중간 세트들(78a 내지 78d)을 포함하고, 레벨 2 엔트리들은 상부 세트들(79)(예를 들어, 상부 세트들(79a 및 79b)을 포함하며, 이는 탑-다운형(top-down) 계층적 검색표로서 함께 기능한다.
레벨 1의 각각의 중간 세트(78)는 바람직하게는, 레벨 0의 다수의 LBA 엔트리들(54)을 포괄하며, 여기서 각각의 중간 세트(78)는 LBA 엔트리들(54)의 포괄되는 리스트의 제 1 LBA 엔트리(54)에 대한 포인터(80)이다. 예를 들어, 중간 세트(78a)는 0 내지 199의 LBA 범위의 LBA 엔트리들(54)을 포괄할 수 있고, 이 LBA 범위(즉 LBA 엔트리(54a))의 제 1 LBA 엔트리(54)에 대한 포인터(80)를 포함할 수 있다.
유사하게, 레벨 2의 각각의 상부 세트(79)는 바람직하게는, 다수의 중간 세트들(78)을 포괄하며, 여기서 각각의 상부 세트(79)는 중간 세트들(78)의 포괄되는 범위의 제 1 중간 세트(78)에 대한 포인터(81)를 포함할 수 있다. 예를 들어, 상부 세트(79a)는 중간 세트들(78a 및 78b)을 포함하는 0 내지 399의 LBA 범위의 중간 세트들(78)을 포괄할 수 있고, 이 LBA 범위의 제 1 중간 세트(78)(즉, 중간 세트(78a)에 대한 포인터(81)를 포함할 수 있다. 또한, 레벨 2의 주어진 상부 세트(79)에 의해 포괄되는 레벨 1의 중간 세트들(78)은 중간 세트들(78)의 리스트들을 제공하도록 링크될 수 있다. 예를 들어, 중간 세트들(78a 및 78b)은 링크될 수 있고 중간 세트들(78c 및 78d)은 링크될 수 있다. 추가로, 레벨 2의 상부 세트들(79)은 또한 바람직하게는, 검색 하드웨어(20)가 초기에 검색할 상부 세트들(79)의 상부-레벨 리스트를 제공하도록 링크된다.
LBA 범위(200 내지 219)에 대응하는 데이터 파일(58)을 검색하는 동안, 검색 하드웨어(20)는 그것이 이 LBA 스팬(span)을 커버하는 상부 세트(79)(즉, LBA들(0 내지 399))를 커버하는 상부 세트(79a)를 식별할 때까지 레벨 2의 상부 세트들(79)을 검색할 수 있다. 이럼으로써, 검색 하드웨어(20)는 그 다음 상부 세트(79a)로부터 중간 세트(78a)로 포인터(81)로 링크될 수 있다. 이 지점에서, 검색 하드웨어(20)는 중간 세트(78)가 LBA 범위(200-219)를 포괄하는지를 식별할 때까지 중간 세트들(78a 및 78b)의 리스트를 검색할 수 있다. 현재의 예에서, 이것은 LBA들(200 내지 399)을 커버하는 중간 세트(78b)이다. 그럼으로써, 검색 하드웨어(20)는 그 후 중간 세트(78b)로부터 LBA 엔트리(54c)로 포인터(80)로 링크될 수 있다. 이 지점에서, 검색 하드웨어(20)는 LBA 범위(200 내지 219)를 포함하는 LBA 엔트리(54)를 식별할 때까지 중간 세트(78b)에 의해 포괄되는 LBA 엔트리들(54)의 리스트를 검색할 수 있다. 현재의 예에서 이것은 LBA 엔트리(54c)이다. LBA 엔트리(54c)가 식별된 이후, 대응하는 데이터 블록(32)에 보유되는 데이터 파일(58)은 그 후 위에서 논의되는 바와 같이 리트리브(retrieve)될 수 있다.
계층화된 테이블(76)의 이용은 LBA 엔트리들(54)을 검색하기 위해 검색 하드웨어(20)에 대해 요구되는 시간을 감소시킨다. 도시된 실시예에서, 계층화된 테이블(76)은 3개의 레벨들을 포함한다. 그러나 계층화된 테이블(76)은 대안적으로 임의의 적합한 수의 레벨들을 포함할 수 있다. 계층화된 테이블(76)에 대한 적합한 수의 레벨들의 예들은 1(즉 LBA 엔트리들(54)의 리스트) 내지 10의 범위에 있을 수 있고, 특히 적합한 수들은 1 내지 5의 범위에 있으며, 훨씬 더 특히 적합한 수는 1 내지 4의 범위에 있다.
레벨 1 및 레벨 2의 중간 세트들(78) 및 상부 세트들(79)의 각각의 수는 또한 변할 수 있다. 일 실시예에서, 레벨 1의 중간 세트들(78)의 수는 레벨 0에 존재하는 LBA 엔트리들(54)의 수의 함수로서 결정될 수 있다. 예를 들어, 레벨 1의 중간 세트들(78)의 수는 레벨 0에 존재하는 LBA 엔트리들(54)의 수의 제곱근일 수 있다. 유사하게, 레벨 2의 상부 세트들(79)의 수는 레벨 1에 존재하는 중간 세트들(78)의 수의 함수로서 결정될 수 있다(예를 들어, 레벨 1에 존재하는 중간 세트들(78)의 제곱근).
또한, 각각의 중간 세트(78) 및 각각의 상부 세트(79)에 의해 포괄되는 LBA 스팬들은 레벨 0의 LBA 엔트리들의 부가들 및 제거들에 응답하여 조정될 수 있다. 일 실시예에서, LBA 스팬 커버리지의 이러한 변화는 바람직하게는, 레벨 1의 각 중간 세트(78) 하의 레벨 0의 LBA 엔트리들(54)의 실제 동등한 수를 유지하고, 또한 바람직하게는, 레벨 2의 각 상부 세트(79) 하의 레벨 1의 중간 세트들(78)의 실제 동등한 수를 유지한다. 이 어레인지먼트는 레벨 0의 LBA 엔트리들(54)의 수에 기초하여 계층화된 테이블(76)이 변하는 것을 허용하고, 이는 실질적으로 계층화된 테이블(76)을 검색하기 위해 검색 하드웨어(20)에 대해 요구되는 시간을 감소시킬 수 있다.
기술자 엔트리들( Descriptor Entries )
도 6은 기술자 엔트리들(56)(도 2에서 도시됨)에서 지정된 블록 상태들에 기초하여 별개의 카테고리들로 그룹핑되는 데이터 블록들(32)의 블록도이다. 위에서 논의된 바와 같이, 각 기술자 엔트리는 바람직하게는, 데이터 블록들(32)의 별개의 리스트들을 생성하기 위한 포인터들을 포함하고, 그럼으로써 그들이 보유한 데이터 파일들에 의존하여 상이한 카테고리들로 데이터 블록들(32)을 그룹핑한다. 도 6에서 도시된 실시예에서, 기술자 엔트리들(56)은 폐기 그룹(82), 자유 그룹(84), 기록 캐시 그룹(86), 고정된 캐시 그룹(88), 테이블 그룹(90), 앵커 그룹(92), 및 결합 그룹(94)으로 데이터 블록들(32)을 그룹핑한다.
결정된 그룹(82)은 오래되고 더 이상 필요로 되지 않는 데이터를 포함하는 데이터 블록들(32)의 제 1 그룹(폐기 블록들(96)로서 지칭됨)이다. 예를 들어, 폐기 블록들(96)에 보유되는 데이터는 데이터 파일들의 이전의 버전들일 수 있으며, 이들은 후속적으로 업데이트 및/또는 재기록된다. 그럼으로써, 폐기 블록들(96)은 소거될 단서가 된다. 위에서 논의된 바와 같이, 데이터 블록들(32)은 후속적으로 재기록되기 이전에 소거되도록 요구된다. 그러나 소거 동작들은 저장 디바이스(10)의 상당한 자원들을 소모할 수 있다. 그 결과, 폐기 블록들(96)은 예를 들어, 저장 디바이스(10)가 유휴일 때와 같이 미리 정의된 기준이 충족될 때까지 소거되기를 대기할 수 있다. 폐기 블록들(96)은 데이터 블록들(32)의 리스트를 형성하기 위해 함께 링크될 수 있고, 여기서 이 리스트는 선입선출 원칙에 기초할 수 있다.
자유 그룹(84)은 폐기 그룹(82)의 리스트로부터 수신되고 소거되었던 데이터 블록들(32)의 제 2 그룹이며, 이용에 대해 이용 가능하다(자유 블록들(98)로서 지칭됨). 자유 블록들(98)은 또한 데이터 블록들(32)의 리스트를 형성하기 위해 함께 링크될 수 있다. 일 실시예에서, 자유 블록들(98)의 순서는 웨어 레벨링 기법(wear leveling technique)에 기초한다. 예를 들어, 자유 블록들(98)의 순차적인 리스트는 소거 카운트들의 순서로 배열될 수 있으며, 여기서 최저 소거 카운트를 갖는 자유 블록(98)은 직렬 리스트의 최초 데이터 블록(즉, 가장 먼저 이용됨)이고, 최고 소거 카운트를 갖는 자유 블록(98)은 순차적인 리스트에서 마지막 데이터 블록(마지막으로 이용됨)이다. 연속적인 소거 동작들이 자유 블록들(98) 상에서 수행되기 때문에, 자유 그룹(84)의 자유 블록들(98)의 순서는 상대적인 소거 카운트들의 변경들을 수용하기 위해 변경될 수 있다.
기록 캐시 그룹(86) 및 고정된 캐시 그룹(88)은 자유 그룹(84)의 리스트로부터 수신되고 제어기(12)가 후속적으로 데이터를 기록하는 데이터 블록들(32)의 제 3 그룹 및 제 4 그룹이다. 기록 캐시 그룹(86)의 데이터 블록들(32)(기록 캐시 블록들(100)로서 지칭됨)은 호스트 컴퓨터로부터 기록된 데이터를 보유하는 데이터 블록들(32)의 리스트를 형성하기 위해 함께 링크될 수 있다. 다수의 상황들에서, 제어기(12)는 HDA(22)에 직접이 아니라 NVM(18)에 호스트 데이터를 기록하는 것이 바람직하다. 예를 들어, 유휴 상태로부터 저장 디스크(34)의 스핀 업(spin up)은 HDA(22)에 데이터를 기록하는데 요구되는 시간을 증가시킬 수 있다. 이 상황들에서, 저장 디바이스(10)가 바쁜(busy) 동안 임시 저장소에 대한 NVM(18)에 호스트 데이터를 기록하는 것이 더 빠를 수 있다. 이 프로세스에서, 호스트 컴퓨터로부터 전송된 데이터는 버퍼(16)에 기록되고 그 후 비-휘발성 저장소에 대한 NMV(18)에 기록될 수 있다. 후속 시점에서, 예를 들어, 저장 디바이스(10)가 유휴일 때, 저장 디스크(34)는 스핀 업될 수 있고, 데이터는 NVM(18)로부터 HDA(22)로 (버퍼(16)를 통해) 기록될 수 있다.
고정된 캐시 블록들(56)의 데이터 블록들(32)(고정된 캐시 블록들(102)로서 지칭됨)은 호스트 컴퓨터로부터가 아니라 HDA(22)로부터 기록된 데이터(즉, 고정된 데이터)를 보유하는 데이터 블록들(32)의 리스트를 형성하기 위해 함께 링크될 수 있다. 다수의 상황들에서, 데이터는 HDA(22)로부터가 아니라 NVM(18)으로부터 판독되는 것이 또한 바람직하다. 예를 들어, 유휴 상태로부터 저장 디바이스(34)의 스핀 업은 데이터가 그의 섹터 트랙들로부터 판독될 수 있기 이전에 부가적인 시간을 요구한다. 대신, 호스트 컴퓨터에 의해 빈번히 액세스될 수 있는 데이터는 NVM(18) 상에 저장될 수 있으며, 이는 임의의 정렬의 기계적인 레이턴시들을 요구하는 컴포넌트들의 이동을 갖지 않는다.
도시된 실시예에서, 제어기(12)는 호스트 데이터와 상이하게 고정된 데이터를 처리할 수 있다. 특히, 기록 데이터 블록들(100)에 보유되는 호스트 데이터는 바람직하게는 적어도 HDA(22)에 기록될 때까지 보유된다. 비교하면, 고정된 캐시 블록들(102)에 보유되는 고정된 데이터는 사본이 HDA(22)에 이미 보유되기 때문에 더 이상 필요가 없는 경우 소거될 수 있다. 기록 캐시 그룹(86) 및 고정된 캐시 그룹(88)에 대한 별개의 직렬 리스트들의 이용은 다른 것들에 영향을 미치지 않고(즉, 캐시 플러시 커맨드들) 하나의 그룹 상에서만 작용들을 수행하는 것을 허용한다.
테이블 그룹(90)은 자유 그룹(84)의 리스트로부터 수신되고 제어기(12)가 후속적으로 FMS(48)에 관한 데이터를 기록하는 데이터 블록들(32)의 제 5 그룹(테이블 블록들(104)로서 지칭됨)이다. 위에서 논의된 바와 같이, FMS(48)의 제 1 어레이(50) 및 제 2 어레이(52)는 저장 디바이스(10)의 동작 동안 버퍼(16)에 복사될 수 있고, 그에 의해 FMS(48)가 NVM(18) 및 HDA(22)와 관련하여 데이터 전달들 및 액세스를 관리하는 것을 허용한다. 이에 따라, 테이블 블록들(104)은 NVM(18)의 제 1 어레이(50) 및 제 2 어레이(52)의 저장된 사본들을 보유하는 데이터 블록들이다. 그럼으로써, 테이블 블록들(104)은 제 1 어레이(50) 및 제 2 어레이(52)의 데이터 파일들을 보유하는 데이터 블록들(32)의 리스트를 형성하기 위해 함께 링크될 수 있다. 제 1 어레이(50)와 제 2 어레이(52) 외에, 테이블 블록들(104)은 또한 이하에 논의되는 바와 같이 제 1 어레이 및 제 2 어레이에 대한 업데이트들인 저널(journal) 엔트리들의 부가적인 어레이를 포함할 수 있다.
도 6에서 도시되는 바와 같이, 폐기 그룹(82), 자유 그룹(84), 기록 캐시 그룹(86), 고정된 캐시 그룹(88), 및 테이블 그룹(90)의 데이터 블록들(32)은 특정한 데이터 블록들(32)에 보유되는 데이터에 의존하여 카테고리들을 스위칭할 수 있다. 예를 들어, FMS(48)의 제 1 어레이(50) 및 제 2 어레이(52)가 테이블 블록들(104)로부터 버퍼(16)로 로딩되고, 이하에 논의되는 바와 같이 저널 엔트리들로 업데이트된 이후, FMS(48)의 업데이트된 버전은 비-휘발성 저장소에 대한 NVM(18)에 다시(back) 기록될 수 있다. 이 상황에서, 제어기(12)는 자유 블록들(98)의 최초 데이터 블록 또는 데이터 블록들(즉, 최저 소거 카운트들을 갖는 데이터 블록들)을 획득하고, 업데이트된 FMS(48)(즉, 업데이트된 제 1 어레이(50) 및 제 2 어레이(52))를 이 데이터 블록들(98)에 기록할 수 있다.
아래에서 논의되는 바와 같이, 이 기록된 데이터 블록들(98)에 대응하는 기술자 블록들(56)의 포인터들은 자유 그룹(84)으로부터 테이블 그룹(90)(즉, 자유 블록들(98)로부터 테이블 블록들(104)로)으로 이들 기록된 데이터 블록들(98)을 스위칭하도록 리드렉트(redirect)될 수 있다. 부가적으로, FMS(48)의 이전의 버전을 포함하는 테이블 블록들(104)은 동일한 방석으로 테이블 그룹(90)으로부터 폐기 그룹(82)으로 스위칭될 수 있다. FMS(48)의 구 버전을 포함하는 테이블 블록들(104)은 그 후 폐기 그룹(82)(즉, 테이블 블록들(104)로부터 폐기 블록들(96)로)로 스위칭될 수 있다. 적절한 후속적인 지점에서, 주어진 데이터 블록들(96)은 그 후 소거되고 후속적인 이용을 위해 폐기 그룹(82)으로부터 자유 그룹(84)(즉, 폐기 블록들(96)로부터 자유 블록들(98)로)으로 스위칭될 수 있다. FMS(48)가 기술자 엔트리들(56)을 갖는 다양한 카테고리들 사이에서 데이터 블록들(32)의 이동을 관리하는 프로세스는 아래에서 논의된다.
앵커 그룹(92)은 데이터 블록들(32)(앵커 블록들(106)로서 지칭됨)의 제 6 그룹이며, 이는 바람직하게는 NVM(18)의 잔여 데이터 블록들(32)과 분리된다. 앵커 블록들(106)은 바람직하게는 저장 디바이스(10)의 시동 동안 제어기(12)가 위치할 수 있는 NVM(18) 내의 고정된 위치에 보유된다. 앵커 블록들(106)은 또한 리스트를 형성하기 위해 함께 링크되고 테이블 그룹(90)의 제 1 테이블 블록(104)에 대한 포인터를 제공할 수 있다. 이는 제어기(12)가 저장 디바이스(10)의 시동 동안 테이블 블록(104)을 쉽게 발견하는 것을 허용하고, 그에 의해 제어기(12)가 FMS(48)를 버퍼(16)로 로딩하는 것을 허용한다. 이하에 논의되는 바와 같이, FMS(48)의 업데이트된 버전이 버퍼(16)로부터 NVM(18)으로 재기록될 때마다, 앵커 블록들(16)은 바람직하게는 테이블 그룹(90)의 새로운 최초 테이블 블록(104)에 대한 포인터를 재발견하도록 업데이트된다.
앵커 그룹(92)은 바람직하게는 NVM(18)의 잔여 데이터 블록들(32)로부터 분리되기 때문에, 앵커 블록들(106)은 FMS(48)의 웨어 레벨링 기법으로부터 생략될 수 있다. 그럼으로써, NVM(18)은 바람직하게는 각각의 앵커 블록(106)이 소거 카운트들을 빠르게 누산하는 것을 방지하기 위해 적합한 최소수의 앵커 블록들(106)을 포함한다. 다른 한편, 앵커 블록들(106)은 또한 자유 블록들(98)로서 재이용 가능하지 않고 그러므로 데이터를 저장하기 위한 NVM(18)의 전체 이용 가능한 볼륨(volumn)에서 제외된다. 그럼으로써, NVM(18)은 또한 바람직하게는 저장 볼륨 손실을 감소시키는 적합한 최소수의 앵커 블록들(106)을 포함한다. FMS(48)에 이용하기 위한 앵커 블록들(106)의 적합한 수의 예들은 2 내지 50의 범위에 있고, 특히 적합한 수는 4 내지 20의 범위에 있고, 훨씬 더 특히 적합한 수는 6 내지 10 범위에 있다.
결합 그룹(94)은 데이터 블록들(32)의 제 7 그룹(결합 블록들(108)로서 지칭됨)이며, 이는 또한 바람직하게는 그들의 결합 성질로 인해 NVM(18)의 잔여 데이터 블록들(32)로부터 분리된다. 그럼으로써, 결합 블록들(108)은 더 이상 저장 디바이스(10)에 의해 유효하게 이용되지 않고, 이용 가능한 데이터 블록들(32)로부터 생략될 수 있다.
데이터 블록들(32)이 7개의 상이한 카테고리들로 그룹핑되는 것으로서 도 2에 도시되었지만, FMS(48)는 대안적으로 부가적인 수의 데이터 블록 그룹들로 동작할 수 있다. 이하에 논의되는 바와 같이, 이러한 방식의 데이터 블록들(32)의 그룹핑은 데이터 블록들(32)과의 데이터 기록 및 소거 동작들을 관리하기 위한 유효한 방식을 제공한다.
도 7은 제 2 어레이(52)(도 2에 도시됨)의 예시적인 기술자 엔트리(56)의 블록도이다. 도시되는 바와 같이, 기술자 엔트리(56)는 기술자 파일들(110 내지 120)을 포함하며, 이 기술자 파일들(110 내지 120)은 연관된 데이터 블록(32)의 정보를 포함하고 연관된 데이터 블록들(32)을 폐기 그룹(82), 자유 그룹(84), 기록 캐시 그룹(86), 고정된 캐시 그룹(88), 테이블 그룹, 앵커 그룹(92), 및 결합 그룹(94) 중 하나로 그룹핑하기 위한 데이터 파일들이다.
기술자 파일(110)은 연관된 데이터 블록(32)의 현재 상태에 관한 정보를 포함하며, 여기서 "상태"는 어느 그룹에 주어진 데이터 블록(32)이 현재 링크되어있는지를 지칭한다. 기술자 파일(110)의 적합한 상태들의 예들은 폐기된 그룹(82)에 대한 "폐기", 자유 그룹(84)에 대한 "자유", 기록 캐시 그룹(86)에 대한 "기록 데이터", 고정된 캐시 그룹(88)에 대한 "고정된 데이터", 테이블 그룹(90)에 대한 "테이블, 앵커 그룹(92)에 대한 "앵커", 및 결합 그룹(94)에 대한 "결함"을 포함한다.
기술자 파일(112)은 연관된 데이터 블록(32)에 대한 소거 카운트를 포함한다. 이는 기술자 엔트리(56)가 데이터 블록들(32)의 소거 카운트들에 기초하여 자유 그룹(84)에 적절한 순서로 배치되는 것을 허용한다. 이에 따라, 연관된 데이터 블록(32)이 소거될 때마다, 기술자 파일(112)의 소거 카운트는 정확한 소거 카운트를 유지하기 위해 증분될 수 있다.
기술자 파일들(114 및 116)은 각각 동일한 그룹에서의 이전의 그리고 다음의 기술자 엔트리들(54)에 대한 포인터들을 포함한다. 이 포인터들은 데이터 블록들(32)이 링크되어 있는 그룹들을 기술자 엔트리들(56)이 스위칭하는 것을 허용한다. 예를 들어, 주어진 기록 캐시 블록(110)이 폐기가 될 때, FMS(48)는 "기록 데이터"로부터 "폐기"로 대응하는 기술자 엔트리(56)의 기술자 파일(110)의 블록 상태를 스위칭할 수 있고, 또한 기록 캐시 그룹(86)으로부터 폐기 그룹(82)으로 링크를 변경하기 위해 대응하는 기술자 엔트리(56)의 기술자 파일들(114 및 116)의 포인터들을 리드렉트할 수 있다.
기술자 파일(118)은 연관된 데이터 블록(32)의 유효 LBA 카운트를 포함하고, 이는 FMS(48)이 데이터 블록(32)의 유효 데이터 파일들의 양을 식별하는 허용한다. 기술자 파일(120)은 기술자 엔트리(56)와 연관된 데이터 블록(32)의 최저 물리적 페이지에 보유되는 유효 데이터 파일(58)에 대응하는 LBA 엔트리(54)에 기술자 엔트리(56)를 링크시키는 부가적인 포인터를 포함한다. 이하에 논의되는 바와 같이, 각각의 데이터 파일(58)이 비유효(invalid)로 표기될 때(예를 들어, 데이터 파일(58)은 앵커 데이터 블록(32)에 재기록됨), 기술자 파일(120)의 포인터는 비유효 데이터 파일(58)에 대응하는 LBA 엔트리(54)가 LBA 엔트리들(54)의 리스트(도 3에 도시됨)로부터 제거되는 것을 허용한다. 비유효 데이터 파일(58)은 더 이상 필요하지 않기 때문에, 검색 가능한 유효 LBA들의 리스트로부터 대응하는 LBA 엔트리(5)의 제거는 추가로 검색 하드웨어(20)의 검색 시간들을 감소시킨다.
파일 관리 시스템의 로딩 및 업데이팅
도 8A 내지 8F는 테이블 블록들(104) 및 앵커 블록들(106)의 개략적인 예시이며, 테이블 블록(104)으로부터 버퍼(16)로 FMS(48)를 로딩 및 업데이팅하기 위한 방법을 예시한다. FMS(48)가 버퍼(16)에서 동작하는 동안, 주어진 데이터 블록(32)이 변경(예를 들어, 소거, 기록 등)되는 NVM(18)의 각 이벤트는 FMS(48)가 각 데이터 블록(32)에 대한 적절한 상태를 갖는 것을 보장하기 위해 FMS(48)의 업데이트를 요구한다. 그럼으로써 특정한 이벤트가 발생할 때, 버퍼(16)의 FMS(48)는 그 이벤트를 고려하도록 직접 업데이트될 수 있다. 그러나 이 지점에서, 버퍼(16)의 FMS(48)의 업데이트된 버전은 이제 NVM(18)에 저장된 버전과 상이하다. 그럼으로써, 일 실시예에서, 버퍼(16)의 FMS(48)의 업데이트된 버전은 비-휘발성 저장을 위해 NVM(18)에 주기적으로 기록될 수 있고 FMS(48)의 구 버전은 소거될 수 있다.
그러나 NVM(18)에 FMS(48)를 저장하기 위한 각각의 기록 동작은 상당한 자원들을 필요로 할 수 있으며, 그에 따라 저장 디바이스(10)의 동작 효율성을 감소시킨다. 대신에, 대안적인 실시예에서, FMS(48)의 업데이트된 버전은 단일의 기록 동작 동안 NVM(18)에 기록될 수 있다. 그 단일의 기록 동작 이후에, 저널 엔트리들은 하나 이상의 데이터 블록들(32)을 변경하는 임의의 후속적인 이벤트를 레코딩하도록 생성될 수 있다. 각각의 저널 엔트리는 미리 결정된 수의 저널 엔트리들이 생성된 이후와 같이 트리거 이벤트가 발생할 때까지 버퍼(16)에 우선 보유될 수 있다. 트리거 이벤트가 발생할 때, 생성된 저널 엔트리들은 그 후 비-휘발성 저장을 위해 NVM(18)에 기록될 수 있다. 트리거 이벤트가 발생할 때까지 저널 엔트리들의 기록을 지연시키는 것은 추가로 저장 디바이스(10)의 메모리 대역폭에 대한 여파(impact)를 감소시킨다.
FMS(48)는 저널 엔트리들을 NVM(18)에 기록하기 위한 다양한 상이한 트리거 이벤트들을 포함할 수 있다. 일 실시예에서, 트리거 이벤트는 상술한 바와 같이 미리 결정된 수의 저널 엔트리들의 생성을 포함할 수 있다. 각각의 저널 엔트리는 주어진 데이터 블록(32)의 상태의 변경(예를 들어, 데이터 블록(32)의 소거)에 관한 정보를 보유한다. 그러므로 각각의 저널 엔트리는 크기가 더 작을 수 있고(예를 들어, 약 64 바이트) 저널 엔트리들의 실제 수는 버퍼(16)의 저장 볼륨에 실제로 영향을 미치지 않고 버퍼(16)에 보유될 수 있다. 기록 이벤트를 트리거하기 이전에 버퍼(16)에서 생성될 수 있는 저널 엔트리들의 적합한 수의 예들은 약 50 저널 엔트리들 내지 약 1,000 저널 엔트리들의 범위에 있고, 특히 적합한 수는 약 100 저널 엔트리들 내지 약 500 저널 엔트리들의 범위에 있다. 예를 들어, 저널 엔트리들은 특정한 크기가 도달(예를 들어, 2-4 킬로바이트)될 때까지 누적될 수 있다.
저널 엔트리들이 NVM(18) 상에 저장된 이후, 업데이트된 FMS(48)는 그 후 저장 디바이스(10)의 다음 시동 동안 재생성될 수 있다. 이하에 논의되는 바와 같이, FMS(48)의 제 1 어레이(50) 및 제 2 어레이(52)는 NVM(18)으로부터 버퍼(16)로 로딩된 이후, 저널 엔트리들은 그 후 로딩된 FMS(48)를 업데이트하기 위해 버퍼(16)에 순차적으로 로딩될 수 있다. 저널 엔트리들은 바람직하게는, 업데이트된 FMS(48)을 정확히 재생성하기 위해 이들이 생성된 것과 동일한 순차적인 순서로 NVM(18)에 저장되고 버퍼(16)에 로딩된다. FMS(48)가 저널 엔트리들로 업데이트된 이후, 동일한 프로세스가 그 후에 저장 디바이스(10)의 메모리 대역폭을 또한 보존하면서 업데이트된 FMS(48)를 유지하도록 반복될 수 있다.
도 8A에 도시된 바와 같이, 테이블 블록들(104)은 어레이 블록들(122) 및 저널 엔트리 블록들(124)은 포함하고, 여기서 저널 엔트리 블록들(124)은 포인터(126)로 어레이 블록들(122)에 링크된다. 어레이 블록들(122)은 제 1 어레이(50) 및 제 2 어레이(52)(도 2에서 도시됨)를 포함하는 데이터 블록들이다. 제 1 어레이 및 제 2 어레이를 저장하는데 필요로 되는 어레이 블록들(122)의 수는 제 1 어레이(50) 및 제 2 어레이(52)의 길이들에 의존하여 변할 수 있다.
저널 엔트리 블록들(124)은 저널 엔트리들의 어레이를 포함하고, 저널 엔트리들의 어레이는 제 1 어레이(50)의 LBA 엔트리들(54) 및 제 2 어레이(52)의 기술자 엔트리들(56)에 대한 업데이트들이다. 저널 엔트리 어레이를 저장하는데 필요로 되는 저널 엔트리 블록들(124)의 수는 또한 저널 엔트리 어레이의 길이에 의존하여 변할 수 있다. 도 8A에서 추가로 도시되는 바와 같이, 포인터(126)는 어레이 블록들(122)의 마지막 데이터 블록(어레이 블록(122m)으로서 지칭됨)을 저널 엔트리 블록들(124)의 최초 데이터 블록(저널 엔트리 블록(124a)으로서 지칭됨)에 링크한다.
도시된 예에서, 앵커 블록들(106)은 마지막 앵커 블록(106c)이 제 1 앵커 블록(106a)에 다시(back) 링크되도록 폐루프 리스트에 링크된 3개의 앵커 블록들(106a, 106b 및 106c)을 포함한다. 추가로 도시되는 바와 같이, 앵커 블록(106a)은 포인터(128) 및 표기된 페이지(130)를 포함하며, 여기서 포인터(128)는 앵커 블록(106a)을 어레이 블록들(122)의 최초 데이터 블록(어레이 블록(122a)으로서 지칭됨)에 링크한다. 표기된 페이지(130)는 제어기(12)가 앵커 블록(106)이 활성 포인터(128)를 포함하는지를 식별하는 것을 허용하는 표기자(marker)이다. 그 결과, 앵커 블록들(106)은 바람직하게는 단지 단일의 앵커 블록(106)이 임의의 주어진 시간에 표기된 페이지(예를 들어, 표기된 페이지(130))만을 포함하도록 세팅된다.
저장 디바이스(10)의 시동 동안, 제어기(12)는 표기된 앵커 블록(106)(즉, 현재의 예에서 앵커 블록(106a)인, 표기된 페이지(130)를 포함하는 앵커 블록)을 식별하도록 앵커 블록들(106)을 스캔할 수 있다. 제어기(12)는 그 후 NVM(18)에서의 어레이 블록들(122)의 위치를 식별하도록 앵커 블록(106a)으로부터 어레이 블록(122a)으로 포인터가 이어지게 할 수 있다. FMS(48)의 데이터 파일들(즉, 제 1 어레이(50) 및 제 2 어레이(52))는 그 후 어레이 블록들(122)로부터 버퍼(16)로 로딩될 수 있다. 특히, 제어기(!2)는 어레이 블록(122a)으로부터의 데이터 파일들을 판독 및 기록하고, 그 후 다음의 연속적인 어레이 블록들(122)에 링크하고, 어레이 블록들(122)의 데이터 파일들 모두가 버퍼(16)에 기록될 때까지 동일한 판독 및 기록 동작들을 수행할 수 있다.
FMS(48)의 데이터 파일들이 버퍼(16)에 기록된 이후, 제어기(12)는 그 후 어레이 블록(122m)으로부터 저널 엔트리 블록(124a)으로 포인터(126)를 이어지게 하고 저널 엔트리 블록들(124)의 저널 엔트리 어레이를 버퍼(16)에 판독한다. 특히, 제어기(12)는 저널 엔트리 블록(124a)으로부터 데이터 파일들을 판독 및 기록하고, 그 후 다음의 연속적인 저널 엔트리 블록들(124)에 링크하고 저널 엔트리 블록들(124)의 데이터 파일들 모두가 버퍼(16)에 기록될 때까지 동일한 판독 및 기록 동작들을 수행한다. 아래에서 논의되는 바와 같이, 이는 저널 엔트리들에 보유된 정보로 FMS(48)의 기술자 엔트리들(56) 및 LBA 엔트리들(54)을, 이들이 생성되었던 순서로 업데이트하고, 그럼으로써 NVM(18) 및 HDA(22)와의 후속적인 판독 및 기록 동작들에서 이용하기 위해 업데이트된 FMS(48)를 제공한다.
FMS(48)이 버퍼(16)에서 업데이트된 이후, 업데이트된 버전은 비-휘발성 저장을 위해 NVM(18) 및/또는 HDA(22)에 다시 기록될 수 있다. 기록 동작은 미리 결정된 수의 저널 엔트리들이 생성된 이후와 같이 하나 이상의 트리거 이벤트들이 발생한 이후 수행될 수 있다. 대안적으로, 기록 동작은 FMS(48)가 업데이트된 이후 임의의 시간에 수행될 수 있다.
도 8B에서 도시되는 바와 같이, FMS(48)의 새로운 업데이트된 버전이 NVM(18)에 기록될 때, NVM(18)은 테이블 블록들(104old) 및 테이블 블록들(104new)로서 지칭되는 별개의 테이블 블록들(104)에 포함된 FMS(48)의 2개의 버전들을 보유한다. 이 예에서, 테이블 블록들(104old)은 FMS(48)의 구 버전을 포함하는, 도 8A에서 위에서 도시된 테이블 블록들(104)을 지칭하고, 테이블 블록들(104new)은 FMS(48)의 새로운 버전을 포함한다. 도 8B에서 도시되는 바와 같이, 테이블 블록들(104new)은 제 1 어레이(50) 및 제 2 어레이(52)의 업데이트된 버전을 포함하고 어레이 블록들(122)과 동일함 방식으로 기능할 수 있는 어레이 블록들(132)을 포함한다.
FMS(48)의 업데이트된 버전은 자유 그룹(84)의 리스트에서 최초 자유 블록(98)을 우선 식별함으로써 테이블 블록들(104new)에 기록될 수 있다. 제어기(12)는 그 후 최초 자유 블록(98)이 충전될 때까지 FMS(48)의 업데이트된 버전을 최초 자유 블록(98)에 기록할 수 있다. 자유 그룹(84) 내의 다음의 연속적인 자유 블록들은 그 후 업데이트된 FMS(48)의 데이터 블록들 모두가 NVM(18)에 기록될 때까지 식별되고 기록될 수 있다. 각각의 충전된 블록은 바람직하게는 충전된 블록들을 링크하도록 리스트 내의 다음의 데이터 블록에 대한 포인터를 포함한다.
도 8C에서 도시되는 바와 같이, 어레이 블록들(132)이 기록된 이후, 부가적인 자유 블록(98)은 저널 엔트리 블록(134a)으로서 이용하도록 식별될 수 있다. 이는 업데이트된 FMS(48)의 마지막 어레이 블록(132)(어레이 블록(132m)으로서 지칭됨)으로부터 저널 엔트리 블록(134a)으로의 포인터(136)를 생성함으로써 수행될 수 있다.
도 8D에서 도시된 바와 같이, 어레이 블록들(132)이 기록된 이후, 앵커 그룹(92)의 폐-루프 리스트내의 다음의 앵커 블록(106)은 활성 포인터를 포함하는 표기된 앵커 블록으로서 표기된다. 현재의 예에서, 포인터(138) 및 표기된 페이지(140)는 앵커 블록(106b)에 기록된다. 이는 제어기(12)가 테이블 블록(104new)에 저장된 업데이트된 FMS(48)에 대한 활성 포인터(138)를 포함하는 것으로서 앵커 블록(106b)을 식별하는 것을 허용한다. 이에 따라, 포인터(138)는 앵커 블록(106b)을 어레이 블록(132a)에 링크하도록 앵커 블록(106b)으로부터 제 1 어레이 블록(132)(어레이 블록(132a)으로서 지칭됨)으로 생성될 수 있다. 앵커 블록(106b)이 표기된 후, 앵커 블록(106a)은 표기된 페이지(130) 및 포인터(128)를 제거하도록 소거될 수 있다. 이는 업데이트된 FMS(48)에 대한 활성 포인터를 포함하는 것으로서 두 개 이상의 앵커 블록들(106)을 식별하는 제어기(12)의 위험을 감소시킨다.
FMS(48)의 동작은 바람직하게는 호스트 컴퓨터에 투명하기 않기 때문에 LBA 범위들은 통상적으로 테이블 블록들(104) 및 앵커 블록들(106)과 연관되지 않는다. 따라서 LBA 엔트리들(54)은 FMS(48)의 업데이트된 버전을 테이블 블록들(104new)에 기록할 때 생성될 필요가 없다. 그러나 위에서 언급된 단계들 각각은 연관된 기술자 엔트리들(56)에 관하여 테이블 블록들(104) 및 앵커 블록들(106)의 상태들을 변경한다. 그럼으로써, 버퍼(16)의 FMS(48)는 기술자 엔트리들(56)에 대한 이러한 변경들을 참작하여 업데이트될 수 있다. 또한, 기술자 엔트리들(56)에서의 변경들을 레코딩하는 저널 엔트리들이 버퍼(16)에서 생성되고 저장될 수 있다. 버퍼(16)의 FMS로의 업데이트 및 버퍼(16) 내의 저널 엔트리들의 생성은 기록/소거 동작들 이전, 그동안, 또는 그 이후에 임의의 포인터에서 수행될 수 있다.
예를 들어, 데이터가 어레이 블록(132a)에 기록되었기 때문에, 어레이 블록(132a)과 연관된 기술자 엔트리(56)는 "자유" 로부터 "테이블"로 어레이 블록(132a)의 상태를 스위칭하도록 업데이트될 수 있고, 기술자 엔트리(56)의 포인터들은 자유 그룹(84)으로부터 테이블 그룹(90)으로 기술자 엔트리(56)를 링크하도록 리드렉트될 수 있다. 동일한 프로세스는 그 후 NVM(18)에 기록된 각각의 데이터 파일에 대해 반복될 수 있다.
도 8E에서 도시된 바와 같이, 업데이트된 FMS(48)가 테이블 블록(104new)에 기록되면, 테이블 블록들(104old) 내의 FMS(48)의 구 버전은 소거를 위해 폐기 그룹(82)으로 스위칭될 수 있다. 그럼으로써, 버퍼(16) 내의 FMS(48)는 이 변경들을 참작하여 업데이트될 수 있고, 연관된 기술자 엔트리들(56)에서의 변경들을 레코딩하는 저널 엔트리들은 버퍼(16)에서 생성되고 저장될 수 있다. 예를 들어, 테이블 블록들(104old)과 연관된 기술자 엔트리들(56)은 "테이블"로부터 "폐기"로 데이터 블록들의 상태를 스위칭하도록 업데이트되고 기술자 엔트리들(56)의 포인터들은 테이블 그룹(90)으로부터 폐기 그룹(82)으로 기술자 엔트리들(56)을 링크하도로 리드렉트될 수 있다.
도 8F에서 도시된 바와 같이, 후속적인 변경들이 데이터 블록들(32)에 대해 발생하기 때문에, 부가적인 저널 엔트리들이 버퍼(16)에 기록될 수 있다. 트리거 이벤트가 발생한 이후, 저널 엔트리들은 그 후 저널 엔트리 블록(134a)에 기록될 수 있다. 저널 엔트리 블록(134a)이 마침내 저널 엔트리들로 충전되면, 부가적인 자유 블록들(98)이 획득되고 후속적인 저널 엔트리 블록들(134)에서 저널 엔트리들의 어레이를 지속하도록 저널 엔트리 블록(134a)에 링크될 수 있다. 버퍼(16) 내의 FMS(48)는 이 변경들을 참작하여 업데이트될 수 있고, 기록되는 저널 엔트리 블록들(134)과 연관된 기술자 엔트리들(56)의 변경들을 레코딩하는 저널 엔트리들이 버퍼(16)에서 생성되고 저장될 수 있다. 이는 저널 엔트리 블록들(134)에 기록된 후속적인 저널 엔트리들이 다음의 로딩 프로세스 동안(예를 들어, 저장 디바이스(10)의 다음 시동 동안) 어레이 블록들(132)을 갖는 버퍼(16)에 로딩되는 것을 허용한다.
파일 관리 시스템의 예시적인 동작들
도 9A 내지 도 9F는 FMS(48)이 NVM(18)의 데이터 블록들(32)을 관리하는 방법을 도시하는 개략적인 예시들이다. 도 9A에서 도시된 바와 같이, 현재의 예에서, LBA들(100 내지 131)에 대응하는 데이터 파일(58a)은 임시의 비-휘발성 저장(예를 들어, HDA(22)의 저장 디스크(34)가 유휴인 동안)을 위해 호스트 컴퓨터로부터 NVM(18)으로 기록된다. 이는 먼저 최저 소거 카운트를 갖는 자유 그룹(84)의 데이터 블록(32)(데이터 블록(32a)으로서 지칭됨)을 획득하는 것을 포함한다. LBA들(100 내지 131)을 커버하는 LBA 엔트리(54a)는 그 후 버퍼(16)에서 생성될 수 있다(즉, 버퍼(16)의 FMS(48)는 LBA 엔트리(54a)로 업데이트됨).
LBA 엔트리(54a)는 데이터 파일(58a)의 시작 LBA 어드레스(즉, "100") 및 데이터 차일(58a)의 LBA 범위의 길이(즉, "32")를 포함할 수 있다. LBA 엔트리(54a)는 또한 번호 LBA 순서로 LBA 엔트리들(54)의 링크된 리스트에 LBA 엔트리(54a)를 삽입하기 위한 포인터(144)를 포함할 수 있다. 논의의 용이성을 위해, 이하의 논의는 LBA 엔트리들(54) 및 기술자 엔트리들(56)이 위에서 논의된 바와 같이 리스트들을 생성하기 위해 "이전의 포인터들" 및 "다음의 포인터들"을 포함할 수 있다는 것을 이해하는 것과 더불어 LBA 엔트리들(54) 및 기술자 블록들(56)로부터의 "이전의 포인터들"을 생략한다. LBA 엔트리(54a)는 또한 바람직하게는 데이터 파일(56a)이 저장되는 최초 페이지(즉, 페이지 1)(화살표(146)에 의해 표시됨)의 데이터 블록(32a) 내의 페이지 어드레스 및 데이터 블록(32a)의 물리적 블록 어드레스를 포함한다.
데이터 블록(32a)(기술자 엔트리(56a)로서 지칭됨)과 연관된 버퍼(16) 내의 기술자 엔트리(56)는 또한 데이터 기록 동작을 참작하도록 업데이트될 수 있다. 예를 들어, 도 9A에서 도시되는 바와 같이, 블록 상태 기술자 엔트리(56a)는 "자유"로부터 "기록 데이터"로 스위칭할 수 있고 기술자 포인터(148)는 자유 그룹(84)으로부터 기록 캐시 그룹(86)으로 기술자 블록(56a)을 스위칭하도록 리드렉트될 수 있다. 또한, 기술자 엔트리(56a)의 유효한 LBA 카운트는 도시되는 바와 같이 "0"에서 "32"로 증가될 수 있다.
또한, 기술자 엔트리(56a)와 LBA 익스텐트(54a) 간의 링크를 제공하는 포인터(150)가 기술자 엔트리(56a)에 부가될 수 있다. 위에서 논의된 바와 같이, 포인터(150)는 바람직하게는 기술자 엔트리(56a)와 연관된 데이터 블록(32)의 최저 물리적 페이지에 보유된 유효 데이터 파일(58)에 대응하는 기술자 엔트리(56a)를 LBA 엔트리(54)에 링크한다. 현재의 예에서, 데이터 블록(32a)은 기술자 엔트리(56a)와 연관되고 데이터 파일(56a)은 데이터 블록(32a)(즉 페이지 1)의 최저 물리적 페이지에 보유된 유효 데이터 파일이다. 그럼으로써 포인터(150)는 기술자 엔트리(56a)를 LBA 엔트리(54a)에 링크한다.
데이터 파일(58a)은 LBA 엔트리(54a)가 생성되고 그리고/또는 기술자 엔트리(56a)가 업데이트기 이전에, 그 동안, 또는 그 후에 데이터 블록(32a)의 최초 32 페이지들에 기록될 수 있다. 하나 이상의 저절 엔트리들은 또한 LBA 엔트리(54a)의 생성을 레고딩하기 위해 그리고 기술자 엔트리들(56a)에 대한 업데이트를 레코딩하기 위해, 데이터 블록(32a)으로의 데이터 파일(58a)의 기록을 레코딩하기 위해 버퍼(16)에서 생성될 수 있다. 위에서 논의된 바와 같이, 저널 엔트리들은 트리거 이벤트가 발생할 때와 같이 적절한 후속 지점에 NVM(18)에 기록될 수 있다.
도 9B에서 도시된 바와 같이, LBA들(200 내지 219)에 대응하는 데이터 파일(58b)이 이제 호스트 컴퓨터로부터 NVM(18)으로 기록된다. 이 지점에서, 데이터 블록(32a)은 잔여 자유 페이지들(즉 유효 LBA 카운트가 한계에 도달하지 않음)이 존재하기 때문에, 데이터 블록(32a)은 이 기록 동작을 위해 여전히 이용될 수 있다. 그러나 이는 새로운 데이터 파일이기 때문에, 새로운 LBA 엔트리(54)가 LBA들(200 내지 219)(LBA 엔트리(54)로서 지칭됨)에 대한 버퍼(16)에서 생성될 수 있다. LBA 엔트리(54b)는 데이터 파일(58b)의 시작 LBA 어드레스(즉, "200") 및 데이터 파일(58)에 대한 LBA 범위의 길이(즉 "20")를 포함할 수 있다. LBA 엔트리(54b)는 또한 번호 LBA 순서로 LBA 엔트리들(54)의 링크된 리스트에 LBA 엔트리(54b)를 삽입하기 위한 포인터(152)를 포함할 수 있다. 도 9B에서 도시된 예에서, LBA 엔트리들(54a 및 54b)은 인접한 LBA 엔트리들(54)이다. 그럼으로써, 포인터(144)는 LBA 엔트리들(54a 및 54b)을 직접 링크시키도록 리드렉트될 수 있다(그리고, LBA 엔트리(54b)는 위에서 논의되는 바와 같이 답례(reciprocating) 포인터를 포함할 수 있음).
LBA 엔트리(54b)는 또한 바람직하게는, 데이터 블록(32a)의 물리적 블록 어드레스 및 데이터 파일(58b)이 저장될(화살표(154)로 표시됨) 최초의 페이지의 데이터 블록(32a) 내의 페이지 어드레스를 포함한다. 부가적으로, LBA 엔트리(54a)는 데이터 파일(58a)에 물리적으로 인접하게 위치되는 데이터 파일(58)을 포함하는 LBA 엔트리(54)를 포인팅할 수 있는 포인터(156)를 포함할 수 있다. 현재의 예에서, 데이터 파일(58b)은 데이터 파일(58a)과 물리적으로 인접하게 위치된다. 그 결과, 포인터(156)는 LBA 엔트리(54b)를 포인팅할 수 있다. 위에서 논의된 바와 같이, 이는 캐시 플러싱 동작들에 대해서와 같이, 서로 물리적으로 인접한 데이터 파일(58)의 LBA 엔트리들(54)이 쉽게 식별되는 것을 허용한다.
버퍼(16) 내의 기술자 엔트리(56a)는 또한 이러한 데이터 기록 동작을 참작하도록 업데이트될 수 있다. 데이터 블록(32a)이 데이터 파일(58a)을 이미 포함하고 있기 때문에, 도시된 바와 같이 유효 LBA 카운트를 "32"에서 "52"로 증가시키는 것을 포함하는 기술자 엔트리(56a)에 대한 업데이트만이 행해질 필요가 있다. 데이터 파일(58b)이 기술자 엔트리(56a)와 연관된 데이터 블록(32)의 최저 물리적 페이지에 보유되지 않기 때문에, 포인터(150)는 변경되지 않는다는 것에 주의한다.
데이터 파일(58b)은 LBA 엔트리(54a)가 생성되고 그리고/또는 기술자 엔트리(56a)가 업데이트되기 이전, 그 동안, 또는 그 이후에 데이터 블록(32a)에 기록될 수 있다. 하나 이상의 부가적인 저널 엔트리들은 또한 데이터 블록(32a)으로의 데이터 파일(58b)의 기록을 레코딩하고, LBA 엔트리(54b)의 생성을 레코딩하고, LBA 엔트리(54a)에 대한 업데이트를 레코딩하고, 그리고 기술자 엔트리(56a)에 대한 업데이트를 레코딩하기 위해 버퍼(16)에서 생성될 수 있다.
도 9C에서 도시되는 바와 같이, LBA들(150 내지 169)에 대응하는 데이터 파일(58c)이 이제 호스트 컴퓨터로부터 NVM(18)로 기록된다. 이 지점에서, 데이터 블록(32a)은 잔여 자유 페이지들을 갖기 때문에(즉, 유효 LBA 카운트가 한계에 도달되지 않음), 데이터 블록(32a)은 이 기록 동작을 위해 여전히 이용될 수 있다. 그러나 이것은 새로운 데이터 파일이므로, 새로운 LBA 엔트리(54)가 LBA들(150 내지 169)에 대한 버퍼(16)에 생성될 수 있다(LBA 엔트리(54c)로서 지칭됨). LBA 엔트리(54c)는 데이터 파일(58c)에 대한 시작 LBA 어드레스(즉, "150)") 및 데이터 파일(58c)에 대한 LBA 범위의 길이(즉, "20")를 포함할 수 있다.
LBA 엔트리(54c)는 또한 번호 LBA 순서로 LBA 엔트리들(54)의 링크된 리스트에 LBA 엔트리(54c)를 삽입하기 위한 포인터(158)를 포함할 수 있다. 도 9B에서 도시된 예에서, LBA 엔트리(54c)는 수치적으로 LBA 엔트리(54a)와 LBA 엔트리(54b) 사이에 있다. 그럼으로써, 포인터들(144 및 158)은 도시되는 바와 같이 LBA 엔트리(54a)와 LBA 엔트리(54b) 사이에 LBA 엔트리(54c)를 직접 링크하도록 리드렉트될 수 있다.
LBA 엔트리(54c)는 또한 데이터 파일(58c)이 저장될(화살표(160)로 표현됨) 최초 페이지의 데이터 블록(32a) 내의 페이지 어드레스와 데이터 블록(32a)의 물리적 블록 어드레스를 포함한다. 또한, LBA 엔트리(54b)는 데이터 파일(58b)에 물리적으로 인접하게 위치된 데이터 파일(58)을 포함하는 LBA 엔트리(54)를 포인팅할 수 있는 포인터(162)를 포함할 수 있다. 현재의 예에서, 데이터 파일(58c)은 데이터 파일(58b)에 물리적으로 인접하게 위치된다. 그 결과, 포인터(162)는 LBA 엔트리(54c)를 포인팅할 수 있다. 또한, LBA 엔트리들(54a, 54b, 및 54c)의 재순서화에도 불구하고, 포인터(156)는 데이터 파일(58b)이 데이터 파일(58a)에 물리적으로 인접한 채로 유지되기 때문에 LBA 엔트리(54a)로부터 LBA 엔트리(54b)로 링크된 채로 유지된다.
버퍼(16) 내의 기술자 엔트리(56a)가 이러한 데이터 기록 동작을 참작하도록 업데이트될 수 있다. 데이터 블록(32a)이 이미 데이터 파일들(58a 및 58b)을 포함하고 있기 때문에, 도시된 바와 같이 "52"에서 "64"로 유효 LBA 카운트를 증가시키는 것을 포함하는 기술자 엔트리(56a)에 대한 업데이트만이 이루어질 필요가 있다. 또한, 데이터 블록(32a)이 전체(fully) 기록 데이터 파일(58c)에 대한 충분한 자유 페이지들을 포함하고 있지 않기 때문에, 최저 소거 카운트를 갖는 자유 그룹(84) 내의 다음의 데이터 블록(32)(데이터 블록(32b)으로서 지칭됨)이 획득될 수 있다.
데이터 블록(32b)과 연관된 버퍼(16) 내의 기술자 엔트리(56)(기술자 엔트리(56b)로서 지칭됨)는 또한 데이터 기록 동작을 참작하도록 업데이트될 수 있다. 예를 들어, 도 9C에 도시된 바와 같이, 블록 상태 기술자 엔트리(56b)는 "자유"로부터 "기록 데이터"로 스위칭될 수 있고, 기술자 포인터(164)는 자유 그룹(84)으로부터 기록 캐시 그룹(86)으로 기술자 블록(56b)을 스위칭하도록 리드텍트될 수 있다. 기술자 엔트리(56a)의 유효 LBA 카운트는 또한 도시된 바와 같이 "0"에서 "8"로 증가될 수 있다. 또한, 기술자 엔트리(56a)의 포인터(148)는 양자의 기술자 엔트리들(56a 및 56b)이 이제 기록 캐시 그룹(86)의 리스트에 있기 때문에 기술자 엔트리(56b)에 링크하도록 위치될 수 있다.
또한, 기술자 엔트리(56b)와 LBA 익스텐트(54c) 간의 링크를 제공하는 포인터(166)는 기술자 엔트리(56b)에 부가될 수 있다. 위에서 논의된 바와 같이, 포인터(166)는 바람직하게는 기술자 엔트리(56b)와 연관된 데이터 블록(32)의 최저 물리적 페이지에 보유되는 유효 데이터 파일(58)에 대응하는 기술자 엔트리(56b)를 LBA 엔트리(54)에 링크한다. 현재의 예에서, 데이터 블록(32b)은 기술자 엔트리(56b)와 연관되고 데이터 파일(58c)은 데이터 블록(32b)의 최저 물리적 페이지(즉, 페이지 1)에 보유되는 유효 데이터 파일이다. LBA 엔트리(54c)는 데이터 파일(58c)에 대응하는 LBA 엔트리(54)이다. 그럼으로써, 포인터(166)는 기술자 엔트리(56b)를 LBA 엔트리(54c)에 링크한다.
데이터 파일(58c)은 LBA 엔트리(54c)가 생성되고 그리고/또는 기술자 엔트리들(56a 및 56b)이 업데이트되기 이전에, 그 동안, 또는 그 이후에 데이터 블록(32a 및 32b)에 기록될 수 있다. 하나 이상의 부가적인 저널 엔트리들은 또한 데이터 블록들(32a)로의 데이터 파일(58c)의 기록을 레코딩하기 위해, LBA 엔트리(54c)의 생성을 레코딩하기 위해, LBA 엔트리들(54a 및 54c)에 대한 업데이트들을 레코딩하기 위해 그리고 기술자 엔트리들(56a 및 56b)에 대한 업데이트를 레코딩하기 위해 버퍼(16)에서 생성될 수 있다.
저장 디바이스(10)의 후속적인 동작 동안, 호스트 컴퓨터는 LBA들(100 내지 131)에 대응하는 데이터 파일(58a)이 NVM(18)으로부터 판독되도록 요청할 수 있다. 검색 하드웨어(20)는 위에서 논의된 바와 같이, LBA 엔트리(54a)가 원하는 LBA 범위를 갖는 것으로서 식별될 때까지 LBA 엔트리들(54)을 검색할 수 있다. LBA 엔트리(54a)의 페이지 어드레스 및 물리적 블록 어드레스에 기초하여, 펌웨어는 그 후 데이터 블록(32a)을 발견하고 데이터 블록(58a)을 버퍼(16)에 판독하고, 그 후에 호스트 인터페이스(24)를 통해 호스트 컴퓨터에 데이터 파일(58a)을 전송할 수 있다.
유사하게, 호스트 컴퓨터가 LBA들(200 내지 219)에 대응하는 데이터 파일(58b)을 요청할 때, 검색 하드웨어(20)는 LBA 엔트리(54b)가 원하는 LBA 범위를 갖는 것으로서 식별될 때까지 LBA 엔트리들(54)을 검색할 수 있다. 위에서 논의된 바와 같이, 데이터 파일들(54a, 54b, 및 54c)이 NVM(18)에 기록되는 순서와 관계없이, LBA 엔트리들(54)은 검색 하드웨어(20)와 관련된 검색의 복잡성을 감소시키기 위해 번호 LBA 순서로 제공될 수 있다. LBA 엔트리(54b)의 페이지 어드레스 및 물리적 블록 어드레스에 기초하여, 펌웨어는 그 후 데이터 블록(32a)을 발견하고 데이터 파일(58b)을 버퍼(16)에 판독하고, 그 후에 데이터 파일(58b)을 호스트 인터페이스(24)를 통해 호스트 컴퓨터에 전송한다.
마지막으로, 호스트 컴퓨터가 LBA들(150 내지 169)에 대응하는 데이터 파일(58c)을 요청할 때, 검색 하드웨어(20)는 LBA 엔트리(54c)가 원하는 LBA 범위를 갖는 것으로 식별될 때까지 LBA 엔트리들(54)을 검색할 수 있다. LBA 엔트리(54c)의 페이지 어드레스 및 물리적 블록 어드레스에 기초하여, 펌웨어는 그 후 데이터 블록(32c)을 발견하고 데이터 파일(58c)을 버퍼(16)에 판독할 수 있다. 그러나 이 예에서, 데이터 파일(58c)은 데이터 블록(32b)으로 연장한다. 데이터 블록(32b)은 기술자 엔트리들(56a 및 56b)의 정보를 검토함으로써 발견될 수 있다. 특히, 펌웨어는 기술자 엔트리(56b)가 기술자 엔트리(56a)로부터 다음의 기술자 엔트리(56)임을 식별할 수 있다. 각각의 기술자 엔트리(56)가 바람직하게는 단일의 데이터 블록(32)과 연관되기 때문에, 데이터 블록(32b)은 그 후 데이터 블록(32a)으로부터의 다음의 데이터 블록(32)으로서 그리고 데이터 파일(58c)의 잔여 부분을 포함하는 데이터 블록(32)으로서 식별될 수 있다. 펌웨어는 그 후 데이터 블록(32b)을 발견하고 데이터 파일(58c)의 잔여 부분을 버퍼(16)에 판독할 수 있다. 데이터 파일(58b)은 그 후 호스트 인터페이스(24)를 통해 호스트 컴퓨터에 전송될 수 있다.
데이터 파일(58a)과 같은 특정한 데이터 파일(58)이 더 이상 필요하지 않을 때, 기술자 엔트리(56a)의 유효 LBA 카운트는 데이터 파일(58a)의 LBA들의 수만큼(즉, 32만큼) 감소될 수 있다. LBA 엔트리(54a)는 그 후 데이터 파일(58a)에 대한 LBA 범위를 포함하는 LBA 엔트리(54)로서 포인터(150)를 통해 식별될 수 있다.
도 9D에 도시된 바와 같이, LBA 엔트리(54a)는 그 후 LBA 엔트리들(54)의 리스트로부터 제거될 수 있고, 잔여 LBA 엔트리들(54)은 번호 LBA 순서를 유지하도록 재-링크될 수 있다. 이는 검색 가능한 데이터 파일들(58)의 리스트로부터 데이터 파일(58a)을 유효하게 제거하고, 그에 의해 LBA 엔트리들(54)의 맵핑표의 크기를 감소시킨다.
부가적으로, 데이터 파일(58a)이 더 이상 유효하지 않기 때문에, 데이터 파일(58b)은 이제 데이터 블록(32a)의 최저 물리적 페이지에 보유된 유효 데이터 파일(58)이다. 그럼으로써, 도 9D에서 도시된 바와 같이, 포인터(150)는 데이터 파일(58b)에 대응하는 LBA 엔트리(54)인 LBA 엔트리(54b)에 리드렉트될 수 있다. 하나 이상의 저널 엔트리들은 또한 데이터 파일(58a)의 비유효성을 레코딩하기 위해, LBA 엔트리(54a)의 제거를 레코딩하기 위해, 그리고 기술자 엔트리(56a)에 대한 업데이트를 레코딩하기 위해 버퍼(16)에서 생성될 수 있다.
유사하게, 데이터 파일(58c)이 더 이상 필요하지 않을 때, 기술자 엔트리(56a)의 유효 LBA 카운트는 데이터 파일(58a)의 LBA들의 수만큼(즉, 20만큼) 재차 감소될 수 있다. LBA 엔트리(54b)는 그 후 데이터 파일(58b)의 LBA 범위를 포함하는 LBA 엔트리(54)로서 포인터(150)를 통해 식별될 수 있다.
도 9E에서 도시된 바와 같이, LBA 엔트리(54b)는 그 후 LBA 엔트리들(54)의 리스트로부터 제거될 수 있고, 잔여 LBA 엔트리들(54)은 번호 LBA 순서를 유지하도록 재-링크될 수 있다. 이는 검색 가능한 데이터 파일들(58)의 리스트로부터 데이터 파일(58b)을 유효하게 제거하고, 그에 의해 LBA 엔트리들(54)의 맵핑표의 크기를 추가로 감소시킨다.
부가적으로, 데이터 파일(58b)이 더 이상 유효하지 않기 때문에, 데이터 파일(58c)은 이제 데이터 블록(32a)의 최저 물리적 페이지에 보유되는 유효 데이터 파일(58)이다. 그럼으로써, 도 9E에서 도시되는 바와 같이, 포인터(150)는 데이터 파일(58c)에 대응하는 LBA 엔트리(54)인 LBA 엔트리(54c)에 리드렉트될 수 있다(즉, 포인터들(150 및 166) 둘 다는 LBA 엔트리(54c)에 링크됨). 하나 이상의 저널 엔트리들은 또한 데이터 파일(58b)의 비유효성을 레코딩하기 위해, LBA 엔트리(54b)의 제거를 레코딩하기 위해, 기술자 엔트리(56a)에 대한 업데이트들을 레코딩하기 위해 버퍼(!6)에서 생성될 수 있다.
마지막으로, 데이터 파일(58c)이 더 이상 필요하지 않을 때, 기술자 엔트리(56a)의 유효 LBA 카운트는 데이터 파일(58a)의 LBA들의 수만큼(즉, 12만큼) 재차 감소될 수 있고 기술자 엔트리(56b)의 유효 LBA 카운트는 데이터 파일(58a)의 LBA들의 잔여 수만큼(즉, 8만큼) 감소될 수 있다. LBA 엔트리(54c)는 그 후 데이터 파일(58c)에 대한 LBA 범위를 포함하는 LBA 엔트리(54)로서 포인터(150) 또는 포인터(166) 중 어느 하나를 통해 식별될 수 있다.
도 9F에 도시된 바와 같이, LBA 엔트리(54c)는 그 후 LBA 엔트리들(54)의 리스트로부터 제거될 수 있고 잔여 LBA 엔트리들(54)은 번호 LBA 순서를 유지하도록 재-링크될 수 있다. 이는 검색 가능한 데이터 파일들(58)의 리스트로부터 데이터 파일(58c)을 제거하고 그럼으로써 LBA 엔트리들(54)의 맵핑표의 크기를 더 추가로 감소시킨다. 하나 이상의 저널 엔트리들은 또한 데이터 파일(58c)의 비유효성을 레코딩하기 위해, LBA 엔트리(54c)의 제거를 레코딩하기 위해 기술자 엔트리들(56a 및 56b)에 대한 업데이트들을 레코딩하기 위해 버퍼(16)에서 생성될 수 있다.
도 9F에서 추가로 도시되는 바와 같이, 데이터 블록(32a)은 전체가 비유효한 데이터 파일들(기술자 엔트리(56a)에서 "0"의 LBA 카운트에 의해 표시되는 바와 같이)이기 때문에, 데이터 블록(32a)은 후속 사용을 위해 폐기 및 소거될 수 있다. 이는 "기록 캐시"로부터 "폐기"로 기술자 블록(56a)의 블록 상태를 스위칭하고, 기록 캐시 그룹(86)으로부터 폐기 그룹(82)으로 기술자 엔트리(56a)를 링크하도록 포인터(148)를 리드렉트함으로써 수행될 수 있다. 이는 기록 캐시 블록들(100)의 리스트로부터 데이터 블록(32a)을 제거한다. 적절한 후속 지점에서, 데이터 블록(32a)은 그 후 위에서 논의된 바와 같이 소거될 수 있다.
데이터 파일들(58)과 연관된 LBA 엔트리들(54) 및 데이터 블록들(32)과 연관된 기술자 엔트리들(56)의 이용은 FMS(48)이 NVM(18)과의 판독, 기록 및 소거 동작들을 효율적으로 관리하는 것을 허용한다. 위에서 논의된 바와 같이, LBA 엔트리들(54)은 판독 동작들 동안 검색 시간들을 감소시킬 수 있는 유효 LBA들의 하드웨어-검색 가능한 표를 제공한다. 또한, 기술자 엔트리(56)는 데이터 블록들(32)에 관한 정보를 제공함으로써 LBA 엔트리들(54)을 보충하고 그에 의해 기록 및 소거 동작들을 관리한다. LBA 엔트리들(54) 및 기술자 엔트리들(56)의 조합은 이에 따라 저장 디바이스(10)에서 데이터 블록 관리를 개선하면서도 검색 시간 및 메모리 대역폭을 감소시킨다.
본 개시가 바람직한 실시예들을 참조하여 기술되었지만, 당업자들은 본 개시의 범위 및 사상으로부터 벗어남 없는 형태 및 세부사항들로 변경들이 가해질 수 있다는 것을 인지할 것이다.

Claims (20)

  1. 디바이스로서,
    복수의 데이터 블록들을 포함하는 적어도 하나의 비-휘발성 저장 매체; 및
    파일 관리 시스템을 포함하고,
    상기 파일 관리 시스템은:
    상기 데이터 블록들에 저장된 데이터 파일들과 연관되도록 구성된 복수의 논리적 블록 어드레스 익스텐트 엔트리(logical block address extent entry)들 ― 각각의 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들은:
    상기 데이터 블록들에 저장된 상기 데이터 파일들의 상이한 데이터 파일과 연관되거나 또는 상기 데이터 블록들 내에 저장된 상기 데이터 파일들의 상이한 클러스터와 연관되도록 구성되고;
    상기 상이한 데이터 파일들의 논리적 블록 어드레스들에 기초하여 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들의 상이한 논리적 블록 어드레스 익스텐트 엔트리에 링크되고 ― 상기 논리적 블록 어드레스들은 상기 디바이스와 통신하는 호스트 컴퓨터에 의해 인식가능함 ―; 그리고
    상기 비-휘발성 저장 매체 상의 상기 상이한 데이터 파일들의 물리적 위치들에 기초하여 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 의 상이한 논리적 블록 어드레스 익스텐트 엔트리에 링크되도록 구성됨 ―
    을 포함하고,
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 제1 논리적 블록 어드레스 익스텐트 엔트리는, 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 제2 논리적 블록 어드레스 익스텐트 엔트리와 연관되는 논리적 블록 어드레스들의 범위에 기초하여 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 상기 제2 논리적 블록 어드레스 익스텐트 엔트리를 참조하고;
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 상기 제2 논리적 블록 어드레스 익스텐트 엔트리와 연관되는 상기 논리적 블록 어드레스들의 범위는 상기 디바이스와 통신하는 상기 호스트 컴퓨터에 의해 인식가능하고; 그리고
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 제1 논리적 블록 어드레스 익스텐트 엔트리는, 상기 제1 논리적 블록 어드레스 익스텐트 엔트리에 대응하는 파일과 상기 비-휘발성 저장 매체 상의 제3 논리적 블록 어드레스 익스텐트 엔트리에 대응하는 파일의 물리적 근접도에 기초하여 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 상기 제3 논리적 블록 어드레스 익스텐트 엔트리를 참조하는 포인터를 포함하고, 상기 포인터에 의한 참조는 캐시 플러싱 동작(cache flushing operation)들에 대한 식별을 위해 상기 제1 논리적 블록 어드레스 익스텐트 엔트리 및 상기 제3 논리적 블록 어드레스 익스텐트 엔트리를 구성하는,
    디바이스.
  2. 제 1 항에 있어서,
    상기 파일 관리 시스템은 상기 적어도 하나의 비-휘발성 저장 매체 상에 저장되는,
    디바이스.
  3. 제 1 항에 있어서,
    상기 파일 관리 시스템에 적어도 부분적으로 기초하여 상기 적어도 하나의 비-휘발성 저장 매체와의 동작들을 관리하도록 구성된 적어도 하나의 제어기를 더 포함하는,
    디바이스.
  4. 제 1 항에 있어서,
    상기 파일 관리 시스템은 상기 데이터 블록들과 연관되도록 구성된 복수의 기술자 엔트리들을 더 포함하고, 각각의 상기 복수의 기술자 엔트리들은 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 하나를 참조하고, 상기 복수의 기술자 엔트리들은 상기 데이터 블록들을 별개의 논리적 그룹들로 편성(organize)하도록 구성되는,
    디바이스.
  5. 제 4 항에 있어서,
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 적어도 하나는,
    상기 데이터 블록들 중 적어도 하나에 저장된 상기 데이터 파일들 중 하나의 시작 논리적 블록 어드레스(starting logical block address); 및
    상기 하나의 데이터 파일의 논리적 블록 어드레스 범위
    를 포함하는,
    디바이스.
  6. 제 4 항에 있어서,
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 적어도 하나는 상기 데이터 파일들 중 적어도 하나가 저장되는 데이터 블록들 중 하나의 데이터 블록의 물리적 블록 어드레스를 포함하는,
    디바이스.
  7. 제 4 항에 있어서,
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들은 수치적 논리적 블록 어드레스 순서(numerical logical block address order)로 링크되는,
    디바이스.
  8. 제 7 항에 있어서,
    상기 수치적 논리적 블록 어드레스 순서는 계층화된 테이블(tiered table)을 포함하는,
    디바이스.
  9. 제 4 항에 있어서,
    상기 별개의 논리적 그룹들은 폐기 그룹, 자유 그룹, 기록 캐시 그룹, 고정된 캐시 그룹, 테이블 그룹, 앵커 그룹, 결함 그룹 및 이들의 조합들로 구성된 그룹으로부터 선택되는,
    디바이스.
  10. 제 4 항에 있어서,
    상기 데이터 블록들은 복수의 앵커 블록들을 포함하고,
    상기 복수의 앵커 블록들 중 적어도 하나는 상기 데이터 블록들에 저장된 파일 관리 시스템의 적어도 하나의 버전을 포인팅(point to)하도록 구성되는,
    디바이스.
  11. 데이터 저장 시스템으로서,
    적어도 하나의 비-휘발성 저장 매체; 및
    상기 적어도 하나의 비-휘발성 저장 매체의 데이터 블록들에 저장된 데이터 파일들 상의 데이터 검색 동작들에 대한 논리적 블록 어드레스 맵핑표로서 기능하도록 구성되는 논리적 블록 어드레스 익스텐트 엔트리들의 링크된 리스트 ― 각각의 복수의 상기 논리적 블록 어드레스 익스텐트 엔트리들은:
    상기 데이터 블록들에 저장된 상기 데이터 파일들의 상이한 데이터 파일과 연관되거나 또는 상기 데이터 블록들 내에 저장된 상기 데이터 파일들의 상이한 클러스터와 연관되도록 구성되고;
    상기 상이한 데이터 파일들의 논리적 블록 어드레스들에 기초하여 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들의 상이한 논리적 블록 어드레스 익스텐트 엔트리에 링크되고 ― 상기 논리적 블록 어드레스들은 디바이스와 통신하는 호스트 컴퓨터에 의해 인식가능함 ―; 그리고
    상기 적어도 하나의 비-휘발성 저장 매체 상의 상기 상이한 데이터 파일들의 물리적 위치들에 기초하여 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들의 상이한 논리적 블록 어드레스 익스텐트 엔트리에 링크되도록 구성됨 ―
    를 포함하고,
    상기 논리적 블록 어드레스 익스텐트 엔트리들 중 제1 논리적 블록 어드레스 익스텐트 엔트리는, 상기 논리적 블록 어드레스 익스텐트 엔트리들 중 제2 논리적 블록 어드레스 익스텐트 엔트리와 연관되는 논리적 블록 어드레스들의 범위에 기초하여 상기 논리적 블록 어드레스 익스텐트 엔트리들 중 상기 제2 논리적 블록 어드레스 익스텐트 엔트리를 참조하고,
    상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 상기 제2 논리적 블록 어드레스 익스텐트 엔트리와 연관되는 상기 논리적 블록 어드레스들의 범위는 상기 디바이스와 통신하는 상기 호스트 컴퓨터에 의해 인식가능하고, 그리고
    상기 논리적 블록 어드레스 익스텐트 엔트리들 중 제1 논리적 블록 어드레스 익스텐트 엔트리는, 상기 제1 논리적 블록 어드레스 익스텐트 엔트리에 대응하는 파일과 상기 비-휘발성 저장 매체 상의 제3 논리적 블록 어드레스 익스텐트 엔트리에 대응하는 파일의 물리적 근접도에 기초하여 상기 논리적 블록 어드레스 익스텐트 엔트리들 중 제3 논리적 블록 어드레스 익스텐트 엔트리를 참조하는 포인터를 포함하고, 상기 포인터에 의한 참조는 캐시 플러싱 동작들에 대한 식별을 위해 상기 제1 논리적 블록 어드레스 익스텐트 엔트리 및 상기 제3 논리적 블록 어드레스 익스텐트 엔트리를 구성하는,
    데이터 저장 시스템.
  12. 제 11 항에 있어서,
    상기 데이터 블록들과 연관되고 그리고 상기 데이터 블록들에서의 동작들을 관리하기 위해 상기 데이터 블록들을 별개의 논리적 그룹들로 편성하도록 구성되는 복수의 기술자 엔트리들을 더 포함하고, 관리되는 동작들은 기록 동작들, 말소 동작들, 또는 이들의 조합들을 포함하고, 각각의 상기 복수의 기술자 엔트리들은 상기 복수의 논리적 블록 어드레스 익스텐트 엔트리들 중 하나를 참조하는,
    데이터 저장 시스템.
  13. 제 12 항에 있어서,
    각각의 상기 논리적 블록 어드레스 익스텐트 엔트리들은 상기 링크된 리스트 내의 이전 논리적 블록 어드레스 익스텐트 엔트리에 대한 제1 참조 및 상기 링크된 리스트 내의 연이은 논리적 블록 어드레스 엔트리에 대한 제2 참조를 포함하고, 상기 제1 참조 및 상기 제2 참조는 상기 논리적 블록 어드레스 맵핑표의 부분을 형성하는,
    데이터 저장 시스템.
  14. 제 12 항에 있어서,
    상기 별개의 논리적 그룹들 중 적어도 하나는 폐기 그룹, 자유 그룹, 기록 캐시 그룹, 고정된 캐시 그룹, 테이블 그룹, 앵커 그룹, 결함 그룹 및 이들의 조합들로 구성된 그룹으로부터 선택되는,
    데이터 저장 시스템.
  15. 호스트 컴퓨터와 통신할 수 있는 데이터 저장 디바이스를 동작시키는 방법으로서,
    상기 호스트 컴퓨터로부터, 상기 데이터 저장 디바이스에 데이터 파일을 제공하는 단계 ― 상기 데이터 파일은 비-휘발성 저장 매체의 적어도 하나의 데이터 블록에 대한 제1 논리적 블록 어드레스 범위에 대응하고, 상기 제1 논리적 블록 어드레스 범위는 상기 호스트 컴퓨터에 의해 인식가능함 ―;
    상기 제1 논리적 블록 어드레스 범위에 대응하는 제1 논리적 블록 어드레스 익스텐트 엔트리를 생성하는 단계 ― 상기 생성된 제1 논리적 블록 어드레스 익스텐트 엔트리는 상기 호스트 컴퓨터에 의해 인식가능한 제2 논리적 블록 어드레스 범위를 갖는 상기 제2 논리적 블록 어드레스 익스텐트 엔트리의 연관에 기초하여 상기 제2 논리적 블록 어드레스 익스텐트 엔트리를 참조할 수 있음 ―;
    논리적 그룹 내에 제1 데이터 블록을 할당하기 위해 상기 적어도 하나의 데이터 블록의 제1 데이터 블록과 연관된 기술자 엔트리를 업데이트하는 단계;
    상기 생성된 논리적 블록 어드레스 익스텐트 엔트리와 상기 기술자 엔트리 사이의 참조를 생성하는 단계; 및
    상기 데이터 파일의 적어도 일부를 상기 적어도 하나의 데이터 블록에 기록하는 단계
    를 포함하고,
    상기 생성된 제1 논리적 블록 어드레스 익스텐트 엔트리는 상기 비-휘발성 저장 매체 상의 제3 논리적 블록 어드레스 익스텐트 엔트리에 대응하는 파일의 물리적 위치 및 상기 적어도 하나의 데이터 블록의 근접도에 기초하여, 포인터에 의해, 상기 제3 논리적 블록 어드레스 익스텐트 엔트리를 참조할 수 있고,
    상기 포인터에 의한 참조는 상기 제1 논리적 블록 어드레스 익스텐트 엔트리 및 상기 제3 논리적 블록 어드레스 익스텐트 엔트리가 캐시 플러싱 동작들에 대해 식별될 수 있게 하고, 그리고
    상기 제1 논리적 블록 어드레스 익스텐트 엔트리, 상기 제2 논리적 블록 어드레스 익스텐트 엔트리, 및 상기 제3 논리적 블록 어드레스 익스텐트 엔트리는 논리적 블록 어드레스 익스텐트 엔트리들의 링크된 리스트의 부분이고, 각각의 논리적 블록 어드레스 엔트리는 상이한 논리적 블록 어드레스 엔트리들과 연관된 논리적 블록 어드레스 범위들에 기초하여 상이한 논리적 블록 어드레스 익스텐트 엔트리에 링크할 수 있고, 그리고 각각의 논리적 블록 어드레스 엔트리는 상기 비-휘발성 저장 매체 상의, 상기 상이한 논리적 블록 어드레스 익스텐트 엔트리들과 연관된, 데이터 파일들의 물리적 근접도에 기초하여 상이한 논리적 블록 어드레스 익스텐트 엔트리에 링크할 수 있는,
    호스트 컴퓨터와 통신할 수 있는 데이터 저장 디바이스를 동작시키는 방법.
  16. 제 15 항에 있어서,
    데이터 파일 기록, 업데이트된 기술자 엔트리 및 상기 제1 논리적 블록 어드레스 익스텐트 엔트리의 생성 중 적어도 하나에 관한 저널 엔트리(journal entry)를 생성하는 단계
    를 더 포함하는,
    호스트 컴퓨터와 통신할 수 있는 데이터 저장 디바이스를 동작시키는 방법.
  17. 제 15 항에 있어서,
    상기 기술자 엔트리를 업데이트하는 단계는,
    상기 기술자 엔트리가 링크된 논리적 그룹들을 제 1 그룹으로부터 제 2 그룹으로 스위칭하는 단계
    를 포함하는,
    호스트 컴퓨터와 통신할 수 있는 데이터 저장 디바이스를 동작시키는 방법.
  18. 제 15 항에 있어서,
    상기 제1 논리적 블록 어드레스 익스텐트 엔트리를 생성하는 단계는,
    논리적 블록 어드레스 익스텐트 엔트리들의 리스트 내에 수치적 논리적 블록 어드레스 순서로 상기 논리적 블록 어드레스 익스텐트 엔트리를 삽입하는 단계
    를 포함하는,
    호스트 컴퓨터와 통신할 수 있는 데이터 저장 디바이스를 동작시키는 방법.
  19. 제 15 항에 있어서,
    상기 제1 논리적 블록 어드레스 익스텐트 엔트리를 논리적 블록 어드레스 익스텐트 엔트리들의 리스트로부터 제거하는 단계;
    상기 데이터 블록에 저장된 데이터 파일의 일부의 비유효성(invalidation)을 참작하도록 상기 기술자 엔트리를 업데이트하는 단계; 및
    상기 데이터 블록을 소거하는 단계
    를 더 포함하는,
    호스트 컴퓨터와 통신할 수 있는 데이터 저장 디바이스를 동작시키는 방법.
  20. 삭제
KR1020127014512A 2009-11-04 2010-11-03 고체-상태 매체들을 포함하는 디바이스들을 위한 파일 관리 시스템 KR101737443B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/612,159 US9110594B2 (en) 2009-11-04 2009-11-04 File management system for devices containing solid-state media
US12/612,159 2009-11-04
PCT/US2010/055243 WO2011056837A1 (en) 2009-11-04 2010-11-03 File management system for devices containing solid-state media

Publications (2)

Publication Number Publication Date
KR20120115243A KR20120115243A (ko) 2012-10-17
KR101737443B1 true KR101737443B1 (ko) 2017-05-29

Family

ID=43477755

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127014512A KR101737443B1 (ko) 2009-11-04 2010-11-03 고체-상태 매체들을 포함하는 디바이스들을 위한 파일 관리 시스템

Country Status (3)

Country Link
US (2) US9110594B2 (ko)
KR (1) KR101737443B1 (ko)
WO (1) WO2011056837A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US8296503B2 (en) * 2009-05-26 2012-10-23 Mediatek Inc. Data updating and recovering methods for a non-volatile memory array
US8713066B1 (en) * 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US8381018B2 (en) * 2010-05-21 2013-02-19 Mediatek Inc. Method for data recovery for flash devices
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8782334B1 (en) * 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
EP2661876B1 (en) * 2011-01-06 2017-05-03 Thomson Licensing Method and apparatus for updating a database in a receiving device
CN103123610B (zh) * 2011-11-18 2015-06-03 光宝科技股份有限公司 固态储存装置
US8756458B2 (en) * 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US20130275692A1 (en) * 2012-04-16 2013-10-17 Shak Loong Kwok Storage device and methods thereof
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9588886B2 (en) 2013-03-15 2017-03-07 Seagate Technology Llc Staging sorted data in intermediate storage
US9612956B2 (en) 2013-03-15 2017-04-04 Seagate Technology Llc Multi-tiered caching for data storage management in a device
US20140281194A1 (en) 2013-03-15 2014-09-18 Seagate Technology Llc Dynamically-sizeable granule storage
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
JP2015082240A (ja) * 2013-10-23 2015-04-27 株式会社東芝 ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
CN104598386B (zh) * 2013-10-31 2018-03-27 Lsi公司 通过追踪和利用二级映射索引重复利用固态驱动器块
JP2015135603A (ja) * 2014-01-17 2015-07-27 株式会社東芝 ストレージ装置及びデータを書き込む記憶領域を選択する方法
US10025823B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10067954B2 (en) 2015-07-22 2018-09-04 Oracle International Corporation Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations
US9880772B2 (en) * 2015-09-21 2018-01-30 Micron Technology, Inc. Systems and methods for providing file information in a memory system protocol
CN106547477B (zh) * 2015-09-22 2019-07-19 伊姆西公司 用于在线地减少缓存设备的方法和装置
KR20170053278A (ko) * 2015-11-06 2017-05-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10719236B2 (en) * 2015-11-20 2020-07-21 Arm Ltd. Memory controller with non-volatile buffer for persistent memory operations
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US10768829B2 (en) 2017-02-15 2020-09-08 Microsoft Technology Licensing, Llc Opportunistic use of streams for storing data on a solid state device
US11221956B2 (en) * 2017-05-31 2022-01-11 Seagate Technology Llc Hybrid storage device with three-level memory mapping
US10606760B2 (en) * 2017-08-23 2020-03-31 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
US10754549B2 (en) 2018-02-15 2020-08-25 Microsoft Technology Licensing, Llc Append only streams for storing data on a solid state device
US10671531B2 (en) * 2018-07-13 2020-06-02 Seagate Technology Llc Secondary memory configuration for data backup
US11221955B2 (en) * 2018-09-06 2022-01-11 International Business Machines Corporation Metadata track selection switching in a data storage system
US10652208B2 (en) * 2018-10-03 2020-05-12 Axonius Solutions Ltd. System and method for managing network connected devices
US11507402B2 (en) 2019-04-15 2022-11-22 Microsoft Technology Licensing, Llc Virtualized append-only storage device
KR20210119630A (ko) * 2020-03-25 2021-10-06 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20210142863A (ko) * 2020-05-19 2021-11-26 에스케이하이닉스 주식회사 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20070245069A1 (en) * 2004-09-10 2007-10-18 Syuichi Kikuchi Storage Device, Memory Management Method and Program

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5661848A (en) * 1994-09-08 1997-08-26 Western Digital Corp Multi-drive controller with encoder circuitry that generates ECC check bytes using the finite field for optical data for appending to data flowing to HDA
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
FR2752072B1 (fr) * 1996-08-01 1999-01-29 Solaic Sa Carte a circuit integre comportant des fichiers classes selon une arborescence
US6499083B1 (en) * 1999-09-15 2002-12-24 Western Digital Ventures, Inc. Disk-based storage system responsive to a direction-selection signal for autonomously controlling seeks in a sequence determined by the direction-selection signal and a locally-stored doubly linked list
WO2001046792A1 (en) 1999-12-22 2001-06-28 Seagate Technology Llc Buffer management system for managing the transfer of data into and out of a buffer in a disc drive
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US6769081B1 (en) * 2000-08-30 2004-07-27 Sun Microsystems, Inc. Reconfigurable built-in self-test engine for testing a reconfigurable memory
US6772274B1 (en) * 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
US6725342B1 (en) 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
US7047356B2 (en) * 2000-10-30 2006-05-16 Jack Yajie Chen Storage controller with the disk drive and the RAM in a hybrid architecture
TWI235927B (en) * 2001-04-25 2005-07-11 Koninkl Philips Electronics Nv Methods and devices for recording or reading files on/from a sequential medium and sequential medium
US6842829B1 (en) 2001-12-06 2005-01-11 Lsi Logic Corporation Method and apparatus to manage independent memory systems as a shared volume
US20030135729A1 (en) 2001-12-14 2003-07-17 I/O Integrity, Inc. Apparatus and meta data caching method for optimizing server startup performance
US6907499B2 (en) 2002-01-31 2005-06-14 Seagate Technology Llc Interrupting disc write operations to service read commands
US7809252B2 (en) 2003-04-09 2010-10-05 Corel Inc. Systems and methods for caching multimedia data
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144517A1 (en) * 2003-12-30 2005-06-30 Matsushita Electric Industrial Co., Ltd. Systems and methods for bypassing logical to physical address translation and maintaining data zone information in rotatable storage media
US20050144396A1 (en) * 2003-12-31 2005-06-30 Eschmann Michael K. Coalescing disk write back requests
US7877569B2 (en) * 2004-04-28 2011-01-25 Panasonic Corporation Reduction of fragmentation in nonvolatile memory using alternate address mapping
JP4506292B2 (ja) * 2004-06-10 2010-07-21 株式会社日立製作所 キャッシュ制御方法およびデータ処理システム並びにその処理プログラム
US7536625B2 (en) 2004-06-30 2009-05-19 Seagate Technology Llc Maintaining data integrity in a data storage system
JP4618785B2 (ja) * 2004-12-24 2011-01-26 株式会社日立製作所 データ処理システム及び方法
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP2006331100A (ja) * 2005-05-26 2006-12-07 Hitachi Ltd 差分ビットマップ管理方法、ストレージ装置及び情報処理システム
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
US7571275B2 (en) * 2005-08-31 2009-08-04 Hamilton Sundstrand Corporation Flash real-time operating system for small embedded applications
JP4749112B2 (ja) * 2005-10-07 2011-08-17 株式会社日立製作所 記憶制御システム及び方法
JP2007164929A (ja) * 2005-12-16 2007-06-28 Fujitsu Ltd 記憶媒体管理装置、記憶媒体管理プログラム、記憶媒体管理方法
JP2007164928A (ja) 2005-12-16 2007-06-28 Fujitsu Ltd 記憶媒体管理装置、記憶媒体管理プログラム、記憶媒体管理方法
US8756399B2 (en) 2006-01-25 2014-06-17 Seagate Technology Llc Mutable association of a set of logical block addresses to a band of physical storage blocks
KR100781520B1 (ko) 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
US7464240B2 (en) * 2006-05-23 2008-12-09 Data Ram, Inc. Hybrid solid state disk drive with controller
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US8078687B1 (en) * 2006-09-06 2011-12-13 Marvell International Ltd. System and method for data management
US7774392B2 (en) * 2006-09-15 2010-08-10 Sandisk Corporation Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
US20080172518A1 (en) 2007-01-11 2008-07-17 Sandisk Il Ltd. Systems For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
KR100881187B1 (ko) 2007-01-16 2009-02-05 삼성전자주식회사 하이브리드 하드 디스크 드라이브, 하이브리드 하드 디스크드라이브를 내장하는 컴퓨터 시스템, 그리고 하이브리드하드 디스크 드라이브의 플래시 메모리 dma 회로
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US7827378B2 (en) * 2007-08-21 2010-11-02 Seagate Technology Llc Defect management using mutable logical to physical association
KR20090042039A (ko) * 2007-10-25 2009-04-29 삼성전자주식회사 불휘발성 메모리 장치의 데이터 관리 방법
US7890314B2 (en) 2007-12-05 2011-02-15 Seagate Technology Llc Method for modeling performance of embedded processors having combined cache and memory hierarchy
JP2009211233A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20090240880A1 (en) * 2008-03-21 2009-09-24 Hitachi, Ltd. High availability and low capacity thin provisioning
US7873619B1 (en) * 2008-03-31 2011-01-18 Emc Corporation Managing metadata
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US8140739B2 (en) * 2008-08-08 2012-03-20 Imation Corp. Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table
US20100057976A1 (en) * 2008-08-26 2010-03-04 Menahem Lasser Multiple performance mode memory system
US8205063B2 (en) * 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8166232B2 (en) * 2009-04-02 2012-04-24 Hitachi, Ltd. Metrics and management for flash memory storage life
US9274723B2 (en) * 2009-10-13 2016-03-01 Hitachi, Ltd. Storage apparatus and its control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20070245069A1 (en) * 2004-09-10 2007-10-18 Syuichi Kikuchi Storage Device, Memory Management Method and Program

Also Published As

Publication number Publication date
US20150277799A1 (en) 2015-10-01
US20110106804A1 (en) 2011-05-05
WO2011056837A1 (en) 2011-05-12
US9110594B2 (en) 2015-08-18
US9507538B2 (en) 2016-11-29
KR20120115243A (ko) 2012-10-17

Similar Documents

Publication Publication Date Title
KR101737443B1 (ko) 고체-상태 매체들을 포함하는 디바이스들을 위한 파일 관리 시스템
US7472219B2 (en) Data-storage apparatus, data-storage method and recording/reproducing system
KR100952135B1 (ko) 순차적 기록만을 사용하는 플래시 관리 시스템
JP4511576B2 (ja) メモリシステム
KR101012274B1 (ko) 블록 관리 시스템을 구비한 비휘발성 메모리 및 방법
US8756382B1 (en) Method for file based shingled data storage utilizing multiple media types
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US8738882B2 (en) Pre-organization of data
US7783845B2 (en) Structures for the management of erase operations in non-volatile memories
US9804786B2 (en) Sector translation layer for hard disk drives
KR102357203B1 (ko) 판독 캐시 관리
JP2007193883A (ja) データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法
US10394493B2 (en) Managing shingled magnetic recording (SMR) zones in a hybrid storage device
US10152236B2 (en) Hybrid data storage device with partitioned local memory
KR20000048766A (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
JP2012503234A (ja) メモリ装置のための組み込みマッピング情報
JP2018156131A (ja) 情報処理装置、ストレージデバイスおよび情報処理システム
JPWO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
JP2015082240A (ja) ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法
KR100963009B1 (ko) 파일 관리 시스템 및 방법
US10628045B2 (en) Internal data transfer management in a hybrid data storage device
KR20070060301A (ko) 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버
KR20100055374A (ko) 파일 관리 시스템 및 방법
JP2017151609A (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