KR19980063743A - 컴퓨터가 데이타 저장 디바이스와 통신할 수 있게 하는 방법 및장치 - Google Patents

컴퓨터가 데이타 저장 디바이스와 통신할 수 있게 하는 방법 및장치 Download PDF

Info

Publication number
KR19980063743A
KR19980063743A KR1019970065550A KR19970065550A KR19980063743A KR 19980063743 A KR19980063743 A KR 19980063743A KR 1019970065550 A KR1019970065550 A KR 1019970065550A KR 19970065550 A KR19970065550 A KR 19970065550A KR 19980063743 A KR19980063743 A KR 19980063743A
Authority
KR
South Korea
Prior art keywords
data
disk drive
storage device
data storage
code
Prior art date
Application number
KR1019970065550A
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 KR19980063743A publication Critical patent/KR19980063743A/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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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
    • 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/0658Controller construction 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/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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

컴퓨터 제어 시스템은 디바이스-개시(device-initiated) 버스-마스터링(bus-mastering)을 허용하는 버스를 사용하여 호스트에 접속된 데이타 저장 디바이스를 포함한다. 상기 시스템은 호스트 컴퓨터와 관련되고 데이타 저장 디바이스의 부분이 아닌 시스템 RAM을 갖고 있다. 데이타 저장 디바이스는 디바이스 제어 수단 형태의 소정의 디바이스 운영 데이타/코드, 및 디바이스의 동작을 제어하는데 사용될 디바이스 운영 데이타를 필요로 한다. 데이타 저장 디바이스를 작동시키는 장치 및 방법은 최소한 디바이스 운영 데이타/코드의 일부분을 시스템 RAM 내에 저장하는 것을 포함한다. 상기 장치 및 방법은 호스트 컴퓨터 및/또는 데이타 저장 디바이스가 데이타 저장 디바이스의 동작을 제어하기 위해 디바이스 운영 데이타/코드를 사용할 수 있도록 호스트 컴퓨터 및/또는 데이타 저장 디바이스가 시스템 RAM 내에 저장된 디바이스 운영 데이타/코드로 억세스할 수 있게 하는 것을 포함한다.

Description

컴퓨터가 데이타 저장 디바이스와 통신할 수 있게 하는 방법 및 장치
본 발명은 일반적으로 호스트 컴퓨터 및 시스템 RAM(Random Access Memory)을 갖고 있는 컴퓨터 제어 시스템이, 버스-개시 버스-마스터링을 허용하는 버스를 사용하여 컴퓨터 제어 시스템에 접속된 데이타 저장 디바이스와 통신할 수 있게 하는 장치 및 방법에 관한 것이다. 더욱 상세하게, 본 발명은 호스트 컴퓨터 및/또는 데이타 저장 디바이스에 의한 사용을 위해 시스템 RAM 내의 데이타 저장 디바이스의 작동을 제어하기 위한 운영 데이타 및 코드를 저장하는 것에 관한 것이다.
여기에서 사용된 바와 같이, 컴퓨터 제어 시스템 또는 컴퓨터 시스템이라는 용어는 호스트 컴퓨터 장치 또는 시스템의 동작을 제어하는 마이크로프로세서를 포함하는 소정의 시스템을 언급하는 것이다. 또한, 시스템 RAM은 이것의 동작을 위해 호스트 컴퓨터 또는 마이크로프로세서에 의해 사용된 소정의 메모리를 언급하는 말이다. 컴퓨터 제어 시스템은 퍼스널 컴퓨터 및 컴퓨터 서버와 같은 범용 컴퓨터뿐만 아니라 소비자 전자장치, 설비 또는 소정의 다른 컴퓨터 제어 디바이스를 포함할 수 있다. 또한, 데이타 저장 디바이스 또는 저장 디바이스는 하드 디스크 드라이브, CD 드라이브, 플로피 디스크 드라이브, 제거가능한 하드 디스크 드라이브, 및 다른 광학, 자기, 광-자기 및 소정의 다른 대량 저장 주변 디바이스를 포함하는 그밖의 다른 저장 디바이스를 일컫는 말이다. 이들 그밖의 다른 저장 디바이스는 또한 여러가지 형태의 컴퓨터 시스템의 저장 디바이스로서 사용하기 위해 현재 개발되고 있는 플래시 메모리 및 디지탈 비디오 디스크 디바이스와 같은 디바이스들을 포함한다. 또한, 여기에서 사용된 바와 같이, 운영 데이타 및 코드 또는 운영 데이타/코드는 저장 디바이스를 작동시키기 위해 요구된 여러가지 모든 데이타 및 코드를 언급하고자 하는 것이다.
모든 유형의 저장 디바이스는 데이타가 저장되는 매체 상에 데이타의 각 어드레스가능 유닛을 유일하게 어드레스하기 위한 장치, 디바이스를 제어하기 위한 장치, 및 데이타를 디바이스에서 디바이스가 접속된 시스템으로 전달하기 위한 장치를 포함하여 소정의 특성을 공유한다. 하드 디스크 드라이브는 가장 오래되고 가장 대중적인 저장 디바이스들 중의 하나로서 컴퓨터 시스템에서 가장 오랜 역사를 갖고 있다. 다음 설명의 대부분은 하드 디스크 드라이브에 관한 것이지만, 데이타 어드레싱, 디바이스 제어, 및 데이타 전송의 원리는 하드 디스크 드라이브에 유일한 것이 아니고, 일반적으로 모든 유형의 저장 디바이스에 관한 것이라는 것을 알기 바란다.
퍼스널 컴퓨터 산업의 개발 과정에서, 호스트 컴퓨터에 접속된 하드 디스크 드라이브를 작동시키기 위한 전형적인 장치들은 일련의 발전을 통해 사라져 갔다. 퍼스널 컴퓨터가 처음 개발되었을 때, 하드 디스크 드라이브는 정보가 하드 디스크 드라이브 상에 저장될 수 있는 각 데이타 섹터를 명확하게 정하는 실린더, 헤드 및 섹터로 나누어지는 것으로 추정했다. DOS 운영 시스템은 총 4,194,304 데이타 섹터에 대응된 1024 실린더, 64 헤드, 및 64 섹터의 조직 한계치로 다수의 바이트, 비트 유효 커맨드 구조를 정했다. 시스템 BIOS, 또는 초기 컴퓨터 시스템에 의해 사용된 유틸리티 프로그램은 하드 드라이브의 소정의 결함 데이타를 저장하기 위해 사용되었다. 이들 결함 데이타 섹터는 드라이브가 시스템에 의한 사용을 위해 포맷되었을 때에 시스템에 의해 알려지도록 요구되었다. 시스템은 이들 결함 데이타 섹터가 시스템의 운영 도중에 사용될 수 없게 한다. 그러므로, 공지된 양호한 데이타 섹터만이 데이타를 저장하는데 사용되었고, 데이타가 하드 디스크 드라이브 상에 저장된 실제 실린더, 헤드 및 섹터(CHS)는 호스트 컴퓨터를 실행하는 운영 시스템에 의해 사용된 CHS 데이타 어드레싱 정보에 대응하였다.
초기의 개발 단계에 있어서, 시스템 BIOS는 또한 시스템과 사용될 수 있는 모든 디스크 드라이브 상의 정보를 내장했다. 이용가능한 디바이스의 수가 많아짐에 따라, 이 방법은 점점 더 어려워졌다. 이것의 해결책은 시스템에 의해 사용될 수 있는 사용자 정의 컨피그레이션 정보를 작성하는 것이었다.
이들 초기의 방법은 운영 시스템이, CHS 데이타 어드레스 정보의 소정의 번역을 실행할 필요가 없는 비교적 간단한 시스템 BIOS를 사용하여 디스크 드라이브와 통신할 수 있게 했다. 이들 초기 시스템의 운영 시스템이 시스템 BIOS를 통해 판독/기록 요청을 했을 때, 시스템 BIOS는 어드레스 정보를 몇가지 다른 포맷으로 번역하지 않고 CHS 어드레스 정보를 디스크 드라이브 상에 단순히 통과시켰다. 또한, 디스크 드라이브는 번역 기능을 제공하거나 또는 결함 데이타 섹터의 키핑 트랙의 문제를 조정하기 위한 디스크 드라이브의 부분으로서 이들 기능이 시스템에 의해 제공되었기 때문에 소정의 복합 디스크 드라이브 펌웨어(firmware)를 필요로 하지 않는 비교적 단순한 것이었다.
디스크 드라이브 산업은 커맨드 구조도 포함한 IDE(Integrated Device Electronics)로서 공지된 자체의 인터페이스 표준 또는 제한조건을 독립적으로 개발했다. 이들 IDE 표준은 운영 시스템 및 시스템 BIOS에 의해 부과된 제한조건과 다른 제한조건을 부과했다. IDE 커맨드 구조 제한조건은 총 268,431,360 섹터를 제공하는 65,535 실린더, 16 헤드, 및 256 섹터로 설정되었다. 두개의 표준안이 동일한 CHS 어드레싱 구조에 사용되었기 때문에, 전체 시스템 제한은 실린더, 헤드, 및 섹터의 각 필드마다 최하위 공통 비트에 의해 지시받았다. 이것은 총 1.048,576 데이타 섹터에 대한 1024 실린더, 16 헤드, 및 64 섹터의 결합 제한을 초래했다. 이들 2개의 상이한 제한조건의 결합이 디스크 드라이브의 전체 데이타 저장 용량을 과도하게 제한함으로써 초기에는 문제를 일으키지 않았지만, 더욱 더 커진 용량의 디스크 드라이브에 대한 요구는 결국 이들 2개의 제한조건의 결합에 따라 이용가능한 것보다 더 많은 섹터를 제공하는 드라이브를 원하도록 만들었다.
이들 결합 제한조건을 보상하기 위해, 번역 소프트웨어는 운영 시스템 제한조건에서 IDE 드라이브 제한조건으로 번역하기 위해 개발되었다. 이 소프트웨어는 번역 시스템 BIOS 또는 부트 오버레이 번역 BIOS 소프트웨어 형태로 제공되었다. 번역 소프트웨어는 운영 시스템 제한조건이 운영 시스템에 기초한 CHS 어드레스를 디스크 드라이브에 기초한 CHS 어드레스로 번역함으로써 허용된 모든 이론적인 수의 데이타 섹터를 운영 시스템이 사용할 수 있게 했다. 그러나, 판독/기록 요청이 운영 시스템에 의해 행해질 때마다, 번역기는 운영 시스템의 이론적인 CHS 어드레스 정보(DOS 운영 시스템 표준에 기초)를 디스크 드라이브에 의해 사용된 논리적 CHS 어드레스 정보(디스크 드라이브 산업 표준에 기초)로 번역해야 했다. 추가 프로세싱 시간을 요구하는 이 번역은 시스템을 느리게 하지만, 운영 시스템에 의해 부과된 제한조건으로 돌아가면 이용가능한 데이타 섹터의 수를 증가시켰다.
디스크 드라이브 산업의 기술 개발은 하드 디스크 드라이브가 더욱 복잡해짐으로써 하드 디스크 드라이브를 호스트 컴퓨터와 인터페이스하는 태스크를 더욱 복잡하게 만들었다. 제1의 추가 개발은 하드 디스크 드라이브 산업이 실린더, 헤드, 섹터, 및 존(zone)에 따라 각 데이타 섹터를 정하기 시작했다는 것이다. 디스크 드라이브의 존은 디스크의 데이타 저장 밀도를 더욱 효율적으로 사용하기 위해 디른 주파수에서 저장된 데이타를 갖는 각 존을 갖는 디스크의 실린더의 다른 그룹에 대응한다. 예를 들어, 제1 존에 대응하는 외부 실린더는 제1 주파수에서 판독되고 기록될 수 있다. 제2 존을 형성하는 중간 실린더는 제2의 느린 주파수에서 판독/기록될 수 있다. 마지막으로, 제3 존과 관련된 내부 실린더는 제3의 더욱 느린 주파수에서 판독되고 기록될 수 있다.
존의 사용이 주어진 하드 디스크 드라이브의 저장 용량을 중가시켰지만, 또한 디스크 드라이브를 제어하기 위해 요구된 디스크 드라이브 펌웨어 및 디스크 드라이브 운영 데이타의 복잡도를 더욱 증가시켰다. 이들 새롭고 복합적인 디스크 드라이브는 논리적 IDE CJS 어드레스 정보에서 디스크 드라이브에 의해 실제로 사용된 실제 실린더, 헤드, 섹터 및 존 어드레스 정보로의 다른 번역을 실행하기 위해 더욱 복합적인 디스크 드라이브 펌웨어를 필요로 했다. 또한, 이들 복합 디스크 드라이브는 억세스되는 존에 따라 다른 주파수에서 동작될 수 있게 하기 위해 디스크 드라이브 판독 채널을 필요로 했다. 이것은 복합 디스크 드라이브의 더욱 복잡한 존 배향 동작을 제어하기 위해 각각의 여러가지 존 및 디스크 드라이브 펌웨어 내에 데이타를 억세스할 때 제어 세팅(예를 들어, 주파수)이 사용되어야 하는 것을 식별하는 존, 판독 채널 데이타가 섹터 내에 있는 것을 식별하는 디스크 드라이브 운영 데이타를 포함하기 위해 복합 디스크 드라이브를 필요로 했다. 설명을 위해, 상술된 존을 포함하는 디스크 드라이브는 명세서 및 특허청구의 범위 전반을 통해 복합 디스크 드라이브로 언급될 것이다.
다른 개발에 있어서, 디스크 드라이브 산업은 실린더, 헤드 및 섹터가 전형적으로 어드레스되는 방법을 변경했다. 초기에, 디스크 드라이브 상의 각 데이타 섹터는 그 필드의 어드레스를 포함하고 섹터가 결함인지의 여부에 관한 정보를 포함하는 식별 필드를 포함했다. 각 데이타 섹터의 이들 식별 필드는 디스크 드라이브 상의 데이타 저장 공간의 상당 부분(즉, 7-10%)을 사용함으로써 주어진 디스크 드라이브의 이용가능한 데이타 저장 공간의 양을 감소시켰다. 더욱 정교한 제어기 및 펌웨어를 갖고 있는 더욱 진보된 디스크 드라이브가 이용가능해짐에 따라, 각 데이타 섹터와 관련된 식별 필드에 대한 필요성이 없어짐으로써 주어진 디스크 드라이브의 데이타 저장 용량을 증가시켰다. 그러나, 이러한 방법의 사용은 디스크 드라이브의 섹터가 다른 방법으로 저장되기 위해 결함인지를 식별하는 결함 정보를 필요로 했다.
이러한 문제를 해결하기 위해, 복합 디스크 드라이브 상의 모든 결함 데이타 섹터의 리스트를 포함하는 결함 리스트 형태의 디스크 드라이브 운영 데이타는 전형적으로 복합 하드 디스크 드라이브의 저장 매체 상에 저장된다. 결함 리스트는 디스크 드라이브의 작동 중에 리스트가 하드 디스크 제어기 및/또는 펌웨어에 이용할 수 있도록 디스크 드라이브의 초기화 동안에 디스크 드라이브 디바이스 상의 RAM 메모리 버퍼 내로 로드된다. 이 방법은 결함 리스트와 관련된 데이타가 복합 디스크 드라이브의 동작 전반을 통해 사용하기 위해 메모리 버퍼 내에 저장될 수 있도록 달리 요구될 수 있는 더 큰 RAM 메모리 버퍼, 및 제어기를 동작시키기 위해 더욱 복잡한 제어기, 더욱 복잡한 디스크 드라이브 펌웨어를 필요로 한다. 이러한 모든 요구사항은 복합 하드 디스크 드라이브를 제공하는 비용을 더욱 추가시킨다.
이러한 결함 리스트 방법을 사용하면, 복합 하드 디스크 드라이브 제어기는 판독/기록 요청이 행해질 때마다 결함 데이타 섹터가 이용되지 않게 결함 메모리 저장 위치의 리스트를 통해 분류하기 위해 복합 하드웨어 및/또는 디스크 드라이브 펌웨어를 사용한다. 이러한 분류는 복합 디스크 드라이브가 데이타를 판독하거나 또는 기록할 때마다 실행되어야 하는 시스템의 작동에 또 다른 시간 소모 프로세스를 추가시키므로 시스템의 전체 동작을 느리게 한다.
저장 디바이스가 실제로 전형적으로 전기기계적이기 때문에, 데이타를 억세스하는데 필요한 시간은 시스템 RAM을 억세스하는데 필요한 시간보다 훨씬 길어서 시스템 성능을 유효하게 저하시킨다. 기계적 지연의 몇가지 효과를 감소시키기 위해, 저장 디바이스가 시스템에 의해 억세스되는 높은 공산을 갖는 저장 매체로부터 데이타를 모아서 그 데이타를 저장 디바이스 상의 RAM과 같은 고속 억세스 저장 소자 내에 저장하기 위해 저장 디바이스가 통상적으로 아이들 상태인 시간을 이용할 수 있다. 이러한 메카니즘은 보통 산업 전반에 판독 캐싱(caching)으로서 공지되어 있다. 몇가지 판독 캐싱 메카니즘이 있는데, 이들중 몇몇은 실제로 시기상조이고, 그 이외의 것은 데이타 보존에 기초한다. 또한, 데이타를 저장 디바이스에 실제로 기록하기에 좋을 때까지 기록 데이타를 기록 캐시에 보유하는 메카니즘이 있다. 바라건대, 이 데이타는 시스템 성능에 미치는 나쁜 영향을 감소시킬 수 있는 시기에 기록되기를 바란다.
저장 디바이스는 전형적으로 판독 캐시 데이타를 저장하거나 또는 기록 캐시 데이타를 저장하기 위해 디바이스 상의 RAM과 같은 전자 데이타 저장 소자를 이용한다. 저장 디바이스의 작동에 캐싱이 요구되지 않으면, 이것은 다수의 저장 디바이스 상에서 표준 형태가 된다. 판독/기록 캐싱에 사용된 추가 RAM은 저장 디바이스의 비용을 더욱 증가시킨다.
컴퓨터 아키텍처의 더욱 최근의 개발에 있어서, 디바이스-개시 버스-마스터링을 실현하는 새로운 직렬 및 병렬 버스 아키텍처가 정해졌다. 디바이스-개시 버스-마스터링은 시스템 메모리에 기록되거나 시스템 메모리로부터 판독되는 어드레스를 디바이스가 제어할 수 있게 하는 메카니즘이다. 또한, 디바이스-개시 버스-마스터링은 디바이스가 호스트에 관한 하드웨어 또는 소프트웨어를 소정의 다른 제어를 하지 않고 마음대로 버스 마스터할 수 있게 한다. PCI(Peripheral Computer Interconnect) 버스는 병렬 버스 구성으로 이러한 메카니즘을 실현한다. IEEE 1394 명세는 직렬 버스 구성으로 이러한 메카니즘을 실현한다.
몇가지 새로운 주변 버스 아키텍처는 또한 재배치가능 디바이스 지정 호스트 소프트웨어가 재배치가능 확장 BIOS 형태로 디바이스에서 시스템 RAM 내로 로드될 수 있게 한다. 이것은 호스트 시스템 BIOS에 관한 디바이스 의존성을 상당히 감소시킨다. 현재 이러한 예의 한가지는 PCI 버스 아키텍처이다. IEEE 1394 버스와 같은 다른 버스 아키텍처는 앞으로 이들 능력을 추가할 수 있다.
도 1을 참조하여, SCSI(Small Computer System Interface) 아답터 카드 및 PCI 버스를 사용하는 시스템에 접속된 복합 하드 디스크 드라이브 및 복합 IDE 하드 디스크 드라이브를 포함하는 전형적인 현재의 컴퓨터 시스템(10)에 대해 설명하겠다. 도 1에 도시된 바와 같이, 시스템(10)은 시스템 BIOS ROM(12)을 갖고 있는 호스트 컴퓨터 모듈(11)(이하, 명세서 및 특허청구의 범위에서 호스트 컴퓨터라 함) 또는 다르게 로드된 시스템 ROM 코드 및 시스템 RAM(13)을 포함한다. 시스템은 시스템 BIOS 코드(14), 및 시스템 BIOS ROM(12) 내에 저장되거나 또는 시스템 RAM(13)에 로드되는(새도우 또는 로드되는) 시스템 번역 BIOS(15) 또는 부트 오버레이 번역 BIOS 소프트웨어를 사용하여 작동된다. 호스트 브리지(16)는 호스트 컴퓨터(11)를 ISA 버스(17) 및 PCI 버스(18)에 접속한다. 제1의 복합 하드 디스크 드라이브(19)는 리본 케이블(20)을 사용하여 ISA 버스(17)에 접속된다. 드라이브(19)는 ROM(22) 내에 저장된 디스크 드라이브 펌웨어(21), 및 디스크 드라이브(19)의 작동을 제어하기 위한 디스크 드라이브 제어기(23)를 포함한다.
SCSI 아답터 카드(24) 형태인 주변 디바이스는 PCI 버스(18)에 접속되고, SCSI 프로토콜의 경우에 PCI 버스의 프로토콜과 아답터 카드의 프로토콜 사이에서 아답터 카드(24)를 통해 통과하는 모든 통신을 번역하기 위한 프로토콜 번역기(25)를 포함한다. 아답터 카드(24)는 또한 시스템의 개시 동안에 아답터 카드(24)를 초기화하여 동작시키기 위한 확장 BIOS를 포함하는 확장 BIOS ROM(26)을 포함한다. 시스템(10)은 또한 아답터 카드(24)에 접속된 제2의 복합 하드 디스크 드라이브(27)를 포함한다. 디스크 드라이브(27)는 RAM 메모리 버퍼(28), 디스크 드라이브 제어기(29), 및 하드 디스크 드라이브(27)의 동작을 제어하기 위해 ROM(31) 내에 저장된 디스크 드라이브 펌웨어(30)을 포함한다. 하드 디스크 드라이브(27)는 리본 케이블(32)을 사용하여 아답터 카드(24)에 전기적으로 접속된다. 두개의 복합 하드 디스크 드라이브(19 및 27)는 각 데이타 섹터를 하드 디스크 디라이브(19 및 27) 내에 명확하게 정하는 실린더, 헤드, 섹터 및 존으로 나누어진다.
상술된 바와 같은 전형적인 PCI 기초 시스템에 있어서, 시스템이 턴온될 때, 시스템 BIOS(14)는 먼저 복합 디스크 드라이브(19)와 같은 ISA 버스(17)에 접속된 주변 디바이스에 대한 시스템을 체크한다. 이 경우에, 디스크 드라이브(19)가 위치될 때, 시스템 BIOS는 디스크 드라이브(19)를 초기화하여 이것을 시스템 내에서 사용하기 위해 컨피그한다. 하드 디스크 드라이브(19)는 RAM 메모리 버퍼(34)를 포함하고, 하드 디스크 드라이브(19)에 대한 초기화 프로세스는 하드 디스크 드라이브 상의 모든 결함 메모리 저장 위치의 결함 리스트와 같은 정보를 하드 디스크(19)의 저장 매체로부터 RAM 메모리 버퍼(34) 내로 로딩하는 단계를 포함한다. 이 정보는 디스크 드라이브(19)의 동작을 통해 디스크 드라이브 펌웨어(21)에 의한 사용을 위해 이용할 수 있다.
ISA 디바이스가 컨피그된 다음에, 시스템은 아답터 카드(24)와 같은 PCI 버스(18)에 접속된 주변 디바이스에 대해 체크한다. 아답터 카드(24)가 위치될 때, 시스템 BIOS는 아답터 카드와 관련된 소정의 확장 BIOS가 있는 지를 알아보기 위해 체크한다. 아답터 카드와 관련된 확장 BIOS가 있으면, 확장 BIOS가 확장 BIOS ROM(26) 내에 있는 경우에, 확장 BIOS는 시스템 ROM 코드에 의해 RAM(13) 내로 로드된다. 그 다음, 복합 디스크 드라이브(27)와 같은 소정의 부착된 주변장치와 함께 아답터 카드(24)는 초기화된다. 하드 디스크 드라이브(27)에 대한 초기화 프로세스는 하드 디스크 드라이브 상의 모든 결함 메모리 저장 위치의 결함 리스트와 같은 정보를 하드 디스크(27)의 저장 매체로부터 RAM 메모리 버퍼(28) 내로 로딩하는 단계를 포함하므로, 이 정보는 디스크 드라이브(27)의 동작을 통해 디스크 드라이브 펌웨어(30)에 의한 사용을 위해 이용할 수 있다. 시스템(10)은 시스템의 PCI 버스에 접속된 디바이스에 대한 체킹이 완료된 다음에, 시스템 BIOS는 전체 시스템의 동작을 제어하는데 사용되는 운영 시스템을 계속 로드해 간다.
도 2A 및 2B의 블럭도와 함께 도 1을 각각 참조하여, 시스템 상에서 실행되는 응용 프로그램(35)이 복합 하드 디스크 드라이브(19 또는 27)의 판독/기록 요청을 할 때의 시스템(10)의 동작에 대해 간단하게 설명하겠다. 하드 디스크 드라이브(19)와 관련하여 도 2A에 도시된 바와 같이, 응용 프로그램(35)이 하드 드라이브(19)의 판독/기록 요청을 할 때, 시스템(10)을 작동시키는 운영 시스템(36)은 요청을 수신하고, 운영 시스템(36)이 데이타가 디스크 드라이브(19) 내에 저장되어 있다고 생각하는 이론적이거나 또는 논리적인 어드레스 정보를 결정한다. 운영 시스템(36)에 특정된 디바이스 드라이버(37)는 운영 시스템 논리 어드레스 정보를 시스템 논리 어드레스 정보로 번역한다(번역#1). 그 다음, 시스템 번역 BIOS(15)는 이 시스템 논리 어드레스 정보를 IDE 디스크 드라이브(19)에 의해 사용된 논리 어드레스 정보로 번역한다(번역#2). 제어기(23)를 사용하는 펌웨어(21)는 논리 IDE 어드레스 정보를 디스크 드라이브에 의해 사용된 물리적 실린더, 헤드, 섹터 및 존 어드레스 정보로 변역하고(번역#3), 결함 데이타 위치가 사용되지 못하게 하기 위해 결함 메모리 저장 위치 리스트를 체크한다. 이들 3개의 번역이 완료하면, 제어기(23)는 요청된 정보를 매체로부터 판독하거나 또는 매체로 기록한다.
이제 도 2B를 참조하면, 응용 프로그램(35)이 복합 디스크 드라이브(27)의 판독/기록 요청을 할 때, 운영 시스템(36)은 요청을 수신하고, 운영 시스템(36)이 데이타가 디스크 드라이브(27) 내에 저장되어 있다고 생각하는 논리 어드레스 정보를 결정한다. 그 다음, 운영 시스템(36)은 결정된 논리 어드레스에서 데이타를 판독/기록하는 디스크 드라이브(27)를 갖기 위해 판독/기록 요청을 발생시킨다. 디스크 드라이버(37)는 운영 시스템 논리 어드레스 정보를 시스템 논리 어드레스 정보로 번역한다(번역#1). 시스템의 개시 동안에 시스템 RAM 내로 로드된 SCSI와 관련된 확장 BIOS는 시스템 논리 어드레스 정보를 블럭(38)에 표시된 바와 같이 SCSI 논리 어드레스 정보로 번역한다(번역#2). 제어기(29)를 사용하는 펌웨어(30)는 SCSI 논리 어드레스 정보를 디스크 드라이브에 의해 사용된 물리적 실린더, 헤드, 섹터 및 존 어드레스 정보로 번역하고(번역#3), 결함 데이타 위치가 사용되지 않도록 하기 위해 메모리 버퍼(28) 내에 저장된 결함 메모리 저장 위치 리스트를 체크한다. 최종적으로, 각각의 이들 번역이 완료된 후, 제어기(29)는 요청된 정보를 판독하거나 또는 기록한다.
상기 설명에 의해 알 수 있는 바와 같이, 디스크 드라이브(19) 및 디스크 드라이브(27)의 각 정보 요청시마다 두방향으로 몇가지 번역이 요청된다. 이들 번역은 프로세싱 시간을 사용하여 전체 시스템의 속도를 느리게 한다. 또한, 이러한 일반적인 방법은 현재 시스템에서 전형적으로 사용된 현재 이용가능한 복합 디스크 드라이브를 작동시키기 위해 디스크 드라이브 상의 복합 디스크 드라이브 펌웨어 및 복합 번역 BIOS 또는 확장 BIOS를 필요로 한다. 이들 요구사항은 (i) 더욱 복잡한 디스크 드라이브 펌웨어를 저장하기 위한 드라이브 상의 상당한 양의 ROM, (ii) 어드레스 정보의 번역 태스크를 실행하기 위한 드라이브 상의 더욱 강력한 프로세서 또는 제어기, (iii) 복합 디스크 드라이브의 운영 데이타를 저장하여 조작하기 위한 드라이브 상의 상당한 양의 버퍼 RAM, 및 (iv) 드라이브의 증가된 복잡도로 인한 증가된 제품 개발 및 검증 시간과 비용을 필요로 함으로써 하드 디스크 드라이브의 비용을 상당히 추가시킨다.
도 3을 참조하여, 하드 디스크 드라이브를 포함하는 전형적인 컴퓨터 시스템(10)의 동작에 대해 설명하겠다. 이 시점에서, 드라이브(27)의 관점에서 동작이 설명될 것이지만, 드라이브(19)의 동작도 유사한 방식으로 실행될 수 있다. 복합 디스크 드라이브(27)를 작동시키기 위해, 호스트 컴퓨터(11)는 시스템 BIOS 코드(14)의 부분이고 시스템 RAM(13) 내에 저장된 호스트 코드(40)를 포함한다. 호스트 코드(40)는 디스크 드라이브(27)의 커맨드 제어를 제공하기 위해 사용된다. 디스크 드라이브(27)는 디스크 드라이브(27)의 동작에 요구된 소정의 운영 데이타 및 코드(42)를 포함한다. 운영 데이타/코드(42)는 ROM(31) 내에 저장된 디스크 드라이브 펌웨어(30A와 30B), 및 디스크 드라이브의 작동 중에 펌웨어(30A 및 30B)에 의해 사용하기 위한 RAM 메모리 버퍼(28) 내에 디스크 드라이브 운영 데이타(44)를 포함한다. 디스크 드라이브 운영 데이타(44)는 존 위치 데이타, 제어기(29)의 제어 세팅 데이타, 및 디스크 드라이브의 동작에 요구된 결함 메모리 저장 위치 데이타와 같은 여러가지 디스크 드라이브 운영 데이타를 포함한다.
도 3에서 화살표(46)으로 도시된 바와 같이, 시스템 RAM(13) 내의 호스트 코드(40)는 디스크 드라이브(27) 상의 커맨드 제어만을 갖고, 즉 호스트 코드(40)는 운영 데이타(44)를 디스크 드라이브로 억세스하지 않는다. 또한, 호스트 코드(40)는 디스크 드라이브 운영 데이타(44)를 이용하거나 또는 디스크 드라이브(27)의 특정 동작을 제어하는데 필요한 하드 디스크 드라이브 특정 펌웨어를 포함하지 않는다. 이러한 이유 때문에, 호스트 코드(40), 그러므로 호스트 컴퓨터(11)는 i) 어드레스 정보를 디스크 드라이브(27) 내의 디스크 드라이브 펌웨어의 최하위 레벨에 의해 요구된 어드레스 정보로 번역할 수 없고, ii) 식별할 수 없으므로, 디스크 드라이브(27) 상의 결함 메모리 저장 위치를 이용할 수 없다. 그러므로, 상술된 바와 같이, 모든 이들 태스크는 디스크 드라이브(27) 내의 디스크 드라이브 펌웨어(30A 및 30B)에 의해 실행되어야 하므로 디스크 드라이브의 복잡도와 비용을 증가시킨다. 이들 태스크가 디스크 드라이브(27)에 의해 실행되고 호스트 코드(40)에 의해 요청된 커맨드가 실행된 후에, 디스크 드라이브(27)는 화살표(48)로 표시된 바와 같이 적절한 정보를 호스트 컴퓨터로 다시 복귀시킨다.
복합 디스크 드라이브(27)가 호스트 컴퓨터의 호스트 코드(40)로부터 커맨드를 수신할 때, 디스크 드라이브 펌웨어(30A)는 어드레스 정보를 상술된 바와 같이 디스크 드라이브에 의해 사용된 어드레스 정보로 번역한다. 펌웨어(30A)는 결함 메모리 저장 위치가 사용되지 않도록 하기 위해 RAM 메모리 버퍼(28) 내에 저장된 디스크 드라이브 운영 데이타(44)의 결함 정보를 사용한다. 복합 디스크 드라이브(27)에게 이들 기능과 상술된 바와 같은 것을 실행하도록 요구함으로써, 복합 디스크 드라이브(27)는 더욱 복잡한 제어기, 더욱 복잡한 펌웨어를 필요로 하고, 디스크 드라이브 운영 데이타(44)를 저장하기 위해 달리 필요했던 거보다 더 큰 RAM 메모리 버퍼를 필요로 한다. 이들 요구사항은 (i) 추가 디스크 드라이브 펌웨어를 저장하기 위한 디스크 드라이브 내의 더욱 큰 ROM, (ii) 디스크 드라이브의 작동 중에 사용하기 위한 디스크 드라이브 운영 데이타(44)를 저장하기 위한 비교적 대량의 RAM 메모리 버퍼 공간, (iii) 결함 리스트 및 다른 디스크 드라이브 운영 데이타를 통해 저장하는 태스크를 실행하기 위한 더욱 강력한 프로세서 또는 제어기, 및 (iv) 더 많은 제품 개발 시간과 비용을 필요로 함으로써 하드 디스크 드라이브의 비용을 더욱 추가시킨다.
도 4에 도시된 바와 같이, 본 발명은 시스템 RAM을 갖는 호스트 컴퓨터에 접속된 복합 하드 디스크 드라이브을 작동시키기 위한 장치를 제공한다. 이 장치는 복합 디스크 드라이브의 작동에 요구되고 통상 시스템 RAM 내에 저장되도록 복합 디스크 드라이브 자체에 저장된 디스크 드라이브 펌웨어 및/또는 디스크 드라이브 운영 데이타 형태로 최소한 디스크 드라이브 운영 데이타 및 코드를 허용한다. 이러한 예는 도 3과 도 4에 다르게 도시되어 있다. 본 발명에 따르면, 도 4에 있어서, 디스크 드라이브 펌웨어(30A) 및 디스크 드라이브 운영 데이타(44)는 시스템 RAM(13) 내에 저장되어 있다. 이 장치는 또한 호스트 컴퓨터가 디스크 드라이브의 작동을 제어하기 위해 운영 데이타를 사용할 수 있도록 호스트 컴퓨터가 시스템 RAM 내에 저장된 디스크 드라이브 운영 데이타 및 코드로 억세스할 수 있게 한다. 하드 디스크 드라이브는 또한 디스크 드라이브가 디스크 드라이브의 작동을 제어하기 위해 운영 데이타를 사용할 수 있도록 시스템 RAM 내에 저장된 운영 데이타로 억세스한다. 더욱 상세하게 후술되는 바와 같이, 이 장치는 i) 디스크 드라이브 펌웨어를 저장하기 위한 디스크 드라이브를 적재하는데 필요한 ROM의 양이 상당히 감소될 수 있게 하고, ii) 디스크 드라이브 제어기의 복잡도가 상당히 감소될 수 있게 하며, iii) 디스크 드라이브의 작동 중에 사용된 디스크 드라이브 운영 데이타를 저장하는데 요구된 RAM 메모리 버퍼 공간의 양이 상당히 감소되거나 심지어 제거될 수 있게 하고, iv)제품 개발 비용과 시간이 감소될 수 있게 한다. 하드 디스크 드라이브의 구성부품의 이들 요구사항의 감소는 본 발명에 따라 하드 디스크 드라이브를 제공할 때 성능이 개선됨과 동시에 상당한 비용을 줄일수 있도록 조합한다.
본 발명의 장치를 사용하면, 또한 시스템 RAM을 사용하여 캐시 기능이 제공될 수 있다. 이러한 경우라면, 도 4의 호스트 실행가능 펌웨어(30A)는 시스템 RAM의 일부분을 캐시 사용에 할당한다. 그러므로, 펌웨어(30A)는 운영 시스템 또는 응용 프로그램이 앞으로 요청할 수 있는 데이타로 시스템 캐시 RAM을 채우는 저장 디바이스로 자발적인 판독 커맨드를 발할 수 있다. 이러한 데이타가 요청될 때, 이것은 이미 시스템 RAM 내에 상주하고 있어서, 운영 시스템 또는 응용 프로그램에 의해 특정된 위치로 신속하게 이동될 수 있다. 기록 캐시는 데이타가 저장 디바이스에 기록되어 있다는 것을 펌웨어(30A)가 운영 시스템에 보고한 후에 기록 데이타가 시스템 캐시 RAM 내에 남아있을 수 있게 함으로써 보조된다. 나중의 편리한 시점에, 펌웨어(30A)는 데이타를 저장 디바이스 매체에 전달하기 위해 기록 커맨드를 저장 디바이스에 발한다.
본 발명에 따르고 상기 간단하게 설명된 바와 같이 캐시용 시스템 RAM을 사용하면 저장 디바이스 RAM을 사용하는 것보다 훨씬 더 효율적이고 비용면에서도 효과적이다. 시스템 RAM은 디바이스 RAM이 더 큰 블럭으로 구입되므로 디바이스 RAM보다 메가바이트 당 비용이 덜 든다. 또한, 캐시에 사용된 시스템 RAM의 양은 사용자의 필요성과 이용 가능한 시스템 RAM의 양에 따라 컨피그될 수 있다. 적은 양의 캐시는 이용가능한 RAM이 제한된 시스템에 할당되고, 시스템의 큰 캐시는 더욱 큰 RAM을 갖는다. 시스템 RAM 내에 이미 데이타가 있는 곳을 시스템이 억세스할 때, 디바이스에서보다 시스템 RAM 내의 한 위치에서 다른 위치로 데이타를 전달하는 것이 훨씬 더 빠르다. 그러므로, 캐시용 시스템 RAM의 사용은 캐시 성능을 향상시킨다.
도 4는 도 3을 설명하는데 사용되었던 것과 동일한 참조번호를 사용하여 본 발명에 따른 복합 하드 디스크 드라이브의 동작 제어를 도 3의 종래 시스템과 대조한 것이다. 도 4에 도시된 바와 같이, 본 발명은 도 3에서 설명되었던 것처럼 시스템 RAM(13) 내에 호스트 코드(40)를 보유한다. 그러나, 본 발명에 따르면, 몇몇의 또는 모든 디스크 드라이브 운영 데이타(44)는 하드 디스크 드라이브의 RAM 메모리 버퍼(28)보다 오히려 시스템 RAM(13) 내에 저장된다. 또한, 디스크 드라이브 펌웨어의 일부분은, 구체적으로 펌웨어(30A)의 기능성은 저장 디바이스를 적재하는 ROM(31)에 저장되기보다 오히려 시스템 RAM(13) 내에 저장되어 호스트 컴퓨터 상에서 운영되고(실행되고), 도 3에서 상술되었던 것처럼 디스크 드라이브에 의해 운영된다(실행된다). 디스크 드라이브 펌웨어의 일부분, 즉 펌웨어(30B)만이 디스크 드라이브 작동 중에 사용하기 위한 디스크 드라이브를 적재하여 저장되는데 요구된다. 더우기, 본 발명에 따르면 화살표(50 및 52)로 표시된 바와 같이, 본 발명의 장치는 디스크 드라이브 상의 펌웨어(30B), 및 시스템 RAM 내에 저장된 펌웨어, 즉 펌웨어(30A)가 시스템 RAM 내에 저장된 디스크 드라이브 운영 데이타(44)를 억세스할 수 있게 한다.
더욱 상세하게 후술되는 바와 같이, 이 장치는 종래의 복합 하드 디스크 드라이브 펌웨어 및 제어기에 의해 실행되는데 전형적으로 요구된 많은 기능들이 호스트 컴퓨터에 의해 실행될 수 있게 한다. 예를 들어, 디스크 드라이브 및 결함 메모리 리스트 관리에 의해 실제로 사용된 정보를 어드레스하기 위한 어드레스 번역 기능이 호스트 컴퓨터에 의해 실행될 수 있다. 이 장치는 또한 호스트 컴퓨터가, 디스크 드라이브 내에 배타적으로 디스크 드라이브 펌웨어 및 데이타를 유지하는 종래의 방법을 사용하여 이전에 할 수 없었던 기능을 실행할 뿐만 아니라 판독 어헤드 및 기록 캐싱 기능과 같은 더욱 고도한 다른 기능을 실행할 수 있게 한다.
지금까지 종래의 저장 디바이스의 동작에 대해 하드 디스크 드라이브와 관련하여 상세하게 설명하였다. 그러나, 데이타 어드레싱, 디바이스 제어 및 데이타 전달의 일반적인 원리는 다른 저장 디바이스에서도 유사하다. 예를 들어, CD 드라이브의 경우, CD 드라이브는 전형적으로 CD 드라이브의 동작을 제어하기 위한 운영 데이타 및 코드를 포함한다. CD 드라이브가 하드 디스크 드라이브에서 설명된 것과 동일한 발전 정도를 통해 사라지지 않았기 때문에, 이들은 어드레싱 정보의 다수의 번역과 관련된 문제점을 갖지 않는다. 플로피 디스크, 제거가능한 하드 디스크 드라이브와 같은 다른 저장 디바이스 및 여러가지 저장 디바이스는 또한 디바이스의 동작을 제어하기 위해 운영 데이타 및 코드를 이용한다. 이들 여러가지 디바이스의 운영 데이타 및 코드가 각각의 특정 형태의 디바이스에 규정될 수 있지만, 일반적인 원리는 하드 디스크 드라이브에서 설명된 것과 유사하다.
본 발명은 디바이스 자체에 전형적으로 저장되고 디바이스 자체에 의해 전형적으로만 사용된 운영 데이타 및 코드가 시스템 RAM 내에 저장될 수 있게 한다. 본 발명에 따르면, 시스템 RAM 내에 운영 데이타 및 코드를 저장하는 것은 호스트 컴퓨터가 저장 디바이스의 동작을 제어하기 위해 운영 데이타 및 코드를 사용할 수 있게 한다. 저장 디바이스의 몇가지 동작을 제어하기 위해 호스트 컴퓨터를 사용함으로써, 호스트 컴퓨터 내의 프로세서가 보통 더욱 강력해지고 시스템 RAM이 호스트 시스템에 의해 더욱 신속하게 억세스될 수 있기 때문에, 전체 시스템의 성능이 향상될 수 있다.
더욱 상세하게 후술되는 바와 같이, 컴퓨터 제어 시스템의 부분을 형성하는 호스트 컴퓨터가, 디바이스-개시 버스-마스터링을 허용하는 버스를 사용하여 시스템에 접속된 데이타 저장 디바이스와 통신할 수 있게 한다. 시스템은 호스트 컴퓨터와 관련되고 데이타 저장 디바이스의 부분이 아닌 시스템 RAM을 갖는다. 데이타 저장 디바이스는 디바이스 제어 수단 형태의 소정의 디바이스 운영 데이타/코드, 및 디바이스의 동작을 제어하기 위해 사용될 디바이스 운영 데이타를 필요로 한다. 데이타 저장 디바이스를 작동시키기 위한 장치 및 방법은 시스템 RAM 내에 최소한 디바이스 운영 데이타/코드의 일부분을 저장하는 것을 포함한다. 또한, 상기 장치 및 방법은 호스트 컴퓨터 및/또는 데이타 저장 디바이스가 데이타 저장 디바이스의 동작을 제어하기 위해 디바이스 운영 데이타/코드를 사용할 수 있도록 시스템 RAM 내에 저장된 디바이스 운영 데이타/코드로 억세스할 수 있게 한다.
시스템의 동작 중에 데이타 저장 디바이스 및/또는 호스트 컴퓨터에 의해 사용하기 위해 시스템 RAM 내에 저장될 수 있는 데이타 저장 디바이스에 의해 요구된 운영 데이타/코드는 광범위한 제어 기능 및/또는 데이타를 포함할 수 있다. 본 발명에 따르면, 이들 운영 데이타/코드는 여러가지 조합을 포함할 수 있지만, 다음 형태의 운영 데이타/코드에 제한되지 않는다. 몇가지 다음과 같은 형태의 운영 데이타/코드는 소정 형태의 데이타 저장 디바이스에만 적용할 수 있고, 그 이외의 다른 것은 사용되고 있는 데이타 저장 디바이스의 형태에 상관없이 적용할 수 있다. 이들 여러가지 운영 데이타/코드는 i) 시스템 RAM 내의 데이타 저장 디바이스와 관련된 결함 메모리 저장 위치를 식별하는 결함 리스트 정보를 저장하여 호스트 컴퓨터가 특정 판독/기록 요청과 관련된 결함 메모리 저장 위치을 식별하기 위해 결함 리스트를 통해 분류하는 기능을 실행할 수 있게 하는 것, ii) 시스템 RAM 내의 데이타 저장 디바이스의 동작을 제어하기 위한 커맨드 리스트를 저장하여 호스트 컴퓨터 및/또는 데이타 저장 디바이스가 커맨드 리스트를 억세스하여 조작할 수 있게 하는 것, iii) 시스템 RAM 내에 판독 어헤드 버퍼 공간을 할당하여 호스트 컴퓨터가 데이타 저장 디바이스와 관련된 판독 어헤드 기능을 제어할 수 있게 하는 것, iv) 시스템 RAM 내에 기록 캐시 버퍼 공간을 할당하여 호스트 컴퓨터가 데이타 저장 디바이스와 관련된 기록 캐싱 기능을 제어할 수 있게 하는 것, v) 데이타 저장 디바이스 제어기에 의해 사용된 제어 세팅을 식별하여 시스템 RAM 내에 판독 채널 데이타를 저장하여 데이타 저장 디바이스가 동작을 적절하게 제어하기 위해 데이타 저장 디바이스에 대한 판독 채널 데이타를 차례로 억세스할 수 있게 하는 것, vi) 시스템 RAM 내에 서보 데이타를 저장하여 데이타 저장 디바이스가 동작을 적절하게 제어하기 위해 데이타 저장 디바이스에 대한 서보 정보를 차례로 억세스할 수 있게 하는 것, 및 vii) 시스템 RAM 내에 드라이브 물리적 데이타를 저장하여 호스트 컴퓨터가 어드레스 정보를 데이타 저장 디바이스에 의해 사용된 어드레스 정보로 번역하는 기능을 실행하기 위해 이 정보를 사용할 수 있게 하는 것을 포함한다.
한 특정 실시예에 있어서, 시스템 RAM 내에 저장된 운영 데이타/코드는 호스트 컴퓨터가 데이타 저장 디바이스의 동작을 제어하기 위해 시스템 RAM 내에 커맨드 리스트를 작성할 수 있게 한다. 이 특정 실시예에 따르면, 각 특정 커맨드 리스트 엔트리는 데이타 저장 디바이스의 동작을 제어하기 위한 커맨드를 포함한다. 각 커맨드 리스트 엔트리는 또한 사용되고 있는 특정 데이타 저장 디바이스에 따라 변할 수 있는 여러가지 다른 정보 필드를 포함한다. 커맨드 리스트 엔트리가 포함할 수 있는 정보의 몇가지 예는 i) 저장 디바이스 상의 데이타 위치를 식별하는 메모리 저장 위치 정보, ii) 데이타 저장 디바이스로/로부터의 데이타가 전달될 시스템 내의 목적지 호스트 메모리 위치를 식별하는 버퍼 어드레스, iii) 데이타 저장 디바이스 상의 결함 저장 위치를 특정하여 호스트 메모리 내의 결함 메모리 저장 위치를 식별하는 포인터, iv) 다음 커맨드 리스트 엔트리를 식별하는 포인터, 및 v) 특정 커맨드 리스트 엔트리와 관련된 커맨드 상태 및 에러 검출 정보를 포함한다.
도 1은 제1 하드 디스크 드라이브를 시스템에 접속하기 위해 ISA 버스를 사용하고 제2 하드 디스크 드라이브를 시스템에 접속하기 위해 PCI 버스를 사용하는 종래의 컴퓨터 시스템을 도시한 블럭도.
도 2A는 시스템 상에서 실행되는 응용 프로그램이 제1 하드 디스크 드라이브의 판독/기록 요청을 할 때의 도 1에 도시된 시스템의 작동을 도시한 블럭도.
도 2B는 시스템 상에서 실행되는 응용 프로그램이 제2 하드 디스크 드라이브의 판독/기록 요청을 할 때의 도 1에 도시된 시스템의 작동을 도시한 블럭도.
도 3은 도 1에 도시된 종래의 하드 디스크 드라이브들 중의 한 드라이브의 작동에 사용된 여러가지 운영 데이타/코드의 위치를 도시한 블럭도.
도 4는 본 발명에 따른 복합 하드 디스크 드라이브를 포함하는 컴퓨터 시스템의 작동에 시용된 여러가지 운영 데이타/코드의 위치를 도시한 개괄적인 블럭도.
도 5는 호스트 컴퓨터와 관련된 시스템 RAM을 갖고 있는 호스트 컴퓨터에 접속된 복합 디스크 드라이브를 포함하는 컴퓨터 시스템의 개괄적인 블럭도.
도 6은 도 4의 개괄적인 블럭도의 한 실시예를 더욱 상세하게 도시한 블럭도.
도 7은 본 발명에 따른 커맨드 리스트 포맷의 한 실시예를 상세하게 도시한 블럭도.
도 8은 도 7에 도시된 것과 같은 커맨드 리스트 엔트리의 조작상의 사용을 상세하게 도시한 플로우차트.
도 9A-C는 시스템 상에서 실행되는 응용 프로그램이 하드 디스크 드라이브의 판독/기록 요청을 할 때의 도 5에 도시된 시스템의 작동을 도시한 블럭도.
도면의 주요 부분에 대한 부호의 설명
54 : 컴퓨터 시스템
56 : 호스트 컴퓨터
58 : 시스템 RAM
60 : 복합 하드 디스크 드라이브
62 : 메모리 저장부
64 : 버스
66 : 시스템 BIOS
68 : 시스템 ROM
70 : 운영 시스템
72 : 제어기
74 : 펌웨어
76 : ROM
78 : RAM 메모리 버퍼
80 : 운영 데이타/코드
본 발명은 하드 디스크 드라이브의 예를 이용하여 상세하게 설명되지만, 본 발명은 다른 저장 디바이스에도 적용할 수 있음은 물론이다. 이들 다른 저장 디바이스는 제한적이지는 않지만 CD 드라이버, 플로피 드라이버, 제거가능한 하드 디스크 드라이브, 및 그밖의 다른 광학, 자기 및 광자기 드라이브 디바이스를 포함한다. 디지탈 비디오 디스크 디바이스 및 플래시 메모리와 같은 여러가지 컴퓨터 시스템의 저장 디바이스로서 사용하기 위해 현재 개발되고 있는 디바이스는 또한 본 발명의 범위에 속할 것이다.
도 5를 참조하여, 본 발명에 따라 설계되고 참조번호(54)로 표시된 컴퓨터 시스템에 대해 설명하겠다. 컴퓨터 시스템(54)은 시스템 RAM(58)을 갖고 있는 호스트 컴퓨터(56)를 포함한다. 대량 메모리 저장부(62)를 갖고 있는 복합 하드 디스크 드라이브 디바이스(60)는 버스(64)를 사용하여 호스트 컴퓨터(56) 및 시스템 RAM(58)에 동작적으로 접속된다. 상술된 바와 같이, 복합 하드 디스크라는 말은 하드 디스크 드라이브 상의 각 메모리 저장 위치의 특정 위치를 명확하게 정하는 실린더, 헤드, 섹터 및 존을 포함하는 하드 디스크 드라이브를 일컫는데 사용된다. 드라이브의 복잡도는 상술된 바와 같이 존의 추가에 의해 야기된다.
호스트 컴퓨터(56) 및 시스템 RAM(58)은 디스크 드라이브(60)가 버스(64)를 사용하여 호스트 컴퓨터(56) 및 시스템 RAM(58)에 접속될 수 있게 하는 소정의 적절하고 용이하게 제공가능한 구성부품으로 구성된다. 이들 구성부품은 제한적이지는 않지만 소정의 종래의 486, Pentium, Power PC, 또는 RISC 기초 구성부품을 포함한다. 호스트 컴퓨터(56), 시스템 RAM(58) 및 버스(64)가 서로에 대해 특정 구성을 갖는 것으로 도시되었지만, 이것은 본 발명의 요구조건이 아니다. 대신에, 이들 구성부품은 여러가지 특정 구성으로 상호접속될 수 있고, 또한 복합 디스크 드라이브 디바이스(60)가 이들 구성부품에 동작적으로 접속되는 한 본 발명의 범위에 속한다고 할 수 있다.
버스(64)는 제한적이지는 않지만 PCI 버스 또는 IEEE 1394 버스와 같은 디바이스 개시 버스 마스터링을 허용하는 소정의 적절하고 용이하게 제공가능한 버스일 수 있다. 적절한 버스의 이들 특정 예가 기술되었지만, 다른 병렬 버스, 직렬 버스 또는 멀티플렉스화 버스와 같은 광범위한 주변 버스도 또한 본 발명의 범위에 속한다고 할 수 있다. PCI 버스가 이용되면, PCI 상세는 복합 하드 디스크 드라이브 디바이스와 관련된 소정의 확장 BIOS가 호스트 시스템의 RAM(58) 내로 로드되는 방법을 구술한다. 다른 버스 구성은 대응하는 명세를 가지므로, 본 발명은 디스크 드라이브(60)를 호스트 컴퓨터(56)에 접속시키는데 PCI 버스가 사용되는 것으로 하고 상세하게 설명하겠다. 다른 주변 버스 구성에 대한 본 발명의 응용은 이 명세서에 비추어 보아 본 분야에 숙련된 기술자들에게 더욱 명확해질 것이다. 버스가 이 명세서를 통해 PCI 버스인 것으로 설명되지만, 이것은 요구조건이 아니다. 디바이스-개시 버스-마스터링을 허용하는 소정의 버스가 사용될 수 있고 또한 본 발명의 범위에 속한다고 할 수 있다.
본 발명에 참고문헌으로 사용되고 1995년 11월 3일자로 출원된 발명의 명칭이 Method and Arrangement for Operating a Mass Memory Storage Peripheral Computer Device Connected to a Host Computer인 계류중인 미국 특허 출원 제08/553,024호(대리인 명부 번호 ITI1P002)에 상세하게 설명된 바와 같이, 디스크 드라이브(60)는 SCSI 아답터 카드와 같은 아답터 카드를 사용하지 않고 PCI 버스를 사용하여 호스트 컴퓨터(56)에 바로 접속될 수 있다. 이러한 경우라면, 드라이브(60)는 여러가지 방식으로 제공될 수 있고 또한 본 발명의 범위에 속한다고 할 수 있다. 예를 들어, 디스크 드라이브(60)는 PCI 버스의 PCI 커넥터 내로 바로 플러그하도록 구성된 PCI 디스크 드라이브 보드 내의 플러그로서 제공될 수 있다. 두번째 예에 있어서, 드라이브(60)는 모판 상의 트레이스를 사용하여 PCI 버스에 접속되는 IC 디스크 드라이브 제어 칩과 호스트 컴퓨터의 모판 상에 위치된 하나 이상의 IC 디스크 드라이브 제어 칩의 결합으로서 제공될 수 있다. 이러한 예에 있어서, IC 디스크 드라이브 제어 칩에 의해 제어되는 디스크 드라이브 메카니즘은 이때 리본 케이블을 사용하여 IC 디스크 드라이브 제어 칩에 접속될 수 있다. 또 다른 예에 있어서, 앞의 예의 IC 디스크 드라이브 제어 칩은 선택적으로, 리본 케이블을 사용하여 보드 내의 플러그에 접속되는 디스크 드라이브 메카니즘을 갖는 호스트 컴퓨터의 PCI 커넥터 내로 플러그하는 보드 내의 플러그 상에 위치될 수도 있다.
디스크 드라이브(60)가 PCI 버스에 직접 접속되는 것으로 설명되었지만, 이것은 요구조건이 아니다. 대신에, 디스크 드라이브(60)는 도 1과 관련하여 상술된 바와 같이 SCSI 아답터 카드를 사용하여 종래의 방식을 포함하는 소정의 적절한 방식으로 PCI 버스에 접속될 수 있다. 더욱 상세하게 후술되는 바와 같이, 상술된 모든 구성은 디스크 드라이브의 동작에 요구된 최소한 몇가지 기능 및/또는 데이타가 디스크 드라이브의 동작 중에 디스크 드라이브 및/또는 호스트 컴퓨터에 의해 사용하기 위해 시스템 RAM 내에 저장되는 한 본 발명의 범위에 동일하게 속한다고 할 수 있다.
도 5를 참조하면, 호스트 컴퓨터(56)는 시스템 ROM(68)에 저장된 시스템 BIOS(66)를 사용하여 동작된다. 시스템(54)의 개시 후에, 시스템의 개시 동안에 시스템 RAM(58) 내로 로드된 운영 시스템(70)은 시스템의 동작을 제어한다. 복합 하드 디스크 드라이브(60)는 ROM(76) 내에 부분적으로 저장될 수 있는 디스크 드라이브 펌웨어(74) 및 디스크 드라이브 프로세서 또는 제어기(72)를 포함한다. 디스크 드라이브 펌웨어(74)는 디스크 드라이브(60)의 동작을 제어하기 위해 제어기(72)를 사용한다. 디스크 드라이브(60)는 또한 RAM 메모리 버퍼(78)를 포함한다.
본 발명에 따르면, 시스템(54)은 시스템 RAM(58) 내의 디스크 드라이브(60)와 관련된 소정의 운영 데이타/코드(80)를 로딩하는 장치를 포함한다. 운영 데이타/코드(80)는 디스크 드라이브 펌웨어(74)의 일부분과 같은 디스크 드라이브(60)의 동작에 요구된 광범위한 기능 및/또는 데이타, 및 도 4와 관련하여 상술된 디스크 드라이브 운영 데이타(44)와 같은 소정의 디스크 드라이브 운영 데이타를 포함할 수 있다. 상술되고 더욱 상세하게 후술되는 바와 같이, 본 발명은 시스템 RAM(58) 내에 저장된 운영 데이타/코드(80)가 호스트 컴퓨터(56) 및/또는 디스크 드라이브(60)가 디스크 드라이브(60)의 동작을 제어하기 위해 운영 데이타/코드(80)를 사용할 수 있도록 호스트 컴퓨터(56) 및/또는 디스크 드라이브(60)에 의해 억세스될 수 있게 한다. 이 운영 데이타/코드는 제한적이지는 않지만 여러가지 조합으로, i) 시스템 RAM(58) 내의 하드 디스크 드라이브(60)와 관련된 결함 메모리 저장 위치를 식별하는 결함 리스트 정보를 저장하여, 호스트 컴퓨터(56)가 특정 판독/기록 요청과 관련된 결함 메모리 저장 위치를 식별하기 위해 결함 리스트를 통해 분류하는 기능을 실행할 수 있게 하는 것, ii) 시스템 RAM(58) 내의 디스크 드라이브(60)의 동작을 제어하기 위해 커맨드 리스트를 저장하여, 호스트 컴퓨터(56) 및/또는 디스크 드라이브(60)가 커맨드 리스트를 억세스하여 조작할 수 있게 하는 것, iii) 시스템 RAM(58) 내의 판독 어헤드 버퍼 공간을 할당하여, 호스트 시스템(56)이 디스크 드라이브(60)와 관련된 판독 어헤드 기능을 제어할 수 있게 하는 것, iv) 시스템 RAM(58) 내의 기록 캐시 버퍼 공간을 할당하여, 호스트 컴퓨터(56)가 디스크 드라이브(60)와 관련된 기록 캐싱 기능을 제어할 수 있게 하는 것, v) 디스크 드라이브 제어기에 의해 사용된 제어 세팅을 식별하여 시스템 RAM(58) 내에 판독 채널 데이타를 저장하여, 디스크 드라이브가 동작을 적절하게 제어하기 위해 디스크 드라이브에 대해 차례로 판독 채널 데이타로 억세스할 수 있게 하는 것, vi) 시스템 RAM(58) 내에 서보 데이타를 저장하여, 디스크 드라이브(60)가 동작을 적절하게 제어하기 위해 디스크 드라이브에 대해 차례로 서보 데이타를 억세스할 수 있게 하는 것, 및 vii) 시스템 RAM(58) 내에 드라이브 물리적 데이타를 저장하여, 호스트 컴퓨터(56)가 어드레스 정보를 디스크 드라이브(60)에 의해 사용된 어드레스 정보로 번역하는 기능을 실행할 수 있게 하는 것을 포함한다.
시스템 RAM(58) 내에 운영 데이타/코드(80)를 저장함으로써, 이들 운영 데이타/코드는 종래 시스템의 경우에서처럼 디스크 드라이브 상의 ROM(76) 및/또는 디스크 드라이브 상의 메모리 버퍼(78) 내에 저장될 필요가 없다. 이것은 ROM(76) 및 RAM 메모리 버퍼(78)의 크기가 상당히 감소될 수 있게 한다. 또한, 본 발명에 따라 다수의 복잡한 분류 및 번역 기능이 디스크 드라이브 제어기(72)에서 호스트 컴퓨터(56)로 이동될 수 있기 때문에, 보다 덜 복잡한 제어기가 성능을 희생시키지 않고 사용될 수 있다. ROM(76), RAM 메모리 버퍼(78) 및 제어기(72)의 요구사항에 있어서의 이들 감소의 결합은 종래의 디스크 드라이브 디바이스와 비교하여 본 발명에 따라 디스크 드라이브 디바이스를 제공했을 때에 비용이 상당히 절감된다. 또한, 더욱 강력한 호스트 컴퓨터 프로세서가 디스크 드라이브에 의해 종래에 실행된 많은 기능을 실행하기 위해 사용되기 때문에, 이들 기능들은 종래 시스템에 비해 저렴한 비용으로 고도한 성능 시스템을 제공하여 더욱 효율적으로 실행된다.
운영 데이타/코드(80)는 소정의 적절한 방식으로 시스템 RAM(58) 내로 로드될 수 있고, 또한 본 발명의 범위에 속한다고 할 수 있다. 예를 들어, 운영 데이타/코드(80)는 디스크 드라이브(60) 상의 ROM(76) 내에 종래의 방식으로 영구적으로 저장될 수 있지만, 이것은 상술된 비용 절감을 감소시킨다. 이 방법을 사용하면, 운영 데이타/코드(80)는 본 발명의 배경에서 설명된 방식으로 확장 BIOS와 같이 시스템 RAM(58) 내로 로드될 수 있다. 선택적으로, 디스크 드라이브(60)와 관련된 주요한 또는 모든 확장 BIOS와 함께 운영 데이타/코드(80)는 본 발명에 참고문헌으로 사용되고 1995년 10월 13일자로 출원된 발명의 명칭이 Method and Arrangement for Providing BIOS to a Host Computer인 계류중인 미국 특허 출원 제08/542,690호(대리인 명부 번호 ITI1P001)에 상세하게 설명된 바와 같이, 디스크 드라이브(60)의 대량 메모리 저장부(62) 내에 저장되어 시스템 RAM(58) 내로 로드될 수 있다.
바로 위의 참고문헌으로 사용된 출원에 설명된 방법을 사용하면, 운영 데이타/코드(80)는 시스템의 개시 동안에 메모리 저장부(62)로부터 시스템 RAM(58) 내로 로드된다. 이 방법은 ROM(76)의 크기를 최소로 될 수 있게 함으로써, 디스크 드라이브의 비용을 최소화시킨다. 세번째 방법에 있어서, 운영 데이타/코드(80)는 로드가능한 디스크 드라이버의 부분으로서 시스템 RAM 내로 로드될 수 있다. 이 방법은 상술된 미국 특허 출원 제08/553,024호에 상세하게 설명된다. 운영 데이타/코드(80)가 시스템 RAM(58) 내로 로드되는 방법의 3가지 특정예만 설명되었지만, 본 발명은 이들 특정 실시예에 제한되지 않음은 물론이다. 실제로, 운영 데이타/코드는 개시 프로세스가 완료된 후에 운영 시스템에 의해 로드될 수 있다. 그러므로, 본 발명은 시스템 RAM(58) 내로 운영 데이타/코드(80)를 로드하는데 사용된 특정 방법에 상관없이 동일하게 적용할 수 있다.
상술된 출원에 설명된 바와 같이 운영 데이타/코드(80)를 디스크 드라이브 디바이스의 저장 매체 내에 저장하여 이들을 시스템 RAM(58) 내로 로드하는 상당한 이점은 운영 데이타/코드가 용이하게 갱신될 수 있다는 점이다. 운영 데이타/코드를 분리된 ROM IC 내에 저장하는 종래의 방법을 사용하면, ROM 내의 코드의 갱신은 ROM 칩을 교체하기 위해 디바이스가 실제로 해체될 필요가 있다. 그러나, 운영 데이타/코드를 디스크 드라이브의 저장 매체 내에 저장하는 방법을 사용하는 것은 운영 데이타/코드의 갱신된 버젼을 디스크 드라이브 디바이스의 저장 매체 내로 단순히 전달함으로써 운영 데이타/코드가 갱신될 수 있게 한다. 예를 들어, 운영 데이타/코드 내에 버그가 발견되거나, 또는 운영 데이타/코드의 개정되거나 향상된 버젼이 이용가능하게 되면, 정정되거나 갱신된 버젼은 새로운 버젼의 운영 데이타/코드를 디스크 드라이브 디바이스의 저장 메체 내로 전달하는데 사용될 수 있는 플로피 디스크 또는 CD와 같은 메모리 저장 매체 상에서 이용가능하게 될 수 있다. 몇몇 상황에 있어서, 운영 데이타/코드는 사용자가 억세스할 수 없는 디스크 드라이브의 저장 매체의 보호부분에 저장될 수 있다. 이러한 상황에 있어서, 유틸리티 프로그램은 운영 데이타/코드를 포함하는 저장 매체의 보호부분을 억세스하여 갱신하기 위해 적절한 메카니즘을 포함하는 갱신된 버젼의 운영 데이타/코드가 갖추어질 수 있다.
이제, 시스템(54)의 기본 구성이 설명되었고, 도 5에 도시된 시스템의 동작에 대해 한 특정한 양호한 실시예를 사용하여 더욱 상세하게 설명하겠다. 한 특정 실시예에 대해서만 상세하게 설명하지만, 본 발명은 광범위한 특정 실시예에 동일하게 적용할 수 있음은 물론이다. 또한, 설명될 실시예가 호스트 컴퓨터에 의해 실행된 디스크 드라이브의 소정의 기능, 및 시스템 RAM 내에 저장된 소정의 디스크 드라이브 운영 데이타를 포함하지만, 본 발명은 이러한 기능과 데이타의 결합에 제한되지는 않는다. 실제로, 시스템 RAM 내에 저장된 기능과 데이타의 소정의 결합은 디스크 드라이브 운영 데이타/코드의 몇몇 부분이 시스템의 동작 동안에 디스크 드라이브 및/또는 호스트 컴퓨터에 의해 사용하기 위해 시스템 RAM 내에 저장되는 한 본 발명의 범위 내에 동일하게 속한다고 할 수 있다.
상술된 도 4의 블럭도와 유사한 더욱 상세한 블럭도인 도 6을 참조하여, 시스템(54)의 동작에 대해 상세하게 설명하겠다. 도 6에 도시되고, 도 4와 관련하여 상술된 바와 같이, 본 발명은 도 3의 종래의 시스템에서 설명된 호스트 컴퓨터(40)에 필적하는 시스템 RAM(58) 내의 호스트 실행가능 펌웨어를 포함한다. 호스트 실행가능 펌웨어의 이 부분은 도 6에서 참조번호(40)으로 표시된다. 또한, 상술된 바와 같이 본 발명에 따라, 디스크 드라이브 운영 데이타(44)는 종래 시스템의 경우에서처럼 하드 디스크 드라이브(60)의 RAM 메모리 버퍼(78)보다 오히려 시스템 RAM(58) 내에 저장된다. 더우기, 참조번호(74A)로 표시되고 도 4의 펌웨어(30A)와 비교되는 디스크 드라이브 펌웨어(74)의 일부분은 도 3에서 상술된 바와 같이 디스크 드라이브 디바이스에 적재하여 ROM 내에 저장되기보다 오히려 시스템 RAM 내에 저장된다. 참조번호(74B)로 표시된 디스크 드라이브 펌웨어(74)의 일부분만이 디스크 드라이브의 동작 중에 사용하기 위해 디스크 드라이브에 적재하여 저장되어 있다. 도 6의 펌웨어(74B)는 도 4의 펌웨어(30B)에 대응한다. 본 발명에 따라 화살표(50 및 52)로 표시된 바와 같이, 본 발명의 장치는 디스크 드라이브 상의 펌웨어(74B) 및 시스템 RAM 내에 저장된 펌웨어, 즉 호스트 코드(40 및 74A)가 시스템 RAM 내에 저장된 디스크 드라이브 운영 데이타(44)로 억세스할 수 있게 한다. 시스템 RAM(58) 내에 저장된 펌웨어(40) 및 펌웨어(74A)는 실행가능한 호스트 컴퓨터이고, 도 6에 도시된 바와 같이, 이들의 결합은 시스템(54)의 호스트 실행가능 펌웨어(82)를 형성한다. 최종적으로, 이 실시예에서 설명되는 디스크 드라이브가 PCI 프로토콜을 이용하도록 설계된 PCI 디스크 드라이브이기 때문에, 디스크 드라이브(60)는 PCI 프로토콜에 따른 시스템의 개시 동안에 디스크 드라이브(60)를 식별하기 위해 시스템에 의해 사용된 컨피그레이션 레지스터(86)를 포함한다.
이제, 디스크 드라이브(60)의 동작에 사용된 여러가지 운영 데이타/코드의 일반적인 위치가 설명되었고, 각각의 운영 데이타/코드에 대해 상세하게 설명하겠다. 설명되는 실시예에 있어서, 디스크 드라이브 펌웨어의 일부분, 즉 디스크 드라이브(74B)는 디스크 드라이브(60) 내에 상주한다. 일반적으로 말하자면, 펌웨어(74B)는 디스크 드라이브(60)의 실제 동작을 제어하는 코드이다. 구체적으로, 이 실시예에 있어서, 펌웨어(74B)는 호스트 컴퓨터(56)로부터 커맨드를 수신하여 적절한 동작을 시작하기 위한 커맨드 커널(kernel)(94)을 포함한다. 펌웨어(74B)는 또한 디스크 드라이브에 의해 작동될 메모리 저장 위치에 기초하여 디스크 드라이브(60)의 판독 헤드의 엄밀한 위치설정을 제어하는 서보/시크(servo/seek) 코드(96)를 포함한다. 결함 스킵핑(skipping)(98)은 또한 펌웨어(74B)의 부분으로서 제공된다. 더욱 상세하게 후술되는 바와 같이, 결함 스킵핑(98)은 시스템 RAM 내에 저장되어 디스크 드라이브(60) 내의 결함 메모리 저장 위치를 스킵하기 위해 호스트 실행가능 펌웨어(82)에 의해 제공된 결함 메모리 저장 위치를 사용한다. 펌웨어(74B)는 또한 디스크 드라이브 제어기(72)에 의해 사용된 특정 제어 세팅을 결정하는 판독 채널 코드(100)를 포함한다. 최종적으로, 펌웨어(74B)는 에러가 디스크 드라이브의 동작 중에 검출되면 에러 정보를 호스트 컴퓨터에 제공하는 에러 레포팅(102)을 포함한다.
바로 위에 설명된 기능들이 디스크 드라이브 내에 있는 디스크 드라이브 펌웨어 내에 포함되지만, 기능들의 이러한 특정 결합이 디스크 드라이브 내에 있다는 것이 본 발명의 요구조건이 아님은 물론이다. 대신에, 상술된 바와 같이, 여러가지 기능들은 시스템 RAM 내로 전달되는 상술된 몇몇 기능들과, 또는 디스크 드라이브 내에 남아있는 기능들에 포함되는 추가 기능들과 광범위한 방식으로 결합될 수 있다. 모든 이들 결합은 디스크 드라이브와 관련된 최소한 몇몇 운영 데이타/코드가 디스크 드라이브의 동작 중에 디스크 드라이브 및/또는 호스트 컴퓨터에 의해 사용하기 위해 시스템 RAM 내에 저장되는 한 본 발명의 범위 내에 속한다고 할 수 있다.
이제, 이 실시예에서 디스크 드라이브 내에 남아있는 운영 데이타/코드의 부분이 일반적으로 설명되었지만, 호스트 코드(40) 및 디스크 드라이브 펌웨어(74A)를 포함하는 호스트 실행가능 펌웨어(82)에 관해 고려해보자. 도 6에 도시된 바와 같이, 호스트 코드(40)는 시스템 BIOS(66)의 부분으로서 제공되는 부트 서포트(88)를 포함한다. 부트 서포트(88)는 시스템이 시스템의 개시 동안에 디스크 드라이브(60)를 적절하게 초기화할 수 있게 하는 소정의 적절하고 용이하게 제공가능한 부트 서포트 장치일 수 있다. 이 부트 서포트 장치는 시스템(54)을 형성하는데 사용된 특정 프로세서, 버스 및 다른 구성부품에 따라 광범위한 형태를 취할 수 있다. 펌웨어(40)는 또한 시스템(54)을 작동시키기 위해 사용되는 특정 운영 시스템(70)의 부분으로서 제공되는 OS 특정 인터페이스(90)를 포함한다. OS 특정 인터페이스(90)는 또한 소정의 적절하고 용이하게 제공가능한 OS 특정 인터페이스일 수 있다. 이 인터페이스는 운영 시스템이 운영 시스템과 호스트 컴퓨터 사이의 디스크 드라이브 관련 요청 및 어드레스 정보를 통신할 수 있게 하기 위해 필요한 정보 및 코드를 포함한다. 최종적으로, 호스트 코드(40)는 PCI 버스에 의해 요구되는 커맨드 프로토콜을 포함하고 시스템 BIOS(66)의 부분으로서 제공되는 PCI 드라이브 커맨딩(92)을 포함한다. PCI 드라이브 커맨딩(92)은 호스트 컴퓨터(56)가 디스크 드라이브(60)의 커맨드 제어를 관리할 수 있게 하기 위해 필요한 프로토콜, 코드 및 정보를 제공하는 소정의 적절하고 용이하게 제공가능한 PCI 드라이브 커맨딩 장치일 수 있다. 부트 서포트(88) 및 OS 특정 인터페이스(90)에서의 경우에서처럼, PCI 드라이브 커맨딩(92)은 시스템(54)를 형성하는데 사용된 특정 하드웨어에 따라, 그리고 시스템에 의해 사용된 특정 운영 시스템에 따라 광범위한 특정 형태를 취할 수 있다. PCI 버스 및 프로토콜 이외의 버스 및 프로토콜을 사용하는 시스템에 있어서, PCI 드라이브 커맨딩(92)은 사용되고 있는 버스 프로토콜에 특정된 드라이브 커맨딩 코드로 대체될 수 있음은 물론이다.
부트 서포트, OS 특정 인터페이스 및 PCI 드라이브 커맨딩의 특정 기능들이 호스트 코드(40) 내에 포함되는 것으로 설명되었지만, 펌웨어의 이러한 부분은 기능들의 특정 결합에 제한되지 않음은 물론이다. 대신에, 호스트 코드(40)는 특정 실시예의 특정 요구조건에 따라 추가 기능들 또는 기능들의 결합을 포함할 수 있다.
이제 호스트 실행가능 펌웨어(82)와 관련하여, 시스템 RAM 내에 저장되고 호스트 컴퓨터에 의해 실행가능한 디스크 드라이브 펌웨어의 부분, 즉 펌웨어(74A)에 포함된 여러가지 기능들에 대해 설명하겠다. 도 6에 도시된 바와 같이, 펌웨어(74A)는 각각 참조번호(104, 106, 108, 110 및 112)로 표시된 진짜 물리적 번역, 증대결함 관리, 판독 어헤드, 기록 캐시, 및 에러 회복 및 분석 기능들을 포함한다. 일반적으로, 진짜 물리적 번역(104)은 운영 시스템으로부터의 논리적 메모리 위치 어드레스 정보를 디스크 드리이브에 의해 사용된 물리적 메모리 위치 어드레스 정보로 번역하는데 사용된 코드 및 번역하는 기능을 일컫는 것이다. 알 수 있는 바와 같이, 이것은 단지 시스템(54)에 의해 요구된 번역이다. 증대된 결함 관리(106)는 결함 리스트에 새로 발견된 결함을 추가하여, 이들 새로 발견된 결함 메모리 저장 위치가 시스템에 의해 사용되지 못하게 하는 기능이다. 판독 어헤드(108)는 판독 어헤드 능력을 제공하는 기능이고, 기록 캐시(110)는 기록 캐싱 능력을 제공하는 기능이다. 에러 회복 및 분석(112)은 디스크 드라이브의 동작 중에 발생하는 에러를 분석하고, 에러의 검출에 응답하여 취할 적절한 동작을 결정하는 기능이다. 각각의 이들 기능들은 시스템 RAM 내에 저장된 디스크 드라이브 운영 데이타가 설명된 후에 더욱 상세하게 설명될 것이다.
디스크 드라이브 내에 있는 기능들에 관련하여 상술된 바와 같이, 시스템 RAM 내로 이동되고 호스트 시스템에 의해 실행가능한 특정 기능들이 여러가지 기능들을 포함하는 것은 물론이다. 이들 기능들은 이 실시예에서 설명된 특정 기능들에 제한되지 않거나 또는 이러한 기능들을 포함하도록 요구된다. 소정 기능들의 결합 및/또는 시스템 RAM 내에 저장된 데이타는 디스크 드라이브의 동작에 요구된 최소한 몇몇 기능 및/또는 데이타가 디스크 드라이브의 동작 중에 디스크 드라이브 및/또는 호스트 컴퓨터에 의해 사용하기 위해 시스템 RAM 내에 저장되는 한 본 발명의 범위에 속한다고 할 수 있다.
이제 도 6의 디스크 드라이브 운영 데이타(44)를 참조하여, 이 실시예에서 시스템 RAM 내에 저장된 데이타의 형태에 대해 개괄적으로 설명하겠다. 도 6에 도시된 바와 같이, 디스크 드라이브 운영 데이타(44)는 결함 리스트(114), 커맨드 리스트(116), 판독 어헤드 버퍼(118), 기록 캐시(120), 판독 채널 데이타(122), 서보 데이타(124) 및 드라이브 실제 데이타(126)를 포함한다. 이들 여러가지 데이타 형태는 디스크 드라이브 동작의 상세한 설명과 관련하여 상세하게 후술될 것이다. 그밖의 다른 디스크 드라이브 운영 데이타는 또한 디스크 드라이브 운영 데이타(44)가 포함될 수 있고, 본 발명의 범위에 속한다고 할 수 있다. 선택적으로, 이 실시예에서 디스크 드라이브 운영 데이타(44) 내에 포함된 몇몇 데이타는 시스템 RAM에 전달되기 보다는 오히려 디스크 드라이브 내에 남아있을 수 있다. 데이타의 광범위한 결합은 시스템 RAM 내에 저장된 디스크 드라이브 운영 데이타를 형성할 수 있고, 모든 이들 결합에 동일하게 적용할 수 있다. 더우기, 화살표(50 및 52)로 표시된 바와 같이, 본 발명의 장치는 디스크 드라이브 상의 펌웨어(74B) 및 시스템 RAM 내에 저장된 펌웨어(82), 즉 호스트 코드(40 및 74A)가 시스템 RAM 내에 저장된 디스크 드라이브 운영 데이타(44)로 억세스할 수 있게 한다. 더욱 상세하게 설명되는 바와 같이, 이 장치는 디스크 드라이브를 동작시키는 많은 기능들이 더욱 효율적이고 고도한 방식으로 실행되어 전체 시스템의 성능과 능력을 향상시킬 수 있도록 디스크 드라이브와 호스트 컴퓨터 사이에서 정보가 전달될 수 있게 한다.
이제, 시스템 RAM 내에 저장된 기능 및 데이타, 또는 운영 데이타/코드가 개괄적으로 설명되었지만, 본 발명에 따른 디스크 드라이브의 동작에 대해 기능 중심으로 상세하게 설명하겠다. 설명될 제1 기능은 디스크 드라이브의 동작을 제어하는 커맨드 리스트를 작성하는 기능이다. 후술될 실시예에 있어서, 호스트 시스템 및 디스크 드라이브는 커맨드 리스트로 억세스하여 커맨드 리스트를 조작하는 능력을 갖는다. 다른 실시예는 단지 호스트 컴퓨터가 커맨드 리스트를 조작하게 할 수 있다. 또한, 설명되는 커맨드 리스트가 단순히 커맨드 관리의 한가지 양호한 구조임은 물론이다. 커맨드를 컴퓨터에서 디스크 드라이브로 보내는 여러가지 다른 메카니즘은 커맨드 관리 기능을 제공하도록 사용될 수 있고 본 발명의 범위에 속한다고 할 수 있다. 이들 다른 구조들은 제한되지 않지만 태스크 파일 레지스터, 데이타 패킷 등을 포함할 수 있다.
도 7을 참조하면, 참조번호(128)로 표시된 이 실시예의 각각의 커맨드 리스트 엔트리는 6개의 요소를 포함한다. 첫번째 요소인 커맨드 요소(130)는 디스크 드라이브의 동작을 제어하고 디스크 드라이브에 의해 실행될 커맨드를 포함한다. 이 커맨드는 디스크 드라이브를 동작시키기 위해 이용가능한 커맨드의 선정된 리스트로부터 선택된 한 커맨드이다. 다음은 양호한 실시예에 의해 보조된 커맨드의 리스트이다: NO-OP, ABORT, RESET, SEEK, READ, READ SEQUENTIAL, READ LONG, READ VERIFY, READ BUFFER, WRITE, WRITE LONG, WRITE BUFFER, WRITE SAME, STANDBY IMMEDIATE, IDLE IMMEDIATE, SLEEP, 및 CHECK POWER MODE. 이들 특정 커맨드가 이 실시예에 의해 지원되지만, 다른 실시예는 다른 커맨드를 포함하거나 또는 상술된 몇몇 리스트를 배제할 수 있다. 이들 모든 실시예는 지원된 커맨드의 특정 리스트에 상관없이 본 발명의 범위에 속한다고 할 수 있다.
도 7을 참조하면, 이 실시예에 있어서, 각 커맨드 리스트 엔트리(128)의 제2 요소는 진짜 물리적 위치 정보(132)이다. 이 요소는 커맨드 요소 내의 커맨드를 사용하여 동작될 디스크 드라이브 내의 개시 메모리 위치 어드레스를 포함한다. 각 커맨드 리스트 엔트리의 제3 요소는 버퍼 어드레스이다. 이 요소는 프로세스되는 커맨드와 관련된 데이타의 목적지 또는 소스 어드레스를 포함한다. 버퍼 어드레스는 스캐터 개더 호스트 버퍼를 보조하기 위해 버퍼 어드레스 및 이들의 길이의 리스트를 선택적으로 지적할 수 있다. 참조번호(136)으로 표시된 바와 같이, 제4 요소는 결함에 대한 포인터이다. 이 요소는 제2 요소에서 주어진 개시 어드레스에 관련하여 다음의 계속적인 공지된 결함 메모리 저장 위치에 대한 포인터를 포함한다. 일반적으로, 포인터(136)는 호스트 컴퓨터가 요소(132)에서 주어진 개시 어드레스에 관련된 다음의 계속적인 결함 메모리 저장 위치 어드레스를 디스크 드라이브에 대해 식별할 수 있게 하는 메카니즘이다. 이 첫번째 연속적인 결함 메모리 저장 위치는 결함 요소(136)에 대한 포인터를 사용하여 디스크 드라이브로 통신되는 포인터가 할당된다. 이 요소의 기능은 결함 관리의 기능이 설명될 때 더욱 상세하게 설명될 것이다.
각 커맨드 리스트 엔트리의 다음 요소는 참조번호(138)로 표시된 다음 커맨드 리스트 엔트리에 대한 포인터를 포함한다. 이 포인터는 커맨드 리스트 엔트리의 원형 연결을 형성하기 위해 모든 기존의 커맨드 리스트 엔트리를 접속시키는 링크된 리스트를 작성하는데 사용된다. 이 요소는 실행되기를 기다리는 커맨드 리스트 엔트리의 어드레스를 나타낸다. 현재의 커맨드 리스트 엔트리가 실행될 커맨드 리스트 엔트리뿐이면, 이 요소는 자신의 커맨드 리스트 엔트리를 참조할 수 있다. 각 커맨드 리스트 엔트리의 제6 요소는 커맨드 상태와 에러 정보를 포함하는 요소(140)이다. 디스크 드라이브(160)는 시스템 RAM 내의 현재의 커맨드 리스트 엔트리로 커맨드 상태 및 소정의 에러 정보를 다시 기록하기 위해 이 요소를 사용한다. 이것은 호스트 컴퓨터가 디스크 드라이브의 커맨드 상태를 알 수 있게 하고, 또한 현재의 커맨드 리스트 엔트리와 관련된 커맨드의 동작 중에 디스크 드라이브에 의해 검출된 에러를 호스트 시스템에게 통지하는 메카니즘을 제공한다.
커맨드 리스트 엔트리가 특정 순서로 요소의 특정 결합을 포함하는 것으로 설명되었지만, 이것은 본 발명의 요구 조건이 아니다. 대신에, 커맨드 리스트 엔트리가 소정의 원하는 순서로 정렬된 광범위한 특정 요소를 포함할 수 있음은 물론이다. 모든 이들 결합은 본 발명의 범위에 동일하게 속한다고 할 수 있다.
이제, 커맨드 리스트 엔트리가 설명되었는데, 커맨드 리스트의 동작 사용에 대해 커맨드 리스트 엔트리(128)의 동작 사용을 도시한 플로우차트인 도 8을 참조하여 설명하겠다. 프로세스의 여러 단계는 컴퓨터 시스템(54)의 시스템 RAM(58)에 저장된 호스트 실행가능 펌웨어(82) 또는 참조번호(82 및 74B)로 나타낸 큰 박스로 표시된 바와 같이 디스크 드라이브(60)의 ROM(76) 내의 디스크 드라이브 펌웨어(74B)에 의해 실행된다. 이 예에 있어서, 디스크 드라이브(60)는 PCI 디스크 드라이브이다.
블럭(150)으로 표시된 바와 같이, 프로세스는 컴퓨터를 작동시키는데 사용되는 운영 시스템이 요청을 발할 때 개시된다. 호스트 실행가능 펌웨어(82)는 블럭(152)로 표시된 바와 같이 운영 시스템으로부터 요청을 수신한다. 스텝(154)에 있어서, 호스트 실행가능 펌웨어(82)는 다음 커맨드 리스트 엔트리(128)를 위치 지정하고(도 7과 관련하여 상술됨), 커맨드 리스트 엔트리(128)의 제1 요소(130) 내로 적절한 커맨드(예를 들어 판독 또는 기록 커맨드)를 추가한다. 더욱 상세하게 후술되는 바와 같이, 스텝(156)에 있어서, 호스트 실행가능 펌웨어(82)는 운영 시스템에 의해 제공된 논리적 어드레스 정보를 디스크 드라이브에 의해 사용된 진짜 물리적 위치 정보로 번역하기 위해, 시스템 RAM(58) 내에 저장된 실제 데이타(126) 및 결함 리스트(114)를 사용한다. 이 진짜 물리적 위치 정보는 커맨드 리스트 엔트리(128)의 제2 요소(132) 내로 들어간다. 스텝(158)에 있어서, 호스트 실행가능 펌웨어(82)는 결함 리스트(114) 내의 관련된 결함을 위치 지정하고 커맨드 리스트 엔트리(128)의 요소(136) 내로 결함 포인터를 추가한다. 다음에, 호스트 실행가능 펌웨어(82)는 스텝(160)에서 버퍼 메모리 어드레스를 커맨드 리스트 엔트리의 요소(134)로 추가한다. 이것은 이 커맨드에서 사용될, 데이타 버퍼(161)로서 작용하는 호스트 시스템 RAM(58)의 특정 부분을 나타낸다. 최종적으로, 스텝(162)에 있어서, 호스트 실행가능 펌웨어(820는 PCI 드라이브 I/O 레지스터(164)의 하나인 PCI 디스크 드라이브의 커맨드 카운트 레지스터로의 다음 커맨드 카운트를 기록한다. 이것은 프로세스하기 위한 PCI 드라이브용 커맨드가 있다는 것을 알기 위해 PCI 디스크 드라이브가 사용하는 메카니즘이다. 이 점에서, 프로세스의 제어는 디스크 드라이브 펌웨어(74B)로 전환한다.
스텝(166)에 있어서, 디스크 드라이브 펌웨어(74B)는 커맨드 카운트 레지스터(164)를 판독함으로써 디스크 드라이브의 새로운 커맨드가 있다는 것을 인식한다. 그 다음, 펌웨어(74B)는 스텝(168)에서 호스트 메모리로부터 이것의 내부 메모리 버퍼(78) 내로 커맨드 리스트 엔트리를 판독한다. 스텝(170 및 172)에 있어서, 펌웨어(74B)는 커맨드를 프로세스하고, 호스트 시스템 RAM(58) 내의 데이타 버퍼(161)로부터/로 직접 판독하거나 기록함으로써 데이타를 전달한다. 다음에, 스텝(174)에 있어서, 펌웨어(74B)는 호스트 메모리 내의 커맨드 리스트 엔트리의 요소(140)에 커맨드 상태 및 소정의 에러 정보를 기록한다. 최종적으로, 펌웨어(74B)는 PCI 드라이브 I/O 레지스터(164) 내의 커맨드 완료 레지스터를 갱신하고, 커맨드 완료 인터럽트를 발한다. 이것은 커맨드가 완료된 것을 나타내기 위해 PCI 디스크 드라이브가 사용하는 메카니즘이다.
스텝(178)에 있어서, 호스트 실행가능 펌웨어(82)는 PCI 드라이브 커맨드 완료 인터럽트를 인식하여 클리어한다. 이것은 제어를 다시 호스트 실행가능 펌웨어(82)로 전달한다. 호스트 실행가능 펌웨어(82)는 스텝(180)에서 커맨드 상태를 체크하여 소정의 필요한 포스트(post) 프로세싱을 실행한다. 이것은 커맨드 리스트 엔트리의 요소(140) 내의 에러 정보와 관련된 에러 분석을 포함한다. 전체 프로세스가 완료하면, 스텝(182)에서, 호스트 실행가능 펌웨어(82)는 완료 상태를 요청 운영 시스템으로 복귀시킨다.
상술된 프로세스가 PCI 버스 및 PCI 프로토콜을 사용하는 시스템과 관련하여 설명되었지만, 이것은 요구조건이 아니다. 다른 버스 및 프로토콜을 사용하는 다른 시스템은 유사한 방식으로 동작할 수 있으며, 이 명세서를 통해 본 분야에 숙련된 기술자들에게 명백해진다. 또한, 소정의 특정 기능이 시스템 RAM 내에 저장된 호스트 실행가능 펌웨어에 의해 실행되고 다른 기능이 디스크 드라이브 상의 나머지 펌웨어에 의해 실행되는 것으로 설명되었지만, 다른 기능 결합이 디스크 드라이브에 남아있는 다른 특정 기능과 함께 호스트로 전달될 수 있다.
다음에, 도 9A-C를 참조하여, 운영 시스템에 의해 사용된 논리 메모리 위치 어드레스 정보에서 디스크 드라이브에 의해 사용된 물리적 메모리 위치 어드레스 정보로 번역하는 기능에 대해 상세하게 설명하겠다. 종래의 복합 하드 디스크 드라이브에 있어서, 이 기능은 배경부분에서 설명된 바와 같이 3개의 번역을 필요로 하고, 시스템 BIOS 및/또는 번역 BIOS에 의해, 아답터 카드가 존재하는 경우에 프로토콜 번역기에 의해, 그리고 디스크 드라이브 자체에 의해 실행된다. 그러나, 본 발명은 이 기능을 호스트 컴퓨터로 이동하여 하나의 번역으로 이 기능을 실행한다.
도 9A에 도시된 바와 같이, 응용 프로그램(200)이 예를 들어 판독 요청을 할 때, 운영 시스템(70)은 요청을 수신하고, 운영 시스템(70)이 데이타가 디스크 드라이브(60) 내에 저장되어 있다고 생각하는 개시 이론적 또는 논리적 데이타 어드레스, 및 판독될 데이타 양을 결정한다. 본 발명에 따르면, 호스트 컴퓨터(56)에 의해 실행되는 디스크 드라이브 펌웨어(74A)는 판독 커맨드와 관련되고 도 9B에 도시된 커맨드 리스트 엔트리(128)를 작성한다. 이 커맨드 리스트 엔트리는 상술된 바와 같이 커맨드 리스트 엔트리의 커맨드 요소인 제1 요소 내에 판독 커맨드를 포함한다.
개괄적으로 상술된 바와 같이, 시스템 RAM(58) 내의 디스크 드라이브 펌웨어(74A)는 운영 시스템(70)에 의해 사용된 논리 데이타 어드레스 정보를 디스크 드라이브(60)에 의해 실제로 사용된 실린더, 헤드, 섹터, 및 존 데이타 어드레스 정보로 번역하는 진짜 물리적 번역 코드(104)를 포함한다. 진짜 물리적 번역 코드(104)는 또한 판독 요청의 개시 어드레스가 공지된 양호한 어드레스가 되도록 시스템 RAM(58) 내의 결함 리스트(114)를 통해 분류한다. 이 공지된 양호한 분류 어드레스는 판독될 데이타의 양 또는 길이와 함께 도 9B에 도시된 관련 커맨드 리스트 엔트리의 요소(132)에 배치된다. 설명되는 특정 예에 있어서, 진짜 물리적 번역 코드(104)는 응용 프로그램으로부터의 판독 요청이 실린더 23, 헤드 1, 및 섹터 1의 공지된 양호한 메모리 저장 위치에서 개시하는 저장된 데이타의 10 섹터에 대응하는 지를 판정한다.
도 9C는 이 특정 예에 관한 결함 리스트(114)의 부분을 도시한 것이다. 도 9C의 좌측열의 문자 A-E는 결함 리스트(114) 내의 특정 위치를 식별하는 포인터 어드레스를 나타낸다. 제2, 제3 및 제4 열은 결함 메로리 저장 위치의 각각의 특정 실린더, 헤드 및 섹터에 대응한다. 개시 어드레스가 공지된 양호한 메모리 위치가 되도록 코드(104)가 결함 리스트(114)를 통해 분류할 때, 코드(104)는 또한 공지된 양호한 개시 어드레스 다음에 다음의 계속되는 결함 메모리 저장 위치를 식별한다. 이 경우에, 도 9C에 도시된 바와 같이, 결함이 있는 다음의 계속되는 메모리 위치는 실린더 23, 헤드 1, 및 섹터 2에 대응하는 위치이다. 이 결함 메모리 저장 위치가 포인터 어드레스 C에 할당되기 때문에, 코드(104)는 이 정보를 디스크 드라이브로 통과시키기 위해 관련 커맨드 리스트 엔트리(128)의 요소(136)(도 9B)를 검출하도록 포인터 어드레스C를 포인터로 삽입한다. 디스크 드라이브 제어기(72)가 요청된 정보를 판독하기 위해 헤드 1을 위치 설정할 때, 디스크 드라이브 펌웨어(74B)는 포인터 어드레스 C로 표시된 결함 메모리 저장 위치로 개시하는 호스트 RAM 내의 결함 리스트(114)로부터 선정된 수의 계속되는 결함 메모리 저장 위치를 얻도록 요소(136)를 검출하기 위해 포인터 내의 포인터 어드레스 C를 사용한다. 이 경우에, 포인터 어드레스 C에 대응하는 제1 결함 위치만이 판독되는 정보에 관련되지만, 다른 특정 상황에서, 판독될 데이타와 관련된 많은 결함 메모리 저장 위치가 있을 수 있다. 디스크 드라이브 펌웨어(74B)의 결함 스킵핑(98) 부분(도 6에 도시됨)은 디스크 드라이브 제어기(72)가 결함 메모리 저장 위치를 스킵하게 하여 양호한 데이타 섹터만이 사용될 수 있게 하기 위해 판독되는 데이타에 특정된 결함 메모리 저장 위치를 사용한다.
결함 정보가 디스크 드라이브의 디스크 드라이브 펌웨어에 이용할 수 있게 하는 프로토콜의 한 특정 실시예만이 설명되었지만, 본 발명은 이 특정 실시예에 제한되지 않음은 물론이다. 이 기능을 제공하기 위해 사용된 특정 프로토콜은 광범위한 특정 형태를 취할 수 있고, 본 발명의 범위에 속한다고 할 수 있다. 이것은 또한 디스크 드라이브의 펌웨어로부터 시스템 RAM으로 이동될 수 있는 다른 기능 및/또는 데이타의 경우이다. 이것은 결함 리스트, 캐시 버퍼, 판독 채널 데이타, 또는 소정의 다른 디스크 드라이브 데이타와 같은 몇몇 또는 모든 디스크 드라이브 데이타가 시스템 RAM 내에 저장되고 디스크 드라이브 내에 기능성이 남아있는 상황을 포함한다. 본 발명의 호스트 실행가능 펌웨어(74A)가 시스템 BIOS의 사용을 요구하지 않고 디스크 드라이브 디바이스와 직접 통신하기 때문에, 광범위한 프로토콜이 호스트 실행가능 펌웨어와 하드 디스크 드라이브 사이의 통신에 사용될 수 있다. 이들 프로토콜은 시스템 BIOS의 구속을 받을 필요가 없으므로, 특정 디스크 드라이브 디바이스의 성능을 최대화하는 프로토콜이 사용될 수 있다.
시스템이 결함 정보를 저장하기 위해 시스템 RAM을 사용하고 번역 및 분류 태스크를 실행하기 위해 호스트 컴퓨터를 사용함으로써, 즉 이들 태스크를 하드 디스크에서 호스트 컴퓨터로 시프트시킴으로써, 하드 디스크의 비용이 상당히 감소될 수 있다. 구체적으로, 전형적인 종래의 하드 디스크에 있어서, 메모리 버퍼는 최소한 RAM의 64K를 필요로 하는 데이타의 최소한 128 섹터를 저장할만큼 충분히 크다. 이 메모리 버퍼의 대부분은 디스크 드라이브의 동작 전반을 통해 디스크 드라이브 제어기에 의해 사용하기 위해 결함 리스트를 저장하는데 사용된다. 디스크 드라이브의 메모리 버퍼보다 오히려 시스템 RAM 내의 결함 리스트를 분류함으로써, 훨씬 적은 메모리 버퍼가 사용되어 필요한 메모리 버퍼를 제공하는 비용을 감소시킨다. 또한, 종래 디스크 드라이브의 디스크 드라이브 펌웨어에 의해 실행된 상당량의 태스크가 호스트 실행가능 펌웨어(74A)의 형태로 시스템 RAM으로 이동되었기 때문에, 디스크 드라이브 제어기 및 디스크 드라이브에 남아있는 디스크 드라이브 펌웨어는 상당히 덜 복잡하게 될 수 있다. 이 방법은 디스크 드라이브의 성능을 저하시키지 않고 덜 비싼 디스크 드라이브가 사용될 수 있게 하고, 디스크 드라이브에 남아있는 디스크 드라이브 펌웨어(펌웨어(74B))의 복잡도가 상당히 감소되기 때문에, 이 방법은 디스크 드라이브 펌웨어를 저장하는데 요구된 ROM 저장 공간을 상당히 감소시킨다. 이들 비용 절감의 결합은 본 발명에 따라 설계된 하드 디스크 드라이브의 실제 전체 비용을 절감시킨다.
이러한 방법의 다른 이점은 운영 시스템과 디스크 드라이브 사이에 하나의 번역만이 실행될 필요가 있다는 것이다. 시스템 RAM이 존 상의 결함 정보(114) 및 정보, 및 디스크 드라이브(126)의 특정 실제 구성을 포함하기 때문에, 호스트 실행가능 펌웨어(74A)는 운영 시스템으로부터의 논리 데이타 어드레스 정보를 디스크 드라이브에 의해 사용된 실제 물리적 데이타 어드레스 정보로 번역할 수 있다. 도 2A 및 2B에 도시된 종래의 방법에 있어서는 3레벨의 번역이 이 기능을 실행하기 위해 요구된다. 종래 시스템의 시스템 BIOS 또는 번역 BIOS가 결함 정보 또는 디스크 드라이브의 특정 실제 구성 및 존 정보로 억세스하지 못하기 때문에, 종래 디스크 드라이브 자체의 펌웨어는 실제 물리 데이타 저장 위치를 결정하기 위해 3레벨의 번역 중 하나를 실행한 다음에, 디스크 드라이브 제어기가 요청 데이타를 판독하거나 기록하게 하기 위해 이 실제 데이타 저장 위치를 사용해야 한다. 종래 시스템의 디스크 드라이브 펌웨어에 의해 실행된 이 추가 번역을 제거하여 번역을 하나의 번역으로 감소시킴으로써, 본 발명의 방법은 운영 시스템 및 디스크 드라이브로부터 판독/기록 요청을 조정하는 전체 프로세스의 속도를 빠르게 하여 전체 시스템의 성능을 향상시킨다.
어드레스 정보를 번역하고 결함 리스트를 통해 분류하는 기능이 호스트 컴퓨터에 의해 행해지는 것으로 설명되었지만, 이것은 요구조건이 아니다. 소정의 특정 경우에서와 같이, 이 기능은 호스트 컴퓨터보다 디스크 드라이브에 의해 행해질 수 있다. 이러한 경우라도, 결함 리스트는 시스템 RAM에 저장될 수 있다. 디스크 드라이브는 또한 불량 저장 위치를 사용하지 못하게 하기 위해 결함 리스트를 통해 분류하는 것을 책임질 수 있다. 이 장치는 또한 디스크 드라이브의 동작 중에 결함 리스트를 저장하기 위해 디스크 드라이브 상의 RAM을 필요로 하지 않는다는 이점을 제공할 수 있다.
종래의 디스크 드라이브에 있어서는 상당히 큰 RAM 메모리 버퍼가 디스크 드라이브의 부분으로서 제공된다. 몇몇 종래의 디스크 드라이브에 있어서, RAM 메모리 버퍼의 일부분은 판독 어헤드 메모리 캐시로서 사용된다. 그러나, 상술된 바와 같이, 본 발명은 이 기능이 디스크 드라이브에서 호스트 컴퓨터로 이동될 수 있게 한다. 이렇게 함으로써, 호스트 시스템 RAM은 판독 어헤드 메모리 캐시의 메모리 공간을 제공하도록 사용됨으로써 디스크 드라이브 내에 필요한 메모리 버퍼 RAM의 양을 감소시킨다. 또한, 몇가지 종래의 디스크 드라이브에 있어서, RAM 메모리 버퍼의 일부분은 기록 캐시로서 사용된다. 본 발명은 이 기능이 디스크 드라이브에서 호스트 컴퓨터로 이동될 수 있게 한다. 이렇게 함으로써, 호스트 시스템 RAM은 기록 캐시의 메모리 공간을 제공하도록 사용됨으로써 디스크 드라이브 내에 필요한 메모리 버퍼 RAM의 양을 더욱 감소시킨다. 개괄적으로 상술된 바와 같이, 판독 또는 기록 캐시를 제어하는 펌웨어는 디스크 드라이브 내에 남아있거나, 또는 호스트 컴퓨터의 시스템 RAM으로 이동될 수 있다.
종래의 디스크 드라이브에 있어서, 드라이브 제어기의 동작을 제어하는 디스크 드라이브 펌웨어는 드라이브 제어기를 제어하는데 사용된 여러가지 세팅에 관한 정보를 전형적으로 포함한다. 이것의 한 예는 디스크 드라이브의 상이한 존과 관련된 여러가지 데이타 판독/기록 속도이다. 상술된 바와 같이, 이들 칩 세팅 또는 드라이브 제어기의 동작을 제어하기 위한 세팅과 관련된 데이타 및 이들 칩 세팅을 제공하는 기능은 호스트 시스템 RAM 내로 로드된 기능 및/또는 데이타의 부분으로서 포함될 수 있다.
앞의 실시예에서 주변 버스가 PCI 버스인 것으로 설명되었지만, 이것은 요구조건이 아니다. 상술된 바와 같이, 하드 디스크 드라이브와 관련된 펌웨어 및/또는 데이타가 디스크 드라이브 및/또는 호스트 컴퓨터에 의해 사용하기 위해 시스템 RAM 내에 저장될 수 있게 하는 소정의 버스는 동일하게 적용할 수 있다. 이러한 버스의 한 예는 1394 버스이다. 또한, 하드 디스크 드라이브 디바이스를 어드레스하기 위한 어드레싱 스키마(scheme)가 CHS 또는 실린더, 헤드, 섹터 및 존 어드레싱 스키마를 사용하는 것으로 전반적으로 설명되었지만, 이것은 요구조건이 아니다. 대신에, 제한적이지는 않지만 선형 어드레싱 스키마 또는 메모리 위치를 정하기 위해 XYZ 좌표를 이용하는 홀로그래픽 어드레싱 스키마를 포함하는 소정의 어드레싱 스키마는 또한 본 발명의 범위에 속한다고 할 수 있다. 그러므로, 본 예는 예시적으로 간주되는 것이지 제한적이지는 않으며, 본 발명은 본 명세서의 상세한 설명에 제한되지 않고 첨부된 특허청구의 범위 내에서 변경될 수 있다.

Claims (44)

  1. 디바이스-개시(device-initiated) 버스-마스터링(bus-mastering)을 허용하는 버스를 사용하여 호스트 컴퓨터에 접속된 데이타 저장 디바이스를 포함하고, 호스트 컴퓨터와 관련되지만 데이타 저장 디바이스의 부분이 아닌 시스템 RAM을 갖고 있는 컴퓨터 제어 시스템에서, 디바이스 제어 수단 형태의 소정의 디바이스 운영 데이타/코드 및 디바이스의 작동을 제어하는데 사용될 디바이스 운영 데이타를 필요로 하는 상기 데이타 저장 디바이스를 작동시키기 위한 장치에 있어서,
    (a) 최소한 상기 디바이스 운영 데이타/코드의 일부분을 상기 시스템 RAM 내에 저장하기 위한 수단, 및
    (b) 상기 호스트 컴퓨터 및/또는 상기 데이타 저장 디바이스가 상기 데이타 저장 디바이스의 작동을 제어하기 위해 상기 디바이스 운영 데이타/코드를 사용할 수 있도록 상기 호스트 컴퓨터 및/또는 상기 데이타 저장 디바이스가 상기 시스템 RAM 내에 저장된 상기 디바이스 운영 데이타/코드로 억세스할 수 있게 하기 위한 수단
    을 포함하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서, 상기 데이타 저장 디바이스는 복합 하드 디스크 드라이브인 것을 특징으로 하는 장치.
  3. 제1항에 있어서, 상기 데이타 저장 디바이스는 CD 드라이브인 것을 특징으로 하는 장치.
  4. 제1항에 있어서, 상기 데이타 저장 디바이스는 플로피 디스크 드라이브인 것을 특징으로 하는 장치.
  5. 제1항에 있어서, 상기 버스는 PCI 버스인 것을 특징으로 하는 장치.
  6. 제1항에 있어서, 상기 버스는 IEEE 1394 버스인 것을 특징으로 하는 장치.
  7. 제1항에 있어서, 상기 컴퓨터 제어 시스템은 퍼스널 컴퓨터 시스템인 것을 특징으로 하는 장치.
  8. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 호스트 컴퓨터가 상기 데이타 저장 디바이스의 작동을 제어하기 위해 시스템 RAM 내에 커맨드 리스트 엔트리를 작성할 수 있게 하는 커맨드 리스트 수단을 포함하는 것을 특징으로 하는 장치.
  9. 제8항에 있어서, 각각의 특정 커맨드 리스트 엔트리는 상기 데이타 저장 디바이스의 작동을 제어하기 위한 커맨드를 포함하는 것을 특징으로 하는 장치.
  10. 제8항에 있어서, 각각의 특정 커맨드 리스트 엔트리는 상기 데이타 저장 디바이스에 의해 작동될 상기 데이타 저장 디바이스의 위치를 식별하는 메모리 위치 정보를 포함하는 것을 특징으로 하는 장치.
  11. 제8항에 있어서, 각각의 특정 커맨드 리스트 엔트리는 상기 데이타 저장 디바이스로/로부터 전달될 시스템 내의 목적지 메모리 위치를 식별하는 버퍼 어드레스를 포함하는 것을 특징으로 하는 장치.
  12. 제8항에 있어서, 각각의 특정 커맨드 리스트 엔트리는 상기 데이타 저장 디바이스 상의 다음의 계속되는 결함 메모리 저장 위치를 식별하는 포인터를 포함하는 것을 특징으로 하는 장치.
  13. 제8항에 있어서, 각각의 특정 커맨드 리스트 엔트리는 다음 커맨드 리스트 엔트리를 식별하는 포인터를 포함하는 것을 특징으로 하는 장치.
  14. 제8항에 있어서, 각각의 특정 커맨드 리스트 엔트리는 상기 특정 커맨드 리스트 엔트리와 관련된 커맨드 상태 및 에러 검출 정보를 포함하는 것을 특징으로 하는 장치.
  15. 제8항에 있어서, 상기 커맨드 리스트 수단은 상기 호스트 컴퓨터가 상기 시스템 RAM 내에 위치된 상기 커맨드 리스트 엔트리를 조작할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  16. 제8항에 있어서, 상기 커맨드 리스트 수단은 상기 디스크 드라이브가 상기 시스템 RAM 내의 상기 커맨드 리스트 엔트리로 억세스할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  17. 제8항에 있어서, 상기 커맨드 리스트 수단은 상기 디스크 드라이브가 상기 시스템 RAM 내에 위치된 상기 커맨드 리스트 엔트리를 조작할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  18. 제8항에 있어서, 상기 커맨드 리스트 수단은 상기 디스크 드라이브에서 상기 호스트 컴퓨터로 커맨드 상태를 통신하기 위한 수단을 포함하는 것을 특징으로 하는 장치.
  19. 제8항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스 내의 결함 메모리 저장 위치의 메모리 위치 어드레스의 시스템 RAM 내에 결함 리스트를 작성하기 위한 주요 결함 리스트 수단을 포함하는 것을 특징으로 하는 장치.
  20. 제10항에 있어서, 상기 커맨드 리스트 수단은 상기 결함 리스트 내의 특정 결함 메모리 저장 위치 어드레스에 대응하는 상기 주요 결함 리스트 내의 어드레스를 상기 커맨드 리스트 수단이 참조할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  21. 제20항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스 내의 새로 식별된 결함 메모리 저장 위치의 메모리 위치 어드레스의 시스템 RAM 내에 증대된 결함 리스트를 작성하기 위한 증대 결함 리스트 수단을 포함하는 것을 특징으로 하는 장치.
  22. 제21항에 있어서, 상기 증대 결함 리스트 수단은 증대 결함 리스트 내에 있는 메모리 위치 어드레스를 갖고 있는 메모리 위치에 통상적으로 저장될 수 있는 데이타의 메모리 위치를 호스트 컴퓨터가 재할당할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  23. 제22항에 있어서, 상기 컴퓨터 시스템은 상기 증대 결함 리스트를 상기 주요 결함 리스트와 합체하는 수단을 포함하는 것을 특징으로 하는 장치.
  24. 제8항에 있어서, 상기 커맨드 리스트 수단은 메모리 위치가 상기 데이타 저장 디바이스 내에 저장되는 실제 물리적 위치와 관련된 물리적 메모리 위치 어드레스를 상기 커맨드 리스트 엔트리가 참조할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  25. 제8항에 있어서, 상기 커맨드 리스트 수단은 메모리 위치가 이론적 데이타 저장 디바이스 내에 저장되는 이론적 위치와 관련된 논리적 메모리 위치 어드레스를 상기 커맨드 리스트 엔트리가 참조할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  26. 제8항에 있어서, 상기 커맨드 리스트 수단은 한 커맨드 리스트 엔트리를 다른 커맨드 리스트 엔트리에 연계하는 수단을 포함하는 것을 특징으로 하는 장치.
  27. 제8항에 있어서, 상기 커맨드 리스트 수단은 데이타를 상기 데이타 저장 디바이스로부터 전달하기 위해 시스템 내의 목적지 메모리 위치를 나타내는 목적지 어드레스를 포함하는 수단을 포함하는 것을 특징으로 하는 장치.
  28. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 인접한 호스트 어드레스 공간 내로 전달하기 위한 인접한 호스트 메모리 위치의 수를 식별하는 수단을 포함하는 것을 특징으로 하는 장치.
  29. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는
    a) 새로운 커맨드가 바로 앞의 커맨드와 동일한 형태의 커맨드라는 것을 식별하는 수단, 및
    b) 새로운 커맨드가 바로 앞의 커맨드에 의해 참조된 데이타 저장 디바이스 상의 데이타에 인접한 데이타 저장 디바이스 상의 데이타를 참조하는 것을 식별하는 수단
    을 포함하는 것을 특징으로 하는 장치.
  30. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는
    a) 새로운 커맨드가 바로 앞의 커맨드와 동일한 형태의 커맨드라는 것을 식별하는 수단, 및
    b) 새로운 커맨드가 바로 앞의 커맨드의 호스트 컴퓨터 어드레스 공간에 바로 인접하지 않은 호스트 컴퓨터 어드레스 공간을 참조하는 것을 식별하는 수단
    을 포함하는 것을 특징으로 하는 장치.
  31. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스가 에러 정보를 상기 호스트 컴퓨터에 통신할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  32. 제8항에 있어서, 상기 커맨드 리스트 수단은 제1 커맨드 리스트 엔트리와 관련된 제1 커맨드의 완료 전에 최소한 제2 커맨드 리스트 엔트리로 상기 데이타 저장 디바이스가 억세스할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 장치.
  33. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스의 저장 매체 내에 저장되어, 상기 시스템의 개시 동안에 상기 데이타 저장 디바이스로부터 상기 시스템 RAM 내로 로드되는 것을 특징으로 하는 장치.
  34. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스의 결함 메모리 저장 위치 상의 정보를 포함하는 결함 리스트를 포함하는 것을 특징으로 하는 장치.
  35. 제1항에 있어서, 상기 시스템은 상기 데이타 저장 디바이스 상의 추가 결함 메모리 저장 위치를 검출하는 수단을 포함하고, 상기 디바이스 운영 데이타/코드는 상기 시스템에 의한 앞으로의 이용을 위해 상기 추가 결함 메모리 저장 위치의 위치 저장 및 억세싱을 관리하는 증대 결함 관리 수단을 포함하는 것을 특징으로 하는 장치.
  36. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스의 작동을 제어하는데 사용된 커맨드를 포함하는 커맨드 리스트 엔트리를 작성하기 위한 커맨드 리스트 수단을 포함하는 것을 특징으로 하는 장치.
  37. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스에 적절한 제어 세팅(settings)을 제공하는 정보를 포함하는 판독 채널 데이타를 포함하는 것을 특징으로 하는 장치.
  38. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스의 판독 헤드를 적절하게 위치 설정하기 위한 서보 데이타를 포함하는 것을 특징으로 하는 장치.
  39. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 상기 데이타 저장 디바이스의 특정 물리적 구성을 상세하게 하는 정보를 포함하는 드라이브 물리적 데이타를 포함하는 것을 특징으로 하는 장치.
  40. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 판독 어헤드(ahead) 능력을 제공하는 수단 및 판독 어헤드 데이타를 저장하기 위해 시스템 RAM 내에 판독 어헤드 버퍼 공간을 할당하기 위한 수단을 포함하는 것을 특징으로 하는 장치.
  41. 제1항에 있어서, 상기 디바이스 운영 데이타/코드는 기록 캐싱(caching) 능력을 제공하는 수단 및 기록 캐시 데이타를 저장하기 위해 시스템 RAM 내에 기록 캐시 버퍼 공간을 할당하기 위한 수단을 포함하는 것을 특징으로 하는 장치.
  42. 디바이스-개시 버스-마스터링을 허용하는 버스를 사용하여 호스트 컴퓨터에 접속된 컴퓨터 제어 시스템에서 사용하기 위한 데이타 저장 디바이스로서, 상기 시스템이 호스트 컴퓨터와 관련되지만 상기 데이타 저장 디바이스의 부분이 아닌 시스템 RAM을 갖고 있고, 상기 데이타 저장 디바이스가 디바이스 제어 수단 형태의 소정의 디바이스 운영 데이타/코드 및 디바이스의 작동을 제어하는데 사용될 디바이스 운영 데이타를 필요로 하는데, 상기 운영 데이타/코드의 최소한 일부분이 시스템의 작동 중에 시스템 RAM 내에 위치되는 데이타 저장 디바이스에 있어서,
    상기 데이타 저장 디바이스가 그 동작을 제어하기 위해 상기 디바이스 운영 데이타/코드를 사용할 수 있도록 상기 데이타 저장 디바이스가 상기 시스템 RAM 내에 저장된 상기 디바이스 운영 데이타/코드의 최소한 일부분으로 억세스할 수 있게 하는 수단을 포함하는 것을 특징으로 하는 데이타 저장 디바이스.
  43. 제42항에 있어서, 상기 데이타 저장 디바이스는 시스템의 작동 중에 사용하기 위해 시스템 RAM 내에 위치된 상기 데이타 저장 디바이스 운영 데이타/코드의 부분을 시스템 RAM 내에 저장하기 위한 수단을 포함하는 것을 특징으로 하는 데이타 저장 디바이스.
  44. 호스트 컴퓨터 수단과 관련된 호스트 RAM을 갖고 있는 호스트 컴퓨터 수단이, 디바이스-개시 버스-마스터링을 허용하는 버스를 사용하여 호스트 컴퓨터에 접속되어, 디바이스 제어 수단 형태의 소정의 디바이스 운영 데이타/코드 및 디바이스의 작동을 제어하는데 사용될 디바이스 운영 데이타를 필요로 하는 데이타 저장 디바이스와 통신할 수 있게 하는 방법에 있어서,
    (a) 상기 디바이스 운영 데이타/코드의 최소한 일부분을 호스트 RAM 내에 저장하는 단계, 및
    (b) 상기 데이타 저장 디바이스 및/또는 호스트 컴퓨터 수단이 상기 데이타 저장 디바이스의 작동을 제어하기 위해 상기 디바이스 운영 데이타/코드를 사용할 수 있도록 상기 데이타 저장 디바이스 및/또는 상기 호스트 컴퓨터 수단이 상기 호스트 RAM 내에 저장된 상기 디바이스 운영 데이타/코드의 최소한 일부분으로 억세스할 수 있게 하는 단계
    를 포함하는 것을 특징으로 하는 방법.
KR1019970065550A 1996-12-04 1997-12-03 컴퓨터가 데이타 저장 디바이스와 통신할 수 있게 하는 방법 및장치 KR19980063743A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/760,577 US5875349A (en) 1996-12-04 1996-12-04 Method and arrangement for allowing a computer to communicate with a data storage device
US8/760,577 1996-12-04

Publications (1)

Publication Number Publication Date
KR19980063743A true KR19980063743A (ko) 1998-10-07

Family

ID=25059531

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970065550A KR19980063743A (ko) 1996-12-04 1997-12-03 컴퓨터가 데이타 저장 디바이스와 통신할 수 있게 하는 방법 및장치

Country Status (6)

Country Link
US (3) US5875349A (ko)
EP (1) EP0847001A3 (ko)
JP (1) JPH10207637A (ko)
KR (1) KR19980063743A (ko)
SG (1) SG65034A1 (ko)
TW (1) TW460795B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100724025B1 (ko) * 2000-01-03 2007-06-04 텍사스 인스트루먼츠 인코포레이티드 파티션 테이블의 버퍼링, 화일 시스템 디렉토리 구조, 및대용량 저장 디바이스 내의 개별 화일 클러스터 체인

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09274541A (ja) * 1996-04-08 1997-10-21 Canon Inc 記憶装置及び該装置の制御方法及び記憶システム及び該システムの制御方法
US6098121A (en) * 1996-12-03 2000-08-01 Matsushita Electric Industrial Co., Ltd. Data transfer apparatus with improved throughput due to reduced processing overhead in interrupt process
US5875349A (en) * 1996-12-04 1999-02-23 Intersect Technologies, Inc. Method and arrangement for allowing a computer to communicate with a data storage device
JPH10260912A (ja) * 1997-03-17 1998-09-29 Mitsubishi Electric Corp メモリカード
US6191822B1 (en) * 1997-06-20 2001-02-20 Sony Corporation Method of and apparatus for separating audio and video data from a combined audio/video stream of data
US6105075A (en) * 1997-08-05 2000-08-15 Adaptec, Inc. Scatter gather memory system for a hardware accelerated command interpreter engine
EP1744316A1 (en) * 1997-10-21 2007-01-17 Sony Corporation Recording and/or reproduction apparatus, file management method and providing medium
US6108797A (en) * 1997-12-11 2000-08-22 Winbond Electronics Corp. Method and system for loading microprograms in partially defective memory
KR100267367B1 (ko) * 1997-12-31 2000-10-16 윤종용 디지털 비디오 디스크-램 시스템에서 디펙트 섹터 데이터의처리방법
US6128717A (en) * 1998-01-20 2000-10-03 Quantum Corporation Method and apparatus for storage application programming interface for digital mass storage and retrieval based upon data object type or size and characteristics of the data storage device
US6421747B1 (en) * 1998-02-27 2002-07-16 Stmicroelectronics N.V. Method for maximizing buffer usage on a disk drive
US6061751A (en) * 1998-03-09 2000-05-09 Texas Instruments Incorporated Computer system with controller circuit of an associated mass storage peripheral device located remotely from the device in the host computer
US6182179B1 (en) * 1998-04-20 2001-01-30 National Instruments Corporation System that is able to read and write using a transmission medium and is able to read stored information via a model information structure using a different transmission medium
JPH11316709A (ja) * 1998-05-01 1999-11-16 Nec Corp ディスク制御装置及び方法
US6233389B1 (en) 1998-07-30 2001-05-15 Tivo, Inc. Multimedia time warping system
US7558472B2 (en) 2000-08-22 2009-07-07 Tivo Inc. Multimedia signal processing system
US7380140B1 (en) 1998-12-30 2008-05-27 Spyrus, Inc. Providing a protected volume on a data storage device
US6389488B1 (en) * 1999-01-28 2002-05-14 Advanced Micro Devices, Inc. Read ahead buffer for read accesses to system memory by input/output devices with buffer valid indication
US6230216B1 (en) * 1999-01-28 2001-05-08 Vlsi Technology, Inc. Method for eliminating dual address cycles in a peripheral component interconnect environment
US6971022B1 (en) * 1999-06-15 2005-11-29 Matsushita Electric Industrial Co., Ltd. Cryptographic apparatus for performing cryptography on a specified area of content data
JP3812928B2 (ja) * 1999-07-14 2006-08-23 株式会社日立製作所 外部記憶装置及び情報処理システム
US6298069B1 (en) * 1999-09-30 2001-10-02 Sony Corporation System and method for implementing self-device control modules in an electronic network
US6782458B1 (en) * 2000-02-28 2004-08-24 Seagate Technology Llc Method and apparatus for disc drive data security using a defect list
US6467014B1 (en) * 2000-02-29 2002-10-15 Plasmon Lms, Inc. Automatic mapping and efficient address translation for multi-surface, multi-zone storage devices
US7949564B1 (en) 2000-05-31 2011-05-24 Western Digital Technologies, Inc. System and method of receiving advertisement content from advertisers and distributing the advertising content to a network of personal computers
US6693753B2 (en) 2000-06-02 2004-02-17 Seagate Technology Llc Disc sequencer supporting pipelined and non-pipelined read
US6983316B1 (en) 2000-07-18 2006-01-03 Western Digital Ventures, Inc. Method of and content delivery server for delivering content to a personal computer having a disk drive which includes a network address for the content delivery server and a server-contacting program
US7150036B1 (en) * 2000-07-18 2006-12-12 Western Digital Ventures, Inc. Method of and personal computer for displaying content received from a content delivery server using a disk drive which includes a network address for the content delivery server and a server-contacting program
US6973495B1 (en) 2000-07-18 2005-12-06 Western Digital Ventures, Inc. Disk drive and method of manufacturing same including a network address and server-contacting program
US7124252B1 (en) 2000-08-21 2006-10-17 Intel Corporation Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US6763437B1 (en) 2000-09-07 2004-07-13 Maxtor Corporation Control system, storage device and method for controlling access to a shared memory using a bus control or handshaking protocol
US20040226020A1 (en) * 2000-09-28 2004-11-11 Ati Technologies, Inc. Method and system for using general and appliance operating systems in a single information handling device
US6772258B2 (en) 2000-12-29 2004-08-03 Intel Corporation Method and apparatus for sharing an interrupt between disk drive interfaces
US6742060B2 (en) 2000-12-29 2004-05-25 Intel Corporation Look-up table based circuitry for sharing an interrupt between disk drive interfaces
US20020108009A1 (en) * 2000-12-29 2002-08-08 Michele Borgatti Electronic system having modular expansion function facilities
US6795884B2 (en) * 2000-12-29 2004-09-21 Intel Corporation Read-only memory based circuitry for sharing an interrupt between disk drive interfaces
EP1296237A1 (en) * 2001-09-25 2003-03-26 Texas Instruments Incorporated Data transfer controlled by task attributes
US6728855B2 (en) 2001-09-27 2004-04-27 Seagate Technology Llc Method and system for data path verification
US6711659B2 (en) 2001-09-27 2004-03-23 Seagate Technology Llc Method and system for data path verification
US7123556B2 (en) * 2002-01-22 2006-10-17 Matsushita Electric Industrial Co., Ltd. Multi-layered information recording medium with spare defect management areas
JP2004234736A (ja) * 2003-01-29 2004-08-19 Matsushita Electric Ind Co Ltd 光ディスクコントローラ及び光ディスク装置の制御方法
US7103736B2 (en) * 2003-08-11 2006-09-05 Telairity Semiconductor, Inc. System for repair of ROM programming errors or defects
US9754480B2 (en) 2003-11-04 2017-09-05 Universal Electronics Inc. System and method for controlling device location determination
US7363028B2 (en) * 2003-11-04 2008-04-22 Universal Electronics, Inc. System and method for controlling device location determination
US20050267995A1 (en) * 2004-04-29 2005-12-01 Newisys, Inc. Facilitating system management functionality via interaction between hardware domains
US7702221B2 (en) * 2004-09-14 2010-04-20 Marvell World Trade Ltd. Unified control and memory for a combined DVD/HDD system
US7639926B2 (en) * 2004-09-14 2009-12-29 Marvell World Trade Ltd. Unified control and memory for a combined DVD/HDD system
US7639927B2 (en) * 2004-09-14 2009-12-29 Marvell World Trade Ltd. Unified control and memory for a combined DVD/HDD system
US20070233868A1 (en) * 2006-03-31 2007-10-04 Tyrrell John C System and method for intelligent provisioning of storage across a plurality of storage systems
US20080040544A1 (en) * 2006-08-08 2008-02-14 Jason Caulkins Computer System For Reading And Writing Data
US8086816B2 (en) * 2008-10-20 2011-12-27 Dataram, Inc. Method for controlling performance aspects of a data storage and access routine
JP5521455B2 (ja) * 2009-09-15 2014-06-11 セイコーエプソン株式会社 記録装置、記録装置の制御方法、及び、プログラム
US8966176B2 (en) * 2010-05-27 2015-02-24 Sandisk Il Ltd. Memory management storage to a host device
JP2014148172A (ja) * 2014-04-01 2014-08-21 Seiko Epson Corp 記録装置、記録装置の制御方法、及び、プログラム
KR20160065468A (ko) * 2014-12-01 2016-06-09 삼성전자주식회사 솔리드 스테이트 드라이브의 동작 방법
TW201627854A (zh) * 2015-01-30 2016-08-01 Accusys Storage Ltd 快速進行資料傳輸之方法
US10055236B2 (en) 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075804A (en) * 1989-03-31 1991-12-24 Alps Electric Co., Ltd. Management of defect areas in recording media
US5136713A (en) * 1989-08-25 1992-08-04 International Business Machines Corporation Apparatus and method for decreasing the memory requirements for bios in a personal computer system
US5249279A (en) * 1989-11-03 1993-09-28 Compaq Computer Corporation Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands
US5237689A (en) * 1990-05-31 1993-08-17 Hewlett-Packard Company Configuration of mass storage devices
US5319751A (en) * 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
DE69424078T2 (de) * 1993-02-19 2000-10-05 Canon Kk Datenwiedergabeverfahren und Datenwiedergabegerät
US5600801A (en) * 1993-07-15 1997-02-04 Dell Usa, L.P. Multiple function interface device for option card
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
US5875349A (en) * 1996-12-04 1999-02-23 Intersect Technologies, Inc. Method and arrangement for allowing a computer to communicate with a data storage device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100724025B1 (ko) * 2000-01-03 2007-06-04 텍사스 인스트루먼츠 인코포레이티드 파티션 테이블의 버퍼링, 화일 시스템 디렉토리 구조, 및대용량 저장 디바이스 내의 개별 화일 클러스터 체인

Also Published As

Publication number Publication date
SG65034A1 (en) 1999-05-25
US5875349A (en) 1999-02-23
EP0847001A2 (en) 1998-06-10
US6029209A (en) 2000-02-22
TW460795B (en) 2001-10-21
EP0847001A3 (en) 2006-09-13
JPH10207637A (ja) 1998-08-07
US6286057B1 (en) 2001-09-04

Similar Documents

Publication Publication Date Title
US5875349A (en) Method and arrangement for allowing a computer to communicate with a data storage device
US6480932B1 (en) Computer system having a host computer coupled to a disk drive with a drive-selected-application partition for storing data for execution by the host computer in response to drive-determined conditions
US6393492B1 (en) Method and arrangement for operating a mass memory storage peripheral computer device connected to a host computer
US7134006B2 (en) Method and system for changing software access level within or outside a host protected area
EP0976025B1 (en) Implementing mass storage device functions using host processor memory
US5966732A (en) Method and apparatus for adding to the reserve area of a disk drive
US6691213B1 (en) Computer system and method for accessing a protected partition of a disk drive that lies beyond a limited address range of a host computer's BIOS
US7424593B2 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6202138B1 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6282647B1 (en) Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code
JP5495074B2 (ja) 論理ユニット動作
US5909592A (en) Method in a basic input-output system (BIOS) of detecting and configuring integrated device electronics (IDE) devices
US5968141A (en) System for selectively upgrading firmware code for optical disk drive via ATA/IDE interface based on host system programming enable signal
US5968139A (en) Method of redirecting I/O operations to memory
US6728830B1 (en) Method and apparatus for modifying the reserve area of a disk drive
US6446139B1 (en) Multiple chip single image BIOS
US6693754B2 (en) Method and apparatus for a disc drive adaptive file system
US20060277353A1 (en) Virtual tape library device, virtual tape library system, and method for writing data to a virtual tape
US20050125601A1 (en) HDD with rapid availability of critical data after critical event
US6738879B2 (en) Advanced technology attachment compatible disc drive write protection scheme
US7822937B2 (en) Method and apparatus for modifying reserve area of disk drive or memory
US20030177367A1 (en) Controlling access to a disk drive in a computer system running multiple operating systems
US7886310B2 (en) RAID control method and core logic device having RAID control function
WO2023249713A1 (en) Proactive hardening of data storage system
JPH0519975A (ja) ハードデイスクエミユレータのアドレス情報統合方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee