ATA 에뮬레이션 호스트 인터페이스를 가진 RAID제어기 시스템 및 방법(RAID controller system and method with ATA emulationhost interface)
등록특허 10-0441189
- 1 -
(19)대한민국특허청(KR)
(12) 등록특허공보(B1)
(51) 。Int. Cl.7
G06F 13/00
(45) 공고일자
(11) 등록번호
(24) 등록일자
2004년07월21일
10-0441189
2004년07월12일
(21) 출원번호 10-2002-7003752 (65) 공개번호 10-2002-0048414
(22) 출원일자 2002년03월21일 (43) 공개일자 2002년06월22일
번역문 제출일자 2002년03월21일
(86) 국제출원번호 PCT/US2000/026343 (87) 국제공개번호 WO 2001/22221
(86) 국제출원출원일자 2000년09월21일 (87) 국제공개일자 2001년03월29일
(81) 지정국 국내특허 : 알바니아, 아르메니아, 오스트리아, 오스트레일리아, 아제르바이잔, 보스니아-
헤르체고비나, 바베이도스, 불가리아, 브라질, 벨라루스, 캐나다, 스위스, 중국, 쿠바, 체코,
독일, 덴마크, 에스토니아, 스페인, 핀랜드, 영국, 그루지야, 헝가리, 이스라엘, 아이슬란드,
일본, 케냐, 키르기즈, 북한, 대한민국, 카자흐스탄, 세인트루시아, 스리랑카, 라이베리아,
레소토, 리투아니아, 룩셈부르크, 라트비아, 몰도바, 마다가스카르, 마케도니아, 몽고, 말라
위, 멕시코, 노르웨이, 뉴질랜드, 슬로베니아, 슬로바키아, 타지키스탄, 투르크메니스탄, 터
어키, 트리니다드토바고, 우크라이나, 우간다, 미국, 우즈베키스탄, 베트남, 폴란드, 포르투
칼, 루마니아, 러시아, 수단, 스웨덴, 싱가포르, 아랍에미리트, 안티구아바부다, 코스타리카
, 도미니카연방, 알제리, 모로코, 탄자니아, 남아프리카, 벨리즈, 모잠비크, 그레나다, 가나,
감비아, 크로아티아, 인도네시아, 인도, 시에라리온, 유고슬라비아, 짐바브웨, 리히텐슈타
인, 에쿠아도르, 필리핀,
AP ARIPO특허 : 케냐, 레소토, 말라위, 수단, 스와질랜드, 우간다, 시에라리온, 가나, 감비
아, 짐바브웨, 모잠비크, 탄자니아,
EA 유라시아특허 : 아르메니아, 아제르바이잔, 벨라루스, 키르기즈, 카자흐스탄, 몰도바,
러시아, 타지키스탄, 투르크메니스탄,
EP 유럽특허 : 오스트리아, 벨기에, 스위스, 독일, 덴마크, 스페인, 프랑스, 영국, 그리스,
아일랜드, 이탈리아, 룩셈부르크, 모나코, 네덜란드, 포르투칼, 스웨덴, 핀랜드, 사이프러스
, 리히텐슈타인,
OA OAPI특허 : 부르키나파소, 베넹, 중앙아프리카, 콩고, 코트디브와르, 카메룬, 가봉, 기
네, 말리, 모리타니, 니제르, 세네갈, 차드, 토고, 기네비쏘, 적도기네,
(30) 우선권주장 60/156,001 1999년09월22일 미국(US)
(73) 특허권자 네트셀 코포레이션
미국 캘리포니아 95131 산 조세 슈트 203. 트레이드 존 블러바드 2150
(72) 발명자 스토로위츠마이클,씨.
미국캘리포니아94506던빌새들백드라이브2390
(74) 대리인 이병호
심사관 : 임영희
(54) ATA 에뮬레이션 호스트 인터페이스를 가진 RAID제어기 시스템 및 방법
등록특허 10-0441189
- 2 -
요약
RAID 저장 디바이스 제어기(70)는 호스트 시스템 버스에 제어기를 인터페이스하기 위한 호스트 인터페이스(56)를
제공한다. 호스트 인터페이스는, 예를 들어, IDE 디스크 드라이브들과 같은 부착된 저장 디바이스들로부터 격리되어
있으며, 따라서, 실제 부착된 드라이브들이 수 또는 인터페이스 프로토콜에 제한되지 않는다. 다양한 디바이스 포트들
이 구현될 수 있으며, 예를 들어, 레벨 3 및 레벨 5와 같은 다양한 RAID 전략들이 사용될 수 있다. 모든 경우에, 호스
트 인터페이스는 호스트에 표준의 균일 인터페이스, 즉, ATA 인터페이스(82, 84 및 86)를 제공하며, 바람직하게는
이중 채널 ATA 인터페이스를 제공한다. 호스트 인터페이스는 ATA 단일 또는 이중 채널 인터페이스를 에뮬레이트하
고, 제어기에 물리적으로 접속된 디바이스들의 실제 수에 무관하게 채널당 하나 또는 두 개의 부착 IDE 디바이스들을
에뮬레이트한다. 따라서, 예를 들어, PCI 호스트 머신 내의 표준 BIOS를 변화시키지 않고, 다섯 개 또는 일곱 개의 ID
E 드라이브들이 RAID 레벨 5로 배치될 수 있다. 따라서, RAID 제어기는 표준 이중 채널 ATA 제어기 보드에 대해 투
명하다.
대표도
도 2b
색인어
ATA 제어기, 디바이스, RAID, 에뮬레이트, IDE 디바이스
명세서
기술분야
관련 출원
본 출원은 1999년 9월 22일 출원된 미국 가출원 제 60/156,001 호를 우선권으로 주장하는 연속 출원이다.
기술 분야
본 발명은 컴퓨터 데이터 저장 디바이스 제어기들에 관한 것으로, 특히, ATA 표준 제어기들과 부착된 IDE 디바이스
들을 에뮬레이트하는 호스트 인터페이스를 가진 RAID 제어기에 관한 것이다.
배경기술
최초의 IBM PC 및 호환 기기들은 대용량 저장 장치용으로 단지 플로피 디스크 드라이브들만을 가지고 있었다. 후속
하는 XT 및 AT 모델들은 대용량 데이터 저장 장치용으로 5.25' 고정 디스크들(제거불가)의 접속을 위한 어댑터들을
포함하고 있었다. 이들 원래의 어뎁터들은 판독 신호들과 사전 보상된 기록 신호들(pre-compensated write signals
)을 위한 데이터 분리 회로들을 포함하는 드라이브들을 위한 대부분의 로우레벨 제어 신호들을 제공하였다. 어뎁터에
이들 기능들을 포함시키는 것은 한번에 하나씩만 액세스되는 한쌍의 드라이버들의 복제를 회피하였다. 불행히도, 상
기 어뎁터상의 5M 비트 판독/기록 채널은 기술 진보에 따라 보다 빠른 드라이버들을 부착하는 것이 불가능하였다.
제어기의 '실시간(real time)' 특성을 드라이브내로 이동시키는 것이 이 문제점을 해결하였다. 집적 구동 전자 기기들
(Integrated Drive Electronics) 또는 IDE 드라이브는 드라이브를 판독 또는 기록하고, 로컬 버퍼와 매체 사이에서
데이터를 전송하기 위해 필요한 모든 제어들과 데이터 채널을 통합하고 있다. 제조업자들은 데이터 레이트를 선택할
수도 있다. 새로운 인터페이스인 ATA(AT Attachment with Packet Interface Extension(ATA/ATAP1-4))(IBM A
T Attachment Interface)가 호스트 시스템에 대한 데이터 저장 디바이스들의 접속을 위해 정의되었다. 최초의 IDE
인터페이스들은 ISA 버스와 ATA 케이블 커넥터 사이에서의 어드레스 디코딩 및 버퍼링 정도로 구성되었다. 인터페
이스 프로토콜은 IDE 디바이스의 레지스터들을 액세스하기 위해 프로그래밍된 입력 및 출력 명령들을 사용하였다.
데이터 전송 방식은 부착된 드라이브들의 전송 레이트들로 스로틀링된(throttled) 호스트 프로세서의 입력 스트링 및
출력 스트링 명령들을 사용하였다. 이들 전송 레이트들은 상기 명세의 최근 개정에서는 초당 16메가바이트에 달하였
다. 이는 저장 디바이스상의 버퍼와 ISA 버스 상의 메모리 사이의 전송 레이트였다. 매체와 버퍼 사이의 전송 레이트
들은 보다 낮았다.
PCI 버스의 출현과 함께, 인텔사는 PCI IDE 문헌(PCI IDE Controller Specification, Revision 1.0, 3/4/94)을 공개
했으며, 이는 PCI 버스에 대한 기존 ISA 버스 기반 호스트 인터페이스의 표준 맵핑을 제공한다. 상기 표준은 이중 ID
E 채널 제어기(Dual IDE Channel Controller)를 개시하고 있다. 마스터 및 슬레이브의 한쌍의 디바이스들이 채널들
각각에 부착될 수 있었다. 데이터 전송을 위해서, 디바이스는 여전히 PCI 버스 타겟으로서 액세스되었다.
또한, 인텔사는 버스 마스터 IDE 문헌(Programming Interface for Bus Master IDE Controller, Revision 1.0, 5/16
/94)을 공개하였다. 이 문헌은 IDE 채널들내에 DMA 디바이스들을 통합하기 위한 표준을 정의한다. 버스 마스터링
등록특허 10-0441189
- 3 -
인터페이스는 IDE 채널이 버스 마스터(PCI BUS Initiator)로서 시스템 메모리로 또는 그로부터 PCI 버스를 통해 데
이터를 전송하는 것을 허용한다. 32bit/32㎒ PCI 버스에 대한 피크 전송 레이트는 초당 133메가바이트이다.
ATA 명세의 개정은 새로운 전송 모드인 울트라 DMA(Ultra DMA)를 정의했다. 기존 전송 레이트 개선들은, 셋업을
긴밀화하고 케이블상에서의 데이터 전송을 위한 시간 요건을 유지함으로써 얻어져왔다. 초당 16메가바이트에서, 판
독 전송 레이트는 판독 스트로브(read strobe)를 발송하고 데이터를 액세스하며 데이터를 반환하는 라운드 트립(rou
nd trip)에 의해 크게 제한되었다. 울트라 DMA 프로토콜은 초기에 신호 및 케이블의 모든 전기적 특성들을 보유하고
있었으며, 새로운 프로토콜을 제공하기 위해서 단순히 3개의 신호들의 기능들을 재정의한다. 이 프로토콜에서, 데이
터 타이밍을 제공하는 스트로브 신호는 데이터와 동일한 종단(end)으로부터, 즉, 기록을 위한 제어기와 판독을 위한
디바이스에 의해 전송된다. 이 구성에서, 전송 레이트는 케이블의 단일 트랜지션을 위한 케이블 스큐에 의해서만 제
한된다. 최초의 UDMA 디바이스들은 프로그래밍된 IO 전송 레이트들을 초당 33메가바이트로 배증시켰다. 후속하는
개정들은 초기 UDMA 전송 레이트를 초당 66메가바이트로 배증시켰지만, 교류 신호와 접지 도전체를 가진 80 도전
체 리본 케이블을 사용할 필요가 있었다. 현재의 버전에서는 초당 100 메가바이트의 전송 레이트를 지원한다. 현재는
ATA 병렬 인터페이스가 고속 직렬 링크로 교체되는 중이지만, 먼저, 병렬 속도 증가가 한번 더 이루어질 수도 있다.
문제점
통상적인 퍼스널 컴퓨터는 프로세서, DRAM 인터페이스, 다양한 입력/출력 어뎁터들 및 BIOS ROM을 포함하는 칩셋
을 위주로 설계된 마더보드로 구성되어 있다. IO 어댑터들은 일반적으로 IDE 인터페이스를 포함한다. 현 버전의 IDE
제어기들은 한 쌍의 IDE 포트들로 이루어져 있으며, 상기 IDE 포트들 각각은 한쌍의 IDE 저장 디바이스들과 인터페
이스할 수 있다. 이들 디바이스들은 통상적으로, 하나 이상의 IDE 하드 디스크들과 CD ROM, DVD ROM 또는 CD W
ORM 드라이브들을 포함한다. 기본 입력 출력 시스템 또는 BIOS는, PC를 부팅시키고 마더보드상의 어뎁터들에 로우
레벨 IO 루틴들을 제공하기 위해 사용되는 프로그램이다. 실질적으로 모든 이런 PC들은 마더보드 BIOS를 사용하여 I
DE 하드 디스크로부터 부팅 및 구동될 수 있다.
점차적으로, 퍼스널 컴퓨터들이 소규모 사무실/가정 사무실(SOHO) 시장에서 서버 또는 워크스테이션 용도로 배치되
고 있다. 역사적으로, 소형 컴퓨터 시스템 인터페이스(SCSI)를 가진 하드 디스크들은 보다 많은 요구사항을 가진 응
용들에 대한 소정의 성능 이득을 제공하였다. 그러나, 최근, IDE 드라이브들로서 제조되는 모든 드라이브들 중 85%
이상에서, SCSI 드라이브들은 성능 이득이 거의 없거나 아예 없고, 현저히 비용이 증가된, 동일한 매체 및 판독/기록
헤드들을 사용하여 구성되는 경향이 있다. 다른 대중적인 대안은 패터슨(Patterson)에 의해 제안된 바와 같은 저가
디스크들의 리던던트 어레이(RAID, Redundant Array Of Inexpensive Disks)이다(디. 패터슨 등, '저가 디스크들의
리던던트 어레이(RAID)용 케이스', Univ. Cal. Report No. UCB/CSD87/391, 1987년 12월). RAID 시스템들은 신뢰
성과 성능 관점 모두에 주안점을 둔 것이다. 먼저, 단일 드라이브가 손상되었을 경우 어떠한 데이터도 손실되지 않도
록 둘 이상의 드라이브들에 걸쳐 이중적으로 데이터를 저장함으로써 신뢰성이 얻어진다. 두번째로, 어레이의 집합 성
능(aggregate performance)으로 인해, 단일 드라이브의 성능에 비해 향상된 성능이 얻어진다. 이중적으로 저장된 데
이터의 서로 다른 섹션들이 두 드라이브들로부터 동시에 판독될 수도 있다. 또한, 데이터가 재판독될 때 집합 전송 레
이트가 실현될 수 있도록 데이터가 모든 가용 드라이브들에 걸친 스트립들내에 기록될 수도 있다. RAID 어레이 제어
기들은 본 발명자의 미국 특허 제 6,018,778 호에 보다 상세히 설명되어 있다.
불행히도, 가용한 다수의 RAID 솔루션들에는 단점들이 존재한다. 로컬 인텔리전스(local intelligence)와, SCSI 디스
크 드라이브들의 사용은 RAID 솔루션 중 한 부류의 특징이다. 이 부류는 드라이브들과 제어기 모두에 대하여 매우 고
가이기는 하지만 높은 성능을 나타낸다. 다른 대중적인 RAID 솔루션 부류는 임의의 로컬 인텔리전스 또는 버퍼링의
결핍과, IDE 드라이브들의 사용으로 특징지어 진다. 이는 본질적으로 소프트웨어 솔루션이다. 리던던시를 유지하기
위해서, 또는 데이터를 스트라이프(stripe)하기 위해서 드라이브들의 집합을 제어하는데 필요한 소프트웨어는 모두
호스트 시스템상에서 구동되어야만 하며, 이는 시스템 버스와 프로세서상의 디스크 드라이브 오버헤드를 크게 증가
시킨다. 따라서, 이 증가된 오버헤드로 인해 감소된 시스템 성능의 비용에서 RAID의 장점들이 얻어진다. 이들 솔루션
들 모두는 부가적인 문제점을 공유하고 있다. 이들 RAID 제어기들은 마더보드상의 BIOS에 의해 직접적으로 지원되
지 않는다. 부가적인 소프트웨어 드라이버들이 필요하다. 이들 드라이버들은, 예를 들어, 윈도우즈, 윈도우즈 NT, UN
IX, LINUX 등의 운영 체제의 기능에 따라 변화될 수도 있으며, 이는 제어기 제조업자들, OEM들, 마케팅 그룹들 및
시스템 조립자들에게 부가적인 부담을 초래한다.
따라서, 호스트 프로세서상에서 실행시키기 위한 특별한 소프트웨어를 필요로 하지 않으면서, 부가적인 소프트웨어
드라이브들이나 BIOS에 대한 변화를 필요로 하지 않는 RAID 저장 디바이스 제어기에 대한 필요성이 남아있다. BIOS
에 대한 어떠한 변화도 필요로 하지 않는 RAID 제어기는 ATA 컴플라이언트 인터페이스(ATA compliant interface)
를 구현하는 실질적인 모든 표준, 기성품(off-the-shelf) 컴퓨터들과의 '플러그-앤-플레이(plug-and-play)' 호환성
의 장점을 갖는다. RAID 제어기는 호스트에 대해 투명(transparent)하며, 디바이스 인터페이스들의 임의의 조합으로
다수의 저장 디바이스들(4개로 제한되지 않음)을 배치하도록 사용될 수 있으며, 호스트에 오버헤드를 부가하지 않고
RAID 미러링(mirroring), 스트립핑 등을 실행할 수 있다. 이와 같은 RAID 제어기는 모든 PC 사용자들에게 저가로,
그리고, 매우 단순한 설치로 RAID 기능을 제공한다.
발명의 상세한 설명
본 발명은 표준 IDE 제어기와 IDE 드라이브를 사용하여 소정의 PC 마더보드상에서 부팅 및 구동될 수 있는 모든 운
영 체제들과 호환될 수 있는 RAID 제어기를 실현한다. 이는 표준 제어기 및 부착된 드라이브를 에뮬레이트함으로써
이러한 호환성을 달성한다. 예를 들어, 소정의 시스템은 RAID 1에서 한 쌍의 드라이브들을 필요로 하거나, 또는 신뢰
등록특허 10-0441189
- 4 -
성을 위해 '미러링' 구성을 필요로 할 수도 있다. 본 발명에서 설명된 제어기에 접속되었을 때, BIOS는 단일의 매우 신
뢰성있는 드라이브가 될 것이다. 또한, 동일한 시스템이 RAID 3 또는 RAID 5 구성 중 어느 하나에 따라 구성된 3개의
드라이브들의 어레이를 필요로 할 수도 있다. 이는 높은 신뢰성을 가진 3개의 드라이브들 중 임의의 한 드라이브의 2
배의 전송 레이트를 제공한다. 또한, 본 발명에서, 이 3개의 드라이브들의 어레이는 3개의 드라이브들 중 임의의 한
드라이브의 2배의 용량을 갖고, 높은 신뢰성을 갖는 2배의 전송 레이트를 나타내는 단일 드라이브로서 BIOS에 나타
날 것이다. 어떤 경우에, RAID는 BIOS에서 현존하는 드라이브들에 대해 투명하다.
본 발명의 제어기는 표준 2-채널 IDE 제어기를 에뮬레이트한다. 표준 제어기와 마찬가지로, 이는 논리적으로 PCI 버
스에 접속되어 있다. 이는 물리적으로 마더보드상에, 바람직하게는 마더보드 칩셋내에 통합되어 있을 수도 있거나, 또
는, PCI 슬롯의 플러그-인 카드 상에 배치될 수도 있다. 이것은 표준 제어기에 부착될 수 있는 4개의 디바이스들 모두
를 에뮬레이트할 수도 있다. 이들 논리 디바이스들 각각은 제어기에 부착된 물리적 디바이스들의 어레이에 가능한 인
터페이스를 제공한다. 본 실시예가 물리적 디바이스들의 부착을 위해 ATA 포트들을 제공하지만, 다른 형태의 인터페
이스들 또는 인터페이스들의 조합들이 사용될 수도 있다.
본 발명의 부가적인 목적들 및 장점들은 첨부 도면을 참조로 설명되는 이하의 바람직한 실시예들에 대한 상세한 설명
으로부터 명백해질 것이다.
도면의 간단한 설명
도 1은 물리적 및 소프트웨어/레지스터 뷰들을 도시하는 종래의 ATA 이중 채널 제어기 응용의 단순화된 블록도.
도 2a, 도 2b는 본 발명에 따른 ATA 포트 에뮬레이션에 대한 RAID 제어기의 단순화된 블록도.
도 3은 ATA 포트 에뮬레이션에 대한 RAID 제어기의 바람직한 상업적 실시예의 하이레벨 블록도.
도 4는 도 3의 제어기의 ATA 레지스터 파일의 일 구현예를 보다 상세히 도시하는 도면.
실시예
도 1의 상단은 시스템 버스(12)와 저장 디바이스들(14) 사이에 인터페이스를 제공하는 퍼스널 컴퓨터의 ATA 제어기
(10)의 통상적인 종래 기술의 응용을 도시하고 있다. 시스템 버스(12)는 PCI 버스이다. 논리적으로는 PCI 버스에 부
착되지만, ATA 제어기는 일반적으로 마더보드 칩셋내에 통합된다. 주어진 응용에서, 부가 또는 대용 제어기가 마더
보드(도시되지 않음)상의 PCI 버스 슬롯들 중 하나의 슬롯에 플러그식으로 접속될 수도 있다. PCI 버스는 고유 어드
레스들이 제어기들 각각에 할당되는 구성 메카니즘을 제공한다. 통상적인 제어기(10)는 1차 및 2차 IDE 커넥터들로
서 식별되는 한쌍의 커넥터들(16, 18)에서 종결되는 2개의 채널들을 제공한다. 채널들 각각은 커넥터 및 케이블을 공
유하는 한쌍의 저장 디바이스들을 지원한다. 예를 들어, 도 1에서, 2차 채널 케이블(19)은 마스터 저장 디바이스(20)
와 슬레이브 저장 디바이스(22)에 접속된다. 다른 드라이브들의 쌍은 유사하게 1차 채널 케이블(24)에 접속된다. 따
라서, 2-채널 제어기(10)는 도 1에 도시된 바와 같이 4개의 디바이스들 모두를 지원한다.
도 1의 하단은 PCI 버스로부터 볼 수 있는 바와 같이 IDE 제어기와 드라이브들의 프로그래밍 인터페이스를 도시하고
있다. 각 블록들에 대한 물리적 어드레스는, 이 기술 분야에서 널리 공지되어 있고 상기 언급한 인텔 PCI IDE 제어기
명세 문헌에 설명되어 있는 바와 같이 제어기의 PCI 버스 구성 공간을 통해 할당된다. 다른 상술된 인텔 문헌인 버스
마스터 IDE 제어기를 위한 프로그래밍 인터페이스에서는 버스 마스터 IDE 제어기를 위한 프로그래밍 인터페이스를
설명하고 있다. 이 메카니즘의 표준화에 앞서, 저장 디바이스 데이터는 통상적으로, 데이터 전송을 위해 필요한 로드
들(loads)과 스토어들(stores)이 시스템 프로세서에 의해 실행되는 프로그래밍된 I/O를 통해 전달된다. 프로그래밍된
I/O 메카니즘이 여전히 지원되지만, 버스 마스터 인터페이스는 ATA 제어기가 시스템 메모리의 직접 액세스, 즉, DM
A를 통해 데이터를 전송할 수 있도록 한다. 버스 마스터 IDE 제어기 문헌은 한쌍의 버스 마스터 제어기들을 지원하는
레지스터의 16바이트 블록을 정의하며, 상기 버스 마스터 제어기들 중 하나는 1차 ATA 채널을 위한 것이고, 하나는
2차 ATA 채널을 위한 것이다. 이 레지스터 블록은 물리적으로 제어기의 일부이다. 이것은 각 채널들과 하나씩 관련
되는 두 부분들(30, 32)로 분할되어 있는 것이 도시되어 있다.
ATA 명세는 저장 디바이스들에 대한 프로그래밍 인터페이스를 정의한다. 이 인터페이스는 2개의 레지스터 블록들,
즉, 명령 블록 및 제어 블록으로 구성된다. 명령 블록은 바이트-폭(byte-wide) 레지스터들의 8-바이트 블록이다. 제
어 블록은 바이트-폭 레지스터들의 4-바이트 블록이다. 이들 레지스터들을 구현하기 위한 모든 세부 사항들은 ATA
명세에 공개되어 있다.
도 1의 우측은 4 세트의 명령 및 제어 레지스터 블록들을 도시하고 있으며, 하나의 세트가 4개의 부착된 저장 디바이
스들 각각에 대응한다. 예를 들어, 한 세트의 레지스터 블록들(36)은 명령 블록(38) 및 대응하는 제어 블록(40)으로
구성된다. 이들 레지스터들은 물리적으로는 도 1의 상단에 도시된 대응하는 저장 디바이스들의 일부이다. 따라서, 레
지스터 세트(36)(1차 채널)는 마스터 저장 디바이스(25)에 위치된다. 소정의 저장 디바이스가 부착되어 있지 않은 경
우에, 그 명령 및 제어 레지스터 블록들은 프로그래밍 인터페이스에 나타나지 않을 것이다.
또한, ATA 명세는 저장 디바이스들에 의해 지원되는 프로토콜들을 정의하고 있다. 일반적으로, 액세스 명령 및 모든
관련 파라미터들은 명령 블록의 레지스터들에 로딩된다. 그후, 저장 디바이스는 명령을 실행한다. 디바이스 기록을 위
해, 먼저 기록 데이터를 요청한다. 프로그래밍된 I/O 동작을 위해, 호스트 프로세서는 시스템 메모리로부터 데이터를
판독하여, 버퍼 내의 16비트 윈도우로서 명령 블록의 일부를 사용하여 디바이스(도시되지 않음) 내의 버퍼에 기록한
다. 버스 마스터 DMA 동작을 위해서, ATA 제어기는 그 채널에 대한 버스 마스터 제어기 레지스터 블록의 구성에 기
초하여 시스템 메모리로부터 직접적으로 데이터를 액세스한다. 그후, 저장 디바이스가 매체와 그 로컬 버퍼 사이에서
등록특허 10-0441189
- 5 -
데이터를 전송하는 저장 매체를 액세스한다. 매체 판독을 위해서, 그후, 로컬 버퍼내의 데이터가 상술된 바와 같이 버
스 마스터 DMA 또는 프로그래밍된 I/O 중 어느 하나를 사용하여 시스템 메모리로 전송된다. 마지막으로, 저장 디바
이스는 상태 레지스터의 폴링을 통해서 또는 인터럽트에 의해 호스트 시스템에 ATA 제어기를 통해 완료를 알린다.
전원이 들어왔을 때, 퍼스널 컴퓨터들은 비휘발성 메모리에서 마더보드상에 물리적으로 저장되어 있는 코드를 실행
한다. 이 기본 입출력 시스템 또는 BIOS 코드는 ATA 제어기에 부착된 ATA 저장 디바이스로부터 퍼스널 컴퓨터의
운영체제를 로딩하며, 로우레벨 I/O 시스템 드라이버들을 이와 같은 저장 디바이스들에 제공한다.
본 발명은 도 1에 도시되고 상술된 ATA 제어기를 에뮬레이트하며, 프로그래밍 레벨에서 이와 완전히 호환된다. 도 2
를 참조하면, 도 2a는 본 발명에 따른 제어기의 블록도이며, 이는 예를 들어, RAID 제어기로서 구성될 수 있다. 제어
기 블록(50)의 좌측은 표준 이중 채널 ATA 제어기 대신 PCI 버스에 부착되며, 하나 내지 4개의 부착된 ATA 저장 디
바이스들을 에뮬레이트한다. 이하 보다 상세히 설명될 ATA 저장 디바이스들의 이러한 에뮬레이션은 물리적 디바이
스 인터페이스들로부터 제어기의 호스트 인터페이스를 분리시켜, 디바이스 인터페이스들의 수 및 유형에 상당히 자
유로울 수 있도록 한다. 예를 들어, 본 발명의 응용은 X SCSI 포트들 및/또는 Y ATA 포트들을 구현할 수도 있으며,
여기서, X 및 Y는 호스트 시스템에 나타나는 4개의 논리적 드라이브들에 결코 제한되지 않는다. 도 2는 0에서 N-1까
지 번호가 매겨진 N 1 ATA 포트들을 구현하는 예이다.
도 2b는 본 발명의 프로그래밍 인터페이스를 도시하고 있다. 호스트 인터페이스(56)는 표준 ATA 제어기의 PCI 버스
로부터 볼 수 있는 모든 레지스터 블록들, 즉, 이중 채널 버스 마스터 제어기 블록(58, 60) 및 네 세트의 명령 및 제어
레지스터 블록들(62, 64, 66, 68)을 구현한다. 호스트 인터페이스 블록(56)은 ATA 제어기 및 ATA 저장 디바이스들
의 레지스터들을 ATA 명세 프로토콜들을 지원하는데 필요한 레벨로 에뮬레이트한다.
도 2b의 블록(70)은 제어기 블록(50)의 주 콤포넌트들을 도시한다. 호스트 인터페이스 블록(56)에 부가하여, 제어기(
70)는 후술될 바와 같이, RAM 버퍼 캐시(72), DMA 채널(74) 및 프로세서(80)를 포함한다. 제어기 블록(70)은, 예를
들어, 인터페이스들(82, 84, 86)과 같은 복수의 ATA 포트 인터페이스들을 더 포함한다. 각 ATA 포트 인터페이스는
디스크 드라이브 같은 IDE 형 저장 디바이스에 대한 표준 인터페이스 접속을 제공한다. 상술된 바와 같이, 각 저장 디
바이스는 명령 및 제어 레지스터 블록을 탑재하고 있다. 이들은, 예를 들어, 명령 레지스터 블록(90) 및 제어 블록(92)
으로서 도시되어 있으며, 이들 모두는 단일 디바이스, 즉, 마스터 드라이브와 관련되며, 상기 마스터 드라이브는 ATA
포트 인터페이스(82), 표준 커넥터 케이블(96)에 접속된다. 제어기 블록(70)은 호스트 PCI 버스(12)에 표준 이중 채
널 제어기 인터페이스(56)를 여전히 제공하면서 임의의 원하는 수의 ATA 포트들을 포함하도록 구성될 수 있다.
본 발명의 양호한 실시예의 세부적인 블록도가 도 3에 도시되어 있다. 이 시스템은 0.18미크론 COMS 프로세스의 A
SIC(Application Specific Integrated Circuit)로서 구현된다. 이 디바이스는 논리적으로 4개의 모듈들로 분할되어 있
으며, 이들 각각은 상기 디바이스의 외부에 대한 관련 포트를 가지고 있다.
호스트 인터페이스(100)는 인듐-실리콘의 PCI 코어(104) 주변에 설치된다. CS6464AF는 33㎒ 또는 66㎒ PCI 버스
클록 레이트들에서 32비트 및 64비트 PCI 버스들 모두를 지원하는 소프트-코어(특정 응용을 위해 합성된 베릴로그
소스(Verilog source))이다. 코어는 마스터 및 타겟 동작들 모두를 지원한다. 타겟 부분(106)은 상술된 ATA 호환성
레지스터 파일들에 대한 액세스를 제공한다. 마스터 기능(108)은 ATA 제어기의 버스 마스터 DMA 부분을 에뮬레이
트하기 위해 사용된다. PCI 코어는 이중 포트형 ATA 제어기의 구성 공간(110)을 에뮬레이트하는 구성 공간을 포함
한다.
DRAM 인터페이스 블록(120)은 외부적으로 접속된 SDRAM(122)을 지원한다. 64 비트 폭, 100㎒ 단일 데이터 레이
트 포트(124)는 초당 800 메가바이트의 피크 전송 레이트를 지원한다. 로컬적으로, DRAM 인터페이스는 호스트 인
터페이스(100)를 통해 PCI 버스로 또는 그로부터, 드라이브 인터페이스(130)를 통해 디스크 드라이브들로 또는 그로
부터의 전송에 의해, 및 프로세서 블록(150)의 로컬 프로세서에 의한 액세스에 의해 공유된다.
드라이브 인터페이스 블록(130)은 5개의 ATA 포트들(예를 들어, 134)을 제공하며, 이들 각각은 마스터 및 슬레이브
드라이브를 지원할 수 있다. 각 포트는 프로그래밍된 입출력(PIO)을 초당 16 메가바이트에 달하는 전송 레이트로 지
원하며, 울트라 DMA는 초당 100 메가바이트에 달하는 전송 레이트로 전송한다.
LSI 로직으로부터 EZ4102 TinyRISC 코어(160) 둘레에 프로세서 블록이 설치된다. 이 프로세서는 MIPS 프로세서의
변형이다. 전원 공급시, 프로세서는 확장 버스 포트(166)를 통해 액세스되는 외부 플래시 메모리로부터 코드를 로딩
한다. 이 코드는 프로세서 블록내의 SRAM 블록(170)으로 전송된다. 프로세서(160)는 다른 모듈들 각각을 구성하고,
이들 모듈들을 통해서, PCI 버스, SDRAM 또는 ATA 드라이브들을 액세스할 수도 있다. 일반적으로, 데이터를 처리
하기 위한 프로세서를 필요로 하지 않음으로써 시스템 전송 레이트들이 향상된다. 프로세서는 이들 블록들에서 DMA
엔진들(136, 146)을 그들 사이의 FIFO(148)를 로딩 또는 언로딩 하도록 구성함으로써 DSRAM과 드라이브 사이의
데이터 이동을 조화시킨다. 동일한 방식으로, DRAM 인터페이스와 호스트 인터페이스의 DMA 엔진들(172, 102)을
이들 블록들 사이에의 FIFO(174)를 로딩 또는 언로딩하도록 구성함으로써 PCI 버스 타겟들과 SDRAM 사이의 전송
들을 조화시킨다.
도 4는 ATA 레지스터 파일 구현의 세부 사항들을 도시하고 있다. 레지스터들은 모두 이중 포트형이며, 호스트 시스
템 또는 로컬 프로세서(160)에 의해 PCI 버스로부터 액세스될 수도 있다. PCI 버스로부터 알 수 있는 바와 같이, 각 A
TA 채널은 그와 관련된 2개의 레지스터들의 블록들을 갖는다. 명령 블록(208)은 바이트 폭 레지스터들의 8-바이트
범위이다. 제어 블록(210)은 단일 위치만이 사용되는 4-바이트 범위이다. 상술된 바와 같이, 단일 ATA 포트는 공통
케이블에 부착된 한 쌍의 디바이스들을 액세스하는데 사용될 수도 있다. 각 디바이스는 그 소유의 명령 및 제어 레지
스터 블록들을 갖는다. 디바이스들은 물리적으로는, 하나를 마스터로서 지정하고, 다른 하나를 슬레이브로서 지정하
기 위해 점퍼들을 구비하도록 구성된다. 명령 블록의 어드레스 오프셋 6에서 디바이스 헤드 레지스터에 데이터의 바
이트를 기록함으로써 특정 디바이스가 액세스를 위해 선택된다. 비트 4가 선택되는 경우에, 슬레이브 디바이스가 선
등록특허 10-0441189
- 6 -
택되고 마스터는 후속 동작들을 위해 선택 해제된다. 동일 레지스터가 비트 4가 클리어된 것으로 기록되는 경우에, 마
스터 디바이스가 선택된 상태가 되고 슬레이브는 선택 해제될 것이다. 본 발명에서 이 동작을 에뮬레이트하기 위해서,
마스터 및 슬레이브 레지스터 세트들 모두가 구현된다. 부가적으로, 단일 비트 슬레이브 레지스터(230)가 제공되어
가장 최근의 비트 4 기록을 디바이스 헤드 레지스터에 기록한다. 슬레이브 레지스터는 적절한 레지스터 블록들의 쌍
이 가장 최근의 디바이스 선택에 기초하여 액세스되도록 PCI 버스로부터의 판독 멀티플렉싱과 기록 어드레스 디코딩
을 제어한다.
전력 공급시 또는 후속하는 리셋시, ATA 디바이스들은 초기에 비지(Busy) 상태가 된다. 비지 상태는 명령 블록의 어
드레스 오프셋 7에서 상태 레지스터를 판독함으로써, 또는 제어 블록의 대용 상태 레지스터 블록을 판독함으로써 검
출될 수도 있다. 디바이스가 비지 상태인 동안, 다른 레지스터들 중 어떠한 것도 액세스되지 않을 수도 있다. 본 발명
에서 이 동작을 에뮬레이트 하기 위해서, 단일 비트 비지 레지스터(232)가 제공된다. 이 레지스터는 PCI 버스로부터
의 리셋에 의해, 제어 블 록의 디바이스 제어 레지스터의 소프트 리셋 비트에 대한 기록에 의해 설정되거나, 또는 명령
레지스터가 명령 레지스터 블록의 어드레스 오프셋 7에 기록될 때 설정된다. 로컬 프로세서는 비지 레지스터를 클리
어할 수도 있다.
각 ATA 디바이스는, 인터럽트들이 상기 디바이스 내에서 인에이블되었을 경우, 호스트 시스템에 인터럽트 요청을 요
구할 수 있다. 이 동작을 에뮬레이트 하기 위해서, 단일 비트 인터럽트 요청(234) 및 인터럽트 인에이블(236) 레지스
터들이 마스터 및 슬레이브 디바이스들 모두에 제공된다. 인터럽트 인에이블들은 각 디바이스의 디바이스 제어 레지
스터를 통해 제어된다. 각 디바이스는 데이터를 전송하기 위해 또는 완료 상태를 반환하기 위해 호스트 시스템에 인
터럽트 요청을 요구할 수도 있다. 본 발명에서, 인터럽트 요청은 로컬 프로세서에 의해 설정되거나 클리어될 수도 있
다. 또한, 인터럽트 요청은 ATA 명세의 프로토콜들에 기술된 바와 같이 디바이스의 상태 레지스터(그러나, 대용 상태
레지스터는 아님)를 판독함으로써 클리어된다. 마스터 및 슬레이브 디바이스들에 대한 인터럽트 요청 및 인터럽트 인
에이블 상태는 호스트가 디바이스 선택을 변경할 때 적절한 동작이 유지되도록 독립적으로 유지된다.
마스터 및 슬레이브 디바이스들에 대한 명령 및 제어 레지스터 파일들과, 슬레이브, 비지 및 인터럽트 '사이드 이펙트
들(side effects)'은 모두 2차 채널을 위해 복제된다. 4개의 디바이스들 모두를 위한 명령 및 제어 레지스터 파일 블록
들은 모두 로컬 프로세서의 어드레스 공간에 선형적으로 맵핑된다.
공유된 이중 채널 버스 마스터 제어 블록(250)은 PCI 버스로부터 또는 로컬 프로세서에 의해서 액세스될 수도 있다.
ATA 프로토콜에 따라서, 디바이스가 선택되며, 소정의 명령을 위해 필요한 모든 파라미터들이 명령 레지스터 파일
내에 로딩되고, 이어서, 명령 자체가 오프셋 7에서 레지스터 내에 로딩된다. 상술된 바와 같이, 이것은 채널 비지를 설
정한다. 비지의 상승 에지는 로컬 프로세서에 인터럽트를 유발하며, 이 로컬 프로세서는 명령과 그 파라미터들을 해
석함으로써 응답한다. 대부분의 명령들은 부착된 물리적 디바이스 어레이의 액세스들로 재맵핑된다. 이들 액세스들은
RAID 레벨들 0, 1, 3 및 5를 포함하지만, 이에 제한되지는 않는 공통 RAID 프로토콜들 중 임의의 프로토콜을 구현하
는데 사용될 수 있다. 로컬 프로세서는 요청된 것 보다 많은 데이터를 판독하는 옵션을 갖는다. 부가적인 데이터는 후
속하는 판독들의 선조치로서 SDRAM 캐시된다. 로컬 프로세서는 명령에 의해 요청된 바에 따라 DMA 또는 프로그래
밍된 IO 중 어느 하나를 사용하여 호스트 시스템과 SDRAM 사이에서 데이터를 전송하도록 배치될 수도 있다.
간략하게 요약하면, 본 발명은 호스트 시스템 버스에 제어기를 인터페이스하기 위한 호스트 인터페이스를 제공하는
RAID 저장 디바이스 제어기를 포함한다. 호스트 인터페이스는, 예를 들어, IDE 디스크 드라이브들과 같은 부착된 저
장 디바이스들로부터 격리되어 있으며, 따라서, 실제 부착된 드라이브들은 수 또는 인터페이스 프로토콜에 제한되지
않는다. 다양한 디바이스 포트들이 구현될 수 있으며, 다양한 RAID 전략들, 예를 들어, 레벨 3 및 레벨 5가 사용될 수
있다. 모든 경우에, 호스트 인터페이스는 호스트에 표준의 균일 인터페이스, 즉, ATA 인터페이스를 제공하며, 바람직
하게는 이중 채널 ATA 인터페이스를 제공한다. 호스트 인터페이스는 ATA 단일 또는 이중 채널 인터페이스를 에뮬
레이트하고, 제어기에 물리적으로 접속된 실제 디바이스들의 수에 무관하게 채널당 하나 또는 2개의 부착된 IDE 디
바이스들을 에뮬레이트한다. 따라서, PCI 호스트 머신의 표준 BIOS를 변화시키지 않고, 예를 들어, 5개 또는 7개의 I
DE 드라이브들이 RAID 레벨 5 프로토콜로 배치될 수 있다. 따라서, RAID 제어기는 표준 이중 채널 ATA 제어기 보
드에 대하여 투명하다.
본 기술 분야의 숙련자들은 본 발명의 배경 원리로부터 벗어나지 않고 상술된 본 발명의 실시예의 세부 사항들에 대
한 다양한 변화를 이룰 수 있다는 것은 명백하다. 따라서, 본 발명의 범위는 하기의 청구범위에 의해서만 결정되어야
한다.
(57) 청구의 범위
청구항 1.
저장 디바이스 제어기에 있어서:
호스트 시스템 버스에 상기 제어기를 인터페이스하고, 표준 IDE 채널을 에뮬레이트하며, 또한, 상기 IDE 채널에 접속
된 것과 같이 IDE 디바이스를 에뮬레이트하기 위한 호스트 인터페이스; 및
상기 저장 디바이스 제어기를 물리적 저장 디바이스에 접속하기 위한 적어도 하나의 물리적 인터페이스를 포함하는,
저장 디바이스 제어기.
청구항 2.
제 1 항에 있어서,
적어도 하나의 상기 물리적 인터페이스는 상기 제어기에 ATA-호환 저장 디바이스를 접속하기 위한 ATA 포트를 구
현하는, 저장 디바이스 제어기.
등록특허 10-0441189
- 7 -
청구항 3.
제 1 항에 있어서,
상기 호스트 인터페이스는 적어도 1차 채널과 2차 채널을 에뮬레이트하는, 저장 디바이스 제어기.
청구항 4.
제 3 항에 있어서,
상기 호스트 인터페이스는 상기 1차 및 2차 채널들 각각에 부착된 단일 IDE 디바이스를 에뮬레이트하는, 저장 디바
이스 제어기.
청구항 5.
제 3 항에 있어서,
상기 호스트 인터페이스는 마스터 IDE 저장 디바이스와 슬레이브 IDE 저장 디바이스 모두를 에뮬레이트하며, 상기
마스터 및 슬레이브 IDE 저장 디바이스들은 상기 1차 및 2차 채널들 중 하나의 채널에 부착되는, 저장 디바이스 제어
기.
청구항 6.
제 3 항에 있어서,
표준 이중 포트형 IDE 제어기의 버스 마스터 DMA 제어기를 에뮬레이트하는 수단을 더 포함하는, 저장 디바이스 제
어기.
청구항 7.
제 1 항에 있어서,
상기 호스트 인터페이스는 상기 IDE 채널에 부착된 단일 IDE 디바이스를 에뮬레이트하는, 저장 디바이스 제어기.
청구항 8.
제 1 항에 있어서,
상기 호스트 인터페이스는 상기 IDE 채널에 부착된 마스터 IDE 저장 디바이스와 슬레이브 IDE 저장 디바이스 모두를
에뮬레이트하는, 저장 디바이스 제어기.
청구항 9.
제 1 항에 있어서,
표준 이중 포트형 IDE 제어기의 버스 마스터 DMA 제어기를 에뮬레이트하는 수단을 더 포함하는, 저장 디바이스 제
어기.
청구항 10.
RAID 저장 디바이스 제어기에 있어서:
호스트 시스템 버스에 상기 제어기를 인터페이스하고, 적어도 하나의 ATA 제어기 채널을 에뮬레이트 하기 위한 호스
트 인터페이스;
상기 저장 디바이스 제어기를 복수의 저장 디바이스들에 접속하기 위한 적어도 2개의 물리적 인터페이스들; 및
물리적 저장 디바이스 액세스 동작들을 제어하기 위한 상기 제어기에 탑재된 로컬 프로세서를 포함하고,
상기 호스트 인터페이스는, IDE-컴플라이언트 명령 및 제어 레지스터 블록들을 구현함으로써, 상기 에뮬레이트된 A
TA 제어기 채널에 접속된 것 처럼 적어도 하나의 IDE 디바이스를 더 에뮬레이트하는, RAID 저장 디바이스 제어기.
청구항 11.
제 10 항에 있어서,
표준 이중 포트형 IDE 제어기의 버스 마스터 DMA 제어기를 에뮬레이트하는 수단을 더 포함하는, RAID 저장 디바이
스 제어기.
청구항 12.
제 10 항에 있어서,
상기 호스트 시스템 버스와 상기 접속된 저장 디바이스들간의 데이터 전송들을 버퍼링하기 위한 버퍼 메모리; 및
상기 호스트 인터페이스와 상기 버퍼 메모리간에 데이터를 전송하기 위해 배열된 DMA 엔진을 더 포함하는, RAID 저
장 디바이스 제어기.
청구항 13.
제 12 항에 있어서,
상기 버퍼 메모리와 상기 포트 인터페이스들간에 데이터를 전송하기 위해 배열된 DMA 엔진을 포함하는, RAID 저장
디바이스 제어기.
청구항 14.
제 10 항에 있어서,
상기 호스트 인터페이스는 1차 ATA 채널과 2차 ATA 채널 모두를 에뮬레이트하는, RAID 저장 디바이스 제어기.
청구항 15.
제 14 항에 있어서,
상기 호스트 인터페이스는 상기 1차 및 2차 채널들 각각에 부착된 단일 IDE 디바이스를 에뮬레이트하는, RAID 저장
디바이스 제어기.
청구항 16.
제 14 항에 있어서,
등록특허 10-0441189
- 8 -
상기 호스트 인터페이스는 상기 1차 및 2차 채널들 중 적어도 하나의 채널에 부착된 마스터 IDE 저장 디바이스와 슬
레이브 IDE 저장 디바이스 모두를 에뮬레이트하는, RAID 저장 디바이스 제어기.
청구항 17.
제 10 항에 있어서,
상기 호스트 인터페이스는 상기 IDE 채널에 접속된 마스터 IDE 디바이스와 슬레이브 IDE 디바이스 모두를 에뮬레이
트하는, RAID 저장 디바이스 제어기.
청구항 18.
제 10 항에 있어서,
상기 호스트 인터페이스는 상기 IDE 채널에 부착된 단일 IDE 디바이스를 에뮬레이트하는, RAID 저장 디바이스 제어
기.
청구항 19.
제 10 항에 있어서,
상기 호스트 인터페이스는 상기 IDE 채널에 부착된 마스터 IDE 저장 디바이스와 슬레이브 IDE 저장 디바이스 모두를
에뮬레이트하는, RAID 저장 디바이스 제어기.
청구항 20.
현존하는 호스트 BIOS 소프트웨어를 수정하지 않고 PCI 버스 호스트에 RAID 저장 디바이스 제어기를 인터페이스하
는 방법에 있어서:
상기 제어기에서, 상기 호스트에 인터페이스된 ATA 제어기를 에뮬레이트하는 단계;
상기 제어기에서, 상기 ATA 제어기에 연결된 것 처럼 IDE 저장 디바이스를 더 에뮬레이트하는 단계;
상기 제어기에 물리적 저장 디바이스를 접속하기 위한 적어도 2개의 물리적 포트 인터페이스들을 제공하는 단계; 및
상기 저장 디바이스 제어기가, 상기 제어기의 물리적 포트 인터페이스들에 실제로 접속된 물리적 저장 디바이스들의
실제 수 및 인터페이스 유형들에 무관하게, ATA 인터페이스를 통해 접속된 IDE 디바이스로서 상기 호스트에 나타나
도록, 상기 물리적 저장 디바이스로부터 상기 제어기의 호스트 인터페이스를 분리시키는 단계를 포함하는, PCI 버스
호스트에 RAID 저장 디바이스 제어기를 인터페이스하는 방법.
도면
등록특허 10-0441189
- 9 -
도면1
등록특허 10-0441189
- 10 -
도면2a
등록특허 10-0441189
- 11 -
도면2b
등록특허 10-0441189
- 12 -
도면3
등록특허 10-0441189
- 13 -
도면4