KR101475483B1 - 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 - Google Patents
비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 Download PDFInfo
- Publication number
- KR101475483B1 KR101475483B1 KR20130074464A KR20130074464A KR101475483B1 KR 101475483 B1 KR101475483 B1 KR 101475483B1 KR 20130074464 A KR20130074464 A KR 20130074464A KR 20130074464 A KR20130074464 A KR 20130074464A KR 101475483 B1 KR101475483 B1 KR 101475483B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- volatile
- cache
- data
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명의 비휘발성 메모리 통합 제어 시스템은 캐시 블록을 유지하는 비휘발성 버퍼 캐시, 저널 블록을 유지하는 비휘발성 저널 영역, 데이터 블록을 유지하는 비휘발성 스토리지 및 메모리 통합 제어부를 포함할 수 있다. 메모리 통합 제어부는 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 비휘발성 버퍼 캐시, 비휘발성 저널 영역과 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 비휘발성 버퍼 캐시 내의 캐시 블록과 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작할 수 있다.
Description
본 발명은 스토리지 데이터 관리 기법에 관한 것으로, 더욱 상세하게는, 비휘발성 메모리 소자로 구현된 스토리지 데이터의 관리 기법에 관한 것이다.
최근 PCM(Phase Change Memory)과 STT-MRAM(Spin Torque Transfer Magnetic RAM)과 같은 비휘발성 메모리 기술(NVRAM, Non-volatile RAM) 이 급속도로 발전함에 따라 수년 내에 DRAM(Dynamic RAM)을 대체하여 메인메모리로 사용될 것으로 예상되고 있다. NVRAM은 성능, 집적도, 전력 등 다양한 측면에서 경우에 따라 DRAM보다 좋은 특성을 보일 수 있다.
비휘발성 메인 메모리의 등장은 기존의 휘발성 메인메모리를 탑재한 계층적 스토리지 관리 메커니즘에 상당한 변화를 일으킬 것으로 예상된다. 나아가, 메인 메모리, 버퍼캐시와 스토리지가 모두 비휘발성 메모리로 구현되는 시스템도 머지 않아 도입될 것으로 예상된다.
전통적인 시스템에서 버퍼 캐시는 휘발성 매체인 DRAM 에 의해 제공되었기 때문에 데이터의 빠른 접근을 위해 일시적으로 보관하는 용도로 사용해왔다. 그러나 버퍼 캐시를 비휘발성 매체로 구현하게 되면, 전통적인 임시 저장 장소인 버퍼 캐시도 데이터의 반영구적인 저장소인 대용량 스토리지와 마찬가지로 반영구적으로 터이터를 보관할 수 있다.
한편, 플래시 메모리에서는 한번 데이터가 생성되면 특별한 사정이 없는 한, 동일한 위치에 반영구적으로 저장될 수 있는 하드디스크와는 달리, 예를 들어 데이터 단위의 갱신이 없어도 가비지 컬렉션(Garbage Collection 또는 GC)과 같은 비휘발성 스토리지 장치 특유의 부수적인 관리 작업으로 인해 자체적으로 쓰기 작업을 끊임없이 수행한다.
이렇듯 쓰기 연산이 상대적으로 느린 비휘발성 대용량 스토리지 장치에서는, 이러한 관리 작업과 같은 오버헤드로 인해 성능이 저하되고 수명이 단축되기 때문에, 데이터를 유지하는 데에도 적지 않은 비용이 든다.
따라서, 이러한 맥락에서 비휘발성 저장 매체가 버퍼 캐시 및 대용량 스토리지로서 사용되는 환경에서, 버퍼 캐시와 대용량 스토리지를 통합적으로 관리하고, 또한 성능과 수명을 연장시킬 수 있는 스토리지 관리 기법이 필요하다.
한편, 종래에 파일 시스템의 비정상 종료(system failure)에 대처하는 가장 일반적인 방법은, 예를 들어 리눅스(Linux)에서는 부팅을 하는 시점에 fsck와 같은 소정의 유틸리티를 가지고 파일 시스템의 일관성(integrity) 검사를 수행하는 방식으로서, 파일 시스템을 조사하여 문제점을 발견하면 알아서 교정하거나, 자동으로 교정이 불가능하면 사용자가 직접 복구할 수 있게 복구 모드로 재부팅하는 식이다.
운영체제의 버전에 따라 파일시스템 메타 데이터의 항상성을 확인하기 위해 fsck과 같은 유틸리티를 마운트 시점에서 항상 수행하는 경우도 있다. 따라서 기존의 방식에서는, 파일시스템에 언제 문제가 있을지 모르므로 파일 시스템을 항상 조사하거나 어디서 문제가 발견될 것인지 모르기 때문에 방대한 파일 시스템을 순차적으로 조사를 해야 한다.
이러한 단점을 극복하기 위해 제안된 저널링 기법은 변경 사항들이 파일 시스템으로 기록되기 전에 일단 저널에 변경 사항들을 기록하고 변경 사항들에 관한 메타 데이터를 로그로 관리하는 기법으로서, 파일 시스템의 비정상적 종료 시에 높은 신뢰성과 빠른 속도를 가지고 복구할 수 있고, 정상적인 동작 시에도 느린 디스크를 대신하여 상대적으로 빠른 저널을 이용함으로써 디스크 성능에서 향상을 볼 수 있다.
파일시스템의 메타 데이터는 디스크 내에 구조적으로 저장되는 데이터의 관리를 위한 구조 관리용 2차적 데이터로서, 파일의 생성, 삭제, 디렉토리의 생성과 삭제, 파일 크기의 증가 감소 등에 따라 생성되는 데이터이다. 다시 말해 파일 시스템에 반영되는 변경 사항들에 관한 정보들이다.
저널링 기법을 채용한 파일 시스템을 저널링 파일 시스템이라고 한다. 공통적으로 저널링 파일 시스템은 별도로 마련된 저널 영역에 변경 사항들을 기록하거나 또는 변경 사항과 그 메타 데이터를 함께 기록하다가, 소정의 시점이 되면 가장 최신의 변경 사항들을 스토리지의 원본 위치에 기록하는데, 이를 체크포인트(checkpoint)라고 한다.
저널 영역에 기록할 때에는 일관되게 변경되어야 하는 일련의 업데이트들을 트랜잭션 단위로 관리하며 통상 수 초 단위의 주기로 트랜잭션에 속하는 모든 데이터가 저널 영역에 성공적으로 기록됨을 보장하는 커밋(commint)이라 불리는 동작을 수행한다.
저널링 파일 시스템들은 개발사마다 세부적인 정책에서 다소 다르게 개발되고 있다. 예를 들어, 정책에 따라 변경 사항을 스토리지의 원본 위치에 저장하고 나서 메타 데이터를 저널 영역에 기록한다거나, 메타 데이터와 변경 사항을 저널에 기록하고 다시 변경 사항을 스토리지의 원본 위치에 기록할 수도 있다. 또한 정책에 따라, 남은 공간이 부족해지면 저널을 체크포인트할 수도 있고, 정해진 시간이 되면 저널을 체크포인트할 수도 있다.
저널링 파일 시스템의 저널 영역은 시스템의 비정상 종료와 그 이후에도 저장 상태를 유지해야 하므로 비휘발성 스토리지의 일부 공간을 이용한다.
저널링 작업이 없는 시스템에서는 캐시 내에 공간 여유가 없어 교체(replacement)가 수행되어야 하는 순간이 되어야 갱신된 데이터를 메인 메모리로부터 저장 장치에 옮겨 기록하던 것과 달리, 저널링 작업은 시스템의 취약성을 줄이기 위해서라도 수 초 단위로 자주 커밋을 일으키므로, 상당한 스토리지 트래픽이 유발된다. 이로 인하여, 접근 비용이 비싼 하드디스크 및 클라우드 스토리지에서는 상당한 성능 저하를 일으키며, 또한 제한된 횟수와 느린 속도를 가지고 쓰기 연산을 허용하는 플래쉬 메모리 사용 환경에서는 성능과 내구성을 상당히 저하시킬 수 있다.
최근 각광받는 클라우드 스토리지 시스템에서도 저널링 파일 시스템이 필요하다는 공감대는 있지만 저널링으로 인한 네트워크 액세스 비용으로 인하여 쉽게 적용되지 못하고 있다.
한편, 읽고 쓰기 시에 랜덤 액세스가 가능한 상변환 메모리(PCM) 또는 자기저항 메모리(STT-MRAM)과 같은 비휘발성 메모리를 메인 메모리로 사용하여 비휘발성 버퍼 캐시를 구축하는 것만으로 이러한 문제가 쉽게 해결될 것 같지만, 현실적으로는 그렇지 않다.
저널링 파일 시스템에서 신뢰성은 전원 차단 시에 데이터의 유지 만으로 제공되는 것이 아니고 또한 전원 차단 이후 재공급 내지 재부팅 시에 데이터의 일관성(consistency)이 보장되어야 한다.
예를 들어, 버퍼 캐시에 있는 데이터 및 그에 상응하는 메타 데이터의 변경은 동시적으로 발생하여야 하는데, 데이터가 비휘발성 버퍼 캐시에서 갱신된 직후에 시스템이 멈춘다면, 재부팅 후 비휘발성 버퍼 캐시 내에 최신의 변경 데이터가 남아 있다고 하더라도 메타 데이터는 최신의 변경 데이터와 일관되지 않은 상태가 되기 때문에 변경 데이터를 스토리지의 원본 위치에 반영할 경우 파일 시스템의 일관성은 무너지게 된다.
본 발명이 해결하고자 하는 과제는 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법을 제공하는 데에 있다.
본 발명의 일 측면에 따른 비휘발성 메모리 통합 제어 시스템은
캐시 블록을 유지하는 비휘발성 버퍼 캐시;
저널 블록을 유지하는 비휘발성 저널 영역;
데이터 블록을 유지하는 비휘발성 스토리지; 및
상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 스토리지의 캐싱되지 않은 데이터 블록과, 만약 캐싱되었더라도 아직 상기 비휘발성 저널 영역에 커밋되지 않은 더티 최신 캐시 블록에 상응하는 상기 비휘발성 스토리지의 데이터 블록을 각각 유효 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
만약 상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 스토리지의 해당 데이터 블록을 비유효 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터를 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 클린 최신 캐시 블록에 상응하는 상기 비휘발성 스토리지의 데이터 블록을 삭제 가능 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
읽기 액세스에 대응하여 상기 비휘발성 스토리지의 데이터 블록이 상기 비휘발성 버퍼 캐시에 캐싱되었거나, 상기 비휘발성 버퍼 캐시 내의 더티 최신 캐시 블록에 대한 체크포인트 연산에 따라 상기 비휘발성 스토리지의 데이터 블록에 최신의 데이터가 저장되는 조건에 해당하는 캐시 블록을 클린 최신 캐시 블록으로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 스토리지 내에서 삭제 가능 상태로 설정된 데이터 블록이 가비지 컬렉션으로 인해 삭제되는지 여부를 모니터링하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
만약 삭제 가능 상태로 설정되어 원본으로 간주되고 있던 데이터 블록이 상기 비휘발성 스토리지에서 삭제되면, 상기 삭제된 데이터 블록에 상응하여 상기 비휘발성 버퍼 캐시 내에 캐싱되어 있던 클린 최신 캐시 블록을 쓰기 금지된 더티 최신 캐시 블록으로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록에 저장된 데이터를 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
커밋 연산 시점에 상기 비휘발성 버퍼 캐시 내에 존재하는 쓰기 금지된 더티 최신 캐시 블록에 대하여, 쓰기 금지 설정을 해제하고 더티 최신 캐시 블록으로 전환하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터를 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
체크포인트 연산 시에 상기 비휘발성 저널 영역의 저널 블록에 저장되어 원본으로 간주되었던 데이터를 상기 비휘발성 스토리지의 데이터 블록에 저장하고, 상기 비휘발성 스토리지에 저장된 데이터를 삭제 가능 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
만약 상기 비휘발성 버퍼 캐시 내의 쓰기 금지된 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고, 쓰기 금지된 더티 최신 캐시 블록을 쓰기 금지된 더티 과거 캐시 블록으로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 과거 캐시 블록에 저장된 데이터를 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
커밋 연산 시점에 존재하는 쓰기 금지된 더티 과거 캐시 블록을 쓰기 금지 더티 불용 캐시로 전환하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
쓰기 금지된 더티 불용 캐시 블록 또는 쓰기 금지된 더티 과거 캐시 블록을 빈 캐시 블록으로 반환하도록 동작할 수 있다.
일 실시예에 따라,
본 발명의 다른 측면에 따른 정보 처리 장치는
프로세서; 및
비휘발성 메모리 통합 제어 시스템을 포함하는 정보 처리 장치로서,
상기 비휘발성 메모리 통합 제어 시스템은,
캐시 블록을 유지하는 비휘발성 버퍼 캐시;
저널 블록을 유지하는 비휘발성 저널 영역;
데이터 블록을 유지하는 비휘발성 스토리지; 및
상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함할 수 있다.
본 발명의 또 다른 측면에 따른 비휘발성 메모리 통합 제어 방법은,
캐시 블록을 유지하는 비휘발성 버퍼 캐시, 저널 블록을 유지하는 비휘발성 저널 영역 및 데이터 블록을 유지하는 비휘발성 스토리지를 통합적으로 관리하기 위한 비휘발성 메모리 통합 제어 방법으로서,
캐싱되지 않은 비휘발성 스토리지의 데이터 블록을 유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱된 캐시 블록이 상기 비휘발성 저널 영역에 커밋되지 않은 더티 최신 캐시 블록이면, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱되었지만 커밋되지 않은 캐시 블록이 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 비유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱된 캐시 블록이 클린 최신 캐시 블록이면, 상기 비휘발성 스토리지의 상응하는 데이터 블록을 삭제 가능 상태로 설정하는 단계; 및
만약 삭제 가능 상태로 설정된 데이터 블록이 삭제되면, 캐싱된 클린 최신 캐시 블록을 쓰기 금지 더티 최신 캐시 블록으로 설정하고, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 명목상으로 비유효 상태로 설정하는 단계를 포함할 수 있다.
일 실시예에 따라,
상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터가 원본으로 간주될 수 있다.
일 실시예에 따라,
읽기 액세스에 대응하여 상기 비휘발성 스토리지의 데이터 블록이 상기 비휘발성 버퍼 캐시에 캐싱되었거나, 상기 비휘발성 버퍼 캐시 내의 더티 최신 캐시 블록에 대한 체크포인트 연산에 따라 상기 비휘발성 스토리지의 데이터 블록에 최신의 데이터가 저장되는 조건에 해당하는 캐시 블록이 클린 최신 캐시 블록으로 설정될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은
상기 비휘발성 스토리지 내에서 삭제 가능 상태로 설정된 데이터 블록이 가비지 컬렉션으로 인해 삭제되는지 여부를 모니터링하는 단계를 더 포함할 수 있다.
일 실시예에 따라,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록에 저장된 데이터가 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 버퍼 캐시 내에 존재하는 쓰기 금지된 더티 최신 캐시 블록에 대하여 쓰기 금지 설정을 해제하고 더티 최신 캐시 블록으로 전환하는 단계를 더 포함할 수 있다.
일 실시예에 따라,
커밋 연산에 따라, 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터가 원본으로 간주될 수 있다.
일 실시예에 따라,
체크포인트 연산에 따라, 상기 비휘발성 저널 영역의 저널 블록에 저장되어 원본으로 간주되었던 데이터가 상기 비휘발성 스토리지의 데이터 블록에 저장되고, 상기 비휘발성 스토리지에 저장된 데이터가 삭제 가능 상태로 설정될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은,
만약 상기 비휘발성 버퍼 캐시 내의 쓰기 금지된 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고, 쓰기 금지된 더티 최신 캐시 블록을 쓰기 금지된 더티 과거 캐시 블록으로 설정하는 단계를 더 포함할 수 있다.
일 실시예에 따라,
커밋 연산에 따라, 쓰기 금지된 더티 과거 캐시 블록이 쓰기 금지된 더티 불용 캐시 블록으로 전환될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은
상기 쓰기 금지된 더티 불용 캐시 블록 또는 쓰기 금지된 더티 과거 캐시 블록을 빈 캐시 블록으로 반환하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 측면에 따른 컴퓨터로 읽을 수 있는 기록 매체는 컴퓨터에서 본 발명의 일 실시예에 따른 비휘발성 메모리 통합 제어 방법을 구현할 수 있는 프로그램이 수록된 기록 매체일 수 있다.
본 발명의 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법에 따르면, 비휘발성 버퍼 캐시와 비휘발성 스토리지를 통합적으로 관리하므로 캐시와 스토리지 사이에 중복된 컨텐츠를 저장하는 블록을 최소화할 수 있다.
본 발명의 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법에 따르면, 비휘발성 버퍼 캐시 내에서 업데이트된 컨텐츠를 가진 블록의 원자성(atomity)을 보장할 수 있다.
본 발명의 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법에 따르면, 비휘발성 스토리지에서 가비지 컬렉션과 같은 기존의 필수적 관리 작업들과 충돌하지 않고 버퍼 캐시와 스토리지의 데이터 저장 공간을 통합적으로 관리할 수 있다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치를 가지는 정보 처리 장치를 예시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에서 버퍼 캐시 블록의 상태 변화를 설명하기 위한 상태 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후에 일어나는 동작을 예시한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후 일어나는 다른 동작을 예시한 개념도이다.
도 5은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법을 예시한 순서도이다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에서 버퍼 캐시 블록의 상태 변화를 설명하기 위한 상태 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후에 일어나는 동작을 예시한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후 일어나는 다른 동작을 예시한 개념도이다.
도 5은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법을 예시한 순서도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
본 발명은 한국연구재단에서 관리하는 기초연구사업-중견연구자지원사업의 "프로그램 특성 분석에 기반한 스마트 디바이스용 임베디드 운영체제 설계" 연구과제(정부과제고유번호 1345176231호)의 지원으로 수행된 연구 결과를 토대로 한다.
아래에서, 달리 국부적으로 정의되지 않았다면 동일한 어드레스로 참조되는 데이터에 관하여, 데이터 블록은 해당 데이터가 스토리지에 저장된 블록을 가리키고, 캐시 블록은 버퍼 캐시에 저장된 블록을 가리키며, 저널 블록은 저널 영역에 저장된 블록을 가리킨다.
일반적으로, 커밋 연산에 의해 버퍼 캐시로부터 가장 최신의 일관성있는 버전의 데이터가 저널 영역에 확정적으로 저장되는데, 이러한 동작은 커밋 연산의 관점에서는 커밋으로 지칭되고 저널 영역의 관점에서는 저널링으로 지칭될 수 있다. 따라서, 본 명세서 전반에 걸쳐, "커밋 연산된", "커밋된", "저널링된" 등의 용어들은 상호 혼용될 수 있다.
본 출원에서 "삭제 가능 상태"라 함은, 스토리지의 데이터 블록이 유효한 데이터를 가지고 있지만 스토리지 장치의 가비지 컬렉션 대상이 될 수 있는 상태임을 의미하며, 데이터 블록이 비유효한 데이터를 가지고 있는 경우에는 당연히 가비지 컬렉션될 수 있다.
본 출원에서 "원본"은 만약 시스템이 비정상적으로 종료되었을 경우에 정상적으로 재기동되기 위한, 일관성을 보장하는 버전으로서 가장 최신인 데이터를 가리킨다.
도 1은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치를 가지는 정보 처리 장치를 예시한 블록도이다.
도 1을 참조하면, 본 발명의 정보 처리 장치(1)는 프로세서(10)와 비휘발성 메모리 통합 제어 시스템(20)을 가질 수 있다.
프로세서(10)는 연산 코어(11)와, 다양한 레벨의 예를 들어 L1 캐시(12) 및 L2 캐시(13)를 내부적으로 가질 수 있다.
비휘발성 메모리 통합 제어 시스템(20)는 메모리 통합 제어부(21), 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23), 비휘발성 스토리지(24)를 포함할 수 있다.
메모리 통합 제어부(21)는 하드웨어로 구현될 수도 있고, 적어도 부분적으로 메모리 컨트롤러 장치와 같은 하드웨어와 운영체제나 드라이버와 같은 소프트웨어의 조합으로 구현될 수도 있다.
비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23)과 비휘발성 스토리지(24)는 실시예에 따라 하나의 물리적인 저장 매체 내에서 논리적으로 구분된 영역들로 구현될 수도 있고 또는 별개의 물리적 저장 매체들로써 구현될 수도 있다.
메모리 통합 제어부(21)는 가장 최신의 일관된 데이터 원본(up-to-date consistent authentic data)을 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23)과 비휘발성 스토리지(24) 중 어느 하나에 유지하고 관리하며 시스템 고장으로부터 보호함으로써, 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23), 비휘발성 스토리지(24)에 저장된 구원본 데이터(previously orignial data), 신원본 데이터(newly original data) 및 갱신 데이터(updated data)의 일관성을 보장할 수 있다.
통상적으로 스토리지와 버퍼 캐시는, 데이터의 원본은 스토리지에 저장된 상태에서, 읽기 또는 쓰기와 같은 스토리지 액세스 시에 데이터의 사본 또는 갱신본이 버퍼 캐시에 일시적으로 유지되며, 만약 데이터가 변경되어 버퍼 캐시의 사본이 갱신될 경우에는 갱신본이 스토리지에 반영되면서 버퍼 캐시에서 제거되는(evict) 방식으로 동작한다.
이에 반해, 본 발명의 메모리 통합 제어부(21)는 비휘발성 스토리지(24)의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라, 다시 말해 읽기 액세스, 쓰기 액세스, 커밋 연산 실행 및 체크포인트 연산 실행 여부에 따라, 유효(Valid) 상태, 삭제 가능(Removable) 상태 및 비유효(Invalid) 상태 중 하나로 설정하고, 비휘발성 스토리지(24)의 데이터 블록이 유효 상태 및 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23)과 비휘발성 스토리지(24) 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지할 수 있도록 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23) 및 비휘발성 스토리지(24)의 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 통합적으로 관리한다.
구체적으로 메모리 통합 제어부(21)의 동작을 설명하기 위해 도 2를 참조하면, 도 2는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에서 버퍼 캐시 블록의 상태 변화를 설명하기 위한 상태 다이어그램이다.
도 2에서, 가로 선으로 분할된 원에 관하여, 상반부는 캐시 블록의 상태를 의미하고 하반부는 데이터 블록의 상태를 의미하며, 상반부 일측의 작은 원은 이러한 상태들의 인덱스이다.
화살표는 읽기/쓰기 액세스, 커밋/체크포인트 연산, 삭제 검출 등의 제어 동작들을 의미한다. 도 6의 각각의 단계들(S61 내지 S69)과 대응 관계가 예시되어 있다.
상태 0(S0)은 비휘발성 스토리지(24)의 데이터 블록들에 대해 읽기나 쓰기 액세스가 없어서 비휘발성 버퍼 캐시(22)에 캐싱이 일어나지 않았거나, 또는 비휘발성 버퍼 캐시(22)로부터 체크포인트 연산이 완료되고 또한 비휘발성 버퍼 캐시(22) 내에 상응하였던 캐시 블록이 빈 캐시 블록으로 회수된 경우이다.
상태 0에 해당하는 비휘발성 스토리지(24)의 데이터 블록들은 유효 상태로 설정되고, 그러한 데이터 블록에 저장된 데이터가 원본으로 간주된다.
상태 1(S1)은 비휘발성 버퍼 캐시(22) 내에서 캐싱된 캐시 블록이 클린 최신 캐시 블록인 경우로서, 메모리 통합 제어부(21)는 상태 1(S1)에 해당하는 비휘발성 스토리지(24)의 데이터 블록을 삭제 가능 상태로 설정한다.
구체적으로, 메모리 통합 제어부(21)는, 만약 비휘발성 스토리지(24)에서 아직 캐싱되지 않은 상태 0(S0)의 어떤 데이터 블록에 대해 읽기 액세스가 있을 경우에, 또는 추후에 설명할 비휘발성 저널 영역(23)에 커밋된 저널 블록이 존재하고 또한 비휘발성 버퍼 캐시(22)에 쓰기 가능한 최신 더티 캐시 블록이 있던 상태 3(S3)에서 체크포인트 연산이 수행됨에 따라 비휘발성 스토리지(24)의 빈 데이터 블록에 최신의 데이터가 저장될 경우에, 비휘발성 버퍼 캐시(22)의 캐시 블록을 클린 최신 캐시 블록으로 설정하고, 비휘발성 스토리지(24)의 데이터 블록을 삭제 가능 상태 1(S1)로 설정한다.
이 경우, 메모리 통합 제어부(21)는, 비휘발성 스토리지(24) 내에서 삭제 가능 상태로 설정된 데이터 블록에 저장된 데이터를 원본으로 간주하고, 해당 데이터 블록을 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에 캐싱한다.
이때, 비휘발성 스토리지(24)의 삭제 가능 상태인 상태 1(S1)의 데이터 블록은 언제라도 가비지 컬렉션에 의해 삭제될 수 있는 불안정한 상태에 놓여 있기는 하지만, 상태 1(S1)인 데이터 블록의 동일한 데이터가 비휘발성 버퍼 캐시(22)의 클린 최신 캐시 블록에 캐싱되어 있으므로, 데이터 블록이 삭제되더라도 일관된 데이터를 제공할 수 있다.
다만, 이 경우에, 비휘발성 스토리지(24)의 로컬 컨트롤러는 가비지 컬렉션을 수행하여 삭제 가능 상태의 데이터 블록을 언제라도 삭제할 수 있기 때문에, 상위의 메모리 통합 제어부(21)가 이러한 가비지 컬렉션에 따른 삭제 가능 상태의 데이터 블록의 삭제를 모니터링하는 구성이 추가적으로 필요할 수 있다.
메모리 통합 제어부(21)는 상태 1(S1)인 동안에 읽기 액세스에 대응하여, 해당 데이터 블록의 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에서 직접 읽기 연산을 수행한다.
반면에 쓰기 액세스가 있으면, 상태 1(S1)의 데이터 블록과 캐시 블록은 상태 2(S2)로 전환된다.
한편, 이러한 구성을 가비지 컬렉션의 관점에서 보면, 종래에 가비지 컬렉션은 비유효한 데이터들을 가지는 블록들을 정리하기 위한 동작임에 비해, 본 발명의 가비지 컬렉션은 유효한 데이터를 가지는 블록이라도, 만약 동일한 버전이 안전하게 비휘발성 버퍼 캐시에 읽기 캐싱되어 있다면, 비유효한 데이터들을 가지는 블록들과 함께 정리하는 동작이라고 할 수 있다.
한편, 상태 2(S2)는 상태 0(S0) 또는 상태 1(S1)인 비휘발성 스토리지(24)의 소정 데이터 블록에 대해 쓰기 액세스가 있고 커밋되기 전의 경우이다.
메모리 통합 제어부(21)는, 비휘발성 스토리지(24)의 소정 데이터 블록에 관하여 비휘발성 버퍼 캐시(22)가 커밋되지 않은 더티 최신 캐시 블록으로 설정되어 있는 한, 상태 2(S2)의 비휘발성 스토리지(24)의 해당 데이터 블록을 유효 상태로 설정한다.
메모리 통합 제어부(21)는, 만약 상태 2(S2)의 비휘발성 스토리지(24)의 소정 데이터 블록에 대한 추가적인 쓰기 액세스에 따라 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에 갱신 쓰기가 있을 경우에도, 해당 캐시 블록이 커밋되기 전까지는, 비휘발성 스토리지(24)의 해당 데이터를 유효 상태로 유지할 수 있다.
이 경우, 메모리 통합 제어부(21)는, 유효 상태로 설정된 데이터 블록에 저장된 데이터를 원본으로 간주하며, 비휘발성 버퍼 캐시(22)에 대해 커밋 연산이 수행되기 전까지는, 해당 데이터 블록의 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에서 읽기 액세스 또는 쓰기 액세스에 대응하여 읽기 또는 쓰기 연산을 수행한다.
따라서, 상태 2(S2)의 데이터 블록과 캐시 블록은 읽기 또는 쓰기 액세스 시에 상태 2를 계속 유지한다.
만약 이 시점에서 커밋 연산이 수행되기 전에 시스템이 비정상 종료되면, 비휘발성 버퍼 캐시(22)에 쓰기 연산된 최신 버전의 데이터는 버려지고, 비휘발성 스토리지(24)의 유효한 데이터 블록의 데이터가 시스템 재기동 시에 원본으로서 적용된다.
이어서, 상태 3(S3)은 상태 2(S2)인 비휘발성 버퍼 캐시(22)의 더티 최신 캐시 블록 또는 상태 4(S4)인 비휘발성 버퍼 캐시(22)의 쓰기 금지된 더티 최신 캐시 블록에 대하여 커밋 연산이 수행되는 경우로서, 체크포인트 연산이 있기 전까지, 비휘발성 스토리지(24)의 해당 블록은 비유효 상태로 설정된다.
다시 말해, 메모리 통합 제어부(21)는, 만약 비휘발성 버퍼 캐시(22) 내에서 캐싱되는 더티 최신 캐시 블록에 대해 비휘발성 저널 영역(23)에 커밋된 저널 블록이 존재한다면, 체크포인트 연산이 있기 전까지, 비휘발성 스토리지(24)의 해당 데이터 블록을 비유효 상태로 설정한다.
구체적으로, 메모리 통합 제어부(21)는, 아직 비휘발성 저널 영역(23)에 커밋되지 않은 더티 최신 캐시 블록(즉, 상태 2(S2)인 캐시 블록)에 대하여 커밋 연산이 수행된 후부터 체크포인트 연산이 있기 전까지, 더티 최신 캐시 블록의 데이터를 비휘발성 저널 영역(23)의 저널 블록에 커밋하며, 비휘발성 스토리지(24)의 해당 데이터 블록을 비유효 상태로 전환하고, 비휘발성 저널 영역(23)에 커밋된 저널 블록의 데이터를 원본으로 간주한다.
메모리 통합 제어부(21)는 체크포인트 연산이 수행되기 전까지, 즉 상태 3(S3)인 동안에, 해당 데이터 블록의 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에서 읽기 액세스 또는 쓰기 액세스에 대응하여 읽기 또는 쓰기 연산과 커밋 트리거에 대응하여 커밋 연산을 수행한다.
상태 3(S3)인 비휘발성 버퍼 캐시(22)의 더티 최신 캐시 블록에 대하여 체크포인트 연산이 수행되면, 메모리 통합 제어부(21)는 커밋된 데이터 또는 캐싱된 데이터 중 최신 데이터를 비휘발성 스토리지(24)의 데이터 블록에 저장하고, 저장된 데이터 블록을 삭제 가능 상태, 즉 상태 1(S1)로 설정할 수 있다.
한편, 상태 4(S4)는 상태 1(S1)인 비휘발성 스토리지(24)의 데이터 블록이 예를 들어 가비지 컬렉션(GC) 등으로 삭제(erase)될 경우로서, 비휘발성 스토리지(24)의 해당 데이터 블록은 삭제되기 때문에 존재하지 않게 되어 명목상 비유효 상태로 전환된다.
이에 따라, 메모리 통합 제어부(21)는, 삭제된 데이터 블록의 원본 지위를 대신하기 위하여, 비휘발성 버퍼 캐시(22) 내의 캐시 블록을 쓰기 금지(freeze)로 설정하고, 쓰기 금지 설정된(frozen) 캐시 블록에 저장된 데이터를 원본으로 간주한다.
또한, 상태 4(S4)인 캐시 블록의 쓰기 금지 이후에 커밋 연산이 있기 전까지, 메모리 통합 제어부(21)는 해당 데이터에 대해 읽기 액세스가 있을 경우에는 쓰기 금지된 캐시 블록으로부터 읽기 연산을 수행하고, 쓰기 액세스가 있을 경우에는 쓰기 데이터를 다른 빈 캐시 블록에 예를 들어 카피-온-라이트(Copy-on-Write) 기법으로 저장한다.
다르게 표현하면, 메모리 통합 제어부(21)는, 비휘발성 버퍼 캐시(22) 내에서 캐싱된 캐시 블록이 클린 최신 캐시 블록인데 비휘발성 스토리지(24) 내의 상응하는 데이터 블록이 삭제되어 없거나, 또는 비휘발성 버퍼 캐시(22) 내에서 캐싱된 캐시 블록이 커밋된 더티 최신 캐시 블록이어서 비휘발성 스토리지(24) 내의 상응하는 데이터 블록이 이제 과거 버전인 경우에는, 비휘발성 스토리지(24)의 해당 데이터 블록을 비유효 상태로 설정한다.
한편, 쓰기 금지된 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에 쓰기 금지된 더티 최신 캐시 블록은 이제 쓰기 금지된 더티 과거 캐시 블록(frozen dirty out-of-date cache)이 되고, 카피-온-라이트 기법으로 새로 쓰기된 캐시 블록은 덮어 쓰기 가능한 더티 최신 캐시 블록으로서 관리된다.
쓰기 금지된 최신 캐시 블록에 대해 쓰기 액세스가 있기 전까지는 쓰기 금지된 더티 최신 캐시 블록이 원본 역할을 하지만, 쓰기 금지된 최신 캐시 블록에 대해 쓰기 액세스가 있은 후부터 커밋 연산이 있기 전까지는, 쓰기 금지된 더티 과거 캐시 블록이 원본 역할을 한다.
다시 말해, 쓰기 액세스가 있던 상태 4(S4)의 캐시 블록은 상태 5(S5)로 전환되고, 새로 카피-온-라이트된 캐시 블록은 상태 3'(S3')로, 설정된다.
여기서, 상태 3'(S3')의 캐시 블록은 캐시 블록에 상응하는 유효한 원본 데이터 블록이 비휘발성 스토리지(24)에 존재하지 않는다는 점에서 상태 3(S3)과 유사하지만, 아직 상응하는 저널 블록이 존재하지 않은 더티 최신 캐시라는 점과, 따라서 저널 블록 대신에 쓰기 금지된 더티 과거 캐시 블록이 원본 역할을 한다는 점에서 상태 3(S3)의 캐시 블록과 다르다.
커밋 연산이 있으면, 메모리 통합 제어부(21)는 상태 5(S5)의 쓰기 금지된 더티 과거 캐시 블록을 쓰기 금지된 더티 불용 캐시 블록(frozen dirty obsolete cache)으로 전환(상태 6(S6))하고, 저널 블록이 없고 덮어 쓰기 가능한 더티 최신 캐시 블록(상태 3'(S3'))을 비휘발성 저널링 영역(23)의 저널 블록에 커밋함으로써, 커밋된 덮어 쓰기 가능한 더티 최신 캐시 블록으로 전환(상태 3(S3))한다.
이제 최신의 데이터가 비휘발성 저널링 영역(23)의 저널 블록에 커밋되었으므로, 비휘발성 저널링 영역(23)의 저널 블록에 저장된 데이터가 원본으로 간주된다.
나아가, 이후에 체크포인트 연산이 있으면, 메모리 통합 제어부(21)는 상태 3(S3)의 비휘발성 저널 영역(23)의 저널 블록의 데이터를 비휘발성 스토리지(24)에 저장하면서 저장된 데이터 블록을 상태 1(S1)의 삭제 가능 상태로 설정하며, 상태 3(S3)의 저널링된 덮어 쓰기 가능한 더티 최신 캐시 블록을 상태 1(S1)의 저널링되지 않은 덮어 쓰기 가능한 클린 최신 캐시 블록으로 전환한다.
또한, 메모리 통합 제어부(21)는 체크포인트 연산 시에, 상태 5(S5)의 쓰기 금지된 더티 과거 캐시 블록 또는 상태 6(S6)의 쓰기 금지된 더티 불용 캐시 블록을 비우고 상태 0(S0)의 빈 캐시 블록으로 반환할 수 있다.
특히, 쓰기 금지된 더티 불용 캐시 블록은 실질적으로 원본으로서도 캐시 블록으로서도 역할을 가지지 않고 용량만 차지하므로, 언제라도 예를 들어 즉시, 임의의 시점에, 또는 체크포인트 연산 시에, 빈 캐시 블록으로 반환될 수 있다.
도 3, 도 4 및 도 5는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후에 일어나는 동작들을 각각 예시한 개념도들이다.
도 3, 도 4 및 도 5에서, 이탤릭체(예를 들어, D0)는 그 시점에 원본으로 간주되는 버전이 어디에 저장되는지를 표시하며, 보통 고딕체(D0)는 클린 캐시, 굵은 고딕체는 더티 캐시, 밑줄은 상응하는 저널이 존재하는 캐시를 의미한다.
비휘발성 스토리지에서 실선 박스는 유효한 데이터를 저장 중인 블록, 파선 박스는 삭제 가능 상태(S1)의 블록, 사선으로 채워진 박스는 비유효로 설정된 데이터 블록을 각각 의미한다.
도 3을 참조하면, 시간 t=0에서 비휘발성 스토리지(24)의 데이터 블록 X에 저장된 어떤 데이터 D0가 읽기 액세스에 의해 비휘발성 버퍼 캐시(22)의 캐시 블록 A에 캐싱된다.
최초에 데이터의 원본은 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0였지만, 읽기 액세스와 함께 비휘발성 버퍼 캐시(22)도 데이터 D0를 가지는 클린 캐시가 되었으므로, t=10에서 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0는 파선으로 표시된 삭제 가능한 상태(S1)가 되어 유효하지만 언제라도 삭제될 수 있는 상태에 놓인다.
t=20에서 데이터 D0에 대해 갱신 쓰기가 일어나 캐시 블록 A의 캐시된 데이터가 D1으로 변경되며 더티 캐시가 된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이므로, 스토리지의 데이터 블록 X가 다시 유효로 설정(상태 1(S2))되면서 스토리지의 데이터 D0가 유효하면서 삭제되지 않는 원본 지위를 회복한다.
t=30에서 커밋 연산이 일어나, 캐시 블록에 갱신된 데이터 D1이 저널 영역의 저널 블록에 커밋되고, 저널 블록에 기록된 데이터 D1이 원본으로 간주된다(상태 3(S3)). 캐시 블록 A에 대해 읽기 및 쓰기 액세스가 가능하고, 스토리지의 데이터 블록 X는 이제 비유효하여 언제라도 다른 데이터의 저장에 제공될 수 있다.
t=40과 t=50에서 각각 연속으로 쓰기 액세스가 있을 경우에, 캐시 블록 A에 연속적으로 데이터 D2, D3가 각각 갱신되는데, 아직 다음 커밋이 일어나기 전이므로 저널 영역은 변경되지 않고, 저널 영역의 저널 블록에 저장된 데이터 D1이 계속 원본으로 간주된다(상태 3(S3)).
t=60에 커밋 연산이 일어나, 캐시 블록에 갱신된 데이터 D1이 저널 영역의 저널 블록에 커밋되고, 저널 영역에 기록된 데이터 D3이 원본으로 간주된다(상태 3(S3)). 캐시 블록 A에 대해 읽기 및 쓰기 액세스가 여전히 가능하다.
t=70과 80에서는 아무런 동작이 일어나지 않아 상태 3(S3)이 유지되었고, t=90에서 비로소 체크포인트 연산이 일어나면서, 저널 영역에 저장된 데이터 D3가 스토리지에 저장(체크포인트)된다. 데이터 D3를 가지는 캐시 블록 A는 최신 클린 캐시(상태 1(S1))가 되며 스토리지에 체크포인트된 데이터 D3를 가지는 스토리지의 데이터 블록 X는 삭제 가능 상태(S1)로 된다.
t=100에서 다시 쓰기 연산이 일어나는데, 이에 따라 데이터 D3에 대해 갱신 쓰기가 일어나 캐시 블록 A의 캐시된 데이터가 D4으로 변경된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이므로, 스토리지의 데이터 블록 X가 다시 유효로 설정(상태 2(S2))되면서 데이터 D3가 원본으로 간주된다.
도 4는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후 일어나는 다른 동작을 예시한 개념도이다.
도 4를 참조하면, 시간 t=0에서 비휘발성 스토리지(24)의 데이터 블록 X에 저장된 어떤 데이터 D0가 읽기 액세스에 의해 비휘발성 버퍼 캐시(22)의 캐시 블록 A에 캐싱된다.
읽기 액세스와 함께 비휘발성 버퍼 캐시(22)도 데이터 D0를 가지는 클린 캐시가 되었으므로, t=10에서 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0는 파선으로 표시된 삭제 가능한 상태(S1)가 된다.
도 3의 경우와 달리, 삭제 가능한 상태의 데이터 블록 C은 t=20에서 실제로 가비지 컬렉션 등으로 삭제되었다. 데이터 D0를 가지는 통상적인 클린 캐시였던 캐시 블록 A는 즉시 쓰기 금지된 더티 최신 캐시 블록(상태 4(S4))으로 전환되며, 쓰기 금지된 더티 최신 캐시 블록이 저장하는 데이터 D0가 삭제된 데이터 블록 X를 대신하여 원본으로 간주된다(상태 4(S4)). 캐시 블록 A에 대해 쓰기는 금지되지만 읽기 액세스가 가능하다.
t=30에서 커밋 연산이 일어나, 캐시 블록에 캐싱된 데이터 D0이 저널 영역의 저널 블록에 커밋되고, 쓰기 금지되었던 캐시 블록 A의 쓰기 금지는 해제되어 통상적인 더티 최신 캐시 블록으로 전환된다. 저널 영역에 저장된 데이터 D0이 원본으로 간주된다(상태 3(S3)).
t=40과 t=50에서 각각 연속으로 쓰기 액세스가 있을 경우에, 캐시 블록 A에 연속적으로 데이터 D1, D2가 각각 갱신되지만 아직 다음 커밋이 일어나기 전이므로 저널 영역은 데이터 D0를 가지는 상태에서 변경되지 않고, 저널 영역의 데이터 D0가 원본으로 간주된다(상태 3).
t=60에 커밋 연산이 일어나, 캐시 블록 A에 갱신된 데이터 D2가 저널 영역의 저널 블록에 커밋되고, 저널 영역에 기록된 데이터 D2이 원본으로 간주된다(상태 3(S3)).
t=70에서는 아무런 동작이 일어나지 않아 상태 3이 유지되었고, t=80에서 쓰기가 있어 캐시 블록 A가 D3로 갱신되었지만, 아직 커밋되지 않았으므로 저널 영역에는 이전 버전의 데이터 D2가 원본으로서 기능한다.
t=90에서 비로소 체크포인트 연산이 일어나면서, 저널 영역에 저장되어 있던 데이터 D2가 캐시 블록 A의 데이터 D3로 갱신되고, 최신 버전인 데이터 D3가 스토리지에 저장된다. 좀더 구체적으로는, t=60에서 커밋이 일어난 이후에 캐시 블록 A에 갱신된 데이터 D3가 t=90에서 저널 영역의 데이터 D2를 대체하고, 저널 영역에서 대체된 데이터 D3가 스토리지의 데이터 블록에 기록된다.
체크포인트 연산이 완료되면 캐시 블록 A는 최신 클린 캐시(상태 1(S1))가 되고, 스토리지에 체크포인트된 데이터 D3를 가지는 스토리지의 데이터 블록은 삭제 가능 상태(S1)로 된다.
t=100에서 다시 쓰기 연산이 일어나는데, 이에 따라 데이터 D3에 대해 갱신 쓰기가 일어나 캐시 블록 A의 캐시된 데이터가 D4으로 변경된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이므로, 스토리지의 데이터 블록이 다시 유효로 설정(상태 1(S2))되면서 스토리지의 데이터 D3가 원본으로 간주된다.
도 5는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후 실제로 가비지 컬랙션이 수행될 경우에 일어나는 또다른 동작을 예시한 개념도이다.
도 5를 참조하면, 시간 t=0에서 비휘발성 스토리지(24)의 데이터 블록 X에 저장된 어떤 데이터 D0가 읽기 액세스에 의해 비휘발성 버퍼 캐시(22)의 캐시 블록 A에 캐싱된다.
읽기 액세스와 함께 비휘발성 버퍼 캐시(22)도 데이터 D0를 가지는 클린 캐시가 되었으므로, t=10부터 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0는 파선으로 표시된 삭제 가능한 상태(S1)가 된다.
도 4에서 상태 4(S4)인 캐시 블록 A가 갱신되기 전에 커밋 연산부터 일어난 경우와 달리, 도 5에서는, 상태 4(S4)가 된 캐시 블록 A가 커밋되기 전에 갱신부터 일어난 경우가 설명된다.
t=10부터 t=40까지 캐시 블록 A에 갱신 쓰기가 일어나지 않고, 또한 데이터 블록 X도 삭제되지 않았으므로 삭제 가능 상태(S1)가 유지된다.
t=40에서 실제로 가비지 컬렉션 등으로 삭제되었다. 데이터 D0를 가지는 캐시 블록 A는 즉시 쓰기 금지된 더티 최신 캐시 블록(상태 4(S4))으로 전환되며, 쓰기 금지된 더티 최신 캐시 블록이 저장하는 데이터 D0가 삭제된 데이터 블록 X를 대신하여 원본으로 간주된다(상태 4(S4)). 캐시 블록 A에 대해 쓰기는 금지되지만 읽기 액세스가 가능하다.
t=50에서 쓰기 연산이 일어나면, 캐시 블록 A는 쓰기 금지되어 있으므로 카피-온-라이트 기법으로 새로운 캐시 블록 B에 데이터 D1가 저장된다(상태 3'(S3'). 캐시 블록 A는 쓰기 금지된 더티 과거 캐시 블록(상태 5(S5))로 설정되지만, 아직 커밋이 일어나지 않았으므로, 캐시 블록 A의 데이터 D0가 원본으로 간주된다.
t=60에서 커밋 연산이 일어나, 더티 최신 캐시 블록 B에 캐싱된 데이터 D1이 저널 영역의 저널 블록에 커밋되고, 저널 영역에 기록된 데이터 D1이 원본으로 간주된다(상태 3(S3)). 캐시 블록 A는 쓰기 금지된 더티 불용 캐시 블록으로 전환된다(상태 6(S6)).
캐시 블록 A는 이제 전혀 쓸모가 없는 캐시 데이터를 가지므로, 캐시 블록 A를 즉시 빈 캐시 블록으로 반환할 수도 있겠지만, 이러한 동작은 추가적인 오버헤드를 일으킬 수 있으므로, 종래와 마찬가지로 체크포인트 연산 시에 함께 실시하는 것이 바람직할 수 있다.
t=70에서는 아무런 동작이 일어나지 않아 상태 3과 상태 6이 각각 유지되었고, t=80에서 쓰기가 있어 캐시 블록 B가 D2로 갱신되었지만, 아직 커밋되지 않았으므로 저널 영역에는 이전 버전의 데이터 D1가 원본으로서 기능한다.
t=90에서 비로소 체크포인트 연산이 일어나면서, 저널 영역에 저장된 데이터 D1가 캐시 블록 B의 데이터 D2에 의해 갱신되고, 최신 버전인 데이터 D2가 스토리지에 저장된다. 좀더 구체적으로는, t=60에서 커밋이 일어난 이후에 캐시 블록 B에 갱신된 데이터 D2가 t=90에서 저널 영역의 데이터 D1를 대체하고, 저널 영역에 대체된 데이터 D2가 스토리지의 데이터 블록에 기록된다.
체크포인트 연산이 완료되면서, 불용인 데이터 D0를 가지는 캐시 블록 A는 체크포인트와 함께 비워질 수 있고, 캐시 블록 B는 최신 클린 캐시(상태 1(S1))가 된다. 스토리지에 체크포인트된 데이터 D2를 가지는 스토리지의 데이터 블록은 원본이면서 삭제 가능 상태(S1)로 된다.
t=100에서 다시 쓰기 연산이 일어나는데, 이에 따라 데이터 D2에 대해 갱신 쓰기가 일어나 캐시 블록 B의 캐시된 데이터가 D3으로 변경된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이므로, 스토리지의 데이터 블록이 다시 유효로 설정(상태 1(S2))되면서 스토리지의 데이터 D2가 원본으로 간주된다.
도 6은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법을 예시한 순서도이다.
도 6을 참조하면, 통합 데이터 관리 방법은 비휘발성 버퍼 캐시와 비휘발성 스토리지를 통합적으로 관리하기 위한 메모리 통합 제어부(21)가, 단계(S61)에서, 캐싱되지 않은 비휘발성 스토리지(24)의 데이터 블록을 유효 상태로 설정한다.
이후에, 비휘발성 스토리지(24)의 어떤 데이터 블록에 관하여 읽기 또는 쓰기 액세스가 있어서 비휘발성 버퍼 캐시(22)에 데이터가 캐싱된 경우에, 단계(S62)에서, 만약 비휘발성 버퍼 캐시(22) 내에 캐싱된 캐시 블록이 비휘발성 저널 영역(23)에 커밋되지 않은 더티 최신 캐시 블록이면, 비휘발성 스토리지(24) 내의 상응하는 데이터 블록을 유효 상태로 설정한다.
구체적으로, 캐싱된 후 커밋된 적이 없는 더티 최신 캐시 블록에 대해 읽기 액세스 또는 쓰기 액세스가 있으면, 해당 더티 최신 캐시 블록에서 대응하는 읽기 연산 또는 쓰기 연산을 수행한다.
단계(S63)에서, 만약 비휘발성 버퍼 캐시(22) 내에 캐싱되었지만 커밋되지 않은 캐시 블록이 상기 비휘발성 저널 영역에 커밋되면, 비휘발성 스토리지(24) 내의 상응하는 데이터 블록을 비유효 상태로 설정한다.
단계(S64)에서, 만약 비휘발성 버퍼 캐시(22) 내에 캐싱된 캐시 블록이 클린 최신 캐시 블록이면, 비휘발성 스토리지(24)의 상응하는 데이터 블록을 삭제 가능 상태로 설정한다.
구체적으로, 읽기 액세스에 대응하여 비휘발성 스토리지(22)로부터 데이터 블록을 캐싱하였거나, 더티 최신 캐시 블록에 대해 체크포인트 연산이 일어나 비휘발성 스토리지(24)에 최신의 데이터를 가지는 데이터 블록이 생성되었다면, 해당 캐시 블록은 데이터 블록과 동일한 데이터를 캐싱하는 클린 최신 캐시 블록이다.
단계(S65)에서, 만약 삭제 가능 상태로 설정된 데이터 블록이 삭제되면, 캐싱된 클린 최신 캐시 블록을 쓰기 금지 더티 최신 캐시 블록으로 설정하고, 비휘발성 스토리지(24) 내의 상응하는 데이터 블록을 명목상으로(nominally) 비유효 상태로 설정한다.
비휘발성 스토리지(24)의 경우에, 유효한 상태 및 삭제 가능 상태로 설정된 데이터 블록들이 보유한 데이터를 원본으로 간주하고, 비휘발성 버퍼 캐시(22)와 비휘발성 저널 영역(23)의 경우에는, 쓰기 금지된 더티 캐시 블록(쓰기 금지된 더티 최신 캐시 블록과 쓰기 금지된 더티 과거 캐시 블록을 포함함)에 저장된 데이터 또는 더티 최신 캐시 블록에 관하여 비휘발성 저널 영역(23)의 저널 블록에 커밋된 데이터를 비휘발성 스토리지(24)의 데이터 블록을 대신하여 원본으로 간주할 수 있다.
추가적으로, 단계(S66)에서, 만약 쓰기 금지 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고 쓰기 금지 클린 캐시 블록을 쓰기 금지 더티 과거 캐시 블록으로 전환한다.
또한 추가적으로, 단계(S67)에서, 커밋 연산 시에 쓰기 금지 더티 최신 캐시 블록이 있으면 쓰기 금지를 해제하고 더티 최신 캐시 블록으로 전환한다.
또한 추가적으로, 단계(S68)에서, 커밋 연산 시에 쓰기 금지 더티 과거 캐시 블록이 있으면 쓰기 금지 더티 불용 캐시 블록으로 전환한다.
또한 추가적으로 단계(S69)에서, 소정의 시점에, 예를 들어 체크포인트 연산 시에, 쓰기 금지 불용 클린 캐시 블록 또는 쓰기 금지 과거 클린 캐시 블록이 있으면 이들을 빈 캐시 블록으로 반환한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다.
또한, 본 발명에 따른 장치는 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, 광학 디스크, 자기 테이프, 플로피 디스크, 하드 디스크, 비휘발성 메모리 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
1 정보 처리 장치
10 프로세서
11 연산 코어
12 L1 캐시
13 L2 캐시
20 비휘발성 메모리 통합 제어 시스템
21 메모리 통합 제어부
22 비휘발성 버퍼 캐시
23 비휘발성 저널 영역
24 비휘발성 스토리지
10 프로세서
11 연산 코어
12 L1 캐시
13 L2 캐시
20 비휘발성 메모리 통합 제어 시스템
21 메모리 통합 제어부
22 비휘발성 버퍼 캐시
23 비휘발성 저널 영역
24 비휘발성 스토리지
Claims (29)
- 캐시 블록을 유지하는 비휘발성 버퍼 캐시;
저널 블록을 유지하는 비휘발성 저널 영역;
데이터 블록을 유지하는 비휘발성 스토리지; 및
상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함하는 비휘발성 메모리 통합 제어 시스템. - 청구항 1에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 스토리지의 캐싱되지 않은 데이터 블록과, 만약 캐싱되었더라도 아직 상기 비휘발성 저널 영역에 커밋되지 않은 더티 최신 캐시 블록에 상응하는 상기 비휘발성 스토리지의 데이터 블록을 각각 유효 상태로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 2에 있어서, 상기 메모리 통합 제어부는,
만약 상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 스토리지의 해당 데이터 블록을 비유효 상태로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 3에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터를 원본으로 간주하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 1에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 클린 최신 캐시 블록에 상응하는 상기 비휘발성 스토리지의 데이터 블록을 삭제 가능 상태로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 5에 있어서, 상기 메모리 통합 제어부는,
읽기 액세스에 대응하여 상기 비휘발성 스토리지의 데이터 블록이 상기 비휘발성 버퍼 캐시에 캐싱되었거나, 상기 비휘발성 버퍼 캐시 내의 더티 최신 캐시 블록에 대한 체크포인트 연산에 따라 상기 비휘발성 스토리지의 데이터 블록에 최신의 데이터가 저장되는 조건에 해당하는 캐시 블록을 클린 최신 캐시 블록으로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 5에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 스토리지 내에서 삭제 가능 상태로 설정된 데이터 블록이 가비지 컬렉션으로 인해 삭제되는지 여부를 모니터링하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 5에 있어서, 상기 메모리 통합 제어부는,
만약 삭제 가능 상태로 설정되어 원본으로 간주되고 있던 데이터 블록이 상기 비휘발성 스토리지에서 삭제되면, 상기 삭제된 데이터 블록에 상응하여 상기 비휘발성 버퍼 캐시 내에 캐싱되어 있던 클린 최신 캐시 블록을 쓰기 금지된 더티 최신 캐시 블록으로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 8에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록에 저장된 데이터를 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 8에 있어서, 상기 메모리 통합 제어부는,
커밋 연산 시점에 상기 비휘발성 버퍼 캐시 내에 존재하는 쓰기 금지된 더티 최신 캐시 블록에 대하여, 쓰기 금지 설정을 해제하고 더티 최신 캐시 블록으로 전환하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 10에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터를 원본으로 간주하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 11에 있어서, 상기 메모리 통합 제어부는,
체크포인트 연산 시에 상기 비휘발성 저널 영역의 저널 블록에 저장되어 원본으로 간주되었던 데이터를 상기 비휘발성 스토리지의 데이터 블록에 저장하고, 상기 비휘발성 스토리지에 저장된 데이터를 삭제 가능 상태로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 8에 있어서, 상기 메모리 통합 제어부는,
만약 상기 비휘발성 버퍼 캐시 내의 쓰기 금지된 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고, 쓰기 금지된 더티 최신 캐시 블록을 쓰기 금지된 더티 과거 캐시 블록으로 설정하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 13에 있어서, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 과거 캐시 블록에 저장된 데이터를 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 13에 있어서, 상기 메모리 통합 제어부는,
커밋 연산 시점에 존재하는 쓰기 금지된 더티 과거 캐시 블록을 쓰기 금지 더티 불용 캐시로 전환하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 청구항 13에 있어서, 상기 메모리 통합 제어부는,
쓰기 금지된 더티 불용 캐시 블록 또는 쓰기 금지된 더티 과거 캐시 블록을 빈 캐시 블록으로 반환하도록 동작하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 시스템. - 프로세서; 및
비휘발성 메모리 통합 제어 시스템을 포함하는 정보 처리 장치로서,
상기 비휘발성 메모리 통합 제어 시스템은,
캐시 블록을 유지하는 비휘발성 버퍼 캐시;
저널 블록을 유지하는 비휘발성 저널 영역;
데이터 블록을 유지하는 비휘발성 스토리지; 및
상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함하는 것을 특징으로 하는 정보 처리 장치. - 캐시 블록을 유지하는 비휘발성 버퍼 캐시, 저널 블록을 유지하는 비휘발성 저널 영역 및 데이터 블록을 유지하는 비휘발성 스토리지를 통합적으로 관리하기 위한 비휘발성 메모리 통합 제어 방법으로서,
캐싱되지 않은 비휘발성 스토리지의 데이터 블록을 유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱된 캐시 블록이 상기 비휘발성 저널 영역에 커밋되지 않은 더티 최신 캐시 블록이면, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱되었지만 커밋되지 않은 캐시 블록이 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 비유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱된 캐시 블록이 클린 최신 캐시 블록이면, 상기 비휘발성 스토리지의 상응하는 데이터 블록을 삭제 가능 상태로 설정하는 단계; 및
만약 삭제 가능 상태로 설정된 데이터 블록이 삭제되면, 캐싱된 클린 최신 캐시 블록을 쓰기 금지 더티 최신 캐시 블록으로 설정하고, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 비유효 상태로 설정하는 단계를 포함하는 비휘발성 메모리 통합 제어 방법. - 청구항 18에 있어서,
상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터가 원본으로 간주되는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 18에 있어서,
읽기 액세스에 대응하여 상기 비휘발성 스토리지의 데이터 블록이 상기 비휘발성 버퍼 캐시에 캐싱되었거나, 상기 비휘발성 버퍼 캐시 내의 더티 최신 캐시 블록에 대한 체크포인트 연산에 따라 상기 비휘발성 스토리지의 데이터 블록에 최신의 데이터가 저장되는 조건에 해당하는 캐시 블록이 클린 최신 캐시 블록으로 설정되는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 18에 있어서,
상기 비휘발성 스토리지 내에서 삭제 가능 상태로 설정된 데이터 블록이 가비지 컬렉션으로 인해 삭제되는지 여부를 모니터링하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 18에 있어서,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록에 저장된 데이터가 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주되는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 18에 있어서,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 버퍼 캐시 내에 존재하는 쓰기 금지된 더티 최신 캐시 블록에 대하여 쓰기 금지 설정을 해제하고 더티 최신 캐시 블록으로 전환하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 23에 있어서,
커밋 연산에 따라, 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터가 원본으로 간주되는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 24에 있어서,
체크포인트 연산에 따라, 상기 비휘발성 저널 영역의 저널 블록에 저장되어 원본으로 간주되었던 데이터가 상기 비휘발성 스토리지의 데이터 블록에 저장되고, 상기 비휘발성 스토리지에 저장된 데이터가 삭제 가능 상태로 설정되는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 18에 있어서,
만약 상기 비휘발성 버퍼 캐시 내의 쓰기 금지된 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고, 쓰기 금지된 더티 최신 캐시 블록을 쓰기 금지된 더티 과거 캐시 블록으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 26에 있어서,
커밋 연산에 따라, 쓰기 금지된 더티 과거 캐시 블록이 쓰기 금지된 더티 불용 캐시 블록으로 전환되는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 청구항 27에 있어서,
상기 쓰기 금지된 더티 불용 캐시 블록 또는 쓰기 금지된 더티 과거 캐시 블록을 빈 캐시 블록으로 반환하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 통합 제어 방법. - 컴퓨터에서 청구항 18 내지 청구항 28 중 어느 한 청구항에 따른 비휘발성 메모리 통합 제어 방법을 구현할 수 있는 프로그램이 수록된 컴퓨터로 읽을 수 있는 기록 매체.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130074464A KR101475483B1 (ko) | 2013-06-27 | 2013-06-27 | 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 |
US14/352,093 US9563566B2 (en) | 2013-06-27 | 2014-02-28 | Device and method for integrated data management for nonvolatile buffer cache and nonvolatile storage |
PCT/KR2014/001696 WO2014208863A1 (ko) | 2013-06-27 | 2014-02-28 | 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130074464A KR101475483B1 (ko) | 2013-06-27 | 2013-06-27 | 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101475483B1 true KR101475483B1 (ko) | 2014-12-19 |
Family
ID=52142163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130074464A KR101475483B1 (ko) | 2013-06-27 | 2013-06-27 | 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9563566B2 (ko) |
KR (1) | KR101475483B1 (ko) |
WO (1) | WO2014208863A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101738965B1 (ko) * | 2015-06-30 | 2017-05-23 | 성균관대학교산학협력단 | 가비지 컬렉션 저널링 장치 및 방법 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10019193B2 (en) * | 2015-11-04 | 2018-07-10 | Hewlett Packard Enterprise Development Lp | Checkpointing a journal by virtualization of non-volatile random access memory |
KR102319189B1 (ko) * | 2017-06-21 | 2021-10-28 | 삼성전자주식회사 | 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법 |
CN109284066B (zh) * | 2017-07-19 | 2022-09-30 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备及*** |
US10761744B2 (en) | 2017-09-05 | 2020-09-01 | International Business Machines Corporation | Synchronously performing commit records operations |
US10521115B2 (en) | 2017-09-05 | 2019-12-31 | International Business Machines Corporation | Handling cache and non-volatile storage (NVS) out of sync writes |
US11314659B2 (en) | 2017-09-05 | 2022-04-26 | International Business Machines Corporation | Using real segments and alternate segments in non-volatile storage |
US11748029B2 (en) * | 2019-07-26 | 2023-09-05 | Salesforce, Inc. | Protecting writes to shared storage in a distributed search system |
CN111414320B (zh) * | 2020-02-20 | 2023-06-06 | 上海交通大学 | 基于日志文件***的非易失内存构建磁盘cache的方法及*** |
CN112083881B (zh) * | 2020-08-24 | 2022-10-18 | 云南财经大学 | 一种基于持久化内存的一体化天文数据采集与存储*** |
US11620084B2 (en) | 2020-12-30 | 2023-04-04 | Samsung Electronics Co., Ltd. | Storage device including memory controller and operating method of memory controller |
JP2022114726A (ja) | 2021-01-27 | 2022-08-08 | キオクシア株式会社 | メモリシステムおよび制御方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4189342B2 (ja) * | 2004-03-11 | 2008-12-03 | 東芝ソリューション株式会社 | ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法 |
KR20070096429A (ko) * | 2006-03-24 | 2007-10-02 | 부산대학교 산학협력단 | 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템 |
KR100866513B1 (ko) * | 2007-02-16 | 2008-11-03 | 한국과학기술원 | 플래시 메모리 기반 저널링 파일 시스템을 이용한 데이터처리 방법 |
KR101056460B1 (ko) * | 2009-06-05 | 2011-08-11 | 세종대학교산학협력단 | 캐쉬 제어기 및 캐쉬 블록 교체 방법 |
US20140181434A1 (en) * | 2012-12-20 | 2014-06-26 | Virtium Technology, Inc. | Integrated and naturalized static wear-leveling for block mapping |
-
2013
- 2013-06-27 KR KR20130074464A patent/KR101475483B1/ko active IP Right Grant
-
2014
- 2014-02-28 US US14/352,093 patent/US9563566B2/en active Active
- 2014-02-28 WO PCT/KR2014/001696 patent/WO2014208863A1/ko active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101738965B1 (ko) * | 2015-06-30 | 2017-05-23 | 성균관대학교산학협력단 | 가비지 컬렉션 저널링 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20160098351A1 (en) | 2016-04-07 |
US9563566B2 (en) | 2017-02-07 |
WO2014208863A1 (ko) | 2014-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101475483B1 (ko) | 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법 | |
US10289545B2 (en) | Hybrid checkpointed memory | |
US11907200B2 (en) | Persistent memory management | |
KR101567134B1 (ko) | 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법 | |
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
US10817421B2 (en) | Persistent data structures | |
US5519831A (en) | Non-volatile disk cache | |
US10241711B2 (en) | Multiversioned nonvolatile memory hierarchy for persistent memory | |
US8621144B2 (en) | Accelerated resume from hibernation in a cached disk system | |
US9959053B2 (en) | Method for constructing NVRAM-based efficient file system | |
KR20170010729A (ko) | 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템 | |
KR100238925B1 (ko) | 비휘발성 메모리를 갖는 복원 가능 디스크 제어 시스템 | |
WO2015020811A1 (en) | Persistent data structures | |
US20070118693A1 (en) | Method, apparatus and computer program product for cache restoration in a storage system | |
JP2010152747A (ja) | ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム | |
CN109815168A (zh) | 用于少标记缓冲器实现的***和方法 | |
CN116069681A (zh) | 一种磁盘空间回收方法、装置、电子设备以及存储介质 | |
US20030046482A1 (en) | Data management in flash memory | |
US20140208029A1 (en) | Use of flash cache to improve tiered migration performance | |
EP3183675B1 (en) | Systems and methods for highly-available file storage with fast online recovery | |
KR101474843B1 (ko) | 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법 | |
KR101450157B1 (ko) | 비휘발성 저널링 통합 버퍼 캐시와 비휘발성 스토리지를 위한 협동적 데이터 관리 장치 및 방법 | |
KR20150058092A (ko) | 네트워크 부트 시스템 | |
JP2001184246A (ja) | オペレーティングシステムとの関連でデータを回復および再生する方法、ソフトウェア、および装置 | |
KR20160135608A (ko) | 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180614 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191001 Year of fee payment: 6 |