KR20090007084A - 디스크 어레이 매스 프리페칭 방법 - Google Patents

디스크 어레이 매스 프리페칭 방법 Download PDF

Info

Publication number
KR20090007084A
KR20090007084A KR1020070070719A KR20070070719A KR20090007084A KR 20090007084 A KR20090007084 A KR 20090007084A KR 1020070070719 A KR1020070070719 A KR 1020070070719A KR 20070070719 A KR20070070719 A KR 20070070719A KR 20090007084 A KR20090007084 A KR 20090007084A
Authority
KR
South Korea
Prior art keywords
prefetching
strip
disk
block
cache
Prior art date
Application number
KR1020070070719A
Other languages
English (en)
Other versions
KR100900489B1 (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 KR1020070070719A priority Critical patent/KR100900489B1/ko
Priority to US11/968,370 priority patent/US7822920B2/en
Publication of KR20090007084A publication Critical patent/KR20090007084A/ko
Application granted granted Critical
Publication of KR100900489B1 publication Critical patent/KR100900489B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices

Abstract

순차적 읽기뿐만 아니라 공간 지역성을 가지는 비순차적 읽기에 대해서 디스크 읽기 성능 향상을 위해서, 호스트가 블록 읽기 요청을 하면, 그 블록이 속한 스트립을 모두 읽는다. 이것을 스트립 프리페칭(Strip Prefetching : SP)이라고 하겠다. 본 발명이 제안하는 조절 스트립 프리페칭(Throttled Strip Prefetching : TSP) 방법은 디스크 시뮬레이션으로 SP가 이득이 있는지 없는지 판단하여, 이득이 없는 것으로 판단되면 SP를 하지 않는다. 이렇게 TSP에 의해서 모든 프리페칭이 디스크어레이의 스트립에 정렬되므로 디스크 독립성이 향상되어 다수의 프로세스에 의한 동시 읽기에서 디스크어레이의 성능이 극대화된다. 하지만 TSP는 하나의 프로세스에 의한 단일 순차 읽기는 SP의 디스크 독립성으로 인하여 디스크 병렬성이 저하되는데, 이 문제를 해결하기 매시브 스트라이프 프리페칭(Massive Stripe Prefetching: MSP)을 제안한다. MSP는 블록 수준에서 단일 순차 읽기를 감지하는 알고리즘을 포함한다. 단일 순차 읽기가 감지되면 프리페칭은 스트라이프에 정렬되어 한개 이상의 스트라이프를 프리페칭한다. 그러므로써 디스크 병렬화를 극대화 한다.
프리페칭, 디스크어레이

Description

디스크 어레이 매스 프리페칭 방법{Mass Prefetching Method for Disk Arrays}
본 발명은 디스크 어레이 매스 프리페칭 방법에 관한 것으로서, 특히 공간 지역성을 가지는 순차적 또는 비순차적 디스크 읽기 성능이 향상되고 호스트의 블럭 읽기 요구에 따라 스트립 또는 스트라이프 단위로 블럭의 데이터를 프리페칭하는 디스크 어레이 매스 프리페칭 방법에 관한 것이다.
프리페칭 기술은 1960년대를 거슬러 올라가 프로세서가 캐쉬 라인 단위로 다수의 워드들을 미리 읽는 것으로 시작되었다. 그리고 현재 프로세서에서의 프리페칭 기술이 많이 개발되었으며, 이러한 프리페칭 기술은 디스크에서 메모리로 미리 읽는 디스크 프리페칭에도 다소 적용되었다. 프로세서에서의 프리페칭과 디스크 저장장치의 다른 특징으로 디스크만을 위한 프리페칭 기술이 많이 연구되었다. 디스크 프리페칭은 디스크의 읽기 비용을 낮추어 디스크 성능을 높이거나 연산동작과 디스크 입출력을 서로 겹치게 하여 시스템의 전체적인 성능을 높인다. 기존의 프리페칭 기술로써는 오프라인 프리페칭, 히스토리기반 온라인 프리페칭, 응용프로그램의 힌트를 사용하는 프리페칭, 그리고 순차적 프리페칭이 있다. 현재 순차적 프리 페칭 외에는 큰 오버헤드와 비일반성으로 인하여 실제적인 시스템에 사용되고 있지 않고, 순차적 프리페칭이 널리 사용된다.
이러한 종래의 디스크를 위한 프리페칭은 순차적인 디스크 읽기에만 적용될 수 있고, 디스크 어레이의 특징을 고려하지 않은 단점이 있다. 디스크 어레이를 고려하지 않아서 다수개의 프로세스가 다수개의 동시 순차적 읽기를 수행하면 프리페칭된 하나의 디스크요구가 두 개 이상의 디스크들에 걸치면 디스크 독립성 손실 문제를 야기한다. 하나의 디스크 요구가 여러 개의 디스크 자원을 소모함으로써 디스크어레이의 다수개의 디스크로 인한 이득이 감소되는 문제점이 있다.
또한 단일 프로세스가 단일 순차적 읽기를 수행하면, 기존 프리페칭 알고리즘은 디스크어레이의 구조를 모르기 때문에 디스크 병렬성을 극대화하지 못하는 문제점이 있다. 이 경우에 프리페칭의 크기가 작으면 디스크들이 순차적으로 동작하여 디스크 병렬화에 극심한 손실을 야기하고, 프리페칭의 크기가 크면 다수개의 동시 순차 읽기에 대해서 디스크 독립성 손실 문제를 야기한다.
상기와 같은 문제점을 해결하기 위한 본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 비순차적 디스크 읽기에 대해 실용적인 프리페칭 알고리즘의 부재와 디스크어레이에 대한 고려가 없어서 발생하는 디스크 독립성 손실 문제 및 디스크 병렬성 손실 문제를 해결하는 새로운 프리페칭 알고리즘이 적용된 디스크 어레이 매스 프리페칭 방법을 제공하는 것을 목적으로 한다.
상기한 과제를 해결하기 위한 본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계, 스트립 프리페칭을 계속하지 않았다면 발생되는 디스크 비용과 스트립 프리페칭을 계속해왔다면 발생되는 디스크 비용을 현재의 캐쉬를 기반으로 디스크 시뮬레이션으로 계산하여 스트립 프리페칭이 현재 디스크 입출력에 이득인지를 판단하는 제 2 단계, 상기 판단결과 이득인 경우에 디스크어레이를 제어하는 구동기가 그 요청된 블록이 속한 스트립의 모든 블록들을 프리페칭하는 제 3 단계를 포함하여 이루어진다.
또한, 상기한 과제를 해결하기 위한 본 발명에 따른 디스크 어레이 매스 프리페칭 방법의 또 다른 특징은 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계, 블록 수준에서 단일 순차 읽기인지 판단하는 제 2 단계, 상기 2 단계에서 단일 순차 읽기인 경우 스트라이프 프리페칭 크기를 두배씩 증가 시키는 제3 단계, 디스크어레이를 제어하는 구동기가 상기 스트라이프 프리페칭 크기만큼 그 요청된 블록이 속한 스트라이프의 블록들을 프리페칭하는 제 4 단계를 포함하여 이루어진다.
상기와 같이 구성되는 본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 성능 향상을 보장하면서 순차적 읽기 뿐만 아니라 공간 지역성을 가지는 비순차적 읽기에 대한 디스크 어레이의 성능향상을 유발하고 디스크 독립성 손실문제를 해결하고 디스크의 병렬성을 극대화시켜 디스크 어레이를 사용하는 하드웨어 기반 RAID장치나 운영체제에 포함된 소프트웨어 기반 RAID의 읽기 성능을 혁신적으로 개선한다.
도 1은 4개의 디스크로 구성된 디스크 어레이에서 스트립 및 스트라이프의 구조의 일례가 도시된 도이다.
도 1 을 참조하면, 디스크 어레이는 네 개의 디스크(1~4)로 구성되고, 각 디스크는 데이터의 읽고 쓰는 단위인 블록(10)이 다수개 형성되어 있다.
디스크 어레이는 스트립(strip)과 스트라이프(stripe) 단위로 데이터가 디스크들에 분배되어 있다. 하나의 디스크에 속해 있고 블록 번호가 연속한 블록들의 집합을 스트립(20)이라고 하고, 디스크마다 동일 오프셋에 있는 스트립(20)들의 집합을 스트라이프(30)라고 한다.
본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 공간 지역성을 가지는 순차적 또는 비순차적 디스크 읽기 성능을 향상시키고 디스크 독립성 손실 문제를 해결하기 위한 조절 스트립 프리페칭 (Throttled Strip Prefetching: 이하 TSP라 한다)과 디스크 병렬성 손실 문제를 해결하는 매시브 스트라이프 프리페칭 (Massive Stripe Prefetching : 이하 MSP라 한다)로 구성되어 있다.
상기 TSP와 MSP는 서로 공존이 가능하며, 각각 독립적으로 사용이 가능하며, 특히 TSP와 MSP를 동시에 사용할 때에 성능 향상이 극대화된다.
TSP는 온라인 디스크 시뮬레이션을 이용하여 스트립 프리페칭(Strip Prefetching: 이하 SP라 한다)을 가동하거나 중단시키는 알고리즘이다.
SP란 호스트가 디스크로 어떤 블록을 요청하면 프리페처는 그 블록이 속한 스트립의 모든 블록들을 읽는 프리페칭 방식이다. 작업부하에 따라서 SP가 이득일 수도 있고 아닐 수도 있다.
따라서, TSP는 현재 캐쉬에 있는 데이터가 SP를 사용하였을 때에 이득이 있었는지 아니었는지를 디스크 시뮬레이션을 통하여 판단한다.
도 2 내지 도 4는 디스크 어레이가 논리적인 하나의 블록장치로 표현되었을때의 저장공간이 도시된 도이다.
도 2 내지 도 4를 참조하면 SP가 어떻게 공간지역성을 가지는 비순차적 읽기에 대해서 효과적인지를 알 수 있다. 블록(101)은 저장장치의 입출력 기본 단위이고 저장장치가 디스크 어레이라면 블록(101)들은 스트립(100)들로 구분지어진다.
도 2는 비순차적 읽기의 첫째 단계에서 블록 및 스트립이 도시된 도이며, 도 3은 비순차적 읽기의 둘째 단계에서 블록 및 스트립이 도시된 도이다. 도 2 및 도 3을 참조하면, 첫째 단계에서 블록들이 비순차적으로 요구되어졌고, 둘째 단계에서도 비순차적이었지만 하나의 블록은 SP에 의해서 프리페치된 블록으로 첫번째 스트립(110)에서 캐쉬히트가 발생하였다.
도 3은 비순차적 읽기의 셋째 단계에서 블록 및 스트립이 도시된 도이다. 도 3을 참조하면, 셋째 단계에서는 추가로 두개의 스트립(120,130)에 속한 두 블록이 더 캐쉬히트 되었다. 디스크는 요구되는 블록으로 접근하는 시간은 오래 걸리지만 전송속도는 매우 빠르므로, 일단 한번 접근하면 요구된 블록 주위의 여러 블록들을 더 읽는 것은 낮은 오버헤드를 갖는다. 그러므로 SP에 의해서 불필요하게 읽게 되는 오버헤드 보다 캐쉬히트로 절략되는 량이 더 클 수도 있다. 하지만 어떤 경우에 그렇지 않은 경우도 있다. 그래서 본 발명에 따른 TSP는 현재 캐쉬의 데이터를 기반으로, SP수행이 현재 이익일지 아닐지 판단한다.
TSP에 있어서, 이 판단을 위하여 중요한 변수는 Ca와 Cn이다. Ca가 Cn보다 작으면 TSP는 SP를 가동하고, 그렇지 않으면 SP를 중지한다.
참고적 개념으로 SP를 계속 수행하는 것을 ASP라고 하고 SP를 계속 수행하지 않는 것을 NSP라고 설정한다. 그러면 Ca는 ASP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간이다. Cn는 NSP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간이다.
TSP는 실시간으로 SP를 가동 또는 중단하므로 Cn과 Ca는 실제로 디스크에 소 모된 시간이 아니다. 그래서 이 Cn과 Ca을 알아내기 위해 디스크 시뮬레이션을 해야 한다. 본 발명의 일실시예는 상기와 같이 Cn과 Ca을 이용하여 SP수행이 이득일지 아닐지를 계산하나, 보다 계산을 간단하게 하기 위해 또 다른 실시예를 다음과 같이 제시한다.
먼저 Cn과 Ca의 복잡성을 줄이기 위해서
Figure 112007051261916-PAT00001
Figure 112007051261916-PAT00002
를 정의한다.
Figure 112007051261916-PAT00003
는 Cn에서 스트립으로의 첫 번째 디스크 접근 시간들을 제거한 것이고, 마찬가지로
Figure 112007051261916-PAT00004
는 Ca에서 스트립으로의 첫 번째 디스크 접근시간들을 제거한 것이다. 그러면
Figure 112007051261916-PAT00005
Figure 112007051261916-PAT00006
는 다음 수식으로 정의된다.
Figure 112007051261916-PAT00007
단, Ns는 스트립 캐쉬들의 개수이고, Si는 i번째 스트립 캐쉬이고,
Figure 112007051261916-PAT00008
는 Cn의 Si 할당 부분에서 Si로의 첫 번째 접근 시간을 뺀 값이다. 접근시간이란 디스크의 회전 지연 및 헤드의 찾기 지연 및 고정 지연시간 등이고 디스크의 전송시간을 포함하지 않는다. 첫 번째 디스크 접근시간을 제거한다는 것은, 캐쉬되지 않은 스트립으로의 첫 번째 접근에서 디스크 접근시간을 계산하지 않는 것을 의미하고, 이는 전체적인 계산량을 줄이기 위함이다. 따라서 첫 번째 접근 시간을 빼지 않고 계산할 수도 있다.
스트립 캐쉬는 NSP와 ASP의 디스크 비용을 시뮬레이션하기 위해서 블록마다 요구비트를 가진다. 요구비트는 호스트가 그 블록을 요구했을 때에만 1이 되고, 그렇지 않은 경우에 0이 된다. 또한 스트립 캐쉬는 변수
Figure 112007051261916-PAT00009
Figure 112007051261916-PAT00010
를 포함하고 있다.
호스트가 요구한 블록이 현재 캐쉬에 있는 어느 스트립 캐쉬에도 속하지 않은 경우에는 새로운 스트립 캐쉬 Si를 할당해야 한다. 그리고 요구된 Si의 블록에 대해서 Si의 해당 요구비트를 1로 설정한다. 그리고 Si에 대해서 다음과 같은 수식으로
Figure 112007051261916-PAT00011
,
Figure 112007051261916-PAT00012
,
Figure 112007051261916-PAT00013
,
Figure 112007051261916-PAT00014
변수들을 갱신한다.
Figure 112007051261916-PAT00015
Figure 112007051261916-PAT00016
은 Si에 속한 한 블록의 전송시간이다. 디스크는 안쪽 트랙과 바깥쪽 트랙의 전송속도가 다르므로 다음과 같이
Figure 112007051261916-PAT00017
를 모델링할 수 있다.
Figure 112007051261916-PAT00018
단,
Figure 112007051261916-PAT00019
는 한 블록에 대한 최대 디스크 전송 시간이고, 단,
Figure 112007051261916-PAT00020
는 한 블록에 대한 최소 디스크 전송 시간이다.
새로운 스트립 캐쉬를 할당할 때에 메모리가 부족하다면 어떤 스트립 캐쉬를 메모리에서 퇴출(Eviction)해야 한다. 이때에 퇴출 되는 스트립 캐쉬 Si에 대해서 다음과 같은 연산을 수행한다.
Figure 112007051261916-PAT00021
SP에 의해서 프리페칭 되었지만 호스트로부터 요구되지 않았던 블록을 호스트가 요구하면 해당 요구비트를 1로 설정하고 다음과 같은 수식으로 관련 변수들을 설정한다.
Figure 112007051261916-PAT00022
이 경우 스트립 캐쉬 Si로의 첫 번째 접근이 아니므로 디스크 비용에 전송시간뿐만 아니라 접근 지연 시간을 디스크 시뮬레이터로 계산해야 한다. 간단한 디스크 시뮬레이터는 프로세서에 부담을 주지 않는 장점이 있고 복잡한 디스크 시뮬레이터는 보다 정확한 값을 제공할 수 있다. 본 발명은 디스크 시뮬레이터에 관점을 갖고 있지 않으므로, 어떤 디스크 시뮬레이터를 사용하든 상관이 없다.
호스트가 요구한 블록이 스트립 캐쉬 Si에 존재하고 Si에 있는 그 블록의 요구 비트가 1이면
Figure 112007051261916-PAT00023
,
Figure 112007051261916-PAT00024
,
Figure 112007051261916-PAT00025
,
Figure 112007051261916-PAT00026
변수들은 변경되지 않는다.
호스트가 쓰기 요구를 하면 Si에 있는 그 블록의 요구 비트를 1로 설정하고,
Figure 112007051261916-PAT00027
,
Figure 112007051261916-PAT00028
,
Figure 112007051261916-PAT00029
,
Figure 112007051261916-PAT00030
변수들은 변경되지 않는다.
다음으로, 본 발명에 따른 디스크 어레이 매스 프리페칭 방법의 또 다른 실시예로 캐쉬 오염 문제를 고려한 프리페칭 방법을 설명한다.
SP는 캐쉬 오염의 문제를 가지고 있다. SP로 인하여 디스크 읽기 성능은 향상되어도 미래에 전혀 사용되지 않는 블록들을 읽음으로써 캐쉬의 사용 효율을 떨어뜨리고 캐쉬의 히트율을 감소시킨다.
그래서 최종적으로 TSP는 Ca와 Cn만을 비교하여 SP를 제어하는 것이 아니라. 캐쉬오염의 정도를 디스크 시뮬레이션으로 파악하여 Ca와 Cn비교에 변경을 가한다.
즉, TSP는
Figure 112007051261916-PAT00031
대신에
Figure 112007051261916-PAT00032
이 참일 때에 SP를 활성화시킨다.
Figure 112007051261916-PAT00033
는 다음과 같은 수식으로 정의 된다.
Figure 112007051261916-PAT00034
Ss와 Sb는 고정값으로서 각각 캐쉬가 보유할 수 있는 최대 스트립의 개수와 최대 블록의 수로 정의된다. Ns와 Nb
Figure 112007051261916-PAT00035
는 실시간으로 변경되는 변수이다. Ns는 현재 메모리가 보유하고 있는 스트립 캐쉬의 개수이고, Nb는 현재 캐쉬되어 있고 호 스트가 요구한 블록의 개수이다.
Figure 112007051261916-PAT00036
는 디스크 시뮬레이터로 구해지는 값으로서 현재 캐쉬가 캐쉬히트에 의해 절약된 시간단위의 디스크 비용이다.
Figure 112007051261916-PAT00037
는 다음과 같은 원리로 계산된다.
호스트가 요구한 블록이 캐쉬에 있고 그 블록의 요구비트가 1인 경우에 캐쉬히트로 간주된다. 이때에 그 블록에 대한 디스크 비용을 디스크 시뮬레이터로 계산한다. 그 디스크 비용을 Si의 변수
Figure 112007051261916-PAT00038
와 전역변수
Figure 112007051261916-PAT00039
에 더한다. 어떤 스트립 캐쉬 Si가 캐쉬에서 퇴출 될 때에
Figure 112007051261916-PAT00040
값을
Figure 112007051261916-PAT00041
에서 뺀다.
RAID(Redundant Arrays of Independent Disk)와 같은 저장장치는 호스트의 캐쉬 메모리의 RAID의 캐쉬 메모리가 물리적으로 분리되어 있고 전자가 후자보다 크다. 이때에 호스트와 RAID가 동일 캐쉬 치환 알고리즘을 적용한 경우에 캐쉬의 인클루젼 프라퍼티(Inclusion Property)가 성립하여 저장장치로 캐쉬된 메모리는 반드시 호스트의 캐쉬가 포함하기 때문에 저장장치에서 캐쉬히트가 발생하지 않는다. 그러면
Figure 112007051261916-PAT00042
는 항상 0이므로 연산량을 절감하기 위하여 캐쉬오염과 관련된 처리를 생략할 수 있다.
이상으로 조절 스트립 프리페칭(TSP)의 알고리즘을 설명하였다. TSP는 성능 향상을 보장하면서 순차적 읽기 뿐만 아니라 공간 지역성을 가지는 비순차적 읽기에 대한 디스크 어레이의 성능향상을 유발하고, 모든 디스크 요구가 하나의 디스크에 정렬되므로 디스크 독립성 손실 문제가 없다. 하지만 TSP는 단일 프로세서가 단일 순차적 읽기를 수행하면 디스크 병렬성 손실 문제를 가진다. 이 문제를 해결하 기 위해서 TSP와 함께 새로운 매시브 스트라이프 프리페칭(MSP)이라는 알고리즘이 사용되어야 한다.
매시브 스트라이프 프리페칭 방법(이하 MSP)은 블록 수준에서 단일 순차적 읽기를 감지해낸다.
여기서 단일 순차적 읽기란 단 하나의 프로세스 또는 쓰레드가 순차적 읽기를 수행하는 것을 의미하며, 단일 순차적 읽기가 발생할 때에, 프리페칭 크기가 스트라이프 크기보다 작아 모든 디스크를 동작시키지 못하기 때문에 디스크 어레이를 구성하는 디스크들의 병렬성의 손실을 야기할 수 있다.
단일 순차적 읽기가 감지되면 모든 프리페칭이 스트라이프에 정렬되고 프리페칭의 크기는 스트라이프의 정수배이다. 그리하여 최적의 디스크 병렬성을 보장한다.
여기서 프리페칭이 스트라이프에 정렬된다는 의미는 프리페칭에 의한 디스크 읽기 요구의 시작블록주소가 스트라이프를 구성하는 블록의 수로 나누어 나머지가 없고, 그 디스크 읽기 요구의 블록의 수가 스트라이프를 구성하는 블록의 수로 나누어 나머지가 없음을 의미한다.
여기서의 문제는 블록 수준에서 단일 순차적 읽기를 감지하는 것이다. 비록 하나의 파일에 대해서 순차적 읽기를 수행하더라도, 메타데이터와 데이터를 번갈아 읽어야 하므로, 블록 수준에서는 순차적이지 않다. MSP는 블록 수준에서 메타데이터와 데이터의 접근을 구분해내는 도5의 알고리즘을 포함한다.
도 5 는 본 발명에 따른 디스크 어레이 매스 프리페칭 방법 중 하나인 매스 스트라이프 프리페칭 방법이 도시된 순서도이다.
도 5를 참조하면, 본 발명에 따른 매스 스트라이프 프리페칭 방법에 적용되는 prev_pos, curr_pos, prev_prev_pos, seq_cnt, SPS 변수들이 사용된다. 또한, 미리 설정된 thresh_seq_cnt와 max_seq_cnt 상수도 사용된다. 상기 모든 변수들은 초기에 0으로 설정된다.
여기서, curr_pos는 현재 호스트가 요구한 블록의 스트라이프 번호를 말하며, prev_pos는 curr_pos의 바뀌기 전의 스트라이프 번호를 말한다.
다음으로, prev_prev_pos는 prev_pos의 바뀌기 전 스트라이프 번호를 말하며, 순차성 카운트(seq_cnt)는 순차적 읽기가 진행됨에 따라 0부터 시작하여 최대 카운트값(max_seq_cnt)까지 증가하는 변수이다. 반대로 순차성이 검출되지 않으면 감소한다. 변수 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 크면 스트라이프 프리페칭(stripe prefetching)이 수행된다.
또한, 상기 SPS는 스트라이프 프리페칭 크기를 말한다.
개념적으로는 seq_cnt가 주어진 알고리즘에 의해서 증가하거나 감소하는데 thresh_seq_cnt < seq_cnt를 만족하면 스트라이프 단위로 프리페칭을 하고 스트라이프 프리페칭 크기를 두배씩 증가시킨다. 보다 자세한 설명은 다음과 같다.
먼저, 호스트가 디스크어레이 제어기에 블록읽기를 요구한다(S200).
그러면, curr_pos 변수는 요구한 블록이 속한 스트라이프의 번호를 가지게 된다(S201).
다음으로, 현재 요구한 블록의 스트라이프 번호(curr_pos)와 그 이전에 요구 한 블록의 스트라이프 번호(prev_pos)가 같은지 비교하고(S202), 같으면 단일 순차성 검사를 종료한다(S210)
그렇지 않고, 상기 현재 요구한 블록의 스트라이프 번호(curr_pos)와 그 이전에 요구한 블록의 스트라이프 번호(prev_pos)가 다르면 ((prev_pos+1 = curr_pos) or (prev_prev_pos = curr_pos))가 참인지 검사한다. 즉, 현재 요구한 블록의 스트라이프 번호(curr_pos)가 그 바뀌기 전의 스트라이프 번호(prev_pos)+1과 같거나 바뀌기 전전의 스트라이프 번호(prev_prev_pos)와 같은지 검사한다(S203).
만약, 같다면 순차성 카운트(seq_cnt)를 1만큼 증가시키되 기 설정된 최대 카운트값(max_seq_cnt)을 넘기지 않는다(S204).
만약 거짓이면, 순차성 카운트(seq_cnt)가 0보다 크면 1만큼 감소시킨다(S209).
그리고 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 큰지 검사한다(S205).
여기서, 상기 소정의 기준값(thresh_seq_cnt)은 0보다 크고 최대 카운트값(max_seq_cnt)보다 작은 상수이다. 순차성 카운트(seq_cnt)가 상기 소정의 기준값(thresh_seq_cnt)보다 클 때에 순차성이 검출된 것으로 판단한다. 예를 들어 최대 카운트값(max_seq_cnt)는 8 로 설정될 수 있고, 소정의 기준값(thresh_seq_cnt)은 5로 설정될 수 있다.
순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 크다면 순차 성이 인정되어 스트라이프 프리페칭 크기(SPS)를 2배 증가시키되 기 설정된 스트라이프 프리페칭 크기(SPS)의 최대크기를 넘지 않는다(S206).
상기 스트라이프 프리페칭 크기를 증가시키는 이유는 단일 순차 읽기에서 프리페칭의 크기는 스트라이프 크기의 2배 이상일 때에 성능이 최대화 되는데, 만약 미래에 단일 순차 읽기를 더 이상 수행하지 않는 경우에 매우 큰 프리페칭 크기는 프리페칭의 낭비를 야기한다. 그러므로 처음 단일 순차 읽기가 검출되면 프리페칭의 크기를 소극적으로 1에서 시작하고, 계속해서 순차읽기가 진행됨에 따라서 프리페칭의 크기를 증가시키는 것이 효율적이다. 최대 스트라이프 프리페칭 크기는 2 또는 4 인 경우가 효율적이나 이에 한정되지 않는다.
그리고 현재 요구한 블록의 스트라이프 번호(curr_pos)에 해당하는 스트라이프에서 스트라이프 프리페칭 크기(SPS)에 해당하는 만큼의 스트라이프들을 프리페치한다(S207).
만약 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 적거나 같은 경우에는 스트라이프 프리페칭 크기(SPS)를 1개로 한다(S211).
그리고 prev_prev_pos는 prev_pos값으로 갱신되고, prev_pos는 curr_pos로 갱신(S208)된 후에 종료된다(S210).
이상과 같이 본 발명에 의한 디스크 어레이 매스 프리페칭 방법을 예시된 도면을 참조로 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않고, 기술사상이 보호되는 범위 이내에서 응용될 수 있다.
도 1은 4개의 디스크로 구성된 디스크 어레이에서 스트립 및 스트라이프의 구조의 일례가 도시된 도,
도 2는 비순차적 읽기의 첫째 단계에서 블록 및 스트립이 도시된 도,
도 3은 비순차적 읽기의 둘째 단계에서 블록 및 스트립이 도시된 도,
도 4는 비순차적 읽기의 둘째 단계에서 블록 및 스트립이 도시된 도,
도 5 는 본 발명에 따른 디스크 어레이 매스 프리페칭 방법 중 하나인 매스 스트라이프 프리페칭 방법이 도시된 순서도이다.
<도면의 주요 부분에 관한 부호의 설명>
1~4 : 디스크 10 : 블록
20 : 스트립 30 : 스트라이프
100 : 캐쉬된 스트립 110~130 : 캐쉬히트된 스트립

Claims (16)

  1. 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계;
    스트립 프리페칭을 계속하지 않았다면 발생되는 디스크 비용과 스트립 프리페칭을 계속해왔다면 발생되는 디스크 비용을 현재의 캐쉬를 기반으로 디스크 시뮬레이션으로 계산하여 스트립 프리페칭이 현재 디스크 입출력에 이득인지를 판단하는 제 2 단계;
    상기 판단결과 이득인 경우에 디스크어레이를 제어하는 구동기가 그 요청된 블록이 속한 스트립의 모든 블록들을 프리페칭하는 제 3 단계를 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  2. 청구항 1에 있어서,
    상기 제 2 단계는 스트립 프리페칭을 계속 수행하는 것을 ASP라 하고, 스트립 프리페칭을 계속 수행하지 않는 것을 NSP라고 할때 ASP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간인 Ca 가 NSP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간인 Cn보다 작은 경우에 스트립 프리페칭이 이득이라고 판단하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  3. 청구항 2에 있어서,
    상기 제 2 단계는 상기 Ca에서 첫번째 디스크 접근 시간을 제거한
    Figure 112007051261916-PAT00043
    와 Cn에서 스트립으로의 첫 번째 디스크 접근 시간을 제거한
    Figure 112007051261916-PAT00044
    Figure 112007051261916-PAT00045
    을 만족하는 경우에 스트립 프리페칭이 이득이라고 판단하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  4. 청구항 3에 있어서,
    상기
    Figure 112007051261916-PAT00046
    Figure 112007051261916-PAT00047
    은 다음과 같은 수식에 의해 계산되는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
    Figure 112007051261916-PAT00048
    (여기서, Ns는 스트립 캐쉬들의 개수, Si는 i 번째 스트립 캐쉬,
    Figure 112007051261916-PAT00049
    는 Cn의 Si 할당 부분에서 Si로의 첫 번째 접근 시간을 뺀 값,
    Figure 112007051261916-PAT00050
    는 Ca의 Si 할당 부분에서 Si로의 첫 번째 접근 시간을 뺀 값이며, 각 스트립 캐쉬는 블록마다 요구비트를 가진다.)
  5. 청구항 4에 있어서,
    상기 제 2 단계는 호스트가 요구한 블록이 현재 캐쉬에 있는 어느 스트립 캐쉬에도 속하지 않는 경우에는 새로운 스트립 캐쉬 Si를 할당하고, 요구된 블록의 요구비트를 1로 설정하고, Si에 대해 다음과 같은 수식으로 변수들을 갱신하는 과정을 더 수행하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
    Figure 112007051261916-PAT00051
    (여기서,
    Figure 112007051261916-PAT00052
    은 Si에 속한 한 블록의 전송시간)
  6. 청구항 4에 있어서,
    상기 제 2 단계는 만약 임의의 스트립 캐쉬 Si를 메모리에서 퇴출할 때에는 다음과 같은 연산 과정을 더 수행하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
    Figure 112007051261916-PAT00053
  7. 청구항 4에 있어서,
    상기 제 2 단계는 만약 스트립 프리페칭에 의해 프리페칭 되었지만 호스트로부터 요구되지 않았던 블록을 호스트가 요구하면 요구된 블록의 요구비트를 1로 설정하고 다음과 같은 수식으로 관련 변수들을 설정하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
    Figure 112007051261916-PAT00054
    (단, 접근지연시간은 그 요구된 블록을 디스크에서 읽기 위해서 소모되는 시간에서 전송시간만 제외된 시간이다.)
  8. 청구항 4에 있어서,
    상기 제 2 단계는 호스트가 요구한 블록이 스트립 캐쉬 Si에 존재하고 그 블록의 요구 비트가 1이면,
    Figure 112007051261916-PAT00055
    ,
    Figure 112007051261916-PAT00056
    ,
    Figure 112007051261916-PAT00057
    ,
    Figure 112007051261916-PAT00058
    들은 변경되지 않는 것을 특징으 로 하는 디스크 어레이 매스 프리페칭 방법.
  9. 청구항 2에 있어서,
    상기 제 2 단계는 스트립 프리페칭으로 인한 프리페칭 오염에 의한 성능 감소를 고려하여, 상기 Ca에서 첫번째 디스크 접근 시간을 제거한
    Figure 112007051261916-PAT00059
    와 Cn에서 스트립으로의 첫 번째 디스크 접근 시간을 제거한
    Figure 112007051261916-PAT00060
    Figure 112007051261916-PAT00061
    만족하는 경우에 스트립 프리페칭이 이득이라고 판단하고,
    Figure 112007051261916-PAT00062
    는 다음과 같은 수식으로 정의되는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
    Figure 112007051261916-PAT00063
    (단, Ss와 Sb는 고정값으로서 각각 캐쉬가 보유할 수 있는 최대 스트립의 개수와 최대 블록의 수, Ns는 현재 메모리가 보유하고 있는 스트립 캐쉬의 개수, Nb는 현재 캐쉬되어 있고 호스트가 요구한 블록의 개수,
    Figure 112007051261916-PAT00064
    는 디스크 시뮬레이터로 구해지는 값으로서 현재 캐쉬가 캐쉬히트로 인해 절약된 시간 단위의 디스크 비용이다.)
  10. 청구항 9에 있어서,
    상기
    Figure 112007051261916-PAT00065
    를 계산하는 경우,
    호스트가 요구한 블록이 캐쉬에 있고 그 블록의 요구비트가 1인 경우에 그 블록에 대한 디스크 비용을 디스크 시뮬레이터로 계산하여 그 디스크 비용을 Si의 변수
    Figure 112007051261916-PAT00066
    와 전역변수
    Figure 112007051261916-PAT00067
    에 더하고, 임의의 스트립 캐쉬 Si가 캐쉬에서 퇴출 될 때에
    Figure 112007051261916-PAT00068
    값을
    Figure 112007051261916-PAT00069
    에서 빼는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  11. 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계;
    블록 수준에서 단일 순차 읽기인지 판단하는 제 2 단계;
    상기 2 단계에서 단일 순차 읽기인 경우 스트라이프 프리페칭 크기를 두배씩 증가시키는 제3 단계;
    디스크어레이를 제어하는 구동기가 상기 스트라이프 프리페칭 크기만큼 그 요청된 블록이 속한 스트라이프의 블록들을 프리페칭하는 제 4 단계를 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  12. 청구항 11에 있어서,
    상기 제 2 단계는
    현재 요구한 블록의 스트라이프 번호(curr_pos)와 변경되기 전 스트라이프 번호(prev_pos)가 같은지 비교하는 제 1 과정;
    상기 제 1 과정의 비교결과 거짓이면, 현재 요구한 블록의 스트라이프 번호(curr_pos)가 변경되기 전 스트라이프 번호(prev_pos)+1 과 같거나 prev_pos의 변경되기 전 스트라이프 번호(prev_prev_pos)와 같은지 검사하는 제 2 과정;
    상기 제 2 과정의 비교결과가 참인 경우에는 최대 카운트값(max_seq_cnt)을 넘지 않는 범위내에서 순차성 카운트(seq_cnt)를 1만큼 증가시키고, 거짓인 경우에는 순차성 카운트(seq_cnt)가 0 보다 큰 경우에는 1만큼 감소시키는 제 3 과정;
    상기 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 큰 경우에는 단일 순차 읽기라고 판단하는 제 4 과정을 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  13. 청구항 12에 있어서,
    상기 제 1 과정의 비교 결과 참이면, 단일 순차 읽기가 아니라고 판단하는 제 5 과정을 더 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  14. 청구항 12에 있어서,
    상기 제 3 단계에서 상기 증가시킨 스트라이프 프리페칭 크기(SPS)는 기 설정된 최대 스트라이프 프리페칭 크기를 넘지 않는 것을 특징으로 하는 디스크 어레 이 매스 프리페칭 방법.
  15. 청구항 12에 있어서,
    상기 제 4 단계 이후에,
    상기 prev_pos의 변경되기 전 스트라이프 번호(prev_prev_pos)는 변경되기 전 스트라이프 번호(prev_pos)값으로 갱신되고, 상기 변경되기 전 스트라이프 번호(prev_pos)는 현재 요구한 블록의 스트라이프 번호(curr_pos)값으로 갱신되는 제 5 단계를 더 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
  16. 청구항 15에 있어서,
    상기 제 4 과정에서, 상기 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 작거나 같은 경우에는 상기 스트라이프 프리페칭 크기(SPS)를 1개로 하고 상기 제 5 단계를 수행하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
KR1020070070719A 2007-07-13 2007-07-13 디스크 어레이 매스 프리페칭 방법 KR100900489B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070070719A KR100900489B1 (ko) 2007-07-13 2007-07-13 디스크 어레이 매스 프리페칭 방법
US11/968,370 US7822920B2 (en) 2007-07-13 2008-01-02 Mass prefetching method for disk array

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070070719A KR100900489B1 (ko) 2007-07-13 2007-07-13 디스크 어레이 매스 프리페칭 방법

Publications (2)

Publication Number Publication Date
KR20090007084A true KR20090007084A (ko) 2009-01-16
KR100900489B1 KR100900489B1 (ko) 2009-06-03

Family

ID=40254103

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070070719A KR100900489B1 (ko) 2007-07-13 2007-07-13 디스크 어레이 매스 프리페칭 방법

Country Status (2)

Country Link
US (1) US7822920B2 (ko)
KR (1) KR100900489B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2732374A1 (en) * 2011-07-11 2014-05-21 Memory Technologies LLC Mobile memory cache read optimization

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141525B2 (en) * 2011-01-31 2015-09-22 International Business Machines Corporation Adaptive prestaging in a storage controller
US9395920B2 (en) 2011-11-17 2016-07-19 Mirosoft Technology Licensing, LLC Throttle disk I/O using disk drive simulation model
KR102074329B1 (ko) 2013-09-06 2020-02-06 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법
DE102016119620A1 (de) * 2016-10-14 2018-04-19 Fehling Instruments Gmbh & Co. Kg Lehre für die Rekonstruktion eines Segels einer Aortenklappe

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223276B1 (en) * 1998-03-31 2001-04-24 Intel Corporation Pipelined processing of short data streams using data prefetching
US6954752B2 (en) 2001-07-19 2005-10-11 International Business Machines Corporation Methods and apparatus for clustering and prefetching data objects
US6877070B2 (en) * 2002-07-23 2005-04-05 Hitachi Global Storage Technologies Netherlands, B.V. Method and apparatus for implementing command queue ordering with benefit determination of prefetch operations
US7058767B2 (en) * 2003-04-28 2006-06-06 International Business Machines Corporation Adaptive memory access speculation
US7206795B2 (en) 2003-12-22 2007-04-17 Jean-Pierre Bono Prefetching and multithreading for improved file read performance
JP4151977B2 (ja) * 2005-03-16 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 先読み装置、先読み方法、および先読みプログラム
US7529891B2 (en) * 2005-09-19 2009-05-05 Microsoft Corporation Balanced prefetching exploiting structured data
US7386675B2 (en) * 2005-10-21 2008-06-10 Isilon Systems, Inc. Systems and methods for using excitement values to predict future access to resources
US20070106849A1 (en) 2005-11-04 2007-05-10 Sun Microsystems, Inc. Method and system for adaptive intelligent prefetch

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2732374A1 (en) * 2011-07-11 2014-05-21 Memory Technologies LLC Mobile memory cache read optimization
CN103907095A (zh) * 2011-07-11 2014-07-02 内存技术有限责任公司 移动存储器高速缓存读取优化
EP2732374A4 (en) * 2011-07-11 2015-04-15 Memory Technologies Llc OPTIMIZING THE READING OF THE CACHE OF MOBILE MEMORY DEVICES
US9223707B2 (en) 2011-07-11 2015-12-29 Memory Technologies Llc Mobile memory cache read optimization

Also Published As

Publication number Publication date
US7822920B2 (en) 2010-10-26
KR100900489B1 (ko) 2009-06-03
US20090019260A1 (en) 2009-01-15

Similar Documents

Publication Publication Date Title
US9483404B2 (en) Write admittance policy for a memory cache
KR100263524B1 (ko) 알에이아이디 제어기 및 데이터 기록 방법
JP3697149B2 (ja) キャッシュ・メモリを管理する方法
US20170185512A1 (en) Specializing i/o access patterns for flash storage
EP0080875B1 (en) Data storage system for a host computer
TWI393004B (zh) 用於動態改變快取記憶體順序清單大小之系統以及方法
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
US20100318744A1 (en) Differential caching mechanism based on media i/o speed
US20080040553A1 (en) Method and system for grouping tracks for destaging on raid arrays
US20130111160A1 (en) Selective space reclamation of data storage memory employing heat and relocation metrics
US9996476B2 (en) Management of cache lists via dynamic sizing of the cache lists
JP6711121B2 (ja) 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム
KR100900489B1 (ko) 디스크 어레이 매스 프리페칭 방법
US6052822A (en) Fast destaging method using parity engine
JP2014115851A (ja) データ処理装置及びその制御方法
CN115708075A (zh) 用于在互连设备之间传输数据的系统、方法和装置
EP2988222B1 (en) Method and apparatus for efficiently destaging sequential i/o streams
KR101456370B1 (ko) 스토리지 관리 방법 및 장치
JP2001188658A (ja) ディスク制御システムおよびデータ再配置方法
US10949359B2 (en) Optimizing cache performance with probabilistic model
US20040078544A1 (en) Memory address remapping method
KR100981884B1 (ko) 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법
US11462266B1 (en) Mitigating write disturbance errors of phase-change memory module
US20150039832A1 (en) System and Method of Caching Hinted Data
TW201435579A (zh) 用於從作業系統安裝映像檔的快照啓動多個伺服器之系統與方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120508

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee