PCI 버스는 1990년대 초 인텔에서 개발한 컴퓨터 버스 표준으로, MCA와 EISA를 대체하고 VESA 로컬 버스를 대체하여 개인용 컴퓨터의 주류로 자리 잡았다. PCI는 32비트 및 64비트 버전, 33MHz 및 66MHz 클럭 속도, 3.3V 및 5V 신호 전압을 지원하며, Mini PCI와 같은 다양한 폼 팩터를 파생시켰다. PCI 버스는 메모리, I/O, 구성 공간의 세 가지 주소 공간을 사용하며, 버스 트랜잭션은 주소 단계와 데이터 단계로 구성된다. PCI 버스는 인터럽트, 패리티 오류 감지, 다양한 버스트 주소 지정 방식을 지원하며, PCI-X 및 PCI Express와 같은 후속 기술의 개발에 영향을 미쳤다.
더 읽어볼만한 페이지
메인보드 확장 슬롯 - EISA EISA는 1988년 컴팩을 중심으로 한 PC 제조업체 컨소시엄이 IBM의 MCA에 대항하기 위해 개발한 32비트 PC 버스 표준으로, ISA 버스와의 호환성을 유지하면서 고급 기능을 제공하고 특허 및 라이선스 정책에서 자유로워 업계의 지지를 얻으며 PC 버스 기술 발전에 기여했다.
메인보드 확장 슬롯 - VESA 로컬 버스 VESA 로컬 버스는 1990년대 초 ISA 버스의 대역폭 한계를 극복하기 위해 개발된 로열티 없는 로컬 버스 표준으로, 486 프로세서의 메모리 버스에 직접 연결되어 고속 데이터 전송을 가능하게 했으나, 여러 한계로 인해 PCI 버스로 대체되기 전까지 486 시스템에서 고성능 장치를 저렴하게 사용하도록 널리 사용되었다.
1993년 도입 - 체코 코루나 체코 코루나는 체코 공화국의 공식 통화로, 체코슬로바키아 해체 후 도입되었으며, 한때 수출 경쟁력 강화를 위한 약세 정책을 시행했으나 현재는 시장 환율 체제를 따르고 있으며, 유로화 도입 논의는 있지만 국민 여론으로 인해 계획은 없는 상태에서 동전과 지폐 형태로 발행되고 있다.
1993년 도입 - 에어버스 A340 에어버스 A340은 에어버스가 개발한 4개의 터보팬 엔진을 장착한 장거리용 광동체 여객기로, A330과 부품을 공유하며, 1987년에 처음 출시되어 377대가 생산되었으나 낮은 연료 효율성으로 2011년에 생산이 종료되었다.
IBM PC 호환기종 - EISA EISA는 1988년 컴팩을 중심으로 한 PC 제조업체 컨소시엄이 IBM의 MCA에 대항하기 위해 개발한 32비트 PC 버스 표준으로, ISA 버스와의 호환성을 유지하면서 고급 기능을 제공하고 특허 및 라이선스 정책에서 자유로워 업계의 지지를 얻으며 PC 버스 기술 발전에 기여했다.
IBM PC 호환기종 - CP/M-86 디지털 리서치가 개발한 16비트 운영 체제 CP/M-86은 인텔 8086 프로세서용으로 설계된 CP/M-80의 후속작이었으나 MS-DOS에 밀려 널리 사용되지 못했고, 다양한 버전과 간지 CP/M-86도 존재했으며, 1990년대 후반에 오픈 소스화되었다.
PCI 버스
개요
이름
PCI 로컬 버스
원어
Peripheral Component Interconnect Bus (페리페럴 컴포넌트 인터커넥트 버스)
PCI 버스는 1991년 인텔이 제안한 장치 간 내부 고속 버스(Local Glueless Bus)였다.[39]
당시 PC/AT 호환 기종에서는 표준 확장 버스인 ISA 버스(AT 버스)가 느리고, 버스 중재 기능이 없어 고속 장치 연결이나 멀티태스킹 운영체제 운용에 어려움이 있었다.
이를 해결하기 위해 MCA 버스, EISA 버스, VL 버스 등이 등장했지만 각각 단점이 있었다. MCA 버스는 ISA 버스와 호환성이 없었고, EISA 버스는 비싸고 느렸으며, VL 버스는 호환성과 안정성이 부족하고 버스 중재 기능이 없었다.
이에 인텔은 각 사의 요구에 따라 PC/AT 호환 기종과 PC-9821 시리즈에 실장할 수 있는 기종 의존 사양을 추가하고, 64비트 버스 확장과 확장 슬롯 형상을 포함한 PCI 버스 사양을 제정했다.
PCI 버스는 처음부터 범용 고속 버스로 설계되었지만, PC/AT 호환 기종에서 표준 버스로 자리 잡기까지는 시간이 걸렸다. 초기에는 EISA 버스나 VL 버스와 함께 사용되거나, VL 버스 위에 PCI 브리지를 실장하는 제품도 있었다.
하지만 PCI 버스는 워크스테이션, 서버, 오피스 컴퓨터 등에도 도입되면서 점차 영역을 넓혀갔다. 특히 컴퓨터 그래픽, 위성 화상 처리, 대규모 데이터 처리 등에서 강점을 보였다. R4400, R10000 등 MIPS 계열 RISC형 CPU를 가진 워크스테이션이나 서버에서도 PCI 컨트롤러가 개발되어 사용되었다.
1999년 PCI 2.2로 개정: MSI (Message Signaled Interrupt)영어 기능이 추가되어, 별도 케이블 없이 WOL 지원 이더넷 카드와 PCMCIA 인터페이스가 판매되었다.
2000년 PCI 2.3으로 개정: 5V 신호만으로 동작하는 확장 카드가 폐지되었다. (5V 신호 마더보드 측 슬롯은 사양에 계속 포함)
2002년 PCI 3.0 제정: 5V 신호로 동작하는 마더보드 측 슬롯이 폐지되었다. (5V/3.3V 겸용 확장 카드는 사양에 계속 포함)
2002년 파생 규격 PCI-X 1.0b 및 PCI-X 2.0 제정: 64비트 PCI의 후속 규격으로, 1 버스 세그먼트 내 슬롯 사용 개수 제한, DDR(Double Data Rate영어) 및 QDR(Quad Data Rate영어) 데이터 전송을 지원한다.
2002년 후속 규격 PCI Express 1.0 제정: 프로토콜과 신호를 분리하여 확장성을 확보한 규격으로, 이후 PC 표준 범용 확장 버스가 되었다.
2003년 ExpressCard 제정: PC 카드의 PCI Express 파생 규격으로, 한때 PC 카드 슬롯 대체가 진행되었으나, 비즈니스용 노트북의 PC 카드 수요와 넷북의 USB/메모리 카드 슬롯 사용 증가로 인해 널리 보급되지 못하고 쇠퇴했다.
PCI는 서버에서 MCA와 EISA를 대체하는 확장 버스로 사용되기 시작했다. 개인용 컴퓨터에서는 VESA 로컬 버스(VLB)를 대체하는 데 시간이 걸렸지만, 1994년 말 2세대 펜티엄 PC가 등장하면서 시장에 널리 보급되었다. 1996년에는 486 컴퓨터에도 PCI가 채택되었다.[39] EISA는 2000년까지 PCI와 함께 사용되었다. 1995년 중반, 애플 컴퓨터는 파워 매킨토시 컴퓨터에 NuBus 대신 PCI를 채택하였고, 1996년 중반에는 매킨토시 퍼포마 제품에 PDS 대신 PCI를 채택하였다.
이후 PCI는 66 MHz 3.3 볼트 표준, 133 MHz PCI-X 등 새로운 기능과 성능 개선이 이루어졌고, PCI 신호를 다른 폼 팩터에 적용하기도 했다. PCI-X 1.0b와 PCI-X 2.0은 일부 PCI 표준과 하위 호환되었다.
2004년, PIC-SIG는 PCI 익스프레스를 도입하였고, 이때부터 PCI는 'Conventional PCI'(전통 PCI)로 불리기 시작했다. 그 후 메인보드 제조업체들은 PCI 익스프레스의 영향으로 기존 PCI 버스의 수를 줄이기 시작하였다.
PCI는 x86 프로세서 제품군을 위해 각각 64비트 및 32비트의 별도 메모리 및 메모리 맵 I/O 포트 주소 공간을 제공한다. 이러한 주소 공간의 주소는 소프트웨어에 의해 할당된다. 소프트웨어는 고정된 주소 지정 방식을 사용하는 PCI 구성 공간이라는 세 번째 주소 공간을 통해 각 장치에 필요한 메모리 및 I/O 주소 공간의 양을 결정할 수 있다. 각 장치는 구성 공간 레지스터를 통해 최대 6개의 메모리 공간 또는 입출력 (I/O) 포트 공간을 요청할 수 있다.
일반적인 시스템에서 펌웨어 (또는 운영 체제)는 시작 시 (PCI 구성 공간을 통해) 모든 PCI 버스를 쿼리하여 어떤 장치가 있는지, 각 장치에 필요한 시스템 리소스 (메모리 공간, I/O 공간, 인터럽트 라인 등)를 확인한다. 그런 다음 리소스를 할당하고 각 장치에 할당된 내용을 알려준다.
PCI 구성 공간에는 운영 체제가 해당 장치에 대한 장치 드라이버를 선택하거나 최소한 시스템 구성에 대해 사용자와 대화하는 데 도움이 되는 소량의 장치 유형 정보도 포함되어 있다.
장치에는 x86 또는 PA-RISC 프로세서용 실행 가능한 코드를 포함하는 온보드 ROM, 오픈 펌웨어 드라이버 또는 옵션 ROM이 있을 수 있다. 이러한 장치는 일반적으로 운영 체제에서 장치 드라이버를 로드하기 전에 시스템 시작 중에 사용되는 장치에 필요하다.
또한, ''PCI 지연 시간 타이머''는 ''PCI 버스 마스터링'' 장치가 PCI 버스를 공정하게 공유하기 위한 메커니즘이다. 여기서 "공정함"은 장치가 다른 장치가 필요한 작업을 수행할 수 없을 정도로 사용 가능한 PCI 버스 대역폭의 큰 부분을 사용하지 않는다는 것을 의미한다. PCI Express에는 적용되지 않는다.
버스 마스터 모드에서 작동할 수 있는 각 PCI 장치는 지연 시간 타이머라고 하는 타이머를 구현해야 한다. 이 타이머는 장치가 PCI 버스를 점유할 수 있는 시간을 제한한다. 타이머는 장치가 버스 소유권을 얻을 때 시작되며 PCI 클럭 속도로 카운트다운한다. 카운터가 0에 도달하면 장치는 버스를 해제해야 한다. 다른 장치가 버스 소유권을 기다리지 않으면 단순히 버스를 다시 잡고 더 많은 데이터를 전송할 수 있다.[16]
4. 인터럽트
PCI 버스는 INTA#, INTB#, INTC#, INTD#까지 4개의 인터럽트 라인을 포함하며, 각 장치에서 이들을 모두 사용할 수 있다. 최대 8개의 PCI 장치가 APIC가 활성화된 x86 시스템에서 동일한 IRQ 라인(INTINA#부터 INTINH#까지)을 공유한다. 인터럽트 라인은 다른 PCI 버스 라인처럼 병렬로 배선되지 않는다. 인터럽트 라인의 위치는 슬롯 간에 회전하므로, 한 장치에 INTA# 라인으로 보이는 것이 다음 장치에는 INTB#, 그 다음 장치에는 INTC#가 된다. 단일 기능 장치는 일반적으로 인터럽트 신호에 INTA#를 사용하므로, 장치 부하는 사용 가능한 4개의 인터럽트 라인에 비교적 균등하게 분산된다. 이는 인터럽트 공유와 관련된 일반적인 문제를 완화한다.
PCI 인터럽트 라인을 PCI 호스트 브리지를 통해 시스템 인터럽트 라인에 매핑하는 것은 구현에 따라 다르다. 플랫폼별 펌웨어 또는 운영 체제 코드는 이를 알고, 각 장치의 구성 공간에서 "인터럽트 라인" 필드를 설정하여 연결된 IRQ를 표시하도록 설계되었다.
PCI 인터럽트 라인은 레벨 트리거 방식이다. 이는 공유 인터럽트 라인을 처리할 때의 이점과 견고성을 위해 에지 트리거 방식보다 선택되었다. 에지 트리거 인터럽트는 놓치기 쉽기 때문이다.
PCI 사양의 후기 개정판에서는 메시지 시그널 인터럽트 (MSI)에 대한 지원이 추가되었다. 이 시스템에서 장치는 전용 라인을 어설션하는 대신 메모리 쓰기를 수행하여 서비스 필요성을 신호한다. 이는 인터럽트 라인 부족 문제를 완화한다. 인터럽트 벡터가 여전히 공유되더라도, 레벨 트리거 인터럽트의 공유 문제를 겪지 않는다. 또한 장치와 호스트 간에 메모리 쓰기가 예측 불가능하게 수정되지 않기 때문에 라우팅 문제도 해결한다. 마지막으로, 메시지 신호 전송은 인밴드이므로 포스트 쓰기 및 아웃 오브 밴드 인터럽트 라인에서 발생할 수 있는 일부 동기화 문제를 해결한다.
PCI 익스프레스는 물리적 인터럽트 라인을 전혀 가지고 있지 않다. 메시지 시그널 인터럽트만 독점적으로 사용한다.
PCI 사양은 3.3V 신호, 64비트 버스 폭, 66MHz 클럭킹 옵션도 제공하지만, 서버 마더보드의 PCI-X 지원 외에는 일반적으로 사용되지 않는다. PCI 버스 중재자는 여러 마스터 간의 버스 중재를 수행하며, PCI 버스에는 원하는 만큼의 버스 마스터가 있을 수 있고, 버스에 대한 요청도 있을 수 있다. 각 버스 마스터에게는 하나의 요청 및 허가 신호 쌍이 할당된다.
2000년대 전후, PCI 버스는 개인용 컴퓨터(PC), 워크스테이션, 서버, 오피스 컴퓨터용 확장 카드 증설을 위한 업계 표준 버스로 널리 채택되었다. 그러나 2004년 PCI Express 등장 이후, 그래픽 카드 분야에서 빠르게 보급되었고, 다른 확장 카드도 2010년대 중반까지 점차 대체되었다.
5. 1. 카드 전압 및 키잉
일반적으로 PCI 카드는 신호 전압에 따라 한 개 또는 두 개의 키 노치를 갖는다. 3.3V 카드에는 카드 뒷면에서 56.21mm 떨어진 곳에 노치가 있으며, 5V 카드는 카드 뒷면에서 104.41mm 떨어진 곳에 노치가 있다. 이 때문에 카드는 지원하는 전압 슬롯에만 장착할 수 있다. 두 전압을 모두 지원하는 "범용 카드"는 두 개의 키 노치를 모두 갖는다.[22][23][24][25]
64비트 PCI는 각 측면에 AD[63:32], C/BE[7:4]#, PAR64 패리티 신호 및 여러 전원 및 접지 핀을 제공하는 32개의 접점을 추가하여 확장된다.
6. 물리적 크기
PCI 브래킷 높이와 카드 길이는 다음과 같다.[26][27][28][29]
PCI 브래킷 및 카드 규격
구분
높이
길이
표준형 브래킷
120.02mm
로우 프로파일 브래킷
79.2mm
표준형 브래킷 & 3.3V 카드 길이
쇼트 카드
169.52mm
롱 카드
313.78mm
로우 프로파일 브래킷 & 3.3V 카드 길이
MD1
121.79mm
MD2
169.52mm
MD3
243.18mm
7. Mini PCI
외부 가장자리의 카드
커넥터
크기 (mm × mm × mm)
비고
IA
아니오
100핀 스태킹
7.5 × 70.0 × 45.00
Z 치수 큼 (7.5 mm)
IB
5.5 × 70.0 × 45.00
Z 치수 작음 (5.5 mm)
IIA
예
17.44 × 70.0 × 45.00
Z 치수 큼 (17.44 mm)
IIB
5.5 × 78.0 × 45.00
Z 치수 작음 (5.5 mm)
IIIA
아니오
124핀 카드 엣지
2.4 × 59.6 × 50.95
Y 치수 큼 (50.95 mm)
IIIB
2.4 × 59.6 × 44.6
Y 치수 작음 (44.6 mm)
Mini PCI는 144핀 Micro PCI와는 다르다.[30]
8. PCI 버스 트랜잭션
PCI 버스 트래픽은 일련의 PCI 버스 트랜잭션으로 구성된다. 각 트랜잭션은 주소 단계와 하나 이상의 데이터 단계로 구성된다. 데이터 단계의 방향은 초기자에서 대상(쓰기 트랜잭션)으로 또는 그 반대로(읽기 트랜잭션)일 수 있지만, 모든 데이터 단계는 동일한 방향이어야 한다. 양쪽 당사자는 언제든지 데이터 단계를 일시 중지하거나 중단할 수 있다. (일반적인 예는 버스트 트랜잭션을 지원하지 않고 항상 첫 번째 데이터 단계 후에 트랜잭션을 중단하는 저성능 PCI 장치이다.)
모든 PCI 장치는 트랜잭션을 시작할 수 있으며, 먼저 마더보드의 PCI 버스 중재자로부터 권한을 요청해야 한다. 중재자는 요청 장치 중 하나에 권한을 부여한다. 초기자는 32비트 주소와 4비트 명령 코드를 브로드캐스트하여 주소 단계를 시작한 다음 대상이 응답할 때까지 기다린다. 다른 모든 장치는 이 주소를 검사하고 그중 하나가 몇 사이클 후에 응답한다.
64비트 주소 지정은 2단계 주소 단계를 사용하여 수행된다. 초기자는 낮은 32비트 주소 비트를 특수 "이중 주소 사이클" 명령 코드와 함께 브로드캐스트한다. 64비트 주소 지정을 지원하지 않는 장치는 해당 명령 코드에 응답하지 않을 수 있다. 다음 사이클에서 초기자는 높은 32비트 주소 비트와 실제 명령 코드를 전송한다. 트랜잭션은 해당 시점부터 동일하게 작동한다. 32비트 PCI 장치와의 호환성을 보장하기 위해, 필요하지 않은 경우(상위 주소 비트가 모두 0인 경우)에는 이중 주소 사이클을 사용하는 것이 금지된다.
PCI 버스는 데이터 단계당 32비트를 전송하지만, 초기자는 유효한 것으로 간주할 8비트 바이트를 나타내는 4개의 액티브 로우 바이트 인에이블 신호를 전송한다. 특히, 쓰기는 대상 PCI 장치의 활성화된 바이트에만 영향을 미쳐야 한다. 이들은 메모리 읽기에는 거의 중요하지 않지만, I/O 읽기는 부작용이 있을 수 있다. PCI 표준은 바이트가 활성화되지 않은 데이터 단계를 명시적으로 허용하며, 이는 아무 작업도 수행하지 않아야 한다.
8. 1. PCI 주소 공간
PCI는 x86 프로세서 제품군을 위해 별도의 메모리 및 메모리 맵 I/O 포트 주소 공간을 각각 64비트 및 32비트로 제공한다. 이러한 주소 공간의 주소는 소프트웨어에 의해 할당된다. 고정된 주소 지정 방식을 사용하는 PCI 구성 공간이라는 세 번째 주소 공간을 통해 소프트웨어는 각 장치에 필요한 메모리 및 I/O 주소 공간의 양을 결정할 수 있다. 각 장치는 구성 공간 레지스터를 통해 최대 6개의 메모리 공간 또는 입출력 (I/O) 포트 공간을 요청할 수 있다.
PCI는 세 가지 주소 공간을 갖는다.
메모리 주소: 크기가 32비트(선택적으로 64비트)이며, 캐싱을 지원하고 버스트 트랜잭션이 가능하다.
I/O 주소: 인텔 x86 아키텍처의 I/O 포트 주소 공간과의 호환성을 위한 것이다. PCI 버스 사양은 모든 주소 공간에서 버스트 트랜잭션을 허용하지만, 대부분의 장치는 메모리 주소에 대해서만 이를 지원하며 I/O 주소에는 지원하지 않는다.
PCI 구성 공간: PCI 장치당 256바이트의 특수 구성 레지스터에 접근할 수 있도록 한다. 각 PCI 슬롯은 자체 구성 공간 주소 범위를 갖는다. 레지스터는 트랜잭션 개시자로부터 장치가 응답해야 하는 메모리 및 I/O 주소 범위를 구성하는 데 사용된다. 컴퓨터를 처음 켜면 모든 PCI 장치는 구성 공간 접근에만 응답한다. 컴퓨터의 BIOS는 장치를 스캔하고 메모리 및 I/O 주소 범위를 할당한다.
어떤 장치도 주소를 점유하지 않은 경우, 트랜잭션 개시자의 주소 단계가 시간 초과되어 개시자는 작업을 중단하게 된다. 읽기의 경우, 이 경우 읽기 데이터 값으로 모두 1(0xFFFFFFFF)을 제공하는 것이 일반적이다. 따라서 PCI 장치는 중요한 상태 레지스터에서 모두 1 값을 사용하지 않도록 하여 소프트웨어가 그러한 오류를 쉽게 감지할 수 있도록 한다.
8. 2. PCI 명령 코드
PCI영어는 16개의 4비트 명령 코드를 가지며, 그중 12개가 할당되어 있다.[16] 명령 코드의 최하위 비트는 데이터 페이즈가 읽기(대상에서 시작 장치로 데이터 전송)인지 쓰기(시작 장치에서 대상으로 데이터 전송)인지를 나타낸다. 듀얼 주소 사이클은 예외이다.[16] PCI영어 대상은 명령 코드뿐만 아니라 주소도 검사해야 하며, 지원되지 않는 명령 코드를 지정하는 주소 페이즈에 응답하지 않아야 한다.[16]
캐시 라인과 관련된 명령은 PCI 구성 공간 캐시 라인 크기 레지스터가 올바르게 설정되어 있는지에 따라 달라지며, 설정되기 전까지는 사용할 수 없다.[16]
코드
설명
0000
인터럽트 승인[16]
0001
특수 사이클[16]
0010
I/O 읽기[16]
0011
I/O 쓰기[16]
010x
예약됨[16]
0110
메모리 읽기[16]
0111
메모리 쓰기[16]
100x
예약됨[16]
1010
구성 읽기[16]
1011
구성 쓰기[16]
1100
메모리 다중 읽기[16]
1101
듀얼 주소 사이클[16]
1110
메모리 라인 읽기[16]
1111
메모리 쓰기 및 무효화[16]
9. PCI 버스 브리지
PCI 표준은 여러 개의 독립적인 PCI 버스가 필요할 때 버스 간의 작업을 전달하는 버스 브리지를 통해 연결될 수 있도록 허용한다. PCI는 많은 버스 브리지를 사용하지 않는 경향이 있지만, PCI Express 시스템은 일반적으로 "PCI Express 루트 포트"라고 불리는 많은 PCI-to-PCI 브리지를 사용한다. 각 PCI Express 슬롯은 다른 슬롯에 브리지로 연결된 별도의 버스처럼 보인다. PCI 호스트 브리지(일반적으로 x86 플랫폼에서 노스브리지)는 CPU, 주 메모리 및 PCI 버스 간을 상호 연결한다.[33]
10. PCI 버스 신호
PCI 버스 트랜잭션은 다섯 개의 주요 제어 신호에 의해 제어된다. 이 중 두 개는 트랜잭션 시작자(FRAME#, IRDY#)에 의해 구동되고, 세 개는 대상(DEVSEL#, TRDY#, STOP#)에 의해 구동된다. 트랜잭션을 시작할 권한을 얻는 데 사용되는 두 개의 추가 중재 신호(REQ#, GNT#)가 있다.[6] 이 신호들은 모두 액티브 로우로, 활성 상태(어설션)는 낮은 전압이다. 마더보드의 풀업 저항은 어떤 장치도 신호를 구동하지 않을 때 하이(비활성, 디어서션) 상태를 유지하도록 보장한다. 그러나 PCI 버스는 신호 레벨을 ''변경''하기 위해 저항에 의존하지 않는다. 모든 장치는 신호를 구동을 중단하기 전에 한 사이클 동안 하이로 구동한다.
11. 중재
PCI 버스 트랜잭션은 5개의 주요 제어 신호에 의해 제어된다. 이 중 2개는 트랜잭션 시작자(FRAME#, IRDY#)에 의해 구동되고, 3개는 대상(DEVSEL#, TRDY#, STOP#)에 의해 구동된다. 트랜잭션을 시작할 권한을 얻는 데 사용되는 2개의 추가 중재 신호(REQ#, GNT#)가 있다.[6] 이 신호들은 모두 액티브 로우로, 활성 상태는 낮은 전압이다. 마더보드의 풀업 저항은 어떤 장치에서도 구동되지 않으면 비활성 상태를 유지하도록 보장하지만, PCI 버스는 신호 레벨을 변경하기 위해 저항에 의존하지 않는다. 모든 장치는 신호를 구동을 중단하기 전에 한 사이클 동안 하이로 구동한다.
PCI 버스에서 버스 마스터 역할을 할 수 있는 모든 장치는 다른 모든 장치와 트랜잭션을 시작할 수 있다. 한 번에 하나의 트랜잭션만 시작되도록 하기 위해, 각 마스터는 먼저 마더보드에 위치한 중재자로부터 버스 승인 신호(GNT#)를 기다려야 한다. 각 장치는 버스를 요청하는 별도의 요청 라인(REQ#)을 가지고 있지만, 현재 요청이 없는 경우 중재자는 버스 승인 신호를 어떤 장치에든 "주차"할 수 있다.
중재자는 언제든지 GNT#를 제거할 수 있다. GNT#를 잃은 장치는 현재 트랜잭션을 완료할 수 있지만, 시작하기 전 사이클에 GNT#가 활성화된 것을 감지하지 않는 한 (FRAME#를 활성화하여) 새로운 트랜잭션을 시작할 수 없다.
중재자는 다른 마스터의 트랜잭션 도중을 포함하여 언제든지 GNT#를 제공할 수도 있다. 트랜잭션 중에는 FRAME# 또는 IRDY# 또는 둘 다 활성화된다. 둘 다 비활성화되면 버스가 유휴 상태가 된다. 장치는 GNT#가 활성화되고 버스가 유휴 상태일 때 언제든지 트랜잭션을 시작할 수 있다.
12. 주소 단계
PCI영어 장치가 구현하도록 허용된 최소 메모리 공간이 16바이트이므로,[18][17] 주소 단계 동안 주소의 최하위 두 비트는 필요하지 않으며, 바이트 선택 신호 형태로 데이터 단계 동안 해당 정보가 도착한다.[18][17] 대신 버스트 데이터가 반환되어야 하는 순서를 지정한다.[18][17] 장치가 요청된 순서를 지원하지 않으면 첫 번째 워드를 제공한 다음 연결을 끊어야 한다.
메모리 공간이 "미리 가져오기 가능"으로 표시된 경우, 대상 장치는 메모리 읽기에서 바이트 선택 신호를 무시하고 항상 32개의 유효한 비트를 반환해야 한다.
일반적으로 PCI영어 쓰기는 PCI영어 읽기보다 빠르다. 장치가 들어오는 쓰기 데이터를 버퍼링하고 버스를 더 빨리 해제할 수 있기 때문이다. 읽기의 경우, 데이터를 가져올 때까지 데이터 단계를 지연해야 한다.
64비트 주소 지정을 위해, 마스터는 두 개의 연속적인 사이클을 거쳐 주소를 전송한다. 먼저, C/BE영어[3:0]# 핀을 통해 특수한 "듀얼 사이클 주소" 명령과 함께 하위 주소 비트를 보낸다. 다음 사이클에서 상위 주소 비트와 실제 명령을 전송한다. 상위 주소 비트가 0이면 듀얼 주소 사이클이 금지되므로 64비트 주소 지정을 지원하지 않는 장치는 듀얼 사이클 명령에 응답하지 않으면 된다.
PCI영어 버스 트랜잭션은 ''주소 단계''로 시작한다. 이니시에이터(보통 칩셋)는 GNT영어#를 확인하고 버스가 유휴 상태임을 감지하면 대상 주소를 AD영어[31:0] 라인에, 관련 명령(예: 메모리 읽기 또는 I/O 쓰기)을 C/BE영어[3:0]# 라인에 구동하고 FRAME영어#을 로우(low)로 당긴다.
다른 각 장치는 주소와 명령을 검사하고 DEVSEL영어#을 어설션(assertion)하여 대상 장치로 응답할지 여부를 결정한다. 장치는 3 사이클 이내에 DEVSEL영어#을 어설션하여 응답해야 한다. 1 또는 2 사이클 내에 응답할 것을 약속하는 장치는 각각 "빠른 DEVSEL영어" 또는 "중간 DEVSEL영어"을 가진다고 한다. (실제로 응답 시간은 2.5 사이클이다. PCI영어 장치는 3 사이클 후에 수신할 수 있도록 모든 신호를 반 사이클 먼저 전송해야 하기 때문이다.)
장치는 첫 번째 사이클에 주소를 래치해야 한다. 이니시에이터는 DEVSEL영어# 응답을 받기 전에도 다음 사이클에 버스에서 주소와 명령을 제거해야 한다. 추가 시간은 캡처된 후 주소와 명령을 해석하는 데만 사용할 수 있다.
주소 단계의 다섯 번째 사이클(또는 다른 모든 장치가 중간 DEVSEL영어 또는 더 빠른 경우 그 이전)에 모든 주소 범위에 대해 일괄적인 "감산 디코딩"이 허용된다. 이는 ISA 버스 브리지가 해당 범위 내 주소(메모리 24비트 및 I/O 16비트)에 흔히 사용된다.
여섯 번째 사이클에 응답이 없으면 이니시에이터는 FRAME영어#을 디어설션하여 트랜잭션을 중단할 수 있다. 이를 ''마스터 어보트 종료''라고 하며, 이 경우 PCI영어 버스 브리지가 모두 1인 데이터(0xFFFFFFFF영어)를 반환하는 것이 일반적이다. 따라서 PCI영어 장치는 소프트웨어에서 이러한 오류를 쉽게 감지할 수 있도록 중요한 상태 레지스터에서 모두 1인 값을 사용하지 않도록 일반적으로 설계된다.
주소 단계 타이밍
GNT영어#는 사이클이 시작된 후에는 관련이 없다.
주소는 한 사이클 동안만 유효하다.
C/BE영어는 첫 번째 데이터 위상 바이트 인에이블에 따라 명령을 제공한다.
클럭 0의 상승 에지에서 이니시에이터는 FRAME영어#와 IRDY영어#가 모두 높고 GNT영어#가 낮음을 감지하여 클럭 1의 상승 에지에 맞춰 주소와 명령을 구동하고 FRAME영어#를 어서트한다. 타겟은 주소를 래치하고 디코딩을 시작한다. 클럭 2(빠른 DEVSEL영어), 3(중간) 또는 4(느린)에 DEVSEL영어#로 응답할 수 있다. 뺄셈 디코딩 장치는 클럭 4까지 다른 응답이 없으면 클럭 5에서 응답할 수 있다. 마스터가 클럭 5까지 응답을 받지 못하면 트랜잭션을 종료하고 클럭 6에서 FRAME영어#를 제거한다.
TRDY영어#와 STOP영어#는 주소 단계 동안 비활성화(높음)된다. 이니시에이터는 데이터를 전송할 준비가 되면 즉시 IRDY영어#를 어서트할 수 있으며, 이론적으로는 클럭 2부터 가능하다.
13. 데이터 단계
PCI 버스 트래픽은 여러 PCI 버스 트랜잭션으로 구성되며, 각 트랜잭션은 ''주소 단계''와 하나 이상의 ''데이터 단계''로 이루어진다. 데이터 단계의 방향은 초기자에서 대상(쓰기) 또는 그 반대(읽기)일 수 있지만, 모든 데이터 단계는 같은 방향이어야 한다. 양쪽 모두 데이터 단계를 일시 중지하거나 중단할 수 있다.
데이터 단계에서는 초기자가 C/BE[3:0]# 라인에서 액티브 로우 바이트 선택 신호를 보내지만, AD[31:0]의 데이터는 초기자(쓰기 시) 또는 대상(읽기 시)에 의해 제어될 수 있다. C/BE[3:0]# 라인은 액티브 로우 ''바이트 인에이블''로 해석된다. 쓰기의 경우, 활성화된 신호는 AD 버스에서 주소 지정된 위치에 쓰여질 네 개의 바이트 중 어느 바이트를 나타낸다. 읽기의 경우, 초기자가 관심 있는 바이트를 나타낸다.
데이터 단계는 양쪽이 전송을 완료하고 다음 단계로 넘어갈 준비가 될 때까지 계속된다. 초기자는 IRDY# (''개시자 준비'')를, 대상은 TRDY# (''대상 준비'')를 활성화한다. 데이터를 제공하는 쪽은 준비 신호를 활성화하기 전에 AD 버스에 데이터를 보내야 한다.
참가자 중 하나가 준비 신호를 활성화하면, 데이터 단계가 끝날 때까지 준비되지 않거나 제어 신호를 변경할 수 없다. 데이터 수신자는 IRDY# 및 TRDY#가 모두 활성화된 것을 볼 때까지 매 사이클마다 AD 버스를 래치해야 하며, 이는 현재 데이터 단계의 끝을 표시하고 방금 래치된 데이터가 전송될 워드임을 나타낸다.
데이터를 보내는 쪽은 IRDY# 및 TRDY#가 모두 활성화된 것을 확인한 후 다음 워드를 AD 버스에 구동할 수 있는 반 클럭 사이클의 여유 시간을 갖는다.
클럭 3에서 대상이 응답하지만, 양쪽 모두 데이터를 전송할 준비가 되지 않았다. 클럭 4에서는 초기자는 준비되었지만 대상은 준비되지 않았다. 클럭 5에서 둘 다 준비되어 데이터 전송이 발생한다. 클럭 6에서는 대상은 준비되었지만 초기자는 준비되지 않았다. 클럭 7에서 초기자가 준비되고 데이터가 전송된다. 클럭 8과 9에서는 양쪽 모두 데이터를 전송할 준비가 되어 최대 속도(클럭 사이클당 32비트)로 데이터가 전송된다.
읽기의 경우, 클럭 2는 AD 버스 전환을 위해 예약되어 있으므로, 대상은 빠른 DEVSEL이 가능한 경우에도 버스에 데이터를 보낼 수 없다. 고속 DEVSEL을 지원하는 타겟은 이론적으로 주소가 제시된 다음 사이클부터 읽기에 응답을 시작할 수 있다. 그러나 이 사이클은 AD 버스 전환을 위해 예약되어 있다.
14. 트랜잭션 종료
PCI 버스 트래픽은 여러 PCI 버스 트랜잭션으로 구성된다. 각 트랜잭션은 '주소 단계'와 하나 이상의 '데이터 단계'로 이루어진다. 데이터 단계의 방향은 쓰기 트랜잭션의 경우 초기자에서 대상으로, 읽기 트랜잭션의 경우 그 반대 방향일 수 있지만, 모든 데이터 단계는 같은 방향이어야 한다. 양쪽 모두 언제든지 데이터 단계를 일시 중지하거나 중단할 수 있다.
초기자는 IRDY# 신호를 활성화하는 동시에 FRAME# 신호를 비활성화하여 트랜잭션의 마지막 데이터 단계를 표시할 수 있다. 대상이 TRDY# 신호를 활성화하면 다음 사이클에 최종 데이터 전송이 완료되고 양쪽 모두 각자의 RDY# 신호를 비활성화하며 버스는 유휴 상태가 된다. 마스터는 IRDY# 신호를 활성화하기 전에 FRAME# 신호를 비활성화할 수 없으며, IRDY# 신호가 활성화된 상태에서 대상이 TRDY# 신호를 활성화할 때까지 기다리는 동안 FRAME# 신호를 비활성화할 수도 없다.
예외는 대상이 DEVSEL# 신호로 응답하지 않는 '마스터 중단 종료'이다. 이 경우 TRDY# 신호를 기다리는 것은 의미가 없다. 그러나 이 경우에도 마스터는 FRAME# 신호를 비활성화한 후 최소 한 사이클 동안 IRDY# 신호를 활성화해야 한다.
대상은 STOP# 신호를 활성화하여 초기자에게 버스트 종료를 요청할 수 있다. 그러면 초기자는 다음 시점에 FRAME# 신호를 비활성화하여 트랜잭션을 종료한다. 만약 더 많은 데이터를 전송하려 한다면, 별도의 트랜잭션을 계속 진행할 것이다. 대상이 이를 수행하는 방법에는 여러 가지가 있다.
데이터와 함께 연결 해제: 대상이 STOP# 및 TRDY# 신호를 동시에 활성화하면, 대상이 이 데이터 단계를 마지막으로 하고 싶다는 것을 나타낸다. 버스트 전송을 지원하지 않는 대상은 항상 이 방식을 사용하여 단일 워드 PCI 트랜잭션을 강제한다.
데이터 없이 연결 해제: 대상이 TRDY# 신호를 활성화하지 않고 STOP# 신호를 활성화하면, 대상이 데이터를 전송하지 않고 중지하고 싶다는 것을 나타낸다.
재시도: 데이터를 전송하기 전에 데이터 없이 연결을 해제하는 것은 '재시도'이며, 다른 PCI 트랜잭션과 달리 PCI 초기자는 작업을 계속하기 전에 잠시 멈춰야 한다.
대상 중단: 일반적으로 대상은 마지막 데이터 단계까지 DEVSEL# 신호를 활성화된 상태로 유지한다. 그러나 대상이 데이터 없이 연결 해제(STOP# 활성화)하기 전에 DEVSEL# 신호를 비활성화하면, 이는 치명적인 오류 조건인 '대상 중단'을 나타낸다. 초기자는 재시도할 수 없으며, 일반적으로 이를 버스 오류로 처리한다.
초기자가 대상에서 시작된 연결 해제 요청을 감지하고 FRAME# 신호를 비활성화하여 응답하는 데 항상 최소한 한 사이클이 걸린다.
15. 버스트 주소 지정
메모리 공간 접근 시, 버스트 내 워드는 다양한 순서로 접근할 수 있다. 시작 장치가 요청한 순서는 불필요한 하위 주소 비트 AD[1:0]를 통해 전달된다. 특정 순서를 지원하지 않는 대상은 첫 번째 워드 이후 버스트를 종료해야 한다. 이러한 순서 중 일부는 모든 PCI 장치에서 구성 가능한 캐시 라인 크기에 따라 달라진다.
PCI 버스트 순서
A[1]
A[0]
버스트 순서 (16바이트 캐시 라인 기준)
0
0
선형 증가 (0x0C, 0x10, 0x14, 0x18, 0x1C, ...)
0
1
캐시라인 토글 (0x0C, 0x08, 0x04, 0x00, 0x1C, 0x18, ...)
1
0
캐시라인 랩 (0x0C, 0x00, 0x04, 0x08, 0x1C, 0x10, ...)
1
1
예약됨 (첫 번째 전송 후 연결 해제)
캐시 라인 내 시작 오프셋이 0이면, 이 모든 모드는 동일한 순서로 축소된다.
캐시 라인 토글 및 캐시 라인 랩 모드는 임계 워드 우선 캐시 라인 페칭의 두 가지 형태이다. 토글 모드는 제공된 주소와 증가하는 카운터를 XOR 연산한다. 이는 인텔 486 및 펜티엄 프로세서의 기본 순서이다. 이 모드는 캐시 라인 크기를 알 필요 없이 구현할 수 있다는 장점이 있다.
PCI 버전 2.1은 토글 모드를 폐지하고 캐시 라인 랩 모드를 추가했으며,[2] 여기서 페칭은 각 캐시 라인의 끝에서 랩핑되면서 선형적으로 진행된다. 하나의 캐시 라인이 완전히 페치되면 다음 캐시 라인의 시작 오프셋으로 페칭이 점프한다.
대부분의 PCI 장치는 일반적인 캐시 라인 크기의 제한된 범위만 지원한다. 캐시 라인 크기가 예상치 못한 값으로 프로그래밍되면 단일 워드 접근을 강제한다.
PCI는 I/O 및 구성 공간에 대한 버스트 접근도 지원하지만, 선형 모드만 지원된다. (이는 거의 사용되지 않으며 일부 장치에서 버그가 있을 수 있다. 즉, 지원하지 않지만 단일 워드 접근도 제대로 강제하지 않을 수 있다.)
16. 패리티
PCI 버스는 패리티 오류를 감지하지만, 작업을 재시도하여 오류를 수정하려고 시도하지는 않는다. 이는 순전히 오류 발생을 알리는 역할만 한다. 이러한 이유로, PCI 버스는 패리티 오류가 발생하기 전에 이를 감지할 필요가 없으며, 실제로 몇 클럭 사이클 후에 이를 감지한다. 데이터 단계 동안, AD[31:0] 라인을 구동하는 장치는 해당 라인과 C/BE[3:0]# 라인에 대해 짝수 패리티를 계산하고, 한 클럭 사이클 후에 PAR 라인으로 이를 보낸다. AD 버스에 대한 모든 접근 규칙과 턴어라운드 사이클은 한 클럭 사이클 후에 PAR 라인에도 적용된다. AD 버스에서 수신 대기하는 장치는 수신된 패리티를 확인하고 그 후 한 클럭 사이클 후에 PERR# (패리티 오류) 라인을 어서트한다. 일반적으로 이는 프로세서 인터럽트를 생성하며, 프로세서는 오류를 감지한 장치를 찾기 위해 PCI 버스를 검색할 수 있다.[1]
PERR# 라인은 대상이 선택된 후 데이터 단계 동안에만 사용된다. 주소 단계(또는 특수 사이클의 데이터 단계)에서 패리티 오류가 감지되면, 이를 관찰하는 장치는 SERR# (시스템 오류) 라인을 어서트한다.[1]
C/BE# 라인에 의해 일부 바이트가 마스크되어 사용되지 않더라도, 해당 바이트는 여전히 '어떤' 정의된 값을 가져야 하며, 이 값을 사용하여 패리티를 계산해야 한다.[1]
17. 빠른 백 투 백 트랜잭션
일반적으로 PCI 버스 트랜잭션 사이에는 유휴 사이클이 필요하지만, 특정 상황에서는 이 유휴 사이클을 건너뛰고 한 전송에서 다음 전송으로 바로 이동할 수 있다. 이를 빠른 백 투 백 트랜잭션이라고 한다.
개시자(Initiator)는 다음 조건을 모두 만족하는 경우에만 백 투 백 트랜잭션을 수행할 수 있다.
동일한 개시자에 의해 수행되는 경우
첫 번째 트랜잭션이 쓰기(Write)인 경우
개시자가 PCI 버스를 사용할 수 있는 권한(GNT# 신호)을 여전히 가지고 있는 경우
대상(Target, DEVSEL# 신호) 제어 라인을 턴어라운드해야 하는 경우 추가적인 타이밍 제약 조건이 발생할 수 있다. 대상은 마지막 데이터 페이즈 다음 사이클에서 DEVSEL#을 디서트(deassert)하여 하이(high)로 구동하며, 이는 백 투 백 트랜잭션의 경우 주소 페이즈의 첫 번째 사이클이다. 주소 페이즈의 두 번째 사이클은 DEVSEL# 턴어라운드를 위해 예약되어 있으므로, 대상이 이전 대상과 다른 경우 세 번째 사이클까지 DEVSEL#을 어서트(assert)해서는 안 된다(중간 DEVSEL 속도).
개시자가 두 번째 전송이 이전 전송과 동일한 대상을 대상으로 한다는 것을 알고 있는 경우(예: 주소가 충분한 상위 비트를 공유하는 경우)에는 이 문제가 발생하지 않으며, 백 투 백 트랜잭션을 수행할 수 있다. 모든 PCI 대상은 이를 지원해야 한다.
대상도 요구 사항을 추적할 수 있다. 빠른 DEVSEL을 수행하지 않으면 요구 사항이 쉽게 충족된다. 빠른 DEVSEL을 수행하는 경우, 다음 중 하나가 아니라면 중간 DEVSEL 시간까지 기다려야 한다.
현재 트랜잭션이 유휴 사이클로 시작된 경우 (백 투 백이 아님)
이전 트랜잭션이 동일한 대상을 대상으로 한 경우
현재 트랜잭션이 더블 주소 사이클로 시작된 경우
이러한 기능을 가진 대상은 PCI 구성 레지스터의 특수 비트로 이를 표시하며, 버스의 모든 대상이 이 기능을 가지고 있다면 모든 개시자는 백 투 백 전송을 자유롭게 사용할 수 있다.
감산 디코딩(Subtractive Decoding) 버스 브리지(Bridge)는 백 투 백 사이클의 경우 이러한 추가 지연을 예상하고 백 투 백 지원을 광고해야 한다.
18. 64비트 PCI
개정 2.1부터 PCI영어 사양에는 선택적인 64비트 지원이 포함된다. 이는 64비트 버스 확장 AD[63:32], C/BE[7:4]#, PAR64, 그리고 여러 개의 추가 전원 및 접지 핀을 제공하는 확장 커넥터를 통해 제공된다. 64비트 PCI 커넥터는 추가 64비트 세그먼트를 통해 32비트 커넥터와 구별할 수 있다.[1]
64비트 장치 간의 메모리 트랜잭션은 모든 64비트를 사용하여 데이터 전송 속도를 두 배로 늘릴 수 있다. 비메모리 트랜잭션(구성 및 I/O 공간 액세스 포함)은 64비트 확장을 사용할 수 없다. 64비트 버스트 동안 버스트 어드레싱은 32비트 전송과 마찬가지로 작동하지만, 데이터 페이즈마다 주소가 두 번 증가한다. 시작 주소는 64비트로 정렬되어야 한다. 즉, AD2는 0이어야 한다. 중간 주소(AD2 = 1)에 해당하는 데이터는 AD 버스의 상위 절반에서 전송된다.[1]
64비트 트랜잭션을 시작하기 위해 이니시에이터는 AD 버스에 시작 주소를 구동하고 FRAME#과 동시에 REQ64#를 활성화한다. 선택된 대상이 이 트랜잭션에 대해 64비트 전송을 지원할 수 있는 경우 DEVSEL#과 동시에 ACK64#를 활성화하여 응답한다. 대상은 트랜잭션별로 64비트 전송을 허용할지 여부를 결정할 수 있다.[1]
주소 페이즈 동안 REQ64#가 활성화되면 이니시에이터는 또한 주소의 상위 32비트와 버스 명령의 복사본을 버스의 상위 절반에 구동한다. 주소에 64비트가 필요한 경우 이중 주소 사이클이 여전히 필요하지만, 버스의 상위 절반은 두 주소 페이즈 사이클 동안 주소의 상위 절반과 최종 명령 코드를 전송한다. 이를 통해 64비트 대상은 전체 주소를 확인하고 더 빨리 응답을 시작할 수 있다.[1]
이니시에이터가 ACK64# 없이 DEVSEL#이 활성화된 것을 감지하면 32비트 데이터 페이즈를 수행한다. 첫 번째 데이터 페이즈 동안 버스의 상위 절반에서 전송되었을 데이터는 대신 두 번째 데이터 페이즈 동안 전송된다. 일반적으로 이니시에이터는 DEVSEL#을 보기 전에 모든 64비트 데이터를 구동한다. ACK64#가 없으면 데이터 버스의 상위 절반 구동을 중단할 수 있다.[1]
REQ64# 및 ACK64# 라인은 마지막 데이터 페이즈를 제외한 전체 트랜잭션 동안 활성화된 상태로 유지되며 각각 FRAME# 및 DEVSEL#과 동시에 비활성화된다.[1]
PAR64 라인은 PAR 라인과 동일하게 작동하지만 AD[63:32] 및 C/BE[7:4]#에 대해 짝수 패리티를 제공한다. REQ64#가 활성화된 경우에만 주소 페이즈에 유효하다. PAR64는 REQ64# 및 ACK64#가 모두 활성화된 경우에만 데이터 페이즈에 유효하다.[1]
19. 개발 도구
PCI 버스를 개발하거나 문제 해결 시 하드웨어 신호를 검사하는 것이 매우 중요할 수 있다. 로직 분석기 및 버스 분석기는 사용자가 유용한 방식으로 볼 수 있도록 신호를 수집, 분석, 디코딩하는 도구이다.
참조
[1]
서적
PCI Local Bus Specification Revision 2.2
PCI Special Interest Group
1998-12-18
[2]
웹사이트
PCIe (Peripheral Component Interconnect Express) {{!}} On the Motherboard {{!}} Pearson IT Certification
https://www.pearsoni[...]
2020-09-25
[3]
웹사이트
PCI
http://www.webopedia[...]
Web-o-pedia
1996-09
[4]
서적
Computer Organization
McGraw-Hill
2002
[5]
웹사이트
PCI Edition AMD HD 4350 Graphic Card from HIS
http://www.hisdigita[...]
2009-07-27
[6]
서적
PCI bus demystified
Newnes
2004
[7]
서적
Inside PC Card: CardBus and PCMCIA Design: CardBus and PCMCIA Design
https://books.google[...]
Newnes
[8]
서적
LabVIEW based Advanced Instrumentation Systems
https://books.google[...]
Springer
[9]
문서
PCI Bus Variation
https://documentatio[...] [10]
서적
System Design for Telecommunication Gateways
https://books.google[...]
John Wiley & Sons
[11]
서적
Digital VLSI Design with Verilog: A Textbook from Silicon Valley Technical Institute
https://books.google[...]
Springer
[12]
문서
VLB was designed for 486-based systems, yet even the more generic PCI was to gain prominence on that platform.
[13]
서적
CompTIA A+ Certification All-in-One Exam Guide
McGraw Hill Professional
[14]
문서
Identify a variety of PCI slots
http://knowledge.lac[...]
LaCie
[15]
웹사이트
PCI Family History
http://www.pcisig.co[...] [16]
웹사이트
PCI Latency Timer Howto
http://www.reric.net[...]
Reric.NET by Eric Seppanen
2008-07-17
[17]
문서
PCI Local Bus Specification, revision 3.0
[18]
서적
PCI Local Bus Specification Revision 2.3
PCI Special Interest Group
2002-03-29
[19]
웹사이트
PCI Connector Pinout
http://www.allpinout[...] [20]
문서
PCI Power
[21]
웹사이트
archive.org/zuavra.net - Using Wake-On-LAN WOL/PME to power up your computer remotely
http://xlife.zuavra.[...] [22]
웹사이트
ZX370 Series
http://docs.znyx.com[...]
2009-06-16
[23]
웹사이트
ZX370 Series Multi-Channel PCI Fast Ethernet Adapter
http://docs.znyx.com[...]
2012-07-13
[24]
웹사이트
Adaptec SCSI Card 29160 Ultra160 SCSI Controller User's Reference
http://www.adaptec.c[...]
2000-01
[25]
웹사이트
LaCie support: Identify a variety of PCI slots
http://www.lacie.com[...]
2012-07-13
[26]
서적
PCI Local Bus Specification Revision 3.0
PCI Special Interest Group
2004-02-03
[27]
서적
PCI Local Bus Specification Revision 3.0
PCI Special Interest Group
2004-02-03
[28]
서적
PCI Local Bus Specification Revision 3.0
PCI Special Interest Group
2004-02-03
[29]
서적
PCI Local Bus Specification Revision 3.0
PCI Special Interest Group
2004-02-03
[30]
웹사이트
Micro PCI, Micro AGP
http://www.ibase.com[...]
iBASE
2010-11-20
[31]
간행물
Re: sym53c875: reading /proc causes SCSI parity error
http://marc.info/?l=[...]
2001-11-28
[32]
보고서
PCI Local Bus Specification: Revision 2.1 vs. Revision 2.0
http://download.inte[...]
Intel Corporation
1997-03
[33]
웹사이트
Bus Specifics - Writing Device Drivers for Oracle® Solaris 11.3
https://docs.oracle.[...]
2020-12-18
[34]
문서
PCI-to-PCI Bridge Architecture Specification, revision 1.1
[35]
문서
PCI Local Bus Specification, revision 2.1
[36]
서적
PCI Local Bus Specification Revision 2.2
PCI Special Interest Group
1998-12-18
[37]
서적
PCI Local Bus Specification Revision 2.2
PCI Special Interest Group
1998
[38]
문서
[39]
문서
[40]
웹인용
PCI Family History
http://www.pcisig.co[...] [41]
간행물
PCI Local Bus Specification, revision 3.0
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.