KR20050057101A - 데이터 전송을 처리하기 위한 방법 및 장치 - Google Patents

데이터 전송을 처리하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20050057101A
KR20050057101A KR1020057003618A KR20057003618A KR20050057101A KR 20050057101 A KR20050057101 A KR 20050057101A KR 1020057003618 A KR1020057003618 A KR 1020057003618A KR 20057003618 A KR20057003618 A KR 20057003618A KR 20050057101 A KR20050057101 A KR 20050057101A
Authority
KR
South Korea
Prior art keywords
ide
threshold
storage device
setting
data
Prior art date
Application number
KR1020057003618A
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 KR20050057101A publication Critical patent/KR20050057101A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

본 발명의 실시예는 데이터 전송의 구현을 효율적인 방식으로 제공한다. 48 비트 LBA 메커니즘은 일차 채널 또는 이차 채널 상에서 두 세트의 IDE 레지스터에 대한 쓰기를 요구한다. 일차 또는 이차 채널 레지스터에 대한 두 세트의 I/O 쓰기는 데이터에 따라서 상태 레지스터를 제1 또는 제2 상태로 적절히 설정함으로써 수행된다. 본 발명의 실시예는 데이터 전송의 크기가 임계치보다 작거나 같은 경우 단일 세트의 I/O 레지스터에 대한 쓰기를 제공한다.

Description

데이터 전송을 처리하기 위한 방법 및 장치 {METHOD AND APPARATUS FOR HANDLING DATA TRANSFERS}
본 발명은 데이터 전송을 처리하기 위한 방법 및 장치에 관한 것이고, 특히 저장 디바이스에 대하여 하나 이상의 데이터 전송을 하기 위하여 구성되는 장치 및 방법에 관한 것이다.
오늘날 컴퓨터 시스템에 사용되기 위하여 설계되는 많은 저장 하드 디스크 드라이브는 IDE 표준 인터페이스를 사용한다. IDE 인터페이스는 매우 비용 효율적임이 입증되었고 PC 마더보드(motherboard) 산업에서 널리 사용되도록 성장하여 왔다. IDE 표준은 이전에는 제어기 카드 상에서 발견되었던 제어기 전자 부품의 대부분이 하드 디스크 메커니즘에서 또는 칩셋 내에 배치될 수 있도록 한다. IDE 인터페이스가 마더보드 상에 배치될 수 있게 된 이후, 그 상대적으로 간단한 전자 부품으로 인하여, 제어기 카드는 필요하지 않게 됨에 따라서 확장 슬롯이 기타 용도로 사용될 수 있게 되었다.
오랜 기간 동안, 운영 시스템은 원하는 데이터를 디스크로부터 검색하기 위한 실린더, 헤드 및 섹터를 명시함으로써 고정 미디어 디스크 드라이브에 액세스하였다. 이러한 점으로 인하여, Int 13h 하드 디스크 인터페이스는 이러한 종류의 프로토콜에 관하여 표준화하였다. IDE 호환 드라이브가 처음 도입되었을 때, 이러한 프로토콜은 유지되었다. 그 가장 기초 레벨에서, IDE 호환형 드라이브 상의 데이터는 전통적인 실린더-헤드-섹터(Cylinder-Head-Sector; CHS) 방법 대신에 논리 블록에 따라서 액세스되고, 이는 IDE 작업 파일(드라이브와 호스트간의 레지스터 레벨 인터페이스)이 CHS 포맷으로 명시되어 있는 경우조차 그러하다.
Int 13h 애플리케이션 프로그래밍 인터페이스의 제약과 IDE 작업 파일의 제약이 조합되면, 과거에는, 단지 최대 528 Mb의 데이터만이 단일 IDE 디바이스로 액세스 가능하다. 하드 디스크 기술의 발전으로 인하여, 528 Mb보다 큰 드라이브가 현재 가격 효율적이 되었고 데이터를 어드레싱하는 새로운 방법이 요구된다. Intel Corporation에 의하여 개발된 하드 디스크 드라이버는 세개의 표준 데이터 어드레싱 모드들을 지원하는데, 이는 CHS 모드, 확장 CHS(Extended CHS; ECHS)모드 및 논리 블록 어드레싱(logical block adressing; LBA) 모드이다.
실린더-헤더-섹터: 표준 CHS 모드는 모든 드라이브 상에서 사용가능하고 모든 운영 시스템과 호환 가능하다. 이러한 모드에서는 최대 16개의 헤드, 1023개의 실린더 및 63개의 섹터까지 명시하는 것이 가능하다. 만약 드라이브가 1023개보다 많은 수의 실린더를 지원한다면, 사용가능한 양은 1023개로 제한된다. 이러한 어드레싱 모드를 사용하여 최대 528 Mb의 데이터가 이용가능하다. 데이터는 CHS 파라미터보다는 선형 어드레싱 기법을 사용하여 디스크 상에 배열되기 때문에, 드라이브 펌웨어는 이러한 변환(translation)을 수행한다.
확장 실린더-헤드-섹터: ECHS 변환 모드는 528 Mb보다 큰 용량을 가졌으나 논리 블록 어드레싱을 지원하지 않는 드라이브에 대하여 사용된다. 이러한 변환 모드는 산업계에서 널리 인정되고 있지는 않지만, 이는 대부분의 DOS 및 MICROSOFT WINDOWS 애플리케이션에 대하여 동작할 것이다. 이러한 변환 모드를 사용하여 실린더 카운트가 1024보다 작아질 때까지 실린더의 개수는 감소하고 헤드의 개수는 증가한다. 이러한 방법은 528 Mb보다 매우 더 큰 드라이브에 대하여는 효율적으로 작동하지 않을 것이고, 실린더 개수의 두개의 최하위 유효 비트(least significant bits)가 0이 아닌 경우에는, 파라미터 변환 중 일부 드라이브 용량이 손실될 수 있다. 변환 알고리즘에서의 비효율성으로 인하여 손실되는 섹터는 고아 섹터(orphan sector)라고 한다.
논리 볼록 어드레싱: LBA 모드에서는, 디스크 상의 데이터의 위치가 28 비트 또는 48 비트 논리 블록 어드레스를 사용하여 명시된다. 28 비트 LBA는 호스트로 하여금 드라이브 펌웨어의 변환 코드를 우회하도록 하는 드라이브 선형 어드레싱 기법에 해당한다. 이것은 발전해나가는 가장 널리 사용되는 어드레싱 메커니즘으로 빠르게 자리 잡고 있다. 이는 보다 빠른 디스크 액세스를 가능하게 하고 8.4 Gb의 데이터가 사용가능하다. 또한, 이 방법은 고아 섹터가 0까지 감소하도록 한다.
48 비트 LBA IDE 저장 드라이브에 대하여, 그것이 보다 커질수록, IDE 디바이스에 대한 호스트로의/호스트로부터의 특정 데이터 전송을 위하여 IDE 호환 드라이브를 설정하는 것은 더 많은 시간을 요한다. 예컨대, 48 비트 LBA 메커니즘은 두 세트의 IDE 레지스터에 대한 I/O 쓰기를 필요로 한다. 따라서, 48 비트 LBA 드라이브 및 그 데이터 전송을 처리하기 위한 보다 효율적인 메커니즘이 요망된다.
도 1은 본 발명을 구현하는 예시적인 컴퓨터 시스템의 실시예의 블록도.
도 2는 IDE 호환 드라이브들의 검출 및 초기화를 위한 루틴의 실시예의 흐름도.
도 3은 최적의 48 비트 IDE 어드레싱 메커니즘을 사용하여 IDE 호환 드라이브(들)에 대한 데이터 전송을 설정하기 위한 루틴의 실시예의 흐름도.
이하의 설명에서, 본 발명의 보다 완벽한 이해를 제공하기 위하여 특정 메모리 구성, 어드레스 범위, 보호 기법 등과 같은 수많은 특정 상세가 주어진다. 그러나, 본 발명이 이러한 특정 상세 없이도 실시될 수 있다는 점은 당해기술의 당업자에게는 자명할 것이다. 다른 예에서, 공지의 장치 및 방법은 본 발명을 불명확하게 하는 것을 피하기 위하여 상세하게 설명되지 않는다.
본 발명의 실시예는 데이터 전송의 구현을 효율적인 방법으로 제공한다. 전형적인 실시예에서, 48 비트 LBA 메커니즘은 일차 채널(primary channel) 또는 이차 채널(secondary channel) 상에 두 세트의 IDE 레지스터에 대한 I/O 쓰기를 필요로 한다. 일차 또는 아차 채널 레지스터로의 두 세트의 I/O 쓰기는 데이터에 따라서 제1 및 제2 상태에 대한 상태 레지스터를 적절히 설정함으로써 수행된다. 본 발명의 실시예는 데이터 전송의 크기가 임계치 보다 작거나 같은 경우 I/O 레지스터에 대한 단일 세트의 쓰기를 제공한다.
도 1을 참조하면, 본 발명을 구현하는 예시적인 컴퓨터 시스템의 실시예(100)의 블록도가 설명된다. 컴퓨터 시스템은 중앙 처리 장치(CPU; 102)를 포함하며, 이는 RAM(104), ROM(106), 일차 IDE 채널(108) 및 이차 IDE 채널(110)과 연결된다. 채널(108, 110)은 자기 디스크에 기록된 데이터를 읽고 쓰는 디바이스(112, 114, 116, 118)를 제어한다. 설명을 위한 목적으로, 단지 일차 및 이차 IDE 채널(106, 108)만이 설명된다. 본 발명은 원시 IDE 모드에서 동작하는 경우 기능하는 임의의 수의 IDE 제어기 및 잠재적인 복수 채널들로 확장가능하다는 점이 이해되어야 한다.
또한, ROM(106)은 IDE 구성 테이블(120), 검출 및 구성 프로그램(122) 및 확장 드라이브 파라미터 테이블(Extended Drive Parameter Table; EDPT; 124)을 유지한다. 플랫폼 상에 존재할 수 있는 다수의 IDE 제어기 및 채널에 연결되는 각각의 잠재적 논리 IDE 디바이스에 대한 IDE 구성 테이블(120)에 하나의 엔트리가 있다. IDE 드라이브, IDE 커넥터, 칩셋 능력의 공통 특징 집합에 기초하고 최신 ATA 설명서(예를 들면, ATA/ATAPI-6 설명서)에 합치하도록, IDE 구성 테이블(120)은 IDE 제어기 상의 디바이스를 구성하기 위하여 필요한 구성 정보를 포함한다. 사용자와의 상호 작용 없이, 플라이 상의 IDE 디바이스 동작 파라미터, 칩셋 능력 레지스터 및 타이밍 레지스터를 프로그래밍하는데 필요한 정보를 검색하기 위하여 IDE 구성 테이블(120)이 시스템 BIOS POST 동안에 참조된다. 따라서, 사용자는 임의의 드라이브를 컴퓨터에 플러깅(plug)할 수 있으며, 소프트웨어는 사용자간섭 없이 시스템을 구성할 것이다. 최신 ATA 설명서에 기재된 모든 특징 및 특징의 서브셋이 지원될 수 있다.
대부분의 최신 IDE 호환 드라이브는 100 MBytes/sec에 필적하거나 또는 이를 초과하는 데이터 처리율(throughput rate)로 모든 전송을 처리할 수 있다. 당해 기술의 당업자는 본 발명이 IDE 디바이스로의/디바이스로부터의 데이터 전송에 제한되기 보다는 IDE 포트 또는 병렬 포트와 연결된 기타 저장 매체 상에 사용되도록 적응될 수 있다는 점을 인식할 것이다. 예컨대, 본 발명의 실시예는, 기타 인터페이스 능력에 따라, IDE 호환 드라이브와 기타 지점 사이에서 상당한 속도로 데이터를 전송하도록 적응될 수 있다.
IDE 호환 저장 디바이스가 137.4 GB보다 큰 저장 공간에 대한 액세스를 지원하는 경우, IDE 인터페이스는 각 드라이브와 연관된 한 세트의 IDE I/O 레지스터의 상태 비트(예컨대, 상위 비트(High Order Bit; HOB))에 따른다. 48 비트 레지스터는 다음과 같이 정의되고 사용될 수 있다.
표 1: 48 비트 레지스터 정의 및 사용
레지스터 "Most Recently Written"HOB=0 "Previous Content"HOB=1
특징 저장됨(Reserved) 저장됨
섹터 카운트1F2/172 섹터 카운트 (7:0) 섹터 카운트(15:8)
섹터 번호1F3/173 LBA (7:0) LBA(31:24)
실린더 하위1F4/174 LBA (15:8) LBA (39:32)
실린더 상위1F5/175 LBA (23:16) LBA (47:40)
디바이스/헤드1F6/176 디바이스/헤드 저장됨
커맨드 1F7/177 커맨드 N/A
본 발명의 실시예는 IDE 48 비트 LBA 전송의 구현을 효율적인 방식으로 제공한다. 전형적인 구현에서, 48 비트 LBA 메커니즘은 일차 채널(1F0h-1F7h) 또는 이차 채널(170h-177h) 상에 두 세트의 IDE 레지스터에 대한 I/O 쓰기를 필요로 한다. 본 발명의 실시예는 데이터 전송의 크기가 임계치 보다 작거나 같은 경우 I/O 레지스터에 대한 단일 세트의 쓰기를 제공한다. 전형적인 구현에 있어서, 데이터 전송의 크기가 137.4 GB보다 작은 경우, 단지 I/O 레지스터에 대한 단일 세트의 쓰기만이 요구된다. 임계치의 크기(예컨대, 137.4 GB)는 드라이브가 48 비트 LBA 액세스 뿐만 아니라 28 비트 LBA 액세스도 지원할 수 있는지의 구현에 달려있다. 두 개의 액세스 모드 모두가 지원되는 경우 저장 공간의 일부 오버랩이 있다.
본 발명의 실시예는 IDE 48 비트 LBA 전송의 구현을 효율적인 방식으로 제공한다. 전형적인 구현에서, 48 비트 LBA 메커니즘은 일차 채널(1F0h-1F7h) 또는 이차 채널(170h-177h) 상에 두 세트의 IDE 레지스터에 대한 I/O 쓰기를 필요로 한다. 이러한 일차 채널 및 이차 채널 레지스터에 대한 두 세트의 I/O 쓰기는 데이터에 따라 HOB 비트를 0/1로 적절히 설정함으로써 수행된다. 본 발명의 실시예는 데이터 전송의 크기가 임계치보다 작거나 같은 경우 I/O 레지스터에 대한 단일 세트의 쓰기를 제공한다. 전형적인 구현에 있어서, 데이터 전송의 크기가 137.4 GB보다 작은 경우, 단지 I/O 레지스터에 대한 단일 세트의 쓰기만이 요구된다.
도 2를 참조하면, 본 발명의 실시예는 48 비트 LBA 드라이브의 IDE 레지스터를 초기화한다. 도 3을 참조하면, 초기화 이후에, 데이터 전송의 크기(예컨대, LBA 섹터의 크기)는 IDE 레지스터에 대한 추가적인 I/O 쓰기가 필요한지를 결정하기 위하여 임계치와 비교될 것이다. 특히, 도 2는 IDE 호환 드라이브(들)의 검출 및 초기화를 위한 루틴의 실시예의 흐름도를 도시한다.
단계(202)에서, IDE 리셋이 초기화된다. 전형적인 구현에서, 드라이브는 자동 구성 가능하고 사용자는 어떠한 일도 할 필요가 없다. 사용자는 드라이브에 플러그인(plug in)하고 본 발명의 실시예는 드라이브에 적절히 응답한다.
단계(204)에서, 각 일차/이차 채널 상에서 IDE 제어기에 저장 디바이스가 존재하는 것이 "드라이브 식별(identify drive)" 명령어를 실행함으로써 검출된다. 드라이브 식별 명령어는 제어기, 일차/이차 채널, 마스터/슬레이브(master/slave) 저장 디바이스로 향해 있는 IDE 명령어 포트에 특정 조작부호(opcode)를 작성함으로써 IDE 디바이스로 발행된다. IDE 디바이스는 드라이브를 구성하기 위하여 해석되는 데이터로 응답한다.
전형적으로 드라이브는 자동 구성 가능하기 때문에, 사용자는 어떠한 일도 할 필요가 없다. 사용자는 드라이브에 플러그인하고 본 발명의 실시예는 드라이브에 적절히 응답한다. 드라이브 식별 명령어는 I/O 포트에 명령어에 대한 조작부호를 작성함으로써 IDE 디바이스로 발행된다.
IDE 디바이스는 드라이브를 구성하기 위하여 해석되는 데이터로 응답한다. 단계(206)에서, 데이터는 임의의 IDE 호환 드라이브가 48 비트 LBA 능력이 있는지를 결정하기 위하여 사용된다. 전형적인 구현에서, 데이터 워드(83, 86) 및 비트(10)가 임의의 IDE 호환 드라이브가 48 비트 LBA 능력이 있는지를 결정하기 위하여 점검된다.
모든 드라이브 판매자가 이러한 명령어에 대한 응답을 동일한 방식으로 구현하는 것은 아니다. 또한, 모든 드라이브가 리셋에 대하여 정확하게 동일한 방식으로 응답하는 것도 아니다. 본 발명의 실시예에서는 어떻게 드라이브가 리셋되고 어떻게 드라이브가 드라이브 식별 명령어에 응답하는가에 상관없이, 드라이브가 초기화될 수 있다. IDE 디바이스는 드라이브를 구성하기 위하여 해석되는 데이터로 응답한다. 시스템의 현존하는 IDE 디바이스는 디바이스의 다양한 능력을 얻기 위한 "드라이브 식별" 명령어에 의해 구성되고, 디바이스를 프로그래밍하기 위한 "특징 설정(set feature)" 명령어에 의해 구성된다.
단계(208)에서, IDE 호환 드라이브가 48 비트 가능인 경우, "특징 설정"에 대한 명령어가 설정을 위한 명령어와 함께 보내진다(단계(210)).
단계(212)에서, 상위 비트가 1로 설정되고(HOB=1), 어느 채널(즉, 일차 또는 이차)에 드라이브가 위치되는 가에 따라서 1FX 또는 17X의 IDE I/O 레지스터에 0이 쓰여진다. 전형적인 구현에서, 상태 레지스터는 8개의 표시 비트를 포함한다. 명령어 시퀀스의 서두에는, 상태 레지스터의 HOB 비트가 프로세서의 제어 하에 설정된다. HOB 비트는 동작(즉, IDE 레지스터에 0을 씀)이 완료될 때까지 설정된 채로 남아 있다. HOB 비트가 설정되어 있는 시간 동안, 호스트 컴퓨터는 작업 파일의 잔류 레지스터에 액세스하도록 허락되지 않는다.
단계(214)에서, IDE의 초기화가 완료된다.
단계(208)에서, IDE 호환 드라이브가 48 비트 가능이 아닌 경우, "특징 설정"에 대한 명령어는 설정을 위한 명령어와 함께 보내지고(단계(216)), IDE 초기화는 완료된다(단계(214)).
도 3은 IDE 호환 드라이브를 가지고 데이터 전송 읽기 또는 쓰기를 구성하기 위한 루틴의 실시예(300)의 흐름도를 도시한다.
단계(302)에서 IDE 데이터 전송에 대한 요청이 수신된다.
단계(304)에서, 데이터 전송의 크기가 결정된다. IDE 호환 디바이스로의 또는 그로부터의 전송을 수행하기 위하여, 한 그룹의 논리 어드레스, 전형적으로는 한 그룹의 논리 섹터에 대한 요청이 요구되고, 이는 시작 논리 섹터 값 및 논리 섹터 값의 총 개수를 식별함으로써 수행되는 것이 바람직하다. 전형적인 구현에서, 요구되는 "시작 LBA 섹터" 및 "섹터의 개수"가 데이터 전송의 크기를 결정하기 위하여 사용된다. 특히, 시작 논리 섹터, 전송하기 위한 논리 섹터의 총 개수 및 전송을 수행하는 호스트 컴퓨터 메모리의 메모리 범위의 시작 어드레스에 대한 포인터가 입력으로서 수신된다. 이러한 정보로부터, 각 물리적 드라이브 상의 대응하는 물리 섹터의 그룹이 계산될 수 있고, 이는 시작 물리적 섹터에 대한 값 및 각 물리적 디바이스에 대하여 전송하는 물리적 섹터의 총 개수를 결정함으로써 수행되는 것이 바람직하다.
데이터 전송의 크기가 임계치보다 큰 경우(단계(306)) 제어는 단계(308)로 넘어가고, 여기서 상위 오더 비트는 "1"로 설정되며(HOB=1), 레지스터는 데이터 전송을 위하여 프로그래밍된다(단계(308)). 전형적인 구현에서, 데이터 전송의 크기가 137.4 GB보다 큰 경우 상위 오더 비트는 "1"로 설정되고(HOB=1), IDE I/O 레지스터는 데이터 전송을 위하여 프로그래밍된다.
상위 오더 비트는 이후 "0"으로 설정되며(HOB=0), 모든 IDE I/O 레지스터가 데이터 전송을 위하여 프로그래밍된다(단계(310)).
IDE 데이터 전송이 이후 시작된다(단계(312)).
데이터 전송의 크기가 임계치보다 작거나 같은 경우(단계(306)) 제어는 단계(314)로 넘어가고, 여기서 상위 오더 비트는 "0"으로 설정되며(HOB=0), 레지스터는 데이터 전송을 위하여 프로그래밍된다(단계(314)). 전형적인 구현에서, 데이터 전송의 크기가 137.4 GB보다 작거나 같다면, 상위 오더 비트는 "0"으로 설정되며(HOB=0), 모든 IDE I/O 레지스터가 데이터 전송을 위해서 프로그래밍된다. 따라서, 본 발명의 실시예는 데이터 전송의 크기가 임계치보다 작거나 같을 경우 I/O 레지스터에 대한 단일 세트의 쓰기를 제공한다.
IDE 데이터 전송이 이후 시작된다(단계(312)).
외부 소프트웨어(예컨대, 운영 시스템, 애플리케이션)가 대부분의 데이터 전송을 하는 경우 액세스는 저장 디바이스의 임의의 영역 주변에서 지역화되는 경향이 있다. 이것은 데이터를 전송하기 위한 최적의 방법을 제공하기 위하여 사용되어온 입증된 메커니즘이다. 또한, IDE 인터페이스 및 디바이스는 단일 세트의 명령어를 IDE I/O 작업 파일 레지스터에 발행함으로써 다수 섹터의 전송을 지원한다. 데이터 전송 액세스가 임계치 경계너머를 왔다 갔다 하는 경우, 이러한 메커니즘이 구현되지 않는 정규 시나리오와 같이 두 세트의 IDE I/O 레지스터 액세스가 요구될 것이다. 저장 디바이스를 적절하게 분할함으로써 그러한 경우가 방지될 수 있다는 점이 당해 기술의 당업자에게는 명확할 것이다.
메모리 전송 및 액세스 동작의 실질적인 단계는 사용되는 드라이브의 종류 및 특정 하드웨어에 따라서 변경될 수 있다는 점이 이해될 것이다. 또한, 그 대다수가 이하에서 설명되는 이러한 기본 루틴에 대한 다양한 수정이 본 발명의 원리에 충실하게 가해질 수 있음이 이해될 것이다.
또한, IDE 표준에 대한 명령어 프로토콜 및 정보 교환은 일반적으로 당해 기술 분야에서 공지임이 이해될 것이다. 특히, 표준은 데이터 전송 및 주변 디바이스의 제어를 구현하기 위한 명령어 구조 및 전용 레지스터를 포함한다. 또한, 이러한 상이한 디바이스 및 시스템간의 전기적 상호 연결 및 연관된 지원 회로(예컨대, 전원 장치, 데이터 버퍼, 클록킹 회로 등)는 당업자의 기술 이내라는 점이 이해될 것이다.
특허법의 요구에 따라서 발명이 설명되었고, 당해 기술의 당업자는 그 특정 요구사항 또는 조건을 맞추기 위해서 본 발명에 대한 변경 및 수정을 어떻게 할 것인지 이해할 것이다. 그러한 변경 및 수정은 이하의 청구항에서 주어지는 발명의 범위 및 사상으로부터 벗어남 없이 가능할 것이다.

Claims (24)

  1. 저장 디바이스로 하나 이상의 데이터 전송을 구성하는 방법에 있어서,
    상기 저장 디바이스를 초기화하는 단계;
    상기 데이터 전송의 크기를 결정하는 단계;
    상기 데이터 전송의 크기와 임계치를 비교하는 단계;
    상기 데이터 전송의 크기와 상기 임계치의 상기 비교에 기초하여 상기 저장 디바이스를 구성하는 단계; 및
    상기 임계치에 기초하여 상기 데이터 전송을 시작하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 저장 디바이스는 통합 디바이스 전자 부품(Integrated Device Electronics; IDE) 호환 디바이스를 포함하는 방법.
  3. 제1항에 있어서,
    상기 데이터 전송의 크기를 결정하는 단계는,
    시작 논리 블록 어드레싱(Logical Block Addressing; LBA) 섹터 및 데이터 전송을 위해 요청된 섹터의 개수를 결정하는 단계
    를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 데이터 전송의 크기와 임계치를 비교하는 단계는,
    상기 데이터 전송의 크기를 137.4 GB와 비교하는 단계
    를 더 포함하는 방법.
  5. 제1항에 있어서,
    상기 데이터 전송의 크기와 상기 임계치의 상기 비교에 기초하여 상기 저장 디바이스를 구성하는 단계는,
    상기 임계치보다 작거나 같은 전송에 응답하여 IDE 레지스터에 대한 단일 세트의 I/O 쓰기를 구성하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 임계치보다 작거나 같은 전송에 응답하여 IDE 레지스터에 대한 단일 세트의 I/O 쓰기를 구성하는 단계는,
    지시자를 제1 상태로 설정하는 단계; 및
    데이터 전송을 위하여 IDE 레지스터를 프로그래밍하는 단계;
    를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 지시자를 제1 상태로 설정하는 단계는,
    상위 오더 비트(higher order bit)를 1로 설정하는 단계
    를 더 포함하는 방법.
  8. 제5항에 있어서,
    상기 데이터 전송을 위하여 IDE 레지스터를 프로그래밍하는 단계는,
    어떤 채널에 드라이브가 위치하는가에 따라서 1FX 또는 17F의 IDE I/O 레지스터에 0을 쓰는 단계
    를 더 포함하는 방법.
  9. 제6항에 있어서,
    상기 데이터 전송의 크기와 상기 임계치의 상기 비교에 기초하여 상기 저장 디바이스를 구성하는 단계는,
    상기 임계치보다 큰 전송에 응답하여 IDE 레지스터로 한 세트 이상의 I/O 쓰기를 구성하는 단계
    를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 임계치보다 큰 전송에 응답하여 IDE 레지스터로 한 세트 이상의 I/O 쓰기를 구성하는 단계는,
    지시자를 제1 상태로 설정하는 단계;
    데이터 전송을 위한 레지스터를 프로그래밍하는 단계;
    지시자를 제2 상태로 설정하는 단계; 및
    데이터 전송을 위한 레지스터를 프로그래밍하는 단계
    를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 지시자를 제1 상태로 설정하는 단계는 상위 오더 비트를 1로 설정하는 단계를 포함하고,
    상기 지시자를 상기 제2 상태로 설정하는 단계는 상위 오더 비트를 0으로 설정하는 단계를 포함하는 방법.
  12. 제1항에 있어서,
    상기 저장 디바이스를 초기화하는 단계는,
    상기 저장 디바이스가 48 비트 LBA 호환인지 결정하는 단계; 및
    상기 48 비트 LBA 호환 드라이브를 구성으로 설정하는 단계
    를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 48 비트 LBA 호환 드라이브를 구성으로 설정하는 단계는,
    제1 상태로 지시자를 설정하는 단계; 및
    선택된 I/O 레지스터에 쓰는 단계
    를 더 포함하는 방법.
  14. 제13항에 있어서,
    상기 제1 상태로 지시자를 설정하는 단계는,
    상위 오더 비트를 제1 상태로 설정하는 단계
    를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 상위 오더 비트를 제1 상태로 설정하는 단계는,
    상위 오더 비트를 1로 설정하는 단계
    를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 선택된 I/O 레지스터에 쓰는 단계는,
    선택된 I/O 레지스터에 0을 쓰는 단계
    를 더 포함하는 방법.
  17. 제1항에 있어서,
    상기 임계치 너머를 왔다 갔다(ping-pong) 하는 액세스를 처리하는 단계
    를 더 포함하는 방법.
  18. 저장 디바이스로 하나 이상의 데이터 전송을 구성하기 위하여 프로세서에 의해 실행 가능한 복수의 기계 판독가능 명령어를 저장한 기계 판독가능 매체에 있어서,
    상기 저장 디바이스를 초기화하는 명령어;
    상기 데이터 전송의 크기를 결정하는 명령어;
    상기 데이터 전송의 크기와 상기 임계치를 비교하는 명령어;
    상기 데이터 전송의 크기와 임계치의 상기 비교에 기초하여 상기 저장 디바이스를 구성하는 명령어; 및
    상기 임계치에 기초하여 상기 데이터 전송을 시작하는 명령어
    를 포함하는 기계 판독가능 매체.
  19. 디바이스 구성 테이블 및 디바이스 파라미터 테이블을 메모리로 복사하고, 인터페이스와 연결된 임의의 저장 디바이스의 존재 및 각 검출된 디바이스에 대하여 테스트하고, 데이터 전송의 크기와 임계치를 비교하고, 상기 데이터 전송의 크기와 상기 임계치와의 비교에 기초하여 상기 저장 디바이스를 구성하기 위한 회로를 포함하는 장치.
  20. 제19항에 있어서,
    상기 저장 디바이스는 IDE 호환 디바이스인 장치.
  21. 제20항에 있어서,
    상기 데이터 전송은 48 비트 LBA 전송을 포함하는 장치.
  22. 제1 저장 디바이스로부터 제2 저장 디바이스로 데이터를 전송하기 위한 회로; 및
    디바이스 구성 테이블 및 디바이스 파라미터 테이블을 메모리로 복사하고, 인터페이스와 연결된 상기 제2 저장 디바이스의 존재 및 각 검출된 디바이스에 대하여 테스트하고, 데이터 전송의 크기와 임계치를 비교하고, 상기 데이터 전송의 크기와 상기 임계치와의 비교에 기초하여 상기 제2 저장 디바이스를 구성하기 위한 회로
    를 포함하는 시스템.
  23. 제22항에 있어서,
    상기 제2 저장 디바이스는 IDE 호환 디바이스를 포함하는 시스템.
  24. 제23항에 있어서,
    상기 데이터 전송은 48 비트 LBA 전송을 포함하는 시스템.
KR1020057003618A 2002-09-05 2003-09-03 데이터 전송을 처리하기 위한 방법 및 장치 KR20050057101A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/236,344 US6892274B2 (en) 2002-09-05 2002-09-05 Method and apparatus for handling data transfers
US10/236,344 2002-09-05

Publications (1)

Publication Number Publication Date
KR20050057101A true KR20050057101A (ko) 2005-06-16

Family

ID=31977632

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057003618A KR20050057101A (ko) 2002-09-05 2003-09-03 데이터 전송을 처리하기 위한 방법 및 장치

Country Status (7)

Country Link
US (2) US6892274B2 (ko)
EP (1) EP1573558A2 (ko)
KR (1) KR20050057101A (ko)
CN (1) CN1735855B (ko)
AU (1) AU2003270080A1 (ko)
TW (1) TWI252407B (ko)
WO (1) WO2004023316A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101033928B1 (ko) * 2008-07-01 2011-05-11 삼성전자주식회사 하이브리드 디엠에이를 이용한 고속의 데이터 처리 장치 및방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6892274B2 (en) * 2002-09-05 2005-05-10 Intel Corporation Method and apparatus for handling data transfers
US8392602B2 (en) * 2005-09-30 2013-03-05 Rockwell Automation Technologies, Inc. Embedding controllers and devices with data to facilitate up-to-date control and configuration information
CN101582084B (zh) * 2009-06-03 2012-12-19 中兴通讯股份有限公司 一种数据存储的方法及装置
US9965191B2 (en) 2014-10-28 2018-05-08 Samsung Electronics Co., Ltd. Electronic system with message mechanism and method of operation thereof

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3135751B2 (ja) * 1993-07-16 2001-02-19 株式会社東芝 データ記憶装置
KR960014146B1 (ko) * 1994-08-24 1996-10-14 대우전자 주식회사 마이크로컴퓨터의 리셋장치
US5909592A (en) * 1994-09-07 1999-06-01 Intel Corporation Method in a basic input-output system (BIOS) of detecting and configuring integrated device electronics (IDE) devices
US5680640A (en) * 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
US5854942A (en) * 1996-09-06 1998-12-29 International Business Machines Corporation Method and system for automatic storage subsystem configuration
US6502212B1 (en) * 1999-08-31 2002-12-31 Sun Microsystems, Inc. Method and apparatus for bus parameter optimization using probes of system configurations
US6557058B1 (en) * 1999-12-01 2003-04-29 Iomega Corporation Method and apparatus of sustained sequential data transfer in a media drive
US6718401B2 (en) * 2001-06-27 2004-04-06 Intel Corporation System and method for device support
US6789163B2 (en) * 2001-09-17 2004-09-07 Seagate Technology Llc Optimizing data transfer performance through partial write command purging in a disc drive
US6892274B2 (en) * 2002-09-05 2005-05-10 Intel Corporation Method and apparatus for handling data transfers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101033928B1 (ko) * 2008-07-01 2011-05-11 삼성전자주식회사 하이브리드 디엠에이를 이용한 고속의 데이터 처리 장치 및방법
US8060667B2 (en) 2008-07-01 2011-11-15 Samsung Electronics Co., Ltd. Apparatus and method for processing high speed data using hybrid DMA

Also Published As

Publication number Publication date
AU2003270080A8 (en) 2004-03-29
US20050188145A1 (en) 2005-08-25
WO2004023316A3 (en) 2005-07-28
EP1573558A2 (en) 2005-09-14
AU2003270080A1 (en) 2004-03-29
CN1735855B (zh) 2010-05-26
TWI252407B (en) 2006-04-01
US7437503B2 (en) 2008-10-14
TW200413940A (en) 2004-08-01
WO2004023316A2 (en) 2004-03-18
US6892274B2 (en) 2005-05-10
US20040049631A1 (en) 2004-03-11
CN1735855A (zh) 2006-02-15

Similar Documents

Publication Publication Date Title
US5909592A (en) Method in a basic input-output system (BIOS) of detecting and configuring integrated device electronics (IDE) devices
US5875349A (en) Method and arrangement for allowing a computer to communicate with a data storage device
US6859856B2 (en) Method and system for a compact flash memory controller
US7424593B2 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7215580B2 (en) Non-volatile memory control
US6202138B1 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6757800B1 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7774575B2 (en) Integrated circuit capable of mapping logical block address data across multiple domains
US5113497A (en) I/o control system for a plurality of peripheral devices
US5996045A (en) IDE disk drive arrangement that combines the capacity of a master drive and slave drive while hiding the presence of slave drive to a host computer
US7437503B2 (en) Method and apparatus for handling data transfers
US20070226451A1 (en) Method and apparatus for full volume mass storage device virtualization
EP1573542A2 (en) Bios storage array
US20150348651A1 (en) Multiple access test architecture for memory storage devices
US7032054B1 (en) Method and apparatus for increasing the device count on a single ATA bus
JP3221419B2 (ja) ディスクアレイ装置
JPH0728741A (ja) 半導体ディスク装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application