KR102022721B1 - 동적으로 적응적인 캐싱을 위한 시스템 - Google Patents

동적으로 적응적인 캐싱을 위한 시스템 Download PDF

Info

Publication number
KR102022721B1
KR102022721B1 KR1020130022004A KR20130022004A KR102022721B1 KR 102022721 B1 KR102022721 B1 KR 102022721B1 KR 1020130022004 A KR1020130022004 A KR 1020130022004A KR 20130022004 A KR20130022004 A KR 20130022004A KR 102022721 B1 KR102022721 B1 KR 102022721B1
Authority
KR
South Korea
Prior art keywords
data
space
storage device
host
amount
Prior art date
Application number
KR1020130022004A
Other languages
English (en)
Other versions
KR20130108117A (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
Priority claimed from US13/566,204 external-priority patent/US9158695B2/en
Application filed by 엘에스아이 코포레이션 filed Critical 엘에스아이 코포레이션
Publication of KR20130108117A publication Critical patent/KR20130108117A/ko
Application granted granted Critical
Publication of KR102022721B1 publication Critical patent/KR102022721B1/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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

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

Abstract

본 발명은 동적으로 적응적인 캐싱을 위한 시스템에 관한 것이다. 이 시스템은 호스트로부터 수신된 데이터를 저장하기 위한 물리적 용량을 갖는 저장 장치를 포함한다. 또한, 이 시스템은 호스트로부터 데이터를 수신하고 이 데이터를 압축된 데이터 크기로 압축하는 제어 모듈을 포함할 수 있다. 이와 달리, 이 데이터는 저장 장치에 의해서도 압축될 수 있다. 이 제어 모듈은 저장 장치 상의 이용 가능한 공간의 양을 결정하고, 또한 복구되는 공간을 결정할 수 있는데, 복구되는 공간은 호스트로부터 수신되는 데이터의 크기와 압축된 데이터 크기 사이의 차에 따른다. 또한, 이 시스템은 논리적 용량을 호스트에 제공하기 위한 인터페이스 모듈을 포함할 수 있다. 논리적 용량은 가변적인 크기를 가지며, 복구되는 공간의 적어도 일부를 포함할 수 있다.

Description

동적으로 적응적인 캐싱을 위한 시스템{SYSTEM FOR DYNAMICALLY ADAPTIVE CACHING}
본 발명은 전반적으로 캐싱 분야에 관한 것으로, 특히 동적으로 적응적인 캐싱을 위한 시스템 및 동적으로 적응적인 캐시를 관리하는 방법에 관한 것이다.
캐싱은 데이터를 투명하게(transparently) 저장하여 이 데이터에 대한 추후 요청이 보다 빨리 제공될 수 있게 함으로써 저장 시스템의 성능 증가를 돕는 것으로 알려져 있다. 사용 가능한 캐시 사이즈가 클수록 캐시가 전체 시스템에 전달할 수 있는 성능이 우수하다. 저장 시스템 캐시는 2개의 부분을 포함하는데, 서버와 같은 호스트에 의해 판독 또는 기록되는 데이터를 저장하는 데이터 부분과, 호스트에 의해 액세스 가능한 캐시에 저장된 많은 양의 데이터 서브세트를 식별하고/하거나 위치를 파악하는 데에 사용되는 태그 부분을 포함한다. 일반적으로, 데이터 부분이 클수록 캐시의 "히트"에 액세스하는 호스트의 비율이 높아지며, 저장 시스템의 성능이 높아진다.
데이터 압축은 주어진 데이터 크기를 위해 필요한 총 저장 공간 또는 전송 시간을 감소시키기 위해 사용될 수 있다. 그러나, 데이터의 압축성은 가변적이며데이터 엔트로피의 레벨에 의존한다. 데이터 압축성의 이 가변성으로 인해 크기가 변하는 데이터 저장 공간이 필요하다.
저장 시스템 캐싱에서, 이 시스템의 상위 계층에 고정적이고 안정적인 캐시 크기를 제공할 필요가 종종 있다. 그러므로, 저장 장치상의 데이터 압축에 의해 얻어질 수 있는 공간은, 데이터 압축성 및 대응 크기의 가변적인 성질로 인해 캐시에 의해 사용되지 않을 수 있다.
그러므로, 데이터 압축으로 인해 데이터 크기가 변하는 경우의 저장 시스템 캐싱을 위한 개선된 방법 및 시스템이 필요하다.
동적으로 적응적인 캐시를 관리하는 방법이 제공된다. 이 방법은 호스트로부터 데이터를 수신하고 수신된 데이터를 압축된 데이터 크기로 압축하는 단계를 포함한다. 압축된 데이터는 저장되고, 남아있는 이용 가능한 공간의 양이 결정된다. 이 방법은 추가적인 단계는, 이용 가능한 공간의 양이 구성 임계값보다 큰 경우, 수신된 데이터의 크기와 압축된 데이터의 크기 사이의 차의 적어도 일부에 따른 양만큼 호스트에 제공되는 논리적 용량을 증가시키는 단계를 포함한다.
또한, 본 발명은 동적으로 적응적인 캐싱을 위한 시스템에 관련된다. 이 시스템은 호스트로부터 수신되는 데이터를 저장하는 물리적 용량을 갖는 저장 장치를 포함한다. 또한, 이 시스템은 저장 장치에 통신 가능하게 연결되며 호스트로부터 데이터를 수신하는 제어 모듈을 포함할 수 있다. 제어 모듈은 호스트로부터 수신된 데이터를 압축된 데이터 크기로 압축하도록 구성된다. 다른 실시예에서, 데이터는 저장 장치 상에서 압축될 수 있다. 또한, 제어 모듈은 저장 장치 상의 이용 가능한 공간의 양을 결정하도록 구성될 수 있다. 또한, 제어 모듈은 복구되는 공간을 결정하도록 구성될 수 있으며, 복구되는 공간은 호스트로부터 수신되는 데이터의 크기와 압축된 데이터 크기 사이의 차에 따른다. 또한, 시스템은 논리적 용량을 호스트에 제공하도록 구성되는 인터페이스 모듈을 포함할 수 있다. 논리적 용량은 가변적인 크기를 가지며, 옵션으로 및/또는 선택적으로 복구되는 공간의 적어도 일부를 포함한다.
또한, 본 발명은 캐시를 관리하는 방법에 관한 것이다. 이 방법은 호스트로부터 데이터를 수신하는 단계와, 이 데이터를 압축된 데이터 크기로 압축하는 단계를 포함한다. 압축된 데이터가 저장되고 이용 가능한 공간의 양이 결정된다. 다음으로, 이용 가능한 공간의 양이 구성 임계값보다 큰 경우 등에 있어서, 수신된 데이터의 크기와 압축된 데이터의 크기 사이의 차의 적어도 일부가 옵션으로 및/또는 선택적으로 호스트에 제공된다.
또한, 본 발명은 저장 인터페이스를 통해 저장 장치에 의해, 복수의 데이터 부분을 수신하는 단계를 포함하는 방법에 관한 것이다. 이 방법의 다음 단계는, 각각의 축소된 데이터 부분을 형성하도록 데이터 부분의 각각을 축소하는 단계를 요구하는데, 데이터 부분의 적어도 일부는 각각의 축소된 데이터 부분보다 큰 크기를 가진다. 또한, 이 방법은 저장 장치의 데이터 메모리 내에 축소된 데이터 부분으로서 데이터 부분을 저장하는 단계를 포함한다. 데이터 메모리는 비휘발성 데이터 메모리일 수 있다. 이 방법의 최종 단계는 데이터 메모리의 사용량에 따라 데이터 메모리의 논리적 용량을 결정하는 단계이다. 이 방법에서, 이 데이터 메모리의 논리적 용량은 데이터 부분의 축소에 따라 변한다.
전술한 설명 및 후술할 설명은 모두 단지 예시적인 것이며 본 발명의 제한하고자 하는 것이 아니다. 본 명세서에 포함되는 그 일부를 구성하는 첨부된 도면은 본 발명의 청구대상을 설명한다. 이와 함께, 발명의 상세한 설명 및 도면은 본 발명의 원리를 설명하기 위해 제공된다.
본 발명에 따르면, 데이터 압축으로 인해 데이터 크기가 변하는 경우의 저장 시스템 캐싱을 위한 개선된 방법 및 시스템이 제공된다.
본 발명의 많은 장점은 첨부된 도면을 참조하여 당업자에게 보다 잘 이해될 것이다.
도 1a는 본 발명에 따른 동적으로 적응적인 캐시를 관리하는 방법의 흐름도이다.
도 1b는 본 발명에 따른 캐시를 관리하는 방법의 흐름도이다.
도 2a 내지 도 2f는 본 발명에 따른 여러 상이한 시간 간격에서 동적으로 적응적인 캐시를 도시하고 있다.
도 3은 본 발명에 따른 동적으로 적응적인 캐시를 도시하고 있다.
도 4a 및 도 4b는 본 발명에 따른 동적으로 적응적인 캐싱을 제공하는 시스템을 각각 도시하고 있다.
도 5는 본 발명에 따른 다른 방법의 흐름도이다.
첨부된 도면에 도시된 청구 대상에 대해 상세히 참조할 것이다.
일부 실시예에서, 동적으로 적응적인 저장 시스템 캐시의 데이터 부분은 도 3에 도시된 저장 장치(302)와 같은 저장 장치에 저장된다. 저장 장치는, 정의된 최대 논리 용량을 갖는 논리 주소 공간을, NAND 플래시 칩과 같은, 정의된 물리적 크기를 갖는 물리적 저장 장치로 맵핑한다. 최대 논리 용량의 일부는 저장 시스템 캐시를 관리하는 상위 계층과 같은 상위 계층에 제공되거나/제공되고 이에 이용 가능하게 되며, 이 부분은 물리적 저장 장치의 사용에 적어도 부분적으로 기초하여 변한다. 물리적 저장 장치의 사용은, 물리적 저장 장치에 저장되는 데이터의 압축 등을 통한 축소에 적어도 부분적으로 기초하여 변한다. 동적으로 적응적인 저장 시스템 캐시에 저장될 수 있는 데이터의 양이 이 저장 시스템 캐시를 관리하는 상위 계층에 제공되고/되거나 이용 가능하게 되는 최대 논리 용량의 일부에 따라 적어도 부분적으로 변한다. 따라서, 더 축소 가능한(가령, 더 압축 가능한) 데이터를 저장하는 경우에, 동적으로 적응적인 저장 시스템 캐시는 최대 논리 용량의 더 많은 부분을 제공하고/하거나 이를 이용 가능하게 할 수 있고, 더 많은 데이터를 저장하고 높은 성능을 전달하는 것이 유리하다. 다양한 실시예에 따르면, 상위 계층은 하나 이상의 저장 장치와, 도 3의 제어 모듈(304)과 같은 제어 모듈과, 도 3의 호스트(306)와 같은 호스트를 포함한다. 예를 들어, 일부 실시예에서 제어 모듈이 동적으로 적응적인 저장 시스템 캐시의 태그(및 데이터 콘텐츠)를 관리하며, 다른 실시예에서는 호스트가 동적으로 적응적인 저장 시스템 캐시의 태그를 관리한다.
도 1a를 전체적으로 참조하면, 동적으로 적응적인 캐시를 관리하는 방법(100)이 도시되어 있다. 동적으로 적응적인 캐시는 가변적인 캐시 크기를 호스트에 제공하며, 옵션으로 및/또는 선택적으로 동적으로 적응적인 캐시와 함께 포함되는 저장 장치의 물리적 크기보다 큰 논리 크기를 제공할 수 있다. 이 방법(100)은 호스트로부터 동적으로 적응적인 캐시(102)로의 데이터를 수신하는 단계와, 호스트로부터 수신된 데이터를 압축된 데이터(104)로 압축하는(또는 크기를 감소시키는) 단계를 포함한다. 압축된 데이터는 저장 장치(106)상에 저장된다. 이 방법(100)은 저장 장치(108)상의 이용 가능한 공간의 양을 결정하는 단계를 포함한다. 이 방법(100)의 추가 단계는, 저장 장치상의 이용 가능한 공간의 양이 구성(configuration) 임계 값(110)보다 큰 경우에, 호스트에 제공되는 동적으로 적응적인 캐시의 논리 용량을 호스트로부터 수신된 데이터의 크기와 압축 후의 데이터의 크기 사이의 차의 적어도 일부에 따른 양만큼 증가시키는 단계를 포함한다. 다양한 실시예에서, 호스트에 제공되는 논리 용량은, 이 차의 일부와 동일한 양만큼 증가되는 것과, 이 차의 일부에 비례하는 양만큼 증가되는 것과, 이 차의 적어도 일부인 양만큼 증가되는 것과, 이 차와 다른 요인의 함수를 통해 계산되는 것과, 이용 가능한 공간, 물리적 크기 및 다른 요인의 양의 함수를 통해 계산되는 것 중 하나 이상이다. 이 방법(100)은 데이터가 호스트로부터 수신될 때마다 및/또는 주기적으로 수행될 수 있어서, 데이터의 압축성에 의존하여 크기를 변경하는 동적으로 적응적인 캐시를 얻는다. 예를 들어, 이 방법(100)은 하나 이상의 호스트 명령마다, 기록 명령과 같은 특정 유형의 하나 이상의 호스트 명령마다 및/또는 이용 가능한 공간의 양이 특정 양만큼 변할 때, 규칙적인 간격으로 수행될 수 있다.
호스트로부터 수신된 데이터를 압축된 데이터(104)로 압축하는 단계는, 압축(또는 크기를 축소하기 위한 다른 기술)을 실행하기 위한 적합한 모듈 또는 하드웨어를 사용하여 저장 장치상에서 수행될 수 있다. 또한, 저장 장치에 압축된 데이터를 저장하기 전에, 호스트로부터 수신된 데이터를 압축된 데이터(104)로 압축하는 단계를 제어 모듈상에서 완료할 수도 있다.
도 1a에 도시된 방법(100) 중 저장 장치(108)상에서 이용 가능한 공간의 양을 결정하는 단계는 다양한 방식으로 실행될 수 있다. 데이터(104)를 압축하는 단계가 제어 모듈상에서 실행되는 예에서, 저장 장치(108)상의 이용 가능한 공간의 양을 결정하는 단계는 간략화될 수 있는데, 제어 모듈이 수신된 데이터의 크기 및 압축 후의 데이터 크기를 자동으로 결정할 수 있으며 이 정보에 기초하여 저장 장치상에 남아있는 이용 가능한 공간의 양을 쉽게 결정할 수 있기 때문이다.
호스트로부터 수신된 데이터를 압축된 데이터(104)로 압축하는 단계가 저장 장치에서 실행되는 경우, 저장 장치(108)상의 이용 가능한 공간의 양을 결정하는 단계는 동기식 모델(synchronous model)을 사용하여 실행될 수 있다. 동기식 모델 하에서, 저장 장치는 저장 장치상의 이용 가능한 공간의 양이 구성 임계값을 초과하는 경우에 인트럽트와 같은 신호를 동적으로 적응적인 캐시의 제어 모듈로 송신한다. 그 후, 제어 모듈은 판독 버퍼 또는 기타 명령과 같은 정의된 명령을 통해 이용 가능한 공간의 양을 판독하도록 저장 장치에 질의할 것이다. 다른 실시예에서, 이용 가능한 공간은 비동기식 모델을 사용하여 결정된다. 비동기식 모델 하에서, 제어 모듈은 주어진 시각에 이용 가능한 공간을 결정하도록 저장 장치에 동적으로 질의하며 이용 가능한 공간이 구성 임계값을 초과하는지를 판단하기 위해 주기적으로 저장 장치에 질의를 계속할 것이다.
또한, 이 방법(100)은 이용 가능한 공간의 양이 예비량(reserve amount)보다 작을 때 저장 장치상의 공간을 방출(releasing)하는 단계를 포함할 수 있다. 이는, 클린 엔트리(clean entries)와 같은 캐시의 엔트리의 일부를 해체하는 것과, TRIM 요청을 저장 장치에 발신하는 것과, 캐시의 태그 메모리의 하나 이상의 엔트리를 무효화하는 것 등에 의해 달성될 수 있다. 이 단계의 목적은, 저장 장치상의 공간의 양을 보존함으로써 동적으로 적응적인 캐시가 호스트에 대해 특정의 최소 고정 크기를 보장할 수 있도록 하기 위함이다. 데이터의 압축성이 가변적일 수 있으므로, 공간의 예비량이 저장 장치상에서 보존되어, 동적으로 적응적인 캐시가 최대 용량에 근접하면 동적으로 적응적인 캐시가 여전히 데이터를 저장할 수 있고/있거나 특정 레벨의 성능을 여전히 제공할 수 있다. 호스트에 대한 특정 최소 고정 크기를 보장하기 위한 요구조건 및 데이터 압축의 가변적 성질로 인해, 저장 장치를 가득 채우고/채우거나 특정 레벨 이하로 성능을 감소시키는 위험을 피하기 위해 예비량을 안전하게(conservatively) 설정하는 것이 바람직할 수 있다. 예비량을 안전하게 설정하는 것이 중요한 또 다른 이유로는, 시스템 제한사항으로 인해, (가령, TRIM 명령이 저장 장치에 의한 Read/Write 명령과 함께 실행될 수 없기 때문에, 또는 저장 장치가 네이티브 명령 큐잉을 사용하는지에 의존하여) 동적으로 적응적인 캐시가 항상 저장 장치상의 공간을 방출하는 단계를 즉시 구현할 수 없을 수 있기 때문이다.
동적으로 적응적인 캐시를 관리하는 방법(100)의 다른 단계는, 저장 장치상의 이용 가능한 공간의 양이 예비량에 근접하거나/하고 예비량 미만이면 저장 장치로부터 제어 모듈로 신호를 송신하는 단계를 포함할 수 있다. 이 단계의 목적은 저장 장치에 이용 가능한 공간이 없어지면 제어 모듈이 적시에 반응(가령, 저장 장치상의 공간을 방출)하는 것을 보장하기 위함이다.
도 1b를 전체적으로 참조하면, 동적으로 적응적인 캐시를 관리하는 방법(114)이 도시되어 있다. 이 방법(114)은 호스트로부터 데이터를 수신하는 단계(116) 및 수신된 데이터를 압축된 데이터로 압축하는(또는 크기를 감소시키는) 단계(118)를 포함한다. 이 방법의 다음 단계는 압축된 데이터(120)를 저장하는 것이다. 이 방법의 다른 단계는 이용 가능한 공간의 양을 결정하는 것(122)이다. 그 후, 이 방법은 수신된 데이터의 크기와 압축된 데이터의 크기 사이의 차의 적어도 일부를 호스트에 제공하는 단계를 포함한다. 다양한 실시예에 따르면, 호스트에 제공하는 단계는, 이용 가능한 공간의 양이 구성 임계값보다 큰 경우(124), 시간상으로 주기적으로, 호스트로부터 수신되는 명령 횟수로 주기적으로, 호스트로부터의 요청 중 적어도 하나 이상에 따라 수행된다.
도 1b에 도시된 방법은 이용 가능한 공간의 양이 예비량보다 작을 때 저장 장치상에 공간을 방출하는 단계를 포함할 수도 있다. 또한, 이 방법은 이용 가능한 공간의 양이 예비량에 근접하고/하거나 예비량 미만일 때 신호를 송신하는 단계 및 이용 가능한 공간의 양을 결정하기 위해 질의를 송신하는 단계를 포함할 수도 있다. 이 방법(114)은 데이터가 호스트로부터 수신될 때마다 수행될 수 있다.
도 2a 내지 도 2f를 전체적으로 참조하면, 동적으로 적응적인 캐시(200)의 일례가 도시되어 있다. 도 2a는 초기 시간 간격(t0)에서 논리적 공간(202) 및 물리적 저장 공간(204)을 포함하는 동적으로 적응적인 캐시(200)를 도시하고 있다. 논리 공간(202)은 호스트에 제공되는 저장 공간이고, 논리 공간(202)의 크기는 시간에 따라 변한다. 도 2a에 도시된 바와 같이, 초기 시간 간격(t0)에서, 데이터가 호스트로부터 수신되지 않았으며, 동적으로 적응적인 캐시(200)의 논리적 공간(202) 및 물리적 저장 공간(204)은 비어 있다. 도 2a 내지 도 2f에서는 논리적 공간(202)이 물리적 저장 공간(204)에 인접한 것으로 도시되어 있지만, 논리적 공간(202) 및 물리적 저장 공간(204)의 상대적 크기가 연관된다는 것을 암시하는 것은 아니다. 다양한 실시예에 따르면, 논리적 공간(202)은, 물리적 저장 공간(204)보다 적은 양의 데이터를 저장할 수 있는 것과, 물리적 저장 공간(204)과 동일한 양의 압축 불가능한 데이터를 저장하는 것과, 데이터가 압축 불가능한 경우에 물리적 저장 공간(204)이 저장할 수 있는 것보다 데이터를 많이 저장할 수 있는 것과, 항상 특정 최대 크기보다 작은 것과, 항상 특정 최소 크기보다 많은 것 중 하나 이상일 수 있다.
도 2b는, 제 1 시간 간격(t1)에서 데이터가 호스트로부터 동적으로 적응적인 캐시(200)로 수신된 후의 동적으로 적응적인 캐시(200)를 도시하고 있다. 데이터는 압축되지 않고 논리 공간(202)상에 압축되지 않은 데이터 공간(206)을 요구한다. 이 데이터는 압축된 데이터 공간(208)으로 압축되고 물리적 저장 공간(204)에 저장된다. 일반적으로는 압축 후의 데이터(압축된 데이터 공간(208)) 크기는 압축 전의 데이터(압축되지 않은 데이터 공간(206)) 크기보다 작지만, 이는 데이터의 압축성에 의존한다.
도 2c는 시간(t2)에서 동적으로 적응적인 캐시(200)를 도시하고 있다. 시간(t2)에서, 호스트에 제공되는 동적으로 적응적인 캐시의 논리적 공간(202)은 시간(t1)에서 데이터 압축의 결과로서 복구된(reclaimed) 공간의 적어도 일부에 따른 양만큼 증가될 것이다. 압축을 통해 얻어진 공간은 복구된 공간(210)이며 압축되지 않은 데이터 공간(206)의 크기와 압축된 데이터 공간(208)의 크기 사이의 차(difference)와 동일하다. 도 2c는 논리적 공간(202)에 추가되는 복구된 공간(210)을 도시하고 있다. 복구된 공간(210)은 호스트에 제공되는 논리적 공간(202)에 추가되어, 동적으로 적응적인 캐시(200)가 더 큰 논리적 공간(202)을 호스트에 제공할 수 있게 한다. 일 실시예에서, 복구된 공간(210)의 전체 크기가 호스트에 제공되지만, 복구된 공간(210)의 일부만이 호스트에 제공되고 물리적 저장 공간(204)상에 복구된 공간(210)의 일부를 보존할 수도 있다.
도 2d는 시간(t3)에서 호스트로부터 논리적 공간(202)으로 추가 데이터가 수신된 후의 동적으로 적응적인 캐시(200)를 도시하고 있다. 이 데이터는 압축되지 않으며 논리적 공간(202)상에 제 2 압축되지 않은 데이터 공간(212)을 차지한다. 이 데이터는 압축되어 제 2 압축된 데이터 공간(214)으로서 물리적 저장 공간(204)에 저장된다. 제 2 압축된 데이터 공간(214)의 크기는 데이터가 적어도 부분적으로 압축 가능한 경우에 제 2 압축되지 않은 데이터 공간(212)의 크기보다 작다. 압축을 통해 얻어진 공간은 제 2 복구 공간(216)으로서 지칭되며, 제 2 압축되지 않은 데이터 공간(212)과 제 2 압축된 데이터 공간(214) 사이의 차와 동일하다. 논리적 공간(202)의 유효 크기는 도 2d에 도시된 바와 같이 제 2 복구된 공간(216)의 크기에 따른 양만큼 증가된다. 제 2 복구된 공간(216)은 논리적 공간(202)에 추가되어, 보다 큰 동적으로 적응적인 캐시(200)를 호스트에 제공하는 것을 촉진한다.
도 2e는 시간(t4)에서의 동적으로 적응적인 캐시(200)를 도시하고 있다. 시간(t4)에서, 추가 데이터가 동적으로 적응적인 캐시(200)로 수신된다. 이 데이터는 압축되지 않고 논리적 공간(202)상의 제 3 압축되지 않은 데이터 공간(220)을 차지하며, 압축되어 물리적 저장 공간(204)상의 제 3 압축된 공간(222)으로 저장된다. 이때, 물리적 저장 공간(204)은 거의 가득 찬 상태이며 최대 용량에 거의 도달하였다. 공간의 양은 물리적 저장 공간(204)이 가득 차는 것을 방지하기 위해 항상 물리적 저장 공간(204)상에서 보존된다. 물리적 저장 공간(204)이 가득 차기 시작해서 보존 공간의 임계값에 도달하면, 동적으로 적응적인 캐시(200)에 의해 공간이 방출되어야 한다.
도 2f는 시간(t5)에서의 동적으로 적응적인 캐시(200)를 도시하고 있다. 시간(t5)에서, 공간이 물리적 저장 공간(204)으로 방출되었으며 이제 물리적 저장 공간(204)이 완전히 가득 차게 될 위험이 없다. 방출된 공간(224)은 물리적 저장 공간(204)으로 복귀되었으며, 이제 최대 용량에 도달하지 않는다. 방출된 공간(224)은 압축된 데이터 공간(208), 제 2 압축된 데이터 공간(214) 및 제 3 압축된 공간(222) 중 하나 이상으로부터 트리밍(trimming) 등에 의해 방출된 데이터를 가질 수 있다. 또한, 이 데이터는 추가 압축을 진행하여, 예를 들어, 더 작은 제 3 압축된 공간(222)을 얻을 수 있다.
또한, 도 2f는 호스트에 제공되는 논리적 공간(202)의 증가의 집합을 도시하고 있는데, 동적으로 적응적인 캐시(200)가, 가변적이며 일부 실시예에서는 물리적 저장 공간(204)보다 큰 논리적 공간(202)을 제공할 수 있다는 것을 반영한다. 도 2a 내지 도 2f에 도시된 프로세스는 호스트로부터 데이터가 수신될 때마다 수행될 수 있어서, 동적으로 크기가 변하는 동적으로 적응적인 캐시를 제공한다.
호스트에 제공되는 논리적 공간의 크기는 호스트로부터 수신된 데이터의 축소성, 가령 압축성 및 이용 가능한 공간의 양에 의존하여 변동한다. 이 데이터는 동적으로 적응적인 캐시에 대해 적합한 무손실(lossless) 압축 알고리즘 또는 기타 데이터 축소 방법에 의해 축소될 수 있다. 데이터 엔트로피가 100%인 경우, 이 데이터는 압축 가능(또는 축소 가능)하지 않으며 동적으로 적응적인 캐시는 어떠한 공간도 복구 가능하지 않고 논리적 공간의 크기를 증가시켜서 호스트에 제공한다. 데이터 엔트로피가 100% 미만인 경우, 데이터는 압축 가능하며 동적으로 적응적인 캐시는 압축에 의해 절감된 공간을 복구할 수 있고 이 양의 적어도 일부만큼 논리적 공간을 확대할 수 있다. 호스트로부터 수신된 데이터의 압축성은 압축 가능하지 않은 데이터로부터 크게 압축 가능한 데이터에 이르기까지 변할 수 있으므로, 동적으로 적응적인 캐시의 크기는 수신된 데이터에 따라 동적으로 변한다.
도 3을 전체적으로 참조하면, 본 발명에 따른 동적으로 적응적인 캐시에 대한 예시적 시스템(300)이 도시되어 있다. 이 시스템(300)은 연산 시스템 또는 장치일 수 있다. 이 시스템(300)은 저장 장치(302), 제어 모듈(304) 및 인터페이스 모듈(306)을 포함한다. 이 시스템(300)은 호스트(308)와 데이터를 송신 및 수신하는 데에 사용된다. 제어 모듈(304)은 호스트(308)로부터 데이터를 수신하도록 구성되며, 데이터를 압축하는 데에 사용될 수 있다. 이와 달리, 데이터 압축은 저장 장치(302)상에서 수행될 수 있다. 어느 경우에도, 압축된 데이터는 저장 장치(302)에 저장된다. 다양한 실시예에 따르면, 저장 장치(302)는, SRAM(static random access memory), DRAM(dynamic random access memory), 내장형 메모리, NAND 플래시 메모리와 같은 비휘발성 메모리, 반도체 메모리 및 임의의 다른 종류의 메모리 장치 중 하나 이상인, 수신된 데이터를 저장하는 저장 메모리를 포함한다.
제어 모듈(304)은 압축에 의해 얻어진 공간의 양을 결정하기 위해서도 사용될 수 있는데, 이는 복구된 공간으로 지칭될 수 있다. 복구된 공간은 압축 이전의 호스트(308)로부터 수신된 데이터의 크기와, 압축된 데이터의 크기 사이의 차와 동일한데, 호스트로부터 수신된 데이터에 대해 합해지고 저장 장치에 의해 현재 저장된다. 복구된 공간의 적어도 일부는 인터페이스 모듈(306)을 사용하여 호스트(308)에 제공되고/되거나 이용 가능하게 될 수 있다. 일부 실시예에서, 인터페이스 모듈(306)은 논리적 용량을 호스트(308)에 제공하기 위해 구성된다. 호스트에 제공되는 논리적 용량의 크기는 변할 것이지만, 주어진 시간에서 복구되는 공간의 적어도 일부 및 저장 장치(302)의 이용 가능한 논리적 용량을 포함할 수 있다.
도 3에 도시된 시스템(300)의 제어 모듈(304)은 저장 장치(302)상의 이용 가능한 논리적 공간을 결정하기 위해 사용될 수도 있다. 제어 모듈(304)은 저장 장치(302)와 통신 가능하게 연결되며 저장 장치(302)로부터 신호를 수신할 수 있다. 또한, 제어 모듈(304)은 저장 장치로부터 신호를 수신하면 또는 주어진 시간 간격마다 저장 장치(302)에 질의하거나, 저장 장치로 송신된 명령의 수 및/또는 저장 장치로부터 수신된 응답의 수에 따라 주기적으로 저장 장치(302)에 질의하도록 구성될 수 있다.
도 3에 도시된 시스템(300)의 저장 장치(302)는 NAND 플래시 기반 스토리지와 같은 비휘발성 반도체 메모리를 갖는 고체상태 디스크일 수 있다. 저장 장치(302)는 저장 장치(302)상의 이용 가능한 공간의 양이 구성 임계값에 근접하고/하거나 도달했을 때 제어 모듈(304)로 신호를 송신하도록 구성될 수 있다. 또한, 저장 장치(302)는 공간의 예비량을 유지하여 저장 장치(302)가 호스트(308)로부터 데이터를 저장할 수 있고/있거나 항상 특정 최소 레벨의 성능을 제공할 수 있도록 보장한다. 예를 들어, 일부 실시예에서, 공간의 예비량은 기록 확충(write amplification)이 특정 레벨 미만인 것을 보장하도록 유지된다.
다양한 실시예에 따르면, 도 3에 도시된 시스템(300)의 제어 모듈(304)은 I/O 제어기, ROC(Raid-On-Chip) 제어기, 호스트 버스 어댑터, 저장 장치를 호스트에 인터페이싱하는 임의의 칩, 및 캐시 관리 및/또는 캐시 제어를 포함하는 전술한 것들 중 하나 이상이다.
본 발명의 도 4a를 참조하면, 동적으로 적응적인 캐싱을 위한 시스템(300)이 제공된다. 이 시스템(300)은 인터페이스 모듈(306), 제어 모듈(304) 및 저장 장치(302)를 포함한다. 제어 모듈(304)은 캐시를 관리하고 캐시 태그(402)는 제어 모듈(304)에 위치된다. 또한, 이 시스템(300)의 저장 장치(302)는 캐시 데이터(414)를 포함한다. 이 시스템(300)은 인터페이스(410)를 통해 통신 가능하게 호스트(308)에 연결된다. 호스트(308)는 프로세서(406) 및 메모리(412)를 포함한다.
본 명세서의 도 4b에는, 동적으로 적응적인 캐싱을 위한 시스템(300)이 제공되는데, 호스트(308)가 캐시를 관리할 때의 구성을 도시하고 있다. 도 4b에서, 이 시스템(300)은 이 시스템(300)의 저장 장치(302)에 캐시 데이터(414)를 포함한다. 호스트(308)는 호스트(308)의 메모리(412)에 캐시 태그(402)를 포함한다.
호스트(308)의 메모리(412)는 데이터를 저장할 수 있는 임의의 시스템 및/또는 장치일 수 있다. 일 실시예에서, 메모리(412)는, 프로세서(406)에 의해 실행되면 프로세서(406)로 하여금 동적으로 적응적인 캐시를 관리하기 위한 방법을 수행하도록 하는 컴퓨터 프로그램 코드를 저장한다.
도 4a 및 도 4b에 도시된 시스템(300)은 옵션으로 및/또는 선택적으로 호스트(308)로 송신되고 이로부터 수신된 데이터의 동적으로 적응적인 캐싱을 제공하도록 (가령, 메모리(412) 및/또는 저장 장치(302) 및/또는 도시되지 않고 애플리케이션 특정 회로를 사용하는 기타 메모리 등에 저장되는 소프트웨어 및/또는 펌웨어를 실행하여) 구성된다. 이 시스템(300)은 물리적 캐시 크기를 초과하는 논리적 또는 유효 캐시 크기를 호스트(308)에 제공할 수 있다.
또한, 본 발명은 도 5에 도시된 바와 같은 방법(500)에 관련된다. 이 방법(500)은 저장 장치에 의해 복수의 데이터 부분(502)을 저장 인터페이스를 통해 수신하는 단계를 포함한다. 저장 인터페이스는 SATA 인터페이스, SAS 인터페이스, PCIe 인터페이스 또는 기타 적합한 저장 인터페이스를 포함할 수 있다. 이 방법의 다음 단계는 데이터 부분의 각각을 축소시켜서 축소된 각각의 데이터 부분을 형성하는 것을 요구하는데, 데이터 부분의 적어도 일부는 각각의 축소된 데이터 부분(504)보다 큰 크기를 갖는다. 다양한 실시예에 따르면, 중복 제거(de-duplication) 및 압축과 같은 하나 이상의 데이터 축소 기술이 사용된다. 또한, 이 방법은 저장 장치(506)의 데이터 메모리의 축소된 데이터 부분으로서 데이터 부분을 저장하는 단계를 포함한다. 이 데이터 메모리는 비휘발성 데이터 메모리일 수 있다. 이 방법의 최종 단계는 데이터 메모리(508)의 사용에 따른 데이터 메모리의 논리적 용량을 결정하는 것이다.
이 방법(500)에서, 데이터 메모리의 논리적 용량은, 가령, 데이터 메모리의 사용량에 비례하거나 사용량의 함수로서 사용에 따라 변한다. 결국, 데이터 메모리의 사용량은 데이터 부분이 데이터 메모리에 얼마나 저장되는지 및 저장된 데이터 부분의 축소에 따라 변한다. 제 1 예에서, 데이터 메모리의 사용량은, 데이터 메모리의 이전에 사용되지 않은 논리적 블록으로 저장된 데이터 부분이 많을수록 증가한다. 제 2 예에서, 데이터 메모리의 사용량은 이전에 저장된 데이터 부분이 축소된 데이터 부분으로 많이 덮어질수록(over-written) 감소된다. 제 3 예에서, 데이터 메모리의 사용량은 저장된 데이터 부분이 트리밍 등에 의해 제거될수록 감소된다.
이 방법(500)의 일부 실시예에서, 논리적 용량은 준비된(provisioned) 논리적 용량과 같이 결정된 최대값을 갖는다. 다양한 실시예에 따르면, 준비된 논리적 용량은 데이터 메모리의 물리적 크기보다 작거나, 이와 같거나, 이보다 큰 데이터 부분의 양을 저장할 수 있는데, 데이터 부분은 축소될 수 없다고 가정한다. 다른 실시예에서, 데이터 부분이 축소 불가능하다고 가정하면, 준비된 논리적 용량은 물리적 크기의 준비된 양을 초과 제공(over-provisioning)하기 위해 데이터 메모리의 물리적 크기보다 작은 데이터 부분의 양을 저장할 수 있다. 초과 제공은 기록 확충을 축소하는 등에 의해 일부 저장 장치의 성능을 향상시킨다.
준비된 논리적 용량보다 작거나 이와 동일한 사용 가능한 논리적 용량은 데이터 메모리의 사용량에 적어도 부분적으로 기초하여 결정된다. 다양한 실시예에 따르면, 사용 가능한 논리적 용량은, 사용량이 감소할수록 증가하는 것과, 사용량이 증가할수록 감소하는 것과, 사용량의 선형 함수인 것과, 사용량의 비선형 함수인 것과, 시간상으로 주기적으로 변하는 것과, 저장 장치에 의해 수신된 명령의 수에 따라 주기적으로 변하는 것과, 사용량이 결정된 양보다 많이 변할 때 변하는 것 중 하나 이상이다. 사용 가능한 논리적 용량이 변함으로써 저장 장치에 데이터를 저장하는 동적으로 적응적인 캐시로 하여금 사용 가능한 논리적 용량에 따라 데이터의 양을 유리하게 저장할 수 있게 하며, 이로써 저장 장치에 저장된 데이터의 축소성에 따라 성능을 증가시킨다.
도 5에 도시된 방법(500)은, 사용량이 특정 임계값을 초과하면 데이터 메모리로부터 축소된 데이터 부분 중 하나 이상을 제거하는 단계를 포함할 수도 있다. 이 단계에서, 특정 임계값은 특정 값 미만의 저장 장치의 기록 확충을 유지할 수 있다. 일 실시예에서, 데이터 메모리로부터 축소된 데이터 부분 중 하나 이상을 제거하는 단계는, 저장 장치의 태그 메모리의 하나 이상의 엔트리를 무효화함으로써 적어도 부분적으로 달성될 수 있다.
도 5에 도시된 방법(500)은 추가 단계를 포함할 수도 있다. 저장 장치가 데이터 부분 중 특정 부분을 요청하는 경우, 이 방법은 데이터 메모리로부터 각 축소된 데이터 부분을 판독하는 단계와, 각 축소된 데이터 부분의 축소를 반전시켜 특정 데이터 부분을 복원하는 단계와, 요청에 응답하여 특정 데이터 부분을 호스트로 리턴시키는 단계를 포함할 수 있다.
본 명세서에서, 개시된 방법은 장치에 의해 판독 가능한 인스트럭션 세트 또는 소프트웨어로서 구현될 수 있다. 또한, 개시된 방법의 특정 순서 또는 단계의 계층은 예시적 방안의 예라는 것을 이해해야 한다. 설계 선호도에 따라서, 이 방법의 특정 순서 또는 단계의 계층은 재배열될 수 있고 개시된 청구 대상 내에 머무른다는 것을 이해해야 한다. 첨부된 방법 청구항은 예시적 순서로 다양한 단계의 구성요소를 제공하지만, 반드시 제공된 특정 순서 또는 계층으로 제한된다는 것을 의미하는 것은 아니다.
전술한 설명으로부터 본 명세서의 개시 내용 및 수반되는 많은 장점이 이해될 것이며, 개시된 청구대상으로부터 벗어나지 않고 주요한 장점 모두를 희생시키지 않으면서 구성요소의 형태, 구성 및 배열에 변화가 이루어질 수 있음은 자명할 것이다. 설명되는 형태는 단지 설명을 위한 것이며, 이하의 청구범위는 이러한 변경을 모두 포함하도록 의도된다.
전술한 상세한 설명은 블록도, 흐름도 및/또는 예의 사용을 통해 장치 및/또는 프로세스의 다양한 실시예를 포함할 수 있다. 이러한 블록도, 흐름도 및/또는 예가 하나 이상의 기능 및/또는 동작을 포함하는 한에 있어서는, 이러한 블록도, 흐름도 또는 예 내의 각 기능 및/또는 동작이 광범위한 하드웨어, 소프트웨어, 펌웨어 또는 가상적으로 이들의 임의의 조합에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것을 당업자는 이해할 것이다. 일 실시예에서, 본 명세서에서 설명되는 청구대상의 여러 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Arrays), DSP(Digital Signal Processors) 또는 기타 일체형 양식을 통해 구현될 수 있다. 그러나, 당업자는 본 명세서에 개시된 실시예의 일부 양태가 전체적으로 또는 부분적으로, 하나 이상의 컴퓨터상에서 실행되는 하나 이상의 컴퓨터 프로그램(가령, 하나 이상의 컴퓨터 시스템상에서 실행되는 하나 이상의 프로그램)으로서, 하나 이상의 프로세서상에서 실행되는 하나 이상의 프로그램(가령, 하나 이상의 마이크로프로세서상에서 실행되는 하나 이상의 프로그램)으로서, 펌웨어로서, 가상적으로 그 조합으로서, 집적 회로로 균등하게 구현될 수 있다는 것을 인식할 것이며, 회로 설계 및/또는 소프트웨어 및/또는 펌웨어에 대한 코드 기록은 당업자가 본 명세서를 참조하여 그 범위에 속하는 것으로 인식할 것이다.
또한, 당업자가 인식할 바와 같이, 본 명세서에 개시된 청구 대상의 메커니즘은 다양한 형태로 프로그램 제품으로서 분배될 수 있으며, 본 명세서에서 설명되는 청구 대상의 실시예는 실제로 분배를 수행하기 위해 사용되는 신호 함유 매체의 특정 종류에 상관없이 적용된다. 신호 함유 매체의 예는, 플로피 디스크, 하드디스크 드라이브, 고체 상태 디스크, CD(Compact Disc), DVD(Digital Video Disk), 디지털 테이프, 컴퓨터 메모리 등과 같은 기록 가능한 유형의 매체와, 디지털 및/또는 아날로그 통신 매체(가령, 광 섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크(가령, 송신기, 수신기, 송신 로직, 수신 로직 등) 등)와 같은 전송 유형 매체를 포함하지만 이에 한정되는 것은 아니다.
현재 기술 수준은 시스템 양태의 하드웨어, 소프트웨어 및/또는 펌웨어 구현 사이에 구분이 거의 없을 정도로 발전하였음을 당업자는 인식할 것인데, 하드웨어, 소프트웨어 및/또는 펌웨어의 사용은 일반적으로 (그러나 하드웨어와 소프트웨어 사이의 선택이 중요해지는 특정 상황에서는 항상 그렇지는 않다) 비용과 효율 사이의 절충안을 나타내는 설계 선택 사항일 수 있다. 당업자가 인식할 바와 같이, 본 명세서 설명되는 프로세스 및/또는 시스템 및/또는 기타 기술이 실행될 수 있는 다양한 수단(가령, 하드웨어, 소프트웨어, 및/또는 펌웨어)이 존재할 수 있으며, 프로세스 및/또는 시스템 및/또는 다른 기술이 전개될 수 있는 상황에 따라 바람직한 수단이 다를 것이다. 예를 들어, 구현하는 이가 속도 및 정확성이 최우선이라고 결정하는 경우에는 구현하는 이는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 것이며, 이와 달리, 유연성이 최우선인 경우에는 구현하는 이는 주로 소프트웨어 구현을 선택할 것이며, 이와 달리, 하드웨어, 소프트웨어 및/또는 펌웨어의 어떤 조합을 선택할 수 있다. 따라서, 본 명세서에서 설명되는 프로세스 및/또는 디바이스 및/또는 다른 기술이 실행될 수 있는 가능한 여러 수단이 존재할 수 있으며, 사용될 임의의 수단은 구현하는 이가 수단이 사용된 상황 및 특성 고려 사항에 의존하여 선택할 수 있고 이들 임의의 것이 변할 수 있다는 점에서 한 수단이 다른 수단에 비해 우수하다고 할 수 없다. 구현의 광학적 양태는 통상적으로 광학적으로 지향되는 하드웨어, 소프트웨어 및/또는 펌웨어를 사용할 것이라는 것을 인식할 것이다.
302: 저장 장치 304: 제어 모듈
306: 인터페이스 모듈 308: 호스트

Claims (21)

  1. 저장 장치를 포함하는 동적으로 적응적인 캐시(dynamically adaptive cache)를 관리하는 방법에 있어서,
    호스트로부터 데이터를 수신하는 단계와,
    상기 수신된 데이터를 압축된 데이터로 압축하는 단계와,
    상기 압축된 데이터를 저장하는 단계와,
    상기 저장 장치 상의 이용 가능한 공간의 양을 결정하는 단계와,
    상기 저장 장치 상의 상기 이용 가능한 공간의 양이 구성 임계값(configuration threshold)보다 큰 경우에, 상기 수신된 데이터의 크기와 상기 압축된 데이터의 크기 사이의 차(difference)의 적어도 일부에 따른 양만큼 상기 호스트에 제공되는 논리적 용량(logical capacity)을 증가시키는 단계를 포함하는
    동적으로 적응적인 캐시 관리 방법.
  2. 제 1 항에 있어서,
    상기 이용 가능한 공간의 양이 예비량보다 작은 경우에 공간을 방출(releasing)하는 단계를 더 포함하는
    동적으로 적응적인 캐시 관리 방법.
  3. 제 2 항에 있어서,
    상기 이용 가능한 공간의 양이 상기 예비량보다 작은 경우에 시그널링하는 단계를 더 포함하는
    동적으로 적응적인 캐시 관리 방법.
  4. 제 1 항에 있어서,
    상기 이용 가능한 공간의 양을 결정하는 단계는,
    상기 이용 가능한 공간의 양이 상기 구성 임계값보다 큰 경우에 시그널링하는 단계와,
    상기 이용 가능한 공간의 양을 결정하기 위해 질의(query)를 송신하는 단계를 포함하는
    동적으로 적응적인 캐시 관리 방법.
  5. 제 1 항에 있어서,
    상기 방법의 각각의 단계는 상기 호스트로부터 데이터가 수신될 때마다 수행되는
    동적으로 적응적인 캐시 관리 방법.
  6. 제 1 항에 있어서,
    상기 수신된 데이터를 압축된 데이터로 압축하는 단계는 무손실 알고리즘을 사용하여 데이터를 압축하는 단계를 포함하는
    동적으로 적응적인 캐시 관리 방법.
  7. 동적으로 적응적인 캐싱을 위한 시스템으로서,
    호스트로부터 수신되는 데이터를 저장하기 위한 물리적 용량을 갖는 저장 장치와,
    상기 호스트로부터 수신되는 데이터를 압축된 데이터 크기로 압축하기 위한 압축 모듈과,
    상기 호스트로부터 데이터를 수신하고, 상기 저장 장치 상의 이용 가능한 공간의 양을 결정하며, 복구된 공간(reclaimed space)을 결정하도록 구성된 제어 모듈 ― 상기 복구된 공간은 상기 호스트로부터 수신되는 데이터의 크기와 상기 압축된 데이터 크기 사이의 차(difference)에 따름 ― 과,
    상기 호스트에 논리적 용량을 제공하는 인터페이스 모듈을 포함하되,
    상기 논리적 용량은 가변적인 크기를 가지며 상기 복구된 공간의 적어도 일부를 포함하는
    동적으로 적응적인 캐싱 시스템.
  8. 제 7 항에 있어서,
    상기 제어 모듈은 상기 저장 장치 상의 이용 가능한 공간의 양이 예비량보다 작은 경우에 상기 저장 장치 상에 공간을 방출하도록 또한 구성되는
    동적으로 적응적인 캐싱 시스템.
  9. 제 7 항에 있어서,
    상기 저장 장치는 고체 상태 드라이브인
    동적으로 적응적인 캐싱 시스템.
  10. 제 7 항에 있어서,
    고정된 최소 논리적 용량이 상기 호스트에 제공되는
    동적으로 적응적인 캐싱 시스템.
  11. 호스트로부터 저장 인터페이스를 통해 저장 장치에 의해, 복수의 데이터 부분을 수신하는 단계와,
    각각의 축소된 데이터 부분을 형성하도록 상기 데이터 부분의 각각을 축소하는 단계 ― 상기 데이터 부분의 적어도 일부는 상기 각각의 축소된 데이터 부분보다 큰 크기를 가짐 ― 와,
    상기 저장 장치의 데이터 메모리 내에 상기 축소된 데이터 부분으로서 상기 데이터 부분을 저장하는 단계와,
    상기 데이터 메모리의 사용량에 따라 상기 데이터 메모리의 논리적 용량을 결정하는 단계를 포함하되,
    상기 데이터 메모리의 논리적 용량은 상기 축소에 따라 변하고,
    상기 논리적 용량은, 상기 데이터 부분의 전체 크기와 상기 축소된 데이터 부분의 전체 크기 사이의 차(difference)가 증가함에 따라 증가하는
    방법.
  12. 제 11 항에 있어서,
    상기 논리적 용량은 상기 데이터 메모리가 저장할 수 있는 상기 데이터 부분의 수에 대응하는
    방법.
  13. 제 11 항에 있어서,
    상기 사용량이 특정 임계값을 초과하면, 상기 축소된 데이터 부분의 하나 이상을 상기 데이터 메모리로부터 제거하는 단계를 더 포함하는
    방법.
  14. 제 13 항에 있어서,
    상기 제거하는 단계는, 상기 저장 장치의 태그 메모리의 하나 이상의 엔트리(entries)를 무효화하는 단계(invalidating)를 포함하는
    방법.
  15. 제 13 항에 있어서,
    상기 특정 임계값은 상기 저장 장치의 기록 확충(write amplification)을 특정 값 미만으로 유지하는
    방법.
  16. 삭제
  17. 제 11 항에 있어서,
    상기 논리적 용량은, 상기 데이터 부분의 전체 크기와 상기 축소된 데이터 부분의 전체 크기 사이의 차가 감소함에 따라 감소하는
    방법.
  18. 제 11 항에 있어서,
    상기 저장 인터페이스는 SATA 인터페이스, SAS 인터페이스 및 PCIe 인터페이스 중 하나인
    방법.
  19. 제 11 항에 있어서,
    상기 데이터 메모리는 비휘발성인
    방법.
  20. 제 11 항에 있어서,
    상기 축소하는 단계는 압축하는 단계를 포함하는
    방법.
  21. 제 11 항에 있어서,
    상기 데이터 부분 중 특정 데이터 부분에 대한 상기 저장 장치로의 요청에 응답하여,
    상기 데이터 메모리로부터 상기 각각의 축소된 데이터 부분을 판독하는 단계와,
    상기 각각의 축소된 데이터 부분의 축소를 반전시켜 상기 특정 데이터 부분을 복원하는 단계와,
    상기 특정 데이터 부분을 상기 호스트로 리턴시키는 단계를 더 포함하는
    방법.
KR1020130022004A 2012-03-23 2013-02-28 동적으로 적응적인 캐싱을 위한 시스템 KR102022721B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261614545P 2012-03-23 2012-03-23
US201261614548P 2012-03-23 2012-03-23
US61/614,545 2012-03-23
US61/614,548 2012-03-23
US13/566,204 2012-08-03
US13/566,204 US9158695B2 (en) 2011-08-09 2012-08-03 System for dynamically adaptive caching

Publications (2)

Publication Number Publication Date
KR20130108117A KR20130108117A (ko) 2013-10-02
KR102022721B1 true KR102022721B1 (ko) 2019-09-18

Family

ID=47845763

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130022004A KR102022721B1 (ko) 2012-03-23 2013-02-28 동적으로 적응적인 캐싱을 위한 시스템

Country Status (5)

Country Link
EP (1) EP2642397A1 (ko)
JP (1) JP6228374B2 (ko)
KR (1) KR102022721B1 (ko)
CN (1) CN103324586B (ko)
TW (1) TWI584120B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104699219B (zh) * 2013-12-10 2020-06-23 联想(北京)有限公司 一种电子设备及信息处理方法
CN104852812B (zh) * 2015-04-03 2018-08-07 上海航天电子通讯设备研究所 1553b总线远置单元自适应收发数据方法
CN106484310B (zh) * 2015-08-31 2020-01-10 华为数字技术(成都)有限公司 一种存储阵列操作方法和装置
CN109358804B (zh) 2015-09-29 2022-03-29 华为技术有限公司 一种数据处理方法、装置及闪存设备
EP3755212A4 (en) * 2018-02-21 2022-04-06 Patchd, Inc. PERSONAL MONITORING SYSTEMS AND PROCEDURES
US10963332B2 (en) * 2018-12-17 2021-03-30 Western Digital Technologies, Inc. Data storage systems and methods for autonomously adapting data storage system performance, capacity and/or operational requirements
CN113722241A (zh) * 2021-08-30 2021-11-30 锐掣(杭州)科技有限公司 数据处理方法、装置、设备、可读存储介质及程序产品

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072641A1 (en) * 2010-09-21 2012-03-22 Hitachi, Ltd. Semiconductor storage device and data control method thereof

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4942552A (en) * 1986-11-20 1990-07-17 Allen-Bradley Company, Inc. Method and apparatus for saving and performing industrial control commands
US6877081B2 (en) * 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
AU2002326752A1 (en) * 2001-08-24 2003-03-10 Intel Corporation (A Delaware Corporation) (A Delawware Corporation) A general input/output architecture protocol and related methods to manage data integrity
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
US20050132161A1 (en) * 2003-12-15 2005-06-16 Nokia Corporation Creation of virtual memory space in a memory
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7243191B2 (en) * 2004-08-31 2007-07-10 Intel Corporation Compressing data in a cache memory
WO2007135602A1 (en) * 2006-05-24 2007-11-29 Koninklijke Philips Electronics N.V. Electronic device and method for storing and retrieving data
US7779056B2 (en) * 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
JP2009026296A (ja) * 2007-06-21 2009-02-05 Toshiba Corp 電子デバイス、メモリデバイス、ホスト装置
US8078787B2 (en) * 2007-06-22 2011-12-13 Apple Inc. Communication between a host device and an accessory via an intermediate device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072641A1 (en) * 2010-09-21 2012-03-22 Hitachi, Ltd. Semiconductor storage device and data control method thereof

Also Published As

Publication number Publication date
TW201342063A (zh) 2013-10-16
CN103324586B (zh) 2018-01-12
JP2013200868A (ja) 2013-10-03
EP2642397A1 (en) 2013-09-25
CN103324586A (zh) 2013-09-25
JP6228374B2 (ja) 2017-11-08
TWI584120B (zh) 2017-05-21
KR20130108117A (ko) 2013-10-02

Similar Documents

Publication Publication Date Title
KR102022721B1 (ko) 동적으로 적응적인 캐싱을 위한 시스템
US9158695B2 (en) System for dynamically adaptive caching
CN108733313B (zh) 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质
US9747318B2 (en) Retrieving data in a storage system using thin provisioning
US9285998B2 (en) Tiered caching and migration in differing granularities
US11243706B2 (en) Fragment management method and fragment management apparatus
US9430404B2 (en) Thinly provisioned flash cache with shared storage pool
EP2778889B1 (en) Dynamic storage device provisioning
US20130080679A1 (en) System and method for optimizing thermal management for a storage controller cache
US10108671B2 (en) Information processing device, computer-readable recording medium having stored therein information processing program, and information processing method
US20150199269A1 (en) Enhanced ssd caching
US9098404B2 (en) Storage array, storage system, and data access method
JPWO2016175028A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
CN104272272A (zh) 混合储存集合去除重复
CN105677236B (zh) 一种存储设备及其存储数据的方法
US9983826B2 (en) Data storage device deferred secure delete
CN112799595A (zh) 数据处理方法、设备及存储介质
CN101387943B (zh) 一种存储设备以及缓存数据的方法
US9767029B2 (en) Data decompression using a construction area
CN103064762B (zh) 重删备份数据的恢复方法和装置
JP6524945B2 (ja) 制御装置、記憶装置、記憶制御方法およびコンピュータプログラム
CN112256657A (zh) 日志镜像方法及系统
US20110156919A1 (en) Semiconductor storage apparatus and early-warning systems and methods for the same
CN115729437A (zh) 存储设备的控制方法、装置及存储设备

Legal Events

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