KR20240025451A - 데이터 캐싱을 위한 방법 및 장치 - Google Patents

데이터 캐싱을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20240025451A
KR20240025451A KR1020230075425A KR20230075425A KR20240025451A KR 20240025451 A KR20240025451 A KR 20240025451A KR 1020230075425 A KR1020230075425 A KR 1020230075425A KR 20230075425 A KR20230075425 A KR 20230075425A KR 20240025451 A KR20240025451 A KR 20240025451A
Authority
KR
South Korea
Prior art keywords
data
cache
cache value
request
logical partition
Prior art date
Application number
KR1020230075425A
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 KR20240025451A publication Critical patent/KR20240025451A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • 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/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • 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/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

데이터 캐싱 방법이 제공된다. 방법은 액세스 요청에 대응하는 데이터의 캐시 값을 획득하는 단계, 및 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 단계를 포함한다.

Description

데이터 캐싱을 위한 방법 및 장치{METHOD AND DEVICE FOR DATA CACHING}
본 개시는 일반적으로 데이터 스토리지에 관한 것으로, 보다 상세하게는 데이터 캐싱을 위한 방법 및 장치에 관한 것이다.
블록 장치를 갖는 캐시 시스템은 오픈 캐시 가속 소프트웨어(Open-CAS), 장치 매퍼-캐시(DM-Cache; Device Mapper-Cache) 및 블록 캐시(BCache)를 포함한다. 이러한 블록 장치를 포함하는 캐시 시스템은 고속 블록 장치를 캐시 장치로 사용하고 느린 블록 장치를 백엔드 장치로 사용하여 캐시 장치의 빠른 판독 및 기록 특성을 이용함으로써 스토리지 시스템의 전반적인 성능을 향상시킨다.
캐시 시스템은 라이트-쓰루(Write-Through) 방식, 라이트-백(write-back) 방식, 라이트-어라운드(Write-Around) 방식을 사용한다.
라이트-쓰루 방식에서, 기록 동작을 위한 데이터는 캐시 장치 및 백엔드 장치에 동시에 기록된다. 이 방식은 적은 양의 데이터가 기록된 후 자주 판독되는 시나리오에 적합하다.
라이트-백 방식에서, 기록 동작을 위한 데이터는 캐시 장치에만 기록된 다음에, 기록 동작을 위한 데이터는 캐시 장치에서 백엔드 장치로 비동기식으로 플러시된다. 이 방식은 판독와 기록이 집중적인 시나리오에 적합하다.
라이트-어라운드 방식에서, 기록 동작을 위한 데이터는 백엔드 장치에 직접 기록되고, 데이터를 판독할 때 데이터는 캐시 장치에 기록된다. 이 방식은 데이터가 한 번 작성되고 거의 판독되지 않는 시나리오에 적합하다.
동시에, 판독을 위한 방식은 먼저 캐시 장치에서 판독 동작을 위해 데이터에 액세스하는 단계, 및 판독 동작을 위한 데이터가 캐시 장치에서 적중하지 않으면 백엔드 장치로부터 판독 동작을 위한 데이터에 액세스하는 단계를 포함한다.
관련 캐시 시스템에서, 해당 판독 및 기록 방식은 일반적으로 상위 계층 비즈니스 유형에 따라 배치된다. 일단 방식이 배치되면, 이 방식은 시스템이 실행되는 동안 변경될 수 없으므로, 시스템은 비즈니스 데이터 및 복잡한 워크로드의 변경에 동적으로 대응할 수 없다. 예를 들어 백엔드 장치에 있는 데이터의 캐시 값은 워크로드가 변경됨에 따라 변경될 수 있으며, 고정된 캐싱 방식으로 인해 데이터가 캐시 장치에 제대로 기록되지 않는 결과를 초래하고, 따라서 초기에 배포된 캐싱 방식을 사용하여 데이터를 캐싱하면 스토리지 시스템의 자원을 효과적으로 활용할 수 없다.
하나 이상의 실시예는 스토리지 시스템의 자원을 효율적으로 활용하기 위해 액세스 요청에 대응하는 데이터의 실제 캐시 값에 따라 캐싱 방식 동적으로 조정할 수 있는, 데이터 캐싱을 위한 방법 및 장치를 제공하고, 이에 의해 스토리지 시스템의 액세스 성능을 향상시킬 수 있다.
일 예의 실시 예의 측면에 따르면, 데이터 캐싱 방법은 액세스 요청에 대응하는 데이터의 캐시 값을 획득하는 단계, 및 상기 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여 상기 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 단계를 포함한다.
일 예의 실시 예의 측면에 따르면, 데이터 캐싱 장치는 명령을 저장하는 하나 이상의 메모리, 및 상기 명령을 실행하여, 액세스 요청에 대응하는 데이터의 캐시 값을 획득하도록 구성된 획득 유닛, 및 상기 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여, 상기 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 결정 유닛을 구현하도록 구성되는 하나 이상의 프로세서를 포함한다.
일 예의 실시 예의 측면에 따르면, 컴퓨터 판독 가능 스토리지 매체는 프로세서에 의해 실행될 때, 상기 프로세서를 제어하여 액세스 요청에 대응하는 데이터의 캐시 값을 획득하는 단계, 및 상기 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여 상기 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 단계를 포함하는 방법을 수행하도록 구성되는, 컴퓨터 프로그램을 저장한다.
상기 및 그 외 측면은 첨부 도면과 관련한 예시적인 실시 예의 다음 설명으로부터 더욱 명백할 것이다:
도 1은 일 실시 예에 따른 데이터 캐싱 방법을 나타내는 흐름도이다;
도 2는 일 실시 예에 따른 데이터 스토리지 솔루션의 전체 구조를 나타내는 도면이다;
도 3은 일 실시 예에 따라 훈련된 IO 예측자를 기반으로 논리 파티션에 대한 액세스 횟수를 예측하는 개략도를 도시한다;
도 4는 일 실시 예에 따른 데이터 캐싱 장치(400)의 구성을 나타내는 블록도이다;
도 5는 일 실시 예에 따른, 스토리지 장치가 적용된 시스템(1000)의 개략도이다;
도 6은 일 실시 예에 따른 호스트 스토리지 시스템(10)의 블록도이다;
도 7은 일 실시 예에 따른 UFS 시스템(2000)의 블록도이다; 및
도 8은 일 실시 예에 따른 스토리지 장치가 적용된 데이터 센터(3000)를 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 실시 예를 설명하면, 동일한 참조 번호는 동일하거나 유사한 요소, 특징 및 구조를 묘사하는 데 사용된다. 본 명세서에서 설명되는 실시 예들은 예시적인 실시 예들이므로,, 본 발명은 이에 한정되지 않고 다양한 다른 형태로 구현될 수 있다. 다음 설명에서 제공되는 각 실시 예는 또한 본 명세서에 제공되거나 본 명세서에 제공되지 않지만 본 개시와 일치하는 다른 예 또는 다른 실시 예의 하나 이상의 특징과 연관되는 것에서 배제되지 않는다. 본 개시는 본 명세서에 기술된 특정 실시 예에 의해 특정 실시 예에 제한되지 않고 본 개시는 첨부된 청구범위 및 이에 상응하는 범위 내에 있는 경우, 본 개시의 모든 수정, 균등물 및/또는 대안을 포함하는 것이다. 다음 설명 및 청구범위에서 사용되는 용어 및 단어는 그 사전적 의미에 한정되는 것이 아니라, 본 개시내용의 명확하고 일관된 이해를 가능하게 하기 위해 사용된다. 따라서, 당업자에게는 본 개시의 다양한 실시 예에 대한 다음 설명은 첨부된 청구범위 및 그 균등물에 의해 정의된 바와 같이 본 개시를 제한하기 위한 것이 아니고 예시의 목적으로 제공된다는 것이 명백할 것이다.
문맥에서 명백하게 달리 지시하지 않는 한, 단수 형태는 복수 형태를 포함하는 것으로 이해되어야 한다. 본 명세서에서 "포함하다", "구비하다" 및 "갖다"라는 용어는 개시된 기능, 동작 또는 구성요소의 존재를 나타내며, 다른 기능, 동작 또는 구성요소를 배제하지 않는다.
"및/또는"이라는 용어는 연관된 나열 항목 중 하나 이상의 임의의 모든 조합을 포함한다. 요소의 목록 앞에 올 때 "적어도 하나"와 같은 표현은 요소의 전체 목록을 수정하고 목록의 개별 요소를 수정하지 않는다. 예를 들어, "a, b 및 c 중 적어도 하나"라는 표현은 a만, b만, c만, a와 b 모두, a와 c 모두, b와 c 모두, 또는 모두, a, b 및 c.를 포함하는 것으로 이해되어야 한다.
본 발명의 다양한 실시 예에서, 구성요소(예를 들어, 제1 구성요소)가 다른 구성요소(예를 들어, 제2 구성요소)와 "결합" 또는 "연결"되는 것으로 언급되는 경우, 상기 구성요소는 다른 구성요소와 직접 연결되거나, 다른 구성요소(예를 들어, 제3 구성요소)를 통해 연결될 수 있다. 대조적으로, 구성요소(예를 들어, 제1 구성요소)가 다른 구성요소(예를 들어, 제2 구성요소)와 "직접 결합" 또는 "직접 연결"되는 경우, 다른 구성 요소(예를 들어, 제3 구성 요소)가 구성 요소와 다른 구성 요소 사이에 존재하지 않는다.
본 개시의 다양한 실시 예를 설명하는데 사용되는 "~하도록 구성된"이라는 표현은, 예를 들어 상황에 따라 "~하기에 적합한", "~할 능력을 갖는", "~하도록 설계된", "~하도록 적응된", "~하게 된" 및 "~할 수 있는"과 같은 표현과 상호 교환적으로 사용될 수 있다. "~하기로 구성된"이라는 용어는 하드웨어 측면에서 "특별히 설계된"을 나타내지 않을 수 있다. 대신에, 일부 상황에서 "~하도록 구성된 장치"라는 표현은 장치와 다른 장치 또는 부품이 "~할 수 있는" 것을 나타낼 수 있다. 예를 들어, "A, B, C를 수행하도록 구성된 프로세서"라는 표현은 해당 동작을 수행하기 위한 전용 프로세서(예를 들어, 임베디드 프로세서) 또는 범용 프로세서(예를 들어, 중앙 처리 장치(CPU)) 또는 메모리 장치에 저장된 적어도 하나의 소프트웨어 프로그램을 실행하여 해당 동작을 수행하는 애플리케이션 프로세서(AP)를 나타낼 수 있다.
본 명세서에서 사용된 용어는 본 발명의 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시 예의 범위를 한정하려는 것은 아니다. 본 명세서에서 다르게 명시되지 않는 한, 기술적이거나 과학적인 용어를 포함하여 본 명세서에서 사용되는 모든 용어는 당업자가 일반적으로 이해하는 것과 동일한 의미를 가질 수 있다. 일반적으로, 사전에 정의된 용어는 관련 기술의 문맥상의 의미와 동일한 의미로 간주되어야 하며, 본 명세서에서 명확하게 정의하지 않는 한, 다르게 이해하거나 지나치게 형식적인 의미를 갖는 것으로 이해해서는 안 된다. 어쨌든, 본 개시에서 정의된 용어도 본 발명의 실시 예를 배제하는 것으로 해석되어서는 안 된다.
Open-CAS, DM-Cache 및 BCache와 같은 블록 장치가 있는 캐싱 시스템은 고성능의 스토리지 장치를 사용하여 백엔드 블록 스토리지 장치에 대한 입출력(IO) 액세스를 가속화한다. 예를 들어, 스토리지 클래스 메모리(SCM), Samsung Z-SSD, PRAM, 싱글 레벨 셀(SLC) 및 솔리드 스테이트 디스크(SSD)는 캐시 장치로 사용할 수 있는 초저지연 블록 장치이고, 백엔드 장치는 다중 레벨 셀(MTC) SSD, 3단계 셀(TLC) SSD, 품질 수준 셀(QLC) SSD, 하드 디스크 드라이브(HDD) 등일 수 있다.
백엔드 블록 스토리지 장치에 대한 IO 액세스를 보다 효과적으로 가속화하기 위해, 본 개시는 데이터 캐싱을 위한 방법 및 장치를 제안한다. 당업자라면 본 발명의 데이터 캐싱 방법 및 장치가 캐시 장치 및 백엔드 장치를 포함하는 임의의 스토리지 시스템에 적용될 수 있다는 것이 이해되어야 한다.
도 1은 일 실시 예에 따른 데이터 캐싱 방법을 나타내는 흐름도이다.
도 1을 참조하면, 단계(S101)에서, 스토리지 장치에 대한 액세스 요청에 대응하는 데이터의 캐시 값은 액세스 요청에 응답하여 획득된다. 다음 설명에서, 스토리지 장치 및 백엔드 스토리지 장치는 동일하거나 유사한 의미를 가지며, 캐시 및 캐시 장치는 동일 또는 유사한 의미를 갖는다.
일 예로서, 액세스 요청에 대응하는 데이터의 캐시 값은 액세스 요청에 대응하는 데이터의 논리 주소가 속한 논리 파티션의 데이터 캐시 값일 수 있다.
일 예로서, 시스템의 부담을 줄이기 위해, 백엔드 장치는 백엔드 장치에 의해 매핑된 논리적 주소를 분할함으로써 복수의 논리 파티션으로 분할될 수 있고, 각 논리 파티션에 저장된 데이터의 캐시 값은 논리 파티션 단위로 관리될 수 있다.
백엔드 장치는 복수의 논리 파티션으로 분할될 수 있으며, 논리 파티션의 구체적인 수와 논리 파티션의 크기는 실제 상황에 따라 설정될 수 있다는 것에 유의한다. 예를 들어, 논리 파티션의 크기는 같거나 다를 수 있다.
이에 상응하여, 액세스 요청에 대응하는 데이터의 캐시 값을 획득하는 단계는 액세스 요청에 대응하는 데이터의 논리 주소가 속하는 논리 파티션의 캐시 값을 획득하는 단계를 포함할 수 있다. 예를 들어 특정 동작은: 상기 액세스 요청에 대응하는 데이터의 논리 주소가 속하는 논리 파티션을 결정하는 단계; 및 상기 데이터의 논리 주소가 속하는 논리 파티션의 데이터 캐시 값을 상기 액세스 요청에 대응하는 데이터의 캐시 값으로 획득하는 단계를 포함한다. 스토리지 장치는 복수의 논리 파티션으로 분할될 수 있으며, 각각의 논리 파티션은 대응하는 데이터 캐시 값을 가질 수 있다.
당업자라면 캐시 값은 데이터에 액세스하는 빈도를 나타내는 데이터의 핫 레벨 정보, 소정의 기간 내에 데이터에 액세스한 횟수 등일 수 있다. 물론, 본 개시는 캐시 값에 대한 특정 제한을 부과하지 않으며 캐시 값은 데이터가 캐시될 필요가 있는지를 결정하기 위해 사용될 수 있는 임의의 메트릭 정보일 수 있다.
일 예로, 각 논리 파티션에 대응하는 판독 및 기록 요청은 워크로드가 변경함에 따라 달라질 수 있으며, 이로 인해 각 논리 파티션의 데이터 캐시 값이 달라질 수 있다. 예를 들어, 제1 기간 동안, 특정 논리 파티션에 대응하는 데이터는 자주 액세스되는 데이터일 수 있으므로, 특정 논리 파티션의 데이터 캐시 값은 높다. 제1 기간에 논리 파티션에 대한 기록 요청이 있는 경우, 기록 요청에 대응하는 데이터는 캐시 장치에 기록되어야 한다. 제2 기간에는, 특정 논리 파티션에 대응하는 데이터에 자주 액세스하지 못할 수 있으므로, 제2 기간에는 특정 논리 파티션의 데이터 캐시 값은 낮다. 이때, 제2 기간에 논리 파티션에 대한 기록 요청이 있는 경우, 기록 요청에 대응하는 데이터는 백엔드 장치에 기록되어, 데이터 캐시 값이 낮은 데이터가 캐시 장치에 저장되는 것을 방지할 수 있다. 각 논리 파티션에 대응하는 판독 및 기록 요청이 다를 수 있으므로, 각 논리 파티션에는 고유한 해당 데이터 캐시 값이 있다.
이와 관련하여, 논리 파티션(또는 논리 파티션에 대응하는 데이터)의 데이터 캐시 값이 합리적으로 예측될 수 있으며, 논리 파티션에 대응하는 데이터는 논리 파티션의 예측된 데이터 캐시 값에 따라 캐시 또는 백엔드 스토리지 장치에 기록되는 (또는 논리 파티션의 데이터 캐시 값에 따라 논리 파티션에 대응하는 데이터를 캐시 또는 백엔드 스토리지 장치로부터 판독되는) 경우, 이러한 판독 및 기록 방식은 데이터의 실제 캐시 값에 따라 데이터를 캐시 장치에 기록할지를 동적으로 결정할 수 있으며, 이는 관련 방법으로 인한 캐시 장치의 더티 데이터를 효과적으로 줄이고, 캐시에서 데이터에 액세스하는 적중률을 향상시키며 데이터 판독 시간 지연을 효과적으로 줄일 수 있다. 라이트-스루 동작과 비교하여, 기록 동작의 지연을 효과적으로 줄일 수 있으며; 라이트-백 동작 및 라이트-어라우드 동작과 비교하여, 단일 장치에 대한 기록 동작의 압력이 감소될 수 있다(라이트-백 동작 및 라이트-어라운드 동작은 캐시 장치에만 데이터를 기록하거나 백엔드 장치에만 데이터를 기록한다).
일 예로, 액세스 요청에 대응하는 데이터의 논리적 주소가 속하는 논리 파티션의 데이터 캐시 값 또는 액세스 요청에 대응하는 데이터의 캐시 값은 데이터의 논리 주소가 속한 논리 파티션의 이력 액세스 정보에 따라 획득된다.
데이터 액세스에는 시간 상관관계가 있기 때문에, 이전에 여러 번 액세스한 데이터는 앞으로 여러 번 액세스할 가능성이 높으며, 데이터를 저장하는 위치(논리 파티션)는 기본적으로 고정되어 있기 때문에, 데이터의 미래 액세스 정보는 데이터를 저장하는 위치(논리 파티션)의 이력 액세스 정보에 따라 예측될 수 있다.
당업자라면 논리 파티션의 액세스 정보가 논리 파티션에 대한 액세스 횟수 및 액세스되는 데이터의 크기 중 적어도 하나를 참조할 수 있다는 것이 이해될 것이다. 이해를 돕기 위해, 논리 파티션에 대한 액세스 횟수는 아래 설명을 위한 액세스 정보의 예가 된다. 게다가, 이하, 설명의 편의를 위해 논리 파티션에 대한 액세스 횟수와 논리 파티션에 대한 액세스 횟수를 혼용하여 사용할 수 있다. 예로서, 액세스 횟수를 예측하는 머신 러닝 모델 또는 논리 파티션의 데이터 캐시 값을 학습할 수 있으며, 훈련된 기계 학습 모델은 액세스 횟수 또는 논리 파티션의 데이터 캐시 값을 예측하는 데 사용될 수 있다.
일 예로서, 기계 학습 모델의 오프라인 학습 과정과 온라인 사용 과정을 설명하기 위해 장단기 메모리(LSTM; Long Short-Term Memory) 기반 예측 모델을 예로 들어 설명한다.
도 2는 일 실시 예에 따른 데이터 저장 방식(scheme)의 전체 아키텍처를 나타내는 도면이다.
도 2를 참조하면, 캐시 값 예측 모델은 IO 예측자 및 분류자를 포함할 수 있다.
먼저, LSTM 기반 예측 모델의 오프라인 학습의 예를 설명하면 다음과 같다.
1) 각 논리 파티션에 대한 IO 요청 횟수 및/또는 각 순간(또는 각 기간)에서의 요청에 대응하는 데이터 크기는 (예를 들어, IO 수집기를 통해) 계산될 수 있고, 즉, 매 순간 또는 각 기간에서 각 논리 파티션의 액세스 정보를 카운트하고, 카운트된 데이터를 기록 파일에 저장할 수 있다. 단일 요청에 대한 액세스 정보를 카운팅하는 것과 비교하여, 논리 파티션 단위로 액세스 정보를 카운팅하면 메모리 사용량과 컴퓨팅 부하를 효과적으로 줄일 수 있다. 당업자라면 이하에서 "순간"이라는 용어는 "기간"으로 대체될 수 있으며, 기간의 간격은 미리 설정된 값일 수 있다는 것이 이해되어야 한다.
2) h-H+1번째 순간부터 h번째 순간까지 n번째 논리 파티션(총 2M+1개의 논리 파티션) 전후 n번째 논리 파티션에 인접한 2M 논리 파티션에 대한 액세스 횟수(액세스 횟수는 [H,2M+1]의 2차원 벡터로 나타낼 수 있음) 및 h+1번째 순간(또는 기간)에서 n번째 논리 파티션에 대한 액세스 횟수는 IO 예측자를 훈련하기 위한 훈련 데이터로 사용될 수 있다.
여기서, n은 논리 파티션의 인덱스이고, n=1,...N이고, N은 백엔드 장치의 분할된 논리 파티션의 수이고, H는 수집기가 워크로드 데이터를 수집하는 횟수이고, 예를 들어, 미리 정해진 기간 내 H 순간의 워크로드 데이터가 수집될 수 있거나, H 미리 설정된 기간의 작업량 데이터가 수집되고 워크로드 데이터는 액세스 횟수일 수 있다. M은 양의 정수이다.
여기서, h는 순간 또는 기간의 지표이고, H는 미리 설정된 값이다.
이하의 설명에서 논리 파티션과 파티션은 동일하거나 유사한 의미를 가지며 혼용되어 사용된다.
예를 들어, M이 2이고, H는 10이고, n은 8일 때, h는 20이며, 8번째 파티션에 인접하여 앞뒤의 2M 파티션은 6, 7, 9, 10번째 파티션이다. 따라서, 훈련 데이터는 11번째 내지 20번째 기간 각각에서 6번째, 7번째, 8번째, 9번째 및 10번째 파티션의 각 파티션에 대한 액세스 횟수(즉, 액세스 횟수는 [10,5] 크기의 2차원 벡터임) 및 21번째 기간에서 8번째 파티션에 대한 액세스 횟수(즉, 액세스 횟수는 [1,1] 크기의 2차원 벡터임)를 나타낼 수 있다. 당업자라면 파티션에 인접한 2M 파티션이 다른 방식으로 선택될 수 있으며, 예를 들어, 현재 파티션 이전의 2M 파티션, 현재 파티션 다음의 2M 파티션, 또는 현재 파티션 이전의 2M-X 파티션 및 현재 파티션 뒤의 X 파티션이 선택될 수 있다는 것이 이해될 것이며, 여기서 X는 미리 설정된 값이고, 0<X<2M이다.
당업자라면 IO 예측자는 다양한 시나리오의 부하에 대응하는 논리 파티션의 액세스 정보를 사용하여 훈련될 수 있으며, 이는 훈련된 IO 예측자를 사용하여 논리 파티션의 액세스 정보를 예측할 때 논리 파티션의 미래 액세스 정보를 보다 정확하게 예측할 수 있게 한다는 것이 이해되어야 한다.
훈련된 IO 예측자의 온라인 사용 프로세스의 예는 다음과 같이 설명된다:
1) IO 콜렉터를 이용하여 각 순간 또는 각 기간의 각각의논리 파티션의 액세스 정보를 기록한다. 예를 들어, 액세스 정보는 미리 설정된 시간 간격마다 카운트될 수 있다.
2) 각 논리 파티션의 이력 기록에 제공된 횟수가 미리 설정된 값(예를 들어, H)을 초과하는 경우, 훈련된 IO 예측자는 각 논리 파티션의 액세스 정보를 예측하는 데 사용될 수 있다.
예로서, 데이터의 논리 주소가 속한 논리 파티션의 이력 액세스 정보 및 동일한 기간 내의 다른 논리 파티션의 이력 액세스 정보는 데이터의 논리 주소가 속하는 논리 파티션의 데이터 캐시 값을 예측하기 위해 훈련된 IO 예측자에 입력될 수 있다. 다른 논리 파티션은 데이터의 논리 주소가 속한 논리 파티션에 인접한 미리 설정된 수의 논리 파티션을 포함할 수 있다.
도 3은 일 실시 예에 따라 훈련된 IO 예측자를 기반으로 논리 파티션에 대한 액세스 횟수를 예측하는 개략도를 도시한다.
예를 들어, t-H+1번째 순간 내지 t번째 순간 각각에서([H, 2M+1] 크기의 2차원 벡터), n번째(논리 파티션의 인덱스) 논리 파티션과 n번째 논리 파티션(총 2M+1개의 논리 파티션)에 인접하여 앞과 뒤에 오는 2M 논리 파티션에 대한 액세스 횟수는 훈련된 IO 예측자에 입력되고 (여기서 t는 모멘트의 인덱스이고 H는 미리 설정된 값임), IO 예측자의 출력은 t+1번째 순간(또는 기간)에서 n번째 논리 파티션에 대한 예측된 액세스 횟수이고, 여기서 t-H+1번째 순간부터 t번째 순간까지의 시간 간격은 동일한 기간이고, t 번째 순간은 현재 순간이다.
예를 들어, 9번째 파티션의 경우, 다음 기간이 11번째 기간 또는 순간인 경우(즉, t+1=11), 1차 기간 내지 10차 기간의 각각에서 7번째 논리 파티션, 8번째 논리 파티션, 9번째 논리 파티션, 10번째 논리 파티션 및 11번째 논리 파티션에 대한 액세스 횟수는 훈련된 IO 예측자에 입력된 다음에, 다음 기간(즉, 11번째 기간 또는 순간)에서 9번째 논리 파티션에 대해 예측된 액세스 횟수를 얻을 수 있다.
일 예로, 머신 러닝 모델의 학습 단계나 머신 러닝 모델의 추론 단계에 관계없이, n번째 논리 파티션 앞 또는 뒤에 오는 논리 파티션의 수가 M보다 작은 경우, 누락된 논리 파티션의 액세스 횟수는 미리 설정된 값으로 대체되며, 예를 들어 미리 설정된 값은 0으로 설정될 수 있다.
다른 예로, 머신 러닝 모델의 학습 단계 또는 머신 러닝 모델의 추론 단계에서, n번째 논리 파티션 앞에 있는 논리 파티션의 수가 M보다 작은 경우(예를 들어, 숫자가 m임), m개의 파티션과 n번째 파티션에 뒤따르는 2M-m개의 파티션은 n번째 파티션에 인접하여 앞과 뒤에 오는 2M 파티션으로 사용되며, n번째 논리 파티션에 뒤따르는 논리 파티션의 수가 M보다 작은 경우(예를 들어, 숫자는 m), m개의 파티션과 n번째 파티션 이전의 2M-m개의 파티션은 n번째 파티션에 인접하여 앞과 뒤에 오는 2M 파티션으로 사용된다.
당업자라면 훈련된 IO 예측자를 통해 액세스 정보를 예측할 때 IO 예측자를 훈련하는 데 사용되는 인접 논리 파티션의 선택 방식은 사용된 인접 논리 파티션의 선택 방식과 동일하다는 것이 이해되어야 한다.
일 실시 예에 따르면, 논리 파티션의 액세스 정보 간에는 시간적 상관관계와 공간적 상관관계가 있기 때문에, 미래의 논리 파티션의 액세스 정보는 논리 파티션의 이력 액세스 정보 및 논리 파티션에 인접한 논리 파티션의 이력 액세스 정보에 기반하여 효과적으로 예측될 수 있다.
훈련된 IO 예측자를 이용하여 다음 순간(또는 기간)에 각 논리 파티션에 대한 액세스 횟수를 예측할 수 있다.
일 예로, 각 파티션의 데이터 캐시 값은 예측된 각 파티션의 액세스 횟수에 기초하여 결정될 수 있다.
일 예로, 각각의 논리 파티션의 데이터 캐시 값은 클러스터링 방식(예, Kmeans++)에서 각각의 파티션에 대한 예측된 액세스 횟수에 기반하여 캐시 값 분류기에 의해 예측될 수 있다. 구체적으로 예를 들어, 캐시 값 분류기는 다음 순간 또는 다음 기간(예를 들어, 다음 순간 또는 기간은 t+1번째 순간 또는 기간이고, 시간의 크기는 예를 들어 3초)에서 각각의 파티션에 대해 예측된 액세스 횟수를 K개의 클러스터로 클러스터링하고, K개의 클러스터 중 클러스터 중심 값이 더 큰 L개의 클러스터에 대응하는 논리 파티션은 높은 데이터 캐시 값을 갖는 것으로 결정되고, 나머지 클러스터에 대응하는 논리 파티션은 낮은 데이터 캐시 값을 갖는 것으로 결정되며, 여기서 L은 미리 결정된 값이다. 낮은 데이터 캐시 값은 논리 파티션이 자주 액세스되지 않는 것을 나타낸다. 높은 데이터 캐시 값은 논리 파티션이 자주 액세스되는 것을 나타낸다. 당업자라면 예측자와 분류자가 오프라인 단계에서 별도로 학습할 수 있으며, 물론 함께 학습할 수도 있다는 것이 이해되어야 한다.
예를 들어, 논리 파티션의 정보 액세스에 대한 이력 기록의 횟수가 미리 설정된 값 이하인 경우(예를 들어, 사전 설정 값은 H임), 훈련된 예측 모델은 사용될 수 없다. 이 경우, 다음 순간(또는 기간)에서 각각의 논리 파티션의 데이터 캐시 값은: 다음 순간(또는 기간) 이전에 각각의 논리 파티션에 대한 액세스 횟수를 클러스터링하는 단계; 클러스터링에 의해 획득된 복수의 클러스터 중에서, 클러스터 중심 값이 더 큰 L 클러스터에 대응하는 논리 파티션이 높은 데이터 캐시 값을 갖는 것으로 결정하는 단계; 및 다른 클러스터에 대응하는 논리 파티션이 낮은 데이터 캐시 값을 갖는 것으로 결정하는 단계를 통해 예측될 수 있다.
일 예로, 제1 순간 또는 기간 동안, 각각의 논리 파티션의 데이터 캐시 값이 미리 설정될 수 있다.
당업자라면 상기에서 액세스 정보로 사용된 액세스 횟수는 예시일 뿐이며, 액세스 요청에 대응하는 데이터의 크기도 또한 액세스 정보로 사용될 수 있다는 것이 이해될 것이다. 이 경우, 상기 클러스터링 동작은 데이터 크기에 대한 것이다. 또한, 액세스 횟수와 데이터의 크기를 모두 액세스 정보로 사용할 수 있다.
일 예로, 도 2을 참조하면, 획득된 논리 파티션의 데이터 캐시 값에 기초하여 논리 파티션-캐시 값 매핑 테이블이 수립될 수 있다. 테이블은 논리 파티션의 데이터 캐시 값이 높은지 낮은지를 나타낼 수 있다. 예를 들어, 데이터 캐시 값이 높은 논리 파티션의 데이터 캐시 값은 1로 설정되고, 데이터 캐시 값이 낮은 논리 파티션의 데이터 캐시 값은 0으로 설정될 수 있다. 논리 파티션-데이터 캐시 값 매핑 테이블은 기록 파일에 저장될 수 있다. 매핑 테이블은 시간이 지남에 따라 업데이트될 수 있다.
도 1로 돌아가, 단계(S102)에서, 데이터의 캐시 값이 미리 설정된 조건을 만족하는지 여부가 결정된다.
일 예로서, 미리 설정된 조건은 데이터의 캐시 값이 높은 캐시 값이거나 데이터의 논리 주소가 속한 논리 파티션이 높은 데이터 캐시 값일 수 있다.
일 예로서, 데이터의 캐시 값은 또한 각 논리 파티션에 대한 액세스 횟수를 클러스터링한 후 결과를 클러스터링하기 위한 순서 번호로 표시될 수 있으며, 여기서 상기 순서 번호는 클러스터링에 의해 획득된 복수의 클러스터 각각에 대응하는 중심값의 크기에 기초하여 획득되고, 대응하여, 미리 설정된 조건은 데이터에 대응하는 논리 파티션의 순서 번호가 미리 설정된 값보다 작은 것일 수 있다.
일 예로서, 데이터에 대응하는 논리 파티션의 데이터 캐시 값은 매핑 테이블에 따라 결정될 수 있고, 데이터의 캐시 값이 미리 설정된 조건을 만족하는지 여부는 결정된 데이터 캐시 값에 따라 결정된다. 도 2를 참조하면, IO 캐시 값 식별자는 액세스 요청에 대응하는 논리 파티션이 논리 파티션-캐시 값 매핑 테이블에 기초하여 높은 데이터 캐시 값 또는 낮은 데이터 캐시 값에 대응하는지 여부를 식별할 수 있다.
도 2를 참조하면, IO 디스패처는 IO 캐시 값 식별자의 식별 결과에 기초하여 특정 디스패칭 방식을 결정할 수 있다. 예를 들어, 다시 도 1을 참조하면, 단계(S103)에서, 데이터의 캐시 값이 미리 설정된 조건을 만족하는 경우, 액세스 요청에 대응하는 데이터가 캐시 장치로부터 액세스된다고 결정된다.
단계(S104)에서, 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우, 액세스 요청에 대응하는 데이터가 스토리지 장치로부터 액세스된다고 결정한다.
일 예로, 액세스 요청이 기록 요청일 때, 데이터의 캐시 값이 미리 설정된 조건을 만족하는 경우, 기록 요청에 대응하는 데이터가 캐시 장치에 기록된다고 결정하고, 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우, 기록 요청에 대응하는 데이터가 스토리지 장치에 기록된다고 결정한다.
일 예로, 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우에, 기록 요청에 대응하는 데이터가 스토리지 장치에 기록된 후에, 캐시 장치의 데이터에 대응하는 논리 파티션에 대응하는 데이터가 있으면 캐시 내의 논리 파티션에 대응하는 데이터는 무효화될 수 있다.
예를 들어, 기록 요청에 대응하는 논리 파티션(또는 기록 요청에 대응하는 데이터)이 높은 데이터 캐시 값을 갖는 경우, 데이터는 캐시 장치에 기록된다. 데이터에 자주 액세스할 가능성이 높기 때문에, 캐시 장치에 데이터를 기록하면 데이터 판독 및 기록을 위한 대기 시간을 줄일 수 있다. 기록 요청(또는 기록 요청에 대응하는 데이터)에 대응하는 논리 파티션이 낮은 데이터 캐시 값을 갖는 경우, 데이터는 백엔드 스토리지 장치에 기록된다. 데이터에 자주 액세스하지 않을 가능성이 높기 때문에, 백엔드 스토리지 장치에 데이터를 기록하면 캐시 오염을 피할 수 있다.
일 예로, 액세스 요청이 판독 요청일 때, 데이터의 캐시 값이 미리 설정된 조건을 만족하는 경우, 판독 요청에 대응하는 데이터가 캐시 장치로부터 판독된 것으로 결정되고, 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우, 판독 요청에 대응하는 데이터가 스토리지 장치로부터 판독된 것으로 결정된다.
예를 들어, 판독 요청에 대응하는 데이터(또는 데이터에 대응하는 논리 파티션)의 캐시 값이 높을 때, 데이터가 캐시 장치에 있을 가능성이 있으므로, 캐시 장치에서 직접 판독할 때 데이터가 판독될 가능성이 있다. 판독 요청에 대응하는 데이터(또는 데이터에 대응하는 논리 파티션)의 캐시 값이 낮을 때, 데이터가 백엔드 스토리지 장치에 있을 가능성이 있으므로, 백엔드 스토리지 장치에서 데이터를 직접 판독하는 경우, 데이터를 판독할 가능성이 있으므로, 데이터 판독을 위한 시간 지연을 피할 수 있다.
일 예로, 데이터의 캐시 값이 미리 설정된 조건을 만족하고, 판독 요청에 대응하는 데이터가 캐시 장치에서 적중하지 않는 경우, 판독 요청에 대응하는 데이터가 스토리지 장치로부터 판독된 것으로 결정된다.
일 예로, 판독 요청에 대응하는 데이터는 캐시 장치에도 기록될 수 있다. 데이터는 데이터 캐시 값이 높기 때문에, 데이터는 캐시 장치에 기록되고, 데이터가 다음에 판독될 때 캐시 장치에서 데이터를 빠르게 판독할 수 있으므로, 데이터 판독에 대한 시간 지연을 줄일 수 있다.
상술한 바와 같이, 데이터 캐싱 방법은 자주 액세스되는 데이터는 성능이 좋은 캐시 장치에 저장하고, 자주 액세스하지 않는 데이터는 백엔드 스토리지 장치에 저장할 수 있으므로, 캐시 장치의 데이터가 자주 액세스되는 데이터인지 확인할 수 있다. 데이터를 판독할 때, 데이터가 높은 데이터 캐시 값을 갖는 경우 캐시 장치에서 데이터를 판독하고, 데이터가 낮은 데이터 캐시 값을 갖는 경우 백엔드 스토리지 장치에서 데이터를 판독한다. 데이터는 데이터의 캐시 값에 따라 저장되기 때문에, 판독할 데이터가 바로 적중될 가능성이 높아 데이터 판독 및 기록 시간 지연을 크게 줄일 수 있고, 이에 따라 스토리지 시스템의 성능을 향상시킬 수 있다.
이상 도 1 내지 도 3을 참조하여 본 발명의 일 실시 예에 따른 데이터 캐싱 방법을 설명하였다. 데이터 캐싱을 위한 장치, 데이터 스토리지 시스템, 및 본 발명의 일 실시 예에 따른 데이터 스토리지 장치는 도 4 내지 도 8을 참조하여 후술한다.
도 4는 본 발명의 일 실시 예에 따른 데이터 캐싱 장치(400)의 구성을 나타내는 블록도이다.
도 4를 참조하면, 데이터 캐싱 장치(400)는 획득 유닛(401) 및 결정 유닛(402)을 포함할 수 있다. 당업자라면 데이터 캐싱 장치(400)가 다른 구성요소를 더욱 포함할 수 있으며 데이터 캐싱 장치(400)의 구성요소들 중 적어도 하나는 분할되거나 결합될 수 있다는 것이 이해되어야 한다. 획득 유닛(401) 및 결정 유닛(402)은 다양한 프로세서, 컨트롤러 및 스토리지 장치를 포함하여, 하나 이상의 하드웨어 회로에 의해 구현될 수 있다.
일 예로서, 획득 유닛(401)은 액세스 요청에 응답하여 스토리지 장치에 대한 액세스 요청에 대응하는 데이터의 캐시 값을 획득하도록 구성될 수 있다.
일 예로서, 결정 유닛(402)은 데이터의 캐시 값이 미리 설정된 조건을 만족하는 경우 액세스 요청에 대응하는 데이터를 캐시 장치로부터 액세스하기 결정하고, 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우 액세스 요청에 대응하는 데이터를 스토리지 장치로부터 액세스하기로 결정하도록 구성될 수 있다.
일 예로서, 스토리지 장치는 복수의 논리 파티션으로 분할될 수 있고, 각각의 논리 파티션은 대응하는 데이터 캐시 값을 가질 수 있다. 획득 유닛(401)은 액세스 요청에 대응하는 데이터의 논리 주소가 속하는 논리 파티션을 결정하고, 액세스 요청에 대응하는 데이터의 캐시 값으로서 데이터의 논리 주소가 속하는 논리 파티션의 데이터 캐시 값을 획득하도록 구성될 수 있다.
일 예로, 액세스 요청에 대응하는 데이터의 캐시 값은 데이터의 논리 주소가 속하는 논리 파티션의 이력 액세스 정보에 따라 획득된다.
일 예로, 액세스 요청이 기록 요청인 경우, 결정 유닛(402)은 데이터의 캐시 값이 사전 설정된 조건을 만족하는 경우 기록 요청에 대응하는 데이터를 캐시 장치에 기록하게 결정하고; 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우 기록 요청에 대응하는 데이터를 스토리지 장치에 기록하게 결정하도록 구성될 수 있다.
일 예로, 액세스 요청이 판독 요청인 경우, 결정 유닛(402)은 데이터의 캐시 값이 미리 설정된 조건을 만족하는 경우 캐시 장치로부터의 판독 요청에 대응하는 데이터를 판독하기로 결정하고, 데이터의 캐시 값이 미리 설정된 조건을 만족하지 않는 경우 스토리지 장치로부터의 판독 요청에 대응하는 데이터를 판독하기로 결정하도록 구성될 수 있다.
일 예로, 결정 유닛(402)은 데이터의 캐시 값이 미리 설정된 조건을 만족하고 판독 요청에 대응하는 데이터가 캐시 장치에서 적중되지 않는 경우, 캐시 장치로부터의 판독 요청에 대응하는 데이터를 판독하기로 결정하도록 더욱 구성될 수 있다.
일 예로, 데이터 캐싱 장치(400)는 판독 요청에 대응하는 데이터를 캐시 장치에 기입하는 기입부를 더 포함할 수 있다.
일 예로, 획득 유닛(401)은 데이터의 논리 주소가 속하는 논리 파티션의 데이터 캐시 값을 예측하기 위해 데이터의 논리 주소가 속하는 논리 파티션의 이력 액세스 정보 및 동일한 기간 내의 다른 논리 파티션의 이력 액세스 정보를 훈련된 예측자에 입력하도록 구성되고, 여기서 다른 논리 파티션은 액세스 요청에 대응하는 데이터의 논리 주소가 속하는 논리 파티션에 인접한 미리 설정된 수의 논리 파티션이다.
본 발명의 일 실시 예에 따른 데이터 캐싱 장치는 자주 액세스되는 데이터를 성능이 좋은 캐시 장치(예를 들어, SCM, Samsung Z-SSD, PRAM, SLC SSD 등)에 저장할 수 있으며, 백엔드 스토리지 장치(예를 들어, MTC SSD, TLC SSD, QLC SSD, HDD 등)에서 자주 액세스하지 않는 데이터를 저장할 수 있으므로, 이에 따라 캐시 장치의 데이터가 자주 액세스되는 데이터인지 확인할 수 있다. 데이터를 판독할 때, 데이터의 데이터 캐시 값이 높으면 캐시 장치에서 데이터를 판독하고, 데이터의 데이터 캐시 값이 낮으면 백엔드 스토리지 장치에서 데이터를 판독한다. 데이터의 캐시 값에 따라 데이터가 저장되기 때문에, 판독할 데이터가 바로 적중할 가능성이 있으므로 데이터 판독 및 기록 시간 지연을 크게 줄일 수 있고, 이에 따라 스토리지 시스템의 성능을 향상시킬 수 있다.
도 5는 본 발명의 일 실시 예에 따른 스토리지 장치가 적용된 시스템(1000)의 개략도이다.
도 5의 시스템(1000)은 휴대형 통신 단말(예를 들어, 휴대폰), 스마트폰, 태블릿 PC(개인용 컴퓨터), 웨어러블 기기, 헬스케어 기기, 사물 인터넷(IOT) 기기 등과 같은 모바일 시스템일 수 있다. 그러나, 도 5의 시스템(1000)은 모바일 시스템에 반드시 한정되는 것은 아니고 PC, 랩톱 컴퓨터, 서버, 미디어 플계층 또는 자동차 장치(예를 들어, 내비게이션 장치)일 수 있다.
도 5를 참조하면, 시스템(1000)은 메인 프로세서(1100), 메모리(예를 들어, 1200a, 1200b), 스토리지 장치(예를 들어, 1300a, 1300b)를 포함할 수 있다. 또한, 시스템(1000)은 이미지 캡처 장치(1410), 사용자 입력 장치(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전원 공급 장치(1470) 및 연결 인터페이스(1480) 중 적어도 하나를 포함할 수 있다.
메인 프로세서(1100)는 시스템(1000)에 포함된 다른 구성요소들의 동작을 포함하여 시스템(1000)의 모든 동작을 제어할 수 있다. 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서로 구현될 수 있다.
메인 프로세서(1100)는 적어도 하나의 CPU 코어(1110)를 포함할 수 있고, 메모리(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하도록 구성된 컨트롤러(1120)를 더 포함할 수 있다. 일부 실시 예에서, 메인 프로세서(1100)는 인공 지능(AI) 데이터 연산과 같은 고속 데이터 연산을 위한 전용 회로인 가속기(1130)를 더 포함할 수 있다. 가속기(1130)는 그래픽 처리 유닛(GPU), 신경 처리 유닛(NPU) 및/또는 데이터 처리 유닛(DPU)을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성요소와 물리적으로 분리된 칩으로 구현될 수 있다.
메모리(1200a, 1200b)는 시스템(1000)의 주기억 장치로 사용될 수 있다. 메모리(1200a, 1200b) 각각은 정적 랜덤 액세스 메모리(SRAM) 및/또는 동적 랜덤 액세스 메모리(DRAM)과 같은 휘발성 메모리를 포함할 수 있지만, 메모리(1200a, 1200b) 각각은 플래시 메모리, PRAM(stage-change RAM) 및/또는 RRAM(resistive RAM)과 같은 비휘발성 메모리를 포함할 수 있다. 메모리(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지로 구현될 수 있다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부에 관계없이 데이터를 저장하는 비휘발성 스토리지 장치로서, 메모리(1200a, 1200b)보다 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 각각 스토리지 컨트롤러(1310a, 1310b)의 제어를 통해 데이터를 저장하도록 구성된 스토리지 컨트롤러(STRG CTRL)(1310a, 1310b)와 비휘발성 메모리(NVM)(1320a, 1320b)을 포함할 수 있다. 예를 들어, NVM(1320a, 1320b)은 PRAM 및/또는 RRAM과 같은, 2차원(2D) 구조, 3차원(3D) V-NAND 구조, 또는 그 외 유형의 NVM을 갖는 플래시 메모리를 포함할 수 있다.
시스템(1000) 내에서, 스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와 물리적으로 분리되거나 메인 프로세서(1100)와 동일한 패키지로 구현될 수 있다. 게다가, 스토리지 장치(1300a 및 1300b)는 후술되는 연결 인터페이스(1480)와 같은 인터페이스를 통해 시스템(100)의 다른 구성요소와 착탈 가능하게 결합될 수 있는 솔리드 스테이트 장치(SSD) 또는 메모리 카드와 같은 스토리지 장치를 가질 수 있다. 스토리지 장치(1300a, 1300b)는 범용 플래시 스토리지(UFS), 임베디드 멀티미디어 카드(eMMC), 비휘발성 메모리 익스프레스(NVMe) 등의 표준 프로토콜이 적용되는 장치이지만, 이에 한정되지 않는다.
이미지 캡처 장치(1410)는 정지 이미지 또는 동영상 이미지를 캡처할 수 있다. 이미지 캡처 장치(1410)는 카메라, 캠코더 및/또는 웹캠을 포함할 수 있다.
사용자 입력 장치(1420)는 시스템(1000)의 사용자로부터 입력되는 각종 데이터를 수신할 수 있으며, 터치 패드, 키패드, 키보드, 마우스 및/또는 마이크로폰을 포함할 수 있다.
센서(1430)는 시스템(1000) 외부로부터 획득될 수 있는 다양한 유형의 물리적 특성을 검출할 수 있고, 감지된 물리적 특성을 전기 신호로 변환한다. 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서 및/또는 자이로스코프 센서를 포함할 수 있다.
통신 장치(1440)는 다양한 통신 프로토콜에 따라 시스템(1000) 외부의 다른 장치들 간에 신호를 송수신할 수 있다. 통신 장치(1440)는 안테나, 송수신기 및/또는 모뎀을 포함할 수 있다.
디스플레이(1450) 및 스피커(1460)는 시스템(1000)의 사용자에게 시각 정보 및 청각 정보를 각각 출력하도록 구성된 출력 장치로서 기능할 수 있다.
전원 공급 장치(1470)는 시스템(1000)에 내장된 배터리 및/또는 외부 전원으로부터 공급되는 전원을 적절하게 변환할 수 있고, 변환된 전력을 시스템(1000)의 각 구성요소에 공급할 수 있다.
연결 인터페이스(1480)는 시스템(1000)과 시스템(1000)에 연결되어 시스템(1000)과 데이터를 송수신할 수 있는 외부 장치 간에 연결을 제공할 수 있다. 연결 인터페이스(1480)는 첨단 기술 부착(ATA), 직렬 ATA(SATA), 외부 SATA(e-SATA), 스몰 컴퓨터 스몰 인터페이스(SCSI), 직렬 연결 SCSI(SAS), 주변 부품 상호 연결(PCI), PCI 익스프레스(PCIe), NVMe, IEEE 1394, 범용 직렬 서브(USB) 인터페이스, 시큐어 디지털(SD) 카드 인터페이스, 멀티미디어 카드(MMC) 인터페이스, eMMC 인터페이스, UFS 인터페이스, 임베디드 UFS(eUFS) 인터페이스 및 컴팩트 플래시(CF) 카드 인터페이스와 같은, 다양한 인터페이스 방식으로 구현될 수 있다.
예를 들어, NVM(1320a, 1320b)은 고속 스토리지 장치인 제1 스토리지 장치 및 제1 스토리지 장치보다 느린 제2 스토리지 장치를 포함할 수 있다. 제2 스토리지 장치는 제1 스토리지 장치보다 더 큰 용량을 가질 수 있다. 예를 들어, 제1 스토리지 장치는 SCM, Samsung Z-SSD, PRAM, SLC SSD 등일 수 있고, 제2 스토리지 장치는 MTC SSD, TLC SSD, QLC SSD, HDD 등일 수 있다. 제1 스토리지 장치는 캐시 장치일 수 있고, 제2 스토리지 장치는 스토리지 장치일 수 있다. 메인 프로세서(1100) 및/또는 스토리지 컨트롤러(1310a, 1310b)는 상술된 바와 같이 데이터 캐싱을 위한 방법과 동일한 방식으로 불휘발성 메모리(1320a, 1320b)의 정보를 판독하여 저장하도록 시스템(1000)을 제어할 수 있다.
도 6은 본 발명의 일 실시 예에 따른 호스트 스토리지 시스템(10)의 블록도이다.
호스트 스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 더 나아가, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 NVM(220)을 포함할 수 있다. 일 실시 예에 따르면, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터 또는 스토리지 장치(200)로부터 수신한 데이터를 임시로 저장하도록 구성된 버퍼 메모리로 기능할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 응답하여 데이터를 저장하도록 구성된 저장 매체를 포함할 수 있다. 일 예로, 스토리지 장치(200)는 SSD, 임베디드 메모리 및 착탈식 외부 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe 표준을 따르는 장치일 수 있다. 스토리지 장치(200)가 임베디드 메모리 또는 외부 메모리인 경우, 스토리지 장치(200)는 UFS 표준 또는 eMMC 표준을 따르는 장치일 수 있다. 호스트(100) 및 스토리지 장치(200) 각각은 채택된 표준 프로토콜에 따라 패킷을 생성하여 전송할 수 있다.
스토리지 장치(200)의 NVM(220)이 플래시 메모리를 포함하는 경우, 플래시 메모리는 2D NAND 메모리 어레이 또는 3D(또는 수직) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다양한 다른 종류의 NVM을 포함할 수 있다. 예를 들어, 스토리지 장치(200)는 자기 RAM(MRAM), 스핀-전달 토크(MRAM), 전도성 브리징 RAM(CBRAM), 강유전체 RAM(FRAM), PRAM, RRAM 및 기타 다양한 종류의 메모리를 포함할 수 있다.
일 실시 예에 따르면, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 대안적으로, 일부 실시 예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 예로서, 호스트 컨트롤러(110)는 애플리케이션 프로세서(AP)에 포함된 복수의 모듈 중 어느 하나일 수 있다. AP는 시스템 온 칩(SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 AP에 포함된 임베디드 메모리이거나 AP 외부에 위치하는 NVM 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 호스트 메모리(120)의 버퍼 영역의 데이터(예를 들어, 기록 데이터)를 NVM(220)에 저장하는 동작 또는 NVM(220)의 데이터(예를 들어, 판독 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 CPU(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 계층(FTL)(214), 패킷 관리자(215), 버퍼 메모리(216), 오류 정정 코드(ECC) 엔진(217), 및 고급 암호화 표준(AES) 엔진(218)을 더 포함할 수 있다. 스토리지 컨트롤러(210)는 FTL(214)이 로딩되는 작업 메모리를 더 포함할 수 있다. CPU(213)는 FTL(214)을 실행하여 NVM(220)에 대한 데이터 기록 및 판독 동작을 제어할 수 있다.
호스트 인터페이스(211)는 호스트(100)와 패킷을 송수신할 수 있다. 호스트(100)에서 호스트 인터페이스(211)로 전송되는 패킷은 NVM(220)에 기록하기 위한 명령 또는 데이터를 포함할 수 있다. 호스트 인터페이스(211)에서 호스트(100)로 전송되는 패킷은 NVM(220)으로부터 판독된 명령 또는 데이터에 대한 응답을 포함할 수 있다. 메모리 인터페이스(212)는 NVM(220)에 기록될 데이터를 NVM(220)으로 전송하거나 NVM(220)으로부터 판독된 데이터를 수신할 수 있다. 메모리 인터페이스(212)는 토글(Toggle) 또는 개방형 NAND 플래시 인터페이스(ONFI)와 같은 표준 프로토콜을 따르도록 구성될 수 있다.
FTL(214)은 주소 매핑 동작, 웨어 레벨링 동작, 가비지 컬렉션 동작과 같은 다양한 기능을 수행할 수 있다. 주소 매핑 동작은 호스트(100)로부터 수신한 논리 주소를 NVM(220)에 실제로 데이터를 저장하는데 사용되는 물리 주소로 변환하는 동작일 수 있다. 웨어 레벨링은 NVM(220)의 블록을 균일하게 사용하여 특정 블록의 과도한 열화를 방지하는 기술일 수 있다. 예로서, 웨어 레벨링 동작은 물리적 블록의 소거 카운트의 균형을 맞추는 펌웨어 기술을 사용하여 구현될 수 있다. 가비지 컬렉션 동작은 기존 블록의 유효한 데이터를 새 블록에 복사한 후 기존 블록을 삭제함으로써 NVM(220)에서 가용 용량을 확보하기 위한 기술일 수 있다. .
패킷 매니저(215)는 호스트(100)에 동의한 인터페이스의 프로토콜에 따라 패킷을 생성하거나, 호스트(100)로부터 수신한 패킷에서 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(216)는 NVM(220)에 기록될 데이터 또는 NVM(220)으로부터 판독할 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210)에 포함되는 구성요소일 수 있지만, 버퍼 메모리(216)는 저장 컨트롤러(210) 외부에 있을 수 있다.
ECC 엔진(217)은 NVM(220)으로부터 판독된 판독 데이터에 대해 오류 검출 및 정정 동작을 수행할 수 있다. 더 구체적으로, ECC 엔진(217)은 NVM(220)에 기록될 기록 데이터에 대한 패리티 비트를 생성할 수 있고, 생성된 패리티 비트는 기록 데이터와 함께 NVM(220)에 저장될 수 있다. NVM(220)에서 데이터를 판독하는 동안, ECC 엔진(217)은 판독 데이터와 함께, NVM(220)으로부터 판독된 패리티 비트를 이용하여 판독 데이터의 오류를 정정하여, 오류 정정 판독 데이터를 출력할 수 있다.
AES 엔진(218)은 대칭 키 알고리즘을 이용하여 스토리지 컨트롤러(210)에 입력되는 데이터에 대해 암호화 동작 및 복호화 동작 중 적어도 하나를 수행할 수 있다.
일 실시 예에 따르면, NVM(220)은 고속 스토리지 장치인 제1 스토리지 장치 및 제1 스토리지 장치보다 느린 제2 스토리지 장치를 포함할 수 있다. 제2 스토리지 장치는 제1 스토리지 장치보다 더 큰 용량을 가질 수 있다. 예를 들어, 제1 스토리지 장치는 SCM, Samsung Z-SSD, PRAM, SLC SSD 등일 수 있고, 제2 스토리지 장치는 MTC SSD, TLC SSD, QLC SSD, HDD 등일 수 있다. 제1 스토리지 장치는 캐시 장치일 수 있고, 제2 스토리지 장치는 스토리지 장치일 수 있다. 호스트(100) 및/또는 스토리지 컨트롤러(210)는 상술한 데이터 캐싱 방법과 동일한 방식으로 NVM(220)에 정보를 판독하여 저장하도록 호스트 스토리지 시스템(10)을 제어할 수 있다.
도 7은 일 실시 예에 따른 UFS 시스템(2000)의 블록도이다.
UFS 시스템(2000)은 합동 전자 장치 엔지니어링 협의회(JEDEC)에 의해 발표된 UFS 표준을 따르는 시스템일 수 있으며 UFS 호스트(2100), UFS 장치(2200) 및 UFS 인터페이스(2300)를 포함한다. 도 5의 시스템(1000)에 대한 상기 설명은 도 7의 다음 설명과 충돌하지 않는 범위 내에서 도 7의 UFS 시스템(2000)에도 적용될 수 있다.
도 7을 참조하면, UFS 호스트(2100)는 UFS 인터페이스(2300)를 통해 UFS 장치(2200)와 연결될 수 있다. 도 5의 메인 프로세서(1100)가 AP이면, UFS 호스트(2100)는 AP의 일부로 구현될 수 있다. UFS 호스트 컨트롤러(2110) 및 호스트 메모리(2140)는 각각 도 5의 메인 프로세서(1100) 및 메모리(1200a, 1200b)의 컨트롤러(1120)에 대응할 수 있다. UFS 장치(2200)는 도 5의 스토리지 장치(1300a, 1300b)에 대응할 수 있다. UFS 장치 컨트롤러(2210) 및 NVM(2220)은 각각 도 5의 스토리지 컨트롤러(1310a, 1310b) 및 NVM(1320a, 1320b)에 대응할 수 있다.
UFS 호스트(2100)는 UFS 호스트 컨트롤러(2110), 애플리케이션(2120), UFS 드라이버(2130), 호스트 메모리(2140) 및 UFS 인터커넥트(UIC) 계층(2150)을 포함할 수 있다. UFS 장치(2200)는 UFS 장치 컨트롤러(2210), NVM(2220), 스토리지 인터페이스(2230), 장치 메모리(2240), UIC 계층(2250), 조정기(2260)를 포함할 수 있다. NVM(2220)은 복수의 메모리 유닛(2221)을 포함할 수 있다. 각각의 메모리 유닛(2221)은 2차원 구조 또는 3차원 구조를 갖는 V-낸드 플래시 메모리를 포함할 수 있지만, 메모리 유닛(2221) 각각은 PRAM 및/또는 RRAM과 같은 다른 종류의 NVM을 포함할 수 있다. UFS 장치 컨트롤러(2210)는 스토리지 인터페이스(2230)를 통해 NVM(2220)에 연결될 수 있다. 저장 인터페이스(2230)는 토글 또는 ONFI와 같은 표준 프로토콜을 따르도록 구성될 수 있다.
어플리케이션(2120)은 UFS 장치(2200)의 기능을 사용하기 위해 UFS 장치(2200)와 통신하고자 하는 프로그램을 의미할 수 있다. 애플리케이션(2120)은 UFS 장치(2200)에 대한 입출력(I/O) 동작을 위해 UFS 드라이버(2130)에 입출력 요청(IOR)을 전송할 수 있다. IOR은 데이터 판독 요청, 데이터 저장(또는 기록) 요청 및/또는 데이터 소거(또는 폐기) 요청을 의미할 수 있으며, 이에 제한되지 않는다.
UFS 드라이버(2130)는 UFS 호스트 컨트롤러 인터페이스(UFS-HCI)를 통해 UFS 호스트 컨트롤러(2110)를 관리할 수 있다. UFS 드라이버(2130)는 어플리케이션(2120)에 의해 생성된 IOR을 UFS 표준에 의해 정의된 UFS 명령로 변환하고, UFS 명령을 UFS 호스트 컨트롤러(2110)로 전송할 수 있다. 하나의 IOR은 복수의 UFS 명령으로 변환될 수 있다. UFS 명령은 SCSI 표준에 의해 정의될 수 있지만, UFS 명령은 UFS 표준 전용의 명령일 수 있다.
UFS 호스트 컨트롤러(2110)는 UFS 드라이버(2130)에 의해 변환된 UFS 명령을 UIC 계층(2150) 및 UFS 인터페이스(2300)를 통해 UFS 장치(2200)의 UIC 계층(2250)으로 전송할 수 있다. UFS 명령의 전송 동안, UFS 호스트 컨트롤러(2110)의 UFS 호스트 레지스터(2111)는 명령 큐(CQ)의 역할을 할 수 있다.
UFS 호스트(2100) 측의 UIC 계층(2150)은 모바일 인더스트리 프로세서 인터페이스((MIPI) M-PHY(2151) 및 MIPI UniPro(2152)를 포함할 수 있으며, UFS 장치(2200) 측의 UIC 계층(2250)은 또한 MIPI M-PHY(2251) 및 MIPI UniPro(2252)를 포함할 수 있다.
UFS 인터페이스(2300)는 기준 클럭 신호(REF_CLK)를 전송하도록 구성되는 라인, UFS 장치(2200)에 대해 하드웨어 리셋 신호(RESET_n)를 전송하도록 구성된 라인, 한 쌍의 차동 입력 신호(DIN_t 및 DIN_c)를 전송하도록 구성된 한 쌍의 라인, 및 한 쌍의 차동 출력 신호(DOUT_t 및 DOUT_c)를 전송하도록 구성된 한 쌍의 라인을 포함할 수 있다.
UFS 호스트(2100)로부터 UFS 장치(2200)로 제공되는 기준 클럭 신호(REF_CLK)의 주파수는 19.2MHz, 26MHz, 38.4MHz, 52MHz 중 하나일 수 있으나, 이에 한정되는 것은 아니다. UFS 호스트(2100)는 동작 중, 즉 UFS 호스트(2100)와 UFS 장치(2200) 사이의 데이터 송수신 동작 중에 기준 클럭 신호(REF_CLK)의 주파수를 변경할 수 있다. UFS 장치(2200)는 위상 고정 루프(PLL)을 이용하여 UFS 호스트(2100)로부터 제공되는 기준 클럭 신호(REF_CLK)로부터 다양한 주파수를 갖는 클록 신호를 생성할 수 있다. 또한, UFS 호스트(2100)는 기준 클럭 신호(REF_CLK)의 주파수를 이용하여 UFS 호스트(2100)와 UFS 장치(2200) 간의 데이터 속도를 설정할 수 있다. 즉, 데이터 속도는 기준 클럭 신호(REF_CLK)의 주파수에 따라 결정될 수 있다.
UFS 인터페이스(2300)는 복수의 레인을 지원할 수 있으며, 각각의 레인은 한 쌍의 차동 라인으로 구현될 수 있다. 예를 들어, UFS 인터페이스(2300)는 적어도 하나의 수신 레인과 적어도 하나의 전송 레인을 포함할 수 있다. 도 7에서, 한 쌍의 차동 입력 신호(DIN_T 및 DIN_C)를 전송하도록 구성된 한 쌍의 라인은 수신 레인을 구성할 수 있고, 한 쌍의 차동 출력 신호(DOUT_T, DOUT_C)를 전송하도록 구성된 한 쌍의 라인은 전송 레인을 구성할 수 있다. 하나의 전송 레인과 하나의 수신 레인이 도 7에 도시되어 있지만, 전송 레인의 수 및 수신 레인의 수는 변경될 수 있다.
수신 레인과 전송 레인은 직렬 통신 방식에 따라 데이터를 전송할 수 있다. 수신 레인과 전송 레인이 분리된 구조로 인해 UFS 호스트(2100)와 UFS 장치(2200) 간의 전이중 통신이 가능해질 수 있다. 즉, 수신 레인을 통해 UFS 호스트(2100)로부터 데이터를 수신하면서, UFS 장치(2200)는 전송 레인을 통해 UFS 호스트(2100)로 데이터를 전송할 수 있다. 게다가, UFS 호스트(2100)에서 UFS 장치(2200)로의 제어 데이터(예를 들어, 명령) 및 UFS 호스트(2100)가 UFS 장치(2200)의 NVM(2220)에 저장되거나 이로부터 판독될 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 따라서, UFS 호스트(2100)와 UFS 장치(2200) 사이에, 한 쌍의 수신 레인과 한 쌍의 전송 레인 외에 데이터 전송을 위한 별도의 레인을 더 제공할 필요가 없다.
UFS 장치(2200)의 UFS 장치 컨트롤러(2210)는 UFS 장치(2200)의 모든 동작을 제어할 수 있다. UFS 장치 컨트롤러(2210)는 논리 데이터 스토리지 장치인, 논리 유닛(LU)(2211)를 이용하여 NVM(2220)을 관리할 수 있다. LU(2211)의 개수는 8개일 수 있지만, 이에 제한되지 않는다. UFS 장치 컨트롤러(2210)는 FTL을 포함하고 FTL의 주소 매핑 정보를 사용하여 UFS 호스트(2100)로부터 수신된 논리 데이터 주소(예를 들어, 논리 블록 주소(LBA))를 물리 데이터 주소(예를 들어, 물리 블록 주소(PBA))로 변환할 수 있다. UFS 시스템(2000)에서 사용자 데이터를 저장하는 논리 블록은 소정 범위의 크기를 가질 수 있다. 예를 들어, 논리 블록의 최소 크기는 4Kbyte로 설정될 수 있다.
UFS 호스트(2100)로부터의 명령이 UIC 계층(2250)을 통해 UFS 장치(2200)로 인가되면, UFS 장치 컨트롤러(2210)는 명령에 응답하여 동작을 수행하고, 동작이 완료되면 완료 응답을 UFS 호스트(2100)로 전송할 수 있다.
예를 들어, UFS 호스트(2100)가 UFS 장치(2200)에 사용자 데이터를 저장하고자 하는 경우, UFS 호스트(2100)는 UFS 장치(2200)로 데이터 저장 명령을 전송할 수 있다. UFS 호스트(2100)가 사용자 데이터를 수신할 준비가 되었음을 나타내는 응답('전송 준비' 응답)이 UFS 장치(2200)로부터 수신되면, UFS 호스트(2100)는 사용자 데이터를 UFS 장치(2200)로 전송할 수 있다. UFS 장치 컨트롤러(2210)는 상기 수신된 사용자 데이터를 장치 메모리(2240)에 임시로 저장하고, 장치 메모리(2240)에 임시로 저장된 사용자 데이터를 FTL의 주소 매핑 정보에 기초하여 NVM(2220)의 선택된 위치에 저장할 수 있다.
다른 예로, UFS 호스트(2100)가 UFS 장치(2200)에 저장된 사용자 데이터를 판독하려는 경우, UFS 호스트(2100)는 데이터 판독 명령을 UFS 장치(2200)로 전송할 수 있다. 명령을 받은 UFS 장치 컨트롤러(2210)는, 데이터 판독 명령에 기초하여 NVM(2220)으로부터 사용자 데이터를 판독하고, 판독한 사용자 데이터를 장치 메모리(2240)에 임시 저장할 수 있다. 판독 동작 동안, UFS 장치 컨트롤러(2210)는 내부에 내장된 ECC 엔진을 이용하여 판독된 사용자 데이터의 오류를 검출하여 정정할 수 있다. 보다 구체적으로, ECC 엔진은 NVM(2220)에 기록될 기록 데이터에 대한 패리티 비트를 생성할 수 있으며, 생성된 패리티 비트는 기록 데이터와 함께 NVM(2220)에 저장될 수 있다. NVM(2220)로부터 데이터를 판독하는 동안, ECC 엔진은 판독 데이터와 함께 NVM(2220)으로부터 판독된 패리티 비트를 사용하여 판독 데이터의 오류를 정정할 수 있고, 오류가 수정된 판독 데이터를 출력한다.
또한, UFS 장치 컨트롤러(2210)는 장치 메모리(2240)에 임시로 저장된 사용자 데이터를 UFS 호스트(2100)로 전송할 수 있다. 또한, UFS 장치 컨트롤러(2210)는 AES 엔진을 더 포함할 수 있다. AES 엔진은 대칭 키 알고리즘을 이용하여 UFS 장치 컨트롤러(2210)로 전송되는 데이터에 대해 암호화 동작 및 복호화 동작 중 적어도 하나를 수행할 수 있다.
UFS 호스트(2100)는 공통 큐 역할을 할 수 있는 UFS 호스트 레지스터(2111)에 UFS 장치(2200)로 전송될 명령을 순차적으로 저장하고, 이 명령을 UFS 장치(2200)로 순차적으로 전송할 수 있다. 이 경우, 이전에 전송된 명령이 아직 UFS 장치(2200)에 의해 처리되고 있는 동안, 즉 이전에 전송된 명령이 UFS 장치(2200)에 의해 처리되었다는 알림을 수신하기 전에, UFS 호스트(2100)는 CQ에서 대기 중인 다음 명령을 UFS 장치(2200)로 전송할 수 있다. 따라서, UFS 장치(2200)는 이전에 전송된 명령을 처리하는 동안 UFS 호스트(2100)로부터 다음 명령을 수신할 수도 있다. CQ에 저장할 수 있는 명령의 최대 수(또는 큐 깊이)는 예를 들어 32일 수 있다. 또한, CQ는 큐에 저장된 명령 라인의 시작과 끝이 헤드 포인터와 테일 포인터로 표시되는 순환 큐로 구현될 수 있다.
복수의 메모리 유닛(2221) 각각은 메모리 셀 어레이 및 메모리 셀 어레이의 동작을 제어하도록 구성된 제어 회로를 포함할 수 있다. 메모리 셀 어레이는 2D 메모리 셀 어레이 또는 3D 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함할 수 있다. 각 메모리 셀은 1비트 정보를 저장하도록 구성된 단일 레벨 셀(SLC)이지만, 각각의 메모리 셀은 다단계 셀(MLC), 트리플 레벨 셀(TLC) 및 4중 레벨 셀(QLC)과 같은, 2비트 이상의 정보를 저장하도록 구성된 셀일 수 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 수직으로 배향되어 다른 메모리 셀 상에 위치하는 수직 낸드 스트링을 포함할 수 있다.
UFS 장치(2200)에 전원 전압으로 전압 VCC, VCCQ, VCCQ2이 인가될 수 있다. 전압 VCC은 UFS 장치(2200)의 주 전원 전압으로 2.4V ~ 3.6V 범위일 수 있다. 전압 VCCQ은 UFS 장치 컨트롤러(2210)에 저전압을 공급하기 위한 전원 전압으로 1.14V ~ 1.26V 범위일 수 있다. 전압 VCCQ2은 전압 VCC 보다 낮고 전압 VCCQ 보다 높은 전압을 MIPI M-PHY(2251)와 같은 I/O 인터페이스에 공급하기 위한 전원 전압일 수 있으며, 1.7V ~ 1.95V 범위에 있다. 전원 전압은 조정기(2260)를 통해 UFS 장치(2200)의 각 구성 요소에 공급될 수 있다. 조정기(2260)는 전술한 서로 다른 전원 전압에 각각 연결된 단위 조정기의 세트로 구현될 수 있다.
예를 들어, NVM(2220)은 고속 스토리지 장치인 제1 스토리지 장치 및 제1 스토리지 장치보다 느린 제2 스토리지 장치를 포함할 수 있다. 제2 스토리지 장치는 제1 스토리지 장치보다 더 큰 용량을 가질 수 있다. 예를 들어, 제1 스토리지 장치는 SCM, Samsung Z-SSD, PRAM, SLC SSD 등이 될 수 있고, 제2 스토리지 장치는 MTC SSD, TLC SSD, QLC SSD, HDD 등이 될 수 있다. 제1 스토리지 장치는 캐시 장치일 수 있고, 제2 스토리지 장치는 스토리지 장치일 수 있다. UFS 호스트(2100) 및/또는 UFS 장치(2200)는 상술한 바와 같이 데이터 캐싱 방법을 실행하도록 UFS 시스템(2000)을 제어하도록 구성될 수 있다.
도 8은 본 발명의 일 실시 예에 따른 스토리지 장치가 적용된 데이터 센터(3000)를 나타내는 도면이다.
도 8을 참조하여, 데이터 센터(3000)는 각종 데이터를 수집하고 서비스를 제공하는 시설로서 데이터 저장 센터로 지칭될 수 있다. 데이터 센터(3000)는 검색 엔진 및 데이터베이스를 운용하기 위한 시스템일 수 있으며, 은행과 같은 기업이나 정부 기관에 의해 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 애플리케이션 서버(3100~3100n) 및 스토리지 서버(3200~3200m)를 포함할 수 있다. 애플리케이션 서버(3100~3100n)의 수와 스토리지 서버(3200~3200m)의 수는 실시 예에 따라서 다양하게 선택될 수 있다. 애플리케이션 서버(3100~3100n)의 수는 스토리지 서버(3200~3200m)의 수와 다를 수 있다.
애플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 이제 스토리지 서버(3200)를 예로 들어 설명한다. 프로세서(3210)는 스토리지 서버(3200)의 모든 동작을 제어하고, 메모리(3220)에 액세스하고, 메모리(3220)에 로드된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 이중 데이터 속도 동기 DRAM(DDR SDRAM), 고대역폭 메모리(HBM), 하이브리드 메모리 큐브(HMC), 듀얼 인라인 메모리 모듈(DIMM), Optane DIMM 및/또는 비휘발성 DIMM(NVMDIMM)일 수 있다. 일부 실시 예에서, 스토리지 서버(3200)에 포함되는 프로세서(3210) 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시 예에서, 프로세서(3210) 및 메모리(3220)는 프로세서-메모리 쌍을 제공할 수 있다. 일 실시 예에서, 프로세서(3210)의 개수는 메모리(3220)의 개수와 다를 수 있다. 프로세서(3210)는 싱글 코어 프로세서 또는 멀티 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 전술한 설명은 애플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 일부 실시 예에서, 애플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수 있다. 저장 서버(3200)는 적어도 하나의 스토리지 장치(3250)를 포함할 수 있다. 저장 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시 예에 따라 다양하게 선택될 수 있다.
애플리케이션 서버(3100~3100n)는 네트워크(3300)를 통해 스토리지 서버(3200~3200m)와 통신할 수 있다. 네트워크(3300)는 파이버 채널(FC) 또는 이더넷을 이용하여 구현될 수 있다. 이 경우 FC는 비교적 고속의 데이터 전송에 사용되는 매체로서 고성능 및 고가용성을 갖는 광 스위치를 사용할 수 있다. 스토리지 서버(3200~3200m)는 네트워크(3300)의 액세스 방식에 따라 파일 스토리지, 블록 스토리지 또는 오브젝트 스토리지로 제공될 수 있다.
일 실시 예에서, 네트워크(3300)는 스토리지 영역 네트워크(SAN)과 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 사용하고 FC 프로토콜(FCP)에 따라 구현되는 FC-SAN일 수 있다. 다른 예로, SAN은 전송 제어 프로토콜(TCP)/IP 네트워크를 사용하고 TCP/IP 또는 인터넷 SCSI(iSCSI) 프로토콜을 통한 SCSI에 따라 구현되는 인터넷 프로토콜(IP)-SAN일 수 있다. 다른 실시 예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반적인 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 이더넷을 통한 FC(FCoE), 네트워크 연결 스토리지(NAS), 패브릭을 통한 NVMe(NVMe-oF)와 같은 프로토콜에 따라 구현될 수 있다.
이하, 애플리케이션 서버(3100) 및 스토리지 서버(3200)에 대해 설명한다. 애플리케이션 서버(3100)에 대한 설명은 다른 애플리케이션 서버(3100n)에 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에 적용될 수 있다.
애플리케이션 서버(3100)는 네트워크(3300)를 통해 스토리지 서버(3200 내지 3200m) 중 하나에서 저장되도록 사용자 또는 클라이언트에 의해 요청된, 데이터를 저장할 수 있다. 또한, 애플리케이션 서버(3100)는 네트워크(3300)를 통해 스토리지 서버(3200 내지 3200m) 중 하나로부터 사용자 또는 클라이언트가 판독을 요청한 데이터를 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 웹 서버 또는 데이터베이스 관리 시스템(DBMS)으로 구현될 수 있다.
애플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 애플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있다. 또는, 애플리케이션 서버(3100)는 네트워크(3300)를 통해 스토리지 서버(3200~3200m)에 포함된 메모리(3220~3220m) 또는 스토리지 장치(3250~3250m)에 액세스할 수 있다. 따라서, 애플리케이션 서버(3100)는 애플리케이션 서버(3100~3100n) 및/또는 스토리지 서버(3200~3200m)에 저장된 데이터에 대해 다양한 동작을 수행할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 애플리케이션 서버(3100 내지 3100n) 및/또는 스토리지 서버(3200 내지 3200m) 사이에서 데이터를 이동 또는 복사하기 위한 명령을 실행할 수 있다. 이 경우, 데이터는 스토리지 서버(3200~3200m)의 스토리지 장치(3250~3250m)에서 애플리케이션 서버(3100~3100n)의 메모리(3120~3120n)로 직접적으로 또는 스토리지 서버(3200~3200~3200m)의 메모리(3220~3220m)를 통해 이동될 수 있다. 네트워크(3300)를 통해 이동되는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
이하, 스토리지 서버(3200)를 예로 들어 설명한다. 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251) 사이의 물리적 연결 및 네트워크 인터페이스 카드(NIC)(3240)와 컨트롤러(3251) 간의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)가 전용 케이블로 직접 연결되는 직접 부착된 스토리지(DAS) 방식으로 구현될 수 있다. 예를 들어, 인터페이스(3254)는 ATA, SATA, e-SATA, SCSI, SAS, PCI, PCIe, NVMe, IEEE 1394, USB 인터페이스, SD 카드 인터페이스, MMC 인터페이스, eMMC 인터페이스, UFS 인터페이스, eUFS 인터페이스, 및/또는 CF 카드 인터페이스와 같은, 다양한 인터페이스 방식을 사용하여 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 네트워크 인터커텍트(NIC)(3240)를 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어를 통해 프로세서(3210)를 스토리지 장치(3250)에 선택적으로 연결하거나 NIC(3240)를 스토리지 장치(3250)에 선택적으로 연결할 수 있다.
일 실시 예에서, NIC(3240)는 네트워크 인터페이스 카드 및 네트워크 어댑터를 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 또는 광 인터페이스를 통해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, 디지털 신호 프로세서(DSP) 및 호스트 버스 인터페이스를 포함할 수 있으며 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230)에 연결될 수 있다. 호스트 버스 인터페이스는 전술한 인터페이스(3254)의 예시 중 하나로 구현될 수 있다. 일 실시 예에서, NIC(3240)는 프로세서(3210), 스위치(3230) 및 스토리지 장치(3250) 중 적어도 하나와 통합될 수 있다.
스토리지 서버(3200 내지 3200m) 또는 애플리케이션 서버(3100 내지 3100n)에서, 프로세서는 스토리지 장치(3150~3150n 및 3250~3250m) 또는 메모리(3120~3120n 및 3220~3220m)에 명령을 전송하고 데이터를 프로그램하거나 판독할 수 있다. 이 경우, 데이터는 ECC 엔진에 의해 오류가 수정된 데이터일 수 있다. 상기 데이터는 데이터 버스 인버전(DBI) 연산 또는 데이터 마스킹(DM) 연산이 수행된 데이터일 수 있으며, 순환 중복 코드(CRC) 정보를 포함할 수 있다. 데이터는 보안 또는 개인 정보 보호를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150~3150n 및 3250~3250m)는 프로세서로부터 수신된 판독 명령에 대한 응답으로 낸드 플래시 메모리 장치(3252~3252m)에 제어 신호 및 명령/주소 신호를 전송할 수 있다. 따라서, 낸드 플래시 메모리 장치(3252~3252m)로부터 데이터가 판독되면 데이터 출력 제어 신호로서 판독 인에이블(RE) 신호가 입력되어 DQ 버스로 출력될 수 있다. RE 신호를 이용하여 데이터 스트로브 신호(DQS)가 생성될 수 있다. 명령 및 주소 신호는 기록 인에이블(WE) 신호의 상승 에지 또는 하강 에지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 모든 동작을 제어할 수 있다. 일 실시 예에서, 컨트롤러(3251)는 SRAM을 포함할 수 있다. 컨트롤러(3251)는 기록 명령에 응답하여 NAND 플래시 메모리 장치(3252)에 데이터를 기록하거나 판독 명령에 응답하여 NAND 플래시 메모리 장치(3252)로부터 데이터를 판독할 수 있다. 예를 들어, 기록 명령 및/또는 판독 명령은 스토리지 서버(3200)의 프로세서(3210), 다른 스토리지 서버(3200m)의 프로세서(3210m), 또는 애플리케이션 서버(3100, 3100n)의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 NAND 플래시 메모리 장치(3252)에 기록될 데이터 또는 NAND 플래시 메모리 장치(3252)로부터 판독된 데이터를 일시적으로 저장(또는 버퍼링)할 수 있다. 또한, DRAM(3253)은 메타데이터를 저장할 수 있다. 여기서, 메타데이터는 사용자 데이터 또는 낸드 플래시 메모리 장치(3252)를 관리하기 위해 컨트롤러(3251)에 의해 생성된 데이터일 수 있다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위한 보안 요소(SE)를 포함할 수 있다.
예를 들어, 스토리지 장치(3150~3150n) 및 스토리지 장치(3250~3250m)는 각각 고속 스토리지 장치인 제1 스토리지 장치 및 제1 스토리지 장치보다 느린 제2 스토리지 장치를 포함할 수 있다. 제2 스토리지 장치는 제1 스토리지 장치보다 더 큰 용량을 가질 수 있다. 예를 들어, 제1 스토리지 장치는 SCM, Samsung Z-SSD, PRAM, SLC SSD 등이 될 수 있고, 제2 스토리지 장치는 MTC SSD, TLC SSD, QLC SSD, HDD 등이 될 수 있다. 제1 스토리지 장치는 캐시 장치일 수 있고, 제2 스토리지 장치는 스토리지 장치일 수 있다. 프로세서(3110~3110n, 3210~3210m)는 상술된 데이터 캐싱 방법과 일치하는 방식으로, 애플리케이션 서버(3100~3100n) 및 스토리지 서버(3200~3200m)를 제어하여 스토리지 장치(3150~3150n) 및 스토리지 장치(3250~3250m)의 정보를 판독하여 저장한다. 일 실시 예에 따르면, 데이터 센터 시스템(예를 들어, 3000)은 다수의 애플리케이션 서버(예를 들어, 3100-3100n); 및 복수의 스토리지 서버(예를 들어, 3200-3200m)을 포함하여 제공되고, 여기에서 각각의 스토리지 서버는 스토리지 장치, 및 복수의 애플리케이션 서버 중 적어도 하나를 포함하고, 복수의 스토리지 서버는 상술한 바와 같은 데이터 캐싱 방법을 수행하도록 구성된다.
일 실시 예에 따르면, 프로세서에 의해 실행될 때, 위에서 설명한 대로 데이터 캐싱 방법을 구현하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체가 제공된다.
일 실시 예에 따르면, 프로세서; 및 프로세서에 의해 실행될 때 상술된 바와 같이 데이터 캐싱 방법을 구현하는 컴퓨터 프로그램을 저장하는 메모리를 포함하는 전자 장치가 제공된다.
일 실시 예에 따르면, 적어도 하나의 프로세서에 의해 실행될 때, 적어도 하나의 프로세서로 하여금 본 개시에 따른 데이터 캐싱 방법을 실행하도록 하는 명령을 저장하는 컴퓨터 판독 가능 저장 매체가 또한 제공될 수 있다. 본 명세서의 컴퓨터 판독 가능 저장 매체의 예는: 컴퓨터 프로그램 및 관련 데이터, 데이터 파일 및 데이터 구조를 비일시적 방식으로 저장하여 컴퓨터 프로그램 및 관련 데이터, 데이터 파일 및 데이터 구조를 프로세서 또는 컴퓨터에 제공하여 프로세서 또는 컴퓨터가 컴퓨터 프로그램을 실행할 수 있도록 구성된, 판독 전용 메모리(ROM), 랜덤 액세스 프로그래밍 가능 판독 전용 메모리(PROM), 전기적으로 삭제 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM), 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 플래시 메모리, 비휘발성 메모리, CD-ROM, CD-R, CD+R, CD-RW, CD+RW, DVD-ROM, DVD-R, DVD+R, DVD-RW, DVD+RW, DVD- RAM, BD-ROM, BD-R, BD-R LTH, BD-RE, Blu-ray 또는 광 디스크 스토리지, 하드 디스크 드라이브(HDD), 솔리드 스테이트 하드 디스크(SSD), 카드 스토리지(멀티미디어 카드, 보안 디지털(SD) 카드 또는 익스트림 디지털(XD) 카드 등), 자기 테이프, 플로피 디스크, 광자기 데이터 스토리지 장치, 광 데이터 스토리지 장치, 하드 디스크, 솔리드 스테이트 디스크 및 기타 장치와 같은, 비일시적 매체를 포함한다. 상술한 컴퓨터 판독 가능한 저장 매체에 포함된 컴퓨터 프로그램은 클라이언트, 호스트, 에이전트 장치, 서버 등과 같은 컴퓨팅 장비에 배치된 환경에서 실행될 수 있다. 또한, 일 예에서, 컴퓨터 프로그램 및 모든 관련 데이터, 데이터 파일 및 데이터 구조는 네트워크로 연결된 컴퓨터 시스템에 배포되므로, 컴퓨터 프로그램 및 관련 데이터, 데이터 파일 및 데이터 구조가 하나 이상의 프로세서 또는 컴퓨터를 통해 분산 방식으로 저장, 액세스 및 실행되도록 한다.
일부 실시 예에서, 도 2 내지 8에 도시된 바와 같이 블록으로 표현되는 각각의 구성요소, 요소, 모듈 또는 유닛은 실시 예에 따라 상술한 각 기능을 수행하는 다양한 하드웨어, 소프트웨어 및/또는 펌웨어 구조로 구현될 수 있다. 예를 들어, 이러한 구성요소, 요소, 모듈 또는 유닛 중 적어도 하나는 하나 이상의 마이크로 프로세서 또는 다른 제어 장치의 제어를 통해 각각의 기능을 실행할 수 있는, 메모리, 프로세서, 논리 회로, 룩업 테이블 등과 같은 직접 회로 구조를 사용하여, 디지털 회로, 프로그래밍 가능 또는 프로그래밍 불가 논리 장치 또는 어레이, 주문형 집적 회로(ASIC) 또는 기타 회로를 포함하는 다양한 하드웨어 구성 요소를 포함할 수 있다. 또한, 이들 구성요소, 요소, 모듈 또는 유닛 중 적어도 하나는 지정된 논리 기능을 수행하기 위한 하나 이상의 실행 가능한 명령을 포함하고 하나 이상의 마이크로프로세서 또는 기타 제어 장치에 의해 실행되는, 모듈, 프로그램 또는 코드의 일부를 포함할 수 있다. 또한, 이들 구성요소, 요소, 모듈 또는 유닛 중 적어도 하나는 각각의 기능을 수행하는 중앙 처리 장치(CPU), 마이크로프로세서 등과 같은 프로세서를 더 포함하거나 이에 의해 구현될 수 있다. 예시적인 실시 예의 기능적 측면은 하나 이상의 프로세서에서 실행하는 알고리즘으로 구현될 수 있다. 또한, 블록 또는 처리 단계로 표현되는 구성요소, 요소, 모듈 또는 유닛은 전자 구성, 신호 처리 및/또는 제어, 데이터 처리 등을 위한 임의의 수의 관련 기술 기술을 사용할 수 있다.
상기 설명에 제공된 실시 예 각각은 본 명세서에 제공되거나 본 명세서에 제공되지 않지만 본 발명의 개념과 일치하는 다른 예 또는 다른 실시 예의 하나 이상의 특징과 연관되는 것을 배제하지 않는다. 예를 들어, 일 실시 예의 데이터 캐싱 장치에서 설명된 사항이 다른 실시 예의 데이터 캐싱 장치에서 설명되지 않더라도, 중요한 것은 그 설명에 달리 언급되지 않는 한, 다른 예 또는 실시 예와 관련되거나 결합 가능한 것으로 이해될 수 있다. 게다가, 본 발명의 개념의 원칙, 측면, 예에 대한 모든 설명 및 특정 실시 예는 이들의 구조적 및 기능적 균등물을 포괄하는 것으로 의도된다. 게다가, 이러한 균등물은 현재 잘 알려진 균등물뿐만 아니라 향후 개발될 균등물, 즉 그 구조에 관계없이 동일한 기능을 수행하도록 발명된 모든 장치를 포함하는 것으로 이해되어야 한다.
실시 예의 측면이 특히 도시되고 설명되었지만, 다음 청구범위의 정신 및 범위를 벗어나지 않고 형태 및 세부사항의 다양한 변경이 본 명세서에서 이루어질 수 있다는 것이 이해될 것이다.
401: 획득 유닛
402: 결정 유닛

Claims (20)

  1. 데이터 캐싱 방법으로,
    액세스 요청에 대응하는 데이터의 캐시 값을 획득하는 단계; 및
    상기 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여 상기 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 캐시 값을 획득하는 단계는,
    상기 스토리지 장치의 복수의 논리 파티션 중에서, 상기 데이터의 논리 주소에 대응하는 논리 파티션을 결정하는 단계; 및
    상기 논리 파티션의 데이터 캐시 값을 상기 캐시 값으로 획득하는 단계를 포함하고,
    상기 복수의 논리 파티션의 각각은 대응하는 데이터 캐시 값을 갖는, 방법.
  3. 제2항에 있어서,
    상기 캐시 값을 획득하는 단계는, 상기 논리 파티션의 이력 액세스 정보에 기반하는, 방법.
  4. 제3항에 있어서,
    상기 데이터 캐시 값을 획득하는 단계는,
    상기 데이터의 상기 논리 주소가 속하는 상기 논리 파티션의 상기 이력 액세스 정보 및 다른 논리 파티션의 이력 액세스 정보를 훈련된 예측자에 제공하는 단계와,
    상기 훈련된 예측자로부터 상기 데이터 캐시 값을 획득하는 단계를 포함하고,
    상기 다른 논리 파티션은 상기 데이터의 상기 논리 주소가 속하는 상기 논리 파티션에 인접한 미리 설정된 수의 논리 파티션을 포함하는, 방법.
  5. 제1항에 있어서,
    상기 액세스 요청은 기록 요청이고,
    상기 결정하는 단계는,
    상기 미리 설정된 조건을 만족하는 상기 캐시 값에 기초하여, 상기 기록 요청에 대응하는 상기 데이터를 상기 캐시 장치에 기록하기로 결정하는 단계; 및
    상기 미리 설정된 조건을 만족하지 않는 상기 캐시 값에 기초하여, 상기 기록 요청에 대응하는 상기 데이터를 상기 스토리지 장치에 기록하기로 결정하는 단계를 포함하는, 방법.
  6. 제1항에 있어서,
    상기 액세스 요청은 판독 요청이고,
    상기 결정하는 단계는,
    상기 미리 설정된 조건을 만족하는 상기 캐시 값에 기초하여, 상기 판독 요청에 대응하는 상기 데이터를 상기 캐시 장치로부터 판독하기로 결정하는 단계; 및
    상기 미리 설정된 조건을 만족하지 않는 상기 캐시 값에 기초하여, 상기 판독 요청에 대응하는 상기 데이터를 상기 스토리지 장치로부터 판독하기로 결정하는 단계를 포함하는, 방법.
  7. 제1항에 있어서,
    상기 액세스 요청은 판독 요청이고,
    상기 캐시 값은 상기 미리 설정된 조건을 만족하고,
    상기 방법은 상기 캐시 장치에서 적중되지 않은 상기 판독 요청에 대응하는 상기 데이터에 기초하여 상기 판독 요청에 대응하는 상기 데이터를 상기 스토리지 장치로부터 판독하기로 결정하는 단계를 더 포함하는, 방법.
  8. 제7항에 있어서,
    상기 판독 요청에 대응하는 상기 데이터를 상기 캐시 장치에 기록하는 단계를 더 포함하는, 방법.
  9. 데이터 캐싱 장치로서,
    명령을 저장하는 하나 이상의 메모리; 및
    하나 이상의 프로세서로서,
    상기 명령을 실행하여,
    액세스 요청에 대응하는 데이터의 캐시 값을 획득하도록 구성된 획득 유닛; 및
    상기 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여, 상기 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 결정 유닛을 구현하도록 구성되는 하나 이상의 프로세서를 포함하는, 장치.
  10. 제9항에 있어서,
    상기 획득 유닛은 상기 스토리지 장치의 복수의 논리 파티션 중에서, 상기 데이터의 논리 주소에 대응하는 논리 파티션을 결정하고, 상기 논리 파티션의 데이터 캐시 값을 상기 데이터의 상기 캐시 값으로 획득하도록 구성되고,
    상기 복수의 논리 파티션의 각각은 대응하는 데이터 캐시 값을 갖는, 장치.
  11. 제10항에 있어서,
    상기 획득 유닛은 상기 논리 파티션의 이력 액세스 정보에 기반하여 상기 캐시 값을 획득하도록 구성되는, 장치.
  12. 제11항에 있어서,
    상기 획득 유닛은 상기 데이터의 상기 논리 주소가 속하는 상기 논리 파티션의 상기 이력 액세스 정보 및 다른 논리 파티션의 이력 액세스 정보를 훈련된 예측자에게 제공하여 상기 훈련된 예측자로부터 상기 데이터 캐시 값을 획득하도록 구성되고,
    상기 다른 논리 파티션은 상기 데이터의 상기 논리 주소가 속하는 상기 논리 파티션에 인접한 미리 설정된 수의 논리 파티션을 포함하는, 장치.
  13. 제9항에 있어서,
    상기 결정 유닛은 상기 액세스 요청이 기록 요청인 경우에,
    상기 데이터의 상기 캐시 값이 상기 미리 설정된 조건을 만족하는 것에 기반하여 상기 기록 요청에 대응하는 상기 데이터를 상기 캐시 장치에 기록하기로 결정하고,
    상기 데이터의 상기 캐시 값이 상기 미리 설정된 조건을 만족하지 않는 것에 기반하여, 상기 기록 요청에 대응하는 상기 데이터를 상기 스토리지 장치에 기록하기로 결정하도록 구성되는, 장치.
  14. 제9항에 있어서,
    상기 결정 유닛은 상기 액세스 요청이 판독 요청인 경우에,
    상기 데이터의 상기 캐시 값이 상기 미리 설정된 조건을 만족하는 것에 기반하여 상기 판독 요청에 대응하는 상기 데이터를 상기 캐시 장치로부터 판독하기로 결정하고,
    상기 데이터의 상기 캐시 값이 상기 미리 설정된 조건을 만족하지 않는 것에 기반하여 상기 판독 요청에 대응하는 상기 데이터를 상기 스토리지 장치로부터 판독하기로 결정하도록 구성되는, 장치.
  15. 제14항에 있어서,
    상기 결정 유닛은 상기 미리 설정된 조건을 만족하는 상기 데이터의 상기 캐시 값과 상기 캐시 장치에서 적중하지 않은 상기 판독 요청에 대응하는 상기 데이터에 기반하여, 상기 판독 요청에 대응하는 상기 데이터를 상기 스토리지 장치로부터 판독하기로 결정하도록 구성되는, 장치.
  16. 제15항에 있어서,
    상기 하나 이상의 프로세서는 상기 명령을 실행하여 상기 캐시 장치로부터 적중하지 않은 상기 판독 요청에 대응하는 상기 데이터를 상기 캐시 장치에 기록하도록 구성된 기입 유닛을 구현하도록 구성되는, 장치.
  17. 제9항에 있어서,
    상기 하나 이상의 메모리 및 상기 하나 이상의 프로세서는 호스트 장치에 제공되고,
    상기 장치는 상기 캐시 장치 및 상기 스토리지 장치를 포함하는 외부 스토리지 장치를 더 포함하는, 장치.
  18. 제9항에 있어서,
    상기 하나 이상의 메모리 및 상기 하나 이상의 프로세서는 범용 플래시 스토리지(UFS) 호스트에 제공되고,
    상기 장치는,
    UFS 장치; 및
    상기 UFS 호스트와 상기 UFS 장치를 통신 가능하게 연결하도록 구성된 UFS 인터페이스를 더 포함하는, 장치.
  19. 제9항에 있어서,
    상기 하나 이상의 메모리 및 상기 하나 이상의 프로세서는 데이터 센터 시스템에 제공되는 스토리지 서버에 제공되고,
    상기 데이터 센터 시스템은,
    복수의 애플리케이션 서버; 및
    복수의 스토리지 서버를 포함하고,
    상기 스토리지 서버는 상기 복수의 저장 서버 중 하나인, 장치.
  20. 프로세서에 의해 실행될 때, 상기 프로세서를 제어하여,
    액세스 요청에 대응하는 데이터의 캐시 값을 획득하는 단계; 및
    상기 캐시 값이 미리 설정된 조건을 만족하는지 여부에 기초하여 상기 액세스 요청에 대응하는 상기 데이터를 캐시 장치 또는 스토리지 장치로부터 액세스할지 결정하는 단계를 포함하는 방법을 수행하도록 구성되는, 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능 스토리지 매체.
KR1020230075425A 2022-08-18 2023-06-13 데이터 캐싱을 위한 방법 및 장치 KR20240025451A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210992490.2 2022-08-18
CN202210992490.2A CN115328402A (zh) 2022-08-18 2022-08-18 数据缓存的方法和装置

Publications (1)

Publication Number Publication Date
KR20240025451A true KR20240025451A (ko) 2024-02-27

Family

ID=83689756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230075425A KR20240025451A (ko) 2022-08-18 2023-06-13 데이터 캐싱을 위한 방법 및 장치

Country Status (4)

Country Link
US (1) US20240061782A1 (ko)
EP (1) EP4325367A1 (ko)
KR (1) KR20240025451A (ko)
CN (1) CN115328402A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116303138B (zh) * 2023-05-08 2023-08-29 北京云脉芯联科技有限公司 一种缓存架构及缓存方法、电子设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8966184B2 (en) * 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
CN111104066B (zh) * 2019-12-17 2021-07-27 华中科技大学 数据写入方法、装置及存储服务器和计算机可读存储介质

Also Published As

Publication number Publication date
CN115328402A (zh) 2022-11-11
EP4325367A1 (en) 2024-02-21
US20240061782A1 (en) 2024-02-22

Similar Documents

Publication Publication Date Title
US11921629B1 (en) Method and device for data storage
KR20200110547A (ko) 스토리지 장치 및 스토리지 장치를 포함하는 컴퓨팅 장치
KR20200139433A (ko) 컨트롤러의 동작 방법 및 메모리 시스템
KR20240025451A (ko) 데이터 캐싱을 위한 방법 및 장치
US20240037027A1 (en) Method and device for storing data
US11994934B2 (en) Failure prediction method and device for a storage device
CN117112219A (zh) 主机内存数据访问的方法和装置
CN116755620A (zh) 基于独立磁盘冗余阵列的数据存储的方法和装置
KR102425470B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20230071730A (ko) 데이터 프로세싱 장치 및 그것의 동작 방법
US20230393749A1 (en) Method and device of storage data
US20230409200A1 (en) Method and device for data storage
US20240160511A1 (en) Failure prediction apparatus and method for storage devices
KR20240070391A (ko) 스토리지 장치의 오류 예측 방법 및 장치
US20230153237A1 (en) Method and device for storing data
EP4332773A1 (en) Storage server and operation method of storage server
US20240069814A1 (en) Storage server and operation method of storage server
US20220129383A1 (en) Electronic device, automotive device, and data center
CN117008826A (zh) 数据压缩方法和装置
CN116756106A (zh) 有序字符串表文件的压缩方法和装置
CN117130551A (zh) 存储装置及其数据访问方法
CN118113506A (zh) 存储装置的故障预测方法和装置
CN116755877A (zh) 带宽控制方法和存储装置
CN117891408A (zh) 用于存储设备的数据去重的方法和存储设备
CN117055816A (zh) 配置zns ssd的区域的方法和装置