Geneseo Update

次はGeneseoに関してである。上に書いたとおり、GeneseoはCSIとは全く異なるものである。ではGeneseoとはなにか、というと「アクセラレータを使うための汎用インタフェース」ということになる。そうなると、「何故」と「どうやって」が次の質問である。

まず「何故」という話をすることにしたい。そもそも現状でも多くのアクセラレータが利用されている。例えば科学技術計算ならClearSpeedのCSXシリーズがあるし、物理計算ならAEGIAのPhysXがある。あるいはビデオカードも適切なアプリケーションを使えばGPGPU(General Purpose GPU)としてアクセラレータ代わりに使えるし、他にもFPGAなどを使ったアクセラレータも存在する。これらのアクセラレータは通常、PCI-XバスとかPCI Expressバスの先に通常のデバイスとして接続され、OSからもやはり通常のデバイスとして扱われる事になる。結果としてアクセラレータはデバイスドライバ経由でアクセスする形になり、

  • レイテンシが大きい
  • 他のデバイスと同等の扱いになるので、時として帯域も足りない
  • アクセラレータの利用がデバイスアクセスとして扱われ、ハンドリングが面倒

といった制約が付きまとうことになる。こうした問題を解決する一番楽なパターンは、CPUと同列にアクセラレータを扱うことだ。具体的に言えばAMDのTorenza、あるいは昨年のレポートで触れたFSB Licensing(この話は次節でもう少し触れる)がこれにあたる。ただこちらはこちらで色々問題がある。ライセンスが必要とか、FSBのプロトコルの実装が必要、あるいはせいぜい1デバイスの装着しか考えられておらず、複数アクセラレータの装着が困難といったあたりか。あと、もともとCPUの装着しか考えていない機械的形状をしているので、アクセラレータの実装に困難な場合が少なくないのも問題であろう。

こうした問題を解決すべく、PCI Expressと機械的・電気的特性を共通にしつつ、プロトコルをアクセラレータに向いたものにすることでオーバーヘッド削減とアプリケーションからの利用を容易にしよう、というのがGeneseoの狙いである(Photo03)。そもそもこうしたアクセラレータに関して言えば、そもそも標準インタフェースと呼ばれるものがない(Photo04)。そこで今回アクセラレータの標準インタフェースを定めることで、各種のアクセラレータの作成やマイグレーションを容易にしよう、という話だ。

Photo03:ちょっと字がつぶれてしまったが、Memory Hubの左に繋がる2つのものがAccelerator。特定用途向けアクセラレータをここに接続することを想定している。

Photo04:例えばGPUを使ってのグラフィックの描画で言えばAGPなりPCI Express接続で、APIも決まっている。だがGPUを使っての汎用計算はDirect3D 10(正確に言えばフル機能が使えるのはDirect3D 10.1)まで待たなければならないし、TCP/IPのオフローディングは通常LANコントローラに統合される形なのが一般で、そもそもAPIも標準I/Fも無いといった具合。確かにStandardなど、ない。