PCI Express

PCI Express（ピーシーアイエクスプレス）は、2002年にPCI-SIGによって策定された、I/Oシリアルインタフェース、拡張バスの一種である。書籍、文書ではPCIeと表記されることも多い。この表記はPCI-SIG自身もウェブサイト上で使用している。PCI-Xはパラレルインタフェースの別規格である。 PCIバス、およびPCI-Xバスの欠点を補うべくインテルが開発を進めていた3rd. Generation I/O、3GIO（スリージーアイオー）を基とする。 PCI Express 1.1は、1レーンあたり2.5Gbpsでデータ転送に80パーセントが使用され、送信／受信を分離した全二重方式を採用し、計5Gbpsの転送速度を持つ。これは従来の32ビット/33MHzのPCIバスに比して3倍から4倍に迫り、AGP_2xモードのそれに近い。高度な3D描画処理を行わないビデオカードならばx1モードでも充分な転送速度を確保できる。またレーンを複数束ね、さらに低レイテンシ、高転送速度を可能とするx2、x4、x8、x16、x32も仕様化されている。 特にPCI Express x16は、バススロットに用いるコネクタの物理的長さが従来のAGPやPCIに近く、AGPに代わるビデオカードのインタフェースとして利用されている。転送速度は8GB/s（2.5Gbps時、送受信それぞれ4GB/s）で、AGP_8xモード比でおよそ4倍弱となる。 PCI Express x1をベースとした新たなPCカード規格ExpressCardはノートパソコンなどに採用される。ノートパソコンなどで内蔵の無線LANボード用に多く採用されるmini PCI Express端子がはPCI Express (x1) とUSB2.0の信号配線がある。mSATA端子と端子形状は同一だが信号線の互換性はない。 規格1.1は先行して1.0と1.0aがある。 伝送路1レーンあたりの物理レイヤの帯域は片方向2.5Gbpsで双方向で5.0Gbpsでだが、実効データ8ビットの送信に物理レイヤ上で2ビットの同期制御ビットを加える8b/10bエンコード方式を用いており、実効データ転送速度は片方向250Mbyte/secで双方向500Mbyte/secになる。ポートは1レーン、2レーン、4レーン、8レーン、12レーン、16レーン、32レーンなどをそれぞれx1、x2、x4、x8、x12、x16、x32と表す。伝送路のレーンを束ねることでポートのデータ転送速度向上が可能である。レーンを16束ねたPCI-E 1.1 x16の通信ポートの実効データ転送速度は、片方向4GB/s、双方向では8GB/sになる。 2007年1月15日にPCI-SIGが発表した。 速度をPCI Express 1.1の2倍に引き上げ、1レーンあたりの物理帯域は片方向5.0Gbpsで実効データ転送速度は片方向500Mbyte/secで双方向1Gbyte/secである。 2010年11月18日にPCI-SIGが制定した。 当初は1レーンあたりの物理帯域10Gbpsを目標としたが技術的困難から8Gbpsに改め、エンコード方式を128b/130bに変更して転送効率を向上させた。PCI Express 3.0は従来の1.1や2.0の機器とも接続互換性を有する。実効データ転送速度は当初目標のPCI Express 2.0比約2倍となり、1レーンあたりの実効データ転送速度は片方向0.9846Gbyte/secで双方向1.969Gbyte/secとなった。PCI Express 3.0のポートは規格上最大32レーンまで束ねられ、1ポートの最大の実効データ転送レートは片方向31.51Gbyte/sec、双方向63.02Gbyte/secである。PCI Express 3.0以降は#物理レイヤの帯域をギガビット毎秒 (Gbps) でなくギガトランスファ毎秒 (GT/s) で表記することが多くなった。 2017年10月に策定、公開。 1レーンあたりの物理帯域をPCI Express 3.0 (Gen3) の2倍に引き上げて片方向16GT/sとする。 2017年6月7日にPCI-SIGが発表。2019年内の策定完了を目指している。 PCI Express 3.0 (Gen3) の4倍、PCI Express 4.0 (Gen4) の2倍の速度である32GT/sを実現する。 PCIバスなどのパラレルインタフェースでデータ転送速度の向上は、 バス幅を拡幅してデータ線を増加 単位時間あたりの転送回数を増加を企図して高クロック化 が奏功する。PCIバスはこ初の32ビット/33MHz（133MB/秒）から64ビット/66MHz（533MB/秒）までデータ転送速度が引き上げられた。PCI-Xバスは、バスクロックのDDR/QDR化も含め64ビット/1066MHz相当まで仕様化されている。 上記手法の高速化は限界がある。バス幅の拡大はデータ線の増加、LSIのピン増加、として製造コスト上昇の要因となる。クロックの高速化はデータとクロックタイミングを一致させるため、LSIとボードの設計と製造に高度技術が求められてコストが増加する。PCI-Xは厳密な設計が要求されるため民生品の商品化は価格面で困難で、パーソナルコンピュータのまで普及しなかった。 かつては製造コストに比して性能が上昇したが、高速化の限界を迎えてインテルはメインメモリインターフェイスのシリアル化を提唱した。 PCIバス登場当初から一貫してパーソナルコンピュータ市場で広く普及しているPCIバスのモードは、32ビット33MHzだった。バス伝送帯域は主に3Dグラフィックスカードが消費していたがAGPによって事実上隔離されており、PCIバスは安泰であった。チップセット内部ないしはブリッジチップでPCIバスに接続されるハードディスクのインタフェースのIDEは、サポートする転送速度を次第に引き上げて2000年に66Mバイト/秒、2002年に100Mバイト/秒の転送速度をサポートした。ハードディスクの転送速度は追いついていなかったが、民生品市場でRAIDが流行し、高性能なビデオ編集用カードの普及し、PCIバスに接続されるギガビットLANの1000BASE-Tが発売され、ユーザは転送速度の向上を志向した 1本の信号線と付随して基準線とするアース線でデータ伝送を行うシリアルインタフェースはRS-232Cが知られる。パリティビットによる簡易な誤り検出訂正しか物理層に組み込めず、誤り訂正が増加する高速データ転送に不向きとされていた。 パラレルデータにクロックを埋め込みシリアル・データ化する8b/10b技術をIBMが開発し、シリアル転送が再び着目された。イーサネットで採用されて普及が広まると8b/10b機能を搭載したSERDESチップの価格が低下し、ファイバーチャネルやギガビットイーサネット (GbE) で転送速度も高速化された。 I/Oインタフェースの転送速度不足解消のために次世代インタフェースを模索していたインテルは、シリアルインタフェースであるNGIO (Next Generation I/O) の開発を開始し、ヒューレット・パッカードやIBMも、PCIバスに代わるI/OインタフェースとしてFuture I/Oと呼ばれるシリアル・インタフェースを開発していた。 両者は後に統合されてInfiniBandとなったがソフトウェアレベルでPCIバスと互換性を有さず、マイクロソフトなどもサポートに消極的で、現在[いつ?]スーパーコンピュータのノード間接続など低遅延で高スループットな要求分野で利用される。 インテルはこの失敗を教訓として3GIO (Third Generation I/O) の開発を開始した。ソフトウェア・レベルでPCIバス完全互換とし、正統なPCIバスの後継者とすべくPCI ExpressとしてPCI-SIGでの仕様化が行われた。 PCI Expressは従来のPCIバスが作動するオペレーティングシステム (OS) で新たなサポートなく作動する。WindowsはVistaで正式に対応した。 パーソナルコンピュータ向けマザーボードへの実装は比較的早くに行われた。主に搭載されるのはx16とx1である。転送速度が何よりも要求される3Dグラフィックスカードでは特に歓迎され、2005年頃にAGPからの置き換えがほぼ完了し、2016年現在では3Dグラフィックスカードのシェアの大半を獲得するまでに成長している。かつて主力であったAGP用のグラフィックスカードは、旧来システムのグラフィックス機能のみ更新を希望する消費者に販売されている。 マザーボード市場でAGPスロットを有する製品は、現在は僅少である。汎用バスとしては2016年現在で従来のPCIスロットを全廃したマザーボードもある。サーバ向けマザーボードは依然として64ビットI（6はPCI-Xを実装したものも多い。 ATAカードをはじめとしたインタフェースカード類は比較的早くから PCI Express (x1) に移行しており、ビデオキャプチャ、テレビチューナ、サウンドカードなどマルチメディア関連商品はPCI Expressでが多い。旧来システムのアップグレードパスとしてモデルチェンジを行わず販売を継続しているPCI製品もある。2016年現在でATXマザーボードの拡張スロットはPCI Express x16、x1、PCIの3種類を採用したものが多く、PCIの需要よりチップセット側のPCI Expressの総帯域制限によるものが多い。オンボードデバイスは、従来PCIバスを用いて接続していた物を完全にPCI Express接続に置き換えたマザーボードが大半である。IntelはP67以降のメインストリーム向けチップセットからPCIをサポートしておらず、別途ブリッジチップを用いてPCI Express経由で接続している。2012年後半からPCI Express 3.0仕様に対応したマザーボードやビデオカードが発売された。 データ転送方式はPCIバスのハンドシェークと異なり、ネットワークでパケット送受信される。アーキテクチャはレイヤ構造を有し、トランザクション・レイヤ、データリンク・レイヤ、物理レイヤの3層構造となっている。 送信では、CPUや他デバイスから発行されたリクエストは、トランザクション・レイヤで上位のソフトウェア層に対してPCIと互換性のある機能を提供するパケットを付加され、データリンク・レイヤに渡される。データリンク・レイヤーは、接続されている相手側デバイス間との送受信の制御を担っており、パケットにシーケンス番号、CRCを付加して物理レイヤに渡す。物理レイヤはシリアル転送を受け持つ部分で、Gen1, 2では8b/10b変換、Gen3では128b/130b変換などを行い、SERDESによりパケットがシリアル・データとして送られる。 また、トポロジは、従来のPCIのマルチ・ドロップ型ではなく、ポイント・ツー・ポイント接続である。ポートの拡張はスイッチを必要とする。 トランザクション・レイヤは主にトランザクション・レイヤ・パケット (Transaction Layer Packet : TLP) の生成と復号を担う。TLPはリードやライトといったコマンドやアドレス、データなどから構成される。トランザクション・レイヤは接続相手とのフロー制御も行う。PCI Expressのフロー制御はクレジット・ベースで行われ、予め自分が受信することの出来るバッファのサイズを相手に通知し、バッファに空きが出来るたびに伝える方式である。送信側は自身が送信したパケットのサイズを積算し、送信相手からバッファの空きが伝えられるとその分を減算することで、送信相手のバッファ・サイズを超えることなくパケットの転送が可能となる。 トランザクション・レイヤはパケットを任意のサイズに分割する機能を有する。一つのTLPで最大4Kバイトのメモリ・リードを発行することが可能であるが、メモリから4Kバイトを一度で読むことは都合が悪い場合がある。メモリ・リードでキャッシュ・コヒーレンシを維持するシステムの場合、CPUに対しキャッシュに最新データの有無を問い合わせる。インテル系の32ビットCPUはキャッシュ・ライン・サイズは64バイトで、4Kバイトのメモリ・リードは全て64バイトの64個のメモリ・リードに分割される必要がある。トランザクション・レイヤは自デバイス内で、都合良くパケットを分割する。1つのRead requestのデータを返す時に複数のcompletionに分割して返すこともできるが、返すデータの順序は入れ換えられない。 トランザクション・レイヤは以下の4個のアドレス空間をサポートする。 Memory 空間 I/O 空間 Configuration 空間 Message 空間 前者3空間はPCIバス互換の空間である。Message空間は、従来サイドバンド信号で通知を行っていたもので、割り込み、電源制御などの通知に使用される。 データリンク・レイヤは、トランザクション・レイヤと物理レイヤの中間に位置し、主にPCI Expressリンクの管理、エラー検出と訂正を担う。 送信側データリンク・レイヤは、トランザクション・レイヤから渡されたTLPをバイナリ値としてデータを保護するためのCRCを算出し、TLPの授受を確認するためのシーケンス・ナンバをTLPに付加して物理レイヤに渡す。受信側はCRCによるデータ化けチェックと、シーケンス・ナンバによるパケット欠落チェックを行う。 受信側でエラーを見つけた場合、送信側に再送を促すためにNAK (Not Acknowledge) パケットをエラー検出したTLPのシーケンス・ナンバと共に送信側に返す。正常にTLPを受信した場合は、同様にACK (Acknowledge) パケットを返す。 エラーによるパケットの再送機能もデータリンク・レイヤが受け持っており、NAKを受信した場合そのシーケンス・ナンバから全て送信し直すため、データリンク・レイヤ内に再送バッファが実装される。 データリンク・レイヤは、TLPの送受信の他にもDLLP (Data Link Layer Packet) と呼ばれるデータリンク・レイヤ同士でのみ情報を交換するパケットも送受信する。ACK、NACKパケットや、フロー制御に使用するバッファ・サイズ通知などもDLLPが使用される。 物理レイヤは入出力バッファの制御回路、シリアル-パラレル/パラレル-シリアル変換回路、PLL、インピーダンス調整回路などで構成される。 PCI Express 1.1の物理メディアは2線、800mV差動で400ps単位でデータのドライブされる。送信、受信専用の信号を必要とする全二重方式で、x1の場合に実際は4本の信号が使用される。 PCI Express 1.1までは2.5GT/sでデータ転送しているが、PCI Express 2.0は5.0GT/sで転送している。PCI Expressをケーブルで接続するための仕様検討も行われている。 物理レイヤは将来的により高速なメディアに置き換えられることから、物理レイヤとデータリンクレイヤ間のインタフェースは特に規定されておらず各ベンダの実装に依存している。 PCI Express Card Electromechanical Specificationとして拡張カードの電気および物理形状が規定され、カードエッジを含むコネクタの仕様も規定される。 ロープロファイルPCI Expressは物理形状がPCI Expressより小さい。 x1のスロットは18番ピンまでで終わり、x8やx16はこれをさらに伸ばしたものになる。 Reserved for future second PCI Express Lane (if needed) Reserved for future Subscriber Identity Module (SIM) interface (if needed) Reserved for future wireless disable signal (if needed) Reserved for future wireless coexistence control interface (if needed) スロットからの最大供給電力を超えるカードについては、下記のとおりATX12V Ver2.xの補助電源プラグ経由で超過分を供給する。 6ピン1本：最大75W、スロットからの供給と併せて最大150W 6ピン2本：最大150W、スロットからの供給と併せて最大225W 6ピン1本、8ピン1本：最大225W、スロットからの供給と併せて最大300W PCIバスは32ビットバスのデバイス/スロットと64ビットバスのデバイス/スロットの全ての組み合わせで動作が保証されていたが、PCI Expressはx16仕様のカードをx8仕様のスロットに挿入できない。マザーボードにはx1/x4/x8コネクタのエッジに初めから切り欠きが設け、x16仕様カードを挿入可能な「エッジフリー」と称する製品もあるが、カード端子の物理的保護などの問題点は解消されないIntel DX58S0がある。解決事例に、アップルのMac ProやIntel 3シリーズ以降、AMD 7シリーズのマルチGPU対応チップセット搭載マザーボードが採用した実装などがある。後述の利点を参照。 PCI Expressの利点の一つとしてレーン数のフレキシビリティが挙げられる。カードエッジコネクタがx16形状でもx1モードで規格上は動作可能で、上位の長いスロットに下位の短いカードエッジコネクタは挿入可能である。BIOS上もしくはOS上から、チップセットのサポートレーン数を上限としてユーザーが任意に設定する設計も可能である。 合計レーン数の上限を26として４つのx16用物理スロットに対し x8 x1 x1 x16（余り0） x4 x4 x1 x16（余り1） x8 x1 x8 x8（余り1） x4 x4 x8 x8（余り2） と複数の振り分け選択も可能である。余剰レーンの未使用による不利益は無い。x16モードで動作するスロットにx1専用カードを挿入しても問題なく動作する。 スロットコネクタの物理規格は、スロットに割り振り可能な規格上のレーン数上限を示す。マザーボード設計者は、使用するチップセットのサポートレーン数の範囲内で、スロット本数と与えるレーン数の設計が可能である。 ^ PCI-SIG、PCI Express base specification 3.0完成をアナウンス ^ a b c 佐藤 岳大 (2017年10月27日). “PCI-SIG、16GT/sを実現するPCI Express 4.0規格Ver 1.0を公開”. PC Watch. https://pc.watch.impress.co.jp/docs/news/1088490.html 2017年10月27日閲覧。  ^ PCI Express Card Electromechanical Specification 1.1 ^ PCI Express x16 Graphics 150W-ATX Specification Revision 1.0（2004年10月25日） ^ PCI Express 225/300 Watt High Power CEM Spec 1.0（2008年3月27日） ^ PCI Express 225/300 Watt High Power CEM Spec 1.0（2008年3月27日） ^ 端子レイアウト的には、x16仕様のカードをx8スロットに差し込んで使用可能だが、規格上物理層は実装依存のため、動作保証外である（カード側でサポートされていれば8xとして動作する）。エッジ・コネクタの物理的切断・コネクタの一部を削り取るという乱暴な手段を講じなければならない。 Accelerated Graphics Port (AGP) Peripheral Component Interconnect (PCI) HyperTransport Thunderbolt NVM Express (NVMe) NVLink Adam H. Wilen, Justin P. Schade and Ron Thornburg:"Introduction to Pci Express: A Hardware and Software Developer's Guide", Intel Press, ISBN 978-0970284693 (2003年4月）. Mindshare Inc., Ravi Budruk, Don Anderson and Tom Shanley: "PCI Express System Architecture", Addison-Wesley Professional, ISBN 978-0321156303 (2003年9月). 荒井 信隆, 里見 尚志, 田中 顕裕：「PCI Express入門講座―高速シリアルインタフェースの基礎知識と実際」（改訂新版）、電波新聞社、ISBN 978-4885549632（2008年6月）. 畑山仁（他）：「PCI Express設計の基礎と応用―プロトコルの基本から基板設計、機能実装まで」、 CQ出版 (インターフェース・デザイン・シリーズ)、ISBN 978-4789846417（2010年5月）. 内藤竜治：「FPGAでゼロから作るPCI Express―PC拡張用の定番バスはこうやって動かす」、 CQ出版 (TECH I―BUS Interface)、ISBN 978-4789849821（2013年4月）. Mike Jackson and Ravi Budruk: "PCI Express Technology 3.0", MindShare Press, ISBN 978-0977087860 (2012年10月）. PCI Special Interest Group PCI Special Interest Group - PCI Express