KR20140061018A - 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체 - Google Patents

플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체 Download PDF

Info

Publication number
KR20140061018A
KR20140061018A KR1020120128102A KR20120128102A KR20140061018A KR 20140061018 A KR20140061018 A KR 20140061018A KR 1020120128102 A KR1020120128102 A KR 1020120128102A KR 20120128102 A KR20120128102 A KR 20120128102A KR 20140061018 A KR20140061018 A KR 20140061018A
Authority
KR
South Korea
Prior art keywords
request
dependency
requests
commands
request commands
Prior art date
Application number
KR1020120128102A
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 KR1020120128102A priority Critical patent/KR20140061018A/ko
Publication of KR20140061018A publication Critical patent/KR20140061018A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode

Abstract

플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체가 개시된다. 본 발명의 일측면에 따른 커맨드 큐잉을 지원하는 플래시 기반의 저장장치를 위한 프리페칭 방법은, 프리페칭의 대상이 되는 요청 명령들을 분석하여 다른 요청 명령에 의존성이 있는 의존요청을 체크하는 단계; 요청 명령들의 순서를 기반으로, 의존요청이 의존하는 피의존요청과 의존요청 사이인 의존성구간에 의존요청보다 순서가 늦는 하나 이상의 후발요청을 이동시켜 요청 명령들의 순서를 재배치하는 단계; 및 저장장치의 명령 큐에 순서가 재배치된 요청 명령들을 제공하는 단계를 포함한다. 본 발명에 따르면, 명령 큐잉이 지원되는 플래시 기반의 저장장치에서, 의존성 있는 요청들 사이에 이 요청들과는 의존성이 없는 요청을 이동시켜 명령 큐에 동시에 입력되는 요청 수를 늘리는 프리페칭 방식을 제안함으로써, 다수의 큐잉된 명령들이 플래시 칩들을 병렬적으로 사용하여 처리율을 높일 수 있다.

Description

플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체{Prefetching method for flash memory and recording-medium recorded program thereof}
본 발명은 프리페칭에 관한 것으로서, 좀 더 상세하게는 커맨드 큐잉(command queuing)을 지원하는 플래시 기반의 저장장치에서 블록을 빠르게 프리페칭하기 위한 방법 및 그 방법이 기록된 기록매체를 제공하기 위한 것이다.
저장장치로서 헤드(head)를 접근시켜서 데이터를 읽어내는 방식의 하드디스크에 비해, 발열이 적고 소음은 작으며 속도가 빠른 플래시 기반의 저장장치에 대한 사용이 증가하고 있다.
이러한 플래시 기반의 저장장치(이하 플래시 메모리라 칭함)는 다수의 메모리 칩으로 구성되어 있다. 즉, 비트정보를 저장하는 셀이라 부르는 플로팅 게이트 트랜지스터(floating gate transistors)가 칩으로서 배열되며, 이러한 칩들에 정보가 저장된다.
플래시 메모리는 접근시간이 거의 일정하기 때문에 하드디스크와 같이 헤드의 움직임을 최적화시킬 필요가 없으며, 다만 처리 속도를 높이기 위해 다수의 칩을 동시에 활성화시키는 것이 중요하다. 이를 위해 명령 큐(command queuing)을 이용하여 칩의 병렬적 처리를 수행한다. 즉, 하나의 명령(즉, 데이터 요청)에 대한 처리를 완료하고 다음 명령을 처리하는 방식이 아닌, 명령 큐에 다수의 데이터 요청 명령을 비동기적으로 입력하여 다수의 칩에 분산되어 있는 다수의 요청들의 데이터를 동시에 처리되도록 유도하는 것이다.
일반적으로 데스크톱이나 노트북에 사용되는 SSD(solid state disk)는 8~20개의 플래시 칩으로 구성되어 있고 SATA2 호환 인터페이스를 통한 명령 큐잉(command queuing)을 지원한다. 단일 칩으로 구성된 경우에도 내부적으로 다이(Die), 플레인(Plane) 수준에서 병렬적인 처리를 지원한다. 또, 스마트폰이나 스마트패드에 많이 사용되는 모바일 메모리 패키지(eMMC) 인터페이스의 차세대 방식인 범용 플래시 메모리(UFS, Universal Flash Storage)에서는 공식적으로 명령 큐잉을 지원한다.
SSD의 처리율은 SSD를 구성하고 있는 플래시 칩의 병렬적 사용 정도에 의해 결정된다. 플래시 칩의 내부병렬성을 높이기 위해서는 큰 요청 명령(request command)을 통하여 플래시 칩의 병렬적 사용을 유도하거나, 명령 큐잉을 이용하여 작은 요청 명령 여러 개를 동시에 처리하면 여러 플래시 칩 그리고 칩 내부의 병렬성을 유도할 수 있다.
하지만, 요청 명령 간에는 서로 의존성이 있는 것들이 존재하는데, 쉽게 말해 요청A에 대한 처리가 완료되어야만 해당 데이터를 참조하여 요청B를 처리요청할 수 있는 경우가 존재하게 되는데, 이를 요청B는 요청A에 의존성이 존재한다고 표현한다.
프리페칭은 디스크 블록을 응용프로그램이 요청하기 전에 메인메모리에 존재하는 디스크캐시(disk cache)에 미리 읽어 응용프로그램이 블록을 요청하였을 때 디스크캐시에서 해당 데이터를 복사해 줌으로써 디스크 처리 시간을 감추는 기법이다. 프리페칭은 사전에 블록의 접근 상관관계 분석을 통하여 앞으로 접근될 블록을 이미 알고 있는 경우가 많다. 예를 들어, 프로그램 기동(start up) 시 접근되는 블록들(기동시퀀스)을 기억하였다가 나중에 프로그램 기동 시에 접근되는 블록들을 효율적인 방법으로 미리 읽는 기법 등이 있다. 프리페칭 시의 의존성은 파일시스템 수준의 의존성과는 다르다. 이는 운영체제에서 지원하는 디스크캐시의 방식에 따라 다르다. 리눅스에서 EXT 계열 파일시스템의 메타데이터는 버퍼캐시로 관리가 되는데, 장치 번호와 장치 내 블록 번호를 알면 버퍼 캐시로 캐싱이 될 수 있다. 하지만 페이지캐시로 관리가 되는 정규 파일의 데이터 블록은 버퍼캐시로 관리되는 관련된 메타데이터가 모두 준비되어야만 요청이 가능하다. 이 경우, 정규 파일의 데이터 블록은 해당 블록의 메타데이터 블록들에 의존성이 있다. 프리페칭 시 블록들을 비동기적으로 요청함으로써 명령 큐잉을 이용할 수 있지만 프리페치 수준의 블록 의존성으로 인해 큐잉되는 명령의 수가 제한될 수 있다.
따라서, 본 발명은 상술한 문제점을 해결하기 위해 안출된 것으로서, 의존성 있는 요청들을 효율적으로 처리함으로써 플래시 기반의 저장장치의 처리율이 높일 수 있는 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체를 제공하기 위한 것이다.
본 발명의 다른 목적들은 이하에 서술되는 바람직한 실시예를 통하여 보다 명확해질 것이다.
본 발명의 일 측면에 따르면, 커맨드 큐잉을 지원하는 플래시 기반의 저장장치를 위한 프리페칭 방법에 있어서, 프리페칭의 대상이 되는 요청 명령들을 분석하여 다른 요청 명령에 의존성이 있는 의존요청을 체크하는 단계; 상기 요청 명령들의 순서를 기반으로, 상기 의존요청이 의존하는 피의존요청과 상기 의존요청 사이인 의존성구간에 상기 의존요청보다 순서가 늦는 하나 이상의 후발요청을 이동시켜 상기 요청 명령들의 순서를 재배치하는 단계; 및 상기 저장장치의 명령 큐에 순서가 재배치된 상기 요청 명령들을 제공하는 단계를 포함하는 프리페칭 방법 및 그 방법을 수행하는 프로그램이 기록된 기록매체가 제공된다.
여기서, 상기 저장장치의 각 블록의 병렬적 처리 성능에 상응하도록 상기 의존성구간으로 이동되는 후발요청의 종류 또는 개수가 결정될 수 있다.
또한, 상기 저장장치와의 명령 처리를 위한 통신 오버헤드에 상응하도록 상기 의존성구간으로 이동되는 후발요청의 종류 또는 개수를 결정할 수 있다.
또한, 상기 저장장치에 구비된 블록의 개수에 상응하도록 상기 의존성구간으로 이동되는 후발요청의 종류 또는 개수를 결정할 수 있다.
또한, 상기 의존요청보다 순서가 늦는 요청 명령이 일정개수 이상 존재하지 않으면, 상기 피의존요청보다 순서가 앞선 선발요청을 상기 의존성구간으로 이동시킬 수 있다.
또한, 상기 의존성구간으로는 의존성이 없는 후발요청이 우선적으로 이동될 수 있다.
본 발명에 따르면, 명령 큐잉이 지원되는 플래시 기반의 저장장치에서, 의존성 있는 요청들 사이에 이 요청들과는 의존성이 없는 요청을 이동시켜 명령 큐에 동시에 입력되는 요청 수를 늘리는 프리페칭 방식을 제안함으로써, 다수의 큐잉된 명령들이 플래시 칩들을 병렬적으로 사용하여 처리율을 높일 수 있다.
도 1은 플래시 기반의 저장장치를 이용하는 컴퓨팅 장치의 구성을 개략적으로 도시한 블록도.
도 2는 명령 큐잉을 지원하는 플래시 메모리의 구성을 개략적으로 도시한 블록도.
도 3은 본 발명의 일 실시예에 따른 프리페칭 과정을 도시한 흐름도.
도 4는 및 도 5는 본 발명의 일 실시예에 따른 의존성 있는 요청 명령들과 그 처리 순서가 재배치되는 경우를 도시한 예시도들.
도 6 및 도 7은 본 발명의 다른 실시예에 따른 선발요청을 의존성구간으로 이동시킴으로써 처리 순서를 재배치하는 경우를 예시한 예시도들.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
이하, 첨부한 도면들을 참조하여 본 발명에 따른 실시예들을 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어 도면 부호에 상관없이 동일하거나 대응하는 구성 요소는 동일한 참조번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 플래시 기반의 저장장치를 이용하는 컴퓨팅 장치의 구성을 개략적으로 도시한 블록도이고, 도 2는 명령 큐잉을 지원하는 플래시 메모리의 구성을 개략적으로 도시한 블록도이다.
먼저 도 1을 참조하면, 일반적으로 컴퓨팅 장치의 프로세서(10)는 램(RAM, 20)에 저장된 데이터를 이용하는데, 램(20)에는 외부의 저장장치로서 플래시 기반의 저장장치(30, 플래시 메모리)에 저장된 데이터가 읽혀와 저장된다.
특히, 본 실시예에 따른 플래시 메모리(30)는 프리페칭(prefetching)을 위해 프로세서(10)로부터 수신되는 데이터를 램(20)에 저장하라는 복수개의 요청 명령(request command)들이 저장되는 명령 큐(32)를 구비하며, 그 요청 명령들을 순서에 따라 비동기적으로 처리하여 해당 데이터를 램(20)의 디스크캐시(22)에 저장한다. 쉽게 말해, 하나의 요청 명령을 처리하여 그에 따른 데이터를 디스크캐시(22)에 저장하고 나서 다음 순서에 따른 요청 명령을 처리하는 것이 아니라, 각 요청 명령을 순서에 따라 비동기적으로 처리함으로써 요청 명령들의 최종 처리 완료 시간을 단축시키는 것이다.
도 2를 참조하면, 일반적인 플래시 기반의 저장장치는 호스트 장치와의 통신을 위한 호스트 인터페이스(31)와 데이터가 저장되는 복수개의 플래시 칩(200) 및 각 구성부를 제어하며 요청 명령 등의 명령을 처리하는 컨트롤러(33)를 포함한다. 도면에 도시된 바와 같이, 플래시 메모리(30)는 다수의 플래시 칩(200)에 의해 저장공간이 블록단위로 분할되어 있으므로, 병렬적으로 각 블록의 데이터에 대한 요청을 처리할 수 있다.
따라서, 플래시 메모리(30)는 명령 큐(32)에 기록된 요청 명령들을 순서대로 또한 비동기 방식으로 처리하여 블록들에 저장된 데이터를 읽어와 램(20)의 디스크캐시(22)에 저장한다.
만일 플래시 메모리(30)가 단일칩으로 구성된다 하더라도, 칩의 다이(Die) 또는 플레인(Plane) 단위로 블록화하여 프리페칭에 의해 병렬적인 처리가 수행될 수도 있음은 이하의 설명들을 통해 당업자에게는 더욱 자명하게 될 것이다.
이하, 이러한 플래시 메모리(30)의 명령 큐(32)를 이용한 프리페칭의 효율적인 사용을 위해, 요청 명령들간의 의존성에 의한 처리 지연을 최소화하는 방법에 대해 설명하기로 한다.
도 3은 본 발명의 일 실시예에 따른 프리페칭 과정을 도시한 흐름도이고, 도 4는 및 도 5는 본 발명의 일 실시예에 따른 의존성 있는 요청 명령들과 그 처리 순서가 재배치되는 경우를 도시한 예시도들이다.
이하에서 설명할 본 실시예에 따른 처리 과정은 플래시 메모리(30)의 명령 큐(32)에 요청 명령들을 제공하는 프리페칭 프로그램으로서 구현될 수 있는데, 이러한 프리페칭 프로그램은 컴퓨팅 장치의 운영체제 또는 응용프로그램의 일부 기능으로서 구현되어 프로세서(10)에 의해 수행될 수 있음은 당업자에게는 자명할 것이므로, 이하의 과정에 따른 수행 주체는 도 1에 따른 프로세서(10)에 의해 수행되는 것을 가정하여 설명하기로 한다.
도 3을 참조하면, 프리페칭을 수행하는 프로세서(10)는 프리페칭 대상이 되는 요청 명령들을 인식하고(S310), 요청 명령들을 분석하여 의존성이 있는 것들을 체크한다(S320).
프리페칭을 수행하기 위해서는 플래시 메모리(30)의 어떠한 블록들이 접근될지에 대한 분석을 통해 이미 해당 요청 명령들에 대한 정보를 가지고 있어야 한다. 따라서, 미리 저장된 이러한 정보에 의해 실행될 프로그램에 따른 요청 명령들이 인식되는 것이다.
요청 명령들 간 의존성을 인식하는 방법은 프리페칭 대상블록들에 대해서 각 블록을 디스크캐시(22)에 적재하기 위해서 동기적으로 요청되는 블록들을 분석하는 것이다. 여기서 블록 A를 디스크캐시(22)에 적재하기 위한 과정 중에 동기적으로 블록 B와 C가 읽혀야 한다면 블록 A는 블록 B와 C에 의존성이 있다고 판단될 수 있다. 요청 명령들 간의 의존성은 운영체제에서 지원하는 디스크캐시 기법이나 저장 공간을 관리하는 파일시스템 종류에 따라서 다를 수 있으며, 이는 당업자에게는 자명할 것이므로 더욱 상세한 설명은 생략한다.
의존성이 있는 요청 명령들은 피의존요청과 피의존요청에 의존되는 의존요청으로 구분될 수 있을 것이며, 이에 따라 피의존요청과 의존요청 사이 구간인 의존성구간에 의존요청보다 순서가 늦는 요청(이하, 후발요청이라 칭함)이 이동됨으로써 요청 명령들의 순서를 재배치시킨다. 물론 후발요청은 해당 피의존요청 및 의존요청과 의존성 관계가 없어야 함은 당연하다.
의존성구간으로 이동되는 후발요청은 의존요청보다 순서가 늦는 어느 하나 이상일 수 있으며, 요청 명령들의 순서도 중요한 요소이므로 최대한 의존요청과 순서가 가까운 후발요청이 선택되는 것이 바람직하다.
이에 대해 예시한 도 4 및 도 5를 함께 참조하면, 요청A 내지 요청E가 순서대로 배치된 상태에서(도 4 참조), 요청B(400)가 피의존요청이고 요청C(410)가 의존요청으로서 둘 간에 의존성이 있는 것으로 인식되면, 도 5에 도시된 바와 같이 의존요청인 요청C(410)보다 순서가 뒤늦은 후발요청D(420-1)와 후발요청E(420-2)가 의존성구간(500)으로 이동되는 것이다.
따라서, 요청B(400)에 대한 처리가 완료되는 동안 요청D(420-1)와 요청E(420-2)에 대한 처리가 시작될 수 있으므로, 요청C(410)가 처리되기 시작할 때쯤이면 요청B(400)의 처리결과로 인해 즉시 처리될 가능성이 높게 되는 것이며, 이로 인해 전체적인 프리페칭의 처리 시간이 단축될 수 있다.
여기서, 의존성구간(500)으로 이동되는 후발요청은 아무런 의존성이 없는 요청 명령이 선택되는 것이 바람직하다. 또는 후발요청으로서 의존성을 갖는 요청 명령이 선택될 수도 있으나, 의존성이 없는 요청명령이 높은 우선순위를 갖도록 할 수도 있다.
그리고, 의존성구간(500)에 삽입되는 후발요청의 종류 또는 개수를 선택하는 방식은 다양하게 설정될 수 있다.
플래시 메모리는 칩의 개수, 각 칩의 병렬적 처리 성능, 인터페이스를 통한 명령 통신 오버헤드 등에 따라 병렬적으로 처리할 수 있는 능력이 결정된다. 예를 들어, 플래시 메모리에 요청되는 블록의 크기를 점점 크게 할 때, 어느 시점에서 더 이상 플래시의 처리율이 증가하지 않는 요청 크기가 존재한다. 이 때의 크기를 장착된 플래시 메모리의 최대 병렬화 크기로 볼 수 있다.
따라서, 일례에 따르면, 의존성구간으로 이동되는 후발요청의 종류 또는 크기는 플래시 칩(200)의 최대 병렬화 크기에 상응하도록 결정할 수 있다.
그리고 상술한 바와 같이, 또 다른 예에 따르면 플래시 메모리(30)와 프로세서(10)의 명령 처리를 위한 통신 오버헤드에 따라 이동되는 후발요청의 종류 또는 개수가 결정될 수 있다. 만약 플래시 메모리(30)와 프로세서(10)의 명령 처리를 위한 통신 오버헤드가 큰 경우, 피의존요청의 개수를 늘려서 명령 처리를 위한 통신 처리와 플래시 메모리(30)의 데이터 처리 작업을 병렬화 시킬 수 있다. 여러 명령을 명령 큐(32)에서 동시에 처리함으로 인하여 인터페이스를 통한 통신 오버헤드가 큰 경우에는 플래시 메모리의 최대 병렬화 크기가 줄어들 수 있다. 따라서, 플래시 메모리(30)와의 명령 처리를 위한 통신 오버헤드에 상응하도록 의존성구간으로 이동되는 후발요청의 종류 또는 개수가 결정될 수 있다.
또한, 플래시 메모리(30)에 구비된 플래시 칩(200)의 수와 플래시 칩(200)의 내부병렬화 정도에 블록 개수에 상응하도록 의존성구간으로 이동되는 후발요청의 종류 또는 개수가 결정될 수도 있는데, 예를 들어 플래시 칩(200)에 따른 블록의 수가 많을수록 병렬적인 처리가 더 효율적일 수 있으므로 플래시 칩(200)의 수에 비례하여 의존성구간으로 이동되는 후발요청의 개수 또는 데이터 사이즈가 결정될 수도 있다.
또 다른 일례에 따르면, 피의존요청의 데이터 사이즈에 상응하도록 의존성구간으로 이동되는 후발요청의 종류 또는 개수가 결정될 수 있다. 예를 들어, 피의존요청의 데이터 사이즈가 크다는 것은 플래시 메모리(30)의 여러 블록에 접근해야 할 확률이 높아 남는 블록이 적으므로, 의존성구간으로 적은 개수의 후발요청이 이동되거나 데이터 사이즈가 작은 후발요청이 이동될 수 있다. 반대로 피의존요청의 데이터 사이즈가 작을수록 접근하는 블록의 개수가 작을 확률이 높으므로, 의존성구간에는 많은 수 또는 데이터 사이즈가 큰 후발요청이 이동될 수 있을 것이다.
그리고, 의존요청보다 순서가 늦은 후발요청을 의존성구간으로 이동시키는 상술한 예들과는 조금은 다른 개념으로서, 만일 의존요청보다 순서가 늦은 후발요청이 전혀 존재하지 않거나 일정개수 이하인 경우에는 의존성으로 인한 문제를 해결할 수 없게 되므로, 이러한 경우엔 피의존요청보다 순서가 앞선 선발요청을 의존성구간으로 이동시킨다. 이에 대한 처리 방식에 대해 도면을 참조하여 설명하기로 한다.
도 6 및 도 7은 본 발명의 다른 실시예에 따른 선발요청을 의존성구간으로 이동시킴으로써 처리 순서를 재배치하는 경우를 예시한 예시도들이다.
도 6과 도 7을 참조하면, 요청H(620-1) 내지 요청K(610)가 순서대로 배치된 상태에서(도 6 참조), 요청J(600)가 피의존요청이고 요청K(610)가 의존요청으로서 둘 간에 의존성이 있는 것으로 인식되면, 요청K(610)가 마지막 요청이므로 도 7에 도시된 바와 같이 피의존요청인 요청J(600)보다 순서가 앞선 선발요청H(620-1)와 선발요청I(620-2)가 의존성구간(700)으로 이동되는 것이다.
본 실시예에 따르면, 후발요청이 일정개수 이하인 경우 또는 일정 크기 이하인 경우엔, 피의존요청보다 순서가 앞선 선발요청을 의존성구간(700)으로 이동시킴으로써, 의존성에 의한 처리 지연을 예방할 수 있는 것이다.
그리고, 도면에는 도시되지 않았으나, 의존요청과 피의존요청 사이에 다른 요청이 일정개수 이상 존재하는 경우에는 S330의 과정이 생략될 수 있음은 당연하다. 즉, 피의존요청이 처리된 후 일정시간이 흐른 뒤(즉, 그 사이의 다른 요청들이 처리되는 시간) 의존요청이 처리됨으로써 의존성 구간에 후발요청 또는 선발요청과 같은 다른 요청 명령을 배치시킬 필요가 없기 때문이다.
다시 도 3을 참조하면, 순서가 재배치된 요청 명령들을 플래시 메모리(30)의 명령 큐(32)에 제공함으로써, 프리페칭을 위한 절차가 처리된다(S340).
상술한 본 발명에 따른 플래시 저장장치를 위한 프리페칭 방법은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
또한, 상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10 : 프로세서
20 : 램
22 : 디스크캐시
30 : 플래시 메모리
31 : 호스트 인터페이스
32 : 명령 큐
33 : 컨트롤러
200 : 플래시 칩
400, 600 : 피의존요청
410, 610 : 의존요청
420-1, 420-2 : 후발요청
620-1, 620-2 : 선발요청
500, 700 : 의존성구간

Claims (7)

  1. 커맨드 큐잉을 지원하는 플래시 기반의 저장장치를 위한 프리페칭 방법에 있어서,
    프리페칭의 대상이 되는 요청 명령들을 분석하여 다른 요청 명령에 의존성이 있는 의존요청을 체크하는 단계;
    상기 요청 명령들의 순서를 기반으로, 상기 의존요청이 의존하는 피의존요청과 상기 의존요청 사이인 의존성구간에 상기 의존요청보다 순서가 늦는 하나 이상의 후발요청을 이동시켜 상기 요청 명령들의 순서를 재배치하는 단계; 및
    상기 저장장치의 명령 큐에 순서가 재배치된 상기 요청 명령들을 제공하는 단계를 포함하는 프리페칭 방법.
  2. 청구항 1에 있어서,
    상기 저장장치의 각 블록의 병렬적 처리 성능에 상응하도록 상기 의존성구간으로 이동되는 후발요청의 종류 또는 개수가 결정되는 것을 특징으로 하는 프리페칭 방법.
  3. 청구항 1에 있어서,
    상기 저장장치와의 명령 처리를 위한 통신 오버헤드에 상응하도록 상기 의존성구간으로 이동되는 후발요청의 종류 또는 개수를 결정하는 것을 특징으로 하는 프리페칭 방법.
  4. 청구항 1에 있어서,
    상기 저장장치에 구비된 블록의 개수에 상응하도록 상기 의존성구간으로 이동되는 후발요청의 종류 또는 개수를 결정하는 것을 특징으로 하는 프리페칭 방법.
  5. 청구항 1에 있어서,
    상기 의존요청보다 순서가 늦는 요청 명령이 일정개수 이상 존재하지 않으면, 상기 피의존요청보다 순서가 앞선 선발요청을 상기 의존성구간으로 이동시키는 것을 특징으로 하는 프리페칭 방법.
  6. 청구항 1에 있어서,
    상기 의존성구간으로는 의존성이 없는 후발요청이 우선적으로 이동되는 것을 특징으로 하는 프리페칭 방법.
  7. 디지털 정보 처리 장치에 의해 판독 가능하며, 제 1항 내지 제 6항 중 어느 한 항의 방법을 수행하기 위한 프로그램이 기록된 기록 매체.
KR1020120128102A 2012-11-13 2012-11-13 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체 KR20140061018A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120128102A KR20140061018A (ko) 2012-11-13 2012-11-13 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120128102A KR20140061018A (ko) 2012-11-13 2012-11-13 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체

Publications (1)

Publication Number Publication Date
KR20140061018A true KR20140061018A (ko) 2014-05-21

Family

ID=50890178

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120128102A KR20140061018A (ko) 2012-11-13 2012-11-13 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체

Country Status (1)

Country Link
KR (1) KR20140061018A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015105858A1 (de) 2014-05-21 2015-11-26 Samsung Electronics Co., Ltd. Halbleitervorrichtungen mit Peripherieschaltungsbereich und einem ersten und einem zweiten Speicherbereich, sowie zugehörige Programmierverfahren

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015105858A1 (de) 2014-05-21 2015-11-26 Samsung Electronics Co., Ltd. Halbleitervorrichtungen mit Peripherieschaltungsbereich und einem ersten und einem zweiten Speicherbereich, sowie zugehörige Programmierverfahren

Similar Documents

Publication Publication Date Title
US7979631B2 (en) Method of prefetching data in hard disk drive, recording medium including program to execute the method, and apparatus to perform the method
US10114578B2 (en) Solid state disk and data moving method
US8171242B2 (en) Systems and methods for scheduling a memory command for execution based on a history of previously executed memory commands
US10860494B2 (en) Flushing pages from solid-state storage device
US8423709B2 (en) Controller
WO2020169065A1 (zh) 基于内存受限 ssd 的预读取方法、装置和计算机设备
US20150149741A1 (en) Storage System and Control Method Thereof
US10891150B2 (en) Storage control method and storage controller for user individual service environment
KR20190044873A (ko) 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치
KR20140142530A (ko) 데이터 저장 장치 및 그것의 명령어 스케줄링 방법
US20210141559A1 (en) Memory controller and storage device including the same
US9201799B2 (en) Method for disk defrag handling in solid state drive caching environment
AU2015203828B2 (en) Implementing enhanced performance with read before write to phase change memory to avoid write cancellations
KR101481898B1 (ko) Ssd의 명령어 큐 스케줄링 장치 및 방법
US9977732B1 (en) Selective nonvolatile data caching based on estimated resource usage
US11068189B2 (en) Storage device and control method thereof
US10346070B2 (en) Storage control apparatus and storage control method
US20180011663A1 (en) Solid state drive
KR20140061018A (ko) 플래시 저장장치를 위한 프리페칭 방법 및 그 방법이 기록된 기록매체
US11449428B2 (en) Enhanced read-ahead capability for storage devices
KR102266166B1 (ko) 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스
JP2022046413A (ja) 記憶デバイスのための改良された先読み能力
CN108345551B (zh) 一种存储数据的方法及装置
KR102202211B1 (ko) 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법
US11232024B2 (en) Predictive caching in device for media seek in playback or scrolling

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