PCI Express - PCI Express 規格の概要
概要
このドキュメントでは、広く普及している PCI バスの成功について触れるとともに、次世代の高性能 I/O 相互接続テクノロジであるPCI Express について説明します。PCI Express は、今後の様々なコンピュータプラットフォームに対応する標準ローカル I/O バスとして期待されています。また、PC バスのこれまでの発展を技術面から振り返るとともに、PCI Express の物理層およびソフトウェア層、PCI Express の利点、計測・オートメーションシステムにおけるこの新しいテクノロジの有用性などについても説明します。
目次
PC の歴史
PCI バスが1990年代初めに登場したとき、VESA ローカルバス、EISA、ISA、Micro Channel など、当時 PC で利用されていた多くの I/O バスが、図1に示すように PCI バスに一本化されるという動きがありました。当初は、チップ間の接続と、ISA バスに代わる次世代バスとして実装され、当時の主流周辺機器の I/O 帯域幅には、33 MHz の PCI バスは適していました。しかし、PCI バスの周波数は33 から 66 MHz に向上しただけなのに対し、プロセッサ速度は33 MHz から 3 GHz と劇的に進化し、ギガビットイーサネットや IEEE 1394B などの最新 I/O テクノロジは、利用できる PCI バス帯域幅のほとんどを専有してしまうほどになりました。

図1. PC バスの発展
PCI バスの歴史と概要
PCI バスには、旧型のバスに比べいくつかの利点があります。 中でも最も重要なのは、プロセッサの独立、絶縁バッファ、バスマスタリング、およびプラグアンドプレイです。絶縁バッファは基本的に、電子的およびクロックドメインの両方においてCPU ローカルバスを PCI バスから絶縁します。この機能により PCI バスと CPU バス上で並列処理を行えるだけでなく、PCI バス速度や負荷にも依存しないので CPU ローカルバス周波数の向上が可能です。 また、バスマスタリング機能により、PCI デバイスは CPU のサービスを待つことなく PCI バスへアクセスすることが可能となります。CPU を介さないことで、全体的な遅延や I/O 処理にかかる時間を短縮することができます。 最後に、プラグアンドプレイ操作によりデバイスが自動的に検出・構成されるため、ISA ベースのボードでは必要であったベースアドレスや DMA 割り込みのスイッチおよびジャンパの手動設定が不要となります。
PCI の課題
PCI はこれまで幅広く使用されてきましたが、現在では、帯域幅やホストのピン数の制約、リアルタイムで行われるアイソクロナスデータ転送などのサービスの欠如といった問題が表面化しています。また、サービスの質、電源管理、I/O の仮想化といった次世代型 I/O に必要とされる機能も求められています。
PCI が発表されて以来、高まり続ける I/O に対する需要に応えるため、PCI 仕様は数回の改定が実施されてきました。それをまとめたのが表1です。

表1. PCI 帯域幅と市場での利用方法
PCI バスの使用可能な帯域幅は、プロトコルのオーバーヘッドとバストポロジが原因で、理論上の帯域幅をはるかに下回っています。さらに、PCI バスでは、使用可能な帯域幅をバス上のすべてのデバイスが共有するため、デバイスの数が増えるごとに各デバイスでの使用可能な帯域幅は低くなります。
アプリケーションによっては PCI のクロック周波数では不十分であるため、PCI-X や AGP(Advanced Graphics Port)を使用して、バス帯域幅を向上させる方法を追及してきました。 しかし、周波数を上げることにより、バスのルーティング可能な距離が短くなり、バス・トランシーバが駆動できるコネクタの数が減少するため、PCI バスを複数のセグメントに分割する必要性が生じています。各セグメントでは、すべての PCI-X バスをそれぞれのアクティブスロットへルーティングする必要があり、そのためには、64ビットの PCI-X で、各セグメントにつき150のピンが必要となります。明らかにこの方法は実装にコストがかかり、ルーティング、プリント基板の層数、チップのピン配列などでも負担となってしまいます。このようなコストで採算がとれるのは、サーバなどのように帯域幅が非常に重大な意味を持つ場合のみです。
データ集録、波形生成、オーディオ/ビデオのストリーミングなどのマルチメディアアプリケーションでは、グリッチが発生しないよう、確実な帯域幅と確定的な待ち時間が要求されます。最初の PCI 仕様では、開発当時そのようなアプリケーションが広く普及していなかったため、そういった問題に対しての対処は考慮されていませんでした。 しかし、高精細の非圧縮ビデオ/オーディオなどに代表される昨今のアイソクロナスデータ転送では、I/O システムにアイソクロナス転送を搭載する必要性が出てきました。アイソクロナス転送では、PCI Express デバイスがバッファ処理を行うのに必要とするメモリ使用量がはるかに少なくすむという効果があります。
最後に、サービスの質や電源管理などの次世代I/O 要件により、データの整合性が向上し、システムデバイスの一部の電源を選択的に切ることも可能になります。これらは、近年の PC の必要電力が高まる中で、非常に重要な機能です。 また、仮想チャンネルを使用することで、データを仮想経路からルーティングすることができるため、処理中の操作によって他のチャンネルがふさがっていても、データ転送を行うことが可能となります。これらの機能のいくつかは、従来型の PCI 以上のソフトウェア制御能力を要するため、OS やデバイスドライバでサポートされている必要があります。
PCI バスは、アプリケーション分野によっては限界が出てきていますが、PCI Express への移行は長期化されると考えられているため、PCI バスは今後も I/O の拡張において使用されていくと予想されています。しかし、2004年以降に発売された PC には、PCI スロットとPCI Express スロットの両方が搭載されており、次第にPCI Expressも市場に導入されてきています。
PCI Express アーキテクチャ
PCI Express のアーキテクチャは、図2に示すように階層が既定されています。PCI アーキテクチャとの互換性も保たれているため、既存のアプリケーションやドライバがすべてそのまま動作するよう保障されています。 また、PCI Express での構成は、PCI プラグアンドプレイ仕様で定義された標準メカニズムを採用しています。ソフトウェア層では読み取りおよび書き込みがリクエストされ、それがトランザクション層でパケットをベースとしたスプリットトランザクションプロトコルを用いて I/O デバイスに転送されます。リンク層では、パケットにシーケンス番号と CRC が追加され、非常に信頼性の高いデータ転送メカニズムを提供します。基本の物理層は、送信ペアおよび受信ペアとして一方向2本の信号線から構成されており、レーンによって情報の伝送が行われます。初期速度が2.5 Gb/秒であるため、公称帯域幅は1つの PCI Express レーンにつき各方向でおよそ250 MB/秒ですが、オーバーヘッドを考慮に入れると、200 MB/秒ほどになります。それでも旧型の PCI デバイスに比べると、2倍から4倍向上しています。また、デバイス間でバス帯域幅を共有するPCI とは異なり、各デバイスに対し帯域幅が与えられます。

図2. PCI Express の階層型アーキテクチャ
物理層
基本的な PCI Express リンクは、図3に示すように、一方向2本の2組の低電圧信号線で構成されています。物理リンク信号は、ディエンファシススキームを採用して符号間の干渉を軽減しているため、データの整合性が向上し、データクロックは 8b/10b エンコーディングを使って埋め込まれているため、非常に高いデータレートを実現します。初期信号周波数の一方向あたりのデータレートは2.5 Gb/秒ですが、シリコン技術の進歩に伴って一方向10 Gb/秒(銅線信号の実用最大値)まで向上する見込みです。また、物理層では、2つの PCI Express エージェントのリンク層間でパケットを伝送します。

図3. PCI Express 物理リンク図
PCI Express リンクの帯域幅は、信号線を追加して複数のレーンを構成することにより、帯域幅を拡大することができます。物理層はx1、x2、x4、x8、x12、x16、およびx32のレーン幅をサポートしており、受信されるデータパケットはこれらのレーンの間で理論的に分割され、各バイトは、これらのレーンを通じ、8b/10bエンコーディングを使って伝送されます。このデータのアセンブリと再アセンブリは、他の層からは見えない透過的な形で行われます。初期化の際、各 PCI Express リンクは、リンクの両端にある2つのエージェントによるレーン幅と動作周波数のネゴシエーションに従ってセットアップされます。 また、PCI Express アーキテクチャは、速度アップグレードや高度なエンコード技術により、今後のPCI Expressにおける進化にも対応可能となっています。将来速度やエンコード技術、そしてメディアの影響を受けるのは、物理層のみとなります。
PCI Express で異なるレーン幅を使用するには、ユーザは常に注意を払って拡張ボードで必要な幅とマザーボードが提供するレーン幅を考慮する必要があります。x16のレーン幅を使用している一般的なグラフィックボードを除けば、初期の多くの PCI Express 拡張ボードはx1を採用しています。コンピュータに搭載されていた初期の PCI Expressは、コンピュータを売り出す市場によって、x16コネクタや、x1、x4、x8スロットの組み合わせを搭載していました。PCI Express では、レーン幅が一致しない場合でも、不一致の方向によっては相互操作性を確保しています。 PCI の場合、32ビットスロットに64ビットの PCI ボードを挿入することができますが、PCI Express では幅の狭いコネクタに幅の広い拡張ボードを挿入することを、拡張ボートとコネクタの設計によって、物理的に防止しています。幅の狭い拡張ボードと幅の広いコネクタを使用した場合の不一致は許容構成ですが、このような構成の場合マザーボードベンダはx1のデータレートのみのサポートしか提供できないため、x1以上の高速インタフェースを備えた拡張ボードを最大限に活用することができません。 このような場合、特定のマザーボードが拡張ボードを最高データレートで処理可能かどうかマザーボードのメーカーにお問合せの上、個別に確認していただく必要があります。たとえば、あるマザーボードは、x4の拡張ボードをx8やx16のスロットに差し込んだ場合でも、最高のx4のデータレートで処理することができますが、同メーカーの別のマザーボードは、x1でしか実行できないものもあります。 また、マザーボードが今後のグラフィックスの拡張に備えて、統合型(オンボード)グラフィックコントローラとx16の PCI Express スロットの両方を搭載している場合、オンボードグラフィックが有効になっている際は通常x16スロットを同時に使用することができません。
データリンク層
リンク層の主な役割は、PCI Express リンク経由でのパケットの伝送を確実に行うことです。リンク層は、データの整合性の維持に関与する層で、図4に示すように、シーケンス番号と CRC をトランザクション層のパケットに付加します。パケットの大部分は、トランザクション層で生成されます。確認ベースのフロー制御プロトコルでは、受信側でバッファの用意ができていることがわかっている場合のみ、それらのパケットが転送されます。そのため、パケットの再送信とリソースの制限によるバス帯域幅の浪費を避けることができます。 また、リンク層では、破損していると障害が報告されたパケットを自動的に再転送します。

図4. データリンク層でデータの整合性を確認する機能を追加
トランザクション層
トランザクション層では、ソフトウェア層から読み取り/書き込み要求を受け取り、リンク層に送信するための要求パケットを作成します。すべての要求はスプリットトランザクションとして実装され、要求パケットの中には応答パケットが必要なものもあります。またトランザクション層では、リンク層から応答パケットを受信し、それを元のソフトウェアからの要求と照合します。各パケットには、応答パケットが正しい発信元に送信されるように、固有の識別子が添付されており、パケット形式には、32ビットのメモリアドレス指定と拡張型64ビットメモリアドレス指定があります。また、パケットには「no-snoop」、「relaxed ordering」、「priority」などの属性が付けられ、I/O サブシステム内でそれらのパケットを最適な方法でルーティングするために用いられます。
トランザクション層は、3つの PCI アドレス空間(メモリ、I/O、構成)とメッセージスペースを含む、計4つのアドレス空間を提供します。PCI 2.2 では、MSI (Message Signaled Interrupt)と呼ばれる、システム割り込みを伝送するもう1つの方法が導入されました。このオプション機能は、特殊な形式のメモリ書き込み方法を使用するものです。PCI Express 仕様では、割り込み処理の主な手段としてこのMSI のコンセプトを採用しており、メッセージスペースを使用して、割り込み、電源管理要求、リセットなど、主要なサイドバンド信号などを取り込まれたメッセージとして処理します。また、PCI 2.2 仕様に含まれる割り込み応答なども、帯域内メッセージとして実装されています。そのため、PCI Express メッセージは、現在プラットフォームの実装に使用されている広範なサイドバンド信号を除去する効果があるため、「仮想ワイヤ」と考えることができます。
ソフトウェア層
PCI Express において、ソフトウェアの互換性は最重要視されています。ソフトウェアの互換性には、初期化(列挙)とランタイムという2つの面があります。PCI には、高性能な初期化モデルがあり、OSが接続されているすべてのハードウェアデバイスを検出し、メモリ、I/O スペース、割り込みなどのシステムリソースを割り当てて、最適なシステム環境を構築します。PCI の構成スペースとI/O デバイスのプログラミング機能は、PCI Express アーキテクチャでも重要な概念として維持されています。また、PCIで採用されているランタイムソフトウェアモデルは、PCI Express アーキテクチャ内で保持され、すべての既存ソフトウェアをそのまま実行することが可能なロード-ストア型の共有メモリモデルとなっており、新しいソフトウェアでも、高度なスイッチ操作など PCI Express のいくつかの機能を利用することが可能です。
PC アーキテクチャの現在と今後
PCI を使った PC アーキテクチャ(2002年)
2002年当時の PC アーキテクチャは、インターコネクトによって条件が異なっていました。例えば、図5に示すように、グラフィックボードはAGP(Advanced Graphics Port)を介して接続され、メモリブリッジは HubLink などのインタフェースによって I/O ブリッジに接続されていました。

図5. 2002年当時の PCI を使った PC アーキテクチャ(Intel 社提供)
PCI Express を使った PC アーキテクチャ
図6に示すように、PCI Express は共通のバスアーキテクチャによって I/O システムを統一しています。またPCI Express は一部のサブシステムを連結するためにも使用されています。

PCI Express のパッケージング
PCI Express は、ノートブック、デスクトップ、サーバなど、さまざまなプラットフォームに対応するI/O 拡張形式を提供しています。サーバは、I/O の要求を満たすためにより広い帯域幅を必要とするため、多数の PCI Express スロットが搭載され、それらのスロットには多くの PCI Express レーンが備わっています。逆に、ノートブック型は PCI Express アーキテクチャを内部的に採用している場合がありますが、中速の周辺機器用にx1のレーンを1つ備えているのみです。
デスクトップ型 PCI Express 拡張スロット
デスクトップおよびワークステーションマシン用の PCI Express拡張スロットは、現在の PCI ボードと非常に似通った機械構造となっており、ボードエッジコネクタと固定ブラケットを採用し、ブラケットから突き出しているI/O コネクタ部分がプリント基板に取り付けられています。マザーボード上のコネクタは固定機能が改善されているため、振動のある環境や輸送の際にもボードがコネクタから外れるようなことはありません。また、ボードエッジコネクタは、x1からx16まで、PCI Express のレーン幅によってサイズが決まっており、グラフィックボードの拡張には、マザーボードの AGP スロットに代わってx16が採用される予定になっています。図7は、4つのスロットを備えたマザーボードの写真です。下から上に、PCIe x16、PCI、PCIe x8、PCI-X となっています。従来型の PCI スロットも装備されており、今後開発されるマザーボードにもおそらく従来型の PCI スロットは長期にわたって搭載されることが考えられます。図8に示すのは、x16のリンクと3.2 GB/秒でデータ伝送可能な一般的なグラフィックボードです。図9は、さまざまな PCI Express コネクタを絵で示したものです。

図7. x16 PCIe、PCI、x8 PCIe、PCI-X の4つのスロットを搭載したマザーボード(下から上)

図8. x16のインタフェースを持つグラフィックボード

図9. さまざまな PCI Express コネクタの用器画
ExpressCard
ExpressCard 規格では、システムにハードウェアやメディアを簡単に追加することができます。主なターゲットは、拡張をそれほど必要としないノートブック型や小型の PC となっており、ExpressCard モジュールは、デスクトップコンピュータ用の従来型アドオンボードとは異なり、ツールを一切使わずにいつでも挿入したり取り出したりすることができます。また、デスクトップやノートPCで、デバイスを一貫した方法で簡単かつ確実に接続することができます。
ExpressCard テクノロジでは、既存のパラレルバスが、PCI Express および USB 2.0 という2つのスケーラブルな高速シリアルインタフェースに置き換えられています。ExpressCard 開発者は、モジュールを設計・開発する際に高性能のアプリケーションに適した PCI Express、もしくは、すでに広く普及している USB インタフェースを選択することができます。 モジュールベンダがどちらのバステクノロジを選択しても、エンドユーザはバスに依存することなく同じようにモジュールを使用することができます。
ExpressCard モジュールには、ExpressCard/23(34 mm 幅)とExpressCard/54(54 mm 幅)の2つの標準形式があります。モジュールの厚さはType II PC カードと同じ5 mm となっており、モジュール長は 75 mm で、標準の PC カードに比べ 10.6 mm 短くなっています。また、ExpressCard/34 と ExpressCard/54 は、同じコネクタインタフェースを採用しています。
ExpressCard モジュールに2つのサイズがあることで、システムメーカーは、以前のモジュール規格では実現できなかった柔軟性を得ることができます。ExpressCard/34 デバイスは小さめのシステムに適していますが、幅の広い ExpressCard/54 モジュールは、物理的に ExpressCard/34 のフォーマットに収まらない場合に採用することができます。図10 は、2つの ExpressCard モジュールのサイズを、PCMCIA CardBus モジュールと比較して示しています。ExpressCard/54 モジュールには、SmartCard リーダ、Compact Flash リーダ、1.8 インチディスクドライブなどがあります。ExpressCard/54 は、コンポーネント用のスペースが余分にあるだけでなく、小型の ExpressCard/34 モジュールより多くの熱エネルギーを放散するため、高性能アプリケーションには ExpressCard/54 が最適です。ただし、幅の狭いExpressCard/34モジュールは両方のサイズの ExpressCard スロットに挿入可能です。また、使いやすさを向上するため、ExpressCard/54 スロットには、ExpressCard/34 モジュールをコネクタソケットに簡単に挿入できるようになっており、ExpressCard スロットに CardBus カードを挿入(またはその逆)しても、どちらの部分も損傷しないようにも設計されています。
ExpressCard のホストインタフェースの各スロットは、PCI Express Base Specification 1.0a に定義されているとおり、各方向に対しベースラインの 2.5 Gb/秒のデータレートで動作する PCI Express レーン(x1)を1つ備えていることが義務付けられています。また、ExpressCard のホストインタフェースは、USB 2.0 仕様に従って、低、中、高速 USB データレートに対応している必要があります。両方のインタフェースを提供することが、ExpressCard 準拠のホストプラットフォームの条件であり、アプリケーションによって、標準インタフェースの一方または両方を使用することができます。

サーバ I/O モジュール
サーバには、シャーシを開けずに行うアダプタの着脱、ホットプラグ、静電放電 や誤操作からの保護、標準化された管理インタフェースおよび機能、十分な冷却機能、単一の電源、I/O 設置面積の縮小化などが必要です。サーバ I/O モジュール(SIOM)仕様では、2種類の PCI Express モジュール式パッケージが定義されており、これらのモジュールはホットプラグにも対応しているため、シャーシの電源が入っているときでも安全にモジュールの着脱を行うことができます。 また、これらの2種類のモジュールは高さと奥行きがまったく同じで、異なるのは幅、つまりシャーシ内に占めるスロットスペースのみです。シングル幅のモジュールは、すべての SIOM スロットに挿入可能となっており、ダブル幅のモジュールには、隣接する2つの SIOM スロットが必要です。
シングル幅の場合、最大x8の PCI Express 接続に対応し、ダブル幅は最大x16に対応します。(ダブル幅スロットは、PCI Express SIOM サーバでは任意です。)すべてのモジュールで標準となっている管理インタフェースは、アダプタ情報をホストシステムに提供するための EEPROM から構成されています。任意となっている内部ストレージインタフェースは、最大で4つの x1 SAS/SATAポートに対応しています。
SIOM および SIOM シャーシの冷却要件は同じです。SIOM シャーシは、仕様に従い、各スロットに対し最低限の通風を確保する必要があり、SIOM は、気流抵抗を最小および最大にすることにより、I/O 冷却用に定義されている気流を確保するとともに、シャーシに I/O 熱負荷がかからないようにする必要があります。
PCI Express の利点
PC ベースの計測・オートメーションシステムでは、長年にわたって、PCI バスがプラグイン拡張ボード用のバスとして採用され、今後も引き続き使用されていくと予想されています。しかし、パラレルアーキテクチャであるPCIバスは、PC の進化と同等の進展がなく、さまざまな問題が生じていました。PCI Express は、このようなPCIで発生した問題を、5つの主な分野で解決しています。
-
高性能 – 直接帯域幅と関係しており、x1リンクで PCI の倍以上の転送レートを提供します。レーンが追加されるとともに帯域幅も向上します。また、この帯域幅は、各リンクで双方向同時に使用できるというメリットもあり、将来的にはさらに速度が向上すると想定されています。
-
I/O の簡素化 – AGP、PCI-X、HubLinkなど、チップ間やユーザがアクセスできる内部バスの効率化が可能となりました。これにより設計が簡素化し、実装コストを削減することができます。
-
階層型アーキテクチャ – PCI Express は、ソフトウェア互換性を維持し、さらに新技術に適応できるアーキテクチャを採用しています。階層型アーキテクチャによる利点は、転送レートが向上する物理層と、ソフトウェア互換性部分のソフトウェア層にあります。
-
次世代型 I/O – PCI Express では、アイソクロナスデータ転送によりQoS(サービス品質)が保証されるため、確定的な時間依存方式によって遅れのない確実なデータ転送を実現できます。
-
使いやすさ – PCI Express では、システムの追加やアップグレードが大幅に簡素化され、ホットスワップおよびホットプラグ機能が備わっています。ホットプラグ機能はOS の機能に依存するため、ハードウェア起動時に時間を要する場合があります。また、SIOM や ExpressCard では、サーバやノートブック型コンピュータに周辺機器を接続するための機能が飛躍的に向上しています。
これらの機能によって、PC が次世代型計測・オートメーションシステムのプラットフォームとして、さらに進化していくことが可能です。
用語集
8b/10b エンコーディング – 組み込みのクロックで信号をエンコードする方式の1つ。エンコーディングには2つの目的があり、1つはデータストリーム内でクロックを取り出す際に必要な遷移時間が確保される点、もう1つはAC 結合システムでは0の数と1の数が同じになるためDC バランスが保たれることです。
AGP (Advanced Graphics Port) – 形状の異なるコネクタを使用したPCI バスの高速バージョンです。デスクトップ PC の専用プラグイングラフィックカードで要求される帯域幅に対応するよう開発されました。
CRC (Cyclic Redundancy Check)– データパケットから得られた計算値をパケットに追加することによって、情報パケットのビット誤差を検出し修正する方法。
差動 - 差動信号は、位相が180度ずれた信号を2本の信号線で伝送します。それにより、誘導ノイズに対する感受性を低減することができます。
ExpressCard - PCI Express と USB 2.0 の両方のインタフェースを搭載した小型の I/O カード。
ISA (Industry Standard Architecture)バス - 1984年に発表された PC 用の標準バスで、XT バスアーキテクチャを16ビットに拡張したものです。周辺機器をマザーボードに接続するために設計されたもので、AT バスとも呼ばれます。
PICMG(PCI Industrial Computer Manufacturers Group) - CompactPCI と PCI/ISA の仕様を管理しているメンバー企業からなる団体。
PCI(Peripheral Component Interconnect) - I/O 周辺機器を CPU に接続するための高速パラレルバスで、 Intel 社によって最初に設計されました。
PCI Express - PCI ソフトウェアモデルを維持したまま、複数本のレーンを束ねて使用可能な高速(2.5 Gb/秒)シリアルバス。
SIOM(Server I/O Module) - PCI Expressを使用したサーバおよびワークステーションアプリケーション用の I/O モジュール。
USB 2.0 - 最大 480 Mb/秒のデータレートを実現する外部差動型ポイント・ツー・ポイントシリアルバスで、 USB 1.1と同じケーブル、そしてコネクタに対応しています。
関連資料
Intel 社のPCI Express 関連資料
PCISIG
ExpressCard
法律関連事項
本チュートリアル(以下「チュートリアル」という)は、National Instruments(以下「NI」という)によって作成されたものです。本チュートリアルは、NIにてサポートされていますが、本チュートリアルの内容に関するテストや検査が完全に行われていない可能性があり、チュートリアルの品質について、もしくは、関連製品およびドライバの各改訂版に対するサポート継続については、何らの保証も適用されません。本チュートリアルは、いかなる保証もなく「作成された状態のまま」で提供されており、ni.com/jpの使用条件に特別に規定されている特定の制約事項に従うものとします。 (http://ni.com/legal/termsofuse/japan/ja/)
