KR20150083728A - 디스크 캐시 제어 장치 및 방법 - Google Patents

디스크 캐시 제어 장치 및 방법 Download PDF

Info

Publication number
KR20150083728A
KR20150083728A KR1020140003606A KR20140003606A KR20150083728A KR 20150083728 A KR20150083728 A KR 20150083728A KR 1020140003606 A KR1020140003606 A KR 1020140003606A KR 20140003606 A KR20140003606 A KR 20140003606A KR 20150083728 A KR20150083728 A KR 20150083728A
Authority
KR
South Korea
Prior art keywords
cached
cache
data block
flash
buffer
Prior art date
Application number
KR1020140003606A
Other languages
English (en)
Other versions
KR102195896B1 (ko
Inventor
유준희
김종률
정현구
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140003606A priority Critical patent/KR102195896B1/ko
Priority to US14/592,995 priority patent/US9477416B2/en
Publication of KR20150083728A publication Critical patent/KR20150083728A/ko
Application granted granted Critical
Publication of KR102195896B1 publication Critical patent/KR102195896B1/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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0673Single storage device
    • G06F3/068Hybrid storage device
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

기재된 실시예는 디스크 캐시를 탐색하는 시간을 단축시키고 디스크 캐시의 히트율을 증가시킬 수 있는 디스크 캐시 제어 장치 및 방법에 관한 것으로서, 버퍼 캐시를 포함하는 메인 메모리, 플래시 캐시를 포함하는 플래시 메모리, 및 버퍼 캐시 및 플래시 캐시를 제어하는 제어부를 포함하고, 버퍼 캐시 또는 플래시 캐시는 디스크에 저장된 데이터 블록을 캐시하고, 제어부는 메타데이터를 이용하여 캐시된 데이터 블록이 캐시된 위치를 식별하는 디스크 캐시 제어 장치가 제공될 수 있다.

Description

디스크 캐시 제어 장치 및 방법{DEVICE AND METHOD OF MANAGING DISK CACHE}
기재된 실시예는 디스크 캐시를 탐색하는 시간을 단축시키고 디스크 캐시의 히트율을 증가시킬 수 있는 디스크 캐시 제어 장치 및 방법에 관한 것이다.
일반적으로 하드디스크는 큰 용량을 갖는 반면에 느린 접근 속도를 갖고 있다. 따라서, 하드디스크에의 접근이 많으면 많을수록 입출력(I/O)에 소비되는 시간이 증가하게 되고 데이터의 처리 속도가 낮아질 수 있다. 따라서, 하드디스크에의 접근을 줄이고자 디스크 캐시 기술이 널리 이용되고 있다.
최근에 하드디스크로부터 독출된 데이터는 메인 메모리의 버퍼 캐시에 저장될 수 있다. 이로써, 이후에 중앙처리장치가 동일한 데이터를 참조하고자 할 때 하드디스크에의 접근 없이 버퍼 캐시로부터 데이터를 독출할 수 있다. 따라서, 디스크 캐시 기술이 활용되는 경우, 하드디스크에의 접근 횟수가 줄어들게 되어 데이터의 처리 속도가 높아질 수 있다.
저장장치에 관련된 기술이 발전함에 따라, 최근에는 플래시 메모리가 포함된 저장장치가 보급되고 있다. 예를 들어, SSD(Solid State Disk)는 NAND 플래시 또는 DRAM 등 고속 반도체 메모리를 포함한다. SSD는 하드디스크와는 달리 무작위 접근(random access)가 가능하므로 짧은 탐색 시간(seeking time) 내에 데이터에 접근될 수 있다.
따라서, 플래시 메모리를 포함하는 저장장치는 하드디스크보다 빠른 접근 속도를 가질 수 있다. 플래시 메모리를 포함하는 저장장치는 메인 메모리보다는 느린 데이터 접근 속도를 가지지만, 일반적으로 메인 메모리보다 큰 용량을 가질 수 있다.
플래시 메모리를 포함하는 저장장치는 디스크 캐시 용도로 이용될 수 있다. 다시 말해서, 하드디스크로부터 독출된 데이터는 플래시 메모리를 포함하는 저장장치의 플래시 캐시에 저장될 수 있다.
기재된 실시예에 따르면 디스크 캐시를 탐색하는 시간을 단축시킬 수 있는 디스크 캐시 제어 장치 및 방법이 제공될 수 있다.
또한, 디스크 캐시의 히트율을 증가시킬 수 있는 디스크 캐시 제어 장치 및 방법이 제공될 수 있다.
또한, 디스크 캐시를 탐색하는 데에 이용되는 메타데이터가 차지하는 공간을 축소시킬 수 있는 디스크 캐시 제어 장치 및 방법이 제공될 수 있다.
실시예에 따른 디스크 캐시 제어 장치는, 버퍼 캐시를 포함하는 메인 메모리, 플래시 캐시를 포함하는 플래시 메모리, 및 상기 버퍼 캐시 및 상기 플래시 캐시를 제어하는 제어부를 포함하고, 상기 버퍼 캐시 또는 상기 플래시 캐시는 디스크에 저장된 데이터 블록을 캐시하고, 상기 제어부는 메타데이터를 이용하여 상기 캐시된 데이터 블록이 캐시된 위치를 식별할 수 있다.
또한, 상기 제어부는 상기 메타데이터를 이용하여, 상기 캐시된 데이터 블록이 상기 버퍼 캐시에 캐시되어 있는지 또는 상기 캐시된 데이터 블록이 상기 플래시 캐시에 캐시되어 있는지 여부를 식별할 수 있다.
또한, 상기 메타데이터는 상기 버퍼 캐시 또는 상기 플래시 캐시 중에서 상기 캐시된 데이터 블록이 캐시된 캐시의 식별자를 포함할 수 있다.
또한, 상기 메타데이터는 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 더 포함할 수 있다.
또한, 상기 캐시된 데이터 블록 중에서 적어도 일부의 데이터 블록은 상기 버퍼 캐시 및 상기 플래시 캐시에 동시에 캐시되고, 상기 메타데이터는 상기 캐시된 데이터 블록이 캐시된 상기 캐시의 식별자의 목록 및 각각의 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함할 수 있다.
또한, 상기 캐시된 데이터 블록은 상기 버퍼 캐시 또는 상기 플래시 캐시에 배타적으로 캐시될 수 있다.
또한, 상기 메타데이터는 상기 캐시된 데이터 블록이 속한 파일의 파일 식별자의 목록 및 상기 캐시된 데이터 블록에 대한 블록 정보를 포함할 수 있다.
또한, 각각의 상기 파일 식별자에는 상기 파일 식별자에 대응하는 파일 내에 포함된 상기 데이터 블록들 중에서 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시된 데이터 블록들에 대응하는 블록 정보의 목록이 매핑될 수 있다.
또한, 상기 블록 정보는 상기 캐시된 데이터 블록이 속한 파일 내에서의 상기 캐시된 데이터 블록의 오프셋, 상기 캐시된 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함할 수 있다.
또한, 상기 제어부는 상기 데이터 블록 중에서의 대상 데이터 블록이 속한 파일의 파일 식별자 및 상기 파일 내에서의 상기 대상 데이터 블록의 오프셋을 이용하여 상기 대상 데이터 블록이 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시되어 있는지 여부를 판정할 수 있다.
또한, 상기 제어부는 상기 메타데이터로부터 상기 파일 식별자 및 상기 오프셋을 이용하여 상기 대상 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 대상 데이터 블록이 캐시된 위치에 대한 정보를 획득할 수 있다.
실시예에 따른 디스크 캐시 제어 방법은, 메타데이터를 이용하여, 대상 데이터 블록이 버퍼 캐시 또는 플래시 캐시에 캐시되어 있는지 여부를 판정하는 단계, 상기 대상 데이터 블록이 캐시되어 있지 않다고 판정된 경우, 상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키거나 폐기하는 단계, 및 디스크로부터 상기 대상 데이터 블록을 독출하여 상기 버퍼 캐시에 캐시하는 단계를 포함하고, 상기 메타데이터는 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시된 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함할 수 있다.
또한, 상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키거나 폐기하는 단계는, 상기 버퍼 캐시에 캐시된 데이터 블록 중에서 상기 적어도 하나 이상의 데이터 블록을 선정하는 단계, 상기 선정된 데이터 블록이 미리읽기(read-ahead) 기능에 의해 캐시된 경우, 상기 선정된 데이터 블록을 폐기하는 단계, 및 상기 선정된 데이터 블록이 미리읽기(read-ahead) 기능에 의해 캐시되지 않은 경우, 상기 선정된 데이터 블록을 상기 플래시 캐시에 이동시키는 단계를 포함할 수 있다.
또한, 상기 버퍼 캐시에 캐시된 데이터 블록 중에서 상기 적어도 하나 이상의 데이터 블록을 선정하는 단계는, 상기 버퍼 캐시에 캐시된 상기 데이터 블록 중에서 참조된 지 가장 오래된 데이터 블록을 선정하는 단계를 포함할 수 있다.
또한, 상기 버퍼 캐시에 캐시된 데이터 블록 중에서 상기 적어도 하나 이상의 데이터 블록을 선정하는 단계는, 상기 버퍼 캐시에 캐시된 상기 데이터 블록 중에서 가장 낮은 빈도로 참조된 데이터 블록을 선정하는 단계를 포함할 수 있다.
다른 실시예에 따른 디스크 캐시 제어 방법은, 메타데이터를 이용하여, 대상 데이터 블록이 버퍼 캐시 또는 플래시 캐시에 캐시되어 있는지 여부를 판정하는 단계, 상기 대상 데이터 블록이 캐시되어 있다고 판정된 경우, 상기 메타데이터를 이용하여 상기 대상 데이터 블록이 상기 버퍼 캐시에 캐시되어 있는지 또는 상기 플래시 캐시에 캐시되어 있는지 여부를 식별하는 단계, 상기 대상 데이터 블록이 상기 플래시 캐시에 캐시된 경우, 상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키거나 폐기하는 단계, 및 상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계를 포함하고, 상기 메타데이터는 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시된 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함할 수 있다.
또한, 상기 캐시된 데이터 블록 중에서 적어도 일부의 데이터 블록은 상기 버퍼 캐시 및 상기 플래시 캐시에 동시에 캐시되고, 상기 메타데이터는 상기 캐시된 데이터 블록이 캐시된 상기 캐시의 식별자의 목록 및 각각의 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함하고, 상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계는, 상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 복사하는 단계를 포함할 수 있다.
또한, 상기 캐시된 데이터 블록은 상기 버퍼 캐시 또는 상기 플래시 캐시에 배타적으로 캐시되고, 상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계는, 상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키는 단계를 포함할 수 있다.
도 1은 실시예에 따른 디스크 캐시 제어 장치의 구성을 나타내는 블록도이다.
도 2는 실시예에 따른 디스크 캐시 제어 장치에 포함된 메타데이터의 자료 구조를 설명하기 위한 참고도이다.
도 3은 다른 실시예에 따른 디스크 캐시 제어 장치에 포함된 메타데이터의 자료 구조를 설명하기 위한 참고도이다.
도 4는 실시예에 따른 디스크 캐시 제어 방법이 수행되는 과정을 나타내는 순서도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1구성요소는 본 발명의 기술적 사상 내에서 제2구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 4를 참조하여 실시예에 따른 디스크 캐시 제어 장치(100) 및 디스크 캐시 제어 방법에 대해 상세히 설명하기로 한다.
도 1은 실시예에 따른 디스크 캐시 제어 장치(100)의 구성을 나타내는 블록도이다. 도 1을 참조하면, 실시예에 따른 디스크 캐시 제어 장치(100)는, 버퍼 캐시를 포함하는 메인 메모리(110), 플래시 캐시를 포함하는 플래시 메모리(120), 및 상기 버퍼 캐시 및 상기 플래시 캐시를 제어하는 제어부(130)를 포함할 수 있다.
메인 메모리(110)는 휘발성 메모리일 수 있다. 메인 메모리(110)는 예를 들어, RAM(Random Access Memory)일 수 있다. 메인 메모리(110)는 디스크 캐시를 위해 할당된 버퍼 캐시를 포함할 수 있다. 하드디스크로부터 독출된 데이터는 버퍼 캐시에 저장될 수 있다. 이로써, 이후에 동일한 데이터가 참조될 때에는 하드디스크에의 접근 없이 버퍼 캐시로부터 데이터가 독출될 수 있다.
메인 메모리(110)는 메타데이터를 저장할 수 있다. 메타데이터는 디스크 캐시를 탐색하는 데에 이용될 수 있다. 메타데이터의 자료 구조에 대하여는 도 2를 참조하여 후술하기로 한다.
플래시 메모리(120)는 비휘발성 메모리일 수 있다. 플래시 메모리(120)는 예를 들어, SSD(Solid State Disk)일 수 있다. 플래시 메모리(120)는 NAND 플래시 또는 DRAM 등의 고속 반도체 메모리를 포함할 수 있다. 플래시 메모리(120)는 플래시 메모리(120)에 저장된 데이터에의 무작위 접근(random access)을 지원할 수 있다.
따라서, 플래시 메모리(120)에 저장된 데이터에의 접근 속도는 하드디스크에 저장된 데이터에의 접근 속도보다 빠를 수 있다. 플래시 메모리(120)에 저장된 데이터에의 접근 속도는 메인 메모리(110)에 저장된 데이터에의 접근 속도보다 느릴 수 있다. 플래시 메모리(120)의 용량은 메인 메모리(110)의 용량보다 클 수 있다.
플래시 메모리(120)는 디스크 캐시를 위해 할당된 플래시 캐시를 포함할 수 있다. 하드디스크로부터 독출된 데이터는 플래시 캐시에 저장될 수 있다. 이로써, 이후에 동일한 데이터가 참조될 때에는 하드디스크에의 접근 없이 플래시 캐시로부터 데이터가 독출될 수 있다.
제어부(130)는 상기 버퍼 캐시 및 상기 플래시 캐시를 제어할 수 있다. 제어부(130)는 메인 메모리(110)에 저장된 메타데이터를 이용하여 버퍼 캐시 및 플래시 캐시를 제어할 수 있다. 제어부(130)는 메타데이터를 이용하여 버퍼 캐시 및 플래시 캐시에 캐시된 데이터 블록을 탐색할 수 있다.
하드디스크는 적어도 하나 이상의 파일을 저장할 수 있다. 각각의 파일은 적어도 하나 이상의 데이터 블록을 포함할 수 있다. 파일 내에서의 데이터 블록의 위치는 파일의 시작 지점으로부터의 오프셋을 이용하여 표현될 수 있다. 따라서, 데이터 블록은 상기 데이터 블록이 속한 파일의 식별자 및 상기 파일 내에서의 오프셋 정보를 이용하여 특정될 수 있다.
데이터 블록은 하드디스크로부터 독출되는 단위를 나타낼 수 있다. 또한, 데이터 블록은 버퍼 캐시 또는 플래시 캐시에 캐시되는 단위를 나타낼 수 있다. 따라서, 하드디스크에 저장된 파일 중에서 적어도 일부의 파일이 버퍼 캐시 또는 플래시 캐시에 캐시될 수 있다. 또한, 파일에 포함된 데이터 블록 중에서 적어도 일부의 데이터 블록이 버퍼 캐시 또는 플래시 캐시에 캐시될 수 있다.
도 2는 메인 메모리(110)에 저장된 메타데이터의 자료 구조를 설명하기 위한 참고도이다. 도 2를 참조하면, 메타데이터는 각각의 캐시된 데이터 블록이 속한 파일의 식별자(identifier, ID)의 목록을 포함할 수 있다. 또한, 메타데이터는 각각의 캐시된 데이터 블록에 대한 정보(이하에서는 '블록 정보'라고 부르기로 한다)를 더 포함할 수 있다.
하나의 파일 내에 포함된 복수의 데이터 블록들 중에서 캐시된 데이터 블록들 각각에 대응하는 블록 정보의 목록은 상기 파일의 식별자에 매핑될 수 있다. 다시 말해서, 메타데이터에 포함된 파일 식별자에는 상기 파일 식별자에 대응하는 파일 내에 포함된 데이터 블록들 중에서 버퍼 캐시 또는 플래시 캐시에 캐시된 데이터 블록들 각각에 대응하는 블록 정보의 목록이 매핑될 수 있다.
또한, 블록 정보는 캐시된 데이터 블록이 속한 파일 내에서의 상기 캐시된 데이터 블록의 오프셋, 캐시된 데이터 블록이 저장된 캐시의 식별자, 및 캐시된 데이터 블록이 저장된 캐시 내에서 상기 캐시된 데이터 블록이 저장된 위치에 대한 정보를 포함할 수 있다.
데이터 블록은 버퍼 캐시 또는 플래시 캐시에 캐시될 수 있다. 따라서, 블록 정보에 포함된 캐시의 식별자를 이용하여, 캐시된 데이터 블록이 저장된 캐시가 버퍼 캐시인지 또는 플래시 캐시인지 여부가 특정될 수 있다. 또한, 캐시된 데이터 블록이 저장된 위치에 대한 정보를 이용하여, 버퍼 캐시 또는 플래시 캐시 내에서 상기 캐시된 데이터 블록이 저장된 위치가 특정될 수 있다.
데이터 블록은 적어도 하나 이상의 캐시에 동시에 저장될 수 있다. 데이터 블록은 버퍼 캐시 또는 플래시 캐시에 배타적으로 캐시될 수 있다. 다시 말해서, 데이터 블록은 오직 하나의 캐시에만 캐시될 수 있다. 데이터 블록이 오직 하나의 캐시에만 캐시된 경우, 데이터 블록은 배타적 캐싱(exclusive caching)에 의해 캐시되었다고 표현될 수 있다.
또한, 데이터 블록은 버퍼 캐시 및 플래시 캐시에 동시에 캐시될 수 있다. 다시 말해서, 데이터 블록은 복수의 캐시에 동시에 캐시될 수 있다. 데이터 블록이 복수의 캐시에 동시에 캐시된 경우, 데이터 블록은 포괄적 캐싱(inclusive caching)에 의해 캐시되었다고 표현될 수 있다.
데이터 블록이 복수의 캐시에 동시에 캐시된 경우, 블록 정보는 캐시된 데이터 블록이 저장된 캐시의 식별자의 목록, 및 캐시된 데이터 블록이 저장된 각각의 캐시 내에서 상기 캐시된 데이터 블록이 저장된 위치에 대한 정보의 목록을 포함할 수 있다.
제어부(130)는 메타데이터를 이용하여 버퍼 캐시 및 플래시 캐시에 캐시된 데이터 블록을 탐색할 수 있다. 먼저, 제어부(130)는 참조하고자 하는 대상 데이터 블록이 속한 파일의 식별자를 이용하여, 메타데이터 내에 상기 파일 식별자와 동일한 파일 식별자가 포함되어 있는지 여부를 검출할 수 있다.
예를 들어, 제어부(130)가 대상 데이터 블록이 속한 파일의 식별자가 "File 1"이라고 가정하기로 한다. 제어부(130)는 메타데이터에 포함된 파일 식별자를 검사함으로써, 메타데이터 내에 "File 1"과 동일한 파일 식별자가 포함되어 있는지 여부를 검출할 수 있다. 만약 메타데이터 내에 "File 1"과 동일한 파일 식별자가 존재하지 않는 경우, 제어부(130)는 대상 데이터 블록이 버퍼 캐시 및 플래시 캐시에 캐시되어 있지 않다고 판정할 수 있다.
메타데이터 내에 대상 데이터 블록이 속한 파일의 식별자와 동일한 파일 식별자가 존재하는 경우를 가정하기로 한다. 제어부(130)는 대상 데이터 블록이 속한 파일 내에서의 대상 데이터 블록의 오프셋 정보를 이용하여, 대상 데이터 블록에 대응하는 캐시된 데이터 블록에 대한 블록 정보가 메타데이터 내에 포함되어 있는지 여부를 검출할 수 있다.
도 2를 참조하면, 제어부(130)는 파일 식별자 "File 1"에 매핑된 블록 정보의 목록을 검사함으로써, 메타데이터 내에 대상 데이터 블록에 대응하는 블록 정보가 포함되어 있는지 여부를 검출할 수 있다. 도 2를 참조하면, 블록 정보의 목록 내에서 각각의 블록 정보가 저장된 순서는 블록 정보에 대응하는 데이터 블록의 오프셋을 기준으로 하여 정렬될 수 있다.
예를 들어, "File 1"에 대응하는 파일의 첫번째 데이터 블록을 제1블록이라고 하고, 제1블록의 다음 블록을 순차적으로 제2블록, 제3블록, ... 이라고 하기로 한다. 다시 말해서, 데이터 블록의 오프셋이 증가하는 순서에 따라 제1블록, 제2블록, 제3블록, ... 이라고 하기로 한다.
도 2에 나타난 바와 같이, 제1블록에 대응하는 제1 블록 정보, 제2블록에 대응하는 제2 블록 정보, 제3블록에 대응하는 제3 블록 정보, 및 제4블록에 대응하는 제4 블록 정보가 메타데이터 내에 포함될 수 있다. 다시 말해서, 제1블록 내지 제4블록은 버퍼 캐시 또는 플래시 캐시에 캐시되어 있을 수 있다.
또한, 제5블록에 대응하는 제5 블록 정보는 메타데이터 내에 포함되지 않을 수 있다. 다시 말해서, 제5블록은 버퍼 캐시 및 플래시 캐시에 캐시되어 있지 않을 수 있다.
따라서, 참조하고자 하는 대상 데이터 블록에 대응하는 블록 정보가 메타데이터 내에 포함되어 있는 경우, 제어부(130)는 대상 데이터 블록이 버퍼 캐시 또는 플래시 캐시에 캐시되어 있다고 판정할 수 있다. 또한, 대상 데이터 블록에 대응하는 블록 정보가 메타데이터 내에 포함되어 있지 않은 경우, 제어부(130)는 대상 데이터 블록이 버퍼 캐시 및 플래시 캐시에 캐시되어 있지 않다고 판정할 수 있다.
예를 들어, 대상 데이터 블록이 "File 1"에 대응하는 파일의 2번째 데이터 블록이라고 가정하기로 한다. 제어부(130)는 파일 식별자 "File 1"에 매핑된 블록 정보의 목록을 검사함으로써, 제2블록에 대응하는 제2 블록 정보를 획득할 수 있다. 제어부(130)는 제2 블록 정보에 포함된 캐시의 식별자를 이용하여 제2블록이 플래시 캐시에 캐시되었음을 인식할 수 있다. 또한, 제어부(130)는 제2 블록 정보를 참조함으로써, 제2블록이 플래시 캐시 내의 100번째 블록에 저장되어 있음을 인식할 수 있다.
도 2에 나타난 바와 같이, 각각의 데이터 블록은 버퍼 캐시 또는 플래시 캐시 중에서 오직 하나의 캐시에만 캐시될 수 있다. 다시 말해서, 데이터 블록은 배타적 캐싱에 의해 캐시될 수 있다.
도 3은 다른 실시예에 따른 메타데이터의 자료 구조를 설명하기 위한 참고도이다. 도 3을 참조하면, 제어부(130)는 파일 식별자 "File 1"에 매핑된 블록 정보의 목록을 검사함으로써, 제2블록에 대응하는 제2 블록 정보를 획득할 수 있다. 제어부(130)는 제2 블록 정보에 포함된 캐시의 식별자의 목록을 이용하여 제2블록이 버퍼 캐시 및 플래키 캐시에 동시에 캐시되었음을 인식할 수 있다. 또한, 제어부(130)는 제2 블록 정보를 참조함으로써, 제2블록이 버퍼 캐시 내의 500번째 페이지 및 플래시 캐시 내의 100번째 블록에 저장되어 있음을 인식할 수 있다.
도 3에 나타난 바와 같이, 각각의 데이터 블록은 복수의 캐시에 동시에 캐시될 수 있다. 다시 말해서, 데이터 블록은 포괄적 캐싱에 의해 캐시될 수 있다.
데이터 블록이 배타적 캐싱에 의해 캐시된 경우, 데이터 블록이 포괄적 캐싱에 의해 캐시된 경우에 비해 메타데이터가 차지하는 공간이 축소될 수 있다. 또한, 포괄적 캐싱에 의해 캐시된 경우 동일한 데이터 블록이 복수의 캐시에 중복하여 캐시될 수 있다. 따라서, 배타적 캐싱에 의해 캐시된 경우, 포괄적 캐싱에 의해 캐시된 경우에 비해, 캐시 용량 대비 캐시된 서로 다른 데이터 블록의 개수가 더 많을 수 있다. 따라서, 배타적 캐싱에 의해 캐시된 경우, 포괄적 캐싱에 의해 캐시된 경우에 비해, 디스크 캐시의 히트율이 증가될 수 있다. 따라서, 배타적 캐싱에 의해 캐시된 경우, 포괄적 캐싱에 의해 캐시된 경우에 비해, 하드디스크에의 접근 횟수가 더 적을 수 있다.
참조될 전체 데이터 블록의 개수가 버퍼 캐시에 캐시될 수 있는 데이터 블록의 최대 개수보다 크고 플래시 캐시에 캐시될 수 있는 데이터 블록의 최대 개수보다 작거나 같은 경우, 데이터 블록은 포괄적 캐싱에 의해 캐시될 수 있다. 또한, 참조될 전체 데이터 블록의 개수가 플래시 캐시에 캐시될 수 있는 데이터 블록의 최대 개수보다 크고 버퍼 캐시 및 플래시 캐시에 배타적으로 캐시될 수 있는 데이터 블록의 최대 개수보다 작거나 같은 경우, 데이터 블록은 배타적 캐싱에 의해 캐시될 수 있다.
상술한 바와 같이, 메타데이터에 포함된 블록 정보를 이용하여 버퍼 캐시 또는 플래시 캐시 중에서 대상 데이터 블록이 저장되어 있는 캐시가 어느 쪽인지 인식될 수 있다. 다시 말해서, 데이터 블록이 저장되어 있는 캐시의 종류와 무관하게 동일한 자료 구조를 갖는 블록 정보를 이용하여 데이터 블록이 저장되어 있는 위치가 특정될 수 있다. 따라서, 실시예에 따른 블록 정보를 이용하여 캐시를 탐색하는 경우, 캐시의 종류에 따라 서로 다른 자료 구조를 이용하여 캐시를 탐색하는 경우에 비해, 디스크 캐시를 탐색하는 시간이 더 짧을 수 있다.
도 4는 실시예에 따른 디스크 캐시 제어 방법이 수행되는 과정을 나타내는 순서도이다. 도 4를 참조하면, 먼저, 메타데이터를 이용하여 대상 데이터 블록이 캐시되어 있는지 여부를 판정하는 단계(S100)가 수행될 수 있다.
메타데이터는 각각의 캐시된 데이터 블록이 속한 파일의 식별자의 목록을 포함할 수 있다. 또한, 메타데이터는 각각의 캐시된 데이터 블록에 대한 블록 정보를 더 포함할 수 있다. 메타데이터에 포함된 파일 식별자에는 상기 파일 식별자에 대응하는 파일 내에 포함된 데이터 블록들 중에서 버퍼 캐시 또는 플래시 캐시에 캐시된 데이터 블록들 각각에 대응하는 블록 정보의 목록이 매핑될 수 있다.
블록 정보는 캐시된 데이터 블록이 속한 파일 내에서의 상기 캐시된 데이터 블록의 오프셋, 캐시된 데이터 블록이 저장된 캐시의 식별자, 및 캐시된 데이터 블록이 저장된 캐시 내에서 상기 캐시된 데이터 블록이 저장된 위치에 대한 정보를 포함할 수 있다. 블록 정보에 포함된 캐시의 식별자는 캐시된 데이터 블록이 버퍼 캐시에 저장되어 있는지 또는 플래시 캐시에 저장되어 있는지 여부를 판정하는 데에 이용될 수 있다.
제어부(130)는 대상 데이터 블록이 속한 파일의 식별자를 이용하여, 메타데이터 내에 상기 파일 식별자와 동일한 파일 식별자가 포함되어 있는지 여부를 검출할 수 있다. 제어부(130)는 메타데이터에 포함된 파일 식별자에 매핑된 블록 정보의 목록을 검사함으로써, 메타데이터 내에 대상 데이터 블록에 대응하는 블록 정보가 포함되어 있는지 여부를 검출할 수 있다.
다음으로, 상기 대상 데이터 블록이 캐시되어 있지 않다고 판정된 경우, 메인 메모리(110)의 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 플래시 캐시에 이동시키는 단계(S110)가 수행될 수 있다. 대상 데이터 블록이 캐시되어 있지 않다고 판정된 경우, 제어부(130)는 버퍼 캐시에 가용 블록이 남아있는지 여부를 검사할 수 있다. 만약 가용 블록이 남아있지 않은 경우, 제어부(130)는 버퍼 캐시에 이미 캐시된 적어도 하나 이상의 데이터 블록을 플래시 캐시에 이동시킬 수 있다. 만약 가용 블록이 남아있는 경우, 제어부(130)는 버퍼 캐시에 캐시된 데이터 블록을 플래시 캐시에 이동시키지 않을 수 있다.
제어부(130)는 버퍼 캐시에 캐시된 데이터 블록 중에서 플래시 캐시에 이동시킬 데이터 블록을 선정할 수 있다. 예를 들어, 제어부(130)는 버퍼 캐시에 캐시된 데이터 블록 중에서 참조된 지 가장 오래된 데이터 블록을 플래시 캐시에 이동시킬 수 있다. 다시 말해서, 제어부(130)는 LRU(Least Recently Used) 알고리즘에 따라 데이터 블록을 선정할 수 있다.
다른 실시예에 따르면, 제어부(130)는 버퍼 캐시에 캐시된 데이터 블록 중에서 가장 낮은 빈도로 참조된 데이터 블록을 플래시 캐시에 이동시킬 수 있다. 다시 말해서, 제어부(130)는 LFU(Least Frequently Used) 알고리즘에 따라 데이터 블록을 선정할 수 있다.
운영체제가 동영상 또는 음악과 같은 실시간 데이터를 포함하는 파일을 참조하는 경우를 가정하기로 한다. 운영체제는 실시간 데이터를 포함하는 파일이 참조될 때 미리읽기(read-ahead) 기능을 지원할 수 있다. 따라서, 실시간 데이터를 포함하는 파일에 포함된 데이터 블록 중에서 앞으로 참조될 것으로 예상되는 데이터 블록이 미리 캐싱될 수 있다.
미리읽기 기능에 의해 미리 캐싱된 데이터 블록은 메인 메모리(110)의 버퍼 캐시에 캐싱될 수 있다. 만약 실시간 데이터를 포함하는 데이터 블록이 플래시 캐시에 캐싱된 경우 버퍼 캐시에 비해 느린 접근 속도로 인하여 실시간으로 데이터를 처리하는 데에 문제가 발생할 수 있다. 또한, 미리읽기 기능으로 인하여, 현재 참조되는 실시간 데이터 블록은 항상 캐시되어 있음이 보장될 수 있다.
따라서, 만약 상기와 같은 방법으로 선정된 데이터 블록이 미리읽기 기능에 의해 미리 캐시된 데이터 블록인 경우, 제어부(130)는 상기 선정된 데이터 블록을 플래시 캐시에 이동시키지 않고 폐기(discard)할 수 있다.
또한, 제어부(130)는 플래시 캐시에 가용 블록이 남아있는지 여부를 검사할 수 있다. 만약 가용 블록이 남아있지 않은 경우, 제어부(130)는 플래시 캐시에 이미 캐시된 적어도 하나 이상의 데이터 블록을 폐기할 수 있다. 만약 가용 블록이 남아있는 경우, 제어부(130)는 버퍼 캐시로부터 적어도 하나 이상의 데이터 블록을 플래시 캐시에 이동시킬 수 있다.
제어부(130)는 플래시 캐시에 캐시된 데이터 블록 중에서 폐기시킬 데이터 블록을 선정할 수 있다. 예를 들어, 제어부(130)는 LRU 알고리즘 또는 LFU 알고리즘에 따라 데이터 블록을 선정할 수 있다. 플래시 캐시에 캐시된 데이터 블록 중에서 폐기시킬 데이터 블록을 선정하는 방법은 버퍼 캐시에 캐시된 데이터 블록 중에서 플래시 캐시에 이동시킬 데이터 블록을 선정하는 방법과 서로 동일하거나 서로 다를 수 있다.
다음으로, 하드디스크로부터 상기 대상 데이터 블록을 독출하여 상기 버퍼 캐시에 캐시하는 단계(S120)가 수행될 수 있다. 제어부(130)는 상기 선정된 데이터 블록이 이동되거나 폐기됨으로써 생성된 가용 블록에 하드디스크로부터 독출된 데이터 블록을 저장할 수 있다.
다음으로, 상기 판정 단계(S100)에 의해, 상기 대상 데이터 블록이 캐시되어 있다고 판정된 경우, 상기 메타데이터를 이용하여 상기 대상 데이터 블록이 캐시된 위치를 식별하는 단계(S130)가 수행될 수 있다. 제어부(130)는 메타데이터에 포함된 블록 정보 중에서 대상 데이터 블록에 대응하는 블록 정보를 이용하여, 상기 대상 데이터 블록이 캐시된 위치를 식별할 수 있다. 제어부(130)는 대상 데이터 블록이 버퍼 캐시에 캐시되어 있는지 또는 플래시 캐시에 캐시되어 있는지 여부를 식별할 수 있다.
다음으로, 상기 대상 데이터 블록이 상기 플래시 캐시에 캐시된 경우, 상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키는 단계(S140)가 수행될 수 있다. 대상 데이터 블록이 플래시 캐시에 캐시된 경우, 제어부(130)는 버퍼 캐시에 가용 블록이 남아있는지 여부를 검사할 수 있다. 만약 가용 블록이 남아있지 않은 경우, 제어부(130)는 버퍼 캐시에 이미 캐시된 적어도 하나 이상의 데이터 블록을 플래시 캐시에 이동시킬 수 있다. 만약 가용 블록이 남아있는 경우, 제어부(130)는 버퍼 캐시에 캐시된 데이터 블록을 플래시 캐시에 이동시키지 않을 수 있다.
제어부(130)는 버퍼 캐시에 캐시된 데이터 블록 중에서 플래시 캐시에 이동시킬 데이터 블록을 선정할 수 있다. 예를 들어, 제어부(130)는 LRU 알고리즘 또는 LFU 알고리즘에 따라 데이터 블록을 선정할 수 있다. 만약 선정된 데이터 블록이 미리읽기 기능에 의해 미리 캐싱된 데이터 블록인 경우, 제어부(130)는 상기 선정된 데이터 블록을 플래시 캐시에 이동시키지 않고 폐기(discard)할 수 있다.
또한, 제어부(130)는 플래시 캐시에 가용 블록이 남아있는지 여부를 검사할 수 있다. 만약 가용 블록이 남아있지 않은 경우, 제어부(130)는 플래시 캐시에 이미 캐시된 적어도 하나 이상의 데이터 블록을 폐기할 수 있다. 만약 가용 블록이 남아있는 경우, 제어부(130)는 버퍼 캐시로부터 적어도 하나 이상의 데이터 블록을 플래시 캐시에 이동시킬 수 있다.
제어부(130)는 플래시 캐시에 캐시된 데이터 블록 중에서 폐기시킬 데이터 블록을 선정할 수 있다. 예를 들어, 제어부(130)는 LRU 알고리즘 또는 LFU 알고리즘에 따라 데이터 블록을 선정할 수 있다. 플래시 캐시에 캐시된 데이터 블록 중에서 폐기시킬 데이터 블록을 선정하는 방법은 버퍼 캐시에 캐시된 데이터 블록 중에서 플래시 캐시에 이동시킬 데이터 블록을 선정하는 방법과 서로 동일하거나 서로 다를 수 있다.
다음으로, 상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계(S150)가 수행될 수 있다. 제어부(130)는 대상 데이터 블록을 플래시 캐시로부터 버퍼 캐시의 가용 블록에 이동시키거나 복사할 수 있다. 데이터 블록이 배타적 캐싱에 의해 캐시되고 있는 경우, 대상 데이터 블록은 플래시 캐시로부터 버퍼 캐시에 이동될 수 있다. 또한, 데이터 블록이 포괄적 캐싱에 의해 캐시되고 있는 경우, 대상 데이터 블록은 플래시 캐시로부터 버퍼 캐시에 복사될 수 있다. 대상 데이터 블록이 이동되거나 복사된 후에는, 메타데이터가 갱신될 수 있다.
상기와 같은 방법에 의해, 참조하고자 하는 대상 데이터 블록은 메인 메모리(110)의 버퍼 캐시에 캐시되어 있음이 보장될 수 있다. 대상 데이터 블록은 버퍼 캐시로부터, 상기 대상 데이터 블록을 참조하려고 하는 프로그램의 메모리 영역에 복사될 수 있다.
이상에서 설명된 실시예에 따르면, 디스크 캐시를 탐색하는 시간이 단축될 수 있다. 또한, 디스크 캐시의 히트율이 증가될 수 있다. 또한, 디스크 캐시를 탐색하는 데에 이용되는 메타데이터가 차지하는 공간이 축소될 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (18)

  1. 버퍼 캐시를 포함하는 메인 메모리;
    플래시 캐시를 포함하는 플래시 메모리; 및
    상기 버퍼 캐시 및 상기 플래시 캐시를 제어하는 제어부를 포함하고,
    상기 버퍼 캐시 또는 상기 플래시 캐시는 디스크에 저장된 데이터 블록을 캐시하고, 상기 제어부는 메타데이터를 이용하여 상기 캐시된 데이터 블록이 캐시된 위치를 식별하는 디스크 캐시 제어 장치.
  2. 제1항에 있어서,
    상기 제어부는 상기 메타데이터를 이용하여, 상기 캐시된 데이터 블록이 상기 버퍼 캐시에 캐시되어 있는지 또는 상기 캐시된 데이터 블록이 상기 플래시 캐시에 캐시되어 있는지 여부를 식별하는 디스크 캐시 제어 장치.
  3. 제1항에 있어서,
    상기 메타데이터는 상기 버퍼 캐시 또는 상기 플래시 캐시 중에서 상기 캐시된 데이터 블록이 캐시된 캐시의 식별자를 포함하는 디스크 캐시 제어 장치.
  4. 제3항에 있어서,
    상기 메타데이터는 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 더 포함하는 디스크 캐시 제어 장치.
  5. 제4항에 있어서,
    상기 캐시된 데이터 블록 중에서 적어도 일부의 데이터 블록은 상기 버퍼 캐시 및 상기 플래시 캐시에 동시에 캐시되고, 상기 메타데이터는 상기 캐시된 데이터 블록이 캐시된 상기 캐시의 식별자의 목록 및 각각의 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함하는 디스크 캐시 제어 장치.
  6. 제4항에 있어서,
    상기 캐시된 데이터 블록은 상기 버퍼 캐시 또는 상기 플래시 캐시에 배타적으로 캐시된 디스크 캐시 제어 장치.
  7. 제1항에 있어서,
    상기 메타데이터는 상기 캐시된 데이터 블록이 속한 파일의 파일 식별자의 목록 및 상기 캐시된 데이터 블록에 대한 블록 정보를 포함하는 디스크 캐시 제어 장치.
  8. 제7항에 있어서,
    각각의 상기 파일 식별자에는 상기 파일 식별자에 대응하는 파일 내에 포함된 상기 데이터 블록들 중에서 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시된 데이터 블록들에 대응하는 블록 정보의 목록이 매핑된 디스크 캐시 제어 장치.
  9. 제7항에 있어서,
    상기 블록 정보는 상기 캐시된 데이터 블록이 속한 파일 내에서의 상기 캐시된 데이터 블록의 오프셋, 상기 캐시된 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함하는 디스크 캐시 제어 장치.
  10. 제1항에 있어서,
    상기 제어부는 상기 데이터 블록 중에서의 대상 데이터 블록이 속한 파일의 파일 식별자 및 상기 파일 내에서의 상기 대상 데이터 블록의 오프셋을 이용하여 상기 대상 데이터 블록이 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시되어 있는지 여부를 판정하는 디스크 캐시 제어 장치.
  11. 제10항에 있어서,
    상기 제어부는 상기 메타데이터로부터 상기 파일 식별자 및 상기 오프셋을 이용하여 상기 대상 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 대상 데이터 블록이 캐시된 위치에 대한 정보를 획득하는 디스크 캐시 제어 장치.
  12. 메타데이터를 이용하여, 대상 데이터 블록이 버퍼 캐시 또는 플래시 캐시에 캐시되어 있는지 여부를 판정하는 단계;
    상기 대상 데이터 블록이 캐시되어 있지 않다고 판정된 경우, 상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키거나 폐기하는 단계; 및
    디스크로부터 상기 대상 데이터 블록을 독출하여 상기 버퍼 캐시에 캐시하는 단계
    를 포함하고,
    상기 메타데이터는 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시된 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함하는 디스크 캐시 제어 방법.
  13. 제12항에 있어서,
    상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키거나 폐기하는 단계는,
    상기 버퍼 캐시에 캐시된 데이터 블록 중에서 상기 적어도 하나 이상의 데이터 블록을 선정하는 단계;
    상기 선정된 데이터 블록이 미리읽기(read-ahead) 기능에 의해 캐시된 경우, 상기 선정된 데이터 블록을 폐기하는 단계; 및
    상기 선정된 데이터 블록이 미리읽기(read-ahead) 기능에 의해 캐시되지 않은 경우, 상기 선정된 데이터 블록을 상기 플래시 캐시에 이동시키는 단계
    를 포함하는 디스크 캐시 제어 방법.
  14. 제13항에 있어서,
    상기 버퍼 캐시에 캐시된 데이터 블록 중에서 상기 적어도 하나 이상의 데이터 블록을 선정하는 단계는,
    상기 버퍼 캐시에 캐시된 상기 데이터 블록 중에서 참조된 지 가장 오래된 데이터 블록을 선정하는 단계
    를 포함하는 디스크 캐시 제어 방법.
  15. 제13항에 있어서,
    상기 버퍼 캐시에 캐시된 데이터 블록 중에서 상기 적어도 하나 이상의 데이터 블록을 선정하는 단계는,
    상기 버퍼 캐시에 캐시된 상기 데이터 블록 중에서 가장 낮은 빈도로 참조된 데이터 블록을 선정하는 단계
    를 포함하는 디스크 캐시 제어 방법.
  16. 메타데이터를 이용하여, 대상 데이터 블록이 버퍼 캐시 또는 플래시 캐시에 캐시되어 있는지 여부를 판정하는 단계;
    상기 대상 데이터 블록이 캐시되어 있다고 판정된 경우, 상기 메타데이터를 이용하여 상기 대상 데이터 블록이 상기 버퍼 캐시에 캐시되어 있는지 또는 상기 플래시 캐시에 캐시되어 있는지 여부를 식별하는 단계;
    상기 대상 데이터 블록이 상기 플래시 캐시에 캐시된 경우, 상기 버퍼 캐시에 캐시된 적어도 하나 이상의 데이터 블록을 상기 플래시 캐시에 이동시키거나 폐기하는 단계; 및
    상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계
    를 포함하고,
    상기 메타데이터는 상기 버퍼 캐시 또는 상기 플래시 캐시에 캐시된 데이터 블록이 캐시된 캐시의 식별자 및 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함하는 디스크 캐시 제어 방법.
  17. 제16항에 있어서,
    상기 캐시된 데이터 블록 중에서 적어도 일부의 데이터 블록은 상기 버퍼 캐시 및 상기 플래시 캐시에 동시에 캐시되고, 상기 메타데이터는 상기 캐시된 데이터 블록이 캐시된 상기 캐시의 식별자의 목록 및 각각의 상기 캐시 내에서 상기 캐시된 데이터 블록이 캐시된 위치에 대한 정보를 포함하고,
    상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계는,
    상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 복사하는 단계
    를 포함하는 디스크 캐시 제어 방법.
  18. 제16항에 있어서,
    상기 캐시된 데이터 블록은 상기 버퍼 캐시 또는 상기 플래시 캐시에 배타적으로 캐시되고,
    상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키거나 복사하는 단계는,
    상기 플래시 캐시로부터 상기 대상 데이터 블록을 상기 버퍼 캐시에 이동시키는 단계
    를 포함하는 디스크 캐시 제어 방법.
KR1020140003606A 2014-01-10 2014-01-10 디스크 캐시 제어 장치 및 방법 KR102195896B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140003606A KR102195896B1 (ko) 2014-01-10 2014-01-10 디스크 캐시 제어 장치 및 방법
US14/592,995 US9477416B2 (en) 2014-01-10 2015-01-09 Device and method of controlling disk cache by identifying cached data using metadata

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140003606A KR102195896B1 (ko) 2014-01-10 2014-01-10 디스크 캐시 제어 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150083728A true KR20150083728A (ko) 2015-07-20
KR102195896B1 KR102195896B1 (ko) 2020-12-28

Family

ID=53521408

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140003606A KR102195896B1 (ko) 2014-01-10 2014-01-10 디스크 캐시 제어 장치 및 방법

Country Status (2)

Country Link
US (1) US9477416B2 (ko)
KR (1) KR102195896B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170119850A (ko) * 2016-04-20 2017-10-30 한국전자통신연구원 디스크 캐시 운용 장치 및 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI671756B (zh) * 2018-11-13 2019-09-11 慧榮科技股份有限公司 資料儲存裝置與資料儲存方法
US11500549B2 (en) * 2019-04-19 2022-11-15 EMC IP Holding Company LLC Secure host access to storage system resources via storage system interface and internal switching fabric
US11210227B2 (en) * 2019-11-14 2021-12-28 International Business Machines Corporation Duplicate-copy cache using heterogeneous memory types
US11372764B2 (en) 2019-11-14 2022-06-28 International Business Machines Corporation Single-copy cache using heterogeneous memory types

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US20120144109A1 (en) * 2010-12-07 2012-06-07 International Business Machines Corporation Dynamic adjustment of read/write ratio of a disk cache
US20130173853A1 (en) * 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US20140013027A1 (en) * 2012-07-06 2014-01-09 Seagate Technology Llc Layered architecture for hybrid controller

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716411B2 (en) * 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US20120144109A1 (en) * 2010-12-07 2012-06-07 International Business Machines Corporation Dynamic adjustment of read/write ratio of a disk cache
US20130173853A1 (en) * 2011-09-26 2013-07-04 Nec Laboratories America, Inc. Memory-efficient caching methods and systems
US20140013027A1 (en) * 2012-07-06 2014-01-09 Seagate Technology Llc Layered architecture for hybrid controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170119850A (ko) * 2016-04-20 2017-10-30 한국전자통신연구원 디스크 캐시 운용 장치 및 방법

Also Published As

Publication number Publication date
US9477416B2 (en) 2016-10-25
KR102195896B1 (ko) 2020-12-28
US20150199142A1 (en) 2015-07-16

Similar Documents

Publication Publication Date Title
US9779027B2 (en) Apparatus, system and method for managing a level-two cache of a storage appliance
US9817765B2 (en) Dynamic hierarchical memory cache awareness within a storage system
US9710397B2 (en) Data migration for composite non-volatile storage device
US9477607B2 (en) Adaptive record caching for solid state disks
US9569114B2 (en) Deduplication using a master and a slave
US20140115244A1 (en) Apparatus, system and method for providing a persistent level-two cache
TW201301030A (zh) 在一記憶體裝置中減少次要位址表檢查之快速轉譯指示器
KR102195896B1 (ko) 디스크 캐시 제어 장치 및 방법
WO2018104789A1 (en) Systems and methods for caching data
CN108153682B (zh) 一种利用闪存内部并行性进行闪存转换层地址映射的方法
US10037281B2 (en) Method for disk defrag handling in solid state drive caching environment
US20140223072A1 (en) Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology
JP2014199574A (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
CN108228088B (zh) 用于管理存储系统的方法和设备
JPWO2018211749A1 (ja) ストレージコントローラ、ストレージシステム、ストレージコントローラの制御方法およびプログラム
US20140372706A1 (en) System and method for dynamic allocation of unified cache to one or more logical units
CN109002400B (zh) 一种内容感知型计算机缓存管理系统及方法
US8732404B2 (en) Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to
US9846647B2 (en) Cache device and control method threreof
KR101477776B1 (ko) 플래시 메모리에서의 페이지 교체 방법
US9442863B1 (en) Cache entry management using read direction detection
CN115509437A (zh) 存储系统、网卡、处理器、数据访问方法、装置及系统
CN109582233A (zh) 一种数据的缓存方法和装置
US20170052889A1 (en) Cache-aware background storage processes
KR20120120651A (ko) 저전력 하이브리드 스토리지 시스템 및 이를 이용한 데이터 처리방법

Legal Events

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