PCI-X
1. 개요
PCI-X는 1998년 IBM, HP, 컴팩이 개발한 PCI 로컬 버스에 대한 서버 확장이자 오픈 표준이다. 기가비트 이더넷, 파이버 채널, Ultra3 SCSI 카드 등 고대역폭 장치의 성능 향상과 프로세서 간의 컴퓨터 클러스터 연결을 위해 개발되었다. PCI-X는 PCI의 문제점을 개선하고, 최대 133MHz 클럭 속도를 지원하여 최대 1.06GB/s의 데이터 전송 속도를 제공하며, PCI와 하위 호환된다. PCI-X 2.0은 2003년에 승인되었으며, PCI Express의 등장으로 인해 점차 대체되었다.
-
개방형 표준 -
오픈 핸드셋 얼라이언스
오픈 핸드셋 얼라이언스(OHA)는 구글을 중심으로 2007년 11월에 결성된 컨소시엄으로, 34개의 기업이 참여하여 안드로이드 모바일 플랫폼을 개발 및 발전시키고 개방형 표준 설계를 통해 혁신적인 모바일 기기 및 서비스 개발을 목표로 한다. -
개방형 표준 -
디지털 비디오 방송
-
메인보드 확장 슬롯 -
EISA
EISA는 1988년 컴팩을 중심으로 한 PC 제조업체 컨소시엄이 IBM의 MCA에 대항하기 위해 개발한 32비트 PC 버스 표준으로, ISA 버스와의 호환성을 유지하면서 고급 기능을 제공하고 특허 및 라이선스 정책에서 자유로워 업계의 지지를 얻으며 PC 버스 기술 발전에 기여했다. -
메인보드 확장 슬롯 -
VESA 로컬 버스
2. 역사
IBM, HP, 컴팩은 1998년에 PCI 로컬 버스의 확장 규격으로 PCI-X를 공동 개발하고 승인받았다. 이는 서버 확장에 대한 요구에 따라 기가비트 이더넷, 파이버 채널, 울트라3 SCSI 카드와 같은 고대역폭 장치의 성능을 높이고, 프로세서들을 컴퓨터 클러스터로 상호 연결하기 위한 것이었다.
PCI-X는 기존 PCI 버스 클럭(33MHz 또는 66MHz)보다 높은 133MHz 클럭을 사용하여 최대 데이터 전송 속도를 일반적인 PCI(32비트 33MHz)의 133MB/s보다 8배 빠른 반이중 1.06GB/s까지 높였다. 3.3V 동작을 지원하는 PCI 카드와 PCI-X 슬롯은 서로 호환되었지만, 이 경우 버스 클럭은 33MHz 또는 66MHz로 제한되었다.
하지만 PCI-X는 기존 PCI의 호환성을 계승했기 때문에 버스 신호선의 타이밍 문제는 여전히 남아 있었다. 클럭 상승과 버스의 DDR화가 진행되면서 64비트 신호선 타이밍 조정은 매우 까다로워졌다. 결국, 후속 규격인 PCI Express가 등장하면서 서버 및 워크스테이션용 카드는 점차 PCI Express로 대체되었다.
2.1. 배경 및 개발 동기
IBM, HP, 컴팩이 1998년에 PCI 로컬 버스를 확장하여 서버의 성능을 높이고자 PCI-X를 공동 개발하고 승인받았다. 이는 기가비트 이더넷, 파이버 채널, 울트라3 SCSI 카드와 같은 고대역폭 장치의 성능을 향상시키고, 프로세서들을 컴퓨터 클러스터로 상호 연결하기 위함이었다.
기존 PCI 버스는 다음과 같은 기술적 한계점들을 가지고 있었다.
* 즉시 완료할 수 없는 트랜잭션은 대상 또는 개시자가 재시도 사이클을 발행하여 연기되어, 다른 장치가 버스를 사용할 수 없었다.
* PCI는 분할 응답 메커니즘이 없어, 읽기 데이터가 준비될 때까지 버스는 대상이 재시도 사이클을 발행하며 점유되었다.
* PCI-X는 마스터가 요청을 발행한 후 버스에서 연결을 끊어 다른 에이전트가 버스를 사용하게 했다.
* 분할 응답은 대상이 요청된 데이터를 모두 반환할 준비가 되었을 때만 생성되어 버스 효율성을 증가시켰다.
* PCI는 인터럽트 라인 부족(4개, INT A/B/C/D)으로 여러 기능이 인터럽트 라인을 공유해야 해서 호스트 측 인터럽트 처리가 복잡했다.
* PCI-X는 메시지 시그널 인터럽트를 추가하여 호스트 메모리에 쓰기를 사용하여 인터럽트 처리했다.
* MSI 모드 인터럽트는 전용이므로 공유되지 않았다.
* PCI-X 시스템은 MSI 모드와 레거시 INTx 인터럽트 동시 사용 가능(단, 동일 기능에서는 불가).
* 등록된 I/O가 없어 PCI는 최대 66 MHz 주파수로 제한되었다.
* PCI-X I/O는 PLL을 사용하여 PCI 클럭에 등록, 설정 시간 개선으로 주파수를 133 MHz로 향상시켰다.
기가비트 이더넷 카드, SCSI 컨트롤러(파이버 채널 및 Ultra320), 클러스터 상호 연결과 같은 장치들은 PCI 버스의 133 MB/s 대역폭을 포화시킬 수 있었다. 이를 해결하기 위해 버스 속도와 너비를 증가시킨 확장(64비트, 66MHz)이 PCI 2.x 표준의 선택적 부분으로 지원되었지만, 장치 호환성 문제가 있었다.
개발자들은 64비트 및 66-MHz 확장을 기반으로 66-MHz 및 133-MHz 변형(최대 대역폭 각각 532 MB/s 및 1064 MB/s)을 설정하였다. 이 결과는 PCI 특수 관심 그룹에 PCI-X로 제출되었고, 이후 오픈 표준이 되었다. PCI SIG는 PCI-X에 대한 기술 지원, 교육 및 규정 준수 테스트를 제어한다. IBM, 인텔, Microelectronics 및 Mylex는 지원 칩셋을, 3Com 및 Adaptec은 호환 주변 장치를 개발할 예정이었다. Compaq는 PCI-X 개발 도구를 웹사이트에서 제공하여 업계 채택을 가속화했다.
2.2. PCI-X 1.0
IBM, HP, 컴팩이 1998년에 공동 개발하여 승인을 요청한 PCI-X는 기가비트 이더넷, 파이버 채널, 울트라3 SCSI 카드와 같은 고대역폭 장치의 성능을 향상시키고, 프로세서를 컴퓨터 클러스터로 상호 연결하기 위한 목적을 가지고 있었다. 초기에는 "64비트 지원 PCI"로 홍보되었으나, 이후 PCI-X 표준으로 자리 잡았다.
인텔은 PCI-X에 대해 제한적인 지지를 보였으며, 차세대 버스는 "근본적으로 새로운 아키텍처"가 되어야 한다고 강조했다. 가속 그래픽 포트 개발을 주도한 핵심 인텔 상호 연결 설계자와 PCI SIG 간의 불화로 인해 인텔은 초기 PCI-X 개발에서 철수했다. 그러나 PCI-X 인터페이스는 Power Macintosh G5 초기 모델에 채택되었다.
1998년에 Adaptec AHA-3950U2B 듀얼 Ultra2 Wide SCSI 컨트롤러와 같은 초기 PCI-X 제품이 출시되었다. PCI-X가 장착된 마더보드가 널리 사용되면서 PCI-X 브랜드가 표준으로 자리잡았다.
PCI SIG는 PCI-X 기술을 지원하고, 교육하며, 규정 준수 테스트를 수행했다. IBM, 인텔, Microelectronics, Mylex, 3Com, Adaptec 등의 기업들이 PCI-X 칩셋 및 주변 장치 개발에 참여했다.
2.3. PCI-X 2.0
2003년에 PCI SIG는 PCI-X 2.0을 승인하였다. PCI-X 2.0은 각각 2.15 GB/초, 4.3 GB/초 정도의 대역을 제공하는 266-MHz와 533-MHz 버전을 추가하였다. PCI-X 2.0은 시스템 신뢰성에 도움을 주고 오류 정정 부호를 버스에 추가하여 재전송을 방지하도록 설계된 부가적인 프로토콜 리비전을 만들어냈다. 또, 16비트 포트가 개발되어 PCI-X는 지원 한도에 거의 맞먹는 장치들에 쓰일 수도 있게 되었다. PCI 익스프레스와 비슷하게 PtP 기능이 추가되었으므로 버스 상의 장치들이 CPU나 버스 컨트롤러에 부하를 주지 않고도 서로 통신할 수 있다.
PCI-X 2.0은 이론적으로 다양한 이점과 PCI-X 및 PCI 장치 간의 하위 호환성을 제공했지만, 2008년을 기준으로 널리 수용되지는 않았다. 그 이유는 하드웨어 업체들이 PCI 익스프레스를 채택했기 때문이다.
IBM은 System i5 모델 515, 520 및 525에서 PCI-X 2.0 (266MHz) 지원을 제공했다. IBM은 이러한 슬롯을 10기가비트 이더넷 어댑터에 적합하다고 광고했다. HP는 일부 ProLiant 및 Integrity 서버에서 PCI-X 2.0을 제공했으며, 266MHz로 작동하는 듀얼 포트 4Gbit/s 파이버 채널 어댑터를 제공했다. AMD는 8132 하이퍼트랜스포트를 PCI-X 2.0 터널 칩을 통해 PCI-X 2.0 (266MHz)을 지원했다. ServerWorks는 PCI-X 2.0의 적극적인 지지자였다.
2003년, Dell은 PCI Express 솔루션의 더 빠른 채택을 위해 PCI-X 2.0을 건너뛰겠다고 발표했다. PC Magazine의 보도에 따르면, 인텔은 시스템 대기 시간 및 전력 소비 측면에서 PCI Express가 상당한 이점을 가지고 있다고 주장하며, 2004년 로드맵에서 PCI-X를 우선순위에서 제외하기 시작했다.
3. 기술적 특징
PCI-X는 PCI 버스의 성능을 향상시키기 위해 개발된 기술이다. PCI-X는 기존 PCI의 문제점이었던 재시도 사이클로 인한 버스 점유 문제를 해결하기 위해 분할 응답(split response) 방식을 도입했다. 즉, 마스터가 요청을 발행한 후 버스에서 연결을 끊고, 대상이 요청된 데이터를 준비했을 때만 분할 응답을 생성하여 버스 효율성을 높였다.
또한, PCI는 인터럽트 라인 부족 문제를 겪었는데, PCI-X는 메시지 시그널 인터럽트(MSI)를 추가하여 이를 해결했다. MSI는 호스트 메모리에 직접 쓰기를 수행하여 인터럽트를 발생시키므로, 별도의 인터럽트 라인이 필요 없고 공유되지 않아 호스트 측 인터럽트 처리가 간편해졌다. PCI-X 시스템은 MSI와 레거시 INTx 인터럽트를 동시에 사용할 수 있지만, 동일한 기능에서는 사용할 수 없다.
PCI-X는 등록된 I/O를 사용하여 PCI 클럭에 맞춰 I/O 지연을 제어하고, 설정 시간을 개선하여 주파수를 133MHz까지 높였다. 또한, 버스 속도와 너비를 확장하여 대역폭을 늘렸으며, PCI 특수 관심 그룹에 의해 오픈 표준으로 채택되었다.
PCI-X는 버스 클럭을 최대 133MHz까지 높여 일반 PCI(32비트 33MHz, 최대 133MB/s)보다 8배 빠른 반이중 1.06GB/s의 전송 속도를 제공한다. PCI-X 2.0은 클럭당 2~4회 데이터 전송을 지원하여 최대 반이중 4.24GB/s의 전송 속도를 달성했다.
PCI-X는 기존 PCI와의 호환성을 유지하면서도 성능을 크게 향상시켜 서버 및 워크스테이션 시장에서 널리 사용되었으나, PCI Express의 등장으로 점차 대체되었다.
3.1. 일반 PCI 대비 개선점
PCI는 최대 클럭 속도를 66MHz에서 133MHz로 두 배 늘려 컴퓨터 프로세서와 주변 장치 간에 교환되는 데이터 양을 늘렸다. 일반 PCI는 66MHz에서 최대 64비트를 지원하며(33MHz에서 32비트는 고급 시스템에서만 볼 수 있음), PCI-X에서 프로세서와 주변 장치 간의 이론상 최대 데이터 양은 1.06GB/s로, 표준 PCI의 133MB/s보다 훨씬 빠르다. 또한 PCI-X는 결함이 있는 카드를 재초기화하거나 오프라인 상태로 만드는 등 PCI의 오류 허용 범위를 개선했다.
2003년에 PCI SIG는 PCI-X 2.0을 발표했는데, 266MHz 및 533MHz 변형을 추가하여 각각 약 2,132MB/s 및 4,266MB/s의 처리량을 제공한다.
PCI-X는 버스상의 어떤 카드도 PCI-X를 지원하지 않으면 전체 버스가 PCI로 되돌아간다는 점에서 PCI와 하위 호환된다.
기존 PCI 대비 개선점은 다음과 같다:
* 버스 클럭 속도 향상: PCI 버스 클럭 속도가 66MHz에서 최대 133MHz로 증가했다. PCI-X 2.0에서는 266MHz 및 533MHz 변형이 추가되었다.
* 대역폭 증가: 클럭 속도 향상으로 인해 데이터 전송 속도(대역폭)가 크게 증가했다. PCI-X 1.0은 최대 1.06GB/s, PCI-X 2.0은 최대 4.266GB/s의 대역폭을 제공한다.
* 오류 허용 범위 개선: 결함이 있는 카드를 재초기화하거나 오프라인 상태로 전환하는 기능이 추가되어 시스템 안정성이 향상되었다.
* 프로토콜 변경:
* PCI 버스에 신호가 나타난 시점과 해당 신호에 대한 응답이 버스에서 발생하는 시점 사이의 최단 시간이 1 사이클에서 2 사이클로 늘어났다.
* IRDY# 및 TRDY# 신호를 기반으로 임의의 사이클에서 대기 상태를 삽입하는 기능이 삭제되었다. PCI-X는 128바이트 경계에서만 버스트를 중단할 수 있다.
* 시작자는 트랜잭션 종료 전에 두 사이클 동안 FRAME#을 비활성화해야 한다.
* 시작자는 대기 상태를 삽입할 수 없다. 대상은 가능하지만, 모든 데이터가 전송되기 전까지만 가능하며, 쓰기에 대한 대기 상태는 2 클럭 사이클의 배수로 제한된다.
* 버스트의 길이는 시작 전에 결정된다. FRAME# 및 STOP# 신호를 사용하여 임의의 사이클에서 중지할 수 없다.
* 감산 디코드 DEVSEL#은 "느린 DEVSEL#" 사이클 다음 사이클이 아닌 2 사이클 후에 발생한다.
* 주소 단계 이후(DEVSEL#로 응답하기 전에) 추가적인 1 사이클 "속성 단계"가 있으며, 이 단계에서 36비트의 추가 정보(AD 및 C/BE# 라인 사용)가 전송된다. 여기에는 16비트의 요청자 식별(PCI 버스, 장치 및 기능 번호), 12비트의 버스트 길이, 5비트의 태그(분할 트랜잭션 연결용) 및 3비트의 추가 상태가 포함된다.
대부분의 32비트 PCI 카드는 64비트 PCI-X 슬롯에서 제대로 작동하지만, 버스 속도는 가장 느린 카드의 클럭 주파수로 제한된다. 예를 들어, PCI 2.3 66MHz 카드가 133MHz를 지원하는 PCI-X 버스에 설치되면 전체 버스 백플레인은 66MHz로 제한된다. 이러한 제한을 극복하기 위해 많은 마더보드는 여러 PCI/PCI-X 버스를 가지고 있으며, 하나는 고속 PCI-X 주변 장치에 사용하고 다른 하나는 범용 주변 장치에 사용하도록 설계되었다.
많은 64비트 PCI-X 카드는 짧은 32비트 커넥터에 삽입될 경우 속도 저하가 있지만 32비트 모드로 작동하도록 설계되었다. 그러나 일부 64비트 PCI-X 카드는 표준 32비트 PCI 슬롯에서 작동하지 않는다.
PCI의 버스 클럭(33 MHz - 66 MHz)과 비교하여, PCI-X는 133 MHz로 최대 4배까지 클럭을 끌어올려 데이터 전송 속도를 높였다. 일반적인 PCI(32비트 33 MHz)의 최대 전송 속도가 133 MB/s인데 비해, PCI-X는 반이중 1.06 GB/s로 8배 더 빠른 속도를 제공한다. 2002년에 PCI-X 2.0 규격이 확장되어 클럭당 2 - 4회의 데이터 전송을 지원한다. 버스 클럭 자체는 상승하지 않았지만, 실질적으로 266 MHz - 533 MHz에 상당하는 데이터 전송량을 달성하여 최대 반이중 4.24 GB/s의 전송 속도를 낼 수 있게 되었다.
3.2. 프로토콜 변경 사항
PCI-X 프로토콜은 기존 PCI 프로토콜에서 몇 가지 중요한 변경 사항을 적용했다. 이러한 변경은 주로 지연 시간 증가와 관련된 문제들을 해결하고, 버스 효율성을 높이기 위해 도입되었다.
가장 큰 변화 중 하나는 신호 처리 지연 시간이 1사이클에서 2사이클로 늘어난 것이다. 이로 인해 클럭 속도를 높일 수 있게 되었지만, 몇 가지 프로토콜 변경이 필요하게 되었다.
* 대기 상태 삽입 방식 변경: 기존 PCI 버스에서는 IRDY# 및 TRDY# 신호를 사용하여 임의의 사이클에서 대기 상태를 삽입할 수 있었다. 하지만 PCI-X에서는 이러한 방식이 삭제되었고, 128바이트 경계에서만 버스트를 중단할 수 있도록 변경되었다.
* 트랜잭션 종료 방식 변경: 시작자(Initiator)는 트랜잭션을 종료하기 전에 두 사이클 동안 FRAME# 신호를 비활성화해야 한다.
* 시작자 대기 상태 삽입 제한: 시작자는 대기 상태를 삽입할 수 없다. 대상(Target)은 가능하지만, 모든 데이터가 전송되기 전까지만 가능하며, 쓰기에 대한 대기 상태는 2 클럭 사이클의 배수로 제한된다.
* 버스트 길이 결정 방식 변경: 버스트의 길이는 시작 전에 결정되며, FRAME# 및 STOP# 신호를 사용하여 임의의 사이클에서 중지할 수 없다.
* 감산 디코드 [[DEVSEL#]] 지연: 감산 디코드 DEVSEL#은 "느린 DEVSEL#" 사이클 다음 사이클이 아닌 2 사이클 후에 발생한다.
* 속성 단계 추가: 주소 단계 이후(DEVSEL#로 응답하기 전)에 1사이클의 "속성 단계"가 추가되었다. 이 단계에서는 작업에 대한 36비트의 추가 정보(AD 및 C/BE# 라인 모두 사용)가 전송된다. 여기에는 다음이 포함된다.
* 16비트 요청자 식별 (PCI 버스, 장치 및 기능 번호)
* 12비트 버스트 길이
* 5비트 태그 (분할 트랜잭션 연결용)
* 3비트 추가 상태
3.3. 하위 호환성
PCI-X는 PCI와 하위 호환성을 가지지만, 버스에 PCI-X를 지원하지 않는 카드가 하나라도 있으면 전체 버스가 PCI 모드로 작동하여 속도가 느려진다. 전체 버스 속도는 가장 느린 카드의 클럭 주파수에 맞춰진다. 예를 들어, PCI 2.3 66MHz 카드를 133MHz를 지원하는 PCI-X 버스에 설치하면 전체 버스 백플레인은 66MHz로 제한된다. 이러한 제한을 극복하기 위해 많은 마더보드는 여러 개의 PCI/PCI-X 버스를 가지고 있어, 하나는 고속 PCI-X 주변 장치용으로, 다른 하나는 범용 주변 장치용으로 사용한다.
많은 64비트 PCI-X 카드는 32비트 커넥터에 삽입될 경우 속도 저하를 감수하고 32비트 모드로 작동하도록 설계되었다. 예를 들어 Adaptec 29160 64비트 SCSI 인터페이스 카드가 있다. 그러나 일부 64비트 PCI-X 카드는 표준 32비트 PCI 슬롯에서 작동하지 않는다. 64비트 PCI-X 카드를 32비트 슬롯에 설치하면 카드의 64비트 부분 엣지 커넥터가 연결되지 않고 돌출되므로, 마더보드 구성 요소가 이 돌출 부분을 막지 않도록 주의해야 한다.
3.3V 동작을 지원하는 기존 PCI 슬롯 및 카드와 호환성이 있어서, PCI-X 슬롯에 PCI 카드나 PCI 슬롯에 PCI-X 카드 어느 쪽 조합도 사용 가능하다. 단, 어떤 조합에서도 PCI 호환 모드가 되므로 버스 클럭은 33 MHz 또는 66 MHz가 상한이 된다.
4. 버전
PCI-X영어 카드와 슬롯은 모두 64비트를 지원하며, 다음과 같은 다양한 버전이 있다.
각 버전별 최대 대역폭은 다음과 같다.
* 66MHz: 532MB/s
* 100MHz: 800MB/s (133MHz 슬롯에서 100MHz로 작동)
* 133MHz: 1064MB/s
* 266MHz: 2132MB/s
* 533MHz: 4266MB/s
5. PCI Express와의 비교
PCI-X는 PCI Express(PCI-E 또는 PCIe로 약칭)와 혼동해서는 안 된다. 둘 다 내부 주변 장치를 위한 고속 컴퓨터 버스이지만, 외형과 기술면에서 차이가 있다. PCI-X는 64비트 병렬 인터페이스로, 32비트 PCI와 하위 호환된다. PCIe는 PCI와 PCI-X를 모두 대체하도록 설계된 다른 물리적 인터페이스를 가진 직렬 점대점 연결이다.
PCI-X 및 표준 PCI 버스는 일부 컴퓨터에서 ISA 버스가 표준 PCI 버스에서 작동하는 방식과 유사하게 PCIe 브리지에서 실행될 수 있다. PCIe는 최대 대역폭 면에서 PCI-X 및 PCI-X 2.0과도 일치한다. PCIe 1.0 x1은 각 방향(레인)에서 250MB/s를 제공하며, 현재 최대 16개의 레인(x16)이 각 방향으로 전이중으로 지원되므로 PCIe 1.0은 각 방향에서 최대 4GB/s의 대역폭을 제공한다. PCI-X 2.0은 (최대 64비트 533MHz 변형에서) 최대 4266MB/s (≈4.3GB/s)의 대역폭을 제공하지만, 반이중에서만 가능하다.
PCI-X는 PCI Express에 비해 기술적 및 경제적 단점이 있다. 64비트 병렬 인터페이스는 모든 병렬 인터페이스와 마찬가지로 버스의 신호가 동시에 또는 매우 짧은 시간 내에 도착해야 하고 인접한 슬롯의 노이즈가 간섭을 일으킬 수 있으므로 까다로운 트레이스 라우팅이 필요하다. PCIe의 직렬 인터페이스는 이러한 문제를 덜 겪으므로 이처럼 복잡하고 비용이 많이 드는 설계를 필요로 하지 않는다. 표준 PCI와 마찬가지로 PCI-X 버스는 반이중 양방향 통신인 반면, PCIe 버스는 전이중 양방향 통신이다. PCI-X 버스는 가장 느린 장치만큼만 빠르게 실행되는 반면, PCIe 장치는 버스 속도를 독립적으로 협상할 수 있다. 또한 PCI-X 슬롯은 PCIe 1x에서 PCIe 16x까지의 슬롯보다 길어서 PCI-X용 짧은 카드를 만들 수 없다. PCI-X 슬롯은 마더보드에서 상당한 공간을 차지하므로 ATX 및 더 작은 폼 팩터에 문제가 될 수 있다.