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)。そこで今回アクセラレータの標準インタフェースを定めることで、各種のアクセラレータの作成やマイグレーションを容易にしよう、という話だ。