KR101481633B1 - 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 - Google Patents

플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 Download PDF

Info

Publication number
KR101481633B1
KR101481633B1 KR20130077558A KR20130077558A KR101481633B1 KR 101481633 B1 KR101481633 B1 KR 101481633B1 KR 20130077558 A KR20130077558 A KR 20130077558A KR 20130077558 A KR20130077558 A KR 20130077558A KR 101481633 B1 KR101481633 B1 KR 101481633B1
Authority
KR
South Korea
Prior art keywords
buffer
unit
list
buffer unit
flash memory
Prior art date
Application number
KR20130077558A
Other languages
English (en)
Other versions
KR20150004949A (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 KR20130077558A priority Critical patent/KR101481633B1/ko
Priority to PCT/KR2014/005955 priority patent/WO2015002481A1/ko
Priority to US14/902,748 priority patent/US10387045B2/en
Publication of KR20150004949A publication Critical patent/KR20150004949A/ko
Application granted granted Critical
Publication of KR101481633B1 publication Critical patent/KR101481633B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)

Abstract

본 발명은 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법에 관한 것으로, 보다 상세하게는 효율적인 버퍼 관리 기법과 새로운 색인 노드 분할 정책을 통해 읽기 연산에 비해 쓰기 연산이 매우 느린 플래시 메모리 장치에 대한 쓰기 연산을 줄이면서 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시키기 위한 장치 및 방법에 관한 것이다.
이러한 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치는 버퍼 메모리부, 리스트 관리부, 버퍼 메모리 관리부 및 로그 버퍼부를 포함한다.

Description

플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법{Buffer Management Apparatus And Method having three states based on Flash Memory}
본 발명은 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법에 관한 것으로, 보다 상세하게는 효율적인 버퍼 관리 기법과 새로운 색인 노드 분할 정책을 통해 읽기 연산에 비해 쓰기 연산이 매우 느린 플래시 메모리 장치에 대한 쓰기 연산을 줄이면서 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시키기 위한 장치 및 방법에 관한 것이다.
본 발명은 교육과학기술부 및 한국연구재단의 일반연구자지원의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 1345176071, 과제명: 차세대 플래시 메모리 시스템을 지원하는 시스템 소프트웨어에 대한 연구].
플래시 메모리는 읽기 연산과 쓰기 연산의 비용이 균일하지 않는 등 하드디스크와는 다른 고유한 물리적 특성을 지니고 있다.
플래시 메모리는 읽고 쓰는 단위(Page)와 지우는 단위(Block)가 다르고, 연산을 처리하는데 사용되는 시간적 비용(읽기: 10㎲, 쓰기: 200㎲, 지우기: 2㎳)이 각각 다르며, 일반적으로 지우기 횟수가 블록 당 10만 ~ 100만 번으로 제한되어 있다.
또한, 동일한 위치에 쓰기 연산을 수행하기 위해서는 많은 시간이 소요되는 지우기 연산을 수행해야 한다. 따라서 대부분의 NAND 플래시 메모리는 플래시 주소 변환 계층(Flash Translation Layer)을 두어 동일한 위치가 아닌 다른 곳에 쓰기(out-place update)를 하여 삭제 연산의 직접적인 비용을 숨기게 된다.
이와 같이 플래시 메모리는 하드디스크와는 다른 고유한 물리적 특성을 가지고 있기 때문에, 메모리 적중률만을 추구하는 기존의 페이지 교체 알고리즘으로는 NAND 플래시 메모리 시스템에서 최적의 성능을 기대하기 어렵다.
예를 들면, LRU(Least Recently Used) 알고리즘은 하드디스크 기반 저장 시스템 용으로 최적화되어있다.
LRU 알고리즘은 메모리 상의 페이지들을 마지막 참조 시점에 따라 우선 순위 리스트로 유지하고, 메모리 공간이 부족한 경우 가장 오래전에 참조된 페이지를 교체한다.
이는 시간지역성을 가지는 다양한 환경에서 좋은 성능을 나타내어 가상메모리 환경뿐만 아니라 버퍼 캐싱, 웹 캐싱 등의 여러 영역에서 폭넓게 사용되고 있으나, 읽기 및 쓰기 연산의 비용이 이질적인 플래시 메모리의 특성을 고려하고 있지 않기 때문에, 플래시 메모리 시스템에서는 최적의 성능을 기대하기 어렵다.
한편, CFLRU(Clean-First LRU) 알고리즘은 메모리 적중률뿐 아니라, 읽기 및 쓰기 연산의 비용이 이질적인 NAND 플래시 메모리의 물리적 특성을 고려한 페이지 교체 알고리즘이다.
도5는 종래기술의 CFLRU 알고리즘의 버퍼 관리 방식을 나타낸 도면이다.
도5를 참조하면, CFLRU(Clean-First LRU) 알고리즘은 기본적으로 LRU 리스트에 의해 페이지들을 관리하며, LRU 리스트 상에서 상대적으로 최근에 참조된 페이지들을 담고 있는 공간인 워킹 영역(Working region) 및 LRU 리스트 상에서 상대적으로 오래 전에 참조된 페이지들을 담고 있는 공간인 클린-우선 영역(Clean-First region)으로 구분된다. 이때, CFLRU 알고리즘에서 클린-우선 영역은 윈도우(Window)라고 부른다.
또한, CFLRU 알고리즘은 페이지를 클린 페이지 및 더티 페이지로 구분하며, 클린 페이지는 메모리에 올라온 이후 페이지의 내용이 변하지 않은 페이지이고, 더티 페이지는 메모리에 올라온 이후 페이지의 내용이 변경된 페이지이다.
그리고 CFLRU 알고리즘은 페이지 교체 시 워킹 영역보다 클린-우선 영역에서 우선해서 교체하며, 클린-우선 영역에서는 더티 페이지보다 클린 페이지를 우선으로 교체한다. 이는 더티 페이지의 교체가 클린 페이지의 교체와는 달리 플래시 메모리에 쓰기 연산을 발생시키므로, 플래시 메모리의 고비용 쓰기 연산을 줄이려는 목적이다.
따라서 도5를 참조하면, 기존 LRU 알고리즘은 리스트 내에서 가장 오래전에 참조된 페이지부터 교체되므로, P8 → P7 → P6 → P5 순으로 페이지가 교체될 것이다. 그에 반해 CFLRU 알고리즘은 P7 → P5 → P8 → P6 순으로 페이지가 교체될 것이다.
하지만 CFLRU 알고리즘은 더티 페이지를 교체할 때 LRU 리스트에 의해 교체하므로, 플래시 메모리에 영향이 있을 더티 페이지의 교체 비용은 전혀 고려하지 않고 있다.
한편, 한국등록특허 제 0941382호 "플래시 메모리와 연동되는 페이지 버퍼 관리 장치 및 방법, 그리고 플래시 메모리의 페이지 교체 장치 및 방법"에서는 플래시 메모리로부터 독출된 페이지 단위로 이루어진 데이터가 저장되는 버퍼부, 버퍼부에 저장된 데이터의 양이 사전에 설정된 기준 용량에 도달하면 버퍼부에 저장된 페이지 단위의 데이터 중에서 교체 대상 데이터를 선택하여 버퍼부에서 제거하는 버퍼 관리부 및 버퍼부에 저장된 페이지 단위의 데이터 중 읽기 동작이 수행된 클린 페이지에 대한 페이지 인덱스 및 클린 페이지가 속하는 블록 번호가 기록되는 클린 페이지 리스트, 그리고 쓰기 동작이 수행된 더티 페이지에 대한 더티 페이지 리스트를 각각 생성하고, 교체 대상 데이터에 해당하는 페이지 인덱스를 삭제하는 페이지 리스트 관리부를 포함하는 기술을 제시한다.
하지만, 위 선행기술은 클린 페이지와 더티 페이지를 분리하여 관리함으로써, 더티 페이지에 대한 버퍼 적중률을 높일 수 있고, 전체적인 쓰기 비용을 줄일 수 있으며, 나아가 쓰기 동작이 수행된 데이터를 교체할 때 동일한 블록에 속하는 데이터를 함께 교체함으로써, 소거 동작의 실행 횟수를 감소시켜 플래시 메모리의 수명을 연장시킬 수 있는 장점이 있지만, 종래기술과 마찬가지로 더티 페이지를 교체할 때 여전히 플래시 메모리에 영향이 있을 더티 페이지의 교체 비용은 고려하고 있지 않으므로, 플래시 메모리 시스템에서 최적의 성능을 내지 못하고 있다.
따라서, 본 발명의 장점인 버퍼캐시에서 더티 페이지를 교체할 때 반출(evict) 후 확보될 공간 및 플래시 메모리에 대한 쓰기 횟수를 고려하여 교체함으로써 플래시 메모리 장치에 대한 쓰기 연산을 줄이고 플래시 메모리 기반 데이터베이스 시스템의 성능 및 저장 장치의 사용 수명을 향상시킬 수 있는 기술이 요구된다.
한국등록특허 제 0941382호 (등록일: 2010.02.02)
본 발명은 읽기 연산에 비해 쓰기 연산이 매우 느린 플래시 메모리 장치에 대한 쓰기 연산을 줄이려는 것을 목적으로 한다.
본 발명은 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시키려는 것을 목적으로 한다.
본 발명은 플래시 메모리의 쓰기 연산 및 플래시 메모리의 쓰기 연산에서 요구되는 플래시 메모리의 블록 지우기, 가비지 컬렉션 등의 작업을 줄임으로써 시스템의 성능 및 사용 수명을 향상시키려는 것을 목적으로 한다.
본 발명은 버퍼 공간이 부족할 때 교체 대상자를 선정하는데 있어서, 기존의 단순한 교체 대상자 선출 방법(LRU 방식)이 아닌 교체 대상자의 반출(evict) 후 확보될 공간 및 플래시 메모리에 대한 쓰기 횟수를 고려하여 선정함으로써, 더티 유닛의 교체 비용 효율을 높이려는 것을 목적으로 한다.
이러한 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치는 버퍼 메모리부, 리스트 관리부 및 버퍼 메모리 관리부를 포함한다.
상기 버퍼 메모리부는 플래시 메모리로부터 독출된 데이터를 버퍼 유닛으로 저장하고, 상기 저장된 버퍼 유닛의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역이 구분된다. 상기 리스트 관리부는 상기 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록한다. 상기 버퍼 메모리 관리부는 상기 버퍼 메모리부에 가용 공간이 없어 버퍼 유닛의 반출(evict)이 필요할 때, 상기 콜드 영역에서 상기 클린 리스트 및 상기 더티 리스트를 참조하여 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출한다.
이때, 상기 저장된 버퍼 유닛은 상기 저장된 버퍼 유닛에 포함된 데이터가 상기 저장된 버퍼 유닛에 대응하여 상기 플래시 메모리에 저장된 데이터와 모두 동일한지 및 모두 다른지에 따라 클린상태, 더티상태, 및 세미-클린의 세가지 상태를 가질 수 있다. 모두 동일한 경우에는 클린상태, 모두 다른 경우에는 더티상태이고, 일부의 데이터가 동일하고 나머지 일부의 데이터는 다른 경우에는 세미-클린 상태로 정의할 수 있다.
또한, 상기 리스트 관리부는 상기 클린 리스트가 상기 클린 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 클린 부분의 리스트를 저장하도록 관리하고, 상기 더티 리스트는 상기 더티 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 더티 부분의 리스트를 저장하도록 관리할 수 있다.
또한, 상기 버퍼 메모리 관리부는 상기 교체 대상 버퍼 유닛을 선정할 때 상기 더티 리스트에 대응하는 버퍼 유닛보다 상기 클린 리스트에 대응하는 버퍼 유닛을 우선하여 선정할 수 있다.
또한, 상기 저장된 버퍼 유닛 내의 일부의 데이터가 업데이트 되었을 때에 상기 업데이트된 일부의 데이터를 저장하는 로그 버퍼부를 더 포함할 수 있으며, 상기 리스트 관리부는 상기 로그 버퍼부에 저장된 상기 일부의 데이터의 리스트를 상기 더티 리스트로 관리하고, 상기 저장된 버퍼 유닛 내의 상기 업데이트된 일부의 데이터 이외의 나머지 부분의 리스트를 상기 클린 리스트로 관리할 수 있다.
또한, 상기 로그 버퍼부는 업데이트된 일부의 데이터가 누적되어 총량이 기 설정된 기준 용량에 도달하면, 상기 기준 용랑만큼의 데이터를 상기 플래시 메모리에 기록되도록 반출할 수 있다.
또한, 상기 버퍼 메모리부는 상기 플래시 메모리로부터 독출된 데이터를 상기 독출된 데이터가 지닌 색인 엔트리의 최대 키 용량보다 배수의 크기로 구성하여 상기 버퍼 유닛으로 저장한다.
또한, 상기 버퍼 메모리 관리부는 상기 버퍼 메모리부에서 상기 더티 리스트에 해당하는 버퍼 유닛의 반출이 필요할 때, 상기 더티 리스트에 해당하는 버퍼 유닛이 반출된 후 확보될 공간 및 플래시 메모리에 수행될 쓰기 연산 횟수를 고려하여 상기 플래시 메모리의 노드 분할을 적게 일으키는 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출한다.
또한, 상기 버퍼 메모리 관리부는 상기 버퍼 메모리부에 저장된 버퍼 유닛 중에서 특정 버퍼 유닛에 데이터가 꽉 차있을 경우 상기 꽉 찬 특정 버퍼 유닛을 상기 교체 대상 버퍼 유닛으로 선정하고, 상기 데이터가 꽉 찬 버퍼 유닛이 없을 경우 상기 저장된 버퍼 유닛의 정보를 기반으로 상기 플래시 메모리의 노드 분할과 적게 연관된 상기 교체 대상 버퍼 유닛을 선정한다.
한편, 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법은 버퍼 유닛을 저장하는 단계, 리스트 관리 단계 및 버퍼 메모리 관리 단계를 포함한다.
상기 버퍼 유닛을 저장하는 단계는 데이터의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역으로 구분되는 버퍼 메모리부에 플래시 메모리로부터 독출된 데이터를 버퍼 유닛으로 저장한다. 상기 리스트 관리 단계는 상기 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록한다. 상기 버퍼 메모리 관리 단계는 상기 버퍼 메모리부에 가용 공간이 없어 버퍼 유닛의 반출이 필요할 때, 상기 콜드 영역에서 상기 클린 리스트 및 상기 더티 리스트를 참조하여 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출한다.
또한, 상기 버퍼 메모리 관리 단계는 상기 교체 대상 버퍼 유닛을 선정할 때 상기 더티 리스트에 대응하는 버퍼 유닛보다 상기 클린 리스트에 대응하는 버퍼 유닛을 우선하여 선정할 수 있다.
또한, 상기 저장된 버퍼 유닛 내의 일부의 데이터가 업데이트 되었을 때에 상기 업데이트된 일부의 데이터를 로그 버퍼부에 저장하는 단계를 더 포함할 수 있고, 상기 리스트 관리 단계는 상기 로그 버퍼부에 저장된 상기 일부의 데이터의 리스트를 상기 더티 리스트로 관리하고, 상기 저장된 버퍼 유닛 내의 상기 업데이트된 일부의 데이터 이외의 나머지 부분의 리스트를 상기 클린 리스트로 관리한다.
또한, 상기 리스트 관리 단계는 상기 클린 리스트가 상기 클린 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 클린 부분의 리스트를 저장하도록 관리하고, 상기 더티 리스트는 상기 더티 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 더티 부분의 리스트를 저장하도록 관리할 수 있다.
또한, 상기 버퍼 메모리 관리 단계는 상기 버퍼 메모리부에서 상기 더티 리스트에 해당하는 버퍼 유닛의 반출이 필요할 때, 상기 더티 리스트에 해당하는 버퍼 유닛이 반출된 후 확보될 공간 및 플래시 메모리에 수행될 쓰기 연산 횟수를 고려하여 상기 플래시 메모리의 노드 분할을 적게 일으키는 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출한다.
또한, 상기 버퍼 메모리 관리 단계는 상기 버퍼 메모리부에 저장된 버퍼 유닛 중에서 특정 버퍼 유닛에 데이터가 꽉 차있을 경우 상기 꽉 찬 특정 버퍼 유닛을 상기 교체 대상 버퍼 유닛으로 선정하고, 상기 데이터가 꽉 찬 버퍼 유닛이 없을 경우 상기 저장된 버퍼 유닛의 정보를 기반으로 상기 플래시 메모리의 노드 분할과 적게 연관된 상기 교체 대상 버퍼 유닛을 선정한다.
본 발명은 효율적인 버퍼 관리 방법과 새로운 색인 노드 분할 정책을 통해 읽기 연산에 비해 쓰기 연산이 매우 느린 플래시 메모리 장치에 대한 쓰기 연산을 줄일 수 있는 효과가 있다.
본 발명은 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시킬 수 있는 효과가 있다.
본 발명은 플래시 메모리의 쓰기 연산 및 플래시 메모리의 쓰기 연산에서 요구되는 플래시 메모리의 블록 지우기, 가비지 컬렉션 등의 작업을 줄임으로써 시스템의 성능 및 사용 수명을 향상시킬 수 있는 효과가 있다.
본 발명은 버퍼 공간이 부족할 때 교체 대상자를 선정하는데 있어서, 기존의 단순한 교체 대상자 선출 방법(LRU 방식)이 아닌 교체 대상자의 반출 후 확보될 공간 및 플래시 메모리에 대한 쓰기 횟수를 고려하여 선정함으로써, 더티 유닛의 교체 비용 효율을 높일 수 있는 효과가 있다.
본 발명은 버퍼 유닛을 클린, 더티 및 세미 클린의 세가지 상태로 관리함으로써, 버퍼 캐시에서 버퍼 유닛 반출 시 플래시 메모리에 쓰기 연산이 필요 없는 색인 엔트리의 비율을 높일 수 있는 효과가 있다.
본 발명은 버퍼 유닛의 크기를 플래시 메모리에 저장된 색인 노드보다 크게 유지함으로써, 플래시 메모리의 색인 노드의 분할 횟수를 감소시킬 수 있는 효과가 있다.
도1은 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치(100)의 구성을 나타낸 도면이다.
도2는 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법에 대한 흐름도이다.
도3은 본 발명의 일 실시예에 따른 세가지 상태를 가지는 버퍼 메모리 구조를 나타낸 도면이다.
도4는 본 발명의 일 실시예에 따른 5개의 버퍼 유닛에 대한 통계 테이블을 나타낸 도면이다.
도5는 종래기술의 CFLRU 알고리즘의 버퍼 관리 방식을 나타낸 도면이다.
도6은 본 발명의 일 실시예에 따른 B-buffer의 다이어그램을 나타낸 도면이다.
도7은 본 발명의 일 실시예에 따른 버퍼 유닛의 상태 다이어그램을 나타낸 도면이다.
도8은 본 발명의 일 실시예에 따른 다중-분할 및 종래의 일반적인 노드 분할을 비교하여 나타낸 도면이다.
도9는 본 발명의 일 실시예에 따른 풀 머지 커밋 알고리즘 및 합병정렬 알고리즘을 나타낸 도면이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략하기로 한다. 또한 본 발명의 실시예들을 설명함에 있어 구체적인 수치는 실시예에 불과하다.
본 발명은 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법에 관한 것으로, 새로운 버퍼 관리 방법 및 분할-지연 교체 알고리즘(Lazy-Split LRU)을 제안하며, 더 자세하게는 버퍼에 저장된 페이지 상태를 기존의 클린, 더티 외에 세미 클린을 추가한 세가지 상태로 세분화하여 관리하고, 버퍼캐시에서 더티 페이지를 반출(evict)할 때 반출 후 확보될 공간 및 플래시 메모리에 대한 쓰기 횟수를 고려하여 반출함으로써 플래시 메모리 장치에 대한 쓰기 연산을 줄이고 플래시 메모리 기반 데이터베이스 시스템의 성능 및 저장 장치의 사용 수명을 향상시키려는 것을 목적으로 한다.
우선, 본 발명에 적용되는 새로운 데이터 구조(B-buffer 및 세가지 상태를 가지는 버퍼 유닛)에 대해 설명한 후 이후에 본 발명을 자세히 설명하기로 한다.
본 발명은 상기와 같은 목적을 달성하기 위하여 플래시 메모리에 데이터를 기본 색인 구조(B-tree)로 저장하고, 플래시 메모리의 제약에 대처하고 대기 시간 및 에너지 소비를 줄일 수 있도록 설계된 버퍼 메모리를 사용한다.
상기 설계된 버퍼 메모리는 B-tree 색인 구조가 적용된 버퍼 메모리를 말하며, 본 발명에서는 B-buffer라 정의한다. 상기 B-buffer의 가장 큰 특징은 버퍼의 크기가 증가함으로써 색인 노드의 키 엔트리를 더 효율적으로 유지할 수 있다. 또한, 버퍼에서 키 엔트리를 순서대로 정렬하여 유지함으로써, 부분적으로 플러시를 수행할 수 있으며, 이는 플래시 메모리의 B-tree 인덱스의 특정 부분에만 영향을 미치게 할 수 있다.
또한, 본 발명에서 버퍼 메모리는 전체 적중률(hit ratio)을 증가시키고 리프(leaf) 노드의 변경 내용을 유지하기 위하여 버퍼 유닛을 사용한다. 그리고 버퍼 유닛의 모든 변경된 데이터는 적절한 시간에 반출되어 플래시 메모리에 저장된 기본 색인 노드에 일괄적으로 반영된다. 상기와 같은 방법은 적게 수정된 많은 데이터가 비교적 큰 쓰기 연산으로 변환하므로, 본 발명은 종래기술과는 달리 플래시 메모리에 더 적은 양의 쓰기 연산을 발생시켜 플래시 메모리의 사용 수명을 향상시킬 수 있게 된다.
도6은 본 발명의 일 실시예에 따른 B-buffer의 다이어그램을 나타낸 도면이다.
도6을 설명하기에 앞서, 우선 본 발명에서 사용되는 파라미터에 대한 이해는 아래 <표 1>을 참조하도록 한다.
[표 1]
Figure 112013059714116-pat00001
이때, 플래시 메모리에 저장된 B-tree 노드(index node:
Figure 112013059714116-pat00002
)와 버퍼에 저장된 버퍼 유닛(buffer unit:
Figure 112013059714116-pat00003
)은 색인 엔트리(index entry:
Figure 112013059714116-pat00004
)들의 집합으로 구성되어 있으며, 하나의 색인 엔트리(
Figure 112013059714116-pat00005
)는 레코드 키 및 실제 레코드에 대한 포인터를 쌍으로 포함하고 있다.
도6을 참조하면, 플래시 메모리에는 기본 색인 노드(
Figure 112013059714116-pat00006
등등)가 B-tree 구조로 형성되어 있으며, 리프 노드(
Figure 112013059714116-pat00007
등등)에는 기본 색인 노드가 하나의 크기로 형성되어 있는 것을 확인할 수 있다.
또한, 도6을 참조하면, CPU와 호환성을 가지는 RAM(Random Access Memory)의 일부 영역에는 최근에 사용된 디스크 블록을 기억하는 버퍼캐시(또는 버퍼 메모리)가 존재하는데, 본 발명에서는 상기 버퍼캐시에 B-tree 구조를 적용하여 형성된 B-buffer를 확인할 수 있다.
상기 B-buffer에는 버퍼 유닛(
Figure 112013059714116-pat00008
등등)이 B-tree 구조로 형성되어 있으며, 상기 B-buffer의 리프 노드에는 플래시 메모리에 저장된 하나 크기의 색인 노드(
Figure 112013059714116-pat00009
등등)와는 달리 더 큰 크기의 버퍼 유닛으로 형성되어 있는 것을 확인할 수 있다. 예를 들면 버퍼 유닛
Figure 112013059714116-pat00010
는 기본 색인 노드 보다 3배 큰 크기로 형성되어 있는 것을 확인할 수 있다.
한편, 본 발명은 버퍼캐시로 캐시된 노드의 상태를 종래기술과 같이 단순히 클린(Clean) 및 더티(Dirty)의 두가지 상태로 구분하지 않고, 클린, 더티 외에 세미-클린(Semi-Clean)을 추가한 세가지 상태로 구분한다. 버퍼캐시에 저장된 노드의 데이터와, 그에 대응하여 플래시 메모리에 물리적으로 저장된 데이터가 비교된다. 이 때 버퍼캐시에 저장된 데이터와 플래시 메모리에 물리적으로 저장된 데이터가 모두 일치하는 경우에는 종래 기술과 같이 해당 노드의 상태를 클린으로 정의할 수 있다. 그리고 버퍼캐시에 저장된 데이터와 플래시 메모리에 물리적으로 저장된 데이터가 모두 다른 경우에는, 즉, 버퍼캐시에 저장된 데이터가 모두 최근에 업데이트된 데이터인 경우에는 해당 노드의 상태를 더티 상태로 정의할 수 있다. 버퍼캐시에 저장된 데이터의 일부가 플래시 메모리에 저장된 데이터와 동일하고, 나머지 일부는 플래시 메모리에 저장된 데이터와 다른 경우를 세미 클린 상태로 정의할 수 있다.
B-buffer에 존재하는 버퍼 유닛(
Figure 112013059714116-pat00011
)의 세가지 상태는 다음과 같이 정의할 수 있다.
(1) 클린(Clean) 상태의 버퍼 유닛(
Figure 112013059714116-pat00012
)은 버퍼 유닛의 모든 엔트리와 B-tree 노드의 논리적 뷰 데이터가 동일하고(
Figure 112013059714116-pat00013
), 상기 버퍼 유닛의 모든 엔트리와 플래시 메모리에 저장된 모든 엔트리가 동일한 경우(
Figure 112013059714116-pat00014
)를 말한다.
즉, 클린 상태의 버퍼 유닛은 플래시 메모리에 해당하는 색인 엔트리가 버퍼 메모리에 저장된 후 변경되지 않은 버퍼 유닛을 말한다.
(2) 세미-클린(Semi-Clean) 상태의 버퍼 유닛(
Figure 112014071524671-pat00015
)은 버퍼 유닛의 모든 엔트리와 B-tree 노드의 논리적 뷰 데이터가 동일하고(
Figure 112014071524671-pat00074
), 상기 버퍼 유닛에서 일부 데이터가 변경되어 플래시 메모리에 저장된 엔트리와 동일하지 않은 부분(
Figure 112014071524671-pat00017
)을 세미-클린 버퍼 유닛의 더티 부분으로 정의한다. 또한, 상기 버퍼 유닛에서 데이터가 변경되지 않아 플래시 메모리에 저장된 엔트리와 동일한 부분(
Figure 112014071524671-pat00018
)은 세미-클린 버퍼 유닛의 클린 부분으로 정의한다.
(3) 더티(Dirty) 상태의 버퍼 유닛(
Figure 112014071524671-pat00019
)은 버퍼 유닛의 모든 엔트리와 B-tree 노드의 논리적 뷰 데이터가 동일하지 않고(
Figure 112014071524671-pat00020
), 상기 버퍼 유닛의 모든 데이터가 변경되어 플래시 메모리에 저장된 엔트리와 동일하지 않은 경우(
Figure 112014071524671-pat00075
)를 말한다. 또한 더티 상태의 버퍼 유닛은
Figure 112014071524671-pat00022
또는
Figure 112014071524671-pat00023
으로 표현될 수 있다.
도7은 본 발명의 일 실시예에 따른 버퍼 유닛의 상태 다이어그램을 나타낸 도면이다.
도7을 참조하여 버퍼 메모리(B-buffer)에서 버퍼 유닛이 생성될때부터 반출될때까지의 상태 변화를 간단하게 설명한다.
처음에 플래시 메모리로부터 독출된 데이터는 버퍼캐시에 저장될 때
Figure 112013059714116-pat00024
로 저장된다. 그리고 버퍼 메모리에서 반출이 필요할 때,
Figure 112013059714116-pat00025
보다
Figure 112013059714116-pat00026
를 우선으로 반출하는 Clean-First 교체 정책에 의하여,
Figure 112013059714116-pat00027
는 먼저 반출된다. 만약 버퍼에 쓰기가 발생하여
Figure 112013059714116-pat00028
에서 일부 데이터가 변경되었다면 이는
Figure 112013059714116-pat00029
로 변할 것이다.
본 발명은 Clean-First 교체 정책을 사용하고 있기 때문에, 한번 세미-클린 상태로 변경된 버퍼 유닛(
Figure 112013059714116-pat00030
)은
Figure 112013059714116-pat00031
Figure 112013059714116-pat00032
의 동기화 없이는 절대
Figure 112013059714116-pat00033
로 되돌아갈 수 없다.
Figure 112013059714116-pat00034
Figure 112013059714116-pat00035
로 되돌아가기 위해서는 풀 머지 커밋(full merge commit) 알고리즘을 사용해야 하며, 이에 대한 자세한 설명은 이후에 설명하기로 한다.
그리고 종래의 CFLRU 알고리즘에서 Clean-First 교체 정책은 단지 더티 상태와 클린 상태 중에서 클린 상태를 우선으로 선택하여 반출하지만, 본 발명에서는 더 나아가
Figure 112013059714116-pat00036
에서도 Clean-First 교체 정책을 활용한다.
본 발명은
Figure 112013059714116-pat00037
가 클린 부분과 더티 부분을 가지고 있으므로,
Figure 112013059714116-pat00038
에서 반출이 필요할 때 Clean-First 교체 정책에 따라
Figure 112013059714116-pat00039
의 더티 부분 보다 클린 부분을 먼저 반출한다. 또한,
Figure 112013059714116-pat00040
는 클린 부분을 플러시함으로써
Figure 112013059714116-pat00041
로 변할 수 있다.
또한, 본 발명은 CPU가 찾고자 하는 데이터가 버퍼의 핫 영역에 존재하지 않아 버퍼 미스가 나면, 버퍼 메모리 관리부는 플래시 메모리로부터 해당 데이터를 찾아 버퍼 메모리에 저장하게 된다. 이때, 플래시 메모리로부터 가져오는 특정 색인 노드(
Figure 112013059714116-pat00042
)가
Figure 112013059714116-pat00043
에 이미 존재한다면, 상기
Figure 112013059714116-pat00044
Figure 112013059714116-pat00045
로 변한다.
그리고 본 발명은
Figure 112013059714116-pat00046
의 더티 부분 및
Figure 112013059714116-pat00047
를 버퍼 메모리에서 반출할 때 분할-지연 교체 알고리즘(Lazy-Split LRU)을 이용하여 반출하며, 이에 대한 자세한 설명은 이후에 설명하기로 한다.
이상으로 지금까지 설명한 본 발명의 새로운 데이터 구조(B-buffer 및 세가지 상태를 가지는 버퍼 유닛)에 대해 설명을 기반으로 본 발명을 더 자세히 설명하기로 한다.
도1은 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치(100)의 구성을 나타낸 도면이다.
도1을 참조하면, 본 발명의 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치(100)는 버퍼 메모리부(110), 리스트 관리부(120), 버퍼 메모리 관리부(130) 및 로그 버퍼부(140)를 포함한다.
버퍼 메모리부(110)는 플래시 메모리(10)로부터 독출된 데이터를 버퍼 유닛으로 저장하고, 상기 저장된 버퍼 유닛의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역이 구분된다. 또한, 버퍼 메모리부(110)는 플래시 메모리(10)로 저장하고자 하는 데이터도 함께 저장할 수 있다.
도3은 본 발명의 일 실시예에 따른 세가지 상태를 가지는 버퍼 메모리 구조를 나타낸 도면이다.
도3을 참조하면, 버퍼 메모리부(110)는 LRU 기법을 기반으로 최근 많이 참조된 버퍼 유닛이 저장되는 핫 영역(Hot region)과 최근 적게 참조된 버퍼 유닛이 저장되는 콜드 영역(Cold region)으로 구분되어 있다.
버퍼 메모리부(110)의 핫 영역은 버퍼의 적중률(hit ratio)을 높이기 위해 형성되어 있고, 콜드 영역은 버퍼 메모리부(110)에 가용 공간이 없어서 버퍼 유닛의 반출이 필요할 때 교체 대상 버퍼 유닛을 선정하기 위하여 형성되어 있다. 이때, 상기 콜드 영역의 크기를 윈도우(w; window)라고 부르며, 상기 윈도우 크기가 너무 클 경우 버퍼 캐시의 적중률이 급격히 떨어질 수도 있으므로, 이를 적절히 조절하는 것이 매우 중요하다.
한편, 본 발명에서 설명하는 버퍼 캐시 및 B-buffer는 버퍼 메모리부(110)와 상응한다.
또한, 버퍼 메모리부(110)에 저장된 버퍼 유닛은 상기 저장된 버퍼 유닛에 포함된 데이터가 상기 저장된 버퍼 유닛에 대응하여 상기 플래시 메모리에 저장된 데이터와 모두 동일한지 및 모두 다른지에 따라 클린(Clean) 상태의 버퍼 유닛, 더티(Dirty) 상태의 버퍼 유닛 및 세미-클린(Semi-Clean) 상태의 버퍼 유닛을 가진다. 상기 세자기 상태를 가지는 버퍼 유닛에 대한 설명은 상기에 자세하게 설명했으므로, 이를 참조하도록 한다.
또한, 버퍼 메모리부(110)는 플래시 메모리(10)로부터 독출된 데이터를 상기 독출된 데이터가 지닌 색인 엔트리의 최대 키 용량보다 배수의 크기로 구성하여 상기 버퍼 유닛으로 저장한다. 이에 대한 설명은 도6을 참조하여 상기에 설명했으므로, 이를 참조하도록 한다.
리스트 관리부(120)는 버퍼 메모리부(110)의 콜드 영역에 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록한다.
리스트 관리부(120)는 클린 리스트가 클린 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 클린 부분의 리스트를 저장하도록 관리하고, 더티 리스트는 더티 상태인 버퍼 유닛의 리스트 및 세미 클린 상태인 버퍼 유닛의 더티 부분의 리스트를 저장하도록 관리한다.
버퍼 메모리 관리부(130)는 버퍼 메모리부(110)에 가용 공간이 없어 버퍼 유닛의 반출이 필요할 때, 버퍼 메모리부(110)의 콜드 영역에서 리스트 관리부(120)에 저장된 클린 리스트 및 더티 리스트를 참조하여 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출한다.
또한, 버퍼 메모리 관리부(130)는 교체 대상 버퍼 유닛을 선정할 때 더티 리스트에 대응하는 버퍼 유닛보다 클린 리스트에 대응하는 버퍼 유닛을 우선하여 선정한다. 즉, 버퍼 메모리 관리부(130)는 더티 상태의 버퍼 유닛 및 세미-클린 상태의 버퍼 유닛에서 더티 부분 보다 클린 상태의 버퍼 유닛 및 세미-클린 상태의 버퍼 유닛에서 클린 부분을 먼저 반출한다.
버퍼 메모리 관리부(130)는 클린 리스트에 대응하는 버퍼 유닛을 반출할 때, LRU 알고리즘과 같은 방식으로 버퍼 메모리부(110)에서 오래전에 참조된 버퍼 유닛을 먼저 반출할 수 있으며, 더티 리스트에 대응하는 버퍼 유닛을 반출할 때에는 더티 상태의 버퍼 유닛에 대한 정보(예를들면, 버퍼 유닛에 포함된 엔트리 수, 겹쳐쓰기가 발생한 횟수)를 고려함으로써 반출한다. 이때, 더티 리스트에 대응하는 버퍼 유닛을 반출할 때에는 본 발명에서 제안하는 분할-지연 교체 알고리즘(Lazy-Split LRU)을 이용하여 교체 대상 버퍼 유닛을 선정한다.
더티 페이지는 버퍼 캐시에서 반출할 때 플래시 메모리에 쓰기 연산을 발생시키므로, 클린 페이지보다 시간 및 에너지 소비 측면에서 교체 비용이 훨씬 크다.
기존 LRU 알고리즘 및 CFLRU 알고리즘에서는 더티 페이지를 버퍼에서 반출할 때, 상기와 같은 더티 페이지에 대한 비용은 고려하지 않고 단순히 오래전에 참조된 페이지 순서대로 반출하여 플래시 메모리에서 최적의 성능을 기대하기 어려웠다.
따라서 본 발명의 버퍼 메모리 관리부(130)는 버퍼 메모리부(110)에서 상기 더티 리스트에 해당하는 버퍼 유닛의 반출이 필요할 때, 상기 더티 리스트에 해당하는 버퍼 유닛이 반출된 후 확보될 공간 및 플래시 메모리에 수행될 쓰기 연산 횟수를 고려하여 상기 플래시 메모리의 노드 분할을 적게 일으키는 교체 대상 버퍼 유닛을 선정(분할-지연 교체 알고리즘 사용)하여 반출한다.
따라서 본 발명은 더티 상태의 버퍼 유닛에 대한 교체 비용을 고려하여 반출함으로써 플래시 메모리(10)에 발생하는 쓰기 연산을 감소시키고, 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시킨다.
또한, 버퍼 메모리 관리부(130)는 버퍼 메모리부(110)에 저장된 버퍼 유닛 중에서 특정 버퍼 유닛에 데이터가 꽉 차있을 경우 상기 꽉 찬 특정 버퍼 유닛을 상기 교체 대상 버퍼 유닛으로 선정하고, 상기 데이터가 꽉 찬 버퍼 유닛이 없을 경우 상기 저장된 버퍼 유닛의 정보(예를들면, 버퍼 유닛에 포함된 엔트리 수, 겹쳐쓰기가 발생한 횟수)를 기반으로 상기 플래시 메모리의 노드 분할과 적게 연관된 교체 대상 버퍼 유닛을 선정한다.
로그 버퍼부(140)는 버퍼 메모리부(110)에 저장된 버퍼 유닛 내의 일부의 데이터가 업데이트되었을 때에 상기 업데이트된 일부의 데이터를 저장한다.
리스트 관리부(120)는 로그 버퍼부(140)에 저장된 상기 일부의 데이터의 리스트를 더티 리스트로 관리하고, 로그 버퍼부(140)에 저장된 버퍼 유닛 내의 상기 업데이트된 일부의 데이터 이외의 나머지 부분의 리스트를 클린 리스트로 관리한다.
또한, 로그 버퍼부(140)는 한정된 크기를 가지고 있기 때문에, 로그 버퍼부(140)에 저장된 데이터가 설정된 크기 이상이 되면 저장된 데이터를 강제로 반출하여 로그 버퍼부(140)의 가용 공간을 확보해야 할 필요가 있다. 예를 들어, 로그 버퍼부(140)는 업데이트된 일부의 데이터가 누적되어 총량이 기 설정된 기준 용량(예를 들어, 2페이지)에 도달하면, 로그 버퍼부(140)에 저장된 기준 용랑만큼의 데이터를 상기 플래시 메모리에 기록되도록 반출할 수 있다.
이하 설명은 버퍼 메모리 관리부(130)가 버퍼 메모리부(110)에서 더티 리스트에 대응하는 버퍼 유닛을 반출할 때 사용하는 분할-지연 교체 알고리즘(Lazy-Split LRU)에 대해 자세히 설명한다.
버퍼 메모리 관리부(130)는 버퍼 메모리부(110)에 있는 더티 리스트에 대응하는 버퍼 유닛을 반출할 때, 플래시 메모리(10)로부터 캐시된 색인 엔트리(index entry)를 효율적으로 병합하는 것이 중요하다.
기존에 인덱스 버퍼 교체 정책으로는 FIFO(First In, First Out), First-fit 반출 정책, First-associated 반출 정책 및 Exact-fit 반출 정책 등이 있었다. 이러한 기존 인덱스 버퍼 교체 정책은 B-tree 분할이 정상적으로 수행된 상황에서 플래시 메모리의 I/O을 최소화하는 방법을 제시하지만, 본 발명은 세미-클린 상태의 버퍼 유닛에서 더티 부분 및 더티 상태의 버퍼 유닛을 반출할 때, 통계에 따라 플래시 메모리의 분할을 적게 일으킬 수 있는 더티 노드를 선정하여 반출하는 분할-지연 (Lazy-Split LRU) 반출 정책을 제시한다.
이하에 제시된 <알고리즘 1>은 분할-지연 (Lazy-Split LRU) 교체 알고리즘에 대해 나타낸 것이다.
[알고리즘 1]
Figure 112013059714116-pat00048
버퍼 메모리 관리부(130)는 B-buffer의 버퍼 메모리부(110)가 기 설정된 용량 이상이 되면, 버퍼 메모리부(110)의 공간 확보를 위해 리스트 관리부(120)를 참조하여 교체 대상 버퍼 유닛을 선정한다.
상기 <알고리즘 1>의 1~6줄에 제시된 방법은 버퍼 메모리부(110)에 키(key)가 꽉 찬 버퍼 유닛은 없지만 버퍼 공간이 부족할 경우, 버퍼 메모리의 공간 확보를 위하여 사용하는 교체 대상 선출 방법이다.
만약 자동으로 선정된 교체 대상 버퍼 유닛이 없을 경우, 버퍼 메모리 관리부(130)는 통계 테이블을 생성하고, 상기 통계 테이블을 이용하여 동적으로 교체 대상 버퍼 유닛을 선정한다.
도4는 본 발명의 일 실시예에 따른 5개의 버퍼 유닛에 대한 통계 테이블을 나타낸 도면이다.
도4를 참조하면, 플래시 메모리(10)에 저장된 B-tree 구조의 기본 색인 노드(
Figure 112013059714116-pat00049
)에 대응되어 버퍼 메모리부(110)에 저장된 버퍼 유닛을
Figure 112013059714116-pat00050
로 정의한다.
버퍼 메모리부(110)에 저장된 버퍼 유닛(
Figure 112013059714116-pat00051
)은 기본 색인 노드에 저장된 많은 색인 엔트리 수에 대한 정보(#ofNEntries) 및 버퍼 유닛 자체의 엔트리 수에 대한 정보(#ofBEntries)를 각각 저장하고 있다.
예를 들어
Figure 112013059714116-pat00052
는 2개의 엔트리 수 정보(#ofBEntries) 및
Figure 112013059714116-pat00053
에 대한 9개의 엔트리 수 정보(#ofNEntries)를 가지고 있다.
그리고 B-buffer가 가득 차면, 본 발명의 분할 정책은 통계 테이블을 생성하며, 버퍼 메모리 관리부(130)에 의해 생성되는 통계 테이블(Statistical Table)은 #ofBEntries 및 #ofNWrites의 두가지 정보를 저장하며, #ofBEntries는 버퍼 유닛에 저장된 버퍼 유닛의 색인 엔트리(index entries) 수에 대한 정보이고, #ofNWrites는 버퍼 유닛을 플러시 할 때, 노드에 발생한 겹쳐쓰기 횟수에 대한 정보이다.
이때, 통계 테이블에 저장된 #ofBEntries 값은
Figure 112013059714116-pat00054
로부터 직접 복사하여 저장하고, #ofNWrites 값은 (#ofBEntries + #ofNEntries)/max#ofKey + 2 의 식을 이용하여 얻는다.
예를들면,
Figure 112013059714116-pat00055
에 대한 통계 테이블 (4,1)에 대한 정보의 의미는
Figure 112013059714116-pat00056
가 4개의 색인 엔트리를 가지고 있으며, 한번의 겹쳐쓰기가 발생하였으므로,
Figure 112013059714116-pat00057
가 플러시 할 때 플래시 메모리(10)에 한번의 쓰기 연산을 발생시킨다는 것을 의미한다.
이하 설명은 본 발명과 분할 문제를 해결해야 하는 기존 플래시 메모리 기반 인덱스 버퍼 교체 정책을 비교한다.
기존 인덱스 버퍼 교체 정책은 변경된 정보를 플래시 메모리의 델타 페이지에 저장한다.
그리고 기존 인덱스 버퍼 교체 정책 중에서 First-fit 반출 정책은 변경된 데이터를 로그에 씀으로써 실제로 노드 분할을 수행하지 않는다. 그러나 중 First-fit 반출 정책은 분할을 할 때 루트 노드에 모두 영향을 미치기 때문에 쓰기 연산의 횟수를 거의 줄일 수 없다. 게다가 First-fit 반출 정책은 데이터를 검색할 때 논리적 B-tree 노드의 인덱스 엔트리와 관련있는 모든 델타 페이지(일반적으로 최대키가 63으로 디자인 되어있음)를 방문하기 때문에, 검색 시간 및 메인 메모리 사용량이 크게 증가할 것이다.
한편, 기존에 인덱스 버퍼 교체 정책 중에서 First-associated 반출 정책은 반출이 필요할 때, 버퍼에서 단순히 첫번째 인덱스 항목을 선택하고, 그것과 연관된 인덱스 엔트리를 교체 대상으로 선택하며, 단지 공간 활용 문제만 고려하여 반출한다.
예를 들면, First-associated 반출 정책은 플래시 메모리에서
Figure 112013059714116-pat00058
를 분할할 때, 세번의 쓰기 연산이 수행된 후 분할될 것이다. 즉 상기와 같은 방법은 쓰기 비용이 최적화된 방법이 아니다.
따라서 본 발명의 분할-지연 교체 알고리즘 중에서 상기 <알고리즘 1>의 1~6줄에 제시된 방법은 플래시 메모리 기반의 B-tree 인덱스의 분할 비용을 고려하여 교체 대상 버퍼 유닛을 선정한다.
한편, <알고리즘 1>의 7~10줄에 제시된 분할-지연 교체 방법은 특정 버퍼 유닛에 키(key)가 꽉 차 있을 경우에는 이를 자동으로 교체 대상 버퍼 유닛으로 선정하여 반출하는 방법이다.
본 발명의 분할-지연 교체 알고리즘은 가능한한 느리게(lazily) 노드를 분할한다. 이를 위해 버퍼 메모리부(110)는 플래시 메모리에 저장된 노드의 키 용량보다 K배 큰 크기로 버퍼 유닛을 저장한다. 이에 대한 예는 도6을 참조하여 상기에 설명하였으므로 이를 참조하도록 한다.
본 발명의 분할-지연 교체 정책은 버퍼 유닛의 색인 엔트리를 플러시하여 비운다. 그리고 상기 플러시는 노드의 오버 플로우를 발생시킬 수 있으며, 모든 키의 엔트리를 수용하기 위해 두개 이상의 노드가 필요하다.
본 발명에서 <알고리즘 1>의 7~10줄에 제시된 분할-지연 교체 방법은 다중-분할 커밋(multi-split commit)이라 하며, 필요한 리프 노드 수(m)는 [k]-1]≤m≤[k]+1의 식을 이용하여 구할 수 있다.
도8은 본 발명의 일 실시예에 따른 다중-분할 및 종래의 일반적인 노드 분할을 비교하여 나타낸 도면이다.
도8을 참조하면, 우선 B-tree의 색인 노드(
Figure 112013059714116-pat00059
)가 가질 수 있는 최대 키 용량은 5로 가정하고, 버퍼 유닛은 3배 큰 크기로 저장 가능하다고 하자. 그러면
Figure 112013059714116-pat00060
는 최대 15개의 키를 저장할 수 있다.
만약 30개의 키를 삽입하고자 할 때 플래시 메모리에 즉시 분할이 일어난다면, 종래의 일반적인 노드 분할과 본 발명의 다중 분할은 이하와 같은 차이가 발생한다.
종래의 일반적인 노드 분할은 5개의 키가 삽입될 때마다 3개의 노드에서 쓰기 연산이 발생하게 되므로, 총 30개의 키를 삽입할 경우 플래시 메모리에 18번의 쓰기 연산이 발생한다.
한편 본 발명의 다중-분할은
Figure 112013059714116-pat00061
Figure 112013059714116-pat00062
의 최대 키 용량의 3배, 즉 15개의 키가 삽입될 때까지 노드 분할이 일어나지 않으므로, 해당 버퍼 유닛에 15개의 키가 모두 삽입되어 가득 차면
Figure 112013059714116-pat00063
Figure 112013059714116-pat00064
를 병합하고, 최대 [3]+1=4의 리프 노드를 형성할 것이다. 따라서 다중-분할 방법은 총 30개의 키를 삽입할 경우 플래시 메모리에 4번의 쓰기 연산이 발생한다.
따라서 <알고리즘 1>의 7~10줄에 제시된 다중-분할 방법을 이용함으로써 본 발명은 종래의 기술들에 비해 플래시 메모리에 발생하는 쓰기 연산을 훨씬 많이 줄이는 것이 가능하다. 이에 따라 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시킬 수 있다.
한편, 충돌된 인덱스를 복구하기 위해서는 버퍼 유닛을 플래시 메모리에 기록할 때 시간을 제한해야 한다. 또한, Clean-first 교체 정책은 더티 상태의 버퍼 유닛에 해당하는 인덱스 엔트리가 플래시 메모리에 저장된 키와 중화될 수 없기 때문에, 정보의 불필요한 중복 문제를 해결해야 할 것이다.
상기와 같은 문제를 해결하기 위하여, 분할-지연 교체 정책(LS-LUR)은 주기적 및 수동으로 B-buffer의 엔트리를 교체하는 방법을 제시하며, 이를 위해 본 발명은 B-buffer 유닛 및 B-tree 노드의 정렬된 두개의 입력을 결합하여 하나의 정렬된 출력으로 만드는 합병정렬(Mergesort)를 사용한다.
도9는 본 발명의 일 실시예에 따른 풀 머지 커밋 알고리즘 및 합병정렬 알고리즘을 나타낸 도면이다.
도9를 참조하면, <알고리즘 2>는 풀 머지 커밋(full merge commit)의 절차를 나타낸 알고리즘이고, <알고리즘 3>은 B-buffer 유닛 및 B-tree 노드가 병합할 때 작동하는 합병정렬(Mergesort)의 절차를 나타낸 알고리즘이다.
상기 합병정렬(Mergesort)은 다음과 같은 세 단계를 포함한다. 첫번째 단계는 키(key) 항목을 두개의 부분으로 나눈다. 상기 두 부분은 각각 키 엔트리의 절반씩 구성된다. 두번째 단계는 첫번째 단계의 결과가 아주 작은 경우를 제외하고는 그것을 합병정렬을 수행하는 재귀로 사용한다. 세번째 단계는 하나의 정렬된 키 배열을 병합함으로써 결과를 결합한다.
분할-지연 교체 정책(LS-LRU)에 합병정렬을 적용하는 경우, 이미 첫번째 단계 및 두번째 단계에서 이미 달성된다. 이는 키(key)가 리프 버퍼 유닛 및 노드로 구분되며, 모든 버퍼 유닛 또는 인덱스 노드가 자명하게 가려진다.
따라서, 본 발명은 부분 병합을 즉시 수행할 수 있으며, 반복적으로 병합 알고리즘을 호출함으로써 정렬된 키 엔트리를 얻을 수 있다.
도2는 본 발명의 일 실시예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법에 대한 흐름도이다. 상기에 설명된 내용을 바탕으로 간단히 설명하기로 한다.
상기 버퍼 메모리부(110)는 플래시 메모리(10)로부터 독출된 데이터를 버퍼 유닛으로 저장한다(S210).
이때, 버퍼 메모리부(110)는 저장된 버퍼 유닛의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역이 구분된다. 또한, 버퍼 메모리부(110)는 플래시 메모리(10)로 저장하고자 하는 데이터도 함께 저장할 수 있다.
또한 버퍼 메모리부(110)는 LRU 기법을 기반으로 최근 많이 참조된 버퍼 유닛이 저장되는 핫 영역(Hot region)과 최근 적게 참조된 버퍼 유닛이 저장되는 콜드 영역(Cold region)으로 구분되며, 이에 대한 자세한 설명은 상기 도3을 참조하여 설명하였으므로 이하 설명을 생략하기로 한다.
단계S220은 버퍼 유닛의 반출 필요 여부를 확인하는 단계로, 버퍼 메모리 관리부(130)는 버퍼 메모리부(110)의 용량이 기 설정된 용량 이상이 되었는지를 확인한다. 이때, 버퍼 메모리 관리부(130)는 버퍼 메모리부(110)가 기 설정된 용량 이상일 경우, 공간 확보를 위해 리스트 관리부(120)를 참조하여 교체 대상 메모리부(110)가 기 설정된 용량 이상이 되면, 버퍼 메모리부(110)의 공간 확보를 위해 리스트 관리부(120)를 참조하여 교체 대상 버퍼 유닛을 선정한다.
그리고 버퍼 메모리부(110)에 용량이 부족하여 버퍼 유닛의 반출이 필요할 경우, 버퍼 메모리 관리부(130)는 리스트 관리부(120)를 참조하여, 더티 리스트에 대응하는 버퍼 유닛보다 클린 리스트에 대응하는 버퍼 유닛을 우선하여 선정하고, 상기 선정된 클린 리스트에 대응하는 버퍼 유닛을 버퍼 메모리부(110)에서 반출한다(S230).
즉, 버퍼 메모리 관리부(130)는 더티 상태의 버퍼 유닛 및 세미-클린 상태의 버퍼 유닛에서 더티 부분 보다 클린 상태의 버퍼 유닛 및 세미-클린 상태의 버퍼 유닛에서 클린 부분을 먼저 반출한다.
이때, 리스트 관리부(120)는 버퍼 메모리부(110)의 콜드 영역에 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록한다. 또한, 리스트 관리부(120)는 클린 리스트가 클린 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 클린 부분의 리스트를 저장하도록 관리하고, 더티 리스트는 더티 상태인 버퍼 유닛의 리스트 및 세미 클린 상태인 버퍼 유닛의 더티 부분의 리스트를 저장하도록 관리한다.
단계S230은 버퍼 메모리 관리부(130)가 클린 리스트에 대응하는 버퍼 유닛을 반출할 때, LRU 알고리즘과 같은 방식으로 버퍼 메모리부(110)에서 오래전에 참조된 버퍼 유닛을 먼저 반출할 수 있다.
그리고, 버퍼 메모리 관리부(130)는 버퍼 메모리부(110)에 클린 리스트에 대응하는 버퍼 유닛이 모두 반출된 후 더티 리스트에 대응하는 버퍼 유닛의 반출이 필요할 경우, 상기 더티 리스트에 대응하는 버퍼 유닛에 대한 정보(예를들면, 버퍼 유닛에 포함된 엔트리 수, 겹쳐쓰기가 발생한 횟수)를 고려함으로써 반출한다(S240).
단계S240은 분할-지연 교체 알고리즘(Lazy-Split LRU)을 이용함으로써 교체 대상 버퍼 유닛이 선정될 수 있으며, 상기 분할-지연 교체 알고리즘(Lazy-Split LRU)에 대한 자세한 설명은 상기에 설명했으므로, 이하 생략하기로 한다.
따라서 본 발명은 분할-지연 교체 알고리즘(Lazy-Split LRU)을 이용하여 더티 상태의 버퍼 유닛에 대한 교체 비용을 고려하여 반출함으로써 플래시 메모리(10)에 발생하는 쓰기 연산을 감소시키고, 플래시 메모리 기반 데이터베이스 시스템(DBMS)의 성능 및 저장 장치의 사용 수명을 향상시킬 수 있다.
한편, 로그 버퍼부(140)는 버퍼 메모리부(110)에 저장된 버퍼 유닛 내의 일부의 데이터가 업데이트되었을 때에 상기 업데이트된 일부의 데이터를 저장한다.
리스트 관리부(120)는 로그 버퍼부(140)에 저장된 상기 일부의 데이터의 리스트를 더티 리스트로 관리하고, 로그 버퍼부(140)에 저장된 버퍼 유닛 내의 상기 업데이트된 일부의 데이터 이외의 나머지 부분의 리스트를 클린 리스트로 관리한다.
또한, 로그 버퍼부(140)는 한정된 크기를 가지고 있기 때문에, 로그 버퍼부(140)에 저장된 데이터가 설정된 크기 이상이 되면 저장된 데이터를 강제로 반출하여 로그 버퍼부(140)의 가용 공간을 확보해야 할 필요가 있다. 예를 들어, 로그 버퍼부(140)는 업데이트된 일부의 데이터가 누적되어 총량이 기 설정된 기준 용량(예를 들어, 2페이지)에 도달하면, 로그 버퍼부(140)에 저장된 기준 용랑만큼의 데이터를 상기 플래시 메모리에 기록되도록 반출할 수 있다.
본 발명의 일 실시 예에 따른 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치
110: 버퍼 메모리부 120: 리스트 관리부
130: 버퍼 메모리 관리부 140: 로그 버퍼부
10: 플래시 메모리

Claims (14)

  1. 플래시 메모리로부터 독출된 데이터를 버퍼 유닛으로 저장하고, 상기 저장된 버퍼 유닛의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역이 구분되는 버퍼 메모리부;
    상기 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록하는 리스트 관리부; 및
    상기 버퍼 메모리부에 가용 공간이 없어 버퍼 유닛의 반출이 필요할 때, 상기 콜드 영역에서 상기 클린 리스트 및 상기 더티 리스트를 참조하여 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출하는 버퍼 메모리 관리부;
    를 포함하고,
    상기 저장된 버퍼 유닛은
    상기 저장된 버퍼 유닛에 포함된 데이터가 상기 저장된 버퍼 유닛에 대응하여 상기 플래시 메모리에 저장된 데이터와 모두 동일한지 및 모두 다른지에 따라 클린상태, 더티상태, 및 세미-클린의 세가지 상태를 가지는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 리스트 관리부는
    상기 클린 리스트가 상기 클린 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 클린 부분의 리스트를 저장하도록 관리하고, 상기 더티 리스트는 상기 더티 상태인 버퍼 유닛의 리스트 및 상기 세미 클린 상태인 버퍼 유닛의 더티 부분의 리스트를 저장하도록 관리하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  4. 제1항에 있어서,
    상기 버퍼 메모리 관리부는
    상기 교체 대상 버퍼 유닛을 선정할 때 상기 더티 리스트에 대응하는 버퍼 유닛보다 상기 클린 리스트에 대응하는 버퍼 유닛을 우선하여 선정하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  5. 제1항에 있어서,
    상기 저장된 버퍼 유닛 내의 일부의 데이터가 업데이트되었을 때에 상기 업데이트된 일부의 데이터를 저장하는 로그 버퍼부;
    를 더 포함하고,
    상기 리스트 관리부는 상기 로그 버퍼부에 저장된 상기 일부의 데이터의 리스트를 상기 더티 리스트로 관리하고, 상기 저장된 버퍼 유닛 내의 상기 업데이트된 일부의 데이터 이외의 나머지 부분의 리스트를 상기 클린 리스트로 관리하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  6. 제5항에 있어서,
    상기 로그 버퍼부는
    업데이트된 일부의 데이터가 누적되어 총량이 기 설정된 기준 용량에 도달하면, 상기 기준 용랑만큼의 데이터를 상기 플래시 메모리에 기록되도록 반출하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  7. 제1항에 있어서,
    상기 버퍼 메모리부는
    상기 플래시 메모리로부터 독출된 데이터를 상기 독출된 데이터가 지닌 색인 엔트리의 최대 키 용량보다 배수의 크기로 구성하여 상기 버퍼 유닛으로 저장하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  8. 플래시 메모리로부터 독출된 데이터를 버퍼 유닛으로 저장하고, 상기 저장된 버퍼 유닛의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역이 구분되는 버퍼 메모리부;
    상기 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록하는 리스트 관리부; 및
    상기 버퍼 메모리부에서 상기 더티 리스트에 해당하는 버퍼 유닛의 반출이 필요할 때, 상기 더티 리스트에 해당하는 버퍼 유닛이 반출된 후 확보될 공간 및 플래시 메모리에 수행될 쓰기 연산 횟수를 고려하여 상기 플래시 메모리의 노드 분할을 적게 일으키는 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출하는 버퍼 메모리 관리부;
    를 포함하고,
    상기 저장된 버퍼 유닛은
    상기 저장된 버퍼 유닛에 포함된 데이터가 상기 저장된 버퍼 유닛에 대응하여 상기 플래시 메모리에 저장된 데이터와 모두 동일한지 및 모두 다른지에 따라 클린상태, 더티상태, 및 세미-클린의 세가지 상태를 가지는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  9. 제8항에 있어서,
    상기 버퍼 메모리 관리부는
    상기 버퍼 메모리부에 저장된 버퍼 유닛 중에서 특정 버퍼 유닛에 데이터가 꽉 차있을 경우 상기 꽉 찬 특정 버퍼 유닛을 상기 교체 대상 버퍼 유닛으로 선정하고, 상기 데이터가 꽉 찬 버퍼 유닛이 없을 경우 상기 저장된 버퍼 유닛의 정보를 기반으로 상기 플래시 메모리의 노드 분할과 적게 연관된 상기 교체 대상 버퍼 유닛을 선정하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치.
  10. 데이터의 접근 빈도 및 접근 시간에 따라 핫 영역과 콜드 영역으로 구분되는 버퍼 메모리부에 플래시 메모리로부터 독출된 데이터를 버퍼 유닛으로 저장하는 단계;
    상기 저장된 버퍼 유닛의 상태 또는 상기 버퍼 유닛 내의 일부의 상태를 클린 리스트 및 더티 리스트로 구분하여 기록하는 리스트 관리 단계; 및
    상기 버퍼 메모리부에 가용 공간이 없어 버퍼 유닛의 반출이 필요할 때, 상기 콜드 영역에서 상기 클린 리스트 및 상기 더티 리스트를 참조하여 교체 대상 버퍼 유닛을 선정하고, 상기 선정된 교체 대상 버퍼 유닛을 버퍼 캐시 내에서 반출하는 버퍼 메모리 관리 단계;
    를 포함하고,
    상기 저장된 버퍼 유닛은
    상기 저장된 버퍼 유닛에 포함된 데이터가 상기 저장된 버퍼 유닛에 대응하여 상기 플래시 메모리에 저장된 데이터와 모두 동일한지 및 모두 다른지에 따라 클린상태, 더티상태, 및 세미-클린의 세가지 상태를 가지는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법.
  11. 삭제
  12. 제10항에 있어서,
    상기 버퍼 메모리 관리 단계는
    상기 교체 대상버퍼 유닛을 선정할 때 상기 더티 리스트에 대응하는 버퍼 유닛보다 상기 클린 리스트에 대응하는 버퍼 유닛을 우선하여 선정하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법.
  13. 제10항에 있어서,
    상기 저장된 버퍼 유닛 내의 일부의 데이터가 업데이트 되었을 때에 상기 업데이트된 일부의 데이터를 로그 버퍼부에 저장하는 단계;
    를 더 포함하고,
    상기 리스트 관리 단계는 상기 로그 버퍼부에 저장된 상기 일부의 데이터의 리스트를 상기 더티 리스트로 관리하고, 상기 저장된 버퍼 유닛 내의 상기 업데이트된 일부의 데이터 이외의 나머지 부분의 리스트를 상기 클린 리스트로 관리하는
    플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 방법.
  14. 제10항, 및 제12항 내지 제13항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR20130077558A 2013-07-03 2013-07-03 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법 KR101481633B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20130077558A KR101481633B1 (ko) 2013-07-03 2013-07-03 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법
PCT/KR2014/005955 WO2015002481A1 (ko) 2013-07-03 2014-07-03 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법
US14/902,748 US10387045B2 (en) 2013-07-03 2014-07-03 Apparatus and method for managing buffer having three states on the basis of flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130077558A KR101481633B1 (ko) 2013-07-03 2013-07-03 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150004949A KR20150004949A (ko) 2015-01-14
KR101481633B1 true KR101481633B1 (ko) 2015-01-15

Family

ID=52143994

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130077558A KR101481633B1 (ko) 2013-07-03 2013-07-03 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법

Country Status (3)

Country Link
US (1) US10387045B2 (ko)
KR (1) KR101481633B1 (ko)
WO (1) WO2015002481A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101851948B1 (ko) 2018-01-29 2018-04-25 (주)베스트케이에스 데이터 페이지의 버퍼 풀 관리 방법
US11726683B2 (en) 2020-11-02 2023-08-15 SK Hynix Inc. Storage system and operating method for moving data between storage devices thereof

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6799256B2 (ja) * 2016-11-28 2020-12-16 富士通株式会社 ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
CN108874799B (zh) * 2017-05-09 2021-11-30 中国科学院沈阳自动化研究所 高速并行数据查找方法
BR102017014889A2 (pt) 2017-07-11 2019-01-29 Zammi Instrumental Ltda sistema de drenagem mediastinal
KR102053504B1 (ko) * 2017-12-11 2020-01-08 한국산업기술대학교산학협력단 메모리 관리 장치 및 방법
US10705977B2 (en) * 2018-03-02 2020-07-07 Intel Corporation Method of dirty cache line eviction
KR20220048869A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11481134B1 (en) * 2021-05-24 2022-10-25 Sap Se Adaptive caching for hybrid columnar databases with heterogeneous page sizes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060010617A (ko) * 2004-07-28 2006-02-02 삼성전자주식회사 페이지 정보를 이용한 페이지 대체 방법
KR100787856B1 (ko) 2006-11-29 2007-12-27 한양대학교 산학협력단 플래시 메모리 저장장치의 페이지 교체 방법
KR100941382B1 (ko) 2008-07-10 2010-02-10 한양대학교 산학협력단 플래시 메모리와 연동되는 페이지 버퍼 관리 장치 및 방법,그리고 플래시 메모리의 페이지 교체 장치 및 방법
KR20120070408A (ko) * 2010-12-21 2012-06-29 에스케이하이닉스 주식회사 블록을 관리하는 비휘발성 메모리 장치의 제어 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
KR101146082B1 (ko) * 2010-03-31 2012-05-15 성균관대학교산학협력단 비휘발성 메모리 저장 장치 및 비휘발성 메모리 저장 장치의 성능 향상 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060010617A (ko) * 2004-07-28 2006-02-02 삼성전자주식회사 페이지 정보를 이용한 페이지 대체 방법
KR100787856B1 (ko) 2006-11-29 2007-12-27 한양대학교 산학협력단 플래시 메모리 저장장치의 페이지 교체 방법
KR100941382B1 (ko) 2008-07-10 2010-02-10 한양대학교 산학협력단 플래시 메모리와 연동되는 페이지 버퍼 관리 장치 및 방법,그리고 플래시 메모리의 페이지 교체 장치 및 방법
KR20120070408A (ko) * 2010-12-21 2012-06-29 에스케이하이닉스 주식회사 블록을 관리하는 비휘발성 메모리 장치의 제어 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101851948B1 (ko) 2018-01-29 2018-04-25 (주)베스트케이에스 데이터 페이지의 버퍼 풀 관리 방법
US11726683B2 (en) 2020-11-02 2023-08-15 SK Hynix Inc. Storage system and operating method for moving data between storage devices thereof

Also Published As

Publication number Publication date
US20160196063A1 (en) 2016-07-07
KR20150004949A (ko) 2015-01-14
WO2015002481A1 (ko) 2015-01-08
US10387045B2 (en) 2019-08-20

Similar Documents

Publication Publication Date Title
KR101481633B1 (ko) 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US8161241B2 (en) Temperature-aware buffered caching for solid state storage
CN103440207B (zh) 缓存方法及装置
CN102436353B (zh) 半导体存储器控制装置
Liu et al. Hybrid storage management for database systems
US20170249257A1 (en) Solid-state storage device flash translation layer
CN107943719B (zh) 一种基于请求分类的闪存转换层控制方法
WO2009033419A1 (fr) Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données
JP2012141946A (ja) 半導体記憶装置
CN103246696A (zh) 高并发数据库的访问方法及应用于多服务器系统的方法
CN112131140B (zh) 基于ssd的支持高效存储空间管理的键值分离存储方法
CN110147331A (zh) 缓存数据处理方法、系统及可读存储介质
KR101340706B1 (ko) 플래시 메모리 기반 저장 장치를 위한 하이브리드 해시 인덱스
Carniel et al. A generic and efficient framework for flash-aware spatial indexing
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
Wang et al. Reducing write amplification of lsm-tree with block-grained compaction
KR101179027B1 (ko) 버퍼의 지역성에 기초한 가비지 컬렉션을 수행하는 낸드 플래시 메모리 시스템 및 방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
Jin et al. Lazy-split B+-tree: a novel B+-tree index scheme for flash-based database systems
KR101353967B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법
KR20110042576A (ko) 차세대 대용량 저장장치에 적합한 동적 색인 관리 시스템 및 그 방법과 그 소스 프로그램을 기록한 기록매체
KR20210036120A (ko) 플래시 메모리를 위한 시간 기반의 캐시 교체 방법 및 이를 지원하는 장치
KR100982591B1 (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: 20190107

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 6