KR101726824B1 - 캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용 - Google Patents
캐시 아키텍처에서 하이브리드 미디어의 효율적인 사용 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear 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
본 발명은 일반적으로 데이터 저장에 관한 것이며, 더 상세하게는 컴퓨터 네트웨크에 대한 고성능, 고 스케일가능(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은 본 발명의 임의의 태양에 따른 간소화한 캐시 관리자의 동작을 도시한다.
도 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)
- RAM 메모리 소자 및 플래시 메모리 소자를 포함하는 복수의 메모리 소자; 및
메모리 소자로의 접근을 제어하도록 구성된 관리자를 포함하는 다중-계층 캐시 시스템으로서,
플래시 메모리 소자는 특정된 수명을 가지며 기정의된 최대 횟수의 쓰기 동작을 수행가능하고,
상기 관리자는:
데이터가 초기에 RAM 메모리 소자에 저장되도록 하며;
플래시 메모리 소자와 관련된 기정의된 최대 횟수의 쓰기 동작 및 플래시 메모리 소자의 특정된 수명으로부터 계산되는 최대 쓰기 속도(maximum write rate)로, 기정의된 최대 횟수의 쓰기 동작이 특정된 수명 이전에 발생하지 않도록, 플래시 메모리 소자로 RAM 메모리 소자에 저장된 데이터의 쓰기 동작을 수행하는, 다중-계층 캐시 시스템. - 캐시를 위한 데이터를 수신하는 단계;
수신된 데이터를 RAM 메모리의 하나 이상의 블록으로 할당하는 단계;
RAM 메모리에 저장된 데이터를 플래시 메모리로 이동하는 단계; 및
플래시 메모리로 RAM 메모리에 저장된 데이터의 쓰기 동작을 수행하는 단계를 포함하며,
플래시 메모리 소자는 특정된 수명을 가지며 기정의된 최대 횟수의 쓰기 동작을 수행가능하고,
플래시 메모리로 데이터의 쓰기 동작을 수행하는 최대 속도는, 기정의된 최대 횟수의 쓰기 동작이 특정된 수명 이전에 발생하지 않도록, 기정의된 최대 횟수의 쓰기 동작 및 특정된 수명으로부터 계산되는, 혼합-미디어 캐시를 관리하는 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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)
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)
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)
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 |
-
2009
- 2009-12-31 US US12/650,966 patent/US8397016B2/en active Active
-
2010
- 2010-12-15 KR KR1020127017015A patent/KR101726824B1/ko active IP Right Grant
- 2010-12-15 RU RU2012132643/08A patent/RU2012132643A/ru not_active Application Discontinuation
- 2010-12-15 WO PCT/US2010/060408 patent/WO2011081957A2/en active Application Filing
- 2010-12-15 EP EP10841544.9A patent/EP2519883B1/en active Active
- 2010-12-15 CN CN2010800602576A patent/CN102812444A/zh active Pending
-
2013
- 2013-02-13 US US13/766,351 patent/US20130262752A1/en not_active Abandoned
Patent Citations (2)
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 |