[an error occurred while processing the directive]

【短期集中連載】大原雄介の最新インターフェイス動向
~PCI Express 3.0編その1



 2009年というのはインターフェース業界にとっては、色々新しいものが登場する年である。まずUSB-IFは、2008年末にUSB 3.0のSpecification 1.0をリリースしており、早ければ今年中にホストコントローラが登場するだろう。また、PCI Expressは2009年の第4四半期に、Base Specification Revision 3.0(通称PCIe Gen3)のリリースを予定しており、早ければ年内にこれに対応した製品が登場する事になろう。SATAも、第3世代にあたるSATA Revision 3.0が今年前半にリリース予定だ(昨年の時点では2008年後半中にという話だったが、どうも遅れたらしい)。ネットワークの世界では1Gbpsの速度である1000BASE-Tに続き、10Gbpsの速度でCat6e/CAT7を使って接続する10GBASE-Tの標準化が2006年に完了し、2007年には幾つかのベンダーがPHYの試作を開始。2008年には製品がと思いきや、ちょっと違う動きになりつつある。

 そこで、このあたりのインターフェースの動向を、短期連載の形でご紹介していきたいと思う。まず、今回からPCI Express 3.0について、何回かに分けてレポートしたい。

●PCI Express 3.0の特徴

【写真1】Gen1/2/3という3つの規格があり、現在はGen2が主流。といっても、例えばIntelのチップセットだと、GPU向けにMCH/GMCHから出るx16スロット向けはGen2で、ICHから出るx1スロットやオンボードデバイス向けはGen1でそれぞれ接続されるなど、混在しているケースが多い

 いきなり詳細の話を始めても、ご存知ない読者もおられると思うので、まずは簡単に概要を示しておく。Gen3はPCI Expressの第3世代にあたり、転送速度が1レーンあたり8Gb/sの規格である(写真1)。信号線は上り(ホストコントローラ→デバイス)と、下り(デバイス→ホストコントローラ)で別々に構成され、どちらもディファレンシャル(差動式)となっている。

 Gen1は信号の周波数が2.5GHz、Gen2では5GHzとなっている。ただし、信号の周波数≠転送速度、というのがPCI Expressの特徴である。PCI ExpressはPCIなどと同じく、同期式(送受信の双方で、タイミングを決めて一定の割合でデータの送受信を行なう)で伝達を行なう。このためには送信側と受信側でタイミングを合わせるために、クロック信号を共有する必要がある。実際、PCIやAMDのHyperTransport Link、あるいはIntelがCore i7で採用したQPIなどは、データ信号とは別にクロック信号用の配線が用意されている。

 ところがPCI Expressでは、このクロック信号をデータ信号の中に埋め込む、俗に言うEmbedded Clockという技法が採用された。このEmbedded Clockのために使われた技術が8b/10b Encodingである。つまり8bit分のデータとクロック信号を混ぜ、10bitの信号として送り出す、あるいは10bitの信号を受け取り、それを8bitのデータとクロック信号に分離するという仕組みである。このため、例えば2.5GHzを全部データに充てると本来なら

2.5GHz÷8=312.5MB/sec

となるはずが、8b/10b Encodingを使う事で

2.5GHz÷10=250MB/sec

となるわけだ。

 なお、写真1には「PCIe Gen1@2.5GT/s」という表記がある。信号の速度は確かに2.5GHzだし、信号線の上で観測すると毎秒2.5G個の信号が通過しているのが観測できるが、データとしてはその80%分にしかならないため、2.5Gb/sと書くと語弊がある。そこで2.5G Transfer/secと表記することにして、その省略形が2.5GT/sというわけだ。

 Gen1は2.5GT/sで、Gen2は信号の速度を倍にして5GT/sということにした。実のところ、細かな違い(というか、追加項目)はあるにせよ、Gen1とGen2は本質的に信号の速度以外全く一緒で、速度を倍にしたから帯域が倍というだけの話である。これに対してGen3では、ちょっと面倒な事になった。

【写真2】グラフのEye Heightとは、山形の信号の頂上の高さの事。高さが0V以上あれば、そこが山だと判断できるわけで、逆に山の高さが0V未満というのは、波形が乱れまくって山の形を成していない事を示す

 Gen3では写真1にもあるように、信号の速度が8GT/sになった。当初PCI ExpressのSpecificationを策定するPCI-SIGでは、単純に信号の速度を倍にする10GT/sの検討を行なっていた。ところがシミュレーションを掛けてみると、10GT/sのままでは既存の配線を流用した場合、ほとんど通信がまともに行なえない(写真2)事が判明したからである。

 もちろんこれは、既存の技術そのままで信号を10GT/sにした場合の話であって、TX/RX Equalizationなど、さまざまな補正を掛ける事で状況を改善する余地は残っている。だが、それにしても10GT/sではハードルが高すぎると判断されたわけだ。一方、信号速度を8GT/sに落とすと、Eye Heightはかなり改善される。勿論サーバー向けの20インチのチャネルでは8GT/sでもまだ厳しい状況ではあるが、10GT/sの状況を改善するよりは遥かに容易であると判断されたようだ。

 こうした判断を受け、2007年8月にPCI-SIGは、Gen3の速度を8GT/sにする決断を下した。ただ、このままだと写真1にもある「Doubling Bandwidth & Improving Capabilities Every 3-4 Year!」(3~4年毎に、帯域を倍増させると共に機能を改善)がいきなり実現不可能になってしまう。信号速度は5GT/s→8GT/sで、1.6倍でしかないからだ。そこで、Gen3では8b/10b Encodingを廃止する決定をした。8b/10b Encodingを廃すれば、転送速度は

8GHz÷8=1GB/sec

となり、Gen1の250MB/sec、Gen2の500MB/secから丁度倍々で増える形になるから、先の公約は守られる形だ。ただ、今度はEmbedded Clockをどうするのかという問題が出てくる。2007年8月の時点においては、「Embedded ClockはSpecial Scramblingで対応する」とAl Yanes氏(Chairman & President, PCI-SIG)は語っていたが、いくらなんでもScramblingだけでEmbedded Clockを実現するのは無理だったようだ。

 もともと、ScramblingはGen1から採用されていた技術だが、これは信号を均質化することで、輻射ノイズを減らすのが主目的。大体ScramblingでEmbedded Clockが実現できるなら、何もGen3まで待たずともGen1/Gen2で採用されていてもおかしくは無かっただろう。最終的に2008年6月にサンノゼで開催されたPCI-SIG Developer Conference 2008の際には、128b/130b encodingを使うことが明らかにされた。これは128bit(16Bytes)分のデータに、2bitの同期ビットを付加して130bitとして通信するという方式だ。この場合、転送速度は

8GHz×(128÷130)÷8=984.615……GB/sec

というわけで、厳密には1GB/secに届かないが、この程度は誤差の範囲であり、おおむね1GB/secと言っても嘘にはならないだろう。もちろん、この方式だとLink Training(送信側と受信側が実際に信号を送りあって、転送速度やSkewのタイミングなどを調整する仕組み)に要する時間が大幅に増えそうな気がするが、それでも転送効率を上げるほうが優先されたということであろう。

 ちなみに、同時期に公開されたPCIe Gen3のFAQによれば、PCIe Gen3に利用されるScramblingの方法はまだ検討中ということになっている。

 このPCI-SIG Developer Conference 2008の際に、もう1つ明確にされたのは、Gen3はGen1/Gen2と完全な互換性を保つことが要求仕様とされたことだ。早い時期から、Gen3に関しては、Gen1/Gen2とPHYレベルの互換性を保つことは難しいという話がなされていた。Gen1/Gen2に関しては、基本は全く一緒で、単に高速化されるだけだから、Gen2対応のPHYを半分の速度で動かせばGen1対応になるわけだが、Gen3に関してはこういうわけには行かなくなった。

 この結果、従来のGen1/Gen2は図1-aのように構成すれば済んだものが、Gen3では図1-bの様な構成になることが必須とされている。ここでズルしてGen3のみの対応としたデバイスは、少なくともPCI-SIGのCompliance Testに通らない事ははっきりと明言されている。Al Yanes氏によれば、Gen4(つまりGen3の次)以降がどうなるかはまだ判らない(そんなことまで考えてないと言われた)が、少なくともGen3の世代では2種類のPHY搭載を必須とするそうだ。

PCI Express Gen1/Gen2の構成(左)とGen3の構成(右)

 この構図は、後から出てきたUSB 3.0と非常によく似ている。こちらもPHYはUSB 1.1/2.0用と3.0用で別のものとなっている。違うのは、USB 3.0は配線まで別なこと、およびUSB 3.0ではMAC層も色々手を入れてしまった結果、PHYとMACの両方で1.1/2.0と3.0が分かれる事だろう。

 ということで、Gen3を含むPCI Expressの概要を紹介したところで、実際にGen2対応のハードウェアにGen3の信号を通した場合の状況などを次回ご紹介する。

□関連記事
【2007年8月10日】PCI-SIG Developer's Conference 2007 レポート2
http://pc.watch.impress.co.jp/docs/2007/0810/pcisig2.htm
【2007年5月24日】PCI-SIG Developer's Conference 2007レポート
http://pc.watch.impress.co.jp/docs/2007/0524/pcisig.htm

(2009年3月10日)

[Reported by 大原雄介]

【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp
お問い合わせに対して、個別にご回答はいたしません。

Copyright (c)2009 Impress Watch Corporation, an Impress Group company. All rights reserved.