주변 구성 요소 상호 연결
Peripheral Component InterconnectPCI 로컬 버스 | |
생성된 연도 | 1992년 6월 22일;[1] | 전
---|---|
작성자 | 인텔 |
대체 | ISA, EISA, MCA, VLB |
다음으로 대체됨 | PCI Express(2004) |
너비(비트) | 32 또는 64 |
속도 | 반이중:[2] 133MB/s(33MHz에서 32비트 – 표준 구성) 266MB/s(66MHz에서 32비트) 266MB/s(33MHz에서 64비트) 533MB/s(66MHz에서 64비트) |
스타일 | 평행 |
핫플러그 인터페이스 | 선택적 |
웹사이트 | www |
PCI([3]Peripheral Component Interconnect)는 컴퓨터에 하드웨어 장치를 연결하기 위한 로컬 컴퓨터 버스로서 PCI 로컬 버스 표준의 일부분이다.PCI 버스는 프로세서 버스에서 발견되는 기능을 지원하지만 주어진 프로세서의 기본 버스와는 독립적으로 표준화된 형식으로 지원한다.PCI 버스에 연결된 장치는 버스 마스터에 나타나 자신의 버스에 직접 연결되며 프로세서의 주소 공간에 주소가 할당된다.[4]그것은 하나의 버스 시계와 동기화된 평행 버스다.연결된 장치는 마더보드에 장착된 집적회로 형태(PCI 사양에서 평면 장치라고 함)나 슬롯에 맞는 확장 카드를 취할 수 있다.PCI 로컬 버스는 여러 느린 ISA(산업 표준 아키텍처) 슬롯과 하나의 고속 VESA 로컬 버스(VLB) 슬롯의 조합을 버스 구성으로 대체한 IBM PC 호환 장치에서 처음 구현되었다.이후 다른 컴퓨터 유형에 채택되었다.PC에 사용되는 대표적인 PCI 카드로는 네트워크 카드, 사운드 카드, 모뎀, USB(Universal Serial Bus) 또는 직렬과 같은 추가 포트, TV 튜너 카드 및 하드 디스크 드라이브 호스트 어댑터 등이 있다.증가하는 대역폭이 PCI의 능력을 능가할 필요가 있을 때까지 PCI 비디오 카드는 ISA와 VLB 카드를 대체했다.비디오 카드의 선호 인터페이스는 PCI Express에 자리를 내주기 전에 PCI의 상위 집합인 가속 그래픽 포트(AGP)가 되었다.[5]
소매 데스크탑 컴퓨터에서 발견된 PCI의 첫 번째 버전은 PCI 1.0 표준이 64비트 변종에도 제공되었지만 33 MHz 버스 시계와 5 V 신호 전달을 사용하는 32비트 버스였다.[clarification needed]이것들은 카드에 하나의 위치추적 노치가 있다.PCI 표준 버전 2.0에는 3.3V 슬롯이 도입되었으며, 실수로 5V 카드를 삽입하는 것을 방지하기 위해 물리적으로 플립된 물리적 커넥터에 의해 구별된다.어느 전압에서나 작동할 수 있는 유니버설 카드는 두 개의 노치가 있다.PCI 표준 버전 2.1은 옵션 66 MHz 작동을 도입했다.PCI-X 1.0의 경우 최대 133 MHz, PCI-X 2.0의 경우 최대 533 MHz의 주파수에서 작동되는 PCI-X(PCI-X 확장)의 서버 지향 변종이다.미니 PCI라고 불리는 노트북 카드의 내부 커넥터는 PCI 규격 2.2 버전에서 도입되었다.PCI 버스는 또한 외부 노트북 커넥터 표준인 CardBus에도 채택되었다.[6]첫 번째 PCI 규격은 인텔에 의해 개발되었지만, 이후 표준의 개발은 PCI 특별 이익 그룹(PCI-SIG)의 책임이 되었다.[7]
PCI와 PCI-X를 병렬 PCI 또는 재래식 PCI로[8] 부르기도 하는데, 이는 직렬의 차선 기반 아키텍처를 채택한 그들의 최신 후속 PCI Express와 기술적으로 구별하기 위해서입니다.[9][10]데스크탑 컴퓨터 시장에서 PCI의 전성기는 대략 1995년에서 2005년 사이였다.[9]PCI와 PCI-X는 대부분의 목적을 위해 쓸모없게 되었다. 그러나 2020년에는 하위 호환성과 생산에 필요한 낮은 상대적 비용의 목적으로 현대 데스크톱에서 여전히 흔하다.병렬 PCI의 또 다른 일반적인 현대적인 적용은 산업용 PC에 있는데, 산업용 PC에서는 일부 ISA 카드와 마찬가지로, 여기서 많은 전문화된 확장 카드가 사용되었지만 PCI Express로 전환되지 않았다.이전에 PCI 확장 카드에서 사용할 수 있었던 많은 종류의 디바이스가 현재 일반적으로 마더보드에 통합되거나 USB 및 PCI Express 버전으로 제공되고 있다.
역사
PCI에 대한 작업은 Intel Architecture Labs(IAL, 또한 Architecture Development Lab) 1990에서 시작되었다.주로 IAL 엔지니어들로 구성된 팀이 아키텍처를 정의하고 회사의 데스크탑 PC 시스템 및 핵심 로직 제품 조직의 팀과 파트너십을 맺고 개념 증명 칩셋 및 플랫폼(Saturn)을 개발했다.
PCI는 즉시 서버에서 사용하게 되었고, 마이크로 채널 아키텍처(MCA)와 EISA(Extended Industry Standard Architecture)를 서버 확장 버스로 대체하였다.메인스트림 PC에서는 PCI가 VLB를 대체하는 데 더디게 작용했고, 2세대 펜티엄 PC에서는 1994년 후반까지 이렇다 할 시장 침투력을 얻지 못했다.1996년까지 VLB는 거의 멸종되었고, 제조업체들은 인텔 80486(486) 컴퓨터에도 PCI를 채택했다.[11]EISA는 2000년까지 PCI와 함께 계속 사용되었다.애플 컴퓨터는 95년 중반에 전문 파워 매킨토시 컴퓨터(NuBus 교체)를 위해 PCI를 채택했고, 1996년 중반에는 소비자 Performa 제품군(PDS(Performa Processor Direct Slot 교체)을 채택했다.
서버 시장 밖에서 64비트 버전의 플레인 PCI는 모든 (post-iMac) G3 및 G4 Power Macintosh 컴퓨터에서 사용되었지만 실제로는 거의 사용되지 않았다.[12][13]
이후 PCI의 개정은 66 MHz 3.3 V 표준과 133 MHz PCI-X를 포함한 새로운 특징과 성능 개선 그리고 PCI 신호의 다른 폼 팩터에 대한 적응을 추가했다.PCI-X 1.0b와 PCI-X 2.0은 일부 PCI 표준과 역호환된다.이러한 개정판은 서버 하드웨어에 사용되었지만 소비자 PC 하드웨어는 거의 모든 32비트, 33MHz, 5V를 유지했다.
PCI-SIG는 2004년에 직렬 PCI Express를 도입했다.그 이후로 마더보드 제조업체들은 새로운 표준에 유리한 PCI 슬롯 수를 점차 줄여왔다.2013년 말 현재 많은 새로운 마더보드는 PCI 슬롯을 전혀 제공하지 않는다.[citation needed]
스펙 | 연도 | 요약[15] 변경 |
---|---|---|
PCI 1.0 | 1992 | 원발행 |
PCI 2.0 | 1993 | 통합 커넥터 및 추가 카드 사양 |
PCI 2.1 | 1995 | 명확화 통합 및 66MHz 장 추가 |
PCI 2.2 | 1998 | ECN 통합 및 가독성 향상 |
PCI 2.3 | 2002 | ECN, 에라타 통합 및 5V 키 전용 추가 카드 삭제 |
PCI 3.0 | 2004 | 5.0V 키 시스템 보드 커넥터에 대한 서포트 제거 |
자동 구성
PCI는 각각 64비트와 32비트의 x86 프로세서 제품군에 별도의 메모리 및 메모리 매핑된 I/O 포트 주소 공간을 제공한다.이 주소 공간의 주소는 소프트웨어에 의해 할당된다.고정 주소 체계를 사용하는 PCI Configuration Space라고 불리는 세 번째 주소 공간은 소프트웨어가 각 장치에 필요한 메모리 양과 I/O 주소 공간을 결정할 수 있게 해준다.각 장치는 구성 공간 레지스터를 통해 최대 6개의 메모리 공간 또는 입출력(I/O) 포트 공간을 요청할 수 있다.
일반적인 시스템에서 펌웨어(또는 운영 체제)는 PCI Configuration Space를 통해 시작 시 모든 PCI 버스를 쿼리하여 각각 필요한 디바이스와 시스템 리소스(메모리 공간, I/O 공간, 인터럽트 라인 등)를 파악한다.그런 다음 자원을 할당하고 각 장치에 할당되는 것이 무엇인지 알려준다.
PCI 구성 공간에는 소량의 장치 유형 정보도 포함되어 있어 운영 체제가 장치 드라이버를 선택하거나 최소한 시스템 구성에 대해 사용자와 대화할 수 있도록 도와준다.
장치는 x86 또는 PA-RISC 프로세서, Open Firmware 드라이버 또는 옵션 ROM을 위한 실행 코드를 포함하는 온보드 읽기 전용 메모리(ROM)를 가질 수 있다.이러한 장치는 일반적으로 운영 체제에서 장치 드라이버를 로드하기 전에 시스템 시작 중에 사용되는 장치에 필요하다.
또한 PCI 버스-마스터링 장치가 PCI 버스를 공정하게 공유하기 위한 메커니즘인 PCI 대기 시간 타이머도 있다.이 경우 "공정"은 다른 장치가 필요한 작업을 수행할 수 없을 정도로 사용 가능한 PCI 버스 대역폭의 많은 부분을 기기가 사용하지 않는다는 것을 의미한다.참고: PCI Express에는 적용되지 않는다.
이것이 어떻게 작동되는가는, 버스-마스터 모드에서 작동할 수 있는 각 PCI 디바이스가 PCI 버스를 수용할 수 있는 시간을 제한하는 지연 타이머라고 불리는 타이머를 구현하기 위해 필요하다는 것이다.타이머는 디바이스가 버스 소유권을 얻을 때 시작되고 PCI 클럭 속도로 카운트다운된다.카운터가 0에 도달하면 이 장치는 버스를 해제해야 한다.버스 소유를 기다리는 다른 장치가 없는 경우, 버스를 다시 잡아 더 많은 데이터를 전송할 수 있다.[16]
인터럽트
장치는 인터럽트 라인이 공유될 수 있도록 프로토콜을 따라야 한다.PCI 버스에는 4개의 인터럽트 라인이 포함되어 있으며, 모두 각 디바이스에서 사용할 수 있다.그러나 그것들은 다른 PCI 버스 노선과 같이 병렬로 연결되지 않는다.인터럽트 라인의 위치는 슬롯 사이에서 회전하므로 ITA# 라인은 다음 INTB#이고 INC#는 그 다음이다.단기능 장치는 인터럽트 신호에 ITA#를 사용하므로 장치 부하가 사용 가능한 네 개의 인터럽트 라인에 상당히 고르게 분산된다.이것은 인터럽트를 공유하는 것의 공통적인 문제를 완화시킨다.
PCI 호스트 브리지를 통해 PCI 인터럽트 라인을 시스템 인터럽트 라인에 매핑하는 것은 구현에 의존한다.플랫폼별 BIOS(Basic Input/Output System) 코드는 이를 알기 위한 것으로, 각 기기의 구성 공간에서 그것이 연결되는 IRQ를 나타내는 "중복선" 필드를 설정한다.
PCI 인터럽트 라인은 레벨 트리거.이는 공유 인터럽트 라인을 서비스할 때 이점을 얻기 위해 에지 트리거보다 선택되었으며, 견고성의 경우 에지 트리거 인터럽트는 놓치기 쉽다.
나중에 PCI 규격을 개정하면 메시지 서명 인터럽트에 대한 지원이 추가된다.이 시스템에서 기기는 전용선을 주장하기보다는 메모리 쓰기를 수행하여 서비스의 필요성을 신호한다.이것은 인터럽트 라인의 부족 문제를 완화시킨다.인터럽트 벡터가 여전히 공유된다 하더라도 레벨 트리거 인터럽트의 공유 문제를 겪지 않는다.또한 장치와 호스트 간에 메모리 쓰기가 예측할 수 없이 수정되지 않기 때문에 라우팅 문제도 해결한다.마지막으로, 메시지 신호는 대역 내이기 때문에 게시된 쓰기 및 대역 외 인터럽트 라인에서 발생할 수 있는 일부 동기화 문제를 해결한다.
PCI Express에는 물리적 인터럽트 라인이 전혀 없다.그것은 메시지 서명 인터럽트를 독점적으로 사용한다.
기존 하드웨어 사양
이러한 사양은 일반 PC에서 사용되는 가장 일반적인 PCI 버전을 나타낸다.
- 33.33 MHz 동기 전송 클럭
- 32비트 버스 폭(33.33MHz × 32비트 bits 8비트/바이트 = 133MB/s)에 대한 최대 전송 속도 133MB/s(초당 133MB)
- 32비트 버스 폭
- 32비트 또는 64비트 메모리 주소 공간(4GiB 또는 16EiB)
- 32비트 I/O 포트 공간
- 256바이트(장치당) 구성 공간
- 5음 신호
- 반사파 스위칭
PCI 규격은 또한 3.3V 신호, 64비트 버스 폭, 66MHz 클럭링에 대한 옵션을 제공하지만, 이러한 옵션은 서버 마더보드의 PCI-X 지원 외부에서는 흔히 볼 수 없다.
PCI 버스 중재자는 PCI 버스의 여러 마스터 사이에서 버스 중재를 수행한다.PCI 버스에는 버스 요청뿐만 아니라 원하는 수의 버스 마스터가 상주할 수 있다.요청 및 허가 신호 쌍은 각 버스 마스터에게 전용된다.
카드 전압 및 키잉
일반적인 PCI 카드는 신호 전압에 따라 한두 개의 키 노치가 있다.3.3V가 필요한 카드는 카드 백플레이트에서 56.21mm의 노치가 있고, 5V가 필요한 카드는 백플레이트에서 104.47mm의 노치가 있다.이를 통해 카드를 지원하는 전압의 슬롯에만 장착할 수 있다."범용 카드" 두 전압 모두 키 노치가 있다.
커넥터 핀아웃
PCI 커넥터는 엣지 커넥터의 양쪽에 62개의 접점이 있는 것으로 정의되지만, 그 중 2개 또는 4개는 키 노치로 대체되므로 카드에는 양쪽에 60 또는 58개의 접점이 있다.측면 A는 '솔더면'을, 측면 B는 '구성 요소면'을 가리킨다. 커넥터가 아래를 향하도록 카드를 잡고 있으면 측면 A는 오른쪽에 후면판이 있고, 측면 B는 왼쪽에 후면판이 있다.마더보드 커넥터(핀 A1과 B1은 백플레이트에 가장 가깝다)[15][17][18]를 내려다보며 B와 A 측의 핀아웃은 다음과 같다.
핀 | B면 | A측 | 평. | ||
---|---|---|---|---|---|
1 | −12 V | TRST# | JTAG 포트 핀(옵션) | ||
2 | TCK | +12V | |||
3 | 그라운드 | TMS | |||
4 | TDO | TDI | |||
5 | +5V | +5V | |||
6 | +5V | ITA# | 인터럽트 라인(개방-배수) | ||
7 | INTB# | INC# | |||
8 | INTD# | +5V | |||
9 | PRSNT1# | 예약됨 | 7.5W 또는 25W의 전력이 필요한지 표시하기 위해 낮게 당겨짐 | ||
10 | 예약됨 | IOPWR | +5V 또는 +3.3V | ||
11 | PRSNT2# | 예약됨 | 7.5W 또는 15W의 전력이 필요한지 표시하기 위해 낮게 당김 | ||
12 | 그라운드 | 그라운드 | 3.3V 지원 카드에 대한 키 노치 | ||
13 | 그라운드 | 그라운드 | |||
14 | 예약됨 | 3.3 V 보조 | 대기 전원(옵션) | ||
15 | 그라운드 | RST# | 버스 재설정 | ||
16 | CLK | IOPWR | 33/66MHz 시계 | ||
17 | 그라운드 | GNT# | 마더보드에서 카드까지 버스 허가 | ||
18 | REQ# | 그라운드 | 카드에서 마더보드로의 버스 요청 | ||
19 | IOPWR | PME# | 전원 관리 이벤트(옵션)[19] 3.3V, 개방 배수, 활성 로우 | ||
20 | AD[31] | AD[30] | 주소/데이터 버스(상단 절반) | ||
21 | AD[29] | +3.3V | |||
22 | 그라운드 | AD[28] | |||
23 | AD[27] | AD[26] | |||
24 | AD[25] | 그라운드 | |||
25 | +3.3V | AD[24] | |||
26 | C/BE[3]# | IDSEL | |||
27 | AD[23] | +3.3V | |||
28 | 그라운드 | AD[22] | |||
29 | AD[21] | AD[20] | |||
30 | AD[19] | 그라운드 | |||
31 | +3.3V | AD[18] | |||
32 | AD[17] | AD[16] | |||
33 | C/BE[2]# | +3.3V | |||
34 | 그라운드 | 프레임# | 버스 환승 진행 중 | ||
35 | 아이르디# | 그라운드 | 이니시에이터 준비 완료 | ||
36 | +3.3V | 트르디# | 대상 준비 완료 | ||
37 | 데브셀# | 그라운드 | 선택된 대상 | ||
38 | PCIX캡 | 그라운드 | 스톱# | PCI-X 지원, 대상 요청 중지 | |
39 | LOCK# | +3.3V | 잠금 트랜잭션 | ||
40 | PERR# | SMBCLK | SDONE | 패리티 오류, SMBus 클럭 또는 스눕 완료(불복) | |
41 | +3.3V | SMBDAT | SBO# | SMBus 데이터 또는 스눕 백오프(오브솔레트) | |
42 | SERR# | 그라운드 | 시스템 오류 | ||
43 | +3.3V | PAR | AD[31:00] 및 C/BE[3:0]#에 대한 짝수 패리티 | ||
44 | C/BE[1]# | AD[15] | 주소/데이터 버스(반쪽 이상) | ||
45 | AD[14] | +3.3V | |||
46 | 그라운드 | AD[13] | |||
47 | AD[12] | AD[11] | |||
48 | AD[10] | 그라운드 | |||
49 | M66EN | 그라운드 | AD[09] | ||
50 | 그라운드 | 그라운드 | 5V 지원 카드에 대한 키 노치 | ||
51 | 그라운드 | 그라운드 | |||
52 | AD[08] | C/BE[0]# | 주소/데이터 버스(하부) | ||
53 | AD[07] | +3.3V | |||
54 | +3.3V | AD[06] | |||
55 | AD[05] | AD[04] | |||
56 | AD[03] | 그라운드 | |||
57 | 그라운드 | AD[02] | |||
58 | AD[01] | AD[00] | |||
59 | IOPWR | IOPWR | |||
60 | ACK64# | REQ64# | 64비트 확장의 경우, 32비트 디바이스에 대한 연결 없음. | ||
61 | +5V | +5V | |||
62 | +5V | +5V |
64비트 PCI는 이를 AD[63:32], C/BE[7:4]#, PAR64 패리티 신호 및 다수의 전원 및 접지 핀을 제공하는 각 측면의 32개 접점으로 확장한다.
접지 핀 | 0V 기준 |
---|---|
파워 핀 | PCI 카드에 전원 공급 |
출력 핀 | PCI 카드에 의해 구동되고 마더보드에 의해 수신됨 |
이니시에이터 출력 | 마스터/이니시에이터가 구동하고 대상이 수신함 |
I/O 신호 | 작동에 따라 이니시에이터 또는 타겟에 의해 구동될 수 있음 |
목표출력 | 대상에 의해 구동되고 이니시에이터/마스터에 의해 수신됨 |
입력 | 마더보드에 의해 구동되고 PCI 카드에 의해 수신됨 |
개방 배수구 | 낮게 당겨지거나 여러 카드로 감지될 수 있음 |
예약됨 | 현재 사용되지 않음, 연결 안 함 |
대부분의 라인은 각 슬롯에 병렬로 연결되어 있다.예외는 다음과 같다.
- 각 슬롯에는 마더보드 조정기로부터의 자체 REQ# 출력과 GNT# 입력이 있다.
- 각 슬롯에는 자체 IDSEL 라인이 있으며, 대개 특정 ADL 라인에 연결된다.
- TDO는 다음 슬롯의 TDI에 데이지 체인으로 연결되어 있다. JTAG를 지원하지 않는 카드는 체인이 끊어지지 않도록 TDI를 TDO에 연결해야 한다.
- 각 슬롯에 대한 PRSNT1# 및 PRSNT2#에는 마더보드에 자체 풀업 저항이 있다.마더보드는 PCI 카드의 존재와 전력 요구 사항을 결정하기 위해 이러한 핀을 감지할 수 있지만 그럴 필요는 없다.
- REQ64# 및 ACK64#는 32비트 전용 슬롯에서 개별적으로 당겨진다.
- 인터럽트 라인 INTA# ~ INTD#는 다른 순서로 모든 슬롯에 연결된다. (한 슬롯의 INTA#는 다음 슬롯의 INTB#이고 그 이후의 슬롯은 INC#이다.)
주의:
- IOPWR은 백플레인에 따라 +3.3V 또는 +5V이다.슬롯은 또한 두 곳 중 한 곳에 능선이 있어 해당 키 노치가 없는 카드를 삽입할 수 없으며, 이는 해당 전압 표준에 대한 지지를 나타낸다.범용 카드는 키 노치가 모두 있으며 I/O 신호 레벨을 결정하기 위해 IOPWR을 사용한다.
- PCI SIG는 3.3 V PCI 신호를 강력하게 권장하여 [15]표준 개정 2.3 이후 지원이 필요하지만 대부분의 PC 마더보드는 5 V 변형을 사용한다.[17]따라서 현재 사용 가능한 많은 PCI 카드가 이 둘을 모두 지원하며, 이를 나타내는 두 개의 핵심 노치를 가지고 있지만, 여전히 시장에 많은 수의 5V 전용 카드가 있다.
- M66EN 핀은 대부분의 PC 마더보드에서 볼 수 있는 5 V PCI 버스의 추가 접지다.66MHz 작동을 지원하지 않는 카드와 마더보드도 이 핀을 접지했다.모든 참가자가 66MHz 작동을 지원하는 경우 마더보드의 풀업 저항기가 이 신호를 높게 상승시키고 66MHz 작동이 활성화된다.핀은 여전히 각 카드의 커플링 캐패시터를 통해 접지에 연결되어 AC 차폐 기능을 보존한다.
- PCIXCAP 핀은 PCI 버스와 카드의 추가 접지다.모든 카드와 마더보드가 PCI-X 프로토콜을 지원하는 경우 마더보드의 풀업 저항기가 이 신호를 높게 상승시키고 PCI-X 작동이 활성화된다.핀은 여전히 각 카드의 커플링 캐패시터를 통해 접지에 연결되어 AC 차폐 기능을 보존한다.
- PRSNT1# 및 PRSNT2# 중 적어도 하나는 카드에 의해 접지되어야 한다.선택한 조합은 카드의 총 전력 요건(25W, 15W 또는 7.5W)을 나타낸다.
- SBO#와 SDONE은 캐시 컨트롤러에서 현재 대상으로의 신호다.그것들은 이니시에이터 출력이 아니라 표적 입력이기 때문에 그런 식으로 색칠된다.
- PME#(19 A) – PCI 버전 2.2 이상에서 지원되는 전원 관리 이벤트(옵션)3.3V, 개방 배수구, 활성 로우 신호다.[19]PCI 카드는 PCI 소켓을 통해 직접 PME를 송수신하기 위해 이 신호를 사용할 수 있으므로, 특별한 Wake-on-LAN 케이블이 필요하지 않다.[20]
서로 다른 너비 슬롯에 32비트 및 64비트 PCI 카드 혼합
대부분의 32비트 PCI 카드는 64비트 PCI-X 슬롯에서 제대로 작동하지만, 버스 클럭 속도는 가장 느린 카드의 클럭 주파수로 제한되며, 이는 PCI 공유 버스 토폴로지의 본질적인 제한이다.예를 들어 PCI 2.3, 66-MHz 주변장치를 133 MHz가 가능한 PCI-X 버스에 설치할 경우 전체 버스 백플레인은 66 MHz로 제한된다.이러한 한계를 극복하기 위해 많은 마더보드에는 2대 이상의 PCI/PCI-X 버스가 있으며, 한 대의 버스는 고속 PCI-X 주변기기와 함께 사용하도록 되어 있고, 다른 버스는 범용 주변기기용으로 되어 있다.
많은 64비트 PCI-X 카드는 짧은 32비트 커넥터에 삽입할 경우 32비트 모드에서 작동하도록 설계되었으며, 성능이 다소 저하된다.[21][22]그 예로는 Adaptec 29160 64비트 SCSI 인터페이스 카드가 있다.[23]그러나 일부 64비트 PCI-X 카드는 표준 32비트 PCI 슬롯에서 작동하지 않는다.[24][unreliable source?]
32비트 슬롯에 64비트 PCI-X 카드를 설치하면 카드 에지 커넥터의 64비트 부분이 연결되지 않고 오버행 상태가 된다.이를 위해서는 카드 가장자리 커넥터의 돌출 부분을 기계적으로 방해할 수 있도록 배치한 마더보드 구성 요소가 없어야 한다.
물리 치수
PCI 브래킷 높이:
PCI 카드 길이(표준 브래킷 & 3.3V):[27]
- 쇼트 카드: 169.52 mm;
- 롱 카드: 313.78 mm.
PCI 카드 길이(로우 프로파일 브래킷 & 3.3V):[28]
- MD1: 121.79 mm;
- MD2: 169.52 mm;
- MD3: 243.18 mm.
미니 PCI
미니 PCI는 노트북 사용을 위해 PCI 버전 2.2에 추가되었으며, 32비트, 33MHz 버스와 전원 연결(3.3V만 해당, 5V는 100mA로 제한) 및 버스 마스터링 및 DMA 지원을 사용한다.미니 PCI 카드의 표준 크기는 전체 크기의 약 4분의 1이다.케이스 외부에서 카드에 접근할 수 없는 것은 커넥터를 운반하는 브래킷이 있는 데스크톱 PCI 카드와 달리,이것은 미니 PCI 카드가 수행할 수 있는 기능의 종류를 제한한다.
Wi-Fi, Fast Ethernet, Bluetooth, 모뎀(종종 윈모뎀), 사운드 카드, 암호화 가속기, SCSI, IDE–ATA, SATA 컨트롤러 및 조합 카드와 같은 많은 Mini PCI 장치가 개발되었다.Mini PCI 카드는 Mini PCI-to-PCI 컨버터를 사용하여 일반 PCI 장착 하드웨어와 함께 사용할 수 있다.미니 PCI는 훨씬 좁은 PCI Express Mini Card로 대체됨
Mini PCI의 기술 세부 정보
미니 PCI 카드는 최대 전력 소비량이 2W로, 이 폼 팩터에서 구현할 수 있는 기능을 제한한다.또한 전원 관리를 위해 PCI 클럭을 시작하고 정지하는 데 사용되는 CLKRUN# PCI 신호를 지원해야 한다.
다음과 같은 세 가지 카드 폼 팩터가 있다.Type I, Type II, Type III 카드.각 유형에 사용되는 카드 커넥터는 다음과 같다.Type I and II use a 100-pin stacking connector, while Type III uses a 124-pin edge connector, i.e. the connector for Types I and II differs from that for Type III, where the connector is on the edge of a card, like with a SO-DIMM. The additional 24 pins provide the extra signals required to route I/O back through the system connector (audio, AC-Link, LAN, 전화선 인터페이스).타입 II 카드에는 RJ11 및 RJ45 장착 커넥터가 있다.이러한 카드는 RJ11 및 RJ45 포트를 외부 접근을 위해 장착할 수 있도록 컴퓨터 또는 도킹 스테이션의 가장자리에 위치해야 한다.
유형 | 카드 켜기 의 바깥쪽 가장자리 호스트 시스템 | 커넥터 | 크기 (mm × mm × mm) | 평. |
---|---|---|---|---|
IA | 아니요. | 100핀 쌓기 | 7.5 × 70 × 45 | 대형 Z 치수(7.5 mm) |
IB | 5.5 × 70 × 45 | 더 작은 Z 치수(5.5 mm) | ||
IIA | 네 | 17.44 × 70 | × 45대형 Z 치수(17.44 mm) | |
IIB | 5.5 × 78 × 45 | 더 작은 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) |
미니 PCI는 144핀 마이크로 PCI와 구별된다.[29]
PCI 버스 트랜잭션
PCI 버스 트래픽은 일련의 PCI 버스 트랜잭션으로 구성된다.각 트랜잭션은 주소 단계 다음에 하나 이상의 데이터 단계로 구성된다.데이터 단계의 방향은 이니시에이터에서 타겟(쓰기 트랜잭션)까지일 수도 있고, 반대로(읽기 트랜잭션) 모든 데이터 단계가 동일한 방향이어야 한다.어느 한 당사자가 어느 시점에서든 데이터 단계를 일시 중지하거나 중지할 수 있다. (한 가지 일반적인 예는 버스트 트랜잭션을 지원하지 않는 저성능 PCI 디바이스로, 첫 번째 데이터 단계 이후 항상 트랜잭션을 중지하는 것이다.)
모든 PCI 장치는 트랜잭션을 시작할 수 있다.첫째, 마더보드의 PCI 버스 중재자에게 허가를 요청해야 한다.중재자는 요청 장치 중 하나에 권한을 부여한다.이니시에이터는 32비트 주소와 4비트 명령 코드를 브로드캐스팅하여 주소 단계를 시작한 다음 대상이 응답할 때까지 기다린다.다른 모든 장치는 이 주소를 검사하고 그 중 하나는 몇 사이클 후에 반응한다.
64비트 주소 지정은 2단계 주소 단계를 사용하여 수행된다.이니시에이터는 특별한 "이중 주소 주기" 명령 코드를 수반하여 낮은 32개의 주소 비트를 브로드캐스트한다.64비트 주소 지정을 지원하지 않는 장치는 단순히 명령 코드에 응답할 수 없다.다음 사이클에서는 이니시에이터가 높은 32개의 주소 비트와 실제 명령 코드를 전송한다.그 거래는 그 시점부터 동일하게 운영된다.32비트 PCI 디바이스와의 호환성을 보장하기 위해, 필요하지 않은 경우, 즉, 고차 주소 비트가 모두 0인 경우에는 이중 주소 사이클을 사용하는 것이 금지된다.
PCI 버스가 데이터 단계당 32비트를 전송하는 동안, 이니시에이터는 어떤 8비트 바이트가 중요한 것으로 간주되어야 하는지를 나타내는 4개의 액티브-로우 바이트 활성화 신호를 전송한다.특히 쓰기 작업은 대상 PCI 디바이스에서 사용하도록 설정된 바이트에만 영향을 미쳐야 한다.메모리 읽기에는 중요하지 않지만 I/O 읽기에는 부작용이 있을 수 있다.PCI 표준은 바이트가 활성화되지 않은 데이터 단계를 명시적으로 허용하며, 이는 no-op으로 동작해야 한다.
PCI 주소 공간
PCI에는 메모리, I/O 주소, 구성의 세 가지 주소 공간이 있다.
메모리 주소는 32비트(선택적으로 64비트)로 캐싱을 지원하며 버스트 트랜잭션일 수 있다.
I/O 주소는 Intel x86 아키텍처의 I/O 포트 주소 공간과의 호환성을 위한 것이다.PCI 버스 사양은 모든 주소 공간에서 버스트 트랜잭션을 허용하지만 대부분의 장치는 I/O가 아닌 메모리 주소에 대해서만 지원한다.
마지막으로 PCI 구성 공간은 PCI 디바이스당 256바이트의 특수 구성 레지스터에 대한 액세스를 제공한다.각 PCI 슬롯은 고유한 구성 공간 주소 범위를 가진다.레지스터는 트랜잭션 개시자로부터 응답해야 하는 장치 메모리 및 I/O 주소 범위를 구성하는 데 사용된다.컴퓨터가 처음 켜지면 모든 PCI 디바이스는 구성 공간 액세스에만 응답한다.컴퓨터의 BIOS는 장치를 검사하고 메모리 및 I/O 주소 범위를 장치에 할당한다.
어떤 장치에서도 주소를 할당하지 않으면 트랜잭션 이니시에이터의 주소 단계가 시간 초과되어 이니시에이터가 작업을 중단하게 된다.읽기의 경우, 이 경우에는 읽기 데이터 값(0xFFFFFF)에 올원(all-one)을 공급하는 것이 관례다.따라서 PCI 장치는 일반적으로 중요한 상태 레지스터의 올원 값을 사용하지 않도록 하여 소프트웨어에 의해 그러한 오류를 쉽게 감지할 수 있도록 한다.
PCI 명령 코드
가능한 4비트 명령어 코드는 16개로 이 중 12개가 할당돼 있다.고유한 이중 주소 사이클을 제외하고, 명령 코드의 가장 중요한 비트는 다음 데이터 단계가 읽기(대상에서 개시자로 전송된 데이터)인지 쓰기(초기자에서 대상으로 전송된 데이터인지 여부를 나타낸다.PCI 대상은 명령 코드와 주소를 검사해야 하며 지원되지 않는 명령 코드를 지정하는 주소 단계에는 응답하지 않아야 한다.
캐시 라인을 참조하는 명령은 올바르게 설정되고 있는 PCI 구성 공간 캐시 라인 크기 레지스터에 따라 달라지며, 이 레지스터가 완료될 때까지 사용할 수 없다.
- 0000: 인터럽트 승인
- 이것은 인터럽트 벡터를 반환하는 인터럽트 컨트롤러에 암묵적으로 어드레싱된 읽기 사이클의 특별한 형태다.32비트 주소 필드는 무시된다.한 가지 가능한 구현은 PCI/ISA 버스 브리지를 사용하여 ISA 버스의 인터럽트 승인 주기를 생성하는 것이다.이 명령은 IBM PC 호환성을 위한 것으로, PCI 버스에 Intel 8259 스타일 인터럽트 컨트롤러가 없는 경우 이 사이클을 사용할 필요가 없다.
- 0001: 스페셜 사이클
- 이 사이클은 PCI 카드가 관심을 가질 수 있는 시스템 이벤트에 대한 특별 브로드캐스트 쓰기입니다.특수 주기의 주소 필드는 무시되지만, 페이로드 메시지를 포함하는 데이터 단계가 뒤따른다.현재 정의된 메시지는 프로세서가 어떤 이유로 정지하고 있음을 알린다(예: 전력을 절약하기 위해).어떤 장치도 이 사이클에 응답하지 않으며, 데이터는 최소한 4 사이클 동안 버스에 방치한 후 항상 마스터 중단으로 종료된다.
- 0010: I/O 읽기
- 이것은 I/O 공간에서 읽기를 수행한다.장치가 (호환성을 위해) 4바이트 미만의 I/O 레지스터를 구현할 수 있도록 읽기 주소의 32비트가 모두 제공된다.바이트가 PCI 디바이스가 지원하는 주소 범위(예: 2바이트의 I/O 주소 공간만 지원하는 디바이스에서 4바이트 읽기) 내에 없는 요청 데이터를 활성화할 경우, 대상 중단과 함께 종료해야 한다.선형(단순 증분) 버스트 순서를 사용하여 다중 데이터 사이클이 허용된다.
- PCI 표준은 메인 메모리 매핑을 통해 가능한 한 많이 수행되는 것을 선호하면서 새로운 디바이스에서 I/O 공간의 사용을 금지하고 있다.
- 0011: I/O 쓰기
- 이것은 I/O 공간에 대한 쓰기를 수행한다.
- 010x: 예약됨
- PCI 디바이스는 이러한 명령 코드를 사용하여 주소 주기에 응답하지 않아야 한다.
- 0110: 메모리 읽기
- 이것은 메모리 공간에서 읽기 사이클을 수행한다.PCI 디바이스가 구현할 수 있는 가장 작은 메모리 공간은 16바이트이기 때문에 주소 단계 중에는 주소의 두 개의 중요도가 가장 낮은 비트가 필요하지 않다.[17][15]: §6.5.2.1 바이트 선택 신호의 형태로 데이터 단계 중에 동등한 정보가 도착할 것이다.대신 버스트 데이터를 반환해야 하는 순서를 지정하십시오.[17][15]: §3.2.2.2 장치가 요청된 주문을 지원하지 않는 경우, 먼저 단어를 제공한 다음 연결을 끊어야 한다.
- 메모리 공간이 "사전 추출 가능"으로 표시되면 대상 장치는 메모리 읽기에서 바이트 선택 신호를 무시하고 항상 32개의 유효한 비트를 반환해야 한다.
- 0111: 메모리 쓰기
- 이것은 메모리 읽기와 유사하게 작동한다.바이트 선택 신호는 선택되지 않은 바이트를 메모리에 기록해서는 안 되기 때문에 쓰기에서는 더 중요하다.
- 일반적으로 PCI 쓰기는 장치가 들어오는 쓰기 데이터를 버퍼링하고 버스를 더 빨리 방출할 수 있기 때문에 PCI 쓰기보다 빠르다.읽기의 경우 데이터를 가져올 때까지 데이터 단계를 지연해야 한다.
- 100x: 예약됨
- PCI 디바이스는 이러한 명령 코드를 사용하여 주소 주기에 응답하지 않아야 한다.
- 1010: 구성 읽기
- 이것은 I/O 읽기와 유사하지만 PCI 구성 공간에서 읽는다.기기는 주소의 낮은 11비트가 기능을 명시하고 구현하는 것을 등록하는 경우에만, 그리고 특수 IDSEL 신호가 주장되는 경우에만 응답해야 한다.높은 21비트를 무시해야 한다.버스트 읽기(선형 증가 사용)는 PCI 구성 공간에서 허용된다.
- I/O 공간과 달리 표준 PCI 구성 레지스터는 읽기가 디바이스 상태를 방해하지 않도록 정의된다.판독 부작용이 있는 표준 64바이트 이상의 구성 공간 레지스터를 기기에 장착하는 것은 가능하지만 드물다.[30]
- 구성 공간 액세스는 IDSEL 라인이 안정화될 수 있도록 몇 번의 지연 주기를 갖는 경우가 많아 다른 형태의 액세스보다 속도가 느리게 된다.또한 구성 공간 액세스는 단일 기계 지침이 아닌 다단계 작업이 필요하다.따라서 PCI 디바이스의 일상적인 작동 중에는 이러한 디바이스를 피하는 것이 가장 좋다.
- 1011: 구성 쓰기
- 이것은 구성 읽기 기능과 유사하게 작동한다.
- 1100: 메모리 읽기 다중
- 이 명령은 일반 메모리 읽기와 동일하지만, 긴 읽기 버스트가 현재 캐시 라인의 끝을 넘어 계속되며, 대상은 내부적으로 많은 양의 데이터를 프리페치해야 한다는 힌트를 포함하고 있다.대상은 항상 이것을 일반 메모리 읽기의 동의어로 간주할 수 있다.
- 1101: 이중 주소 주기
- 나타내는 데 32비트 이상이 필요한 메모리 주소에 접속할 경우, 주소 위상은 이 명령어와 주소의 낮은 32비트로 시작하고, 이어 실제 명령어와 주소의 높은 32비트로 두 번째 사이클을 시작한다.64비트 주소 지정을 지원하지 않는 PCI 대상은 단순히 이것을 다른 예약된 명령 코드로 간주하고 응답하지 않을 수 있다.이 명령 코드는 0이 아닌 고차 어드레스 워드와 함께만 사용할 수 있으며, 필요하지 않은 경우에는 이 사이클을 사용하는 것이 금지된다.
- 1110: 메모리 읽기 라인
- 이 명령은 일반 메모리 읽기와 동일하지만 읽기가 캐시 라인의 끝까지 계속된다는 힌트를 포함한다.대상은 항상 이것을 일반 메모리 읽기의 동의어로 간주할 수 있다.
- 1111: 메모리 쓰기 및 무효화
- 이 명령은 일반 메모리 쓰기와 동일하지만, 모든 바이트 선택을 활성화한 상태에서 하나 이상의 전체 캐시 라인이 기록된다는 보장과 함께 제공된다.이것은 버스를 스누핑하는 쓰기-백 캐시에 대한 최적화다.일반적으로, 더러운 데이터를 보관하는 쓰기-백 캐시는 자신의 더러운 데이터를 먼저 쓸 수 있을 만큼 충분히 오랫동안 쓰기 작업을 중단해야 한다.만약 이 명령을 사용하여 쓰기를 수행한다면, 다시 쓸 데이터는 무관할 것이 보장되며, 단순히 쓰기-백 캐시에서 무효화될 수도 있다.
- 이 최적화는 스누핑 캐시에만 영향을 미치고 대상에는 아무런 차이가 없으므로 메모리 쓰기 명령의 동의어로 간주될 수 있다.
PCI 버스 지연 시간
PCI 규격이 발표된 직후, 느린 승인, 긴 데이터 버스트 또는 일부 조합으로 인해 일부 디바이스에 의한 긴 트랜잭션은 다른 디바이스에서 버퍼 언더런 또는 오버런을 유발할 수 있다는 사실이 밝혀졌다.개정 2.0에서 개별 단계의 시기에 대한 권고사항은 개정 2.1에서 의무화되었다.[31]: 3
- 대상은 거래 시작 후 16 사이클 이내에 초기 데이터 단계(TRDY# 및/또는 STOP# 참조)를 완료할 수 있어야 한다.
- 개시자는 각 데이터 단계(IRDY# 참조)를 8 사이클 이내에 완료해야 한다.
또한 개정 2.1에서, 3개 이상의 데이터 단계를 파열할 수 있는 모든 개시자는 프로그램 가능한 지연 타이머를 구현해야 한다.타이머는 트랜잭션이 시작될 때 클럭 사이클을 계산하기 시작한다(이니시에이터는 FRAME#를 주장함).타이머가 만료되고 결정자가 GNT#를 제거한 경우, 개시자는 다음 법적 기회에 트랜잭션을 종료해야 한다.이것은 보통 다음 데이터 단계지만, 메모리 쓰기 및 무효화 트랜잭션은 캐시 라인의 끝까지 계속되어야 한다.
지연거래
이러한 타이밍 제한을 충족할 수 없는 기기는 게시된 쓰기(메모리 쓰기의 경우)와 지연된 트랜잭션(기타 쓰기 및 모든 읽기)의 조합을 사용해야 한다.지연된 거래에서 대상은 거래(쓰기 데이터 포함)를 내부적으로 기록하고, 1차 데이터 단계를 중단(TRDY#가 아닌 STOP#의 보증)한다.이니시에이터는 나중에 정확히 동일한 트랜잭션을 다시 시도해야 한다.그 사이에 대상은 내부적으로 거래를 수행하고, 재시도된 거래를 기다린다.재시도된 트랜잭션이 보이면 버퍼링된 결과가 전달된다.
장치는 하나의 지연된 트랜잭션을 완료하는 동안 다른 트랜잭션의 대상이 될 수 있다. 장치는 트랜잭션 유형, 주소, 바이트 선택 및 (쓰기 시) 데이터 값을 기억하고 올바른 트랜잭션만 완료해야 한다.
대상이 내부적으로 기록할 수 있는 지연거래 횟수에 제한이 있는 경우(단순대상은 1회 한도를 부과할 수 있음)에는 해당 거래를 기록하지 않고 재시도하도록 강제한다.그들은 현재 지연된 거래가 완료되면 처리될 것이다.두 개시자가 동일한 거래를 시도하는 경우, 한 개시자가 시작한 지연된 거래는 다른 개시자에게 결과가 전달될 수 있다. 이는 무해하다.
재시도가 버퍼링된 결과 전달에 성공하거나, 버스가 재설정되거나, 재시도를 보지 않고 215=32768 클럭 사이클(약 1ms)이 경과할 때 대상이 지연 트랜잭션을 포기한다.후자는 정상적인 작동에서는 절대 발생하지 않아야 하지만, 한 이니시에이터가 재설정되거나 오작동할 경우 전체 버스가 교착 상태에 빠지는 것을 방지한다.
PCI 버스 브리지
PCI 표준은 여러 개의 독립 PCI 버스를 버스 브리지로 연결하여 필요할 때 한 버스에서 다른 버스로 운영을 전달할 수 있도록 허용한다.PCI는 많은 버스 브리지를 사용하지 않는 경향이 있지만, PCI Express 시스템은 보통 PCI Express 루트 포트라고 불리는 많은 PCI-to-PCI 브리지를 사용한다. 각 PCI Express 슬롯은 브리지로 연결된 별도의 버스인 것처럼 보인다.CPU, 메인 메모리 및 PCI 버스 간의 PCI 호스트 브리지(일반적으로 x86 플랫폼의 Northbridge) 상호 연결.[32]
게시된 쓰기
일반적으로, 버스 브리지가 다른 버스로 전달되어야 하는 한 버스에서 거래를 볼 때, 원래의 거래는 결과가 준비되기 전에 전달된 거래가 완료될 때까지 기다려야 한다.메모리 쓰기의 경우 한 가지 주목할 만한 예외가 발생한다.여기서 브릿지는 내부(공간이 있는 경우)에 쓰기 데이터를 기록하고 전달된 쓰기가 완료되기 전에 쓰기의 신호 완료를 기록할 수 있다.아니면, 실제로, 시작되기 전에.이러한 "발송되