PCI-Express(ぴーしーあいえくすぷれす)は、2002年にPCI SIGによって策定された、I/Oシリアルインターフェースである。
PCIバス、及びPCI-Xバスの欠点を補うべく、Intelが開発を進めていた3rd. Generation I/O、3GIO(すりーじーあいおー)がその基になっている。
1レーンあたり2.5Gbpsの転送速度で、送信/受信を分離した全二重方式を採用し、5Gbpsのバンド幅を持つ。またレーンを複数束ね、さらに低レイテンシ、高バンド幅を可能とする、x2、x4、x8、x16、x32も仕様化されている。特にx16 PCI-ExpressはAGPバスに代わるビデオカードのインタフェースとして利用される。
またPCI Express x1をベースとした新たなPCカードの規格であるExpressCardも策定されている。
数年間で瞬く間に普及し、2005年現在ではAGPをほぼ完全に置き換え終わり、汎用バスもPCI≦PCI Explessの割合でマザーボードに搭載されている。
PCIバスはこれにならい、当初の32bit/33MHzから64bit/66MHzまでデータ転送速度が引き上げられた。さらにPCI-XバスではクロックのDDR化も含め64bit/266MHzまで仕様化されている。
しかし、上記2手法の高速化にはおのずと限界がある。バス幅を太くすることはデータ線の増加につながり、それはLSIのピン増加となりコストに跳ね返る。またクロックの高速化は、データとクロックのタイミングを合わせる必要性から、非常に高度なLSI設計技術、ボード設計技術が要求され、同様にコストに跳ね返る。
以上に示すとおり、パラレル・インタフェースはバンド幅を上げようとすると、途端に高コストになるという問題がある。
ところが、IBMがパラレル・データをクロックを埋め込んでシリアル・データ化するという8b/10b技術を開発することにより、シリアル転送が急速に注目を集めはじめた。さらにイーサネットでこの方式が採用され、普及が広まると8b/10b機能を搭載したSERDESチップのコストも急激に低下し、さらにファイバーチャネルやギガビットイーサネット(GbE)の登場により転送速度も急激に高速化された。
両者は後に統合され、InfiniBandと呼ばれるI/Oインタフェースとなるのだが、InfiniBandには決定的な欠陥があった。あまりにも先進的かつ理想的なI/Oインタフェースを目指したため、ソフトウェアレベルでPCIバスと全く互換性がなかったことである。このため、マイクロソフトなどもサポートに消極的であり、現在に至ってもInfiniBandは普及していると言い難い。
Intelはこの失敗を教訓とし、3GIO(Third Generation I/O)の開発を開始した。ソフトウェア・レベルでPCIバス完全互換とし、正統なPCIバスの後継者とすべく、PCI-Expressと名を変え、PCI SIGでの仕様化が行われた。
送信を例に取ると、CPUや他デバイスから発行されたリクエストは、トランザクション・レイヤでパケット化され、データリンク・レイヤに渡される。データリンク・レイヤーは、接続されている相手側デバイス間との送受信の制御を担っており、パケットにシーケンス番号、CRCを付加して物理レイヤに渡す。物理レイヤはシリアル転送を受け持つ部分で、8b/10b変換を行うSERDESによりパケットがシリアル・データとして送られる。
トランザクション・レイヤはまた、パケットを任意のサイズに分割する機能を有する。例えば、PCI-Expressの場合、一つのTLPで最大4 KByteのメモリ・リードを発行することが可能である。しかし実際にメモリから一度に4 Kbyteを読むことは出来ない。それはCPUのキャッシュメモリサイズに依存するからである。全てのメモリ・リードはキャッシュ・コヒーレンシ維持のため、CPUに対しキャッシュに最新データの有無を問い合わせる。例えばIntel系の32bit CPUはキャッシュ・ライン・サイズは64 Byteであるため、4 Kbyteのメモリ・リードは全て64 Byteの64個のメモリ・リードに分割される必要がある。
このように、トランザクション・レイヤは自デバイス内で都合の良いようにパケットを分割する。また、データを返す場合は、もとの要求サイズで返す必要はなく、分割したまま返信することも可能である(但し返す順序は入れ換えられない)。
トランザクション・レイヤは以下の4個のアドレス空間をサポートする。
送信側データリンク・レイヤは、トランザクション・レイヤから渡されたTLPをバイナリ値とし、データを保護するためのCRCを算出し、さらにTLPの授受を確認するためのシーケンス・ナンバを、TLPに付加して物理レイヤに渡す。 受信側ではCRCによるデータ化けチェックと、シーケンス・ナンバによるパケット欠落チェックを行う。
受信側でエラーを見つけた場合、送信側に再送を促すためにNAK (Not Acknowledge) パケットをエラー検出したTLPのシーケンス・ナンバと共に送信側に返す。正常にTLPを受信した場合は、同様にACK (Acknowledge) パケットを返す。 エラーによるパケットの再送機能もデータリンク・レイヤが受け持っており、NAKを受信した場合そのシーケンス・ナンバから全て送信し直すことになる。このため、一般的にデータリンク・レイヤ内には再送バッファが実装される。
データリンク・レイヤはTLPの送受信の他にも、DLLP (Data Link Layer Packet) と呼ばれる、データリンク・レイヤ同士でのみ情報の交換を行うパケットの送受信も行う。ACK, NACKパケットや、フロー制御に使用するバッファ・サイズ通知などもDLLPが使用される。
PCI-Express1.1での物理メディアは、2線,800mV差動で400ps単位でデータのドライブが行われる。送信、受信専用の信号を必要とする全二重方式であることから、x1の場合、実際には4本の信号が使用される。
PCI-Express 1.1までは2.5Gpbsでのデータ転送を行っているが、PCI-Express 2.0では5.0Gpbs以上のスピードを目指している。さらに、PCI-Expressをケーブルで接続するための仕様検討も行われている。 このように、物理レイヤは将来的により高速なメディアに置き換えられていくレイヤであり、このため物理レイヤとデータリンク・レイヤ間のインタフェースは特に規定されておらず各ベンダの実装依存となっている。
PCI Express | PCI-Express | PCI-Express | PCI Express | PCI-Express | PCI-Express | PCI Express | PCI Express | PCI-Express | PCI Express | PCI Express | PCI Express | PCI Express | PCI Express | PCI Express | PCI Express | PCI-Express | PCI Express | PCI Express
This article is licensed under the GNU Free Documentation License.
It uses material from the
"PCI Express".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world