パッケージ
Xeon Phi
  • Intel
  • 発表日:2012/06/18
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2009/03/28 20:33

イベント

[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」

画像集#020のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
 Intelがグラフィックス分野に大きく乗り出してこようとしている。GDC09最終日,「Larrabee」についてのソフトウェア開発者向け情報が公開された。

 そもそも,Larrabeeとはなんなのかを含め,おさらいなどを兼ねて軽くまとめておきたい。

 まず,LarrabeeはメニーコアのCPUないしGPUである。Core 2 DuoやQuadが2コアや4コアをまとめた構成になっているのに対し,Larrabeeはコアを数十個詰め込んだ感じのCPUになる見込みだ。実際の製品で何個詰め込まれるかは不明だが,以前1TFLOPSを達成したとされたときの構成では,80コアを集積したということなので,製品が出てくるときには同じくらいのコアが載ったものになっていても不思議はない。
 
 多くのコアは256KBずつのL2キャッシュを介してリングバスでつながれている。あってもおかしくなさそうな共有メモリ部分や3次キャッシュまでは用意されてないようだ。

画像集#001のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」

 Larrabeeには,1コアあたり,x86命令を普通に実行するスカラ演算ユニットが1個あり,512ビット幅(32ビット×16)のベクトル演算ユニットがセットになっている。ベクトル演算というのは,複数の演算処理をまとめて行うことだ。さらに,それぞれの演算ユニットでは同時に最大2スレッドずつ実行可能で,コアあたりでは最大4スレッドの同時発行が可能とされている。

 さて,Intel のx86 CPUでベクトル型演算器を初めて搭載したMMXでは,64ビットレジスタに複数のデータを詰め込んで一気に演算することができた。当時は,音声データ処理が中心であったので16ビット整数演算を4個同時に行うことが想定されていた。
 続くSSEでは,128ビットレジスタが採用され,浮動小数点演算に対応したものになった。ビット数が倍になると,一気に演算できる量が増えるので,単純に演算能力も倍になると考えていいのだが,SSEでは,従来1クロックで演算されていたものが最低2クロックを要することになったのは残念だった。
 今後登場するとされているAVXでは,256ビットレジスタで同様のことを行うのだが,Larrabeeではいきなり512ビットである。しかもほとんどの命令を1クロックのスループットで実行するという。単純に考えて,非常に高速な演算器に違いない。

 Intelのx86コア+ベクトル演算ユニットという流れで見ると正常進化の流れが急に早まったという感じなのだが,内容的には従来のものとはかなり違い,多分にGPUを意識した内容となっている。
 GPUと比べて性能はどうなんだと気にする向きも多いと思うので,演算部分だけを取り出して模式的な計算もしておこう。

 Larrabeeが80コア×16ベクトル×2命令で1TFLOPSを達成したとすると,だいたい500MHz弱くらいで動いていたことになる。
 GPUの代表として,240SP×3命令×1296MHzで933MFLOPS(ワークステーション用では1TFLOPSの製品もある)のGeForce GTX 280が,だいたい同じくらいの演算性能であると考えていいだろう。

 80個もCPUを詰め込んで値段はいくらになるのかとか,そんなものを量産できるのかとか,そもそも80個なのかといった問題はとりあえず置いておこう。

 1コアあたりに目を向けると,それぞれが普段使っているCore 2 Duoなどと同様に,x86アーキテクチャのCPUになっている。単にx86のCPUなのであれば,100個つなごうが200個つなごうがゲームにはほとんどメリットがないのだが,それぞれで新しい命令が追加されている。そのLarrabee New Instructionがいかに強力なものであるのかというのが,本日の主題だ。

画像集#003のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」 画像集#004のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」

 単純な演算能力以外に,そもそもなぜ512ビットなのか。16個の演算を同時に行うことができるようにすることがいかに重要であるのかなどが,今回の講演で語られたので紹介しておく。
 ちなみに講演を行ったMichael Abrash氏は,id Softwareで「Quake」の開発に参画したり,MicrosoftでXbox事業に関わったりとゲーム開発を熟知したプログラマーである。

画像集#005のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
 とりあえず,1コアについての話になるが,LarrabeeはCPUを使って作られたGPUのようなものである。3D描画処理ができなければ話にならない。
 Larrabeeに搭載された新命令は,グラフィックス処理を強く意識したものとなっている。フォーマットの変換命令や,複数の点のデータをまとめてもってこられるGatherや,データを複数の点に分けて書き込めるScatterなど,一度でたくさんのことができる便利な命令群が多い。Gatherは,DirectX 10.1対応のGPU以降でサポートされているものだが,それが4点をまとめて取ってこられる仕様なのに対して,16点の一括サンプリングが可能なものになっている。
 ベクトル部分は基本命令形態自体も,x86とは別物で,MIPS CPUのようなニーモニックに続いて3オペランドのものとなっており,

 VMADPS V0,V1,V2    ;V0=V1×V2

のように,計算結果を格納するレジスタを真っ先に指定するような仕様の命令体系が採用されている。いうまでもなく,演算結果をどこかに保存する際には1命令少なくて済む。
 また,新しく追加されたマスクレジスタをうまく使えば,いろいろな部分が効率化できる。

画像集#006のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
積算の例。3オペランド構成になっている。最初のV0がデスティネーションレジスタ(格納先)となる
画像集#007のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
積和演算の例
画像集#008のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
これも積和演算だが,書き込み時にマスクレジスタ(k1)のビットの状態でフィルタ処理を加えている
画像集#009のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
これはFP16フォーマットをFP32に変換しつつ積和演算を行っているところ。先と同じくマスクレジスタも利用している
画像集#010のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
マスクレジスタの面白い使い方。0のレジスタを詰めている
画像集#011のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
かなり威力を発揮しそうなGather命令

 実際,ほとんどのものが非常にうまく並列化できたという……ラスタライズ以外は。
 
 座標数値としてのポリゴン(三角形)を画面に表示するピクセル単位に変換していく処理をラスタライズというが,この部分を効率よく並列化させることが非常に難しく,性能がまったく上がらなかったのだという。

 そこでAbrash氏らは,画面を4×4に分割して端から走査していく手法を考え出した。(いまとなっては懐かしき)タイルベースの処理に近い。4×4のエリアに分割し,小区間ごとにラスタライズを進めていくのだ。
 Larrabeeでは,画面を4×4の16個に分割して処理を進めていくなど,16個単位で処理を進めると効率がよい。16に分割されたそれぞれのエリア内にポリゴンはあるか,あった場合は領域をさらに16に分割して,どこにポリゴンがあるかを1ピクセル単位になるまで繰り返していく。この方式では,たとえば,4096×4096ドットのディスプレイを使っていた場合でも6回で1ピクセル単位にまで限定できる。

画像集#012のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」 画像集#013のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」 画像集#014のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」

 この場合,その区間がポリゴンにまったく無関係か,一部だけ含んでいるか,ポリゴン全体が入っているか,逆にポリゴンの中にその区間が入っているかなど,場合分けして処理を行っているという。
 とりあえず重要なことは,難関であったラスタライズの並列化が解決され(まだパフォーマンスに満足してないようだが),Larrabeeの実用化にも十分なめどが立ったらしいということだ。いつ発表されるのか,いくらくらいになるのかなど,興味は尽きないが,今後Intelがグラフィックス分野で大きな動きを見せるのは間違いないだろう。

画像集#015のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
 ちなみに,Larrabeeの新命令について,Unreal Engineの父Tim Sweeny氏は,ベクトル処理については完璧で,並列化に際してデータ依存もないなど,Larrabeeのアーキテクチャを絶賛している。Abrash氏も,プログラマの技量次第でさらなるパフォーマンスを引き出せるLarrabeeがお気に入りのようだ。
 まあ,なんとなくPS2やCellのVPUでのプログラミングを思い起こさせる談話だが,Larrabeeの場合は,あそこまで非人間的なプログラム管理は要求されないとは思う。しかし,一般のプログラマーは,アセンブラコードを駆使するより,C++言語なりでプロセッサのパワーが引き出せれば満足するだろう。それについてはすでにIntelによってLarrabee用のプロトタイプライブラリが用意されている。
 次のプレステはLarrabeeを使うんじゃないかとかいう噂も流れるくらい注目されている製品である。Intelの動きと他社の対応が,今後のゲームに与える影響も大きなものが予想されるので,今後も注目しておきたい技術である。

画像集#016のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」 画像集#017のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
画像集#018のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」 画像集#019のサムネイル/[GDC 2009#30]ついにソフト開発者向け情報も出てきた「Larrabee」
  • 関連タイトル:

    Xeon Phi

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月17日〜12月18日