KR20070032788A - 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간예산책정 - Google Patents

드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간예산책정 Download PDF

Info

Publication number
KR20070032788A
KR20070032788A KR1020077001175A KR20077001175A KR20070032788A KR 20070032788 A KR20070032788 A KR 20070032788A KR 1020077001175 A KR1020077001175 A KR 1020077001175A KR 20077001175 A KR20077001175 A KR 20077001175A KR 20070032788 A KR20070032788 A KR 20070032788A
Authority
KR
South Korea
Prior art keywords
data
streaming
unit
drive unit
drive
Prior art date
Application number
KR1020077001175A
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 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20070032788A publication Critical patent/KR20070032788A/ko

Links

Images

Classifications

    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/0613Improving I/O performance in relation to throughput
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B21/00Head arrangements not specific to the method of recording or reproducing
    • G11B21/02Driving or moving of heads
    • G11B21/10Track finding or aligning by moving the head ; Provisions for maintaining alignment of the head relative to the track during transducing operation, i.e. track following
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Automatic Tape Cassette Changers (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)
  • Communication Control (AREA)
  • Measurement Of Unknown Time Intervals (AREA)
  • Information Transfer Systems (AREA)

Abstract

개시자에 의해 요구된 저장 매체로의 데이터 액세스 사이에서, 논리 유닛은 독립적인 동작을 수행할 필요가 있을 수 있다. 논리 유닛은 스스로 개시자의 스트림 버퍼가 결정적인(critical) 레벨에 도달하는지를 추정하는 것을 허용하기 위해 개시자로부터 정보를 수신한다. 이러한 추정에 기초하여, 논리 유닛은 에러 복구, 드라이브 메커니즘이나 저장 매체의 물리적인 유지 또는 드라이브 메커니즘과 저장 매체 사이의 상대적인 위치 선정과 같은 독립적인 동작을 수행 또는 지속할지를 결정할 수 있다. 이러한 추정은 또한 고정되기보다는 플렉시블한 타임-아웃을 허용한다.

Description

드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간 예산책정{TIME BUDGETING FOR NON-DATA TRANSFER OPERATIONS IN DRIVE UNITS}
본 발명은 개시자(initiator) 유닛과 논리 유닛 사이의 데이터 이동을, 특히 개시자 유닛에서 스트림 버퍼를 사용하는 것을 통해 관리하는 분야에 관한 것이다.
처리 상황에서는, 데이터를 제공 또는 소비하는 하나 이상의 애플리케이션을 실행하는 적어도 하나의 호스트(개시자라고도 알려짐) 처리기가 존재한다. 호스트 처리기는 통상 드라이브 유닛(논리 유닛이라고도 알려짐)과 같은 주변 기기와 인터페이스로 접속한다. 드라이브 유닛은 일반적으로 일부 로컬(local) 처리 능력을 가지고 적어도 하나의 매체를 가지는데, 이러한 매체로부터 데이터가 판독되거나 이러한 매체로 데이터가 기입된다. 광학, 자기 및 전자와 같은 많은 유형의 매체가 존재한다.
매체와의 인터페이스를 위해, 애플리케이션 프로그램은 종종 큰 버퍼를 가지게 된다. 어떤 애플리케이션이 데이터를 소비하게 되면, 그 버퍼의 찬 정도(fullness)가 일부 임계 레벨 아래로 떨어지고, 애플리케이션 프로그램은 관련 드라이브 유닛으로부터 추가 데이터를 요구하는 하나 이상의 판독 명령을 내리게 된다. 애플리케이션 프로그램이 데이터를 만들게 되면, 버퍼의 빈 정도(emptiness) 가 임계 레벨 아래로 떨어질 때, 애플리케이션 프로그램은 관련 드라이브 유닛에 적어도 하나의 기입 명령을 내리게 된다.
다양한 유형의 매체로부터 판독 또는 그러한 매체로의 기입시 데이터를 버퍼링(buffering)하는 많은 예가 존재한다. 그러한 버퍼링의 일 예는 본 명세서에 참조로 통합되어 있는 PCT 출원인 IB2004/0506(NL030617)에서 발견될 수 있고, 이러한 IB2004/0506에서는 드라이브 유닛이 어떻게 매체로부터 데이터를 검색하는 전송 속도를 애플리케이션 이동 속도와 매칭하려는 시도를 위해 적응하는지를 설명한다. 본 출원은 판독에만 적용하고, 드라이브 유닛 자체의 버퍼의 버퍼가 가득 찬 정도를 고려할 수(그리고 고려하는) 있다. 드라이브 유닛은 애플리케이션의 버퍼에 대해 아무것도 알지 못한다.
본 발명의 발명자에 의해 발견된 한 가지 문제점은, 데이터 액세스에 관련된 타이밍이 애플리케이션 프로그램을 만족시키는 것에만 관련되지 않다는 점이다. 때때로, 드라이브 유닛 스스로 독립적인 비-데이터(non-data) 이동 동작을 수행할 필요가 있다. 그러한 동작은 에러 복구, 드라이브 유닛이나 저장 매체의 물리적인 유지 및 드라이브 메커니즘과 저장 매체 사이의 상대적인 위치 선정(positioning)을 포함한다. 일반적으로 그러한 동작은 저장 매체로의 데이터 액세스와 동일한 자원을 사용하고, 따라서 그러한 액세스와 동일한 시간에서 수행될 수 없다. 그 결과, 드라이브 유닛은 애플리케이션 프로그램을 만족시킬 수 있는지를 아는 것과 함께 그러한 독립적인 동작을 위한 시간을 가지는지를 알 필요가 있다.
호스트 처리기를 가지는 것이 바람직할 수 있는데, 이러한 호스트 처리기는 애플리케이션 프로그램을 실행하고, 드라이브 유닛이 스트리밍의 손실 전에 얼마나 많은 시간이 남아 있는지를 결정하는 것을 허용하기 위해 드라이브 유닛으로 정보를 공급한다. 드라이브 유닛은 이러한 정보를 그것의 내부 동작을 조정하기 위해 사용할 수 있는데, 예컨대 플렉시블한(flexible) 타임-아웃(time-out)을 구현하거나, 그러한 동작을 시작하기 전에 독립적인 비-데이터 이동 동작을 성공적으로 수행할 수 있는지를 결정함으로써 행한다. 독립적인 동작은 많은 상이한 종류의 것이 될 수 있는데, 예컨대 에러 복구의 카테고리에서, 드라이브 메커니즘이나 데이터 저장 매체의 물리적인 유지, 또는 드라이브 메커니즘이나 저장 매체 사이의 상대적인 위치 선정이 있다.
본 발명의 목적 및 장점은 다음 설명에서 분명해진다.
도 1은 판독 동작 동안, 본 발명에 따른 디바이스를 개략적으로 도시하는 도면.
도 2는 기입 동작 동안, 본 발명에 따른 디바이스를 개략적으로 도시하는 도면.
도 3a는 시간의 함수로서의 버퍼 채움(filling)의 그래프.
도 3b는 시간의 함수로서의 타이머 값의 그래프.
도 4a는 본 발명에 따른 판독 동작에 관한 흐름도의 제 1 부분을 도시하는 도면.
도 4b는 본 발명에 따른 판독 동작에 관한 흐름도의 제 2 부분을 도시하는 도면.
도 5a는 본 발명에 따른 기입 동작에 관한 흐름도의 제 1 부분을 도시하는 도면.
도 5b는 본 발명에 따른 기입 동작에 관한 흐름도의 제 2 부분을 도시하는 도면.
도 6은 도 4a와 도 4b의 흐름도에 관한 타이밍도.
도 7은 판독 동작을 위한 전경(foreground) 처리의 흐름도.
도 8은 판독 동작을 위한 제 2 전경 처리의 흐름도.
도 9는 기입 동작을 위한 배경 처리의 흐름도.
도 1은 본 발명이 사용될 수 있는 디바이스의 일 예를 개략적으로 도시한 도면이다. 이러한 개략도는 스트리밍을 구비한 판독 동작을 보여주기 위해 구성된다.
이 디바이스는 논리 유닛(104)과 일부 매체 또는 매체들(107)을 포함하는 데이터 소스(101)를 포함한다. 본 명세서에서 "드라이브 유닛(drive unit)"과 "논리 유닛(logical unit)"이라는 용어는 교환 가능하게 사용된다. 매체(107)는 CD(compact disk), DVD(digital video disk), HD-DVD(high definition digital video disc) 또는 BD(blu-ray disk)와 같은 광학 매체일 수 있다. 매체(107)는 또한 자기 또는 전자와 같은 일부 다른 유형의 것일 수 있다.
디바이스는 또한 소스(101)로부터의 데이터를 사용하는 호스트(106)를 포함 한다. 본 명세서에서 "호스트(host)"와 "개시자(initiator)"라는 용어는 교환 가능하게 사용된다. 호스트(106)는 PC, 디지털 신호 처리기, 셋톱 박스 등과 같은 임의의 유형의 것일 수 있다. 호스트(106)는 논리 유닛(104)을 구비한 동일한 하우징이거나 상이한 하우징에 있는 것일 수 있다. 개시자 유닛(106)에는 소스(101) 내의 논리 유닛(104)으로부터 데이터 스트림(3)을 모으는 컬렉터 모듈(collector module)(102)이 있다. 스트림 버퍼(105)는 컬렉터로부터 데이터(2)를 수신하고, 소비자(consumer)(103)에게 스트리밍된 데이터(1)를 제공한다. 스트림 버퍼(105)는 바람직하게 큰 버퍼이다. 데이터 흐름(3)은 인터페이스(미도시)를 거쳐 일어난다. 소비자 모듈(103)은 스트리밍된 데이터(1)를 사용하는 애플리케이션 프로그램의 부분이다.
소비자(103)는 스트림 버퍼(105)로부터 데이터를 제거할 수 있는 알려진 최대 데이터 속도를 가진다. 이러한 속도는 소비 속도(comsumption rate)라고 부른다. 인터페이스는 알려진 최소 데이터 이동 속도를 가진다. 이 속도는 인터페이스 속도라고 부른다. 소스(101)는 매체로부터 논리 유닛의 캐시(cache)나 버퍼(108)로의 알려진 최소 스트리밍 데이터 속도를 가진다. 이러한 최소 스트리밍 속도는 소스 속도라고 부른다. 일반적으로 소비 속도는 소스 속도보다 느리고, 또한 소스 속도는 인터페이스 속도보다 느리다.
논리 유닛 버퍼(108)는 선택 사항이다. 당업자라면 논리 유닛 버퍼(108) 없이 드라이브 유닛을 설계할 수 있다.
일반적으로 판독 명령에는 많은 상이한 유형의 것이 있을 수 있다. 일부는 스트리밍 실행을 요구하고 일부는 그러하지 아니하다. 본 발명은 스트리밍 실행이 요구되는 상황에 특히 유용하다. 예컨대, MMC 명령 집합은
·판독(10)
·판독(12)
을 포함하는 2개 이상의 판독 명령을 가진다.
숫자(10 또는 12)는 얼마나 많은 바이트로부터 명령 서술자(descriptor) 블록이 구성되는지를 얘기한다. 2개의 명령 사이의 차이는 다음과 같다:
·판독(10) 명령은 이동될 섹터의 개수를 명시하기 위한 2바이트의 파라미터를 가지고, 판독(12) 명령은 4바이트의 파라미터를 가진다.
·판독(12) 명령만이 호스트가 "스트리밍(streaming)" 이동을 원한다는 것을 표시하는 파라미터를 가진다. 드라이브로, 이는 올바른 데이터의 전달을 재시도하는 것을 실행하는 것보다 정시에(하지만 지연이 있을 수 있는) 데이터(잘못이 있거나 위조될 수 있는)를 전달하는 것이 더 중요하다는 것을 의미한다. 본 발명의 특히 유용한 것이 이러한 스트리밍 상황이다.
본 애플리케이션이 데이터를 소비자에게 보내기 시작하기 전에는, 정말로 실시간 구속이 존재하지 않는다. 그러므로, 판독(10) 명령을 구비한 버퍼나 스위칭 오프된 "스트리밍" 파라미터를 구비한 판독(12) 명령을 가지고 버퍼의 초기 채움(initial filling)을 행하는 것이 가능하다. 소비자로의 데이터 흐름이 시작된 후, 판독(12) 명령은 논리 유닛으로의 스트리밍 이동 요소를 표시하기 위해 사용될 수 있는 명령이다.
도 3a는 데이터 소비 동작 동안 수직 축 상에 시간에 대한 버퍼의 찬 정도의 그래프를 도시한다. 버퍼의 찬 정도는 그것이 임계 또는 트리거(trigger) 레벨에 도달할 때까지 데이터가 소비되는 동안 떨어진다. 그러한 점에서, 새로운 데이터 이동 동작이 드라이브 유닛을 사용하는 애플리케이션에 의해 개시되고, 이는 버퍼 충만이 다시 증가하게 한다. 통상적으로, 데이터는 버퍼가 제 2 임계에 도달할 때까지 이동되고, 이러한 제 2 임계는 애플리케이션이 추가 이동 요구를 중지하는 데 있어 충분하다. 호스트의 관점에서, 이는 시간이 존재할 경우 독립적인 동작을 개시하기 위한 바람직한 점이지만, 드라이브는 이러한 순간이 언제인지를 알지 못하고, 따라서 독립적인 동작을 실행할 수 있기에 충분한 정보를 수신할 필요가 있으며, 여전히 호스트의 필요를 만족시킨다.
도 2는 도 1과 유사하게 기입 동작중인, 본 발명에 따른 디바이스의 일 예를 개략적으로 도시한다. 이 경우, 데이터 생성기 모듈(203)은 데이터(211)를 생성 속도라고 부르는 속도로 스트림 버퍼(205)에 제공한다. 스트림 버퍼(205)는 데이터(212)를 결합기 모듈(202)에 제공하고, 이러한 결합기 모듈(202)은 데이터(213)를 인터페이스(미도시)를 거쳐 인터페이스 속도라고 부르는 속도로 목적지(201)에 제공한다. 이후 목적지 모듈(201)은 그것의 국부 매체 - 도 1에 도시되었지만 도 2에는 도시되지 않음 - 에 목적지 기입 속도라고 부르는 속도로 기입한다. 도 2의 모듈은 도 1의 유사한 모듈과 동일한 것이 가능한데, 즉 애플리케이션에 따라 그것들의 참조 번호에서 마지막 2개의 디지트가 동일한 모듈과 동일한 것이 가능하다. 대안적으로, 그것들은 상이한 모듈일 수 있다. 애플리케이션이 만들어내는 모든 데 이터가 기록될 수 있는 것을 보장하기 위해, 드라이브 유닛이 기입할 수 있는 속도는 생성 속도보다 클 필요가 있다. 이는 너무 낮은 인터페이스 이동 속도에 의해 방해받아서는 안 된다.
다시 논리 유닛에 스트리밍 이동 실행이 MMC-4 기입(12) 명령과 같은 기입 상황에서 요구된다는 것을 알리기 위해 사용될 수 있는 많은 상이한 명령이 존재한다.
도 3a는 또한 기입 동작 중에 시간의 함수로서의 버퍼의 빈 정도를 예시하는 것으로서 사용될 수 있다. 다시 말해, 기입 동안 버퍼의 빈 정도는, 드라이브 유닛을 사용하는 애플리케이션에 의해 포인트 데이터 이동이 개시되는 임계 또는 트리거 값에 도달할 때까지 하강하게 된다. 데이터 이동은 제 2 임계에 도달할 때까지 점진적으로 버퍼의 빈 정도를 증가시킨다. 애플리케이션 프로그램은 제 2 임계에 도달하게 되면 데이터 이동 요구를 중지시킨다. 이는 드라이브 유닛이 독립적인 동작을 개시할 수 있게 되는 포인트이다. 하지만 드라이브 유닛은 바람직한 포인트에 도달했는지를 알지 못한다. 복구 또는 조정이 취해지는 타이머 값과 시간의 양으로부터 일부 '휴식 시간(time to breath)'을 가진다는 것만을 안다.
보통 독립적인 비-데이터 이동 동작에 이용 가능한 시간에 관한 정보는, 명령을 사용하여 호스트(106/206)로부터 드라이브 유닛(101/201)으로 통보되어야 한다. 그러한 명령은 4개의 파라미터, 즉
·초기 스트림 타이밍 값(ISTV);
·이동 유닛 크기(TUS);
·이동 유닛 증가량(TUI);
·판독 또는 기입 동작이 필요한지를 표시하는 기입 플래그(write flag)
를 포함하는 것이 바람직하다.
이들은 단지 파라미터가 어떻게 설정되는지의 예이다. 당업자라면 다른 파라미터를 예상할 수 있다. 예컨대, 타이밍 값을 보내기보다는, 애플리케이션이 데이터 소비 속도와, 이미 스트리밍 버퍼에 있는 데이터 양의 정량화(quantification)를 보낼 수 있다. 이들 값으로부터 드라이브 유닛은 남아있는 시간을 계산할 수 있다. 소비 속도는 TUS/TUI로 보일 수 있다.
도 7은 데이터 이동을 위해 드라이브 유닛에서 동작하는 전경 처리의 일 예를 도시한다. 먼저, 701에서 드라이브 유닛은 위에서 열거된 것과 같은, 호스트 유닛으로부터 타임-아웃 파라미터를 수신한다. 이후 702에서, 드라이브 유닛은 파라미터를 저장한다. 이후, 703에서 드라이브 유닛은 타임-아웃 카운터를 시작한다.
타이머는 계속해서 카운트 다운한다. 드라이브가 기입 플래그에 의해 결정된 방향으로 크기(TUS)를 가진 데이터의 양만큼 이동시킬 때마다, 드라이브는 TUI를 실제 카운터 값에 추가할 수 있다. 이는 시간의 함수로서 타이머에서의 값을 그래프로 보여주는 도 3b에 예시되어 있다. 이 경우, 카운터 값의 증가는 톱니형 라인을 따른다. TUI의 추가는 이동 유닛의 이동의 끝에서 타이머 값을 상승하게 하지만, 그러한 동일한 이동시 타이머 값은 하강하게 된다. 그러므로 타이머 값은 톱니형 근사나 스트리밍 버퍼에서의 값의 추정이다.
도 8은 드라이브 유닛에서 판독 요청이 동작하는 제 2 전경 처리를 도시한 다. 801에서, 드라이브 유닛은 판독 요구를 수신한다. 판독 명령이 판독(10)과 같은 802에서 스트리밍을 요구하지 않는다면, 명령은 803에서의 스트리밍 요구 없이, 다루어지게 된다. 802에서, 판독 명령이 판독(12)과 같은 스트리밍을 요구하지 않는다면, 처리는 806에서 타이머가 만료되었는지를 테스트한다. 만약 그렇다면 명령은 805에서 에러를 가지고 종료하게 된다. 만약 그렇지 않다면, 처리는 807에서 모든 데이터가 이동되었는지를 테스트한다. 만약 그렇다면, 명령은 809에서 성공적으로 완료된다. 그렇지 않다면, 전경 처리는 808에서의 배경 처리로부터의 데이터를 기다릴 수 있다. 810에서, 이용 가능한 데이터가 이동되고, 그 후 타이머는 811에서 갱신된다. 이후 제어는 806으로 되돌아간다.
데이터가 이미 배경 처리에 의해 디스크로부터 페치(fetch)되었다면, 배경 처리 기능(808)으로부터의 데이터를 기다리는 것은 매우 신속하게 되돌려지게 된다. 만약 그렇지 않다면, 전경 처리는 데이터가 이용 가능하게 되자마자 배경 처리에 의해 트리거된다. 물론, 치명적인 에러가 일어날 수 있지만, 이는 흐름도에서는 도시되지 않는다.
스트리밍 요구가 없이 명령을 다루는데 반해, 타이머는 여전히 카운트 다운하는데, 이는 소비자가 여전히 애플리케이션의 스트림 버퍼로부터의 데이터를 사용하기 때문이다.
마찬가지로 드라이브 유닛이 판독 동작 동안 매체에서 결점을 검출하고, 복부 및/또는 조정을 필요로 한다고 가정한다. 질문은 소비자에 대한 실시간 요구를 위태롭게 하지 않으면서 이러한 복구 절차에 얼마나 오랜 시간을 드라이브가 사용 할 수 있는가이다. 그 답은 실제로 애플리케이션 버퍼의 충만에 달려 있다. 이 버퍼가 데이터로 채워져 있는 한, 드라이브는 그것의 복구를 계속 진행할 수 있다. 하지만 버퍼 점유가 0에 가까워질 때에는, 드라이브의 복구가 중지되어야 한다.
일반적으로, 애플리케이션은 복구를 중지시킬 수 없는데, 이는 인터페이스가 이를 지원하지 않기 때문이다. 그 결과, 드라이브 유닛은 일부 임계 레벨에 도달하는 그것의 로컬 타이머에서의 타임 아웃 값에 응답하여 복구 자체를 중지해야 한다. 종종 드라이브 유닛은 위에서 캐시(108)라고도 부른 버퍼 자체의 어떤 것을 가지게 되고, 이는 드라이브 유닛이 독립적인 동작을 실행하는 동안 호스트에 공급할 수 있다. 이는 독립 동작을 위한 시간을 좀더 줄 수 있지만, 드라이브 유닛에서의 버퍼가 일반적으로 스트리밍 버퍼에 비해 작기 때문에, 이러한 여분의 시간은 중요하지 않을 수 있다.
도 9는 박스(808)에 의해 사용된 배경 판독 공정의 일 예를 도시한다. 이러한 특별한 공정은 조정(calibration)이라고 부르는 비-데이터 이동 동작을 행하려고 한다. 판독시, 드라이브는 미리-가져오기(pre-fetching)라고 부르는 일을 실행한다. 이는 배경 공정이 더 많은 (연속적인 데이터)를 위해 애플리케이션으로부터의 다음 요구를 예상할 수 있도록, 드라이브의 버퍼가 찰 때까지 디스크로부터의 데이터 판독을 계속 유지한다는 것을 의미한다. 이는 루프에서 일어나는 것이고, 전경 공정을 트리거한 후, 배경 공정이 계속해서 데이터를 판독할 수 있거나 (드라이브 유닛에 의해 내부적으로 요구된다면) 비-데이터 이동 동작을 실행하여 - 그러한 동작이 배경 공정에서 바람직하게 실행된다.
901에서는, 배경이 데이터를 드라이브 유닛 버퍼로 미리-가져간다. 이후 902에서는 그 데이터가 이용 가능한지를 확인한다.
만약 그렇다면, 907에서 전경 공정을 트리거한다. 만약 그렇지 않다면, 공정은 903에서 조정이 진행중인지를 결정한다. 만약 그렇지 않다면 906에서, 드라이브로부터 버퍼로 데이터가 이동되고, 907에서 전경 공정이 트리거된다.
조정이 진행중이라면, 904에서 배경 공정이 타임-아웃 카운터가 비-데이터 이동 동작에 관해 충분한지를 테스트한다. 만약 그렇다면, 그러한 비-데이터 이동 동작 - 이 경우에는 조정 요구 - 이 905에서 실행되고, 제어는 906으로 넘어간다. 비-데이터 이동 동작에 관한 시간이 없다면, 제어는 905를 우회해서 직접 906으로 넘어간다.
도 7 내지 도 9의 흐름도는 병렬로 동작해야 한다.
도 4a와 도 4b는 에러가 있는 경우 본 발명에 따른 독립적인 동작을 요구하는 판독 동작에 관한 흐름도의 일 예를 도시한다.
401에서는, 호스트가 파라미터인 ISTV, TUS, TUI 및 WRITE를 계산하고, 이 중 마지막 것이 플래그이다. 이후 402에서는 호스트가 아래에서 설명될 집합 스트리밍 명령에서의 '스트림 타이밍 서술자'를 거쳐 파라미터를 보낸다. 드라이브는 403에서 집합 스트리밍 명령을 수신하고, 스트림 타이밍 서술자로부터 파라미터를 얻는다. 이후 404에서, 드라이브는 ISTV로 다운 카운터를 프로그래밍하고, 다른 파라미터를 저장한다. 이제 호스트는 405에서 판독(12)과 같은 적어도 하나의 판독 명령을 보내고, 드라이브는 406에서 판독 명령을 수신한다. 흐름도 연결기(X)가 도 4a와 도 4b 사이의 실행 흐름을 연결하기 위해 사용된다. 410에서, 드라이브는 디스크로부터의 하나 이상의 섹터(sector)를 판독한다. 드라이브 유닛이 또한 버퍼를 가지는 경우, 데이터는 이미 이용 가능하게 될 수 있다.
판독하는 동안, 일부 에러가 드라이브 유닛에 의해 411에서 발견될 수 있다. 만약 그렇다면 드라이브는 418에서 독립적인 판독 복구 동작을 실행해야 한다. 먼저 423에서 드라이브가 독립적인 동작을 실행하기에 충분한 시간이 있는지를 테스트한다. 충분한 시간이 없을 경우, 드라이브는 연결기(W)를 거쳐 421에서 에러 메시지를 만들어낸다. 충분한 시간이 있을 경우에는, 제어가 박스(418)로 넘어간다. 이들 동작을 실행하면서, 드라이브는 또한 카운트-다운 카운터/타이머를 감시해야 한다. 만약 카운트 다운이 419에서 0에 도달하면, 판독은 422에서 타임 아웃된다. 만약 카운트-다운이 0에 도달하지 않지만, 판독 복구가 420에서 성공적이지 않으면, 판독이 421에서 복구할 수 없는 에러를 가지고 종료해야 한다.
420에서 판독 복구가 성공적이라면, 드라이브는 412에서 이용 가능한 데이터를 표시하고, 이러한 데이터는 또한 411에서 에러가 없는 경우 결과일 수 있다. 이후 호스트는 412에서 드라이브로부터 호스트로 데이터를 이동시킬 수 있고, 414에서 드라이브는 도 3b에서 도시된 바와 같이 다운-카운터를 갱신한다. 만약 드라이브 다운-카운터가 412에서 0에 도달하면, 판독 타임-아웃이 또한 일어나, 422에서 성공적이지 않은 판독 종료를 초래한다. 만약 415에서 드라이브 다운-카운터가 0에 도달하지 않으면, 드라이브는 416에서 모든 요구된 데이터가 이동되었는지를 테스트한다. 만약 그렇지 않다면, 제어는 박스(410)로 되돌아간다. 만약 그렇다면, 417 에서 드라이브는 이동 명령이 성공적이지 않았음을 알린다.
도 5a와 도 5b는 본 발명에 따른 독립적인 동작을 요구하는 기입 동작에 관한 흐름도의 일 예를 도시한다.
501에서, 호스트는 파라미터인 ISTV, TUS, TUI 및 WRITE를 계산하고, 이 중 마지막 것이 플래그이다. 이후 502에서는 호스트가 집합 스트리밍 명령에서의 '스트림 타이밍 서술자'를 거쳐 파라미터를 보낸다. 드라이브는 503에서 그러한 집합 스트리밍 명령을 수신하고, 스트림 타이밍 서술자로부터 파라미터를 얻는다. 이후, 504에서 드라이브는 ISTV로 다운 카운터를 프로그래밍하고, 다른 파라미터를 저장한다. 이제 호스트는 505에서 적어도 하나의 기입 명령을 보내고, 드라이브는 506에서 기입 명령을 수신한다. 507에서, 드라이브는 호스트로부터 데이터를 요구한다. 이후 호스트는 508에서 드라이브에 하나 이상의 데이터 블록을 보내고, 드라이브는 509에서 이를 받아들인다. 연결기(Y, Z)는 도 5a와 도 5b의 흐름도 부분을 연결하기 위해 사용된다. 510에서, 드라이브는 다운-카운터, 즉 타이머를 갱신하여, 플렉시블한 타임-아웃을 구현한다.
511에서 다운-카운터가 0에 도달하면, 520에서 기입 명령은 타임-아웃 조건으로 인해 종료한다. 만약 그렇지 않으면, 드라이브는 512에서 디스크에 기입한다. 513에서 에러가 이러한 기입으로 인해 검출되면, 드라이브는 516에서 독립적인 기입 복구를 실행해야 한다. 먼저 522에서는 드라이브가 독립적인 동작을 실행할 시간이 있는지를 테스트해야 한다. 만약 그렇지 않으면, 519에서 복구할 수 없는 에러가 연결기(V)를 거쳐 발생하게 된다. 만약 시간이 있다면, 제어는 박스(516)로 넘어간다. 기입 복구 동안, 517에서 드라이브는 또한 카운트-다운을 감시해야 한다. 드라이브의 카운트-다운이 517에서 0에 도달하면, 520에서 기입 명령이 타임-아웃 조건으로 인해 종료해야 한다. 만약 그렇지 않다면, 드라이브가 518에서 기입 복구가 성공적이었는지를 테스트한다. 만약 성공적이지 않다면, 519에서 기입 명령이 복구 불가능한 에러로 인해 종료된다. 만약 기입 복구가 성공적이었다면, 제어는 박스(514)로 넘어가고, 이는 또한 513에서 에러가 검출되지 않은 경우 제어가 넘어가는 곳이다.
514에서, 드라이브는 모든 관련 데이터가 이동되었는지를 테스트한다. 만약 그렇지 않다면, 제어는 블록(507)으로 되돌아간다. 만약 그렇다면, 521에서 드라이브는 이동 명령이 성공적이었음을 결정한다.
동작(519, 520, 521, 417, 421, 422)은 모두 드라이브가 데이터 이동 동작의 결과물에 대해 호스트에게 보고서를 제출할 것을 요구한다.
도 4a, 도 4b, 도 5a, 도 5b의 흐름도는 순차 유형 포맷으로 기입되지만, 그것들은 도 7 내지 도 9와 유사하게 병렬형 포맷으로 설정될 수도 있다.
드라이브 유닛은 레이어 점프(layer jump), 열적(thermal) 관리 행동 또는 재시도와 같은 다른 독립적인 동작을 실행할 수 있다. 일반적으로 독립적인 동작은, 예컨대 드라이브 메커니즘이나 데이터 저장 매체의 물리적인 유지나 드라이브 메커니즘과 저장 매체 사이의 상대적인 위치 선정의 카테고리에서의 많은 상이한 부류의 것일 수 있다.
어느 경우든, 이러한 유형의 독립적인 동작은 호스트에게 투명해야 한다. 명 령을 다루는 전경 처리는, 단지 드라이브 유닛의 캐시에 데이터가 도달하는 것을 기다리는 것이다. 왜 데이터가 도달하기를 기다리는지 알지도 못하고 알 필요도 없다.
당업자라면 도 4a와 도 4b 및 도 5a와 도 5b와 유사하거나, 독립적인 동작의 이들 및 다른 유형에 관해 도 7 내지 도 9와 유사하고 특히 박스(410, 411, 418, 512, 513 및 516)에 약간의 수정이 이루어진 다른 구현예를 생각할 수 있다.
레이어 점프의 경우, 판독하는 동안 박스(410)의 부분으로서 실행될 수 있다. 레이어 점프는 저장 매체와 관계가 있는 움직임의 일 예이다. 디스크로부터 섹터를 판독하는 것은, 광학 헤드가 적당한 위치로 이동될 것을 요구한다. 이는 또 다른 레이어에서의, 따라서 레이어 점프일 수 있다.
흐름도는 스트리밍 버퍼 상의 타임 아웃의 경우에서의 너무 이르게 종료하는 독립적인 동작을 보여준다. 하지만 일부 독립적인 동작은 타임아웃이 존재하는 경우에도 진행되어야 할 정도로 충분히 중대하다. 예컨대, 열적 관리 동작은 충분한 시간이 없는 경우에도 저장 매체에 대한 손상을 회피하기 위해, 반드시 필요한 것일 수 있다. 그러한 경우, 타임-아웃 에러 메시지는 열적 관리 활동 이후 또는 열적 관리 활동과 나란히 나올 수 있다.
박스(522, 423)는 스트리밍의 손실까지의 시간이 독립적인 동작을 실행하기 위해 필요한 시간보다 큰지를 결정해야 한다. 스트리밍의 손실까지의 시간의 계산 예가 다음 표에 나타난다.
표 1 - 동적 조건 하의 남아 있는 시간
시간 스트림 버퍼 깊이 스트리밍의 손실까지의 시간
0 X (X*K)/C초
K X-C ((X-C)*K)/C초
2*K X-2*C ((X-2*C)*K)/C초
N*K X-N*C ((X-N*C)*K)/C초
(N+1)*K X-(N+1)*C ((X-(N+1)*C)*K)/C초
여기서,
·C는 K초보다 작지 않은 간격에서 소비된 다수의 바이트 그룹이다.
·N은 C가 곱해져 바람직한 판독 또는 기입 크기를 만들어낼 수 있는 배율기(multiplier)이다.
·X는 미리 결정된 스트림 버퍼 채움(fill) 포인트이다.
일반적으로, 논리 유닛에서의 그리고 본 발명에 따른 독립적인 동작은 명령 실행이나 명령 사이에서 실행될 수 있다.
"명령 실행 동안"은 흐름도에서 설명된 상황이고, 이러한 흐름도에서 본 발명은 MMC4로부터의 고정된 타임 아웃에 관한 근본적인 문제점을 해결한다. 애플리케이션은 타임-아웃이 명시되는 것을 허용한다. 하지만 이러한 타임-아웃은 각 단일 명령의 실행에 적용되어, 이는 각 명령의 도착시 다시 시작되는 고정된 타임-아웃이다. 이러한 정의에 따른 문제점은 다수의 명령의 타임-아웃을 더해가는 것이 가능하지 않다는 점이다. 본 발명의 타임-아웃은 실제로 한 공정의 타임-아웃이고, 단일 명령의 타임-아웃, 즉 플렉시블하거나 실행중인 타임-아웃이 아니다.
대안적인 일 실시예에서, 명령 실행 동안, 드라이브는 독립적인 동작이 얼마나 중요한지를 테스트할 수 있고, 이후 데이터 이동 명령의 종료 전에, 그러한 동작이 바로 실제로 필요한 경우에만 독립적인 동작을 시작한다. 또 다른 대안적인 실시예에서, 드라이브 유닛은 독립적인 동작에 쓰일 이용 가능한 시간에 대한 한계를 확립할 수 있다.
본 발명은 또한 명령들 사이에서 사용될 수 있다. 이들 상황에서는, 드라이브가 독립적으로 그리고 안전하게 데이터를 이동하는 것 외의 활동들을 실행할 수 있다. 본 발명의 타이머 값은 단일 명령에 관한 것보다는 한 공정에 관한 실행중인 타이머이다. 그러므로, 배경에서의 비-데이터 이동 동작을 행하면서, 드라이브는 여전히 스트리밍 요구에 관한 새로운 정보를 수신할 수 있고, 명령 취급은 전경 업무(foreground task)이다.
본 발명에 의해 유지된 타임-아웃 값은, 소비자로의 실제 이동 속도가 변할 수 있다면(압축으로 인해), 부정확하게 될 수 있다. 그러므로, 본 애플리케이션은 타이머 값을 규칙적으로 갱신할 필요가 있다.
개시자는 이동될 매우 많은 개수의 섹터를 요구하는 하나의 명령을 나오게 할 수 있지만, 소수의 섹터를 구비한 많은 명령을 나오게 할 수도 있다. 전자의 경우, 비-데이터 이동 동작인 명령의 실행 중에 일어날 수 있는데 반해, 후자의 경우에서는 적절한 타이머 값이 계속해서 드라이브 유닛으로 이동되는 한, 명령들 사이에서 비-데이터 이동 동작이 또한 일어날 수 있다. 드라이브 유닛 또한 캐시를 가지므로, 그러한 캐시로부터 이들 많은 명령의 몇 개에 관한 섹터를 이동할 수 있고, 한편으로는 비-데이터 이동 동작(재시도, 에러 복구, 조정 등과 같은)을 나란히 실행한다.
하지만, "명령 실행 동안" 드라이브가 저장 매체로부터의 데이터 판독 또는 저장 매체로의 데이터 기입과 나란히 비-데이터 이동 동작을 반드시 실행할 수 있다는 것을 의미하지는 않는다는 점이 주목되어야 한다. 드라이브는 저장 매체로의 실제 데이터 액세스가 필요하지 않을 때, 시간을 이용하기 위해 단지 본 발명의 타이밍 계산을 이용한다.
도 6은 판독 동작 중 경과된 시간의 함수로서의 버퍼 충만의 그래프를 도시한다. 유사한 그래프가 기입 동작을 위해 적용될 수 있다. 601에서, 버퍼 충만은 점프-백(jump-back) 레벨(603)에 도달한다. 이는 판독 동작을 위한 트리거의 역할을 한다. 제 1 간격(604) 동안, 데이터 이동이 실제로 시작할 때까지 충만이 계속해서 하강한다. 참조 번호(605)는 데이터 이동이 일어나지 않는 경우 타임 아웃 때까지의 시간을 보여준다. 참조 번호(606)는 독립적인 동작이 너무 길어진다면 422에서 흐름도로 도시된 상황(C)의 버퍼 충만이 이어짐을 도시한다. 참조 번호(607, 608)는 타이밍도의 분기(branch)(A, B)에 관한 시간 간격을 가리킨다. 이들 갈라짐 모두 블록(417) 마다의 성공적인 판독에 관한 것이지만, 갈라짐(A)에서는, 버퍼 충만이 결코 점프 백 레벨 아래로 떨어지지 않는데 반해, 갈라짐(B)에서는 버퍼 충만이 타임-아웃을 초래하지 않으면서 점프 백 레벨 아래로 떨어진다.
호스트 유닛과 드라이브 사이에서 송신된 명령은 MMC-4 표준에서 발견된 것과 같은 포맷의 것일 수 있고, 그 초안은 http://www.t10.org/ftp/t10/drafts/mmc4/mmc4r03.pdf.에 있다. 바람직한 실시예는 본 발명에 관한 파라미터를 통과시키기 위해 "SET STREAMING" 명령을 사용한다. 당업자라면, 예컨대 기존의 명령 또는 새로운 명령을 포함하는 다른 MMC 형 명령을 사용하는 다른 통신 기술을 생각할 수 있다.
다음은 본 발명을 구현하기 위한 MMC 형 상황에서 사용하기에 적합할 수 있는 명령 포맷을 설명한다. 이들은 단지 예이다. 당업자라면 본 발명이 작용할 다른 포맷이나 명령 사용을 생각할 수 있다.
개시자는 프로필과 특징의 관점에서 드라이브 유닛의 모든 능력을 얻기 위해 GET CONFIGURATION 명령을 내린다. 탑재된 매체에 따라, 일부 프로필과 특징은 통용된다.
프로필의 통용은 드라이브 유닛에 의해 지원될 특징의 기본 집합을 정의한다. 또한, 특징은 드라이브 유닛의 능력과 행동을 명시하는 명령과 모드 페이지들의 집합을 설명한다.
개시자에게 되돌아갈 실시간 스트리밍 특징에 관한 특징 서술자 응답 데이터가 표 2에 정의되어 있다.
표 2 - 실시간 스트리밍 특징 서술자 포맷
Figure 112007004782912-PCT00001
이들 대부분은 스트리밍된 타이밍(ST: Streamed Timing) 비트가 추가된 점을 제외하고는 MMC-4 표준에 따른다. ST 비트가 1이라면, 이는 이러한 논리 유닛이 SET STREAMING 명령의 스트리밍된 타이밍 서술자를 지원하는 것을 나타낸다.
이러한 특징을 지원하는 논리 유닛은 표 3에 열거된 명령을 구현한다.
표 3 - 실시간 스트리밍 특징 명령들
연산 코드 명령 설명 참조
ACh OOh의 유형 필드를 구비한 GET PERFORMANCE와 SW 비트가 1로 될 때 유형 필드 01h 및 WSPD 비트가 1로 될 때 유형 필드 03h MMC-4
a8h READ(12) MMC-4
5Ch 1의 블록 비트를 구비한 판독 버퍼 용량(주의 1) MMC-4
B6h SET STREAMING(주의 2) MMC-4
A7h SET READ AHEAD MMC-4
AAh SW 비트가 1로 될 때 스트리밍 비트를 구비한 기입(12) MMC-4
주의: 1. RBCB가 1로 설정되면 구현됨. 2. WSPD 비트가 1로 설정되면 SET STREAMING 명령의 WRC 필드가 지원됨.
SET STREAMING 명령
단계(402, 502)는 스트림 타이밍 서술자를 드라이브 유닛에 보내기 위해 SET STREAMIMG 명령을 사용하는 것을 수반한다.
SET STREAMIMG 명령은 데이터 속도에 관한 요구사항을 통신하기 위한 방법을 개시자에게 제공한다. 실행 설정은 지속적이고, 새로운 서술자가 보내질 때까지 남아있다.
SET STREAMIMG 명령이 실행을 설정하기 위해 사용된다면, 논리 유닛이 실행 기준을 만족시키기 위해, 명시된 구역에서의 판독 및 기입 재할당을 디스에이블 할 수 있다.
표 4는 SET STREAMIMG 명령과 연관된 특징을 보여준다.
표 4 - SET STREAMIMG 명령과 연관된 특징들
특징 번호 특징 이름 명령 필요
0107h 실시간 스트리밍 강제적임(Mandatory)
CDB 와 그것의 파라미터
SET STREAMING CDB가 표 5에 도시되어 있다.
표 5 - SET STREAMING CDB
Figure 112007004782912-PCT00002
유형
유형 필드(표 6)는 어떤 유형의 데이터가 이동되는지를 명시한다.
표 6 - 유형 필드 정의
유형 서술자 내역(specification)
00h 실행 서술자
01h 스트림 타이밍 서술자
02h - 04h 예약됨
05h DBI 캐시 영역 서술자
이 표는 가능하게 보내질 수 있는 3개의 서술자를 설명하는데, 이러한 서술자에는 실행 서술자(MMC-4에 존재하는), 스트림 타이밍 서술자 및 DBI 캐시 영역 서술자(MMC-4에 존재하는)가 있다.
명령 수행(Command Execution)
SET STREAMING 명령은 개시자가 논리 유닛에게 애플리케이션이 논리 유닛 실행을 위한 특정 요구사항 또는 요구사항들을 가진다는 것을 표시하는 방식을 제공 한다.
스트림 타이밍 서술자(Stream Timing Descriptor)
스트림 타이밍 서술자, 특히 아래의 표 7에 있는 바이트(4 내지 15)는, 스트림 지속성(continuity)을 유지하기 위한 목적으로, 개시자와 논리 유닛이 타이밍 정보를 공유하는 것을 허가한다.
논리 유닛은 스트림 유지를 위해 이용 가능한 시간을 나타내는 이용 가능한 타이머를 유지하게 된다. 이용 가능한 타이머는 다운-카운트 타이머이다. 스트림 타이밍이 인에이블되고, 이용 가능한 타이머가 0에 도달하게 되면, 스트리밍 UNIT ATTENTION 상태의 손실이 존재하게 된다.
표 7 - 스트림 타이밍 서술자
Figure 112007004782912-PCT00003
인에이블
인에이블이 0으로 설정되면, 스트림 타이밍 서술자에 기초한 모든 현재 활동중인 스트림 타이밍 기능이 디스에이블된다. 인에이블이 1로 설정되면, 스트림 타 이밍이 담고 있는 서술자에 있는 파라미터에 따라 인에이블된다.
기입
인에이블이 1로 설정되고 기입이 0으로 설정되면, 판독을 위한 스트림 타이밍 기능이 인에이블되고, 판독을 위한 스트림 타이밍은 이러한 서술자에 있는 파라미터에 따라 초기화된다.
인에이블이 1로 설정되고 기입이 1로 설정되면, 기입을 위한 스트림 타이밍 기능이 인에이블되고, 기입을 위한 스트림 타이밍이 이러한 서술자에 있는 파라미터에 따라 초기화된다.
인에이블이 0으로 설정될 때마다, 기입 비트는 정의되지 않는다.
초기 스트림 타이밍 값
초기 스트림 타이밍 값은 스트리밍 UNIT ATTENTION의 손실 상태가 존재하게 될 때가지의 마이크로세컨드(microsecond)의 개수를 나타낸다.
인에이블이 1로 설정될 때, 논리 유닛은 그것의 이용 가능한 시간 타이머를 초기 스트림 타이밍 값으로 초기화하고 이용 가능한 타이머를 시작한다.
인에이블이 0으로 설정될 때마다, 이러한 파라미터는 정의되지 않는다.
이동 유닛 크기(Transfer Unit Size)
이동 유닛 크기는 이동할 때 마다의 섹터의 바람직한 개수이다.
이동 유닛 증가량(Transfer Unit Increment)
이동 유닛 증가량은, 이동 유닛 섹터가 이동된 후의 이용 가능한 시간 타이머에 추가되는 마이크로세컨드의 개수이다.
당업자는 본 개시물을 읽음으로써, 다른 수정예가 명백해질 것이다. 그러한 수정예는 개시자와 논리 유닛 사이의 데이터 이동을 위한 디바이스의 설계, 제작 및 사용에서의 이미 알려지고, 본 출원에서 이미 설명된 특징 대신 또는 그러한 특징에 추가해 사용될 수 있는 다른 특징을 수반할 수 있다. 비록 본 출원에서 청구항은 특징들의 특별한 조합으로 형식화되었지만, 본 출원의 개시물의 범주는, 본 발명이 그러한 것처럼 동일한 기술적인 문제점의 일부 또는 전부를 완화시키든 그렇지 않든 간에, 본 명세서에서 명시적으로 또는 암시적으로 개시된 임의의 새로운 특징이나 특징들의 새로운 조합 또는 보편적인 것을 또한 포함한다는 것을 이해해야 한다. 본 출원인은 이를 통해 새로운 청구항은 본 출원의 실행 또는 그것으로부터 유도된 또 다른 출원의 실행 동안 그러한 특징들에 맞게 형식화될 수 있다는 점을 알린다.
본 명세서에서 사용된 "포함한다"라는 단어는 추가 요소들을 배제하는 것으로 보아서는 안 된다. 본 명세서에서 사용된 단수 표현은 복수의 요소를 배제하는 것으로 보아서는 안 된다.
전술한 바와 같이, 본 발명은 개시자 유닛과 논리 유닛 사이의 데이터 이동을, 특히 개시자 유닛에서 스트림 버퍼를 사용하는 것을 통해 관리하는 분야에 이용 가능하다.

Claims (13)

  1. 장치로서,
    ° ·하나 이상의 애플리케이션을 실행하는 것,
    ·애플리케이션을 위해 스트리밍 버퍼를 유지하는 것,
    ·논리 유닛에
    ·데이터 이동 요구를 명시하는 파라미터와,
    ·드라이브 유닛이 상기 스트리밍 버퍼의 상태를 추정하는 것을 허용하는 파라미터를 포함하는 하나 이상의 명령을 내리는 것 을 포함하는 처리 유닛 동작을 수행하도록 적응된
    하나 이상의 개시자 처리 유닛과,
    ° ·요구에 응답하여 하나 이상의 저장 매체에 대한 데이터를 이동하는 것,
    ·상기 파라미터들을 수신하고 저장하는 것,
    ·상기 파라미터들과 데이터의 이동에 기초하여, 스트리밍 버퍼의 상 태를 추정하는 것 및
    ·상기 버퍼의 추정된 상태에 기초하여, 독립적인(autonomous) 비-데 이터(non-data) 이동 동작에 관련된 상태를 결정하는 것을
    포함하는 논리 유닛 동작을 수행하도록 적응된 하나 이상의 논리 유닛을
    포함하는, 장치.
  2. 제 1항에 있어서,
    °상기 애플리케이션은 데이터를 판독하고,
    °상기 상태는, 개시자(initiator) 공정이 스트리밍 버퍼에서 더 이상 데이터를 필요로 하지 않지만, 독립적인 비-데이터 이동 동작이 저장 매체로의 판독 액세스 사이에서 시도되어야 하는 것인, 장치.
  3. 제 1항에 있어서,
    °상기 애플리케이션은 데이터를 기입하고,
    °상기 상태는, 개시자 공정이 상기 스트리밍 버퍼로부터 데이터를 제거할 필요가 없지만, 독립적인 비-데이터 이동 동작이 상기 저장 매체로의 기입 액세스 사이에서 시도되는, 장치.
  4. 제 1항에 있어서, 상기 상태는 비-데이터 이동 동작이, 타임 아웃(time out) 에러 메시지가 나오는 동안 일어나는 것을 허용하는, 장치.
  5. 제 1항에 있어서, 상기 드라이브 유닛 동작은
    °특정의 독립적인 비-데이터 이동 동작이, 또 다른 데이터 이동이 요구되기 전에 남아있는 시간보다 길게 걸리는지를 결정하는 것과,
    °그러한 결정에 응답하여 개시자 처리 유닛으로 에러 메시지를 보내는 것을
    포함하는, 장치.
  6. 제 1항에 있어서, 논리 유닛은 개시 전에 비-데이터 이동 동작을 개시할 시간이 있는지를 테스트하는, 장치.
  7. 제 1항에 있어서, 상기 독립적인 동작은 에러 복구 동작인, 장치.
  8. 제 1항에 있어서, 상기 독립적인 동작은 하나 이상의 드라이브 메커니즘이나, 논리 유닛의 하나 이상의 저장 매체의 물리적인 유지에 관한 것인, 장치.
  9. 제 1항에 있어서, 상기 독립적인 동작은 하나 이상의 드라이브 메커니즘과 논리 유닛의 하나 이상의 데이터 저장 매체 사이의 상대적인 위치 선정에 관한 것인, 장치.
  10. 제 1항에 있어서, 상기 파라미터는
    ·초기 스트림 타이밍 값,
    ·이동 유닛 크기,
    ·이동 유닛 증가량,
    ·판독 또는 기입 동작이 필요한지를 표시하는 기입 플래그를
    포함하는, 장치.
  11. 드라이브 유닛을 제어하는 방법으로서,
    °하나 이상의 개시자 처리 유닛이
    ·하나 이상의 애플리케이션을 실행하는 동작,
    ·애플리케이션을 위해 스트리밍 버퍼를 유지하는 동작,
    ·드라이브 유닛에
    ·데이터 이동 요구를 명시하는 파라미터와,
    ·드라이브 유닛이 상기 스트리밍 버퍼의 상태를 결정하는 것을 허용하는 파라미터를 포함하는 하나 이상의 명령을 내리는 동 작을 포함하는 처리 유닛 동작을 수행하는 단계와,
    °하나 이상의 드라이브 유닛이
    ·요구에 응답하여 저장 매체에 대한 데이터를 이동하는 동작,
    ·상기 파라미터들을 수신하고 저장하는 동작,
    ·상기 파라미터들과 데이터의 이동에 기초하여, 스트리밍 버퍼의 상 태를 계산하는 동작 및
    ·상기 버퍼의 계산된 상태에 기초하여, 독립적인 비-데이터 이동 동 작에 대한 상태를 결정하는 동작을
    포함하는 드라이브 유닛 동작을 수행하는 단계를 포함하는, 드라이브 유닛을 제어하는 방법.
  12. 데이터 처리 시스템으로서,
    ·스트리밍의 손실 전에 시간에 관한 데이터 항목을 포함하는 정보를, 드라이브 유닛에 이동시키도록 적응된 명령을 포함하는 명령 집합을 사용하도록 적응된 하나 이상의 호스트 유닛과,
    · °상기 명령을 수신하고 상기 데이터 항목으로부터의 스트리밍의 손실 전에 이용 가능한 시간을 유도하며,
    °스트리밍의 손실 전에 이용 가능한 시간에 기초한 플렉시블한 타임 아웃에 따라 자체 동작을 조정하도록
    적응된 하나 이상의 드라이브 유닛을 포함하는,
    데이터 처리 시스템.
  13. 드라이브 유닛으로서,
    ·하나 이상의 호스트 유닛으로부터 데이터 이동 요구를 수신하기 위한 수 단,
    ·하나 이상의 저장 매체를 액세스하기 위한 수단 및
    · °데이터 송신 요구에 관한 명령 파라미터들을 수신 및 저장하고,
    °스트리밍 수행을 위한 필요를 분별하며,
    °스트리밍의 손실 전에 남은 시간을 결정하고,
    °남은 시간에 따라 독립적인 비-데이터 이동 동작을 조정하도록
    적응된 국부(local) 처리 능력을
    포함하는 드라이브 유닛.
KR1020077001175A 2004-07-20 2005-07-18 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간예산책정 KR20070032788A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US58935904P 2004-07-20 2004-07-20
US60/589,359 2004-07-20
PCT/IB2005/052381 WO2006011106A2 (en) 2004-07-20 2005-07-18 Time budgeting for non-data transfer operations in drive units

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026362A Division KR20110133059A (ko) 2004-07-20 2005-07-18 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간 예산책정

Publications (1)

Publication Number Publication Date
KR20070032788A true KR20070032788A (ko) 2007-03-22

Family

ID=35159726

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117026362A KR20110133059A (ko) 2004-07-20 2005-07-18 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간 예산책정
KR1020077001175A KR20070032788A (ko) 2004-07-20 2005-07-18 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간예산책정

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020117026362A KR20110133059A (ko) 2004-07-20 2005-07-18 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간 예산책정

Country Status (8)

Country Link
US (1) US7620750B2 (ko)
EP (1) EP1782175B1 (ko)
JP (2) JP5399631B2 (ko)
KR (2) KR20110133059A (ko)
CN (1) CN1989484B (ko)
AT (1) ATE503220T1 (ko)
DE (1) DE602005027083D1 (ko)
WO (1) WO2006011106A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7317718B1 (en) * 2002-12-06 2008-01-08 Juniper Networks, Inc. Flexible counter update and retrieval
US20070060135A1 (en) * 2005-08-22 2007-03-15 Jeng-Tay Lin Method and device for streaming wireless digital content
JP2009282907A (ja) * 2008-05-26 2009-12-03 Seiko Epson Corp データベースアクセスサーバおよびデータベースアクセスシステム
US9311099B2 (en) * 2013-07-31 2016-04-12 Freescale Semiconductor, Inc. Systems and methods for locking branch target buffer entries
US9928890B2 (en) * 2016-08-29 2018-03-27 Apple Inc. System and method for calibrating memory using credit-based segmentation control
TWI718532B (zh) * 2019-05-10 2021-02-11 技嘉科技股份有限公司 固態硬碟以及固態硬碟的效能優化方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4888692A (en) * 1986-08-11 1989-12-19 Texas Instruments Incorporated Real-time scheduling system
US4888691A (en) * 1988-03-09 1989-12-19 Prime Computer, Inc. Method for disk I/O transfer
JPH08227343A (ja) * 1995-02-21 1996-09-03 Fujitsu Ltd 2次記憶装置の制御装置および制御システム
JP3142497B2 (ja) * 1997-04-01 2001-03-07 富士通テン株式会社 ディスク再生装置
JP3867447B2 (ja) * 1999-06-22 2007-01-10 ソニー株式会社 ディスク型データ記録再生装置、及び、ディスク型データ記録再生装置を搭載する情報処理システム
US6366781B1 (en) * 1999-07-08 2002-04-02 Ericsson Inc. System and method for time of arrival based positioning during handover
JP2001283509A (ja) * 2000-03-31 2001-10-12 Matsushita Electric Ind Co Ltd 情報記録再生装置および情報記録再生方法
US6941419B2 (en) * 2000-05-24 2005-09-06 Seagate Technology Llc Method and apparatus for disc drive buffer segment management
EP1160787A2 (en) * 2000-06-02 2001-12-05 Hewlett-Packard Company Variable speed writing on a CD-R, CD-RW and DVD-RW media
JP2002157825A (ja) * 2000-11-21 2002-05-31 Ricoh Co Ltd 情報記録装置
JP2003309797A (ja) * 2002-04-17 2003-10-31 Sharp Corp 低消費電力モードを備えたハードディスクビデオカメラ
JP2007503078A (ja) 2003-05-19 2007-02-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ担体ドライブ装置内のデータ担体速度を設定する方法

Also Published As

Publication number Publication date
US20070226397A1 (en) 2007-09-27
JP5399631B2 (ja) 2014-01-29
EP1782175A2 (en) 2007-05-09
ATE503220T1 (de) 2011-04-15
WO2006011106A2 (en) 2006-02-02
KR20110133059A (ko) 2011-12-09
JP2008507748A (ja) 2008-03-13
CN1989484B (zh) 2010-06-23
DE602005027083D1 (de) 2011-05-05
EP1782175B1 (en) 2011-03-23
WO2006011106A3 (en) 2006-06-29
JP5595334B2 (ja) 2014-09-24
US7620750B2 (en) 2009-11-17
JP2011216102A (ja) 2011-10-27
CN1989484A (zh) 2007-06-27

Similar Documents

Publication Publication Date Title
US8010742B2 (en) Using idle mode prediction to improve storage system performance
JP5958020B2 (ja) ストレージシステム
TWI409641B (zh) 固態磁碟驅動器以及操作頻率控制方法
US6381677B1 (en) Method and system for staging data into cache
US7640381B1 (en) Input/output decoupling system method having a cache for exchanging data between non-volatile storage and plurality of clients having asynchronous transfers
US20030120871A1 (en) Storage apparatus and input/output control method for the storage apparatus
EP0093239A2 (en) Lookahead I/O device control subsystem
KR20070032788A (ko) 드라이브 유닛에서의 비-데이터 전달 동작을 위한 시간예산책정
JPH01305418A (ja) 最適化されたレコード媒体取付け方法
US10346051B2 (en) Storage media performance management
US20070124542A1 (en) Method and system to control write caches to reduce risk of data loss
CN101174198B (zh) 数据存储系统及其数据存取方法
US20100185793A1 (en) Storage device and data transfer method for the same
CN104063184A (zh) 磁盘记录方法及其非易失性存储媒体与电子装置
US11150809B2 (en) Memory controller and storage device including the same
US20030172229A1 (en) Systems and methods for detecting and compensating for runt block data transfers
JP6721821B2 (ja) ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
US8285932B2 (en) Mass storage system with improved usage of buffer capacity
JP2001084110A (ja) 磁気ディスク装置、及び磁気ディスク装置のディスクアクセス方法、並びに磁気ディスク装置用ディスクアクセス制御プログラムを記録した記録媒体
JPH07121308A (ja) ディスク装置のライトバック制御方法
US20160077748A1 (en) Storage control device
KR20060013412A (ko) 실시간 쓰기 오류의 처리
JP2023130038A (ja) ディスクアレイ装置、負荷分散方法、及び負荷分散プログラム
JPH0650479B2 (ja) データ処理装置
JPS5823365A (ja) 位置決め機構制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee