KR20140111588A - 시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체 - Google Patents

시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체 Download PDF

Info

Publication number
KR20140111588A
KR20140111588A KR1020140004930A KR20140004930A KR20140111588A KR 20140111588 A KR20140111588 A KR 20140111588A KR 1020140004930 A KR1020140004930 A KR 1020140004930A KR 20140004930 A KR20140004930 A KR 20140004930A KR 20140111588 A KR20140111588 A KR 20140111588A
Authority
KR
South Korea
Prior art keywords
cache
metadata
data
data storage
storage
Prior art date
Application number
KR1020140004930A
Other languages
English (en)
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 KR20140111588A publication Critical patent/KR20140111588A/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/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
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system

Landscapes

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

Abstract

캐시 저장부를 갖고, 저장 시스템과 관련된 캐시 제어기는 캐시 제어기의 재부팅을 통해 캐시 저장부에 저장된 정보를 유지한다. 캐시 제어기는 호스트 컴퓨터 시스템과 데이터 저장 시스템과 통신한다. 캐시 제어기는 메타데이터 부분과 로그 부분을 포함하도록 캐시 메모리를 파티션한다. 캐싱된 데이터 요소들을 위해 별도의 부분이 사용된다. 캐시 제어기는 호스트 컴퓨터 시스템에 액세스될 수 있는 별도의 메모리에 메타데이터의 복제물을 유지한다. 메타데이터 로그가 그 용량에 도달할 때 데이터는 캐시 저장부에 기록된다. 재부팅시, 메타데이터는 다시 호스트 컴퓨터 시스템에 복제되고, 메타데이터 로그는 데이터 저장 시스템에 저장되지 않은 캐시 내의 추가적인 변화들을 복제하기 위하여 트래버싱된다.

Description

시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체{SYSTEM, METHOD AND COMPUTER-READABLE MEDIUM FOR MANAGING A CACHE STORE TO ACHIEVE IMPROVED CACHE RAMP-UP ACROSS SYSTEM REBOOTS}
본 발명은 일반적으로 데이터 저장 시스템에 관한 것이고, 보다 구체적으로 플래쉬-메모리 기반의 데이터 캐시를 사용하는 데이터 저장 시스템에 관한 것이다.
일부 종래의 컴퓨팅 시스템들은, 컴퓨팅 시스템의 성능 및/또는 컴퓨팅 시스템에 의해 실행되는 애플리케이션들을 개선하기 위하여, 느린 데이터 저장 디바이스들(예, 자기 디스크 저장 매체, 광 디스크 저장 매체 또는 네트워크를 통해 액세스 가능한 하나 이상의 데이터 저장 디바이스들)에 대한 블록 또는 파일 레벨의 저장 대안으로서 비-휘발성 메모리 디바이스를 사용한다. 이러한 관점에서, 입/출력(I/O) 동작들이 느린 저장 디바이스에 대한 것보다 일부 비-휘발성 메모리 디바이스들(이후로 간단히 "캐시 디바이스"라 칭함)에 대해 상당히 빠르게 수행될 수 있기 때문에, 캐시 디바이스의 사용은 I/O 동작들의 레이트를 상당히 개선하는 기회들을 제공한다.
데이터 저장 관리자 및 저장 어레이에 의해 지원되는 데이터 저장 시스템의 I/O 성능에 대해 데이터 캐싱을 통합하여 I/O 성능을 증가시키는 것이 알려져 있다. 예컨대, 도 1에 도시된 시스템에서, 데이터 저장 관리자(10)는 신뢰할 수 있는 데이터 저장을 가능케 하는 방식으로 저장 어레이(12)를 제어한다. 호스트(컴퓨터) 시스템(14)은 데이터 저장 관리자(10)를 통해 저장 어레이(12)에 데이터를 저장하고, 이로부터 데이터를 검색한다. 즉, 애플리케이션 프로그램 또는 APP(18)에 따라 동작하는 프로세서(16)는 저장 어레이(12)에 데이터를 기록하고 이로부터 데이터를 판독하기 위한 요청을 발행한다. 명확성을 위해 호스트 시스템(14)과 데이터 저장 관리자(10)가 도 1에서 별도의 요소들로서 도시되지만, 데이터 저장 관리자(10)가 이러한 호스트 시스템(14)의 마더보드 또는 후면에 플러그 접속되는 카드로서 물리적으로 구현되는 것이 일반적이다.
이러한 시스템은 저장 어레이(12)의 데이터 저장 디바이스들(24,26,28 및 30)에 저장된 특정 데이터에 대한 액세스 빈도에 기초하여 데이터를 캐싱할 수 있다. 이러한 캐싱된 또는 "핫" 데이터, 예컨대 요소(A)는 플래쉬 기반의 메모리 디바이스(15)의 캐시 메모리 모듈(22)에 저장된다. 요소(A)는 블록 레벨 또는 파일 레벨에서 식별될 수 있다. 이후, APP(18)와 같은 애플리케이션들에 의해 발행된 "핫" 데이터에 대한 요청들은 데이터 저장 시스템이 아니라 플래쉬-기반의 메모리 디바이스(15)에 의해 서비스된다. 이러한 종래의 데이터 캐싱 시스템들은 크기가 조절될 수 있고, 오로지 플래쉬-기반의 저장 디바이스(15)의 용량에 의해 제한된다. 따라서, 플래쉬-기반의 저장 디바이스(15)의 전체 용량을 채우는데 상당한 양의 시간이 걸릴 수 있다. 플래쉬-기반의 저장 디바이스(15)가 호스트 시스템(14)에 의해 빈번하게 판독되는 데이터 항목들을 캐싱하도록 명령받을 수 있지만, 플래쉬-기반의 디바이스(15)의 재부팅을 통해 어느 데이터가 캐싱되는지를 기억하는 것이 여전히 중요하다. 어느 데이터가 호스트 시스템(14)에 의해 빈번하게 요구되는지에 대한 정보의 부재시, 캐싱된 데이터의 재구축에 상당한 시간이 걸릴 수 있고, 이 동안 플래쉬에 기반한 캐시 디바이스(15)의 성능과 호스트 시스템(14)의 성능 중 하나 또는 둘 모두가 영향을 받을 수 있어서, 이러한 종래의 시스템들의 사용자들에 의해 관측될 수 있는 애플리케이션 성능의 하락을 초래한다.
데이터 저장 관리자(10)와 통신하는 별개의 뚜렷한 캐시 메모리 모듈(21)은, 저장 어레이(12)의 저장 요소(24,26,28 및 30)에 걸쳐 데이터를 쉽게 분배하도록 구성된 처리 단계들 이전에 또는 이 도중에 일시적으로 데이터 요소(B)를 캐싱할 수 있다.
값싼(또는 독립적인) 디스크들의 여분의 어레이(RAID)는 하나 이상의 저장 디바이스들의 실패로부터 회복을 가능케 함으로써 신뢰성을 해결하는 일반 유형의 데이터 저장 시스템이다. 데이터 캐싱을 RAID 시스템에 통합하는 것은 알려져 있다. 도 1에 도시된 시스템에 있어서, 데이터 저장 관리자(10)는, 판독 캐시 블록들(RCBs) 및 기록 캐시 블록들(WCBs)로서 언급될 수 있는 블록들의 단위들로 데이터를 캐싱하는 RAID 처리 시스템(20)을 포함한다. WCBs는, 호스트 시스템(14)이 저장 어레이(12) 내에 데이터를 저장하기 위한 요청들의 부분으로서 데이터 저장 관리자(10)에 전달하는 데이터를 포함한다. 호스트 시스템(14)으로부터 이러한 기록 요청에 응답하여, 데이터 저장 관리자(10)는 하나 이상의 캐시 메모리 모듈들(21) 내에 WCB를 캐싱 또는 일시적으로 저장하고, 이후 수신확인 메시지를 호스트 시스템(14)에 반환한다. 시간상 일부 이후의 시점에, 데이터 저장 관리자(10)는 캐싱된 WCB(전형적으로 이전에 캐싱된 다른 WCBs와 함께)를 저장 어레이(12)에 전달한다. RCBs는 데이터 저장 관리자(10)가 호스트 시스템(14)으로부터의 판독 요청들에 응답하여 저장 어레이(12)로부터 빈번하게 판독한 데이터를 포함한다. 빈번하게 요청된 데이터를 캐싱하는 것은 호스트 시스템(14)이 이를 요청할 때마다 저장 어레이(12)로부터 판독하는 것보다 더 효율적인데, 왜냐하면 캐시 메모리 모듈(21)이, 데이터 저장 어레이(12)가 포함하는 유형의 메모리(예, 디스크 드라이브)보다 훨씬 빨리 액세스될 수 있는 플래쉬 메모리와 같은 유형의 메모리이기 때문이다.
종래의 데이터 캐싱 시스템들은 크기가 조절될 수 있고, 오로지 플래쉬-기반의 저장 디바이스(15)의 용량에 의해 제한된다. 따라서, 플래쉬-기반의 저장 디바이스(15)의 전체 용량을 채우는데 상당한 양의 시간이 걸릴 수 있다. 플래쉬-기반의 저장 디바이스(15)가 호스트 시스템(14)에 의해 빈번하게 판독되는 데이터 항목들을 캐싱하도록 명령받을 수 있지만, 플래쉬-기반의 디바이스(15)의 재부팅을 통해 어느 데이터가 캐싱되는지를 기억하는 것이 여전히 중요하다. 어느 데이터가 호스트 시스템(14)에 의해 빈번하게 요구되는지에 대한 정보의 부재시, 캐싱된 데이터의 재구축에 상당한 시간이 걸릴 수 있고, 이 동안 플래쉬에 기반한 캐시 디바이스(15)의 성능과 호스트 시스템(14)의 성능 중 하나 또는 둘 모두가 영향을 받을 수 있어서, 이러한 종래의 시스템들의 사용자들에 의해 관측될 수 있는 애플리케이션 성능의 하락을 초래한다.
재부팅 동작 이후 개선된 캐시 램프업을 위하여 캐시 저장부를 관리하기 위한 시스템 및 방법의 실시예들이 예시적인 실시예들로 도시되고 기술된다. 캐시 램프업은 캐시 제어기가 캐시에 저장된 데이터 요소들의 콘테츠를 복원하고 확인하는데 걸리는 시간이다.
예시적인 실시예에 있어서, 캐시 제어기는 호스트 컴퓨터 시스템 및 데이터 저장 시스템과 통신하기 위한 적어도 하나의 인터페이스를 포함한다. 캐시 제어기는 캐시 저장부와 처리 시스템을 더 포함한다. 처리 시스템은 캐시 저장부에 저장된 헤더 정보와 실행될 수 있는 명령들에 응답한다. 처리 시스템은, 캐시 제어기의 현재의 상태에 응답하는 상태 식별자에 프로그램 가능한 방식으로 응답하고, 메타데이터 로그를 위해 다음에 사용 가능한 시퀀스 번호를 식별하고, 캐시 저장부 내의 메타데이터 저장부의 위치와 크기를 식별하고, 캐시 저장부 내의 메타데이터 로그의 위치와 크기를 식별하고, 캐시 저장부 내에서 각각이 캐시 제어기에 의해 추가로 식별되는 복수의 캐시 라인들을 포함하는 복수의 캐시 윈도우들의 위치와 크기를 식별하도록 구성된다. 지정된 조건에 응답하여, 처리 시스템은, 메타데이터의 표시부에 저장되고 호스트 컴퓨터 시스템을 통해 액세스 가능한 정보를 캐시 저장부에 기록하고, 메타데이터 로그 내에서 다음의 사용 가능한 시퀀스 번호로 대체하도록 추가로 구성된다.
다른 예시적인 실시예에 있어서, 호스트 컴퓨터 시스템 및 데이터 저장부와 관련된 캐시 저장부로서, 데이터 저장부는 캐시 호스트 제어기의 재부팅에 걸쳐 캐시 저장부 내의 정보를 유지하는, 캐시 저장부를 관리하기 위한 방법이 개시된다. 이 방법은, 메타데이터를 저장하기 위한 제 1 부분, 캐시 저장부 내에 속한 데이터로서 데이터 저장부 관리자에 의해 식별된 데이터 값들을 저장하기 위한 제 2 부분, 메타데이터에 대한 변화들을 저장하기 위한 제 3 부분, 및 호스트 및 캐시 저장부에 관한 정보를 포함하는 제 4 부분을 제공하기 위하여 캐시 저장부를 파티셔닝하는 단계, 메타데이터로 제 1 부분의 표시부를 채우고, 데이터 저장 시스템에 저장된 특정 데이터 항목에 대해 원하는 시간에 걸쳐 요청들을 나타내는 빈도 값에 따라 캐시 저장부에 저장될 데이터 항목들을 식별하는 데이터 저장 관리자에 의해 지시된 데이터 값들로 제 2 부분의 표시부를 채우는 단계, 데이터 저장 관리자에 의해 지시된 바와 같이, 제 1 부분의 표시부가 메타데이터로 채워지고, 제 2 부분의 표시부가 데이터 값들로 채워질 때마다, 제 3 부분의 표시부 내의 엔트리를 생성하는 단계로서, 제 1 부분, 제 2 부분 및 제 3 부분의 표시부들은 호스트 컴퓨터 시스템, 데이터 저장 관리자, 및 캐시 호스트 제어기 중 하나 이상을 통해 액세스 가능한 휘발성 메모리 내에 저장되는, 제 3 부분의 표시부 내의 엔트리를 생성하는 단계, 제 3 부분의 데이터 저장 용량에 도달하는 때를 결정하기 위하여 제 3 부분의 표시부 내의 현재의 인덱스를 초기 인덱스와 비교하는 단계, 제 3 부분의 데이터 저장 용량에 도달하였을 때, 제 1 부분의 표시부 내의 정보를 캐시 저장부의 대응하는 제 1 저장부에 기록하는 단계, 및 초기 인덱스를 캐시 저장부의 제 3 부분 내에서 다음에 사용 가능한 저장 위치로 대체하는 단계를 포함한다.
예시적인 실시예들에 있어서, 캐시 제어기의 재부팅의 완료시, 처리 시스템은, 캐시 저장부의 표시부의 콘텐츠로서, 호스트 컴퓨터 시스템에 액세스될 수 있는 휘발성 메모리에 저장되고, 다음 사용 가능한 시퀀스 번호를 더 포함하는, 콘텐츠를 판독하는 실행 가능한 명령들을 실행하고, 메타데이터 저장부의 콘텐츠를 호스트 컴퓨터 시스템에 액세스 가능한 휘발성 메모리에 복제하고, 복원된 메타데이터를 생성하기 위하여 메타데이터 저장부 내의 하나 이상의 엔트리들의 상부에 유효 로그 엔트리들을 인가하고, 적절한 캐시 윈도우들을 식별하여 데이터 저장 시스템으로부터 대응하는 데이터로 갱신하기 위하여 복원된 메타데이터를 트래버싱(traverse)하고, 적절한 캐시 윈도우들의 상태를 수정하고, 캐시 윈도우들을 해쉬 테이블들과 우선순위 인덱스에 삽입하고, 캐시 메모리에 대한 I/O 동작들이 인에이블된 것을 데이터 저장 시스템에 지시하는 플래그를 갱신한다.
도 1은 호스트 컴퓨터와 저장 시스템에 접속된 종래의 캐시 디바이스를 도시하는 블록도.
도 2는 본 발명의 예시적인 실시예에 따라 개선된 캐시 제어기를 도시하는 블록도.
도 3은 도 2의 캐시 저장부의 개략도.
도 4는 도 3의 메타데이터 저장부의 개략도.
도 5는 도 3의 로그 저장부의 개략도.
도 6은 도 2의 호스트 메모리 표시부 또는 캐시 저장 미러의 개략도.
도 7은 시간에 걸친 도 3의 로그 저장부의 사용을 도시하는 개략도.
도 8은 도 2의 캐시 소프트웨어의 개략도.
도 9a 및 도 9b는 캐시 디바이스의 재부팅에 걸쳐 개선된 램프업을 달성하기 위하여 캐시 저장부를 관리하는 방법을 도시하는 흐름도.
캐시 저장부를 갖고 저장 시스템과 관련된 캐시 제어기는 캐시 제어기의 재부팅에 걸쳐 캐시 저장부 내에 저정된 정보를 유지한다. 캐시 제어기는 호스트 컴퓨터 시스템과 데이터 저장 시스템과 통신한다. 개선된 캐시 제어기는 호스트 컴퓨터 시스템에 접속된 플래쉬-기반의 캐시 디바이스들 내에서 사용될 수 있다. 캐시 제어기는 메타데이터 부분과 로그 부분을 포함하도록 캐시 메모리를 분할한다. 캐싱된 데이터 요소들을 위해 별도의 부분이 사용된다. 캐시 제어기는 호스트 컴퓨터 시스템에 액세스될 수 있는 별도의 메모리 내에 메타데이터의 복제물을 유지한다. 메타데이터 로그가 그 용량에 도달할 때 데이터는 캐시 저장부에 기록된다. 재부팅시, 메타데이터는 다시 호스트 컴퓨터 시스템에 복제되고, 메타데이터 로그는 데이터 저장 시스템 및/또는 캐시 저장부에 저장되지 않았던 캐시 내의 추가적인 변화들을 복제하기 위하여 트래버싱된다(traversed).
도 2에 도시된 바와 같이, 본 발명의 도시하는 또는 예시적인 실시예에서, 호스트 시스템(100)은 데이터 저장부(140)와 플래쉬-기반의 캐시 디바이스(130)를 결합시킨다. 데이터 저장부(140)는 직접 접속된 저장부(DAS) 또는 저장 영역 네트워크(SAN)가 될 수 있다. 이들 실시예들에 있어서, 데이터 저장부(140)는 데이터 저장 관리자의 관리 하에서 저장 어레이(12)(도 1)와 관련하여 기술된 것들과 같은 다수의 데이터 저장 디바이스들을 포함할 것이다. 명확함을 위해 본 명세서에서 도시되거나 기술되지 않았지만, 데이터 저장 관리자는 데이터를 다수의 데이터 저장 디바이스들에 걸쳐 분배함으로써 예컨대 RAID-5 보호와 같은 RAID 보호를 제공하도록 동작함을 이해해야 한다.
RAID 제어기(미도시)는 버스와 같은 인터페이스를 통해 데이터 저장부(140)와 통신하고, 또한 다른 버스와 같은 다른 인터페이스를 통해 호스트 (컴퓨터) 시스템(100)과 통신한다. 단순화를 위해, RAID 제어기 및 이러한 제어기, 호스트 시스템(100) 및 데이터 저장부(140)와의 인터페이스들은 도 2에서 호스트 시스템(100)과 데이터 저장부(140) 사이의 양방향 화살표를 통해 도시된다. RAID 제어기들은 호스트 시스템(100)의 마더보드 또는 후면(미도시)에 플러그 접속될 수 있는 조립체 또는 임의의 다른 적합한 구조로 물리적으로 구현될 수 있다.
호스트 시스템(100)은 데이터 저장부(140)에 데이터를 저장하고, 이로부터 데이터를 검색한다. 즉, 애플리케이션 프로그램(124) 또는 유사한 소프트웨어에 따라 동작하는, 호스트 시스템(100) 내의 프로세서(110)는 데이터 저장부(140)로부터 데이터를 판독하고 여기에 데이터를 기록하기 위한 요청들을 발행한다. 애플리케이션 프로그램(124)이 메모리(120) 내에 저장되거나 상주하는 개념적인 방식으로 도시되지만, 당업자는 이러한 소프트웨어가 종래의 컴퓨팅 원리들에 따라 필요한 만큼 메모리(120)에 로드되는 다수의 모듈들, 세그먼트들, 프로그램들, 파일들, 등의 형태를 취할 수 있음을 인식할 수 있다. 유사하게, 메모리(120)가 명확성을 위해 단일 요소로서 도시되었지만, 메모리(120)는 다수의 요소들을 포함할 수 있다. 유사하게, 프로세서(110)가 명확성을 위해 단일 요소로 도시되었지만, 프로세서(110)는 다수의 요소들을 포함할 수 있다.
애플리케이션 프로그램(124)에 부가하여, 메모리(120)는 데이터 파일들 및 프로그램들을 관리하기 위한 파일 시스템(122), 캐시 저장 미러(600) 및 캐시 소프트웨어(800)를 더 포함한다. 캐시 저장 미러(600)의 구조 및 사용이 도 6의 도면 설명과 관련하여 상세하게 기술될 것이다. 유사하게, 캐시 소프트웨어(800)의 구조 및 동작이 도 8의 도면 설명과 관련하여 상세하게 기술될 것이다.
플래쉬에 기반한 캐시 디바이스(130)는 데이터 저장부(140) 내에서 가장 빈번하게 액세스되는 데이터를 전략적으로 캐시 저장부(300) 내에 캐싱함으로써 APP(124)와 같은 애플리케이션들의 성능을 개선하기 위하여 배치된다. 캐시 소프트웨어(800)와 같은 호스트 시스템에 기반한 소프트웨어는 데이터 저장부(140) 내에 저장된 빈번하게 액세스되는 데이터 항목들을 검출하고 이들을 캐시 저장부(300)에 저장하도록 설계된다.
플래쉬에 기반한 캐시 디바이스(130)의 캐시 제어기(미도시)는 버스와 같은 인터페이스를 통해 호스트 시스템(100)과 데이터 저장부(140)와 통신한다. 플래쉬에 기반한 캐시 디바이스(130)는 호스트 시스템(100)의 마더보드 또는 후면(미도시)에 플러그 접속될 수 있는 조립체 또는 임의의 다른 적합한 구조로 물리적으로 구현될 수 있다. 바람직한 실시예에 있어서, 플래쉬에 기반한 캐시 디바이스(130)는 양방향 화살표를 통해 도시된 주변소자 상호접속 익스프레스 2.0(PCIe) 인터페이스 버스를 통해 호스트 시스템(100)에 접속된다.
도 3은 도 2의 캐시 저장부(300)의 개략도이다. 캐시 저장부(300)는 적어도 4개의 별도의 저장 영역들로 구획 또는 분할된다. 제 1 부분 또는 구획은 헤더 정보(310)를 포함한다. 제 2 부분은 한 세트의 캐시 윈도우들(320)을 포함한다. 제 3 부분은 메타데이터 저장부(400)를 포함한다. 제 4 부분은 로그 저장부(500)를 포함한다. 헤더 정보는, 플래쉬에 기반한 캐시 디바이스(130)(도 1)의 동작 상태를 나타내는 플래그 또는 다른 표시자, 로그 저장부(500) 내의 엔트리들을 네비게이션할 때 사용하기 위한 다음에 사용 가능한 시퀀스 번호, 메타데이터 저장부(400)의 위치 및 크기를 나타내는 정보, 로그 저장부(500)의 위치 및 크기를 나타내는 정보, 및 제 2 부분 내의 캐시 윈도우들(322)의 번호를 나타내는 정보를 포함한다. 캐시 저장부(300)의 상당한 양의 저장 용량이 캐시 윈도우들로서 도시된 것으로 식별된 영역들에 할당된다. 각 캐시 윈도우는 원하는 크기의 라인들의 캐시 블록들로 추가로 세분된다.
데이터 저장부(140)의 한정된 영역을 액세스하는 I/O 동작은 수직 캐시 윈도우를 할당받는다. 한정된 영역의 반복된 액세스시(및 임계값이 도달된 이후), 가상의 캐시 윈도우(VCW)는 물리적인 캐시 윈도우로 변환된다. VCW가 자유로워지는 동안, 물리적인 캐시 윈도우(CW)(즉, 캐시 윈도우들(322) 중 하나)는 데이터 저장부(140)의 한정된 영역으로부터의 데이터로 채워진다. CW에 대한 기록 동작의 성공적인 완료 이후, 한정된 영역의 후속적인 판독 요청들은 데이터 저장부(140)가 아닌 플래쉬에 기반한 캐시 디바이스(130)에 의해 처리될 것이다.
플래쉬에 기반한 캐시 디바이스(130)가 초기에 호스트 시스템(100)에 도입될 때, 캐시 윈도우 객체들은 호스트 메모리(120) 내에서 할당되고, 자유로운 캐시 윈도우 목록(미도시)에 부가된다. 충분한 수의 VCW 객체들이 또한 할당되고, 자유로운 가상의 캐시 윈도우 목록 내에 놓인다. I/O 동작들이 수신될 때, 해쉬 테이블이 VCW 또는 CW를 위해 검색된다. VCW가 발견되지 않으면, 자유 목록으로부터 제거되고, 수신된 I/O의 영역을 추적하기 위하여 사용된다. 이러한 VCW는 이제 해쉬 테이블에 삽입된다. VCW에 대한 충분한 액세스들을 수신할 때, 자유 목록으로부터 물리적인 CW가 취해진다. 캐시 윈도우(322)는 캐시 저장부(300) 내의 캐시 윈도우들(320)의 세트 내의 대응하는 위치에 채워진다. 캐시 저장부(300)가 처음으로 초기화될 때, 헤더 정보(310)는 0의 다음으로 사용 가능한 시퀀스 번호와 로그 저장부(500) 내의 모든 엔트리들을 포함할 것이고, 메타데이터 저장부(400)는 원하는 2진 값(즉, 로직 0 또는 로직 1)으로 초기화될 것이다.
도 4는 도 3의 메타데이터 저장부(400) 내의 엔트리(402)의 개략도이다. 메타데이터 엔트리(402)는 캐시 저장부(300) 내에 저장된 데이터에 관한 정보를 유지하는 필드들의 세트를 포함한다. 메타데이터 저장부(400) 내의 각 엔트리(402)는 물리적인 CW(즉, 캐시 윈도우들(322)의 세트 내에 저장된 캐시 윈도우(322))를 나타낸다. 메타데이터 저장부(400)의 크기는 할당된 CWs(322)의 수에 의존한다. 메타데이터 저장부(400) 내의 각 메타데이터 엔트리(402)는 캐시 저장부(300) 내의 특정 CW(322)를 맵핑 또는 식별한다. 각 메타데이터 엔트리(402)는 가상의 디렉토리 식별자(VDI), 가상의 디렉토리 로직 블록 어드레스(VD LBA), 우선순위 인덱스(PI), 및 캐시 저장부(300)에 전달된 데이터의 범위 또는 블록을 위한 캐시 라인 비트맵을 포함한다. 각 메타데이터 엔트리(400)는 "변경"("dirty") 비트들을 저장하기 위한 예약된 저장부를 더 포함한다. 변경 비트들의 기록은 데이터 저장부(140) 내의 대응하는 저장 위치로 다시 전달되지 않은 캐시 저장부 내의 데이터로 변경된다.
바람직한 실시예에 있어서, VDI는 데이터 저장부(140) 내의 최대 64개의 데이터 저장 디바이스들에 대응하는 최대 64개의 가상 디스크들을 1:1 관계로 식별하기 위한 6개 비트들을 포함한다. VD LBA는 로직 소스 어드레스 또는 0의 기준 위치로부터 캐싱되는 데이터 범위를 기준으로부터 제거되는 최대 64 TB까지의 한 위치로 식별하기 위한 26개 비트들을 포함한다. PI는 CWs가 논리적으로 삽입되는 16개의 우선순위 레벨들 또는 대기열들을 식별하기 위한 4개의 비트들을 포함한다. 캐시 라인 비트맵은 캐시 블록들 중 어느 것이 사용되고 있는지를 나타낸다. 메타데이터 엔트리들(402) 내의 필드들의 대안적인 배열들(즉, 위치 및 비트 길이들)이 고려된다.
데이터가 호스트 시스템(100) 상의 애플리케이션들에 의해 얼마나 빈번하게 액세스되는지의 척도를 나타내는 PI 인덱스는, 제 1 우선순위 레벨 또는 버켓으로 캐시 저장부(300) 안으로 이동하고, 시간에 걸쳐 우선순위 레벨을 상승시키거나 하락시키는 일부 CWs에 대해 동적이다. 드물게 액세스되는 캐싱된 CWs는, 저장 용량이 캐시 제어기들에 의해 사용될 때 교체된다. 우선순위 인덱스는 캐시 제어기가, 영역 내에서 캐시 적중들의 가중치에 기초하여, CWs 내의 데이터를 구별하는 것을 가능케 한다. 특정된 시간 내에서 충분한 수의 적중들 이후, 특별한 CW는 더 높은 우선순위 값 또는 인덱스로 승격될 것이다. 특별한 CW가 시간의 기간에 걸쳐 충분한 I/O 동작들을 수신하지 않았다면, CW는 더 낮은 우선순위 레벨로 강등될 것이다. 저장 용량이 더 이상 사용 가능하지 않을 때, CW는 가장 낮은 우선순위 레벨로부터 CW를 제거한 이후 재사용 또는 재할당된다.
1 TB의 캐시 데이터 저장용량과 1 MB의 CW를 갖는 일 예시적인 실시예에 있어서, 백만 개의 CW가 필요하다. 백만 개의 CWs를 나타내기 위하여, 메타데이터 저장부(400)는 8 MB의 저장 용량을 필요로 한다. 데이터 용량의 추가적인 64 MB는 로그 저장부(500)로 할당 또는 구획된다. 로그 저장부(500)는, I/O 동작들이 처리될 때, 임의의 할당된 CWs(322)에 대해 갱신들을 메타데이터에 기록하기 위하여 사용 가능하다.
다수의 플래쉬에 기반한 캐시 디바이스들은 각 플래쉬에 기반한 캐시 디바이스(130)를 위해 메타데이터 저장부(400)를 구성하고 유지함으로써 전개될 수 있다. 다수의 플래쉬에 기반한 캐시 디바이스(130)가 그렇게 전개될 때, 캐시 소프트웨어(800)는 특정된 그룹 식별자들을 갖는 디바이스들을 관련시키고 추적할 것이다.
도 5는 도 3의 로그 저장부(500) 내의 엔트리(502)의 개략도이다. 로그 엔트리(502)는 메타데이터 엔트리(402) 내에 제공된 동일한 세트의 필드들을 포함한다. 그러한 정보에 부가하여, 로그 엔트리들(502)은, 캐시 저장부(300) 내의 개별적인 CWs(322)를 나타내는 엔트리 및 CW 인덱스에 대해 사용 가능한 로그 저장부 내의 한 위치를 식별하는 체크포인트 또는 시퀀스 번호를 더 포함한다.
캐싱 가능한 영역이 "핫"이 될 때(호스트 시스템(100) 상에서 실행되는 애플리케이션(들)에 의해 빈번하게 액세스되는 것으로 식별될 때)마다, VCW는 물리적인 CW로 변환된다. CW(322)의 모든 I/O 액세스시, 캐시 라인이 채워지지 않으면, 원하는 범위의 데이터(예, 64 KB)는 데이터 저장부(140)로부터 페치되고, 캐시 저장부(300) 내의 대응하는 공간 안에 채워진다. 동시에, CW(322) 내의 캐시 라인 비트맵 내에서 적절한 비트들이 인에이블된다. I/O 동작들이 캐시 라인들 및/또는 CWs(322)에 중첩될 때 특별한 주의가 행해진다.
자유 풀로부터 CW가 사용될 때마다, 캐시 라인 비트맵은 변경되고, 우선순위 버켓들 내에서 CW 승격/강등이 발생한다. 따라서, 대응하는 정보는 호스트 시스템(100)과 관련된 메모리(120) 내에서 유지된 캐시 저장 미러(600)(메타데이터 저장부 및 캐시 윈도우 객체들의 표시부) 내에서 갱신된다. 메타데이터 엔트리 위치는 캐시 디바이스의 CW 위치에 기초하여 메타데이터 저장부 내에서 선택된다. 후속적으로, 로그 엔트리는 생성되어 캐시 저장부(300)의 로그 저장부(500) 내에 기록된다. 호스트 시스템 I/O는 모든 메타데이터 트랜잭션들의 완료시 완료된다.
로그 저장부(500)에 대해 할당된 저장부 내에 모든 로그 엔트리들이 일단 채워지면(예, 64 MB), 메타데이터 블록 또는 메타데이터 미러의 호스트 메모리 표시부는 플래쉬에 기반한 캐시 디바이스(130)의 캐시 저장부(300)에 기록된다. 메타데이터 저장부(400)의 성공적인 갱신 이후, 캐시 저장부(300)의 헤더 정보는 다음에 사용 가능한 로그 시퀀스 번호로 갱신된다.
도 5에 도시된 로그 엔트리 배열은 CW 인덱스가 20 비트들을 할당받을 때 1 TB의 캐시 메모리 용량을 제공하기 위하여 최대 백만 CWs를 나타낼 수 있다. 시퀀스 번호는 로그 저장부(500)를 담당할 수 있는 값을 가질 것이다. 로그 엔트리들(502) 내의 필드들의 대안적인 배열들(즉, 위치 및 비트 길이들)이 고려된다.
도 6은 도 2의 호스트 메모리 표시부 또는 캐시 저장 미러(600)의 개략도이다. 도 6에 표시된 바와 같이, 캐시 소프트웨어(800)는 호스트 시스템 메모리(120) 내의 캐시 저장 미러(600)를 유지한다. 캐시 저장 미러는 플래쉬에 기반한 캐시 디바이스(130) 상의 캐시 저장부(300)로부터 메타데이터 저장부의 복제물을 포함하고, 캐시 저장부(300)로 전달을 위해 지정된 CWs로부터 캐시 윈도우 객체들을 유지한다. 위에서 나타낸 바와 같이, 캐시 저장부(300) 내의 로그 저장부(500)가 저장 용량에 도달한 이후에만, 캐시 저장 미러(600) 내의 정보가 캐시 저장부(300) 내의 정보를 갱신하기 위하여 사용된다.
도 7은 시간에 걸쳐 도 3의 로그 저장부(500)의 사용을 도시하는 개략도이다. 도 7에 표시된 바와 같이, 로그 엔트리들(712)이 로그 저장부(500) 내에 저장될 때, 이들은 화살표(710)로 개략적으로 표시된 초기 체크포인트 또는 시퀀스 번호로부터 시작하는 순차적인 방식으로 더해진다. 위에서 표시된 바와 같이, 초기 시퀀스 번호는 캐시 저장부(300)의 헤더 정보(310) 내에 한정된다.
도 8은 도 2의 캐시 소프트웨어(800)의 개략도이다. 도시된 실시예에서, 다양한 로직 요소들 또는 모듈들은 캐시 소프트웨어(800)의 개별적인 구성요소들로서 서로로부터 분리되어 도시된다. 이에 관해, 캐시 소프트웨어(800)는 관리 로직(805), 구획 로직(810), 캐시 저장 로직(812), 로그 엔트리 로직(814), 비교 로직(816) 및 메타데이터 회복 로직(818)을 포함한다. 관리 로직(805)은, 프로세서에 의해 실행될 때, 데이터 저장부(140)에 대한 및 플래쉬에 기반한 캐시 디바이스(130)에 대한 I/O 동작들을 포함하는 호스트 시스템(100) 내의 데이터 동작들을 조정하는 실행 가능한 명령들을 포함한다. 동작시, 관리 로직(805)은 플래쉬에 기반한 캐시 디바이스(130) 내에서 캐싱되어야 하는 데이터 저장부(140) 내의 데이터를 식별하는 데이터 저장 관리자를 인에이블시킨다.
구획 로직(810)은, 프로세서에 의해 실행될 때, 플래쉬에 기반한 캐시 디바이스(130)의 캐시 저장부(300) 내에서 헤더 정보(310), CW 저장부(320), 메타데이터 저장부(400) 및 로그 저장부(500)의 위치 및 크기를 조정하는 실행 가능한 명령들을 포함한다. 구획 로직(810)은 데이터 저장부(140) 및 플래쉬에 기반한 캐시 디바이스(130)의 특징들을 식별하는 하나 이상의 입력 파라미터들에 따라 메타데이터 저장부(400) 및 로그 저장부(500)에 대한 최적의 크기들 및 배치를 계산하기 위한 규칙들 및 알고리즘들을 포함할 수 있다.
캐시 저장 로직(812)은, 프로세서에 의해 실행될 때, 플래쉬에 기반한 캐시 디바이스(130)에 대한 I/O 동작들을 조정하는 실행 가능한 명령들을 포함한다. 위에서 기술한 바와 같이, 캐시 저장 로직(812)은 VCWs, CWs, VCW 자유 목록들을 관리하고, 테이블들 및 우선순위 목록들 또는 버켓들을 구비한다. 캐시 저장 로직(812)은, 플래쉬에 기반한 캐시 디바이스(130)에 전달되어야 하는 저장된 데이터 항목들을 식별하기 위하여, 호스트 시스템(100)과 데이터 저장부(140) 사이의 I/O 동작들을 감시하는 모듈과 통합될 수 있다. 대안적으로, 캐시 저장 로직(812)은 호스트 시스템(100) 상에서 실행중이고 이러한 "핫" 데이터를 식별하도록 구셩된 별도의 애플리케이션으로부터의 입력들을 수신할 수 있다. 덧붙여, 캐시 저장 로직(812)은 엔트리들(402)의 형태로 적절하게 배열된 정보의 전달을 메타데이터 저장부(400)로 향하게 한다.
로그 엔트리 로직(814)은, 프로세서에 의해 실행될 때, 로그 저장부(500) 내에서 도 5에 도시된 실시예에 따라 위에서 도시되고 기술된 바와 같이, 적절하게 배열된 로그 엔트리(502)로 어느 정보가 전달될지를 결정하는 실행 가능한 명령들을 포함한다. 또한 위에서 표시한 바와 같이, 로그 엔트리 로직(814)은, 초기 인덱스 또는 시퀀스 번호를 검색할 것이고, 각 로그 엔트리들을, 각 로그 엔트리가 캐시 저장부(300) 내의 CW(322)와 1:1 관계로 맵핑된 상태로, 메타데이터 저장부(400)의 엔트리들 내에 것들과 공통인 정보 필드들을 통해 데이터 저장부(140) 내에 위치한 데이터 항목에 순차적으로 입력할 것이다.
비교 로직(816)은, 프로세서에 의해 실행될 때, 로그 저장부(500) 내의 유효 로그 엔트리들을 결정하는 실행 가능한 명령들을 포함한다. 이에 관해, 각 엔트리의 시퀀스 번호는 다음 엔트리와 비교된다. 고유 증가 시퀀스 번호들이 사용된다. 결과적으로, 시퀀스 번호들의 차이가 0 또는 1인 한, 로그 엔트리는 유효하다(및 메타데이터(400)에 인가된다). 차이가 0 또는 1이 아닐 때, 비교 로직(816)은 프로세스가 유효하지 않은 로그 엔트리에 도달하였다고 표시하고, 로그의 추가 처리가 종료된다. 위에서 표시한 바와 같이, 헤더 정보(310)는 비교시에 사용될 제 1 시퀀스 번호를 제공한다.
초기화 프로세스 도중에, 랜덤 시퀀스 번호가 선택된다. 랜덤 시퀀스 번호는 캐시 저장부 상의 헤더 정보 내에 기록된다. 제 1 로그 엔트리는 헤더 정보 내의 저장된 시퀀스 번호를 사용할 것이다. 후속적인 로그 엔트리들을 위해, 시퀀스 번호는 1씩 증가한다. 또한 위에서 표시한 바와 같이, 시퀀스 번호들은 처리가 로그 저장부(500)의 마지막으로부터 다시 로그 저장부(500)의 시작까지 담당하는 방식으로 배열된다. 0 또는 1이 아닌 차이 값에 의해 결정된 로그가 완전할 때, 휘발성 메모리 내의 메타데이터는 캐시 저장부에 기록되고, 시퀀스 번호는 1씩 증가되어, 헤더 정보에 저장된다. 로그에 대한 다음의 갱신은 시퀀스 번호에 의해 식별된 로그 위치에서 이루어질 것이다.
메타데이터 회복 로직(818)은, 프로세서에 의해 실행될 때, 메타데이터 저장부(400)의 콘텐츠와 로그 저장부(500) 내의 유효 엔트리들로부터 캐시 미러(600)를 재구축하기 위한 일련의 활동들을 수행하는 실행 가능한 명령들을 포함한다. 캐시 저장부(300)의 레이아웃을 이해하고 다음에 사용 가능한 시퀀스 번호를 검색하기 위하여 캐시 저장부(300) 내의 제 1 헤더 정보(310)가 판독된다. 메타데이터 저장부(400)의 콘텐츠는 호스트 시스템(100)의 메모리(120) 내의 캐시 미러(600)에 복제된다. 제 1 로그 엔트리는 헤더 정보(310)로부터 회복된 다음에 사용 가능한 시퀀스 번호에 대해 검사된다. 시퀀스 번호가 일치하면, 로그 엔트리는 유효하고, 로그 엔트리와 관련된 데이터는 회복되어야 한다. 이후, 시퀀스 번호는 증가되고, 유효 로그 엔트리에 대해 검사된다. 유효 로그 엔트리들은 캐시 미러(600)의 상부에 인가된다. 시퀀스 번호가 일치하지 않을 때, 가장 최근의 메타데이터가 캐시 저장부에 저장되고, 로그의 처리는 종료된다. 캐시 미러(600) 내의 메타데이터는 트래버스되고, 적절한 CWs가 갱신된다. 회복된 메타데이터는 캐시 저장부에 저장되고, 다음에 사용 가능한 시퀀스 번호는 헤더 정보(310) 내에 저장된다. 이들 CWs는 자유 목록으로부터 제거되어, 해쉬 테이블 및 우선순위 목록에 적절한 우선순위 인덱스 또는 값으로 삽입된다. 덧붙여, CWs의 적중 계수는 우선순위 인덱스 또는 버킷의 함수로서 초기화되고, CWs를 보장하기 위한 승격 임계값은 적절한 상대적인 "핫닛스"("hotness") 범위 내에서 식별된다. 이후, 호스트 I/O 동작들이 허용된다. 다음의 로그 엔트리는 헤더 정보(310)에 저장된 시퀀스 번호에 따라 로그 저장부에 저장될 것이다.
도 9a 및 도 9b는 캐시 디바이스의 재부팅에 걸쳐 개선된 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 방법(900)을 도시하는 흐름도를 포함한다. 램프업은 캐시 제어기가 재부팅 동작으로부터 회복하는데 걸리는 시간이다. 회복을 통해, 캐시 저장부(300)가 모든 "핫니스" 및 우선순위 대기열 특성들을 포함하는 유효 상태로 복원되는 것을 의미한다. 달리 말하면, 캐시 이력은 손실 없이 복원된다.
방법(900)이 재부팅 동작에 걸쳐 메타데이터를 유지할 수 있는 시스템을 구축하기 위한 예비 단계들 및 재부팅으로부터 시스템 회복을 검출할 때 수행되는 단계들을 포함하는 것이 이해되어야 한다. 방법(900)은 캐시 저장부가 메타데이터 저장부, 로그 저장부, CWs의 세트 및 헤드 정보 저장부를 지원하기 위하여 분할되는 블록(902)을 통해 시작한다. 블록(904)에서, 메타데이터 복제물과 CW 객체들의 복제물은 호스트 시스템에 액세스될 수 있는 별도의 메모리 내에 채워진다. 블록(906)에서, 메타데이터 복제물과 CW 객체들이 별도의 메모리 내에 저장된 복제물 내에서 갱신될 때마다, 캐시 디바이스의 로그 저장부 내에서 엔트리가 생성된다. 블록(908)에서, 로그 저장부 내의 현재의 인덱스 또는 시퀀스 번호가 초기 인덱스 또는 체크포인트와 비교되어, 로그 저장부의 용량이 도달될 때를 결정한다. 결정 블록(910)에서, 로그가 완전한지의 여부에 대한 결정이 이루어진다. 로그가 그 용량에 도달하지 않았을 때, 결정 블록(910)을 빠져나가는 "아니오"로 표시된 흐름 제어 화살표로 표시된 바와 같이, 처리는 블록(906)으로 되돌아 간다. 그렇지 않을 경우, 처리는 별도의 메모리 내의 메타데이터 복제물과 CW 객체들이 캐시 저장부에 전달되는 블록(912)을 통해 지속한다. 이후, 블록(914)에서 표시된 바와 같이, 헤더 정보 내의 초기 인덱스 또는 시퀀스 번호는 별도의 메모리 내의 다음에 사용 가능한 저장 위치로 대체된다.
연결부(A)에 의해 표시된 바와 같이, 방법(900)은 캐시 디바이스가 재부팅 동작으로부터 회복되는지가 결정되는 결정 블록(916)을 통해 지속된다. 복구되지 않는다면, 연결부(B)에 의해 표시된 바와 같이, 처리는 블록(906)을 통해 지속한다. 그렇지 않을 경우, 시스템은 재부팅되고, 처리는, 상태 플래그가 캐시 디바이스(130)로부터 호스트 I/O 동작을 지연하도록 설정되고, 헤더 정보가 로그 내에서 다음에 사용 가능한 저장 위치를 식별하기 위하여 캐시 저장부로부터 판독되는 블록(918)을 통해 지속한다. 블록(920)에서, 캐시 내에 저장된 메타데이터의 콘텐츠는 호스트 시스템에 액세스될 수 있는 별도의 메모리 내의 메타데이터 미러에 복제된다. 블록(922)에서, 유효 로그 엔트리들이 메타데이터의 상부에 인가된다. 블록(924)에서, 회복된 메타데이터가 처리되어, 데이터 저장 시스템으로부터의 정보로 갱신될 필요가 있는 CW를 식별한다. 블록(926)에서, CW는 자유 목록으로부터 제거되고, 해쉬 테이블 내에서 갱신되어, 우선순위 인덱스에 따라 적절한 위치에 삽입된다. 블록(928)에서, 카운터는 우선순위 인덱스 승격 임계값에 따라 초기화된다. 이후, 결정 블록(930)에 표시된 바와 같이, 다음 로그 엔트리가 유효한지에 대한 결정이 이루어진다. 만약 유효하다면, 블록(932)에서 표시된 바와 같이 인덱스는 고유 시퀀스 번호를 통해 증가되고, 처리는 블록(924)으로 되돌아 간다. 그렇지 않을 경우, 모든 로그 엔트리들은 처리되었고, 상태 플래그는 I/O 동작이 인에이블되었음을 표시하기 위하여 블록(934) 내에서 리셋된다.
결과적으로, 캐시가 완전하고, 새로운 데이터 요소가 캐시 내에 속한 것으로 식별되면, 캐시 제어기는, 재부팅 바로 이전의 시간 기간에 상대적으로 낮은 I/O 요청들을 수신하였던 CW의 교체를 위한 적절한 후보로서 식별할 것이다. 이러한 방식으로, 개선된 캐시 제어기는 캐시 저장부로부터 상대적으로 "핫터"("hotter") 데이터 영역들을 폐기하는 대신에, 상대적으로 낮은 I/O 요청들을 수신하는 CWs를 재사용한다.
CWs가 빈번하게 승격 또는 강등될 때, 로그 갱신들의 빈도를 줄이기 위하여, 로그 엔트리 내의 갱신들의 입도가 수정될 수 있다. 예컨대, CW가 우선순위 레벨의 25% 이상에 걸쳐 승격 또는 강등될 때, 얼마나 많을 레벨들인지에 관계없이, 오로지 하나의 로그 엔트리가 기록된다.
도 9a 및 도 9b의 흐름도들은 오로지 기술된 방법의 기초가 되는 로직의 예시 또는 설명이 되도록 의도됨을 이해해야 한다. 당업자는 다양한 실시예들에서 캐시 처리 시스템들 또는 캐시 제어기들을 포함하는 데이터 처리 시스템들이 기술된 방법들을 행하기 위하여 임의의 다양한 방식으로 프로그램되거나 구성될 수 있음을 이해할 것이다. 위에서 기술된 단계들 또는 행위들은 서로 병렬로 또는 비동기적인 것을 포함하여, 임의의 적합한 순서 또는 시퀀스로 발생할 수 있다. 도 9a 및 도 9b에 관해 위에서 기술된 단계들 또는 행위들은 일부 실시예들에서 다른 것들과 결합될 수 있거나 생략될 수 있다. 명확성을 위해 도 9a 및 도 9b에서 흐름도의 형태로 도시되었지만, 기초가되는 로직은 모듈화될 수 있거나, 또는 그렇지 않을 경우 임의의 적합한 방식으로 배열될 수 있다. 당업자는 상술한 방법들을 행하기 위하여, 주문형 집적회로(ASIC) 또는 유사한 디바이스 또는 디바이스들의 조합의 형태와 같이, 적합한 소프트웨어 또는 적합한 로직을 쉽게 프로그래밍 또는 구성할 수 있을 것이다. 또한, 소프트웨어 명령들 또는 유사한 로직과, 이러한 소프트웨어 명령들 또는 유사한 로직이 프로세서(110)에 의해 실행을 위해 저장 또는 구현되는 로컬 메모리(120) 또는 다른 메모리의 조합은 특허 사전에서 사용된 용어로서 "컴퓨터-판독 가능한 매체" 또는 "컴퓨터 프로그램 제품"을 포함한다.
본 발명의 원리들 및 개념들을 설명하기 위하여 하나 이상의 예시적인 실시예들을 참조하여 본 발명이 기술되었음을 주목해야 한다. 본 발명은 이들 실시예들로 국한되지 않는다. 당업자가 이해하는 바와 같이, 본 명세서에 제공된 설명의 견지에서, 많은 변형이 본 명세서에서 기술된 실시예들에 이루어질 수 있고, 모든 이러한 변형들은 청구항들에서 한정된 본 발명의 범주 내에 든다.

Claims (20)

  1. 호스트 컴퓨터 시스템 및 데이터 저장 시스템과 관련된 캐시 저장부로서, 상기 데이터 저장 시스템은 캐시 호스트 제어기의 재부팅에 걸쳐 상기 캐시 저장부 내의 정보를 유지하는, 캐시 저장부를 관리하기 위한 방법으로서,
    메타데이터를 저장하기 위한 제 1 부분, 상기 캐시 저장부 내에 속한 데이터로서 데이터 저장 관리자에 의해 식별된 데이터 값들을 저장하기 위한 제 2 부분, 상기 메타데이터에 대한 변화들을 저장하기 위한 제 3 부분, 및 상기 호스트 및 상기 캐시 저장부에 관한 정보를 포함하는 제 4 부분을 제공하기 위하여 상기 캐시 저장부를 파티셔닝하는 단계;
    메타데이터로 상기 제 1 부분의 표시부를 채우고, 상기 데이터 저장 시스템에 저장된 특정 데이터 항목들에 대해 원하는 시간에 걸쳐 요청들을 나타내는 빈도 값에 따라 상기 캐시 저장부에 저장될 데이터 항목들을 식별하는 상기 데이터 저장 관리자에 의해 지시된 데이터 값들로 상기 제 2 부분의 표시부를 채우는 단계;
    상기 제 1 부분의 표시부가 메타데이터로 채워지고, 상기 제 2 부분의 표시부가 상기 데이터 저장 관리자에 의해 지시된 데이터 값들로 채워질 때마다, 상기 제 3 부분의 표시부 내의 엔트리를 생성하는 단계로서, 상기 제 1 부분, 상기 제 2 부분 및 상기 제 3 부분의 표시부들은 상기 호스트 컴퓨터 시스템, 상기 데이터 저장 관리자, 및 상기 캐시 호스트 제어기 중 하나 이상을 통해 액세스될 수 있는 휘발성 메모리 내에 저장되는, 상기 제 3 부분의 표시부 내의 엔트리를 생성하는 단계;
    상기 제 3 부분의 데이터 저장 용량에 도달하는 때를 결정하기 위하여 상기 캐시 저장부의 상기 제 3 부분 내의 현재의 인덱스를 초기 인덱스와 비교하는 단계;
    상기 제 3 부분의 데이터 저장 용량에 도달하였을 때,
    상기 제 1 부분의 표시부 내의 정보를 상기 캐시 저장부의 대응하는 제 1 저장부에 기록하는 단계; 및
    상기 초기 인덱스를 상기 캐시 저장부의 상기 제 3 부분 내에서 다음에 사용 가능한 저장 위치로 대체하는 단계;를 포함하는,
    캐시 저장부를 관리하기 위한 방법.
  2. 제 1항에 있어서,
    상기 제 1 부분의 표시부, 상기 제 2 부분의 표시부 및 상기 제 3 부분의 표시부를 원하는 2진 값으로 초기화하는 단계를 포함하는, 캐시 저장부를 관리하기 위한 방법.
  3. 제 1항에 있어서,
    상기 제 4 부분은, 상기 호스트의 상태의 표시, 상기 제 1 부분의 위치와 크기를 한정하는 제 1 식별자와 제 1 범위, 상기 제 2 부분 내의 캐시 저장 유닛 내의 캐시 저장 유닛들의 수와 각 캐시 라인의 크기를 식별하는 제 2 식별자와 제 3 식별자, 및 상기 제 3 부분의 각 위치와 크기를 한정하는 제 4 식별자와 제 4 범위를 포함하는, 캐시 저장부를 관리하기 위한 방법.
  4. 제 1항에 있어서,
    상기 제 1 부분은 제 1 엔트리를 포함하고, 상기 제 1 엔트리는 가상의 디렉토리 식별자, 로직 블록 어드레스, 우선순위 인덱스, 예약 영역, 및 캐시 라인 비트맵을 포함하는, 캐시 저장부를 관리하기 위한 방법.
  5. 제 1항에 있어서,
    상기 제 3 부분은 시퀀스 번호, 캐시 라인 비트맵, 가상 디렉토리 식별자, 로직 블록 어드레스, 우선순위 인덱스, 예약 영역, 및 캐시 라인 비트맵을 포함하는, 캐시 저장부를 관리하기 위한 방법.
  6. 제 1항에 있어서,
    상기 캐시 호스트 제어기의 재부팅시,
    다음에 사용 가능한 시퀀스 번호를 식별하기 위하여 상기 제 4 부분의 콘텐츠를 판독하는 단계;
    상기 캐시 메모리 디바이스의 상기 제 1 부분을, 데이터 저장 관리자와 캐시 저장부에 의해 액세스될 수 있는 휘발성 메모리에 복제하는 단계;
    회복된 메타데이터를 생성하기 위하여, 상기 데이터 저장 관리자와 상기 캐시 저장부에 의해 액세스될 수 있는 상기 휘발성 메모리의 상기 제 1 부분 내의 하나 이상의 엔트리들의 상부에 유효 로그 엔트리들을 인가하는 단계;
    적절한 캐시 윈도우들을 식별하여 상기 데이터 저장 시스템으로부터 대응하는 데이터로 갱신하기 위하여 상기 회복된 메타데이터를 트래버싱(traversing)하는 단계;
    상기 적절한 캐시 윈도우들의 상태를 수정하는 단계;
    상기 캐시 윈도우들을 해쉬 테이블들과 상기 우선순위 인덱스 내에 삽입하는 단계; 및
    일단 모든 메타데이터 엔트리들이 트래버스되면, 표시를 상기 캐시 호스트 제어기에 전달하는 단계;를 더 포함하는, 캐시 저장부를 관리하기 위한 방법.
  7. 제 6항에 있어서,
    유효 로그 엔트리들을 결정하기 위하여, 제 1 엔트리 내의 시퀀스 번호를 후속 엔트리 내의 시퀀스 번호와 비교하는 단계를 포함하는, 캐시 저장부를 관리하기 위한 방법.
  8. 제 7항에 있어서,
    상기 비교 단계는,
    상기 제 1 엔트리 내의 시퀀스 번호와 다음 엔트리 내의 시퀀스 번호와의 차이를 계산하는 단계;
    상기 차이가 0 또는 1인지를 결정하는 단계; 및
    상기 차이가 0 또는 1이 아닌 경우, 상기 회복된 메타데이터의 트래버싱을 종료하는 단계;를 포함하는, 캐시 저장부를 관리하기 위한 방법.
  9. 캐시 제어기로서,
    호스트 컴퓨터 시스템 및 데이터 저장 시스템과 통신하기 위한 인터페이스;
    캐시 저장부; 및
    상기 캐시 저장부에 저장된 헤더 정보에 응답하는 처리 시스템;을 포함하고,
    상기 처리 시스템은,
    상기 캐시 제어기의 현재의 상태에 응답하는 상태 식별자에 프로그램 가능한 방식으로 응답하고,
    메타데이터 로그를 위해 다음에 사용 가능한 시퀀스 번호를 식별하고,
    상기 캐시 저장부 내의 메타데이터 저장부의 위치와 크기를 식별하고,
    상기 캐시 저장부 내의 메타데이터 로그의 위치와 크기를 식별하고,
    상기 캐시 저장부 내에서 각각이 상기 캐시 제어기에 의해 추가로 식별되는 복수의 캐시 라인들을 포함하는 복수의 캐시 윈도우들의 위치와 크기를 식별하고,
    상기 메타데이터의 표시부에 저장되고 상기 호스트 컴퓨터 시스템을 통해 액세스될 수 있는 정보를 상기 캐시 저장부에 기록하고,
    상기 메타데이터 로그 내에서 다음에 사용 가능한 시퀀스 번호를 대체하도록 구성되는, 캐시 제어기.
  10. 제 9항에 있어서,
    상기 처리 시스템은, 상기 캐시 저장부에 상기 메타데이터, 캐시 윈도우 객체들, 및 상기 메타데이터 로그를 유지하도록 추가로 구성되는, 캐시 제어기.
  11. 제 10항에 있어서,
    상기 메타데이터는 적어도 하나의 엔트리를 포함하고, 상기 엔트리는 가상의 디렉토리 식별자, 로직 블록 어드레스, 우선순위 인덱스, 예약 영역, 및 캐시 라인 비트맵을 포함하는, 캐시 제어기.
  12. 제 11항에 있어서,
    상기 메타데이터 로그는 시퀀스 번호, 캐시 라인 비트맵, 가상 디렉토리 식별자, 로직 블록 어드레스, 우선순위 인덱스, 예약 영역 정보, 및 캐시 윈도우 인덱스를 포함하는, 캐시 제어기.
  13. 제 9항에 있어서,
    상기 처리 시스템은, 상기 캐시 제어기의 재부팅 종료시,
    상기 캐시 저장부의 표시부의 콘텐츠로서, 상기 호스트 컴퓨터 시스템 에 액세스될 수 있는 휘발성 메모리 내에 저장되고, 다음에 사용 가능한 시퀀스 번호를 더 포함하는, 콘텐츠를 판독하고;
    상기 메타데이터 저장부의 콘텐츠를 상기 호스트 컴퓨터 시스템에 액세스 될 수 있는 휘발성 메모리에 복제하고;
    회복된 메타데이터를 생성하기 위하여 상기 메타데이터 저장부 내의 하나 이상의 엔트리들의 상부에 유효 로그 엔트리들을 인가하고;
    적절한 캐시 윈도우들을 식별하여 상기 데이터 저장 시스템으로부터 대응하는 데이터로 갱신하기 위하여 상기 회복된 메타데이터를 트래버싱(traversing)하고;
    상기 적절한 캐시 윈도우들의 상태를 수정하고;
    상기 캐시 윈도우들을 해쉬 테이블들과 상기 우선순위 인덱스 내에 삽입하고;
    상기 캐시 메모리에 대한 입-출력 동작들이 인에이블되었음을 데이터 저장 시스템에 나타내는 플래그를 갱신하도록, 추가로 구성되는, 캐시 제어기.
  14. 제 13항에 있어서,
    유효 로그 엔트리들은, 제 1 엔트리 내의 시퀀스 번호의 후속 엔트리 내의 시퀀스 번호와의 비교에 의해 식별되는, 캐시 제어기.
  15. 제 14항에 있어서,
    상기 비교는,
    상기 제 1 엔트리 내의 시퀀스 번호와 다음 엔트리 내의 시퀀스 번호와의 차이를 계산하는 것; 및
    상기 차이가 0 또는 1인지를 결정하는 것;을 포함하는, 캐시 제어기.
  16. 컴퓨터 판독 가능한 영구적 형태의 명령들을 저장한 컴퓨터 판독 가능한 매체로서,
    상기 명령들은 캐시 제어기의 처리 시스템상에서 실행될 때, 상기 처리 시스템으로 하여금,
    캐시 저장부를 파티셔닝하여, 메타데이터를 저장하기 위한 제 1 부분, 상기 캐시 저장부 내에 속한 데이터로서 데이터 저장 관리자에 의해 식별된 데이터 값들을 저장하기 위한 제 2 부분, 상기 메타데이터에 대한 변화들을 저장하기 위한 제 3 부분, 및 호스트 및 상기 캐시 저장부에 관한 정보를 포함하는 제 4 부분을 제공하고;
    메타데이터로 상기 제 1 부분의 표시부를 채우고, 상기 데이터 저장 시스템에 저장된 특정 데이터 항목들에 대해 원하는 시간에 걸쳐 요청들을 나타내는 빈도 값에 따라 상기 캐시 저장부에 저장될 데이터 항목들을 식별하는 상기 데이터 저장 관리자에 의해 지시된 데이터 값들로 상기 제 2 부분의 표시부를 채우고;
    상기 제 1 부분의 표시부가 메타데이터로 채워지고, 상기 제 2 부분의 표시부가 상기 데이터 저장 관리자에 의해 지시된 데이터 값들로 채워질 때마다, 상기 제 3 부분의 표시부 내의 엔트리를 생성하되, 상기 제 1 부분, 상기 제 2 부분 및 상기 제 3 부분의 표시부들은 상기 호스트 컴퓨터 시스템, 상기 데이터 저장 관리자, 및 상기 캐시 호스트 제어기 중 하나 이상을 통해 액세스될 수 있는 휘발성 메모리 내에 저장되는, 상기 제 3 부분의 표시부 내의 엔트리를 생성하고;
    상기 제 3 부분의 데이터 저장 용량에 도달하는 때를 결정하기 위하여 상기 제 3 부분의 표시부 내의 현재의 인덱스를 초기 인덱스와 비교하고;
    상기 제 3 부분의 데이터 저장 용량에 도달하였을 때,
    상기 제 1 부분의 표시부 내의 정보를 상기 캐시 저장부의 대응하는 제 1 저장부에 기록하고;
    상기 초기 인덱스를 상기 캐시 저장부의 상기 제 3 부분 내에서 다음에 사용 가능한 저장 위치로 대체하도록; 명령하는,
    컴퓨터 판독 가능한 매체.
  17. 제 16항에 있어서,
    상기 프로세서는, 상기 제 1 부분의 표시부, 상기 제 2 부분의 표시부 및 상기 제 3 부분의 표시부를 원하는 2진 값으로 초기화하도록, 추가로 명령받는, 컴퓨터 판독 가능한 매체.
  18. 제 16항에 있어서,
    상기 제 4 부분은, 상기 호스트의 상태의 표시, 상기 제 1 부분의 위치와 크기를 한정하는 제 1 식별자와 제 1 범위, 상기 제 2 부분 내의 캐시 저장 유닛 내의 캐시 저장 유닛들의 수와 각 캐시 라인의 크기를 식별하는 제 2 식별자와 제 3 식별자, 및 상기 제 3 부분의 각 위치와 크기를 한정하는 제 4 식별자와 제 4 범위를 포함하는, 컴퓨터 판독 가능한 매체.
  19. 제 16항에 있어서,
    상기 제 1 부분은 제 1 엔트리를 포함하고, 상기 제 1 엔트리는 가상의 디렉토리 식별자, 로직 블록 어드레스, 우선순위 인덱스, 예약 영역, 및 캐시 라인 비트맵을 포함하고, 상기 제 3 부분은 시퀀스 번호, 캐시 라인 비트맵, 가상 디렉토리 식별자, 로직 블록 어드레스, 우선순위 인덱스, 예약 영역, 및 캐시 윈도우 인덱스를 포함하는, 컴퓨터 판독 가능한 매체.
  20. 제 16항에 있어서,
    상기 프로세서는,
    상기 캐시 호스트 제어기의 재부팅시, 다음에 사용 가능한 시퀀스 번호를 식별하기 위하여 상기 제 4 부분의 콘텐츠를 판독하고;
    상기 캐시 저장부의 상기 제 1 부분을, 데이터 저장 관리자, 호스트 컴퓨터 시스템 및 캐시 제어기에 의해 액세스될 수 있는 휘발성 메모리에 복제하고;
    회복된 메타데이터를 생성하기 위하여, 상기 데이터 저장 관리자와 상기 캐시 저장부에 의해 액세스될 수 있는 상기 휘발성 메모리의 상기 제 1 부분 내의 하나 이상의 엔트리들의 상부에 유효 로그 엔트리들을 인가하고;
    적절한 캐시 윈도우들을 식별하여 상기 데이터 저장 시스템으로부터 대응하는 데이터로 갱신하기 위하여 상기 회복된 메타데이터를 트래버싱하고;
    상기 적절한 캐시 윈도우들의 상태를 수정하고;
    상기 캐시 윈도우들을 해쉬 테이블들과 우선순위 인덱스 내에 삽입하고;
    일단 모든 메타데이터 엔트리들이 트래버스되면, 표시를 상기 캐시 호스트 제어기에 전달하도록; 추가로 명령받는, 컴퓨터 판독 가능한 매체.
KR1020140004930A 2013-03-11 2014-01-15 시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체 KR20140111588A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN272/KOL/2013 2013-03-11
IN272KO2013 2013-03-11

Publications (1)

Publication Number Publication Date
KR20140111588A true KR20140111588A (ko) 2014-09-19

Family

ID=50241211

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140004930A KR20140111588A (ko) 2013-03-11 2014-01-15 시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체

Country Status (6)

Country Link
US (1) US20140258628A1 (ko)
EP (1) EP2778933A1 (ko)
JP (1) JP2014174992A (ko)
KR (1) KR20140111588A (ko)
CN (1) CN104050094A (ko)
TW (1) TW201439763A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019376B2 (en) 2015-11-19 2018-07-10 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US10061590B2 (en) * 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10255182B2 (en) 2015-02-11 2019-04-09 Samsung Electronics Co., Ltd. Computing apparatus and method for cache management
US9684596B2 (en) * 2015-02-25 2017-06-20 Microsoft Technology Licensing, Llc Application cache replication to secondary application(s)
US9600417B2 (en) 2015-04-29 2017-03-21 Google Inc. Data caching
CN106503008B (zh) * 2015-09-07 2020-02-14 网宿科技股份有限公司 文件存储方法和装置及文件查询方法和装置
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
EP3188025A1 (en) * 2015-12-29 2017-07-05 Teknologian Tutkimuskeskus VTT Oy Memory node with cache for emulated shared memory computers
KR102504763B1 (ko) * 2016-02-05 2023-03-02 에스케이하이닉스 주식회사 데이터 저장 장치
US10037149B2 (en) * 2016-06-17 2018-07-31 Seagate Technology Llc Read cache management
JP6717153B2 (ja) * 2016-10-06 2020-07-01 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
US10769134B2 (en) 2016-10-28 2020-09-08 Microsoft Technology Licensing, Llc Resumable and online schema transformations
US10599585B2 (en) * 2017-03-23 2020-03-24 Intel Corporation Least recently used-based hotness tracking mechanism enhancements for high performance caching
US20190012259A1 (en) * 2017-07-06 2019-01-10 Futurewei Technologies, Inc. Lba eviction in pcm media
CN110832466B (zh) * 2017-07-14 2023-03-10 华为技术有限公司 读、部分写数据方法以及相关装置
US10691566B2 (en) 2017-07-27 2020-06-23 International Business Machines Corporation Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache
EP3665580B1 (en) * 2017-08-08 2023-03-08 Continental Automotive Technologies GmbH Method of operating a cache
US11036641B2 (en) 2017-08-09 2021-06-15 International Business Machines Corporation Invalidating track format information for tracks demoted from cache
US10579532B2 (en) 2017-08-09 2020-03-03 International Business Machines Corporation Invalidating track format information for tracks in cache
US10565109B2 (en) * 2017-09-05 2020-02-18 International Business Machines Corporation Asynchronous update of metadata tracks in response to a cache hit generated via an I/O operation over a bus interface
US11347600B2 (en) 2017-09-12 2022-05-31 Western Digital Technologies, Inc. Database transaction log migration
CN110413199B (zh) * 2018-04-28 2023-02-21 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机可读存储介质
CN111338560A (zh) * 2018-12-19 2020-06-26 北京奇虎科技有限公司 一种缓存重建方法和装置
CN111475345B (zh) * 2019-01-24 2023-03-31 旺宏电子股份有限公司 存储器及存储器操作方法
US10884959B2 (en) * 2019-02-13 2021-01-05 Google Llc Way partitioning for a system-level cache
CN112148640A (zh) * 2019-06-26 2020-12-29 深圳市航顺芯片技术研发有限公司 一种高速缓冲存储器的替换方法、高速缓冲存储器及计算机系统
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102495910B1 (ko) 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11755476B2 (en) * 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
US10976965B1 (en) * 2020-10-14 2021-04-13 First Capitol Consulting, Inc. Optimization of in-memory processing of data represented by an acyclic graph so that the removal and re-materialization of data in selected nodes is minimized
CN113050893B (zh) * 2021-03-30 2022-08-30 重庆紫光华山智安科技有限公司 一种高并发的文件存储方法、系统、介质及电子终端
US11868256B2 (en) * 2021-07-20 2024-01-09 EMC IP Holding Company LLC Techniques for metadata updating and retrieval
CN114301931B (zh) * 2022-03-11 2022-07-08 上海凯翔信息科技有限公司 一种基于云端nas的数据同步系统
CN115437853B (zh) * 2022-11-07 2023-03-10 四川省华存智谷科技有限责任公司 系统异常重启下的缓存数据保护方法及系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6678787B2 (en) * 2000-12-21 2004-01-13 International Business Machines Corporation DASD-free non-volatile updates
US6920533B2 (en) * 2001-06-27 2005-07-19 Intel Corporation System boot time reduction method
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US7380059B2 (en) * 2003-05-16 2008-05-27 Pillar Data Systems, Inc. Methods and systems of cache memory management and snapshot operations
US7143240B2 (en) * 2003-10-31 2006-11-28 International Business Machines Corporation System and method for providing a cost-adaptive cache
JP2005339299A (ja) * 2004-05-28 2005-12-08 Hitachi Ltd ストレージ装置のキャッシュ制御方法
US20070208904A1 (en) * 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
CN101202732A (zh) * 2006-12-11 2008-06-18 中兴通讯股份有限公司 一种基于媒体服务器实现高速缓存的方法和装置
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US20110320733A1 (en) * 2010-06-04 2011-12-29 Steven Ted Sanford Cache management and acceleration of storage media
US8812788B2 (en) * 2010-11-09 2014-08-19 Lsi Corporation Virtual cache window headers for long term access history
EP2742428B1 (en) * 2011-08-12 2016-01-06 Sandisk Enterprise IP LLC Cache management including solid state device virtualization
US20130238851A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
US9251056B2 (en) * 2012-06-01 2016-02-02 Macronix International Co., Ltd. Bucket-based wear leveling method and apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019376B2 (en) 2015-11-19 2018-07-10 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
EP2778933A1 (en) 2014-09-17
US20140258628A1 (en) 2014-09-11
TW201439763A (zh) 2014-10-16
CN104050094A (zh) 2014-09-17
JP2014174992A (ja) 2014-09-22

Similar Documents

Publication Publication Date Title
KR20140111588A (ko) 시스템 재부팅을 통해 개선된 캐시 램프업을 달성하기 위하여 캐시 저장부를 관리하기 위한 시스템, 방법 및 컴퓨터-판독 가능한 매체
US8886882B2 (en) Method and apparatus of storage tier and cache management
US9311015B2 (en) Storage system capable of managing a plurality of snapshot families and method of operating thereof
US10402091B1 (en) Managing data in log-structured storage systems
US9684591B2 (en) Storage system and storage apparatus
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
US8930619B2 (en) Method and apparatus for efficiently destaging sequential I/O streams
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US9053038B2 (en) Method and apparatus for efficient read cache operation
US8447918B2 (en) Garbage collection for failure prediction and repartitioning
US9280478B2 (en) Cache rebuilds based on tracking data for cache entries
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
US9286209B2 (en) System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array
US20140189203A1 (en) Storage apparatus and storage control method
US20100100664A1 (en) Storage system
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US20160004644A1 (en) Storage Controller and Method for Managing Modified Data Flush Operations From a Cache
US10579540B2 (en) Raid data migration through stripe swapping
US20180032433A1 (en) Storage system and data writing control method
JP2016045935A (ja) 逐次入出力ストリームを効率的にデステージするための方法及び装置
US11315028B2 (en) Method and apparatus for increasing the accuracy of predicting future IO operations on a storage system
WO2018055686A1 (ja) 情報処理システム
EP4033346B1 (en) Affinity-based cache operation for a persistent storage device
US20220391317A1 (en) Systems, methods, and apparatus for wear-level aware memory allocation
CN115809018A (zh) 改善系统的读取性能的设备和方法

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid