このページの本文へ

前へ 1 2 3 次へ

ロードマップでわかる!当世プロセッサー事情 第214回

暗号化通信やGPGPUなど現在も活躍するコプロセッサーたち

2013年08月05日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

FPGAをコプロセッサーとして使用

 FPGAをコプロセッサーとして使うというアイディアはかなり昔から存在した。FPGAについて簡単に説明すると、「ハードウェア回路をプログラムの形で自由に構成できるもの」になる。

FPGAの代表例。画像はWikimedia Commonsより(http://commons.wikimedia.org/wiki/File:Altera_StratixIVGX_FPGA.jpg)

 プログラムには専用言語(VerilogやHDLなど)を使うのが一般的であるが、最近ではかなり大規模な回路をFPGAで構成できるようになった。ラフな言い方をすれば、FPGAはASICに比べて2~3世代ほどプロセスの効率が悪い。最近ではFPGAもすべて28nmプロセスに移行しているが、これは90~65nm世代のプロセスで製造したASICと同等の回路を作れるという意味である。

 そんなに効率が悪いのになぜ? と思われるかも知れないが、ASICは論理設計が終わってから物理実装して、マスクを作り製造を行なうために、平均して半年以上の期間と億単位の初期コストがかかる。

 一方FPGAは論理設計が終わったら、理論上は数時間~数週間で物理実装が終わり、回路を動かせる。マスクや製造のための初期コストはゼロであり、少量多品種な需要では既存のASICを作るよりも圧倒的に有利なのである。

 こうした特性は、コプロセッサーにとっても非常に有利である。金融関係などで特殊なアルゴリズムに基づく計算をソフトウェアで実装すると、時間がかかりすぎるということが多い。これをFPGAで実装した場合、そのアルゴリズムを実行するための専用ハードウェアを組むことになるので、圧倒的に高速に実行できる。

 また、そうしたアクセラレーターはそれほど大量に使われることはないし、しばしばアルゴリズムの変更が発生したりするが、FPGAであれば1個から製造でき、再プログラミングも極めて容易である。

 以上のことから、初期にはFPGAを搭載した拡張カードをPCIバスなどに差して、これをコプロセッサーとして使う事例が少なからずあった。

 またAMDでは、CPU間接続にHyperTransport Linkを使っていることもあり、これをそのまま拡張カードで接続できるHTX(HyperTransport eXpansion)なるコネクター規格を策定、これを使ってFPGAを接続することを目論んだ。しかし、試作品はともかく製品レベルで採用している事例を、残念ながら筆者は知らない。

HTXスロット用計算アクセラレーターカード「RCHTX-XV4」。2つのザイリンクス社製FPGAを搭載する

 FPGAをCPUに直結して使えるようにしよう、という動きを見せたのがインテルで、2007年のIDFの際にFSB Licensingという形で発表した。

2007年のIDFでインテルが発表したFSB Licensing

 これはXilinxとAlteraのハイエンドFPGAが、インテルのP4バスライセンスを取得したというもので、これらのFPGAのユーザーは追加料金なしでFPGAを直接CPUソケットに接続、FPGAにコプロセッサーの機能を搭載し、自由に使えるようになった。

 もっとも「直接CPUソケットに接続」といっても、パッケージもピン配置も全く違うし、大体PGA771ソケットよりもFPGAは大きい。そこで実際には下図のように、まずCPUソケットにInterposerと呼ばれる接続用金具を挿入、固定後に今度はFPGAを搭載したドーターカードをInterposerに挿入するという2段構えの構造だった。

FSB Licensingの仕組み

 ちなみに当初こそFSBのみのサポートであったが、Xilinx/Altera共にQPIのバスライセンスもこの後取得しており、これを使う形で引き続きFPGAを使ったコプロセッサーのニーズに対応しており、現在も一部のユーザーで利用され続けており、目立たないながらもずっと続くであろう。

GPUを汎用計算に活用する
GPGPU

 最後がGPGPUだ。インテルの「Xeon Phi」や、NVIDIAの「Tesla」、AMDの「FireStream/FirePro」などがこれにあたる。FPGA方式は自由度も高いし性能も良いが、その反面ハードウェアのプログラミングの難易度は高いし、ソフトウェアのインフラも自前で用意しなければいけない。

Xeon Phi

 もう少し難易度を下げて広く使えるコプロセッサーがほしいというニーズは常にあり、これと「描画性能を上げてゆくなかで、他の用途も考えないと開発費が支払えない」というGPUベンダーの意向がうまくマッチしたのがGPGPU的な使い方である。

 もともとGPUの方も演算性能を上げたり演算精度を上げたりしたいという長期的な展開があり、これはそのまま汎用の数値演算に利用できることになった。

 といっても、すべての用途でGPUが使えるわけでもない。GPUの場合、同時に多数の計算を行なえる半面、計算のレイテンシーは比較的大きめであり、レイテンシーを遮蔽できるような大規模データ処理に向いている。

 とはいえ、あまりデータ量が大きいとGPUカード上のメモリーが溢れてしまう関係で、このバランスをどの辺で取るのかが、現状での性能改善の鍵の1つとなっている。

 またGPGPU方式では、大規模並列演算は非常に向いている反面、逐次演算では性能を出しにくいという欠点もあり、現状ではまだ利用できるアプリケーションが限られている。

 特徴の出し方も各社各様で、NVIDIAはすでに広く普及しているCUDAを最大の武器に展開を図っており、インテルは開発ツールを充実させることで、x86との互換性を前面に打ち出している。

 AMDはというと、OpenCLとの親和性を最大限打ち出している。特にAMD自身がFusionという形でCPUとGPUを統合したAPUを主力製品にしており、ARMやImaginationテクノロジーがやはり後追いの形でOpenCLに対応したCPU/GPU群をリリースする予定になっており、これらを一括して扱えるHSA(Heterogeneous System Architecture)のソフトウェアインフラを現在大車輪で整えている最中である。

 HSAの枠組みの中ではCPUとGPUの差がなくなっていくので、これをコプロセッサーと呼んでよいものかどうかはやや微妙なところだが、少なくとも今後数年のオーダーではGPGPUがコプロセッサとして働くことになるだろう。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン