KR20090106829A - 컴퓨터 시스템에서의 순차적 프리페칭 방법 - Google Patents

컴퓨터 시스템에서의 순차적 프리페칭 방법 Download PDF

Info

Publication number
KR20090106829A
KR20090106829A KR1020080032201A KR20080032201A KR20090106829A KR 20090106829 A KR20090106829 A KR 20090106829A KR 1020080032201 A KR1020080032201 A KR 1020080032201A KR 20080032201 A KR20080032201 A KR 20080032201A KR 20090106829 A KR20090106829 A KR 20090106829A
Authority
KR
South Korea
Prior art keywords
prefetching
disk
strip
blocks
sequential
Prior art date
Application number
KR1020080032201A
Other languages
English (en)
Other versions
KR100974514B1 (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 KR1020080032201A priority Critical patent/KR100974514B1/ko
Publication of KR20090106829A publication Critical patent/KR20090106829A/ko
Application granted granted Critical
Publication of KR100974514B1 publication Critical patent/KR100974514B1/ko

Links

Images

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/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
    • 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
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 레이드와 같이 스트라이핑 기법으로 다수개의 디스크로 구성된 디스크어레이에서의 순차적 프리페칭 방법에 관한 것으로, 본 발명은 소정 프로세스에 따른 읽기 명령을 생성하는 제1 과정과, 상기 읽기 명령에 따라 파일 수준에서 프리페칭할 연속된 블록들의 시작과 프리페칭 크기를 결정하는 제2 과정과, 상기 연속된 블록들이 두개 이상의 스트립에 포함되는지 확인하는 제3 과정과, 상기 블록들이 두개 이상의 스트립에 포함되는 경우, 하나의 프리페칭 요구에 속한 블록들이 하나의 스트립에만 포함되도록 프리페칭 크기를 줄이는 제4 과정과, 상기 프리페칭할 연속된 블록들의 시작과 상기 줄어든 프리페칭 크기에 따라 디스크 명령을 생성하는 제5 과정을 포함함을 특징으로 한다. 상술한 본 발명은 스트라이핑 기법을 사용하는 디스크 저장장치에서 독립성 손실로 인한 성능 저하를 방지할 수 있는 효과가 있다.
저장장치 관리, 프리페칭, 디스크어레이

Description

컴퓨터 시스템에서의 순차적 프리페칭 방법{A SEQUENTIAL PREFETCHING METHOD IN COMPUTER SYSTEM}
본 발명은 컴퓨터 시스템에서의 프리페칭 방법에 관한 것으로, 특히 레이드(Redundant Array of Independent Disks : RAID)와 같이 스트라이핑 기법으로 다수개의 디스크로 구성된 디스크어레이에서의 순차적 프리페칭 방법에 관한 것이다.
프리페칭 기술은 프로세서(Processor)와 메인 메모리간의 지연 시간을 감소하기 위해 필요한 것으로, 1960년대를 거슬러 올라가 프로세서가 캐시(Cache) 라인 단위로 다수의 워드들을 미리 읽는 것으로 시작되었다. 그리고 현재 프로세서에서의 프리페칭 기술이 많이 개발되었으며, 이러한 프리페칭 기술은 디스크에서 메모리로 미리 읽는 디스크 프리페칭에도 다소 적용되었다. 프로세서에서의 프리페칭과 디스크 저장장치의 다른 특징으로 디스크만을 위한 프리페칭 기술이 많이 연구되었다. 디스크 프리페칭은 디스크의 읽기 비용을 낮추어 디스크 성능을 높이거나 연산동작과 디스크 입출력을 서로 겹치게 하여 시스템의 전체적인 성능을 높인다.
일반적으로 디스크 시스템에서 가장 널리 사용되는 프리페칭 기법은 순차적 프리페칭이다. 이러한 순차적 프리페칭 방법은 많은 디스크 읽기는 용량이 큰 파일 읽기나 순차적인 읽기가 큰 부분을 차지하고 있다는 것에 기반하고 있다. 하지만 이러한 순차적 프리페칭 방법은 단일 디스크를 위하여 설계되었고, 다수의 디스크를 사용하는 디스크 어레이에 특화되어 변화된 순차적 프리페칭 방법이 존재하지 않고 있다. 또한 종래의 기술들은 디스크 어레이의 프리페칭에 있어서 병렬성과 로드의 균형만을 중요시 할 뿐 디스크들의 독립성은 고려하지 않고 있었다.
예컨대, 종래의 순차적 프리페칭 방법에서는 파일 수준의 프리페칭시 물리적 디스크의 위치를 전혀 고려하지 않았다. 즉, 하나의 프리페칭으로 읽어야할 블록들의 위치가 두 개 이상의 스트립에 포함되는 경우, 하나의 디스크 명령으로 수행할 수 있는 경우를 두 개의 명령을 생성함으로써, 실질적인 로드 부담 및 처리 속도가 느려지는 문제점이 발생한다.
따라서 본 발명의 목적은 다수 개의 디스크를 사용하는 컴퓨터 저장장치에서 프리페칭시 독립성을 고려함으로써, 성능 저하를 방지할 수 있는 순차적 프리페칭 방법을 제안함에 있다.
상술한 바를 달성하기 위한 본 발명은 다수개의 디스크를 사용하는 컴퓨터 저장 장치에서의 순차적 프리페칭 방법에 있어서, 소정 프로세스에 따른 읽기 명령을 생성하는 제1 과정과, 상기 읽기 명령에 따라 파일 수준에서 프리페칭할 연속된 블록들의 시작과 프리페칭 크기를 결정하는 제2 과정과, 상기 연속된 블록들이 두개 이상의 스트립에 포함되는지 확인하는 제3 과정과, 상기 블록들이 두개 이상의 스트립에 포함되는 경우, 하나의 프리페칭 요구에 속한 블록들이 하나의 스트립에만 포함되도록 프리페칭 크기를 줄이는 제4 과정과, 상기 프리페칭할 연속된 블록들의 시작과 상기 줄어든 프리페칭 크기에 따라 디스크 명령을 생성하는 제5 과정을 포함함을 특징으로 한다.
상기 제4 과정은 상기 파일 수준의 프리페칭 데이터의 시작 블록 번호(S)와 끝 블록 번호(E)를 설정하는 제6 과정과, 변수 'P'에 'S+1'를 대입하는 제7 과정과, 상기 시작 블록 번호가 포함되어 있는 스트립 번호를 결정하는 제8 과정과, 상기 파일의 현재 블록이 저장된 스트립의 번호가 상기 스트립 번호와 동일하며, 상기 'P'가 상기 끝 블록 번호(E)이하 인지 확인하는 제9 과정과, 상기 제9 과정의 조건이 거짓이면, 상기 프리페칭할 블록의 끝을 'P-1'로 설정하고, 상기 설정된 프리페칭의 크기를 'P-S'로 결정하는 제10 과정을 포함함을 특징으로 한다.
여기서, 상기 제9 과정의 조건이 참이면, 상기 'P'를 '1'만큼 증가시키고, 상기 제8 과정을 반복하는 제10 과정을 더 포함함을 특징으로 한다.
상기 스트립 번호는'해당 데이터가 저장되어 있는 물리 블록 번호'를 '스트립 당 블록들의 수'로 나눈 값의 정수값으로 결정됨을 특징으로 한다.
본 발명은 스트라이핑 기법을 사용하는 디스크 저장장치의 다수의 동시 읽기 성능을 향상시키는 효과가 있다.
또한 본 발명은 어떠한 가정 없이 개발된 범용적 캐시 관리 방법으로, 별도의 하드웨어 변경없이 기존의 소형에서 대형 컴퓨터 또는 저장장치까지 간단히 적용할 수 있는 효과가 있다.
이하 본 발명의 바람직한 실시 예들의 상세한 설명이 첨부된 도면들을 참조하여 설명될 것이다. 도면들 중 동일한 구성들은 가능한 한 어느 곳에서든지 동일한 부호들을 나타내고 있음을 유의하여야 한다. 하기 설명에서 구체적인 특정사항들이 나타나고 있는데, 이는 본 발명의 보다 전반적인 이해를 돕기 위해 제공된 것이다. 그리고 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명은 레이드(Redundant Array of Independent Disks : RAID)와 같이 스트라이핑 기법으로 다수개의 디스크로 구성된 디스크어레이에서 독립성으로 인하 성능 저하를 방지하는 프리페칭 방법을 제안한다.
이에 우선 본 발명의 이해를 돕기 위해 일반적인 순차적 프리페칭 방법에 대해 설명한 후, 본 발명에 따른 순차적 프리페칭 방법 및 장치를 설명하기로 한다.
우선 설명에 앞서 용어를 설명하면 다음과 같다.
프리페칭은 디스크의 데이터를 읽는 어떤 프로그램이 디스크의 데이터를 요구하기전에 미리 디스크에서 캐시(Cache)라고 불려지는 시스템의 메모리로 저장하는 방법을 의미한다. 이는 컴퓨터 프로그램으로 구현되어 동작하게 된다.
이러한 프리페칭 기술은 어떤 프로그램이 임의의 파일을 순차적으로 데이터를 읽을 때에, 상기 프로그램이 블록 b를 요구하면 일반적인 순차 프리페칭은 블록 b에서 블록 b+p를 저장장치에서 읽어서 캐시로 저장한다. 그 프로그램이 접근하는 블록이 순차적이면, 매 프리페칭마다 프리페칭의 크기 p는 미리 설정된 최소값에서 미리 설정된 최대값까지 선형적 또는 지수적으로 증가한다.
또한 프리페칭 블록은 프리페칭으로 요구되는 물리적 블록 단위의 데이터를 의미한다.
그러면 다수의 디스크를 사용하는 디스크 어레이의 구조를 설명한다.
도 1은 다수의 디스크들을 구비하는 레이드(Redundant Array of Independent Disks : RAID) 구조의 일례를 나타낸 도면이다. 상기 레이드는 하나의 가상 디스크로서 다수의 디스크들로 데이터를 분할, 저장하는 구조를 갖는다.
도 1을 참조하면, 상기 레이드는 4 개의 디스크들(1,2,3,4)로 구성되는 일례이다. 상기 레이드에서의 스트라이프(Stripe)(30)는 디스크들(1,2,3,4)의 스트립들(Strip)(20)로 구성되어 있고, 스트립(20)은 디스크 내에서 연속한 블록(10)들로 구성되어 있다.
일반적인 순차 프리페칭이 생성하는 하나의 읽기 요구는 여러 개의 연속한 블록들을 포함한다. 그런데, 순차 프리페칭이 적용되는 저장장치가 스트라이핑 기법을 사용하는 디스크 어레이라면, 하나의 읽기 요구에 속한 다수의 블록들이 하나의 스트립에 속할 수도 있고 두 개 또는 그 이상의 스트립에 걸쳐 있거나 흩어져 있을 수 있다. 두 개 이상의 스트립에 걸치는 읽기 요구는 한 개의 스트립에 대응되는 읽기 요구에 비해 두 개의 디스크 명령을 생성하게 되므로 성능이 급격하게 저하되게 되는데, 이러한 성능 저하 문제를 이하에서는 독립성 손실이라고 하겠다. 독립성 손실은 특히 동시에 여러 읽기 요구들이 입력될 때에 많이 발생한다.
도 2는 일반적인 순차적 프리페칭 방법의 일례를 나타낸 도면으로, 독립성 손실을 보다 쉽게 설명하였다.
도 2를 참조하면, 세 개의 독립적인 프로세스(40,41,42)가 있고 각 프로세스는 각각 독립적으로 네 개의 연속한 블록들에 대한 읽기를 수행하고 있다는 가정을 한다. 예컨대, 첫 번째 프로세스(40)는 네 개의 연속한 블록들에 대한 읽기 명령들(50,51,52,53)을 발생시킨다. 순차 프리페칭에 의해서 상기 블록들에 대한 읽기가 프리페쳐(55)에 의해 하나의 디스크 프리페칭 요구(60)로 대체될 수 있다. 여기서 상기 네 개의 읽기 명령들(50,51,52,53)에 속한 네 블록들이 두 개의 스트립에 속해있다면, 상기 디스크 프리페칭 읽기 요구(60)는 두 개의 디스크들(80, 81)에 있는 블록들에 대해 디스크 명령들(70A, 70B)이 생성된다. 왜냐하면 두 개의 연속한 스트립은 반드시 두 개의 디스크로 나누어지기 때문이다.
하나의 디스크 프리페칭 요구가 두 개의 디스크 명령들로 생성되는 예를 도 1에 나타난 일실시예를 이용하여 설명하면, 하나의 디스크 프리페칭 요구(60)가 도1의 네 개의 연속한 블록6, 블록7, 블록8, 블록9를 읽는 것이라면, 블록6과 블록7은 디스크1에 속해있고 블록8과 블록9는 디스크2에 속해있다. 그러므로 그 디스크 프리페칭 요구(60)는 블록6에서 블록7까지 읽는 디스크 명령(70A)과 블록8에서 블록9까지 읽는 디스크 명령(70B)로 생성한다.
상기 디스크 프리페칭 요구A(60)에 대해 디스크들(80, 81)로 디스크 명령을 전달하기 위해서, 디스크 어레이 관리자(Disk Array Administrator : DAA)(90)는 상기 디스크 프리페칭 요구A(60)를 상기 디스크들(80, 81)을 위한 두 개의 디스크 명령들(Disk Command : DC)(70A, 70B)로 나눈다. 즉 첫 번째 프로세스(40)가 발생시킨 하나의 프리페칭 읽기 요구(60)가 두 디스크들(80, 81)에 걸쳐있는 블록들에 관계하므로, 결국 두 디스크들(80,81)을 가동시킨다. 다른 두 프로세스들(41,42)도 첫 번째 프로세스(40)와 동시에 각각 두 번째와 세 번째 읽기 요구들(61,62)을 발생시키고, 두 번째 프로세스(41)의 읽기 요구(61)가 두 개의 디스크들(81,82)로 나누어져야 하면 또 다른 두 개의 디스크 명령들(71A, 71B)을 발생시키고, 세 번째 디스크 요구(62)도 마찬가지로 또 다른 두 개의 디스크 명령들(72A,72B)을 발생시키면, 결국 세 개의 데이터 읽기 요구들(60,61,62)은 여섯 개의 디스크 명령 들(70A, 70B, 71A, 71B, 72A, 72B)을 생성한다.
이러한 경우에 각 디스크는 각각 두 개의 명령들을 처리해야한다. 그런데 만약 각 디스크 프리페칭 읽기 요구(60,61,62)가 한 개의 스트립에만 국한된다면 각 읽기 요구는 각각 하나의 디스크 명령을 발생시킬 것이다. 이 경우 세 개의 디스크명령들이 생성되는데, 독립성 손실을 발생하는 도 2의 예에서는 여섯 개의 디스크 명령들이 생성된 것에 비하면 현격이 적은 량의 디스크 명령들이 발생되어 성능이 더 개선된다. 반면 하나의 읽기 요구에 의해서 읽어야할 연속한 블록들이 두 개 이상의 스트립에 걸쳐지면 많은 디스크 명령들을 생성시키게 되므로, 독립성 손실에 따른 디스크 입출력 성능이 저하됨을 알 수 있다.
파일 수준의 순차적인 블록 접근에 기반을 둔 기존의 순차 프리페칭 방법에서는 디스크 요구가 다수의 디스크들에 걸쳐지게 되어서, 다수의 프로세스가 발생한 동시 읽기들에 대해서 독립성 손실을 야기한다.
그러면 프리페칭 블록의 물리적 위치를 고려하지 않은 파일 수준의 순차적 프리페칭시에 대해 다음의 도 3을 이용하여 설명하기로 한다.
도 3은 디스크 어레이 구조에서 일반적인 파일 수준의 순차적 프리페칭 동작의 일례를 나타낸 도면이다.
상술한 바와 같이 파일이 스트립에 정렬되지 않고 조각나지 않아도, 일반적인 파일 수준의 순차 프리페칭은 독립성 손실을 가진다. 도 3에 나타난 파일 수준의 순차 프리페칭의 일실시예에서 임의의 파일은 조각나지 않았으며, 20개의 연속된 블록으로 구성되어 있다. 그리고 상기 파일은 다섯 개의 스트립(스트립4 ~ 스트 립8)에 완벽하게 정렬되어 있고, 물리 블록들(B16~B35)에 순차적으로 저장되어 있다. 이러한 구성에서 상기 파일의 첫 번째 블록(B16)부터 마지막 블록(B35)까지 순차적으로 읽는 기존의 순차 프리페칭 동작의 일례를 나타내고 있다.
도 3에 사용된 디스크 어레이의 구조는 도 1의 구조와 동일하다. 일반적인 순차 프리페칭에서, 프리페칭의 크기는 어떤 최소값에서 어떤 최대값까지 선형적 또는 지수적으로 증가시키는데, 도 3에서는 프리페칭의 크기가 20(=1)~ 22(=4)까지 지수적으로 증가한다.
도 3을 참조하여 순차 프리페칭의 동작을 설명하면, 우선 프리페칭의 크기가 지수적으로 증가하므로 첫 번째 프리페칭의 크기는 20=1이다. 따라서 파일의 첫 번째 블록인 B16이 디스크 프리페칭으로 요구되고, 다음으로 21=2 이므로 B17과 B18이 두 번째 디스크 프리페칭으로 요구된다. 그리고 세 번째 프리페칭의 크기는 22=4 이므로, 네 개의 프리페칭 블록들(B19 ~ B22)이 포함되도록 디스크 프리페칭으로 요구된다. 그러나 상기 네 개의 프리페칭 블록들(B19 ~ B22)은 두 스트립들(스트립4와 스트립5)에 걸쳐있어서, 상기 세 번째 프리페칭은 디스크0(1)과 디스크1(2)을 위한 디스크 명령들로 분리되어 생성되므로 독립성 손실을 발생시킨다. 그 이후의 프리페칭 블록들, 즉 B23~B26를 위한 프리페칭과 B27~B30을 위한 프리페칭과 B31~B34에 해당하는 프리페칭도 스트립에 정렬되어 있지 않다. 따라서 이러한 프리페칭시 하나의 프리페칭 요구시 두 개의 디스크 명령들이 발생되므로, 성능이 저하 되게 된다.
본 발명은 기존 순차 프리페칭의 독립성 손실을 해결하는 스트립-정렬 순차프리페칭이다. 이것은 각 프리페칭이 하나의 스트립에만 속하도록 하는, 순차 프리페칭의 추가적인 기능을 제공한다. 이하 본 발명에 따른 순차 프리페칭 방법을 스트립-정렬 순차 프리페칭이라 칭한다.
도 4는 본 발명의 따른 스트립-정렬 순차 프리페칭 방법의 일례를 나타낸 도면으로, 도 3과 동일한 상태에서 적용한 일례이다.
도 4를 참조하면, 우선 첫 번째 프리페칭의 크기는 20=1이므로 파일의 첫 번째 블록인 B16이 디스크 프리페칭으로 요구(도 2와 통일시킴)되고, 다음으로 21=2 이므로 B17과 B18이 두 번째 디스크 프리페칭으로 요구된다. 그리고 세 번째 프리페칭의 크기는 22=4 이므로, 네 개의 프리페칭 블록들(B19 ~ B22)이 포함되도록 디스크 프리페칭으로 요구된다. 그러나 상기 네 개의 프리페칭 블록들(B19 ~ B22)은 두 스트립들(스트립4와 스트립5)에 걸쳐있어서, 상기 세 번째 프리페칭은 디스크0(1)과 디스크1(2)을 위한 디스크 명령들로 분리되어 생성되므로 독립성 손실을 발생시킨다.
이 경우, 본 발명에서는 물리 블록의 위치를 고려하여 디스크 프리페칭 요구에 속한 모든 블록들이 하나의 스트립에 포함되도록 하는 조건을 만족시키도록 프리페칭 크기를 줄인다. 이 조건을 만족하면서 크기가 줄어든 프리페칭 크기 중에서 가장 큰 값이 최종적인 프리페칭의 크기가 된다. 따라서 세 번째 디스크 프리페칭 요구를 수신하면 프리페칭 블록들이 그것의 시작 블록(B19)이 속한 스트립(4)에 속하도록 하는 조건을 만족시키기 위해서 프리페칭의 크기를 줄여야 한다. 이 경우에 이 조건을 만족시키는 줄어든 최대 프리페칭의 크기는 1이 된다. 그래서 한 개의 블록(B19)으로 줄어든 디스크 명령이 생성되게 된다. 왜냐하면 물리 블록 B20 이 속한 스트립(스트립5)은 블록 B19가 속한 스트립(스트립4)과 다르기 때문에 두 개의 디스크 명령을 방지하기 위함이다.
세 번째 프리페칭 이후에는 프리페칭 블록의 크기를 22=4 로 설정함으로서, 네 번째 디스크 프리페칭 요구부터는 스트립에 정렬됨으로써, 두 개의 디스크 명령을 생성할 필요가 없게 된다.
즉, 프리페칭 파일을 순차적으로 읽기 위해서 도 3에서 보인 기존의 순차 프리페칭은 11개의 디스크 요구를 필요로 하는 반면에, 도 4에서 보인 스트립-정렬 순차 프리페칭은 7개의 디스크 요구를 필요하게 됨을 알 수 있다. 따라서 본 발명의 스트립-정렬 순차 프리페칭은 불필요한 디스크 명령을 생성하지 않으므로, 종래의 순차 프리페칭보다 성능이 향상됨을 알 수 있다.
상술한 바와 같이 본 발명의 스트립-정렬 순차 프리페칭 방법은 디스크 프리페칭 요구가 하나의 스트립에만 속하도록 프리페칭 크기를 조정하게 되는 것으로, 순차 프리페칭에서의 독립성 손실의 문제를 밝히고 해결하려는 최초의 방법이다. 그러면 상기 프리페쳐(55)에서 프리페칭할 블록의 시작과 끝을 결정하는 과정을 설명하기로 한다.
도 5는 본 발명의 바람직한 실시 예에 따른 스트립-정렬 순차 프리페칭 과정을 나타낸 순서도로서, 프리페쳐(55)에서의 동작을 나타내었다.
도 5를 참조하면, 프리페쳐(55)는 임의의 파일에 대해 디스크 프리페칭 요구가 입력되면 201 단계에서와 같이 상기 파일의 프리페칭할 파일수준의 블록들의 시작블록과 끝블록을 결정하고, 상기 시작블록 번호는 변수 'S'에, 상기 끝블록 번호는 변수 'E'에 대입한다. 그러면 처음 프리페칭의 크기는 'E-S+1'로 설정된다. 이 후 203 단계에서 임의의 변수 'P'에 'S+1'을 대입한다.
그런 후 상기 파일의 S번째 블록이 저장되어 있는 스트립의 번호를 변수 'stripstart'에 대입한다. 상기 스트립의 번호는 '해당 데이터가 저장되어 있는 물리 블록 번호'를 '스트립 당 블록들의 수'로 나눈 값중 정수값만을 취함으로써 결정될 수 있다. 하지만 디스크 어레이의 데이터의 배치 방식에 따라서 스트립 번호를 계산하는 방법은 달라질 수 있다.
그런 후, 207 단계에서와 같이 상기 파일의 P번째 블록이 저장된 스트립의 번호가 변수 'stripstart'와 같고 'P'가 'E'이하 인지 검사하는 과정을 수행한다.
상기 207 단계에서의 조건이 맞으면, 209 단계에서와 같이 'P'를 1만큼 증가시키고, 상기 207 단계를 수행한다. 반면, 상기 207 단계에서의 조건이 맞지 않으면 211 단계로 진행하여 프리페칭할 파일 수준의 블록들의 끝을 'P-1'로 설정하고, 상기 설정된 프리페칭의 크기를 'P-S'로 설정한다. 이러한 과정을 수행함으로써, 하나의 디스크 프리페칭 요구에 대해 하나의 스트립에만 속하도록 프리페칭의 크기를 결정하게 된다.
여기서, 도 4에서 세 번째 디스크 프리페칭 요구를 일례로 본 발명의 프리페칭 과정을 설명하면, 우선 201 단계에서 프리페칭할 파일 수준의 블록들의 시작 'S'와 끝 'E'에는 파일의 블록 번호인 '3'과 '6'이 각각 대입된다. 그리고 203 단계에서 'P'는 'S+1' 즉 '4'가 대입된다. 205 단계에서 '그 파일의 3(=S)번째 블록이 저장되어 있는 물리 블록 번호'는 '19'이고, '스트립 당 블록들의 수'는 '4'이므로, '해당 데이터가 저장되어 있는 물리 블록 번호'를 '스트립 당 블록들의 수'나눈 값의 정수는 '4'가 되므로, 상기 'stripstart'에는 '4'가 대입된다.
이후, 207 단계에서 'stripstart'는 '4'지만 P(=4)번째 블록이 저장된 스트립의 번호는 '5'로 동일하지 않으므로, 조건식이 거짓이 된다. 따라서 211 단계에서와 같이 프리페칭할 파일 수준의 블록들의 끝을 'P-1' 즉 '3'으로 결정된다. 따라서 S(=3)에서 P-1(=3)째 블록들이 최종 프리페칭의 대상이 되도록 조정된다.
그 다음 이어지는 디스크 프리페칭에 있어서, 201 단계에서 파일 수준의 블록들의 시작 'S'와 끝 'E'에는 파일의 블록 번호인 '4'와 '7'이 각각 대입된다. 그리고 211단계에서 'P'는 '8'되어 프리페칭할 파일 수준의 블록들의 끝이 7이 된다. 따라서 4(=S)에서 7(=P-1)까지 프리페칭할 파일 수준의 블록들이 된다.
이러면, 이후 다섯 번째 디스크 프리페칭 요구부터도 요구된 블록의 수가 하나의 스트립에 속하도록 디스크 명령을 생성하게 됨으로써, 프리페칭시 부하를 줄일 수 있게 된다.
한편 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이 다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐 아니라 이 특허청구의 범위와 균등한 것들에 의해서 정해져야 한다.
도 1은 다수의 디스크들을 구비하는 레이드 구조의 일례를 나타낸 도면
도 2는 일반적인 순차적 프리페칭 방법의 일례를 나타낸 도면
도 3은 디스크 어레이 구조에서 일반적인 파일 수준의 순차적 프리페칭 동작의 일례를 나타낸 도면
도 4는 본 발명의 따른 스트립-정렬 순차 프리페칭 방법의 일례를 나타낸 도면
도 5는 본 발명의 바람직한 실시 예에 따른 스트립-정렬 순차 프리페칭 과정을 나타낸 순서도

Claims (4)

  1. 다수개의 디스크를 사용하는 컴퓨터 저장 장치에서의 순차적 프리페칭 방법에 있어서,
    소정 프로세스에 따른 읽기 명령을 생성하는 제1 과정과,
    상기 읽기 명령에 따라 파일 수준에서 프리페칭할 연속된 블록들의 시작과 프리페칭 크기를 결정하는 제2 과정과,
    상기 연속된 블록들이 두개 이상의 스트립에 포함되는지 확인하는 제3 과정과,
    상기 블록들이 두개 이상의 스트립에 포함되는 경우, 하나의 프리페칭 요구에 속한 블록들이 하나의 스트립에만 포함되도록 프리페칭 크기를 줄이는 제4 과정과,
    상기 프리페칭할 연속된 블록들의 시작과 상기 줄어든 프리페칭 크기에 따라 디스크 명령을 생성하는 제5 과정을 포함함을 특징으로 하는 순차적 프리페칭 방법.
  2. 제1 항에 있어서, 상기 제4 과정은,
    상기 파일 수준의 프리페칭 데이터의 시작 블록 번호(S)와 끝 블록 번호(E)를 설정하는 제6 과정과,
    변수 'P'에 'S+1'를 대입하는 제7 과정과,
    상기 시작 블록 번호가 포함되어 있는 스트립 번호를 결정하는 제8 과정과,
    상기 파일의 현재 블록이 저장된 스트립의 번호가 상기 스트립 번호와 동일하며, 상기 'P'가 상기 끝 블록 번호(E)이하 인지 확인하는 제9 과정과,
    상기 제9 과정의 조건이 거짓이면, 상기 프리페칭할 블록의 끝을 'P-1'로 설정하고, 상기 설정된 프리페칭의 크기를 'P-S'로 결정하는 제10 과정을 포함함을 특징으로 하는 순차적 프리페칭 방법.
  3. 제2 항에 있어서,
    상기 제9 과정의 조건이 참이면, 상기 'P'를 '1'만큼 증가시키고, 상기 제8 과정을 반복하는 제10 과정을 더 포함함을 특징으로 하는 순차적 프리페칭 방법.
  4. 제3 항에 있어서, 상기 스트립 번호는,
    '해당 데이터가 저장되어 있는 물리 블록 번호'를 '스트립 당 블록들의 수'로 나눈 값의 정수값으로 결정됨을 특징으로 하는 순차적 프리페칭 방법.
KR1020080032201A 2008-04-07 2008-04-07 컴퓨터 시스템에서의 순차적 프리페칭 방법 KR100974514B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080032201A KR100974514B1 (ko) 2008-04-07 2008-04-07 컴퓨터 시스템에서의 순차적 프리페칭 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080032201A KR100974514B1 (ko) 2008-04-07 2008-04-07 컴퓨터 시스템에서의 순차적 프리페칭 방법

Publications (2)

Publication Number Publication Date
KR20090106829A true KR20090106829A (ko) 2009-10-12
KR100974514B1 KR100974514B1 (ko) 2010-08-10

Family

ID=41536705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080032201A KR100974514B1 (ko) 2008-04-07 2008-04-07 컴퓨터 시스템에서의 순차적 프리페칭 방법

Country Status (1)

Country Link
KR (1) KR100974514B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101356351B1 (ko) 2011-12-08 2014-01-28 중원대학교 산학협력단 비동기식 디스크 어레이의 선반입 방법
KR101978256B1 (ko) 2012-09-27 2019-05-14 삼성전자주식회사 모바일 기기의 데이터 독출 방법 및 이를 이용하는 모바일 기기

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933603A (en) 1995-10-27 1999-08-03 Emc Corporation Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location
KR100502106B1 (ko) * 2002-10-17 2005-07-20 한국전자통신연구원 스트라이핑 기법을 이용한 레이드 시스템에서의 데이터재구성 방법
KR100753831B1 (ko) * 2005-12-08 2007-08-31 한국전자통신연구원 객체 기반 스토리지 시스템에서 고속의 객체 입출력 처리장치 및 방법

Also Published As

Publication number Publication date
KR100974514B1 (ko) 2010-08-10

Similar Documents

Publication Publication Date Title
US9477607B2 (en) Adaptive record caching for solid state disks
US6381677B1 (en) Method and system for staging data into cache
US9330008B2 (en) Information processing device for detecting sequential accesses and prefetching
US20080229027A1 (en) Prefetch control device, storage device system, and prefetch control method
US9092141B2 (en) Method and apparatus to manage data location
US10417137B2 (en) Flushing pages from solid-state storage device
US11593272B2 (en) Method, apparatus and computer program product for managing data access
US9996476B2 (en) Management of cache lists via dynamic sizing of the cache lists
US8407423B2 (en) Automatic determination of read-ahead amount
US9658888B2 (en) Thresholding task control blocks for staging and destaging
US20130145095A1 (en) Melthod and system for integrating the functions of a cache system with a storage tiering system
US9361241B2 (en) Grouping tracks for destaging
US20120198148A1 (en) Adaptive prestaging in a storage controller
US20200152253A1 (en) Storing method and apparatus of data
US7822920B2 (en) Mass prefetching method for disk array
KR100974514B1 (ko) 컴퓨터 시스템에서의 순차적 프리페칭 방법
US9311247B1 (en) Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution
JP6919277B2 (ja) ストレージシステム、ストレージ管理装置、ストレージ管理方法、及びプログラム
KR101456373B1 (ko) 캐시 장치를 관리하는 장치 및 방법
US8533392B2 (en) Cache hit management
WO2022248051A1 (en) Smart caching of prefetchable data

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: 20130730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140724

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee