Peripheral Component Interconnect

Peripheral Component Interconnect（ペリフェラル コンポーネント インターコネクト、PCI）は、コンピュータのプロセッサと周辺機器との間の通信を行うためのバスアーキテクチャの一つ。 おおむね2000年代初頭を中心とした前後数年間において、PCIバスはパーソナルコンピュータ（パソコン）またはワークステーション、サーバ、オフィスコンピュータ用の拡張カードを増設するための業界標準のバスとして広く採用されていたが、2004年に登場した後継規格のPCI Expressが、まずグラフィックカードの分野で急速に普及し、その他の拡張カードも2010年代中盤頃にかけて次第に代替されていった。 2003年時点の最新バージョンはPCI 3.0である。 一般のパソコンではPCI 2.3準拠の 32ビットの33 MHz、帯域幅半二重132 MB/s、5 V信号のPCIバスが採用されていた。64ビット/66 MHz PCIやさらに高速なPCI-Xは高価で、一部のPower Macなどに搭載された以外は、シリアルATAや1000BASE-Tの登場で32ビット/33 MHz PCI帯域幅の限界が目立つようになってPCI Expressへの移行に至るまでサーバ、ワークステーションなどでの採用にとどまった。 動作クロックは最大33 MHzまたは最大66 MHzで下限クロック数は規定されていない。 これはPCIの動作単位がクロックではなく実時間（例:Output Delayはクロック立ち上がりより12ナノ秒後）で規定されている為である。 バス幅は32ビットまたは64ビットで、1バスセグメント内で32デバイスをサポートする。それよりも多くのデバイスを接続する場合は、PCIバス-PCIバスブリッジを使用しバスセグメントを拡張するか、バスコントローラそのものを増設しセグメント数を増やす。 PCI規格を提唱したIntelのガイドラインで示された、[要出典]拡張スロットの電気的負荷を考慮した値は、1バスセグメント内で10デバイスまで。ただし、拡張スロットは33 MHzの場合2デバイス、66 MHzの場合4デバイス扱いで、チップセットなどのバスコントローラも1デバイスないしは2デバイスとして扱われるため、1バスセグメントで最大4スロットまでの実装が可能となる。。 32ビットスロットに64ビットの拡張カードを挿入して使用することやその逆も可能であるように設計されている。ただしこれはバス設計に於いてであって、挿入するカードがその互換性を持っているか否かは別問題であり、特に64ビットカードを32ビットスロットに装着した場合、宙に浮いた32ビット分の処理はカード側の処理（すなわち設計）に依る。 信号電圧は5 Vまたは3.3 Vであり、カードの切り欠き、スロット突起の有無により誤挿入を防止している。 PCIカードの表を正面に見て右にだけ切り欠きがあるものが5 V信号専用、左にのみ切り欠きがあるものは3.3 V信号専用、左右に切り欠きが有るものは5 V信号と3.3 V信号の両方に対応している。 PCIデバイスは、各々のベンダが固有のPCI IDを持つ。 マザーボードや相性にもよるが、AGPコネクタの隣に位置するPCIコネクタはリソース等の競合が起こる事があり、正常に動作しない場合は、別のPCIスロットを使用して再確認する事が推奨されている。大型のクーラーを装備するビデオカードの場合、隣のPCIスロットが物理的に使えないこともしばしばである。 特に規定があるわけではないが、スロットのコネクタ色は白色が多い。 ISAバスとは、部品を実装する面が向きが逆であり、ATXの縦型ケースでは、部品面が下になる。これはAGP、PCI-EXpressにも引き継がれた。 ISAバスとPCIバスが混在した時期においては、隣接するISAバスとPCIバスは、PCケースのブラケット取り付け部分を共用するために、同時には使えないことが多かった。このためPCI, ISA3本ずつでも、PCI2, ISA2, PCI/ISA1と表記される事もあった。 PCIバスは、当初CPUアーキテクチャに全く依存しないデバイス間を結ぶ内部高速バスLocal Glueless Busとして、1991年にインテルから提案された。 その当時、PC/AT互換機においては、標準の拡張バスであるISAバス（いわゆるATバス）が低速、かつバス調停機能が存在しなかったため、高速なデバイス（VGAやLAN、SCSI等）の接続、マルチタスクオペレーティングシステムの運用などの際にボトルネックになっていた。 そのため、全く新しい設計の16/32ビットバスであるMCAバス、ISAバスを拡張しそれに対する上位互換機能を備えた32ビットバスであるEISAバス、i486のメモリバスをそのまま引き出したVLバスなどが登場したが、MCAバスは高度なバス調停機能を持つがISAバスとの互換性が無く、また特許権の問題からIBM以外にはほとんど普及せず、EISAバスは高度なバス調停機能による高価格化とISA互換によるデータ転送速度の不足、VLバスは転送速度は充分（50 MHz駆動時200 MB/s）だがi486アーキテクチャに強く依存し互換性・安定性が不十分でバス調停機能は存在しなかった。 このため、インテルの提案を受けた各社から、ISAを代替する高速な標準汎用バスとしてLocal Glueless Busを外部バス化する要求が多く寄せられた。 この要求に対し、PC/AT互換機やPC-9821シリーズへの実装を目的とした機種依存仕様の追加、64ビットバスへの拡張対応、拡張スロット形状を含めた最終の形に近いPCIバスの仕様が、インテルを中心として策定された。 PCIバスは、策定当初からアーキテクチャに依存しない汎用高速バスとして設計されていたが、PC/AT互換機における標準バスとしての地位が約束されていた訳ではなかった。このため、PCIバスを搭載した初期のマザーボードにはEISAバスとVLバスも搭載するという変則的な製品やVLバス上にPCIブリッジを実装する製品も存在した。 PCIバスはワークステーションやサーバ、オフィスコンピュータなどの方面にも同時に取り入れられていった。この方面ではEISAバス、APバス、VMEバスなどを使用していたが、特にコンピュータグラフィックや衛星画像処理などで大規模な画像データを表示する必要に迫られたり、大規模なデータを取り扱うSCSI等にいちはやく取り入れられていった。同時に、i486系のCPUを持つワークステーションのみならず、R4400、R10000等、MIPS系のRISC型CPUを持つワークステーションやサーバ等でも利用できるよう、PCIコントローラーが開発され実装されていった。サーバなどのボードの拡張を容易にするため、PCIブリッジと呼ばれる外部筐体にPCIバスを拡張するコントローラーも開発され、i486系、MIPS系のサーバに使用されている。 2002年には、PCIとAGPの後継規格であるPCI Expressが発表される。 1991年 原案である「Local Glueless Bus」が発表。 「PCI Local Bus」として規格化すべく PCI SIG が設立された。 1992年 PCI 1.0策定。 内部接続バスとしての仕様のみ規定され、見切り発車などとも言われた。 1993年 PCI 2.0策定。 64bit規格、コネクタ仕様等が制定され、製品への本格的な実装が開始された。 1994年 PCI 2.1へ改訂。 Delayed Transactionの明文化、PCIバスブリッジや66 MHzの仕様が盛り込まれる。 1999年 PCI 2.2へ改訂。 MSI (Message Signaled Interrupt) というサイドバンド信号線無しで割り込み通知等の機能が追加され、これに準拠した別ケーブル無しでのWOL対応イーサネットカードやPCMCIAインタフェースが販売された。 2000年 PCI 2.3へ改訂。 5 V信号のみで動作する拡張カードの廃止。5 V信号で動作するマザーボード側スロットは引き続き仕様に含まれる。 2002年 PCI 3.0制定。 5 V信号で動作するマザーボード側スロットの廃止。5 V信号と3.3 V信号の双方に対応する拡張カードは引き続き仕様に含まれる。 2002年 派生規格 PCI-X 1.0b 及び PCI-X 2.0制定。 64bit PCIの後継規格で、1バスセグメント内で66 MHzなら4本、100 MHzなら2本、133 MHz動作なら1本のスロットが使用可能などの機能拡張が行われている。 PCI-X 2.0では、信号電圧の1.5 Vへの動的変更を行うことで、DDR (Double Data Rate:倍速)やQDR（Quad Data Rate : 4倍速）でのデータ転送をサポートする。 2002年 後継規格 PCI Express 1.0制定。 プロトコルと信号が混在していたPCIを見直し、各層を完全に分割し、スケーラビリティを確保した規格。これ以降のPCの標準汎用拡張バスとなった。 2003年 ExpressCard策定。 PCカードにおけるPCI Express派生規格としてExpressCardが策定され、一時期はPCカードスロットの置き換えが進められた。しかしビジネス向けノートでは旧来のPCカードの需要が根強かったことや、急速に小型化が進んだネットブックではUSBやメモリーカード用スロットで済まされるケースが目立ったこともあり、結果的にPCカードほどは普及せずに衰退した。