後藤弘茂のWeekly海外ニュース

InfiniBandにPCIを被せた? 次世代I/O技術「3GIO」を図解で紹介


●PCIからの移行を可能な限りスムーズに

 「3GIOは、InfiniBandの物理レイヤに、PCIの論理レイヤを被せたシロモノだ」と言うのは米国のマーケットリサーチ会社InQuestのBert McComas氏(創業者兼プリンシパルアナリスト)。細かく言えばInfiniBandとの違いはいろいろあるのだけど、この形容は、3GIOの基本理念を言い当てていると思う。ソフトウェア側から見るとPCIで、物理的にはInfiniBandライクなパケットプロトコルのシリアルインターコネクト。それが3GIOの正体だ。

 このアプローチによって、3GIOは新技術の導入をミニマムの痛みで済ませようとしている。つまり、革新的アプローチを進化的ステップで導入しようと言うのだ。前にこのコラムで紹介したように、拡張カードについても既存のPCIカードと物理的な形状の互換やスロットの共存を図るなど、ひたすらPCIに歩み寄っている。その結果、PCI-SIGが標準化を受け入れることになったのだろう。

 一方、3GIOを物理レイヤやプロトコルを見ると、通信やネットワークの世界の技術が取り入れられているのも目立つ。エンベデッドクロックやユニディレクション(1方向)伝送、パケットプロトコルなどだ。見方によっては、PCの世界に、“高速伝送の先進地帯”である通信ネットワークから技術を持ってきて、PCのパラレルアーキテクチャ(PCI)時代の皮を被せたとも言える。

3GIOのレイヤ構造

 「3GIOのレイヤ構造」の図を見ると、3GIOの性格がもっとよくわかる。上の2つの論理レイヤはPCIインフラをそのまま引き継ぐ。IDFでは、OSとPCIソフトウェア/ドライバレイヤは従来のPCIベースと100%互換になると説明された。これが実現されるなら、ソフトウェアレベルでは、一切変更の必要がないことになる。

 そして、下の3レイヤが“3GIOの部分”だ。物理レイヤは言うまでもなくPCIとは全く異なる。その間を、トランザクションレイヤが取り持つ。トランザクションレイヤが、PCIのソフトウェアアーキテクチャでのリクエストを、3GIOのプロトコルに変換する。

 3GIOは、シリアルバスであるためパケットプロトコルを取っており、パケットはこのトランザクションレイヤで生成される。パケットの構造は、「3GIOパケット構造」図のようになっている。各ヘッダやフレームの長さはまだ明らかにされていないが、用途を考えると、かなり軽い(短い)付加情報になっていると推測される。

3GIOパケット構造

 トランザクションレイヤで生成されたパケットは、その下のデータリンクレイヤで、さらにラップされる。具体的には、シークエンスナンバーと誤り訂正の「CRC(Cyclic Redundancy Checking)」がトランザクションレイヤのパケットに加えられる。要はパケットが、よりリライアブルに転送されるようにするわけだ。3GIOでは、フローコントロールプロトコルにより、相手側のバッファが空いた時にだけパケットが伝送される。パケットのオーバーフローによる破棄が起こるのを防いでいる。

●4本の信号線で1リンクを構成する

 物理的には、3GIOはユニディレクション方式を取る。つまり、1つの信号線が1方向にのみ伝送する。双方向の伝送は、上り(トランスミット)と下り(レシーブ)、2本の信号線の組み合わせで実現する。現在の高速伝送技術では、ユニディレクションは必須のものとなっている。

 さらに、3GIOでは、1方向の伝送路が、低電圧駆動で、位相の反転したディファレンシャルの2本の信号線で構成される。つまり、ペアになった信号線で、1方向の伝送を実現する。ペアが2つ組になるため、合計4本の信号線で、双方向リンクが構成される。下の「3GIO物理アーキテクチャ」の図は、この構成を示している。この4本の信号線で構成される3GIOのミニマムの構成を、PCI-SIGでは「1X」と呼んでいる。

3GIO物理アーキテクチャ

 3GIOでは、クロック信号線がない。クロックは、ソースシンクロナス方式で供給されるのではなく、データ信号に同期したクロックを多重化するエンベデッドクロック(embedded clock)方式を使う。この利点は、(1)クロックスキューを気にしなくてすむためクロックを大幅に高められること、(2)信号線数を減らすことができることだ。Intelは、ピン(線)当たりの転送レートを高めること(=ピン数を減らすこと)に異常なほどこだわっており、3GIOのアーキテクチャにもそれが反映されている。

 3GIOは、エンベデッドクロックの符号化に「8B/10B」エンコーディング方式を採用する。これは、通信分野の符号化として以前から使われており、珍しい技術ではない。8ビット(1バイト)のデータを10ビットにして送る。受信したデバイスは、8B/10Bをデコードして、クロックリカバリ(多重化したクロックの除去)を行ない、もとのデータに戻す。そのため、転送レートに対するデータレートは8÷10=80%になる。つまり、1Gbit/secでも、実質的なデータ帯域は800Mbit/secに減ってしまうが、その分クロックを高められるのでカバーできるというわけだ。

●複数リンクを束ねてスケーラブルに高速化

 3GIOの最初のターゲットの転送レートは、1ペアの片方向で2.5Gbit/sec。つまり、2ペアで構成する「1X」リンクの双方向伝送なら2倍の5Gbit/secとなる。データ帯域は80%に減るため、計算上は500MB/sec(片方向なら250MB/sec)だ。ただし、3GIOのホワイトペーパーには、片方向で200MB/secの帯域という記述があり、計算に合わない(少なすぎる)。

 いずれにせよ、大きい方の数字でも、帯域はたかだか500MB/secに過ぎない。今後要求されるGB/sec伝送にはまだ届かない。そこで、3GIOでは複数のリンクを束ねるマルチリンク化により帯域をスケーラブルに高められるようにする。

 具体的には、シングルリンクを2つに束ねるのが2X、4つが4Xで、さらに8X、12X、16X、32Xまでをサポートする予定だ。ちなみに、計算上の帯域と信号線数は下のようになる。

リンク 信号線 帯域
1X 4 0.5GB/sec
2X 8 1GB/sec
4X 16 2GB/sec
8X 32 4GB/sec
16X 64 8GB/sec
32X 128 16GB/sec

 下の「3GIOマルチリンクの概念図」の右の図のように、3GIOではシングルリンクの場合、パケットをバイト単位で8B/10Bでエンコード、パラレル→シリアル変換をしてシングルリンクの伝送路であるレーンに送る。これが、マルチリンクになると、まず、3GIOのパケットは、バイト単位で分解され各レーンに振り分けられる。それから、各レーンごとに8B/10Bエンコードとシリアル変換を行なって伝送する。受信した側のデバイスが、各バイトを元のオーダーで再構成(リアセンブリ)するわけだ。

3GIO物理アーキテクチャ

 これらは、すべて物理レイヤで行なわれ、データリンクレイヤ以上では意識されることはない。レーンの初期化もリンクの両エンドのエージェントが行なうため、ファームウエアやOSが初期化を行なう必要がない。逆を言えば、物理レイヤを将来高速化したり、エンコード方式を高効率の技術に変えたりしても、上のレイヤには一切影響しない。3GIOは、将来シリコン技術が向上すれば、銅線の限界である1方向10Gbit/secにまでデータ転送レートを引き上げることができるとしている。

 ただし、現在のプリント配線基板「FR4」での限界はもっと低いと言われており、ボード上で本当にそこまで転送レートを高められるかどうかわからない。また、クロックの埋め込みやリカバリ、データのバイト分解や再構成など、ぱっと見ただけでも物理レイヤの負担はかなり大きそうだ。原理的には、リンク数を増やせば増やすほど、コントローラデバイスの負担はかなり大きい(=シリコンを食う)はずだ。そのため、最初はそれほどマルチリンク化できないと思われる。実際、PCI-SIGでは、当面は1X~2Xのソリューションが主流になると見ているようだ。

●最初はチップ間インターフェイスでスタート?

 最後に、3GIOのスケジュールを整理しておこう。スケジュールに関しては、IntelとPCI-SIGにズレがあり、せっかちなIntelに対して、PCI-SIGがずいぶんのんびりしていたが、これには2つ理由があるようだ。ひとつは、Intelがチップ間インターフェイスを先行して考えているのに対して、PCI-SIGはボードソリューションを中心に考えていること。もうひとつは、Intelがドラフトスペック段階からチップの設計を開始するアグレッシブなスケジュールを計画しているのに対して、PCI-SIGはテスト機器などの環境まで整ってからのインプリメンテーションを想定していること。

3GIOスケジュール

 Intelは、2003年のチップセットから3GIOを採用するつもりがあることをIDFで明確に示した。通常、Intelのチップセットはその年の頭までにサンプルが出て、中盤に製品発表となる。さらに、今回のように3GIOのような新技術を投入する場合、サンプルはもっと前から出そうとすると思われる。逆算するとIntelは3GIOチップセットの設計に来年前半にはもう入っているはずだ。だとすると、ドラフトスペック段階で、もう走り出していることになる。これはわかりやすい話で、利用がIntelのチップセット間のインターフェイスだけに留まるのなら、最初のチップは最終的な3GIOスペックに準拠している必要はないからだ。

 実際、Intelが3GIOチップセット用のマザーボードデザインガイドを出すまでに、PCI-SIGの方の3GIOカードとスロットのスペックがまとまらない可能性がある。その場合は、Intelのチップセット間インターフェイスは3GIOだが、拡張スロットはPCIのままという姿になるだろう。また、PCI-SIGは3GIO拡張カードに関しては、当面は2Xまでしか見ていない。2Xでも計算上1GB/secの帯域になることを考えれば、これも当然だろう。グラフィックス以外で、1GB/sec以上の帯域を必要とするデバイスは、デスクトップやモバイルではほとんどないからだ。

 こうした状況から、3GIOも最初はHyperTransportなどと同様に、チップデバイス間のインターフェイスとして登場する可能性が高い。PCIのスタートの頃と似たような状況になるわけだ。


バックナンバー

(2001年9月13日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当 pc-watch-info@impress.co.jp

Copyright (c) 2001 impress corporation All rights reserved.