元麻布春男2001/10/24グラフィックス・チップの接続にAGP、チップセット間の接続にHubLinkなどのベンダ独自インターフェイス、そして汎用外部I/OにPCIと、現在のPCにはさまざまなバス/インターフェイスが採用されている。前のPCが、これらすべてのインターフェイスにPCIバスを用いていたことを考えれば、ずいぶんとPCの内部は複雑になってしまったものだ。したトレンドは、再び覆されようとしている。2001(Intelが主催する開発者向けのカンファレンス)でIntelが発表した「3GIO」が、近い将来、上記すべてのインターフェイスとして利用されることになるからだ。1.0」がリリースされてから10年。PCIの後継が見えてきた。3GIOが目標とするもの3GIOの開発目標は、デスクトップやノートといったPCはもちろん、通信機器からサーバまで幅広い分野に適用可能な、ちょうどいまのPCIがカバーしているのと同様な汎用のI/O技術を確立することにある。これらの広範なプラットフォームにおいて、ボード上のチップ間接続、コネクタを介したボード間接続(拡張スロット)、ドッキング・ステーションといった用途に用いることが可能でなければならない。用途ごとに異なる帯域幅の要求に応えられるよう、スケーラビリティも必要になる。現時点で可能な限りの高性能と低価格が両立していなければ、PCIのような幅広い支持を得ることは困難だ。PCIからのスムーズな移行を考えれば、OS側に特別な「対応」を必要とするような(言い換えれば専用のデバイス・ドライバを必要とするような)規格は望ましくない。2.0の立ち上げに非常に時間がかかっている理由の1つは、新しいデバイス・ドライバのサポートが必要であるからだ。3GIOでは、既存のPCIのソフトウェア・モデルをそのまま利用可能な規格になっている。逆に、3GIOが目標としないのは、マルチプロセッサ・バス、メモリ・バス(メモリ・インターフェイス)、サーバのクラスタリングといった用途だ。マルチプロセッサ対応プロセッサのFSBが今後どのようなものになるかは不明だが、これまでの慣例からいって、Intelは公開しないものと思われる。これはIntelにとってFSBは、他社との協調が必要な技術ではないためだ。条件さえあえば有償でライセンスするだろうが、わざわざオープンな規格にする必要はないと考えているようだ。メモリ・バスは、対応したメモリをメモリ・ベンダに製造してもらう必要があり、標準化も必要な技術であるが、汎用I/Oとは異なるロードマップが想定されているようだ(筆者は、長期的にはメモリ・バスも現行のパラレル・インターフェイスからシリアル・インターフェイスに移行すると考えている)。これはメモリとI/Oで技術的な最適化が異なるということだけでなく、メモリのロードマップが「市場」というきわめてコントロールしにくい要素と不可分の関係にあるからではないかと思う。サーバのクラスタリングについては、IntelはすでにInfiniBand(サーバ/ワークステーション向けの高速I/O技術)にコミットしており、その位置付けは3GIOが出現しても変わらない、ということだろう。上記のような目標を実現するものとしてIntelが提唱する3GIOは、図1のようなアーキテクチャ・モデルを採用する。前述したように、ソフトウェア層より上位については、PCIのそれを流用することにより、スムーズな移行を目指す。トランザクション層とデータ・リンク層はパケット・ベースでシリアル・インターフェイスを前提としたものだ(図2)。ピア・トゥー・ピア(Peer-to-Peer)のデータ転送をサポートする。3GIOのアーキテクチャ・モデル図のように物理層、データ・リンク層、トランザクション層、ソフトウェア層(ドライバ・モデル)、OSといった階層モデルを採用している。ソフトウェアとOSについては、現行のPCIとまったく同じモデルを用いることで、影響を与えないように考えられている。3GIOのパケット・モデルフレームとフレームで区切られたパケットに、シーケンス番号とヘッダ、データ、エラー訂正用のCRCが含まれる。データ・リンク層から独立している物理層(フィジカル層)は、将来の技術革新による高速化に備えたものだ。当面は、銅線を用いた差動駆動*1の小振幅電気信号インターフェイスを採用するが、将来的には光インターフェイスへの移行を考えていると思われる。逆に、光インターフェイスへの移行を狙うからこそ、シリアル・インターフェイスでなければならない、ともいえるかもしれない。8B/10Bエンコーディング*2により、クロック信号をデータ信号に多重化することで、クロック・スキュー(受信デバイスに各信号が到達する時刻のバラツキ。スキューが大きくなると受信デバイスが正確にデータを受け取れなくなり、クロックが向上できなくなる)の発生を防止し、高クロックを実現する。2003年後半から2004年といわれる、最初の実用化時期におけるバス・クロックは3GHz前後、データ・レートは2.5Gbits/sとされている。Intelによれば、光インターフェイスに移行するまでに、銅線ベースでも10GHz近くまでバス・クロックが引き上げられるという。図2に示したようなパケット・レベルでのオーバーヘッドに加え、クロックを多重化することによるペナルティにより、バス・クロックに対する実効データ・レート(およびレーテンシ)は低下するが、それを補って余りあるバス・クロックの引き上げが可能、というのがこのような物理層を採用する理由だ(図3)。差動駆動(差動伝送)とは、2本の信号線を駆動することで1つの信号を伝送する方式の一種で平衡伝送。2本の信号線間の電圧(電位差)で、「0」か「1」を決める。1本の信号線で1つの信号を伝える「不平衡伝送」に比べると、ノイズ耐性に優れ、より高速な伝送を可能とする。1394といった高速シリアル伝送でも採用されている。8bitのデータを10bitに変換して送信する符号化方式で、0または1の同符号の連続を避けることができる(出力データ中には必ず「0→1」か「1→0」という遷移が含まれるように符号化する)。これにより、クロック信号とデータ信号の「0」「1」の現れるタイミングをチェックすることで、クロック・スキューの補正が可能になる。3GIOの物理層ポイント・ツー・ポイントで一方向のみの接続というシンプルな構成にすることで、高クロックに耐えられる設計となっている。この物理層は、一方向あたり2本の信号線で構成されるため、双方向のデータ転送には、最小構成(1bitシリアル転送)で4本の信号線が必要となる。この最小構成を1レーンと呼び、必要に応じて2レーン、4レーン、8レーン、16レーン、32レーンという具合に複数のレーンを束ねることで、求められる帯域の提供を可能にする(束ねたレーンの数だけ、帯域幅は増える)。接続はポイント・ツー・ポイント(Point-To-Point)であるため、複数デバイスの接続にはスイッチが必要になる。PCIのようなバスというより、10/100BASE-TXイーサネットなどの通信に近いインターフェイスだ。(2017/6/28)Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。(2017/5/25)最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。CPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。(2017/4/27)スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。(2017/3/29)スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。