[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101726824B1 - 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용 - Google Patents

캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용 Download PDF

Info

Publication number
KR101726824B1
KR101726824B1 KR1020127017015A KR20127017015A KR101726824B1 KR 101726824 B1 KR101726824 B1 KR 101726824B1 KR 1020127017015 A KR1020127017015 A KR 1020127017015A KR 20127017015 A KR20127017015 A KR 20127017015A KR 101726824 B1 KR101726824 B1 KR 101726824B1
Authority
KR
South Korea
Prior art keywords
flash
cache
data
ram
write
Prior art date
Application number
KR1020127017015A
Other languages
English (en)
Other versions
KR20120120186A (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 KR20120120186A publication Critical patent/KR20120120186A/ko
Application granted granted Critical
Publication of KR101726824B1 publication Critical patent/KR101726824B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/225Hybrid cache memory, e.g. having both volatile and non-volatile portions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 다중-계층 캐시 관리자 및 다중-계층 캐시를 관리하는 방법을 기술한다. 상기 관리자는 캐시된 데이터가 초기에 RAM 소자에 저장되도록 하며, RAM 소자에 저장된 상기 캐시된 데이터의 일부가 플래시 소자로 이동되도록 선택한다. 각각의 플래시 소자는 블록 크기를 갖는 복수의 쓰기 블록으로 구성되며, 기정의된 쓰기의 횟수가 각각의 쓰기 블록에 대해 허용된다. 상기 캐시된 데이터의 일부는 플래시 소자에 대해 허용되는 쓰기의 최대 횟수로부터 계산된 최대 쓰기 속도 및 캐시 시스템의 특정 수명을 기초로 선택될 수 있다.

Description

캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용{Efficient Use of Hybrid Media in Cache Architectures}
본 발명은 일반적으로 데이터 저장에 관한 것이며, 더 상세하게는 컴퓨터 네트웨크에 대한 고성능, 고 스케일가능(scaleable) 저장 장치 가속기에서 하이브리드 미디어를 사용하는 아키텍처 및 접근법에 관한 것이다.
가령, 네트워크 연결 스토리지(Nework Attached Storage, NAS) 또는 저장 장치 영역 네트워크(Storage Area Networks, SANs)와 같은 외부적으로 연결되는 저장 장치를 사용하는 컴퓨팅 아키텍처에서, 컴퓨터 서버의 증가하는 속도와 적시에 데이터를 전달하는 저장 장치 시스템의 능력 사이에 불일치(mismatch)가 증가하고 있다. 빠른 서버를 따라가는 것에 대한 저장 장치 시스템의 무능력은 어플리케이션을 지연되게 하고, 시스템의 전체 처리량이 정체기에 이르거나 큰 부하 상태로 역행하도록 한다.
이런 스케일가능성 문제의 근본 원인의 진단에서, 자기 디스크 드라이브의 회전에서 발생한 데이터를 페칭(fetching)하는 지연시간과 관련된, 더 상세하게는 회전 및 검색 시간과 관련된 공통 요인이 나타난다. 드라이브가 많은 인접(contiguous) 데이터량을 (드라이브 헤드를 디스크의 정확한 위치로 이동하는) 검색 시간에 있어서 1 내지 5ms의 지연시간으로 전달할 수 있는 반면, 비-인접 데이터로의 빈번한 접근은 접근 당 대략 ~ 40ms일 수 있다. 많은 랜덤으로 접근된 데이터를 포함하는 데이터세트(가령, 관계형 데이터베이스(relational databases))에 있어서, 드라이브 검색 시간은 적시에 데이터를 전달하는데 주요 장애물이 된다.
이런 문제를 해결하려는 종래의 시도는 데이터 경로에 RAM 기반 데이터 캐시의 계층(hierarchy)을 부가하는 것을 포함한다. 이런 종래의 접근법이 도 1에 도시된다. 도 1에 도시된 대로, 서버 컴퓨터(110)가 네트워크(120)를 통해 저장 장치 시스템(102)에서 데이터에 접근하려고 시도하는 경우, 일반적으로 전체 데이터 경로에 적어도 3개의 서로 다른 캐시가 있다. 하드 드라이브 데이터 캐시(108)는 약 8Mbytes의 캐시를 제공하며, 저장 장치 시스템 캐시(106)는 약 128Mbytes와 16Gbytes 사이에서 제공하며, 서버 컴퓨터 데이터 캐시(112)는 약 100M와 2Gbytes 사이에서 제공한다(일반 경부하(lightly loaded) 시스템). 이런 캐시가 일반적으로 도움이 되지만, 일정한 결함이 남아 있다. 예컨대, 활성 데이터 세트가 랜덤으로 접근되고 있거나 너무 커서 통상 존재하는 캐시에 적합할 수 없는 경우 또는 데이터 세트의 I/O 조건이 캐시로 연결된 컨트롤러의 용량을 초과하는 경우, 상술한 성능 문제는 여전히 발생한다.
커스텀 하드웨어 솔루션(custom hardware solutions)을 통해 이런 문제를 대처하는 캐싱 제품(caching products)을 만드려는 많은 시도가 있어왔다. 이런 예들로는 Texas, Houston 소재 Texas Memory Systems의 RAMSAN과 CA, Santa Clara 소재 Solid Data의 e 및 n 시리즈 제품군이 있다. 이들 제품들은 비용이 높고 최대 저장 크기로 제한되는 경향이 있는 반도체 디스크(solid-state disk) 기술에 의존하기 때문에 불충분하다.
플래시 메모리는 소거되고 재구성될 수 있는 비휘발성 컴퓨터 메모리이다. 플래시 메모리는 메모리 카드에서 SATA 기반 드라이브까지의 다양한 형태로 제공된다. 플래시 메모리는 기업 컴퓨팅 환경의 문제에 디바이스들을 사용하도록 하는 독자적인 특징을 가진다. 가장 주목할 만하게, 플래시 메모리는 제한된 수의 쓰기 및/또는 소거 사이클을 지원하며, 이런 제한을 초과하는 것은 디바이스를 사용할 수 없도록 만들 수 있다. 또한, 플래시 메모리의 쓰기 허용성(write tolerance)은 수행되는 쓰기 동작의 크기에 의해 상당히 영향을 받을 수 있다. 플래시 디바이스는 통상적으로 데이터가 빈번히 중첩 기록되지 않는 저장 환경을 목표로 한다. 예컨대, 플래시 메모리는 보통 운영체제가 한 번 기록되거나 가끔 업데이트되는 서버 부트 디바이스(server boot device)로써 사용된다. 반면에, 캐시 기기는 (READS에) 캐시 미스(cache misses)를 제공하는 과정 및 어플리케이션 WRITES를 처리하는 과정 모두에서 빈번한 미디어 쓰기에 직면할 수 있다. 또한, 고정 저장 장치(persistent storage)와 달리, 캐시 디바이스의 내용은 빈번히 변경될 수 있다. 따라서, 플래시 메모리는 캐시 어플리케이션으로의 사용에 적합한 것으로 여겨지지 않았다.
본 발명의 임의의 실시예는 혼합-미디어 캐시를 관리하는 방법을 제공한다. 데이터는 캐싱을 위해 수신되며, 하나 이상의 블록으로 할당된다. 데이터는 오래되고 가끔 사용되는 경우 RAM에서 플래시 메모리로 선택적으로 이동될 수 있다. 데이터는 데이터의 크기 및 시기를 포함하는 요인을 기초로 플래시 메모리에 저장되도록 선택될 수 있다. 또한, 본 발명의 임의의 실시예는 RAM과 플래시 메모리를 포함하는 복수의 캐시 소자와 캐시 소자로의 접근을 제어하도록 구성된 관리자를 포함하는 다중-계층 캐시 시스템을 제공한다.
임의의 실시예에서, 관리자는 캐시된 데이터가 초기에 RAM 소자에 저장되도록 하며, RAM 소자에 저장된 상기 캐시된 데이터의 일부가 플래시 소자로 이동되도록 선택한다. 각각의 플래시 소자는 블록 크기를 갖는 복수의 쓰기 블록으로 구성되며, 기정의된 쓰기의 횟수가 각각의 쓰기 블록에 대해 허용된다. 캐시된 데이터의 일부는 플래시 소자와 관련된 쓰기의 최대 횟수로부터 계산된 최대 쓰기 속도 및 캐시 시스템의 특정 수명을 기초로 선택될 수 있다. 캐시된 데이터의 일부의 각각은 지정된 쓰기 블록으로 이동될 수 있으며, 캐시된 데이터의 일부는 지정된 쓰기 블록의 크기와 실질적으로 동일한 크기이다. 각각의 RAM 소자는 복수의 RAM 블록으로 구성될 수 있으며, 캐시된 데이터의 일부는 RAM 블록이 새로운 데이터를 저장하는데 이용될 수 없는 경우 플래시로 이동될 수 있다.
본 발명의 내용 중에 포함되어 있다.
도 1은 캐시 관리에 대한 종래의 접근법을 도시한다.
도 2는 본 발명의 임의의 태양에 따른 캐시 관리 시스템(20)의 일반적인 도시이다.
도 3은 본 발명의 임의의 태양에 따른 간소화한 캐시 관리자의 동작을 도시한다.
이제, 본 발명의 실시예는 당업자가 본 발명을 실행할 수 있도록 하기 위해 실례로서 제공되는 도면을 참조하여 상세히 설명될 것이다. 특히, 하기의 숫자와 예는 본 발명의 범위를 단일 실시예로 제한하도록 의도되지 않으며, 다른 실시예들이 기술되거나 도시되는 요소의 일부 또는 전부의 상호교환을 통해 가능하다. 어디서든 편의상, 동일한 참조번호는 동일하거나 유사한 부분을 참조하도록 도면 내내 사용될 것이다. 이 실시예들의 임의의 요소가 공지된 구성 요소를 사용하여 일부로 또는 전체로 구현될 수 있는 경우, 본 발명의 이해를 위해 필요한 공지된 구성 요소의 일부만이 설명될 것이며, 이런 공지된 구성 요소의 다른 일부에 대한 상세한 설명은 본 발명을 불명료하게 하지 않도록 생략될 것이다. 본 명세서에서, 단수의 구성 요소를 나타내는 일실시예는 제한으로 간주되지 않아야 한다; 차라리, 본 발명은 복수의 동일한 구성 요소를 포함하는 다른 실시예들을 포함하게 되어 있으며,본 명세서에서 명시적으로 다르게 언급되지 않으면, 반대의 경우도 마찬가지이다. 게다가, 출원인은 이와 같이 명시적으로 설명되지 않으면, 명세서상의 임의의 용어 또는 통상적이지 않거나 특별한 의미로 여겨지는 청구항을 의도하지 않는다. 또한, 본 발명은 실례를 통해 본 명세서에 참조된 구성 요소와의 현재 및 미래의 공지된 균등물을 포함한다.
본 발명의 임의의 실시예는 하이브리드 미디어를 사용하는 캐시 아키텍처, 장치 및 어플리케이션을 효율적으로 구현할 수 있는 시스템 및 방법을 제공한다. 미국특허출원 No.11/365,474(전체로써 참조로 본 명세서에 통합된 "Method and Apparatus for Providing High-Performance and Highly-Scalable Storage Acceleration")에 기재된 바와 같은 RAM 기반 클러스터화 캐시 기기(RAM based clustered cache appliances)는 저장 장치 가속을 얻기 위한 임의의 확장으로 사용될 수 있다. 이런 기기는 어플리케이션과 그 저장 디바이스 사이의 요청을 인터셉트(intercept)할 수 있으며, 성능을 향상시키도록 데이터를 캐시할 수 있다. 지금 설명된 출원의 임의의 태양은 플래시 기반 디바이스를 포함하는 다양한 형태의 미디어를 사용하게 함으로써 다양한 캐싱 아키텍처의 어플리케이션과 유틸리티(utility)로 확장시킬 수 있다.
도 2는 본 발명의 임의의 태양에 따른 캐시 관리 시스템(20)의 일반적인 도시이다. RAM과 플래시 디바이스를 포함하는 캐시 소자(200)는 미디어 관리자(202)에 의해 제어되고 관리된다. 일반적으로 미디어 관리자(202)는 캐시 소자(200)를 식별 및 구성하며, 이들 소자(200)로의 접근을 관리한다. 예컨대, 미디어 관리자(202)는 캐시 소자(200) 중 하나가 쓰기를 위한 최소 블록 크기를 갖는 플래시 디바이스임을 결정할 수 있다; 이에 따라, 미디어 관리자(202)는 실질적으로 플래시의 전체 블록이 축적 또는 집합될 때까지 쓰기를 지연하는 소자에 대한 접근 제어를 설정할 수 있다. 캐시 프로비저닝 서비스(Cache provisioning services)(240)는 시스템 요청으로 캐시를 할당하며, 미디어 관리(202)와 상호작용하여 캐시 타입, 가용성 등을 식별한다. 캐시 디렉토리 서비스(260) 및 I/O(220 및 280)는 시스템, 서버 및 클라이언트와 접속된다.
본 발명의 임의의 실시예는 캐시 기기에서 플래시의 사용을 허용하는 복수의 최적화법(optimizations)을 이용한다. 캐시 기기에서 플래시 미디어의 사용을 허용하는데 2층(two tier)(또는 하이브리드) 캐시 아키텍처가 제공될 수 있다. 도 3에 도시된 간소화한 예에서, 캐시 관리자(30)는 2가지 형태의 미디어, RAM(34) 및 플래시(36)를 관리한다. 각각의 미디어 공간(340 및 360)은 일반적으로 블록의 집합으로써 맵핑된다. RAM 공간(340)과 플래시 공간(360)의 블록 크기는 동일할 필요는 없으며, 플래시 캐시 공간(360)의 블록 크기는 최대 WRITE 허용성을 전달하도록 선택될 수 있다. 예컨대, 현재 플래시 드라이브에 대한 최적 WRITE 블록 크기는 128KB 내지 수 메가바이트 사이에 있으며, 제조사에 따라 다르다. 반면에, RAM 공간(340)의 블록 크기는 일반적으로 최적 저장 효율을 얻도록 선택된다. 캐시가 대량의 1Kbyte 미만의 소규모 파일을 저장하고 있는 일예에서, RAM 공간(340)의 최적 블록 크기는 1KB일 수 있다. 더 큰 파일이 저장되고 있다면, 최적 블록 크기는 4KB 이상일 수 있다. 임의의 실시예에서는, 다중 플래시 디바이스(361 내지 363)가 사용되며, 각각의 플래시 디바이스(361 내지 363)의 블록 크기는 그 디바이스에 대한 이상적인 I/O 크기와 매치되도록 별도로 설정될 수 있다.
데이터는 READ 캐시 미스나 WRITE 동작을 따르는 하이브리드 캐시에서 그리고 임의의 다른 환경에서 저장될 수 있다. 통상적으로, 데이터는 먼저 RAM 기반 캐시 공간(340)에 저장된다. 이후 캐시 동작 및 요청이 RAM 기반 캐시 공간(340)이 가득차게 될 때까지 RAM으로부터 서비스된다. RAM 기반 캐시 공간(340)이 채워진 경우, 블록의 선택이 플래시 미디어(36)로 디스테이지(de-staged)되도록 선택된다. 대안으로, 캐시는 RAM(34)로부터 직접적으로 임의의 블록을 자유롭게 하며, 플래시(36)로 디스테이지할 수 있다. RAM 블록의 집합은 RAM 공간(340)과 플래시 공간(360)의 상대적 블록 크기를 포함하는 요인을 기초로 하나의 플래시 블록을 채우도록 선택될 수 있다. 예컨대, RAM 공간(340)의 블록이 4Kbytes의 크기이며, 플래시 공간(360)의 블록이 128Kbytes의 크기라면, 32개의 RAM 블록이 하나의 플래시 블록을 구성하도록 축적될 수 있다. 플래시 미디어(36)의 최대 수명을 보장하기 위해, 플래시 미디어(36)로의 WRITE 동작은 최적 블록 크기의 단위로 제한될 수 있다.
플래시 미디어(36)로의 WRITE 동작의 크기를 제어하는 것과 더불어, 하이브리드 캐시도 또한 플래시 미디어(36)로의 WRITE 동작의 횟수 및 속도를 제어할 수 있다. 이는 다양한 방법으로 달성될 수 있다. 하나의 간단한 기법은 주어진 윈도우 타임(window of time)에서 허용되는 WRITE의 전체 횟수를 선택되고 보통 고정된 횟수로 제한하는 방법을 포함한다. 또 다른 기법은 플래시 미디어(36)의 수명 동안 수행되는 플래시 미디어(36)로의 WRITE의 전체 횟수를 기억하는 방법을 포함한다; WRITE 속도는 효율성을 최대화하고 플래시 미디어(36)의 특정된/보장된 수명을 만족하도록 필요에 따라 증가되거나 감소될 수 있다. 플래시 미디어(36)의 WRITE 속도를 제어하는 방법은 WRITE가 임의의 주어진 시간에 수행될 수 있는지 여부가 결정 요인이다. 디스테이징 동작은 일반적으로 쓰기 속도가 사양 내에서 유지될 수 없는 경우 수행되지 않을 것이다. 따라서, 미스 동작은 캐시에 상주하지 않거나/않고 임의의 데이터는 캐시로부터 퇴거될 수 있다. 퇴거된 데이터(evicted data)는 나중에 및/또는 필요에 따라 미스 동작 중에 캐시로 이동될 수 있다. 플래시 드라이브(36)의 WRITE 사이클의 횟수가 또한 제조자, 사용되는 플래시의 타입 및 때때로 플래시 및/또는 드라이브(36)의 발생에 따라 변하기 때문에, WRITE 속도는 캐시에서 사용되는 플래시의 서로 다른 타입에 대하여 구성될 수 있으며, 드라이브(36)에서 각각의 타입의 플래시 드라이브(361 내지 363)에 대해 개별적으로 설정될 수 있다.
하이브리드 캐시는 파일의 캐시된 블록을 RAM 공간(340) 또는 플래시 공간(360) 중 하나로 맵핑하는 내부 데이터 구조를 유지할 수 있다. 파일이 전부 RAM(34)나 전부 플래시(36)에 저장될 필요는 없다. 예컨대, 파일(38)로부터의 서로 다른 블록(380 및 382)은 RAM 공간(340)과 플래시 공간(360) 모두에 저장될 수 있다. 파일(38)에서 블록(380 및 382)을 그들의 기원(origin)과 관계짓는 내부 데이터 구조는 RAM 공간(340)에 유지될 수 있으며, 선택적으로 플래시 미디어(36)로 백업될 수 있다. 마찬가지로, 파일(39)로부터의 블록(390 및 392)은 동일한 디바이스(여기서는 플래시(36))에 저장될 수 있으며, 블록(390 및 392)의 관계는 RAM 공간(340) 및/또는 플래시 공간(360)에 캐시 관리자(30)에 의해 유지될 수 있다.
복수의 플래시 기반 메모리 유닛 또는 플래시 기반 디스크 드라이브(361 내지 363)는 플래시 캐시 공간(360)을 구성하는데 사용된다. 플래시 WRITE 블록 크기는 심지어 서로 다른 디바이스(361 내지 363)로의 쓰기를 위해 최적화될 수 있다. 그러나, WRITES 속도는 일반적으로 모든 이용가능한 플래시 디바이스의 쓰기 능력(write capability)이 이용됨을 보장하도록 관리된다. 즉, WRITE 동작은 개별 WRITE 속도 및/또는 시스템 레벨 WRITE 속도에 따라 모든 이용가능한 미디어의 유닛에 걸쳐 최적화되게 분배될 수 있다.
RAM 캐시 미디어(34)에서 히트(hit)한 READ 동작은 RAM 공간(340)으로부터 직접적으로 제공받을 수 있다. 플래시 미디어(36)에서 히트한 READ 동작과 일부는 플래시(36)에서 그리고 일부는 RAM(34)에서 히트한 READ 동작은 다양한 방법으로 다루어질 수 있다. 각각의 컨텐트의 일부는 그 존재하는 미디어(34 또는 36)로부터 제공받을 수 있으며, 선택적으로, 플래시 공간(360)의 콘텐트는 RAM 공간(340)으로 스테이지될 수 있다. 플래시 미디어로부터의 READS는 일반적으로 임의의 블록 크기에서 발생하도록 허용되며, 최적 WRITE 블록 크기에 대해 설정된 유닛 크기로 발생할 필요는 없다.
임의의 실시예에서, 하이브리드 캐시 시스템은 RAM 공간(340)에서 플래시 공간(360)으로 전송되는 데이터를 선택하기 위한 방법을 제공한다. 어느 블록의 데이터를 플래시에 저장할 것인지의 결정은: 데이터가 캐시에 저장되는 날짜 또는 캐시에서 데이터의 최근 업데이트 시간으로 정의되는 데이터의 시기; 접근 빈도 및/또는 데이터의 사용 빈도; 및 데이터로의 쓰기 빈도를 포함하는 요인을 기반으로 할 수 있다.
예컨대, 플래시(36)로의 저장을 위한 유력한 후보는 오래되고 빈번히 접근되는 데이터일 것이다; 즉, 데이터는 긴 시간 동안 읽기 접근에 대한 요구가 있다. 그러나, 빈번히 접근되고 빈번히 기록되는 데이터의 섹션을 포함하는 파일은 드물게 기록되는 부분이 플래시(36)에 개시될 수 있도록 캐시의 RAM(34)과 플래시(36) 섹션 사이로 분리될 수 있다. DRAM(34)으로부터 제거를 위한 후보는 드물게 사용되는 구 데이터(aged data)를 포함한다. 임의의 실시예에서, 이와 같은 데이터는 플래시(36)에 저장될 수 있다. 통상적으로, 빈번히 접근되고 빈번히 기록되는 데이터는 RAM(34)에 캐시되며, 퍼징(purging)을 위한 후보이다. 새로운 데이터가 캐시되는 경우 사용자 정의 규칙이 RAM(34)에 데이터의 배열에 대한 결정 요인일 수 있음이 인식될 것이다. 이런 점에서, 일련의 우선 순위는 다양한 데이터 타입, 데이터 소스, 데이터 및/또는 서버의 물리적 위치와 관련된 어플리케이션 및 데이터를 사용하는 어플리케이션과 관련이 있을 수 있다.
DRAM(34) 또는 플래시(36)에서든 특정 데이터 블록의 위치는 블록 가상화 계층(virtualization layer)을 통해 시스템의 다른 구성 요소로부터 숨겨질 수 있다. 블록 가상화 계층은 임의의 크기의 가상 블록을 DRAM(34) 또는 플래시(36) 중 하나에 위치될 수 있는 물리적 블록과 맵핑한다. 다른 시스템 구성 요소가 블록의 실제 위치를 인지할 필요는 없다. 필요한 경우, 예컨대 DRAM이 공간을 다 써버리면, 가상 주소로 블록을 참조하는 임의의 다른 시스템 구성 요소에 영향을 주지 않고, 블록은 투과성으로(transparently) DRAM(34)에서 플래시(36)로 이동될 수 있다. 또한, 블록은 DRAM(36) 또는 플래시(36) 중 하나에 투과성으로 압축될 수 있다.
물리적 블록보다 크기에서 더 작은 캐시 객체는 메모리 할당기(32)의 도움으로 플래시 미디어(36)에 저장될 수 있다. 메모리 할당기(32)는 고정된 크기(가상 또는 물리적 블록)를 소모하며, 시스템의 나머지에 의한 소모를 위해 고정된 크기를 더 작은 크기 단위로 나눈다. 예컨대, 1K 블록은 할당기(32)에 의해 128bytes, 256bytes 또는 더 작은 단위의 유닛으로 분할될 수 있다. 당업자에 알려진 임의의 공지된 할당기의 적합한 구현은 본 발명의 임의의 태양에 따라 사용을 위해 개조될 수 있다. 예컨대, 임의의 "맬록(malloc)"의 라이브러리(library) 구현이 기술분야에서 공지된 바대로, 슬랩 할당기(Slab Allocator)와 같은 공개된 다른 이용가능한 구성 요소로서 사용될 수 있다.
상술한 하이브리드 캐시는 클러스터 캐시 아키텍처(cluster cache architecture)의 단일 노드 내에서 구현된다. 상기 인용된 미국특허출원의 모든 클러스터 기반 기술이 여전히 적용된다. 또한, 하이브리드 캐시 아키텍처는 임의의 클러스터 기술을 부가하지 않고, 단일 노드 형태에서 사용될 수 있다.
[본 발명의 임의의 태양에 대한 추가적 설명]
본 발명의 임의의 실시예는 혼합-미디어 캐시를 관리하는 방법을 제공한다. 이런 실시예들의 일부는 캐싱을 위한 데이터를 수신하는 단계, 수신된 데이터를 하나 이상의 블록으로 할당하는 단계, 선택적으로 RAM 블록에 저장된 구 데이터(aged data)를 플래시 메모리로 이동하는 단계 및 RAM에 하나 이상의 블록을 저장하는 단계를 포함하며, 상기 RAM 블록에 저장된 데이터를 이동하는 단계는 하나 이상의 블록의 크기 및 이동된 데이터의 시기(age)를 포함하는 요인을 기초로 RAM 블록을 선택하는 단계를 포함한다. 이런 실시예들의 일부는 RAM과 플래시 소자를 포함하는 복수의 캐시 소자 및 캐시 소자로의 접근을 제어하도록 구성된 관리자를 포함한다.
이런 실시예들의 일부에서, 관리자는 캐시된 데이터가 초기에 RAM 소자에 저장되도록 하며, RAM 소자에 저장된 상기 캐시된 데이터의 일부가 플래시 소자로 이동되도록 선택한다. 이런 실시예들의 일부에서, 각각의 플래시 소자는 블록 크기를 갖는 복수의 쓰기 블록으로 구성된다. 이런 실시예들의 일부에서, 기정의된 쓰기의 횟수가 각각의 쓰기 블록에 대해 허용된다. 이런 실시예들의 일부에서, 캐시된 데이터의 일부는 쓰기의 최대 횟수로부터 계산된 최대 쓰기 속도 및 캐시 시스템의 특정 수명을 기초로 선택된다. 이런 실시예들의 일부에서, 캐시된 데이터의 일부의 각각은 지정된 쓰기 블록으로 이동되며, 캐시된 데이터의 일부는 지정된 쓰기 블록의 크기와 실질적으로 동일한 크기이다. 이런 실시예들의 일부에서, 각각의 RAM 소자는 복수의 RAM 블록으로 구성된다. 이런 실시예들의 일부에서, 캐시된 데이터의 일부의 각각은 RAM 블록이 새로운 데이터를 저장하는데 이용될 수 없는 경우 이동된다. 이런 실시예들의 일부에서, RAM 블록이 캐시된 데이터를 포함하는 경우 RAM 블록은 이용할 수 없다. 이런 실시예들의 일부에서, 이용가능한 RAM 블록이 새로운 캐시된 데이터를 저장할 만큼 크지 않은 경우 RAM 블록은 이용할 수 없다.
본 발명이 특정한 예시적인 실시예를 참조하여 설명되더라도, 본 발명의 넓은 기술사상 및 범위에서 벗어남이 없이, 다양한 변형 및 변경이 이런 실시예들로 이루어질 수 있음은 당업자에게 명백할 것이다. 따라서, 본 발명의 상세한 설명과 도면은 제한적이라기보다는 예시적인 의미로 간주되어야 한다.

Claims (8)

  1. RAM 메모리 소자 및 플래시 메모리 소자를 포함하는 복수의 메모리 소자; 및
    메모리 소자로의 접근을 제어하도록 구성된 관리자를 포함하는 다중-계층 캐시 시스템으로서,
    플래시 메모리 소자는 특정된 수명을 가지며 기정의된 최대 횟수의 쓰기 동작을 수행가능하고,
    상기 관리자는:
    데이터가 초기에 RAM 메모리 소자에 저장되도록 하며;
    플래시 메모리 소자와 관련된 기정의된 최대 횟수의 쓰기 동작 및 플래시 메모리 소자의 특정된 수명으로부터 계산되는 최대 쓰기 속도(maximum write rate)로, 기정의된 최대 횟수의 쓰기 동작이 특정된 수명 이전에 발생하지 않도록, 플래시 메모리 소자로 RAM 메모리 소자에 저장된 데이터의 쓰기 동작을 수행하는, 다중-계층 캐시 시스템.
  2. 캐시를 위한 데이터를 수신하는 단계;
    수신된 데이터를 RAM 메모리의 하나 이상의 블록으로 할당하는 단계;
    RAM 메모리에 저장된 데이터를 플래시 메모리로 이동하는 단계; 및
    플래시 메모리로 RAM 메모리에 저장된 데이터의 쓰기 동작을 수행하는 단계를 포함하며,
    플래시 메모리 소자는 특정된 수명을 가지며 기정의된 최대 횟수의 쓰기 동작을 수행가능하고,
    플래시 메모리로 데이터의 쓰기 동작을 수행하는 최대 속도는, 기정의된 최대 횟수의 쓰기 동작이 특정된 수명 이전에 발생하지 않도록, 기정의된 최대 횟수의 쓰기 동작 및 특정된 수명으로부터 계산되는, 혼합-미디어 캐시를 관리하는 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
KR1020127017015A 2009-12-31 2010-12-15 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용 KR101726824B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/650,966 US8397016B2 (en) 2008-12-31 2009-12-31 Efficient use of hybrid media in cache architectures
US12/650,966 2009-12-31
PCT/US2010/060408 WO2011081957A2 (en) 2009-12-31 2010-12-15 Efficient use of hybrid media in cache architectures

Publications (2)

Publication Number Publication Date
KR20120120186A KR20120120186A (ko) 2012-11-01
KR101726824B1 true KR101726824B1 (ko) 2017-04-13

Family

ID=44144170

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127017015A KR101726824B1 (ko) 2009-12-31 2010-12-15 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용

Country Status (6)

Country Link
US (2) US8397016B2 (ko)
EP (1) EP2519883B1 (ko)
KR (1) KR101726824B1 (ko)
CN (1) CN102812444A (ko)
RU (1) RU2012132643A (ko)
WO (1) WO2011081957A2 (ko)

Families Citing this family (209)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US9043533B1 (en) * 2010-06-29 2015-05-26 Emc Corporation Sizing volatile memory cache based on flash-based cache usage
EP2609510A4 (en) * 2010-08-25 2015-01-21 Intel Corp METHOD AND SYSTEM FOR FORMING CACHE MEMORY LAYERS
US20120054440A1 (en) * 2010-08-31 2012-03-01 Toby Doig Systems and methods for providing a hierarchy of cache layers of different types for intext advertising
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US8972661B2 (en) 2011-10-31 2015-03-03 International Business Machines Corporation Dynamically adjusted threshold for population of secondary cache
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US20140089562A1 (en) * 2012-09-27 2014-03-27 Hitachi, Ltd. Efficient i/o processing in storage system
US9116819B2 (en) * 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
WO2014102886A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
US20140244897A1 (en) * 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory
US9396030B2 (en) * 2013-03-13 2016-07-19 Samsung Electronics Co., Ltd. Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US10445239B1 (en) * 2013-03-15 2019-10-15 Bitmicro Llc Write buffering
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9734067B1 (en) * 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9430031B2 (en) * 2013-07-29 2016-08-30 Western Digital Technologies, Inc. Power conservation based on caching
US20150052319A1 (en) * 2013-08-15 2015-02-19 Htc Corporation Memory management methods and systems for page-out mechanism
JP6131170B2 (ja) * 2013-10-29 2017-05-17 株式会社日立製作所 計算機システム、及びデータ配置制御方法
CA2881206A1 (en) 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US20150254196A1 (en) * 2014-03-10 2015-09-10 Riverscale Ltd Software Enabled Network Storage Accelerator (SENSA) - network - disk DMA (NDDMA)
US20150293699A1 (en) 2014-04-11 2015-10-15 Graham Bromley Network-attached storage enhancement appliance
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US12137140B2 (en) 2014-06-04 2024-11-05 Pure Storage, Inc. Scale out storage platform having active failover
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of 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
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in 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
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in 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
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits 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
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
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
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
KR102294599B1 (ko) * 2014-09-02 2021-08-27 엘지전자 주식회사 디스플레이 디바이스 및 그 제어 방법
CN104539746B (zh) * 2015-01-30 2018-10-26 浪潮(北京)电子信息产业有限公司 一种访问数据的方法、nas机头和san
JP2016170729A (ja) * 2015-03-13 2016-09-23 株式会社東芝 メモリシステム
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
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
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
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
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
US20170177482A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Computing system having multi-level system memory capable of operating in a single level system memory mode
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US9880744B1 (en) * 2015-12-22 2018-01-30 Veritas Technologies Llc Method for flash-friendly caching for CDM workloads
KR101692055B1 (ko) * 2016-02-24 2017-01-18 주식회사 티맥스데이터 데이터베이스 서버에서 공유 메모리 관리 방법, 장치 및 컴퓨터 판독가능 저장매체에 저장된 컴퓨터-프로그램
US9836243B1 (en) * 2016-03-31 2017-12-05 EMC IP Holding Company LLC Cache management techniques
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
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
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
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
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
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
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
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
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
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
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D 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
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
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
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
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
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
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
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
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
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
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
US11010179B2 (en) 2018-04-20 2021-05-18 Facebook, Inc. Aggregating semantic information for improved understanding of users
US11676220B2 (en) 2018-04-20 2023-06-13 Meta Platforms, Inc. Processing multimodal user input for assistant systems
US11886473B2 (en) 2018-04-20 2024-01-30 Meta Platforms, Inc. Intent identification for agent matching by assistant systems
US11715042B1 (en) 2018-04-20 2023-08-01 Meta Platforms Technologies, Llc Interpretability of deep reinforcement learning models in assistant systems
US11307880B2 (en) 2018-04-20 2022-04-19 Meta Platforms, Inc. Assisting users with personalized and contextual communication content
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
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
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
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
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
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
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
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
US12087382B2 (en) 2019-04-11 2024-09-10 Pure Storage, Inc. Adaptive threshold for bad flash memory blocks
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
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
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
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
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
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
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12099742B2 (en) 2021-03-15 2024-09-24 Pure Storage, Inc. Utilizing programming page size granularity to optimize data segment storage in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235131A1 (en) * 2004-04-20 2005-10-20 Ware Frederick A Memory controller for non-homogeneous memory system
US20060026211A1 (en) * 2004-07-30 2006-02-02 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060080515A1 (en) 2004-10-12 2006-04-13 Lefthand Networks, Inc. Non-Volatile Memory Backup for Network Storage System
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US9390019B2 (en) 2006-02-28 2016-07-12 Violin Memory Inc. Method and apparatus for providing high-performance and highly-scalable storage acceleration
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
US8984216B2 (en) * 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050235131A1 (en) * 2004-04-20 2005-10-20 Ware Frederick A Memory controller for non-homogeneous memory system
US20060026211A1 (en) * 2004-07-30 2006-02-02 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM

Also Published As

Publication number Publication date
US8397016B2 (en) 2013-03-12
US20130262752A1 (en) 2013-10-03
KR20120120186A (ko) 2012-11-01
WO2011081957A3 (en) 2011-10-20
EP2519883A2 (en) 2012-11-07
US20110145479A1 (en) 2011-06-16
EP2519883B1 (en) 2017-04-12
CN102812444A (zh) 2012-12-05
WO2011081957A2 (en) 2011-07-07
RU2012132643A (ru) 2014-02-10
EP2519883A4 (en) 2014-06-25

Similar Documents

Publication Publication Date Title
KR101726824B1 (ko) 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용
US9256527B2 (en) Logical to physical address mapping in storage systems comprising solid state memory devices
JP6326378B2 (ja) ハイブリッドストレージ集合体ブロック追跡
EP3210121B1 (en) Cache optimization technique for large working data sets
US11347428B2 (en) Solid state tier optimization using a content addressable caching layer
US8688900B2 (en) Cache memory management in a flash cache architecture
US9043542B2 (en) Concurrent content management and wear optimization for a non-volatile solid-state cache
US9135181B2 (en) Management of cache memory in a flash cache architecture
US11861204B2 (en) Storage system, memory management method, and management node
US9244618B1 (en) Techniques for storing data on disk drives partitioned into two regions
WO2013175529A1 (en) Storage system and storage control method for using storage area based on secondary storage as cache area
US20150032942A1 (en) System for increasing utilization of storage media
US9396128B2 (en) System and method for dynamic allocation of unified cache to one or more logical units
TW202333059A (zh) 有序訪問塊修改記憶體中的資料的系統和方法及儲存裝置
Chang et al. Profit data caching and hybrid disk‐aware Completely Fair Queuing scheduling algorithms for hybrid disks
US11144445B1 (en) Use of compression domains that are more granular than storage allocation units
WO2014168603A1 (en) System for increasing utilization of storage media
KR102149468B1 (ko) 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법

Legal Events

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