주변 구성 요소 상호 연결

Peripheral Component Interconnect
PCI
PCI 로컬 버스
PCI Slots Digon3.JPG
마더보드에 5볼트 32비트 PCI 확장 슬롯 3개(왼쪽 PC 브래킷)
생성된 연도1992년 6월 22일; 29년(1992-06-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.pcisig.com/home

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 버전으로 제공되고 있다.

역사

일반적인 32비트, 5V 전용 PCI 카드, 이 경우 AdaptecSCSI 어댑터
32비트 PCI 슬롯 2개와 PCI Express 슬롯 2개가 있는 마더보드

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) G3G4 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]

PCI 기록[14]
스펙 연도 요약[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에는 물리적 인터럽트 라인이 전혀 없다.그것은 메시지 서명 인터럽트를 독점적으로 사용한다.

기존 하드웨어 사양

32비트 및 64비트 PCI 카드의 다양한 주요 위치를 보여주는 다이어그램

이러한 사양은 일반 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 버스에는 버스 요청뿐만 아니라 원하는 수의 버스 마스터가 상주할 수 있다.요청 및 허가 신호 쌍은 각 버스 마스터에게 전용된다.

카드 전압 및 키잉

5V와 3.3V가 모두 지원되는 PCI-X 기가비트 이더넷 확장 카드, 카메라 쪽으로 B면

일반적인 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 측의 핀아웃은 다음과 같다.

32비트 PCI 커넥터 핀아웃
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 카드 혼합

반삽입 PCI-X 카드가 32비트 PCI 슬롯에 있어 마더보드의 가장 오른쪽 노치와 여분의 공간이 역호환성을 유지할 필요가 있음을 보여줌
32비트 PCI 슬롯에서 작동하는 64비트 SCSI 카드

대부분의 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 브래킷 높이:

  • 표준: 120.02 mm;[25]
  • 낮은 프로파일: 79.20 mm.[26]

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 Wi-Fi 카드 유형 IIIB
PCI-MiniPCI 변환기 타입 III
MiniPCI 및 MiniPCI Express 카드 비교

미니 PCI노트북 사용을 위해 PCI 버전 2.2에 추가되었으며, 32비트, 33MHz 버스와 전원 연결(3.3V만 해당, 5V는 100mA로 제한) 버스 마스터링 및 DMA 지원을 사용한다.미니 PCI 카드의 표준 크기는 전체 크기의 약 4분의 1이다.케이스 외부에서 카드에 접근할 수 없는 것은 커넥터를 운반하는 브래킷이 있는 데스크톱 PCI 카드와 달리,이것은 미니 PCI 카드가 수행할 수 있는 기능의 종류를 제한한다.

Wi-Fi, Fast Ethernet, Bluetooth, 모뎀(종종 윈모뎀), 사운드 카드, 암호화 가속기, SCSI, IDEATA, 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핀
쌓기
07.50 × 70.0 × 45.00 대형 Z 치수(7.5 mm)
IB 05.50 × 70.0 × 45.00 더 작은 Z 치수(5.5 mm)
IIA 17.44 × 70.0 × 45.00 대형 Z 치수(17.44 mm)
IIB 05.50 × 78.0 × 45.00 더 작은 Z 치수(5.5 mm)
IIIA 아니요. 124핀
카드 가장자리
02.40 × 59.6 × 50.95 더 큰 Y 치수(50.95 mm)
IIIB 02.40 × 59.6 × 44.60 더 작은 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]

게시된 쓰기

일반적으로, 버스 브리지가 다른 버스로 전달되어야 하는 한 버스에서 거래를 볼 때, 원래의 거래는 결과가 준비되기 전에 전달된 거래가 완료될 때까지 기다려야 한다.메모리 쓰기의 경우 한 가지 주목할 만한 예외가 발생한다.여기서 브릿지는 내부(공간이 있는 경우)에 쓰기 데이터를 기록하고 전달된 쓰기가 완료되기 전에 쓰기의 신호 완료를 기록할 수 있다.아니면, 실제로, 시작되기 전에.이러한 "발송되었지만 아직 도착하지 않은" 쓰기는 우편 메시지와 유사하게 "발송된 쓰기"라고 불린다.비록 그것들이 성과를 올릴 수 있는 좋은 기회를 제공하지만, 허용 가능한 것을 지배하는 규칙은 다소 복잡하다.[33]

결합, 병합 및 축소

PCI 표준은 버스 브리지가 특정 상황에서 여러 버스 거래를 하나의 더 큰 거래로 전환할 수 있도록 허용한다.이것은 PCI 버스의 효율성을 향상시킬 수 있다.

결합
연속된 주소에 대한 쓰기 트랜잭션은 버스트의 액세스 순서가 원래 쓰기 순서와 동일한 한, 더 긴 버스트 쓰기로 결합될 수 있다.쓰기가 거의 연속적인 경우, 모든 바이트가 활성화된 상태에서 추가 데이터 단계를 삽입하는 것이 허용된다.
병합
동일한 단어의 일부를 분리하기 위한 다중 쓰기는 복수 바이트를 가진 단일 쓰기로 통합될 수 있다.이 경우 버스 브리지에 특정 순서에 따라 제시된 쓰기가 병합되어 전달될 때 동시에 발생하게 된다.
무너지는 중
예를 들어, 두 번째 쓰기만 수행하고 덮어쓴 첫 번째 쓰기는 건너뛰어 같은 바이트나 바이트에 대한 다중 쓰기가 결합되지 않을 수 있다.PCI 규격은 쓰기가 부작용을 일으키도록 허용하기 때문이다.

PCI 버스 신호

PCI 버스 거래는 거래 개시자에 의해 구동되는 2개(FRAME#, IRDY#)와 타깃에 의해 구동되는 3개(DEVSEL#, TRDY#, STOP#)의 5개의 주 제어 신호에 의해 제어된다.거래 개시 허가를 얻기 위해 사용되는 추가 중재 신호(REQ#, GNT#)는 두 가지다.모두 능동-낮음이며, 능동 또는 단언 상태저전압임을 의미한다.마더보드의 풀업 저항기는 어떤 장치에 의해서도 구동되지 않는 경우 높은 상태(비활성 또는 비사용)를 유지하도록 보장하지만 PCI 버스는 신호 레벨을 변경하기 위해 저항기에 의존하지 않는다. 모든 장치는 신호를 계속 구동하기 전에 한 사이클 동안 신호를 높은 상태로 구동한다.

신호 타이밍

모든 PCI 버스 신호는 클럭의 상승 에지에서 샘플링된다.신호는 명목상 시계의 하강 에지에서 변화하며, 각 PCI 디바이스는 상승 에지에서 관측된 신호에 어떻게 반응할지를 결정하는 클럭 사이클의 약 반을 주고, 다른 디바이스에 그것의 응답을 전달하는 클럭 사이클의 반을 준다.

PCI 버스는 PCI 버스 신호를 구동하는 디바이스가 바뀔 때마다 한 디바이스가 신호 주행을 중지하고 다른 디바이스가 시작되는 시간 사이에 한 번의 전환 주기가 경과해야 한다고 요구한다.이것이 없으면 두 장치 모두 신호를 구동하는 기간이 있어 버스 운항에 지장을 줄 수 있다.

이 전환 사이클과 제어 라인을 구동하기 전에 한 사이클 동안 높은 상태로 주행해야 하는 요건의 조합은 소유자를 변경할 때 각 주 제어 라인이 최소 두 사이클 이상 높은 상태로 유지되어야 함을 의미한다.PCI 버스 프로토콜은 거의 제한이 되지 않도록 설계되어 있다. 몇 가지 특별한 경우(유명하게 빠른 연속 트랜잭션)에만 이 요구 사항을 충족하기 위해 추가 지연을 삽입할 필요가 있다.

중재

버스 마스터 역할을 할 수 있는 PCI 버스의 모든 장치는 다른 장치와의 거래를 시작할 수 있다.한 번에 하나의 트랜잭션만 시작되도록 하려면 각 마스터는 먼저 마더보드에 위치한 조정기에서 버스 허가 신호 GNT#를 기다려야 한다.각 장치에는 버스를 요청하는 별도의 요청 회선 REQ#가 있지만, 결정자는 현재 요청이 없는 경우 어떤 장치에도 버스 허가 신호를 "주차"할 수 있다.

결정자는 언제든지 GNT#를 제거할 수 있다.GNT#를 상실한 장치는 GNT#가 시작하기 전에 사이클을 주장하지 않는 한 현재 거래를 완료할 수는 있지만 (FRAME#를 주장하여) 시작할 수는 없다.

또한 결정자는 다른 마스터의 거래 동안을 포함하여 언제든지 GNT#를 제공할 수 있다.거래 중에는 FRAME#, IRDY# 또는 둘 다 주장되고, 둘 다 제거되면 버스는 유휴 상태가 된다.장치는 GNT#이 주장되고 버스가 유휴 상태인 경우 언제든지 거래를 시작할 수 있다.

주소 단계

PCI 버스 트랜잭션은 주소 단계에서 시작된다.이니시에이터는 GNT#가 있고 버스가 유휴 상태인 것을 보고 대상 주소를 C/BE[3:0]# 라인의 AD[31:0] 라인, 관련 명령(예: 메모리 읽기 또는 I/O 쓰기)으로 구동하고 FRAME#를 낮게 당긴다.

서로 다른 장치는 주소와 명령을 검사하고 DEVSEL#를 주장하여 대상으로서 대응할지 여부를 결정한다. 장치는 3주기 이내에 DEVSEL#를 주장하여 대응해야 한다.1회 또는 2회 주기 내 응답을 약속하는 기기는 각각 「고속 DEVSEL」이나 「중형 DEVSEL」이 있다고 한다.(실제로 PCI 기기는 모든 신호를 반 사이클 일찍 전송해야 3회 후에 수신할 수 있기 때문에 응답 시간은 2.5 사이클이다.)

장치는 첫 번째 사이클에서 주소를 래치해야 하며, 이니시에이터는 DEVSEL# 응답을 받기 전에라도 다음 사이클에서 버스에서 주소와 명령을 제거해야 한다.추가 시간은 주소와 명령이 캡처된 후에만 해석할 수 있다.

주소 단계의 다섯 번째 사이클(또는 다른 모든 장치가 중간 DEVSEL 또는 그 이하인 경우 이전)에서는 일부 주소 범위에 대해 캐치-올인 "추상적 디코딩"이 허용된다.이것은 일반적으로 ISA 버스 브리지가 그 범위 내의 주소(메모리 24비트, I/O 16비트)에 사용한다.

여섯 번째 사이클에서, 응답이 없는 경우, 개시자는 FRAME#을 디서트하여 트랜잭션을 중단할 수 있다.이를 마스터 중단 종료라고 하며 이 경우 PCI 버스 브리지가 모든 원 데이터(0xFFFFFF)를 반환하는 것이 관례다.따라서 PCI 장치는 일반적으로 중요한 상태 레지스터의 올원 값을 사용하지 않도록 설계되어 소프트웨어에 의해 그러한 오류를 쉽게 감지할 수 있다.

어드레스 위상 타이밍

_  0_  1_  2_  3_  4_  5_         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/             ___        GNT#    \___/XXXXXXXXXXXXXXXXXXX (GNT# Irrelevant after cycle has started)             _______      FRAME#        \___________________                     ___    AD[31:0] -------<___>--------------- (Address only valid for one cycle.)___ _______________  C/BE[3:0]# -------<___X_______________ (Command, then first data phase byte enables)             _______________________     DEVSEL#            \___\___\___\___                      Fast Med Slow Subtractive               _   _   _   _   _   _   _         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/                  01   2   3   4   5

클럭 0의 상승 에지에서, 개시자는 FRAME#와 IRDY#를 하이, 그리고 GNT# 로 관측하기 때문에, 클럭 1의 상승 에지에 맞춰 주소, 명령, 프레임#을 구동한다.타겟은 주소를 잠그고 디코딩을 시작한다.그들은 시계 2 (빠른 DEVSEL), 3 (중간) 또는 4 (느린)에 맞춰 DEVSEL#로 응답할 수 있다.시계 4에 의한 다른 반응이 없는 감산 디코딩 장치는 시계 5에 반응할 수 있다.마스터가 클럭 5에 의한 응답을 보지 못하면, 트랜잭션을 종료하고 클럭 6에 FRAME#을 제거한다.

TRDY# 및 STOP#은 주소 단계 중에 삭제(높음)된다.개시자는 데이터를 전송할 준비가 되는 즉시 IRDY#를 주장할 수 있으며, 이는 이론적으로 시계 2가 빠를 수 있다.

듀얼 사이클 주소

64비트 주소 지정을 허용하기 위해 마스터는 두 번의 주기 동안 주소를 표시한다.먼저, C/BE[3:0]#에 특별한 "듀얼 사이클 어드레스" 명령과 함께 저차 어드레스 비트를 송신한다.다음 사이클에서는 고차 어드레스 비트와 실제 명령을 전송한다.고차 주소 비트가 0이면 듀얼 어드레스 사이클이 금지되므로 64비트 어드레싱을 지원하지 않는 장치는 듀얼 사이클 명령에 반응하지 않을 수 있다.

_  0_  1_  2_  3_  4_  5_  6_         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/             ___        GNT#    \___/XXXXXXXXXXXXXXXXXXXXXXX             _______      FRAME#        \_______________________                     ___ ___    AD[31:0] -------<___X___>--------------- (Low, then high bits)                     ___ ___ _______________C/BE[3:0]# -------<___X___X_______________ (DAC, then actual command)             ___________________________     DEVSEL#                \___\___\___\___                          Fast Med Slow               _   _   _   _   _   _   _   _         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/                  0   1   2   3   4   5   6

구성 액세스

PCI 구성 공간 액세스를 위한 주소는 특별히 디코딩된다.이러한 경우, 저차 주소 라인은 원하는 PCI 구성 레지스터의 오프셋을 지정하며, 고차 주소 라인은 무시된다.대신, 장치가 DEVSEL#을 주장하기 전에 추가 주소 신호인 IDSEL 입력이 높아야 한다. 각 슬롯은 다른 고차 주소 라인을 IDSEL 핀에 연결하고, 상단 주소 라인에 단일 인코딩을 사용하여 선택된다.

데이터 단계

주소 단계 후(특히, DeVSEL#가 로우로 이동하는 사이클부터) 하나 이상의 데이터 단계가 버스트된다.모든 경우에, 이니시에이터는 C/BE[3:0]# 라인에 액티브-로우 바이트 선택 신호를 구동하지만, AD[31:0]의 데이터는 이니시에이터(쓰기의 경우)나 타겟(읽기의 경우)에 의해 구동될 수 있다.

데이터 페이즈 동안 C/BE[3:0]# 라인은 액티브 로우 바이트 활성화로 해석된다.쓰기의 경우, 단언된 신호는 AD 버스의 4바이트 중 어떤 바이트를 주소의 위치에 쓸 것인지를 나타낸다.읽기의 경우, 개시자가 관심 있는 바이트를 표시한다.읽기의 경우, 바이트 활성화 신호를 무시하고 단순히 32비트를 모두 반환하는 것이 항상 합법적이다; 캐시 가능한 메모리 자원은 항상 32 유효비트를 반환해야 한다.바이트 활성화는 주로 읽기가 부작용을 일으키는 I/O 공간 액세스에 유용하다.

4개의 C/BE# 라인이 모두 제거된 데이터 단계는 PCI 표준에서 명시적으로 허용되며, 진행 중인 버스트 액세스에서 주소를 진전시키는 것 외에는 대상에 영향을 미치지 않아야 한다.

데이터 단계는 양 당사자가 전송을 완료하고 다음 데이터 단계로 넘어갈 준비가 될 때까지 계속된다.이니시에이터는 더 이상 기다릴 필요가 없을 때 IRDY#(이니시에이터 준비 완료)를 주장하는 반면, 타겟은 TRDY#(타겟 준비 완료)를 주장한다.데이터를 제공하는 어느 쪽이든 준비된 신호를 주장하기전에 AD버스에서 데이터를구동해야 한다.

참가자들 중 한 명이 준비 신호를 주장하면, 데이터 단계가 끝날 때까지 준비되지 않거나 제어 신호를 변경할 수 있다.데이터 수신자는 IRDY#와 TRDY#가 모두 주장되는 것을 볼 때까지 매 사이클마다 AD 버스를 걸어야 하며, 이는 현재 데이터 단계의 끝을 표시하고 방금 지연된 데이터가 전송될 단어임을 나타낸다.

최대 버스트 속도를 유지하기 위해 데이터 전송기는 IRDY#와 TRDY#가 AD 버스로 다음 단어를 구동할 것을 주장하는 것을 본 후 반 클럭 사이클을 가진다.

0_  1_  2_  3_  4_  5_  6_  7_  8_  9_         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/                 ___         _______     ___ ___ ___    AD[31:0] ---<___XXXXXXXXX_______XXXXX___X___X___ (If a write)                 ___             ___ _______ ___ ___    AD[31:0] ---<___>~~~<XXXXXXXX___X_______X___X___ (If a read)___ _______________ _______ ___ ___  C/BE[3:0]# ---<___X_______________X_______X___X___ (Must always be valid)             _______________         ___                  IRDY#              x \_______/ x \___________             ___________________                          TRDY#              x   x \___________________             ___________DEVSEL# \____________________________________________________________________________________________________________________________________________

이것은 중간 DEVSEL로 단일 주소 사이클을 가정하여 위에서 설명한 주소 사이클을 계속하므로 대상은 시계 3에 맞춰 반응한다.그러나 당시 어느 쪽도 데이터를 전송할 준비가 돼 있지 않다.시계 4의 경우, 이니시에이터는 준비되었지만 대상은 준비되지 않았다.시계 5에서는 둘 다 준비되고 데이터 전송이 이루어진다(수직선으로 표시됨).시계 6의 경우 대상은 전송할 준비가 되었지만 이니시에이터는 그렇지 않다.7시계가 되면 이니시에이터가 준비되고 데이터가 전송된다.시계 8과 9의 경우, 양쪽은 데이터를 전송할 준비가 되어 있으며, 데이터는 가능한 최대 속도(클록 사이클당 32비트)로 전송된다.

읽기의 경우 시계 2는 AD 버스 회전을 위해 예약되어 있기 때문에 빠른 DEVSEL이 가능하더라도 대상자는 버스의 데이터를 구동할 수 없다.

읽기 시 빠른 DEVSEL#

빠른 DEVSEL을 지원하는 대상은 이론적으로 주소가 제시된 후 읽기 사이클에 응답하기 시작할 수 있다.그러나 이 사이클은 AD 버스 턴을 위해 남겨졌다.따라서 대상은 거래의 두 번째 사이클에서 AD 버스를 운전하지 못할 수 있다(따라서 TRDY#를 주장하지 않을 수 있다).대부분의 목표는 이렇게 빠르지 않으며 이 조건을 시행하는 데 특별한 논리가 필요하지 않다는 점에 유의하십시오.

종료 트랜잭션

어느 쪽이든 현재 데이터 위상 이후 버스트 엔드를 요청할 수 있다.다중 단어 버스트를 지원하지 않는 간단한 PCI 디바이스는 항상 즉시 이를 요청한다.버스트를 지원하는 장치도 주소 지정 가능한 메모리의 끝과 같이 지원할 수 있는 최대 길이에 어느 정도 제한이 있을 것이다.

이니시에이터 버스트 종료

이니시에이터는 IRDY#를 주장함과 동시에 FRAME#을 설명함으로써 어떤 데이터 단계도 거래의 최종 단계로 표시할 수 있다.대상이 TRDY#을 주장하고 최종 데이터 전송이 완료된 후 사이클은 양쪽이 각각의 RDY# 신호를 전송하고 버스는 다시 유휴 상태가 된다.마스터는 IRDY#를 주장하기 전에 FRAME#을 비난할 수 없으며, IRDY#가 주장하기를 기다리는 동안 FRAME#을 비난할 수도 없다.

유일한 사소한 예외는 DEVSEL#로 응답하는 대상이 없을 때 마스터 중단 종료다. 분명히 그러한 경우 TRDY#를 기다리는 것은 무의미하다.단, 이 경우에도 마스터는 FRAME#를 디서트한 후 적어도 하나의 사이클 동안 IRDY#를 주장해야 한다.(일반적으로 마스터는 DEVSEL#을 받기 전에 IRDY#를 주장하므로, 한 사이클 동안 주장된 IRDY#를 단순히 보유해야 한다.)이는 버스 턴어라운드 타이밍 규칙이 FRAME# 노선에서 준수되도록 하기 위함이다.

대상 버스트 종료

대상은 이니시에이터가 STOP#을 주장하여 버스트를 종료하도록 요청한다.그 후 개시자는 다음 법적 기회에 FRAME#을 삭제하여 거래를 종료할 것이다. 만약 더 많은 데이터를 전송하기를 원한다면, 그것은 별도의 거래로 계속될 것이다.대상이 이를 수행하는 데는 다음과 같은 몇 가지 방법이 있다.

데이터로 연결 끊기
만약 대상이 STOP#과 TRDY#를 동시에 주장한다면, 이것은 대상이 이것이 마지막 데이터 단계가 되기를 바란다는 것을 나타낸다.예를 들어 버스트 전송을 지원하지 않는 대상은 항상 단일 단어 PCI 트랜잭션을 강제하기 위해 이 작업을 수행한다.이것이 목표물이 버스트를 끝내는 가장 효율적인 방법이다.
데이터 없이 연결 끊기
만약 대상이 TRDY#를 주장하지 않고 STOP#을 주장한다면, 이는 대상이 데이터를 전송하지 않고 중단을 원한다는 것을 나타낸다.STOP#은 데이터 단계 종료를 목적으로 TRDY#와 동등한 것으로 간주되지만, 데이터는 전송되지 않는다.
재시도
데이터 전송 전 데이터 없는 연결 끊기는 재시도이며 다른 PCI 트랜잭션과 달리 PCI 이니시에이터는 작업을 계속하기 전에 잠시 일시 중지해야 한다.자세한 내용은 PCI 규격을 참조하십시오.
대상 중단
일반적으로 대상은 마지막 데이터 단계를 통해 보장된 DEVSEL#을 보유한다.단, 데이터 없이 (STOP#을 전제로) 연결을 끊기 전에 대상자가 DeVSEL#을 디세서트하는 경우 이는 대상 중단을 나타내는 것으로 치명적인 오류 조건이다.이니시에이터는 재시도할 수 없으며, 일반적으로 버스 오류로 간주한다.대상이 TRDY# 또는 STOP# low로 대기하는 동안 DEVSEL#을 디서트하지 않을 수 있다는 점에 유의하십시오. 데이터 단계가 시작될 때 이 작업을 수행해야 한다.

대상 시작 분리 후 마스터가 FRAME#를 디서트할 수 있도록 항상 최소 한 사이클이 더 있을 것이다.두 개의 하위 사례가 있는데, 이 경우 동일한 시간이 걸리지만, 한 가지 경우에는 추가 데이터 단계가 필요하다.

연결 끊기-A
이니시에이터가 자체 IRDY#를 주장하기 전에 STOP#을 관찰한 경우, IRDY#를 주장함과 동시에 FRAME#을 디설팅하여 현재 데이터 단계 이후 버스트를 종료할 수 있다.
연결 끊기-B
이니시에이터가 이미 대상의 STOP#를 관측할 때까지 IRDY#(FRAME#를 제거하지 않고)를 주장했다면, 추가 데이터 단계에 전념한다.대상은 거래가 종료되기 전에 TRDY# 없이 STOP#이 주장된 상태로 추가 데이터 단계를 통해 대기해야 한다.

대상과 동시에 이니시에이터가 버스트를 종료하면 추가 버스 사이클이 없다.

버스트 어드레싱

메모리 공간 액세스의 경우 버스트의 단어는 여러 순서로 액세스할 수 있다.불필요한 저주문 주소 비트 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은 사용되지 않는 토글 모드를 추가하고 캐시 라인 랩 모드를 추가했으며,[31]: 2 여기서 가져오기는 각 캐시 라인의 끝에서 감싸면서 선형적으로 진행된다.하나의 캐시 라인이 완전히 가져오면, 가져오기는 다음 캐시 라인의 시작 오프셋으로 점프한다.

대부분의 PCI 디바이스는 일반적인 캐시 라인 크기의 제한된 범위만 지원한다는 점에 유의하십시오. 캐시 라인 크기가 예기치 않은 값으로 프로그래밍된 경우, 단일 단어 액세스만 강제 수행됩니다.

PCI는 또한 I/O 및 구성 공간에 대한 버스트 액세스를 지원하지만 선형 모드만 지원된다.(이것은 거의 사용되지 않으며, 일부 기기에서는 버그가 될 수 있다. 이러한 기기는 이를 지원하지 않을 수 있지만, 단어에 대한 액세스를 적절히 강요하지도 않는다.)

트랜잭션 예제

이는 마스터가 종료한 가장 높은 속도 4단어 쓰기 버스트:

0_  1_  2_  3_  4_  5_  6_  7_         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \                 ___ ___ ___ ___ ___    AD[31:0] ---<___X___X___X___X___>---<___>                 ___ ___ ___ ___ ___  C/BE[3:0]# ---<___X___X___X___X___>---<___>                                     ___       IRDY# ^^^^^^^^\______________/   ^^^^^___       TRDY# ^^^^^^^^\______________/   ^^^^^                                     ___     DEVSEL# ^^^^^^^^\______________/   ^^^^^             ___                 ___      FRAME#    \_______________/   ^^^^\____               _   _   _   _   _   _   _   _         CLK _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \              0   1   23   4   5   6   7

클럭 에지 1에서 이니시에이터는 주소, 명령, FRAME# 주장으로 트랜잭션을 시작한다. 다른 신호는 마더보드의 풀업 저항기에 의해 높게 당겨진 유휴(^^^로 표시됨)이다.그것이 그들의 순환 주기일지도 모른다.사이클 2에서 대상은 DEVSEL#와 TRDY#를 둘 다 주장한다.이니시에이터도 준비되면 데이터 전송이 발생한다.이것은 세 번의 사이클을 더 반복하지만 마지막 사이클(클럭 에지 5) 전에 마스터가 FRAME#을 디서트하여 이것이 끝임을 나타낸다.클럭 에지 6에서 AD 버스와 FRAME#는 구동되지 않고(회전 사이클) 다른 제어 라인은 1 사이클 동안 하이로 구동된다.클럭 에지 7에서 다른 이니시에이터는 다른 트랜잭션을 시작할 수 있다.이것은 다른 제어 라인의 전환 사이클이기도 하다.

대상이 TRDY#을 주장하기 전에 AD 버스가 회전할 때까지 1 사이클을 기다려야 하기 때문에 등가 읽기 버스트는 한 사이클 더 걸린다.

0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 대잠 순양함 _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \ ___ ___ ___ ___ ___ AD[31:0]---<, ___> 할 것이며, -<, ___X___X___X___> 할 것이며, -<, ___>, ___ _______ ___ ___ ___ C[3:0]#---<, ___X_______X___X___X___> 할 것이며, -<, ___>, ______ IRDY#.   ^^^^\___________________/   ^^^^^             ___    _____                ___       TRDY#    ^^^^     \______________/   ^^^^^             ___                         ___     DEVSEL#    ^^^^\___________________/   ^^^^^             ___                     ___      FRAME#    \___________________/   ^^^^\____               _   _   _   _   _   _   _   _   _         CLK __/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ 0 1 2 3 4 5 7 8

대상에 의해 종료된 고속 버스트에는 종료 시 추가 사이클이 있다.

0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 대잠 순양함 _/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \ ___ ___ ___ ___ ___ AD[31:0]---<, ___> 할 것이며, -<, ___X___X___X___XXXX>.--___ _______ C[3:0]#______ ___ ___---<, ___X_______X___X___X___X___>.--___ IRDY#^^^^^^.^\_______________________/                    _____                _______       TRDY# ^^^^^^^     \______________/                    ________________         ___       STOP# ^^^^^^^                \_______/                                             ___     DEVSEL# ^^^^^^^\_______________________/             ___                         ___      FRAME# \_____________/^^^^^^^^^^_________________________/ \_/ \_/ \_/ \__/ \_/ 0 1 2 3 4 4 5 7 8

클럭 에지 6에서 대상은 (데이터로) 정지하기를 원한다고 표시하지만, 이니시에이터는 이미 IRDY#를 낮게 유지하고 있기 때문에, 데이터가 전송되지 않는 5번째 데이터 페이즈(클럭 에지 7)가 있다.

패리티

PCI 버스는 패리티 오류를 감지하지만 작업을 재시도하여 오류를 수정하려고 하지 않는다. 이는 순전히 실패 표시에 불과하다.이 때문에 패리티 오류가 발생하기 전에 이를 감지할 필요가 없고, PCI 버스는 실제로 몇 사이클 후에 이를 감지한다.데이터 단계 중 AD[31:0] 라인을 구동하는 장치는 이들 라인 및 C/BE[3:0]# 라인에 대한 균등 패리티를 계산하여 1 사이클 후에 PAR 라인 밖으로 전송한다.AD 버스의 모든 액세스 규칙과 전환 주기는 단지 한 사이클 후에 PAR 라인에 적용된다.AD 버스에서 수신된 패리티를 확인하고 그 후 한 사이클 후에 PERR#(패리티 오류) 라인을 강조한다.이것은 일반적으로 프로세서 인터럽트를 생성하며, 프로세서는 PCI 버스에서 오류를 감지한 장치를 검색할 수 있다.

PERR# 라인은 대상이 선택되면 데이터 단계 동안만 사용된다.주소 단계(또는 특수 주기의 데이터 단계) 중에 패리티 오류가 감지되면 이를 관찰하는 장치가 SERR#(시스템 오류) 라인을 강조한다.

일부 바이트가 C/BE# 라인에 의해 마스킹되어 사용 중이 아님에도 불구하고, 여전히 정의된 값이 있어야 하며, 이 값을 사용하여 패리티를 계산해야 한다.

빠른 백 투 백 트랜잭션

PCI 버스 신호를 구동하는 서로 다른 장치 간의 전환 사이클이 필요하기 때문에 일반적으로 PCI 버스 거래 간에는 유휴 사이클이 필요하다.단, 어떤 상황에서는 하나의 전송(IRDY# 어설션, FRAME# 어설션된)의 최종 사이클에서 다음 전송의 첫 번째 사이클(FRICE# 어설션된 IRDY# 어설션된 IRDY# 어설션된)으로 직접 이동하여 이 유휴 사이클을 생략하는 것이 허용된다.

개시자는 다음과 같은 경우에만 연속적인 트랜잭션을 수행할 수 있다.

  • 동일한 이니시에이터(또는 C/BE# 및 FRAME# 라인을 회전할 시간이 없을 경우)
  • 첫 번째 거래는 쓰기였다(그러므로 AD 버스를 돌릴 필요가 없음).
  • 이니시에이터는 여전히 (그 GNT# 입력에서) PCI 버스를 사용할 수 있는 권한을 가지고 있다.

회전의 필요성, 특히 DEVSEL#에서 추가 타이밍 제약이 발생할 수 있다.타깃은 DEVSEL#을 하이로 구동하며, 최종 데이터 단계 이후의 사이클에서, 백투백 거래의 경우 어드레스 단계의 첫 번째 사이클이다.이후 어드레스 단계의 두 번째 사이클은 DEVSEL# 턴을 위해 유보되므로, 대상이 이전 사이클과 다를 경우, 세 번째 사이클(중간 DEVSEL 속도)까지 DEVSEL#을 주장해서는 안 된다.

이 문제가 발생할 수 없는 한 가지 경우는 개시자가 (아마도 주소가 충분한 고차 비트를 공유하기 때문에) 이전과 동일한 대상으로 전송된다는 것을 이전과 같은 대상에 전달한다는 것을 알고 있는 경우다.그 경우에, 그것은 연속적인 거래를 수행할 수 있다.모든 PCI 대상이 이를 지원해야 한다.

대상자가 요구 사항을 추적하는 것도 가능하다.만약 그것이 결코 빠른 DEVSEL을 하지 않는다면, 그들은 하찮은 것으로 만난다.만일 그렇다면, 다음과 같은 경우를 제외하고 중간 DEVSEL 시간까지 기다려야 한다.

  • 현재 트랜잭션 앞에 유휴 사이클(뒤로 연결되지 않음)이 있거나
  • 이전 거래는 동일한 대상에 대한 것이었다.
  • 현재의 거래는 이중 주소 사이클로 시작되었다.

이 기능을 가진 대상들은 PCI 구성 레지스터에서 특별한 비트로 그것을 나타내며, 버스에 있는 모든 대상들이 그것을 가지고 있다면, 모든 개시자들은 자유롭게 연속 전송을 사용할 수 있다.

감산식 디코딩 버스 브릿지는 연속 주기 발생 시 이러한 추가 지연을 예상하여 연속 지원을 광고해야 한다.

64비트 PCI

개정 2.1부터 PCI 규격에는 선택적 64비트 지원이 포함된다.[clarification needed]이는 64비트 버스 확장 AD[63:32], C/BE[7:4]# 및 PAR64를 제공하는 확장 커넥터와 다수의 추가 전원 및 접지 핀을 통해 제공된다.64비트 PCI 커넥터는 추가 64비트 세그먼트로 32비트 커넥터와 구별할 수 있다.

64비트 장치 사이의 메모리 트랜잭션은 데이터 전송 속도를 배가시키기 위해 64비트를 모두 사용할 수 있다.비메모리 트랜잭션(구성 및 I/O 공간 액세스 포함)은 64비트 확장을 사용할 수 없다.64비트 버스트 동안 버스트 어드레싱은 32비트 전송과 마찬가지로 작동하지만, 주소는 데이터 페이즈당 2배로 증가한다.시작 주소는 64비트 정렬이어야 한다. 즉,AD2는 0이어야 한다.간섭 주소(AD2 = 1)에 해당하는 데이터는 AD 버스의 상반부에 전달된다.

64비트 트랜잭션을 시작하기 위해, 이니시에이터는 AD 버스에서 시작 주소를 구동하고 FRAME#와 동시에 REQ64#를 주장한다. 선택한 대상이 이 트랜잭션에 대해 64비트 전송을 지원할 수 있다면, DEVSEL#과 동시에 ACK64#를 주장하여 응답한다. 타겟이 트랜잭션당 허용 여부를 결정할 수 있다는 점에 유의한다.64비트 전송.

주소 단계에서 REQ64#가 주장되면 이니시에이터는 또한 주소의 높은 32비트와 버스 명령의 복사본을 버스의 높은 절반으로 구동한다.주소에 64비트가 필요한 경우, 이중 주소 주기는 여전히 필요하지만, 두 주소 단계 주기 동안 버스의 상위 절반은 주소의 상위 절반과 최종 명령 코드를 전달한다. 이렇게 하면 64비트 대상이 전체 주소를 보고 더 일찍 응답할 수 있다.

이니시에이터가 ACK64# 없이 DEVSEL#이 어설프다고 판단되면 32비트 데이터 단계를 수행한다.첫 번째 데이터 단계에서 버스의 상반부에 전달되었을 데이터는 대신 두 번째 데이터 단계에서 전송된다.일반적으로 이니시에이터는 DEVSEL#을 보기 전에 64비트의 데이터를 모두 구동한다. ACK64#가 누락된 경우 데이터 버스의 상반부 주행을 중단할 수 있다.

REQ64# 라인과 ACK64# 라인은 전체 트랜잭션에서 마지막 데이터 저장 단계를 주장하여 각각 FRAME# 및 DEVSEL#와 동시에 제거된다.

PAR64 라인은 PAR 라인처럼 작동하지만 AD[63:32]와 C/BE[7:4]#에 걸쳐 균등 패리티를 제공한다.REQ64#가 주장되는 경우에만 어드레스 단계에 유효하다.PAR64는 REQ64#와 ACK64#가 모두 주장되는 경우에만 데이터 단계에 유효하다.

캐시 스누핑(무조건)

PCI는 원래 쓰기-백 캐시 일관성을 위한 선택적 지원을 포함했다.이는 캐쉬 가능한 메모리 대상에 의한 지원이 필요하며, 이는 버스의 캐쉬에서 두 개의 핀, SDONE(스눕 완료) 및 SBO#(스눕 백오프)을 청취할 수 있다.[34]

이는 실제로 거의 구현되지 않았기 때문에 PCI 규격의 개정 2.2에서 삭제되었고 개정 2.3에서는 핀이 SMBus 액세스에 재사용되었다.[15][35][17]

캐시는 DEVSEL#을 주장하지 않고 모든 메모리 액세스를 감시할 것이다. 캐시가 캐시에 저장될 수 있는 액세스 권한을 발견하면 SDONE을 낮출 것이다(스눕 미실행).일관성을 지원하는 목표는 SDONE이 하이로 관측될 때까지 데이터 단계(TRDY# 추정)를 완료하지 않을 것이다.

캐시에서 깨끗한 데이터에 쓸 경우 캐시는 복사본을 무효화하기만 하면 되고, 이것이 성립되자마자 SDONE을 주장하게 된다.그러나, 캐시에 더러운 데이터가 포함되어 있다면, 캐시는 접속을 진행하기 전에 그것을 다시 써야 한다.그래서 SDONE을 올릴 때 SBO#를 주장할 것이다.이는 활성 대상에게 TRDY#가 아닌 STOP#을 주장하도록 신호를 보내 이니시에이터의 연결을 끊고 나중에 작업을 재시도하게 된다.그러는 동안 캐시는 버스를 중재하고 그 데이터를 메모리에 다시 쓰곤 했다.

캐시 정합성을 지원하는 타겟 또한 그들이 캐시 라인을 통과하기 전에 버스트를 종료해야 한다.

개발 도구

BIOS 시작 중 POST(전원 켜기 자가 테스트) 번호를 표시하는 PCI POST 카드

PCI 버스를 개발하거나 문제를 해결할 때 하드웨어 신호의 검사가 매우 중요할 수 있다.로직 분석기와 버스 분석기는 사용자가 유용한 방법으로 볼 수 있도록 신호를 수집, 분석 및 해독하는 도구다.

참고 항목

참조

  1. ^ PCI Local Bus Specification Revision 2.2. Hillsboro, Oregon: PCI Special Interest Group. December 18, 1998. page ii.
  2. ^ "PCIe (Peripheral Component Interconnect Express) On the Motherboard Pearson IT Certification". www.pearsonitcertification.com. Retrieved 2020-09-25.
  3. ^ "PCI". Web‐o‐pedia. September 1996..
  4. ^ Hamacher, V. Carl; Vranesic, Zvonko G.; Zaky, Safwat G. (2002). Computer Organization (5th ed.). McGraw-Hill. ISBN 9780071122184.
  5. ^ "PCI Edition AMD HD 4350 Graphic Card from HIS". Retrieved 2009-07-27.
  6. ^ Imdad-Haque, Faisal (1996). Inside PC Card: CardBus and PCMCIA Design: CardBus and PCMCIA Design. Newnes. p. 39. ISBN 978-0-08-053473-2.
  7. ^ Sumathi, S.; Surekha, P. (2007). LabVIEW based Advanced Instrumentation Systems. Springer. p. 305. ISBN 978-3-540-48501-8.
  8. ^ https://documentation.euresys.com/Products/MultiCam/MultiCam_6_16/Content/MultiCam_6_7_HTML_Documentation/PCI_Bus_Variation.pdf[bare URL PDF]
  9. ^ a b Williams, John (2008). Digital VLSI Design with Verilog: A Textbook from Silicon Valley Technical Institute. Springer. p. 67. ISBN 978-1-4020-8446-1.
  10. ^ Bachmutsky, Alexander (2011). System Design for Telecommunication Gateways. John Wiley & Sons. p. 81. ISBN 978-1-119-95642-6.
  11. ^ VLB는 486개의 기반 시스템을 위해 설계되었지만 더 일반적인 PCI는 그 플랫폼에서 두각을 나타내기 위한 것이었다.
  12. ^ Meyers, Michael (2012). CompTIA A+ Certification All-in-One Exam Guide (8th ed.). McGraw Hill Professional. p. 339. ISBN 978-0-07-179512-8.
  13. ^ 다양한 PCI 슬롯, LaCie 식별
  14. ^ "PCI Family History" (PDF).
  15. ^ a b c d e f PCI 로컬 버스 사양, 버전 3.0
  16. ^ "PCI Latency Timer Howto". Reric.NET by Eric Seppanen. 2004-11-14. Retrieved 2008-07-17.
  17. ^ a b c d e PCI Local Bus Specification Revision 2.3. Portland, Oregon: PCI Special Interest Group. March 29, 2002.
  18. ^ "PCI Connector Pinout".
  19. ^ a b PCI 전원 관리 인터페이스 규격 v1.2
  20. ^ "archive.org/zuavra.net - Using Wake-On-LAN WOL/PME to power up your computer remotely". Archived from the original on 8 March 2007.
  21. ^ ZNYX Networks (June 16, 2009). "ZX370 Series". Archived from the original on May 2, 2011. Retrieved July 13, 2012. The ZX370 Series is a true 64-bit adapter, widening the network pipeline to achieve higher throughput, while offering backward compatibility with standard 32-bit PCI slots.
  22. ^ ZNYX Networks. "ZX370 Series Multi-Channel PCI Fast Ethernet Adapter" (PDF). Archived from the original (PDF) on July 20, 2013. Retrieved July 13, 2012. Backward compatible with 32 bit, 33 MHz PCI slots
  23. ^ Adaptec (January 2000). "Adaptec SCSI Card 29160 Ultra160 SCSI Controller User's Reference" (pdf). p. 1. Retrieved July 13, 2012. Although the Adaptec SCSI Card 29160 is a 64-bit PCI card, it also works in a 32-bit PCI slot. When installed in a 32-bit PCI slot, the card automatically runs in the slower 32-bit mode.
  24. ^ LaCie. "LaCie support: Identify a variety of PCI slots". Archived from the original on April 4, 2012. Retrieved July 13, 2012.
  25. ^ PCI Local Bus Specification Revision 3.0. Hillsboro, Oregon: PCI Special Interest Group. February 3, 2004. Figure 5-8.
  26. ^ PCI Local Bus Specification Revision 3.0. Hillsboro, Oregon: PCI Special Interest Group. February 3, 2004. Figure 5-9.
  27. ^ PCI Local Bus Specification Revision 3.0. Hillsboro, Oregon: PCI Special Interest Group. February 3, 2004. Figure 5-6.
  28. ^ PCI Local Bus Specification Revision 3.0. Hillsboro, Oregon: PCI Special Interest Group. February 3, 2004. Figure 5-7.
  29. ^ Micro PCI, Micro AGP (FAQ), iBASE, archived from the original on 2001-12-11, retrieved 2010-11-20.
  30. ^ Roudier, Gérard (2001-11-28). "Re: sym53c875: reading /proc causes SCSI parity error". linux-kernel (Mailing list).
  31. ^ a b PCI Local Bus Specification: Revision 2.1 vs. Revision 2.0 (PDF) (Application Note). Intel Corporation. March 1997. AP-753. Archived from the original (PDF) on 2015-04-30.
  32. ^ "Bus Specifics - Writing Device Drivers for Oracle® Solaris 11.3". docs.oracle.com. Retrieved 2020-12-18.
  33. ^ PCI-PCI 브리지 아키텍처 규격, 개정 1.1
  34. ^ PCI 로컬 버스 사양, 개정 2.1
  35. ^ PCI Local Bus Specification Revision 2.2. Hillsboro, Oregon: PCI Special Interest Group. December 18, 1998.

추가 읽기

공식 기술 사양
책들

외부 링크

공식
기술적 세부사항
공급업체, 장치, ID 목록
팁들
리눅스
개발 도구
FPGA 코어