article

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バスのようなパラレルインタフェースにおいて、データ転送のバンド幅を上げる方法には大雑把に以下の2通りの方法がある。

  1. バス幅を太くする(データ線の増加)
  2. 転送速度を上げる(クロックの高速化)

PCIバスはこれにならい、当初の32bit/33MHzから64bit/66MHzまでデータ転送速度が引き上げられた。さらにPCI-XバスではクロックのDDR化も含め64bit/266MHzまで仕様化されている。

しかし、上記2手法の高速化にはおのずと限界がある。バス幅を太くすることはデータ線の増加につながり、それはLSIのピン増加となりコストに跳ね返る。またクロックの高速化は、データとクロックのタイミングを合わせる必要性から、非常に高度なLSI設計技術、ボード設計技術が要求され、同様にコストに跳ね返る。

以上に示すとおり、パラレル・インタフェースはバンド幅を上げようとすると、途端に高コストになるという問題がある。

シリアル・インタフェースの台頭

1本の信号線でデータ転送を行うシリアル・インタフェースは古くから存在し、かつてほとんどのPCに搭載されていたRS-232Cが有名である。しかし、信頼性の問題から低速なデータ転送にしか使えないという事情があり、しばらく表舞台に現れることはなかった。

ところが、IBMがパラレル・データをクロックを埋め込んでシリアル・データ化するという8b/10b技術を開発することにより、シリアル転送が急速に注目を集めはじめた。さらにイーサネットでこの方式が採用され、普及が広まると8b/10b機能を搭載したSERDESチップのコストも急激に低下し、さらにファイバーチャネルやギガビットイーサネット(GbE)の登場により転送速度も急激に高速化された。

PCI-Expressの登場

I/Oインタフェースのバンド幅不足解消のために次世代のインタフェースを模索していたIntelは、NGIO(Next Generation I/O)というシリアル・インタフェースの開発を開始した。一方、同時期にヒューレット・パッカードやIBMも、PCIバスに代わるI/OインタフェースとしてFuture I/Oと呼ばれるシリアル・インタフェースを開発していた。

両者は後に統合され、InfiniBandと呼ばれるI/Oインタフェースとなるのだが、InfiniBandには決定的な欠陥があった。あまりにも先進的かつ理想的なI/Oインタフェースを目指したため、ソフトウェアレベルでPCIバスと全く互換性がなかったことである。このため、マイクロソフトなどもサポートに消極的であり、現在に至ってもInfiniBandは普及していると言い難い。

Intelはこの失敗を教訓とし、3GIO(Third Generation I/O)の開発を開始した。ソフトウェア・レベルでPCIバス完全互換とし、正統なPCIバスの後継者とすべく、PCI-Expressと名を変え、PCI SIGでの仕様化が行われた。

仕様


PCI-Expressのデータ転送方式はPCIバスよりも、ネットワークでのパケットの送受信に近い形で行われる。このため内部構成もネットワークに似ており、トランザクション・レイヤ、データリンク・レイヤ、物理レイヤの3層構造となっている。

送信を例に取ると、CPUや他デバイスから発行されたリクエストは、トランザクション・レイヤでパケット化され、データリンク・レイヤに渡される。データリンク・レイヤーは、接続されている相手側デバイス間との送受信の制御を担っており、パケットにシーケンス番号、CRCを付加して物理レイヤに渡す。物理レイヤはシリアル転送を受け持つ部分で、8b/10b変換を行うSERDESによりパケットがシリアル・データとして送られる。

トランザクション・レイヤ

トランザクション・レイヤは主にトランザクション・レイヤ・パケット(Transaction Layer Pakcet:TLP)の生成と復号を担う。TLPはリードやライトといったコマンドやアドレス、データなどから成る。また、トランザクション・レイヤは接続相手とのフロー制御も行う。PCI-Expressのフロー制御はクレジット・ベースで行われ、これは予め自分が受信することの出来るバッファのサイズを相手に通知しておき、バッファに空きが出来るたびにその旨を伝える方式である。送信側は自身が送信したパケットのサイズを積算していき、また送信相手からバッファの空きが伝えられるとその分を減算する。これにより送信相手のバッファ・サイズを超えることなく、パケットの転送が可能となる。

トランザクション・レイヤはまた、パケットを任意のサイズに分割する機能を有する。例えば、PCI-Expressの場合、一つのTLPで最大4 KByteのメモリ・リードを発行することが可能である。しかし実際にメモリから一度に4 Kbyteを読むことは出来ない。それはCPUのキャッシュメモリサイズに依存するからである。全てのメモリ・リードはキャッシュ・コヒーレンシ維持のため、CPUに対しキャッシュに最新データの有無を問い合わせる。例えばIntel系の32bit CPUはキャッシュ・ライン・サイズは64 Byteであるため、4 Kbyteのメモリ・リードは全て64 Byteの64個のメモリ・リードに分割される必要がある。

このように、トランザクション・レイヤは自デバイス内で都合の良いようにパケットを分割する。また、データを返す場合は、もとの要求サイズで返す必要はなく、分割したまま返信することも可能である(但し返す順序は入れ換えられない)。

トランザクション・レイヤは以下の4個のアドレス空間をサポートする。

  1. Memory 空間
  2. I/O 空間
  3. Configuration 空間
  4. 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-Express1.1での物理メディアは、2線,800mV差動で400ps単位でデータのドライブが行われる。送信、受信専用の信号を必要とする全二重方式であることから、x1の場合、実際には4本の信号が使用される。

PCI-Express 1.1までは2.5Gpbsでのデータ転送を行っているが、PCI-Express 2.0では5.0Gpbs以上のスピードを目指している。さらに、PCI-Expressをケーブルで接続するための仕様検討も行われている。 このように、物理レイヤは将来的により高速なメディアに置き換えられていくレイヤであり、このため物理レイヤとデータリンク・レイヤ間のインタフェースは特に規定されておらず各ベンダの実装依存となっている。

欠点


アドレス空間の問題

PCIと互換性を有している為、アドレス空間は4GBに規制される。この影響はメモリマップI/O空間がプロセッサー側のメモリ空間4GBと共有されるアドレス空間にマッピングされなければならない事を意味する(そうしないとDirect Memory Accessなどでメモリへのデータの読み書きが出来ない)。この為、メモリ空間に穴を開けPCI-Express側に開放してやらなければならない。弊害として物理メモリを4GB搭載しても実質的には3GBしかアクセス出来ないといった問題が生じる。これを回避するにはチップセット側(あるいはプロセッサ側)で物理メモリを4GBより上の空間に配置する機能が求められる。総じてコスト高になり、ローエンド向け製品の中には「物理的には4GB、しかしアクセス可能なメモリは3GB」といった製品が出回るという結果になっている。また上位アドレス空間へ押しやられたメモリへのアクセスはオペレーティングシステムもそれに対応していなければならず、物理アドレス空間が32bitに制限されたものでは利用できない。

相互接続性の問題

PCIバスでは32bitバスのデバイス/スロットと64bitバスのデバイス/スロットの全ての組み合わせにおいて動作する事が保証されていた。しかしPCI-Expressでは、例えばx16仕様のカードをx8仕様のスロットに差し込む事が物理的にできない。端子レイアウト的には、x16仕様のカードをx8スロットに差し込んで使用できるようであるが規格上物理層は実装依存であり保証の限りではなく、さらにカードエッジの物理的切断・コネクタの一部を削り取るという乱暴な手段を講じなければならない。

外部リンク


インターフェイス規格 | コンピュータバス規格

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 Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld