KR20020064357A - 디스크 드라이브내 버퍼 내부 및 외부 데이터 전송 관리용버퍼 관리 시스템 - Google Patents

디스크 드라이브내 버퍼 내부 및 외부 데이터 전송 관리용버퍼 관리 시스템 Download PDF

Info

Publication number
KR20020064357A
KR20020064357A KR1020027008037A KR20027008037A KR20020064357A KR 20020064357 A KR20020064357 A KR 20020064357A KR 1020027008037 A KR1020027008037 A KR 1020027008037A KR 20027008037 A KR20027008037 A KR 20027008037A KR 20020064357 A KR20020064357 A KR 20020064357A
Authority
KR
South Korea
Prior art keywords
buffer
disk
sector
data
segment
Prior art date
Application number
KR1020027008037A
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 KR20020064357A publication Critical patent/KR20020064357A/ko

Links

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
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

디스크 드라이브내의 버퍼 내외부로 데이터 전송을 관리하기 위한 방법 및 시스템이 개시된다. 벡터 버퍼 관리(VBM) 시스템의 동작은 소프트웨어 기반 제어 모듈에 의해 처리된다. 제어 모듈은 버퍼표를 버퍼 섹터로 분할함으로써 버퍼표를 생성하고 유지보수한다. 버퍼 섹터는 버퍼 세그먼트 또는 버퍼표가 분리된 순환 연계 리스트로 추가 배열된다. 제어 모듈은 애플리케이션 모듈이 버퍼표를 구현함으로써 전송을 유효하게 한다. 일단 애플리케이션 모듈이 임의로 제어 모듈에 의해 인덱스 섹터에 위치하면, 데이터 전송은 애플리케이션 모듈이 인덱스 섹터에 의해 식별된 특정 버퍼 세그먼트를 워크 스루할 때 이루어진다. 버퍼 세그먼트에 대한 애플리케이션 모듈의 특정 제어는, 호스트와 디스크 넥스트 포인터에 각각 연결된, 호스트와 디스크 어드레스 포인터를 통해 처리한다.

Description

디스크 드라이브내 버퍼 내부 및 외부 데이터 전송 관리용 버퍼 관리 시스템{BUFFER MANAGEMENT SYSTEM FOR MANAGING THE TRANSFER OF DATA INTO AND OUT OF A BUFFER IN A DISC DRIVE}
디스크 드라이브내에서, 데이터는 자화가능한 매체로 코팅된 하나 이상의 디스크 상에 저장되어 있다. 데이터는, 통상적으로 판독/기록 헤드로서 불리고, 디스크와 관련한 헤드의 이동을 위해 방사형 액추에이터에 부착된, 트랜스듀서의 어레이에 의해 디스크에 기록된다. 정보는 데이터가 판독/기록 헤드에 의해 디스크로부터 판독될 때까지 디스크상의 다수의 동심형 원형 트랙상에 저장되어 있다. 일반적으로 각각의 동심형 트랙은 개별적으로 어드레스가능한 다수의 데이터 섹터로 분할되어 있다. 헤드는 원하는 트랙과, 다수의 부품중 호스트 컴퓨터를 포함하는, 외부 환경 사이에서 데이터를 전송하는데 사용된다. 판독동작동안 헤드는 이전에 디스크 트랙상에 기록된 데이터를 감지하고 정보를 외부 환경으로 전송한다. 기록동작동안, 데이터는 디스크 트랙상에 기록된다. 일단 데이터가 디스크에 기록되면, 각각의 섹터는, 단일 기록 동작동안 디스크에 기록될 수 있는 가장 작은 양인, 데이터 블록을 홀딩한다. 일반적으로 청크(chunk), 또는 클러스터로 불리는, 인접한 블록은, 통상적으로 커맨드로서 불리는 단일 기록 동작동안 디스크에 기록되어 있다. 원하는 트랙의 중심상에 헤드를 정확하게 위치시키는 것은 이러한 동작-판독 및 기록에 중요하다.
통상적으로, 헤드는 액추에이터 보이스 코일 모터에 의해 디스크 표면과 관련하여 위치한다. 보이스 코일 모터는 피봇 샤프트 둘레의 액추에이터 몸체를 피봇하고, 이로 인해 헤드가 디스크 표면을 가로지르며 이동하는 것이 바람직하다. 따라서 액추에이터는 헤드가 디스크의 내부 반경과 외부 반경 사이에서 정확한 형태로 전후로 이동할 수 있게 한다. 액추에이터 암은 액추에이터 암의 후방 단부에서 보이스 코일 모터에 제공되는 제어 신호에 의해 구동된다. 서보 제어 시스템은 디스크 드라이브의 디스크 표면으로부터 판독된 서보 신호를 사용하여 액추에이터의 위치를 감지하고 디스크 상의 헤드의 이동을 제어하는데 사용된다. 서보 제어 시스템은 디스크 상에 저장된 서보 정보에 의존한다. 이러한 정보의 신호는 일반적으로 디스크와 관련한 현재의 헤드 위치, 즉 현재의 트랙 위치를 지시한다. 서보 제어 시스템은 감지된 정보를 헤드 위치를 유지하고 어떻게 최적으로 헤드를 원하는 트랙 상의 중심의 새로운 위치로 이동시킬지를 결정한다. 다음으로 서보 제어 시스템은 원하는 새로운 트랙 상에 헤드를 위치시키거나 또는 원하는 현재의 트랙 상의 위치를 유지하도록 제어 신호를 보이스 제어 모터에 전달한다.
호스트 컴퓨터와 디스크 사이의 파일 전송은 2단계 전송 방식에 의해 특징지어진 다단계 설정내에서 제어된다. 거시적 단계에서, 트랙 섹터는 파일이 분할되는 데이터 섹터를 포함하도록 선택되어 있다. 특히, 거시적(macroscopic sense)으로. 트랙을 따르는 셀은 후속 판독을 위해 파일의 비트 구조에 해당하도록 자화되어 있다. 통상적으로 디스크 드라이브는 이러한 2단계 전송 방식을 구현하기 위해 버퍼를 포함한다. 버퍼의 용도는 호스트 컴퓨터와 디스크 사이의 데이터 전송동안 데이터 섹터들을 수용하여 적절한 부품-호스트 컴퓨터 또는 디스크에 데이터를 전송하는 것이다.
통상적으로, 시스템 마이크로프로세서는 섹터들을 데이터가 판독 또는 기록될 트랙 상에 위치시키도록 설계된 프로그램을 포함한다. 또한 마이크로프로세서는 섹터에서, 또는 거시적 단계에서 파일의 전송을 제어하도록 프로그래밍되어 있다. 버퍼로 및 버퍼로부터의 데이터 전송은 문자-대-문자(character-by-character) 형식으로 수행된다. 문자-대-문자 환경으로 전송을 수행하는 종래 방식은, 버퍼 제어기, 호스트 인터페이스 제어기, 및 디스크 인터페이스 제어기와 같은 상태 장치의 사용을 통해 이루어졌다.
U.S. 특허 5,276,662에 기술된 것처럼, 호스트와 디스크 사이의 파일 전송은 시스템 마이크로프로세서의 전체 제어와 상태 장치 제어기의 더욱 정밀한 제어 하에서 수행된다. 예컨대, 파일이 디스크에 기록될 때, 호스트 컴퓨터는 마이크로프로세서가 파일이 기록될 트랙상에 섹터를 한정할 수 있도록 시스템 마이크로프로세서를 일반화된 정보로 프롬프팅한다(prompt). 다음에 마이크로프로세서는 섹터 단계에서 전송을 유발하는 동작을 구현함으로써 전송을 개시한다. 이러한 동작은서보 제어 시스템이 파일을 수신할 선택된 트랙 상에 헤드를 위치시키는 커맨드와 전송에 사용될 버퍼의 세그먼트를 식별하는 것을 포함한다. 마이크로프로세서는 호스트 인터페이스 제어기가 버퍼 세그먼트로의 데이터 전송을 개시하도록 명령한다. 일반적으로, 버퍼 제어기 및 호스트 컴퓨터와 함께 동작하는, 호스트 인터페이스 제어기는 파일 문자를 버퍼 세그먼트의 섹터 블록으로 전송할 때 버퍼에 정밀한 제어를 제공한다. 일단 판독/기록 헤드가 파일을 수신할 트랙 상에 위치하면 디스크 인터페이스 제어기는 시스템 마이크로프로세서에 의해 부여된 커맨드에 따라서 데이터 블록을 버퍼 세그먼트로부터 디스크상의 적절한 섹터로의 전송을 제어한다. 다음으로 판독/기록 헤드에 연결된 판독/기록 회로는 데이터 트랙을 따라 셀을 자화시킨다.
일반적으로, 카운터와 인터럽트가 버퍼로의 데이터 전송을 "감시(watch over)"하기 위해 버퍼와 함께 사용된다. 통상적으로 호스트와 디스크 인터페이스 제어기 내에 위치한, 카운터는 호스트와 버퍼 사이에서 및 디스크와 버퍼 사이에서 발생하는 다수의 전송을 카운팅한다. 이러한 계산에 기초하여, 인터럽트 발생기는 버퍼로의 전송이 선택된 수에 도달한 후 즉시 마이크로프로세서에 인터럽트를 제공한다. 카운터와 인터럽트의 사용은 전송이 이루어질 때 버퍼가 가득 채워졌는지에 대하여 질의하는 것이다.
디스크 드라이브의 가장 심각한 결점은 판독 또는 기록 동작이 개시되는 시간과 기계적으로 완료되는 시간 사이가 매우 길게 지연된다는 것이다. 이러한 지연은 판독/기록 헤드가 원하는 트랙으로 이동하는 시간인 탐색 대기, 원하는 트랙섹터가 판독/기록 헤드 아래에 위치할 때까지 디스크가 회전하는 시간인 회전 대기, 및 데이터 블록이 디스크 표면으로부터 판독되거나 또는 기록되는 시간에 해당하는 추가의 지연을 포함한다. 상기 언급한 지연으로 인해, 디스크 드라이브가 동작하는 속도는 통상적으로 컴퓨터 시스템의 다른 부품의 속도보다 느리다. 이러한 경우에, 전체 시스템 성능을 위하여, 호스트 시스템이 데이터를 버퍼에 기록하고, 드라이브가 이러한 데이터를 드라이브가 데이터를 매체상에 입력하는 (기계적인) 작업을 수행하기에 최적인 늦은 시간에 디스크에 연관하는 것이 가능하다. 일반적으로, 기록 캐시로 불리는, 이러한 개념은 데이터 저장 장치에 공통적이다.
대부분의 임의의 소프트웨어 애플리케이션과 관련한 디스크 액세스의 수를 감소시키기 위한 공지된 수단은 단일 공통 캐시 메모리의 사용을 포함한다. 통상적으로 휘발성 랜덤 액세스 메모리(VRAM) 장치인, 캐시 메모리는 디스크로부터 판독될 데이터 블록 또는 기록될 블록을 저장한다. 일단 시스템이 디스크 판독 동작을 부여하면 캐시는 먼저 요청된 데이터 블록이 이미 이용가능한지를 알기 위해 검사하며, 이로 인해 통상적인 물리적 디스크 판독을 방지한다. 만약 데이터 블록이 이용가능하지 않다면, 시스템은 판독/기록 헤드가, 데이터가 캐시로 전송될, 디스크 판독을 수행하도록 지시한다.
U.S. 특허 5,765,193에 개시된 것처럼, 데이터 파일과 같은, 관련 데이터에 대하여 특정될 디스크로부터 데이터를 요청하는 것이 일반적이다. 데이터 파일은 트랙의 인접한 섹터내의 디스크상에 기록되고 저장될 것이다. 따라서, "한 위치에 데이터가 저장된 때 또는 저장될 때, 물리적으로 인접한 위치에서 저장된 또는 저장될 데이터가 동시에 또는 상호 순차로 바로 액세싱되는 것이 매우 바람직하다."는 것을 설명하는 기준 원리는 컴퓨터 프로그래머들 사이에 일반적으로 공지되어 있다. 이러한 원리를 실현하기 위하여, 디스크에 기록될 데이터는 일반적으로 디스크 상에 기록하기 이전에 기록 캐시로 전송된다. 이러한 과정은 2 개의 관점에서 유리하다. 첫째로, 호스트가 디스크상에서 실제 판독 동작을 수행할 필요없이 데이터를 빨리 액세싱하는 것이 가능하다. 기록 캐시로부터 직접 판독하기 위하여, 시스템은 디스크 대신에 캐시내에서 데이터 블록이 홀딩될 트랙을 유지해야 한다. 둘째로, 판독/기록 헤드에 컴퓨터의 다른 부품과 격차를 해소하는 시간을 제공한다.
일단 캐시가 채워지면, 시스템 마이크로프로세서는 캐시내의 데이터 블록을 디스크 드라이브로 전송하도록 기록 동작을 초기화한다. U.S. 특허 5,765,193에 추가로 개시된 것처럼, 기록 캐시로부터 디스크로 데이터를 "순차적으로" 전송 관리하기 위한 여러 방법들이 존재한다. 기록 캐시를 관리하기 위한 한가지 일반적인 기술은 디스크 기록 동작에 인접한 데이터 블록에 대한 기록 캐시를 찾는 명령을 추가하는 것이다. 적어도 2 개의 인접한 데이터 블록의 존재는, 시스템이 디스크 기록 동작에 따라서 전체로 전송될, 클러스터를 한정한다. 디스크의 액세싱 수를 감소시킴으로써, 이러한 기술은 시간이 소모되는 탐색 동작의 전체 수를 감소시킨다. 제 2 공지된 기술은, 사용 순서대로 데이터 블록의 목록을 포함하는, "최근 최소사용"(LRU) 큐를 유지하는 것을 포함한다. 이러한 기술은, 디스크상의 의도된 저장 위치와 관련하여 데이터 블록에 할당된 수인, 가상의 블록 수를 시스템에 의해 가장 최근 사용 순서와 관련하여 데이터 블록을 분류하는데 사용한다. 가장 최근에 사용된 데이터 블록은 최근에 적게 사용된 데이터 블록보다 다시 사용되기 쉽다는 이론에 기초하여, 시스템은 최근에 적게 사용된 데이터 블록을 디스크에 전송하지만 가장 최근에 사용된 데이터 블록은 중앙관리장치에 의해 빨리 액세싱하기 위하여 기록 캐시내에 계속 유지한다. 제 3 의, 더욱 오래된 기술은 선입선출(first-in-first-out) 이론에 따라 캐시로부터 블록을 간단히 제거하는 것이다.
데이터를 버퍼로부터 디스크로 전송하는 것과 관련한 상기 3개의 모든 기술에는 데이터 파일의 저장 및 검색을 실행하는 유효한 수단이 제공되지만, 제한된 데이터 공간의 버퍼로부터 디스크로의 데이터 전송과 함께 문제점이 발생한다. 특히, 만약 버퍼로부터의 데이터가 선입선출 형태로 디스크에 전송되지 않는다면, 자체로부터 데이터가 전송되는 버퍼 섹터는 빈 섹터로부터 순서대로 낮은 버퍼 섹터가 실제로 비워질 때까지 재사용될 수 없다. 예컨대, 100-섹터 버퍼내에서, 만약 섹터 45 내지 50이 디스크에 기록된다면, 특정 버퍼 공간은 버퍼 섹터 1 내지 44가 비워질 때까지 호스트에 의해 재사용될 수 없다. 버퍼 데이터 공간의 제한된 양의 디스크 드라이브를 다룰 때, 이러한 "순차적" 버퍼 액세싱 방법은 기록 캐시와 관련하여 호스트 컴퓨터의 심각한 결함이다.
본 발명은 일반적으로 디스크 드라이브 캐시 기술에 관한 것으로 특히 호스트 컴퓨터와 디스크 드라이브의 디스크 사이에서 데이터 전송을 제어하기 위한 버퍼 관리 시스템에 관한 것이다.
도 1은 주요 내부 부품을 도시하는 본 발명의 바람직한 실시예를 통합한 디스크 드라이브의 평면도이다.
도 2는 도 1의 디스크 드라이브를 제어하는데 사용된 주요 기능의 부품들을 도시하는 기능적 블록도이다.
도 3은 디스크 표면상에 주요 부품을 도시하는 디스크의 평면도이다.
도 4는 본 발명의 바람직한 실시예에 따라서 버퍼 관리 시스템의 기능적 블록도이다.
도 5는 특히 도 4의 애플리케이션 및 제어 모듈상에 포커싱된 버퍼 관리 시스템의 기능적 블록도이다.
도 6은 도 4의 애플리케이션 모듈 부품을 개략적으로 나타낸다.
도 7은 호스트 컴퓨터에 의한 기록 명령에 응답하여 제어 모듈의 동작을 도시하는 흐름도이다.
도 8은 빈칸_목록의 섹터를 하나 이상의 세그먼트로 배열하는 것을 도시하는 흐름도이다.
도 9는 개선 프로세스를 도시하는 흐름도이다.
도 10은 버퍼로부터 디스크로 데이터를 연관하는 명령이 주어질 때 제어 모듈의 동작을 도시하는 흐름도이다.
도 11은 통합 프로세스를 도시하는 흐름도이다.
도 12는 본 발명의 동작을 일반적으로 도시하는 흐름도이다.
도 13은 도 4의 애플리케이션 모듈의 순회 부품을 개략적으로 나타낸다.
이러한 배경으로 본 발명이 개발되었다. 본 발명은 버퍼 데이터 공간이 더욱 유효하게 사용될 수 있도록 버퍼 섹터를 재배열하기 위한 수단이다. 특히, 본발명에 따라서, 이하에서 "VBM"으로 불리는, 벡터화된 버퍼 관리 시스템에는 버퍼 내외부로의 데이터 전송이 임의의 또는 일관성없는 방식으로 이루어질 수 있도록 버퍼 공간을 재배열하기 위한 수단을 제공한다. 요컨대, VBM은 데이터가 비순차적인 방식으로 버퍼 섹터에 및 버퍼 섹터로부터 기록될 수 있게 한다. VBM은 3개의 부품:알고리즘 부품, 하드웨어 부품, 및 소프트웨어 부품을 포함한다.
알고리즘 부품은, VBM 표로 불리는, 섹터의 논리적으로 구성된 단일 연계 목록(single linked list)으로서 데이터 버퍼의 모델을 한정한다. VBM 표내의 각각의 엔트리는 버퍼의 단일 섹터를 나타낸다. 버퍼의 각각의 섹터는 디스크 드라이브내의 디스크상에 섹터를 나타내는 논리 블록 어드레스(LBA)를 갖는 데이터 블록을 저장한다. 하드웨어 부품이 현재 위치한 버퍼 섹터는 인덱스 섹터로 불린다. 각각의 인덱스 섹터의 값은 "넥스트(next)" 섹터이며, 물리적 버퍼 섹터 수는 하드웨어 부품이 현재 인덱스 섹터에 또는 현재 인덱스 섹터로부터 데이터 전송의 완료를 참고하기 위한 "넥스트" 섹터를 지시한다.
하드웨어 부품은 버퍼 내외부로 데이터의 물리적 전송 역할을 담당한다. 디스크 기록 동작동안, 하드웨어 부품은 데이터 전송 관리의 기반으로서 "VBM" 표를 사용한다. 이것은 데이터를 버퍼에 연관하는 역할을 하는 호스트 어드레스 포인터(HAP)와 버퍼로부터 디스크로 데이터를 전송하는 역할을 하는 디스크 어드레스 포인터(DAP)를 설정함으로써 이루어진다. 이러한 포인터의 초기값은 소프트웨어 부품에 의해 임의로 선택된다. HAP와 DAP는 호스트 넥스트 포인터(HNP)와 디스크 넥스트 포인터(DNP)에 각각 연결된다. 넥스트 포인터의 기능은 어드레스 포인터를 넥스트 섹터로 처리하기 위하여 인덱스 섹터로부터 넥스트 섹터값을 판독하는 것이다. 또한 하드웨어에는 CPU가 다른 작업을 수행할 때에도, 다수의 표 엔트리를 계속 순회(traverse)할 수 있도록 버퍼 할당을 관리하는 작업과 독립된 자동화된 순회 기능이 제공된다.
소프트웨어 부품은 버퍼 섹터의 최대 가능한 수가 임의의 주어진 시간에서 새로운 호스트 기록 커맨드을 이용할 수 있도록 보장하고, 호스트의 요청을 완료하는데 필요한 디스크 동작의 수를 최소화함으로써 기록 캐시의 장점을 최대화한다. 특히, 소프트웨어에는 데이터 버퍼 내외부로 데이터 전송을 처리하기 위하여 하드웨어에 의해 사용된 VBM 표를 생성하고 유지보수하기 위한 메커니즘이 제공된다. 소프트웨어 부품은 추가로 하드웨어 부품의 제어를 처리하는 역할을 한다. 빈(free) 버퍼 섹터의 목록을 생성함으로써, 소프트웨어 부품에는 또한 빈 공간(free space)으로부터 캐시된 데이터를 분리, 유용할 때 버퍼표의 버퍼 세그먼트를 단일 디스크 동작으로 통합, 잉여 데이터를 홀딩하는 임의의 버퍼 섹터를 재사용, 및 임의의 순서로 버퍼 섹터를 빈칸 목록(free list)으로 복귀시키는 VBM 능력이 제공된다.
본 발명을 특징짓는 장점 이외에 이러한 여러 다른 특징은 하기 상세한 설명과 해당 도면을 참조하여 분명하게 나타난다.
본 발명의 바람직한 실시예에 따라서 구성된 디스크 드라이브(100)가 도 1에도시되어 있다. 디스크 드라이브(100)는 디스크 드라이브(100)의 여러 부품이 장착된 베이스(102)를 포함한다. 부분적으로 절단되어 도시된, 상부 커버(104)는 종래 방식으로 디스크 드라이브(100)의 내부, 밀폐된 환경을 형성하기 위해 베이스(102)와 함께 작용한다. 부품들은 일정한 고속도로 하나 이상의 디스크(108)를 회전시키는 스핀들 모터(106)를 포함한다. 정보는, 디스크(108)에 인접하여 위치한 베어링 샤프트 어셈블리(112) 둘레를 회전하는, 액추에이터 어셈블리(110)를 사용하여 디스크(108)상의 트랙(160)(도 3)에 기록되고 트랙(160)으로부터 판독된다. 액추에이터 어셈블리(110)는 디스크(108) 방향으로 연장하며, 각각의 액추에이터 암(114)으로부터 연장하는 하나 이상의 플렉서(116)를 구비하는 다수의 액추에이터 암(114)을 포함한다. 헤드(118)를 관련된 디스크(108)의 해당 표면상에 밀접하게 활주가능하게 하는 공기 베어링 슬라이더를 포함하는 헤드(118)는 각각의 플렉서(116)의 먼 단부에 장착되어 있다.
통상적으로 스핀들 모터(116)는 디스크 드라이브(100)가 연장된 주기동안 사용되지 않을 때 전원이 공급되지 않는다. 헤드(118)는 드라이브 모터에 전원이 공급되지 않을 때 디스크(108)의 내부 직경 부근의 파크 존(120)상으로 이동한다. 헤드(118)는, 헤드(118)가 파킹될 때 액추에이터 어셈블리(110)의 의도되지 않은 회전을 방지하는, 액추에이터 래치 장치(actuator latch arrangement)를 사용하여 파크 존(120)상에 고정된다.
헤드(118)의 방사형 위치는, 통상적으로 액추에이터 어셈블리(110)에 부착된 코일(126)뿐 아니라 코일(126)이 담겨진 자기 필드를 만드는 하나 이상의 영구 자석(128)을 포함하는, 보이스 코일 모터(VCM)(124)를 사용하여 제어된다. 코일(126)에 전류를 제어하여 인가하는 것은 코일(126)이 공지된 로렌쯔 관계식에 따라서 이동하도록 영구 자석(128)과 코일(126) 사이의 자기 상호작용을 유발한다. 코일(126)이 이동함에 따라서, 액추에이터 어셈블리(110)는 베어링 샤프트 어셈블리(112)둘레를 피봇하고 헤드(118)가 디스크(108) 표면을 횡단하여 이동하게 한다.
동작동안 액추에이터 어셈블리(110)의 피봇 이동이 가능한 한 플렉스 어셈블리(130)는 필수 전기 접속 경로를 액추에이터 어셈블리(110)에 제공한다. 플렉스 어셈블리는 헤드 전선(도시 안됨)이 접속된 인쇄 회로 기판(132)을 포함하고; 헤드 전선은 액추에이터 암(114)과 플렉서(116)를 따라 헤드(118)에 라우팅된다. 인쇄 회로 기판(132)은 통상적으로 기록 동작동안 헤드(118)에 인가된 기록 전류를 제어하고 판독 동작동안 헤드(118)에 의해 생성된 판독 신호를 증폭하기 위한 회로부를 포함한다. 플렉스 어셈블리는 베이스 데크(102)를 통해 디스크 드라이브(100)의 기저측부에 장착된 디스크 드라이브 인쇄 회로 기판(도시 안됨)과 통신하기 위하여 플렉스 브래킷(134)에서 종료된다.
도 2를 참조하면, 일반적으로 디스크 드라이브 인쇄 회로 기판상에 위치하고 디스크 드라이브(100)의 동작을 제어하는데 사용된 주요 기능의 회로를 도시하는 도 1의 디스크 드라이브(100)의 기능적 블록도가 도시되어 있다. 디스크 드라이브(100)를 종래 방식으로 장착한 호스트 컴퓨터(140)에 실시가능하게 접속된 디스크 드라이브(100)가 도 2에 도시되어 있다. 제어 통신 경로는 호스트 컴퓨터(140)와 디스크 드라이브 마이크로프로세서(142) 사이에 제공되고, 마이크로프로세서(142)는 일반적으로 마이크로프로세서 메모리(MEM)(143)내에 저장된 마이크로프로세서(142)용 프로그램과 함께 상위 레벨 통신과 제어를 디스크 드라이브(100)에 제공한다. MEM(143)는 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 및 마이크로프로세서(142)용 상주 메모리의 다른 소스를 포함할 수 있다. 디스크(108)는 스핀들 제어 회로(148)에 의해 일정한 고속도로 회전한다. 헤드(118)의 방사형 위치는 액추에이터 어셈블리(110)내의 코일에 전류를 인가하여 제어된다. 서보 제어 회로(150)는 이러한 제어를 제공한다.
데이터는, 호스트 컴퓨터(140)와 디스크 드라이브(100) 사이에서 고속 데이터 전송을 촉진시키는 버퍼(145)를 포함하는, 디스크 드라이브 인터페이스(144)를 이용하여 호스트 컴퓨터(140)와 디스크 드라이브(100) 사이에서 전송된다. 따라서 디스크 드라이브(100)에 기록될 데이터는 호스트 컴퓨터(140)로부터 버퍼(145)로 통과하고, 데이터를 인코딩하고 차례로 나열하며 헤드(118)에 필수 기록 전류 신호를 제공하는, 판독/기록 채널(146)을 통과한다. 이전에 디스크 드라이브(100)에 의해 저장된 데이터를 검색하기 위하여, 판독 신호가 헤드(118)에 의하여 생성되고 판독/기록 채널(146)에 제공된다. 인터페이스(144)는 판독 신호 디코딩, 에러 검출, 및 에러 수정 동작을 수행한다. 다음으로 인터페이스(144)는 호스트 컴퓨터(140)에 후속 전송하기 위해 검색된 데이터를 버퍼(145)에 출력한다. 디스크 드라이브(100)의 이러한 동작은 당업계에 잘 공지되어 있고, 예컨대, 1994년 6월 4일에 Shaver등에 수여된 U.S. Pat. No. 5,276,662 에 개시되어 있다.
도 3을 참조하면, 디스크(108)의 표면상에 주요 부품을 도시하는,디스크(108)의 평면도가 도시되어 있다. 디스크(108)는 원주형으로 다수의 동심 원형 트랙(160)으로 분할되어 있다. 디스크(108)당 트랙(160) 수는 각각 특정 제조된 디스크(108)에 따라 다양하다. 각각의 트랙(160) 주위의 일회전(INDEX)(162)은 통상적으로 디스크(108)의 반경을 연장하는 마크에 의해 지시된다.
디스크(108)는 방사형으로 다수의 서보 세그먼트(164)로 분할된다. 서보 세그먼트(164)는 디스크(108)의 중심(166)에서 시작하여 디스크(108)의 외부 에지(168)에서 종료된다. 디스크(108)당 트랙(160) 수에 따라서, 디스크(108)당 서보 세그먼트(164)의 수는 각각 특정 제조된 디스크(108)에 따라 다양하다. 각각의 트랙(160)은 서보 세그먼트(164) 사이에서 데이터 섹터를 갖는 스페이스 서보 세그먼트(spaced servo segment)(164)로 구성된다.
일반적으로, 도 12는 본 발명에 따라서 버퍼(145)에 대한 버퍼 관리 시스템의 전체 동작(400)의 바람직한 실시예를 동작(399) 내지 (417)로 도시한다. 동작(402)에서, 버퍼표(206)(도 4)는 다수의 동일한 크기의 버퍼 섹터(208)(도 4)로 분할된 것과 같이 버퍼(145)를 나타냄으로써 유지보수된다. 동작(404)에서, 버퍼 섹터(206)는, 버퍼 세그먼트(210)(도 4)로 불리는, 순환 연계 목록으로 배열된다. 동작(406)에서, 특정 버퍼 세그먼트(210)는 데이터 파일을 저장하는 제어 모듈(202)에 의해 임의로 선택된다. 동작(408)에서, 실제로 호스트(140)(도 4)로부터 버퍼(145)로 파일로서 전송되는, 데이터는 버퍼 세그먼트(210)로 전송되는 것으로 나타난다. 동작(410)에서, 데이터 파일은 일정치 않은 기간동안 버퍼(145)내에 저장된다. 데이터 파일은, 동작(412)에서, 데이터가 버퍼(145)에서 제거되고 디스크(108)로 재위치되어, 이로 인해 호스트(140)로부터 디스크(108)로의 전송이 유효하게 될 때까지 버퍼 세그먼트내에 저장되는 것으로 나타난다. 동작(414)에서, "조사(look-up)", 전송 또는 제거가 너무 빠르게 처리되었는지에 대한 검출이 이루어진다. 만약 아니라면, 프로세스는 종료된다. 그러나, 만약 조사가 너무 빠르다면, 그로 인해, 조사가 전송이라면, 동작(416)은 동작(408)의 전송을 재초기화한다. 만약 조사가 제거이고 복귀라면, 동작(416)은 동작(412)의 제거를 재초기화한다.
도 4를 참조하면, 버퍼(145)에 및 버퍼(145)로부터의 데이터 전송을 관리하기 위한 버퍼 관리 시스템(200)의 기능적 블록도가 도시되어 있다. 버퍼 관리 시스템(200)은 호스트 컴퓨터(140)와 디스크(108) 사이의 데이터 전송을 3개의 주요 부품: 제어 모듈(202), 애플리케이션 모듈(204), 및 버퍼표(206)의 실행을 통해 관리한다. 버퍼표(206)는 n 개의 동일한 버퍼 섹터(208)로 분할되고, 각각의 버퍼 섹터는 512 바이트의 저장 능력을 갖는다. 추가로 각각의 버퍼 섹터(208)는 순환 연계 목록 또는 버퍼 세그먼트(210)로 통합된다. 버퍼표(206)는 n 개의 버퍼 세그먼트(210) 정도의 다수로 분할될 수 있거나 또는 n 개의 버퍼 섹터(208)를 갖는 오로지 하나의 버퍼 세그먼트(210)로 이루어질 수 있다. 하기의 표 1은 n=9인 버퍼 섹터(208)와 2개의 순환 연계 버퍼 세그먼트(210)를 포함하는 버퍼표(206)를 도시한다.
표 1
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 2
2 3
3 0
4 7
5 6
6 8
7 5
8 4
간단하게, 표 1은 표 2와 표 3에서 도시된 것처럼, 2개의 개별 버퍼 세그먼트(210)로 분류될 수 있다:
표 2
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 2
2 3
3 0
표 3
섹터#(오프셋) 넥스트 섹터 명령
4 7
5 6
6 8
7 5
8 4
버퍼표(206)와 관련하여, 각각의 버퍼 섹터(208)는 버퍼 관리 시스템(200)의 동작에 중요한 2 개의 명령: 오프셋 값(214)("오프셋")과 넥스트 섹터 명령 값(212)("넥스트 섹터 명령")을 포함한다. 2 개의 명령은, 전체적으로, 오프셋(214)과 넥스트 섹터 명령(212)이 버퍼 세그먼트(210)의 순환 특징을 한정하는, 버퍼 관리 시스템(200)의 동작에 중요하다. 예컨대, 표 3을 다시 참조하면, 왼쪽 세로열의 값은 오프셋 값(214)으로서 불리고 오른쪽 세로열의 값은 넥스트 섹터 명령 값(212)으로서 불린다. 애플리케이션 모듈(204)이 현재의 버퍼 섹터(208)"4"에 위치할 때, 애플리케이션 모듈(204)은 넥스트 섹터 명령(212)을 판독하고 넥스트 버퍼 섹터(208)"7"로 이동한다. 일단 현재 버퍼 섹터(208)"7"에 위치하면, 애플리케이션 모듈(204)은 넥스트 섹터 명령(212)을 판독하고 넥스트 버퍼 섹터(208)"5"로 이동한다. 이러한 과정은 애플리케이션 모듈(204)이 오프셋(214)값 "4"를 갖는 버퍼 섹터(208)로 다시 위치할 때까지 반복되어, 순환 연계 세그먼트(210)를 완료한다(enclose). 바람직한 실시예에 따라서, 버퍼표(206)의 유지보수와 버퍼표(206)상의 애플리케이션 모듈(204)의 동작은 모두 제어 모듈(202)에 의해 처리된다. 애플리케이션 모듈(204)과 제어 모듈(202)에 대한 상세한 설명이 하기에서 이루어진다.
도 5를 참조하면, 도 4의 시스템(200)의 특정 기능의 블록도가 도시되어 있다. 특히, 애플리케이션 모듈(204) 부품의 기능 블록이 도시되어 있다. 애플리케이션 모듈(204)은 버퍼 관리 시스템(200)의 하드웨어 부품이다. 애플리케이션 모듈(204)은 2 개의 주요 서브-모듈: 호스트 넥스트 포인터(HNP:222)에 연결된 호스트 어드레스 포인터(HAP:220)와 디스크 넥스트 포인터(DNP:226)에 연결된 디스크 어드레스 포인터(DAP:224)로 분할되어 있다. 애플리케이션 모듈(204)은 세그먼트-대-세그먼트 형식으로 버퍼표(206)를 워크 스루(walk through)한다. 호스트 넥스트 포인터(222)와 디스크 넥스트 포인터(226)는 호스트 어드레스 포인터(220)와 디스크 어드레스 포인터(224)의 넥스트 버퍼 섹터(208) 위치의 위치설정을 유효하게 각각 제어한다. 상기 언급한 바와 같이, 애플리케이션 모듈(204)의 동작은 제어 모듈(202)을 통해 제어된다.
호스트 어드레스 포인터(220)는 데이터 블록을 버퍼(145)에 연관하는 역할을 한다. 바람직한 실시예에서, 데이터의 버퍼(145) 연관은 버퍼표(206)를 참조하여 이루어진다. 이러한 동작에서, 호스트 넥스트 포인터(222)는 호스트 어드레스 포인터(220)가 동작하는 특정 버퍼 세그먼트(210)의 "넥스트" 섹터(208)의 값을 호스트 어드레스 포인터(220)와 통신한다. 호스트 넥스트 포인터(222)는 넥스트 섹터 명령(212)으로부터 버퍼 세그먼트(210)의 "넥스트" 섹터(208)의 오프셋 값(214)을 수신한다. 호스트 어드레스 포인터(220)는 호스트 넥스트 포인터(222)에 의해 판독된 넥스트 섹터 명령(212)에 응답하여 특정 버퍼 세그먼트(210)를 워크 스루한다. 호스트 어드레스 포인터(220)는 데이터를 현재 버퍼 섹터(208)에 기록한 후, 호스트 넥스트 포인터(222)에 의해 통신하는 것처럼 넥스트 버퍼 섹터(208)로 즉시 점핑한다. 마지막으로, 마지막 버퍼 섹터(208)의 넥스트 섹터 명령 값(212)은 버퍼 세그먼트(210)내의 호스트 어드레스 포인터(220)에 의해 참조된 초기 버퍼 섹터(208)의 오프셋 값(214)과 동일하다. 이것은 순환 세그먼트가 래핑(wrap)하는 포인터이다. 호스트 어드레스 포인터(220)는 현재 커맨드에 대한 모든 데이터가 전송될 때까지 계속해서 세그먼트(210)를 워크 스루하고, 필요에 따라 래핑한다.
데이터가 버퍼(145)로부터 디스크(108)로 전송될 때, 애플리케이션 모듈(204)은 일반적으로 데이터가 디스크(108)로부터 버퍼(145)로 전송될 때와 동일한 방식으로 동작한다. 디스크 어드레스 포인터(224)는 데이터를 버퍼(145)로부터 디스크(108)로 연관하는 역할을 한다. 바람직한 실시예에서, 데이터를 디스크(108)로 연관하는 것은 버퍼표(206)를 참조하여 이루어진다. 이러한 동작에서, 디스크 넥스트 포인터(226)는 디스크 어드레스 포인터(226)가 동작하는 특정 버퍼 세그먼트(210)의 "넥스트" 버퍼 섹터(208)의 위치를 디스크 어드레스 포인터(224)와 통신한다. 디스크 넥스트 포인터(226)는 버퍼 세그먼트(210)내의 "넥스트" 버퍼 섹터(208)의 오프셋 값(214)을 넥스트 섹터 명령(212)으로부터 수신한다. 디스크 어드레스 포인터(224)는 디스크 넥스트 포인터(226)에 의해 판독된 넥스트 섹터 명령(212)에 응답하여 특정 버퍼 세그먼트(210)를 워크 스루한다. 디스크 어드레스 포인터(224)는 데이터를 버퍼 섹터(208)로부터 디스크(108)로 연관하고, 디스크 넥스트 포인터(226)에 의해 지시되는 것처럼 넥스트 버퍼 섹터(208)로 즉시 점핑한다. 마지막으로, 마지막 버퍼 섹터(208)의 넥스트 섹터 명령 값(212)은 버퍼 세그먼트(210)내의 디스크 어드레스 포인터(224)에 의해 참조된 초기 버퍼 섹터(208)의 오프셋 값(214)과 동일할 것이다. 이것은 순환 세그먼트가 래핑하는 포인터이다. 디스크 어드레스 포인터(224)는, 현재 커맨드에 대한 모든 데이터가 전송될 때까지 계속해서 세그먼트(210)를 워크 스루하고, 필요에 따라 래핑한다.
디스크 어드레스 포인터(224)의 동작과 관련하여, 데이터는 섹터-대-섹터 형식으로 버퍼(145)로부터 전송된다. 일단 데이터가 특정 버퍼 섹터(208)로부터 추출되면, 데이터는 파일이 위치될 특정 서보 세그먼트(164)와 트랙(160)에 따라서디스크(108)에 전송된다.
도 6을 참조하면, 애플리케이션 모듈(204)의 개략적인 표현이 버퍼(145)의 동작을 도시한다. 디스크 현재 어드레스 카운터(244)와 디스크 현재 페이지 레지스터(246)는 디스크 어드레스 포인터(224)를 형성한다. 유사하게, 호스트 현재 어드레스 카운터(252)와 호스트 현재 페이지 레지스터(250)는 호스트 어드레스 포인터(220)를 형성한다. 디스크 넥스트 페이지 레지스터(240)와 호스트 넥스트 페이지 레지스터(242)는 각각 디스크 넥스트 포인터(226)와 호스트 넥스트 포인터(222)로서 기능을 한다. 리맵 베이스 어드레스 레지스터(248)는 버퍼(145)내의 VBM 표(206)의 근저에서 디스크 리맵 어드레스(247)와 호스트 리맵 어드레스(249)를 설정한다. 따라서, 바람직한 실시예에서, 리맵 베이스 어드레스 레지스터(248)의 출력은, 승인 제어 라인(acknowledgement control line: 241 또는 243)에 의존하여, 버퍼(145)를 어드레싱하는데 디스크 리맵 어드레스(247) 또는 호스트 리맵 어드레스(249)를 사용한다. 만약 디스크 인터페이스 제어기가 데이터가 버퍼(145)로부터 판독될 것을 요청한다면, 디스크 리맵 승인 라인(241)은 사용가능하고 디스크 리맵 어드레스(247)는 버퍼(145)를 액세싱하는데 사용된다. 만약 호스트 인터페이스 제어기가 데이터가 버퍼(145)에 기록될 것을 요청한다면, 호스트 리맵 승인 라인(243)은 사용가능하고 호스트 리맵 어드레스(249)는 버퍼(145)를 어드레싱하는데 사용된다.
디스크 넥스트 페이지 레지스터(240)는 버퍼표(145)로부터 판독될 넥스트 섹터(208)의 넥스트 섹터 명령 값(212)을 이용하여 디스크 현재 페이지레지스터(246)를 로딩한다. 데이터는 디스크 현재 어드레스 카운터(244)의 출력으로부터 기원하는 디스크 데이터 어드레스 라인(245)이 사용가능한 현재 섹터(208)로부터 판독된다. 디스크 현재 어드레스 카운터(244)의 출력은 섹터 비교기(256)에 결합된다. 디스크 현재 어드레스 카운터(244)의 값은 섹터 비교기(256)의 입력(B)이다. 비교기(256)의 입력(A)은, 통상적으로 512 바이트인, 버퍼 섹터(208) 크기의 일정한 값이다. 디스크 현재 어드레스 카운터(244)의 값이 입력(A)과 동일할 때, 디스크 넥스트 페이지 레지스터(240)에 의해 디스크 현재 페이지 레지스터(246)로 로딩된 값을 갖는, 신호는 비교기(256)의 출력으로부터 넥스트 버퍼 섹터(208)에 스위치를 요청하는 디스크 현재 페이지 레지스터(246)로 전송된다. 넥스트 버퍼 섹터(208) 값은 버퍼(145)로부터 디스크 넥스트 페이지 레지스터(240)로 로딩된 넥스트 섹터 명령 값(212)에 의해 한정된다.
호스트 넥스트 페이지 레지스터(242)는 버퍼(145)에 기록될 넥스트 섹터(208)의 넥스트 섹터 명령 값(212)을 이용하여 호스트 현재 레지스터(250)를 로딩한다. 데이터는 호스트 현재 어드레스 카운터(252)의 출력으로부터 기원하는 호스트 데이터 어드레스 라인(251)이 사용가능한 현재 섹터(208)로부터 판독된다. 호스트 현재 어드레스 카운터(252)의 출력은 섹터 비교기(258)에 결합된다. 호스트 현재 어드레스 카운터(252)의 값은 섹터 비교기(258)의 입력(A)이다. 비교기(258)의 입력(B)은, 통상적으로 512 바이트인, 버퍼 섹터(208) 크기의 상수 값이다. 호스트 현재 어드레스 카운터(252)의 값이 입력(B)과 동일할 때, 호스트 넥스트 페이지 레지스터(242)에 의해 호스트 현재 페이지 레지스터(250)로 로딩된값을 갖는, 신호는 비교기(258)의 출력으로부터 넥스트 버퍼 섹터(208)에 스위치를 요청하는 호스트 현재 페이지 레지스터(250)로 전송된다. 넥스트 버퍼 섹터 값은 버퍼(145)로부터 호스트 넥스트 페이지 레지스터(242)로 로딩되는 넥스트 섹터 명령 값(212)이다.
도 13을 참조하면, 애플리케이션 모듈(204)의 순회 부품의 개략적인 표현이 도시되어 있다. 순회 부품(260)은 순회 상태 머신(262), 순회 다운 카운터(traverse down counter)(264), 및 넥스트 순회 어드레스 레지스터(266)를 포함한다. 순회 상태 머신(262)은 오프셋 베이스 어드레스의 값(214)을 이용하여 로딩된다. 오프셋 값(214)은 순회 부품(260)을 위한 넥스트 섹터(208)로서 넥스트 순회 어드레스 레지스터(266)로 래칭된다. 순회 부품(260)은 일단 순회 상태 머신(262)이 순회 다운 카운터(264)를 초기화하면 버퍼 세그먼트(210)상의 애플리케이션 모듈(204)을 순회한다. 순회 부품(260)은 넥스트 순회 어드레스 레지스터(266)로부터 순회 어드레스를 수신하고 계속해서 순회 다운 카운터(264)가 카운팅을 완료할 때까지 애플리케이션 모듈(204)의 순회를 실행한다. 순회 다운 카운터(264)에 대한 카운트는 마이크로프로세서(142)에 의해 로딩되고, 이로 인해 애플리케이션 모듈(204)이 반복적으로 특정 버퍼 세그먼트(210)를 사전결정된 회수로 도약(hop)가능하게 한다. 넥스트 섹터 명령 값(212)은 순회할 넥스트 섹터(208)를 지시하고 넥스트 순회 어드레스 레지스터(266)를 통해 순회 부품(260)과 통신한다. 오프셋 베이스 어드레스의 값(214)이 초기에 순회 상태 머신(262)에 전송된 후에, 넥스트 섹터 명령 값(212)이 순회 다운 카운터(264)가 카운팅을 완료할 때까지 후속 섹터(208)를 제어하는 유일한 제어 파라미터가 되며, 이 때 순회 부품(260)은 오프셋 베이스 어드레스의 넥스트 값(214)을 대기하도록 초기화된다.
상기 언급한 바와 같이, 버퍼표(206)의 유지보수와 애플리케이션 모듈(202)의 동작은 제어 모듈(202)에 의해 처리된다. 제어 모듈(202)은 버퍼 관리 시스템(200)의 소프트웨어 부품이다. 제어 모듈(202)은 버퍼(145) 섹터(208)의 최대 가능 수가 임의의 주어진 시간에서 커맨드를 기록하기 위해 호스트(140)를 이용가능한 것을 보장함으로써 기록 캐시의 방법을 최대화한다. 요약하면, 제어 모듈(202)에는, 호스트(220)와 디스크(226) 어드레스 포인터를 통해, 데이터 버퍼(145)의 내외부로 데이터 전송을 처리하는 애플리케이션 모듈(204)에 의해 사용되는, 버퍼표(206)를 유지보수하기 위한 메커니즘이 제공된다.
도 7을 참조하면, 호스트(140)로부터 버퍼(145)까지 데이터를 전송하는데 사용될 때 일반적으로 동작(299 내지 317)을 설명하는 흐름도에 제어 모듈(202)의 동작이 도시되어 있다. 동작(300)에서, 제어 모듈(202)은 임의의 주어진 시간에서 커맨드를 기록하기 위해 호스트(140)에 이용가능한 섹터(208)의 가능한 수를 최대화하기 위하여 버퍼(145)의 섹터(208)를 빈칸_목록으로 구성한다. 빈칸_목록은 기록 버퍼(145)내의 모든 빈 섹터(208)의 순환 연계 세그먼트(164)가 되도록 초기화된다. 표 4는, 초기화될 때, 빈칸_목록을 도시한다.
표 4
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 2
2 3
... ...
... ...
n-2 n-1
n-1 0
일단 제어 모듈(202)이 섹터(208)를 빈칸_목록으로 구성하는 것을 완료하면, 호스트(140)로부터 버퍼(145)까지의 데이터 물리적 전송이 초기화된다. 이러한 프로세스동안 제어 모듈(202)은 버퍼표(206)를 하나 이상의 버퍼 세그먼트(210)로 분할한다. 동작(308)에서, 제어 모듈(202)은 임의적으로 "빈_공간_개시부(free_space_start)"로서 빈칸_목록내의 버퍼 섹터(208) - 바람직한 실시예에서, 제어 모듈(202)이 데이터를 버퍼(145)로 전송하기 위한 개시 섹터로서 선택하는 버퍼 섹터(208)인 제 1 인덱스 섹터(208)로 언급함 - 를 선택한다. 제어 모듈(202)은 호스트 어드레스 포인터(220)가 빈_공간_개시부로 명명한 제 1 인덱스 섹터(208)에 위치하도록 애플리케이션 모듈(204)을 제어한다. 동작(302)에서, 제어 모듈(202)은 캐시될 인커밍 데이터(incoming data)를 수신한다. 동작(310)에서, 제어 모듈(202)은 호스트 어드레스 포인터(220)가 파일의 제1 블록을 빈_공간_개시부로서 식별된 섹터로 전송하는 것을 처리한다. 동작(312)에서, 제어 모듈(202)은 파일의 전송이 완료되었는지를 검출한다. 만약 모든 데이터 블록이 전송되었다면, 제어 모듈은 동작(316)으로 점핑한다. 그러나, 만약 전송이 완료되지 않았다면, 동작(314)에서, 제어 모듈(202)은 이전 인덱스 섹터(208)의 넥스트 섹터 명령(212)에 따라서 호스트 어드레스 포인터(220)를 넥스트 "인덱스" 섹터(208)에 위치시킨다 (호스트 어드레스 포인터(220)의 각각의 현재 위치는 바람직하게 "인덱스" 섹터로서 불린다). 호스트 어드레스 포인터(220)는 호스트 넥스트 포인터(222)가 넥스트 인덱스 섹터(208)를 참조하는 것에 따라서 데이터 블록을 전송한다. 동작(316)에서, 일단 제어 모듈(202)이 파일의 전송이 완료된 것을 검출하면, "빈_공간_개시부"를 현재 버퍼 세그먼트(210)내의 마지막 버퍼 섹터(208) 이후에 바로 존재하는 빈칸_목록내의 섹터(208)로 할당한다. 버퍼 세그먼트(210)의 크기와 버퍼표(206)내에서 빈칸_목록의 버퍼 세그먼트(210) 분할이 발생하는 위치를 검출하는 것이 도 8과 표 5에 의해 더욱 상세하게 설명된다.
도 8을 참조하면, 일반적으로 동작(329 내지 339)에 설명된, 흐름도가 빈칸_목록의 섹터(108)를 하나 이상의 세그먼트(210)로 배치하는 것을 도시한다. 제어 모듈(202)은 일단 길이 "L"의 버퍼 섹터(108)가 호스트(140)에 의해 버퍼 관리 시스템(200)으로 전송되면 빈칸_목록을 하나 이상의 순환 연계 목록 세그먼트(210)로 유효하게 배치한다. 도 7의 동작(310)과 동일한, 동작(330)에서, 제어 모듈(202)은 파일의 제 1 블록을, 바람직한 실시예에서, "빈_공간_개시부"로 명명된, 제 1 인덱스 섹터(208)로 전송하도록 호스트 어드레스 포인터(220)를 처리한다. 동작(332)은 이러한 특정 커맨드를 위해 데이터의 마지막 버퍼 섹터(208), 즉, 빈_공간_개시부에서 시작하고 버퍼표(206) 아래의 "L-1" 섹터로 진행하는 단일 연계 빈칸_목록을 순회 부품(260)을 이용하여 순회함으로써 이러한 특정 버퍼 세그먼트(210)의 마지막 섹터(208)를 위치시킨다. 동작(334)은 "빈_공간_개시부"로서 표 아래의 "L-1" 단계에 해당하는 버퍼 섹터(208)의 넥스트 섹터 명령(212)의값을 지정한다. 이러한 버퍼 섹터(208)는 "빈_공간_개시부"인 넥스트 섹터 명령(212)을 통합하기 때문에, 순환 연계 목록은 특정 버퍼 세그먼트(210)가 빈칸_목록과 독립된 목록인 것을 설명하도록 완료된다.
동작(336)은 나머지 순환 연계 목록을 설명하기 위하여 빈칸_목록내의 나머지 버퍼 섹터(208)를 순회한다. 동작(338)에서, "빈_공간_개시부"로서 빈칸_목록내의 마지막 섹터(208)의 넥스트 섹터 명령(212)의 지정은 독립되어 순환 연계 목록내의 버퍼표(206)의 나머지 섹터(208)를 완료한다. 따라서, 최종 결과는 일단 호스트(140)가 데이터를 버퍼(145)로 전송한 후 어떻게 빈칸 _목록이 하나 이상의 버퍼 세그먼트(210)로 분할되는지를 설명한다. 표 5는 L=3인 명령을 표 4의 초기화된 빈칸_목록에 제공함으로써 버퍼 섹터(208)를 버퍼 세그먼트(210)로 배치하는 것을 더욱 잘 설명한다.
표 5
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 2
2 0
3 4
... ...
n-2 n-1
n-1 3
섹터(0 내지 2)는 제어 모듈(202)이 데이터로 채우도록 호스트 어드레스 포인터(220)를 현재 명령하는 버퍼 세그먼트(210)를 나타내지만, 섹터(3 내지 "n-1"은 빈칸_목록내의 나머지 버퍼 섹터(208)를 나타낸다. 이러한 예에서, 섹터"3"은 제어 모듈(202)이 호스트(140)가 데이터의 전송을 실행하는 넥스트 시간에서 호스트 어드레스 포인터(220)를 처리하는 넥스트 "빈_공간_개시부"이다. 따라서, 이러한 예에서, 버퍼표(206)의 빈칸_목록은, 하나는 길이가 3이고 하나는 길이가 "n-3"인, 2개의 개별 버퍼 세그먼트(210)이다. 유사한 조종이 여러 버퍼 세그먼트(210)를 추가로 서브분할하거나 또는 세그먼트(210)를 단일 루프로 통합하기 위해 이루어질 수 있다.
도 9를 참조하면, 기록 커맨드가 부여된 임의의 시간에 초기화된 제어 모듈(202)내에 프로그래밍된 개선 프로세스를 도시하는 흐름도가 도시되어 있다. 비록 도 9의 개선 프로세스는 도 8에서 한정된 것보다 실제적인 개별 프로세스이지만, 2개의 프로세스는 상호 동시 발생하지만 마지막으로 개선 프로세스는 동작(300)에서 종료된다. 호스트(140)가 제어 모듈(202)에 의해 수신되는 새로운 기록 커맨드를 전송할 때, 개선 프로세스는 동작(320)에서 초기화된다. 동작(322)에서, 일단 새로운 기록 커맨드가 제어 모듈(202)에 의해 수신되면, 제어 모듈(202)은 먼저 새로운 커맨드로부터 데이터의 논리 블록 어드레스들(LBA)중 어느 것이 이전 커맨드로부터 버퍼 섹터(208)로 캐시된 데이터의 LBA중 어느 것과 중첩하는지를 검출하는 검사를 한다. 만약 중첩이 발견되지 않는다면, 동작(300)은 초기화되고 데이터는 도 8의 흐름도에 따라서 버퍼(145)로 전송된다.
만약 LBA의 중첩이 발견된다면, 동작(324)에서, 제어 모듈은 구(old) 기록 커맨드에 해당하는 버퍼 섹터(208)를 취하고 이들을 빈칸_목록의 종료부에 더한다. 이것은 빈칸_목록의 종료부에 위치한 버퍼 섹터(208)의 넥스트 섹터 명령 값(212)을 구 기록 섹터(208)로 대체함으로써 이루어진다. 이러한 버퍼 섹터(208)로부터의 데이터는 "잉여" 데이터로 고려되며; 따라서 버퍼 섹터(208)는 빈칸_목록으로 개선된다. 동작(324)에서, 일단 2 개의 버퍼 섹터(208)가 개선되면, 동작(300)은 초기화되고 데이터는 도 8의 흐름도에 따라서 버퍼(145)에 전송된다. 표 6은 도 8에 도시된 개선 프로세스에 설명된 것처럼 버퍼표(206)를 도시한다.
표 6
섹터#(오프셋) 넥스트 섹터 명령 넥스트 섹터 명령
"개선"전 "개선"후
0 1 1
1 2 2
2 0 4
3 4 0
4 5 5
5 6 6
6 3 3
이러한 예에서, L=3인 목록은 L=4인 목록으로 개선되어 L=7인 새로운 목록을 형성한다. 중첩은 버퍼 섹터(208) 0, 1 및 2 내에 포함된 데이터 블록의 LBA와 새로운 기록 커맨드와 관련한 데이터 블록의 LBA와 관련하여 발견된다. 그러므로, 개선 프로세스는 섹터 3의 넥스트 섹터 명령(212)을 섹터0의 오프셋 값(214)으로 대체함으로써 "잉여" 버퍼 세그먼트(210)의 제 1 인덱스 섹터(208)(섹터0)를 오리지널 빈칸_목록의 종료부(섹터 3, 4, 5, 및 6)에 더한다. 3은 단일 연계 목록이 순환을 완료하는 버퍼 섹터(208)이기 때문에 섹터3은 빈칸_목록의 종료부를 지시한다. 다음으로 제어 모듈(202)은, 특정 버퍼 세그먼트(210)의 제 1 인덱스 섹터(208)가 될, 호스트 어드레스 포인터(222)를 섹터0에 위치시킴으로써 기록 커맨드를 처리한다.
도 10을 참조하면, 데이터를 버퍼(145)로부터 디스크(108)로 전송하기 위해 사용될 때, 일반적으로 동작(349 내지 359)으로 설명된, 흐름도는 제어 모듈(202)의 동작을 도시한다. 동작(350)에서, 전송될 파일의 제 1 데이터 블록을 저장하는 버퍼 섹터(208)는 "인덱스" 섹터(108)를 지정한다. 동작(352)에서, 인덱스 섹터(208)는 빈칸_목록의 종료부에 더해진다. 동작(354)에서, 제어 모듈(202)은 디스크 어드레스 포인터(224)가 인덱스 섹터(208)내의 데이터 블록을 디스크(108)로 전송하도록 처리한다. 따라서, 버퍼 섹터(208)로부터 데이터가 디스크에 연관되는 순간에, 이러한 특정 버퍼 섹터(208)는 넥스트 호스트(140)에 의한 기록 커맨드를 사용하기 위해 즉시 비워진다.
동작(356)에서, 제어 모듈(202)은 전송될 파일 내의 모든 데이터 블록이 디스크에 연관되었는지를 검출한다. 만약 아니라면, 동작(358)에서, 제어 모듈(202)은, 이전 인덱스 섹터(208)의 넥스트 섹터 명령(212)에 의해 명령되는 것처럼, 넥스트 "인덱스" 섹터(208)상의 디스크 어드레스 포인터(224)를 위치시킨다. 디스크 어드레스 포인터(224)를 넥스트 인덱스 섹터(208)상에 위치시킨후, 제어 모듈(202)은 동작(352)으로 점핑하고 동작(352)에서 과정을 반복한다. 일단 디스크 어드레스 포인터(224)가 파일을 저장하는 특정 버퍼 세그먼트(210)를 완전하게 전송하면, 작업이 완료하고 제어 모듈(202)은 후속 전송을 위한 명령을 대기하기 위해 디스크 어드레스 포인터(210)를 초기화한다.
디스크(108)에 기록될 버퍼 섹터(208)를 빈칸_목록의 종료부에 더하는 프로세스는 만약 새로운 기록 커맨드가, LBA 공간내에서 순차적이며, 따라서디스크(108)상에 즉시 후속하는, 제어 모듈(202)이 되고, 버퍼 섹터(208)가 디스크(108)에 연관되는 경우라면 매우 유리하다. 이러한 장점은 제어 모듈(202)이 구 데이터를 디스크(108)에 연관하는 것과 동일한 동작동안 새로운 데이터를 디스크(108)에 연관하기 때문에 버퍼표(206)의 조종이 새로운 기록 커맨드를 위해 필요하지 않다는 점에서 실현된다. 표 7에는 이러한 프로세스의 설명을 위한 최상의 분석 결과이다.
표 7
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 2 <- 디스크 어드레스 포인터
2 3
3 4 <- 빈_공간_개시부
4 5
5 6
6 3
이러한 예에서, 섹터3은 빈_공간_개시부에 해당하기 때문에 새로운 기록 커맨드와 관련한 데이터는 "3"의 제 1 인덱스 섹터(108)를 갖는다. 만약 새로운 기록 커맨드가 세그먼트(210)보다 크다면 (많은 섹터라면) - 이러한 경우에 섹터 3, 4, 5, 및 6 - 제어 모듈(202)은 순환 루프로서 빈칸_목록을 사용한다. 디스크(108)에 연관될 데이터를 저장한 버퍼 섹터(208)는 이미 빈칸_목록의 종료부에 더해졌기 때문에, 이러한 섹터(208)는 순환 빈칸_목록의 부분이 된다. 제어 모듈(202)은 디스크 어드레스 포인터(224)가 (제 1 인덱스 섹터(208)에서 초기화된) 호스트 어드레스 포인터(220)를 뒤따르고, 다음으로 버퍼 섹터(208)로부터의 데이터가 디스크(108)에 연관되는 것처럼 디스크 어드레스 포인터(224)를 뒤따르도록 처리한다. 그러므로, 제어 모듈(202)은 디스크(224)와 호스트 어드레스(220) 포인터를 사용하여 실시간 순환 루프를 실행한다.
버퍼 관리 시스템(200)의 하나 이상의 장점은 제어 모듈(202)이 2 개 이상의 캐시된 커맨드를 하나의 버퍼 세그먼트(210)로 통합하게 할 수 있다. 하나의 버퍼 세그먼트(210)를 다른 버퍼 세그먼트와 통합하는 것은 이러한 프로세스가 데이터를 버퍼(145)로부터 디스크(108)에 한 동작으로 기록가능하기 때문에 유리하다. 만약 2 개 이상의 버퍼 세그먼트(210)가 디스크(108)의 인접한 서보 세그먼트(164)상에 기록될 데이터 파일을 포함한다면, 제어 모듈(202)은 버퍼표(206)의 이러한 버퍼 세그먼트(210)를 하나의 버퍼 세그먼트(210)로 "통합"할 것이다.
도 11을 참조하면, 일반적으로 동작(379 내지 385)으로 설명된, 흐름도는 제어 모듈(202)의 통합 프로세스를 설명한다. 동작(380)에서, 버퍼 세그먼트(210)내에 포함된 캐시 기록은 데이터 파일이 인접한, 또는 순차적인 서보 세그먼트(164)상의 디스크(108)에 연관될 지를 검출하기 위해 비교된다. 동작(382)에서, 만약 이러한 데이터가 인접한 서보 세그먼트(164)에 연관되지 않는다면, 동작(381)은 표(206)내의 모든 버퍼 세그먼트(210)가 상호 비교되었는지를 찾기 위해 검사한다. 만약 아니라면, 동작(380)의 비교 루틴이 반복된다. 만약 모든 버퍼 세그먼트(210)가 비교되었다면, 프로세스는 어떤 버퍼 세그먼트(210)도 통합하지 않고 종료된다.
만약 버퍼 세그먼트(210)로부터의 데이터가 디스크(108)상의 순차적인 위치로 연관된다면, 실제 통합 프로세스는 동작(384)에서 개시될 것이다. 동작(384)에서, 버퍼 세그먼트(210)중 어느 하나의 마지막 버퍼 섹터(208)의 넥스트 섹터 명령 값(212)이 다른 버퍼 세그먼트(210)의 제 1 인덱스 섹터(208)의 오프셋 값(214)으로 대체된다. 그러므로, 2 개의 세그먼트(210)는 하나의 순환 연계 목록으로 통합된다. 일단 통합이 완료되면, 프로세스는, 동작(381)에 의해 검출되는 것처럼, 모든 버퍼 세그먼트(210)가 상호 비교될 때까지 동작(380)으로 다시 초기화된다. 필수적으로, 이것은 버퍼(145)의 캐시 기록 주기로 인한 전진 프로세스(ongoing process)이다. 표 8과 표9에는 통합 프로세스 동작(384)의 추가 설명이 제공된다:
표 8
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 0
2 3
3 6
4 5
5 4
6 2
표 9
섹터#(오프셋) 넥스트 섹터 명령
0 1
1 4
2 3
3 6
4 5
5 0
6 2
이러한 예에서, 표 8은 통합 이전의 버퍼표(206)를 도시한다. 표 8은 3개의개별 버퍼 세그먼트(210): 세그먼트 0:1, 세그먼트4:5, 및 세그먼트2:3:6을 포함한다. 이러한 도시에서, 세그먼트 0:1내에 포함된 데이터 블록은 서보 세그먼트(210)에 인접한 디스크(108)에 위치된다. 따라서, 세그먼트0:1과 4:5는 디스크(108)상에서 순차적이며, 제어 모듈(202)은 2개의 버퍼 세그먼트(210)를 통합하여, 그 결과가 표 9에 나타난다. 도시된 것처럼, 표 9는 오로지 2개의 버퍼 세그먼트(210): 세그먼트0:1:4:5와 세그먼트2:3:6을 포함한다.
요약하면, 본 발명은 호스트 컴퓨터(140)로부터 디스크 드라이브(100)내의 기록가능한 디스크(108)로의 데이터 전송을 통합하기 위한 버퍼 관리 시스템(200)으로서 간주될 수 있다. 디스크 드라이브(100)는 호스트 컴퓨터(140)상에서 동작한다. 기록가능한 디스크(108)는 방사형으로 하나 이상의 동일한 서보 세그먼트(164)로 분할되고 원주형으로 하나 이상의 회전형 트랙(160)으로 분할된다. 따라서, 트랙(160)은 서보 세그먼트(164)에 의해 분할된다.
디스크 드라이브(100)는 호스트 컴퓨터(140)와 디스크(108) 사이의 데이터 전송이 데이터의 임시 저장을 위해 호스트 컴퓨터(140) 또는 디스크(108)로부터 버퍼(145)로 파일을 구성하는 선택된 수의 데이터 블록을 전송함으로써 이루어지는 형태를 갖는다. 임시 저장후에, 파일은 호스트 컴퓨터(140) 또는 디스크(108)에 전송된다. 본 발명에 따라서, 버퍼의 관리는, 버퍼표(206), 애플리케이션 모듈(204), 및 제어 모듈(202)을 포함하는, 버퍼 관리 시스템(200)에 의해 이루어진다.
버퍼 관리 시스템(200)은 하나 이상의 동일한 크기의 버퍼 섹터(208)로 분할된 버퍼표(206)를 포함한다. 각각의 버퍼 섹터(208)는 버퍼 세그먼트(210)내의 섹터이다. 버퍼 세그먼트(210)는 버퍼표(206)내의 순환 연계 목록으로서 한정된다. 버퍼 관리 시스템(200)은 또한 각각의 특정 버퍼 세그먼트(210)를 워크 스루하는 애플리케이션 모듈(204)을 포함한다. 버퍼표(206)는 적어도 하나의 버퍼 세그먼트(210)로 분할된다. 그러나, 버퍼표(206)는 오로지 버퍼표(206)가 버퍼 섹터(208)를 가짐에 따라 다수의 버퍼 세그먼트(210)로 분할될 수 있다.
버퍼 관리 시스템(200)은 버퍼표(206)를 생성하고 유지보수하는 제어 모듈(202)을 더 포함한다. 제어 모듈(202)은 애플리케이션 모듈(204)에 의한 버퍼표(206)의 워크 스루를 처리하기 위해 애플리케이션 모듈(204)에 연결된다. 애플리케이션 모듈(204)은 애플리케이션 모듈(204)이 현재 위치하는 인덱스 섹터(208)내의 넥스트 섹터 명령(212)에 응답하여 버퍼표(206)를 워크 스루한다. 데이터가 디스크(108) 또는 버퍼(145)에 연관되는 경우에 - 너무 빠른 경우에, 제어 모듈(202)은 데이터의 후속 조사를 수행하도록 애플리케이션 모듈(204)을 재초기화하는 조사 루틴(414)을 포함한다.
애플리케이션 모듈(204)은 바람직하게 데이터를 버퍼(145)에 연관하기 위한 호스트 어드레스 포인터(220)를 포함한다. 호스트 어드레스 포인터(220)는 바람직하게, 인덱스 섹터(208)의 넥스트 섹터 명령(212)을 호스트 어드레스 포인터(220)와 통신하는, 호스트 넥스트 포인터(222)에 연결된다. 따라서, 넥스트 섹터 명령(212)은 호스트 어드레스 포인터(220)을 특정 버퍼 세그먼트(210)내에 위치하도록 제어한다.
또한 애플리케이션 모듈(204)은 바람직하게 데이터를 버퍼(145)로부터 디스크(208)에 연관하기 위한 디스크 어드레스 포인터(224)를 포함한다. 디스크 어드레스 포인터(224)는 바람직하게, 인덱스 섹터(208)의 넥스트 섹터 명령을 디스크 어드레스 포인터(224)와 통신하는, 디스크 넥스트 포인터(226)에 연결된다. 따라서, 넥스트 섹터 명령(212)은 디스크 어드레스 포인터(224)를 특정 버퍼 세그먼트(210)내에 위치하도록 제어한다.
바람직한 실시예에서, 버퍼표(206)는 임시 저장을 위해 시스템(200)을 용이하게 이용가능한 섹터의 빈칸 목록을 포함한다. 존재하는 데이터 블록이 인덱스 섹터(208)로부터 디스크(108)에 기록될 때, 제어 모듈(202)은 디스크(108)에 연관되는 것처럼 인덱스 섹터(208)가 시스템(200)을 이용가능하게 되도록 인덱스 섹터(208)를 섹터의 빈칸 목록으로 개선한다. 기록 명령이 호스트(140)로부터 부여되었을 때 제어 모듈(202)은 빈칸 목록으로부터 특정 버퍼 세그먼트(210)를 임의로 선택하고 호스트 어드레스 포인터(220)를 특정 버퍼 세그먼트(210)의 제 1 인덱스 섹터(208)상에 임의로 위치시킨다. 빈칸 목록은 바람직하게 디스크(108)에 기록되거나 또는 잉여 부분으로 고려되는 데이터를 포함한 임의의 버퍼 세그먼트(210)를 포함한다.
또한 제어 모듈(202)은 (동작 380 내지 384의) 통합 루틴을 포함한다. (동작 380 내지 384의) 통합 루틴은 인접한 서보 세그먼트(164)상에 기록될 하나 이상의 버퍼 세그먼트(210)를 조합한다. (동작 380 내지 384의) 통합 루틴은 다수의 버퍼 세그먼트(210)를 하나의 기록 프로세스로 디스크(108)에 연관될 수 있는 하나의 집합 버퍼 세그먼트(210)로 변형시킨다.
본 발명은 또한 호스트 컴퓨터(140)로부터 디스크 드라이브(100)내의 기록가능한 디스크(108)로의 데이터 전송을 관리하기 위한 (동작 400의) 방법으로 간주될 수 있다. (동작 400의) 방법은 하나 이상의 동일-크기의 버퍼 섹터(208)로 분할되는 버퍼표(206)를 (동작 402에서) 유지보수하는 것과 적어도 하나의 버퍼 세그먼트(210)로 각각의 버퍼 섹터(208)를 (동작 404에서) 배열하는 것을 포함한다. 단일 연계 목록인, 버퍼표(206)는, 순환 연계 목록인, 하나 이상의 버퍼 세그먼트(210)로 분할된다. (동작 400의) 방법은 호스트 컴퓨터(140)로부터 버퍼(145)로 전송될 파일을 임시 저장하기 위한 특정 버퍼 세그먼트(210)를 (동작 406에서) 선택하는 것뿐만 아니라, 인덱스 섹터(208)내에 포함된 넥스트 섹터 명령(212)에 응답하여 특정 버퍼 세그먼트(210)를 워크 스루함으로써 호스트 컴퓨터(140)로부터 버퍼(145)로 파일을 (동작 408에서) 전송하는 것을 더 포함한다. 인덱스 섹터는 버퍼 섹터(208)이며 이곳으로부터 데이터가 전송된다.
(동작 400의) 방법은 일시적으로 특정 버퍼 세그먼트(210)내에 파일을 (동작 410에서) 저장하는 것과 결국에는 버퍼(145)로부터 파일을 (동작 412에서) 제거하는 것 및 인덱스 섹터(208)내에 포함된 넥스트 섹터 명령(212)에 응답하여 특정 버퍼 세그먼트(210)를 워크 스루함으로써 파일을 기록가능한 디스크(108)에 재위치시키는 것을 더 포함한다.
바람직한 실시예에서, (동작 402에서) 버퍼표를 유지보수하는 (동작 400의) 방법은 새로운 데이터 블록을 수용하기 위해 용이하게 이용가능한 섹터의 빈칸 목록을 (동작 300에서) 생성하는 단계를 포함한다. (동작 406에서) 선택 단계의 (동작 400의) 방법은, 일단 파일을 버퍼(145)에 기록하는 커맨드가 호스트 컴퓨터(140)에 의해 보내지면, (동작 410에서) 데이터를 저장하는데 사용될 특정 버퍼 세그먼트(210)의 개시부로서 제 1 인덱스 섹터(208)를 임의로 선택하는 것을 바람직하게 포함한다. (동작 404의) 배열 단계의 (동작 400의) 방법은 임의로 선택된 제 1 인덱스 섹터(208)에서 개시하고 파일내의 데이터 블록의 선택된 수보다 하나 작은 버퍼 섹터를 순회함으로써 섹터의 빈칸 목록으로부터 버퍼 세그먼트(210)를 생성하는 것을 바람직하게 포함한다. 마지막으로, 바람직한 실시예에서, (동작 400의) 방법은 (동작 302에서) 캐시될 인커밍 데이터 파일을 수용하고 인커밍 데이터 파일을 인덱스 섹터(208)로부터 버퍼 세그먼트(210)로 위치시킨다.
언급한 바와 같이, (동작 400의) 방법은 (동작 404에서) 섹터(208)를 하나 이상의 버퍼 세그먼트(210)로 구성함으로써 버퍼표(206)를 배열할 수 있다. 그러나, 버퍼표(206)는 오로지 버퍼표(206)내의 섹터(208) 수와 동일한 버퍼 세그먼트(210)의 최대 수로 분할 될 수 있다. 또한 (동작 400의) 방법은 (동작 354-358에서) 디스크(108)에 연관되는 것처럼 각각의 섹터(208)가 시스템에 이용가능하도록 디스크(108)에 연관될 각각의 섹터(208)를 섹터의 빈칸 목록으로 개선할 수 있다.
바람직한 실시예에서, (동작 400의) 방법은 (동작 322에서) 버퍼(145)에 저장될 데이터 블록을 모든 버퍼 세그먼트(210)내에 각각 존재하는 데이터 블록과 비교한다. 만약 (동작 322에서의) 비교가 존재하는 데이터 블록과 버퍼(145)내에 저장될 데이터 블록 사이의 잉여 부분을 밝혀낸다면, 존재하는 데이터 블록을 저장한 버퍼 세그먼트(210)는 (동작 354-358에서) 빈칸 목록으로 개선된다. 또한 (동작 354-358의) 방법은 인접한 서보 세그먼트(208)에 기록될 데이터 파일을 포함하는 하나 이상의 버퍼 세그먼트(210)를 (동작 384에서) 함께 통합하고, 이로 인해 오로지 이러한 세그먼트(164)에 대한 일회 실행될 기록 동작만이 가능하다.
바람직한 실시예에서, (동작 400의) 방법은 (동작 408에서) 호스트 넥스트 포인터(222)에 연결된 호스트 어드레스 포인터(220)를 이용하여 특정 버퍼 세그먼트(210)를 워크 스루함으로써 데이터를 버퍼(145)로 전송하는 것을 포함한다. 호스트 넥스트 포인터(222)는 넥스트 섹터 명령(212)을 호스트 어드레스 포인터(220)와 통신한다. 요컨대, 넥스트 섹터 명령(212)은 호스트 어드레스 포인터(220)를 특정 버퍼 세그먼트(210)내에 위치시키는 것을 제어한다. 더욱이, (동작 400의) 방법은 바람직하게 (동작 412에서) 디스크 넥스트 포인터(226)에 연결된 디스크 어드레스 포인터(224)를 이용하여 특정 버퍼 세그먼트(210)를 워크 스루함으로서 버퍼로부터 데이터를 제거하고 재위치시키는 것을 포함한다. 디스크 넥스트 포인터(226)는 넥스트 섹터 명령(212)을 디스크 어드레스 포인터(224)와 통신한다. 요컨대, 넥스트 섹터 명령(212)은 디스크 어드레스 포인터(224)를 특정 버퍼 세그먼트(210)내에 위치시키는 것을 제어한다. 데이터가 (동작 408에서) 전송되거나 또는 (동작 412에서) 너무 빨리 제거 및 재위치된 경우에, 동작은 (동작 400의) 방법에 따라 (동작 414 또는 416에서) 재초기화될 수 있다.
본 발명이 언급한 목적 및 장점을 달성하기에 적합하다는 것은 자명하다. 여기에 개시된 바람직한 실시예가 이러한 설명을 위해 개시되었지만, 여러 변화와 수정이 본 발명의 범위 내에서 이루어질 수 있다. 예컨대, VBM은, 버퍼를 이용하여 데이터 전송을 실행하는, 테이프 드라이브, 광학 드라이브 및 네트워크와 같은 데이터 저장 장치의 다른 형태에 유용할 수 있다. 유사하게, 제어 모듈은, 소프트웨어와 대조되는 것으로서, 또는 소프트웨어와 조합하여, 집적 또는 논리 회로를 사용하여 지정될 수 있다. 더욱이, 애플리케이션 모듈은 어드레스 포인터와 넥스트 포인터를 하나의 단일 부품으로 조합할 수 있다. 추가로, 버퍼표의 유지보수는 본 발명에서 벗어나지 않는 여러 다른 방식으로 해석될 수 있다. 예컨대, VBM의 기술은 파일 할당 표에 사용될 수 있다. 또한, VBM 표는 (넥스트 및 이전 포인터를 갖는) 이중 연계 목록으로서 구성될 수 있고, 하드웨어는 이러한 표를 유지보수하는 소프트웨어를 지원하는 것으로 해석될 수 있다. 또한 전체 시스템은 표준 512 바이트보다 크거나 또는 작은 데이터의 수집하는 작업으로 구성될 수 있다. 당업자에게 용이하게 제안되고 청구범위에 개시되고 한정된 본 발명의 사상을 포함하는 여러 다른 변화가 이루어질 수 있다.

Claims (20)

  1. 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송을 관리하기 위한 버퍼 관리 시스템으로서, 상기 디스크 드라이브는 상기 호스트 컴퓨터상에서 동작하며, 상기 기록가능한 디스크는 방사형으로 다수의 동일한 서보 세그먼트로 분할되고 원주형으로 다수의 회전형 트랙으로 분할되며, 상기 디스크 드라이브는 상기 호스트 컴퓨터와 상기 디스크 사이의 상기 데이터 전송이 임시 저장을 위해 선택된 수의 데이터 블록으로서 한정된 파일을 상기 버퍼에 전송함으로써 유효하게 되는 형태로 이루어지며;
    다수의 동일한 버퍼 섹터로 분할되는 버퍼표를 포함하는데, 상기 다수의 버퍼 섹터중 각각은 상기 버퍼표가 분할된 다수의 순환 연계 목록중 하나로서 한정된 버퍼 세그먼트내의 섹터이며;
    특정 버퍼 세그먼트의 워크 스루(walk through)가 실시가능하고, 상기 데이터는 상기 버퍼 세그먼트가 워크 스루됨에 따라 전송되는 애플리케이션 모듈; 및
    상기 버퍼표를 생성 및 유지보수하고, 상기 애플리케이션 모듈이 현재 위치한 인덱스 섹터내의 넥스트 섹터 명령에 응답하여 상기 애플리케이션 모듈에 의한 워크 스루를 처리하도록 상기 애플리케이션 모듈에 연결된 제어 모듈을 포함하는 버퍼 관리 시스템.
  2. 제 1 항에 있어서, 상기 애플리케이션 모듈은
    상기 인덱스 섹터의 넥스트 섹터 명령은 호스트 어드레스 포인터와 통신하기 위한 호스트 넥스트 포인터를 포함하여, 상기 넥스트 섹터 명령이 상기 호스트 어드레스 포인터를 상기 특정 버퍼 세그먼트내에 위치하도록 제어하게 하는, 상기 데이터를 상기 버퍼에 연관하기 위한 호스트 어드레스 포인터; 및
    상기 인덱스 섹터의 넥스트 섹터 명령을 디스크 어드레스 포인터와 통신하기 위한 디스크 넥스트 포인터를 포함하여, 상기 넥스트 섹터 명령이 상기 디스크 어드레스 포인터를 상기 특정 버퍼 세그먼트내에 위치하도록 제어하게 하는, 상기 데이터를 상기 버퍼로부터 상기 디스크로 연관하기 위한 디스크 어드레스 포인터를 더 포함하는 것을 특징으로 하는 버퍼 관리 시스템.
  3. 제 2 항에 있어서,
    상기 버퍼표는 임시 저장을 위해 상기 시스템에 용이하게 이용가능한 섹터의 빈칸 목록을 포함하고, 상기 제어 모듈은 상기 디스크에 상기 빈칸 목록으로 기록될 상기 인덱스 섹터를 개선하여, 상기 데이터가 상기 디스크에 연관됨으로써 상기 인덱스 섹터를 상기 시스템에 이용가능하게 하는 것을 특징으로 하는 버퍼 관리 시스템.
  4. 제 3 항에 있어서,
    상기 제어 모듈은 임의의 형태로 상기 빈칸 목록으로부터 상기 특정 버퍼 세그먼트를 선택하여, 상기 호스트 어드레스 포인터가 상기 제어 모듈에 의해 임의로상기 특정 버퍼 세그먼트의 제 1 인덱스 섹터 상에 위치되게 하는 것을 특징으로 하는 버퍼 관리 시스템.
  5. 제 3 항에 있어서,
    상기 섹터는 상기 인덱스 섹터의 데이터 블록이 새로운 커맨드의 상기 데이터 블록과 비교될 때 여분이기 때문에 상기 섹터의 빈칸 목록으로 개선되는 것을 특징으로 하는 버퍼 관리 시스템.
  6. 제 2 항에 있어서,
    상기 제어 모듈은 상기 데이터가 너무 빠르게 연관되는 경우에 상기 애플리케이션 모듈을 재초기화하는 조사 루틴을 포함하는 것을 특징으로 하는 버퍼 관리 시스템.
  7. 제 1 항에 있어서,
    상기 버퍼표는 적어도 하나의 버퍼 세그먼트를 포함하고, 상기 버퍼표는 상기 버퍼표내의 버퍼 섹터의 수와 동일한 상기 버퍼 세그먼트의 최대 수로 분할되는 것을 특징으로 하는 버퍼 관리 시스템.
  8. 제 1 항에 있어서,
    상기 제어 모듈은 통합 루틴을 더 포함하고, 상기 통합 루틴은 다수의 인접한 서보 세그먼트상에 기록될 상기 버퍼표내의 다수의 버퍼 세그먼트를 조합하여, 상기 통합 루틴이 상기 다수의 버퍼 세그먼트를 하나의 기록 프로세스로 상기 디스크에 연관될 수 있는 하나의 집합 버퍼 세그먼트로 변환하게 하는 것을 특징으로 하는 버퍼 관리 시스템.
  9. 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송을 관리하기 위한 방법으로서,
    (a) 다수의 동일-크기의 버퍼 섹터로 분할된 버퍼표를 유지보수하는 단계;
    (b) 상기 다수의 버퍼 섹터중 각각 하나를 상기 버퍼표가 분할된 순환 연계 목록으로서 한정된 적어도 하나의 버퍼 세그먼트로 배열하는 단계;
    (c) 상기 호스트 컴퓨터로부터 버퍼로 전송될 파일을 임시 저장하기 위해 특정 버퍼 세그먼트를 선택하는 단계;
    (d) 자체로부터 데이터가 전송될 상기 버퍼 섹터로서 한정된 인덱스 섹터내에 포함된 넥스트 섹터 명령에 응답하여 상기 특정 버퍼 세그먼트를 워크 스루함으로써 상기 호스트 컴퓨터로부터 상기 버퍼로 상기 파일을 전송하는 단계;
    (e) 상기 파일을 상기 특정 버퍼 세그먼트내에 일시적으로 저장하는 단계; 및
    (f) 상기 파일을 상기 버퍼에서 제거하고 상기 인덱스 섹터내에 포함된 상기 넥스트 섹터 명령에 응답하여 상기 특정 버퍼 세그먼트를 워크 스루함으로써 상기 파일을 상기 기록가능한 디스크에 재위치시키는 단계를 포함하며,
    상기 디스크 드라이브는 상기 호스트 컴퓨터상에서 동작하며, 상기 기록가능한 디스크는 방사형으로 다수의 동일한 서보 세그먼트로 분할되고 원주형으로 다수의 회전형 트랙으로 분할되며, 상기 디스크 드라이브는 상기 호스트 컴퓨터와 상기 디스크 사이의 상기 데이터 전송이 상기 파일의 임시 저장을 위해 선택된 수의 데이터 블록으로서 한정된 상기 파일을 상기 버퍼에 전송함으로써 유효하게 되는 형태로 이루어진 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  10. 제 9 항에 있어서,
    상기 유지보수 단계(a)는 새로운 데이터 블록의 수용이 용이하게 이용가능한 섹터의 빈칸 목록을 생성하는 단계를 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  11. 제 10 항에 있어서,
    상기 선택 단계(c)는 상기 저장 단계(e)에 사용될 상기 특정 버퍼 세그먼트의 개시부로서 제 1 인덱스 섹터를 임의로 선택하는 단계를 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  12. 제 11 항에 있어서,
    상기 배열 단계(b)는 상기 임의로 선택된 제 1 인덱스 섹터에서 개시하고 상기 파일내 데이터 블록의 선택된 수보다 하나 작은 버퍼 섹터를 순회함으로써 상기 섹터의 빈칸 목록으로부터 버퍼 세그먼트를 생성하는 단계를 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  13. 제 12 항에 있어서, 상기 전송 단계(d)는
    (ⅰ) 캐시될 인커밍 데이터 파일을 수용하는 단계; 및
    (ⅱ) 상기 인덱스 섹터로부터 상기 인커밍 데이터 파일을 상기 버퍼 세그먼트로 위치시키는 단계를 더 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  14. 제 9 항에 있어서,
    상기 배열 단계(b)는 상기 섹터를 상기 버퍼표내의 상기 섹터 수와 동일한 상기 버퍼 세그먼트의 최대 수까지 이르는 다수의 버퍼 세그먼트로 구성하는 단계를 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  15. 제 10 항에 있어서,
    (g) 상기 디스크에 기록될 상기 인덱스 섹터를 상기 데이터가 상기 디스크에연관됨으로써 상기 인덱스 섹터가 상기 시스템에 이용가능하도록 상기 섹터의 빈칸 목록으로 개선하는 단계를 더 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  16. 제 15 항에 있어서,
    (h) 상기 버퍼내에 저장될 데이터 블록을 상기 각각의 버퍼 세그먼트내의 각각의 존재하는 데이터와 비교하여, 만약 비교 단계(h)가 상기 존재하는 데이터 블록과 상기 버퍼내에 저장될 데이터 블록 사이에서 여분을 나타낸다면, 상기 존재하는 데이터 블록을 저장한 상기 버퍼 세그먼트는 상기 빈칸 목록으로 개선되게 하는 단계를 더 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  17. 제 9 항에 있어서,
    (g) 다수의 인접한 서보 세그먼트에 기록될 데이터 파일을 포함하는 특정 다수의 버퍼 세그먼트를 함께 통합하여, 상기 특정 다수의 버퍼의 기록 동작이 한 동작으로 실행될 수 있게 하는 단계를 더 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  18. 제 9 항에 있어서,
    상기 전송 단계(d)는 넥스트 포인터에 연결된 어드레스 포인터를 이용하여상기 특정 버퍼 세그먼트를 워크 스루하는 단계를 포함하는데, 상기 넥스트 포인터는 상기 넥스트 섹터 명령을 상기 어드레스 포인터와 통신하여, 상기 넥스트 섹터 명령이 상기 어드레스 포인터를 상기 특정 버퍼 세그먼트내에 위치하도록 제어하게 하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  19. 제 9 항에 있어서,
    (g) 상기 전송 단계(d)와 상기 제거 및 재위치 단계(f)중 어느 하나가 너무 빠르게 수행된 경우에 상기 전송 단계(d)와 상기 제거 및 재위치 단계(f)를 재초기화하는 단계를 더 포함하는 것을 특징으로 하는 호스트 컴퓨터로부터 디스크 드라이브내의 기록가능한 디스크로의 데이터 전송 관리 방법.
  20. 데이터를 데이터 저장 장치내의 버퍼 내외부로 전송하기 위한 애플리케이션 모듈; 및
    상기 애플리케이션 모듈이 상기 제어 수단에 의한 처리 하에서 버퍼표를 워크 스루하도록 상기 애플리케이션 모듈을 동작시키기 위한 제어 수단을 포함하는 데이터 저장 장치용 버퍼 관리 장치.
KR1020027008037A 1999-12-22 2000-10-26 디스크 드라이브내 버퍼 내부 및 외부 데이터 전송 관리용버퍼 관리 시스템 KR20020064357A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17177999P 1999-12-22 1999-12-22
US60/171,779 1999-12-22
PCT/US2000/029503 WO2001046792A1 (en) 1999-12-22 2000-10-26 Buffer management system for managing the transfer of data into and out of a buffer in a disc drive

Publications (1)

Publication Number Publication Date
KR20020064357A true KR20020064357A (ko) 2002-08-07

Family

ID=22625101

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027008037A KR20020064357A (ko) 1999-12-22 2000-10-26 디스크 드라이브내 버퍼 내부 및 외부 데이터 전송 관리용버퍼 관리 시스템

Country Status (7)

Country Link
US (2) US6330640B1 (ko)
JP (1) JP2003518313A (ko)
KR (1) KR20020064357A (ko)
CN (1) CN1434936A (ko)
DE (1) DE10085321T1 (ko)
GB (1) GB2373612B (ko)
WO (1) WO2001046792A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6504846B1 (en) * 1999-05-21 2003-01-07 Advanced Micro Devices, Inc. Method and apparatus for reclaiming buffers using a single buffer bit
US6636941B1 (en) * 2000-01-18 2003-10-21 International Business Machines Corporation Enhanced stable disk storage
US6668304B1 (en) * 2000-01-18 2003-12-23 International Business Machines Corporation Transaction support on logical disks
US6941419B2 (en) * 2000-05-24 2005-09-06 Seagate Technology Llc Method and apparatus for disc drive buffer segment management
US6795894B1 (en) * 2000-08-08 2004-09-21 Hewlett-Packard Development Company, L.P. Fast disk cache writing system
TW487177U (en) * 2001-10-31 2002-05-11 Coretronic Corp Anti-dust lid of connecting slot
DE10162046A1 (de) * 2001-12-17 2003-06-26 Thomson Brandt Gmbh Wiedergabegerät mit einem Zwischenspeicher zum Verringern der mittleren Zugriffszeit auf einen Informationsträger
US6792504B2 (en) 2002-01-25 2004-09-14 Seagate Technology Llc Read on arrival scheme for a disc drive
US20040003172A1 (en) * 2002-07-01 2004-01-01 Hui Su Fast disc write mechanism in hard disc drives
US6961814B1 (en) * 2002-09-30 2005-11-01 Western Digital Technologies, Inc. Disk drive maintaining a cache link attribute for each of a plurality of allocation states
CN1316376C (zh) * 2002-12-12 2007-05-16 建兴电子科技股份有限公司 缓冲器的多区段管理结构及管理方法
US7159073B2 (en) * 2003-03-27 2007-01-02 Stmicroelectronics, Inc. Data storage and caching architecture
CN100478865C (zh) * 2003-08-14 2009-04-15 克姆佩棱特科技公司 虚拟磁盘驱动系统和方法
US7647358B2 (en) * 2004-03-22 2010-01-12 Microsoft Corporation Computing device with relatively limited storage space and operating/file system thereof
US8069192B2 (en) * 2004-03-22 2011-11-29 Microsoft Corporation Computing device with relatively limited storage space and operating / file system thereof
KR100652386B1 (ko) * 2004-11-16 2006-12-06 삼성전자주식회사 호스트와 하드디스크 드라이브 사이의 어플리케이션공유에 의한 작업 효율 증대방법 및 장치
JP2006227923A (ja) * 2005-02-17 2006-08-31 Fujitsu Ltd ディスク管理装置およびディスク管理プログラム
JP2006244123A (ja) 2005-03-03 2006-09-14 Fujitsu Ltd データストレージシステム及びデータストレージ制御装置
CN1312550C (zh) * 2005-03-28 2007-04-25 北京紫光华宇软件股份有限公司 一种将数据转储到移动存储介质以及从其上提取数据的方法
JP4312733B2 (ja) * 2005-04-04 2009-08-12 Necエレクトロニクス株式会社 データ記録再生装置及びデータ記録再生方法
TWI287790B (en) * 2005-06-23 2007-10-01 Sunplus Technology Co Ltd Buffer management device, record and reproduction device and management method for buffer memory
US7752059B2 (en) 2005-07-05 2010-07-06 Cardiac Pacemakers, Inc. Optimization of timing for data collection and analysis in advanced patient management system
US9456068B2 (en) 2005-09-01 2016-09-27 Xtone, Inc. System and method for connecting a user to business services
US8964960B2 (en) * 2005-09-01 2015-02-24 Xtone Networks, Inc. System and method for interacting with a user via a variable volume and variable tone audio prompt
US11153425B2 (en) * 2005-09-01 2021-10-19 Xtone, Inc. System and method for providing interactive services
US9313307B2 (en) * 2005-09-01 2016-04-12 Xtone Networks, Inc. System and method for verifying the identity of a user by voiceprint analysis
US9253301B2 (en) * 2005-09-01 2016-02-02 Xtone Networks, Inc. System and method for announcing and routing incoming telephone calls using a distributed voice application execution system architecture
US20100158217A1 (en) * 2005-09-01 2010-06-24 Vishal Dhawan System and method for placing telephone calls using a distributed voice application execution system architecture
US20100166161A1 (en) * 2005-09-01 2010-07-01 Vishal Dhawan System and methods for providing voice messaging services
US11102342B2 (en) 2005-09-01 2021-08-24 Xtone, Inc. System and method for displaying the history of a user's interaction with a voice application
EP1920588A4 (en) * 2005-09-01 2010-05-12 Vishal Dhawan PLATFORM OF NETWORKS OF VOICE APPLICATIONS
US9426269B2 (en) * 2005-09-01 2016-08-23 Xtone Networks, Inc. System and method for performing certain actions based upon a dialed telephone number
US9799039B2 (en) 2005-09-01 2017-10-24 Xtone, Inc. System and method for providing television programming recommendations and for automated tuning and recordation of television programs
JP4527640B2 (ja) * 2005-09-15 2010-08-18 株式会社ソニー・コンピュータエンタテインメント データ読出装置
JP3870215B1 (ja) * 2005-09-30 2007-01-17 インターナショナル・ビジネス・マシーンズ・コーポレーション テープ記録装置のデータ書込み読取り制御方法
JP4892225B2 (ja) * 2005-10-28 2012-03-07 株式会社日立ハイテクノロジーズ 真空処理方法、真空搬送装置および半導体処理装置
US8200869B2 (en) * 2006-02-07 2012-06-12 Seagate Technology Llc Storage system with alterable background behaviors
US7549021B2 (en) 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
US8205059B2 (en) * 2007-02-16 2012-06-19 Mediatek Inc. Buffer management method and optical disc drive
CN101329661B (zh) * 2008-07-31 2010-04-21 北京飞天诚信科技有限公司 一种实现hid/scsi设备pc/sc接口的系统和方法
US8499120B2 (en) * 2008-10-17 2013-07-30 Seagate Technology Llc User selectable caching management
KR101023877B1 (ko) * 2009-04-17 2011-03-22 (주)인디링스 캐시 및 디스크 관리 방법 및 상기 방법을 이용한 컨트롤러
US9110594B2 (en) 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8780475B2 (en) 2012-08-30 2014-07-15 International Business Machines Corporation Tape drive buffer utilization
US9612956B2 (en) 2013-03-15 2017-04-04 Seagate Technology Llc Multi-tiered caching for data storage management in a device
US10564890B2 (en) 2017-07-07 2020-02-18 Seagate Technology Llc Runt handling data storage system
CN115269455B (zh) * 2022-09-30 2022-12-23 湖南兴天电子科技股份有限公司 基于fpga的磁盘数据读写控制方法、装置和存储终端

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4428064A (en) * 1981-03-06 1984-01-24 International Business Machines Corporation Controlling buffered peripheral subsystems
US4412285A (en) * 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
JPS621067A (ja) * 1985-02-25 1987-01-07 Hitachi Ltd ベクトル処理装置
US5034914A (en) * 1986-05-15 1991-07-23 Aquidneck Systems International, Inc. Optical disk data storage method and apparatus with buffered interface
USH513H (en) * 1986-06-30 1988-08-02 The United States Of America As Represented By The Secretary Of The Air Force ECM preprocessor or tracker using multi-processor modules
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US5155814A (en) * 1990-08-31 1992-10-13 International Business Machines Corporation Nonsynchronous channel/dasd communication system
DE69230204T2 (de) * 1991-08-16 2000-02-10 Fujitsu Ltd Pufferspeicher und Verwaltungsverfahren dafür
US5276662A (en) * 1992-10-01 1994-01-04 Seagate Technology, Inc. Disc drive with improved data transfer management apparatus
US5765193A (en) * 1993-07-01 1998-06-09 Digital Equipment Corporation System for controlling a write operation involving data held in a write cache
US5594926A (en) * 1993-07-19 1997-01-14 Efar Microsystems, Inc. Hard disk accelerating system for computer
US5481296A (en) * 1993-08-06 1996-01-02 International Business Machines Corporation Apparatus and method for selectively viewing video information
US5636188A (en) * 1993-11-19 1997-06-03 Sony Corporation Data transmission circuit for disk storage apparatus
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
US5721543A (en) * 1995-06-30 1998-02-24 Iterated Systems, Inc. System and method for modeling discrete data sequences
US6378051B1 (en) 1999-06-14 2002-04-23 Maxtor Corporation Interrupt signal prioritized shared buffer memory access system and method

Also Published As

Publication number Publication date
US6330640B1 (en) 2001-12-11
WO2001046792A1 (en) 2001-06-28
US6757781B2 (en) 2004-06-29
GB2373612A (en) 2002-09-25
CN1434936A (zh) 2003-08-06
DE10085321T1 (de) 2002-12-05
JP2003518313A (ja) 2003-06-03
GB0214398D0 (en) 2002-07-31
GB2373612B (en) 2004-05-05
US20030149815A1 (en) 2003-08-07

Similar Documents

Publication Publication Date Title
KR20020064357A (ko) 디스크 드라이브내 버퍼 내부 및 외부 데이터 전송 관리용버퍼 관리 시스템
US6735678B2 (en) Method and apparatus for disc drive defragmentation
US6789163B2 (en) Optimizing data transfer performance through partial write command purging in a disc drive
US6925526B2 (en) Method and apparatus for servicing mixed block size data access operations in a disk drive data storage device
US6606714B1 (en) Disk drive using defect list to perform uninterrupted writing of non-relocated data blocks and caching of relocated data blocks for deferred writing
US5835930A (en) One or more logical tracks per physical track in a headerless disk drive
US5140683A (en) Method for dispatching work requests in a data storage hierarchy
US5584012A (en) Cache control method and rotary storage device having cache control
JPH05216593A (ja) 間接アクセス記憶装置
US20030149837A1 (en) Dynamic data access pattern detection in a block data storage device
US6732292B2 (en) Adaptive bi-directional write skip masks in a data storage device
JPH1063578A (ja) 情報記録再生装置
US6925539B2 (en) Data transfer performance through resource allocation
US20030145165A1 (en) Interrupting disc write operations to service read commands
US6957311B2 (en) Data storage apparatus, computer apparatus, data processing apparatus, and data processing method
WO2003025755A2 (en) sETHOD AND SYSTEM FOR CACHE MANAGEMENT ALGORITHM SELECTION
US6523086B1 (en) Method for improving performance of read cache of magnetic disk drive
US6693754B2 (en) Method and apparatus for a disc drive adaptive file system
KR20020034095A (ko) 최소 성능 저하를 갖는 탐색 소음 감소
KR100368964B1 (ko) 데이터 기록 방법, 데이터 판독 방법, 디스크 드라이브장치 및 디스크 드라이브 장치의 컨트롤러
JPH06314177A (ja) 磁気ディスク装置及びアクセス方法
US6957300B2 (en) Reducing delay of command completion due to overlap condition
US6725330B1 (en) Adaptable cache for disc drive
JP3847888B2 (ja) ディスク装置及び同装置における欠陥による再配置データの高速ホスト転送方法
US20050166012A1 (en) Method and system for cognitive pre-fetching

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid