M7プロセッサ」と「S7プロセッサ」の技術概要と開発状況を説明していただく機会を得た。興味深い内容を伺えたので、その概略をご報告したい。Guardianによると、ChromeやSafari、Operaなどのブラウザで自動入力をすると気づかない内にクレジットカードなどの個人情報が盗まれている危険性があるという。NAS、外付けHDD、そしてクラウド。敏也編筆者は、原稿を含む重要データのバックアップ体制はしっかり整えてあるし、UPSもバッチリ装備済み。そんな高橋流バックアップ体制を紹介していこう。Valerie」が、2台ともブースから盗まれた。Piの合体ボード「πduino」を発売した。Next」を発表した。Summit(AFDS)」を米ワシントン州ベルビューで6月13~16日に開催。そこで、次世代GPUコアのアーキテクチャを公開した。Architecture)に対応したアーキテクチャだ。汎用コンピューティングに向けた柔軟なプログラム性では、NVIDIAのFermiアーキテクチャをも凌ぐ部分が多い、革新的な新アーキテクチャとなっている。AMD)は、まずAMDのこれまでのGPUアーキテクチャを振り返り、GPUが世代とともにプログラム性を増してきたことを強調。その上で、FSAを実現するために、さらにアーキテクチャの改革が必要だと語った。Next」は、対となるアーキテクチャだ。Nextの新アーキテクチャでは、FSAのサポートに必要となる、あるいは、FSA世代で望まれるさまざまな新機能を備える。細粒度のコンテクストスイッチングや、GPU内部の複数のコアで異なるカーネルプログラムを走らせる機能を備える。CPUのバーチャルメモリアドレス空間をメモリコントローラがサポートする。それによって、望まれているC++のサポートを実現する。Parallelism)」と呼応する。Data)型プロセッサを搭載する。2000(R6xx)ファミリ」以来の大アーキテクチャ改革となる。シングルレーンを束ねたSIMDという点では、NVIDIAやIntelのLarrabee、PowerVRなどと似通う。Unit(CU)」と呼ばれるプロセッシングコアを最小単位として構成される。GPUは、演算コアに対する命令発行やコントロールを全てGPUの中核となる部分で行なっていた。新アーキテクチャでは、そうした集中制御方式をやめ、命令発行やスケジューリングの機能は個々のCUへと分割して持たせることにした。下がCUの構造を示すスライドだ。CUにはSIMD型のベクタ演算ユニットが4個とスカラ演算ユニットが1個備えられている。通常のGPUはベクタ演算ユニットしか持たないが、AMDの新アーキテクチャではスカラ演算のユニットを備える点が大きな特徴となっている。Researchのベクタスーパーコンピュータも同様にベクタとスカラの両方を備えていた。Demers氏もスピーチの中でCrayのアーキテクチャを引き合いに出した。新アーキテクチャのスカラユニットは、分岐だけでなくフル機能の整数演算ユニットとなっている。スカラユニットは、専用の8KBのレジスタを備え、命令は専用のスカラユニット用のL1命令キャッシュからフィードされる。CUのSIMD演算ユニットは、それぞれが16レーンの演算ユニットを備える。浮動小数点(FP)の積和算と整数演算の両方を実行できる演算ユニットだ。それぞれが64KBのベクタレジスタを備えている。Crayスパコンのように、スカラ演算での性能も狙ったものではなく、コントロールフローなどの効率化を狙ったユニットだ。SIMD演算ユニットは16レーン構成で同一命令で16演算を、並列実行できる。単精度演算なら、基本は1サイクルスループットだ。GPUは、超越関数などを実行するスーパーファンクションユニットを備えていたが、AMDの新アーキテクチャでは超越関数も倍精度演算も同じSIMDの演算ユニットで実行する。それらの演算を行なう場合はスループットが落ちる。ベクタレジスタは32-bit単精度で64ワード分、2,048bit幅と長大なレジスタとなっている。演算ユニットが16レーンなのにレジスタのスロットは64ワードなのか。それは、16レーンのSIMDユニットが4サイクルかけて64ワークアイテム(またはスレッド/ストランド)を実行するためだ。GPUでは、64ワークアイテムを1単位とした実行スタイルを取っている。これを「Wavefront」と呼んでおり、実行ユニットはWavefront単位で同一命令のSIMD実行を行う。GPUの論理ベクタ長となっている。これは、NVIDIAアーキテクチャで32ワークアイテムを束ねたWarpに相当する。下の図はAMDの新アーキテクチャを、よりプロセッサらしいダイアグラム図に書き換えたチャートだ。青いチューブが16本並んだユニットがSIMDユニットで、これが4ユニット連なっている。左がスカラユニットだ。CUの中の命令発行ユニットからそれぞれのユニットへと命令がディスパッチされる。以前のAMDアーキテクチャでは、命令ユニットはSIMDエンジンの外にあり、中央制御されていた。これをNVIDIAのFermi系のGF114アーキテクチャと比較すると次のようになる。Multiprocessor)の中に16レーンのSIMDユニットが3個、その他にスーパーファンクションユニットが8レーン備えられている。NVIDIAのSMは、AMD新アーキテクチャのCUにほぼ相当する。1ユニットの規模としては、AMDのCUの方が規模が大きい。AMDのCUでは図中では描いていないがロード/ストアユニットがベクタメモリデコードの下にある。テクスチャユニットもCUに1個ずつあり、テクスチャと演算の比率は従来通り1対4に保たれているという。その他に、分岐やメッセージパッシングのユニットがある。命令発行ポートは合計で7ポートだと推測される。同時に発行できる命令は最大5命令となっている。面白いのは、4個のSIMDユニットへの命令発行が1サイクルに1命令しかできないことだ。SIMDユニットに命令をフィードし切れないように見える。これは次の図のような仕組みになっている。各SIMDは16レーンで4サイクルかけて1つのWavefrontを実行する。AMDの新アーキテクチャでは、CUの中の4個のSIMDの命令発行を1サイクルずつスライドさせている。1に命令を発行といった具合に命令発行をずらす。4サイクルかけて、4個のSIMDユニットに命令を発行する仕組みだ。そのため、1命令ポートで、4つのSIMD全てをフル稼働させることができる。ちなみに、Wavefrontを4サイクルかけて実行するのは、実行ユニットの実行遅延を隠蔽する目的がある。逆を言えば、4サイクル以上の実行レイテンシは隠蔽できず、ストールするかWavefrontを切り替えることになる。GPUのコアの動作周波数と密接に結びついている。AMDは従来から4サイクルのWavefront実行を行なっている。新アーキテクチャでも4サイクルを選んだということは、AMDがGPUの動作クロックを劇的に上げるつもりがないことを示唆している。ちなみに、NVIDIAの場合はWarpの動的スケジューリングによって、実行レイテンシとメモリレイテンシの両方を隠蔽している。そのため、原理的に動作周波数を上げやすい。GPUはこれまでVLIW型の実行プロセッサを備えていた。6970(Cayman)はVLIW4構成となっている。VLIWプロッッサは16個で1個のSIMDエンジンを構成する。AMDの従来アーキテクチャでは、VLIWコアを6または5命令スロットのVLIW命令で駆動していた。そのため、ドライバのリアルタイムコンパイラで、並列に実行できる命令をVLIWにパックする必要があった。GPUは元々4-wayのSIMD型プロセッサを搭載していたが、シェーダプロセッシングの発達でスカラ命令を実行することが多くなったためVLIWに変更したという経緯がある。同様の問題に、NVIDIAは実行を全てシングルレーンにしたSIMD型ユニットの構成を取った。SIMDでは、分岐が発生した場合のコントロールフローに問題が発生するが、それはマスクレジスタを遣ったプレディケーションで解決した。今回、AMDが採用したのは、まさにNVIDIAが取ったのと同じ方法で、16レーンのSIMDユニットで、プレディケーションでコントロールフローを制御する。これによってAMDは複雑なVLIWのコンパイルが不要になり、実行効率が上がった。これまでのVLIWプロセッサでは、アプリケーションによっては非常に低い演算ユニットの稼働率しか得られず、額面上の性能を発揮できないケースが多かった。新アーキテクチャでは、この点が劇的に改善される。AMD新アーキテクチャでは、各SIMDはそれぞれ別なワークアイテムバッチ「Wave」を実行できる。Waveは64のワークアイテム(またはスレッド/ストランド)を束ねた単位で、そこから命令毎にWavefrontを実行ユニットに送る。同じワークアイテム群(Wave)に属する命令の波頭がWavefrontというイメージだ。新CUでは、命令キャッシュから取り込んだ命令ストリームから、4個のSIMDユニットそれぞれにWaveを割り当て、各SIMDユニット用の命令バッファに命令を貯め込む。各SIMDユニットはそれぞれ個別のプログラムカウンタと命令バッファを備えており、個別にWaveを実行できる。新CUでは、4個のWaveを並列演算できることになる。各SIMDは、少なくとも10個のWaveをインフライトで保持することが可能で、CU全体では40のWaveを保持できる。CUは2,560ワークアイテムを切り替えながら並列実行できる。AMDアーキテクチャでは、メモリストールなどが発生した場合にWaveを切り替えて異なるWaveのWavefrontを実行する。10個のWaveを切り替える場合、メモリアクセス命令が4命令おきに来たとすると、4サイクル実行なので合計で160サイクルを隠蔽できる計算になる。Demers氏はCUで並列実行するWave群が異なる独立したコマンドストリーム(カーネル)に属していても実行可能だと説明した。AMDは新アーキテクチャでメモリ階層とバスアーキテクチャも抜本から改革する。GPUのバスは、リードオンリーの上りのパスと、ライトオンリーの下りのパスに分離されていた。テクスチャや頂点はそれぞれ、外部メモリからプロセッサへと「メモリ→キャッシュ→プロセッサコア」という一方向のバスで読み込まれる。通常、このパスでは、クロスバースイッチで複数のメモリコントローラと複数のプロセッサコアが結ばれている。した上り方向のデータパスとキャッシュメモリ以外に、GPUはプロセッサからメモリへの下り方向のデータパスを持っている。旧来のGPUでは、ピクセルデータがこのパスを通っていた。それに、ピクセルデータ以外のデータを出力するシェーダエクスポートが加わったが、下り専用バスである点は変わらなかった。GPUはキャッシュも上りのリードオンリーと、下りのライトオンリー(プロセッサからはライトだけ)の2系統になっていた。GPUはこの弱点をカバーするため、プロッッサの中に、明示的な命令で自由に読み書きができるメモリ「ローカルデータシェア」を、またGPU全体でアクセスできる「グローバルデータシェア」を搭載していた。新アーキテクチャでは、ローカルデータシェアとグローバルデータシェアも互換性のため継承しつつ、キャッシュはCPUと同様のプロセッサから読み書き可能なライタブルキャッシュに切り替えた。L2とL1の2階層で、L2キャッシュはメモリコントローラと接続されている。各64KBずつのL2が、メモリコントローラと同数の複数個搭載されていると見られる。L1キャッシュはCUに各16KBずつ搭載されている。L1がライトスルー、L2がライトバックの制御。L2とL1の間と、L1と演算コアの間は、64-Byte(512-bit)幅の広いバスで結ばれている。L2とL1の間はクロスバー接続だが、これはメモリコントローラとGPUのCUの間がクロスバーで接続されているためだ。L2ではCU間のコヒーレンシがハードウェアで保たれている。これはFSAのプログラミングモデルでAMDが必要項目に挙げていたポイントで、CPUとGPUは相互にキャッシュをスヌープできるようになるという。Express経由でコヒーレンシを取る。CPUと同じバーチャルメモリ空間をハンドルするようになる。GPU側にアドレストランスレーションキャッシュを内蔵。CPUとの間でのバーチャルアドレス空間の統合を実現し、同じ64bitポインタでメモリアクセスができるようにする。GPUは、中央に集中したグラフィックスパイプラインの固定機能ユニットとコンピューティングの制御ロジックを持っていた。6970(Cayman)では完全に2系統に分離した。プリミティブハンドリングとテッセレータ、ラスタライザ回りが2系列になった。Nextでは、これをさらに推し進め、より多くのプリミティブパイプと、より多くのラスタライザを搭載できるようにする。この図ではレンダーバックエンド(ROP)がラスタライザのスキャンコンバータとくっついているが、ここは疑問が生じる。レンダーバックエンドは、膨大なメモリアクセスが必要となるため、通常はメモリコントローラ側に接続されているためだ。レンダーバックエンドは多重化されている。いずれにせよ、プリミティブパイプとピクセルパイプ(スキャンコンバージョン)が多重化されることは確実だ。NVIDIAがすでに同様の方法を採っている。CUのアーキテクチャを見ると、いくつかのキャッシュを4個のCUで共有する構造となっている。そのため、4個のCUで1セットとなり、プリミティブパイプなどを共有する可能性が高いと推定される。新アーキテクチャでは、汎用コンピューティングのための制御エンジンも多重化される。Engine(ACE)」が、リアルタイムのタスク単位のスケジューリングやキュー、コンテクストスイッチングを司る。コンピュート時には、コンピュートに関係するステイトだけをスイッチすることで、コンテクストスイッチングを軽くする。複数のACEを搭載することで、新GPUではマルチタスクが可能となる。AMDが今年末を目指して(遅れる可能性もあるとAMDは指摘している)開発している、次世代アーキテクチャ。GPUを根本から改革し、汎用コンピューティングでの性能を上げ、FSAでのプログラムの容易さを実現しようとしていることがわかる。NVIDIAと異なるのは、依然としてAMDはアーキテクチャ的にグラフィックス性能の維持にある程度寄っている点だ。旧来のGPUから継承している64ワークアイテムのWavefrontのサイズ。これは、グラフィクスの処理単位が4×4×4の64であると都合がいいためだ。NVIDIAのように、分岐粒度を小さくするため32に減らすという方向は取らなかった。演算とテクスチャ処理の比率も保っている。GPUも、演算アレイに対する制御部分やメモリ部分の比率が大きくなることは確実だ。GPUのように、ダイ面積当たりの演算ユニット数がNVIDIAに対して圧倒的に多いというアーキテクチャにはならない可能性が高い。このことは、グラフィックス性能にも影響する。そのため、AMDはプロセス微細化のチャンスにハイエンド製品からアーキテクチャを切り替える方式を採らざるを得ない。その意味で、今回、28nmプロセスへの微細化で、搭載できるトランジスタ数が倍増するチャンスに、アーキテクチャを改革することは理にかなっている。生パフォーマンスは微細化によるトランジスタの増加で稼ぐという方式で、アーキテクチャの移行を成功させると見られる。FSAに合わせて開発した新GPUアーキテクチャ。Unit)への統合は、どうなるのだろう。AMDは、CPUとGPUのそれぞれにつき、新アーキテクチャをディスクリート製品で試してからAPUへ統合するという方法を採っている。そのため、APUへの新アーキテクチャの統合は、まだしばらく先になりそうだ。6970(Cayman)に搭載しているVLIW4ベースのGPUコアを搭載すると言う。APUの進化は、まだまだ継続されることになりそうだ。