KR101717644B1 - 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 - Google Patents

고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 Download PDF

Info

Publication number
KR101717644B1
KR101717644B1 KR1020127006053A KR20127006053A KR101717644B1 KR 101717644 B1 KR101717644 B1 KR 101717644B1 KR 1020127006053 A KR1020127006053 A KR 1020127006053A KR 20127006053 A KR20127006053 A KR 20127006053A KR 101717644 B1 KR101717644 B1 KR 101717644B1
Authority
KR
South Korea
Prior art keywords
solid
data
storage device
state storage
cache
Prior art date
Application number
KR1020127006053A
Other languages
English (en)
Other versions
KR20120090965A (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 KR20120090965A publication Critical patent/KR20120090965A/ko
Application granted granted Critical
Publication of KR101717644B1 publication Critical patent/KR101717644B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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/7207Details relating to flash memory management management of metadata or control data

Abstract

고체-상태 저장 디바이스를 이용하여 캐싱 데이터를 위한 장치, 시스템, 및 방법이 기재된다. 고체-상태 저장 디바이스는 고체-상태 저장 디바이스 상에서 수행된 캐시 동작 및 고체-상태 저장 디바이스의 저장 동작에 관련된 메타데이터를 유지한다. 메타데이터는, 캐시에서의 어떤 데이터가 유효한 지, 뿐 아니라 비휘발성 캐시에서의 어떤 데이터가 백킹 스토어에 저장되는지를 나타낸다. 백업 엔진은 비휘발성 캐시 디바이스에서의 유닛을 통해 작용하고, 유효 데이터를 백킹 스토어에 백업한다. 그루밍 동작 동안, 그루머는, 데이터가 유효한지, 그리고 데이터가 폐기가능한지를 결정한다. 유효 및 폐기가능한 데이터는 그루밍 동작 동안 제거될 수 있다. 그루머는, 캐시 디바이스로부터 데이터를 제거할 지를 결정할 때 데이터가 콜드인지를 결정할 수 있다. 캐시 디바이스는 백킹 스토어와 동일한 크기인 논리적 공간을 클라이언트에게 제공할 수 있다. 캐시 디바이스는 클라이언트에게 투명할 수 있다.

Description

고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법{APPARATUS, SYSTEM, AND METHOD FOR CACHING DATA ON A SOLID-STATE STORAGE DEVICE}
본 발명은 고체-상태 디바이스 상의 데이터를 캐싱(caching)하는 것에 관한 것이고, 더 구체적으로, 캐시를 관리하고 그루밍(grooming) 동작을 수행하는데 사용하기 위해 캐시 및 고체-상태 저장 디바이스에 관련된 메타데이터를 유지하는 것에 관한 것입니다.
캐시 디바이스는 데이터가 시스템에서 더 빠르게 액세스되도록 하는데 사용되는 저장 디바이스이다. 캐시는 캐시에서 데이터를 사용하는 동작을 위한 입/출력(I/O) 시간을 감소시킴으로써 시스템에서 성능을 크게 향상시킬 수 있다. 일반적으로, 캐시는 캐시 디바이스보다 더 큰 저장 용량을 갖지만 더 느린 I/O 시간을 갖는 다른 저장 디바이스의 전면에서 구현된다. 캐시의 이익은 잘 이해되고, 캐시는 CPU에서의 캐시로부터 저장 영역 네트워크(SAN)에서의 캐시까지의 범위를 갖는 다양한 정황 및 스케일로 유리하게 구현되었다.
캐시의 특성은 또한 그 정황에 기초하여 달라질 수 있다; 예를 들어, 단일 컴퓨터(데스크탑 또는 랩탑과 같은)에서, 캐시는 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 또는 그 밖의 것들과 같은 휘발성 메모리에서 구현될 수 있다. 현재, 캐시 그루밍은 비효율적인데, 그 이유는 캐시 그루밍이 다른 메모리 관리 동작과 개별적이기 때문이다.
고체-상태 저장 디바이스는 비휘발성 백킹 스토어(backing store)를 위한 비휘발성 캐시 디바이스로서 동작할 수 있다. 고체-상태 저장 디바이스는 고체-상태 저장 디바이스에 의해 제공된 논리적 공간을 이용하여 클라이언트에 투명할 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스는 백킹 스토어의 물리적 크기와 동일한 논리적 크기를 클라이언트에 제공하도록 구성될 수 있어서, 고체-상태 저장 디바이스는 고체-상태 저장 디바이스의 물리적 저장 크기에 상관없이, 백킹 스토어와 동일한 크기인 논리적 저장 공간을 클라이언트에게 제공한다. 대안적으로, 또는 추가적으로, 고체-상태 저장 디바이스는 고체-상태 저장 디바이스 및 백킹 스토어 양쪽 모두의 물리적 저장 용량을 초과하는 논리적 어드레스 공간을 클라이언트에게 제공할 수 있다.
고체-상태 저장 디바이스는 고체-상태 저장 디바이스 상에서 수행된 캐시 동작 및 저장 동작에 관련된 메타데이터를 유지시킬 수 있다. 저장 메타데이터는, 고체-상태 저장 디바이스 상에서 수행된 순차적 저장 동작(예를 들어, 클라이언트 논리적 어드레스와 디바이스 상의 저장 유닛 사이의 연관, 저장 로그 메타데이터 등), 순차적 저장 동작에 관련된 유지 보수(maintenance) 동작{예를 들어, 저장 복구, 가비지 컬렉션(garbage collection), 에러 수정, 등}, 저장 매체의 상태{예를 들어, 마모 레벨(wear level), 신뢰도, 무결성(integrity), 등} 등에 관련된 메타데이터를 포함할 수 있지만, 여기에 한정되지 않는다. 저장 메타데이터는 무효(invalid) 데이터를 포함하는 것으로부터 유효 데이터를 포함하는 저장 유닛들 사이를 구별하기 위해 유효성 표시자(validity indicator)를 포함할 수 있다. 저장 유닛은 고체-상태 저장 디바이스 상의 임의의 어드레스가능한 저장 위치를 언급할 수 있다.
고체-상태 저장 디바이스는 고체-상태 저장 디바이스의 저장 유닛에서 데이터를 캐싱할 수 있다. 캐시 메타데이터는 고체-상태 저장 디바이스 상에 저장된 캐시, 고체-상태 저장 디바이스 상에서 수행된 캐시 동작(예를 들어, 액세스 패턴 등), 캐시 관리{예를 들어, 캐시 반환(cache eviction) 및/또는 보존 정책(retention policy), 캐시 속성, 캐시 지시자(cache directive), 등} 등에 관련된 메타데이터를 포함할 수 있다. 캐시 메타데이터는 폐기될 수 있는 데이터를 식별하기 위해 폐기가능성 표시자(discardability indicator)를 포함할 수 있다. 폐기가능한 데이터는 백킹 스토어 상에서 백업(예를 들어, 저장)된 캐시 데이터일 수 있다.
고체-상태 저장 디바이스에 의해 유지된 메타데이터는 캐시 엔트리를 포함할 수 있고, 이러한 캐시 엔트리는 디바이스 상에서 캐싱된 데이터(예를 들어, 고체-상태 저장 디바이스의 저장 유닛에서 캐싱된 데이터)를 나타낼 수 있다. 캐시 엔트리는, 데이터가 고체-상태 저장 디바이스 상에서 어디에 저장되는지를 식별하자마자 논리적 어드레스(저장 클라이언트의)를 하나 이상의 저장 위치(예를 들어, 저장 유닛)와 연관시킬 수 있고; 캐시 엔트리는 클라이언트 논리적 어드레스 사이의 인덱스 또는 매핑, 및 고체-상태 저장 디바이스 저장 위치(예를 들어, 저장 유닛)를 제공할 수 있다. 몇몇 실시예에서, 캐시 엔트리는 가변 크기를 가질 수 있고, 이와 같이, 고체-상태 저장 디바이스 상에서 저장 유닛의 부분, 단일 저장 유닛, 및/또는 다중 저장 유닛을 참조할 수 있다. 예를 들어, 제 1 캐시 엔트리는 단일 저장 유닛 상의 데이터의 제 1 양(예를 들어, 단일 저장 유닛의 부분 상의 256 바이트)을 포함할 수 있는 반면, 제 2 캐시 엔트리는 다중 저장 유닛 상의 데이터의 제 2의 상이한 양(예를 들어, 복수의 저장 유닛, 또는 가상 저장 유닛 상의 4 kB)을 포함할 수 있다.
캐시 엔트리들은 논리적 어드레스에 의해 인덱싱될 수 있고, 이러한 논리적 어드레스는 클라이언트 저장 요청에 응답하여 캐시 엔트리들로의 빠르고 효율적인 액세스를 가능하게 할 수 있다. 캐시 엔트리들은 고체-상태 저장 디바이스 및 캐시의 순차 저장 동작에 관련된 메타데이터를 포함하는 공유 메타데이터를 저장(및/또는 참조)하는데 사용될 수 있다. 예를 들어, 고체-상태 저장 디바이스의 그루머(groomer)(아래에 설명됨)는 저장 복구 및/또는 유지 보수 동작을 효율적으로 수행하기 위해 캐시에 관련된 메타데이터에 액세스할 수 있다. 유사하게, 고체-상태 저장 디바이스 상에서 동작하고 및/또는 연계하는 캐시 관리자(아래에 설명됨)는 캐시를 효율적으로 관리(예를 들어, 캐시 반환 및/또는 보존, 등에 관련된 캐시 정책을 결정)하기 위해 메타데이터에 액세스할 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스는 저장 인터페이스(또는 일반적으로 "인터페이스")를 제공할 수 있고, 이러한 저장 인터페이스는 메타데이터의 부분을 저장 클라이언트에 노출시킬 수 있다. 인터페이스를 이용하여, 저장 클라이언트는 고체-상태 저장 디바이스를 구성(예를 들어, 캐시 속성, 캐시 지시자를 설정, TRIM 명령을 송출, 등)할 수 있다. 더욱이, 인터페이스는 인터페이스를 통해 "산재한(sparse)" 또는 "희박하게 제공된(thinly provisioned)" 논리적 어드레스 공간을 노출시킬 수 있고, 이것은 저장 클라이언트가 여분의 어드레스 전환(translation) 층 없이 고체-상태 저장 디바이스와 상호 작용하도록 한다(예를 들어, 전체 64 비트 어드레스 공간 내에서).
몇몇 실시예에서, 백업 엔진은 고체-상태 저장 디바이스 상에서 캐싱된 데이터를 백킹 스토어에 백업하도록 구성될 수 있다. 백킹 스토어 상에 저장될 때, 데이터에 연관된(예를 들어, 캐시 엔트리 및/또는 대응하는 저장 유닛에 연관된) 메타데이터는 데이터가 폐기가능하다는 것을 나타내도록 업데이트될 수 있다. 백업 엔진은 고체-상태 저장 디바이스의 저장 유닛을 통해 연대순으로(가장 오래된 것으로부터 최신까지) 반복할 수 있다. 고체-상태 저장 디바이스에 의해 유지된 공유 메타데이터에 의해 순회(traversal)(예를 들어, 저장 유닛의 역방향 인덱스 및/또는 시퀀스 지시자)가 가능하게 될 수 있다. 백업 엔진의 동작은 저장 메타데이터에 의해 통보될 수 있다; 예를 들어, 백업 엔진은, 메타데이터가 무효(예를 들어, 데이터는 복구 동작, 순차 기록, 변형, 등으로 인해 상이한 저장 위치로 이동되었다)라는 것을 표시하는 캐시 엔트리(및/또는 연관된 저장 유닛에서)와 연관된 데이터를 무시할 수 있다.
몇몇 실시예에서, 백업 엔진은 비교적 낮은 우선순위(예를 들어, 배경 프로세스 또는 동작으로서)로 동작한다. 백업 엔진은 필요시 더 높은 우선순위로 동작하도록 구성될 수 있다. 예를 들어, 메타데이터는 고체-상태 저장 디바이스의 물리적 저장 용량, 목표 점유량, 최대 점유량, 및/또는 현재 점유량을 나타낼 수 있다. 현재 점유량이 임계치를 초과(예를 들어, 목표 점유량, 최대 점유량, 또는 몇몇 다른 임계치를 초과)할 때, 배경 엔진은 더 높은 우선순위로 동작하도록 구성될 수 있다.
저장 복구 및 유지 보수 동작은 유사하게 메타데이터에 의해 통보될 수 있다. 예를 들어, 고체-상태 저장 디바이스의 저장 분할을 복구하도록 구성된 그루머 프로세스는 메타데이터를 이용하여 우선 순위화될 수 있다(예를 들어, 현재 점유량이 임계치를 초과할 때 증가된 우선 순위). 그루머는 데이터 복구 동작을 수행할 때 캐시에 관계된 메타데이터에 액세스할 수 있다. 예를 들어, 그루머는 메타데이터에 기초하여 복구를 위한 저장 분할을 선택할 수 있고, 메타데이터 등을 이용하여 유지될(예를 들어, 상이한 저장 분할로 이동될) 저장 분할에서 저장 유닛을 선택할 수 있다.
따라서, 몇몇 실시예에서, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법은, 고체-상태 저장 디바이스 상에서 수행된 캐시 동작, 및 고체-상태 저장 디바이스의 저장 동작에 관련된 메타데이터를 유지하는 단계와; 고체-상태 저장 디바이스의 저장 동작을 관리하기 위해 메타데이터에 액세스하는 단계와; 고체-상태 저장 디바이스 상에 저장된 캐시를 관리하기 위해 메타데이터에 액세스하는 단계를 포함할 수 있다. 캐시 동작에 관련된 메타데이터 및 저장 동작에 관련된 메타데이터는 공유 데이터 구조에 저장될 수 있다.
메타데이터는 백킹 스토어 상에 저장된 저장 유닛을 식별하는 폐기가능성 표시자를 포함할 수 있고, 상기 표시자는 복구를 위해 저장 분할을 선택하는데 사용될 수 있다. 캐시 반환 메타데이터{예를 들어, 콜드(cold), 핫(hot), 웜(warm) 등}는 복구를 위해 저장 분할을 선택하기 위해 및/또는 복구를 위해 선택된 저장 분할에서의 저장 유닛이 유지되어야 하는지를 결정하기 위해 사용될 수 있다. 메타데이터는 캐시 엔트리의 논리적 어드레스와 연관될 수 있고, 이와 같이, 대응하는 데이터의 저장 위치가 고체-상태 저장 디바이스 상에서 변할 때 캐시 엔트리와 연관된 상태로 남아있을 수 있다.
캐시에 관련된 메타데이터(예를 들어, 공유 캐시 메타데이터)는 저장 분할 복구, 가비지 컬렉션, 에러 관리, 순차 저장(예를 들어, 로그-기반의 저장 동작), 등과 같은 고체-상태 저장 디바이스의 순차 저장 동작을 관리하는데 사용될 수 있다. 순차 저장 동작에 관련된 메타데이터(예를 들어, 공유 저장 메타데이터)는 캐시를 관리하는데 사용될 수 있다. 예를 들어, 백업, 캐시 반환, 점유, 캐시 데이터 이동 등과 같은 캐시 동작은 공유 저장 메타데이터에 의해 통보될 수 있다.
메타데이터는 복수의 캐시 엔트리를 포함할 수 있고, 각각의 캐시 엔트리는 캐시 엔트리의 데이터를 포함하는 고체-상태 저장 디바이스 상에서 논리적 어드레스를 저장 유닛과 연관시킨다. 클라이언트 저장 요청은 캐시 엔트리를 이용하여 서비스(serviced)될 수 있다. 특정 논리적 어드레스에 대한 캐시 엔트리가 메타데이터에 존재하면, 대응하는 데이터는 고체-상태 저장 디바이스 상에서 이용가능할 수 있다; 존재하지 않으면, 데이터는 이용가능하지 않을 수 있다{그리고 캐시 미스(cache miss)가 발생할 수 있다}. 클라이언트 저장 요청은 빠르고 효율적으로 서비스될 수 있는데, 이는 캐시 엔트리가 논리적 어드레스(예를 들어, B-트리 데이터 구조에서)에 의해 인덱싱되기 때문이다. 메타데이터는 고체-상태 저장 디바이스의 현재 점유량을 결정하는데 사용될 수 있다. 클라이언트 엔트리는 캐시 및/또는 저장 동작에 응답하여 변형될 수 있다. 인접한 논리적 어드레스가 저장될 때, 대응하는 캐시 엔트리가 병합될 수 있고, 이것은 특정 논리적 어드레스를 찾기 위해 검색되어야 하는 엔트리의 수를 감소시킬 수 있다. 유사하게, 논리적 어드레스가 제거될 때, 대응하는 캐시 엔트리는 분할될 수 있다(또는 분할되지 않을 수 있다). 캐시 엔트리는 가변 크기일 수 있고, 이와 같이, 단일 논리적 어드레스, 논리적 어드레스의 범위, 논리적 어드레스의 세트 등을 포함할 수 있다.
본 명세서 전체에서 특징, 장점, 또는 유사한 언어에 대한 참조는, 본 발명으로 실현될 수 있는 모든 특징 및 장점이 본 발명의 임의의 하나의 실시예이어야 하거나 이에 있다는 것을 의미하지 않는다. 오히려, 특징 및 장점을 언급하는 언어는, 실시예에 연계하여 설명된 특정한 특징, 장점, 또는 특성이 본 발명의 적어도 일부 실시예에 포함된다는 것을 의미하는 것으로 이해된다. 따라서, 본 명세서 전체에서, 특징 및 장점, 및 유사한 언어에 대한 논의는 동일한 실시예를 언급하지만, 반드시 그런 것은 아니다.
더욱이, 본 발명의 설명된 특징, 장점 및 특성은 임의의 적합한 방식으로 하나 이상의 실시예에서 조합될 수 있다. 당업자는, 본 발명이 특정 실시예의 하나 이상의 특정한 특징 또는 장점 없이 실시될 수 있다는 것을 인식할 것이다. 다른 경우에, 추가 특징 및 장점은 본 발명의 모든 실시예에 존재하지 않을 수 있는 몇몇 실시예에서 인식될 수 있다.
본 발명의 이들 특징 및 장점은 다음의 설명 및 첨부된 청구항으로부터 더 완전히 명백해질 것이고, 또는 이후에 설명된 바와 같이 본 발명의 실시에 의해 습득될 수 있을 것이다.
본 발명의 장점이 쉽게 이해되기 위해, 간략히 위에서 설명된 본 발명의 더 특정한 설명은 첨부된 도면에 도시된 특정 실시예를 인용함으로써 시행될 것이다. 이들 도면이 본 발명의 단지 일반적인 실시예를 도시하므로, 본 발명의 범주를 한정하는 것으로 간주되지 않는다는 것을 이해할 때, 본 발명은 첨부 도면의 이용을 통해 추가 특징 및 세부사항을 가지고 기재되고 설명될 것이다.
본 발명은 캐시를 관리하고 그루밍(grooming) 동작을 수행하는데 사용하기 위해 캐시 및 고체-상태 저장 디바이스에 관련된 메타데이터를 유지하는 것에 효과적입니다.
도 1은 데이터를 캐싱하도록 구성된 고체-상태 저장 디바이스의 시스템의 예시적인 실시예를 도시한 개략적인 블록도.
도 2는 백킹 스토어에 의해 제공된 물리적 공간과 동일한 크기인 논리적 저장 공간을 제공하는 고체-상태 저장 디바이스를 포함하는 시스템의 예시적인 실시예를 도시한 개략적인 블록도.
도 3은 캐시 관리 장치의 일실시예를 도시한 개략적인 블록도.
도 4는 파일 시스템, 캐시로서 작용하는 고체 상태 저장 디바이스, 및 백킹 저장부로서 작용하는 하드 디스크 드라이브 사이에 기록 동안의 상호 작용의 예시적인 실시예를 도시한 개략적인 블록도.
도 5는 파일 시스템, 캐시로서 작용하는 고체 상태 저장 디바이스, 및 백킹 저장부로서 작용하는 하드 디스크 드라이브 사이에 판독 동안의 상호 작용의 예시적인 실시예를 도시한 개략적인 블록도.
도 6은 고체-상태 저장 디바이스를 구성하는 방법의 다른 실시예를 도시한 개략적인 흐름도.
도 7은 고체-상태 저장 디바이스에서 판독을 다루는 방법의 예시적인 실시에를 도시한 개략적인 흐름도.
도 8은 고체-상태 저장 디바이스에서 기록을 다루는 방법의 예시적인 실시에를 도시한 개략적인 흐름도.
도 9a는 고체-상태 저장 디바이스에서의 유닛 상에서 동작하는 백업 엔진의 예시적인 실시예를 도시한 개략적인 블록도.
도 9b는 고체-상태 저장 디바이스에서의 유닛 상에서 동작하는 백업 엔진의 예시적인 실시예를 도시한 개략적인 블록도.
도 10은 고체-상태 저장 디바이스에서의 유닛을 그루밍하는 방법의 예시적인 실시예를 도시한 개략적인 흐름도.
도 11은 공유 메타데이터를 유지하는 예시적인 데이터 구조의 개략적인 블록도.
도 12는 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법의 일실시예의 흐름도.
도 13은 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법의 다른 실시예의 흐름도.
도 14는 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법의 다른 실시예의 흐름도.
도 15는 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법의 다른 실시예의 흐름도.
도 16은 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법의 다른 실시예의 흐름도.
본 명세서에 설명된 많은 기능 유닛은 더 구체적으로 그 구현의 독립성을 강조하기 위해 모듈로서 도면 번호가 붙여졌다. 예를 들어, 모듈은 맞춤형 VLSI 회로 또는 게이트 어레이와, 논리 칩, 트랜지스터와 같은 시판된(off-the-shelf) 반도체와, 또는 다른 이산 구성요소를 포함하는 하드웨어 회로로서 구현될 수 있다. 모듈은 또한 전계 프로그래밍가능 게이트 어레이, 프로그래밍가능 어레이 논리, 프로그래밍가능 논리 디바이스 등과 같은 프로그래밍가능 하드웨어 디바이스에서 구현될 수 있다.
모듈은 또한 다양한 유형의 프로세서에 의한 실행을 위해 소프트웨어로 구현될 수 있다. 예를 들어, 실행가능 코드의 식별된 모듈은 예를 들어, 객체, 절차, 또는 함수로서 조직화될 수 있는 컴퓨터 지령의 하나 이상의 물리적 또는 논리적 블록을 포함할 수 있다. 그럼에도 불구하고, 식별된 모듈의 실행부(executables)는 물리적으로 함께 위치될 필요가 없지만, 논리적으로 함께 결합될 때, 모듈을 포함하고 모듈을 위한 언급된 목적을 달성하는 상이한 위치에 저장된 다른 지령을 포함할 수 있다.
더욱이, 실행가능 코드의 모듈은 단일 지령 또는 많은 지령일 수 있고, 상이한 프로그램 중에서, 여러 개의 상이한 코드 세그먼트에 걸쳐, 여러 개의 메모리 디바이스에 걸쳐 분배될 수 있다. 유사하게, 동작 데이터는 모듈 내에서 식별되고 예시될 수 있고, 임의의 적합한 형태로 구현되고 임의의 적합한 유형의 데이터 구조 내에서 조직화될 수 있다. 동작 데이터는 단일 데이터 세트로서 수집될 수 있거나, 상이한 저장 디바이스를 포함하는 상이한 위치에 걸쳐 분배될 수 있고, 시스템 또는 네트워크 상에서 단지 전자 신호로서 적어도 부분적으로 존재할 수 있다. 모듈 또는 모듈의 부분이 소프트웨어로 구현되는 경우, 소프트웨어 부분은 하나 이상의 컴퓨터 판독가능 매체 상에 저장된다.
본 명세서 전체에, "하나의 실시예", "일실시예", 또는 유사한 언어에 대한 참조는, 실시예와 연계하여 설명된 특정한 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서에 전체에, 구문 "하나의 실시예에서", "일실시예에서", 및 유사한 언어의 출현은 모두 동일한 실시예를 언급하지만, 반드시 그런 것은 아니다.
컴퓨터 판독가능 매체에 대한 참조는 디지털 처리 장치 상에서 기계-판독가능 지령을 저장할 수 있는 임의의 형태를 취할 수 있다. 컴퓨터 판독가능 매체는 송신 라인, 컴팩트 디스크, 디지털-비디오 디스크, 자기 테이프, 베르누이 드라이브, 자기 디스크, 펀치 카드, 플래시 메모리, 집적 회로, 또는 다른 디지털 처리 장치 메모리 디바이스에 의해 구현될 수 있다.
더욱이, 본 발명의 설명된 특징, 구조 또는 특성은 하나 이상의 실시예에서 임의의 적합한 방식으로 조합될 수 있다. 다음의 설명에서, 본 발명의 실시예를 완전히 이해하기 위해, 프로그래밍, 소프트웨어 모듈, 사용자 선택, 네트워크 트랜젝션, 데이터베이스 질의, 데이터베이스 구조, 하드웨어 모듈, 하드웨어 회로, 하드웨어 칩 등과 같은 다수의 특정한 세부사항이 제공된다. 그러나, 당업자는, 본 발명이 하나 이상의 특정 세부사항 없이, 또는 다른 방법, 구성요소, 자료 등을 가지고 실시될 수 있다는 것을 인식할 것이다. 다른 예에서, 잘 알려진 구조, 자료, 또는 동작은 본 발명의 모호한 양상을 피하기 위해 세부적으로 도시되거나 설명되지 않는다.
본 명세서에 포함된 개략적인 흐름도는 일반적으로 논리적 흐름도로서 설명된다. 이와 같이, 도시된 순서 및 명칭이 붙여진 단계는 제공된 방법의 일실시예를 나타낸다. 예시된 방법의 함수, 논리, 또는 하나 이상의 단계에 대한 효과, 또는 그 부분과 등가적인 다른 단계 및 방법이 구상된다. 추가적으로, 이용된 포맷 및 심볼은 방법의 논리적 단계를 설명하기 위해 제공되고, 방법의 범주를 한정하지 않는 것으로 이해된다. 다양한 화살표 유형 및 라인 유형이 흐름도에서 이용될 수 있지만, 이들은 대응하는 방법의 범주를 한정하는 것으로 이해되지 않는다. 더욱이, 몇몇 화살표 또는 다른 연결부는 방법의 논리적 흐름만을 나타내는데 이용될 수 있다. 예를 들어, 화살표는 도시된 방법의 열거된 단계들 사이에서 특정되지 않은 지속기간의 대기 또는 모니터링 기간을 나타낼 수 있다. 추가적으로, 특정한 방법이 발생하는 순서는 도시된 대응하는 단계의 순서를 엄격하게 고수하거나 고수하지 않을 수 있다.
본 명세서에 사용된 바와 같이, 메타데이터는 고체-상태 저장 디바이스의 동작에 관련된 임의의 데이터를 언급할 수 있다. 따라서, 메타데이터는 캐시 메타데이터 및/또는 저장 메타데이터를 언급할 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스는 캐시 및/또는 저장 메타데이터를 포함하는 공유 데이터 구조를 유지하도록 구성될 수 있다. 데이터 구조는 캐시 관리자, 그루머, 및/또는 다른 관리 모듈에 의해 액세스가능할 수 있고, 이들은 고체-상태 저장 디바이스의 캐싱, 저장, 및/또는 유지 보수 동작(예를 들어, 그루밍)을 효율적으로 관리하기 위해 메타데이터를 이용할 수 있다.
본 명세서에 사용된 바와 같이, 캐시 메타데이터는 고체-상태 저장 디바이스 상에 저장된 캐시 및/또는 고체-상태 저장 디바이스 상에서 수행된 캐시 동작에 관련된 임의의 데이터를 언급할 수 있다. 캐시 메타데이터는 백킹 스토어까지 백업된 캐시 엔트리 저장 유닛을 식별하는 폐기가능성 표시자와, 캐시 반환 메타데이터, 캐시 속성(예를 들어, PIN, BLACKLIST), 캐시 지시자, 등을 포함하지만, 여기에 한정되지 않는다. 예를 들어, 캐시 반환 메타데이터는 가장 최근에 사용된 패턴, 액세스 빈도수, 등과 같은 데이터 액세스 패턴을 포함할 수 있다. 캐시 반환 메타데이터는 특정한 캐시 엔트리에 관한 캐시 반환 결정을 하는데 사용될 수 있다. 예를 들어, 캐시 반환 메타데이터는 "핫", "웜", 및/또는 콜드 등인 캐시 엔트리를 식별하는데 사용될 수 있다. 콜드 캐시 엔트리는 반환을 위한 후보일 수 있는 반면, "핫" 엔트리는 유지될 수 있다. 캐시 반환 메타데이터는 또한 PIN, BLACKLIST 등과 같은 캐시 속성을 포함할 수 있고, 이들은 캐시 동작(예를 들어, PIN 지시자는 데이터가 고체-상태 저장 디바이스로부터 반환되지 못하게 할 수 있다)을 관리하는데 사용될 수 있다. 유사하게, 캐시 반환 메타데이터는 캐시로부터 캐시 엔트리를 플러시(flush) 또는 반환하기 위해 "FLUSH" 지시자와 같은 캐시 지시자에 응답할 수 있다.
본 명세서에 사용된 바와 같이, 저장 메타데이터는 고체-상태 저장 디바이스의 고체-상태 저장 매체 및/또는 고체-상태 저장 디바이스 상에서 수행된 저장 동작에 관련된 임의의 데이터를 언급할 수 있다. 저장 메타데이터는 고체-상태 저장 디바이스 상에서 유효 및/또는 무효 데이터를 식별하기 위한 유효성 표시자와, 효율적인 논리적 어드레스를 저장 유닛 룩업에 제공하기 위한 순방향 인덱싱 메타데이터와, 효율적인 저장 유닛을 논리적 어드레스 룩업에 제공하기 위한 역방향 인덱싱 메타데이터와, 점유량 메타데이터(예를 들어, 고체-상태 저장 디바이스 상에 저장된 데이터, 점유량 임계치 등)와, 순차 저장 메타데이터(예를 들어, 로깅 등) 등을 포함하지만, 여기에 한정되지 않는다.
본 명세서에 사용된 바와 같이, 저장 유닛은 고체-상태 저장 디바이스 상에 데이터를 저장하기 위한 임의의 위치를 언급할 수 있다. 그러므로, 저장 유닛은 고체-상태 저장 요소의 블록과, 복수의 고체-상태 저장 요소 상의 블록, 또는 블록의 부분을 포함하는 가상 블록과, 페이지와, 복수의 고체-상태 저장 요소의 페이지, 또는 페이지의 부분을 포함하는 가상 페이지와, 저장 분할, 가상 저장 분할, 소거 블록, 가상 소거 블록 등을 포함할 수 있다.
저장 유닛은 저장 분할의 부분일 수 있다. 본 명세서에 사용된 바와 같이, 저장 분할은 고체-상태 저장 디바이스의 소거가능 분할을 언급할 수 있다. 따라서, 저장 분할은 고체-상태 저장 요소의 소거 블록과, 복수의 고체-상태 저장 요소 상의 저장 분할, 또는 저장 분할의 부분을 포함하는 가상 소거 블록 등을 언급할 수 있다.
몇몇 실시예에서, 캐시는 복수의 "캐시 엔트리"를 포함할 수 있다. 캐시 엔트리는 논리적 어드레스{또는 논리적 어드레스의 범위, 논리적 어드레스의 범위는 순서 배치된(ordered) 어드레스, 순서 배치되지 않은 어드레스, 연속적인 어드레스, 및 비연속적인 어드레스를 포함할 수 있다}와, 논리적 어드레스에 대응하는 데이터가 고체-상태 저장 디바이스 상에 저장되는 하나 이상의 저장 유닛을 포함할 수 있다. 캐시 엔트리의 데이터는 저장 유닛의 부분, 단일 저장 유닛, 및/또는 다중 저장 유닛 상에 저장될 수 있다. 캐시 엔트리는 가변 크기를 가질 수 있다. 전술한 바와 같이, 캐시 엔트리는 클라이언트의 논리적 어드레스와 연관될 수 있다. 논리적 어드레스와 각 캐시 엔트리 사이의 연관은 고체-상태 저장 디바이스(114){예를 들어, 메타데이터(117)에서}에 의해 유지될 수 있다. 캐시 엔트리의 데이터는 고체-상태 저장 디바이스의 저장 유닛 내에 저장될 수 있다{예를 들어, 페이지, 가상 페이지, 소거 블록 및/또는 소거 블록). 대안적으로, 캐시 엔트리의 데이터는 저장 경계를 가로지를 수 있다(예를 들어, 복수의 페이지, 가상 페이지, 소거 블록, 및/또는 가상 소거 블록 상에 저장될 수 있다).
고체-상태 저장 디바이스에 의해 유지된 메타데이터는 복수의 캐시 엔트리를 포함할 수 있으며, 각 캐시 엔트리는 고체-상태 저장 디바이스 상의 대응하는 저장 유닛과 논리적 어드레스를 연관시킨다. 이들 연관은 맵 또는 인덱스("순방향 맵" 또는 "순방향 인덱스"로 언급됨)에 유지될 수 있다. 본 명세서에 사용된 바와 같이, 순방향 맵 또는 순방향 인덱스(또는 일반적으로 인덱스)는 캐시 엔트리 논리적 어드레스(예를 들어, 클라이언트로부터의 논리적 블록 어드레스)를 고체-상태 저장 디바이스의 저장 유닛과 연관시킬 수 있는 임의의 데이터 구조를 언급할 수 있다. 몇몇 실시예에서, 인덱스는 B-트리 등과 같은 트리 데이터 구조를 포함할 수 있다. 트리 데이터 구조는 논리적 어드레스, 또는 논리적 어드레스의 세트(예를 들어, 범위 및/또는 길이로서)에 의해 인덱싱된 캐시 엔트리를 포함할 수 있다. 따라서, 인덱스는 범위 B-트리 또는 (일반적으로 B-트리)로 언급될 수 있다. 복수의 캐시 엔트리를 포함하는 데이터 구조의 예는 도 11과 연계하여 아래에 설명된다.
순방향 인덱스는, 논리적 어드레스에 대응하는 데이터가 고체-상태 저장 디바이스 상에 저장되는지를 결정하는데 사용될 수 있다. 예를 들어, 어드레스와 연관된 노드가 인덱스에 있다면, 어드레스에 대한 유효 데이터는 고체-상태 저장 디바이스 상에서 이용가능하고; 그렇지 않고, 인덱스에 어떠한 노드도 존재하지 않으면, 논리적 어드레스에 대응하는 데이터는 고체-상태 저장 디바이스 상에 저장되지 않는다).
메타데이터는 물리적 어드레스(순방향 맵에서와 같이 논리적 어드레스에 의해 인덱싱된 것에 대비되어)에 의해 저장 유닛을 인덱싱할 수 있는 역방향 인덱스를 더 포함할 수 있다. 따라서, 역방향 인덱스는 특정한 저장 유닛의 빠르고 효율적인 룩업을 제공할 수 있고 및/또는 고체-상태 저장 디바이스의 물리적 어드레스 공간으 통해 순차 순회를 제공할 수 있다. 몇몇 실시예에서, 역방향 인덱스는 순방향 인덱스와 동일한 노드(리프 노드)에 링크될 수 있다{예를 들어, 역방향 인덱스는 순방향 인덱스와 미러링(mirror)될 수 있고, 리프 노드가 논리적 어드레스와 대조되는 물리적 어드레스에 의해 인덱싱되는 점에서 다르다}. 대안적으로, 역방향 인덱스는 트리, 맵, 어레이, 테이블, 비트맵, 등과 같은 개별적인 데이터 구조를 포함할 수 있다. 몇몇 실시예에서, 역방향 인덱스는 유효성 표시자, 폐기가능성 표시자(예를 들어, 저장 유닛의 데이터가 백킹 스토어 상에 저장되었는지의 여부), 저장 유닛 마모 레벨, 에러율, 액세스 패턴 등과 같이, 저장 유닛과 저장 유닛 메타데이터 사이의 연관을 제공할 수 있다.
본 명세서에 사용된 바와 같이, 캐시 반환 메타데이터는 캐시 반환(또는 보존) 결정을 하는데 사용된 메타데이터를 언급할 수 있다. 캐시 반환 메타데이터는 캐시 엔트리와 연관될 수 있고, 이와 같이, 고체-상태 저장 디바이스 상의 특정한 저장 위치에 대조적으로, 논리적 어드레스에 의해 인덱싱될 수 있다. 이것은 캐시 반환 메타데이터가 데이터의 물리적 저장 위치로의 변경에도 불구하고(예를 들어, 순차 저장 동작으로 인해) 유지되도록 할 수 있다. 캐시 반환 메타데이터는 "핫", "웜", 및/또는 "콜드"인 캐시 엔트리를 식별할 수 있다. 본 명세서에 사용된 바와 같이, "핫", "웜", 및/또는 "콜드" 데이터는 특정한 액세스 및/또는 사용 패턴, 다른 데이터와의 물리적 공간 관계를 갖는 데이터를 언급할 수 있다(즉, 데이터 세트의 "온도"는, 물리적으로 매체 상에 있거나 캐시에 사용된 다른 데이터로의 논리적 어드레스 공간에 논리적으로 있는 데이터에 의해 밀접하게 결정되거나 영향을 받을 수 있다). 예를 들어, "핫" 또는 "웜" 데이터는 최근에 액세스된 및/또는 특정한 빈도수(캐시 반환 메타데이터에 의해 표시된)로 액세스된 데이터를 언급할 수 있다. 다른 한 편으로, "콜드" 데이터는 특정한 시간 임계치 내에, 특정한 빈도수 등에(또한 캐시 반환 메타데이터에 의해 표시됨) 액세스되지 않은 데이터를 언급할 수 있다. 종래 기술에 알려진 다양한 상이한 기술 및/또는 데이터 액세스 패턴은 "핫", "웜", 및/또는 "콜드" 데이터를 식별하는데 사용될 수 있고, 이들 중 임의의 것은 본 개시의 가르침 하에 구현될 수 있다. 더욱이, 캐시 반환 메타데이터는 캐시 속성 및/또는 지시자를 포함할 수 있다. 캐시 속성은 캐시 관리를 통보할 수 있고; 예를 들어, "PIN" 캐시 지시자는 특정한 캐시 엔트리가 고체-상태 저장 디바이스로부터 반환되지 못하게 할 수 있고, "BLACKLIST" 속성 및/또는 "FLUSH" 지시자는 데이터가 캐시에 유지되지 못하게 될 수 있다.
몇몇 실시예에서, 고체-상태 저장 디바이스는 데이터를 순차적으로 저장할 수 있다. 본 명세서에 사용된 바와 같이, 순차 저장은 데이터가 하나 이상의 첨부점(append points)에 저장되는 부적절한(out-of-place) 저장 방식을 언급할 수 있다. 따라서, 고체-상태 저장 디바이스 상에 저장된 데이터가 변형될 때(또는 몇몇 다른 이유로 인해 재-저장될 때), 데이터는 (예를 들어, 데이터가 원래 저장되는 동일한 저장 유닛에 재기록되는 것에 대조적으로) 고체-상태 저장 디바이스의 상이한 저장 유닛에 저장될 수 있다.
순차 저장은 또한 고체-상태 저장 디바이스에 의해 저장 메타데이터(예를 들어 로그-기반의 저장)를 유지하기 위한 메커니즘을 언급할 수 있다. 저장 메타데이터는 고체-상태 저장 디바이스 상에 수행된 저장 동작의 시퀀스가 재구성되거나 재생되도록 할 수 있다. 저장 메타데이터는 저장 분할 시간 스탬프, 시퀀스 표시자, 패킷 헤더, 순방향 및/또는 역방향 인덱스 등을 포함할 수 있다. 예를 들어, 제 1 논리적 어드레스에 대응하는 데이터가 고체-상태 저장 디바이스 상에 저장될 때, 로깅 데이터가 유지될 수 있다. 메타데이터는 전술한 순방향 인덱스(예를 들어, B-트리)에서 데이터를 인덱싱하는 것을 포함할 수 있다. 예를 들어, 논리적 어드레스에 대응하는 캐시 엔트리는 인덱스에 추가될 수 있으며, 이것은 논리적 어드레스에 대응하는 데이터를 포함하는 고체-상태 저장 디바이스 상의 저장 유닛을 참조하도록 구성될 수 있다. 전술한 바와 같이, 논리적 어드레스는 어드레스 및 길이 또는 범위를 포함할 수 있고, 및/또는 논리적 어드레스의 세트를 포함할 수 있다. 데이터가 클라이언트(또는 다른 개체)에 의해 변형될 때, 변형된 데이터는 고체-상태 저장 디바이스 상에 순차적으로(예를 들어, "부적절하게") 저장될 수 있다. 따라서, 논리적 어드레스와 연관된 유효 데이터를 포함하는 저장 유닛은 변경될 수 있다. 캐시 엔트리는 새로운 저장 유닛(들)을 반영하도록 업데이트될 수 있고, 오래된 저장 유닛은 무효화될 수 있다(예를 들어, 역방향 인덱스에서, 또는 다른 데이터 구조에서). 저장 동작의 이러한 시퀀스는 순방향 맵, 고체-상태 저장 디바이스 상에 저장된 시퀀스 표시자, 및/또는 다른 저장 메타데이터(예를 들어, 역방향 인덱스, 등)를 이용하여 재생될 수 있다. 다른 순차 저장 동작은 저장 분할 복구, 가비지 컬렉션, 에러 관리, 가상 저장 관리, 순차 저장(예를 들어, 로그-기반의 저장 동작) 등을 포함하지만, 여기에 한정되지 않는다. 본 명세서에 사용된 바와 같이, 순차 저장 동작은 전술한 임의의 저장 동작을 언급할 수 있다.
도 1은 클라이언트(110a 내지 110c), 캐시로서 동작하도록 구성된 고체-상태 저장 디바이스(114), 통신 버스(116) 및 백킹 스토어(118)를 포함하는 시스템(100)의 일실시예를 도시한다. 시스템(100)은 저장부-부착된 네트워크("SAN"), 네트워크 부착된 저장부("NAS"), 또는 클라이언트(110a 내지 110c)의 다른 구성, 및 고체-상태 저장 디바이스(114)를 갖는 백킹 스토어(118)가 있을 수 있다. 클라이언트(110a 내지 110c)는 백킹 스토어(110)에 저장된 데이터에 액세스하는 컴퓨터 디바이스이다. 클라이언트(110a 내지 110c)는 데스크탑, 워크스테이션, 서버, 또는 다른 특정 유형의 컴퓨터 디바이스와 같은 개인용 컴퓨터일 수 있다. 대안적으로, 또는 추가적으로, 클라이언트(110a 내지 110c)는 운영 체제(OS), 파일 시스템(FS), 웹 서버, 데이터베이스 서버 등과 같이, 컴퓨터 디바이스 상에서 동작하는 프로세스 또는 서비스를 포함할 수 있다.
고체-상태 저장 디바이스(114)는 클라이언트(110a 내지 110c) 및/또는 백킹 스토어(118)에 캐싱 서비스를 제공하도록 구성될 수 있다. 캐시로서 고체-상태 저장 디바이스(114)를 이용하는 것은 다수의 상이한 이익을 제공할 수 있다. 예를 들어, 클라이언트(110a 내지 110c)가 고체-상태 저장 디바이스(114)로부터 판독하고 고체-상태 저장 디바이스(114)에 기록하는 액세스 시간은 클라이언트(110a 내지 110c)가 백킹 스토어(118)로부터/로 직접 데이터를 판독 및 기록하는 액세스 시간보다 적을 수 있고, 고체-상태 저장 디바이스(114)는 클라이언트(110a 내지 110c)가 데이터에 더 빨리 액세스할 수 있게 한다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 클라이언트(110a 내지 110c)와의 논리적 인터페이스를 제공할 수 있고, 이것은 고체-상태 저장 디바이스(114)의 물리적 저장 용량을 초과하는 논리적 어드레스 공간을 포함할 수 있다. 논리적 어드레스 공간은 백킹 스토어(118)의 물리적 저장 용량에 대응할 수 있으며, 이것은 클라이언트가 고체-상태 저장 디바이스(114)와 투명하게 상호 작용하도록 할 수 있다{예를 들어, 이들이 백킹 스토어(118)에 직접 액세스하는 것처럼}. 대안적으로, 또는 추가적으로, 고체-상태 저장 디바이스(114)는 고체-저장 디바이스(114) 및 백킹 스토어(118) 양쪽 모두의 물리적 저장 용량을 초과하는 논리적 어드레스 공간(예를 들어, "산재" 또는 "희박한" 논리적 어드레스 공간)을 제공할 수 있다. 논리적 어드레스 공간은 64 비트 어드레스 공간, 32 비트 어드레스 공간, 또는 클라이언트(110a 내지 110c)에 의해 사용된 다른 어드레싱 방식을 포함할 수 있다.
고체-상태 저장 디바이스(114)는 클라이언트(110a 내지 110c)의 논리적 어드레스를 고체-상태 저장 디바이스(114) 상의 저장 유닛에 매핑하기 위해 논리적-물리적 인덱스를 구현할 수 있고, 이것은 클라이언트(110a 내지 110c)에 의해 구현된 여분의 전환 층을 제거할 수 있고, 저장 디바이스(114 및 118)로의 클라이언트((110a 내지 110c) 액세스를 간략하게 할 수 있고, 및/또는 클라이언트(110a 내지 110c)에 대한 유연한 저장 인프라 구조(예를 들어, "산재" 또는 "희박하게 제공된" 저장 서비스)를 제공할 수 있다.
고체-상태 저장 디바이스(114)는 고체-상태 저장 제어기(115)를 포함할 수 있고, 이러한 고체-상태 저장 제어기(115)는 고체-상태 저장 디바이스(114) 상에 저장된 캐시에 관련된{및/또는 디바이스(114) 상에 수행된 캐시 동작에 관련된} 메타데이터(117), 및 고체-상태 저장 디바이스(114) 상에 수행된 저장 동작에 관련된 저장 메타데이터, 고체-상태 저장 디바이스(114) 상의 저장 유닛의 상태 등을 유지하도록 구성될 수 있다. 메타데이터는 유효 맵 및 폐기가능성 맵을 포함할 수 있다. 유효 맵은 유효 데이터{최신이고 클라이언트(110a 내지 110c)의 논리적 어드레스와 연관된 데이터}를 포함하는 고체-상태 저장 디바이스(114)의 저장 유닛을 식별할 수 있다. 따라서, 유효 맵은 전술한 순방향 인덱스를 포함할 수 있다. 무효 맵은 유효 맵(예를 들어, 유효 맵에 있지 않은 모든 저장 유닛은 무효 데이터를 포함하는 것으로 식별될 수 있다)으로부터 도출될 수 있고, 및/또는 역방향 인덱스 등과 같은 개별적인 데이터 구조에 유지될 수 있다. 폐기가능성 맵은 백킹 스토어(118) 상에 저장된 캐시 엔트리 저장 유닛을 식별할 수 있다.
고체-상태 저장 디바이스(114) 및/또는 제어기(115)는 캐시 관리 장치(130)를 포함할 수 있고, 이러한 캐시 관리 장치(130)는 클라이언트 저장 요청에 응답하여 캐시 엔트리를 식별하기 위해 메타데이터를 이용할 수 있다. 몇몇 실시예에서, 캐시 관리 장치(130)는 디바이스 드라이버(예를 들어, 리눅스 디바이스 드라이버)를 이용하여 구현될 수 있다.
도 1이 하나의 고체-상태 저장 디바이스(114)를 도시하지만, 시스템(100)의 다른 실시예는 클라이언트(110a 내지 110c)에 대한 캐시로서 작용하는 다중 고체-상태 저장 디바이스(114)를 포함할 수 있다. 몇몇 실시예에서, 캐시 관리 장치(130)는 시스템에서 각 고체-상태 저장 디바이스(114) 상에서 구현될 수 있다. 다른 실시예에서, 캐시 관리 장치(130)는 시스템(100)에서 고체-상태 저장 디바이스(114)에 걸쳐 분배될 수 있다.
고체-상태 저장 디바이스(114)는 백킹 스토어(118)에 대한 캐시로서 기능한다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114) 및 백킹 스토어(118)는 통신 버스(116)에 의해 연결된다. 통신 버스(116)는 로컬 통신 버스(예를 들어, 컴퓨터 시스템의 통신 버스), 분배된 버스, 근거리 네트워크("LAN"), 광역 네트워크("WAN"), 또는 다른 유형의 통신 네트워크일 수 있고, 다양한 프로토콜을 이용하여 구현될 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)에 직접 부착된다. 고체-상태 저장 디바이스(114) 및 백킹 스토어(118)는 또한 버스에 의해 연결될 수 있다.
고체-상태 저장 디바이스(114)는 백킹 스토어(118)와 실질적으로 동시에 데이터 액세스 요청을 관찰하는 룩 어사이드 캐시(look aside cache)로서 작용하도록 구성될 수 있다. 다른 실시예에서, 고체-상태 저장 디바이스(114)는 백킹 스토어(118) 앞에서 데이터 액세스 요청을 관찰하는 룩 쓰루 캐시(look through cache)로서 작용하도록 구성된다. 고체-상태 저장 디바이스(114)가 룩 쓰루 캐시인 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는, 고체-상태 저장 디바이스(114) 상의 시도된 액세스가 잘못된 경우, 데이터 액세스 요청을 백킹 스토어(118)로 전달한다. 고체-상태 저장 디바이스(114)는 또한 후 기록(write-back) 캐시로서 구현될 수 있다. 몇몇 실시예에서, 현재 캐싱 모드는 고체-상태 저장 디바이스(114)에 의해 유지된 메타데이터에서 이용가능할 수 있다. 캐싱 모드는 저장 인터페이스, 개선된 저장 인터페이스, 등을 통해 클라이언트(110a 내지 110c)에 의해 변형가능할 수 있다. 메타데이터는 PIN, BLACKLIST, 등과 같은 캐시 속성 및/또는 캐시 지시자(예를 들어, FLUSH)를 추가로 표시할 수 있다. 캐시 속성 및/또는 지시자는 캐시 관리 장치(130) 및/또는 고체-상태 저장 제어기(115)에 의한 액세스를 위해 고체-상태 저장 디바이스(114)에 의해 유지된 메타데이터에 저장될 수 있다.
백킹 스토어(118)는 클라이언트(110a 내지 110c)를 위한 저장부를 제공할 수 있고, 이러한 저장부는 백킹 스토어(118)로부터/로 데이터를 판독 및 기록한다. 백킹 스토어(118)는 고체 상태 저장부, 하드 디스크 드라이브, 테이프, 몇몇 다른 비휘발성 데이터 저장 매체, 또는 이전의 예들의 조합과 같은 하나 이상의 비휘발성 저장 디바이스를 포함할 수 있다. 몇몇 실시예에서, 백킹 스토어(118), 또는 백킹 스토어(118)에서의 적어도 특정한 저장 매체는 고체-상태 저장 디바이스(114)의 것보다 낮은 액세스 및/또는 처리량 성능을 가질 수 있다.
몇몇 실시예에서, 시스템(100)은 컴퓨터 디바이스 내에서 구현된다. 예를 들어, 고체-상태 저장 디바이스(114)는 데스크탑과 같은 컴퓨터 디바이스의 마더보드에 부착될 수 있고, 하드 디스크 드라이브인 백킹 스토어(118)를 위한 캐시로서 작용할 수 있다. 컴퓨터 디바이스의 CPU는 데이터를 판독 및 기록하기 위해 고체-상태 저장 디바이스(114)를 이용할 수 있고, 백킹 스토어(118)와 비교하여 고체-상태 저장 디바이스(114)의 더 빠른 판독/기록 시간을 이용할 수 있다. 몇몇 실시예에서, 시스템(100)은 또한 추가 고체-상태 저장 디바이스(114)를 포함한다. 예를 들어, 시스템(100)은 캐시 계층으로 조직화된 다중 고체-상태 저장 디바이스(114)를 갖는 다중-층(multi-tiered) 캐시를 구현할 수 있다.
도 2는 고체-상태 저장 디바이스(114)에 의해 제공된 논리적 및 물리적 저장 공간을 도시하는 시스템(200)의 일실시예를 도시한다. 시스템(200)은 시스템(200)의 구성요소로서 파일 시스템(210)을 도시한다. 파일 시스템(210)은 물리적 컴퓨터 디바이스 상에 동작하는 논리적 개체이다. 몇몇 실시예에서, 파일 시스템(210)은 도 1의 클라이언트(110a 내지 110c) 중 하나 상에서 구현될 수 있다. 파일 시스템(210)은 시스템(200)에서 컴퓨터 파일 및 데이터를 저장 및 조직화한다. 많은 실시예에서, 파일 시스템(210)은 저장의 블록을 파일 및 디렉토리를 조직화하고, 어떤 블록이 어떤 파일에 속하는지를 추적한다. 도 2가 파일 시스템(210)을 도시하지만, 본 개시는 이러한 관점에 한정되지 않고, 데이터베이스, 서버(예를 들어, 웹 서버, 저장 서버 등), 애플리케이션, 사용자 등을 포함하지만, 여기에 한정되지 않는 종래 기술에 알려진 임의의 저장 클라이언트와 연계하여 사용될 수 있다.
몇몇 실시예에서, 백킹 스토어(118)는, 데이터가 파일 시스템(210)에 의해 실제로 저장되는 물리적 저장 공간을 제공한다. 백킹 스토어(118)에 의해 이용가능하게 만들어진 공간의 양은 시스템(200)에 따라 크게 변할 수 있고; 500GB는 데스크탑 컴퓨터에 대해 일반적인 반면, 백킹 스토어(118)의 테라바이트("TB") 또는 페타바이트("PB")는 저장 영역 네트워크(SAN)와 같은 분배된 저장 시스템에 제공될 수 있다. 일반적으로, 백킹 스토어(118)는 블록 저장 디바이스인 저장 디바이스로 구성된다; 하지만, 다른 유형의 백킹 스토어 디바이스는 백킹 스토어(118)에 사용될 수 있다.
고체-상태 저장 디바이스(114)는 미리 결정된 물리적 저장 용량을 가질 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 논리적 및/또는 물리적 분할될 수 있어서, 고체-상태 저장 디바이스(114)의 물리적 공간의 일부분은 백킹 스토어(118)를 위한 캐시로서 작용하도록 전용되고, 고체-상태 저장 디바이스(114)의 일부분은 저장부{예를 들어, 백킹 스토어(118)의 부분, 또는 다른 저장 서비스}로서 동작하도록 구성된다. 예를 들어, 고체-상태 저장 디바이스(114)는, 물리적 공간의 200GB가 캐시로서 동작하도록 전용되는 한편, 나머지 120GB가 백킹 스토어(118)의 부분으로서 처리되도록 포맷팅될 수 있다.
몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 고체-상태 저장 디바이스(114)의 물리적 크기에도 상관없이 백킹 스토어(118)의 물리적 공간과 동일한 크기인 파일 시스템(210)에 캐시 논리적 공간(220)을 제공한다. 예를 들어, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)와 동일한 크기가 되도록 포맷팅될 수 있다. 전형적인 실시예에서, 백킹 스토어(118)의 물리적 저장 용량(예를 들어, 1 PB)은 고체-상태 저장 디바이스(114)의 물리적 저장 용량(예를 들어, 80 GB)보다 더 크다.
몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 백킹 스토어(118){및 고체-상태 저장 디바이스(114) 자체}의 물리적 공간보다 더 큰 파일 시스템(210)에 논리적 어드레스 공간(220)을 제공할 수 있다. 사용자는 캐시 논리적 공간(220)의 크기를 변경시키지 않고도 물리적 공간을 백킹 스토어(118)에 추가할 수 있다. 고체-상태 저장 디바이스(114)는 전술한 순방향 맵을 이용하여 디바이스(114) 및/또는 백킹 스토어(118)에서의 "산재" 또는 "희박하게 제공된" 저장 유닛과 논리적 어드레스 사이의 연관을 유지할 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는, 고체-상태 저장 디바이스(114) 및/또는 백킹 스토어(118)의 점유량이 임계치를 초과할 때 추가 저장 공간{예를 들어, 추가 백킹 스토어(118)}을 요청하도록 구성될 수 있다. 고체-상태 저장 디바이스(114)는 인터페이스를 제공할 수 있고, 이러한 인터페이스에 의해 클라이언트{예를 들어, 파일 시스템(210)}는 고체-상태 저장 디바이스(114) 및 백킹 스토어(118)의 실제 물리적 용량, 나머지 저장 용량, 현재 점유량 레벨(예를 들어, 고체-상태 저장 디바이스 상에 현재 저장된 유효 데이터의 양) 등을 결정하기 위해 질의를 송출할 수 있다. 인터페이스는 저장 용량, 예약 저장 용량 등을 요청하기 위해 클라이언트{예를 들어, 파일 시스템(210)}에게 호출을 추가로 제공할 수 있다.
몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)의 변하는 물리적 저장에 기초하여 캐시 논리적 공간(220)의 크기를 동적으로 조정할 수 있다. 예를 들어, 새로운 저장 디바이스가 백킹 스토어(118)에 추가되는 경우에, 고체-상태 저장 디바이스(114)는 파일 시스템(210)에 제공된 캐시 논리적 공간(220)의 크기를 동적으로 증가시킬 수 있다.
몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 파일 시스템(210)에 투명할 수 있다. 파일 시스템(210)은 고체-상태 저장 디바이스(114)에 의해 그에 제공된 캐시 논리적 공간(220)만을 관찰할 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)를 위한 제어기로서 작용한다. 따라서, 파일 시스템(210)은 데이터 액세스 이벤트(판독 및 기록 요청과 같은)를 고체-상태 저장 디바이스(114)에 의해 제공되는 캐시 논리적 공간(220)으로 향하게 한다. 파일 시스템(210)은, 다루어지는 고체-상태 저장 디바이스(114)가 캐시 논리적 공간(220)만큼 큰 물리적 저장 공간을 갖지 않는다는 것을 인식하지 않을 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 RAID 구성으로 백킹 스토어(118)에 데이터를 스트라이프(stripe)한다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 RAID 구성으로 다른 고체-상태 저장 디바이스를 가지고 구성될 수 있다.
따라서, 고체-상태 저장 디바이스(114)는 산재-매핑된 64-비트 어드레스 공간을 구현할 수 있다. 몇몇 실시예에서, 파일 시스템(210)이 데이터를 요청(예를 들어, 판독 요청)하고, 요청된 데이터를 위한 어드레스(논리적 블록 어드레스, 즉 LBA)를 제공할 때, 고체-상태 저장 디바이스(114){및/또는 제어기(115)}는 고체-상태 저장 디바이스(114)에 의해 유지된 메타데이터(117){전술한 순방향 인덱스와 같은 인덱스)에서의 어드레스를 탐색할 수 있고, 논리적 어드레스와 연관된 데이터가 고체-상태 저장 디바이스(114) 상에서 이용가능한 경우, 대응하는 저장 유닛에서 판독을 개시한다. 고체-상태 저장 디바이스(114)는, 데이터가 지정된 어드레스에 있지 않고 및/또는 논리적 어드레스가 인덱스에 있지 않은 경우 에러를 생성할 수 있다. 에러는 캐시 미스로서 해석될 수 있고, 이러한 캐시 미스는, 고체-상태 저장 디바이스(114)가 백킹 스토어(118)로부터 요청된 데이터를 판독하고 하나 이상의 저장 유닛에서 데이터를 캐싱함으로써 다루어질 수 있다. 캐시 미스는 논리적 어드레스(예를 들어, 리프 노드를 인덱스에 추가)를 참조하기 위해 메타데이터를 업데이트를 하는 것 등을 추가로 포함할 수 있다.
고체-상태 저장 디바이스(114)가 고체-상태 저장 디바이스(114)의 물리적 공간보다 더 큰 캐시 논리적 공간(220)을 제공하는 경우에, 캐시 관리 장치(130)는, 고체-상태 저장 디바이스(14)가 물리적 저장 용량을 초과하지 않는 것을 보장하기 위해 고체-상태 저장 디바이스(114)를 관리한다. 더 큰 논리적 공간(220)을 제공하는 한편 고체-상태 저장 디바이스(114)의 물리적 저장 용량을 관리하는 예시적인 접근법은 아래에 기재된다.
그러한 실시예에서, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)로의 액세스를 탐색하는 파일 시스템(210)과 다른 개체에 투명할 수 있다. 고체-상태 저장 디바이스(114)를 관리하고 데이터를 찾는 복잡도는 파일 시스템(210)으로부터 숨겨질 수 있다. 따라서, 파일 시스템(210)은 백킹 스토어(118)에 기록하는 것 대신에, 고체-상태 저장 디바이스(114)에 판독 또는 기록할 데이터를 위해 고체-상태 저장 디바이스(114)를 체크할 필요가 없을 수 있다. 그 대신, 파일 시스템(210)은 고체-상태 저장 디바이스(114)에 의해 제공되는 캐시 논리적 공간(220)에서의 데이터에 간단히 액세스하고, 고체-상태 저장 디바이스(114)가 데이터를 다루기 위해 가장 효율적인 방식을 투명하게 결정하도록 한다. 캐시 논리적 공간(220) 밑에 있는 물리적 저장 장치{즉, 고체-상태 저장 디바이스(114), 및 백킹 스토어(118)와의 관계}는 파일 시스템(210)으로부터 숨겨진다. 더욱이, 고체-상태 저장 디바이스(114)가 데이터의 캐싱을 관리하도록 함으로써, 캐싱 관리 장치(130)는 파일 시스템(210)에 통상적으로 이용가능하지 않은 고체-상태 저장 디바이스(114)에 의해 유지된 메타데이터(117)를 이용하여 캐시 유지 보수에 관한 지능적인 선택을 할 수 있다.
도 3은 그루머(310) 및 캐시 관리 장치(130)를 포함하는 고체-상태 저장 제어기(115)의 예시적인 실시예를 도시한다. 고체-상태 저장 제어기(115)는 고체-상태 저장 매체(320)에 결합(예를 들어, 직접 버스 또는 다른 통신 도관을 통해)될 수 있다. 고체-상태 저장 매체(320)는 로컬 통신 버스, 네트워크형 버스, 네트워크 연결부 등을 통해 제어기(115)에 결합될 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114) 및/또는 제어기(115)는 복수의 고체-상태 저장 매체(320)에 통신가능하게 결합될 수 있다. 고체-상태 저장 매체(320)는 뱅크(bank)로 배치될 수 있는 하나 이상의 고체-상태 저장 요소(미도시)를 포함할 수 있다. 고체-상태 저장 제어기(115)는 하나 이상의 뱅크에 병렬로 액세스할 수 있고 및/또는 고체-상태 저장 디바이스(114)는 복수의 고체-상태 저장 제어기(115)를 포함할 수 있다.
도시된 실시예에서, 캐시 관리 장치(130)는 캐시 제어기(312), 및 백업 엔진(314)을 포함한다. 그루머(310) 및 캐시 관리 장치(130)는 메타데이터(117)에 액세스를 할 수 있고, 이러한 메타데이터(117)는 특히 유효 맵을 포함할 수 있는 저장 메타데이터(316)와, 폐기가능성 맵을 포함할 수 있는 저장 메타데이터(318)를 포함할 수 있다. 그루머(310) 및/또는 캐시 관리 장치(130)는 펌웨어, 소프트웨어, 하드웨어, 또는 이들의 몇몇 조합으로서 구현될 수 있다. 도 3에 도시된 바와 같이, 그루머(310) 및 캐시 관리 장치(130)는 고체-상태 저장 제어기(115) 상에서 구현될 수 있다. 그러나, 본 개시는 이러한 관점에 한정되지 않는다. 예를 들어, 몇몇 실시예에서, 그루머(310) 및/또는 캐시 관리 장치(130)는 개별적인 제어기, 프로세서, FPGA, 등을 이용하여 구현될 수 있다. 대안적으로, 또는 추가적으로, 고체-상태 저장 제어기(115), 그루머(310), 및/또는 캐시 관리 장치(130)는 고체-상태 저장 디바이스(114) 상에서 동작하는 하나 이상의 드라이버로서 구현될 수 있다.
그루머(310)는 저장 분할 복구(예를 들어, 소거 블록 복구), 데이터 리프레시(refresh) 동작, 데이터 에러 수정, 에러 핸들링 등과 같은 유지 보수 동작의 부분으로서 고체-상태 저장 매체(320) 상에 저장된 데이터를 이동시킨다. 그루머(310)는 파일 시스템(210) 및 백킹 스토어(118)에 투명한 방식으로 고체-상태 저장 매체(320)에서의 저장 유닛들 사이에 데이터를 이동시킬 수 있다. 예를 들어, 그루머(310)는 고체-상태 저장 디바이스(114) 상의 저장 공간을 재요구하기 위해 고체-상태 저장 디바이스(114)로서 동작하는 고체-상태 저장 디바이스에서의 데이터 상에서 가비지 컬렉션 동작을 수행할 수 있다. 그루머(310)는 또한 고체-상태 저장 디바이스(114)에서 크게 분해되는(heavily fragmented) 파일을 조각 모음(degfragment)할 수 있다. 예시적인 그루밍 동작은 본 명세서에 전체가 참고용으로 병합되는, "고체 상태 저장부에서의 저장 공간 복구를 위한 장치, 시스템, 및 방법(Apparatus, System, and Method for Storage Space Recovery in Solid-state Storage)"이라는 명칭으로 2007년 12월 6일에 출원된 David Flynn 등의 미국 특허 출원 번호 11/952,101에 기재되어 있다. 유사하게, 그루머(310)는 판독 방해로부터 및/또는 마모 레벨링 동작의 부분으로서 데이터를 보호하기 위해 데이터를 이동시킬 수 있다. 당업자는, 데이터 유지 보수 및 공간 유지 보수 목적을 위해 저장 디바이스 내에서 데이터의 이동을 요구할 수 있는 다른 그루밍 동작을 인식할 것이다. 복구를 위해 선택된 저장 분할, 유효 맵, 저장 분할 에러율, 저장 분할 마모 레벨, 액세스 패턴 등과 같이, 그루머의 동작에 관련된 메타데이터는 메타데이터(117){예를 들어, 저장 메타데이터(316)}에 유지될 수 있다. 메타데이터(117){예를 들어, 저장 메타데이터(316)}는, 논리적 어드레스에 관련된 유효 데이터가 저장되는 고체-상태 저장 매체(320) 상의 저장 유닛에 저장 클라이언트에 의해 제공된 논리적 어드레스들 사이의 연관을 포함하는 인덱스를 더 포함할 수 있다. 전술한 바와 같이, 인덱스는 논리적 어드레스에 의해 인덱싱된 길이 및/또는 범위 인코딩된 노드를 포함하는 B-트리를 포함할 수 있다.
캐시 제어기(312)는 고체-상태 저장 디바이스(114)와 관련하여 저장 클라이언트{클라이언트(110a 내지 110c), 파일 시스템(210), 또는 다른 것들과 같은}와 백킹 스토어(118) 사이의 데이터 교환을 조정한다. 몇몇 실시예에서, 캐시 제어기(312)는, 데이터가 고체-상태 저장 디바이스(114)로부터 언제 어떻게 반환되는지를 규정하는 반환 정책을 유지할 책임이 있다. 몇몇 실시예에서, 반환 정책은 특히, 데이터 액세스 패턴(예를 들어, 데이터가 "핫", "웜", "콜드" 등의 여부)을 포함할 수 있는 캐시 반환 메타데이터에 기초할 수 있다. 반환 메타데이터는 최종 액세스 시간(가장 최근에 사용된), 액세스 빈도수, 액세스 시간 및/또는 액세스 빈도수에 대한 캐시 엔트리 크기의 비율, 등에 대응할 수 있다.
몇몇 실시예에서, 캐시 반환 메타데이터는 반환 결정을 하는데 사용될 수 있는 캐시 속성 및/또는 지시자를 포함할 수 있다. 예를 들어, PIN 캐시 속성은, 데이터가 "콜드"이더라도, 연관된 데이터가 캐시에 유지되도록 할 수 있다. 캐시 지시자(예를 들어, FLUSH 지시자)는 규정된 캐시 엔트리가 고체-상태 저장 디바이스(114)로부터 플러싱되도록 할 수 있다. 캐시 속성 및/또는 지시자는 인터페이스를 통해 저장 클라이언트{예를 들어, 클라이언트(110a 내지 110c)}에 의해 제공될 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)는 인터페이스를 제공할 수 있고, 이러한 인터페이스에 의해 클라이언트는 캐시(예를 들어, BLACKLIST 또는 FLUSH) 등으로부터 제거하기 위해 캐시(예를 들어, PIN 속성)에 유지하기 위한 데이터를 규정할 수 있다. 몇몇 실시예에서, 캐시 반환 결정은 저장 메타데이터(316)에 기초할 수 있다. 전술한 바와 같이, 저장 메타데이터(316)는 캐시 엔트리들을 연관시키는 순방향 맵을 포함할 수 있고, 이러한 캐시 엔트리 각각은 고체-상태 저장 디바이스(114) 상의 각 저장 유닛을 갖는 각 논리적 어드레스(또는 논리적 어드레스 세트 또는 범위)를 포함한다. 인덱스는 액세스 패턴 메타데이터와 대응하는 논리적 어드레스 사이의 연관을 유지하는데 사용될 수 있다{예를 들어, 트리 인덱스에서의 카운트는 특정한 노드, 에지, 또는 리브가 얼마나 자주 방문되는지, 그리고 어떤 유형의 동작(판독, 기록, 트림)이 있는지를 추적할 수 있다}. 이들 연관은, 근본적인 데이터가 고체-상태 저장 디바이스 상에 이동될(예를 들어, 저장 분할 복구 동작 등을 할 동안, 변형에 응답하여, 제 1 저장 유닛으로부터 제 2 저장 유닛으로 이동될 때) 때조차 유지될 수 있다. 따라서, 반환 결정을 할 때, 캐시 제어기(312)(또는 다른 개체)는 관련 액세스 패턴 메타데이터를 얻기 위해 저장 메타데이터(316)에 액세스할 수 있다.
몇몇 실시예에서, 캐시 반환 정책은 공간 및/또는 시간 근접도에 기초할 수 있다. 공간 근접도는, 논리적 어드레스가 "핫"인 경우, 공간적으로 근접한 논리적 어드레스가 또한 "핫"일 가능성이 있다는(심지어 아직 액세스되지 않은 경우라도) 점을 고려한다. 캐시 엔트리들 사이의 "공간적 소재(spatial locality)"는 저장 메타데이터(316)에 유지될 수 있다(예를 들어, 인덱스 또는 순방향 맵을 이용하여). 전술한 바와 같이, 저장 메타데이터(316)의 순방향 인덱스는 논리적 어드레스를 고체-상태 저장 디바이스(114)의 물리적 저장 유닛에 연관시킬 수 있다. 논리적 어드레스는 저장 유닛에 임의로 매핑될 수 있고, 부적절한 기록 및 다른 순차 저장 동작으로 인해, 데이터의 물리적 위치는 시간에 따라 변할 수 있다. 그러므로, 계속 어드레스하는 저장 유닛을 이용하여 논리적 근접도를 결정하는 것이 실용적이지 않을 수 있다. 캐시 제어기(312)(또는 다른 개체)는 반환 결정을 하는데 사용하기 위한 공간 근접도를 식별하기 위해 저장 메타데이터(316)에 액세스할 수 있다(논리적 어드레스 공간에서 "핫" 데이터에 공간적으로 근접한 데이터는 반환을 위해 덜 바람직할 수 있는 반면, "핫" 데이터에 공간적으로 근접하지 않은 데이터는 반환을 위해 더 바람직할 수 있다).
몇몇 실시예에서, 고체-상태 저장 제어기(115)는 캐싱의 지원에 사용하기 위해 고체-상태 저장 디바이스(114) 상에 이용가능한 물리적 저장 공간의 최대량으로 구성된다. 관리자(administrator)(또는 다른 개체)는 고체-상태 저장 디바이스(114)를 구성할 때 이러한 정보를 제공할 수 있다. 다른 실시예에서, 캐시 제어기(312)는 자체적으로 저장 공간의 최대량을 발견한다{예를 들어, 고체-상태 저장 디바이스(114)의 물리적 저장 용량을 식별함으로써}. 최대 점유량( 및 이에 따라 유도된 임계치)은 시간에 따라 변할 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)의 특정 저장 위치는 신뢰성이 없고 및/또는 장애가 있을 수 있고, 이것은 디바이스(114)의 물리적 저장 용량을 감소시킬 수 있다. 그러므로, 최대 점유량은 감소될 수 있다. 몇몇 실시예에서, 감소는 클라이언트에 투명하게 발생할 수 있다{예를 들어, 고체-상태 저장 디바이스(114)는 동작을 계속해서 하고 및/또는 동일한 논리적 어드레스 공간을 클라이언트에 제공할 수 있다}. 대안적으로, 저장 용량에서의 감소를 클라이언트{예를 들어, 클라이언트(110a 내지 110c)}에게 통보하는 통지를 송출한다. 유사하게, 고체-상태 저장 디바이스(114)의 물리적 저장 용량은 증가될 수 있다(예를 들어, 추가 고체-상태 저장 매체가 추가될 때). 점유량 임계치는 추가 저장 용량에 따라 조정될 수 있다.
최대 점유량 정보를 이용하여, 캐시 제어기(312)는, 캐시 관리 장치(130)가 고체-상태 저장 디바이스(114)에 캐싱되도록 할 수 있는 데이터의 최대량을 규정하는 최대 점유량 임계치를 도출할 수 있다. 몇몇 실시예에서, 최대 점유량 임계치는 모든 사용가능한 물리적 용량을 이용하지 않고, 그 대신 마모되거나 신뢰가능하지 않은 저장 유닛의 저장 공간 복구 및/또는 교체와 같은 유지 보수 동작을 수행하기 위해 고체-상태 저장 디바이스(114)에 대한 물리적 용량의 부분을 예약할 수 있다. 몇몇 실시예에서, 캐시 제어기(312)(또는 다른 개체)는 최대 점유량 임계치를 동적으로 결정할 수 있다. 최대 점유량 임계치는 데이터 액세스 패턴 등과 같은 메타데이터(117)에 기초할 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)가 반환의 경우에 후속 캐시 미스를 야기할 가능성이 있는 많은 양의 "핫" 데이터를 포함하면, 점유량 임계치는 동적으로 감소될 수 있다. 반대로, 고체-상태 저장 디바이스(114)가 후속 캐시 미스의 기회가 낮은 경우 반환될 수 있는 많은 양의 "핫" 데이터를 포함하면, 최대 점유량 임계치는 증가될 수 있다. 대안적으로, 또는 추가적으로, 고체-상태 저장 디바이스(114)는 이상적인 임계치를 발견적으로(heuristically) 결정하기 위해 메타데이터(117)에서의 캐시 성능을 추적하도록 구성될 수 있다. 예를 들어, 최근에 반환된 캐시 엔트리에 대한 높은 캐시 미스율은, 추가 캐시 저장 공간이 요구되는(또는 캐시 반환 정책이 조정되어야 하는) 것 등을 나타낼 수 있다. 대안적으로, 캐시 미스율이 낮으면, 임계치는 감소될 수 있고, 고체-상태 저장 디바이스의 초과 저장 공간은 다른 목적(예를 들어, 다른 백킹 스토어를 위한 캐시로서, 저장 공간으로서, 등)에 사용될 수 있다.
최대 점유량 임계치는 예를 들어, 고체-상태 저장 디바이스(114)에 의해 제공된 저장량으로부터 고체-상태 저장 디바이스(114)에 의해 사용된 다른 데이터 또는 소프트웨어에 의해 점유되고 그 위에 저장된 저장량을 뺀 값일 수 있다. 다른 실시예에서, 최대 점유량 임계치는 고체-상태 저장 디바이스(114)에 이용가능한 저장량의 몇 백분율일 수 있다. 몇몇 실시예에서, 최대 점유량 임계치는 서비스 품질(QOS) 속성 등과 같이 성능 기능에 기초하여 고체-상태 저장 디바이스(114)에 의해 결정된다. 최대 점유량 임계치는 요구(demand), 작업 우선 순위, 또는 관리상(administrative) 제어에 기초하여 동적으로 변할 수 있다. 다른 기준은 또한 조정, 튜닝(tune)하거나, 다른 경우 최대 점유량 임계치를 변경하는데 사용될 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 인터페이스를 제공할 수 있고, 이에 의해 점유량 임계치가 설정될 수 있다. 대안적으로, 또는 추가적으로, 인터페이스는 클라이언트가 하나 이상의 캐시 속성 및/또는 지시자(예를 들어, QOS, PIN, BLACKLIST, 등)를 설정하도록 할 수 있고, 이로부터 최대 점유량 임계치가 결정될 수 있다.
몇몇 실시예에서, 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)가 최대 점유량 임계치를 초과하지 않는 것을 보장하기 위해 고체-상태 저장 디바이스(114) 상에 이용가능한 물리적 저장 용량의 나머지 양을 결정하도록 메타데이터(117)에게 질의한다. 캐시 제어기(312)(또는 다른 모듈)는 고체-상태 저장 디바이스(114)로의 데이터의 각 삽입 이전에 메타데이터(117)를 이용하여 나머지 물리적 용량을 결정할 수 있다. 다른 실시예에서, 캐시 제어기(312)는 고체-상태 저장 디바이스(114)에 남아있는 물리적 저장 용량의 양에 따라 변하는 빈도수로 이러한 결정을 할 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)가 이용가능한 물리적 저장 용량의 절반 이상을 갖는 경우, 캐시 제어기(312)는 각 삽입 이전에 나머지 물리적 저장 용량을 질의하지 않을 수 있고; 그 대신 캐시 제어기(312)는, 특정 양의 캐시 삽입이 결정하기 전에 발생될 때까지 대기할 수 있다. 고체-상태 저장 디바이스(114)가 점점 더 풀(full) 상태가 됨에 따라, 나머지 물리적 저장 용량을 결정하는 질의의 빈도수는, 캐시 제어기(312)가 고체-상태 저장 디바이스(114)로의 각 삽입 이전에 질의하는 지점까지 증가할 수 있다.
몇몇 실시예에서, 일단 고체-상태 저장 디바이스(114)가 최대 점유량 임계치에 의해 한정된 최대 점유량에 도달하면, 캐시 제어기(312)는, 추가 저장 용량이 이용가능할 때까지 고체-상태 저장 디바이스(114)로의 임의의 캐시 삽입을 방지한다. 캐시 제어기(312)는, 심지어 고체-상태 저장 디바이스(114)가 최대 점유량에 도달할 때조차, 판독이 고체-상태 저장 디바이스(114)에서의 데이터 상에서 발생하도록 할 수 있다. 고체-상태 저장 디바이스(114)는, 이에 따라 고체-상태 저장 디바이스(114)가 넘치지 않고 고체-상태 저장 디바이스(114) 내에 저장된 데이터에 대한 보호를 제공한다는 것을 보장할 수 있다.
몇몇 실시예에서, 캐시 제어기(312)는 또한 고체-상태 저장 디바이스(114) 상에 사용된 물리적 저장 용량의 양을 한정하는 목표 점유량 임계치를 한정한다. 몇몇 실시예에서, 캐시 제어기(312)는, 일단 고체-상태 저장 디바이스(114)가 목표 점유량 임계치에 도달하였으면, 데이터가 고체-상태 저장 디바이스(114)로부터 반환되는 속도를 증가시키려는 조치를 취할 수 있다. 몇몇 실시예에서, 캐시 관리 장치(130)만은, 일단 목표 점유량 임계치에 도달하면 고체-상태 저장 디바이스(114)로부터 데이터를 반환하기 시작한다. 다른 실시예에서, 캐시 제어기(312)는, 목표 점유량 임계치에 도달할 때, 백업 엔진(314)의 우선 순위을 증가시킨다{예를 들어, 백업 엔진(314)을 포어그라운드(foreground) 프로세스로서 동작하도록 구성하거나 다른 경우 백업 엔진(314)에 할당된 우선 순위 및/또는 상대적 대역폭을 증가시킨다}. 그러한 실시예에서, 백업 엔진(314)은, 목표 점유량 임계치에 도달할 때까지, 백그라운드 프로세스{예를 들어, 백업 엔진(314)에 낮은 우선 순위 또는 낮은 대역폭 할당을 제공함으로써}로서 동작한다. 현재 물리적 저장 용량, 임계치 등은 캐시 제어기(312) 및/또는 그루머(310)에 의한 액세스를 위해 메타데이터(117)에 유지될 수 있다.
전술한 바와 같이, 메타데이터(117)는 유효 맵을 포함할 수 있는 저장 메타데이터(316)를 포함할 수 있다. 본 명세서에 사용된 바와 같이, 맵은 각 값을 갖는 고유 키의 집합(collection)과 연관되는 임의의 연관 데이터 구조를 언급할 수 있다. 맵에서의 고유 키를 탐색하는 것은 연관된 값을 복귀시킨다. 유효 맵은, 유닛과 연관된 데이터가 유효이거나 무효인지를 규정하는 유효성 표시자와 고체-상태 저장 디바이스(114)의 저장 유닛을 연관시킬 수 있다. 유효성 표시자는 유효 맵에서의 비트일 수 있고, 하나의 상태는 유효 데이터를 나타내고, 다른 상태는 무효 데이터를 나타낸다. 유효성 맵(316)은 비트 맵, 테이블, 리스트, 또는 종래 기술에 알려진 다른 데이터 구조일 수 있다. 예를 들어, 유효 맵은 단지 유효 또는 무효 저장 유닛(및/또는 저장 유닛 세트 또는 범위)의 표현을 포함하는, 어드레스, 공간과 같은 매우 크고 잠재적으로 조밀한(sparsely populated) 영역을 관리하는데 적합한 데이터 구조일 수 있다. 예를 들어, 유효 맵은 유효 데이터를 포함하는 각 저장 유닛의 엔트리의 산재 어레이를 포함할 수 있다. 무효성은 유효 맵으로부터 도출될 수 있거나(위치가 유효 맵에 있지 않으면, 위치는 무효이다), 또는 그 반대로도 이루어진다.
고체-상태 저장 디바이스(114)의 유닛 또는 저장 유닛은 고체-상태 저장 매체(320) 상의 어드레스가능한 물리적 저장 유닛을 언급할 수 있다. 몇몇 실시예에서, 메타데이터(117)는 저장 유닛에 대한 논리적 블록 어드레스(LBA)의 1 대 1 비율을 유지할 수 있고; 즉, 하나의 LBA는 하나의 저장 유닛 또는 유닛과 연관될 수 있다. 대안적으로, 또는 추가적으로, LBA(또는 인덱스 노드)는 저장 유닛의 길이 또는 범위와 연관될 수 있다. 몇몇 실시예에서, 저장 유닛은 고체 상태 저장 매체(320)에서 물리적 블록 어드레스("PBA")에 의해 어드레스된 물리적 블록이고, 이러한 고체 상태 저장 매체(320)는 플래시 메모리 또는 다른 비휘발성 저장 매체를 포함할 수 있다. 다른 실시예에서, 저장 유닛은 하드 디스크 드라이브 상의 실린더 헤드 섹터("CHS") 위치를 언급할 수 있다. 저장 유닛의 특성은 고체-상태 저장 디바이스(114)에 의해 사용된 특정 저장 매체에 따라 변할 수 있다. 고체-상태 저장 디바이스(114)는 다수의 유형의 저장 유닛을 동시에 지원할 수 있다.
유효 맵(316)에서 유효로 마킹된 고체-상태 저장 디바이스(114)의 저장 유닛과 연관된 데이터는 고체-상태 저장 디바이스(114) 상에 유지될 수 있는 한편, 무효 유닛(마킹된 및/또는 추측된)과 연관된 데이터는 고체-상태 저장 디바이스(114)로부터 제거될 수 있다. 무효 저장 유닛은 저장 분할 재청구 프로세스(예를 들어, 가비지 컬렉션)에서의 제거를 위한 후보일 수 있다. 복구될 저장 분할에서의 유효 데이터는 유효 데이터를 고체-상태 저장 디바이스(114)의 다른 저장 분할에 기록함으로써 고체-상태 저장 디바이스(114) 상에 유지될 수 있다.
캐시 메타데이터(316)는 비트 맵, 테이블, 리스트, 또는 종래 기술에 알려진 다른 데이터 구조를 포함할 수 있는 폐기가능성 맵을 포함할 수 있다. 폐기가능성 맵은, 유닛과 연관된 데이터가 폐기가능하거나 폐기가능하지 않는 지를 규정하는 폐기가능성 표시자와 고체-상태 저장 디바이스(114)의 저장 유닛을 연관시킬 수 있다. 유닛과 연관된 데이터는, 백킹 스토어(118)에 저장된 경우 폐기가능하다. 유닛과 연관된 데이터가 백킹 스토어(118)에 저장되지 않았으면, 일반적으로 폐기가능하지 않다.
도 3의 예에서, 저장 메타데이터(316) 및 캐시 메타데이터(318)는 동일한 데이터 구조{메타데이터(117)}에서 구현된다. 예를 들어, 유효 맵과 폐기가능성 맵은 단일 맵으로 구현될 수 있고, 하나의 비트는 유효성을 나타내고, 제 2 비트는 폐기가능성을 나타낸다. 그러나, 몇몇 실시예에서, 저장 및 캐시 메타데이터(316 및 318)는 개별적인 데이터 구조로서 구현될 수 있다. 그러한 실시예에서, 하나의 데이터 구조의 단일 판독은 특정한 저장 유닛의 유효성 상태 및 폐기가능성 상태 모두를 결정할 수 있다. 예를 들어, 유효성 표시자는 결합된 맵의 컬럼일 수 있고, 폐기가능성 표시자는 결합된 맵의 다른 컬럼일 수 있다.
캐시 관리 장치(130)는 백업 엔진(314)을 포함할 수 있고, 이러한 백업 엔진(314)은 메타데이터(117)를 이용하여 백킹 스토어(118) 상에서 백업하기 위해 캐시 엔트리를 식별하도록 구성될 수 있다. 백업 엔진(314)은, 저장 메타데이터(316)에서 유효로서 마킹되고, 캐시 메타데이터(318)에서 폐기가능한 저장 유닛이 백킹 스토어(118) 상에 저장되도록 할 수 있다. 백킹 스토어(118)는, 백킹 스토어(118)로부터 적절히 검색될 수 있도록 데이터를 저장한다. 예를 들어, 백업 엔진(314)은 메타데이터(117)를 사용하여, 유효로서 마킹되고 폐기가능하지 않은 저장 유닛을 식별할 수 있다. 유닛과 연관된 데이터는 LBA, 및 LBA에 대응하는 데이터{고체-상태 저장 매체(320) 상에 저장된}를 포함할 수 있다. 백업 엔진(314)은 데이터를 판독할 수 있고, 데이터가 백킹 스토어(118)에 저장되도록 한다. 그 결과, 백킹 스토어(118)로 향하는 LBA에 대한 미래의 판독 요청은 LBA와 연관된 데이터를 적절히 수신한다. 데이터가 백킹 스토어(118) 상에 성공적으로 저장되었다는 것을 결정한 후에, 백업 엔진(314)은 저장 유닛을 폐기가능한 것으로 마킹할 수 있다.
몇몇 실시예에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114) 상에 백그라운드 프로세스로서 동작한다. 이와 같이, 백업 엔진(314)은 낮은 우선 순위로 작용할 수 있고, 단지 고체-상태 저장 디바이스(114) 상의 예비 사이클 및 대역폭을 소비할 수 있다. 몇몇 실시예에서, 캐시 제어기(312)는 백업 엔진(314)의 우선 순위를 증가시킬 수 있거나, 다른 경우 백업 엔진(314)을 포어그라운드로 이동시킬 수 있다. 몇몇 실시예에서, 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)가 목표 점유량 임계치에 도달할 때 백업 엔진(314)의 우선 순위를 증가시킨다. 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)가 최대 점유량 임계치에 도달할 때 캐시 제어기(312)의 우선 순위를 더 증가시킬 수 있다. 몇몇 실시예에서, 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)에서 폐기가능한 것으로 마킹된 유닛이 없는 경우, 또는 고체-상태 저장 디바이스(114)에서 폐기가능한 것으로 마킹된 유닛이 충분하지 않은 경우, 일단 고체-상태 저장 디바이스(114)가 최대 점유량 임계치에 도달하면 백업 엔진(314)에 가장 높은 우선 순위를 부여한다.
몇몇 실시예에서, 도 9와 연계하여 더 구체적으로 논의되는 바와 같이, 백업 엔진(314)은 가장 오래된 데이터와 연관된 고체-상태 저장 디바이스(114)에서의 유닛에서 시작하고, 백업 동작을 수행하는 고체-상태 저장 디바이스(114)에서의 유닛을 통해 연대순으로 진행한다. 전술한 바와 같이, 백업 엔진(314)은 대응하는 폐기가능성 표시자의 상태에 상관없이 메타데이터(117)에서 무효로 마킹되는 저장 유닛과 연관된 데이터를 백업하지 않을 수 있다. 일단 저장 유닛과 연관된 데이터가 백킹 스토어(118)에 저장되면, 백업 엔진(314)은 폐기가능성 표시자를 폐기가능하지 않은 것으로부터 폐기가능한 것으로 변경하기 위해 메타데이터(117)를 업데이트한다. 백업 엔진(314)은 폐기가능성 표시자를 변경하기 전에 데이터가 백킹 스토어(118)에 성공적으로 저장되었음을 확인하기 위해 백킹 스토어(118)를 대기할 수 있다. 몇몇 실시예에서, 백업 엔진(314)은, 고체-상태 저장 디바이스(114)의 특정한 저장 영역이 백업되었고 폐기가능하다는 것을 그루머(310)에게 표시할 수 있다. 관련 실시예에서, 백업 엔진(314)은 저장 영역의 수명을 그루머(310)에게 표시하여, 그루머(310)가 데이터의 어떠한 추가 이동 없이 저장 영역을 재청구하도록 할 수 있다.
메타데이터(117)는 고체-상태 저장 디바이스(114)의 저장 유닛에서의 데이터의 수명을 추적하기 위한 표시자(예를 들어, 로그)를 포함할 수 있다. 메타데이터는, 데이터가 특정 저장 유닛에 기록될 때 및/또는 데이터가 특정 저장 유닛으로부터 판독될 때의 표시자를 포함할 수 있다. 본 명세서에 참고용으로 병합된, "데이터 파이프라인을 이용하여 데이터를 관리하기 위한 장치, 시스템, 및 방법(Apparatus, System, and Method for Managing Data Using a Data Pipeline)"이라는 명칭으로 2007년 12월 6일에 출원된 David Flynn 등의 미국 특허 출원 번호 11/952,091은 고체 상태 저장 디바이스 내에서 직렬로 데이터를 저장하는 접근법을 기재한다. 이러한 디바이스에서, 데이터가 저장 유닛에 저장되는 순서, 및 이에 따라 그러한 저장 유닛과 연관된 데이터의 수명은 대부분의 경우에, 저장 디바이스에서의 데이터의 시퀀스로부터 도출될 수 있다. 고체-상태 저장 디바이스(114)가 상기 출원에 기재된 바와 같이 데이터를 직렬로 저장하는 실시예에서, 캐시 제어기(312)는, 유닛이 고체-상태 저장 디바이스(114)에 저장되는 순서 및/또는 저장 유닛의 저장 분할과 연관된 시퀀스 표시자로부터 데이터의 수명에 관한 정보를 도출할 수 있다. 그러한 실시예에서, 캐시 관리 장치(130)는, 메모리에서의 연관된 비용 및 기록이 발생될 때를 추적하기 위해 개별적인 로그를 유지하는 계산 없이 데이터의 수명을 도출하거나 추정할 수 있다.
몇몇 실시예에서, 메타데이터(117)는 고체-상태 저장 디바이스(114)의 특정 유닛에서의 데이터 상에 판독의 횟수를 추적하는데 사용될 수 있다. 메타데이터(117)는 또한 그러한 판독이 송출되었을 때의 표시자를 포함할 수 있다. 이러한 메타데이터(117)는 고체-상태 저장 제어기(115), 그루머(310), 또는 고체-상태 저장 디바이스(114)의 다른 프로세스에 의해 유지될 수 있다. 캐시 제어기(312)는, 특정 저장 유닛에 대한 최종 판독이 송출되었을 때를 추적(가장 최근에 사용된 저장 유닛을 결정)하기 위해 메타데이터(117)에 액세스할 수 있다. 대안적으로, 또는 추가적으로, 캐시 제어기(312)는 메타데이터(117)를 사용하여, 저장 유닛 액세스 패턴을 추적하고, 특정 유닛이 핫 또는 콜드 데이터를 포함하는 지를 결정할 때 액세스의 빈도수 또는 타이밍을 고려한다.
도 4는 저장 클라이언트{예를 들어, 파일 시스템(210)}, 캐시 디바이스로서 작용하는 고체 상태 저장 디바이스(114), 및 백킹 스토어(118)로서 작용하는 하드 디스크 드라이브 사이의 상호 작용의 예시적인 실시예를 도시한다. 다른 매체를 갖는 시스템상의 다른 변형은 또한 대안적인 실시예에서 구현될 수 있다.
파일 시스템(210)이 영속적인 저장부에 저장될 데이터를 가질 때(예를 들어, 파일로서), 일반적으로 사용할 하나 이상의 적절한 LBA를 결정한다. 파일 시스템(210)은 이와 연관된 데이터가 없는 이용가능한 LBA의 풀(pool)로부터 LBA를 선택할 수 있다. 예를 들어, 파일 시스템(210)이 데이터(D)를 기록할 때, 파일 시스템은 데이터(D)에 대한 LBA 0과 같이 LBA를 선택한다. 파일 시스템은 고체-상태 저장 디바이스(114)로서 작용하는 고체 상태 저장 디바이스에 데이터(D)를 기록한다. 몇몇 실시예에서, 전술한 바와 같이, 파일 시스템(210)은 고체-상태 저장 디바이스(114)에 의해 제공된 논리적 공간과 상호 작용하고, 고체-상태 저장 디바이스(114)의 존재를 인식하지 않는다.
고체 상태 저장 디바이스는, 초기화되고 사용할 준비가 되어 있는 저장 유닛(402)을 갖는다. 고체-상태 저장 디바이스(114)는 고체-상태 저장 디바이스(114) 상의 저장 유닛과 LBA를 연관시키는 메타데이터를 저장할 수 있다. 저장 유닛(402)은 고체-상태 저장 디바이스(114) 상에 어드레스가능할 수 있고; 몇몇 실시예에서, 저장 유닛(402)의 어드레스는 물리적 블록 어드레스("PBA")이다. 특정 실시예에서, 고체-상태 저장 디바이스(114)에서 LBA의 PBA로의 1 대 1 매핑이 있다.
메타데이터(117)에서, 저장 유닛(402)은 유효성 표시자("유효" 컬럼으로 표현됨) 및 폐기가능성 표시자("폐기" 컬럼으로 표현됨)와 연관될 수 이 있다. 몇몇 실시예에서, 메타데이터는, 유효 데이터가 존재하는 엔트리만을 포함하는 "산재"일 수 있다. 따라서, 유효성 표시자는 메타데이터(117)에서의 포함으로부터 추론될 수 있다(예를 들어, LBA 및/또는 저장 유닛이 메타데이터에 있는 경우, 저장 유닛은 유효 데이터를 포함하고; 그렇지 않으면, 저장 유닛은 무효 데이터를 포함한다). 몇몇 실시예에서, 저장 유닛(402)은 키(예를 들어, 전술한 역방향 인덱스에서)로서 저장 유닛(402)에 대한 물리적 어드레스(예를 들어, PBA)를 이용하여 유효성 표시자 및 폐기가능성 표시자에 매핑될 수 있다.
고체 상태 저장 디바이스(114)가 파일 시스템(210)으로부터 기록 요청을 수신할 때, 고체 상태 저장 디바이스(114)는, 요청에 참조된 데이터가 저장되는 초기화된 유닛{저장 유닛(402)과 같은}을 선택한다. 요청은 데이터를 포함할 수 있고, 데이터의 부분을 포함할 수 있고, 및/또는 실질적으로 데이터를 갖지 않을 수 있다. 전술한 바와 같이, 저장 유닛(402)의 선택은 순차 기록 메커니즘에 따라 이루어질 수 있다. 예를 들어, 메타데이터(117)는 "다음의" 이용가능한 저장 유닛을 참조하는 하나 이상의 첨부점(미도시)을 유지할 수 있다. 데이터가 고체-상태 저장 디바이스(114)에 기록될 때, 첨부점은 고체-상태 저장 디바이스(114)의 다음의 저장 유닛에 순차적으로 증분될 수 있다. 이러한 순차 기록은 특히, 마모 레벨링 이익을 제공할 수 있고, 기록 확대(write amplification)를 감소시킬 수 있다.
고체-상태 저장 디바이스(114)는 선택된 저장 유닛(402)에서 저장 요청의 데이터{예를 들어, 논리적 어드레스(LBA 0) 및 데이터(D)}를 저장하고, 이에 따라 메타데이터(117)를 업데이트한다. 메타데이터(117)의 업데이트는 저장 유닛(402)의 기준(예를 들어, 물리적 어드레스)과 LBA 0을 연관시키기 위해 인덱스(410)의 업데이트를 포함할 수 있다. 업데이트는 리프 노드를 B-트리, 또는 다른 순방향 맵 데이터 구조에 추가하는 것을 포함할 수 있다. 엔트리는 저장 유닛 연관과의 빠르고 효율적인 LBA를 가능하게 하기 위해 LBA(LBA 0)에 의해 인덱싱될 수 있다.
메타데이터(117)의 업데이트는 저장 유닛(402)에 대한 유효 및 폐기가능성 표시자를 설정하는 것을 더 포함할 수 있다. 이들 동작은 도 4의 SSD 이벤트의 행의 추가 컬럼에 도시되며, 이러한 도 4의 컬럼은 논리적 어드레스(LBA 0)가 데이터("D")와 연관된다는 것과(순방향 및/또는 역방향 인덱스에서), 저장 유닛(402)의 유효 표시자를 "1"(예를 들어, 유효)로 설정하는 것과, 폐기가능성 표시자를 "0"(폐기가능하지 않음)으로 설정하는 것을 도시한다. 폐기가능성 표시자는, 데이터(D)가 백킹 스토어(예를 들어, 하드 디스크 드라이브) 상에 백업되지 않았기 때문에 "0"(폐기가능하지 않음)으로 설정되고, 데이터 손실 및/또는 손상을 초래하는 하드 디스크 드라이브에까지 백업하지 않고도 고체-상태 저장 디바이스(114)로부터 데이터(D)를 제거한다.
도 4에 도시된 바와 같이, 클라이언트{예를 들어, 파일 시스템(210)}는 데이터(D)를 변형시킬 수 있다. 업데이트된 데이터는 D'로 표현될 수 있다. 업데이트는 데이터(D)를 변형{또는 데이터(D)에 대한 변형을 초래하는 다른 동작을 수행}하는 파일 시스템(210)(또는 몇몇 다른 개체)을 포함할 수 있다. 파일 시스템(210)은 LBA 0에서 변형된 데이터(D')를 저장하기 위한 저장 요청을 송출할 수 있다. 몇몇 실시예에서, 파일 시스템(210)은, 고체-상태 저장 디바이스(114)가 존재(비투명한 캐시)한다는 것을 인식하고; 다른 실시예에서, 파일 시스템(210)은 고체-상태 저장 디바이스(114)를 인식하지 않고, 업데이트 요청은 고체-상태 저장 디바이스(114)에 의해 투명하게 다루어진다.
저장 요청에 응답하여, 고체-상태 저장 디바이스(114)는 고체-상태 저장 매체에 순차적으로 변형된 데이터(D')를 기록할 수 있다. 전술한 바와 같이, 순차 저장은 고체-상태 저장 디바이스의 상이한 저장 유닛에서 변형된 데이터(D')를 "부적절하게" 저장하는 것을 포함할 수 있다. 순차 기록은 특히, 마모 레벨링 이익을 제공할 수 있고, 기록 확대를 감소시킬 수 있다{예를 들어, 동일한 저장 유닛(402) 상에 변형된 데이터(D')를 저장하는 것은 저장 유닛(402)의 저장 분할을 소거하는 것과, 저장 분할 상의 다른 유효 데이터와 함께 D'를 기록하는 것을 요청할 수 있다}.
변형된 데이터(D')를 저장하는 것은 변형된 데이터(D')를 저장하기 위해 "다음의" 저장 유닛{저장 유닛(404)}을 선택하는 고체-상태 저장 디바이스(114)를 포함할 수 있다. 선택은 전술한 순차 저장 메커니즘에 따라 이루어질 수 있다(예를 들어, 하나 이상의 첨부점에서 "다음의" 저장 유닛일 수 있다). 저장 분할(402)에 관련된 메타데이터(117)는, 데이터가 더 이상 유효하지 않고 폐기가능하다는(또는 무시 상태에 있는) 것을 나타내기 위해 업데이트될 수 있다. 논리적 어드레스를 저장 유닛에 연관시키는 메타데이터(117)는 LBA 0을 선택된 저장 분할(404)과 연관시키기 위해 업데이트될 수 있다. 더욱이, 선택된 저장 유닛(404)에 관련된 메타데이터는, 저장 유닛(404)이 유효, 폐기가능하지 않는 데이터를 포함한다는 것을 나타내기 위해 업데이트될 수 있다. 도 4는, 업데이트(1)의 데이터(D')가 저장 유닛(404)에 기록된다는 것과, 이전과 같이, 유효성 표시자가 유닛(404)에서의 데이터(D')가 유효하고 폐기가능하지 않다는 것을 나타내도록 변경된다는 것을 도시한다.
그루머(310)는 몇몇 지점에서, 유닛(402)에 대한 유효성 표시자를 볼 수 있고, 무효로 설정된다는 것을 관찰할 수 있고, 유닛(402) 상에 가비지 컬렉션 동작(GC 1)을 수행할 수 있다. 가비지 컬렉션 동작은 저장 유닛(402)을 초기화된 상태로 되게 할 수 있고, 이 지점에서, 유닛(402)은 데이터를 저장하는데 다시 사용될 수 있다.
도 4는 유닛(404)에서 데이터(D') 상에 백업 동작(BU 1)을 수행하는 고체-상태 저장 디바이스(114)를 추가로 도시한다. 몇몇 실시예에서, 백업 엔진(314)은 백업을 수행한다. 백업 엔진(314)은, 데이터(D')가 LBA 0의 논리적 어드레스 및 데이터 값(D')으로 하드 디스크 드라이브에 저장되도록 한다. 백업 엔진(314)은 데이터(D')를 갖는 LBA 0에 어드레스된 기록 요청을 하드 디스크 드라이브로 전송할 수 있다. 몇몇 실시예에서, 백업 엔진(314)은, 하드 디스크 드라이브가 폐기가능성 표시자를 폐기가능하지 않은 것으로부터 폐기가능한 것("1")로 변경하기 전에 LBA 0에서 D'를 성공적으로 저장하였다는 확인을 기다린다. 하드 디스크 드라이브는 데이터(D')에 대한 LBA와 물리적 어드레스(예를 들어, 특정 CHS에 대한 LBA 0) 사이의 자체 내부 연관을 수행할 수 있다.
몇몇 실시예에서, 백업 동작은 파일 시스템에 투명한 방식으로 발생하고; 즉, 파일 시스템은, 데이터(D')가 이제 고체-상태 저장 디바이스(114)와 하드 디스크 드라이브 모두에 있다는 것을 인식하지 않는다. 유사하게, GC 1과 같은 그루밍 동작은 파일 시스템에 투명하게 수행될 수 있다.
도 4는 데이터를 D"로 변경하는 LBA 0에 대한 파일 시스템(210)(또는 다른 개체)에 의해 생성된 추가 업데이트(2)를 도시한다. 유닛(402)에서와 같이, 응답하여, 고체-상태 저장 디바이스(114)는 메타데이터(117)에서 유닛(404)을 무효로서 마킹한다. 유닛(404)이 무효로서 식별되기 때문에, 폐기가능성 표시자는 변경되거나 변경되지 않을 수 있다; 폐기가능성 표시자의 상태는, 유닛(404)이 그루머(310)(GC 2에 도시된)에 의해 가비지 컬렉션될 것이고, 유효 맵 및 폐기가능성 맵에서의 엔트리와 함께 유닛(404)은 초기화되어, 유닛(404)이 새로운 데이터를 저장하기 위해 다시 사용될 수 있기 때문에, 부적하게 된다.
업데이트(2)는 또한 LBA 0 및 데이터(D")가 새로운 유닛(406)에 순차적으로 기록되도록 하고, 새로운 유닛(406)은 전술한 바와 같이, 유효로 설정된 유효성 표시자를 갖는다. 데이터(D")가 하드 디스크 드라이브로 이동되지 않고 다른 경우 하드 디스크 드라이브에 있지 않기 때문에, 폐기가능성 표시자는 폐기가능하지 않은 것으로 설정된다. 업데이트(2)는 LBA 0을 저장 유닛(406)에 연관시키기 위해 메타데이터(117)의 인덱스(410)를 변형하는 것을 더 포함할 수 있다. 일단 백업 엔진(314)이 데이터(D")를 도시된 하드 디스크 드라이브(BU2)에 플러시하면, 폐기가능성 표시자는 폐기가능한 것으로 변경된다.
파일 시스템은 또한 고체-상태 저장 디바이스(114)로서 작용하는 고체 상태 저장 디바이스에 TRIM 명령을 송출할 수 있다. TRIM 명령은 파일 시스템이 어떤 데이터 저장 유닛(논리적 블록 어드레스)이 더 이상 사용 중이 아닌지를 고체 상태 저장 디바이스{고체-상태 저장 디바이스(114)와 같은}에게 전달하도록 한다. 이것은, 고체-상태 저장 디바이스(114)가 어떤 저장 유닛이 사용 중인지 그리고 어떤 것이 자유로운지를 아는 것을 보장하고, 고체 상태 저장 디바이스가 파일 시스템이 더 이상 필요하지 않고 및/또는 무효라는 데이터를 유지하지 않는 것을 보장한다. TRIM 명령 규격은 현재 Technical Committee T13에 의해 야기된 AT 부착("ATA") 인터페이스 표준의 부분으로서 표준화된다.
도 4에 도시된 바와 같이, 몇몇 실시예에서, 파일 시스템은, LBA 0(텍스트 파일과 같은)와 연관된 데이터(D")가 삭제되고 LBA 0을 이용가능한 풀에 추가하는지를 결정한다. 파일 시스템(또는 다른 개체)은 TRIM 명령을 포함하는 저장 요청을 고체-상태 저장 디바이스(114)로 전송할 수 있다. 고체-상태 저장 디바이스(114)는 TRIM 명령을 수신하고, 몇몇 실시예에서, 무효로서 데이터를 유지하는 영향받은 유닛{유닛(406)과 같은}을 마킹하는 무효화 SSD 이벤트에 응답한다. 고체-상태 저장 디바이스(114)는 나중에, 미래 사용을 위해 유닛(406)을 복구하기 위해 가비지 컬렉션 동작(GC3)을 실행할 수 있다. TRIM은 LBA 0에 대한 엔트리를 제거(예를 들어, B-트리로부터 LBA 0을 나타내는 리프 노드를 제거)하기 위해 메타데이터(117)의 인덱스(410)를 업데이트하는 것을 더 포함할 수 있다.
몇몇 실시예에서, 고체-상태 저장 디바이스(114)로서 작용하는 고체 상태 저장 디바이스는 TRIM를 지원하지 않을 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114) 및 백킹 스토어(118) 모두는 TRIM을 지원할 수 있다. 그러한 실시예에서, 고체-상태 저장 디바이스(114)는 TRIM 명령을 실행할 수 있고, 그런 후에 도 4에 도시된 바와 같이 TRIM 명령을 백킹 스토어(118)로 전달한다. 다른 실시예에서, 고체-상태 저장 디바이스(114)와 백킹 스토어(118)의 하나는 TRIM을 지원할 수 있는 반면, 다른 것은 그렇지 않다. 그러한 실시예에서, 고체-상태 저장 디바이스(114) 및 백킹 스토어(118)는, 이들이 TRIM 명령을 무시하도록 구성될 수 있다. 다른 실시예에서, TRIM을 지원하는 디바이스는 TRIM 명령을 실행할 수 있고, 다른 것으로부터 TRIM 명령을 숨길 수 있다.
관련 실시예에서, 고체-상태 저장 디바이스(114)는, 백킹 스토어(118)에서의 LBA가 트리밍된 표시자를 유지할 수 있고, HDD가 TRIM을 지원하지 않더라도 클라이언트 파일 시스템에 정확히 응답하도록 이러한 정보를 이용할 수 있다. 따라서, 예를 들어, 하드 디스크 드라이브 상에서 트리밍된 LBA에서 데이터에 액세스하려고 시도하는 동작은, 트리밍된 LBA에 대한 데이터가 여전히 하드 디스크 드라이브 상에 존재하더라도 고체-상태 저장 디바이스(114)에 의해 블록킹된다. 고체-상태 저장 디바이스(114)는 또한 겹쳐 기록할 수 있거나, 다른 경우에 데이터가 복구되지 않는 것을 보장하기 위해 HDD 상의 LBA에 관련된 데이터를 삭제할 수 있다. 고체-상태 저장 디바이스(114)는 파일 시스템 및 HDD의 시각(perspective)으로부터 투명하게 이들 동작을 수행할 수 있다.
도 5는 판독 액세스 요청을 처리하는 시스템의 일례를 도시한다. 도 5에 도시된 바와 같이, 파일 시스템은 데이터(A)를 유지하기 위해 LBA 1을 할당하였고, 이러한 데이터가 저장되도록 할 수 있다. 도 5는, 데이터(A)가 하드 디스크 드라이브에서 LBA 1과 연관되지만, 고체-상태 저장 디바이스(114)에 없다는 것을 도시한다. 파일 시스템(210)은 LBA 1에서 데이터의 판독을 송출한다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는 판독 요청을 수신하고, LBA 1과 연관된 데이터(A)가 고체-상태 저장 디바이스(114)(도 5에 도시된 바와 같이, 미스로서 해석되는)에 저장되지 않는다고 결정한다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)는, 데이터(A)가 LBA 1와 연관된 유닛에서 데이터를 판독하려고 시도함으로써 고체-상태 저장 디바이스(114)에 있지 않는다고 결정한다. 고체-상태 저장 디바이스(114)는 예를 들어, 메타데이터(117)를 이용하여 LBA 1, 특히 인덱스(410)에 액세스하려고 시도할 수 있다. 인덱스(410)에서 LBA 1에 대한 엔트리가 없는 경우, 고체-상태 저장 디바이스(114)는 캐시 미스로서 해석될 수 있는 에러를 생성할 수 있다. 메타데이터(117)가 LBA(B 트리 데이터 구조에서)에 의해 인덱싱될 수 있기 때문에, 이러한 결정은 빠르고 효율적으로 이루어질 수 있다.
캐시 미스에 응답하여, 고체-상태 저장 디바이스(114)는 판독 요청을 하드 디스크 드라이브로 다시 향하게 하고, 이 하드 디스크 드라이브는 LBA 1에서 데이터(A)에 액세스한다. 데이터(A)는 하드 디스크 드라이브로부터 검색되고, 파일 시스템(210)으로 복귀된다. 고체-상태 저장 디바이스(114)의 캐시 제어기(312)는 또한 선택된 저장 유닛(502)에 LBA 1의 논리적 어드레스와 함께 데이터(A)를 저장하기 위해 배출 SSD 이벤트(배출 1)를 실행한다. 고체-상태 저장 디바이스(114)는 인덱스(410)에서 저장 유닛(502)과 LBA 1을 연관시키기 위해 메타데이터(117)를 업데이트할 수 있다.
도 5에 도시된 바와 같이, 판독(2)에 응답하여, 고체-상태 저장 디바이스(114)는 유닛(502)으로부터 데이터(A)를 검색하는데, 이는 판독(2)이 캐시 히트(cache hit)이기 때문이다. 고체-상태 저장 디바이스(114)는 판독 요청(2)에 응답하여 데이터(A)를 파일 시스템(210)으로 복귀시킨다. 고체-상태 저장 디바이스(114)는, LBA 1에 대응하는 데이터가 고체-상태 저장 디바이스(114) 상에서 이용가능하다고 결정할 수 있고, 메타데이터(117)를 이용하여, 데이터를 포함하는 저장 유닛(502)을 빠르고 효율적으로 복사 및 식별할 수 있다{인덱스(410)}.
데이터(A)가 배출 1 동작의 부분으로서 유닛(502)에 저장될 때, 고체-상태 저장 디바이스(114)는 유효성 표시자를 유효로서 설정하고, 또한 데이터(A)가 적절히 저장되고 하드 디스크 드라이브에서 LBA 1과 적절하게 연관된다는 것을 반영하기 위해 폐기가능성 표시자를 폐기가능한 것으로 설정한다. 따라서, 데이터(A)는 데이터 손상 없이 고체-상태 저장 디바이스(114)로부터 제거될 수 있다. 예를 들어, 고체-상태 저장 디바이스(114) 상에 동작하는 캐시 관리 장치는 반환 정책을 적용할 수 있고, 데이터(A)가 반환(예를 들어, 액세스 패턴, 그루밍 고려사항 등에 기초하여)되어야 한다고 결정한다. 폐기가능성 표시자가 메타데이터(117)에서 "1"로 설정되기 때문에, 반환은 반환 이전에 유닛(502) 상의 백업 없이 발생할 수 있다.
도 5는 LBA 1과 연관된 데이터를 A로부터 A'로 변경하는 업데이트(1)를 송출하는 파일 시스템(210)을 추가로 도시한다. 이전과 같이, 고체-상태 저장 디바이스(114)는 무효 맵을 이용하여 유닛(502)을 무효로 마킹하고, 그루머(310)는, 미래 사용을 위해 이용가능하도록 유닛(502)을 초기화하도록 가비지 컬렉션 동작(GC 1)을 수행한다. 더욱이, 고체-상태 저장 디바이스(114)는 LBA 1 및 데이터(A')를 새로운 유닛(504)에 저장하고, 무효성 표시자를 유효로 설정하고, 폐기가능성 표시자를 폐기가능하지 않은 것으로 설정한다. 메타데이터(117)의 인덱스(410)는 전술한 바와 같이 LBA 1을 저장 유닛(504)과 연관시키도록 업데이트될 수 있다. 고체-상태 저장 디바이스(114)는 백업 동작(BU 1) 동안, 데이터(A')를 하드 디스크 드라이브에 저장하고, 폐기가능성 표시자를 폐기가능한 것으로 설정한다.
도 5는 또한 데이터(A')가 반환 SSD 이벤트(반환 1)에서 고체-상태 저장 디바이스(114)로부터 반환된다는 것을 도시한다. 몇몇 실시예에서, 반환 1 동작은 파일 시스템에 투명하다. 고체-상태 저장 디바이스(114)는, 캐시 제어기(312)가 데이터가 콜드 상태로 되었다고 결정하는 경우 데이터(A')를 반환할 수 있고; 예를 들어, 파일 시스템(210)은 미리 결정된 시간 동안 데이터(A')를 판독하지 않을 수 있다. 몇몇 실시예에서, 캐시 제어기(312)는 유효성 표시자를 무효로 설정함으로써 데이터(A')를 반환한다. 반환은 인덱스(410)에서 저장 유닛(504)과 LBA 1 사이의 연관을 제거하는 것을 더 포함할 수 있다. 제거는, LBA 1의 데이터(A')가 고체-상태 저장 디바이스(114) 상에 더 이상 저장되지 않는다는 것을 나타낼 수 있다.
고체-상태 저장 디바이스(114)는 유닛(504)을 초기화된 상태로 다시 설정하기 위해 유닛(504)을 가비지 컬렉션할 수 있다. 다른 실시예에서, 고체-상태 저장 디바이스(114)는 유닛(504)을 반환 1에 보여진 중간 상태로 놓는 것 대신에, 반환 프로세스의 부분으로서 직접 유닛(504)을 가비지 컬렉션한다. 다른 실시예에서, 그루머(310)는, 데이터(A')가 아래에 더 구체적으로 설명되는 바와 같이, 유효로서 마킹되더라도, 그루밍 동작의 부분으로서 데이터(A')를 반환한다.
도 6은 백킹 스토어(118)에 대한 고체-상태 저장 디바이스(114)로서 동작하기 위해 저장 디바이스를 구성하는 방법(600)의 몇몇 실시예를 도시한다. 몇몇 실시예에서, 방법(600)의 단계는 고체-상태 저장 디바이스, 고체-상태 저장 매체, 통신 인터페이스, 프로세서, 메모리 등과 같은 특정 기계 구성요소에 결합될 수 있다. 기계가 방법(600)을 구현하도록 하기 위해 구성된 기계-판독가능 지령은 비휘발성 메모리, 디스크, 광학 매체, 등과 같은 비-일시 기계-판독가능 저장 매체 상에 저장될 수 있다.
몇몇 실시예에서, 클라이언트(110a 내지 110c)는 파일 서버(210)를 통해 고체-상태 저장 디바이스(114)와 통신한다. 그러나, 본 개시는 이러한 관점에 한정되지 않고, 클라이언트(110a 내지 110c)는 데이터베이스 서버, 웹 서버, 저장 프로토콜, 등과 같이 다른 프로세스 또는 개체에 직접 및/또는 이를 통해 고체-상태 저장 디바이스(114)와 통신할 수 있다. 방법(600)은, 시스템(100)에서 이용가능한 고체-상태 저장 디바이스(114)를 사용자 마킹하고(602) 시스템(100)에서 이용가능한 백킹 스토어(118)를 사용자 마킹하는(604) 것에서 시작한다.
몇몇 실시예에서, 단계(606)에서, 고체-상태 저장 디바이스는 백킹 스토어(118)와 동일한 물리적 저장 용량을 갖는 논리적 어드레스 공간을 제공하도록 구성될 수 있다. 백킹 스토어(118)가 고체-상태 저장 디바이스(114)의 물리적 저장 용량보다 더 큰 물리적 저장 용량을 갖는 경우, 고체-상태 저장 디바이스(114)는 산재 어드레싱을 지원하도록 구성될 수 있어서, 고체-상태 저장 디바이스(114)는 고체-상태 저장 디바이스(114) 상에 물리적으로 이용가능한 공간보다 더 큰 논리적 어드레스 공간을 제공할 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)는 FUSION_SPARSEFS_SUPPORT 플래그 세트로 구축될 수 있다. 몇몇 실시예에서, 단계(606)의 구성은 고체-상태 저장 디바이스(114) 및 백킹 스토어(118) 모두의 물리적 저장 용량을 초과하는 논리적 어드레스 공간을 제공하는 고체-상태 저장 디바이스를 포함할 수 있다.
단계(608)에서, 고체-상태 저장 디바이스(114) 및 백킹 스토어(118) 모두가 시스템에 제공되면, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)를 위한 캐시로서 작용하도록 구성될 수 있다. 방법(600)은 또한 캐시로서 사용하기 위해 이용가능한 고체-상태 저장 디바이스(114) 상의 물리적 공간의 최대량을 한정하는 최대 점유량 임계치(610)를 설정하는 것을 포함할 수 있다. 최대 점유량 임계치는 외부 개체(예를 들어, 관리자)에 의해 고체-상태 저장 디바이스(114)에 제공될 수 있거나, 캐시 관리 장치(130)는 적절한 임계치 자체를 결정할 수 있다.
단계(612)에서, 고체-상태 저장 디바이스(114)에 대한 목표 점유량 임계치는 전술한 바와 같이{예를 들어, 개체에 의해 및/또는 고체-상태 저장 디바이스(114)에 의해} 설정될 수 있고, 방법(600)이 종료한다. 몇몇 실시예에서, 캐시 관리 장치(130)는 고체-상태 저장 디바이스(114)에서의 점유량을 목표 점유량 임계치 아래로 유지시키려고 시도한다. 캐시 관리 장치(130)는, 고체-상태 저장 디바이스(114)가 목표 점유량 임계치를 초과할 때 캐시 반환을 시작함으로써 그렇게 이루어진다.
도 7은 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법(700)의 예시적인 실시예를 도시한다. 전술한 바와 같이, 방법(700)의 단계는 특정 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
방법(700)은 고체-상태 저장 디바이스(114)가 LBA와 같은 데이터에 대한 어드레스를 포함하는 판독 요청을 수신(702)하는 것에서 시작한다. 단계(704)에서, 방법(700)은, 어드레스와 연관된 데이터가 고체-상태 저장 디바이스(114) 상에서 이용가능한지를 결정한다. 결정은 고체-상태 저장 디바이스에 의해 유지된 메타데이터(117)를 이용하여 이루어질 수 있다; 특히, 논리적 어드레스와 연관된 저장 유닛 사이의 연관을 포함하는 인덱스. 어드레스가 인덱스에 존재하면, 방법(700)은, 데이터가 이용가능하다고 결정할 수 있고, 흐름은 단계(706)로 계속 진행할 수 있다; 그렇지 않으면, 흐름은 단계(710)로 계속 진행할 수 있다.
요청된 데이터는 단계(706)에서 하나 이상의 저장 유닛 상에 액세스될 수 있다. 저장 유닛은 전술한 인덱스에서 식별될 수 있다. 단계(708)에서, 저장 동작에 관련된 메타데이터는 데이터 액세스를 반영하도록 업데이트될 수 있다. 메타데이터는 "핫" 및/또는 "콜드" 논리적 어드레스와 같은 액세스 패턴을 식별하는데 사용될 수 있어서, 액세스 시간 등을 결정한다. 몇몇 실시예에서, 저장 메타데이터는 저장 분할 복구 동작을 수행하기 위해 그루머(310) 및/또는 캐싱 동작(예를 들어, 반환 정책을 결정)을 관리하기 위해 캐시 관리 장치(130)에 액세스가능할 수 있다. 그런 후에 흐름은 종료할 수 있다.
단계(710)에서, 방법(700)은 판독 요청을 백킹 스토어(118)에서 어드레스로 다시 향하게 한다. 캐시 제어기(312)는 데이터를 판독(712)하고, 데이터를 판독 요청을 생성한 개체로 복귀시킨다.
캐시 제어기(312)는 또한 데이터를 고체-상태 저장 디바이스(114)에 삽입(714)하고, 데이터를 지정된 어드레스(인덱스 또는 다른 메타데이터에서)와 연관시킨다. 몇몇 실시예에서, 데이터는 순차적으로 및/또는 도 8과 연계하여 설명된 기록 방법에 따라 기록된다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114)에서 저장 유닛이 없는 경우, 캐시 제어기(312)는 데이터를 고체-상태 저장 디바이스(114)에 삽입하지 않는다.
캐시 제어기(312)는 또한 메타데이터(인덱스)를 업데이트할 수 있어서, 추가 판독 요청은, 데이터가 고체-상태 저장 디바이스(114)로부터 제거될 때까지 고체-상태 저장 디바이스(114)로부터 데이터를 검색한다. 더욱이, 캐시 제어기(312)는, 데이터를 포함하는 저장 유닛이 유효하고 폐기가능한 것을 나타내기 위해 메타데이터(117)를 업데이트한다. 단계(716)는, 데이터가 고체-상태 저장 디바이스(114)에 삽입될 때를 나타내기 위해 로깅 메타데이터를 업데이트하는 캐시 제어기(312)를 더 포함할 수 있고, 방법(700)이 종료한다. 다른 실시예에서, 고체-상태 저장 디바이스(114)는 데이터를 순차적으로 저장할 수 있고, 데이터의 수명은 고체-상태 저장 디바이스(114)s 내의 위치로부터 도출된다.
도 8은 고체-상태 저장 디바이스 상에 데이터를 캐싱하는 방법(800)의 예시적인 실시예를 도시한다. 전술한 바와 같이, 방법(800)의 단계는 특정 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
캐시 관리 장치(130)는, 데이터가 클라이언트에 의해 고체-상태 저장 디바이스(114)로 먼저 기록되고, 나중에 백킹 스토어(118)로 이동되는 후 기록 캐시로서 고체-상태 저장 디바이스(114)를 구성할 수 있다. 방법(800)은 기록 요청을 수신(802)하는 캐시 관리 장치(130)에서 시작한다. 기록 요청은 영속적인 저장부에 저장될 데이터를 참조할 수 있다. 요청은 데이터를 포함할 수 있고 및/또는 데이터를 실질적으로 갖지 않을 수 있다. 기록 요청은 논리적 어드레스(예를 들어, LBA)와 연관될 수 있다.
캐시 제어기(312)는, 고체-상태 저장 디바이스(114) 상에 이용가능한 공간이 있는지의 여부를 결정(804)한다. 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)가 최대 용량 임계치를 초과하지 않는 것을 보장하기 위해 이러한 체크를 수행한다. 몇몇 실시예에서, 캐시 제어기(312)는 데이터를 고체-상태 저장 디바이스(114)에 기록하기 전에 결정(804)을 수행한다. 다른 실시예에서, 전술한 바와 같이, 결정(804)의 빈도수가 변한다.
결정은 고체-상태 저장 디바이스(114)에 의해 유지된 메타데이터에 액세스하는 것을 포함할 수 있다. 메타데이터는 논리적 블록 어드레스를 저장 유닛에 연관시키는 인덱스를 포함한다. 유효 데이터에 의해 점유된 저장 유닛은 저장을 위해 이용가능하지 않을 수 있는 반면, 점유되지 않은 저장 유닛은 사용을 위해 이용가능할 수 있다. 메타데이터는 역방향 인덱스를 더 포함할 수 있고, 역방향 인덱스는 고체-상태 저장 디바이스(114)의 저장 유닛을 각각의 유효성/폐기가능성 표시자와 연관시킬 수 있다. 무효 및/또는 폐기가능한 저장 유닛은 저장을 위해 이용가능한 것으로 간주될 수 있다.
고체-상태 저장 디바이스(114)에 이용가능한 공간이 있다면, 캐시 제어기(312)는 데이터를 고체-상태 저장 디바이스(114)의 유닛에 기록(806)하고, 유닛을 폐기가능하지 않은 것으로 마킹한다. 단계(806)의 기록은 전술한 순차 저장 동작을 포함할 수 있다. 순차 기록은 데이터를 저장하기 위해(예를 들어 첨부점 또는 다른 순차 표시자를 이용하여) 저장 유닛을 선택하는 것과, 선택된 저장 유닛 상에 데이터를 기록하는 것과, 기록 요청의 논리적 어드레스(들)를 선택된 저장 유닛과 연관시키기 위해 고체-상태 저장 디바이스(114)의 메타데이터를 업데이트하는 것 등을 포함할 수 있다.
백업 엔진(314)은 데이터를 백킹 스토어(118)에 백업(808)할 수 있어서, 데이터는 백킹 스토어(118)에 저장된다. 저장 유닛의 백업은, 저장 유닛이 폐기가능한 것을 나타내기 위해 고체-상태 저장 디바이스의 메타데이터를 업데이트하는 것을 포함할 수 있다. 백업 엔진(314)은 선택된 우선 순위 레벨로 동작할 수 있고, 이에 따라, 데이터를 백킹 스토어(118)에 백업(808)하는 기회 시간까지 기다릴 수 있다. 단계(808)에 뒤이어, 방법(800)이 종료할 수 있다.
고체-상태 저장 디바이스(114) 상에 데이터를 위한 공간이 없으면, 캐시 관리 장치(130)는, 캐시 관리 장치(130)가 고체-상태 저장 디바이스(114)에서의 데이터를 위한 공간을 만들 때까지 기록 요청을 중지(810)시킨다. 다른 실시예에서, 캐시 관리 장치(130)는 데이터가 백킹 스토어(118)에 기록되도록 할 수 있고, 일단 충분한 공간이 고체-상태 저장 디바이스(114)에서 생성되면, 데이터가 고체-상태 저장 디바이스(114)에 삽입되는 판독 동작을 수행한다.
기록 요청을 중지(810)한 후에, 캐시 관리 장치(130)는, 폐기가능한 및/또는 무효{메타데이터(117)를 이용하여}하게 마킹되는 고체-상태 저장 디바이스(114)에 저장 유닛이 있는지를 결정(812)할 수 있다. 체크는, 유효/폐기가능한 메타데이터에 대한 "무시" 상태를 평가하는 것을 더 포함할 수 있다. 몇몇 실시예에서, 폐기가능하지 않은 저장 유닛은, 무효로서 마킹된 경우에도, 유지될 수 있다(예를 들어, 스냅 샷, 백업 등에 대해 유지될 수 있다). 폐기가능한 저장 유닛이 있는 경우, 몇몇 실시예에서, 캐시 관리 디바이스(130)는, 폐기가능한 유닛을 찾고(820), 이들 유닛을 고체-상태 저장 디바이스(114)로부터 반환하고, 공간이 고체-상태 저장 디바이스(114) 상에 이용가능한 지를 결정(804)하도록 복귀시킨다. 캐시 제어기(312)는 예를 들어, 무효로서 폐기가능한 모든 유닛을 마킹할 수 있다. 다른 실시예에서, 그루머(310)는 폐기가능한 것으로 마킹되는 유닛에서 데이터를 보존하지 않고도 고체-상태 저장 디바이스(114)를 그루밍할 수 있다. 반환 이후에, 고체-상태 저장 디바이스(114)에 공간이 있는 경우, 데이터는 고체-상태 저장 디바이스(114)에 저장된다.
고체-상태 저장 디바이스(114)에 폐기가능한 저장 유닛이 없다면, 캐시 관리 장치(130)는 폐기가능성 맵에서 폐기가능하지 않은 것으로 마팅된 캐시에서의 저장 유닛을 찾고(814), 유닛을 백킹 스토어(118)에 백업(816)할 수 있다. 몇몇 실시예에서, 캐시 관리 장치(816)는 백업 엔진(314)의 우선 순위를 증가시킴으로써 이를 행한다. 일단 데이터가 백킹 스토어(118)로 이동되면, 캐시 관리 장치(130)는, 유닛을 폐기가능한 것으로 마킹(818)하고, 폐기가능한 유닛을 찾고(820), 이들을 고체-상태 저장 디바이스(114)로부터 반환하도록 메타데이터(117)를 업데이트한다. 캐시 관리 장치(130)는 복귀하고, 데이터를 기록하기 위해 고체-상태 저장 디바이스(114) 상의 공간이 이용가능한 지를 다시 결정(804)한다.
도 9a는 고체-상태 저장 디바이스(114)의 저장 유닛(914 내지 926) 상에서 백업 동작을 수행하는 백업 엔진(314)의 예시적인 실시예를 도시한다. 도 9a는 연관된 유효성 표시자(930a 내지 930g) 및 폐기가능성 표시자(940a 내지 940g)를 갖는 각 저장 유닛(914) 내지 유닛(926)을 도시한다. 유효성 표시자(930a 내지 930g) 및 폐기가능성 표시자(940a 내지 940g)는 저장 유닛 연관으로의 캐시 엔트리를 포함하는 맵과 같은 데이터 구조에 의해 각 유닛(914 내지 926)과 연관된다. 도 9a는 초기 상태에서의 유닛을 도시하고, 도 9b는 백업 엔진(314)이 유닛(914 내지 926)을 통해 이동할 때의 유닛을 도시한다.
몇몇 실시예에서, 유닛(914 내지 926)에서의 데이터는 순차적으로 기록된다; 그러한 실시예에서, 유닛(914 내지 926)은 증분적으로 증가하는, 고체-상태 저장 디바이스(114) 상의 물리적 어드레스를 갖는다. 예를 들어, 유닛(914)은 물리적 어드레스 "0"을 가질 수 있고, 유닛(916)은 물리적 어드레스 "1"을 가질 수 있고, 나머지 유닛도 이러하다. 데이터가 순차적으로 기록되는 경우, 데이터는 가장 낮은 이용가능한 물리적 어드레스에 기록된다. 파일 시스템이 데이터("A")를 고체-상태 저장 디바이스(114)에 기록하기 시작할 때, 데이터("A")를 물리적 어드레스 0을 갖는 유닛(914)에 기록하고, 그런 후에 다음 데이터("B")를 물리적 어드레스 1을 갖는 유닛(916)에 기록하는 등이 이루어진다.
그러한 실시예에서, 고체-상태 저장 디바이스(114) 상의 데이터의 물리적 조직화는, 어떤 데이터가 가장 오래되었는지 그리고 어떤 데이터가 가장 새로운 것인지를 나타내는 로그로서 사용될 수 있다. 예를 들어, 유닛(914)에 기록된 데이터가 유닛(920)에 기록된 데이터보다 오래되었다는 것이 가정될 수 있다. 다른 실시예에서, 로그는 고체-상태 저장 디바이스(114)에서의 다른 데이터에 비해, 고체-상태 저장 디바이스(114)에서의 데이터의 수명을 절대적으로(즉, 시간스탬프의 사용을 통해) 규정하는 데이터 구조이고, 둘 다일 수 있다. 몇몇 실시예에서, 고체-상태 저장 디바이스(114) 상의 데이터의 물리적 조직화는 고체-상태 저장 디바이스(114)에서의 유닛의 수명을 결정하기 위해 로그와 연계하여 사용된다.
도 9b에 도시된 바와 같이, 몇몇 실시예에서 백업 엔진(314)은 데이터를 백킹 스토어(118)에 플러싱함으로써 고체-상태 저장 디바이스(114)에서 데이터를 백업하기 시작한다. 몇몇 실시에에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114)에서 가장 오래된 데이터에서 시작하고, 가장 현재의 저장 유닛에 도달할 때까지 고체-상태 저장 디바이스(114)에서 저장 유닛(914 내지 926)을 통해 연대순으로 이동시킨다. 몇몇 실시예에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114)에서 저장 유닛(914 내지 926)을 통해 순차적으로 이동하고, 하나의 유닛에서의 데이터를 백킹 스토어(118)에 백업하고, 그런 후에 다음 유닛으로 이동하기 위해 물리적 어드레스를 증분시킴으로써 그렇게 이루어진다. 다른 실시예에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114)에 의해 유지된 메타데이터를 참조함으로써 유닛(914 내지 926)을 통해 연대순으로 이동한다(예를 들어, 역방향 인덱스 및/또는 로그 데이터 구조). 예를 들어, 백업 엔진(314)은 역방향 인덱스 또는 로그에서 유닛에 대한 엔트리에서 시작하고, 데이터를 백업하고, 다음의 엔트리로 이동하고, 전체 로그가 판독될 때까지 그렇게 계속되며, 전체 로그가 판독될 때 이 점에서 백업 엔진(314)은 구조의 시작으로 되돌아갈 수 있다.
몇몇 실시예에서, 백업 엔진(314)은 먼저 특정 유닛(914 내지 926)에 대한 데이터가 전술한 유효성 표시자(930a 내지 930g)를 포함할 수 있는 메타데이터(예를 들어, 역방향 인덱스 또는 로그)를 이용하여 유효 또는 무효인지를 결정한다. 유효성 표시자(930a 내지 930g)가 무효로 설정되면, 백업 엔진(314)은 유닛(914 내지 926)에서 데이터를 백업하지 않도록 선택할 수 있다. 예를 들어, 도 9b에 도시된 바와 같이, 백업 엔진(314)은 유닛(914), 고체-상태 저장 디바이스(114)에서의 가장 오래된 유닛에서 시작하고, 유효성 표시자(930a)에서 탐색하고, 유효성 표시자가 무효로 설정되는지를 관찰한다. 유효성 표시자(930a)가 무효로 설정되기 때문에, 백업 엔진(314)은 유닛(914)과 연관된 데이터(A)를 백업하지 않고도 다음 유닛(916)으로 이동한다. 폐기가능성 표시자(940a)가, 유닛(914)이 무효로 간주될 때 활동하지 않기 때문에, 폐기가능성 표시자(940a)는 "무시"로서 표현될 수 있다; 즉, 폐기가능성 표시자의 상태는, 무효성 표시자가 데이터가 무효라는 것을 나타낼 때 백업 엔진(314)에 무관하다.
도 9b에서, 백업 엔진(314)은 백킹 스토어(118)에서 데이터(B)를 갖는 유닛(916)을 저장한다. 유효성 표시자는, 데이터(B)가 여전히 유효하다는 것을 나타낸다. 몇몇 실시예에서, 데이터(B)가 유효라고 결정한 후에, 백업 엔진(314)은, 데이터(B)가 백킹 스토어(118)에 백업된다고 결정하기 위해 폐기가능성 표시자(940b)에서 탐색한다. 폐기가능성 표시자(940b)가 폐기가능한 것으로 설정되면, 백업 엔진(314)은, 데이터(B)가 백킹 스토어(118)에 이미 저장되었기 때문에 백킹 스토어(118)에 데이터(B)를 저장하지 않고도 다음 유닛(918)으로 이동한다.
폐기가능성 표시자(940b)가 폐기가능하지 않은 것으로 설정된 경우, 백업 엔진(314)은 데이터(B)를 백킹 스토어(118)에 저장할 수 있다. 몇몇 실시예에서, 백업 엔진(314)은 데이터(B)에 대한 백킹 스토어(118)로 향하는 기록 요청을 개시한다. 몇몇 실시예에서, 전술한 바와 같이, 데이터는 데이터 및 데이터가 연관되는 LBA 모두를 포함한다. 그러한 실시예에서, 백업 엔진(314)은 유닛(916)에서의 데이터로부터 LBA를 추출할 수 있고, 데이터가 백킹 스토어(118)에서의 그러한 LBA에 기록되도록 요청할 수 있다.
도 9a는, 초기에, 유닛(916)에서의 데이터(B)가 폐기가능하지 않다는 것을 도시한다. 데이터(B)가 백킹 스토어(118)에 기록된 경우, 백업 엔진(314)은 도 9b에 도시된 바와 같이, 폐기가능성 표시자(940b)를 폐기가능한 것으로(도 9b에서 "1") 변경시키기 위해 메타데이터를 업데이트한다. 몇몇 실시예에서, 백업 엔진(314)은, 데이터(B)가 폐기가능성 표시자를 변경하기 전에 성공적으로 백업된다는 확인을 백킹 스토어(118)로부터 기다린다. 몇몇 실시예에서, 백업 엔진(314)이 특정 시간 기간 내에 확인을 수신하지 않았다면, 백업 엔진(314)은 데이터를 백킹 스토어(118)에 저장하도록 재시도한다. 데이터(B)가 백킹 스토어(118)에 성공적으로 백업되고, 폐기가능성 표시자(940b)가 폐기가능한 것으로 설정될 때, 백업 엔진(314)은 유닛(918)과 같이 고체-상태 저장 디바이스(114)에서의 다음 유닛으로 이동한다.
전술한 바와 같이, 백업 엔진(314)은, 유닛(918)에서의 데이터(C)가 무효하여, 데이터(C)를 백업하지 않고도 이동하는 것을 결정할 수 있다. 백업 엔진(314)은 유닛(920)에 데이터(D)를 백업할 수 있고, 폐기가능성 표시자(940b)를 폐기가능한 것으로 변경할 수 있다.
특정 경우에, 백업 엔진(314)은 데이터(C)가 유효 및 폐기가능한 것으로 마킹되고, 유닛(924)과 같은 유닛에 직면할 수 있다. 폐기가능성 표시자(940f)가 폐기가능한 것으로{데이터(C)가 이미 백업되었다는 것을 나타내는} 설정되면, 백업 엔진(314)은 데이터(C)를 백업하지 않고도 다음의 유닛으로 이동할 수 있다.
몇몇 실시예에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114)에서 유닛(914 내지 926)에 걸쳐 연속적으로 스캔한다. 다른 실시예에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114)에서의 유닛(914 내지 926)을 통한 반복을 완료하고, 제 2 반복을 시작하기 전에 일정 시간 기간을 기다린다. 몇몇 실시예에서, 백업 엔진(314)은 고체-상태 저장 디바이스(114) 상에서 백그라운드 프로세스로서 작용하고, 여유 사이클(CPU 사이클, 버스 사이클, 또는 다른 것들의 여부에 따라)이 이용가능한 경우 동작한다. 백업 엔진(314)에는 또한 설정된 스케줄이 주어질 수 있다; 예를 들어, 관리자는 고체-상태 저장 디바이스(114)를 구성할 수 있어서, 백업 엔진(314)은 트래픽이 낮을 때인 밤 동안과 같이, 특정 시간에 백킹 동작을 수행한다.
몇몇 실시예에서, 백업 엔진(314)은, 조치가 필요한지를 결정하고, 리소스가 이용가능할 때 실행될 백업 행위 및 명령을 큐잉(queue)하기 위해 유효성 및 폐기가능성 표시자를 통해 검색할 것이다. 예를 들어, 백업 엔진(314)은 도 9의 논리를 통해, 하지만 실제로 임의의 명령을 실행하지 않고도, 작용할 수 있다; 오히려, 백업 엔진(314)은 특정 유닛에 대해 어떤 조치가 필요한지를 결정할 수 있고, 이들 조치를 리스트에 추가하고, 다음 유닛으로 이동할 수 있다. 이러한 방식으로, 백업 엔진(314)은 고체-상태 저장 디바이스(114) 상에서 유닛 및 연관된 맵을 통해 크로올(crawls)할 때 조치의 리스트를 컴파일할 수 있다. 다른 프로세스는 리스트로부터 조치 및/또는 명령을 비동기적으로 받아들이고, 이들을 실행할 수 있다.
백업 엔진(314)은 저장 유닛과 연관된 메타데이터(117)에 기초하여 백업 동작의 우선 순위를 정할 수 있다. 예를 들어, 메타데이터(117)는, 폐기가능하지 않은 데이터를 포함하는 저장 유닛이 높은 레빌의 마모 및/또는 높은 에러율을 갖는다는 것을 나타낼 수 있다. 메타데이터(117)에 기초하여, 백업 엔진(314)은 식별된 저장 유닛의 백업의 우선 순위를 증가시킬 수 있다. 우선 순위의 증가는 큐의 헤드에서 백업 동작을 삽입하는 것과, 다른 폐기가능하지 않은 저장 유닛 백업의 스킵 등을 포함할 수 있다.
몇몇 실시예에서, 전술한 바와 같이, 캐시 제어기(312)는 백업 엔진(314)의 동작의 우선 순위를 증가시킬 수 있다. 예를 들어, 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)가 꽉 찬 상태이고 폐기가능한 것으로 마킹되는 어떠한 유닛(914 내지 926)도 고체-상태 저장 디바이스(114)에 없는 경우{또는 유닛(914 내지 926)이 충분하지 않은 경우} 가장 높은 우선 순위를 백업 엔진(314)에 제공할 수 있다. 몇몇 실시예에서, 캐시 제어기(312)는, 고체-상태 저장 디바이스(114)가 채워지기 시작하고 고체-상태 저장 디바이스(114) 상의 이용가능한 저장 공간이 감소함에 따라 백업 엔진(314)의 우선 순위를 증분적으로 증가시킬 수 있다.
몇몇 실시예에서, 백업 엔진(314)은 연대순의 백업 프로세스를 보충하기 위해 적절한 시간에 요구될 수 있다. 백업 엔진(314)은 적절한 시간에 시퀀스로부터 요구되도록 아직 이용가능한 고체-상태 저장 디바이스(114)에서의 유닛을 통해 연대순으로 진행하도록 구성될 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)는, 그 데이터가 판독될 때 그리고 백업 리소스가 이용가능할 때 하나 이상의 유닛에서 데이터를 백업하도록 백업 엔진(314)에게 요구할 수 있다. 판독은 데이터에 액세스하는 클라이언트에 의해 개시될 수 있다. 판독은 그루머(310)에 의해 개시될 수 있는 한편, 가비지 컬렉션을 수행하고, 데이터를 폐지하고, 마모 또는 장애가 있는 블록으로부터 데이터를 복구하거나, 다른 그루밍 동작을 한다.
판독은 복사 해제(deduplication) 프로세스에 의해 개시될 수 있다. 판독은 또한, 그 출원이 본 명세서에 전체가 참고용으로 병합된, "Apparatus, System, and Method for Reliable, High Performance Storage of Data with Progressive RAID"라는 명칭으로 2007년 12월 6일에 출원된 David Flynn 등의 미국 특허 출원 번호 11/952,115에 기재된 바와 같이 RAID 재구축 또는 점진적인 RAID 동작에 의해 개시될 수 있다. 백업 엔진(314)은 시스템 비용을 감소시키기 위해 다른 프로세스와 연계하여 작용할 수 있다. 당업자는, 백업을 개시하는데 기회적으로 사용될 수 있는 다른 프로세스를 인식할 것이다.
백업 엔진(314)은 그루머(310)에 의해 또한 요구될 수 있다. 몇몇 실시예에서, 그루머(310)는 저장 분할이 없도록{예를 들어, 고체-상태 저장 디바이스(114)의 블록을 소거} 백업 엔진(314)에게 요구한다. 예를 들어, 그루머(310)는, 특정 저장 분할이 상당한 양의 폐기가능하지 않은 데이터를 포함하고 데이터가 콜드인지를 결정하기 위해 메타데이터(117)에 액세스할 수 있다. 그루머(310)는, 특정 소거 블록의 유닛을 백업하고, 그런 후에 소거 블록을 그루밍하고, 이들이 무효한 것처점 새롭게 폐기가능한 유닛을 처리하여, 고체-상태 저장 디바이스(114) 상에 공간을 자유롭게 하도록 백업 엔진(314)에게 요구할 수 있다.
도 10은 그루밍을 위한 캐시 동작에 관련된 메타데이터를 이용하여 그루머(310)를 위한 방법(1000)의 예시적인 실시예를 도시한다. 전술한 바와 같이, 방법(800)의 단계는 특정 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능한 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
그루머(310)는 도 10에 기술된 결정을 수행하기 위한 동작을 수행할 수 있거나, 동작의 일부 또는 전부를 처분하기 위해 다른 루틴 또는 프로세스를 호출할 수 있다. 방법(1000)은, 그루머(310)가 그루밍 동작을 위한 저장 분할에 액세스(1002)하는 것에서 시작한다. 그루밍 동작은 몇몇 실시예에서, 가비지 컬렉션 동작일 수 있다. 다른 실시예에서, 그루밍 동작은 판독 또는 기록 방해, 분해 해제, 리프레시, 또는 다른 데이터 그루밍 동작으로 인한 데이터 이동일 수 있다. 몇몇 실시예에서, 그루밍 동작에 대한 저장 분할에 액세스하자마자, 그루머(310)는 메타데이터(예를 들어, 유효성 표시자)를 이용하여, 고체-상태 저장 디바이스(114)의 어떤 저장 유닛이 유효 데이터를 포함하는 지를 결정(1004)한다. 저장 분할 복구 동작에서, 유효 맵에서 무효 데이터를 포함하는 것으로 식별되는 그러한 저장 유닛에서의 데이터는 새로운 소거 블록으로 이동되지 않는다. 그 결과, 소거 블록이 초기화될 때(예를 들어, 모든 페이지에 "1"로 기록된), 무효 데이터가 소거된다.
그루머(310)는, 폐기가능한(예를 들어 폐기가능성 맵을 이용하여) 데이터를 포함하는 유효 데이터를 포함하는 저장 유닛을 식별(1006)하기 위해 메타데이터(117)에 액세스한다. 몇몇 실시예에서, 그루머(310)가 결정하는 그러한 유닛은 폐기가능하지 않고, 그루밍 동작의 부분으로서 새로운 저장 분할로 이동(1010)되고, 방법(1000)은 종료한다. 그루머(310)는 초기에 데이터를 새로운 저장 분할로 이동시키기 위해 준비 중인 버퍼에 유효 및 폐기가능하지 않은 데이터를 이동시킬 수 있다. 몇몇 실시예에서, 그루머(310)는 또한 이들 유닛에서의 데이터를 백업하도록 백업 엔진(314)에게 요구하여, 유닛이 폐기가능하게 된다. 몇몇 실시예에서, 그루머(310)는 백업 엔진(314)에게 요구할 수 있고, 백업 엔진(314)이 데이터를 백킹 스토어(118)로 이동시킬 때까지, 그루밍 동작을 중지시킨다. 그루머(310)는 백업 동작이 완료된 후에 다시 시작하고, 폐기가능한 데이터로서 새롭게 폐기가능한 유닛을 처리할 수 있다.
그루머(310)가 특정 유닛이 폐기가능하다는 것을 결정(1006)하면, 그루머(310)는 폐기가능한 유닛과 연관된 데이터가 반환(예를 들어, 콜드)될 수 있는지의 여부에 관한 결정(1008)을 할 수 있다. 결정은 특히, 액세스 패턴, 빈도수 등과 같이, 고체-상태 저장 디바이스(114) 상에서 수행된 저장 동작에 관련된 메타데이터를 이용하여 캐시 관리 장치(130)에 의해 이루어질 수 있다. 그루머(310)가, 데이터가 반환가능하다고 결정(1008)하면, 그루머(310)는 데이터를 새로운 소거 블록으로 이동(1012)시키지 않고, 방법(1000)은 종료한다. 그루머(310)가 데이터가 콜드 상태가 아니라고 결정(1008)하면, 그루머(310)는 데이터를 새로운 소거 블록으로 이동(1010)시키고, 방법(1010)은 종료한다.
몇몇 실시예에서, 그루머(310)는, 백업되어, 폐기가능하게 설정된 폐기가능성 표시자를 갖는 모든 유닛이 콜드 상태고 고려할 수 있다. 그러한 실시예에서, 폐기가능한 것으로 설정된 폐기가능성 표시자를 갖는 모든 유닛은 그루밍 동작 동안 이동되지 않는다. 그러한 실시예는, 그루머(310)가 고체-상태 저장 디바이스(114)에서 공간을 적극적으로 재청구하게 하고, 특히 고체-상태 저장 디바이스(114)가 최대 용량에 도달할 때 유용할 수 있다. 더욱이, 백업 엔진(314)이 백업 동작을 연대순으로 수행하는 실시예에서, 오래된 데이터가 폐기가능한 것으로 마킹될 새로운 데이터보다 더 가능성이 있을 때, 적어도 기록의 관점으로부터, 폐기가능한 것으로 마킹된 유닛이 콜드 데이터를 포함한다는 가정이 적절할 수 있다.
다른 실시예에서, 그루머(310)는, 개별적인 저장 유닛이 반환가능한 지의 여부에 관해{캐시 관리 장치(130)의 캐싱 정책 등마다}, 메타데이터(117)를 이용하여 결정을 할 수 있다. 몇몇 실시예에서, 그루머(310)는 개별적인 저장 유닛에 관한 반환가능성 결정을 하고, 유사하게 인접 유닛 세트를 처리한다. 예를 들어, 로컬 어드레스 범위(예를 들어, 인덱스 또는 B-트리에서의 특정 노드)와 연관된 저장 유닛의 세트는 그룹으로서 반환(또는 유지)될 수 있다. 그루머(310)는, 어떤 유닛이 콜드 데이터를 포함하는지에 관해, 캐시 제어기(312)와 같은 다른 개체에게 질문할 수 있다.
몇몇 실시예에서, 캐시 제어기(312)는, 어떤 저장 유닛이 콜드 데이터를 포함하고, 웜 데이터를 포함하는지를 결정하기 위해 저장 동작에 관련된 메타데이터에 액세스할 수 있다. 몇몇 실시예에서, 메타데이터(117)는 저장 유닛(또는 논리적 어드레스) 상의 판독, 및 저장 유닛으로의 기록을 추적하기 위해 판독 로그를 포함하고, 판독은 또한 유닛에서의 데이터가 콜드인지에 관한 여부를 결정하도록 고려될 수 있다. 캐시 제어기(312)는, 로그의 시작에 있는 임의의 데이터가 콜드인 것으로 간주할 수 있고, 일단 데이터가 백킹 스토어(118)에 백업되면, 반환가능하다.
몇몇 실시예에서, 캐시 제어기(312)는, 목표 점유량 임계치에 도달할 때까지 데이터가 콜드인 것으로 간주하지 않는다. 따라서, 고체-상태 저장 디바이스(114)의 사용된 저장량이 목표 점유량 임계치 미만이지만, 캐시 제어기(312)는 고체-상태 저장 디바이스(114)로부터 임의의 데이터를 반환하지 않도록 선택할 수 있다. 그러한 실시예에서, 백업 엔진(314)은 데이터에 대한 백업 동작을 여전히 수행할 수 있다; 하지만, 캐시 제어기(312)는, 목표 점유량 임계치에 도달할 때까지 콜드가 아닌 것으로 폐기가능하게 설정된 폐기가능성 표시자를 갖는 데이터를 처리하도록 그루머(310)에게 지시할 수 있다. 캐시 제어기(312)는, 일단 목표 점유량 임계치에 도달하면 폐기가능한 것으로 설정된 폐기가능성 표시자를 갖는 데이터를 처리하도록 그루머(310)에게 지시할 수 있다.
몇몇 실시예에서, 캐시 제어기(312)는 데이터가 콜드인지를 결정하기 위한 다수의 기준을 가질 수 있다. 예를 들어, 캐시 제어기(312)는 특정 시간 기간(예를 들어 4시간)보다 더 오래된 임의의 데이터가 콜드인 것으로 간주하고, 고체-상태 저장 디바이스(114)의 점유량에 상관 없이 반환을 위한 후보인 것으로 간주할 수 있다. 캐시 제어기(312)는 또한 전술한 바와 같이 목표 점유량 임계치에 도달하면, 콜드가 될 데이터를 지정하기 위한 새로운 규칙을 가질 수 있다.
몇몇 실시예에서, 캐시 제어기(312)는 어떤 데이터가 파라미터에 기초하여 콜드인 것으로 고려되는 규칙을 동적으로 변형시킨다. 예를 들어, 캐시 제어기(312)는, 기록 작업량이 높을 때를 습득할 수 있고, 콜드(이에 따라 반환)인 것으로 간주되는 데이터의 양을 증가시켜, 고체-상태 저장 디바이스(114) 상의 공간을 자유롭게 함으로써 고체-상태 저장 디바이스(114)를 준비할 수 있다. 캐시 제어기(312)는 매일 마지막에 고체-상태 저장 디바이스(114)를 비워서, 각 날이 빈 고체-상태 저장 디바이스(114)에서 시작하게 된다.
몇몇 실시예에서, 캐시 제어기(312)는, 유닛의 데이터가 콜드인 경우에만 저장 유닛의 데이터를 백킹 스토어(118)에 백업하도록 백업 엔진(314)에게 지시할 수 있다. 캐시 제어기(312)는 어떤 데이터가 전술한 것과 유사한 접근법을 이용하여 콜드가 되는지를 결정할 수 있다. 그러한 실시예에서, 그루머(310)는, 폐기가능한 것으로 설정된 폐기가능성 표시자를 갖는 모든 유닛이 콜드라고 간주할 수 있다.
몇몇 실시예에서, 하나 이상의 저장 유닛으로부터의 데이터는 논리적 데이터 유닛의 부분일 것이다. 이들 논리-저장 유닛간의 연관은 메타데이터(117)(예를 들어, 순방향 및/또는 역방향 인덱스에서)에 유지될 수 있다. 예를 들어, 특정 파일은 너무 커서 단일 저장 유닛에 저장될 수 없고; 따라서, 파일은 고유 저장 유닛 LBA에 대응하는 고체-상태 저장 디바이스(114)에서의 각 저장 유닛을 가지고 다중 저장 유닛에 저장될 수 있다. 캐시 제어기(312)가, LBA에서의 데이터가 어떻게(이에 따라 다양한 유닛에서의 데이터가 어떻게) 관련되는 지를 규정하는 이러한 정황 정보(맵과 같은)를 기재하는 메타데이터로의 액세스를 갖는 경우, 백업 엔진(314) 및 캐시 제어기(312)는 더 효율적인 동작을 가능하게 하기 위해 논리적 레벨에서 동작할 수 있다.
예를 들어, 백업 엔진(314)은 특정 유닛에 대한 데이터를 백업할 수 있고, 동일한 논리적 데이터 유닛의 부분인 것을 유지하는 고체-상태 저장 디바이스(114)에서 추가 저장 유닛이 있는 지를 결정할 수 있고, 이들 저장 유닛을 역시 백업할 수 있다. 유사하게, 그루머(310)가 특정 저장 유닛이 유효, 폐기가능한, 및 콜드인 데이터를 포함한다고 결정하면, 그루머(310)는 다른 유닛이 연관된 데이터를 포함한다고 결정하기 위해 정황 정보를 이용할 수 있다. 몇몇 실시예에서, 그루머(310)는, 연관된 데이터를 포함하는 저장 유닛이 또한 백업되고, 무효성 표시자를 무효로 설정하는 것을 보장한다. 저장 유닛이 백업되지 않으면, 그루머(310)는 연관된 유닛에 데이터를 백업하도록 백업 엔진(314)을 호출할 수 있다.
몇몇 실시예에서, 고체-상태 저장 디바이스(114)는, 캐시 관리 장치(130)가 고체-상태 저장 디바이스(114)의 다양한 저장 유닛에서 데이터 사이의 연관을 한정적으로 결정하도록 하는 정황 정보로의 액세스를 갖지 않을 수 있다. 몇몇 실시예에서, 캐시 제어기(312)는 메타데이터(117){예를 들어, 순차 저장 로그와 같은 저장 메타데이터(316)}에 기초하여 어느 유닛에(데이터가) 함께 속하는 지에 대한 지능형 추측을 한다. 예를 들어, 캐시 제어기(312)는 계속해서 기록된 저장 유닛의 세트가 파일과 같은 논리 데이터 유닛을 구성한다고 간주할 수 있다. 유사하게, 캐시 제어기(312)는 함께 일정하게 판독되는 유닛의 세트가 논리 데이터 유닛을 구성한다고 간주할 수 있다. 캐시 제어기(312)는 전술한 바와 같이 논리 데이터 유닛으로서 유닛의 세트를 처리하도록 백업 엔진(314) 및 그루머(310)에게 지시할 수 있다. 관련 실시예에서, 일반적으로 함께 액세스되는 다중 파일 및 데이터세트는 그룹으로서 고체-상태 저장 디바이스(114)에 의해 논리적으로 연관되고 동작될 수 있다.
몇몇 실시예에서, 일단 캐시 제어기(312)가 논리 데이터 유닛을 형성하는 유닛 홀드(hold) 데이터 세트를 결정하면, 캐시 제어기는, 유닛이 함께 백업되는 것을 보장하기 위해 백업 엔진(314)을 관리한다. 이들 유닛은 고체-상태 저장 디바이스(114)에 계속해서 저장될 필요가 없다. 많은 하드 디스크 드라이브 및 백킹 스토어(118)에서의 다른 매체는, 데이터가 스트림으로서 제공될 때 더 효율적으로 데이터를 판독한다; 이와 같이, 캐시 제어기(312)는 고체-상태 저장 디바이스(114)가 논리 데이터 유닛을 형성하는 유닛으로부터 하드 디스크 드라이브로 데이터를 스트리밍하도록 할 수 있다. 유사하게, 캐시 제어기(312)는, 캐시 미스에 응답하여, 백킹 스토어(118)로부터 스트림으로서 데이터를 수신할 수 있다.
도 11은 공유 메타데이터를 포함하는 예시적인 데이터 구조의 개략적인 블록도이다. 인덱스(1104)는 복수의 캐시 엔트리{예를 들어, 노드(1108, 1114, 1116) 등}를 포함하는 트리(또는 다른 데이터 구조)를 포함할 수 있다. 인덱스(1104)에서의 각 캐시 엔트리는 논리적 어드레스(또는 논리적 어드레스 범위 또는 세트)를 고체-상태 저장 디바이스(예를 들어, 저장 유닛) 상의 하나 이상의 저장 위치와 연관시킬 수 있다. 저장 유닛은 어드레스(1117){예를 들어, 엔트리(1114)에 도시된}에 의해 또는 몇몇 다른 식별자에 의해 식별될 수 있다. 인덱스(1104)에서의 캐시 엔트리는 가변 길이를 가질 수 있어서, 단일 엔트리{예를 들어, 엔트리(1114)}는 논리적 어드레스의 세트, 논리적 어드레스 범위 등을 참조할 수 있다. 논리적 어드레스는 인접할 수 있다(예를 들어, 072 내지 083). 1118과 같은 다른 엔트리는 논리적 어드레스의 불연속적 세트{예를 들어, 논리적 어드레스(454 내지 477 및 535 내지 598)}를 포함할 수 있다. 따라서, 인덱스(1104)는 가변 크기의 캐시 엔트리{예를 들어, 고체-상태 저장 디바이스(114) 상의 하나 이상의 저장 유닛에 대응하는 캐시 엔트리는 논리적 어드레스의 임의의 세트 또는 범위의 데이터를 포함한다}를 나타내는데 사용될 수 있다.
도 11에 도시된 바와 같이, 캐시 엔트리는 논리적 어드레스에 의해 {에지(1110)와 같은 에지를 이용하여} 인덱싱될 수 있으며, 이것은 빠르고 효율적인 탐색을 가능하게 할 수 있다. 논리적 어드레스("182")를 포함하는 캐시 엔트리에 대한 예시적인 검색은 다음과 같이 진행할 수 있다. 검색은 루트 캐시 엔트리에서 개시할 수 있으며, 이러한 루트 캐시 엔트리는 도 11의 예에서, 캐시 엔트리(1108)이다. 단일 논리적 어드레스(또는 어드레스 범위)가 루트 캐시 엔트리(1108)와 같이 특정 캐시 엔트리에 포함되는 경우, 검색되는 논리적 어드레스("182")가 캐시 엔트리(1108)의 논리적 어드레스보다 더 낮으면, 검색은 캐시 엔트리(1108)의 좌측으로의 향하는 에지(1110) 아래로 계속해서 진행할 수 있다. 검색된 논리적 어드레스("182")가 현재 캐시 엔트리(1108){예를 들어, 캐시 엔트리(1108)의 범위 내에 위치한}에 매칭되면, 검색은 식별되는 현재 캐시 엔트리(1108)에서 성공적으로 종료한다. 검색된 논리적 어드레스(1106)가 현재 노드(1108)의 범위보다 더 크면, 검색은 현재 캐시 엔트리(1108)의 우측으로의 향하는 에지(1112) 아래로 계속해서 진행한다. 캐시 엔트리가 2개의 논리적 어드레스 또는 어드레스 범위{예를 들어 엔트리(1118)에 도시된 불연속적인 세트}를 포함하고 검색된 논리적 어드레스("182")가 기술된 가상 어드레스 사이에 있는 경우, 검색은 현재 노드(1108)의 2개의 논리적 어드레스 사이에 놓이는 논리적 어드레스를 갖는 엔트리로의 중앙을 향하는 에지(미도시) 아래로 계속해서 진행한다. 검색은, 캐시 엔트리가 식별되거나 리프 캐시 엔트리가 검색되고 검색이 실패할 때까지 인덱스(1104) 아래로 계속해서 진행한다. 도 11의 예에서, 검색은 매칭 캐시 엔트리(1116){예를 들어, 캐시 엔트리(1116)는 검색된 논리적 어드레스("182")를 포함한다}에서 성공적으로 종료한다.
도 11의 예에서, 인덱스(1104)가, 논리적 어드레스에 의해 인덱싱된 B-트리 데이터 구조를 이용하여 구현되지만, 다른 실시예에서 인덱스(1104)는 컨텐츠 어드레스가능 메모리("CAM"), 2진 트리, 해시 테이블, 또는 종래 기술에 알려진 다른 데이터 구조를 이용하여 구현될 수 있다.
인덱스(1104)에서의 각 캐시 엔트리는 고체-상태 저장 디바이스(14)의 각 저장 유닛(들)과 하나 이상의 논리적 어드레스를 연관시킬 수 있다. 예를 들어, 엔트리(114)는 논리적 어드레스 범위(072 내지 083)를 저장 유닛(95 내지 106)에 연관시킬 수 있다. 당업자는, 저장 유닛의 물리적 어드레스가 인덱스(1104)내에 또는 이에 벗어나 고체-상태 저장 매체의 하나 이상의 저장 구조에 저장될 수 있다. 전술한 바와 같이, 엔트리(1114)의 저장 유닛은 기본적인 데이터에 대한 변형으로 인해(예를 들어, 변형, 복구 동작 등으로 인해) 변경될 수 있다. 캐시 엔트리는 메타데이터(1119)를 추가로 포함 및/또는 참조할 수 있고, 이것은 캐시 반환 메타데이터(예를 들어, 캐시 엔트리 액세스 패턴), 캐시 엔트리 수명, 크기, 캐시 속성, 캐시 지시자, 저장 메타데이터{예를 들어, 저장 유닛(1117)의 어드레스}, 등을 포함할 수 있다. 메타데이터(1119)가 논리적 어드레스{예를 들어, 어드레스(1115)}에 의해 인덱싱되는 캐시 엔트리와 연관되기 때문에, 메타데이터(1119)는, 기본 데이터가 저장되는 위치로의 변경{예를 들어, 저장 유닛 어드레스(1117)로의 변경}에 상관없이 캐시 엔트리(1114)와 연관된 상태로 유지될 수 있다.
인덱스(1104)는, 고체-상태 저장 디바이스(114)가 클라이언트 저장 요청에 참조된 데이터를 포함하는지를 효율적으로 결정하고 및/또는 디바이스(114) 상에서 데이터의 위치를 식별하기 위해 사용될 수 있다. 예를 들어, 고체-상태 저장 디바이스(114)는 특정 논리적 어드레스에 대한 저장 요청(1102)을 수신할 수 있다. 요청은 백킹 스토어로 향하거나, 고체-상태 저장 디바이스(114)로 향할 수 있다. 요청(1102)은 논리적 어드레스 및 길이{예를 들어, 데이터의 3 유닛의 요청은 논리적 어드레스(074)에서 시작한다}를 규정할 수 있다. 대안적으로, 요청(1102)은 논리적 어드레스의 세트, 논리적 어드레스 범위(연속적 또는 불연속적) 등을 포함할 수 있다.
고체-상태 저장 디바이스(114)는, 요청된 논리적 어드레스에 대응하는 캐시 엔트리가 전술한 검색 동작을 이용하여 인덱스(1104)에 이용가능할지를 결정할 수 있다. 요청된 논리적 어드레스를 포함하는 캐시 엔트리가 인덱스(1104)에서 발견되면, 고체-상태 저장 디바이스(114)는 요청된 데이터(캐시 히트)를 포함한다; 그렇지 않으면, 캐시 미스가 발생한다.
도 11에 도시된 예에서, 저장 요청(1102)에 대응하는 캐시 엔트리는 인덱스(1104){캐시 엔트리(1114)}에 있고, 이와 같이, 캐시 히트가 발생한다. 요청을 서비스하기 위해, 데이터는 캐시 엔트리(114)에서 식별된 저장 유닛(1117)으로부터 판독될 수 있고, 오리지네이터(originator) 또는 요청으로 복귀될 수 있다. 캐시 미스가 발생하면{예를 들어, 요청은 인덱스(1104)에 있지 않은 논리적 어드레스를 참조한다}, 고체-상태 저장 디바이스(114)는 백킹 스토어(118)로부터 데이터를 판독할 수 있고, 데이터를 고체-상태 저장 디바이스(114) 상의 하나 이상의 저장 유닛에 저장하고, 인덱스(1104)에서 새로운 캐시 엔트리를 생성한다. 새로운 캐시 엔트리는 논리적 어드레스에 따라 인덱싱될 수 있고, 데이터를 포함하는 저장 유닛을 참조할 수 있다.
캐시 미스가 인덱스(1104)에 이미 있는 캐시 엔트리에 근접한 논리적 어드레스{예를 들어, 참조 어드레스(084 내지 088)}를 참조하면, 병합 동작이 발생할 수 있다. 병합 동작에서, 기존의 캐시 엔트리는 하나 이상의 다른 캐시 엔트리와 "병합"될 수 있다. 예를 들어, 논리적 어드레스(084 내지 088)에 대한 새로운 캐시 엔트리는 엔트리(1114)와 병합될 수 있다. 병합은 새로운 어드레스(예를 들어 072 내지 088)를 포함하기 위해 캐시 엔트리의 논리적 어드레스(1115)를 변형시키는 것을 포함할 수 있고 및/또는 기록된 데이터가 저장되는 저장 유닛을 포함하기 위해 저장 유닛(1117)을 포함할 수 있다.
유사한 동작이 부분적인 캐시 미스가 발생할 때 발생할 수 있다. 부분적인 캐시 미스는, 인덱스(1104)가 요청된 데이터 뿐 아니라 전부는 아니지만 일부분을 포함할 때 발생할 수 있다. 예를 들어, 저장 요청(1102)은 어드레스(077 내지 088)를 요청할 수 있다. 이 경우에, 엔트리(1114)는 데이터 전부가 아닌 요청된 데이터의 일부분을 참조할 수 있다. 요청을 서비스하기 위해, 고체-상태 저장 유닛은 고체-상태 저장 디바이스{예를 들어, 논리적 어드레스(083)까지} 상에서 이용가능한 데이터를 판독할 수 있고, 백킹 스토어(118)로부터 나머지(예를 들어 손상된) 데이터에 액세스할 수 있다. 백킹 스토어로부터 판독된 데이터는 고체-상태 저장 디바이스(114) 상에 저장될 수 있고, 개별적인 캐시 엔트리로서 인덱스(1104)에 및/또는 캐시 엔트리(1114) 내에 포함될 수 있다.
인덱스(1104)에서의 캐시 엔트리가 저장 유닛 어드레스{예를 들어, 어드레스(1117)}에 대한 참조를 포함하는 것으로 도시되지만, 본 개시는 이러한 관점에 한정되지 않는다. 다른 실시예에서, 캐시 엔트리는 저장 유닛에 대한 참조 또는 간접적인 링크를 포함한다. 예를 들어, 캐시 엔트리는 저장 유닛 식별자{또는 역방향 인덱스(1122)에 대한 참조}를 포함할 수 있다.
도 11의 메타데이터는 역방향 맵(1122)을 더 포함할 수 있고, 이러한 역방향 맵(1122)은 캐시 엔트리의 논리적 어드레스와 연관된 데이터를 포함하는 저장 유닛을 식별할 수 있다. 역방향 맵(1122)은 유효성 표시자(1130), 폐기가능성 표시자(1132)와 같은 메타데이터, 및/또는 다른 메타데이터(1136)(아래에 설명됨)와 저장 유닛을 연관시킬 수 있다. 몇몇 실시예에서, 저장 유닛 어드레스(1126) 및/또는 길이(1128)는 역방향 맵(1122)에 명확하게 포함될 수 있다. 대안적으로, 저장 유닛 어드레스(1126) 및/또는 데이터 길이(1128)는 역방향 맵(1122)에서 엔트리(예를 들어, 1120)의 위치로부터 추측될 수 있고, 이와 같이, 어드레스(1126) 및/또는 데이터 길이(1128)는 필요하지 않을 수 있다. 몇몇 실시예에서, 역방향 맵(1122)은 논리적 어드레스(1134)에 대한 참조를 선택적으로 포함할 수 있다. 논리적 어드레스 참조(1134)는 역방향 맵(1122)에 액세스하는 개체가 저장 유닛과 연관된 논리적 개체{예를 들어, 인덱스(1104)에서의 특정한 캐시 엔트리}에 관련된 메타데이터에 빠르게 액세스하도록 할 수 있다.
메타데이터(1136)는 저장 유닛 상에서 수행된 순차 저장 동작에 관련된 메타데이터를 포함하지만, 여기에 한정되지 않을 수 있다. 예를 들어, 메타데이터(1136)는 시퀀스 표시자(예를 들어, 시간 스탬프)를 포함할 수 있고, 이러한 시퀀스 표시자는, 저장 유닛이 저장되는 시퀀스{예를 들어, 또한 저장 유닛의 "수명" 등)를 나타낼 수 있다. 메타데이터는 마모 레벨, 신뢰도, 에러율, 방해 상태, 등과 같은 저장 매체에 관련된 메타데이터를 더 포함할 수 있다. 전술한 바와 같이, 저장 메타데이터는 캐시 반환 결정, 캐시 데이터 이동(예를 들어, "핫" 캐시 엔트리의 데이터가 적은 신뢰도의 저장 유닛에 저장되는 경우) 등과 같은 캐시 관리 동작을 효율적으로 구현하는데 사용될 수 있다.
역방향 맵(1122)은 고체-상태 저장 디바이스(114)의 저장 분할(예를 들어, 소거 블록)에 따라 조직화될 수 있다. 이 예에서, 캐시 엔트리(1118)에 대응하는 엔트리(1120)는 소거 블록(n; 1138)에 위치된다. 소거 블록(n; 1138)은 소거 블록(n-1; 1140)에 의해 선행되고, 뒤이어 소거 블록(n+1; 1142){소거 블록(n-1 및 n+1)의 내용은 도시되지 않음}이 온다. 소거 블록은 미리 결정된 수의 저장 유닛을 포함할 수 있다. 소거 블록은 저장 복구 동작에서 함께 소거되는 고체-상태 저장 디바이스(114)에서의 영역을 언급할 수 있다.
유효성 및/또는 폐기가능성 메타데이터(1130 및 1132)는 캐시 관리 백업 프로세스 및 그루머(예를 들어, 저장 복구 및 유지 보수)에 의해 공유될 수 있다. 백업 프로세스는 연대기적 순서(가장 오래된 것부터 가장 최신의 것으로)로 저장 유닛에 걸쳐 반복하기 위해 역방향 맵(1122)을 이용할 수 있다. 백업 프로세스는 유효하고 폐기가능하지 않은{메타데이터(1130 및 1132)로 표시된} 백킹 스토어에 저장 유닛을 백업할 수 있다. 백업 프로세스는 메타데이터(1136)를 이용하여 백업의 우선 순위를 정할 수 있다; 예를 들어, 백업 엔진은 메타데이터(1136)에 표시된 바와 같이, 신뢰도가 없는 저장 유닛 상에 저장된 데이터의 백업 우선 순위를 증가시킬 수 있고, 많은 양의 마모를 갖는 등을 할 수 있다.
유사하게, 그루머는 순차 저장 동작을 수행하기 위해 메타데이터(1130, 1132, 및/또는 1136)를 이용할 수 있다. 예를 들어, 저장 분할을 복구할 때, 그루머는 다음의 저장 분할에 대한 유효 데이터를 유지(예를 들어, 재기록)하는데 필요할 수 있다. 그러나, 폐기가능성 표시자(1132)가, 데이터가 폐기가능한 것을 나타내면, 그루머는 데이터의 복구를 주지하도록 선택할 수 있고, 이것은 그루머가 더 효율적으로 동작(예를 들어, 기록 확대를 감소)하도록 할 수 있다. 대안적으로, 또는 추가적으로, 그루머는 저장 분할 복구 동작{메타데이터(1119)마다 "핫"인 경우 폐기가능한 데이터를 유지} 동안 고체-상태 저장 디바이스 상에 유치되어야 하는 저장 유닛을 식별하기 위해 캐시 메타데이터{예를 들어, 메타데이터(1119)}에 액세스하도록 논리적 어드레스(1134) 연관을 이용할 수 있다. 그루머는, 데이터 리프레시 동작을 수행, 데이터 이동(예를 들어, 신뢰도없는 저장 유닛으로부터 다른 저장 유닛으로 "핫" 데이터를 이동) 등을 포함하지만 여기에 한정되지 않는 다른 목적을 위해 캐시 메타데이터{예를 들어, 메타데이터(1119)}를 이용할 수 있다.
일반적으로, 역방향 맵(1122)은 저장 분할(예를 들어 소거 블록) 또는 소거 영역에 의해 배치되어, 저장 복구 및/또는 리프레시 결정을 효율적으로 하기 위해 소거 블록{예를 들어, 소거 블록(n; 1138)}과 연관된 맵의 섹션을 가로지른다. 소거 블록(1138)에서 유효 데이터 및 유효 데이터의 양을 식별하도록 빠르게 검색될 수 있는 역방향 맵(1122) 및 가상 어드레스(1106)로부터 물리적 어드레스(1126)를 식별하도록 빠르게 검색될 수 있는 순방향 맵(1104)에 인덱스를 배치하는 것은 유리한데, 이는 역방향 맵(1122)이 검색 및 저장 복구 동작에 대해 최적화될 수 있기 때문이다. 당업자는, 인덱스(1104)를 갖는 인덱스 및 역방향 맵(1122)의 다른 이익을 인식할 것이다.
도 12는 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법의 일실시예의 흐름도이다. 전술한 바와 같이, 방법(1200)의 단계는 특정 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
단계(1210)에서, 고체-상태 저장 디바이스는 사용을 위해 초기화될 수 있다. 초기화는 통신 인터페이스(예를 들어, 버스 네트워크 등)와 같은 고체-상태 저장 디바이스{예를 들어, 고체-상태 저장 디바이스(114)}를 위한 리소스의 할당, 휘발성 메모리의 할당, 고체-상태 저장 매체의 액세스 등을 포함할 수 있다. 초기화는 도 11과 연계하여 전술한 데이터 구조와 같은 공유 메타데이터 데이터 구조의 초기화, 백킹 스토어 디바이스{예를 들어, 백킹 스토어(118)}의 식별, 및/또는 하나 이상의 클라이언트{예를 들어, 클라이언트(110a 내지 110c)}에 저장 인터페이스의 제공을 더 포함할 수 있다.
단계(1220)에서, 고체-상태 저장 디바이스는 하나 이상의 클라이언트로부터 저장 요청을 서비스할 수 있다. 저장 요청은 백킹 스토어로 향하게 될 수 있고(고체-상태 저장 디바이스가 투명하게 데이터를 캐싱하도록 구성될 때) 및/또는 고체-상태 저장 디바이스 자체로 향하게 될 수 있다.
단계(1230)에서, 고체-상태 저장 디바이스는 저장 요청에 관련된 공유 메타데이터{예를 들어, 메타데이터(117)}를 유지할 수 있다. 공유 메타데이터는 고체-상태 저장 디바이스 상에서 수행된 저장 동작 및/또는 고체-상태 저장 매체{예를 들어 메타데이터(316)}에 관련된 저장 메타데이터를 포함할 수 있다. 따라서, 저장 메타데이터는 논리적 어드레스와 고체-상태 저장 유닛, 유효 맵, 저장 재청구 메타데이터(예를 들어, 마모 레벨, 신뢰도, 첨부점 등) 등 사이의 연관을 포함할 수 있다.
단계(1230)에서 유지된 공유 메타데이터는 고체-상태 저장 디바이스 상에 저장된 캐시에 관련된(예를 들어, 고체-상태 저장 디바이스 상에서 수행된 캐시 동작에 관련된) 캐시 메타데이터를 더 포함할 수 있다. 캐시 메타데이터는 저장 메타데이터의 저장 유닛 인덱스에 대한 논리적 어드레스를 공유할 수 있다. 그러므로, 공유 메타데이터는 복수의 캐시 엔트리를 포함하는 인덱스{예를 들어, 인덱스(1104)}를 포함할 수 있고, 각 캐시 엔트리는 고체-상태 저장 디바이스의 하나 이상의 저장 유닛에 논리적 어드레스를 연관시킨다. 캐시 메타데이터는 데이터 액세스 패턴, 캐시 속성, 캐시 지시자, 등{예를 들어, 도 11의 메타데이터(1119)에 공유된}과 같은 캐시 반환 메타데이터를 더 포함할 수 있다. 단계(1230)에서 유지된 메타데이터는 인덱스{예를 들어, 도 11의 인덱스(1104)} 및/또는 역방향 인덱스{예를 들어, 도 11의 역방향 인덱스(1122)}를 포함할 수 있다.
단계(1240)에서, 방법(1200)은 고체-상태 저장 디바이스 상에서 저장 동작을 수행하기 위해 공유 메타데이터에 액세스할 수 있다. 순차 저장 동작은 순차(예를 들어, 부적절한) 저장 동작의 수행, 논리적-저장 유닛 연관의 유지, 저장 유닛 유효성 표시자의 유지, 복구(예를 들어, 가비지 컬렉션)에 대한 저장 분할의 선택, 고체-상태 저장 디바이스의 현재 점유량 레벨의 결정, 저장 분할 복구 동작 동안 유지할 저장 유닛을 선택 등을 포함하지만, 여기에 한정되지 않을 수 있다.
단계(1260)에서, 방법(1200)은 고체-상태 저장 디바이스 상에 저장된 캐시를 관리하기 위해 공유 메타데이터에 액세스할 수 있다. 캐시의 관리는 백킹 스토어에 저장 분할을 백업, 캐시 반환 메타데이터를 유지, 반환을 위한 캐시 엔트리를 선택 등을 포함하지만, 여기에 한정되지 않는다.
도 13은 고체-상태 저장 디바이스 상에서 데이터를 캐시하는 방법(1300)의 흐름도이다. 전술한 바와 같이, 방법(1200)의 단계는 특정 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
단계(1310, 1320, 및 1330)에서, 방법(1300)은 위에 설명된 바와 같이, 초기화될 수 있고, 저장 요청을 서비스할 수 있고, 공유 메타데이터를 유지할 수 있다.
단계(1340)에서, 방법(1300)은 고체-상태 저장 디바이스의 순차 저장 동작을 관리하기 위해 공유 메타데이터에 액세스할 수 있다.
단계(1342)에서, 방법(1300)은 복구를 위한 저장 분할을 선택하기 위해 캐시 메타데이터를 사용할 수 있다. 단계(1342)는 백킹 스토어 상에 저장된 저장 유닛(예를 들어, 폐기가능한 저장 유닛)을 식별하는 캐시 메타데이터에 액세스하는 것을 포함할 수 있다. 저장 분할의 선택은 저장 디바이스 상에 유지될(예를 들어, 다른 저장 위치에 재기록될) 저장 분할에서의 유효 데이터의 임계치에 기초할 수 있다. 유효 데이터의 양은 폐기가능성 표시자를 이용하여 결정될 수 있다; 저장 유닛이 유효하고 폐기가능한 경우, 저장 유닛은 데이터의 손실 및/또는 손상 없이 복구 동작 동안 소거될 수 있다.
단계(1342)는, 저장 유닛이 (예를 들어, 반환 정책 또는 다른 메타데이터에 따라) 고체-상태 저장 디바이스 상에 유지되어야 하는 캐시 엔트리와 연관되는 지를 결정하기 위해 캐시 메타데이터에 액세스하는 것을 더 포함할 수 있다. 예를 들어, 캐시 엔트리가 "핫"인 경우(제거된 경우 캐시 미스를 초래하는 가능성이 있음), 저장 유닛은 폐기가능한 것으로 식별되더라도 복구 동작 동안 유지될 수 있다.
단계(1344)에서, 방법(1300)은 선택된 저장 분할 상에서 복구 동작을 구현할 수 있다. 복구 동작은 복구 동작을 수행하기 위해 캐시 메타데이터(공유 메타데이터에서)에 액세스할 수 있다. 복구 동작은 저장 분할 상에서 폐기가능하지 않은 저장 유닛을 식별하는 것(캐시 메타데이터를 이용하여)과, 식별된 저장 유닛이 다른 저장 분할 상에 저장되도록 하는 것 및/또는 폐기가능하지 않은 저장 유닛이 백킹 스토어 상에 저장되도록 하는 것을 포함할 수 있다. 동작은 고체-상태 저장 디바이스(예를 들어, 캐시 엔트리와 연관된 캐시 반환 메타데이터에 따라) 상에 유지되어야 하는 캐시 엔트리와 연관된 저장 유닛을 식별하기 위해 메타데이터에 액세스하는 것을 더 포함할 수 있다. 식별된 저장 유닛은 고체-상태 저장 디바이스의 다른 저장 분할 상에 저장될 수 있다.
단계(1346)에서, 방법(1300)은 저장 유닛을 리프레시 및/또는 관리하기 위해 데이터 그루밍 동작을 구현할 수 있다{데이터 그루밍 동작은 또한 단계(1342 및 1344)와 연계하여 전술한 바와 같이, 저장 복구 동작을 포함할 수 있다}. 그루밍 동작은 캐시 동작에 관련된 공유 메타데이터에 액세스할 수 있다. 예를 들어, 그루밍 동작은 "PIN" 속성(예를 들어, 캐시 반환 메타데이터를 이용), 폐기가능하지 않은 저장 유닛 등과 같은 특정 캐시 속성을 갖는 "핫" 캐시 엔트리 또는 캐시 엔트리와 연관된 저장 유닛을 식별할 수 있다. 그루밍 동작은 또한, 저장 유닛이 저장 분할 마모 레벨, 신뢰도(예를 들어, 에러율), 판독 방해, 수명 등에 기초하여 다른 저장 분할로 이동되어야 할지를 결정하기 위해 저장 메타데이터를 참고할 수 있다.
단계(1360)에서, 방법(1300)은 고체-상태 저장 디바이스 상에 저장된 캐시를 관리하기 위해 공유 메타데이터에 액세스할 수 있다.
단계(1362)에서, 방법(1300)은 백킹 스토어 상에 저장하기 위해 저장 유닛을 선택할 수 있다. 선택은, 저장 유닛이 기록될 때의 연대순(가장 오래된 것으로부터 가장 최신의 것으로)에 기초할 수 있고, 이것은 고체-상태 저장 디바이스 상에 수행된 저장 동작의 시퀀스에 관련된 저장 메타데이터를 이용하여 결정될 수 있다. 몇몇 실시예에서, 선택은 캐시 반환 메타데이터(예를 들어, 액세스 빈도수 등과 같은 액세스 패턴)에 기초할 수 있다. 사용 경우에 따라, 높은 변형율을 갖는 캐시는 백업을 수행하는 잠재적인 비용 및 대역폭의 이용을 최적화하기 위해 백업을 위해 선택되지 않을 수 있다. 단계(1362)의 선택은 유효 표시자의 액세스를 포함할 수 있다; 무효로서 마킹된 데이터는 수명 및/또는 폐기가능성 표시자에 상관없이 백업되지 않을 수 있다.
몇몇 실시예에서, 단계(1362)는 우선 순위 지정 백업 동작을 포함할 수 있다. 우선 순위는 저장 분할 마모 레벨, 신뢰도, 점유량 등과 같은 저장 메타데이터에 기초할 수 있다. 예를 들어, 신뢰도 없는(또는 높은 마모의) 저장 분할(저장 메타데이터에 의해 표시됨) 상에 저장된 저장 유닛은 더 신뢰도 있는(또는 마모가 적은) 저장 분할에 저장된 저장 유닛 이전에 백업될 수 있다.
단계(1364)에서, 방법(1300)은 특히 저장 메타데이터에 기초하여 저장 분할 백업 동작의 우선 순위를 정할 수 있다. 저장 메타데이터는 고체-상태 저장 디바이스의 현재 점유량을 결정하는데 사용될 수 있다. 백업 동작의 우선 순위는 현재 점유량에 기초하여 결정될 수 있다. 점유량이 낮을 때(점유량 임계치에 비해), 백업은 백그라운드에서 동작하도록 구성될 수 있다. 점유량이 높을 때, 백업 동작의 우선 순위는 증가될 수 있다(예를 들어, 포어그라운드로 이동).
단계(1366)에서, 방법(1300)은 공유 메타데이터(예를 들어 저장 메타데이터)를 이용하여 반환을 위해 캐시 엔트리를 식별할 수 있다. 전술한 바와 같이, 캐시 엔트리는 캐시 반환 메타데이터와 연관될 수 있고, 이러한 캐시 반환 메타데이터는 액세스 패턴, 캐시 속성, 캐시 지시자 등을 포함할 수 있다. 이러한 메타데이터는 캐시 엔트리 데이터에 관련될 수 있다. 그러나, 순차 저장 동작의 특성(예를 들어, 부적절한 기록 등)으로 인해, 저장 유닛과 캐시 메타데이터 사이의 연관은 손실될 수 있다(예를 들어, 물리적 저장 위치가 변할 때). 그러나, 저장 메타데이터는 논리적-저장 유닛 연관(도 11의 캐시 엔트리)을 유지할 수 있고, 이러한 연관은 캐시 엔트리와 연관된 캐시 반환 메타데이터 사이의 연관이 기본적인 순차 저장 동작(예를 들어, 캐시 데이터의 물리적 어드레스로의 변경)에 상관없이 유지되도록 할 수 있다. 다른 실시예에서, 저장 메타데이터는 논리적-저장 분할 연관(도 11의 캐시 엔트리)을 유지할 수 있고, 이러한 연관은 캐시 엔트리와 연관된 캐시 반환 메타데이터 사이의 연관이 기본적인 순차 저장 동작(예를 들어 캐시 데이터의 물리적 어드레스로의 변경)과 상관없이 유지되도록 할 수 있다.
단계(1366)의 식별은 다른 유형의 저장 메타데이터에 액세스할 수 있다. 예를 들어, 높은-마모 및/또는 신뢰도없는 저장 분할 상에 저장되는 캐시 엔트리는 더욱 더 신뢰도있는 저장 분할 등 상에 저장된 유사한 엔트리에 걸쳐 반환을 위해 바람직할 수 있다.
단계(1368)에서, 방법(1300)은 공유 메타데이터(예를 들어, 저장 메타데이터)를 이용하여 캐시 유지 보수 동작을 수행할 수 있다. 캐시 유지 보수 동작은 "핫" 캐시 엔트리의 식별, 저장 메타데이터의 이용, "핫" 캐시 엔트리가 고체-상태 저장 디바이스의 다른 저장 분할로 이동되도록 하는 것을 포함할 수 있다. 이동은 마모 레벨링 목적을 위해 수행될 수 있어서, 과도한 판독 방해 등을 방지한다. 선택은 관련 저장 통계치(예를 들어, 판독 카운트, 수명 등)을 유지하는 저장 메타데이터에 따라 이루어지고, 이것은 저장 유닛, 저장 분할, 가상 저장 분할, 또는 다른 입도(granularity) 레벨에 유지된다.
단계(1368)의 캐시 유지 보수 동작은 특정 수명를 갖고 및/또는 백업되지 않는(예를 들어 폐기가능하지 않은) 저장 유닛을 이동시키는 것을 더 포함할 수 있다. 폐기가능하지 않은 저장 유닛은 백킹 스토어 상에 저장되지 않고, 이와 같이, 손실의 경우에, 데이터 손실 및/또는 손상을 야기할 수 있다. 이들 저장 유닛은 그러한 손실을 방지하기 위해 신뢰도 없는 및/또는 높은-마모의 저장 분할로부터 이동될 수 있다. 유사하게, 폐기가능하지 않은 저장 유닛은 판독 방해, 또는 다른 상황에 의해 야기된 에러를 방지하기 위해 "핫" 저장 엔트리의 근접부로부터 이동될 수 있다.
도 14는 고체-상태 저장 디바이스 상에 데이털 캐싱하는 방법(1400)의 흐름도이다. 전술한 바와 같이, 방법(1400)의 단계는 특정 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
단계(1410, 1420, 및 1430)에서, 방법(1400)이 전술한 바와 같이, 초기화될 수 있고, 저장 요청을 서비스하고, 공유 메타데이터를 유지할 수 있다. 공유 메타데이터는 복수의 캐시 엔트리를 포함할 수 있고, 각 캐시 엔트리는 캐시 엔트리의 데이터를 포함하는 하나 이상의 저장 유닛과 논리적 어드레스를 연관시킨다. 몇몇 실시예에서, 메타데이터는 도 11에 도시된 B-트리 데이터 구조와 같은 순방향 인덱스를 포함할 수 있다.
단계(1440)에서, 방법(1400)은 특정 논리적 어드레스에서 데이터를 위한 요청을 수신할 수 있다.
단계(1450)에서, 방법(1400)은, 특정 논리적 어드레스에 대응하는 데이터가 고체-상태 저장 디바이스 상에 저장되는지를 결정할 수 있다. 몇몇 실시예에서, 단계(1450)는 공유 메타데이터의 순방향 인덱스를 검색하는 것을 포함할 수 있다. 특정 논리적 어드레스를 포함하는 캐시 엔트리가 순방향 인덱스에 존재하면, 방법(1400)은, 데이터가 이용가능하다는 것을 결정할 수 있고, 그 흐름은 단계(1460)에서 계속해서 진행할 수 있고; 그렇지 않으면, 흐름은 단계(1470)에서 계속될 수 있다.
단계(1460)에서, 저장 요청이 서비스될 수 있다. 저장 요청의 서비스는 요청된 데이터를 포함하는 하나 이상의 저장 유닛을 결정하기 위해 단계(1450)에서 식별된 캐시 엔트리에 액세스하는 것을 포함할 수 있다. 저장 유닛은 판독될 수 있고, 결과적인 데이터는 요청자로 복귀될 수 있다.
단계(1470)에서, 캐시 미스가 발생할 수 있다. 캐시 미스는 백킹 스토어(118)와 같은 다른 데이터 저장부에서 특정 논리적 어드레스에 대응하는 데이터에 액세스함으로써 서비스될 수 있다.
단계(1472)에서, 데이터는 고체-상태 저장 디바이스 상에 순차적으로 저장될 수 있다. 단계(1474)에서, 메타데이터는, 데이터가 고체-상태 저장 디바이스 상에서 이용가능하다는 것을 나타내도록 업데이트될 수 있고, 단계(1476)에서, 데이터는 요청자에 제공될 수 있다.
단계(1474)는 새로운 캐시 엔트리를 메타데이터에 추가하는 것을 포함할 수 있다. 새로운 캐시 엔트리는 백킹 스토어로부터 판독된 데이터를 포함하는 저장 유닛과 특정 논리적 어드레스를 연관시킬 수 있다.
몇몇 실시예에서, 단계(1474)는 기존의 캐시 엔트리를 업데이트하는 것을 포함할 수 있다. 특정 논리적 어드레스는 메타데이터에서 논리적 어드레스에 근접할 수 있다. 따라서, 새로운 개별적인 캐시 엔트리를 추가하기 보다는, 기존의 캐시 엔트리는, 특정 논리적 어드레스를 포함하고, 백킹 스토어로부터 판독된 데이터를 포함하는 저장 유닛을 참조하도록 업데이트될 수 있다. 특정 논리적 어드레스가 2개 이상의 기존의 캐시 엔트리(예를 들어, 캐시 엔트리들 사이의 간격을 채움)에 있으면, 단계(1474)의 업데이트는, 새로운 범위(예를 들어, 원래 캐시 엔트리의 논리적 어드레스, 및 특정 논리적 어드레스)를 포함하고, 원래 저장 유닛, 및 백킹 스토어로부터 판독된 데이터를 포함하는 저장 유닛을 참조하도록 캐시 엔트리를 병합하는 것을 포함할 수 있다.
몇몇 실시예에서, 캐시 엔트리는 모든 데이터가 아니라, 요청된 데이터의 부분을 포함할 수 있다. 이 경우에, 단계(1470 및 1472)에서, 방법(1400)은 데이터의 손실된 부분만을 판독하고 저장할 수 있다. 단계(1474)에서, 새로운 캐시 엔트리는 백킹 스토어로부터 판독된 데이터를 포함하는 저장 유닛을 특정 논리적 어드레스와 연관시키도록 추가될 수 있다. 대안적으로, 단계(1474)는 전술한 기존의 캐시 엔트리를 업데이트하는 것을 포함할 수 있다.
도 15는 고체-상태 저장 디바이스 상에서 데이터를 캐시하기 위한 방법(1500)의 일실시예의 흐름도이다. 전술한 바와 같이, 방법(1500)의 단계는 특정한 기계 구성요소에 결합될 수 있고 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
단계(1510, 1520, 및 1530)에서, 방법(1500)은 전술한 바와 같이 초기화될 수 있고, 저장 요청을 서비스하고, 공유 메타데이터를 유지할 수 있다. 단계(1540)에서, 방법(1500)은 고체-상태 저장 디바이스 상에 저장된 데이터를 제거하기 위해 저장 요청을 수신할 수 있다. 요청은 논리적 어드레스에 의해 데이터를 참조할 수 있다.
단계(1550)에서, 방법(1500)은, 논리적 어드레스에 대응하는 데이터가 도 14와 연계하여 전술한 바와 같이 고체-상태 저장 디바이스 상에 저장되는 지를 결정할 수 있다.
단계(1560)에서, 방법은 고체-상태 저장 디바이스로부터 데이터를 판독할 수 있다. 데이터의 제거는 메타데이터로부터의 논리적 어드레스와 연관된 캐시 엔트리의 제거 및/또는 캐시 엔트리의 저장 유닛의 무효화를 포함할 수 있다. 캐시 엔트리가 고체-상태 저장 디바이스 상에 유지될 데이터를 포함하면, 캐시 엔트리는 캐시 엔트리를 제거된 논리적 어드레스 및/또는 무효화된 저장 유닛과 연관 해제(de-associate)하도록 업데이트될 수 있다. 연관 해제는 전술한 바와 같이 캐시 엔트리를 분할시키는 것을 포함할 수 있다. 단계(1560)는 TRIM 명령{예를 들어, 방법(1500)에 의해 제공된 저장 인터페이스를 통해 송출된} 등에 응답하여 수행될 수 있다.
단계(1570)에서, 저장 요청은 백킹 스토어로 전달될 수 있어서, 백킹 스토어가 데이터를 제거하도록 한다.
도 16은 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법(1600)의 일실시예의 흐름도이다. 전술한 바와 같이, 방법(1600)의 단계는 특정 기계 구성요소에 결합될 수 있고, 및/또는 비 일시 기계-판독가능 저장 매체 상에 저장된 기계-판독가능 지령을 이용하여 구현될 수 있다.
단계(1610, 1620, 및 1630)에서, 방법(1600)은 전술한 바와 같이 초기화될 수 있고, 저장 요청을 서비스할 수 있고, 공유 메타데이터를 유지할 수 있다. 단계(1630)에서 유지된 메타데이터는 논리적 어드레스를 고체-상태 저장 디바이스의 저장 유닛과 연관시키는 순방향 인덱스를 포함할 수 있다. 메타데이터는 유효성 및/또는 폐기가능성 메타데이터를 더 포함할 수 있다.
단계(1640)에서, 고체-상태 저장 디바이스의 최대 점유량은 공유 메타데이터(117){예를 들어, 저장 메타데이터(316)}를 이용하여 계산될 수 있다. 저장 메타데이터(316)는 에러율, 신뢰도, 마모 레벨 등과 같이 고체-상태 저장 매체에 관련된 메타데이터를 포함할 수 있다. 저장 메타데이터(316)는 더 이상 사용할 수 없는(허용가능하지 않은 에러율, 또는 다른 조건으로 인해) 저장 분할 또는 저장 유닛의 표시자를 포함할 수 있다. 고체-상태 저장 디바이스의 최대 점유량은 원래 최대 점유량(예를 들어, 물리적 저장 용량, 또는 그 인자)으로부터 사용할 수 없는 저장 분할을 감산함으로써 계산될 수 있다. 데이터를 캐싱하는데 이용가능한 물리적 저장 용량은 유사하게 저장 유닛이 마모 또는 다른 에러 조건으로 인해 이용할 수 없게 되기 때문에 시간에 따라 변할 수 있다. 고체-상태 저장 디바이스는, 이용할 수 없는 저장 분할 및/또는 저장 유닛으로 인해, 이용가능한 물리적 저장 용량의 감소에도 불구하고, 캐시(동일한 크기 또는 유사한 크기의 논리적 어드레스 공간을 제공하는)로서 계속해서 동작할 수 있다. 이용가능한 물리적 저장 용량에서의 이러한 감소는, 고체-상태 저장 디바이스가 데이터를 캐싱하는데 이용가능한 물리적 용량을 더 이상 갖지 않고 입/출력 속도가 백킹 스토어에 직접 액세스하기 위한 입/출력 속도와 유사할 때까지 계속될 수 있다.
단계(1650)에서, 고체-상태 저장 디바이스의 현재 점유량은 공유 메타데이터(117)를 이용하여 계산될 수 있다. 몇몇 실시예에서, 현재 점유량은 고체-상태 저장 디바이스 상의 모든 유효 데이터를 포함하는 것으로 계산될 수 있다. 유효 데이터는 순방향 인덱스{예를 들어, 도 11의 인덱스(1104)}를 방해함으로써 식별될 수 있다. 대안적으로, 더 적극적인 계산은 유효한, 폐기가능하지 않은 저장 유닛만을 계산하는 것을 포함할 수 있다. 이 경우에, 방법(1600)은, 폐기가능한 저장 유닛이 데이터 손실 없이 고체-상태 저장 디바이스로부터 제거될 수 있고, 이와 같이 이용가능한 저장 공간으로서 카운트될 수 있다는 점을 고려할 수 있다.
단계(1660)에서, 방법(1600)은 최대 점유량 및/또는 현재 점유량을 백업 엔진, 그루머, 캐시 관리자, 등과 같은 요청자에게 제공할 수 있다.
몇몇 실시예에서, 방법(1600)은 백킹 스토어의 어드레스 공간을 초과하는 논리적 어드레스를 제공할 수 있다. 단계(1670)에서, 방법(1600)은 백킹 스토어의 논리적 어드레스 범위 외부에 있는 논리적 어드레스와 연관된 저장 요청을 서비스할 수 있다. 고체-상태 저장 디바이스는 고체-상태 저장 디바이스 상에서 데이터를 저장하라는 요청을 서비스할 수 있다. 그러나, 데이터는 백킹 스토어에 백업될 수 없다(데이터의 어드레스가 백킹 스토어의 논리적 어드레스 외부에 있기 때문에). 따라서, 논리적 어드레스와 연관된 캐시 엔트리의 저장 유닛은 폐기가능하지 않은 것으로 마킹될 수 있고, 추가 논리적 또는 물리적 백킹 저장 용량이 이용가능할 때까지 폐기가능하지 않은 상태로 남아있을 수 있다. 몇몇 실시예에서, 단계(1670)는, 추가 백킹 저장을 요청하는 것 및/또는 논리적 저장 공간이 초과되었다는 통지를 송출하는 것을 포함할 수 있다.
본 명세서 전체에 "몇몇 실시예" 또는 "일실시예"라는 언급은, 실시예와 연계하여 설명된 특정한 특징, 구조, 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 다양한 위치에 "일실시예에서" 또는 "몇몇 실시예에서"라는 구문의 출현은 모두 동일한 실시예를 언급하는 것은 아니다. 더욱이, "일실시예"는 시스템, 디바이스, 제조 물품, 방법, 및/또는 프로세스일 수 있다.
"연결된", "네트워크화된", 및 "통신하는" "통신하게 결합된"이라는 구문은 기계, 전기, 자기, 및 전자기 상호 작용을 포함하는 2개 이상의 개체 사이의 상호 작용의 임의의 형태를 언급한다. 2개의 구성요소는, 이들이 서로 직접 물리적으로 접촉하지 않고 2개의 구성요소 사이에 중간 디바이스가 있더라도, 서로 연결될 수 있다.
범용 프로세서, 프로그래밍 툴 및 기술, 비-일시, 컴퓨터- 및/또는 기계-판독가능 저장 매체, 및 통신 네트워크 및 인터페이스와 같은 본 명세서에 개시된 실시예에 사용될 수 있는 몇몇 인프라 구조가 이미 이용가능하다. IED 및/또는 모니터링 디바이스와 같은 컴퓨터 디바이스는 마이크로프로세서, 마이크로제어기, 논리 회로 등을 포함할 수 있다. 프로세서는 ASIC, PAL, PLA, PLD, FPGA, 또는 다른 처리 수단과 같은 특수 목적의 처리 디바이스를 포함할 수 있다. 컴퓨터 디바이스는 또한 비휘발성 메모리, 정적 RAM, 동적 RAM, ROM, CD-ROM, 디스크, 테이프, 자기, 광학, 플래시 메모리, 또는 다른 비-일시 기계-판독가능 저장 매체와 같은 컴퓨터-판독가능 저장 매체를 포함할 수 있다.
상기 설명은 본 명세서에 기재된 실시예를 완전히 이해하기 위해 다수의 특정한 세부사항을 제공한다. 그러나, 당업자는, 하나 이상의 특정한 세부사항이 생략될 수 있거나, 다른 방법, 구성요소 또는 자료가 사용될 수 있다는 것을 인식할 것이다. 몇몇 경우에, 동작은 구체적으로 도시되거나 설명되지 않는다.
본 개시의 특정한 실시예 및 응용이 도시되고 설명되었지만, 본 개시가 본 명세서에서 정확한 구성 및 구성요소에 한정되지 않는다는 것이 이해될 것이다. 당업자에게 명백한 다양한 변형, 변화 및 변경이 본 개시의 사상 및 범주에서 벗어나지 않고도 본 개시의 방법 및 시스템에 대한 장치, 동작 및 세부사항에서 이루어질 수 있다.

Claims (33)

  1. 고체-상태 저장 디바이스 상에서 데이터를 캐싱(caching)하는 방법으로서,
    고체-상태 저장 디바이스를 관리하도록 구성된 저장 제어기에 의해, 상기 고체-상태 저장 디바이스 상에서 수행된 저장 동작들에 관련된 메타데이터를 유지하는 단계 - 상기 메타데이터는, 상기 고체-상태 저장 디바이스 상에 저장된 데이터의 논리적 어드레스들을 상기 고체-상태 저장 디바이스의 각각의 저장 유닛들에 매핑하기 위한 인덱스를 포함하고, 상기 데이터는 상기 고체-상태 저장 디바이스 상에서 캐싱된 백킹 스토어(backing store)에 대응하는 데이터를 포함하며,
    상기 메타데이터는, 상기 백킹 스토어에 기록되어 있는 상기 백킹 스토어에 대응하는 데이터를 포함하는 상기 고체-상태 저장 디바이스의 저장 유닛들을 식별하는 폐기가능성 표시자(discardability indicator)들을 포함함 - ;
    복구를 위한 상기 고체-상태 저장 디바이스의 저장 분할을 선택하기 위해 상기 폐기가능성 표시자들에 액세스하는 단계 - 선택된 상기 저장 분할은 상기 백킹 스토어에 대응하는 데이터를 포함하는 하나 이상의 저장 유닛을 포함하는 복수의 저장 유닛을 포함함 - ;
    상기 폐기가능성 표시자들을 이용하여 상기 선택된 저장 분할의 상기 하나 이상의 저장 유닛들 상에서 캐싱된 데이터를 유지할지를 결정하는 단계
    를 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  2. 제 1항에 있어서, 상기 인덱스는 상기 고체-상태 저장 디바이스 상에서 캐싱된 상기 백킹 스토어의 데이터를 상기 고체-상태 저장 디바이스의 각각의 저장 유닛들과 연관시키도록 구성된 캐시 엔트리들을 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  3. 제 2항에 있어서,
    상기 인덱스에서 상기 고체-상태 저장 디바이스 상에서 캐싱된 상기 백킹 스토어의 데이터에 관련된 액세스 패턴 메타데이터를 유지하는 단계; 및
    상기 액세스 패턴 메타데이터를 이용하여 상기 하나 이상의 저장 유닛에서 캐싱된 상기 데이터를 유지할지를 결정하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  4. 제 1항에 있어서,
    상기 폐기가능성 표시자들을 이용하여 상기 선택된 저장 분할의 폐기가능하지 않은 저장 유닛을 식별하는 단계; 및
    상기 폐기가능하지 않은 저장 유닛의 데이터가 상기 고체-상태 저장 디바이스의 상이한 저장 분할 상에 저장되도록 하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  5. 제 1항에 있어서,
    상기 고체-상태 저장 디바이스 상에서 캐싱된 상기 백킹 스토어의 데이터에 관련된 액세스 패턴 메타데이터를 유지하는 단계; 및
    상기 액세스 패턴 메타데이터 및 상기 폐기가능성 표시자들에 기초하여 복구를 위한 상기 저장 분할을 선택하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  6. 제 2항에 있어서,
    상기 폐기가능성 표시자들을 이용하여 상기 하나 이상의 저장 유닛 중 제 1 저장 유닛이 폐기가능하다고 결정하는 단계; 및
    상기 제 1 저장 유닛의 데이터를 상기 제 1 저장 유닛과 연관된 액세스 패턴 메타데이터에 기초하여 상기 고체-상태 저장 디바이스의 상이한 저장 분할 상에 저장되도록 하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  7. 제 1항에 있어서,
    상기 메타데이터에서 상기 고체-상태 저장 디바이스의 각각의 저장 유닛들 상에 캐싱된 상기 백킹 스토어의 데이터에 대한 캐시 속성들을 기록하는 단계; 및
    복구를 위한 상기 저장 분할을 선택하기 위해 상기 캐시 속성을 이용하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  8. 제 1항에 있어서,
    상기 고체-상태 저장 디바이스의 제 1 저장 분할에서 저장 유닛들을 참조하는 제 1 캐시 엔트리와 연관된 논리적 어드레스를 포함하는 저장 요청을 수신하는 단계;
    상기 고체-상태 저장 디바이스의 제 2 저장 분할의 저장 유닛들에 상기 저장 요청의 데이터를 저장하는 단계;
    상기 캐시 엔트리를 상기 제 2 저장 분할의 저장 유닛들과 연관시키기 위해, 상기 제 1 저장 분할의 저장 유닛들이 무효라는 것을 나타내기 위해, 그리고 상기 제 2 저장 분할의 저장 유닛들이 폐기가능하지 않다는 것을 나타내기 위해 상기 인덱스를 업데이트하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  9. 제 1항에 있어서,
    상기 메타데이터에 캐시 엔트리들을 유지하는 단계 - 상기 캐시 엔트리들은 상기 고체-상태 저장 디바이스 상에서 캐싱된 상기 백킹 스토어의 데이터와 관련됨 - ;
    상기 고체-상태 저장 디바이스의 제 1 저장 유닛 상에 데이터를 저장하는 단계 - 상기 데이터는 특정 캐시 엔트리의 논리적 어드레스에 근접한 제 1 논리적 어드레스에 대응함 - ; 및
    상기 제 1 논리적 어드레스를 포함하고, 상기 제 1 저장 유닛을 참조하기 위해 상기 특정 캐시 엔트리를 변형하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  10. 제 1항에 있어서, 상기 고체-상태 저장 디바이스는 상기 백킹 스토어에 통신가능하게 결합되고,
    상기 방법은,
    상기 백킹 스토어의 용량을 포함하는 상기 고체-상태 저장 디바이스에 대한 논리적 어드레스 공간을 제공하는 단계;
    상기 고체-상태 저장 디바이스 상에서 수행된 저장 동작들에 관련된 상기 메타데이터를 이용하여 상기 고체-상태 저장 디바이스의 현재 점유량을 결정하는 단계;
    상기 현재 점유량이 임계치를 초과할 때 폐기가능하지 않은 저장 유닛들이 상기 백킹 스토어 상에 저장되게 하도록 구성된 백업 엔진의 우선 순위를 증가시키는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  11. 제 1항에 있어서,
    상기 인덱스에서 상기 고체-상태 저장 디바이스 상에서 수행된 캐시 동작들에 관련된 캐시 메타데이터를 유지하는 단계;
    상기 백킹 스토어의 논리적 어드레스 공간을 초과하는 상기 고체-상태 저장 디바이스에 대한 논리적 어드레스 공간을 제공하는 단계;
    상기 백킹 스토어의 상기 논리적 어드레스 공간의 외부에 놓이는 논리적 어드레스와 연관된 저장 요청을 식별하는 단계; 및
    상기 캐시 메타데이터에서, 상기 식별된 저장 요청에 응답하여 상기 고체-상태 저장 디바이스 상에서 캐싱된 상기 저장 요청의 데이터에 대한 폐기가능하지 않은 표시자를 유지하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  12. 제 1항에 있어서,
    상기 인덱스에서 상기 고체-상태 저장 디바이스 상에서 캐싱된 상기 백킹 스토어의 데이터에 대응하는 캐시 엔트리들을 유지하는 단계;
    상기 인덱스에서 제 1 캐시 엔트리와 연관된 제 1 논리적 어드레스 및 상기 인덱스에서 캐시 엔트리와 연관되지 않은 제 2 논리적 어드레스를 참조하는 저장 요청을 수신하는 단계; 및
    상기 제 1 캐시 엔트리에 대응하는 상기 고체-상태 저장 디바이스 상에 저장된 데이터를 상기 백킹 스토어로부터 판독된 상기 제 2 논리적 어드레스의 데이터와 조합함으로써 상기 요청을 서비스하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  13. 제 12항에 있어서,
    상기 고체-상태 저장 디바이스의 저장 유닛 상에 상기 제 2 논리적 어드레스의 데이터를 저장하는 단계; 및
    상기 제 2 논리적 어드레스를 상기 저장 유닛과 연관시키기 위하여 캐시 엔트리를 상기 인덱스에 추가하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  14. 제 12항에 있어서, 상기 제 1 논리적 어드레스 및 상기 제 2 논리적 어드레스를 포함하는 캐시 엔트리를 포함시키기 위하여 상기 인덱스를 변형하는 단계를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  15. 제 12항에 있어서, 상기 저장 요청의 데이터는 불연속적인, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  16. 데이터를 캐싱하는 장치로서,
    고체-상태 저장 디바이스의 각각의 저장 분할들 상에 주 저장 시스템에 대응하는 데이터를 저장하도록 구성된 저장 제어기; 및
    상기 고체-상태 저장 디바이스의 상기 각각의 저장 분할들 상에 저장된 상기 주 저장 시스템에 대응하는 데이터에 관련된 캐시 메타데이터를 유지하도록 구성된 캐시 제어기 - 상기 캐시 메타데이터는 상기 주 저장 시스템에 백업되어 있는 상기 고체-상태 저장 디바이스 상에 저장된 데이터를 식별하도록 구성된 폐기가능성 표시자들을 포함함 -
    를 포함하고,
    상기 저장 제어기는 상기 캐시 메타데이터의 상기 폐기가능성 표시자들을 이용하여 저장 복구 동작을 위한 상기 고체-상태 저장 디바이스의 저장 분할을 선택하도록 구성되고, 상기 선택된 저장 분할은 상기 주 저장 시스템에 백업되지 않은 데이터를 포함하는, 데이터를 캐싱하는 장치.
  17. 제 16항에 있어서, 상기 저장 제어기는 상기 캐시로부터 반환될 수 있는 상기 주 저장 시스템에 대응하는 데이터를 포함하는 상기 저장 복구 동작을 위해 선택된 상기 저장 분할의 저장 유닛들을 식별하기 위하여 상기 캐시 메타데이터에 액세스하도록 구성되는, 데이터를 캐싱하는 장치.
  18. 제 16항에 있어서, 상기 저장 분할은 상기 저장 분할의 각각의 저장 유닛들 내에 저장된 데이터에 대응하는 폐기가능성 표시자들에 기초하여 선택되는, 데이터를 캐싱하는 장치.
  19. 제 16항에 있어서, 상기 저장 제어기는 상기 고체-상태 저장 디바이스 상에 유지하기 위하여 상기 선택된 저장 분할 상에 저장된 데이터를 식별하고, 상기 식별된 데이터가 상기 고체-상태 저장 디바이스의 또다른 저장 분할에 기록되도록 하고, 그리고 상기 선택된 저장 분할을 소거하도록 구성되는, 데이터를 캐싱하는 장치.
  20. 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법으로서,
    고체-상태 저장 디바이스 상에서 수행된 하나 이상의 순차 저장 동작들에서 상기 고체-상태 저장 디바이스 상에 데이터를 순차적으로 저장하는 단계;
    상기 순차 저장 동작들에 관련된 저장 메타데이터를 유지하는 단계 - 상기 저장 메타데이터는 저장 메타데이터를 상기 고체-상태 저장 디바이스의 저장 유닛들과 연관시키는 역방향 인덱스를 포함함 - ; 및
    상기 고체-상태 저장 디바이스의 상기 저장 유닛들 상에 저장된 캐시를 관리하기 위해 상기 저장 메타데이터에 액세스하는 단계
    를 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  21. 제 20항에 있어서, 상기 캐시를 관리하는 것은, 많은 양의 마모를 갖는 캐시 엔트리의 데이터를 포함하는 저장 유닛, 낮은 양의 마모를 갖는 저장 유닛, 및 신뢰도 없는 저장 유닛 중 하나의 저장 유닛을 나타내는 저장 메타데이터에 기초하여 반환을 위한 캐시 엔트리를 선택하는 것을 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  22. 제 20항에 있어서, 상기 캐시를 관리하는 것은, 상기 고체-상태 저장 디바이스의 제 1 저장 유닛 상에 저장된 캐시 엔트리의 데이터가, 많은 양의 마모를 갖는 제 1 저장 유닛, 낮은 양의 마모를 갖는 제 1 저장 유닛, 및 신뢰도 없는 제 1 저장 유닛 중 하나의 제 1 저장 유닛을 나타내는 저장 메타데이터에 기초하여 상기 고체-상태 저장 디바이스의 제 2 저장 유닛 상에 저장되게 하는 것을 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  23. 제 20항에 있어서, 많은 양의 마모를 갖는 저장 유닛, 낮은 양의 마모를 갖는 저장 유닛, 및 신뢰도 없는 저장 유닛 중 하나의 저장 유닛을 나타내는 저장 메타데이터에 기초하여 상기 고체-상태 저장 디바이스의 저장 유닛 상에서 캐싱된 데이터를 백킹 스토어에 기록하는 단계를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  24. 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법으로서,
    데이터를 저장 로그에 첨부하는 단계 - 데이터를 저장 로그에 첨부하는 단계는 비휘발성 저장 매체의 하나 이상의 저장 유닛에 상기 데이터를 기록하는 단계를 포함함 - ;
    상기 비휘발성 저장 매체의 각각의 저장 유닛에 상기 저장 로그에 첨부된 데이터의 식별자들을 결부시키도록(bind) 구성된 전환 층(translation layer)을 제공하는 단계 - 상기 저장 로그에 첨부된 상기 데이터는 상기 비휘발성 저장 매체 상에서 캐싱된 주 저장 시스템의 데이터를 포함하고, 상기 전환 층의 캐시 엔트리들은 상기 주 저장 시스템의 식별자들을 상기 비휘발성 저장 매체 상에서 캐싱된 상기 주 저장 시스템의 데이터를 저장하는 각각의 저장 유닛들에 결부시킴 - ;
    상기 저장 로그 내의 캐싱된 데이터의 연대기적 순서에 따라 상기 주 저장 시스템에 상기 비휘발성 저장 매체 상에서 캐싱된 상기 주 저장 시스템의 데이터를 기록하는 단계
    를 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  25. 제 24항에 있어서, 클라이언트 저장 요청의 식별자를 상기 전환 층의 캐시 엔트리들과 비교함으로써 상기 클라이언트 저장 요청의 식별자에 관련된 데이터가 상기 비휘발성 저장 매체 상에서 캐싱되는지를 결정하는 단계를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  26. 제 25항에 있어서, 상기 클라이언트 저장 요청의 식별자에 관련된 데이터가 상기 비휘발성 저장 매체 상에서 캐싱되지 않는다는 결정에 응답하여, 상기 방법은,
    상기 비휘발성 저장 매체의 하나 이상의 저장 유닛에 상기 클라이언트 저장 요청에 대응하는 데이터를 저장하는 단계; 및
    상기 클라이언트 저장 요청의 논리적 어드레스를 상기 하나 이상의 저장 유닛에 결부시키도록 구성된 상기 전환 층에 캐시 엔트리를 생성하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  27. 제 25항에 있어서, 상기 클라이언트 저장 요청에 관련된 데이터가 상기 비휘발성 저장 매체 상에서 캐싱되지 않는다는 결정에 응답하여, 상기 방법은,
    상기 고체-상태 저장 디바이스의 저장 유닛들 상에 클라이언트 저장 요청에 대응하는 데이터를 저장하는 단계; 및
    상기 클라이언트 저장 요청의 논리적 어드레스를 상기 하나 이상의 저장 유닛에 결부시키기 위하여 상기 전환 층의 기존의 캐시 엔트리를 변형하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  28. 제 27항에 있어서, 상기 캐시 엔트리를 변형하는 단계는,
    상기 기존의 캐시 엔트리를 상기 전환 층의 제 2 캐시 엔트리와 병합하는 단계를 더 포함하고,
    상기 제 2 캐시 엔트리는 상기 주 저장 시스템의 논리적 어드레스 공간 내에 상기 클라이언트 저장 요청의 논리적 어드레스에 근접한 논리적 어드레스와 연관되는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  29. 제 24항에 있어서,
    상기 전환 층으로부터 특정 캐시 엔트리를 삭제하는 단계; 및
    상기 특정 캐시 엔트리에 대응하는 데이터를 제거하라는 클라이언트 저장 요청에 응답하여 상기 특정 캐시 엔트리와 연관된 저장 유닛을 무효로 마킹하는 단계를
    더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  30. 제 24항에 있어서, 특정 논리적 식별자에 대응하는 데이터를 제거하라는 클라이언트 저장 요청에 응답하여 캐시 엔트리를 하나 이상의 캐시 엔트리로 분할하는 단계를 더 포함하고, 상기 하나 이상의 캐시 엔트리는 상기 특정 논리적 식별자에 결부된 저장 유닛들에 대한 참조를 생략하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  31. 제 24항에 있어서,
    제 1 논리적 어드레스, 및 제 2의 불연속적인 논리적 어드레스에 관련된 저장 요청을 수신하는 단계;
    제 1 논리적 어드레스에 대응하는 데이터를 포함하는 저장 유닛들을 참조하는 상기 전환 층의 제 1 캐시 엔트리를 식별하는 단계;
    제 2 논리적 어드레스에 대응하는 데이터를 포함하는 저장 유닛들을 참조하는 상기 전환 층의 제 2 캐시 엔트리를 식별하는 단계; 및
    클라이언트 저장 요청에 응답하여 상기 제 1 캐시 엔트리 및 제 2 캐시 엔트리에 의해 참조된 저장 유닛들 내에 저장된 데이터를 제공하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  32. 제 24항에 있어서,
    상기 고체-상태 저장 디바이스의 저장 분할들과 클라이언트 논리적 어드레스들 사이의 연관들을 포함하는 역방향 인덱스에 액세스하는 단계; 및
    상기 역방향 인덱스를 사용하여 고체-상태 저장 디바이스의 이용가능한 저장 용량의 표시를 제공하는 단계
    를 더 포함하는, 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 방법.
  33. 지령들을 포함하는 컴퓨터 프로그램을 저장한 컴퓨터 판독가능 기록 매체로서,
    상기 지령은 컴퓨터 디바이스가,
    고체-상태 저장 디바이스 상에 수행된 캐시 동작들 및 상기 고체-상태 저장 디바이스의 저장 유닛들에 관련된 공유 메타데이터를 유지하는 동작 - 캐시 동작들에 관련된 상기 공유 메타데이터는 주 저장 시스템의 식별자들을 상기 고체-상태 저장 디바이스의 각각의 저장 유닛들 상에서 캐싱된 상기 주 저장 시스템의 데이터와 연관시키도록 구성되고,
    상기 저장 유닛들에 관련된 공유 메타데이터는 상기 고체-상태 저장 디바이스의 상기 각각의 저장 유닛들의 마모 레벨 및 신뢰도 중 하나 이상을 나타내도록 구성됨 - ;
    상기 고체-상태 저장 디바이스 상에 저장된 캐시를 관리하기 위해 상기 공유 메타데이터에 액세스하는 동작 - 상기 캐시를 관리하는 것은 상기 공유 메타데이터에 의해 표시된 상기 저장 유닛의 상기 마모 레벨 및 신뢰도 중 하나 이상에 기초하여 상기 주 저장 시스템으로의 백업을 위해 상기 고체-상태 저장 디바이스의 저장 유닛을 선택하는 것을 포함함 -
    을 포함하는 동작들을 수행하도록 하는, 컴퓨터 판독가능 기록 매체.
KR1020127006053A 2009-09-08 2010-09-08 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 KR101717644B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US24057309P 2009-09-08 2009-09-08
US61/240,573 2009-09-08
US24096609P 2009-09-09 2009-09-09
US61/240,966 2009-09-09
US37327110P 2010-08-12 2010-08-12
US61/373,271 2010-08-12
PCT/US2010/048174 WO2011031796A2 (en) 2009-09-08 2010-09-08 Apparatus, system, and method for caching data on a solid-state storage device

Publications (2)

Publication Number Publication Date
KR20120090965A KR20120090965A (ko) 2012-08-17
KR101717644B1 true KR101717644B1 (ko) 2017-03-27

Family

ID=43731599

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127006053A KR101717644B1 (ko) 2009-09-08 2010-09-08 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법

Country Status (6)

Country Link
US (1) US8719501B2 (ko)
EP (1) EP2476055B1 (ko)
JP (1) JP5999645B2 (ko)
KR (1) KR101717644B1 (ko)
CN (1) CN102696010B (ko)
WO (1) WO2011031796A2 (ko)

Families Citing this family (218)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193854A (zh) * 2010-03-02 2011-09-21 鸿富锦精密工业(深圳)有限公司 存储设备及其存储容量指示方法
US8712984B2 (en) 2010-03-04 2014-04-29 Microsoft Corporation Buffer pool extension for database server
US9235531B2 (en) 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8458417B2 (en) * 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
US9063728B2 (en) * 2010-03-17 2015-06-23 Apple Inc. Systems and methods for handling hibernation data
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US20110320733A1 (en) * 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
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
US8386717B1 (en) * 2010-09-08 2013-02-26 Symantec Corporation Method and apparatus to free up cache memory space with a pseudo least recently used scheme
US9575973B2 (en) * 2010-11-05 2017-02-21 Atc Logistics & Electronics, Inc. System and method for systematically removing customer personal information from an electronic device
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
CN102651009B (zh) * 2011-02-28 2014-09-24 国际商业机器公司 一种存储系统中检索数据的方法和设备
US8756474B2 (en) * 2011-03-21 2014-06-17 Denso International America, Inc. Method for initiating a refresh operation in a solid-state nonvolatile memory device
KR101467939B1 (ko) 2011-04-26 2014-12-02 엘에스아이 코포레이션 비휘발성 저장부에 대한 가변 오버­프로비저닝
US9141528B2 (en) 2011-05-17 2015-09-22 Sandisk Technologies Inc. Tracking and handling of super-hot data in non-volatile memory systems
US9176864B2 (en) 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
US8868828B2 (en) 2011-05-24 2014-10-21 International Business Machines Corporation Implementing storage adapter performance optimization with cache data/directory mirroring
US8656213B2 (en) * 2011-05-24 2014-02-18 International Business Machines Corporation Implementing storage adapter performance optimization with chained hardware operations and error recovery firmware path
US8886881B2 (en) 2011-05-24 2014-11-11 International Business Machines Corporation Implementing storage adapter performance optimization with parity update footprint mirroring
US8793462B2 (en) 2011-05-24 2014-07-29 International Business Machines Corporation Implementing storage adapter performance optimization with enhanced resource pool allocation
US20120311271A1 (en) * 2011-06-06 2012-12-06 Sanrad, Ltd. Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US8949508B2 (en) * 2011-07-18 2015-02-03 Apple Inc. Non-volatile temporary data handling
US9032269B2 (en) 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
EP2742428B1 (en) 2011-08-12 2016-01-06 Sandisk Enterprise IP LLC Cache management including solid state device virtualization
US8719619B2 (en) 2011-09-20 2014-05-06 International Business Machines Corporation Performance enhancement technique for raids under rebuild
US9092316B2 (en) 2011-10-28 2015-07-28 International Business Machines Corporation Methods and storage devices for managing write operations
US9268701B1 (en) * 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
EP2798500A1 (en) * 2011-12-29 2014-11-05 Memory Technologies LLC Method for erasing data entity in memory module
US10353637B1 (en) * 2011-12-30 2019-07-16 EMC IP Holding Company LLC Managing data storage
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) * 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
WO2013119195A1 (en) * 2012-02-06 2013-08-15 Empire Technology Development Llc Multicore computer system with cache use based adaptive scheduling
US8892811B2 (en) 2012-03-01 2014-11-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing write amplification in a flash memory
US20130238851A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
CN102662606B (zh) * 2012-03-12 2015-07-08 记忆科技(深圳)有限公司 Raid配置信息的处理方法和raid控制器
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9104684B2 (en) 2012-04-04 2015-08-11 International Business Machines Corporation Cache handling in a database system
US20140047210A1 (en) * 2012-08-08 2014-02-13 Lsi Corporation Trim mechanism using multi-level mapping in a solid-state media
US9684670B2 (en) * 2012-06-13 2017-06-20 Microsoft Technology Licensing, Llc Moving shared files
CN102789368B (zh) * 2012-06-21 2015-10-21 记忆科技(深圳)有限公司 一种固态硬盘及其数据管理方法、系统
US9141544B2 (en) * 2012-06-26 2015-09-22 Qualcomm Incorporated Cache memory with write through, no allocate mode
US9442858B2 (en) 2012-07-13 2016-09-13 Ianywhere Solutions, Inc. Solid state drives as a persistent cache for database systems
US9274963B2 (en) * 2012-07-20 2016-03-01 International Business Machines Corporation Cache replacement for shared memory caches
CN103577342B (zh) * 2012-07-25 2018-04-17 慧荣科技股份有限公司 管理闪存中所储存的数据的方法及相关记忆装置与控制器
TWI485560B (zh) * 2012-08-31 2015-05-21 Ibm 資料分析系統、快取裝置、與資料處理方法
US10095705B2 (en) 2012-09-24 2018-10-09 Microsoft Technology Licensing, Llc Integrated data retention policy for solid state and asymmetric access
US9286219B1 (en) * 2012-09-28 2016-03-15 Emc Corporation System and method for cache management
US9092364B2 (en) 2012-10-04 2015-07-28 International Business Machines Corporation Implementing storage adapter performance control
US9251067B1 (en) 2012-11-01 2016-02-02 Western Digital Technologies, Inc. High speed trim command processing in a solid state drive
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US8959281B1 (en) * 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
CN102999401B (zh) * 2012-11-30 2015-04-29 华为技术有限公司 一种平均备份数据的方法和装置
US9146688B2 (en) 2012-12-05 2015-09-29 SanDisk Technologies, Inc. Advanced groomer for storage array
US9417999B2 (en) * 2012-12-17 2016-08-16 International Business Machines Corporation Write peformance in solid state storage by recognizing copy source to target operations and only storing updates instead of entire block
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
CN103797770B (zh) * 2012-12-31 2015-12-02 华为技术有限公司 一种共享存储资源的方法和系统
WO2014101218A1 (zh) 2012-12-31 2014-07-03 华为技术有限公司 一种计算存储融合的集群系统
WO2014118822A1 (en) * 2013-01-31 2014-08-07 Hitachi, Ltd. Storage system and cache control method
US9239682B2 (en) * 2013-02-27 2016-01-19 Vmware, Inc. I/O hint framework for Server Flash Cache
US20140258591A1 (en) * 2013-03-07 2014-09-11 Kabushiki Kaisha Toshiba Data storage and retrieval in a hybrid drive
US9165009B1 (en) * 2013-03-14 2015-10-20 Emc Corporation Lightweight appliance for content storage
US20140281124A1 (en) * 2013-03-14 2014-09-18 Bryan E. Veal System and method for caching a storage medium
US9552432B1 (en) * 2013-03-14 2017-01-24 EMC IP Holding Company LLC Lightweight appliance for content retrieval
US10180951B2 (en) * 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US9740623B2 (en) 2013-03-15 2017-08-22 Intel Corporation Object liveness tracking for use in processing device cache
US9858052B2 (en) * 2013-03-21 2018-01-02 Razer (Asia-Pacific) Pte. Ltd. Decentralized operating system
KR102025240B1 (ko) 2013-04-01 2019-11-04 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TW201441817A (zh) * 2013-04-23 2014-11-01 Hon Hai Prec Ind Co Ltd 資料緩存系統及方法
CN104216796B (zh) * 2013-06-04 2018-02-09 北京联想核芯科技有限公司 一种数据备份、恢复方法及电子设备
WO2014209984A1 (en) * 2013-06-25 2014-12-31 Marvell World Trade Ltd. Adaptive cache memory controller
US20150019822A1 (en) * 2013-07-11 2015-01-15 Lsi Corporation System for Maintaining Dirty Cache Coherency Across Reboot of a Node
US20150032982A1 (en) * 2013-07-26 2015-01-29 Fusion-Io, Inc. Systems and methods for storage consistency
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
JP6406254B2 (ja) * 2013-07-30 2018-10-17 日本電気株式会社 ストレージ装置、データアクセス方法およびデータアクセスプログラム
CN103440207B (zh) * 2013-07-31 2017-02-22 北京智谷睿拓技术服务有限公司 缓存方法及装置
CN103473184B (zh) * 2013-08-01 2016-08-10 记忆科技(深圳)有限公司 文件系统的缓存方法及系统
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
GB201315435D0 (en) 2013-08-30 2013-10-16 Ibm Cache management in a computerized system
US9984000B2 (en) * 2013-09-06 2018-05-29 Lyve Minds, Inc. Electronic device data distribution
US9268502B2 (en) 2013-09-16 2016-02-23 Netapp, Inc. Dense tree volume metadata organization
KR102116702B1 (ko) * 2013-09-27 2020-05-29 삼성전자 주식회사 데이터 미러링 제어 장치 및 방법
US10019352B2 (en) * 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
JP6299169B2 (ja) * 2013-11-14 2018-03-28 富士通株式会社 ストレージ装置、ストレージ装置の制御方法、及びストレージ装置の制御プログラム
KR102103543B1 (ko) * 2013-11-28 2020-05-29 삼성전자 주식회사 내부 하드웨어 필터를 포함하는 일체형 데이터 저장 장치, 이의 동작 방법, 및 상기 데이터 저장 장치를 포함하는 시스템
US9436606B2 (en) * 2014-01-02 2016-09-06 Qualcomm Incorporated System and method to defragment a memory
US9208086B1 (en) * 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US9323615B2 (en) * 2014-01-31 2016-04-26 Google Inc. Efficient data reads from distributed storage systems
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
CN104881333B (zh) 2014-02-27 2018-03-20 国际商业机器公司 一种存储系统及其使用的方法
US9646012B1 (en) * 2014-03-06 2017-05-09 Veritas Technologies Llc Caching temporary data in solid state storage devices
US10019323B1 (en) * 2014-03-25 2018-07-10 EMC IP Holding Company LLC Method and system for container data recovery in a storage system
US10108622B2 (en) 2014-03-26 2018-10-23 International Business Machines Corporation Autonomic regulation of a volatile database table attribute
KR102318478B1 (ko) 2014-04-21 2021-10-27 삼성전자주식회사 스토리지 컨트롤러, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
CN106133707B (zh) * 2014-04-28 2020-03-20 慧与发展有限责任合伙企业 高速缓存管理
US10114576B2 (en) * 2014-07-24 2018-10-30 Sandisk Technologies Llc Storage device metadata synchronization
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US10678880B2 (en) * 2014-08-07 2020-06-09 Greenman Gaming Limited Digital key distribution mechanism
US9244858B1 (en) * 2014-08-25 2016-01-26 Sandisk Technologies Inc. System and method of separating read intensive addresses from non-read intensive addresses
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US10152412B2 (en) * 2014-09-23 2018-12-11 Oracle International Corporation Smart flash cache logger
US10650027B2 (en) * 2014-11-05 2020-05-12 International Business Machines Corporation Access accelerator for active HBase database regions
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9619158B2 (en) 2014-12-17 2017-04-11 International Business Machines Corporation Two-level hierarchical log structured array architecture with minimized write amplification
US9606734B2 (en) 2014-12-22 2017-03-28 International Business Machines Corporation Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
US9542328B2 (en) 2015-01-26 2017-01-10 International Business Machines Corporation Dynamically controlling a file system write cache
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
US9892044B1 (en) * 2015-01-30 2018-02-13 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction
US9892045B1 (en) * 2015-01-30 2018-02-13 EMC IP Holding Company LLC Methods to select segments of an evicted cache unit for reinsertion into the cache
US9921963B1 (en) * 2015-01-30 2018-03-20 EMC IP Holding Company LLC Method to decrease computation for cache eviction using deferred calculations
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
KR101643087B1 (ko) * 2015-03-06 2016-07-26 한양대학교 산학협력단 메모리 제어 방법 및 메모리 제어 장치
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10146616B1 (en) * 2015-03-31 2018-12-04 EMC IP Holding Company LLC Cache based recovery of corrupted or missing data
US9483408B1 (en) * 2015-04-09 2016-11-01 International Business Machines Corporation Deferred metadata initialization
CN104765656A (zh) * 2015-04-23 2015-07-08 浪潮电子信息产业股份有限公司 一种冷数据的备份方法及装置
US9811462B2 (en) 2015-04-30 2017-11-07 Toshiba Memory Corporation Memory system executing garbage collection
KR102397582B1 (ko) * 2015-06-22 2022-05-13 삼성전자주식회사 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 이의 작동 방법
KR20170001235A (ko) * 2015-06-26 2017-01-04 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US9652405B1 (en) * 2015-06-30 2017-05-16 EMC IP Holding Company LLC Persistence of page access heuristics in a memory centric architecture
JP6334824B2 (ja) * 2015-07-16 2018-05-30 東芝メモリ株式会社 メモリコントローラ、情報処理装置および処理装置
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
CN105045685A (zh) * 2015-08-04 2015-11-11 浪潮电子信息产业股份有限公司 缓存数据的备份方法及装置、缓存数据的恢复方法及装置
KR20170051563A (ko) * 2015-10-29 2017-05-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9971692B2 (en) 2015-11-17 2018-05-15 International Business Machines Corporation Supporting concurrent operations at fine granularity in a caching framework
US10095595B2 (en) * 2015-11-17 2018-10-09 International Business Machines Corporation Instant recovery in a multi-grained caching framework
US9916249B2 (en) * 2015-11-17 2018-03-13 International Business Machines Corporation Space allocation in a multi-grained writeback cache
US9817757B2 (en) * 2015-11-17 2017-11-14 International Business Machines Corporation Scalable metadata management in a multi-grained caching framework
US9965390B2 (en) * 2015-11-17 2018-05-08 International Business Machines Corporation Reducing defragmentation in a multi-grained writeback cache
US10108547B2 (en) 2016-01-06 2018-10-23 Netapp, Inc. High performance and memory efficient metadata caching
US10402101B2 (en) 2016-01-07 2019-09-03 Red Hat, Inc. System and method for using persistent memory to accelerate write performance
US20170220476A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Systems and Methods for Data Caching in Storage Array Systems
US10001924B2 (en) 2016-03-07 2018-06-19 HGST Netherlands B.V. Efficient and dynamically sized reverse map to handle variable size data
US10437521B2 (en) * 2016-03-25 2019-10-08 Netapp, Inc. Consistent method of indexing file system information
US10191850B2 (en) * 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10178152B2 (en) 2016-04-29 2019-01-08 Splunk Inc. Central repository for storing configuration files of a distributed computer system
CN107436727A (zh) * 2016-05-26 2017-12-05 中兴通讯股份有限公司 精简卷的存储空间管理方法和装置
TWI615705B (zh) * 2016-05-31 2018-02-21 瑞昱半導體股份有限公司 於電腦系統中重置記憶體的方法
US10996989B2 (en) 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
US10754772B2 (en) * 2016-06-14 2020-08-25 Sap Se Reclamation of in-memory database memory resources
US10430081B2 (en) * 2016-06-28 2019-10-01 Netapp, Inc. Methods for minimizing fragmentation in SSD within a storage system and devices thereof
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10698732B2 (en) * 2016-07-19 2020-06-30 Sap Se Page ranking in operating system virtual pages in hybrid memory systems
US10474557B2 (en) 2016-07-19 2019-11-12 Sap Se Source code profiling for line-level latency and energy consumption estimation
US10452539B2 (en) 2016-07-19 2019-10-22 Sap Se Simulator for enterprise-scale simulations on hybrid main memory systems
US10783146B2 (en) 2016-07-19 2020-09-22 Sap Se Join operations in hybrid main memory systems
US10540098B2 (en) 2016-07-19 2020-01-21 Sap Se Workload-aware page management for in-memory databases in hybrid main memory systems
US10437798B2 (en) 2016-07-19 2019-10-08 Sap Se Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems
US10387127B2 (en) 2016-07-19 2019-08-20 Sap Se Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases
US10791172B2 (en) 2016-07-22 2020-09-29 Tinker Pte. Ltd. Systems and methods for interacting with nearby people and devices
US20180052779A1 (en) * 2016-08-19 2018-02-22 Advanced Micro Devices, Inc. Data cache region prefetcher
US10204045B2 (en) * 2016-08-30 2019-02-12 International Business Machines Corporation Data file handling in a volatile memory
US10061524B2 (en) * 2016-09-01 2018-08-28 International Business Machines Corporation Wear-leveling of memory devices
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
CN106528608B (zh) * 2016-09-27 2022-07-01 中国电力科学研究院 一种云架构下的电网gis数据冷热存储方法和系统
US10540102B2 (en) * 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
CN106502592A (zh) * 2016-10-26 2017-03-15 郑州云海信息技术有限公司 固态硬盘缓存块回收方法及系统
US10402345B2 (en) * 2016-10-28 2019-09-03 Intel Corporation Deferred discard in tile-based rendering
US10592115B1 (en) * 2016-11-30 2020-03-17 EMC IP Holding Company LLC Cache management system and method
US10162756B2 (en) * 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US10740251B2 (en) * 2017-01-20 2020-08-11 Seagate Technology Llc Hybrid drive translation layer
US10635581B2 (en) 2017-01-20 2020-04-28 Seagate Technology Llc Hybrid drive garbage collection
US10430285B2 (en) * 2017-02-17 2019-10-01 International Business Machines Corporation Backing up metadata
US9998147B1 (en) * 2017-02-27 2018-06-12 International Business Machines Corporation Method for using write intents in a distributed storage network
US10650885B2 (en) 2017-03-07 2020-05-12 Alibaba Group Holding Limited Extending flash storage lifespan and data quality with data retention protection
CN108664214B (zh) * 2017-03-31 2023-05-16 北京忆恒创源科技股份有限公司 用于固态存储设备的分布式缓存的掉电处理方法与装置
CN115129618A (zh) * 2017-04-17 2022-09-30 伊姆西Ip控股有限责任公司 用于优化数据缓存的方法和设备
US10474587B1 (en) 2017-04-27 2019-11-12 EMC IP Holding Company LLC Smart weighted container data cache eviction
US10423533B1 (en) * 2017-04-28 2019-09-24 EMC IP Holding Company LLC Filtered data cache eviction
US10657069B2 (en) 2017-05-15 2020-05-19 Seagate Technology Llc Fine-grained cache operations on data volumes
CN107221351B (zh) * 2017-05-27 2020-06-02 华中科技大学 一种固态盘系统中纠错码的优化处理方法及其应用
US10915527B2 (en) * 2017-06-07 2021-02-09 International Business Machines Corporation Parallel search of a partitioned data set extended (PDSE) in parallel
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
US11010379B2 (en) 2017-08-15 2021-05-18 Sap Se Increasing performance of in-memory databases using re-ordered query execution plans
US10681137B2 (en) * 2017-12-22 2020-06-09 Samsung Electronics Co., Ltd. System and method for network-attached storage devices
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
US10705969B2 (en) * 2018-01-19 2020-07-07 Samsung Electronics Co., Ltd. Dedupe DRAM cache
WO2019155241A1 (en) * 2018-02-12 2019-08-15 Google Llc Caching using machine learned predictions
CN109213450B (zh) * 2018-09-10 2021-08-31 郑州云海信息技术有限公司 一种基于闪存阵列的关联元数据删除方法、装置及设备
CN109408496A (zh) * 2018-09-18 2019-03-01 沈文策 一种减少数据冗余的方法及装置
US10831378B2 (en) * 2018-09-24 2020-11-10 International Business Machines Corporation Optimizing data access in a DSN memory for wear leveling
US10564864B1 (en) 2018-10-04 2020-02-18 Dell Products L.P. Method for estimating data retention time in a solid state drive
US10949346B2 (en) 2018-11-08 2021-03-16 International Business Machines Corporation Data flush of a persistent memory cache or buffer
US11232039B2 (en) * 2018-12-10 2022-01-25 Advanced Micro Devices, Inc. Cache for storing regions of data
CN110046132B (zh) * 2019-04-15 2022-04-22 苏州浪潮智能科技有限公司 一种元数据请求处理方法、装置、设备及可读存储介质
US11068455B2 (en) * 2019-04-26 2021-07-20 EMC IP Holding Company LLC Mapper tree with super leaf nodes
US11163500B2 (en) * 2019-04-26 2021-11-02 International Business Machines Corporation Caching files in a directory
US11494338B2 (en) 2019-04-26 2022-11-08 International Business Machines Corporation Caching files in a directory
US11036594B1 (en) 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
CN112306378B (zh) * 2019-08-01 2024-04-09 兆易创新科技集团股份有限公司 用户数据搬移的恢复方法、装置、电子设备及存储介质
CN111026331A (zh) * 2019-11-28 2020-04-17 深信服科技股份有限公司 请求响应方法、装置、设备及计算机可读存储介质
CN114443268A (zh) * 2020-10-31 2022-05-06 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质
US11609857B2 (en) 2020-12-04 2023-03-21 Micron Technology, Inc. Identification and caching of frequent read disturb aggressors
US11699498B2 (en) 2020-12-04 2023-07-11 Micron Technology, Inc. Managing probabilistic data integrity scan intervals
US11409599B2 (en) * 2020-12-04 2022-08-09 Micron Technology, Inc. Managing probabilistic data integrity scans in workloads with localized read patterns
US11467737B2 (en) 2020-12-04 2022-10-11 Micron Technology, Inc. Reducing probabilistic data integrity scan collisions
CN113111014B (zh) * 2021-04-07 2023-01-06 山东英信计算机技术有限公司 缓存中非热点数据的清理方法、装置、设备及存储介质
US11481134B1 (en) * 2021-05-24 2022-10-25 Sap Se Adaptive caching for hybrid columnar databases with heterogeneous page sizes
US11656792B2 (en) * 2021-06-29 2023-05-23 International Business Machines Corporation Mirroring data in write caches of a controller of a non-volatile memory
US11494303B1 (en) 2021-09-29 2022-11-08 EMC IP Holding Company LLC Data storage system with adaptive, memory-efficient cache flushing structure
CN113868192B (zh) * 2021-12-03 2022-04-08 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储系统
US11934706B2 (en) * 2021-12-22 2024-03-19 Western Digital Technologies, Inc. Smart relocation scan optimization
CN114579596B (zh) * 2022-05-06 2022-09-06 达而观数据(成都)有限公司 一种实时更新搜索引擎索引数据的方法及系统
CN115480697A (zh) * 2022-07-29 2022-12-16 天翼云科技有限公司 数据处理方法、装置、计算机设备及存储介质
CN116303586B (zh) * 2022-12-09 2024-01-30 中电云计算技术有限公司 一种基于多级b+tree的元数据缓存淘汰方法

Family Cites Families (343)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5247658A (en) 1989-10-31 1993-09-21 Microsoft Corporation Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5261068A (en) 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5291496A (en) 1990-10-18 1994-03-01 The United States Of America As Represented By The United States Department Of Energy Fault-tolerant corrector/detector chip for high-speed data processing
US5325509A (en) 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
US5313475A (en) 1991-10-31 1994-05-17 International Business Machines Corporation ECC function with self-contained high performance partial write or read/modify/write and parity look-ahead interface scheme
US5469555A (en) 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5596736A (en) 1992-07-22 1997-01-21 Fujitsu Limited Data transfers to a backing store of a dynamically mapped data storage system in which data has nonsequential logical addresses
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5845329A (en) 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
JPH06243042A (ja) * 1993-02-19 1994-09-02 Hitachi Ltd 記憶制御装置
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP2784440B2 (ja) 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
CA2121852A1 (en) 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5499354A (en) 1993-05-19 1996-03-12 International Business Machines Corporation Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders
US5682497A (en) 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5535399A (en) 1993-09-30 1996-07-09 Quantum Corporation Solid state disk drive unit having on-board backup non-volatile memory
JPH086854A (ja) 1993-12-23 1996-01-12 Unisys Corp アウトボードファイルキャッシュ外部処理コンプレックス
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
US5559988A (en) 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5553261A (en) 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5696917A (en) 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5504882A (en) 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
DE19540915A1 (de) 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5586291A (en) 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5651133A (en) 1995-02-01 1997-07-22 Hewlett-Packard Company Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
EP0826181A4 (en) * 1995-04-11 2005-02-09 Kinetech Inc IDENTIFYING DATA IN A DATA PROCESSING SYSTEM
US5682499A (en) 1995-06-06 1997-10-28 International Business Machines Corporation Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD)
DE69615278T2 (de) 1995-06-06 2002-06-27 Hewlett Packard Co SDRAM-Datenzuweisungsanordnung und -verfahren
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5930815A (en) 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5734861A (en) 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
US5787486A (en) 1995-12-15 1998-07-28 International Business Machines Corporation Bus protocol for locked cycle cache hit
US5757567A (en) 1996-02-08 1998-05-26 International Business Machines Corporation Method and apparatus for servo control with high efficiency gray code for servo track ID
US6385710B1 (en) 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5960462A (en) 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
TW349196B (en) 1996-10-18 1999-01-01 Ibm Cached synchronous DRAM architecture having a mode register programmable cache policy
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6279069B1 (en) 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
US5802602A (en) 1997-01-17 1998-09-01 Intel Corporation Method and apparatus for performing reads of related data from a set-associative cache memory
US6073232A (en) 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
JP3459868B2 (ja) 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6418478B1 (en) 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6567889B1 (en) 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US5957158A (en) 1998-05-11 1999-09-28 Automatic Switch Company Visual position indicator
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6507911B1 (en) 1998-07-22 2003-01-14 Entrust Technologies Limited System and method for securely deleting plaintext data
US6209088B1 (en) 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US7233977B2 (en) 1998-12-18 2007-06-19 Emc Corporation Messaging mechanism employing mailboxes for inter processor communications
US6629112B1 (en) 1998-12-31 2003-09-30 Nortel Networks Limited Resource management for CORBA-based applications
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
JP2000259525A (ja) 1999-03-10 2000-09-22 Nec Corp 通信プロトコルにおける応答返却方法および通信制御装置
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
KR100330164B1 (ko) 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US7934074B2 (en) 1999-08-04 2011-04-26 Super Talent Electronics Flash module with plane-interleaved sequential writes to restricted-write flash chips
US6336174B1 (en) 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
KR100577380B1 (ko) 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
ATE247296T1 (de) 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
AU2746001A (en) 1999-10-25 2001-05-08 Infolibria, Inc. Fast indexing of web objects
US8171204B2 (en) 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
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
US6671757B1 (en) 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6785835B2 (en) 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6240040B1 (en) 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6675349B1 (en) 2000-05-11 2004-01-06 International Business Machines Corporation Error correction coding of data blocks with included parity bits
US6779094B2 (en) 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
WO2002001365A2 (en) 2000-06-23 2002-01-03 Intel Corporation Non-volatile cache
US6813686B1 (en) 2000-06-27 2004-11-02 Emc Corporation Method and apparatus for identifying logical volumes in multiple element computer storage domains
US6981070B1 (en) 2000-07-12 2005-12-27 Shun Hang Luk Network storage device having solid-state non-volatile memory
US6658438B1 (en) 2000-08-14 2003-12-02 Matrix Semiconductor, Inc. Method for deleting stored digital data from write-once memory device
US6404647B1 (en) 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US6549987B1 (en) 2000-11-16 2003-04-15 Intel Corporation Cache structure for storing variable length data
US20020154633A1 (en) 2000-11-22 2002-10-24 Yeshik Shin Communications architecture for storage-based devices
US20020069318A1 (en) 2000-12-01 2002-06-06 Chow Yan Chiew Real time application accelerator and method of operating the same
US6976060B2 (en) 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
US20020103819A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation Technique for stabilizing data in a non-log based information storage and retrieval system
US7013376B2 (en) 2000-12-20 2006-03-14 Hewlett-Packard Development Company, L.P. Method and system for data block sparing in a solid-state storage device
KR100365725B1 (ko) 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
KR100708475B1 (ko) 2001-01-08 2007-04-18 삼성전자주식회사 펑쳐링된 패리티심벌을 복원하는 터보디코더용 프리디코더 및 터보코드의 복원방법
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
AU2002305315A1 (en) 2001-05-08 2002-11-18 International Business Machines Corporation 8b/10b encoding and decoding for high speed applications
US6731447B2 (en) 2001-06-04 2004-05-04 Xerox Corporation Secure data file erasure
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US6839808B2 (en) 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6785776B2 (en) 2001-07-26 2004-08-31 International Business Machines Corporation DMA exclusive cache state providing a fully pipelined input/output DMA write mechanism
US7275135B2 (en) 2001-08-31 2007-09-25 Intel Corporation Hardware updated metadata for non-volatile mass storage cache
US20030061296A1 (en) 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6892264B2 (en) 2001-10-05 2005-05-10 International Business Machines Corporation Storage area network methods and apparatus for associating a logical identification with a physical identification
US20030093741A1 (en) 2001-11-14 2003-05-15 Cenk Argon Parallel decoder for product codes
US6715046B1 (en) 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7013379B1 (en) 2001-12-10 2006-03-14 Incipient, Inc. I/O primitives
US7173929B1 (en) 2001-12-10 2007-02-06 Incipient, Inc. Fast path for performing data operations
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
TWI257085B (en) 2002-01-21 2006-06-21 Koninkl Philips Electronics Nv Method of encoding and decoding
JP4154893B2 (ja) 2002-01-23 2008-09-24 株式会社日立製作所 ネットワークストレージ仮想化方法
US20030145230A1 (en) 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7533214B2 (en) 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7085879B2 (en) 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7010662B2 (en) 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7562089B2 (en) 2002-06-26 2009-07-14 Seagate Technology Llc Systems and methods for storing information to allow users to manage files
US7082495B2 (en) 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
JP4001516B2 (ja) 2002-07-05 2007-10-31 富士通株式会社 縮退制御装置及び方法
US7051152B1 (en) 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
KR100505638B1 (ko) 2002-08-28 2005-08-03 삼성전자주식회사 워킹 콘텍스트 저장 및 복구 장치 및 방법
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7171536B2 (en) 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US7035974B2 (en) 2002-11-06 2006-04-25 Synology Inc. RAID-5 disk having cache memory implemented using non-volatile RAM
US6996676B2 (en) 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7121639B2 (en) 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US6957158B1 (en) 2002-12-23 2005-10-18 Power Measurement Ltd. High density random access memory in an intelligent electric device
KR100502608B1 (ko) 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
US20040148360A1 (en) 2003-01-24 2004-07-29 Hewlett-Packard Development Company Communication-link-attached persistent memory device
US6959369B1 (en) 2003-03-06 2005-10-25 International Business Machines Corporation Method, system, and program for data backup
US7076723B2 (en) 2003-03-14 2006-07-11 Quantum Corporation Error correction codes
US8041878B2 (en) 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7197657B1 (en) 2003-04-03 2007-03-27 Advanced Micro Devices, Inc. BMC-hosted real-time clock and non-volatile RAM replacement
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
JP2004348818A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US7047366B1 (en) 2003-06-17 2006-05-16 Emc Corporation QOS feature knobs
US20040268359A1 (en) 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7149947B1 (en) 2003-09-04 2006-12-12 Emc Corporation Method of and system for validating an error correction code and parity information associated with a data word
US7483974B2 (en) 2003-09-24 2009-01-27 Intel Corporation Virtual management controller to coordinate processing blade management in a blade server environment
US7487235B2 (en) 2003-09-24 2009-02-03 Dell Products L.P. Dynamically varying a raid cache policy in order to optimize throughput
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
TWI238325B (en) 2003-10-09 2005-08-21 Quanta Comp Inc Apparatus of remote server console redirection
US7096321B2 (en) 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
WO2005065084A2 (en) 2003-11-13 2005-07-21 Commvault Systems, Inc. System and method for providing encryption in pipelined storage operations in a storage network
JP4287433B2 (ja) 2003-11-18 2009-07-01 パナソニック株式会社 ファイル記録装置
US7350127B2 (en) 2003-12-12 2008-03-25 Hewlett-Packard Development Company, L.P. Error correction method and system
US20050149819A1 (en) 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7500000B2 (en) 2003-12-17 2009-03-03 International Business Machines Corporation Method and system for assigning or creating a resource
US20050149618A1 (en) 2003-12-23 2005-07-07 Mobile Action Technology Inc. System and method of transmitting electronic files over to a mobile phone
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7328307B2 (en) 2004-01-22 2008-02-05 Tquist, Llc Method and apparatus for improving update performance of non-uniform access time persistent storage media
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7130957B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system structure for storing relational cache metadata
US7130956B2 (en) * 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US7231590B2 (en) 2004-02-11 2007-06-12 Microsoft Corporation Method and apparatus for visually emphasizing numerical data contained within an electronic document
JP2005250938A (ja) 2004-03-05 2005-09-15 Hitachi Ltd 記憶制御システム及び方法
US7281192B2 (en) 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7360015B2 (en) 2004-05-04 2008-04-15 Intel Corporation Preventing storage of streaming accesses in a cache
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7512830B2 (en) 2004-05-14 2009-03-31 International Business Machines Corporation Management module failover across multiple blade center chassis
US20050257017A1 (en) 2004-05-14 2005-11-17 Hideki Yagi Method and apparatus to erase hidden memory in a memory card
US7831561B2 (en) 2004-05-18 2010-11-09 Oracle International Corporation Automated disk-oriented backups
US7590522B2 (en) 2004-06-14 2009-09-15 Hewlett-Packard Development Company, L.P. Virtual mass storage device for server management information
US7231497B2 (en) * 2004-06-15 2007-06-12 Intel Corporation Merging write-back and write-through cache policies
US7447847B2 (en) 2004-07-19 2008-11-04 Micron Technology, Inc. Memory device trims
US7395384B2 (en) 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8407396B2 (en) 2004-07-30 2013-03-26 Hewlett-Packard Development Company, L.P. Providing block data access for an operating system using solid-state memory
US7203815B2 (en) 2004-07-30 2007-04-10 International Business Machines Corporation Multi-level page cache for enhanced file system performance via read ahead
US7664239B2 (en) 2004-08-09 2010-02-16 Cox Communications, Inc. Methods and computer-readable media for managing and configuring options for the real-time notification and disposition of voice services in a cable services network
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
JPWO2006025322A1 (ja) 2004-08-30 2008-05-08 松下電器産業株式会社 記録装置
US20060075057A1 (en) 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
JP4648674B2 (ja) 2004-10-01 2011-03-09 株式会社日立製作所 記憶制御装置、記憶制御システム及び記憶制御方法
US7603532B2 (en) 2004-10-15 2009-10-13 Netapp, Inc. System and method for reclaiming unused space from a thinly provisioned data container
US8131969B2 (en) 2004-10-20 2012-03-06 Seagate Technology Llc Updating system configuration information
JP2006127028A (ja) 2004-10-27 2006-05-18 Hitachi Ltd 記憶システム及び記憶制御装置
US7310711B2 (en) 2004-10-29 2007-12-18 Hitachi Global Storage Technologies Netherlands B.V. Hard disk drive with support for atomic transactions
US7873782B2 (en) 2004-11-05 2011-01-18 Data Robotics, Inc. Filesystem-aware block storage system, apparatus, and method
US20060106968A1 (en) 2004-11-15 2006-05-18 Wooi Teoh Gary C Intelligent platform management bus switch system
EP1839154A4 (en) 2004-12-06 2008-07-09 Teac Aerospace Technologies In SYSTEM AND METHOD FOR ERASING NON-VOLATILE RECORDING MEDIUM
US8074041B2 (en) 2004-12-09 2011-12-06 International Business Machines Corporation Apparatus, system, and method for managing storage space allocation
US7581118B2 (en) 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
KR100684887B1 (ko) 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20060136657A1 (en) 2004-12-22 2006-06-22 Intel Corporation Embedding a filesystem into a non-volatile device
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7246195B2 (en) 2004-12-30 2007-07-17 Intel Corporation Data storage management for flash memory devices
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060190552A1 (en) 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7254686B2 (en) 2005-03-31 2007-08-07 International Business Machines Corporation Switching between mirrored and non-mirrored volumes
US7620773B2 (en) 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US20060236061A1 (en) 2005-04-18 2006-10-19 Creek Path Systems Systems and methods for adaptively deriving storage policy and configuration rules
US7130960B1 (en) 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US20060265636A1 (en) 2005-05-19 2006-11-23 Klaus Hummler Optimized testing of on-chip error correction circuit
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
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
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7984084B2 (en) 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
KR100739722B1 (ko) 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7580287B2 (en) 2005-09-01 2009-08-25 Micron Technology, Inc. Program and read trim setting
US20070061508A1 (en) 2005-09-13 2007-03-15 Quantum Corporation Data storage cartridge with built-in tamper-resistant clock
US7437510B2 (en) 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7516267B2 (en) 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US7366808B2 (en) 2005-11-23 2008-04-29 Hitachi, Ltd. System, method and apparatus for multiple-protocol-accessible OSD storage subsystem
US8112513B2 (en) 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US7526614B2 (en) 2005-11-30 2009-04-28 Red Hat, Inc. Method for tuning a cache
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
US20070143567A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Methods for data alignment in non-volatile memories with a directly mapped file storage system
US20070143566A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070156998A1 (en) 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US7831783B2 (en) 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US20070150663A1 (en) 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
KR100781520B1 (ko) * 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
WO2007097026A1 (ja) 2006-02-27 2007-08-30 Fujitsu Limited キャッシュ制御装置およびキャッシュ制御プログラム
US20070208790A1 (en) 2006-03-06 2007-09-06 Reuter James M Distributed data-storage system
US20070245217A1 (en) 2006-03-28 2007-10-18 Stmicroelectronics S.R.L. Low-density parity check decoding
US7840398B2 (en) 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US7395377B2 (en) 2006-04-20 2008-07-01 International Business Machines Corporation Method and system for adaptive back-off and advance for non-volatile storage (NVS) occupancy level management
JP4836647B2 (ja) * 2006-04-21 2011-12-14 株式会社東芝 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
US7636829B2 (en) 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
US20070261030A1 (en) 2006-05-04 2007-11-08 Gaurav Wadhwa Method and system for tracking and prioritizing applications
US20070271468A1 (en) 2006-05-05 2007-11-22 Mckenney Paul E Method and Apparatus for Maintaining Data Integrity When Switching Between Different Data Protection Methods
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7853958B2 (en) 2006-06-28 2010-12-14 Intel Corporation Virtual machine monitor management from a management service processor in the host processing platform
US7970989B2 (en) * 2006-06-30 2011-06-28 Intel Corporation Write ordering on disk cached platforms
US7721059B2 (en) 2006-07-06 2010-05-18 Nokia Corporation Performance optimization in solid-state media
US20080052377A1 (en) 2006-07-11 2008-02-28 Robert Light Web-Based User-Dependent Customer Service Interaction with Co-Browsing
US7594144B2 (en) 2006-08-14 2009-09-22 International Business Machines Corporation Handling fatal computer hardware errors
US20080043769A1 (en) 2006-08-16 2008-02-21 Tyan Computer Corporation Clustering system and system management architecture thereof
US7676625B2 (en) 2006-08-23 2010-03-09 Sun Microsystems, Inc. Cross-coupled peripheral component interconnect express switch
JP4932390B2 (ja) 2006-08-31 2012-05-16 株式会社日立製作所 仮想化システム及び領域割当て制御方法
US7870306B2 (en) 2006-08-31 2011-01-11 Cisco Technology, Inc. Shared memory message switch and cache
JP4452261B2 (ja) 2006-09-12 2010-04-21 株式会社日立製作所 ストレージシステムの論理ボリューム管理方法、論理ボリューム管理プログラム、及びストレージシステム
JP4942446B2 (ja) 2006-10-11 2012-05-30 株式会社日立製作所 ストレージ装置及びその制御方法
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7685178B2 (en) 2006-10-31 2010-03-23 Netapp, Inc. System and method for examining client generated content stored on a data container exported by a storage system
US20080120469A1 (en) 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
US7904647B2 (en) 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US7783830B2 (en) * 2006-11-29 2010-08-24 Seagate Technology Llc Solid state device pattern for non-solid state storage media
JP4923990B2 (ja) 2006-12-04 2012-04-25 株式会社日立製作所 フェイルオーバ方法、およびその計算機システム。
CN101622594B (zh) 2006-12-06 2013-03-13 弗森-艾奥公司 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法
US8151082B2 (en) 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
TW200825762A (en) 2006-12-06 2008-06-16 Inventec Corp Apparatus and method for computer management
US20080140737A1 (en) 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US7930425B2 (en) 2006-12-11 2011-04-19 International Business Machines Corporation Method of effectively establishing and maintaining communication linkages with a network interface controller
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7913051B1 (en) 2006-12-22 2011-03-22 Emc Corporation Methods and apparatus for increasing the storage capacity of a zone of a storage system
JP4813385B2 (ja) 2007-01-29 2011-11-09 株式会社日立製作所 ストレージシステムの複数の論理リソースを制御する制御装置
US20080201535A1 (en) 2007-02-21 2008-08-21 Hitachi, Ltd. Method and Apparatus for Provisioning Storage Volumes
US20080205286A1 (en) 2007-02-26 2008-08-28 Inventec Corporation Test system using local loop to establish connection to baseboard management control and method therefor
US20080229046A1 (en) * 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
US20080229045A1 (en) 2007-03-16 2008-09-18 Lsi Logic Corporation Storage system provisioning architecture
US9152349B2 (en) 2007-03-23 2015-10-06 Emc Corporation Automated information life-cycle management with thin provisioning
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20080243966A1 (en) 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US9207876B2 (en) 2007-04-19 2015-12-08 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8429677B2 (en) 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US7853759B2 (en) 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
JP2008276646A (ja) 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法
US8195806B2 (en) * 2007-07-16 2012-06-05 International Business Machines Corporation Managing remote host visibility in a proxy server environment
US20090070526A1 (en) 2007-09-12 2009-03-12 Tetrick R Scott Using explicit disk block cacheability attributes to enhance i/o caching efficiency
US7873803B2 (en) 2007-09-25 2011-01-18 Sandisk Corporation Nonvolatile memory with self recovery
TWI366828B (en) 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
US7934072B2 (en) * 2007-09-28 2011-04-26 Lenovo (Singapore) Pte. Ltd. Solid state storage reclamation apparatus and method
CA2704537C (en) 2007-11-05 2015-10-13 Nokia Siemens Networks Oy Buffer status reporting apparatus, system, and method
JP2009122850A (ja) 2007-11-13 2009-06-04 Toshiba Corp ブロックデバイス制御装置及びアクセス範囲管理方法
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
JP2009181314A (ja) * 2008-01-30 2009-08-13 Toshiba Corp 情報記録装置およびその制御方法
KR101086855B1 (ko) 2008-03-10 2011-11-25 주식회사 팍스디스크 고속 동작하는 반도체 스토리지 시스템 및 그 제어 방법
US8051243B2 (en) 2008-04-30 2011-11-01 Hitachi, Ltd. Free space utilization in tiered storage systems
US20090276654A1 (en) 2008-05-02 2009-11-05 International Business Machines Corporation Systems and methods for implementing fault tolerant data processing services
JP5159421B2 (ja) 2008-05-14 2013-03-06 株式会社日立製作所 ストレージシステム及び管理装置を用いたストレージシステムの管理方法
US8775718B2 (en) 2008-05-23 2014-07-08 Netapp, Inc. Use of RDMA to access non-volatile solid-state memory in a network storage system
US8554983B2 (en) 2008-05-27 2013-10-08 Micron Technology, Inc. Devices and methods for operating a solid state drive
EP2304568B1 (en) 2008-06-06 2013-08-14 Pivot3 Method and system for distributed raid implementation
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US8135907B2 (en) 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
KR101086857B1 (ko) 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8417928B2 (en) 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US8205063B2 (en) 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8347041B2 (en) * 2009-01-02 2013-01-01 Lsi Corporation System and method to preserve and recover unwritten data present in data cache of a disk subsystem across power outages
US20100235597A1 (en) 2009-03-10 2010-09-16 Hiroshi Arakawa Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
US8566507B2 (en) 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US8433845B2 (en) 2009-04-08 2013-04-30 Google Inc. Data storage device which serializes memory device ready/busy signals
US20100262979A1 (en) 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8214610B2 (en) * 2009-07-15 2012-07-03 Lsi Corporation Managing backup device metadata in a high availability disk subsystem
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage

Also Published As

Publication number Publication date
US8719501B2 (en) 2014-05-06
JP5999645B2 (ja) 2016-10-05
EP2476055A4 (en) 2013-07-24
KR20120090965A (ko) 2012-08-17
US20110066808A1 (en) 2011-03-17
CN102696010A (zh) 2012-09-26
EP2476055B1 (en) 2020-01-22
WO2011031796A2 (en) 2011-03-17
EP2476055A2 (en) 2012-07-18
JP2013504142A (ja) 2013-02-04
WO2011031796A3 (en) 2011-06-30
CN102696010B (zh) 2016-03-23

Similar Documents

Publication Publication Date Title
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US11010102B2 (en) Caching of metadata for deduplicated luns
US10289545B2 (en) Hybrid checkpointed memory
US8880787B1 (en) Extent metadata update logging and checkpointing
US9448924B2 (en) Flash optimized, log-structured layer of a file system
US9026737B1 (en) Enhancing memory buffering by using secondary storage
JP5707540B1 (ja) 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
WO2012106362A2 (en) Apparatus, system, and method for managing eviction of data
US20160077746A1 (en) Optimized segment cleaning technique
WO2012116369A2 (en) Apparatus, system, and method for managing contents of a cache
US9021222B1 (en) Managing incremental cache backup and restore
WO2015105665A1 (en) Global in-line extent-based deduplication
KR20170010729A (ko) 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템
US8478727B2 (en) Storage system and control method for the same
US11392499B2 (en) Dynamic buffer caching of storage devices
WO2012021847A2 (en) Apparatus, system and method for caching data
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
JP2023152247A (ja) ストレージシステムおよびストレージ制御方法

Legal Events

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

Payment date: 20200218

Year of fee payment: 4