KR20120035070A - 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 - Google Patents
에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 Download PDFInfo
- Publication number
- KR20120035070A KR20120035070A KR1020100096562A KR20100096562A KR20120035070A KR 20120035070 A KR20120035070 A KR 20120035070A KR 1020100096562 A KR1020100096562 A KR 1020100096562A KR 20100096562 A KR20100096562 A KR 20100096562A KR 20120035070 A KR20120035070 A KR 20120035070A
- Authority
- KR
- South Korea
- Prior art keywords
- page
- buffer
- lru
- ssd
- reference time
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치가 개시되어 있다. SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은 주 메모리 장치에 소정의 프로그램에서 요청한 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하고 SSD 확장 버퍼에 포함된 제2 참조 시간 정보가 없는 페이지 및 제2 참조 시간 정보가 있는 페이지 중 적어도 하나를 기록할 버퍼 공간이 SSD 확장 버퍼에 없는 경우, 제2 참조 시간 정보가 없는 페이지를 우선적으로 보조 메모리 장치에 기록하고, 제2 참조 시간 정보가 있는 페이지는 보조 메모리 장치에 기록하지 않고 SSD 확장 버퍼에 유지하는 단계를 포함할 수 있다. 따라서, 마지막 이전 참조 시간 정보가 존재하는 페이지들이 재참조 될 때 하드디스크가 아닌 SSD 확장버퍼를 통해 참조하게 함으로서 디스크의 쓰기/읽기 연산을 줄여 페이지의 입출력 속도를 증가시킬 수 있다.
Description
본 발명은 버퍼 캐쉬 관리 방법 및 버퍼 캐쉬 관리 방법을 사용하는 장치에 관한 것으로 더욱 상세하게는 확장 버퍼를 이용한 버퍼 캐쉬 관리 방법 및 이러한 방법을 사용한 장치에 관한 것이다.
컴퓨터와 같은 디지털 단말기에 포함된 각 구성부들, 예를 들어, 중앙처리장치(CPU), 메모리, 하드디스크, CD-ROM 등은 각각 개별적으로 데이터를 처리하는 속도가 다르기 때문에 데이터 입출력시 동일한 속도를 가지고 동작할 수 없다. 따라서, 단말기에 포함되는 각 구성부의 데이터 처리 속도의 불균형을 해소하지 못하는 경우 전체적인 데이터 처리속도가 하향 평준화될 수 있다.
이러한 문제점을 해결하기 위한 하드웨어적인 해결책으로 단말기의 각 구성부 사이에서 입출력 속도 차이를 커버해주는 버퍼(BUFFER)를 사용하거나 또는 캐쉬(CACHE)를 사용해 단말기의 각 구성부 상호간 속도 차이로 인해 발생되는 병목현상 즉, 고속으로 데이터를 처리하는 구성부가 저속으로 데이터를 처리하는 장치의 작업수행을 기다려야 하는 현상을 줄여줄 수 있다.
데이터 처리 속도를 향상시키기 위한 버퍼 캐시를 이용한 페이지 교체 정책은 다양한 알고리즘으로 발전해왔는데, 해당 페이지를 빠르게 입출력하기 위해 특정 페이지를 버퍼 캐쉬에 둘 것인지 아니면 하드디스크로 내려보낼 것인지 결정하는 알고리즘이 많이 연구되었다.
버퍼 캐쉬를 이용한 페이지 교체 알고리즘은 LRU(Least Recently Used), 2Q, EELRU(Early Eviction Least Recently Used). LRFU(Least Recently/Frequency Used), UBM(Unified Buffer Management) 등 여러 가지 형태의 알고리즘이 존재한다.
페이지 교체 알고리즘 중 하나인 LRU-K 알고리즘은 최근 K번의 참조로부터 추정된 참조 조밀성에 근거하여 교체 블록을 결정하는 알고리즘이다. 즉, 버퍼 캐쉬 안의 블록들 중에서 최근 K번째의 참조 시간이 가장 오래 전인 블록을 교체한다. 최근 K번째의 참조시간을 고려하기 때문에 LRU-K 교체 정책은 빈번하게 참조되는 블록들과 그렇지 못한 블록들을 구별할 수 있어 최근 참조 횟수가 적은 블록들을 버퍼 캐쉬에서 우선적으로 교체할 수 있다.
만약 K를 2로 가정하는 경우, LRU-K 알고리즘을 사용하기 위해서는 버퍼의 헤더에 해당 페이지의 마지막 참조시간과 마지막 참조시간의 바로 이전 시간 정보인 마지막 이전의 참조시간 정보를 유지하고, 이러한 참조시간 정보는 버퍼에 포함된 해당 페이지가 참조될 때 마다 갱신되어야 한다.
하드 디스크와 같은 보조 기억 장치에서 특정 페이지가 참조되어 주기억 장치로 올라오게 되면 상기 특정 페이지의 마지막 참조시간 정보가 갱신되고, 상기 특정 페이지가 다시 주기억 장치에서 참조 되는 경우, 마지막 참조시간 정보는 마지막 이전의 참조시간으로 기록되고 다시 주기억 장치에서 참조된 시간이 마지막 참조 시간으로 갱신된다.
도 1은 버퍼 캐쉬를 운영하기 위한 페이지 교체 알고리즘 중 LRU-K 알고리즘을 설명하기 위한 개념도이다.
도 1을 참조하면 페이지 교체 알고리즘인 LRU-K 알고리즘을 구현하기 위해서, LRU-K 리스트(100) 제1 우선 순위 큐(110) 및 제2 우선 순위 큐(120)가 사용된다.
특정 페이지가 참조되고 참조되는 특정 페이지가 LRU-K 리스트(100)에 있는 경우, LRU-K 리스트(100)에서 참조된 특정 페이지는 LRU-K 리스트(100)의 헤더로 이동된다.
LRU-K 리스트(100)에 포함된 페이지들은 LRU-K 리스트(100)의 특정 페이지가 참조되는 경우, 참조된 특정 페이지의 참조 시간 정보가 변하기 때문에 재배열될 수 있다.
K를 2라고 가정하고, LRU-K 리스트(100)에 참조 페이지를 기록할 공간이 없는 경우, LRU-K 리스트(100)를 순차적으로 스캔하면서 Victim이 될 페이지를 찾을 수 있다. 우선적으로 Victim이 되는 페이지는 LRU-K 리스트(100)에 존재하면서, 마지막 이전 참조 시간 정보가 존재하지 않는 페이지이다.
LRU-K 리스트(100)를 스캔하면서 마지막 이전 참조 시간 정보가 존재하는 페이지는 제1 우선 순위 큐(110)로 삽입하고, 마지막 이전 참조 시간 정보가 존재하지 않는 페이지는 LRU-K 리스트(100)에 유지한다. 스캔이 종료하게 되면 마지막 이전 참조 시간 정보가 존재하지 않는 페이지는 Victim으로 선정되어 보조 기억 장치로 삽입되고 참조하고자 하는 페이지는 LRU-K 리스트(100)의 헤더에 삽입되게 된다.
LRU-K 리스트(100)를 스캔하는 도중 마지막 이전 시간 정보가 존재하지 않는 페이지가 없는 경우, 스캔하는 도중, 마지막 이전 참조 시간 정보가 존재하여 제1 우선 순위 큐로 밀려난 페이지 중 가장 오래된 마지막 이전 참조 시간 정보가 있는 페이지가 Victim으로 선정하여 보조기억장치에 쓰고 해당 참조 페이지를 제1 우선순위 큐(110)에 삽입한다.
제2 우선 순위 큐(120)는 LRU-K 리스트(100)에서 밀려난 페이지들의 참조 기록 정보를 기록하여 이후 밀려난 페이지가 LRU-K 리스트(100)에 다시 삽입될 경우 밀려날 페이지를 결정하기 위해 사용할 수 있다.
기존의 LRU-K 알고리즘을 사용한 페이지 교체 정책을 사용시 마지막 이전 참조 시간 정보가 존재하는 페이지도 LRU-K 리스트 및 제1 우선 순위 큐의 버퍼의 수가 한정되어 있기 때문에, 다른 페이지에 비해 마지막 이전 참조 시간이 오래되었다면 LRU-K 리스트에서 밀려나 보조기억장치에 기록된다. 따라서, 밀려난 마지막 이전 참조 시간이 있는 페이지가 실행중인 프로그램에서 다시 참조가 될 경우 보조 메모리 장치에서 해당 페이지를 다시 읽어와야 하기 때문에 디스크의 쓰기/읽기 연산이 추가적으로 발생하여 데이터 처리 시간이 늦어진다.
따라서, 본 발명의 제1 목적은 SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법을 제공하는 것이다.
또한, 본 발명의 제2 목적은 SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치를 제공하는 것이다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 일 측면에 따른 SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은 주 메모리 장치에 소정의 프로그램에서 요청한 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하는 단계와 상기 SSD 확장 버퍼에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 상기 제2 참조 시간 정보가 있는 페이지 중 적어도 하나를 기록할 버퍼 공간이 상기 SSD 확장 버퍼에 없는 경우, 상기 제2 참조 시간 정보가 없는 페이지를 우선적으로 보조 메모리 장치에 기록하고, 상기 제2 참조 시간 정보가 있는 페이지는 상기 보조 메모리 장치에 기록하지 않고 상기 SSD 확장 버퍼에 유지하는 단계를 포함할 수 있다. SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은 상기 주 메모리 장치에 상기 참조 페이지를 삽입할 버퍼 공간이 있는 경우, 해당 페이지를 상기 주 메모리 장치의 상기 버퍼 공간에 삽입하고 참조하는 단계를 더 포함할 수 있다. SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은 상기 주 메모리 장치에 존재하던 페이지가 상기 SSD 확장 버퍼에 기록되어 상기 주 메모리 장치에 버퍼 공간이 생긴 경우 상기 버퍼 공간에 상기 참조 페이지를 기록하는 단계를 더 포함할 수 있다. 상기 주 메모리 장치에 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하는 단계는 상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 있는 경우, 상기 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 LRU-K 리스트에 기록하는 단계와 상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 없는 경우, 상기 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 제1 우선 순위 큐에 기록하는 단계를 포함할 수 있다. SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은 상기 참조 페이지가 상기 LRU-K 리스트에 없는 경우, 상기 제1 우선 순위 큐에 상기 참조 페이지가 있는지 여부를 판단하고 상기 제1 우선 순위 큐에 상기 참조 페이지가 없는 경우, 상기 SSD 확장 버퍼에 상기 참조 페이지가 있는지 여부를 판단할 수 있다. 상기 제2 참조 시간 정보는 소정의 페이지가 마지막으로 참조된 시간 정보인 마지막 참조 시간 정보를 제1 참조 시간 정보라고 할 때, 상기 페이지의 마지막 참조 시간 이전에 참조된 시간에 대한 정보인 마지막 이전 참조 시간 정보일 수 있다. 상기 LRU-K 알고리즘은 K의 값은 2일 수 있다.
또한 상술한 본 발명의 제2 목적을 달성하기 위한 본 발명의 일 측면에 따른 SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치는 페이지 교체 정책으로 LRU-K 알고리즘을 사용하여 LRU-K 리스트, 제1 우선 순위 큐 및 제2 우선 순위 큐를 포함하는 주 메모리 장치와 상기 주 메모리 장치에 소정의 프로그램에서 요청한 참조 페이지를 삽입할 버퍼 공간이 없는 경우, 상기 LRU-K 리스트에 포함된 제2 참조 시간 정보가 없는 페이지 및 상기 제1 우선 순위 큐에 포함된 상기 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중 적어도 하나를 기록하는 SSD 확장 버퍼를 포함할 수 있다. SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치는 상기 주 메모리 장치에 상기 참조 페이지를 삽입할 버퍼 공간이 없는 경우, 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지와 LRU-K 리스트에 포함된 제2 참조 시간 정보가 없는 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하고 상기 SSD 확장 버퍼에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 상기 제2 참조 시간 정보가 있는 페이지 중 적어도 하나를 기록할 버퍼 공간이 상기 SSD 확장 버퍼에 없는 경우, 상기 제2 참조 시간 정보가 없는 페이지를 우선적으로 보조 메모리 장치에 기록하고, 상기 제2 참조 시간 정보가 있는 페이지는 상기 보조 메모리 장치에 기록하지 않고 상기 SSD 확장 버퍼에 유지할 수 있다. 주 메모리 장치에 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하는 것은 상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 있는 경우, 상기 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 LRU-K 리스트에 기록하고, 상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 없는 경우 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 제1 우선 순위 큐에 기록할 수 있다. SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치는 상기 참조 페이지가 상기 LRU-K 리스트에 없는 경우, 상기 제1 우선 순위 큐에 상기 참조 페이지가 있는지 여부를 판단하고 상기 제1 우선 순위 큐에 상기 참조 페이지가 없는 경우, 상기 SSD 확장 버퍼에 상기 참조 페이지가 있는지 여부를 판단할 수 있다. 상기 제2 참조 시간 정보는 소정의 페이지가 마지막으로 참조된 시간 정보인 마지막 참조 시간 정보를 제1 참조 시간 정보라고 할 때, 상기 페이지의 마지막 참조 시간 이전에 참조된 시간에 대한 정보인 마지막 이전 참조 시간 정보일 수 있다. 상기 LRU-K 알고리즘은 K의 값은 2일 수 있다.
상술한 바와 같이 본 발명의 실시예에 따른 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치에 따르면, 마지막 이전 참조 시간 정보가 존재하는 페이지가 LRU-K 알고리즘을 사용한 페이지 교체 정책에 의해 밀려날 경우, 마지막 이전 참조 시간 정보가 존재하지 않는 페이지와 마찬가지로 바로 하드 디스크와 같은 보조 메모리 장치에 바로 내려 보내는 것이 아니라 한번의 기회를 추가적으로 부여해 SSD를 사용한 확장 버퍼에 유지시킴으로서 마지막 이전 참조 시간 정보가 존재하는 페이지들이 재참조 될 때 하드디스크가 아닌 SSD 확장버퍼를 통해 참조하게 함으로서 디스크의 쓰기/읽기 연산을 줄여 페이지의 입출력 속도를 증가시킬 수 있다.
도 1은 버퍼 캐쉬를 운영하기 위한 페이지 교체 알고리즘 중 LRU-K 알고리즘을 설명하기 위한 개념도이다.
도 2는 SSD에서 데이터 영역과 로그 영역을 사용하여 특정 페이지에 랜덤 쓰기(Random Write)를 실행하는 방법을 나타내는 개념도이다.
도 3은 본 발명의 일실시예에 따른 SSD를 확장 버퍼로 사용하기 위한 SSD의 순차 쓰기(Sequential Write)를 설명하기 위한 개념도이다.
도 4는 본 발명의 일실시예에 따른 원형 큐 구조를 이용해 SSD를 확장 버퍼로 사용하는 것을 나타낸 개념도이다.
도 5는 본 발명의 일실시예에 따른 SSD를 확장 버퍼로 사용한 장치를 나타낸 개념도이다.
도 6은 본 발명의 일실시예에 따른 SSD 확장 버퍼를 사용한 페이지 교체 방법을 나타낸 순서도이다.
도 7은 본 발명의 실시예에 따른 SSD를 확장버퍼로 LRU-K 페이지 교체 알고리즘을 사용하였을 때 수행성능을 나타낸 그래프이다.
도 2는 SSD에서 데이터 영역과 로그 영역을 사용하여 특정 페이지에 랜덤 쓰기(Random Write)를 실행하는 방법을 나타내는 개념도이다.
도 3은 본 발명의 일실시예에 따른 SSD를 확장 버퍼로 사용하기 위한 SSD의 순차 쓰기(Sequential Write)를 설명하기 위한 개념도이다.
도 4는 본 발명의 일실시예에 따른 원형 큐 구조를 이용해 SSD를 확장 버퍼로 사용하는 것을 나타낸 개념도이다.
도 5는 본 발명의 일실시예에 따른 SSD를 확장 버퍼로 사용한 장치를 나타낸 개념도이다.
도 6은 본 발명의 일실시예에 따른 SSD 확장 버퍼를 사용한 페이지 교체 방법을 나타낸 순서도이다.
도 7은 본 발명의 실시예에 따른 SSD를 확장버퍼로 LRU-K 페이지 교체 알고리즘을 사용하였을 때 수행성능을 나타낸 그래프이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다거나 "직접 접속되어"있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
이하 본 발명의 실시예에서는, 페이지 교체 알고리즘으로 LRU-K 알고리즘을 사용한다. 설명의 편의상 LRU-K 알고리즘의 K의 값을 2로 가정하여 페이지 교체 정책을 적용할 수 있다. 하지만 본 발명의 본질에서 벋어나지 않는 한 K의 값은 2로 제한되는 값이 아닌 2 이상의 값이 될 수 있다. 이하, K가 2라고 가정하고 특정 페이지가 참조된 경우, 상기 특정 페이지의 가장 최근의 참조된 시간 정보를 마지막 참조 시간 정보라고 정의하고, 상기 특정 페이지의 가장 최근의 참조된 시간 이전에 참조된 시간을 마지막 이전 참조 시간 정보라고 정의한다. 이하 본 발명의 실시예에서 상기 마지막 참조 시간 정보를 제1 참조 시간 정보라는 용어로 사용하고 마지막 이전 참조 시간 정보를 제2 참조 시간 정보라는 용어로 사용한다.
이하, LRU-K 알고리즘을 각 페이지에 적용하기 위해 페이지의 속성을 핫 페이지(Hot Page), 웜 페이지(Warm Page), 콜드 페이지(Cold Page)로 구분하고, 핫 페이지는 지금 주 메모리에 존재하는 페이지, 웜 페이지는 마지막 이전 참조 시간 정보(제2 참조 시간 정보) 및 마지막 참조 시간 정보(제1 참조 시간 정보)가 모두 존재하는 페이지, 콜드 페이지는 마지막 참조 시간 정보(제1 참조 시간 정보)를 가지는 페이지 및 참조 시간 정보가 없는 페이지로서 정의한다.
이하 본 발명의 일시예에 따르면 버퍼 캐쉬를 운영하기 위한 LRU-K 알고리즘을 구현 시 주 메모리 장치에는 LRU-K 리스트, 제1 우선 순위 큐 및 제2 우선 순위 큐가 있고 특정 페이지가 참조되고 참조되는 특정 페이지가 LRU-K 리스트에 있는 경우, LRU-K 리스트에서 참조된 특정 페이지는 LRU-K 리스트의 헤더로 이동될 수 있다. LRU-K 리스트의 특정 페이지가 참조되는 경우, 참조된 특정 페이지의 참조 시간 정보가 변하기 때문에 LRU-K 리스트가 재배열될 수 있다.
K를 2라고 가정하면, LRU-K 리스트에 참조 페이지를 기록할 공간이 없는 경우, LRU-K 리스트를 순차적으로 스캔하면서 Victim이 될 페이지를 찾을 수 있고 우선적으로 Victim이 되는 페이지는 LRU-K 리스트에 존재하면서, 마지막 이전 참조 시간 정보가 존재하지 않는 페이지가 될 수 있다. LRU-K 리스트를 스캔하면서 마지막 이전 참조 시간 정보가 존재하는 페이지는 제1 우선 순위 큐로 삽입하고, 마지막 이전 참조 시간 정보가 존재하지 않는 페이지는 LRU-K 리스트에 유지될 수 있다. 스캔이 종료하게 되면 마지막 이전 참조 시간 정보가 존재하지 않는 페이지는 Victim으로 선정될 수 있다.
LRU-K 리스트를 스캔하는 도중 마지막 이전 시간 정보가 존재하지 않는 페이지가 없는 경우, 스캔하는 도중, 마지막 이전 참조 시간 정보가 존재하여 제1 우선 순위 큐로 밀려난 페이지 중 가장 오래된 마지막 이전 참조 시간 정보가 있는 페이지가 Victim으로 선정될 수 있다.
제2 우선 순위 큐는 LRU-K 리스트에서 밀려난 페이지들의 참조 기록 정보를 기록하여 이후 밀려난 페이지가 LRU-K 리스트에 다시 삽입될 경우 밀려날 페이지를 결정하기 위해 사용할 수 있다.
본 발명에서는 LRU-K 리스트 및 제1 우선 순위 큐에서 밀려난 페이지를 SSD에 기록하는 방법을 사용하여 기존의 LRU-K 알고리즘 보다 데이터의 입출력 속도를 향상 시킬 수 있다.
본 발명의 일실시예에 따르면 본 발명에서는 LRU-K 리스트에서 밀려난 웜 페이지를 하드 디스크와 같은 보조 기억 장치로 내려 바로 보내지 않고 추가의 기회를 주어 유지하기 위한 확장 버퍼로서 SSD(Soild State Disk)를 사용할 수 있다.
SDD는 일종의 플래쉬 메모리로서 랜덤 읽기(Random Read) 측면에서 일반적인 자기적인 성질을 가진 하드 디스크에 비해 좋은 성능을 가진다.
하지만, SSD는 NAND를 사용하는 구조이기 때문에 HDD와 달리 오버라이트(Overwrite)를 하지 못한다. 따라서, SSD에 페이지를 오버라이트 해야 할 경우, 오버라이트를 해야 할 페이지를 제외한 블록의 나머지 페이지들을, 기록된 페이지가 없는 자유 블록(Free Block)에 복사하고, 그 후에 오버라이트를 해야 할 페이지를 해당 위치에 다시 쓰는 방식을 사용하게 된다. 이전의 데이터 블록은 지움(Erase) 연산을 통해 자유 블록(Free Block)으로 전환된다. 전술한 복잡한 절차로 인해 오버라이트를 해야 할 경우 바로 해당 페이지를 오버라이트 할 수 있는 하드 디스크에 비해 SSD는 데이터의 처리 속도가 상대적으로 느려지게 된다.
SSD가 가진 오버라이트의 문제점을 해결하기 위한 방법으로, SSD의 영역을 로그 영역(Log Area)와 데이터 영역(Data Area)으로 나누어 사용할 수 있다. 데이터 영역(Data Area)은 실제의 데이터를 저장하는 부분이고 로그 영역(Log Area)은 데이터 영역에서 발생한 오버라이트로 인한 지움(Erase) 연산을 미루기 위해 사용될 수 있다.
도 2는 SSD에서 데이터 영역과 로그 영역을 사용하여 특정 페이지에 랜덤 쓰기(Random Write)를 실행하는 방법을 나타내는 개념도이다.
도 2를 참조하면, 랜덤 쓰기 1단계(200)에서는 SSD의 데이터 영역에 포함되는 특정 페이지에 랜덤 쓰기를 해야 한다면 우선 랜덤 쓰기를 해야 하는 페이지를 Invaild시킨 후 갱신될 페이지를 SSD의 로그 영역에 기록한다.
랜덤 쓰기 2단계(210)에서는 계속적인 랜덤 쓰기의 필요로 인해 각 데이터 영역의 블록에 포함된 랜덤 쓰기를 해서 갱신되어야 할 페이지들이 SSD의 로그 영역에 꽉 찰 수 있다.
다음으로, 랜덤 쓰기 3단계(220)에서는 데이터 영역에서 저장된 페이지가 없는 자유 블록(220-1)을 할당받고 로그 영역에 기록된 페이지 중 Merge를 수행할 블록의 페이지(220-2)를 자유블록(220-1)에 랜덤 쓰기를 할 해당 페이지 위치에 복사한다.
랜덤 쓰기 4단계(230)에서는 원래의 데이터 블록에서 갱신할 필요가 없는 나머지 블록들을 자유블록으로 복사한다. 이러한 랜덤쓰기 3단계(220)와 랜덤쓰기 4단계(230)의 절차는 로그 영역에서 갱신할 페이지들을 대상으로 모두 일어나게 된다.
즉, SSD에서는 로그 영역을 이용해 데이터 영역에서 발생한 오버라이트로 인한 지움 연산을 수행하는 시간을 미룸으로서 SSD의 단점인 느린 오버라이트 동작을 어느 정도 개선할 수 있다.
본 발명의 일실시예에 따르면 SSD 확장버퍼는 LRU-K 알고리즘을 사용할 경우 발생하는 웜 데이터를 하드 디스크로 바로 반환하여 결과적으로 페이지를 재참조시 부가적인 입출력 동작으로 인해 데이터의 입출력 속도가 저하되는 문제를 해결하기 위해 웜 데이터를 SSD에 추가의 기회를 주어 저장하는 기능을 수행할 수 있다. SSD를 확장 버퍼로 이용하여 웜 데이터를 저장하는 기능을 수행하기 위해서, SSD는 오버라이트 동작을 수행시 도 2에서 설명한 랜덤 쓰기(Random Write)를 수행할 필요가 없이 순차 쓰기(Sequential Write)만을 수행하면 되기 때문에 결과적으로 오버라이트의 속도가 향상된다.
도 3은 본 발명의 일실시예에 따른 SSD를 확장 버퍼로 사용하기 위한 SSD의 순차 쓰기(Sequential Write)를 설명하기 위한 개념도이다.
도 3을 참조하면, LRU-K 리스트에서 밀려난 페이지는 SSD 확장 버퍼의 로그 영역 및 데이터 영역에 순차적으로 기록될 수 있다.
순차 쓰기 1단계(310)에서는 LRU-K 리스트에서 밀려난 페이지가 SSD 확장 버퍼의 데이터 영역(310-1)에 순차적으로 기록되고 데이터 영역(310-1)이 다 찬 후, 오버라이트 동작으로서 로그 영역(310-2)에 순차적으로 기록되게 된다.
순차 쓰기 2단계(320)에서는 오버라이트가 발생한 로그 영역의 블록(320-2)을 Merge 연산 없이 바로 데이터 영역의 블록으로 바로 전환하고 이전의 데이터 블록(320-1)은 지움 연산을 수행함으로서 오버라이트 될 수 있다.
즉, 본 발명에서 확장 버퍼로 사용하는 SSD의 순차 쓰기 동작은 랜덤 쓰기 동작에 비해 추가적인 삭제 연산 및 페이지 복사 동작이 없이도 간단하게 실행될 수 있어 오버라이트 동작 시 속도가 향상된다.
도 4는 본 발명의 일실시예에 따른 원형 큐 구조를 이용해 SSD를 확장 버퍼로 사용하는 것을 나타낸 개념도이다.
SSD 확장 버퍼에 LRU-K 리스트에서 밀려난 페이지 또는 제1 우선 순위 큐에서 밀려난 페이지가 기록될 빈 버퍼 공간이 없는 경우, SSD 확장 버퍼에 존재하는 페이지를 하드 디스크에 기록하고 새롭게 LRU-K 리스트 또는 제1 우선 순위 큐에서 밀려난 페이지를 SSD 확장 버퍼에 기록할 수 있다. 이때 제1 우선 순위 큐에서 밀려난 페이지는 마지막 이전 참조 시간 정보(제 2 참조 시간 정보)가 기록된 웜 페이지이고 LRU-K 리스트에서 밀려난 페이지는 마지막 참조 시간 정보(제1 참조 시간 정보)만이 있는 콜드 페이지가 될 수 있다.
제1 SSD 확장 버퍼(410)은 콜드 페이지만이 SSD 확장 버퍼에 존재할 때를 나타낸 것이다.
예를 들어, 제1 SSD 확장 버퍼(410)의 경우, 1번 버퍼(410-1)부터 10번 버퍼(410-10)까지 해당 버퍼에 LRU-K 리스트에서 밀려난 콜드 페이지가 기록되어 SSD 확장 버퍼가 모두 찬 경우, 기존의 1번 버퍼(410-1)에 존재하는 페이지를 하드 디스크에 기록하고 다시 1번 버퍼(410-1)에 새로 LRU-K 리스트에서 밀려난 페이지를 기록할 수 있다.
제2 SSD 확장 버퍼(420)은 콜드 페이지뿐만 아니라 제1 참조 시간 정보 및 제2 참조 시간 정보가 포함된 제1 우선 순위 큐에서 밀려난 웜 페이지(420-6, 420-7)도 SSD 확장 버퍼에 존재할 때를 나타낸 것이다.
본 발명의 일실시예에 따르면 본 발명에서는 웜 페이지(420-6, 420-7)는 콜드 페이지와 다르게 SSD 확장 버퍼가 모두 찬 경우에도 바로 하드 디스크에 기록하지 않고 한번의 기회를 추가적으로 더 주어 SSD 확장 버퍼에 한번 더 유지시킬 수 있다. 웜 페이지(420-6, 420-7)에 추가의 기회를 더 주어 SSD 확장 버퍼에 유지시킴으로서 웜 페이지(420-6, 420-7)에 대한 SSD 확장 버퍼의 Hit Rate를 증가시킬 수 있고 웜 페이지(420-6, 420-7)에 대한 하드 디스크 읽기/쓰기 연산을 줄일 수 있다.
웜 페이지(420-6, 420-7)를 SSD 확장 버퍼에 유지시키는 기회를 주는 횟수는 조절이 가능하다. 즉, 전술한 바와 같이 웜페이지(420-6, 420-7)에 한번의 기회를 더 주고 그 이후에 다시 순차 쓰기 동작을 통해 웜 페이지(420-6, 420-7)가 위치한 블록이 오버라이트의 대상이 된 경우 하드 디스크에 웜 페이지(420-6, 420-7)를 내려보낼 기록할 수 있고, 경우에 따라서 웜 데이터가 SSD 확장 버퍼에 유지되는 기회를 주는 횟수를 1회 이상으로 조절하는 것도 가능하다.
도 5는 본 발명의 일실시예에 따른 SSD를 확장 버퍼로 사용한 장치를 나타낸 개념도이다.
도 5를 참조하면 SSD 확장 버퍼(520)를 사용한 장치는 주 메모리 장치(510)와 SSD 확장 버퍼(520) 및 하드 디스크(530)를 포함할 수 있다.
주 메모리 장치(510)는 DRAM으로 구현될 수 있다. 주 메모리 장치(510)에는 하드 디스크(530)에서 올라온 참조 페이지 및 SSD 확장 버퍼(520)에서 올라온 페이지가 포함될 수 있다. 주 메모리 장치(510)에는 LRU-K 페이지 교체 알고리즘을 사용하는 LRU-K 리스트, 제1 우선 순위 큐, 제2 우선 순위 큐가 포함될 수 있고 LRU-K 리스트에는 제1 참조 시간 정보를 가지는 핫 페이지가 포함되고 제1 우선 순위 큐에는 제1 참조 시간 정보 및 제2 참조 시간 정보를 가지는 웜페이지가 포함되며, 제2 우선 순위 큐에는 하드디스크로 밀려나서 기록된 페이지들의 참조 시간 관련 정보가 저장될 수 있다.
주 메모리 장치(510)에서 밀려난 페이지는 SSD 확장 버퍼(520)에 기록될 수 있다.
SSD 확장 버퍼(520)는 SSD로 구현될 수 있다. SSD 확장 버퍼(520)에는 주 메모리 장치(510)의 LRU-K 리스트 또는 제1 우선 순위 큐에서 밀려난 콜드 페이지 또는 웜 페이지가 기록될 수 있다. SSD 확장 버퍼(520)는 데이터 영역과 로그 영역으로 구분 될 수 있고 주 메모리 장치(510)에서 밀려난 페이지는 순차 쓰기를 통해 SSD 확장 버퍼(520)에 기록될 수 있다.
SSD 확장 버퍼(520)에 포함된 마지막 참조 시간 정보인 제1 참조 시간 정보를 가진 콜드 페이지는 SSD 확장 버퍼(520)에 주 메모리 장치(510)의 LRU-K 리스트에서 밀려난 페이지를 기록하기 위한 버퍼 공간이 부족할 경우, 오버라이트 동작으로 통해 순차적으로 하드 디스크(530)로 밀려나 기록될 수 있다. 즉, 주 메모리 장치로부터 새로 밀려온 페이지는 SSD 확장 버퍼(520)에 콜드 페이지가 있었던 공간에 오버라이트되어 기록될 수 있다.
하지만, SSD 확장 버퍼(520)에 포함된 제1 우선 순위 큐로부터 밀려난 웜 페이지는 하드 디스크(530)로 바로 밀려나 기록되지 않고 SSD 확장 버퍼(520)에 유지될 추가의 기회를 더 줄 수 있다. SSD 확장 버퍼(520)에 웜 페이지를 유지할 기회를 한번 더 줌으로서 웜 페이지에 대한 Hit Rate를 높힐 수 있고, 웜 페이지에 대한 하드 디스크의 읽기/쓰기 연산을 감소시킬 수 있다.
본 발명의 일실시예에 따르면 웜 페이지는 한번의 SSD 확장 버퍼(520)에 유지될 기회를 준 후 다음번에 오버라이트가 발생할 때에는 콜드 페이지와 동일하게 하드 디스크로 밀려 내려가 기록될 수 있지만, 경우에 따라 SSD 확장 버퍼(520)에 유지될 수 있는 기회의 횟수를 달리하여 1회 이상의 기회를 줄 수 있다.
하드 디스크(530)는 SSD 확장 버퍼(520)에서 밀려난 페이지를 기록할 수 있고 주 메모리 장치(510)에서 필요한 참조 페이지가 있는 경우 해당 페이지를 주 메모리 장치(510)로 바로 제공할 수 있다.
도 6은 본 발명의 일실시예에 따른 SSD 확장 버퍼를 사용한 페이지 교체 방법을 나타낸 순서도이다. 도면 도 수정(~ 음, ~넣음), 613 문구 수정. 621단계 2문장임. 830 오타 수정.
도 6을 참조하면, CPU에서 필요한 페이지를 요청받는다(단계 601).
특정 프로그램에서 참조할 페이지가 있는 경우, CPU에서는 프로그램을 실행 도중 필요한 페이지를 요청하는 명령을 내릴 수 있다.
CPU로부터 페이지를 요청받은 후 우선적으로 요청된 페이지가 LRU-K 리스트(LRU 리스트도 동일한 의미임)에 포함되어 있는지에 대해 판단한다(단계 603).
가장 먼저 주 메모리 장치에 존재하는 LRU-K 리스트를 확인하여 해당 페이지가 존재하는지 여부를 검색할 수 있다.
LRU-K 리스트에 해당 페이지가 존재하는 경우, 해당 페이지를 참조한 후, LRU-K 리스트를 조정한다(단계 605).
해당 페이지가 참조된 경우 LRU-K 리스트 내의 해당 참조 페이지의 마지막 참조 시간 정보(제1 참조 시간 정보) 및 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 달라지기 때문에 해당 페이지를 참조한 후 변경된 시간 정보에 따라 LRU-K 리스트를 재정렬 할 수 있다.
LRU-K 리스트에 해당 페이지가 존재하지 않는 경우, LRU-K의 제1 우선 순위 큐(Priority queue)에 해당 페이지가 존재하는지 여부를 판단한다(단계 607).
LRU-K 알고리즘을 사용하는 경우 제1 우선 순위 큐를 사용하여 LRU-K 리스트를 스캔하는 과정에서 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 존재하는 페이지를 LRU-K 리스트에서 제1 우선 순위 큐로 밀어내어 기록할 수 있다.
LRU-K 리스트에는 마지막 이전 참조시간 정보가 없는 페이지인 핫 페이지 및 보조 메모리 장치로부터 바로 참조되어 올라온 페이지가 저장될 수 있어 가장 최근에 참조된 페이지가 존재하는 곳이 될 수 있다.
다음으로 LRU-K에서 밀려나 기록된 웜페이지들이 존재하는 제1 우선 순위 큐를 검색하여 해당 페이지가 존재하는지 여부에 대해 검색한다(단계 607).
제1 우선 순위 큐(Priority queue)에 참조하고자 하는 페이지가 존재하는 경우 해당 페이지를 참조한 후, 제1 우선 순위 큐에서 해당 노드를 삭제하고 해당 페이지를 LRU-K 리스트에 반환한다(단계 609).
제1 우선 순위 큐에 해당 페이지가 존재하지 않는 경우, SSD 확장 버퍼에 해당 페이지가 존재하는지 여부를 판단한다(단계 611).
메인 메모리의 LRU-K 리스트나 제1 우선 순위 큐에서 밀려난 페이지들은 순차적으로 SSD 확장 버퍼에 기록될 수 있고 해당 페이지가 SSD 확장 버퍼에 존재하는지 여부를 판단할 수 있다.
SSD 확장 버퍼에 해당 페이지가 존재하지 않는 경우 하드디스크와 같은 보조메모리 장치에서 해당 페이지를 읽고 해당 페이지를 참조하기 위해 LRU-K에 해당 페이지를 저장할 빈 버퍼 공간이 있는지 여부를 판단한다(단계 613).
LRU-K 리스트에 해당 페이지를 저장할 버퍼 공간이 존재하는 경우, 해당 페이지를 LRU-K 리스트에 삽입한다(단계 615).
LRU-K에 해당 페이지를 저장할 빈 버퍼 공간이 없는 경우, LRU-K 리스트에 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 없는 페이지가 존재하는지 여부를 판단한다(단계 617).
LRU-K 페이지 교체 알고리즘에서 LRU-K 리스트에서 가장 우선적으로 Victim이 되어 밀려나는 페이지는 LRU-K 리스트에 존재하는 마지막 이전 참조 시간 정보(제 2 참조 시간 정보)가 없는 페이지이고, 다음으로 Victim이 되어 밀려나는 페이지는 제1 우선 순위 큐에 존재하는 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 가장 오래된 페이지이므로 첫 번째 Victim을 선정하기 위해 우선적으로 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 없는 페이지가 LRU-K 리스트 내에 존재하는지 여부를 판단할 수 있다.
LRU-K 리스트 내에 마지막 이전 참조 시간 정보가 없는 페이지가 존재하는 경우, LRU-K 리스트의 마지막 이전 참조 시간 정보가 없는 페이지를 밀어내어 SSD 확장 버퍼에 기록하고 마지막 이전 참조 시간 정보가 없는 페이지가 밀려난 버퍼 공간에 해당 참조 페이지를 쓴다(단계 619).
이전 참조 시간 정보가 없는 페이지가 존재하지 않는 경우, 스캔하는 도중 LRU-K 리스트에서 제1 우선 순위 큐로 밀려난 페이지 중 마지막 이전 시간 정보가 가장 오래된 페이지가 Victim이 되어 SSD 확장 버퍼로 밀려나 기록될 수 있다. 제1 우선 순위 큐에서 밀려난 페이지는 마지막 이전 시간 정보가 있는 페이지인 웜 페이지로서 본 발명의 일실시예에 따르면 웜페이지는 SSD 확장 버퍼에서 순차 쓰기가 발생하여 오버라이트 될 때 하드디스크로 밀려나지 않을 수 있는 기회를 추가적으로 줄 수 있다. 웜페이지가 제1 우선 순위 큐에서 SSD 확장 버퍼로 밀려난 공간에 참조될 페이지를 기록한다(단계 621).
SSD 확장 버퍼에 해당 페이지가 존재하는 여부를 판단하는 단계(단계 611)의 판단 결과 해당 페이지가 존재하는 경우, LRU-K 리스트에 빈 버퍼 공간이 존재하는지 여부를 판단한다(단계 623).
단계 623의 판단 결과 LRU-K 리스트에 빈공간이 존재하지 않는 경우, 단계 617에서 다시 전술한 절차를 진행할 수 있다.
단계 623의 판단 결과 LRU-K 리스트에 빈 버퍼 공간이 존재하는 경우, 해당 페이지를 SSD 확장 버퍼로부터 읽어 LRU 리스트의 빈 버퍼 공간에 삽입한다(단계 625).
도 7은 본 발명의 일실시예에 따른 SSD를 확장버퍼로 LRU-K 페이지 교체 알고리즘을 사용하였을 때 수행 성능을 나타낸 그래프이다.
도 7의 그래프는 TPC-C(The Transaction Processing Performance Council (TPC) benchmarks C) 테스트를 통해 나온 결과값을 그래프로 비교한 것이다. TPC-C는 OLTP(Online Transaction Processing)의 워크로드, 즉 온라인에서 이루어지는 전자상거래시에 발생하는 워크로드 값을 사용하여 데이터 처리 성능을 측정한 것이다. TPC-C의 결과값은 전자상거래에 발생하는 비즈니스 모델을 기준으로 만들어진 것으로 5가지 종류의 비즈니스 트랜잭션(Transaction)인 (New-Order, Payment, Order-Status, Delivery, Stock-Level)을 일정한 비율로 발생시킨 후 정상 상태(Steady State)에서 분당 처리되는 거래의 처리 건수를 계산하여 나타낸 값이다.
도 7의 그래프는 워크로드(Workload)로 1기가바이트(Gigabyte)를 사용하여 테스트한 그래프이다. 각 그래프들은 기존의 HDD만 사용하여 페이지 교체 알고리즘을 LRU(710), LRU-K(720), 2Q(730)로 사용하였을 때 그래프와 LRU에서 SSD 확장버퍼의 용량의 가격만큼 RAM의 용량를 늘려 처리 시간을 측정한 그래프(740), LRU 알고리즘을 사용하고 확장 버퍼로 SSD를 사용한 경우의 그래프(750), 2Q 알고리즘을 사용하고 확장 버퍼로 SSD를 사용한 경우의 그래프(760), LRU-K 알고리즘을 사용하고 확장 버퍼로 SSD를 사용한 경우의 그래프(770)가 각각 개시되어 있다.
그래프의 가로축은 데이터 베이스의 크기 대비 SSD 확장 버퍼의 크기를 나타낸 것이고 그래프의 세로축은 전체 워크로드를 수행하는 데 걸리는 시간으로 단위는 초이다.
도 7을 참조하면 하드디스크만을 사용하여 페이지 교체를 실시한 경우(710, 720, 730)는 RAM 또는 SSD 확장 버퍼를 사용한 경우 보다 현저히 처리 속도가 떨어지는 것을 확인할 수 있다. SSD 확장 버퍼를 사용한 경우는 SSD 확장 버퍼의 크기가 커질수록 페이지의 입출력이 줄어들어 테스트 시간이 점점 줄어드는 것을 확인 할 수 있다.
본 발명의 일실시예에 따른 그래프인 LRU-K 페이지 교체 알고리즘을 SSD 확장 버퍼와 함께 사용한 그래프(770)은 기존의 2Q 페이지 교체 알고리즘 및 LRU 페이지 교체 알고리즘을 SSD 확장 버퍼와 함께 사용한 경우의 처리속도를 나타내는 그래프(750, 760)과 비교하여 상대적으로 우위에 있는 처리속도를 가지는 것을 확인할 수 있다. 즉, 본 발명에 기초한 SSD를 확장 버퍼로 사용한 LRU-K 알고리즘은 기존의 페이지 교체 정책들보다 데이터의 처리 속도에 있어 향상된 효과를 보인다.
도 8은 본 발명의 일실시예에 따른 SSD 확장버퍼를 사용한 LRU-K 페이지 교체 알고리즘을 구현하는 방법을 간략화한 순서도이다.
도 8을 참조하면, 주 메모리 장치에 참조 페이지를 삽입할 버퍼 공간이 있는지 여부를 판단할 수 있다(단계 810).
주 메모리 장치에 포함된 LRU-K 리스트 또는 제1 우선 순위 큐에 해당 참조 페이지가 있는 경우 바로 참조할 수 있다(단계 850).
주 메모리 장치에 포함된 LRU-K 리스트 또는 제1 우선 순위 큐에 해당 참조 페이지가 없는 경우, LRU-K 리스트에 포함된 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 없는 페이지가 있는 여부를 판단하고, LRU-K 리스트에 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 없는 페이지가 있는 경우 해당 페이지를 SSD 확장버퍼로 내려보내 기록하고 LRU-K 리스트에 마지막 이전 참조 시간 정보(제2 참조 시간 정보)가 없는 페이지가 없는 경우, 제1 우선 순위 큐에 제2 참조 시간 정보가 존재하는 페이지 중 가장 제2 참조 시간이 오래된 페이지를 SSD 확장 버퍼에 내려보내 기록한 후 빈 버퍼 공간에 참조 페이지를 삽입할 수 있다(단계 820).
즉, 주 메모리 장치의 버퍼에 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중 적어도 하나를 SSD 확장 버퍼로 보내 기록하고 SSD 확장 버퍼로 밀려난 공간에 참조 페이지를 기록하여 참조할 수 있다(단계 840 및 단계 850).
SSD 확장 버퍼에 밀려난 페이지들로 인해 주 메모리 장치에서 밀려난 페이지들을 기록할 빈 버퍼 공간이 없는 경우, 제2 참조 시간 정보가 없는 콜드 페이지를 우선적으로 보조 메모리 장치에 내려보내고 제2 참조 시간 정보가 있는 페이지는 적어도 한번의 기회를 더 부여하여 SSD 확장 버퍼에 유지할 수 있다(단계 830).
단계 830, 840 및 850은 설명의 편의상 순차적으로 이루어지는 것으로 설명했지만, 단계 830, 840 및 850은 순차적으로 이루어질 수도 있고, 경우에 따라서 840 및 850 단계가 우선적으로 이루어지고 830단계가 추후에 이루어지는 것도 가능하다. 즉, 상기 단계들은 본 발명의 본질에서 벋어나지 않는 한 순차적으로 이루어지지 않을 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
Claims (13)
- SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법에 있어서,
주 메모리 장치에 소정의 프로그램에서 요청한 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하는 단계;
상기 SSD 확장 버퍼에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 상기 제2 참조 시간 정보가 있는 페이지 중 적어도 하나를 기록할 버퍼 공간이 상기 SSD 확장 버퍼에 없는 경우, 상기 제2 참조 시간 정보가 없는 페이지를 우선적으로 보조 메모리 장치에 기록하고, 상기 제2 참조 시간 정보가 있는 페이지는 상기 보조 메모리 장치에 기록하지 않고 상기 SSD 확장 버퍼에 유지하는 단계를 포함하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법. - 제1항에 있어서, SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은,
상기 주 메모리 장치에 상기 참조 페이지를 삽입할 버퍼 공간이 있는 경우, 해당 페이지를 상기 주 메모리 장치의 상기 버퍼 공간에 삽입하고 참조하는 단계를 더 포함하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 적용한 버퍼 캐쉬 관리 방법. - 제1항에 있어서, SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은,
상기 주 메모리 장치에 존재하던 페이지가 상기 SSD 확장 버퍼에 기록되어 상기 주 메모리 장치에 버퍼 공간이 생긴 경우 상기 버퍼 공간에 상기 참조 페이지를 기록하는 단계를 더 포함하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 적용한 버퍼 캐쉬 관리 방법. - 제1항에 있어서, 상기 주 메모리 장치에 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하는 단계는,
상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 있는 경우, 상기 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 LRU-K 리스트에 기록하는 단계; 및
상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 없는 경우, 상기 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 제1 우선 순위 큐에 기록하는 단계를 포함하는 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 적용한 버퍼 캐쉬 관리 방법. - 제1항에 있어서, SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 방법은,
상기 참조 페이지가 상기 LRU-K 리스트에 없는 경우, 상기 제1 우선 순위 큐에 상기 참조 페이지가 있는지 여부를 판단하고 상기 제1 우선 순위 큐에 상기 참조 페이지가 없는 경우, 상기 SSD 확장 버퍼에 상기 참조 페이지가 있는지 여부를 판단하는 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 적용한 버퍼 캐쉬 관리 방법. - 제1항에 있어서, 상기 제2 참조 시간 정보는,
소정의 페이지가 마지막으로 참조된 시간 정보인 마지막 참조 시간 정보를 제1 참조 시간 정보라고 할 때, 상기 페이지의 마지막 참조 시간 이전에 참조된 시간에 대한 정보인 마지막 이전 참조 시간 정보인 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 적용한 버퍼 캐쉬 관리 방법. - 제1항에 있어서, 상기 LRU-K 알고리즘은,
K의 값은 2인 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 적용한 버퍼 캐쉬 관리 방법. - SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치에 있어서,
페이지 교체 정책으로 LRU-K 알고리즘을 사용하여 LRU-K 리스트, 제1 우선 순위 큐 및 제2 우선 순위 큐를 포함하는 주 메모리 장치; 및
상기 주 메모리 장치에 소정의 프로그램에서 요청한 참조 페이지를 삽입할 버퍼 공간이 없는 경우, 상기 LRU-K 리스트에 포함된 제2 참조 시간 정보가 없는 페이지 및 상기 제1 우선 순위 큐에 포함된 상기 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중 적어도 하나를 기록하는 SSD 확장 버퍼를 포함하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치. - 제8항에 있어서, SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치는,
상기 주 메모리 장치에 상기 참조 페이지를 삽입할 버퍼 공간이 없는 경우, 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지와 LRU-K 리스트에 포함된 제2 참조 시간 정보가 없는 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하고 상기 SSD 확장 버퍼에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 상기 제2 참조 시간 정보가 있는 페이지 중 적어도 하나를 기록할 버퍼 공간이 상기 SSD 확장 버퍼에 없는 경우, 상기 제2 참조 시간 정보가 없는 페이지를 우선적으로 보조 메모리 장치에 기록하고, 상기 제2 참조 시간 정보가 있는 페이지는 상기 보조 메모리 장치에 기록하지 않고 상기 SSD 확장 버퍼에 유지하는 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치. - 제9항에 있어서, 주 메모리 장치에 참조 페이지를 삽입할 버퍼 공간이 없는 경우, LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지 및 제1 우선 순위 큐에 포함된 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지 중에서 적어도 하나를 SSD 확장 버퍼에 기록하는 것은,
상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 있는 경우, 상기 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 LRU-K 리스트에 기록하고, 상기 LRU-K 리스트에 포함된 상기 제2 참조 시간 정보가 없는 페이지가 없는 경우 제1 우선 순위 큐에 포함된 상기 제2 참조 시간 정보가 존재하는 페이지 중 상기 제2 참조 시간이 가장 오래된 페이지를 상기 SSD 확장 버퍼에 기록하고 상기 참조 페이지를 상기 제1 우선 순위 큐에 기록하는 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치. - 제8항에 있어서, SSD(Solid State Disk)를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치는,
상기 참조 페이지가 상기 LRU-K 리스트에 없는 경우, 상기 제1 우선 순위 큐에 상기 참조 페이지가 있는지 여부를 판단하고 상기 제1 우선 순위 큐에 상기 참조 페이지가 없는 경우, 상기 SSD 확장 버퍼에 상기 참조 페이지가 있는지 여부를 판단하는 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치. - 제8항에 있어서, 상기 제2 참조 시간 정보는,
소정의 페이지가 마지막으로 참조된 시간 정보인 마지막 참조 시간 정보를 제1 참조 시간 정보라고 할 때, 상기 페이지의 마지막 참조 시간 이전에 참조된 시간에 대한 정보인 마지막 이전 참조 시간 정보인 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치. - 제8항에 있어서, 상기 LRU-K 알고리즘은,
K의 값은 2인 것을 특징으로 하는 SSD를 확장 버퍼로 사용하여 LRU-K 알고리즘을 구현한 버퍼 캐쉬 관리 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100096562A KR101144321B1 (ko) | 2010-10-04 | 2010-10-04 | 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100096562A KR101144321B1 (ko) | 2010-10-04 | 2010-10-04 | 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120035070A true KR20120035070A (ko) | 2012-04-13 |
KR101144321B1 KR101144321B1 (ko) | 2012-05-11 |
Family
ID=46137121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100096562A KR101144321B1 (ko) | 2010-10-04 | 2010-10-04 | 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101144321B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101295210B1 (ko) * | 2012-04-27 | 2013-08-12 | 엔에이치엔비즈니스플랫폼 주식회사 | 데이터베이스 관리 방법 및 장치 |
US10891073B2 (en) | 2018-04-05 | 2021-01-12 | Research & Business Foundation Sungkyunkwan University | Storage apparatuses for virtualized system and methods for operating the same |
WO2022191622A1 (ko) * | 2021-03-10 | 2022-09-15 | 성균관대학교산학협력단 | 캐시 관리 장치 및 방법 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100908637B1 (ko) * | 2007-10-10 | 2009-07-21 | 한양대학교 산학협력단 | 플래시 메모리의 데이터 관리방법 |
KR100941382B1 (ko) * | 2008-07-10 | 2010-02-10 | 한양대학교 산학협력단 | 플래시 메모리와 연동되는 페이지 버퍼 관리 장치 및 방법,그리고 플래시 메모리의 페이지 교체 장치 및 방법 |
KR100951099B1 (ko) * | 2008-07-24 | 2010-04-07 | 인하대학교 산학협력단 | 데이터 저장 관리 방법 및 그 방법을 수행하기 위한프로그램이 기록된 기록매체 |
KR101505005B1 (ko) * | 2008-12-05 | 2015-03-24 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치의 관리 방법 |
-
2010
- 2010-10-04 KR KR1020100096562A patent/KR101144321B1/ko active IP Right Grant
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101295210B1 (ko) * | 2012-04-27 | 2013-08-12 | 엔에이치엔비즈니스플랫폼 주식회사 | 데이터베이스 관리 방법 및 장치 |
US10891073B2 (en) | 2018-04-05 | 2021-01-12 | Research & Business Foundation Sungkyunkwan University | Storage apparatuses for virtualized system and methods for operating the same |
WO2022191622A1 (ko) * | 2021-03-10 | 2022-09-15 | 성균관대학교산학협력단 | 캐시 관리 장치 및 방법 |
KR20220127080A (ko) * | 2021-03-10 | 2022-09-19 | 성균관대학교산학협력단 | 캐시 관리 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR101144321B1 (ko) | 2012-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10216638B2 (en) | Methods and systems for reducing churn in a caching device | |
US8364918B1 (en) | Sensed opportunistic garbage collection in memory components | |
US10296219B2 (en) | Data deduplication in a block-based storage system | |
US20100088459A1 (en) | Improved Hybrid Drive | |
US9760309B2 (en) | Method and device for managing a memory | |
US8032724B1 (en) | Demand-driven opportunistic garbage collection in memory components | |
US8209503B1 (en) | Digital locked loop on channel tagged memory requests for memory optimization | |
JP5418719B2 (ja) | ストレージ装置 | |
Liu et al. | Hybrid storage management for database systems | |
JP2021513176A (ja) | Lsmデータ構造内の効率的なレコードルックアップのためのキャッシュ | |
US9804971B2 (en) | Cache management of track removal in a cache for storage | |
JP6711121B2 (ja) | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム | |
WO2016095151A1 (en) | Storing log records in a non-volatile memory | |
US10503608B2 (en) | Efficient management of reference blocks used in data deduplication | |
US11169968B2 (en) | Region-integrated data deduplication implementing a multi-lifetime duplicate finder | |
US8732404B2 (en) | Method and apparatus for managing buffer cache to perform page replacement by using reference time information regarding time at which page is referred to | |
KR101144321B1 (ko) | 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치 | |
CN106897311B (zh) | 数据库批次更新方法、数据还原日志产生方法与存储装置 | |
CN111240591A (zh) | 一种存储设备的操作请求处理方法及相关装置 | |
US10430287B2 (en) | Computer | |
US7979638B2 (en) | Method and system for accessing data using an asymmetric cache device | |
US11853577B2 (en) | Tree structure node compaction prioritization | |
US20210263648A1 (en) | Method for managing performance of logical disk and storage array | |
JPH08272654A (ja) | ファイル管理装置 | |
Rohner | State-of-the-art Garbage Collection Policies for NILFS2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150430 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180502 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20190430 Year of fee payment: 8 |