KR20040076313A - 버퍼 캐시 분할 관리 방법 - Google Patents

버퍼 캐시 분할 관리 방법 Download PDF

Info

Publication number
KR20040076313A
KR20040076313A KR1020030011603A KR20030011603A KR20040076313A KR 20040076313 A KR20040076313 A KR 20040076313A KR 1020030011603 A KR1020030011603 A KR 1020030011603A KR 20030011603 A KR20030011603 A KR 20030011603A KR 20040076313 A KR20040076313 A KR 20040076313A
Authority
KR
South Korea
Prior art keywords
block
cache
buffer
partition
reference frequency
Prior art date
Application number
KR1020030011603A
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 KR1020030011603A priority Critical patent/KR20040076313A/ko
Publication of KR20040076313A publication Critical patent/KR20040076313A/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/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 캐시가 적용되는 시스템에 있어서 파티션이 참조빈도의 범위에 따라 캐시블록을 할당받아 관리하고 참조 발생 시에 참조최근성과 참조빈도를 동시에 고려하여 캐시블록 교체를 수행하는 방법에 관한 것이다. 이를 위하여 본 발명은, 버퍼 캐시의 메인 버퍼에 참조 요청된 캐시블록이 있는 경우에는 해당 캐시블록을 참조한 후 참조빈도와 참조발생시간을 업데이트하고 참조빈도에 따른 파티션에 참조된 캐시블록을 할당하고, 히스토리 버퍼에 참조 요청된 블록 정보가 있는 경우에는 버퍼 캐시 저장 공간을 확보하여 버퍼 캐시의 메인 버퍼에 저장한 후 히스토리 버퍼에 있는 참조빈도를 이용하여 결정된 파티션에 참조된 블록을 할당하고, 메인 버퍼, 히스토리 버퍼에 참조요청된 블록 정보가 없는 경우에는 참조 후에 버퍼 캐시 저장 공간을 확보하여 메인 버퍼에 저장한 후 첫 번째 파티션에 참조된 블록을 할당하는 단계를 포함한다.

Description

버퍼 캐시 분할 관리 방법{Method of Seperated Buffer cache Management}
본 발명은 버퍼캐시가 적용되는 시스템에서 버퍼캐시를 참조빈도에 따라 복수의 파티션으로 나누어 관리하고 참조 발생시 블록의 참조최근성과 참조빈도를 동시에 고려하여 캐시블록의 교체를 수행하는 방법에 관한 것이다.
프로세서가 디스크에 접근을 하여 데이터를 가져오는 시간은, 주기억장치에서 데이터를 가져오는 시간보다 대략 1000배에서 10000배 이상의 시간이 소용된다. 이러한 이유에 의해, 프로세서의 잦은 디스크 참조는 시스템 전체의 성능을 저하시키는 큰 요인이 되고 있다. 이러한 문제의 해결을 위해 많은 시스템에서는 버퍼 캐시(Buffer Cache)를 사용한다. 버퍼 캐시 기법은, 한번 사용했던 디스크 블록을 주기억장치에 저장시켜 다음 참조 때 디스크에 대한 접근을 줄여 시스템의 성능을 향상시키는 방법이다. 버퍼 캐시 기법은, 버퍼 캐시의 제한된 용량때문에 가장 오랫동안 참조되지 않을 것으로 추측되는 캐시블록을 버퍼에서 제거하는 캐시블록 교체 기법에 의해 관리되며 효과적인 캐시블록 교체 기법은 시스템 전체의 성능을 향상시킨다. 블록이라 함은 파일 시스템상의 트리 구조에서 한 노드를 이루는 데이터 레코드들의 집합으로서, 데이터를 읽고 쓰는 단위로서 사용되는데 예를 들어 디스크 드라이브는 종종 512 바이트를 한 블록으로 해서 데이터를 읽거나 기록한다. 캐시블록이라 함은 프로세서에 의해 참조되어 버퍼 캐시에 저장되는 블록을 나타내는 것으로 한다.
한편, 상기에서와 같이 효율적으로 캐시블록을 교체하기 위하여 LRU, FBR,LRU/K, 2Q, LRFU 기법등의 연구가 진행되어 왔다.
LRU 기법은 참조최근성(Recency)즉 얼마나 최근에 참조되었는가를 기준으로 캐시블록을 제거하는 방법으로서, 최근에 참조된 캐시블록일수록 가까운 미래에 참조될 가능성이 높다고 가정하고 오랫동안 참조되지 않은 캐시블록을 버퍼로부터 제거하는 방법이다. 이러한 LRU 기법은 구현이 용이하고 시간 구역성을 보이는 참조패턴에 잘 동작하지만, 참조빈도가 높지만 긴 참조 주기때문에 낮은 참조최근성을 가지는 캐시블록을 버퍼에서 제거할 가능성이 많다. 또한, 비주기적인 캐시블록이라 하더라도 많은 수의 낮은 참조 빈도의 캐시블록에 의해 제거될 가능성이 많다.
참조최근성 만을 캐시블록 교체 판단 기준으로 하는 상기의 LRU 기법의 문제점을 보완하기 위하여 참조 빈도 즉 얼마나 많이 참조되었는가를 동시에 고려하여 캐시블록 교체를 판단하는 FBR, LUR/K, 2Q, LRFU 등의 연구가 진행되었다.
FBR(Frequency Based Replacement) 기법은 LRU기법에서 LRU리스트의 뒷부분의 일정수의 블록들의 영역을 Old Section이라 하고 이 영역에서 가장 참조빈도가 낮은 캐시블록을 제거한다. 즉, 1차적으로 참조최근성을 고려하여 LRU리스트를 만들고, 리스트의 뒷부분(참조최근성이 낮은부분)을 Old Section으로 정하고 2차적으로 Old Section내의 캐시블록들의 참조빈도를 고려하여 Old Section내의 캐시블록 중 참조빈도가 가장 낮은 캐시블록을 제거함으로써 참조빈도와 참조최근성을 동시에 고려하게 된다. 또한, FBR은 LRU리스트의 앞부분(참조최근성이 높은 부분)을 New Section이라고 하여 이 영역 내에서의 재참조가 이루어지는 경우는 상호참조(Correalated Reference)로 처리하여 참조빈도를 수정하지 않도록 한다.상호참조라 함은 DBMS의 트랜잭션처럼 아주 짧은 시간구역성 (Time Locality)을 보이며 재참조되는 경우를 말하는 것으로서, FBR은 New Section내의 캐시블록에 대한 재참조는 상호참조로 처리하여 참조빈도를 수정하지 않고 한번의 참조로 처리한다. 그러나, FBR은 긴 주기의 블록에 대한 처리나 낮은 참조빈도의 블록에 대한 빠른 제거가 이루어지지 못하고 Old Section범위 결정에 따라 O(1)에서 O(log₂N)의 시간복잡도를 가진다.
상기에서 시간복잡도(Time Complexity)란 특정한 수의 공간 N을 사용했을 때, 어느 정도의 시간이 소비되는지를 나타내는 것이다. 이 시간은, 실제 시간이 아닌 알로리즘상의 단계의 수로서 어느 정도의 작업량을 거치는가를 나타내는 것이다. 예를 들어서, N개의 데이터 공간이 있을 때 이 데이터들에 대한 작업 시간이 N에 대하여 1차적인 증가(T=1N, 2N, (1/2)N....)를 보일 때의 시간복잡도는 O(N)으로 표시한다. 마찬가지로 2차원적인 증가(T=N², 2N²....)이라면 O(N²)의 시간복잡도로 표시된다. 따라서, O(1)의 시간복잡도라 함은 데이터 증가에 대한 작업 처리 시간이 거의 영향을 받지 않는 다는 것을 의미한다.
LRU/K는 각 캐시블록의 최근 K회의 참조 기록에 따라 참조최근성을 판단하여 캐시블록을 교체한다. LRU/K는 참조최근성과 참조빈도를 고려하였지만 K번의 참조 기록의 보관을 위한 공간적 오버헤드가 발생하고 또한 블록의 참조시마다 항상 K번의 기록을 바탕으로 캐시블록 제거 순서를 정렬해주어야 하므로 O(log₂N)의 시간복잡도를 가진다.
2Q는 버퍼를 참조 횟수에 따라 한번과 그 이상의 두 영역으로 나누어 관리를하는 기법인데, 참조빈도를 세분화하여 구분하지 않았고, 하위 영역(참조빈도가 1인 영역)에서 상위영역(참조빈도가 2이상인 영역)으로의 이동 시 필수적으로 버퍼실패가 발생하는 단점이 있다.
LRFU는 참조빈도와 참조최근성을 통합 고려하여 CRF(Combine Recency Frequency)라는 값을 도출해내고 이 값에 따라 캐시블록을 교체하는 방법인데, 오프라인상에서 결정되는 제어변수에 따라서 최대 O(log₂N)의 시간복잡도를 가지는 단점이 있다.
이와 같이, 상기의 방법들은 참조최근성과 참조 빈도를 동시에 고려함으로써 LRU의 문제점을 해결하려 노력하였지만, 참조최근성과 함께 참조빈도를 고려함으로써 생기는 시간복잡도가 커지는 문제를 해결하지 못하였다.
상기의 문제점을 해결하고자 본 발명은 제안된 것으로서, 참조최근성과 참조빈도를 동시에 고려하여 캐시블록의 가치를 측정하는 방법과 참조빈도의 범위에 따라 캐시블록을 분리 관리하는 방법을 통하여 종전 방법에 비해 시간복잡도를 현저히 감소시키는 분할 버퍼 관리 기법을 제시한다. 즉, 참조최근성과 참조빈도를 동시에 고려하면서 재참조가 없는 낮은 참조빈도의 캐시블록을 빠르게 제거하며 사용이 끝난 높은 참조 빈도의 캐시블록을 효율적으로 제거하는 분할 버퍼 관리 기법을 제시함으로써 적은 오버헤드로 높은 버퍼적중률을 나타내도록 함을 목적으로 한다.
도 1은 버퍼 캐시 내에 저장된 캐시블록들이 K개의 파티션에서 참조최근성과 참조빈도를 고려하여 할당 관리되는 모습을 도시한 그림이다.
도 2는 각 파티션에 할당되는 캐시블록의 내부 구성을 나타낸 그림이다.
도 3은 각 파티션에서 제거 후보 대상인 캐시블록을 도시한 그림이다.
도 4는 본 발명에 따른 분할 버퍼 관리 기법에 따른 캐시블록 교체의 전체 알고리즘을 도시한 플로우차트이다.
*도면의 주요 부분에 대한 부호의 설명*
S400: 블록 참조 발생
S401: 버퍼 캐시에 참조 요청된 블록 있는가 판단
S402: 블록 참조 및 정보 업데이트 S403: 파티션 결정 및 할당
S405: 가장 나중에 참조될것으로 예측되는 블록 제거 및 제거된 블록 정보를 히스토리버퍼에 저장
상기의 목적을 이루기 위하여 본 발명은, 버퍼 캐시에 참조 요청된 캐시블록이 있는 경우에는 해당 캐시블록을 참조한 후 참조빈도와 참조발생시간을 업데이트하고 참조빈도에 따른 파티션에 참조된 캐시블록을 할당하고, 히스토리 버퍼에 참조 요청된 블록 정보가 있는 경우에는 버퍼 캐시 저장 공간을 확보하여 버퍼 캐시에 저장한 후 히스토리 버퍼에 있는 참조빈도를 이용하여 결정된 파티션에 참조된 블록을 할당하고, 버퍼 캐시, 히스토리 버퍼에 참조요청된 블록 정보가 없는 경우에는 참조 후에 버퍼 캐시 저장 공간을 확보하여 버퍼 캐시에 저장한 후 첫 번째 파티션에 참조된 블록을 할당하는 단계를 포함한다.
즉, 본 발명인 분할 버퍼 관리(Separate Buffer Management; 이하, SBM이라 함) 기법은 캐시블록의 가치를 참조최근성과 참조빈도를 동시에 고려한 방법으로 측정하여 블록을 교체하는 것인데, 이것만으로는 주기적으로 참조되는 블록의 효율적 관리와 낮은 참조빈도 블록의 효과적인 제거를 할 수 없기 때문에, SBM 기법은 버퍼를 K개의 파티션으로 가상 분할하여 블록을 관리하는 방법을 취한 것이다.
이하, 도면을 참조하여 본 발명의 실시 예를 상세히 설명한다.
도 1은 버퍼 캐시내에 저장된 캐시블록들이 K개의 파티션에서 참조최근성(R:Recency)과 참조빈도(F:Frequency)를 고려하여 할당 관리되는 모습을 도시한 그림이다.
본 발명인 분할 버퍼 관리 기법은 버퍼 캐시를 K개의 파티션으로 가상 분할하여 관리하는데, 각 파티션(100,110,120)은 특정 범위의 참조빈도(F)를 가지는 캐시블록들이 할당되어 관리된다. 또한, 각 파티션은 Pi로 표현이 되는데 i는 0에서 K-1의 값을 가진다. 각 파티션의 크기는 size(Pi)이며 각 파티션 크기의 합은 전체버퍼 크기와 같다.
예를 들어, K가 10인 경우 파티션은 버퍼 캐시를 P0부터 P9까지 10개의 파티션으로 분할하여 관리하는데, 이때 P0 파티션(100)인 경우 그 내부 캐시블록들(100a..100n)의 참조빈도는 2^0 ≤F(참조빈도) < 2^1이 된다(여기서, 2^0은 2의 0승을 의미함, 이하 같음). 즉, P0 파티션(100)은 참조빈도가 2^0에서부터 2^1 미만 즉, 참조빈도가 1인 캐시블록들이 할당된다. 마찬가지로, P5 파티션인 경우 그 내부 캐시블록들의 참조빈도는 2^5에서부터 2^6 미만의 캐시블록들이 할당된다. 따라서 Pi의 경우, Pi 내부의 한 캐시블록의 참조빈도는 2^i ≤F(참조빈도) < 2^(i+1) 이 된다. 다만, 마지막 파티션(120)의 경우에는 다음 파티션이 없기 때문에 자신에게 할당된 참조빈도 이상의 모든 캐시블록들이 할당된다. 즉, K=10인 경우 P0부터 P9까지의 10개의 파티션이 존재하게 되는데 마지막 파티션 P9는 참조빈도가 2^9 이상인 모든 캐시블록들이 할당되는 것이다. 즉, 참조빈도 1인 캐시블록들은 P0 파티션에, 참조빈도 2,3인 캐시블록들은 P1 파티션에, 참조빈도 4,5,6,7인 캐시블록들은 P2 파티션에, 참조빈도 8,9,10,11,12,13,14,15인 캐시블록들은 P3에 할당되어 관리된다.
따라서, 상기와 같이 버퍼 캐시내 캐시블록들은 참조최근성과 참조빈도를 고려한 파티션에서 관리되어, 처음 버퍼 캐시에 저장되는 캐시블록들은 P0(100) 파티션에 할당된다. 또한, 버퍼 캐시에 저장된 캐시블록이 재참조가 이루어 지면 다음으로 이동할 파티션이 결정되는데, 이러한 파티션 결정을 수식으로 나타내면 다음과 같다.
If, F = Frequency of Block
i = log₂F
Next Partition = Pi
예를 들어, P0에 있던 F=1인 캐시블록이 재참조 되면 다음에 들어갈 파티션은 I = 1(log₂2) 인 P1이 된다. 동일한 조건에서 P2에 있던 F=5인 캐시블록이 재참조되면 다음에 들어갈 파티션은 i = 2(log₂6) 인 P2가 되어 재참조 이전과 동일한 파티션의 가장 앞으로 이동하게 된다. 만일, 파티션 수 K=10 이고 F=1023일 때, 재참조가 된다면 i=10이 되지만, P9가 버퍼에 존재하는 마지막 파티션이므로 캐시블록은 P9의 가장 앞쪽으로 이동하게 된다. 결국, F > 2^K인 캐시블록은 마지막 파티션에서 모두 보관되는 것이다. 상기에서는 log₂F를 예로 들었지만, 이외에도 log₂(F/2), log₂(F/3) 등의 다양한 함수가 쓰여질 수 있다.
이러한 각 파티션에 할당되는 캐시블록의 수는 유동적인 것으로서, 각 캐시블록들의 참조빈도와 버퍼 풀(full) 여부에 따라 파티션에 할당되는 캐시블록의 수가 유동적으로 정해진다. 이에 대한 자세한 설명은 후술할 캐시블록 교체 방법 설명 시에 상세히 설명한다.
그림에서 블록 진행 방향은 캐시블록이 재참조를 거듭하여 이동이 되어지는 방향을 나타낸 것으로서, 파티션이 다음으로 진행될수록 각 파티션 내에는 높은 참조빈도의 캐시블록들이 보관된다.
각 파티션에 할당되는 캐시블록들은 참조최근성을 고려한 LRU 기법으로 관리되거나, 참조최근성-참조빈도성을 동시에 고려한 도 2에서 후술할 FAR(Frequency And Recency)기법으로 관리되어 리스트를 형성한다. 따라서, 각 파티션내의 캐시블록들이 LRU기법으로 관리된다면 참조최근성에 따라서 가장 최근에 참조된 캐시블록(100n,110n,120n)이 각 파티션의 앞부분에 위치하게되고, 만약 버퍼 캐시의 전체 용량이 가득찬 상태에서 새로운 캐시블록이 들어온다면 각 파티션의 마지막 캐시블록(100a,110a,120a)중 하나가 제거된다. 마찬가지로 각 파티션내의 캐시블록들이 FAR 기법으로 관리된다면 블록치(Block Value; BV)가 가장 높은 캐시블록이 각 파티션의 앞부분에 위치하게되고, BV는 [빈도수] / [마지막 참조부터 현재 시간까지 참조되지 않은 시간] 을 의미하는 것으로서 도 2에서 후술한다.
도 2는 각 파티션에 할당되는 캐시블록의 내부 구성을 나타낸 그림이다.
각 캐시블록들은 적어도 참조빈도(Frequency,210), 참조발생시간(LastRefTime, 220), 블록번호(230), 블록 내용인 데이터 또는 명령이 저장된 블록 데이터(240)를 포함하며 상기 구성 요소 외에도 블록의 관리를 위한 필드가 더 필요할 수 있다. 예를 들어, 만일 각 블록들이 링크드 리스트(linked list) 기법에 의해 관리된다면 이를 위한 포인터가 포함될 것이다.
이전에 상술한 바와 같이, 여기서 블록이라 함은 메모리상에서 트리 구조를 지닌 일련의 데이터 레코드들의 집합으로서 디스크같은 메모리상의 데이터를 읽거나 기록할 때 처리되는 단위이며, 캐시블록이라 함은 참조가 이루어 진후 버퍼 캐시에 저장되는 블록으로서 참조빈도, 참조발생시간, 블록번호, 블록 데이터를 포함한 것을 말한다.
참조빈도(210)란 블록이 참조되는 횟수를 말하고, 참조발생시간(220)이란 가장 마지막으로 참조가 발생할 때의 시간을 말한다. 따라서, 특정 블록에 대한 참조가 발생할 때마다 해당 캐시블록에 대한 참조빈도는 1씩 더해지고 참조발생시간은 참조 발생 때의 시간으로 업데이트된다.
한편, 상기의 참조빈도와 참조발생시간은 버퍼 캐시내의 블록 교체 시에 제거 대상이 되는 캐시블록 선택의 기준이 되는 블록치(Block Value;BV) 산출시에 이용된다. 블록치(BV)란 참조빈도(Frequency)와 참조대기시간(NoHitTime)을 고려하여 해당 캐시블록의 사용 가치를 평가한 수치로서,
블록치(BV) = 참조빈도(Frequency)/참조대기시간(NoHitTime)
의 수식으로서 구해진다.
여기서, 참조빈도(Frequency)는 블록의 참조횟수를 말한다. 참조대기시간(NoHitTime)은 마지막 참조부터 현재 시간까지 참조되지 않은 시간을 말하는 것으로서, 현재 시간에서 참조발생시간(LastRefTime)을 뺀 값을 말한다.
상기와 같은 블록치 계산 방법을 통해서, 참조빈도가 높은 캐시블록의 생존시간의 연장과, 참조빈도가 높지만 사용이 끝나 오랫동안 참조되지 않은 캐시블록의 효과적인 제거를 할 수 있다. 즉, 블록치(BV)가 Frequency/NoHitTime 으로써 결정되기 때문에 참조빈도에 비례하는 생존시간을 가질 수 있다.
예를 들어, 다음 두 캐시블록
A: Frequency 10 NoHitTime 10
B: Frequency 1 NoHitTime 1
의 경우, A 캐시블록과 B 캐시블록의 블록치(BV)는 동일하게 된다. 이는 참조빈도가 높을수록 참조대기시간(NoHitTime)을 길게 가질 수 있게 된다는 뜻이다. 기존의 FBR, LRU/K, LRFU 등과 같이 참조최근성과 참조빈도간의 비중결정을 위한 노력 없이도 산출된 블록치(BV)를 이용하는 것만으로 해당 특성을 효율적으로 조합할 수 있다. 이렇게 블록치(BV)에 의하여 버퍼 캐시를 관리하는 기법을 빈도-최근성 동시고려(Frequency And Recency) 기법이라 칭하고 이하에서는 FAR 기법이라 표현한다.
한편, 블록번호(210)는 버퍼 캐시로 로드되어 저장된 블록에 대한 블록번호가 저장된 곳이고, 블록 데이터(220)는 로드되어 온 블록의 내용 즉, 데이터나 명령이 저장되는 곳이다. 따라서, 프로세스가 디스크의 특정 블록을 참조하려할때, 참조하려는 디스크내 블록의 블록번호가 버퍼 캐시에 있는 캐시블록의 블록번호와 일치하여 '히트(hit)' 발생 시에는 버퍼 캐시로부터 블록을 참조하게 되고, 반면에 일치되는 블록번호가 버퍼 캐시에 존재하지 않아 '미스(miss)' 발생 시에는 버퍼 캐시가 아닌 디스크로부터 해당 블록을 참조한 후 해당 블록을 참조빈도, 참조발생시간, 해당 블록번호, 블록 데이터의 형태로 버퍼 캐시에 저장한다. 이때 만약, 버퍼 캐시가 모두 채워진 상태에서 캐시 미스가 발생했다면, 버퍼 캐시 내의 캐시블록들 중 특정 하나의 캐시블록을 제거하여 공간을 확보한 후 참조된 블록을 새로이 버퍼 캐시에 저장해야 한다. 이렇게 제거할 캐시블록을 선택하기 위하여 블록치(BV)를 이용하는데 다음 도 3의 블록 교체 방법에서 이를 설명한다.
도 3은 각 파티션에서 제거 대상 후보인 캐시 블록을 도시한 그림이다.
버퍼 캐시가 가득 차 있는 상태에서 새로이 참조가 발생하면, 버퍼 캐시 내에 있는 특정 캐시블록을 제거하고 새로 참조된 블록을 버퍼에 저장하게 된다. 이를 위하여, 버퍼 캐시 내에 저장되어 있는 캐시블록들 중 어느 캐시블록을 제거할지 선택해야 하는데, 이를 위하여 캐시 시스템은 파티션에서 가장 효용가치가 낮은 캐시블록을 각각 선택한 후 이들 각 파티션에 선택된 캐시블록들 중에서 블록치(BV)가 가장 낮은 캐시블록을 제거한다. 즉, 각 파티션 내에서 LRU 기법이나 FAR기법으로 정렬된 가장 마지막 캐시블록들(310,320,330,340) 중 가장 블록치가 낮은 캐시블록을 제거하는 것이다.
도 3에서와 같이 각 파티션의 캐시블록을 LRU 기법으로 리스트 정렬한 경우에는 각 파티션내에서 가장 오랫동안 참조되지 않은 캐시블록이 파티션의 맨 끝(310,320,330,340)에 위치하게 되고, 각 파티션의 블록을 FAR 기법으로 리스트 정렬한 경우에는 각 파티션내에서 블록치(BV)가 가장 낮은 블록이 파티션의 맨 끝(310,320,330,340)에 위치하게 된다. 이때, 각 파티션을 FAR 기법으로 관리하게 되면, O(log₂N)의 시간복잡도를 가지게 되고 LRU 기법으로 관리를 하게되면 O(1)의 시간복잡도를 가지게 된다.
각 파티션의 맨 끝에 위치한 제거 후보 캐시블록의 블록치(BV) 비교를 통하여 블록치(BV)가 가장 낮은 캐시블록이 제거되는데, 상기와 같이 참조최근성이나 블록치(BV)의 리스트 순서에 따라 각 파티션내의 캐시블록이 제거된다면 주기가 긴 캐시블록의 경우에는 참조빈도가 낮은 케시블록으로 분류가 되어 버퍼에서 쉽사리 제거되는 문제가 있다. 일반적으로, 참조빈도가 낮은 캐시블록이 참조빈도가 높은 캐시블록에 비해 상대적으로 많은 수를 차지하므로 참조빈도가 낮은 파티션의 경우에는 캐시블록 교체가 빠르게 진행이 되기 때문이다. 본 발명인 SBM에서는 이러한 의도되지 않은 상황을 피하기 위하여 제거된 캐시블록의 정보를 나타내는 메타데이터(Meta Data)를 리스트 형식으로 히스토리 버퍼라는 곳에 저장하여 재참조시에 재사용하도록 한다. 히스토리 버퍼는 파티션에서 제거되는 캐시블록의 데이터 내용이 아닌 제거되는 캐시블록의 블록번호, 블록의 참조카운트 등의 정보만을 저장하는 곳으로서, 특정 캐시블록이 몇 번의 참조를 했었는지를 저장하는 곳이다. 따라서, 상기에서 메타데이터라 함은 제거되는 캐시블록 데이터의 실제 내용이 아닌 블록번호 등의 정보를 나타낸 것이다.
히스토리 버퍼는 FIFO(First In - First Out) 기법으로 관리되는 유한한 크기의 리스트이다. 그러므로, 제거된 캐시블록의 메타데이터 기록이 보존되는 시간은 유한 시간이고, 히스토리 버퍼의 크기에 의해 결정이 된다. 만약, 히스토리 버퍼가 3000개의 메타데이터를 가지고 있다면, 메타데이터의 생존시간은 3000이 된다. 메타데이터 보관시간을 유한 시간으로 두는 이유는, 아주 긴 주기를 가진 캐시블록의 경우에는 버퍼 캐시에 남겨 둘 필요가 없으며 아주 오래된 기록의 고려는 성능저하를 가져올 수도 있기 때문이다.
도 4는 본 발명에 따른 분할 버퍼 관리(SBM) 기법에 따른 캐시블록 교체의 전체 알고리즘을 도시한 플로우차트이다.
버퍼 캐시(Buffer Cache)를 적용한 시스템의 프로세스가 특정 블록에 대한 참조 요청을 하게되면 참조 요청된 블록이 버퍼 캐시에 저장되어 있는지를 확인(S401)한다. 버퍼 캐시에 참조요청된 블록이 있는 경우 즉, 참조요청된 블록의 번호가 도 2에 도시한 버퍼 캐시내의 캐시블록들 중 어느 하나의 캐시블록의 블록번호와 일치하는 경우에는 참조요청된 블록을 버퍼 캐시에서 읽어와 참조하고 해당 캐시블록의 정보를 업데이트(S402)한다. 즉, 도 2에 도시한 해당 캐시블록의 참조빈도(Frequency)를 1 증가시키고 참조발생시간(LastRefTime)을 참조가 발생된 시간으로 업데이트시킨다. 그 후, 참조빈도를 근거하여 참조된 캐시블록이 위치할 파티션을 결정하여 할당(S403)하는데 가장 최근에 참조된 캐시블록이므로 구해진 파티션의 가장 앞부분에 위치시킨다. 버퍼 캐시내의 캐시블록이 참조될 때 다음으로 이동될 파티션은 도 1에서 설명한 바와 같이 다음의 수식에 의해 결정된다.
If, F = Frequency of Block
i = log₂F
Next Partition = Pi
따라서, 두 번째 참조되는 캐시블록은 P0 파티션에서 P1 파티션으로 결정되고, 두 번 참조되어 P1에 위치한 캐시블록이 다시 참조되어 세 번 참조된 경우에도 여전히 P1 파티션으로 결정되고, 이전에 세 번 참조된 캐시블록이 다시 참조되어 네 번 참조된 경우에는 P2 파티션으로 결정된다.
상기에서 파티션이 결정되면 참조된 캐시블록을 구해진 파티션의 가장 앞부분에 옮겨 캐시블록 교체 과정을 종료한다.
한편, 버퍼 캐시에 참조 요청된 블록이 없는 경우에는 버퍼 캐시가 가득 차 있는가를 확인(S404)한다.
버퍼 캐시가 가득 차 있다면 버퍼 캐시에 저장되어 있는 블록 중에서 가장 나중에 참조될 것으로 예측되는 블록을 제거하고 새로 참조된 블록을 저장하는 캐시블록 교체 과정(S405)을 갖는다. 이를 위하여 우선, 버퍼 캐시에 있는 캐시블록 중 가장 나중에 참조될 것으로 예측되는 블록을 결정해야 하는데, 블록 결정할 때 고려해야 할 점은 한계 효용이 최소인 블록을 제거한다는 것이다. 즉, 각 파티션 내에서 LRU 기법이나 FAR 기법으로 정렬된 가장 마지막 캐시블록들 중 가장 BV가치가 적은 캐시블록을 제거하는 것이다.
각 파티션의 제거 후보는 도 3에 도시한 바와 같이 리스트의 끝에 위치한다. 각 파티션에서 하나씩 교체대상 캐시블록을 선정하게 되고 이 캐시블록들은 각 파티션의 가장 뒤쪽에 위치하게 된다. 이 교체대상 캐시블록 중 BV가 가장 낮은 캐시블록이 최종적으로 교체되어 진다.
각 파티션의 리스트는 FAR 기법 혹은 LRU 기법으로 관리될 수 있다. 어느 경우에서든, 각 파티션의 가장 마지막 캐시블록들의 BV의 비교를 통하여 BV가 가장 낮은 캐시블록이 제거된다. 이때, 각 파티션을 FAR 기법으로 관리하게 되면, O(log₂N)의 시간복잡도를 가지게 되고 LRU 기법으로 관리를 하게되면 O(1)의 시간복잡도를 가지게 된다.
상기와 같은 방법으로 BV가 가장 낮은 캐시블록을 제거한 후 제거된 블록의 블록번호, 참조빈도와 같은 정보를 메타데이터 형식으로 히스토리 버퍼에 저장하고, 새롭게 저장되는 캐시블록을 관리할 파티션을 참조빈도를 근거로 하여 결정한 후 해당 파티션에 해당 캐시블록을 할당한다.
상기와 같이 버퍼 캐시 공간을 확보한 후에는 히스토리 버퍼에 참조 요청된 블록의 정보가 있는가를 확인(S406)한다.
확인결과, 참조요청된 블록이 버퍼 캐시에 존재하지 않지만 블록번호 등의 정보가 히스토리 버퍼에 존재한다면, 해당 블록을 블록이 있던 원래 위치한 메모리에서 읽어오면서 해당 블록에 대한 히스토리 버퍼내의 참조빈도를 참고하여 참조빈도를 1 증가시킨다(S407). 그후, 참조된 블록을 버퍼 캐시에 저장하고 히스토리 버퍼에 있는 참조빈도를 참고하여 파티션을 결정하여 해당 캐시블록을 파티션에 할당한다. 파티션 할당 방법은 상기에서의 할당 방법과 동일한 방법으로서 이루어진다.
한편, 버퍼 캐시 뿐 아니라 히스토리 버퍼에도 어떠한 참조 요청된 블록의 정보가 저장되어 있지 않은 경우에는 참조요청된 블록을 원래 위치한 메모리에서 읽어오고 이를 버퍼 캐시에 저장하고 파티션에 할당하는 과정(S409,S410)을 갖는다. 버퍼 캐시에 저장되는 참조된 블록은 처음으로 참조되는 블록 즉 참조빈도 1인블록이 되므로 참조빈도 1인 캐시블록들을 관리하는 파티션인 P0파티션에 참조된 블록을 할당(S410)한다.
본 발명의 기술사상은 상기 바람직한 실시 예에 따라 구체적으로 기술되었으나 상기한 실시 예는 그 설명을 위한 것으로서, 본 발명의 기술분야의 통상의 전문가라면 본 발명의 기술사상의 범위에서 다양한 실시 예가 가능함을 이해할 수 있을 것이다.
상기에서 설명한 바와 같이 본 발명은, 긴 주기를 갖는 캐시블록을 보호하는 반면 낮은 참조빈도의 캐시블록의 빠른 제거를 할 수 있다. 즉, 각 파티션에 관리되는 캐시블록은 재참조를 거듭할수록 높은 참조빈도의 파티션으로 이동을 함으로써, 자신보다 낮은 참조빈도를 가진 캐시블록들의 유입에 의해 버퍼 캐시에서 제거될 가능성이 줄었으며, 낮은 참조 빈도의 캐시블록은 더이상 재참조가 없어지면 빠르게 버퍼 캐시에서 제거된다. 결국, 본 발명인 분할 버퍼 관리(SBM) 기법은 참조최근성과 참조빈도의 동시 고려를 BV(Block Value)와 분할이라는 두 가지의 개념으로 처리함으로써 버퍼 캐시의 성능을 향상시키는 동시에 시간복잡도 O(1)의 낮은 오버헤드를 가지게된다. 특히, SBM 기법을 트레이스 기반의 시뮬레이션을 통하여 기타 기법들과 비교 평가한 결과 LRU 블록 교체 기법에 비해 최고 26% 향상된 결과를 보였고, 기타 다른 기법들에 비해서도 향상된 성능을 나타냈다.

Claims (7)

  1. 메모리와, 상기 메모리의 특정한 블록들의 복사본과 해당 블록의 참조빈도와 참조발생시간을 포함하는 캐시블록을 참조빈도에 따라 다수의 파티션으로 구분 관리하여 저장하기 위한 버퍼 캐시와, 버퍼 캐시에서 제거된 캐시블록에 관한 정보를 저장하는 히스토리 버퍼를 구비하는 시스템에서의 캐시블록 교체 방법에 있어서,
    디스크상의 블록에 대한 참조가 발생하였을 때, 버퍼 캐시에 참조 요청된 블록이 있는지를 확인하는 단계와,
    버퍼 캐시에 해당 블록이 저장되어 있는 경우에는 해당 캐시블록의 참조빈도를 1 증가 시키고, 참조발생시간을 현재의 시간으로 업데이트하고, 해당 캐시블록의 참조빈도에 따라 결정되는 파티션에 해당 캐시블록을 할당하는 단계와,
    버퍼 캐시에 해당 블록이 저장되어 있지 않으면, 버퍼 캐시가 가득 차 있는가를 확인하여 버퍼 캐시가 가득 차 있는 경우에는 버퍼 캐시에 저장되어 있는 블록 중에서 가장 나중에 참조될것으로 예측되는 블록을 삭제하면서 그에 관한 블록 정보를 히스토리 버퍼에 저장하는 단계와,
    버퍼 캐시에 해당 블록이 저장되어 있지 않으면, 히스토리 버퍼에 해당 블록에 관한 정보가 저장되어 있는지를 확인하는 단계와,
    히스토리 버퍼에 해당 블록에 관한 정보가 저장되어 있으면, 히스토리 버퍼에 저장되어 있는 해당 블록에 관한 정보를 사용하여 메모리에서 해당 블록을 읽어와서 해당 블록의 참조빈도를 1 증가 시키고, 참조발생시간을 현재 시간으로 업데이트한 다음에 해당 캐시블록을 버퍼 캐시에 저장하면서 참조빈도에 따라 결정되는 파티션에 해당 캐시블록을 할당하는 단계와,
    히스토리 버퍼에 해당 블록에 관한 정보가 저장되어 있지 않은 경우에는, 메모리에서 해당 블록을 읽어와서 해당 블록의 참조빈도를 1로 하고 참조발생시간을 현재 시간으로 설정한 다음에 해당 캐시블록을 버퍼 캐시에 저장하면서 첫 번째 파티션에 해당 캐시블록을 할당하는 단계
    를 구비하는 버퍼 캐시 분할 관리 방법.
  2. 제1항에 있어서, 블록정보를 히스토리 버퍼에 저장하는 단계에 있어서 버퍼 캐시에 저장되어 있는 블록 중에서 가장 나중에 참조될것으로 예측되는 블록을 삭제하는 것은, 각 파티션에서 제거 후보로 선정이 된 블록들중에서 블록치 = (참조빈도)/(현재시간-참조발생시간) 를 계산하여 가장 블록치가 낮은 블록을 삭제하는 것을 특징으로 하는 버퍼 캐시 분할 관리 방법.
  3. 제1항에 있어서, 파티션은 각 파티션 내부의 블록을 참조최근성을 고려한 LRU 기법으로 관리하는 것을 특징으로 하는 버퍼 캐시 분할 관리 방법.
  4. 제1항에 있어서, 파티션은 각 파티션 내부의 블록을 참조최근성과 참조빈도를 동시고려한 FAR기법으로 관리하는 것을 특징으로 하는 버퍼 캐시 분할 관리 방법.
  5. 제1항에 있어서, 파티션은 특정 참조빈도 범위를 가진 블록을 할당받은 각각의 블록을 상기의 블록치 순서로 리스트 관리하는 것을 특징으로 하는 버퍼 캐시 분할 관리 방법.
  6. 제1항에 있어서, 참조빈도에 따라 결정되는 파티션에 해당 캐시블록을 할당하는 것은, log₂[참조빈도(F)/정수(N)]에 의해 구해진 파티션 위치에 참조된 블록을 할당하는 것을 특징으로 하는 버퍼 캐시 분할 관리 방법.
  7. 제1항에 있어서, 히스토리 버퍼는 FIFO 기법으로 관리되는 유한한 크기인 것을 특징으로 하는버퍼 캐시 분할 관리 방법.
KR1020030011603A 2003-02-25 2003-02-25 버퍼 캐시 분할 관리 방법 KR20040076313A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030011603A KR20040076313A (ko) 2003-02-25 2003-02-25 버퍼 캐시 분할 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030011603A KR20040076313A (ko) 2003-02-25 2003-02-25 버퍼 캐시 분할 관리 방법

Publications (1)

Publication Number Publication Date
KR20040076313A true KR20040076313A (ko) 2004-09-01

Family

ID=37362525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030011603A KR20040076313A (ko) 2003-02-25 2003-02-25 버퍼 캐시 분할 관리 방법

Country Status (1)

Country Link
KR (1) KR20040076313A (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100437524C (zh) * 2005-08-24 2008-11-26 三星电子株式会社 用于将文件的数据存储在存储块中的高速缓存方法及系统
KR100979750B1 (ko) * 2009-11-06 2010-09-03 (주)피스페이스 분산 저장 시스템에서 파일을 관리하는 장치 및 방법
KR20110080479A (ko) * 2010-01-06 2011-07-13 주식회사 태진인포텍 멀티 레벨 버퍼 캐시 관리 정책에 따른 메모리 관리 방법
US8281042B2 (en) 2008-12-05 2012-10-02 Samsung Electronics Co., Ltd. Memory device and management method of memory device
US8614704B2 (en) 2005-02-01 2013-12-24 Samsung Electronics Co., Ltd. Method and apparatus for rendering 3D graphics data
US20140215156A1 (en) * 2013-01-30 2014-07-31 Electronics And Telecommunications Research Institute Prioritized dual caching method and apparatus
WO2014185652A1 (ko) * 2013-05-16 2014-11-20 이화여자대학교 산학협력단 쓰기 트래픽이 적은 캐시 메모리 블록 교체 방법 및 이를 이용한 캐시 서브시스템을 가지는 정보 처리 장치
KR20160102842A (ko) * 2015-02-23 2016-08-31 한남대학교 산학협력단 메모리 관리 장치 및 방법
KR101704936B1 (ko) * 2015-12-07 2017-02-09 성균관대학교산학협력단 블록의 우선성에 기반한 ssd의 블록 교체방법 및 이를 적용하는 하이브리드 저장 시스템
KR20190136958A (ko) * 2018-05-30 2019-12-10 경희대학교 산학협력단 캐시 교체 방법 및 이를 실행하는 캐시 교체 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0156401B1 (ko) * 1994-12-30 1998-12-15 이헌조 입출력 프로세서의 디스크 캐시 관리 방법
JP2000047942A (ja) * 1998-07-28 2000-02-18 Nec Corp キャッシュメモリ制御装置及びその制御方法
US6272598B1 (en) * 1999-03-22 2001-08-07 Hewlett-Packard Company Web cache performance by applying different replacement policies to the web cache
KR20020007288A (ko) * 1999-11-10 2002-01-26 요트.게.아. 롤페즈 기록매체, 기록매체를 재생하는 장치, 기록매체를재생하는 방법, 기록매체를 기록하는 장치 및 기록매체를기록하는 방법
KR20030055482A (ko) * 2001-12-26 2003-07-04 한국전자통신연구원 선택적인 캐시관리방법 및 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0156401B1 (ko) * 1994-12-30 1998-12-15 이헌조 입출력 프로세서의 디스크 캐시 관리 방법
JP2000047942A (ja) * 1998-07-28 2000-02-18 Nec Corp キャッシュメモリ制御装置及びその制御方法
US6272598B1 (en) * 1999-03-22 2001-08-07 Hewlett-Packard Company Web cache performance by applying different replacement policies to the web cache
KR20020007288A (ko) * 1999-11-10 2002-01-26 요트.게.아. 롤페즈 기록매체, 기록매체를 재생하는 장치, 기록매체를재생하는 방법, 기록매체를 기록하는 장치 및 기록매체를기록하는 방법
KR20030055482A (ko) * 2001-12-26 2003-07-04 한국전자통신연구원 선택적인 캐시관리방법 및 장치

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8614704B2 (en) 2005-02-01 2013-12-24 Samsung Electronics Co., Ltd. Method and apparatus for rendering 3D graphics data
US7644232B2 (en) 2005-08-24 2010-01-05 Samsung Electronics Co., Ltd. Cache method and cache system for storing file's data in memory blocks divided from cache memory
CN100437524C (zh) * 2005-08-24 2008-11-26 三星电子株式会社 用于将文件的数据存储在存储块中的高速缓存方法及系统
US8281042B2 (en) 2008-12-05 2012-10-02 Samsung Electronics Co., Ltd. Memory device and management method of memory device
WO2011056002A2 (ko) * 2009-11-06 2011-05-12 (주)피스페이스 분산 저장 시스템에서 파일을 관리하는 장치 및 방법
WO2011056002A3 (ko) * 2009-11-06 2011-11-10 (주)피스페이스 분산 저장 시스템에서 파일을 관리하는 장치 및 방법
KR100979750B1 (ko) * 2009-11-06 2010-09-03 (주)피스페이스 분산 저장 시스템에서 파일을 관리하는 장치 및 방법
KR20110080479A (ko) * 2010-01-06 2011-07-13 주식회사 태진인포텍 멀티 레벨 버퍼 캐시 관리 정책에 따른 메모리 관리 방법
US20140215156A1 (en) * 2013-01-30 2014-07-31 Electronics And Telecommunications Research Institute Prioritized dual caching method and apparatus
WO2014185652A1 (ko) * 2013-05-16 2014-11-20 이화여자대학교 산학협력단 쓰기 트래픽이 적은 캐시 메모리 블록 교체 방법 및 이를 이용한 캐시 서브시스템을 가지는 정보 처리 장치
KR20160102842A (ko) * 2015-02-23 2016-08-31 한남대학교 산학협력단 메모리 관리 장치 및 방법
KR101704936B1 (ko) * 2015-12-07 2017-02-09 성균관대학교산학협력단 블록의 우선성에 기반한 ssd의 블록 교체방법 및 이를 적용하는 하이브리드 저장 시스템
KR20190136958A (ko) * 2018-05-30 2019-12-10 경희대학교 산학협력단 캐시 교체 방법 및 이를 실행하는 캐시 교체 장치

Similar Documents

Publication Publication Date Title
US11307765B2 (en) System and methods for storage data deduplication
US9934231B2 (en) System and methods for prioritizing data in a cache
US9805048B2 (en) System and method for managing a deduplication table
US5717893A (en) Method for managing a cache hierarchy having a least recently used (LRU) global cache and a plurality of LRU destaging local caches containing counterpart datatype partitions
US6996676B2 (en) System and method for implementing an adaptive replacement cache policy
US5390318A (en) Managing the fetching and replacement of cache entries associated with a file system
US5333315A (en) System of device independent file directories using a tag between the directories and file descriptors that migrate with the files
US20070294490A1 (en) System and Method of Updating a Memory to Maintain Even Wear
EP1896951B1 (en) Managing memory pages
US20130097387A1 (en) Memory-based apparatus and method
EP0172707A2 (en) Method for managing virtual memory to separate active and stable memory blocks
KR101481633B1 (ko) 플래시 메모리 기반 세가지 상태를 가지는 버퍼 관리 장치 및 방법
KR20040076313A (ko) 버퍼 캐시 분할 관리 방법
Wang et al. ADAPT: Efficient workload-sensitive flash management based on adaptation, prediction and aggregation
CN107870922B (zh) 一种用于数据去重的方法、设备和系统
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN105389128B (zh) 一种固态硬盘数据存储方法及存储控制器
US7058766B2 (en) Method and system of adaptive replacement cache with temporal filtering
CN117573676A (zh) 基于存储系统的地址处理方法、装置、存储系统及介质
US7836248B2 (en) Methods and systems for managing persistent storage of small data objects
JP2014010604A (ja) ストレージ装置とプログラムと方法
KR20110098279A (ko) 버퍼의 지역성에 기초한 가비지 컬렉션을 수행하는 낸드 플래시 메모리 시스템 및 방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
CN112948283A (zh) 一种基于二叉树的伪LRU硬件结构、更新逻辑和Cache替换方法
US11836090B2 (en) Cache management for search optimization

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application