KR100983048B1 - Ncq 제어 방법 및 컴퓨팅 장치 - Google Patents

Ncq 제어 방법 및 컴퓨팅 장치 Download PDF

Info

Publication number
KR100983048B1
KR100983048B1 KR1020080118937A KR20080118937A KR100983048B1 KR 100983048 B1 KR100983048 B1 KR 100983048B1 KR 1020080118937 A KR1020080118937 A KR 1020080118937A KR 20080118937 A KR20080118937 A KR 20080118937A KR 100983048 B1 KR100983048 B1 KR 100983048B1
Authority
KR
South Korea
Prior art keywords
request
hard disk
disk drive
interface
operating system
Prior art date
Application number
KR1020080118937A
Other languages
English (en)
Other versions
KR20100060364A (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 KR1020080118937A priority Critical patent/KR100983048B1/ko
Publication of KR20100060364A publication Critical patent/KR20100060364A/ko
Application granted granted Critical
Publication of KR100983048B1 publication Critical patent/KR100983048B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

본 발명은 NCQ(Native Command Queueing) 제어 방법 및 컴퓨팅 장치에 관한 것으로서, 본 발명의 일면에 따른 NCQ 제어 방법은, 데이터 읽기 또는 쓰기의 요청에 대한 스케쥴링을 지시하는 단계 및 지시된 스케쥴링에 따라 요청을 스케쥴링하여 처리하는 단계를 포함하는 것을 특징으로 한다.
NCQ(Native Command Queueing), 스케쥴링, 하드 디스크 드라이브

Description

NCQ 제어 방법 및 컴퓨팅 장치{Method for controlling native command queueing and computing device}
본 발명은 S-ATA 2(Serial ATA 2) 방식의 디스크 디바이스 내의 Native Command Queueing(NCQ)를 제어하는 방법 및 컴퓨팅 장치에 관한 것으로서, 상세하게는 기 설정된 NCQ 알고리즘을 외부로 추출하여, 알고리즘을 변경하여 데이터 읽기 또는 쓰기의 요청을 스케쥴링하게 하거나, 또는 기 설정된 파라미터 값을 변경하여 스케쥴링하게 하거나, 또는 이미 디스크의 커맨드 큐 내에 존재하는 요청의 우선 순위를 조절하여 처리하도록 함으로써, 컴퓨팅 장치의 성능을 높이고, 다양한 서비스 수준을 보장할 수 있도록 하는 방법에 관한 것이다.
도 1을 참조하여 종래의 컴퓨팅 장치를 설명한다. 도 1은 종래의 컴퓨팅 장치를 나타내는 블록도이다. 도 1을 참조하면, 컴퓨팅 장치는 운영체제(100)와 하드 디스크 드라이브(200)를 포함한다. 하드디스크 드라이브(100)는 크게 펌웨어(210)와, 하드웨어 제어부(220) 및 하드웨어(230)로 구성되며, 펌웨어(210)와 하드웨어 제어부(220)는 서로간에 제어에 필요한 정보를 주고 받는다.
하드웨어(230)는 디스크 헤드(head)(미도시), 암(arm)(미도시), 플래 터(platter)(미도시) 등으로 이루어져 있으며, 하드웨어 제어부(220)에 의해 기계적인 동작들의 제어가 이루어진다. 펌웨어(210)는 하드웨어 제어부(220)를 통하여 하드 디스크의 마그네틱 표면에 데이터를 쓰거나 읽어올 수 있다. 펌웨어(210)는 하드 디스크 드라이브(200)와 관련된 물리적인 파라미터들을 포함하고 있으며, 논리주소-물리주소의 매핑 등 소프트웨어적인 기능들을 담당하고 있다. 펌웨어(210)는 커맨드 큐 내의 데이터 읽기 또는 쓰기의 요청들의 정보들을 보고, 얼마만큼의 서비스 시간이 소요될지를 미리 정확하게 계산하고, 이를 바탕으로 해당 요청을 재조정할지 바로 처리할 지를 결정할 수 있다.
호스트 운영체제(100)는 제1 인터페이스(INT1)를 통해 데이터 읽기 또는 쓰기의 요청을 제공하고, 그에 대한 결과를 받는다.
일반적으로 S-ATA 2 디스크의 NCQ는 랜덤 워크로드가 주어졌을 경우 디스크 커맨드 큐 내의 요청들을 재조정함으로써 성능을 높이는 것으로 알려져 있다. NCQ는 펌웨어 내에서 하드 디스크 드라이브(200)의 다양한 물리적인 파라미터를 바탕으로 입출력 요청의 수행 시간을 예측하여 요청들을 재조정할 수 있는데, 일종의 회전 기반 입출력 스케줄러라 볼 수 있다.
회전 기반 스케줄러는 디스크의 헤드의 위치를 고려하여, 여러개의 데이터 쓰기 또는 읽기 요청이 있을 때 회전 지연시간을 최소화하면서 결과적으로 단위 시간내에 많은 요청을 처리하는 것을 목적으로 한다. 하지만 현대의 디스크 드라이브는 매우 좁은 인터페이스를 가지고 있기 때문에, 운영체제(100)가 디스크의 정확한 헤드 위치를 알아내는 것이 어렵거나 불가능하다는 것이 밝혀져 있다. 그런데 NCQ 는 디스크의 펌웨어 레벨에서 구현이 되어 있기 때문에, 헤드의 정확한 위치, 트랙간의 스큐 팩터, 디스크 존 맵 정보, 실린더 거리에 따른 탐색 시간 등의 물리적인 정보를 모두 알 수 있으므로, 데이터 쓰기 또는 읽기 요청의 수행 시간을 정확히 예측할 수 있고, 따라서 기존의 운영체제 수준에서의 회전 기반 입출력 스케줄러가 달성하지 못했던 목표들을 이룰 수 있게 해 주었다.
이러한 장점에도 불구하고, NCQ는 상위의 운영체제(100)의 입출력 스케줄러와 충돌이 발생할 여지가 있다. 예기치 못하게 오히려 성능이 떨어지기도 하고, 회전 기반 스케줄러가 내재한 기본적인 약점인 요청의 굶주림 현상도 여전히 남아있다. 또한 윈도우즈 비스타와 같은 최신 운영체제가 요구하는 다양한 서비스 레벨을 제공하는 것이 어렵거나 불가능하다. 현재로서는, 운영체제(100)가 펌웨어(210)의 NCQ 제어 방법을 수정하거나 조절할 수 있는 인터페이스는 존재하지 않는다.
본 발명은 운영체제에게 NCQ를 통제할 수 있는 인터페이스를 제공하여 중복적인 스케줄링으로 인한 충돌 가능성을 없애서 더 나은 성능을 제공하며, 요청의 굶주림 현상을 제거하고, 요청의 우선 순위 정보를 전달할 수 있기 위한 것이다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 목적을 달성하기 위한 본 발명의 일면에 따른 NCQ(Native Command Queueing) 제어 방법은, 데이터 쓰기 또는 읽기의 요청에 대한 스케쥴링을 지시하는 단계 및 상기 지시된 스케쥴링에 따라 상기 요청을 스케쥴링하여 처리하는 단계를 포함한다.
본 발명의 다른 면에 따른 컴퓨팅 장치는, 데이터 쓰기 또는 읽기 요청을 제공하고, 상기 요청에 대한 스케쥴링을 지시하는 운영체제 및 상기 지시된 스케쥴링에 따라 상기 요청을 스케쥴링하여 처리하는 하드 디스크 드라이브를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
운영체제의 스케줄러는 추출한 NCQ 스케줄링 알고리즘을 참고하여, 서로 충 돌이 일어나지 않도록 재설계될 수 있거나 또는 NCQ의 동작 방식에 맞추어 스케줄링 방식을 동적으로 변화시킬 수도 있다. 또한 NCQ의 다양한 파라미터를 직접 조절함으로써 성능과 공평성의 균형을 운영체제가 요구하는 수준으로 맞출 수 있을 것이다. 또한 이미 디스크로 보낸 요청의 우선 순위를 변경하는 방법을 통해 굶주림을 겪고 있는 요청을 바로 서비스 받도록 할 수 있다. 그리고 S-ATA 2 표준에서 단지 두 개의 우선순위 레벨만을 NCQ에 전달할 수 있으나 이 새로운 인터페이스를 통해 더 다양한 레벨의 우선 순위 정보를 전달할 수 있게 된다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하에서 운영체제가 하드 디스크 드라이브의 NCQ(Native Command Queueing)를 제어하는 방법에 대해 설명한다. 다만, 본 발명은 이에 한정되지 않고, Command Queueing이 지원되는 모든 디스크 타입에 적용될 수 있음은 물론이다.
도 2를 참조하여 본 발명의 실시예에 따른 NCQ(Native Command Queueing) 제어 방법 및 컴퓨팅 장치를 설명한다. 도 2는 본 발명의 실시예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
도 2를 참조하면, 본 발명의 실시예에 따른 컴퓨팅 장치는 호스트 운영체제(101)(이하 운영체제라 함)와 하드 디스크 드라이브(201)를 포함한다.
운영체제(101)는 하드 디스크 드라이브(201) 간에, 데이터 읽기 또는 쓰기의 요청을 제공하고, 그에 대한 결과를 받는 제1 인터페이스(INT1) 이외에도, 요청의 스케쥴링을 직접적으로 제어하는 제2 인터페이스(INT2)를 수행한다. 즉, 기존에 데이터 읽기 또는 쓰기에 관한 제1 인터페이스(INT1)에서, 제2 인터페이스(INT2)를 추가하여, NCQ를 직접 제어한다.
이하에서 운영체제(101)가 하드 디스크 드라이브(201)와 제2 인터페이스(INT2)를 통해 NCQ를 직접 제어하는 예들을 구체적으로 설명한다.
먼저, 운영체제(101)는 제2 인터페이스(INT2)를 통해 하드 디스크 드라이브(201)에 기 설정된 스케쥴링 알고리즘을 추출하고, 추출된 스케쥴링 알고리즘을 변경한다. 그리고, 제2 인터페이스(INT2)를 통해 변경된 스케쥴링 알고리즘을 하드 디스크 드라이브(201)로 제공하여, 변경된 스케쥴링 알고리즘으로 데이터 읽기 또는 쓰기 요청을 처리하도록 할 수 있다.
좀더 구체적으로 설명하면, 운영체제(101)는 하드 디스크 드라이브(201) 내부의 펌웨어(211)로, 펌웨어(211)에서 실행되고 있는 스케쥴링 알고리즘의 제공을 제2 인터페이스(INT2)를 통해 요청한다. 펌웨어(211)는 기 설정된(현재 실행되고 있는) 스케쥴링 알고리즘을 제2 인터페이스(INT2)를 통해 운영체제(101)로 제공한다. 이때, 스케쥴링 알고리즘은, Pseudo-코드 혹은 c 코드 형태로 제공될 수 있다. 이때, 운영체제(101)는 유저 애플리케이션에 돌려주어, 스케쥴링 알고리즘을 공개할 수 있도록 할 수도 있다. 운영 체제는 스케쥴링 알고리즘을 제공받아, 유저의 명령에 따라 변경한다. 운영체제(101)는 변경된 스케쥴링 알고리즘을 제2 인터페이스(INT2)를 통해 펌웨어(211)로 제공하고, 펌웨어(211)는 변경된 스케쥴링 알고리즘에 따라 데이터 읽기 또는 쓰기 요청을 처리한다.
이와 같은 과정을 구체적인 예를 들어 설명한다.
기 설정된 스케쥴링 알고리즘이 다음과 같다고 가정한다.
Figure 112008081933927-pat00001
전술한 스케쥴링 알고리즘은 다음과 같은 가정하에 설명된 것이다. 운영체제(101)가 디스패치(dispatch)한 데이터 읽기 또는 쓰기 요청을 FIFO 방식으로 관리한다고 가정하고, 큐 내의 요청들을 헤드(head)에서부터 차례로 R1, R2, R3, ... , RN이라 한다. 하드 디스크 드라이브(201)는 큐 내에 존재하는 요청들 중에서, 어느 하나를 선택하여 서비스(데이터 읽기 또는 쓰기 요청에 대한 처리)할 수 있다. 만약 하드 디스크 드라이브(201)가 R2를 선택하여 서비스했다면, R3~ RN은 순서가 하나씩 이동하여 R2~ RN-1이 된다고 가정한다. 각 요청 Ri는 우선순위(priority)가 할당되어 있는데, 현재 S-ATA 2.6의 스펙대로 High priority request 와 Low priority request 두가지만 존재하는 것으로 가정한다. 큐 내의 요청중 High priority request로 할당된 요청들의 리스트를 HighList라 하고, 나머지 요청들의 리스트를 LowList라 가정한다. HighList는 항상 큐에 삽입된 순서대로 리스트를 유지한다고 가정한다. HighList내의 요청들을 HR1, HR2, ..., HRX으로 기재된다. LR은 LowList의 요청을 의미한다. 이러한 상황에서, Greedy 알고리즘은 특정 요청이 무한정 오래 기다리게 만들 수 있으므로 NCQ에는 입출력 요청의 굶주림을 막기 위한 최소한의 장치는 되어 있는데, 이를 Aging 기법이라 한다. NCQ는 seek curve, logical-to-physical mapping, skew factor, current head position, defective/spare sectors, zone information등의 물리적인 정보를 바탕으로, 특정 입출력 요청을 서비스하는데, AccessTime 함수를 이용하여 어느 정도의 시간이 걸릴 것인지를 상당히 정확하게 예측할 수 있다고 가정한다.
이때, 운영체제(101)가, 예컨대 “GET_ALGORITHM()” 커맨드를 펌웨어(211)로 전송하여 기 설정된 스케쥴링 알고리즘을 요청하면, 펌웨어(211)는 다음과 같이 스케쥴링 알고리즘을 운영체제(101)로 제공한다.
Figure 112008081933927-pat00002
이는, 펌웨어(211)가 기 설정된 스케쥴링 알고리즘을 c-코드 형식으로 제공한 예이다. 전술한 바와 같이, c-코드 외에도 pseudo-코드 형식으로 제공할 수도 있다.
운영체제(101)는 이러한 스케쥴링 알고리즘을 변경하여 펌웨어(211)로 제공함으로써, NCQ를 직접 제어할 수 있다.
다음으로, 운영체제(101)는 제2 인터페이스(INT2)를 통해 기 설정된 파라미 터 값을 변경할 수 있다. 하드 디스크 드라이브(201)는 기 설정된 파라미터 값을 이용하여 전술한 스크쥴링 알고리즘을 통해 데이터 읽기 또는 쓰기 요청을 스케쥴링하여 처리한다. 여기서 운영체제(101)가 기 설정된 파라미터 값을 변경하면, 하드 디스크 드라이브(201)는 변경된 파라미터 값을 제공받아, 변경된 파라미터 값을 토대로 요청을 스케쥴링하여 처리한다. 여기서 파라미터의 예는, 전술한 스케쥴링 알고리즘에서 사용된
Figure 112008081933927-pat00003
이다. 이하에서
Figure 112008081933927-pat00004
에 대해 좀더 구체적으로 설명한다.
파라미터
Figure 112008081933927-pat00005
는 얼마나 공격적으로 회전지연(rotational delay)를 활용하여 High priority request과 Low priority request의 순서를 바꾸느냐를 결정하는 값이다.
Figure 112008081933927-pat00006
는 0과 1사이의 값을 가진다. 0일 경우 Low priority request는 결코 High priority request보다 먼저 실행될 수 없다. 1일 경우, Low priority request를 먼저 마치고, High priority request를 위한 회전지연(rotational delay) 기간 동안 헤드를 탐색(seek)하여 서비스할 수 있다고 판단하면 둘의 순서를 바꿀 수 있다. 즉 1에 가까울수록 high throughput을 위해 둘 순서를 바꿀 가능성이 있다. 물론 이 경우 high priority request의 레이턴시(latency)에는 전혀 영향을 끼치지 않는다.
파라미터
Figure 112008081933927-pat00007
는 펌웨어(211)가 특정 요청의 access time을 예측할 때 어느 정도 낙관적인 값을 사용하겠느냐를 나타내는 값이다. 디스크의 물리적인 정보를 알더라도, 온도나 전력의 변화 및 미세한 진동으로 인해 아주 정확하게 접근시간을 구하는 것은 어렵기 때문이다. 0.5 일 경우는 평균 예측값, 0에 가까울수록 worst-case 값, 1에 가까울 수록 best-case 값에 가까워진다고 가정한다. 0에 가까운 값을 사용하게 되면, 잘못된 예측으로 인해 full rotation이 발생하는 경우를 줄일 수 있겠으나 throughput을 어느 정도 희생하게 되고, 1에 가까운 값을 사용하게 되면 매우 공격적으로 throughput을 높일 수 있는 가능성도 있으나 잘못된 예측이 될 경우 오히려 full rotation이 발생하여 레이턴시(latency)를 높일 수 있으므로, 결과적으로 throughput이 낮아질 수도 있다.
파라미터
Figure 112008081933927-pat00008
는 굶주리고 있는 요청을 처리하기 위해 펌웨어(211)가 사용하는 threshold 값이다. 이것은 디스크 벤더가 임의로 정해둔 값이다. 이 값이 3일 경우, 디스크 커맨드 큐에 삽입된 요청은 3초가 지나게 되면, 다른 모든 요청들에 우선하여 먼저 서비스받게 된다.
이러한 파라미터 외에도 다른 여러 파라미터가 존재할 수 있는데, 운영체제(101)는 제2 인터페이스(INT2)를 통해, 예컨대 “SET_NCQ_PARAMETER(parameterType, newValue)”과 같은 커맨드를 통해 파라미터 값을 변경하면, 펌웨어(211)는 변경된 파라미터에 따라 데이터 읽기 또는 쓰기 요청을 스케쥴링하여 처리한다.
한편, 운영체제(101)는 기 설정된 데이터 읽기 또는 쓰기 요청의 우선순위를 제2 인터페이스(INT2)를 통해 변경하고, 하드 디스크 드라이브(201)는 변경된 우선순위에 따라 요청을 스케쥴링하여 처리한다.
예를 들면, 디스크 커맨드 큐 내의 요청들은 전부 각각 태그 넘버(tag number)와, 우선순위 값을 가지고 있다. 태그 넘버는 하드 디바이스 드라이버에 의해 할당된 값이다. 우선순위는, S-ATA 2.6 스펙에 의해 High(1)/Low(0) 만을 가진다고 가정하면, 우선순위(priority)가 0인 요청들은 LR에 포함되고, 1인 요청들은 HR에 포함된다. 운영체제(101)는, 예컨대 “SET_PRIORITY(tagNumber, newValue)”의 커맨드를 제2 인터페이스(INT2)를 통해 펌웨어(211)로 전송하여 Low priority request를 High priority request로 변경할 수 있다.
이와 같이, 본 발명에 실시예에 따르면, 운영체제(101)가 데이터 읽기 또는 쓰기 요청에 관한 NCQ를 직접제어 할 수 있다. 즉, 운영체제(101)가 하드 디스크 드라이브(201)의 스케쥴링 알고리즘을 추출하고, 서로 충돌이 일어나지 않도록 스케쥴링 알고리즘을 재설계될 수 있거나 또는 NCQ의 동작 방식에 맞추어 스케줄링 방식을 동적으로 변화시킬 수도 있다. 또한 NCQ의 다양한 파라미터를 직접 조절함으로써 성능과 공평성의 균형을 운영체제(101)가 요구하는 수준으로 맞출 수 있을 것이다. 또한 이미 하드 디스크 드라이브(201)로 보낸 요청의 우선 순위를 변경하는 방법을 통해 굶주림을 겪고 있는 요청을 바로 서비스 받도록 할 수 있다. 그리고 S-ATA 2 표준에서 단지 두 개의 우선순위 레벨만을 NCQ에 전달할 수 있으나 이 새로운 인터페이스(INT2)를 통해 더 다양한 레벨의 우선 순위 정보를 전달할 수 있게 된다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 예를 들어 본 발명의 제어 방법을 실현하기 위한 프로그램이 기록된 기록매체의 형태 등 다양한 형태로 구현될 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 종래의 컴퓨팅 장치를 나타내는 블록도이다.
도 2는 본 발명의 실시예에 따른 컴퓨팅 장치를 나타내는 블록도이다.
(도면의 주요부분에 대한 부호의 설명)
100, 101: 운영체제 200, 201: 하드 디스크 드라이브
210, 211: 펌웨어 220: 하드웨어 제어부
230: 하드웨어

Claims (10)

  1. 운영체제가 하드 디스크 드라이브의 NCQ(Native Command Queueing)를 제어하는 방법에 있어서,
    제1 인터페이스를 통해 데이터 읽기 또는 쓰기의 요청을 제공하고, 제2 인터페이스를 통해 상기 요청에 대한 기 설정된 스케쥴링 알고리즘을 상기 하드 디스크 드라이브로부터 추출하는 단계;
    상기 추출된 스케쥴링 알고리즘을 변경하는 단계; 및
    상기 변경된 스케쥴링 알고리즘을 상기 제2 인터페이스를 통해 상기 하드 디스크 드라이브로 제공하는 단계를 포함하여,
    상기 하드 디스크 드라이브가 상기 변경된 스케쥴링 알고리즘으로 상기 요청을 처리하도록 하는 NCQ 제어 방법.
  2. 삭제
  3. 제 1항에 있어서, 상기 추출하는 단계는 상기 기 설정된 스케쥴링 알고리즘을 Pseudo-코드 또는 c-코드 형태로 추출하는 단계인 NCQ 제어 방법.
  4. 제 1항에 있어서,
    기 설정된 파라미터 값을 변경하기 위한 새로운 파라미터 값을 상기 제2 인터페이스를 통해 제공하는 단계를 더 포함하여,
    상기 하드 디스크 드라이브가 상기 새로운 파라미터 값을 토대로 상기 요청을 처리하도록 하는 NCQ 제어 방법.
  5. 제 1항에 있어서,
    기 설정된 상기 요청의 우선순위를 변경하기 위한 정보를 상기 제2 인터페이스를 통해 제공하는 단계를 더 포함하여,
    상기 하드 디스크 드라이브가 상기 정보에 따라 변경된 우선순위로 상기 요청을 처리하도록 하는 NCQ 제어 방법.
  6. 제1 인터페이스를 통해 데이터 읽기 또는 쓰기의 요청을 제공하고, 제2 인터페이스를 통해 상기 요청에 대한 스케쥴링을 지시하는 운영체제; 및
    상기 지시된 스케쥴링에 따라 상기 요청을 스케쥴링하여 처리하는 하드 디스크 드라이브를 포함하되,
    상기 운영체제는 상기 제2 인터페이스를 통해 상기 하드 디스크 드라이브에 기 설정된 스케쥴링 알고리즘을 추출하고, 상기 추출된 스케쥴링 알고리즘을 변경하고, 상기 변경된 스케쥴링 알고리즘을 상기 제2 인터페이스르 통해 상기 하드 디스크 드라이브로 제공하여, 상기 하드 디스크 드라이브가 상기 변경된 스케쥴링 알고리즘으로 상기 요청을 처리하도록 하는 것인 컴퓨팅 장치.
  7. 삭제
  8. 제 6항에 있어서, 상기 운영체제는
    상기 하드 디스크 드라이브로부터 상기 기 설정된 스케쥴링 알고리즘을 Pseudo-코드 또는 c-코드 형태로 추출하는 컴퓨팅 장치.
  9. 제 6항에 있어서, 상기 운영체제는
    상기 하드 디스크 드라이브에 기 설정된 파라미터 값을 상기 제2 인터페이스를 통해 변경하고, 상기 하드 디스크 드라이브가 상기 변경된 파라미터 값에 기초하여 상기 요청을 처리하도록 하는 것인 컴퓨팅 장치.
  10. 제 6항에 있어서, 상기 운영체제는
    상기 하드 디스크 드라이브에 기 설정된 상기 요청의 우선순위를 상기 제2 인터페이스를 통해 변경하고, 상기 하드 디스크 드라이브가 상기 변경된 우선순위에 따라 상기 요청을 처리하도록 하는 것인 컴퓨팅 장치.
KR1020080118937A 2008-11-27 2008-11-27 Ncq 제어 방법 및 컴퓨팅 장치 KR100983048B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080118937A KR100983048B1 (ko) 2008-11-27 2008-11-27 Ncq 제어 방법 및 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080118937A KR100983048B1 (ko) 2008-11-27 2008-11-27 Ncq 제어 방법 및 컴퓨팅 장치

Publications (2)

Publication Number Publication Date
KR20100060364A KR20100060364A (ko) 2010-06-07
KR100983048B1 true KR100983048B1 (ko) 2010-09-17

Family

ID=42361291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080118937A KR100983048B1 (ko) 2008-11-27 2008-11-27 Ncq 제어 방법 및 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR100983048B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6275440B2 (ja) 2013-01-21 2018-02-07 株式会社 堀場アドバンスドテクノ 濁度計
JP2024088484A (ja) 2022-12-20 2024-07-02 富士電機株式会社 水質分析装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990073871A (ko) * 1998-03-04 1999-10-05 정선종 비선점적 주기 태스크의 스케쥴 가능성을 분석하는 다항 시간알고리즘
KR20050020942A (ko) * 2003-08-20 2005-03-04 마이크로소프트 코포레이션 연속 매체 우선순위 인식 저장장치 스케줄러
KR20070037427A (ko) * 2005-09-30 2007-04-04 코웨어, 인코포레이티드 멀티코어 구조에서의 스케줄링

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990073871A (ko) * 1998-03-04 1999-10-05 정선종 비선점적 주기 태스크의 스케쥴 가능성을 분석하는 다항 시간알고리즘
KR20050020942A (ko) * 2003-08-20 2005-03-04 마이크로소프트 코포레이션 연속 매체 우선순위 인식 저장장치 스케줄러
KR20070037427A (ko) * 2005-09-30 2007-04-04 코웨어, 인코포레이티드 멀티코어 구조에서의 스케줄링

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문:한국정보과학회*

Also Published As

Publication number Publication date
KR20100060364A (ko) 2010-06-07

Similar Documents

Publication Publication Date Title
EP3447607B1 (en) Credit based command scheduling
KR100415861B1 (ko) 디스크 제어기로부터 디스크 드라이브로 명령을 보낼것인가를 판단하는 방법, 디스크 제어기 및 프로그램을저장하는 기록매체
CN100378686C (zh) 用于高速缓存的磁盘装置和控制方法
US8370857B2 (en) Device controller
US7124152B2 (en) Data storage device with deterministic caching and retention capabilities to effect file level data transfers over a network
US6553476B1 (en) Storage management based on predicted I/O execution times
US10102102B2 (en) Characterizing device performance based on user-perceivable latency
JP5057792B2 (ja) 性能ボトルネックを緩和する機能を備えたストレージシステム
US8386704B2 (en) Techniques for improving hard disk drive efficiency
US20090089524A1 (en) Storage Device Controlling Apparatus and Method
US7949795B2 (en) Power conservation in data storage device by only starting the active state when the measured time indicates data is present on the interface
JP6160240B2 (ja) 情報処理装置、情報処理システム、情報処理装置の制御方法および情報処理装置の制御プログラム
Reuther et al. Rotational-position-aware real-time disk scheduling using a dynamic active subset (DAS)
Jung et al. Design of a host interface logic for GC-free SSDs
JP2020161014A (ja) 情報処理装置および実行制御プログラム
US6799228B2 (en) Input/output control apparatus, input/output control method and information storage system
US20090198919A1 (en) A Non-Volatile Memory Device, and Method of Accessing a Non-Volatile Memory Device
KR100983048B1 (ko) Ncq 제어 방법 및 컴퓨팅 장치
US20090083744A1 (en) Information writing/reading system, method and program
US6567886B1 (en) Disk drive apparatus and control method thereof
KR100713769B1 (ko) 디스크 관리 장치 및 디스크 관리 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
US8819363B2 (en) Data copying method
US6915376B1 (en) Host controlled optimization of disk storage devices
US20100123964A1 (en) Storage device and control device
US7707356B2 (en) Method and apparatus for scheduling disk read requests

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140822

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170824

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180820

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 10