KR101824295B1 - 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 - Google Patents

솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 Download PDF

Info

Publication number
KR101824295B1
KR101824295B1 KR1020147006571A KR20147006571A KR101824295B1 KR 101824295 B1 KR101824295 B1 KR 101824295B1 KR 1020147006571 A KR1020147006571 A KR 1020147006571A KR 20147006571 A KR20147006571 A KR 20147006571A KR 101824295 B1 KR101824295 B1 KR 101824295B1
Authority
KR
South Korea
Prior art keywords
cache memory
volatile
volatile cache
storage
write
Prior art date
Application number
KR1020147006571A
Other languages
English (en)
Other versions
KR20140053309A (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 KR20140053309A publication Critical patent/KR20140053309A/ko
Application granted granted Critical
Publication of KR101824295B1 publication Critical patent/KR101824295B1/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 캐싱 방법은 하나 이상의 프로세서에 의해 실행하는 하나 이상의 스토리지 관리 프로그램을 저장하는 하나 이상의 프로세서, 비휘발성 제 2 스토리지 및 비휘발성 캐시 메모리를 구비하는 각각의 컴퓨터에 의해 수행된다. 상기 방법은 상기 비휘발성 캐시 메모리에서의 가용한 스토리지 크기를 식별하고, 상기 비휘발성 캐시 메모리에서의 관리 유닛의 크기를 식별하는 정보를 상기 비휘발성 캐시 메모리로부터 수신하는 단계를 포함한다. 상기 방법은 상기 비휘발성 캐시 메모리로의 기록 데이터에 대한 기록 요청을 식별하는 단계, 상기 식별된 기록 요청에 대한 상기 비휘발성 캐시 메모리로의 상기 기록 데이터를 상기 비휘발성 캐시 메모리의 어드레스 공간에서의 순차적으로 배열된 위치들로 순차적으로 기록하는 단계, 및 상기 비휘발성 캐시 메모리의 어드레스 공간에서의 각각의 위치로 상기 기록 데이터의 어드레스 또는 스토리지 오프셋을 맵핑하는 메타데이터를 메모리에 저장하는 단계를 포함한다.

Description

솔리드 스테이트 장치 가상화를 포함하는 캐시 관리{CACHE MANAGEMENT INCLUDING SOLID STATE DEVICE VIRTUALIZATION}
기술된 실시예는 일반적으로 스토리지 관리 및 솔리드 스테이트 디바이스 어드레스 공간 가상화를 위한 소프트웨어 툴에 관한 것이다.
솔리트 스테이트 스토리지 디바이스(SSD)에 대한 인기가 증가하고 있다. SSD는 데이터 저장을 위해 솔리트 스테이트 메모리를 채용한다. SSD는 종래의 하드 디스크 드라이브보다 현저하게 고속일 수 있다.
그러나, SSD는 디스크 드라이브에 비해 상대적으로 고가이다. 또한, SSD는 솔리드 스테이트 메모리의 반복적인 소거 및 기록에 연관된 신뢰성 문제를 가지고 있다. 예를 들면, 과도하게 사용된 영역의 너무 이른 고장을 방지하도록, 데이터가 다른 영역에 비해 현저하게 보다 자주 하나의 영역에 소거 및 기록되지 않는 것을 보장하기 위해 마모-라벨링(wear-labeling)이 SSD에 대해 사용될 필요성이 있다.
일부 실시예에서, 데이터 캐시 방법은 하나 이상의 프로세서에 의해 실행하기 위한 하나 이상의 스토리지 관리 프로그램을 저장하는 상기 하나 이상의 프로세서, 비휘발성 제 2 스토리지 및 비휘발성 캐시 메모리를 구비한 각각의 컴퓨터에 의해 수행된다. 상기 방법은 비휘발성 캐시 메모리에서 가용한 스토리지 크기를 식별하고, 및 상기 비휘발성 캐시 메모리에서 관리 유닛의 크기를 식별하는 정보를 상기 비휘발성 캐시 메모리 정보로부터 수신하는 단계를 포함한다. 상기 방법은 상기 비휘발성 캐시 메모리로의 데이터 기록을 위한 기록 요청을 식별하는 단계, 상기 비휘발성 캐시 메모리로의 상기 식별된 기록 요청을 위한 기록 데이터를 상기 비휘발성 캐시 메모리의 어드레스 공간에서의 순차적으로 배열된 위치들로 순차적으로 기록하는 단계, 및 상기 비휘발성 캐시 메모리의 상기 어드레스 공간에서의 각각의 위치로 상기 기록 데이터의 어드레스 또는 스토리지 오프셋을 맵핑하는 메타데이터를 메모리에 저장하는 단계를 더 포함한다.
일부 실시예에서, 컴퓨터 시스템은 하나 이상의 스토리지 관리 프로그램을 포함하는 하나 이상의 프로그램을 저장하는 메모리, 메모리에 저장된 상기 하나 이상의 프로그램에서의 명령어를 실행하기 위한 하나 이상의 프로세서, 비휘발성 제 2 스토리지에 대한 인터페이스, 및 비휘발성 캐시 메모리를 포함한다. 상기 비휘발성 캐시 메모리는 상기 컴퓨터 시스템의 상기 하나 이상의 프로세서에 의해 전송된 지시에 응답하는 컨트롤러를 포함한다. 상기 하나 이상의 스토리지 관리 프로그램은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 본문에 기술된 방법 중 임의의 것을 수행하도록 하는 명령어들을 포함한다.
일부 실시예에서, 하나 이상의 스토리지 관리 프로그램을 저장하는 비휘발성 컴퓨터 판독가능 스토리지 매체는, 상기 하나 이상의 프로세서, 비휘발성 제 2 스토리지 및 비휘발성 캐시 메모리를 포함하는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 본문에 기술된 방법 중 임의의 것을 수행하도록 하는 명령어들을 포함하고, 상기 비휘발성 캐시 메모리는 상기 컴퓨터 시스템의 상기 하나 이상의 프로세서에 의해 전송된 지시에 응답하는 컨트롤러를 포함한다.
도 1은 일부 실시예에 따라 배열된 컴퓨팅 시스템(200)의 개략도이다.
도 2는 일부 실시예에 따라 배열된 블록 레벨 필터 드라이버(300)의 개략도이다.
도 3은 일부 실시예에 따라 배열된 캐시 관리 드라이버의 개략도이다.
도 4는 일부 실시예에 따른 로그 구축 캐시 구성의 개략도이다.
도 5는 일부 실시예에 따라 저장된 맵핑 정보의 개략도이다.
도 6은 일부 실시예에 따른 SSD 구동 스토리지의 배열의 개략도이다.
도 7은 일부 실시예에 따른 순환 버퍼(circular buffer)의 개략도이다.
발명의 실시예에 대한 충분한 이해를 제공하기 위해 특정한 상세사항이 하기에서 설명된다. 그러나, 다양한 특정한 상세사항 없이 일부 실시예들이 실시될 수 있다는 것이 당업자에게는 명확할 것이다. 일부 예시에서, 공지된 소프트웨어 운영, 컴퓨팅 시스템 컴포넌트, 회로, 제어 신호, 및 타이밍 프로토콜들은 본 발명의 기술된 실시예를 불필요하게 불명료하게 하는 것을 방지하기 위해 상세하게 나타내지 않는다.
본문에 기술된 바와 같이, 일부 SSD는 메타데이터 관리 및 어드레스 재맵핑을 하는 컨트롤러를 포함한다. SSD에 의해 제공된 메타데이터 관리 기능은 때때로 본문에서 플래시 변환층(flash translation layer)라고 한다. 일부 실시예에서, 상기 플래시 변환층은 IO 요청에 의해 지정된 어드레스 또는 원(original) 오프셋에 대응하는 SSD 내에서의 메모리 위치에 액세스 하도록 수신된 IO 요청에서의 원 오프셋(때때로 어드레스라고 함)을 SSD 내부 오프셋으로 변환한다. 마모 라벨링, 연속한 기록 요구사항, 관리 유닛(SSD에서의 스토리지 유닛)을 소거하는 데에 필요한 시간, 및 손상된 관리 유닛을 사용하는 것을 방지하기 위한 필요성과 같은 다수의 팩터는 SSD에서의 내부 위치 또는 오프셋으로 수신된 지시에서의 어드레스(또는 오프셋)의 맵핑에 영향을 준다. SSD 상의 메타데이터 관리는 상기 디바이스 액세스 프로세스로의 오버헤드(overhead)를 도입하고, 일반적으로 주기적인 불용정보(garbage) 수집 및 또한 공간 오버프로비저닝(over-provisioning)이라고 하는 비할당(unallocated) 공간 예약을 필요로 한다.
일부 실시예에서, 상기 SSD에 의해 제공된 주소 재맵핑(내부 어드레스에 대한 외부 어드레스 맵핑)은, 대안으로 또는 주로, 마모-라벨링 제어를 위해 그리고 손상된 관리 유닛(MU)을 사용으로부터 배제하기 위해 단독으로 사용된다. 관리 유닛(소거가능 블록 또는 소거가능 유닛이라고도 함)이라는 용어는 극미하게 소거될 수 있는 SSD 어드레스 공간에서의 스토리지의 유닛을 가리킨다. 일부 실시예에서, SSD 변환 계층에 의한 어드레스 맵핑은 관리 유닛으로의 기록 연산의 수를 실질적으로 같게 유지하도록 사용된다(예를 들면.N의 팩터내에서, 예를 들면, N은 일반적으로 2와 8 사이의 수).
또한, 플래시 기반 SSD가 메모리 위치를 먼저 소거하지 않고서 특정한 메모리 위치의 재기록을 허용하지 않기 때문에 재맵핑이 또한 요구될 수 있다. 일부 SSD는 내부 버퍼로의 요청된 데이터를 포함하고, 상기 버퍼에서 데이터를 업데이트하고, 및 상기 버퍼로부터의 업데이트 콘텐츠를 소거된(예를 들면, 클린) 관리 유닛으로 기록하는 관리 유닛을 판독할 수 있다. 기타 SSD는 대신에 랜덤 데이터를 순차적으로 기록하고 따라서 메타데이터를 업데이트 함으로써 판독-변조-기록 연산을 방지할 수 있다. 데이터가 덮어쓰기될 때, SSD는 전형적으로 새로운 위치에 새로운 데이터를 기록하고, SSD의 메타데이터에 반영된 구 복사본을 무효화한다(invalidate). 그 결과, 데이터는 SSD에서 완전히 단편화할 수 있고, 요청된 데이터를 찾기 위해 어드레스 변환을 필요로 한다. 이러한 재맵핑 구현은 시간 소모적이고 일반적으로 불용정보 수집을 야기할 수 있다.
SSD는 일반적으로 성능 개선을 위해 관리 유닛을 오버프리저닝한다. 예를 들면, SSD는 충분한 수의 관리 유닛이 인입 기록 데이터 저장에 즉시 가용하다는 것을 보장하기 위한 다수의 소거된 관리 유닛을 유지관리할 수 있다. 따라서, SSD는 그것이 운영시스템에 노출하는 것 보다 예를 들면, 플래시 메모리와 같은 더 큰 스토리지를 가질 수 있다.
일부 실시예에서, SSD는 컴퓨터 시스템용 캐시 메모리로서 활용된다. 추가로, 일부 실시예에서, 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는, 스토리지 관리용 실행가능한 명령어들이, 메타데이터 관리 및 순차적 기록 변환에 대한 랜덤을 포함하는 SSD에 저장된 데이터를 관리하도록 제공된다. 일부 실시예에서, 컴퓨터 시스템은 SSD의 변환 층이 임의의 메모리 위치에 대한 기록을 SSD에서의 순차적 메모리 위치에 대한 기록으로 변환하는 어드레스 변환을 더이상 수행하지 않도록 SSD의 변환층에 대한 인터페이스(때때로, 본문에서 가상화 API라고 함)를 포함한다. 일부 실시예에서, 이는 SSD 변환 층의 복잡성을 감소시키고, 전체 시스템의 지연을 감소시키고, 및 SSD에서의 오버프로비저닝에 대한 요구를 제거 또는 감소시킨다.
플래시-기반 SSD를 포함하는 다수 유형의 SSD가 있다. 다양한 실시예에서, SSD는 SATA 또는 SAS 디바이스로서 구현된다. 하기에 선택적으로 기술된 SSD의 실시예에서 사용가능한 플래시 메모리는 PCI-플러그가능한 카드, NVMe(Non-Volatile Memory express) 또는 운영 시스템과 호환가능한 기타 형태에서의 플래시 메모리를 포함한다.
SSD를 이용하는 시스템의 실시예는 2011년 6월 3일 출원된, "스토리지 매체의 캐시 관리 및 가속화"라는 제하의, 미국 공동계류중 출원번호 제 13/153,117; 2010년 6월 4일 출원된 "스토리지 매체의 메모리 관리 및 가속화"라는 제하의 미국 가출원 제 61/351,740; 및 2011년 2월 22일 출원된 "부가적인 클러스터 구현을 포함하는 스토리지 매체의 스토리지 관리 및 가속화"라는 제하의 미국 가출원 61/445,225에 기술되며, 이들 전체는 참조에 의해 본문에 통합된다.
상술한 출원은 메타데이터 관리 및 랜덤을 순차적 메모리 요청으로 변환하는 것을 포함하는, 로컬 캐시로서 SSD를 이용하는 시스템 및 방법의 예시를 기술한다.
도 1은 데이터 저장을 위한 캐시로서 기능하는 솔리드 스테이트 디바이스(SSD(207))와 같은 스토리지를 포함하는 서버 시스템(205)(때때로, 이하 서버(205)라고 함)와 같은 컴퓨팅 디바이스를 가지는 컴퓨팅 시스템(200)의 개략적인 예이다. 일부 실시예에서, SSD(207)는 변환층(806)을 포함한다 변환층(806)은 선택적으로 SSD(207)내의 컨트롤러에서의 프로세서에 의해 실행되는 소프트웨어로 구현된다. SSD(207)는 스토리지 매체(215)용 캐시로서 기능하고, 이는 SAN(storage area network)(220) 상의 서버(205)로 커플링된다. 서버(205)는 하나 이상의 처리 유닛(206)과 컴퓨터 메모리(208)를 포함하고, 이는 기타 프로그램 또는 모듈(예를 들면, 운영 시스템 및/또는 애플리케이션(305), 도 3, 하나 이상의 표준 드라이버(310) 및 데이터(예를 들면, 선택적으로 캐시 맵(824)을 포함하는 캐시 메타데이터(822)와 같은) 뿐만이 아니라, 캐시 관리 드라이버(209)(또한 본문에서 스토리지 관리용 실행가능한 명령어라고 하는), 플래시 가상화 API(808)(또한 본문에서 가상화 API라고 함)를 저장하는 임의의 유형 또는 임의의 수의 컴퓨터 판독가능 매체로서 구현될 수 있다. 하나 이상의 처리 유닛(206)에 의해 실행될 때, 스토리지 관리(209)용 실행가능한 명령어는 스토리지 액세스 요청 및 SSD(207)와 스토리지 매체(215)의 활용의 실행을 관리한다. 예를 들면, 판독 및 기록 요청은 스토리지 매체(215)로 지향되거나 또는 적절하게 SSD(207)로 재지향된다. 일부 실시예에서, 스토리지 관리(209)용 실행가능한 명령어는, 기록 요청에서 어드레스의 오프셋이 순차적이지 않을때 조차도, SSD(207)로의 기록 요청을 순차적 기록 요청으로 변환하는 명령어들을 포함한다. 일부 실시예에서, 가상화 API(808)는 임의의 분산된 어드레스로의 기록을 SSD(207)에 대한 순차적 기록으로 스스로 변환시키는 책임으로부터 변환층(806)을 해제하도록 변환층(806)과 협력하여 동작한다.
일부 실시예에서, 서버(205-2)와 같은 하나 이상의 추가적인 서버(205-i)는 또한 SAN(storage area network)(220)을 통해 스토리지 매체(215)에 결합된다. 각각의 추가적인 서버(205-i)는 유사하게 SSD(207-i), 하나 이상의 처리 유닛(206-i), 및 캐시 관리 드라이버(209-i)(스토리지 관리용 실행가능한 명령어)를 포함하는 컴퓨터 메모리(208-i)를 포함한다. 시스템(200)의 다양한 실시예는 서버 클러스터가 될 수 있는 상이한 수의 이러한 서버(205)를 포함하고, 이들 서버 중 일부 또는 모두는 클러스터 노드가 될 수 있고, 스토리지 관리용 SSD 및 소프트웨어가 제공될 수 있다. 일부 실시예에서, 각각의 서버(205-i)의 각각의 SSD(207-i)는 스토리지 매체(215)용 로컬 캐시로서 기능한다. 일부 실시예에서, 각각의 SSD(207-i)는 변환층(808-i)을 포함한다.
실질적으로, 임의의 유형의 SSD가 임의의 유형의 플래시 드라이브를 포함하는(그러나 한정은 아닌) SSD(207)를 구현하기 위해 사용될 수 있다.
특정 서버 구성이 도 1에 도시되었지만, 기타 컴퓨터 시스템 서버 구성이 본문에 개시된 데이터 캐싱과 캐시 관리 방법을 구현하는 데에 사용될 수 있다는 것이 이해될 것이다.
또한, 컴퓨터 메모리(208) 상에 저장된 실행가능한 명령어(209)로서 도 1을 참조하여 기술되었지만, 본문에 기술된 스토리지 관리 기능은 일부 실시예에서 펌웨어, 또는 소프트웨어와 펌웨어의 조합으로 구현될 수 있다. 처리 유닛(들)(206)은 임의 유형의 단일 프로세서 또는 다중 프로세서의 배열로서 구현될 수 있다.
일부 실시예에서, 캐시 관리 드라이버(209)(스토리지 관리용 실행가능한 명령어)는 블록 레벨 필터 드라이버로서 구현된다. 다른 실시예에서, 캐시 관리 드라이버(209)는 파일 레벨 필터 드라이버 등으로서 구현된다. 블록 레벨 필터 드라이버(300)의 예시가 도 2에 도시되고, 여기서 스토리지 관리(209)용 실행가능한 명령어가 캐시 관리 드라이버로서 도시된다. 일부 실시예에서, 캐시 관리 드라이버(209)는 파일 시스템 또는 기타 애플리케이션(305)으로부터의 판독 및 기록 지시를 수신한다. 캐시 관리 드라이버(209)는 적어도 일부 기록 요청(예를 들면, 미리정해진 캐시 기준을 만족시키는 기록 요청)을 SSD(207)로 지향시키고, SSD(207)로부터의 판독 캐시 히트를 반환(return)한다. 판독 캐시 미스에 연관된 데이터는 SAN(220)을 통해 스토리지 디바이스(215)로부터 반환된다. 일부 실시예에서, 캐시 관리 드라이버(209)는 또한 SSD(207)로부터 스토리지 매체(215)로의 데이터의 플러시(flush)를 촉진시킨다. 일부 실시예에서, 캐시 관리 드라이버(209)는 스토리지 매체(215) 그리고 선택적으로 SSD(207)와의 통신을 위해 표준 드라이버(310)와 인터페이싱 한다. 그러나, 일부 실시예에서 캐시 관리 드라이버(209)는 SSD 액세스 지연을 감소시키는 직접적인 함수 호출에 의해 SSD와 인터페이싱한다. 캐시 관리 드라이버(209)를 파일 시스템 또는 애플리케이션(305)과 표준 드라이버(310) 위의 사이에 배치하는 것은 이롭게도 블록 레벨에서 그러나 스토리지 매체(215)를 더 큰 선택도를 가지고 가속화시키는 데에 사용되는 볼륨 매니저의 레벨 위에서의 판독 및 기록 지시의 조작을 허용할 수 있다. 즉, 일부 실시예에서, 캐시 관리 드라이버(209)는 디스크 레벨 대신 볼륨 레벨에서 동작한다.
일부 실시예에서, 캐시 관리 드라이버(209)는 캐시 관리 드라이버(209)와 SSD(207)의 변환층(808) 사이에 인터페이스를 제공하는 가상화 API(808)를 구현하는 독립적인 모듈을 포함하거나, 또는 상기 독립적인 모듈과 인터페이싱한다. SSD(207)는 마모-레벨링 제어 또는 어드레스 재맵핑을 위해 변환층(806)을 활용한다. 일부 실시예에서, 변환층(806)은 SSD(207)의 컨트롤러(820)에서 소프트웨어 드라이버 또는 펌웨어로서 구현된다. 예를 들면, SSD(207)는 하나 이상의 프로세서를 포함하고, 상술된 변환층(806)의 기능을 제공하기 위해 함께 동작하는 저장된 컴퓨터 실행가능 명령어를 포함할 수 있다. 그러나, 일부 실시예에서, SSD(207)는 그렇지 않으면 캐시 성능과 공간 활용을 개선하는 SSD(207)의 변환층(806)에 의해 수행되는 일부 기능을 대체하기 위해 가상화 API(808)와 인터페이싱한다. 특히, 캐시 관리 드라이버(209)는 어드레스 재맵핑의 실질적인 일부를 수행하기 위해 사용될 수 있다. 이는 캐시 성능을 개선시키고 SSD(207)에서의 오버프리저닝에 대한 요구를 제거 또는 감소시키며, 이는 SSD 공간 활용을 개선시킨다.
일부 실시예에서, SSD(207)는 변환층(806)의 일부 기능을 충분하게 하는 순환 버퍼로서 사용된다. 예를 들면, 캐시 관리 드라이버(209)가 이미 순환 버퍼로의 기록을 위해 SSD(207)로 순차적 기록만을 제시했기 때문에 랜덤 기록을 순차적 기록으로 터닝하기 위한 SSD(207)에서의 리소스-고밀도 프로시저에 대한 요구는 없다. 가상화 API(808)의 이용을 통한 변환층(806)의 기능을 캐시 관리 드라이버(209)로 대체하는 것은 특히 PCIe 또는 NVMe 플래시 디바이스와 같은 SSD 관리용 정교한 소프트웨어 드라이버를 가지는 SSD 디바이스에 효익이 있다.
따라서, 가상화 API(808)는 변환층(808)이 실질적으로 가상화 API(808)를 통해 캐시 관리 드라이버로부터 수신되거나 또는 그로 전송된 요청에 따른 어드레스 재맵핑의 최고의 리소스-고밀도 부분을 모두 그리고 대부분의 경우에 수행하지 않도록 변환층(806)에 대한 인터페이스를 제공하고 변환층(806)과 통신한다.
가상화 API(808)가 변환층(806)으로 하여금 랜덤 기록을 순차적 기록으로 변환시키는 어드레스 변환 기능을 제공하는 것을 중단시킬 수 있도록 하는, 일부 실시예에서, 변환층(806)은 여전히 마모-레벨링과 내부 플러시 인터리빙 기능을 가질 수 있다. 이는 변환층(806)이 사용으로부터 배제될 수 있는 손상된 관리 유닛의 추적을 유지할 수 있기 때문에 효익이 있을 수 있다. SSD(207)의 배제된 관리 유닛 추적은 SSD가 예를 들면 RAID0 또는 RAID5 아키텍처와 같은 내부 중복 아키텍처에 포함된다면 복잡하게 될 수 있다. 따라서, 변환층(806)을 통한 SSD(207)는 SSD(207)에서의 사용가능한 공간의 위치를 가지고 가상화 API(808)를 제공하고, 캐시 관리 드라이버(209)는 SSD(207) 상의 손상된 관리 유닛을 고려하거나 또는 SSD(207)를 포함하는 시스템에 제공된 특정한 중복 아키텍처를 보상할 것이 요구되지 않는다. 일부 실시예에서, 캐시 관리 드라이버(209)는 소거를 요구하는 가상 어드레스 공간에서의 영역들을 식별하도록 SSD(207)에 대한 TRIM 지시를 이용한다.
캐시 관리 드라이버(209)는 도 3에 도시된 바와 같이 임의의 수의 기능 블록을 이용하여 구현될 수 있다. 캐시 관리 드라이버(209)는 일반적으로 파일 시스템 또는 애플리케이션으로부터 하나 이상의 지시를 수신하고 플랫폼 운영 시스템과의 통신을 제공할 수 있는 지시 핸들러(405)를 포함한다. SSD 매니저(407)는 SSD(207) 내의 데이터 및 메타데이터 레이아웃을 제어할 수 있다. SSD(207)에 기록된 데이터는 이롭게도 하기에 더 상세히 기술되는 바와 같이 로그 구축 캐시 포맷으로 저장 및 관리될 수 있다. 맵퍼(410)는 원 요청된 스토리지 매체(215) 오프셋을 SSD(207)용 오프셋으로 맵핑할 수 있다. 게이트 제어 블록(412)은 일부 예시에서 하기에 더 상세히 기술되는 바와 같이 SSD(207)로 게이트 판독 및 기록하도록 제공될 수 있다. 게이트 제어 블록(412)은 이롭게도 하기에 더 상세히 기술되는 바와 같이 SSD(207)의 성능이 증가할 수 있도록 하는 주어진 시간 프레임 동안의 특정한 수의 판독 또는 기록 지시를 캐시 관리 드라이버(209)가 전송할 수 있도록 한다. 일부 예시에서, SSD(207)는 최적 수의 판독 또는 기록 요청에 연관될 수 있고, 게이트 제어 블록(412)은 연속적인 판독 또는 기록 요청의 수가 지정될 수 있도록 허용하여, SSD에 기록시 기록 병합(write coalescing)을 제공한다. 스냅퍼(414)는 SSD(207) 상에 저장된 메타데이터의 스냅샷을 생성하고 스냅샷을 SSD(207)로 기록하도록 제공될 수 있다. 스냅샷은 하기에 더 상세히 기술되는 바와 같이 충돌 복구에 유용할 수 있다. 하기에 더 상세히 기술되는 바와 같이, SSD(207)로부터의 데이터를 다른 스토리지 매체(215)로 플러쉬하도록 플러셔(flusher)(418)가 제공될 수 있다.
일부 실시예에서, 로컬 캐시 저장 디바이스(예를 들면, SSD(207))에 저장된 데이터는 로그 구축 캐시로서 저장된다. 즉, 로컬 캐시 스토리지 디바이스는 데이터 및 또한 메타데이터를 가진 로그로서 구축되면서, 순차적인 스트림으로 스토리지 디바이스로 기록되는 캐시로서 기능한다. 이러한 방식으로, 로컬 캐시 스토리지 매체(예를 들면, SSD(207))는 순환 버퍼로서 사용된다. 추가로, 일부 실시예에서, 순환 버퍼로서 SSD를 사용하는 것은 캐시 드라이버로 하여금 SSD 어드레스 공간의 특정 부분을 소거하는 것을 시작하도록 SSD에 지시하는 표준 TRIM 지시를 이용할 수 있도록 한다. 일부 실시예에서, 이들 개시된 실시예의 특징들은 SSD 공급자들로 하여금 SSD 공간의 오버프리저닝을 제거하고 액티브 SSD 공간의 크기를 증가시키도록 한다.
도 4는 일부 실시예에 따라 로그 구축된 캐시 구성의 개략도이다. 상술한 바와 같이 파일 시스템 또는 애플리케이션으로부터 판독 및 기록 요청을 수신하는 캐시 관리 드라이버(209)가 예시된다. SSD(207)는 데이터와, 오손(dirty) 영역(505), 미사용(unused) 영역(510), 및 클린(clean) 영역(515, 520)을 포함하는 로그 구축 캐시로서의 부속된 메타데이터를 저장한다. SSD(207)는 순환 버퍼로서 사용될 수 있기 때문에, 임의의 영역이 SSD(207) 엔드 경계 상으로 분할될 수 있다. 본 예시에서, 그것은 '순환하는(wrap around)' 연속한 영역으로서 간주될 수 있는 클린 영역(515, 520)이다. 오손 영역(505)에서의 데이터는 SSD(207)에 저장되지만 SSD(207)가 가속시킬 수 있는 스토리지 매체(215) 상에서 플러시되지 않는 데이터에 대응한다. 즉, 오손 영역(505)에서의 데이터는 아직 스토리지 매체(215)로 플러시되지 않았다. 오손 데이터 영역(505)은 플러시 포인터(507)에 의해 지정된 시작과 기록 포인터(509)에 의해 지정된 엔드를 구비한다. 동일한 영역이 판독 캐시로서 또한 사용될 수 있다. 캐시 드라이버는 모든 판독 요청의 이력을 관리할 수 있다. 그런다음 그것은 SSD에서 보다 빈번하게 판독 데이터를 인식 및 저장할 수 있다. 즉, 판독 요청의 이력이, 특정 데이터 영역이 임계 수 이상의 횟수를 판독하거나, 또는 특정 데이터 영역이 특정 주기로 판독된 것을 나타내면, 특정 데이터 영역은 SSD에 배치될 수 있다. 미사용 영역(510)은 새로운 데이터로 겹쳐쓰기될 수 있는 데이터를 나타낸다. 미사용 영역(510)의 시작은 기록 포인터(509)에 의해 묘사될 수 있다. 미사용 영역(510)의 엔드는 클린 포인터(512)에 의해 묘사될 수 있다. 클린 영역(515, 520)은 스토리지 매체(215)로 플러시된 유효 데이터를 포함한다. 클린 데이터는 판독 캐시로서 표시될 수 있고 판독 가속화를 위해 사용될 수 있다. 즉, 클린 영역(515, 520)에서의 데이터는 SSD(207) 및 스토리지 매체(215) 모두에 저장된다. 클린 영역의 시작은 클린 포인터(512)에 의해 묘사되고, 클린 영역의 엔드는 플러시 포인터(507)에 의해 묘사된다.
동작하는 동안, 인입 기록 요청은 기록 포인터(509)에 의해 지시된 SSD(207)의 위치로 기록되고, 기록 포인터는 다음 위치로 증분된다. 이러한 방식으로, SSD로의 기록은 기록 포인터에 의해 지시되는 바와 같이 연속하여 이루어질 수 있다. 이러한 방식으로, 비연속 기록 요청이 파일 시스템 또는 기타 애플리케이션에 의해 발급됨에도 불구하고 불구하고 연속한 기록이 관리될 수 있다.
SSD(207)로부터의 데이터는 플러시 포인터(507)에 의해 지시된 위치로부터 스토리지 매체(215)로 플러시되고, 플러시 포인터는 증분된다. 데이터는 다양한 플러시 전략 중 임의의 것에 따라 플러시 될 수 있다. 일부 실시예에서, 재정리, 병합, 및 기록 취소후 데이터가 플러시된다. 데이터는 스토리지 매체 가속시 자신의 위치의 엄격한 순서로 플러시될 수 있다. 추후에 그리고 플러시와 비동기로, 데이터는 클린 포인터(512)에 의해 지시된 위치에서 무효화(invalidate)되고, 증분된 클린 포인터는 미사용 영역에 인접하게 유지된다. 이러한 방식으로, 도 4에 도시된 영역은 시스템 동작동안 연속하여 증분될 수 있다. 오손 영역(505)과 미사용 영역(510)의 크기는, 인입 기록 요청을 만족시키기에 충분한 크기의 미사용 공간이 제공되고 오손 영역이 아직 스토리지 매체(215)로 플러시되지 않은 데이터 크기를 감소시키도록 충분히 크기조정되도록, 하나 이상의 시스템 파라미터로서 규정될 수 있다.
인입 판독 요청은 요청된 데이터가 오손 영역(505) 또는 클린 영역(515, 520) 중 어느 하나에서의 SSD(207)에 상주하는 지를 식별하도록 평가될 수 있다. 메타데이터의 사용은 하기에 더 상세히 기술되는 바와 같이 판독 요청의 해결을 도울 수 있다. 클린 영역(512, 520) 또는 오손 영역(505)에서의 위치로의 판독 요청은 데이터가 SSD의 이들 위치로부터 반환되도록 하고, 이는 스토리지 매체(215)로부터 데이터를 반환하는 것 보다 더 빠르다. 이러한 방식으로, 판독 요청은 캐시 관리 드라이버(209) 및 SSD(207)의 사용에 의해 가속화될 수 있다. 또한, 일부 실시예에서, 빈번하게 사용된 데이터는 SSD(207)에 유지될 수 있다. 즉, 일부 실시예에서, SSD(207)에 저장된 데이터에 연관된 메타데이터는 데이터가 판독된 횟수를 나타낼 수 있다. 빈번하게 요청된 데이터는 무효화(invalidation)에 후속하여서 조차도 SSD(207)에 유지될 수 있다. 빈번하게 요청된 데이터는 무효화될 수 있고, 기록 포인터(509)에 의해 지시된 위치로 이동될 수 있다. 이러한 방식으로, 빈번하게 요청된 데이터는 캐시에 유지되고, 개선된 판독 성능의 효익을 얻을 수 있지만, 연속한 기록 특징이 유지될 수 있다.
그 결과, 파일 시스템 또는 애플리케이션에 의해 캐시 관리 드라이버(209)로 발급된 불연속 위치로의 기록은 병합되어 SSD(207)로의 순차적 기록으로 변환될 수 있다. 상술한 로그 구축 캐시 동작의 순환 특성은 또한 이롭게도 SSD에서 마모 레벨링을 제공한다.
따라서, 로그 구축 캐시의 실시예가 상술되었다. 로그 구축 캐시 포맷을 활용함으로써, 캐시의 순환 특성에 기인하여, 랜덤 기록이 캐시 관리 드라이버에 의해 순차적 SSD 요청으로 변환되었음에 유의하라. 로그 구축 캐시에 저장된 데이터 구조의 예시가 도 4를 참조하여 기술된다. 로그 구축 캐시는 SSD(207)의 모두 또는 임의의 부분을 차지한다(take up). SSD는 또한 로그 구축 캐시에 대한 라벨(522)을 저장할 수 있다. 라벨(522)은 서명, 기계 ID, 및 버전을 포함하는(그러나 이에 한정되지 않음) 관리자 데이터를 포함할 수 있다. 라벨(522)은 또한 마지막 유효 데이터 스냅샷의 위치를 식별하는 구성 레코드를 포함할 수 있다. 스냅샷은 충돌 복구에 사용될 수 있고, 하기에 더 상세히 기술된다. 라벨(522)은 스토리지 매체(215)와 같은 캐시 관리 드라이버(209)에 의해 가속되는 데이터 볼륨에 관한 정보를 구비하는 볼륨 테이블을 더 포함할 수 있다. 그것은 또한 포인터 또는 최소의 최근 스냅샷을 포함할 수 있다.
오손 영역(505)에 저장된 데이터 레코드는 도 4에 더 상세히 도시되었다. 특히, 데이터 레코드(531-541)가 도시된다. 데이터에 연관된 데이터 레코드는 도 4에서 "D" 라벨로 지시된다. 하기에 더 상세히 기술되는 메타데이터 맵 페이지에 연관된 레코드는 도 4에서 "M" 라벨로 지시된다. 스냅샷에 연관된 레코드는 도 4에서 "Snap" 라벨로 지시된다. 각각의 레코드는 레코드와 함께, 일반적으로 레코드의 시작에 저장된 연관된 메타데이터를 구비한다. 예를 들면, 데이터 레코드(534)의 확대도가 데이터 부(534a) 및 메타데이터 부(534b)와 함께 도시된다. 메타데이터 부(534b)는 데이터를 식별하고 예를 들면 시스템 충돌에 후속하여 복구를 위해 사용될 수 있는 정보를 포함할 수 있다. 메타데이터 부(534b)는 볼륨 오프셋, 대응하는 데이터 길이, 및 대응하는 데이터의 볼륨 고유 ID를 포함하지만, 그에 한정되는 것은 아니다. 데이터 및 연관된 메타데이터는 단일 트랜잭션으로서 SSD에 기록될 수 있다.
도 4에 도시된 스냅샷(538, 539)과 같은 스냅샷은 이전의 스냅샷 이래로 기록된 각각의 데이터 레코드로부터의 메타데이터를 포함할 수 있다. 스냅샷은 임의의 다양한 횟수로 기록될 수 있다. 일부 예시에서, 스냅샷은 특정 횟수의 데이터 기록에 후속하여 기록될 수 있다. 일부 예시에서, 스냅샷은 일정한 크기의 경과 시간에 후속하여 기록될 수 있다. 기타 주기가 또한 사용될 수 있다(예를 들면, 시스템의 관대한 셧다운시 스냅샷을 기록한다). 스냅샷을 저장함으로써, 충돌후 복구 시간이 이롭게도 일부 실시예에서 단축될 수 있다. 즉, 스냅샷은 다수 데이터 레코드와 연관된 메타데이터를 구비할 수 있다. 일부 예시에서, 각각의 스냅샷은 하기에 더 상술되는 로컬 오프셋의 볼륨 오프셋으로의 맵핑을 보조하는 맵 트리 및, 마지막 스냅샷 이후에 변조된 페이지에 대응하는 임의의 오손 맵(dirty map) 페이지를 포함할 수 있다. 충돌 복구에 후속하여 스냅샷을 판독하는 것은 SSD(207) 상의 다수의 위치에서 다수의 데이터 레코드를 판독할 필요성을 제거 또는 감소시킬 수 있다. 대신에, 다수의 데이터 레코드는 스냅샷 판독에 기초하여 복구될 수 있고, 더 적은 개별 데이터 레코드(예를 들면, 스냅샷 생성에 후속하여 기록된 레코드)가 판독될 필요성이 있을 수 있다. 동작중, 마지막 유효 스냅샷이 마지막 스냅샷의 시간에 맵트리를 복구하기 위해 판독될 수 있다. 그런다음, 스냅샷 후에 기록된 데이터 레코드는 개별적으로 판독될 수 있고, 맵트리는 복구에 후속하여 정확한 맵트리를 가져오는 데이터 레코드에 따라 변조된다. 고속 복구에 추가하여, 스냅샷은 하기에 더 상술되는 클러스터 환경에서 메타데이터 공유기능을 할 수 있다.
도 4에서, 메타데이터 및 스냅샷이 또한 SSD(207)로의 데이터 레코드와 함께 연속한 방식으로 기록될 수 있다는 것에 유의하라. 이는 기록의 수와 단편화 레벨을 감소시킴으로써 기록 성능을 개선하도록 하고 일부 실시예에서 마모 레벨링에 대한 우려를 감소시킬 수 있다.
로그 구축 캐시는 매우 효율적으로 TRIM 지시의 사용을 허용한다. 캐시 드라이버는 TRIM 지시를 적절한 크기의 클린 데이터가 미사용(무효) 데이터로 터닝되었을 때 SSD로 전송할 수 있다. 이는 이롭게도, SSD 내부 메타데이터 관리를 간략화시키고 일부 실시예에서 마모 레벨링을 개선할 수 있다.
따라서, 이롭게도 로컬 캐시로서 기능하는 SSD에서 사용될 수 있는 로그 구축 캐시의 실시예가 상술되었다. 로그 구축 캐시는 이롭게도 연속한 기록 동작에 제공할 수 있고, 마모 레벨링의 돌발상황(incident)을 감소시킬 수 있다. 데이터가 로컬 어드레스를 이용하여 파일 시스템 또는 기타 애플리케이션에 의해 요청될 때, 그것은 SSD(207) 또는 스토리지 매체(215)에 위치될 수 있다. 실제 데이터 위치는 메타데이터를 참조하여 식별된다. 메타데이터 관리의 실시예가 보다 상세히 기술된다.
본문에 기술된 맵핑의 실시예는 일반적으로 원 스토리지 매체 오프셋(파일 시스템 또는 기타 애플리케이션에 의해 사용될 수 있는)과 로컬 캐시 또는 스토리지 매체에서의 실제 오프셋 사이의 오프셋 변환을 제공한다. 일반적으로 상술한 바와 같이, SSD가 로컬 캐시로서 활용될 때, 캐시 크기는 매우 클 수 있다(일부 예시에서 수백 기가바이트 이상). 크기는 일반적인(일반적으로 메모리에서) 캐시 크기보다 더 클 수 잇다. 따라서, 도 1의 컴퓨터 액세스가능한 매체(208) 상에서와 같이 시스템 메모리에서 모든 맵핑 정보를 유지하는 것은 실현가능하지도 또는 바람직하지도 않을 수 있다. 따라서, 일부 실시예는 맵핑 정보의 일부가 시스템 메모리에 저장되지만 맵핑 정보의 일부는 그 자체로 캐싱되는 멀티-레벨 맵핑 관리를 제공한다.
도 5는 일부 실시예에 따라 저장된 맵핑 정보의 개략도이다. 맵핑은 파일 시스템 또는 기타 애플리케이션으로부터의 수신된 스토리지 매체 오프셋을 도 1의 SSD(207)와 같은 로컬 캐시에 대한 오프셋으로 변환하는 방법을 기술할 수 있다. 상부 레벨의 맵핑 정보는 당업계에 일반적으로 공지된 바와 같이 안정된(balanced) 트리의 일부 형태(예를 들면, RB-트리)로서 구현될 수 있고, 여기서 모든 브랜치의 길이는 예측가능한 액세스 시간을 유지하기 위해 상대적으로 동일하다. 도 5에 도시된 바와 같이, 맵핑 트리는 검색을 위한 루트로서 사용될 수 있는 제 1 노드(601)를 포함할 수 있다. 트리의 각각의 노드는 메모리 또는 SSD에 위치되는 메타데이터 페이지(맵 페이지라고 하는)로 포인팅할 수 있다. 다음 노드(602, 603, 604)는 제 1 노드(601)에 의해 지정된 루트 다음의 스토리지 매체 어드레스 공간의 부분을 지정할 수 있다. 도 5의 예시에서, 노드(604)는 하나 이상의 대응하는 맵 페이지에 대한 포인터를 포함하는 최종 '립(leaf)' 노드이다. 맵 페이지는 특정 스토리지 매체 오프셋과 SSD 오프셋 사이의 최종 맵핑을 제공한다. 최종 노드(605, 606, 607, 및 608)는 또한 맵 페이지에 대한 포인터를 포함한다. 맵핑 트리는 일반적으로 도 1의 컴퓨터 액세스가능한 매체(208)와 같은 시스템 메모리(620)에 저장된다. 임의의 노드는, 시스템 메모리에 저장된 자기 자신인 맵 페이지를 포인팅하거나 또는 도 1의 SSD(207)에서와 같이, 다른 곳에(예를 들면, 스왑 아웃된(swapped-out) 페이지의 경우) 저장된 맵페이지에 대한 포인터를 포함할 수 있다. 이러한 방식으로, 모든 맵 페이지가 시스템 메모리(620)에 저장되는 것은 아니다. 도 5에 도시된 바와 같이, 노드(606)는 SSD(207)에서의 레코드(533)에 대한 포인터를 포함한다. 노드(604)는 SSD(207)에서의 레코드(540)에 대한 포인터를 포함한다. 그러나, 노드(607, 608, 및 609)는 시스템 메모리(620) 그 자체에서의 맵핑 정보에 대한 포인터를 포함한다. 일부 예시에서, 시스템 메모리(620) 자체에 저장된 맵 페이지는 또한 SSD(207)에 저장될 수 있다. 이러한 맵 페이지는 SSD(207)에서 영구적인 복사본을 가지지 않는 '오손' 맵 페이지와는 반대로 '클린'이라고 한다.
동작동안, 도 3의 맵퍼(410)와 같은 소프트웨어 프로세스는 파일 시스템 또는 기타 애플리케이션으로부터의 원 지시에 연관된 스토리지 매체 오프셋을 수신할 수 있다. 맵퍼(410)는 메모리 지시에 대한 SSD 오프셋을 판정하기 위해 시스템 메모리(620)에서의 맵핑 트리를 참고할 수 있다. 트리는 시스템 메모리 자체에 저장된(스왑 아웃된) 요청된 맵핑 정보로 포인팅하거나, 또는 SSD(207)에 저장된 맵 페이지 레코드로 포인팅할 수 있다. 맵 페이지는 메타데이터 캐시에 나타나지 않을 수 있고, 먼저 로딩될 수 있다. 메타데이터 캐시로의 맵페이지 판독은 더 오래 걸릴 수 있고, 따라서, 빈번하게 사용되는 맵 페이지는 이롭게도 시스템 메모리(620)에 저장될 수 있다. 일부 실시예에서, 맵퍼(410)는 어느 맵 페이지가 가장 자주 사용되는지 추적할 수 있고, 가장 또는 보다 자주 사용된 맵 페이지가 스왑 아웃되는 것을 방지할 수 있다. 상술된 로그 구축 캐시 구성에 따라, SSD(207)에 기록된 맵 페이지는 도 4의 기록 포인터(509)에 의해 지정된 연속한 위치로 기록될 수 있다.
따라서, 멀티레벨 맵핑의 실시예가 상술되었다. 시스템 메모리에서 일부 메타데이터 맵 페이지를 유지관리함으로써, 이들 캐싱된 맵 페이지를 참조하는 액세스 시간이 이롭게도 감소될 수 있다. SSD(207) 또는 기타 로컬 캐시 디바이스에 메타데이터 맵 페이지 중 다른 것을 저장함으로써, 메타데이터를 저장하는 시스템 메모리의 크기는 이롭게도 감소될 수 있다. 이러한 방식으로, SSD(207)에 저장된 대용량 데이터(일부 예시에서 수백 기가바이트)에 연관된 메타데이터가 효율적으로 관리될 수 있다.
도 6은 일부 실시예에 따른 SSD(900)에서의 스토리지 위치의 개략도이다. 상술된 바와 같이, 일부 실시예는 순환 버퍼로서 SSD 상의 스토리지 공간을 구성한다. 도 6에서, SSD(900)는 오손 영역(902), 미사용 영역(904), 및 클린 영역(906)을 포함할 수 있다. 오손 영역(902)은 버퍼의 순환 속성을 예시하기 위해 2개의 위치에서 도시된다. 기록 포인터는 오손 영역(902)과 미사용 영역(904) 사이의 위치를 묘사하고, 클린(TRIM) 포인터는 미사용 영역과 클린 영역 사이의 위치를 묘사하고, 플러시 포인터는 클린 영역과 오손 영역 사이의 위치를 묘사한다. 이들 포인터는 이동 영역을 추적하기 위해 SSD의 동작 동안 이동된다. 오손, 미사용, 및 클린 영역이 상술되었지만, 개관이 여기서 다시 제공된다. 오손 영역(902)을 호출(recall)하는 것은 판독 및 기록 캐시 데이터에 의해 공유될 수 있다. 오손 영역(902)에서의 기록 캐시 데이터는 기타 스토리지 매체로 플러시 되지 않고, SSD(900) 상에서만 플러시된다. 미사용 영역(904)은 새로운 데이터에 대해 예약되고, 클린 영역(906)은 다른 스토리지 매체로 이미 플러시된 유효 데이터를 포함한다.
미사용 영역(904)이 크기가 감소되면(새로운 기록에 기인하여), 캐시 관리 드라이버는 가상화 API를 통한 캐시 관리 드라이버로부터 SSD(900)로의 TRIM 지시를 전송하는 것을 포함하는 클린 영역(906)으로부터의 데이터를 무효화하기 시작하할 수 있다. 오손 영역(902)과 클린 영역(906)은 유효하게 판독될 수 있는 유효 플래시 공간을 나타내는 반면, 미사용 영역(904)은 캐시 소프트웨어에 의해 판독될 수 없는 무효(invalid) 플래시 공간을 나타낸다.
SSD(900)의 변환층은 어느 관리 유닛이 도시된 영역들을 형성하기 위해 사용되는지 관리하기 위해 사용될 수 있다. 예를 들면, 상술된 바와 같이, 새로운 데이터는 클린 포인터에 의해 지시된 위치로 기록하고 클린 포인터를 증분함으로써 미사용 영역(904)에서 순차적으로 캐시 관리 드라이버에 의해 기록될 수 있다. 캐시 관리 드라이버가 새로운 데이터를 기록하도록 지시를 제공할 때, 변환층(806)은 새로 소거된 관리 유닛을 할당하거나 또는 요청은 여전히 가용 공간을 가지는 현재-할당된 관리 유닛에 기록하는 것을 계속하게 할 수 있다. 변환층(806)은 따라서 새로운 관리 유닛 할당을 제어할 수 있다. 이러한 방식으로, 캐시 관리 드라이버(209)는 도 1의 SSD(207) 중 어느 관리 유닛이 유효하고 미사용 영역에서 사용에 가용한지를 판정할 필요가 없을 수 있다.
관리 유닛이 배드(예를 들면, 고장)가 되면, 변환층(806)은 가용 SSD 공간에 변화가 있음을 가상화 API(808)를 통해 캐시 관리 드라이버(209)에 통지할 수 있다. 고장난 관리 유닛, 또는 미리정해진 수의 고장난 관리 유닛의 표시에 응답하여, 캐시 관리 드라이버(209)는 미사용 영역(904)의 크기를 증가시킬 수 있다. 이는 예를 들면 미사용 영역(904)에서 사용가능한 공간이 크기가 관리 유닛이 고장일 때 조차 안정적인 상태를 유지할 수 있도록 한다.
도 7은 일부 실시예에 따른 순환 버퍼의 개략도이다. 캐시 버퍼(1005)는 상술된 바와 같이 오손, 미사용, 및 클린 영역으로 배열될 수 있다. 일부 실시예에서, SSD는 메타데이터용 또다른 순환 버퍼를 포함하고, 메타데이터 버퍼(1010)가 도 7에 도시된다. 메타데이터 버퍼(1010)는 캐시 관리 드라이버(209) 자체의 메타데이터를 저장할 수 있고, 이는 도 4 및 5를 참조하여 상술된 메타데이터와 상이하다. 예를 들면, 캐시 관리 드라이버(209)는 가속된 볼륨에 관한 정보를 업데이트하고, 부팅 시간에 요구될 수 있는 루트 메타데이터 포인터를 업데이트할 수 있다. 이러한 유형의 정보는 또한 순환 버퍼가 될 수 있는 메타데이터 버퍼(1010)에 저장될 수 있다.
일반적으로, 메타데이터 버퍼(1010)는 크기가 작을 수 있다(예를 들면, 일부 예시에서, 스토리지 공간을 할수 있는 적은 관리 유닛이 될 수 있는, 1-2MB). 메타데이터 버퍼(1010)는 또한 상술된 바와 같이 관리 유닛이 불용이 될 경우 미사용 영역의 크기가 성장할 수 있는 가용 크기가 될 수 있는 캐시 버퍼(1005)와는 반대로 고정된 크기가 될 수 있다. 메타데이터 버퍼(101)가 고정 크기를 가지기 때문에, 메타데이터 버퍼(1010)에 속하는 관리 유닛이 불용이 될 경우, 그것은 클린 및 비할당 관리 유닛으로부터 취해져야하는 또다른 유효 관리 유닛에 의해 대체될 수 있다. 따라서, 이는 클린 영역에서의 사용으로부터 관리 유닛을 제거하고, 캐시 버퍼(1005)의 클린 영역의 크기를 증가시키게 된다.
일부 실시예에서, 캐시 관리 드라이버(209)는 메타데이터 버퍼(101)에 저장하기 위해 SSD로 메타데이터를 전송하고, 순환 버퍼로서 메타데이터 버퍼를 사용하기 위해 메타데이터 버퍼(1010)에서의 지정된 관리 유닛을 소거하기 위한 지시를 포함하는 지시를 SSD로 전송한다. 일부 실시예에서, 소거되면, 메타데이터 버퍼(1010)에서 미리 사용된 관리 유닛은 변환층(806)에 의해 유지관리되는 가용한 관리 유닛의 공통 리스트로 삽입된다. 이러한 방식으로, 메타데이터 버퍼(1010)에서 사용되는 관리 유닛을 포함하는 모든 관리 유닛이 변환층(806)에 의해 관리되는 마모-레벨링에 포함될 수 있다.
도 1 및 2를 다시 참조하면, 가상화 API(808)의 일부 추가적인 상세사항이 기술된다. 일부 실시예에서, 가상화 API(808)에 의해 보조되는, 캐시 관리 드라이버와 변환층(806) 사이의 통신은 직접 기능 호출 인터페이스에 기초한다. 이러한 방식으로, 가상화 API(808)는 표준 IO 스택과 연관되는 오버헤드를 방지하는 것을 돕는다. 일부 실시예에서, 가상화 API(808)는 후속하는 함수 및 콜백의 일부 또는 모두를 포함한다. 특정 호출명의 사용은 예시일 뿐이며 한정을 의도하지 않는다.
FioQueryFlashInfo(). 상기 함수는 SSD 스토리지의 총 가용 크기, SSD 상의 관리 유닛의 크기, 및 비가용 관리 유닛의 최초 수를 반환한다. 이러한 정보를 이용하여, 캐시 관리 드라이버(209)는 캐시 버퍼(1005)(도 7)의 최초 크기를 설정하고, 캐시 버퍼(1005)의 오손, 미사용 및 클린 영역의 크기를 설정한다. 미사용 영역(510)(도 4) 또는 (904)(도 6)을 때때로 해제(free) 영역이라고 한다.
FioRegisterCallbacks(). 상기 함수는 SSD의 변환층으로부터 호출될 수 있는 콜백 함수에서의 포인터의 벡터를 정의할 수 있다.
FioSerMetadataBufferSize(). 상기 함수는 다수의 관리 유닛에 관하여 메타데이터 버퍼의 크기를 설정할 수 있다.
FioWrite(). 상기 함수는 기록 IO를 시작하고 예를 들면 메타데이터 또는 캐시 버퍼와 같은 버퍼 ID, 기록을 플레이싱하기 위한 버퍼에서의 오프셋, 기록될 데이터 길이, 메모리에서의 사용자 버퍼의 분산-집합(scatter-gather) 리스트, 및 쿠키를 포함할 수 있다.
FioRead(). 상기 함수는 판독 IO를 시작하고 예를 들면 메타데이터 또는 캐시 버퍼와 같은 버퍼 ID, 판독 위치를 위한 버퍼에서의 오프셋, 판독될 데이터 길이, 메모리에서의 사용자 버퍼의 분산-집합(scatter-gather) 리스트, 및 쿠키를 포함할 수 있다.
FioTrim(). 상기 함수는 SSD의 변환층으로 하여금 예를 들면 미사용 영역(904)에서 공간을 생성하기 위해 지정된 관리 유닛(예를 들면, 클린 포인터의 현재 위치에서 시작하는, 클린 영역(906)에서의 관리 유닛)을 소거하도록 강제한다. 일부 실시예에서, 함수는 예를 들면 메타데이터 또는 캐시 버퍼 ID와 같은 버퍼 ID, 소거될 위치에 대한 버퍼에서의 오프셋, 소거할 길이를 포함하고; 오프셋 및 길이 파라미터는 일반적으로 관리 유닛 경계로 정렬된다. 일부 실시예에서, 캐시 관리 드라이버는 관리 유닛의 크기를 획득하고 상기 API 함수를 통해 전송된 지시에서 사용될 오프셋 및 길이 파라미터를 판정하기 위해 FioQueryFlahInfo() 함수로 부터 반환된 정보를 활용한다.
FioQueryAvailableSpace(). 일부 실시예에서, 상기 함수는 배드 관리 유닛 제거후에 SSD에서의 가용한 공간의 크기를 반환한다.
FioCompletionCallback(). 일부 실시예에서, 상기 함수는 판독, 기록 또는 소거 연산 완료시 변환층(SSD에서)에 의해 호출된다. 일부 실시예에서, 상기 호출에 응답하여 변환층은 상태 및 쿠키를 수신한다. 일부 실시예에서, 상기 함수는 임의의 인터럽트된 문맥(context)으로 호출될 수 있다.
FioIncreaseFreeSizeCallback(). 일부 실시예에서, 상기 함수는 배드 관리 유닛이 발견되었을 때 변환층(SSD에서)에 의해 호출된다. 일부 실시예에서, 상기 함수는 비가용 관리 유닛의 총 크기를 캐시 관리 드라이버로 제공한다. 상기 함수는 임의의 문맥으로 호출될 수 있다. 일부 실시예에서, 상기 호출에 응답하여, 캐시 관리 드라이버는 캐시 버퍼의 미사용 영역(904)의 크기를 확장시킨다.
일부 실시예에서, 데이터 캐싱 방법이 하나 이상의 프로세서(206)(도 1), 하나 이상의 프로세서(206)에 의해 실행하는 하나 이상의 스토리지 관리 프로그램(예를 들면, 캐시 관리 드라이버(209))를 저장하는 메모리(208)(도 1), 컴퓨터 시스템의 하나 이상의 프로세서에 의해 전송되는 지시에 응답하는 컨트롤러(820)(도 2)를 포함하는 비휘발성 캐시 메모리(예를 들면, SSD(207)) 및 비휘발성 제 2 스토리지(215)를 가지는 각각의 컴퓨터 시스템(예를 들면, 도 1에 도시된 시스템(200)의 서버(205))에 의해 수행된다. 일부 실시예에서, 상기 방법은 비휘발성 캐시 메모리에서의 가용한 스토리지 크기를 식별하고 비휘발성 캐시 메모리에서의 관리 유닛의 크기를 식별하는 정보를 비휘발성 캐시 메모리로부터 수신하는 단계를 포함한다. 상기 제공된 예시에서, 상기 정보는 FioQueryFlashInfo() 함수를 이용하여 획득된다.
본 방법은 각각의 식별된 기록 요청이 어드레스 또는 스토리지 오프셋 및 기록 데이터를 포함하는, 비휘발성 캐시 메모리로의 기록 데이터에 대한 기록 요청을 식별하는 단계를 더 포함한다. 예를 들면, 일부 실시예에서, 비휘발성 캐시 메모리로의 데이터 기록을 위한 기록 요청을 식별하는 단계는 비휘발성 스토리지로의 기록 데이터에 대한 기록 요청을 수신하는 단계로서, 각각의 기록 요청이 어드레스 또는 스토리지 오프셋과 기록 데이터를 포함하는 단계, 및 캐싱 기준에 따라 수신된 기록 요청의 서브셋을 식별하는 단계를 포함한다.
상기 방법은 식별된 기록 요청에 대한 기록 데이터를 비휘발성 캐시 메모리로 순차적으로 기록하는 단계를 더 포함한다. 순차적으로 기록 데이터를 비휘발성 캐시 메모리에 기록하는 단계는, 기록 데이터가 기록 데이터의 어드레스 또는 오프셋에 대해 어떻게 랜덤하게 분산되는 지에 관해 고려하지 않고서, 비휘발성 캐시 메모리의 어드레스 공간에서의 순차적으로 배열된 위치에 기록하는 단계를 포함한다. 예를 들면, 일부 실시예에서, 기록 데이터의 어드레스 또는 오프셋은 컴퓨터 시스템에 의해 사용되는 제 2 스토리지(215)의 어드레스 또는 어드레스 공간에서의 오프셋이다.
상기 방법은 기록 데이터의 어드레스 또는 스토리지 오프셋을 비휘발성 캐시 메모리의 어드레스 공간에서의 각각의 위치로 맵핑하는 메타데이터를 컴퓨터 시스템에 저장하는 단계를 더 포함한다.
일부 실시예에서, 상기 방법은 컴퓨터 시스템에서 기록 포인터, 클린 포인터 및 플러시 포인터(예를 들면, 도 4 및 5 참조)를 관리하는 단계를 포함하고, 상기 포인터들은 비휘발성 캐시 메모리의 미사용, 클린 및 오손 영역의 경계에 대응한다. 포인터들은 비휘발성 캐시 메모리에서의 가용한 관리 유닛의 미리정의된 순서의 상이한 위치들을 식별한다. 포인터들을 관리하는 단계는 기록 데이터가 비휘발성 캐시 메모리로 순차적으로 기록될 때 기록 포인터를 전진시키는 단계를 포함한다.
일부 실시예에서, 비휘발성 캐시 메모리에서의 가용한 스토리지 크기를 식별하는 수신된 정보는 비휘발성 캐시 메모리의 어드레스 공간의 크기를 식별하는 정보 및 비휘발성 캐시 메모리에서의 비가용(예를 들면, 결함이 있는) 관리 유닛에 대응하는 어드레스 공간의 크기를 식별하는 정보를 포함한다. 일부 실시예에서, 비휘발성 캐시 메모리의 상기 어드레스 공간의 크기는 상기 방법의 고정된 쓰루풋 성능을 유지시킨다. 추가로, 일부 실시예에서, 기록, 클린 및 플러시 포인터를 관리하는 단계는 비휘발성 캐시 메모리에서의 비가용 관리 유닛에 대응하는 어드레스 공간의 크기보다 더 큰 크기로 미사용 영역을 유지관리하도록 상기 포인터들을 관리하는 단계를 포함한다.
일부 실시예에서, 기록, 클린 및 플러시 포인터를 관리하는 단계는 비휘발성 캐시 메모리의 오손 영역에서의 데이터를 상기 비휘발성 제 2 스토리지로 플러시하고, 상기 플러시 포인터를 전진시켜 클린 및 오손 영역의 공유된 경계를 이동시키는 지시를 비휘발성 캐시 메모리로 전송하는 단계를 포함한다.
일부 실시예에서, 기록, 클린 및 플러시 포인터를 관리하는 단계는 비휘발성 캐시 메모리의 클린 영역에서의 데이터를 무효화시키고, 상기 클린 포인터를 전진시켜 클린 및 미사용 영역의 공유된 경계를 이동시키는 지시를 비휘발성 캐시 메모리로 전송하는 단계를 포함한다. 일부 실시예에서, 클린 영역에서의 데이터를 무효화시키는 지시는 비휘발성 캐시 메모리에서의 대응하는 관리 유닛을 소거하는 지시이다.
일부 실시예에서, 비휘발성 캐시 메모리에서의 가용한 스토리지 크기를 식별하는 상술한 수신된 정보는 비휘발성 캐시 메모리의 어드레스 공간의 크기를 식별하는 정보를 포함한다.
일부 실시예에서, 비휘발성 캐시 메모리의 어드레스 공간은 비휘발성 캐시 메모리에서의 물리적 메모리로 비휘발성 캐시 메모리에 의해 맵핑된 연속한 가상 어드레스 공간이다. 일부 실시예에서, 비휘발성 캐시 메모리의 어드레스 공간은 가상 어드레스 공간이고, 식별된 기록 요청에서의 어드레스 또는 스토리지 오프셋은 비휘발성 제 2 스토리지의 어드레스 또는 어드레스 공간에서의 오프셋이다.
일부 실시예에서, 비휘발성 캐시 메모리는 솔리드 스테이트 스토리지(예를 들면, 하나 이상의 솔리트 스테이트 스토리지 디바이스를 이용하여 구현되는)이다. 일부 실시예에서, 비휘발성 캐시 메모리는 플래시 메모리이다. 일부 실시예에서, 비휘발성 제 2 스토리지는 하나 이상의 하드디스크 스토리지 디바이스를 이용하여 구현된다.
일부 실시예에서, 컴퓨터 시스템은 하나 이상의 스토리지 관리 프로그램을 포함하는 하나 이상의 프로그램을 저장하는 메모리, 메모리에 저장된 하나 이상의 프로그램에서의 명령어를 실행하는 하나 이상의 프로세서, 비휘발성 제 2 스토리지로의 인터페이스, 및 비휘발성 캐시 메모리를 포함한다. 비휘발성 캐시 메모리는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 전송되는 지시에 응답하는 컨트롤러를 포함한다. 하나 이상의 스토리지 관리 프로그램은 하나 이상의 프로세서에 의해 실행될 때 컴퓨터 시스템으로 하여금 상술한 방법 중 임의의 방법을 수행하도록 하는 명령어를 포함한다.
일부 실시예에서, 하나 이상의 스토리지 관리 프로그램을 저장하는 비휘발성 컴퓨터 판독가능 스토리지 매체는, 하나 이상의 프로세서, 비휘발성 제 2 스토리지 및 비휘발성 캐시 메모리를 포함하는 컴퓨터 시스템의 하나 이상의 프로그램에 의해 실행될 때, 컴퓨터 시스템으로 하여금 상술한 방법 중 임의의 방법을 수행하도록 하는 명령어를 포함하고, 비휘발성 캐시 메모리는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 전송된 지시에 응답하는 컨트롤러를 포함한다.
따라서, 상술한 일부 실시예는 플래시 디바이스와 같은 SSD의 간략화된 또는 감소된 기능의 변환층을 허용한다. 특히, 어드레스 변환에 대해, SSD의 변환층은 SSD로부터의 지시에서 수신된 가상 어드레스 또는 오프셋을 SSD에서의 관리 유닛으로 맵핑하는 것 만을 필요로하고, 마모-레벨링을 제외하고는 결함있는 관리 유닛을 이용하는 것을 방지하기 위해 스토리지 시스템 어드레스 또는 내부 어드레스 또는 오프셋에 대한 오프셋으로부터의 변환을 제어할 필요가 없다.
상기로부터, 본 발명의 특정한 실시예가 예시의 목적으로 본문에 기술되었지만, 다양한 변형이 본 발명의 취지와 범위를 벗어나지 않고서 이루어질 수 있다는 것이 이해될 것이다.

Claims (20)

  1. 하나 이상의 프로세서, 상기 하나 이상의 프로세서에 의해 실행되는 하나 이상의 스토리지 관리 프로그램을 저장하는 메모리, 비휘발성 캐시 메모리, 비휘발성 제 2 스토리지에 대한 인터페이스를 포함하는 컴퓨터 시스템에서 데이터를 캐싱하는 방법으로서,
    데이터 기록을 위한 두 개 이상의 기록 요청을 식별하는 단계 - 상기 두 개 이상의 식별된 기록 요청들의 각각의 기록 요청은 기록 데이터 및 상기 비휘발성 제 2 스토리지의 스토리지 오프셋 또는 어드레스를 포함함 - ;
    상기 두 개 이상의 식별된 기록 요청에 대해 기록 데이터를 상기 비휘발성 캐시 메모리 내의 순차적인 위치들에 순차적으로 기록하는 단계; 및
    상기 두 개 이상의 식별된 기록 요청에 대응하는 기록 데이터에 대한 상기 비휘발성 제 2 스토리지의 스토리지 오프셋들 또는 어드레스들을 상기 비휘발성 캐시 메모리 내의 순차적인 위치들에 맵핑하는 메타데이터를 상기 컴퓨터 시스템의 메모리에 저장하는 단계
    를 포함하고,
    상기 컴퓨터 시스템의 메모리는 상기 비휘발성 제 2 스토리지와 상이하고 상기 비휘발성 캐시 메모리와 상이하며, 상기 비휘발성 제 2 스토리지는 상기 비휘발성 캐시 메모리와 상이하고,
    상기 방법은,
    상기 컴퓨터 시스템에서, 상기 비휘발성 캐시 메모리의 미사용 영역의 경계에 대응하는 기록 포인터, 상기 비휘발성 캐시 메모리의 클린(clean) 영역의 경계에 대응하는 클린 포인터, 및 상기 비휘발성 캐시 메모리의 클린 영역 및 오손(dirty) 영역의 경계에 대응하는 플러시 포인터를 유지하는 단계 - 상기 클린 영역은 상기 비휘발성 제 2 스토리지에 플러시되고 상기 컴퓨터 시스템에 의해 상기 비휘발성 캐시 메모리로부터 판독될 수 있는 데이터를 저장하고, 상기 오손 영역은 상기 비휘발성 제 2 스토리지에 플러시되지 않고 상기 컴퓨터 시스템에 의해 상기 비휘발성 캐시 메모리로부터 판독될 수 있는 데이터를 저장하며, 상기 기록 포인터, 클린 포인터 및 플러시 포인터는 상기 비휘발성 캐시 메모리 내의 상이한 위치들을 식별하고, 상기 기록 포인터를 유지하는 것은 기록 데이터가 순차적으로 상기 비휘발성 캐시 메모리에 기록되면서 상기 기록 포인터를 전진시키는 것을 포함함 -
    를 더 포함하고,
    상기 방법은,
    상기 비휘발성 캐시 메모리의 가용한 스토리지 크기를 식별하는 정보, 및 상기 비휘발성 캐시 메모리의 어드레스 공간의 크기 및 상기 비휘발성 캐시 메모리에서의 비가용 관리 유닛들에 대응하는 상기 어드레스 공간의 크기를 식별하는 정보를 수신하는 단계
    를 더 포함하고,
    상기 비휘발성 캐시 메모리의 상기 어드레스 공간의 크기는 상기 방법의 실행 동안 고정되고,
    상기 유지하는 단계는 상기 비휘발성 캐시 메모리 내의 비가용 관리 유닛들에 대응하는 상기 어드레스 공간의 크기보다 더 큰 크기로 상기 미사용 영역을 유지하도록 상기 포인터들을 유지하는 단계를 더 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  2. 제1항에 있어서, 상기 비휘발성 캐시 메모리로의 데이터 기록을 위한 상기 기록 요청들을 식별하는 단계는:
    비휘발성 스토리지로의 데이터 기록을 위한 기록 요청들을 수신하는 단계 - 각각의 기록 요청은 어드레스 또는 스토리지 오프셋과 기록 데이터를 포함함 - ; 및
    캐싱 기준에 따라 수신된 기록 요청들의 서브셋을 식별하는 단계
    를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  3. 제1항 또는 제2항에 있어서, 상기 순차적으로 기록하는 단계는, 상기 기록 데이터와 연관된 상기 비휘발성 제 2 스토리지 내의 스토리지 오프셋들 또는 어드레스들을 고려하지 않고, 상기 비휘발성 캐시 메모리 내의 순차적인 위치들을 식별하는 기록 지시들을 상기 비휘발성 캐시 메모리의 컨트롤러로 전송하는 단계를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  4. 제1항 또는 제2항에 있어서, 상기 유지하는 단계는, 상기 비휘발성 캐시 메모리의 오손 영역 내의 데이터를 상기 비휘발성 제 2 스토리지로 플러시하고, 상기 플러시 포인터를 전진시켜 상기 클린 영역 및 오손 영역의 공유된 경계를 이동시키라는 지시를 상기 비휘발성 캐시 메모리로 전송하는 단계를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  5. 제1항 또는 제2항에 있어서, 상기 유지하는 단계는, 상기 비휘발성 캐시 메모리의 클린 영역에서의 데이터를 무효화하고(invalidate), 상기 클린 포인터를 전진시켜 상기 클린 영역 및 미사용 영역의 공유된 경계를 이동시키라는 지시를 상기 비휘발성 캐시 메모리로 전송하는 단계를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  6. 제5항에 있어서, 상기 클린 영역에서의 데이터를 무효화하라는 지시는 상기 비휘발성 캐시 메모리에서의 대응하는 관리 유닛들을 소거하라는 지시를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  7. 제1항 또는 제2항에 있어서, 상기 비휘발성 캐시 메모리의 어드레스 공간은 상기 비휘발성 캐시 메모리에 의해 상기 비휘발성 캐시 메모리 내의 물리적 메모리에 맵핑되는 연속한 가상 어드레스 공간을 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  8. 제1항 또는 제2항에 있어서, 상기 비휘발성 캐시 메모리의 어드레스 공간은 가상 어드레스 공간을 포함하고, 상기 식별된 기록 요청들 내의 어드레스 또는 스토리지 오프셋은 상기 비휘발성 제 2 스토리지의 어드레스 공간에서의 어드레스들 또는 오프셋들을 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  9. 제1항 또는 제2항에 있어서, 상기 비휘발성 캐시 메모리는 솔리드 스테이트 스토리지를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  10. 제1항 또는 제2항에 있어서, 상기 비휘발성 캐시 메모리는 플래시 메모리를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  11. 제1항 또는 제2항에 있어서, 상기 비휘발성 제 2 스토리지는 하나 이상의 하드디스크 스토리지 디바이스를 포함하는, 컴퓨터 시스템에서 데이터를 캐싱하는 방법.
  12. 컴퓨터 시스템으로서,
    하나 이상의 스토리지 관리 프로그램을 포함하는 하나 이상의 프로그램을 저장하는 메모리;
    메모리에 저장된 상기 하나 이상의 프로그램 내의 명령어들을 실행하는 하나 이상의 프로세서;
    비휘발성 제 2 스토리지에 대한 인터페이스; 및
    비휘발성 캐시 메모리
    를 포함하고,
    상기 비휘발성 캐시 메모리는 컴퓨터 시스템의 상기 하나 이상의 프로세서에 의해 전송되는 지시에 응답하는 컨트롤러를 포함하고,
    상기 하나 이상의 스토리지 관리 프로그램은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    데이터 기록을 위한 두 개 이상의 기록 요청을 식별하고 - 상기 두 개 이상의 식별된 기록 요청들의 각각의 기록 요청은 기록 데이터 및 상기 비휘발성 제 2 스토리지의 스토리지 오프셋 또는 어드레스를 포함함 - ;
    상기 두 개 이상의 식별된 기록 요청에 대한 기록 데이터를 상기 비휘발성 캐시 메모리의 순차적인 위치들에 순차적으로 기록하고;
    상기 두 개 이상의 식별된 기록 요청에 대응하는 기록 데이터에 대한 상기 비휘발성 제 2 스토리지의 스토리지 오프셋들 또는 어드레스들을 상기 비휘발성 캐시 메모리 내의 순차적인 위치들에 맵핑하는 메타데이터를 상기 컴퓨터 시스템의 메모리에 저장
    하게 하는 명령어들을 포함하고,
    상기 컴퓨터 시스템의 메모리는 상기 비휘발성 제 2 스토리지와 상이하고 상기 비휘발성 캐시 메모리와 상이하며, 상기 비휘발성 제 2 스토리지는 상기 비휘발성 캐시 메모리와 상이하고,
    상기 하나 이상의 스토리지 관리 프로그램은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    상기 컴퓨터 시스템에서, 상기 비휘발성 캐시 메모리의 미사용 영역의 경계에 대응하는 기록 포인터, 상기 비휘발성 캐시 메모리의 클린 영역의 경계에 대응하는 클린 포인터, 및 상기 비휘발성 캐시 메모리의 클린 영역 및 오손 영역의 경계에 대응하는 플러시 포인터를 유지하게 - 상기 클린 영역은 상기 비휘발성 제 2 스토리지에 플러시되고 상기 컴퓨터 시스템에 의해 상기 비휘발성 캐시 메모리로부터 판독될 수 있는 데이터를 저장하고, 상기 오손 영역은 상기 비휘발성 제 2 스토리지에 플러시되지 않고 상기 컴퓨터 시스템에 의해 상기 비휘발성 캐시 메모리로부터 판독될 수 있는 데이터를 저장하며, 상기 기록 포인터, 클린 포인터 및 플러시 포인터는 상기 비휘발성 캐시 메모리 내의 상이한 위치들을 식별하고, 상기 기록 포인터를 유지하는 것은 기록 데이터가 순차적으로 상기 비휘발성 캐시 메모리에 기록되면서 상기 기록 포인터를 전진시키는 것을 포함함 -
    하는 명령어들을 더 포함하고,
    상기 하나 이상의 스토리지 관리 프로그램은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    상기 비휘발성 캐시 메모리의 가용한 스토리지 크기를 식별하는 정보, 및 상기 비휘발성 캐시 메모리의 어드레스 공간의 크기 및 상기 비휘발성 캐시 메모리에서의 비가용 관리 유닛들에 대응하는 상기 어드레스 공간의 크기를 식별하는 정보를 수신하게
    하는 명령어들을 더 포함하고,
    상기 비휘발성 캐시 메모리의 상기 어드레스 공간의 크기는 고정되고,
    상기 유지하는 것은 상기 비휘발성 캐시 메모리 내의 비가용 관리 유닛들에 대응하는 상기 어드레스 공간의 크기보다 더 큰 크기로 상기 미사용 영역을 유지하도록 상기 포인터들을 유지하는 것을 더 포함하는, 컴퓨터 시스템.
  13. 제12항에 있어서, 상기 비휘발성 캐시 메모리로의 데이터 기록을 위한 상기 기록 요청들을 식별하는 것은:
    비휘발성 스토리지로의 데이터 기록을 위한 기록 요청들을 수신하는 것 - 각각의 기록 요청은 어드레스 또는 스토리지 오프셋과 기록 데이터를 포함함 - ; 및
    캐싱 기준에 따라 수신된 기록 요청들의 서브셋을 식별하는 것
    을 포함하는, 컴퓨터 시스템.
  14. 제12항 또는 제13항에 있어서, 상기 순차적으로 기록하는 것은, 상기 기록 데이터와 연관된 상기 비휘발성 제 2 스토리지 내의 스토리지 오프셋들 또는 어드레스들을 고려하지 않고, 상기 비휘발성 캐시 메모리 내의 순차적인 위치들을 식별하는 기록 지시들을 상기 비휘발성 캐시 메모리의 컨트롤러로 전송하는 것을 포함하는, 컴퓨터 시스템.
  15. 명령어들을 포함하는 하나 이상의 스토리지 관리 프로그램을 저장하는 비휘발성 컴퓨터 판독가능 스토리지 매체로서,
    상기 명령어들은, 컴퓨터 시스템 - 상기 컴퓨터 시스템은 하나 이상의 프로세서, 비휘발성 제 2 스토리지 및 비휘발성 캐시 메모리를 포함하고, 상기 비휘발성 캐시 메모리는 상기 컴퓨터 시스템의 상기 하나 이상의 프로세서에 의해 전송된 지시에 응답하는 컨트롤러를 포함함 - 의 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    데이터 기록을 위한 두 개 이상의 기록 요청을 식별하고 - 상기 두 개 이상의 식별된 기록 요청의 각각의 기록 요청은 기록 데이터 및 상기 비휘발성 제 2 스토리지의 스토리지 오프셋 또는 어드레스를 포함함 - ;
    상기 두 개 이상의 식별된 기록 요청에 대한 기록 데이터를 상기 비휘발성 캐시 메모리 내의 순차적인 위치들에 순차적으로 기록하고;
    상기 두 개 이상의 식별된 기록 요청에 대응하는 기록 데이터에 대한 상기 비휘발성 제 2 스토리지의 스토리지 오프셋들 또는 어드레스들을 상기 비휘발성 캐시 메모리 내의 순차적인 위치들에 맵핑하는 메타데이터를 상기 컴퓨터 시스템의 메모리에 저장
    하게 하는 명령어들을 포함하고,
    상기 컴퓨터 시스템의 메모리는 상기 비휘발성 제 2 스토리지와 상이하고 상기 비휘발성 캐시 메모리와 상이하며, 상기 비휘발성 제 2 스토리지는 상기 비휘발성 캐시 메모리와 상이하고,
    상기 하나 이상의 스토리지 관리 프로그램은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    상기 컴퓨터 시스템에서, 상기 비휘발성 캐시 메모리의 미사용 영역의 경계에 대응하는 기록 포인터, 상기 비휘발성 캐시 메모리의 클린 영역의 경계에 대응하는 클린 포인터, 및 상기 비휘발성 캐시 메모리의 클린 영역 및 오손 영역의 경계에 대응하는 플러시 포인터를 유지하게 - 상기 클린 영역은 상기 비휘발성 제 2 스토리지에 플러시되고 상기 컴퓨터 시스템에 의해 상기 비휘발성 캐시 메모리로부터 판독될 수 있는 데이터를 저장하고, 상기 오손 영역은 상기 비휘발성 제 2 스토리지에 플러시되지 않고 상기 컴퓨터 시스템에 의해 상기 비휘발성 캐시 메모리로부터 판독될 수 있는 데이터를 저장하며, 상기 기록 포인터, 클린 포인터 및 플러시 포인터는 상기 비휘발성 캐시 메모리 내의 상이한 위치들을 식별하고, 상기 기록 포인터를 유지하는 것은 기록 데이터가 순차적으로 상기 비휘발성 캐시 메모리에 기록되면서 상기 기록 포인터를 전진시키는 것을 포함함 -
    하는 명령어들을 더 포함하고,
    상기 하나 이상의 스토리지 관리 프로그램은, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금:
    상기 비휘발성 캐시 메모리의 가용한 스토리지 크기를 식별하는 정보, 및 상기 비휘발성 캐시 메모리의 어드레스 공간의 크기 및 상기 비휘발성 캐시 메모리에서의 비가용 관리 유닛에 대응하는 상기 어드레스 공간의 크기를 식별하는 정보를 수신하게
    하는 명령어들을 더 포함하고,
    상기 비휘발성 캐시 메모리의 상기 어드레스 공간의 크기는 고정되고,
    상기 유지하는 것은 상기 비휘발성 캐시 메모리 내의 비가용 관리 유닛들에 대응하는 상기 어드레스 공간의 크기보다 더 큰 크기로 상기 미사용 영역을 유지하도록 상기 포인터들을 유지하는 것을 더 포함하는, 비휘발성 컴퓨터 판독가능 스토리지 매체.
  16. 제15항에 있어서, 상기 비휘발성 캐시 메모리로의 데이터 기록을 위한 상기 기록 요청들을 식별하는 것은:
    비휘발성 스토리지로의 데이터 기록을 위한 기록 요청들을 수신하는 것 - 각각의 기록 요청은 어드레스 또는 스토리지 오프셋과 기록 데이터를 포함함 - ; 및
    캐싱 기준에 따라 수신된 기록 요청들의 서브셋을 식별하는 것
    을 포함하는, 비휘발성 컴퓨터 판독가능 스토리지 매체.
  17. 제15항 또는 제16항에 있어서, 상기 순차적으로 기록하는 것은, 상기 기록 데이터와 연관된 상기 비휘발성 제 2 스토리지 내의 스토리지 오프셋들 또는 어드레스들을 고려하지 않고, 상기 비휘발성 캐시 메모리 내의 순차적인 위치들을 식별하는 기록 지시들을 상기 비휘발성 캐시 메모리의 컨트롤러로 전송하는 것을 포함하는, 비휘발성 컴퓨터 판독가능 스토리지 매체.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020147006571A 2011-08-12 2012-08-10 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리 KR101824295B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161523155P 2011-08-12 2011-08-12
US61/523,155 2011-08-12
US13/572,486 2012-08-10
PCT/US2012/050424 WO2013025540A1 (en) 2011-08-12 2012-08-10 Cache management including solid state device virtualization
US13/572,486 US9323659B2 (en) 2011-08-12 2012-08-10 Cache management including solid state device virtualization

Publications (2)

Publication Number Publication Date
KR20140053309A KR20140053309A (ko) 2014-05-07
KR101824295B1 true KR101824295B1 (ko) 2018-01-31

Family

ID=47678264

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006571A KR101824295B1 (ko) 2011-08-12 2012-08-10 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리

Country Status (4)

Country Link
US (1) US9323659B2 (ko)
EP (1) EP2742428B1 (ko)
KR (1) KR101824295B1 (ko)
WO (1) WO2013025540A1 (ko)

Families Citing this family (217)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8489855B2 (en) * 2010-05-07 2013-07-16 Ocz Technology Group Inc. NAND flash-based solid state drive and method of operation
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
WO2013028854A1 (en) 2011-08-24 2013-02-28 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US11048410B2 (en) 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
US9606929B2 (en) * 2011-11-08 2017-03-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Simulated NVRAM
CN106201348B (zh) * 2012-06-20 2019-08-20 华为技术有限公司 非易失性存储设备的缓存管理方法及装置
US9367480B2 (en) 2012-08-07 2016-06-14 Dell Products L.P. System and method for updating data in a cache
US9549037B2 (en) 2012-08-07 2017-01-17 Dell Products L.P. System and method for maintaining solvency within a cache
US9311240B2 (en) 2012-08-07 2016-04-12 Dell Products L.P. Location and relocation of data within a cache
US9852073B2 (en) 2012-08-07 2017-12-26 Dell Products L.P. System and method for data redundancy within a cache
US9495301B2 (en) * 2012-08-07 2016-11-15 Dell Products L.P. System and method for utilizing non-volatile memory in a cache
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US9311014B2 (en) * 2012-11-29 2016-04-12 Infinidat Ltd. Storage system and methods of mapping addresses of snapshot families
US20140258628A1 (en) * 2013-03-11 2014-09-11 Lsi Corporation System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
US9672237B2 (en) 2013-03-15 2017-06-06 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US10180951B2 (en) * 2013-03-15 2019-01-15 Amazon Technologies, Inc. Place snapshots
US9514007B2 (en) 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9501501B2 (en) 2013-03-15 2016-11-22 Amazon Technologies, Inc. Log record management
US10747746B2 (en) 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas
US9760596B2 (en) 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
US9208032B1 (en) 2013-05-15 2015-12-08 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US10303564B1 (en) 2013-05-23 2019-05-28 Amazon Technologies, Inc. Reduced transaction I/O for log-structured storage systems
US9047189B1 (en) 2013-05-28 2015-06-02 Amazon Technologies, Inc. Self-describing data blocks of a minimum atomic write size for a data store
CN103543955A (zh) * 2013-08-05 2014-01-29 记忆科技(深圳)有限公司 利用固态硬盘作为设备读缓存的方法、***及固态硬盘
US10216949B1 (en) 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US9460008B1 (en) 2013-09-20 2016-10-04 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US10223184B1 (en) 2013-09-25 2019-03-05 Amazon Technologies, Inc. Individual write quorums for a log-structured distributed storage system
US9699017B1 (en) 2013-09-25 2017-07-04 Amazon Technologies, Inc. Dynamic utilization of bandwidth for a quorum-based distributed storage system
US9880933B1 (en) 2013-11-20 2018-01-30 Amazon Technologies, Inc. Distributed in-memory buffer cache system using buffer cache nodes
US9223843B1 (en) 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9665533B2 (en) 2013-12-20 2017-05-30 Rambus Inc. Blob pools, selectors, and command set implemented within a memory appliance for accessing memory
US10452306B1 (en) * 2013-12-31 2019-10-22 EMC IP Holding Company LLC Method and apparatus for asymmetric raid
US10055352B2 (en) * 2014-03-11 2018-08-21 Amazon Technologies, Inc. Page cache write logging at block-based storage
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
US9294567B2 (en) 2014-05-02 2016-03-22 Cavium, Inc. Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller
US9430268B2 (en) 2014-05-02 2016-08-30 Cavium, Inc. Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers
US9529773B2 (en) 2014-05-02 2016-12-27 Cavium, Inc. Systems and methods for enabling access to extensible remote storage over a network as local storage via a logical storage controller
US20150317176A1 (en) * 2014-05-02 2015-11-05 Cavium, Inc. Systems and methods for enabling value added services for extensible storage devices over a network via nvme controller
US10339079B2 (en) * 2014-06-02 2019-07-02 Western Digital Technologies, Inc. System and method of interleaving data retrieved from first and second buffers
KR101507093B1 (ko) 2014-06-03 2015-03-30 중원대학교 산학협력단 정전에서 지속 가능한 읽기 및 쓰기 캐시 장치 및 방법
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US20160077942A1 (en) * 2014-09-12 2016-03-17 Celestica Technology Consultancy (Shanghai) Co., Ltd. Storage system and test method for testing pci express interface
US9921750B2 (en) 2014-11-20 2018-03-20 Samsung Electronics Co., Ltd. Solid state drive (SSD) memory cache occupancy prediction
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
WO2016174729A1 (ja) * 2015-04-28 2016-11-03 株式会社日立製作所 ストレージ装置
US10007446B2 (en) * 2015-05-05 2018-06-26 Macronix International Co., Ltd. Method, apparatus, and storage medium for writing data into persistent storage device
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
JP6398102B2 (ja) * 2015-05-29 2018-10-03 東芝メモリ株式会社 メモリシステム
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR102435863B1 (ko) * 2015-09-16 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10209899B2 (en) 2015-11-06 2019-02-19 Microsoft Technology Licensing, Llc Storage virtualization offload
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
CN107463509B (zh) * 2016-06-05 2020-12-15 华为技术有限公司 缓存管理方法、缓存控制器以及计算机***
US10430081B2 (en) * 2016-06-28 2019-10-01 Netapp, Inc. Methods for minimizing fragmentation in SSD within a storage system and devices thereof
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
KR102667430B1 (ko) 2016-08-04 2024-05-23 삼성전자주식회사 호스트 메모리를 이용하는 데이터 저장 장치 및 그것의 동작 방법
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
CN108369530B (zh) 2016-12-05 2021-06-15 华为技术有限公司 非易失性高速传输总线架构中数据读写命令的控制方法、设备和***
CN110413542B (zh) * 2016-12-05 2023-08-22 华为技术有限公司 NVMe over Fabric架构中数据读写命令的控制方法、设备和***
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US10223271B2 (en) * 2017-03-31 2019-03-05 Intel Corporation Apparatus, computer program product, and method to perform cache operations in a solid state drive
CN108664213B (zh) * 2017-03-31 2024-01-19 北京忆恒创源科技股份有限公司 基于分布式缓存的原子写命令处理方法与固态存储设备
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US9905294B1 (en) 2017-05-03 2018-02-27 Seagate Technology Llc Writing logically offset pages of data to N-level memory cells coupled to a common word line
KR102259256B1 (ko) 2017-05-16 2021-06-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR101968474B1 (ko) * 2017-06-02 2019-04-15 주식회사 애포샤 플래시 캐시에서 트랜잭션 지원 방법 및 장치
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US10339073B2 (en) * 2017-06-29 2019-07-02 Keysight Technologies, Inc. Systems and methods for reducing write latency
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
CN107515827B (zh) * 2017-08-21 2021-07-27 湖南国科微电子股份有限公司 Pcie ssd自定义日志的存储方法、装置及ssd
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US11914571B1 (en) 2017-11-22 2024-02-27 Amazon Technologies, Inc. Optimistic concurrency for a multi-writer database
CN108182119B (zh) * 2017-11-28 2022-11-08 腾讯科技(深圳)有限公司 读写分离控制方法和装置、存储介质及电子装置
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
TWI714830B (zh) * 2018-02-13 2021-01-01 緯穎科技服務股份有限公司 目錄資料的管理方法與記憶體裝置
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10817430B2 (en) * 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN111124255B (zh) * 2018-10-31 2023-09-08 伊姆西Ip控股有限责任公司 数据存储方法、电子设备和计算机程序产品
US11308203B2 (en) * 2019-01-11 2022-04-19 Microsoft Technology Licensing, Llc Side-channel protection
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11036594B1 (en) 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
US11029855B1 (en) * 2019-10-01 2021-06-08 Datacore Software Corporation Containerized storage stream microservice
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11074202B1 (en) * 2020-02-26 2021-07-27 Red Hat, Inc. Efficient management of bus bandwidth for multiple drivers
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11341163B1 (en) 2020-03-30 2022-05-24 Amazon Technologies, Inc. Multi-level replication filtering for a distributed database
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
CN111596865B (zh) * 2020-05-22 2023-07-14 浙江大华技术股份有限公司 一种存储处理方法及装置
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11262918B1 (en) 2020-09-30 2022-03-01 Amazon Technologies, Inc. Data storage system with uneven drive wear reduction
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11496595B2 (en) * 2021-02-02 2022-11-08 Dell Products L.P. Proxy management controller system
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US20230126253A1 (en) * 2021-10-22 2023-04-27 EMC IP Holding Company, LLC Systems and Methods for Utilizing Write-Cache for Significant Reduction in RPO for Asynchronous Replication
CN114063921B (zh) * 2021-11-12 2023-06-27 福建师范大学 一种基于强化学习的固态硬盘映射记录缓存管理方法
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US20080162795A1 (en) 2006-12-28 2008-07-03 Genesys Logic, Inc. Hard disk cache device and method
US7577783B2 (en) 2005-05-04 2009-08-18 Apacer Technology Inc. Portable data storage device and method of dynamic memory management therefor

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809527A (en) 1993-12-23 1998-09-15 Unisys Corporation Outboard file cache system
JP3197815B2 (ja) * 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
US5832515A (en) 1996-09-12 1998-11-03 Veritas Software Log device layered transparently within a filesystem paradigm
US6427163B1 (en) 1998-07-10 2002-07-30 International Business Machines Corporation Highly scalable and highly available cluster system management scheme
US6209058B1 (en) 1999-01-27 2001-03-27 Quantum Corp. Cache management for data transfer control from target disk areas
US6535949B1 (en) 1999-04-19 2003-03-18 Research In Motion Limited Portable electronic device having a log-structured file system in flash memory
US6553401B1 (en) 1999-07-09 2003-04-22 Ncr Corporation System for implementing a high volume availability server cluster including both sharing volume of a mass storage on a local site and mirroring a shared volume on a remote site
US6609177B1 (en) 1999-11-12 2003-08-19 Maxtor Corporation Method and apparatus for extending cache history
US6490651B1 (en) 2000-03-14 2002-12-03 Maxtor Corporation Host-based virtual disk drive for improving the performance of a hard disk drive's input/output
US6865650B1 (en) 2000-09-29 2005-03-08 Emc Corporation System and method for hierarchical data storage
US7249118B2 (en) 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US20070033356A1 (en) * 2005-08-03 2007-02-08 Boris Erlikhman System for Enabling Secure and Automatic Data Backup and Instant Recovery
KR100755702B1 (ko) 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
US7549021B2 (en) * 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
US20090210631A1 (en) 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
JP5102299B2 (ja) 2006-09-28 2012-12-19 サンディスク テクノロジィース インコーポレイテッド メモリカードの寿命末期の回復およびサイズ変更
US8706968B2 (en) * 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US20080147974A1 (en) 2006-12-18 2008-06-19 Yahoo! Inc. Multi-level caching system
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US8024525B2 (en) 2007-07-25 2011-09-20 Digi-Data Corporation Storage control unit with memory cache protection via recorded log
US7725646B2 (en) * 2007-08-02 2010-05-25 Alcatel Lucent Method of using a flash memory for a circular buffer
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US8275815B2 (en) 2008-08-25 2012-09-25 International Business Machines Corporation Transactional processing for clustered file systems
US8914567B2 (en) 2008-09-15 2014-12-16 Vmware, Inc. Storage management system for virtual machines
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8312204B2 (en) * 2009-01-23 2012-11-13 Seagate Technology Llc System and method for wear leveling in a data storage device
US8762642B2 (en) 2009-01-30 2014-06-24 Twinstrata Inc System and method for secure and reliable multi-cloud data replication
US20100205367A1 (en) * 2009-02-09 2010-08-12 Ehrlich Richard M Method And System For Maintaining Cache Data Integrity With Flush-Cache Commands
US8566531B2 (en) 2009-08-21 2013-10-22 Google Inc. System and method of selectively caching information based on the interarrival time of requests for the same information
EP2476055B1 (en) 2009-09-08 2020-01-22 SanDisk Technologies LLC Apparatus, system, and method for caching data on a solid-state storage device
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
WO2011090500A1 (en) 2010-01-19 2011-07-28 Rether Networks Inc. Random write optimization techniques for flash disks
US8621145B1 (en) 2010-01-29 2013-12-31 Netapp, Inc. Concurrent content management and wear optimization for a non-volatile solid-state cache
US20110191522A1 (en) 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US20120066760A1 (en) 2010-09-10 2012-03-15 International Business Machines Corporation Access control in a virtual system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US7577783B2 (en) 2005-05-04 2009-08-18 Apacer Technology Inc. Portable data storage device and method of dynamic memory management therefor
US20080162795A1 (en) 2006-12-28 2008-07-03 Genesys Logic, Inc. Hard disk cache device and method

Also Published As

Publication number Publication date
WO2013025540A1 (en) 2013-02-21
EP2742428B1 (en) 2016-01-06
US20130042056A1 (en) 2013-02-14
US9323659B2 (en) 2016-04-26
EP2742428A1 (en) 2014-06-18
KR20140053309A (ko) 2014-05-07

Similar Documents

Publication Publication Date Title
KR101824295B1 (ko) 솔리드 스테이트 장치 가상화를 포함하는 캐시 관리
US11960729B2 (en) Method of increasing flash endurance by improved metadata management
US10289545B2 (en) Hybrid checkpointed memory
US10445000B2 (en) Device controller and method for performing a plurality of write transactions atomically within a nonvolatile data storage device
US20170024140A1 (en) Storage system and method for metadata management in non-volatile memory
US9430161B2 (en) Storage control device and control method
US8918581B2 (en) Enhancing the lifetime and performance of flash-based storage
JP6870246B2 (ja) ストレージ装置、及びストレージ制御装置
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
WO2018194772A1 (en) Persistent memory for key-value storage
US20110320733A1 (en) Cache management and acceleration of storage media
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
US9910798B2 (en) Storage controller cache memory operations that forego region locking
US9778860B2 (en) Re-TRIM of free space within VHDX
US20130080687A1 (en) Solid state disk employing flash and magnetic random access memory (mram)
KR20120090965A (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US8862819B2 (en) Log structure array
JP4561168B2 (ja) データ処理システムおよび方法並びにその処理プログラム
EP4372540A1 (en) Techniques for zoned namespace (zns) storage using multiple zones
CN115993930A (zh) 用于有序访问块修改存储器中的数据的***、方法和装置
US20140047161A1 (en) System Employing MRAM and Physically Addressed Solid State Disk
US20240256144A1 (en) Method of increasing flash endurance by improved metadata management

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant