KR20160135608A - 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법 - Google Patents

상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법 Download PDF

Info

Publication number
KR20160135608A
KR20160135608A KR1020150069197A KR20150069197A KR20160135608A KR 20160135608 A KR20160135608 A KR 20160135608A KR 1020150069197 A KR1020150069197 A KR 1020150069197A KR 20150069197 A KR20150069197 A KR 20150069197A KR 20160135608 A KR20160135608 A KR 20160135608A
Authority
KR
South Korea
Prior art keywords
data
block
cache
volatile
state
Prior art date
Application number
KR1020150069197A
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 반효경
Priority to KR1020150069197A priority Critical patent/KR20160135608A/ko
Publication of KR20160135608A publication Critical patent/KR20160135608A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space

Abstract

본 발명의 상변화메모리 통합 제어 서브시스템은 캐시 블록을 유지하는 비휘발성 버퍼 캐시, 저널 블록을 유지하는 비휘발성 저널 영역, 데이터 블록을 유지하는 비휘발성 스토리지 및 메모리 통합 제어부를 포함할 수 있다. 메모리 통합 제어부는 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 비휘발성 버퍼 캐시, 비휘발성 저널 영역과 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 비휘발성 버퍼 캐시 내의 캐시 블록과 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작할 수 있다.

Description

상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법 {Wear leveling methods considering the role of areas in phase change memory}
본 발명은 상변화메모리의 데이터 관리 기법에 관한 것으로, 더욱 상세하게는, 비휘발성 메모리 소자로 구현된 상변화메모리의 관리 기법에 관한 것이다.
최근 상변화메모리(PCM: Phase Change Memory)와 같은 비휘발성 메모리 기술(NVRAM, Non-volatile RAM) 이 급속도로 발전함에 따라 수년 내에 DRAM(Dynamic RAM)을 대체하여 메인메모리로 사용될 것으로 예상되고 있다. NVRAM은 성능, 집적도, 전력 등 다양한 측면에서 경우에 따라 DRAM보다 좋은 특성을 보일 수 있다.
비휘발성 메인 메모리의 등장은 기존의 휘발성 메인메모리를 탑재한 계층적 스토리지 관리 메커니즘에 상당한 변화를 일으킬 것으로 예상된다. 나아가, 메인 메모리, 버퍼캐시와 스토리지가 모두 비휘발성 메모리로 구현되는 시스템도 머지않아 도입될 것으로 예상된다.
전통적인 시스템에서 버퍼 캐시는 휘발성 매체인 DRAM 에 의해 제공되었기 때문에 데이터의 빠른 접근을 위해 일시적으로 보관하는 용도로 사용되어왔다. 그러나 버퍼 캐시를 비휘발성 매체로 구현하게 되면, 전통적인 임시 저장 장소인 버퍼 캐시도 데이터의 반영구적인 저장소인 대용량 스토리지와 마찬가지로 반영구적으로 데이터를 보관할 수 있을 것이다.
한편, 플래시 메모리에서는 한번 데이터가 생성되면 특별한 사정이 없는 한, 동일한 위치에 반영구적으로 저장될 수 있는 하드디스크와는 달리, 예를 들어 데이터 단위의 갱신이 없어도 가비지 컬렉션(Garbage Collection 또는 GC)과 같은 비휘발성 스토리지 장치 특유의 부수적인 관리 작업으로 인해 자체적으로 쓰기 작업을 끊임없이 수행한다.
이렇듯 쓰기 연산이 상대적으로 느린 비휘발성 대용량 스토리지 장치에서는, 이러한 관리 작업과 같은 오버헤드로 인해 성능이 저하되고 수명이 단축되기 때문에, 데이터를 유지하는 데에도 적지 않은 비용이 든다.
따라서, 이러한 맥락에서 비휘발성 저장 매체가 버퍼 캐시 및 대용량 스토리지로서 사용되는 환경에서, 버퍼 캐시와 대용량 스토리지를 통합적으로 관리하고, 또한 성능과 수명을 연장시킬 수 있는 스토리지 관리 기법이 필요하다.
한편, 종래에 파일 시스템의 비정상 종료(system failure)에 대처하는 가장 일반적인 방법은, 예를 들어 리눅스(Linux)에서는 부팅을 하는 시점에 fsck와 같은 소정의 유틸리티를 가지고 파일 시스템의 일관성(integrity) 검사를 수행하는 방식으로서, 파일 시스템을 조사하여 문제점을 발견하면 알아서 교정하거나, 자동으로 교정이 불가능하면 사용자가 직접 복구할 수 있게 복구 모드로 재부팅하는 식이다.
운영체제의 버전에 따라 파일시스템 메타 데이터의 항상성을 확인하기 위해 fsck과 같은 유틸리티를 마운트 시점에서 항상 수행하는 경우도 있다. 따라서 기존의 방식에서는, 파일시스템에 언제 문제가 있을지 모르므로 파일 시스템을 항상 조사하거나 어디서 문제가 발견될 것인지 모르기 때문에 방대한 파일 시스템을 순차적으로 조사를 해야 한다.
이러한 단점을 극복하기 위해 제안된 저널링 기법은 변경 사항들이 파일 시스템으로 기록되기 전에 일단 저널에 변경 사항들을 기록하고 변경 사항들에 관한 메타 데이터를 로그로 관리하는 기법으로서, 파일 시스템의 비정상적 종료 시에 높은 신뢰성과 빠른 속도를 가지고 복구할 수 있고, 정상적인 동작 시에도 느린 디스크를 대신하여 상대적으로 빠른 저널을 이용함으로써 디스크 성능에서 향상을 볼 수 있다.
파일시스템의 메타 데이터는 디스크 내에 구조적으로 저장되는 데이터의 관리를 위한 구조 관리용 2차적 데이터로서, 파일의 생성, 삭제, 디렉토리의 생성과 삭제, 파일 크기의 증가 감소 등에 따라 생성되는 데이터이다. 다시 말해 파일 시스템에 반영되는 변경 사항들에 관한 정보들이다.
저널링 기법을 채용한 파일 시스템을 저널링 파일 시스템이라고 한다. 공통적으로 저널링 파일 시스템은 별도로 마련된 저널 영역에 변경 사항들을 기록하거나 또는 변경 사항과 그 메타 데이터를 함께 기록하다가, 소정의 시점이 되면 가장 최신의 변경 사항들을 스토리지의 원본 위치에 기록하는데, 이를 체크포인트(checkpoint)라고 한다.
저널 영역에 기록할 때에는 일관되게 변경되어야 하는 일련의 업데이트들을 트랜잭션 단위로 관리하며 통상 수 초 단위의 주기로 트랜잭션에 속하는 모든 데이터가 저널 영역에 성공적으로 기록됨을 보장하는 커밋(commit)이라 불리는 동작을 수행한다.
저널링 파일 시스템들은 개발사마다 세부적인 정책에서 다소 다르게 개발되고 있다. 예를 들어, 정책에 따라 변경 사항을 스토리지의 원본 위치에 저장하고 나서 메타 데이터를 저널 영역에 기록한다거나, 메타 데이터와 변경 사항을 저널에 기록하고 다시 변경 사항을 스토리지의 원본 위치에 기록할 수도 있다. 또한 정책에 따라, 남은 공간이 부족해지면 저널을 체크포인트할 수도 있고, 정해진 시간이 되면 저널을 체크포인트할 수도 있다.
저널링 파일 시스템의 저널 영역은 시스템의 비정상 종료와 그 이후에도 저장 상태를 유지해야 하므로 비휘발성 스토리지의 일부 공간을 이용한다.
저널링 작업이 없는 시스템에서는 캐시 내에 공간 여유가 없어 교체(replacement)가 수행되어야 하는 순간이 되어야 갱신된 데이터를 메인 메모리로부터 저장 장치에 옮겨 기록하던 것과 달리, 저널링 작업은 시스템의 취약성을 줄이기 위해서라도 수 초 단위로 자주 커밋을 일으키므로, 상당한 스토리지 트래픽이 유발된다. 이로 인하여, 접근 비용이 비싼 하드디스크 및 클라우드 스토리지에서는 상당한 성능 저하를 일으키며, 또한 제한된 횟수와 느린 속도를 가지고 쓰기 연산을 허용하는 플래쉬 메모리 사용 환경에서는 성능과 내구성을 상당히 저하시킬 수 있다.
최근 각광받는 클라우드 스토리지 시스템에서도 저널링 파일 시스템이 필요하다는 공감대는 있지만 저널링으로 인한 네트워크 액세스 비용으로 인하여 쉽게 적용되지 못하고 있다.
한편, 읽고 쓰기 시에 랜덤 액세스가 가능한 상변환 메모리(PCM) 또는 자기저항 메모리(STT-MRAM)과 같은 비휘발성 메모리를 사용하여 비휘발성 버퍼 캐시를 구축하는 것만으로 이러한 문제가 쉽게 해결될 것 같지만, 실제로는 그렇지 않다.
저널링 파일 시스템에서 신뢰성은 전원 차단 시에 데이터의 유지만으로 달성되는 것이 아니고, 또한 전원 차단 이후 재공급 내지 재부팅 시에 데이터의 일관성(consistency)도 보장되어야 한다.
예를 들어, 버퍼 캐시에 있는 데이터 및 그에 상응하는 메타 데이터의 변경은 동시적으로 발생하여야 하는데, 데이터가 비휘발성 버퍼 캐시에서 갱신된 직후에 시스템이 멈춘다면, 재부팅 후 비휘발성 버퍼 캐시 내에 최신의 변경 데이터가 남아 있다고 하더라도 메타 데이터는 최신의 변경 데이터와 일관되지 않은 상태가 되기 때문에 최신의 변경 데이터를 스토리지의 원본 위치에 반영할 경우 파일 시스템의 일관성은 무너지게 된다.
본 발명이 해결하고자 하는 과제는 비휘발성 버퍼 캐시와 상변화메모리를 위한 통합 데이터 관리 장치 및 방법을 제공하는 데에 있다.
본 발명의 일 측면에 따른 비휘발성 메모리 통합 제어 서브시스템은
캐시 블록을 유지하는 비휘발성 버퍼 캐시;
저널 블록을 유지하는 비휘발성 저널 영역;
데이터 블록을 유지하는 비휘발성 스토리지; 및
상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여, 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 스토리지의 캐싱되지 않은 데이터 블록과, 만약 캐싱되었더라도 아직 상기 비휘발성 저널 영역에 커밋되지 않은 더티 최신 캐시 블록에 상응하는 상기 비휘발성 스토리지의 데이터 블록을 각각 유효 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
만약 상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 스토리지의 해당 데이터 블록을 비유효 상태로 설정하고,
커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터를 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
읽기 액세스에 대응하여 상기 비휘발성 스토리지의 데이터 블록이 상기 비휘발성 버퍼 캐시에 캐싱되었거나, 상기 비휘발성 버퍼 캐시 내의 더티 최신 캐시 블록에 대한 체크포인트 연산에 따라 상기 비휘발성 스토리지의 데이터 블록에 최신의 데이터가 저장되는 조건에 해당하는 캐시 블록을 클린 최신 캐시 블록으로 설정하고, 상기 비휘발성 버퍼 캐시 내의 클린 최신 캐시 블록에 상응하는 상기 비휘발성 스토리지의 데이터 블록을 삭제 가능 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 스토리지 내에서 삭제 가능 상태로 설정된 데이터 블록이 가비지 컬렉션으로 인해 삭제되는지 여부의 모니터링에 관한 보고 또는 상기 비휘발성 스토리지로부터 삭제 가능 상태의 데이터 블록의 삭제에 관한 보고를 수신하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
만약 삭제 가능 상태로 설정되어 원본으로 간주되고 있던 데이터 블록이 상기 비휘발성 스토리지에서 삭제되면, 상기 삭제된 데이터 블록에 상응하여 상기 비휘발성 버퍼 캐시 내에 캐싱되어 있던 클린 최신 캐시 블록을 쓰기 금지된 더티 최신 캐시 블록으로 설정하며,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록에 저장된 데이터를 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 버퍼 캐시 내에 존재하는 쓰기 금지된 더티 최신 캐시 블록에 대하여 쓰기 금지 설정을 해제하고 더티 최신 캐시 블록으로 전환하고, 상기 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터를 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
체크포인트 연산 시에 상기 비휘발성 저널 영역의 저널 블록에 저장되어 원본으로 간주되었던 데이터를 상기 비휘발성 스토리지의 데이터 블록에 저장하고, 상기 비휘발성 스토리지에 저장된 데이터를 삭제 가능 상태로 설정하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
만약 상기 비휘발성 버퍼 캐시 내의 쓰기 금지된 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고, 쓰기 금지된 더티 최신 캐시 블록을 쓰기 금지된 더티 과거 캐시 블록으로 설정하고,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 과거 캐시 블록에 저장된 데이터를 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주하도록 동작할 수 있다.
일 실시예에 따라, 상기 메모리 통합 제어부는,
커밋 연산 시점에 존재하는 쓰기 금지된 더티 과거 캐시 블록을 쓰기 금지 더티 불용 캐시로 전환하고,
쓰기 금지된 더티 불용 캐시 블록 또는 쓰기 금지된 더티 과거 캐시 블록을 빈 캐시 블록으로 반환하도록 동작할 수 있다.
본 발명의 다른 측면에 따른 정보 처리 장치는
프로세서; 및
비휘발성 메모리 통합 제어 서브시스템을 포함하는 정보 처리 장치로서,
상기 비휘발성 메모리 통합 제어 서브시스템은,
캐시 블록을 유지하는 비휘발성 버퍼 캐시;
저널 블록을 유지하는 비휘발성 저널 영역;
데이터 블록을 유지하는 비휘발성 스토리지; 및
상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함할 수 있다.
본 발명의 또 다른 측면에 따른 비휘발성 메모리 통합 제어 방법은,
캐시 블록을 유지하는 비휘발성 버퍼 캐시, 저널 블록을 유지하는 비휘발성 저널 영역 및 데이터 블록을 유지하는 비휘발성 스토리지를 호스트가 통합적으로 관리하기 위한 호스트의 비휘발성 메모리 통합 제어 방법으로서,
상기 호스트가,
캐싱되지 않은 비휘발성 스토리지의 데이터 블록을 유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱된 캐시 블록이 상기 비휘발성 저널 영역에 커밋되지 않은 더티 최신 캐시 블록이면, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱되었지만 커밋되지 않은 캐시 블록이 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 비유효 상태로 설정하는 단계;
만약 상기 비휘발성 버퍼 캐시 내에 캐싱된 캐시 블록이 클린 최신 캐시 블록이면, 상기 비휘발성 스토리지의 상응하는 데이터 블록을 삭제 가능 상태로 설정하는 단계; 및
만약 삭제 가능 상태로 설정된 데이터 블록이 삭제되면, 캐싱된 클린 최신 캐시 블록을 쓰기 금지 더티 최신 캐시 블록으로 설정하고, 상기 비휘발성 스토리지 내의 상응하는 데이터 블록을 명목상으로 비유효 상태로 설정하는 단계를 포함할 수 있다.
일 실시예에 따라,
상기 비휘발성 저널 영역에 커밋되지 않았던 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 커밋 연산에 따라 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터가 원본으로 간주될 수 있다.
일 실시예에 따라,
읽기 액세스에 대응하여 상기 비휘발성 스토리지의 데이터 블록이 상기 비휘발성 버퍼 캐시에 캐싱되었거나, 상기 비휘발성 버퍼 캐시 내의 더티 최신 캐시 블록에 대한 체크포인트 연산에 따라 상기 비휘발성 스토리지의 데이터 블록에 최신의 데이터가 저장되는 조건에 해당하는 캐시 블록이 클린 최신 캐시 블록으로 설정될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은
상기 비휘발성 스토리지 내에서 삭제 가능 상태로 설정된 데이터 블록이 가비지 컬렉션으로 인해 삭제되는지 여부의 모니터링에 관한 보고 또는 상기 비휘발성 스토리지로부터 삭제 가능 상태의 데이터 블록의 삭제에 관한 보고를 수신하는 단계를 더 포함할 수 있다.
일 실시예에 따라,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록에 저장된 데이터가 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 최신 캐시 블록이 커밋 연산에 의해 상기 비휘발성 저널 영역에 커밋되면, 상기 비휘발성 버퍼 캐시 내에 존재하는 쓰기 금지된 더티 최신 캐시 블록에 대하여 쓰기 금지 설정을 해제하고 더티 최신 캐시 블록으로 전환하는 단계를 더 포함하고,
상기 커밋 연산에 따라, 상기 비휘발성 저널 영역의 저널 블록에 저장된 데이터가 원본으로 간주될 수 있다.
일 실시예에 따라,
체크포인트 연산에 따라, 상기 비휘발성 저널 영역의 저널 블록에 저장되어 원본으로 간주되었던 데이터가 상기 비휘발성 스토리지의 데이터 블록에 저장되고, 상기 비휘발성 스토리지에 저장된 데이터가 삭제 가능 상태로 설정될 수 있다.
일 실시예에 따라, 상기 비휘발성 메모리 통합 제어 방법은,
만약 상기 비휘발성 버퍼 캐시 내의 쓰기 금지된 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 쓰기하고, 쓰기 금지된 더티 최신 캐시 블록을 쓰기 금지된 더티 과거 캐시 블록으로 설정하는 단계를 더 포함하고,
상기 비휘발성 버퍼 캐시 내의 상기 쓰기 금지된 더티 과거 캐시 블록에 저장된 데이터가 다음 차례의 커밋 연산 또는 체크포인트 연산이 있을 때까지 원본으로 간주될 수 있다.
일 실시예에 따라,
커밋 연산에 따라, 쓰기 금지된 더티 과거 캐시 블록이 쓰기 금지된 더티 불용 캐시 블록으로 전환된 후에,
상기 쓰기 금지된 더티 불용 캐시 블록 또는 쓰기 금지된 더티 과거 캐시 블록을 빈 캐시 블록으로 반환하는 단계를 더 포함할 수 있다.
본 발명의 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법에 따르면, 비휘발성 버퍼 캐시와 비휘발성 스토리지를 통합적으로 관리하므로 캐시와 스토리지 사이에 중복된 컨텐츠를 저장하는 블록을 최소화할 수 있다.
본 발명의 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법에 따르면, 비휘발성 버퍼 캐시 내에서 업데이트된 컨텐츠를 가진 블록의 원자성(atomity)을 보장할 수 있다.
본 발명의 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법에 따르면, 비휘발성 스토리지에서 가비지 컬렉션과 같은 기존의 필수적 관리 작업들과 충돌하지 않고 버퍼 캐시와 비휘발성 스토리지의 데이터 저장 공간을 통합적으로 관리할 수 있다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
아래에서, 달리 국부적으로 정의되지 않았다면 동일한 어드레스로 참조되는 데이터에 관하여, 데이터 블록은 해당 데이터가 스토리지에 저장된 블록을 가리키고, 캐시 블록은 버퍼 캐시에 저장된 블록을 가리키며, 저널 블록은 저널 영역에 저장된 블록을 가리킨다.
일반적으로, 커밋 연산에 의해 버퍼 캐시로부터 가장 최신의 일관성있는 버전의 데이터가 저널 영역에 확정적으로 저장되는데, 이러한 동작은 커밋 연산을 수행하는 버퍼 캐시의 관점에서는 커밋으로 지칭되고 저널 영역의 관점에서는 저널링으로 지칭될 수 있다. 따라서, 본 명세서 전반에 걸쳐, "커밋 연산된", "커밋된", "저널링된" 등의 용어들은 이러한 맥락에 따라 상호 혼용될 수 있다.
본 출원에서 "삭제 가능 상태"라 함은, 비휘발성 스토리지의 데이터 블록이 유효한 데이터를 가지고 있지만 동시에 비휘발성 스토리지 장치의 가비지 컬렉션 대상이 될 수 있는 상태임을 의미한다. 데이터 블록이 비유효한 데이터를 가지고 있는 경우에는 당연히 가비지 컬렉션될 수 있다.
본 출원에서 "원본"은 만약 시스템이 비정상적으로 종료되었을 경우에 정상적으로 재기동되기 위한, 일관성을 보장하는 버전으로서 가장 최신인 데이터를 가리킨다.
프로세서(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) 상태, 삭제 가능(Erasable) 상태 및 비유효(Invalid) 상태 중 하나로 설정하고, 비휘발성 스토리지(24)의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23)과 비휘발성 스토리지(24) 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지할 수 있도록 비휘발성 버퍼 캐시(22), 비휘발성 저널 영역(23) 및 비휘발성 스토리지(24)의 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 통합적으로 관리한다.
상태 0(S0)은 비휘발성 스토리지(24)의 데이터 블록들에 대해 읽기 액세스나 쓰기 액세스가 없어서 비휘발성 버퍼 캐시(22)에 데이터의 캐싱이 아직 일어나지 않았거나, 또는 비휘발성 버퍼 캐시(22)로부터 비휘발성 스토리지(24)로 체크포인트 연산이 완료되고 또한 비휘발성 버퍼 캐시(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)가 이러한 가비지 컬렉션에 따른 삭제 가능 상태의 데이터 블록의 삭제 여부를 모니터링하거나 비휘발성 스토리지(24)의 로컬 컨트롤러로부터 삭제 가능 상태의 데이터 블록의 삭제에 관한 보고를 수신하는 구성이 추가적으로 필요할 수 있다.
메모리 통합 제어부(21)는, 상태 1(S1)인 동안에 읽기 액세스에 대응하여, 해당 데이터 블록의 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에서 직접 읽기 연산을 수행한다.
반면에 쓰기 액세스가 있으면, 상태 1(S1)의 데이터 블록과 캐시 블록은 상태 2(S2)로 전환된다.
한편, 이러한 구성을 가비지 컬렉션의 관점에서 보면, 종래에 가비지 컬렉션은 비유효한 데이터들을 가지는 블록들을 정리하기 위한 동작임에 비해, 본 발명의 가비지 컬렉션은 유효한 데이터를 가지는 블록이라도, 만약 동일한 버전이 안전하게 비휘발성 버퍼 캐시에 읽기 캐싱되어 있다면, 비유효한 데이터들을 가지는 블록들과 함께 정리하는 동작이라고 할 수 있다.
한편, 상태 2(S2)는 상태 0(S0) 또는 상태 1(S1)인 비휘발성 스토리지(24)의 소정 데이터 블록에 대해 쓰기 액세스가 있은 후부터 커밋되기 전까지의 상태이다.
메모리 통합 제어부(21)는, 비휘발성 버퍼 캐시(22)가 아직 커밋되지 않은 더티 최신 캐시 블록으로 설정되어 있는 한, 상태 2(S2)의 비휘발성 스토리지(24)의 해당 데이터 블록을 유효 상태로 설정한다.
메모리 통합 제어부(21)는, 만약 상태 2(S2)의 비휘발성 스토리지(24)의 소정 데이터 블록에 대한 추가적인 쓰기 액세스에 따라 비휘발성 버퍼 캐시(22) 내에 상응하는 캐시 블록에 갱신 쓰기가 있을 경우에도, 해당 캐시 블록이 커밋되기 전까지는, 비휘발성 스토리지(24)의 해당 데이터를 유효 상태로 유지할 수 있다.
이 경우, 메모리 통합 제어부(21)는, 비휘발성 스토리지(24) 내의 유효 상태로 설정된 데이터 블록에 저장된 데이터를 원본으로 간주하며, 비휘발성 버퍼 캐시(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)는 캐싱된 데이터를 비휘발성 저널 영역(23)에 커밋하는 동시에 비휘발성 스토리지(24)의 데이터 블록에도 저장하고, 저장된 데이터 블록을 삭제 가능 상태, 즉 상태 1(S1)로 설정할 수 있다.
한편, 상태 4(S4)는 상태 1(S1)인 비휘발성 스토리지(24)의 데이터 블록이 예를 들어 가비지 컬렉션(GC) 등으로 삭제(erase)될 경우로서, 비휘발성 스토리지(24)의 해당 데이터 블록은 삭제되기 때문에 존재하지 않게 되어 명목상의(nominal) 비유효 상태로 전환된다.
이에 따라, 메모리 통합 제어부(21)는, 삭제된 데이터 블록의 원본 지위를 대신하기 위하여, 비휘발성 버퍼 캐시(22) 내의 캐시 블록을 쓰기 금지(freeze)로 설정하고, 쓰기 금지 설정된(frozen) 캐시 블록에 저장된 데이터를 원본으로 간주한다.
또한, 상태 4(S4)인 캐시 블록의 쓰기 금지 이후에 커밋 연산이 있기 전까지, 메모리 통합 제어부(21)는 해당 데이터에 대해 읽기 액세스가 있을 경우에는 쓰기 금지된 캐시 블록으로부터 읽기 연산을 수행하고, 쓰기 액세스가 있을 경우에는 쓰기 데이터를 다른 빈 캐시 블록에 예를 들어 카피-온-라이트(Copy-on-Write) 기법으로 저장한다.
다르게 표현하면, 메모리 통합 제어부(21)는, 비휘발성 버퍼 캐시(22) 내에서 캐싱된 캐시 블록이 클린 최신 캐시 블록인데 비휘발성 스토리지(24) 내의 상응하는 데이터 블록이 삭제되어 없거나, 또는 비휘발성 버퍼 캐시(22) 내에서 캐싱된 캐시 블록이 적어도 한 차례 커밋된 더티 최신 캐시 블록이어서 비휘발성 스토리지(24) 내의 상응하는 데이터 블록이 이제 과거 버전인 경우에는, 비휘발성 스토리지(24)의 해당 데이터 블록을 비유효 상태로 설정한다.
한편, 쓰기 금지된 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에 쓰기 금지된 더티 최신 캐시 블록은 이제 쓰기 금지된 더티 과거 캐시 블록(frozen dirty out-of-date cache)이 되고, 카피-온-라이트 기법으로 새로 쓰기된 캐시 블록은 덮어 쓰기 가능한 더티 최신 캐시 블록(normal dirty up-to-date cache)으로서 관리된다.
쓰기 금지된 최신 캐시 블록에 대해 쓰기 액세스가 있기 전까지 상태 4(S4)의 쓰기 금지된 더티 최신 캐시 블록이 원본 역할을 하고, 쓰기 금지된 최신 캐시 블록에 대해 쓰기 액세스가 있은 후부터 커밋 연산이 있기 전까지도, 상태 5(S5)가 된 쓰기 금지된 더티 과거 캐시 블록이 원본 역할을 한다.
다시 말해, 쓰기 액세스가 있던 상태 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)의 빈 캐시 블록으로 반환할 수 있다.
쓰기 금지된 더티 불용 캐시 블록은 실질적으로 원본으로서도 캐시 블록으로서도 역할을 가지지 않고 용량만 차지하므로, 언제라도 예를 들어 즉시, 임의의 시점에, 또는 체크포인트 연산 시에, 빈 캐시 블록으로 반환될 수 있다.
최초에 데이터의 원본은 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0였지만, 읽기 액세스와 함께 비휘발성 버퍼 캐시(22)도 데이터 D0를 가지는 클린 캐시가 되었으므로, t=10에서 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0는 파선으로 표시된 삭제 가능한 상태(S1)가 되어 유효하지만 언제라도 삭제될 수 있는 상태에 놓인다.
t=20에서 데이터 D0에 대해 갱신 쓰기가 일어나 캐시 블록 A의 캐시된 데이터가 D1으로 변경되며 더티 캐시가 된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이고 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0도 아직 삭제되지 않았으므로, 스토리지의 데이터 블록 X가 다시 유효로 설정(상태 2(S2))되면서 스토리지의 데이터 D0가 유효한 원본 지위를 회복한다.
t=30에서 커밋 연산이 일어나, 캐시 블록에 갱신된 데이터 D1이 저널 영역의 저널 블록에 커밋되면, 저널 블록에 기록된 데이터 D1이 원본으로 간주된다(상태 3(S3)). 캐시 블록 A에 대해 읽기 및 쓰기 액세스가 가능하고, 스토리지의 데이터 블록 X는 이제 비유효하여 언제라도 다른 데이터의 저장에 제공될 수 있다.
t=40과 t=50에서 각각 연속으로 쓰기 액세스가 있을 경우에, 캐시 블록 A에 연속적으로 데이터 D2, D3가 각각 갱신되는데, 아직 다음 커밋이 일어나기 전이므로 저널 영역은 변경되지 않고, 저널 영역의 저널 블록에 저장된 데이터 D1이 계속 원본으로 간주된다(상태 3(S3)).
t=60에 커밋 연산이 일어나, 캐시 블록에 갱신된 데이터 D3이 저널 영역의 저널 블록에 커밋되고, 저널 영역에 커밋된 데이터 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))되면서 데이터 블록 X의 데이터 D3가 원본으로 간주된다.
도 4는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후 일어나는 다른 동작을 예시한 개념도이다.
도 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(S3)).
t=60에 커밋 연산이 일어나, 캐시 블록 A에 갱신된 데이터 D2가 저널 영역의 저널 블록에 커밋되고, 저널 영역에 기록된 데이터 D2이 원본으로 간주된다(상태 3(S3)).
t=70에서는 아무런 동작이 일어나지 않아 상태 3(S3)이 유지되었고, 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으로 변경된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이므로, 스토리지의 데이터 블록이 다시 유효로 설정(상태 2(S2))되면서 스토리지의 데이터 블록 X의 데이터 D3가 원본으로 간주된다.
도 5는 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법에 따라 비휘발성 스토리지에 저장된 데이터가 비휘발성 버퍼 캐시에 캐싱된 후 실제로 가비지 컬랙션이 수행될 경우에 일어나는 또다른 동작을 예시한 개념도이다.
도 5에 예시된 일련의 동작들은 데이터가 캐싱된 후 삭제 가능 상태가 된 스토리지 데이터 블록이 실제로 삭제되고 또한 쓰기 금지된 캐시에 갱신 쓰기가 시도되며, 그 이후에 체크포인트가 일어나는 경우를 예시한다.
도 5를 참조하면, 시간 t=0에서 비휘발성 스토리지(24)의 데이터 블록 X에 저장된 어떤 데이터 D0가 읽기 액세스에 의해 비휘발성 버퍼 캐시(22)의 캐시 블록 A에 캐싱된다.
읽기 액세스와 함께 비휘발성 버퍼 캐시(22)도 데이터 D0를 가지는 클린 캐시가 되었으므로, t=10부터 비휘발성 스토리지(24)의 데이터 블록 X의 데이터 D0는 파선으로 표시된 삭제 가능한 상태(S1)가 된다.
t=10부터 t=40까지 캐시 블록 A에 갱신 쓰기가 일어나지 않고, 또한 데이터 블록 X도 삭제되지 않았으므로 삭제 가능 상태(S1)가 유지된다.
t=40에서 실제로 가비지 컬렉션 등으로 삭제되었다. 데이터 D0를 가지는 캐시 블록 A는 즉시 쓰기 금지된 더티 최신 캐시 블록(상태 4(S4))으로 전환되며, 쓰기 금지된 더티 최신 캐시 블록이 저장하는 데이터 D0가 삭제된 데이터 블록 X를 대신하여 원본으로 간주된다(상태 4(S4)). 캐시 블록 A에 대해 쓰기는 금지되지만 읽기 액세스가 가능하다.
t=50에서 쓰기 연산이 일어나면, 캐시 블록 A는 쓰기 금지되어 있으므로 카피-온-라이트(CoW) 기법으로 새로운 캐시 블록 B에 데이터 D1가 저장된다(상태 3'(S3'). 캐시 블록 A는 쓰기 금지된 더티 과거 캐시 블록(상태 5(S5))로 설정되지만, 아직 커밋이 일어나지 않았으므로, 캐시 블록 A의 데이터 D0가 원본으로 간주된다.
t=60에서 커밋 연산이 일어나, 더티 최신 캐시 블록 B에 캐싱된 데이터 D1이 저널 영역의 저널 블록에 커밋되고, 저널 영역에 기록된 데이터 D1이 원본으로 간주된다(상태 3(S3)). 캐시 블록 A는 쓰기 금지된 더티 불용 캐시 블록으로 전환된다(상태 6(S6)).
캐시 블록 A는 이제 전혀 쓸모가 없는 캐시 데이터를 가지므로, 캐시 블록 A를 즉시 빈 캐시 블록으로 반환할 수도 있겠지만, 이러한 동작은 추가적인 오버헤드를 일으킬 수 있으므로, 종래와 마찬가지로 체크포인트 연산 시에 함께 실시하는 것이 바람직할 수 있다.
t=70에서는 아무런 동작이 일어나지 않아 캐시 블록 B의 상태 3(S3)과 캐시 블록 A의 상태 6(S6)이 각각 유지되었고, t=80에서 쓰기가 있어 캐시 블록 B가 D2로 갱신되었지만, 아직 커밋되지 않았으므로 저널 영역에는 이전 버전의 데이터 D1가 원본으로서 기능한다.
t=90에서 비로소 체크포인트 연산이 일어나면서, 저널 영역에 저장된 데이터 D1와 캐시 블록 B의 데이터 D2 중 최신 버전인 D2가 스토리지에 저장된다. 좀더 구체적으로는, t=60에서 커밋이 일어난 이후에 캐시 블록 B에 갱신된 데이터 D2가 t=90에서 저널 영역의 데이터 D1를 대체하는 동시에, 저널 영역에 대체된 데이터 D2가 스토리지의 데이터 블록에 기록된다.
체크포인트 연산이 완료되면서, 불용인 데이터 D0를 가지는 캐시 블록 A는 체크포인트와 함께 비워질 수 있고(상태 0(S0)), 캐시 블록 B는 최신 클린 캐시(상태 1(S1))가 된다. 스토리지에 체크포인트된 데이터 D2를 가지는 스토리지의 데이터 블록은 원본이면서 삭제 가능 상태(S1)로 된다.
t=100에서 다시 쓰기 연산이 일어나는데, 이에 따라 데이터 D2에 대해 갱신 쓰기가 일어나 캐시 블록 B의 캐시된 데이터가 D3으로 변경된다. 데이터의 변경은 일어났지만 그러한 변경이 커밋 연산으로 확정되기 전이므로, 스토리지의 데이터 블록이 다시 유효로 설정(상태 2(S2))되면서 스토리지의 데이터 블록 X의 데이터 D2가 원본으로 간주된다.
도 6은 본 발명의 일 실시예에 따른 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 방법을 예시한 순서도이다.
도 6을 참조하면, 통합 데이터 관리 방법은 비휘발성 버퍼 캐시와 비휘발성 스토리지를 통합적으로 관리하기 위한 메모리 통합 제어부(21)가, 단계(S61)에서, 캐싱되지 않은 비휘발성 스토리지(24)의 데이터 블록을 유효 상태로 설정한다.
이후에, 비휘발성 스토리지(24)의 어떤 데이터 블록에 관하여 읽기 또는 쓰기 액세스가 있어서 비휘발성 버퍼 캐시(22)에 데이터가 캐싱된 경우에, 단계(S62)에서, 만약 비휘발성 버퍼 캐시(22) 내에 캐싱된 캐시 블록이 비휘발성 저널 영역(23)에 커밋되지 않은 더티 최신 캐시 블록이면, 비휘발성 스토리지(24) 내의 상응하는 데이터 블록을 유효 상태로 설정한다. 단계(S62)는 비휘발성 스토리지(24) 내의 상응하는 데이터 블록이 존재하는 것을 전제로 한다.
한편, 캐싱된 후 커밋된 적이 없는 더티 최신 캐시 블록에 대해 커밋 전에 읽기 액세스 또는 쓰기 액세스가 있으면, 해당 더티 최신 캐시 블록에서 대응하는 읽기 연산 또는 쓰기 연산을 수행한다.
단계(S63)에서, 만약 비휘발성 버퍼 캐시(22) 내에 캐싱되었지만 커밋되지 않은 캐시 블록이 비휘발성 저널 영역에 커밋되면, 비휘발성 스토리지(24) 내의 상응하는 데이터 블록을 비유효 상태로 설정한다. 비유효 상태가 된 비휘발성 스토리지(24) 내의 데이터 블록의 데이터를 대신하여 비휘발성 저널 영역(23)에 커밋된 저널 블록의 데이터가 원본으로 간주된다.
단계(S64)에서, 만약 비휘발성 버퍼 캐시(22) 내에 캐싱된 캐시 블록이 클린 최신 캐시 블록이면, 비휘발성 스토리지(24)의 상응하는 데이터 블록을 삭제 가능 상태로 설정한다.
구체적으로, 읽기 액세스에 대응하여 비휘발성 스토리지(22)로부터 새로 데이터 블록을 캐싱하였거나, 더티 최신 캐시 블록에 대해 체크포인트 연산이 일어나 비휘발성 스토리지(24)에 최신의 데이터를 가지는 데이터 블록이 생성되었다면, 해당 캐시 블록은 데이터 블록과 동일한 데이터를 캐싱하는 클린 최신 캐시 블록이다.
단계(S65)에서, 만약 삭제 가능 상태로 설정된 데이터 블록이 삭제되면, 캐싱된 클린 최신 캐시 블록을 쓰기 금지 더티 최신 캐시 블록으로 설정하고, 비휘발성 스토리지(24) 내의 삭제된 데이터 블록을 명목상으로(nominally) 비유효 상태로 취급한다.
이에 따라, 비휘발성 스토리지(24)에서 유효한 상태(S0, S2) 및 삭제 가능 상태(S1)로 설정된 데이터 블록들이 보유한 데이터가 원본으로 간주된다. 나아가 비휘발성 스토리지(24)에 유효한 데이터 블록이 없는 경우에는 비휘발성 버퍼 캐시(22)에서 쓰기 금지된 더티 캐시 블록(쓰기 금지된 더티 최신 캐시 블록(S4)과 쓰기 금지된 더티 과거 캐시 블록(S5)을 포함함)에 저장된 데이터나, 또는 쓰기 가능한 더티 최신 캐시 블록에 관하여 비휘발성 저널 영역(23)의 저널 블록(S3)에 커밋된 데이터가 비휘발성 스토리지(24)의 비유효한 데이터 블록의 데이터를 대신하여 원본으로 간주될 수 있다.
추가적으로, 단계(S66)에서, 만약 쓰기 금지 더티 최신 캐시 블록에 대해 쓰기 액세스가 있을 경우에, 다른 빈 캐시 블록에 쓰기 액세스에 관한 데이터를 카피-온-라이트(CoW)로 쓰기하고, 쓰기 금지 클린 캐시 블록을 쓰기 금지 더티 과거 캐시 블록으로 전환한다.
또한 추가적으로, 단계(S67)에서, 커밋 연산 시에 쓰기 금지 더티 최신 캐시 블록이 있으면 쓰기 금지를 해제하고 쓰기 가능한 더티 최신 캐시 블록으로 전환한다.
또한 추가적으로, 단계(S68)에서, 커밋 연산 시에 쓰기 금지 더티 과거 캐시 블록이 있으면 쓰기 금지 더티 불용 캐시 블록으로 전환한다.
또한 추가적으로 단계(S69)에서, 소정의 시점에, 예를 들어 체크포인트 연산 시에, 쓰기 금지 불용 클린 캐시 블록 또는 쓰기 금지 과거 클린 캐시 블록이 있으면 이들을 빈 캐시 블록으로 반환한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다.
또한, 본 발명에 따른 장치는 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, 광학 디스크, 자기 테이프, 플로피 디스크, 하드 디스크, 비휘발성 메모리 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.

Claims (1)

  1. 캐시 블록을 유지하는 비휘발성 버퍼 캐시;
    저널 블록을 유지하는 비휘발성 저널 영역;
    데이터 블록을 유지하는 비휘발성 스토리지; 및
    상기 비휘발성 스토리지의 데이터 블록들을 캐싱 여부, 저널링 여부 및 클린 캐시 여부에 따라 유효 상태, 삭제 가능 상태 및 비유효 상태 중 하나로 설정하고, 만약 상기 비휘발성 스토리지의 데이터 블록이 유효 상태 또는 삭제 가능 상태이면 해당 데이터 블록에 저장된 데이터를 원본으로 간주하며, 만약 상기 비휘발성 스토리지의 데이터 블록이 비유효 상태이면 상응하는 캐시 블록 또는 저널 블록 중 어느 하나에 저장된 데이터를 원본으로 간주함으로써 상기 비휘발성 버퍼 캐시, 상기 비휘발성 저널 영역과 상기 비휘발성 스토리지 중 어느 하나에 가장 최신의 일관된 데이터의 원본을 유지하기 위하여, 상기 비휘발성 버퍼 캐시 내의 캐시 블록과 상기 비휘발성 저널 영역의 저널 블록에 대해 읽기 연산, 쓰기 연산, 커밋 연산 및 체크포인트 연산을 각각 수행하도록 동작하는 메모리 통합 제어부를 포함하는 비휘발성 메모리 통합 제어 서브시스템.
KR1020150069197A 2015-05-18 2015-05-18 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법 KR20160135608A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150069197A KR20160135608A (ko) 2015-05-18 2015-05-18 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150069197A KR20160135608A (ko) 2015-05-18 2015-05-18 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법

Publications (1)

Publication Number Publication Date
KR20160135608A true KR20160135608A (ko) 2016-11-28

Family

ID=57706716

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150069197A KR20160135608A (ko) 2015-05-18 2015-05-18 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법

Country Status (1)

Country Link
KR (1) KR20160135608A (ko)

Similar Documents

Publication Publication Date Title
KR101475483B1 (ko) 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법
KR101567134B1 (ko) 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
US10289545B2 (en) Hybrid checkpointed memory
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
JP4128641B2 (ja) データ退避方法
US10241711B2 (en) Multiversioned nonvolatile memory hierarchy for persistent memory
CA2504322C (en) Apparatus and method for hardware-based file system
US6732293B1 (en) Method, software and apparatus for recovering and recycling data in conjunction with an operating system
JP3751018B2 (ja) ライトエニウエアファイルシステムレイアウト
US7822932B2 (en) Systems and methods for providing nonlinear journaling
US9442955B1 (en) Managing delete operations in files of file systems
US20020049883A1 (en) System and method for restoring a computer system after a failure
US20130031308A1 (en) Device driver for use in a data storage system
KR20170010729A (ko) 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템
US20060224639A1 (en) Backup system, program and backup method
JP2010152747A (ja) ストレージシステム、ストレージのキャッシュ制御方法、及びキャッシュ制御プログラム
KR20170002848A (ko) 가비지 컬렉션 저널링 장치 및 방법
EP3183675B1 (en) Systems and methods for highly-available file storage with fast online recovery
JP4189342B2 (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
KR101450157B1 (ko) 비휘발성 저널링 통합 버퍼 캐시와 비휘발성 스토리지를 위한 협동적 데이터 관리 장치 및 방법
KR101474843B1 (ko) 비휘발성 메모리에 기반하여 저널링 기능을 통합한 버퍼 캐시 장치, 저널링 파일 시스템 및 저널링 방법
US20220164335A1 (en) Cloud-native object storage for page-based relational database
JP2001184246A (ja) オペレーティングシステムとの関連でデータを回復および再生する方法、ソフトウェア、および装置
KR20160135608A (ko) 상변화메모리의 영역별 역할을 고려한 마모도 평준화 방법
KR20150058092A (ko) 네트워크 부트 시스템