笠原一輝のユビキタス情報局

コンピューティングの未来を示すAMDのKaveriが乗り越えるべき壁

 AMDが開発コードネームKaveriで知られるAPUを「AMD Aシリーズ APU」として発表した。GPUとCPUが同じメモリアドレス空間を共有することができる「hUMA」、CPUとGPUへの命令の詰め込みを透過的に行なう「hQ」などの機能をサポートすることにより、プログラムがCPUとGPUを同列に扱え、AMDとパートナー企業が推進するHSA(Heterogeneous System Architecture)のプログラムを実行できることが最大の特徴となる。AMDはHSAを実装したプログラムのデモをInternational CESの会場で公開し、HSA未対応の場合に比べて8倍高速に実行できる様子などをデモした。

 その一方、AMDは以前からのAPUの課題をまだ乗り越えることができていない。1つはAPUに最適化されたソフトウェアがまだまだ少ないと言うことであり、もう1つはユーザーの“CPU性能こそすべて”という信仰を打ち破ることだ。これらをどのように実現していくかが、HSAにとっての飛躍の鍵となる。

hUMAやhQに対応することでHSAアプリケーションへの準備が整ったKaveri

 今回AMDが発表したKaveriの最大の特徴は、HSAに対応していることだ。HSAは、AMD、ARM、Imagination Technologies、MediaTek、TI、Qualcomm、Samsung Electronicsなどによって構成されている業界団体HSA Foundationが標準化を進めているオープンスタンダードのプログラミングモデルで、開発者にC++など現在利用している言語をそのままに、CPUとGPUを1つのプロセッサのように扱えるようにしたのが最大の特徴だ。開発者は現在のプログラミング知識の延長線上で、CPUとGPUを透過的に利用して演算性能を引き出せる。

 以前は汎用をCPUが、グラフィックス周りだけをGPUが演算していた。しかし現在はGPUがパラレル型の汎用演算が可能な形へと進化しているため、大量のデータを処理する場合にはGPUを利用して演算した方が効率良くなってきている。このため、シリアルデータを処理する場合にはCPUを、パラレルデータを処理する場合にはGPUを利用する形が将来は一般的になると考えられており、HSAはそのための基礎となるプログラミングモデルになる。

 ただし、HSAに対応するには、いくつかのハードルを越える必要がある。大きく2つあり、それがメモリアドレス空間と命令実行のキューをCPUとGPUで共有する仕組みだ。

 前者はhUMA(ヒューマと読む)という仕組みでKaveriに実装されており、CPUとGPUが最大32GBのメモリアドレス空間を共有する。これまでは、CPUとGPUのメモリは、物理的には同じメインメモリ上にあっても、ソフトウェアからはそれぞれ別のメモリ空間と認識されており、開発者は明示的にそれがどのメモリアドレスなのかを意識しながらプログラミングする必要があった。しかし、hUMAにより、CPUとGPUが同じメモリアドレス空間を共有するため、1つのメモリアドレスを意識するだけでプログラミングできる。

 後者はhQで実装されており、プログラムが発行した命令をCPUが処理するのか、GPUが処理するのかを振り分ける。これによりCPUとGPUは、より効率の良い方を利用して処理できる。

 KaveriにはこうしたhUMAやhQが標準で実装されており、開発者がHSAの開発キットなどで開発したアプリケーションを実行可能としたのだ。

AMDのKaveriにはhUMA、hQといったHSAを実現するための機能が実装されている

4つのCPUコアと8つのGPUコンピュートコアを備えるKaveriの演算装置

 Kaveriは、AMDが開発を続けてきた「Steamroller」コアのCPUと、Radeon R9 290Xなどに採用されている開発コードネーム「Hawaii」で知られる改良版GCNアーキテクチャコアのGPUを内蔵している。AMDのAPUとしては3世代目にあたり、前世代のTrinity(トリニティ)/Richland(リッチランド)、2世代前のLlano(ラノ)に続く製品となる。

【表1】AMDのAPU(Kaveri、Trinity/Richaland、Llano)
Kaveri Trinity/Richland Llano
投入年 2014年 2012/2013年 2011年
プロセッサコア Steamroller Piledriver Husky
GPUコア Hawaii Northern Islands Evergreen
HSA対応
製造プロセスルール 28nm 32nm 32nm

 Steamrollerは、前世代のPiledriverと同じくBulldozerコアの改良版となるAMDのx86プロセッサコアのデザインとなる。従来のPiledriverからの改良点としては、命令キャッシュのヒットミスが30%削減、分岐予測ミスが20%削減、スケジューラの効率が5〜10%改善、スレッドあたりのディスパッチの最大幅が25%改善、データストアの効率が改善と改良が加えられ、全体でIPC(Instractions Per Cycle、1サイクルあたりに実行できる命令数、つまり同じ実時間で実行できる命令数)が全体で10%改善している点だ。

 KaveriはこのSteamrollerコアを4コア搭載している。厳密に言えば、Bulldozer/Piledriver/Steamroller系統の製品は浮動小数点演算器とL2キャッシュなどを2つのコアで共有するモジュール構造になっているので、このモジュールが2つあるというのが正しい言い方になるだろう。なお、SKUによっては2コアの製品があるが、そうした製品はモジュールのうちの1つを無効にした形で提供される。

 GPUは改良版GCNアーキテクチャがベース。AMD CTOのジョー・マクリー氏によれば「KaveriのGPUはHawaiiそのもので、違いはコンピュートユニット数だけの違いとなる」とのことで、周辺部分(ビデオエンジン、オーディオ)を含めてRadeon R9 290XとKaveriのGPUデザインは共通ということになる。

 Radeon R9 290シリーズでは1つのジオメトリプロセッサ、ラスタライザ、それぞれに11個のコンピュートユニットを備えたシェーダエンジンが4つ実装されているのに対して、Kaveriに内蔵されているGPUは1つのジオメトリプロセッサ、ラスタライザ、8個のコンピュートユニットを備えたシェーダエンジンが1つという構造になっている。

 AMDはこうしたKaveriの特徴を捉えて、Kaveriには12個のコンピュートコアがあるとアピールしている。4つのCPUコアと、8つのGPUのコンピュートコアを足して12個という計算だ。もちろん、CPUとGPUはそれぞれ役割が異なっており、それを12コアと呼ぶことに大きな意味は無い。しかし、マーケティング上はそうしたわかりやすさが大事なのも事実で、汎用演算に使える演算装置が12個あるというのは技術に詳しくないユーザーに対するアピールとしては意味があるだろう。

AMDのコンピュートコアの概念。CPUコアとGPUコアがメモリコントローラやキャッシュメモリに対して同列にぶら下がっている。そして、処理に応じて適したコアで演算を行なうことで、トータルでの処理能力を上げていく
Kaveriは4つのGPUコアと8つのGPUコアで12個のコンピュートコアを持つ
KaveriのCPUとなるSteamroller。さまざまな改良により、Piledriver世代よりも10%のIPCの改善がある
KaveriのGPUは、Radeon R9 290シリーズなどに利用されているHawaiiと同じ世代になる。シェーダユニットは1つで、コンピュートコアは8つ
Radeon R9 290XのGPUのアーキテクチャ。こちらはシェーダーユニットが4つあり、それぞれに11個のコンピュートコアを持つ構造

True Audio、VCE2、UVD4とオーディオ、動画周りの機能も強化されている

 また、Kaveriは従来製品と比較して、ビデオ再生環境やオーディオ再生環境が強化されている。

 まずTrue Audio Technologyと呼ばれるプログラマブルなオーディオエンジンが内蔵されている点だ。True AudioはTensilicaのオーディオDSPをエンジンとして利用したプログラマブルオーディオで、AMDがソフトウェアを定義することで、プログラムからオーディオ関連の処理に利用できる。これまで従来はCPUを利用して演算していたオーディオ処理をTrue Audioで行なうことで、CPU負荷を下げられる。現在AMDは、PCゲームベンダーに対してTrue Audioのサポートを呼びかけており、今後ゲームエンジンなどでサポートされるようになると、よりリアルなオーディオ環境がCPUに負荷をかけずにできるようになる。なお、Radeon R9 290シリーズなどでは、TensilicaのDSPエンジンは4つ搭載されている構造になっていたが、Kaveriでもその構造は基本的同じだ。

 また、GCNアーキテクチャのRadeon HD 7000/8000シリーズでも実装されているビデオエンコードエンジン(VCE=Video Coding Engine)が実装されている。Trinity/RichlandのGPUはRadeon HD 6000シリーズ相当でVCEは実装されていなかったので、APUとしては新機能になる。かつ、Kaveriに実装されているVCEは第2世代のVCE2になっており、H.264 YUV444(Iフレーム)のエンコード機能などが追加されており、Miracastなどのワイヤレスディスプレイ機能を実装する場合などに活用できる。

 動画デコードのUVD(Unified Video Decoder)も強化され、UVD4へと進化しているが、H.264/AVCHDのデコードにおけるエラー訂正の信頼性向上だけが強化点となる。HEVC(High Efficiency Video Coding)ないしはH.265と呼ばれるより圧縮率を高めたMPEG-4 AVC/H.264の後継フォーマットについてはこの世代ではサポートされておらず、次世代の課題となる。ただし、AMDはHSAを利用することで、GPUを利用して効率よく再生することは可能としており、ソフトウェアベンダーなどにHSAによるソフトウェアの採用を呼びかけていくとしている。

 なお、True Audio、VCE2、UVD4のいずれも利用するにはソフトウェア側のサポートが必要になる。ただ、VCE2、UVD4に関しては下位互換性が確保されており、VCE1、UVD3に対応したソフトウェアも利用可能だ。現時点では、AMDがVCE2、UVD4に対応したアプリケーションソフトウェアを公開していないが、すでにVCE1、UVD3に対応しているソフトウェアベンダーに対して対応を呼びかけているということだった。

Radeon R9 290シリーズなどで追加されたTrue Audio Technologyに対応。DSPは同じく3つ搭載されている
VCE2の機能、大きな拡張はH.264 YUV444が追加されたこと。Miracastなどのワイヤレスディスプレイ出力に利用できる
UVD4と呼ばれるデコード機能。エラー訂正の信頼性が向上した程度で、基本的な機能はUVD3と同等

HSAに対応した表計算アプリケーションは非対応に比べて8倍の性能を発揮

 このように、Kaveriは、CPUとGPUを同等に扱える仕組みをソフトウェア的(HSA)にも、ハードウェア的(hUMAやhQ)にも導入できる。これは、CPUはCPU、GPUはOpenCLからしか使うことができないIntelのCoreプロセッサに比較すると先進的な仕組みだ。すでに一般用途向けのCPUの性能を上げることは難しく、消費電力的な観点からむしろCPUはダウンサイジングする方向に向かっていることを考えれば、CPUとGPUを同等に扱い、処理に応じてCPUとGPUに振り分けるHSAのアプローチは理にかなったモノだ。

 AMDはInternational CESで開催した記者会見で、Collaboraが開発を後援する「LibreOffice」でHSAを有効にした時と、無効にした時の結果を公開した。LibreOfficeは、オープンソースのオフィススイートで、WindowsやLinuxなどで動作する。CollaboraではこのLibreOfficeをHSAに対応させたところ、表計算の性能が7倍にもなったのだという。もちろん、これは特定の環境での結果であり、すべての計算が7倍になるわけではないが、必要な演算をGPUにも行なわせることで、トータルでの性能が向上する1つの例と言える。

 今後こうしたアプリケーションがどんどん増えていけば、これまでCPUがやっていた処理を、GPUへとオフロードできるため、処理も短い時間で終わるようになり、結果的にCPUやGPUといった演算器がフルスピードで動作している時間が減ることになる。それにより、システムの消費電力もトータルでは減るはずだ。その意味でも、エンドユーザーに対するメリットは計り知れないだろう。

 今回AMDはデスクトップPC版(Socket FM2+版)のKaveri 3製品を発表したが、発表同時にリリースされる2つのSKUのTDPは95W、第1四半期中に投入されるA8-7600のTDPは65W/45WとデスクトップPC向けの設定になっている。これは、消費電力よりも性能が重視されるデスクトップPCであるためで、ノートPC向けの製品に関してはもっと低いTDPで動作するとAMDは説明している。AMDによれば35W、15Wでも動作可能なSKUも用意されるということで、後日ノートPC版や、サーバー版、組み込み版などが追加される予定だ。

 AMDによれば、ノートPCは2014年の前半中に、サーバーや組み込み版に関しては2014年中というスケジュールになるようだ。ノートPCはOEMメーカーのリフレッシュサイクルに合わせるとしており、多くのOEMメーカーが製品をリフレッシュする第2四半期頃に投入されると予想できるだろう。

LibreOfficeの表計算でHSAをオンとオフにしたときの差。このように、HSAに対応すると、処理の種類によるが高速にできる場合がある
AMDのAシリーズのボックス。まずはチャネル向けや自作PC向けのボックス版が先行する。OEMメーカーむけやノートPC向けは14年前半中の投入が予定されている
KaveriのSKU。発表時にはA10-7850KとA10-7700Kの2つのSKUが用意され、第1四半期中にA8-7600Kが投入される

古典的な問題「鶏と卵」にどのように対処していくか

 ただ、AMDがHSAでIntelに対してアドバンテージを得るには、HSAに対応したアプリケーションが増えなければならない(むろんすでに多数登場しているOpenCL対応ソフトウェアでもある程度の効果はあることができるが……)。そしてHSAに対応したアプリケーションが増えるためには、HSAに対応したプラットフォームが増えなければならない。新しいプラットフォームが必ず直面する「鶏が先か、卵が先か」という問題に向き合う必要がある。

 特にAMDは、多く見積もってもPC市場シェア20%というのがポジションで、残り80%以上をIntelが占めている現状を考えれば、ソフトウェア開発者が今すぐHSAに対応したアプリケーションを書いてくれるかと言えば難しいだろう。従って、そこに対して、まずはAMDやそのパートナーからショーケースになるようなアプリケーションソフトウェアを提供し、ソフトウェア開発者に対してそのメリットを理解してもらうという地道な作業が必要になる。

 そしてもう1つAMDが抱える課題は、人々のマインドセット、具体的には「CPUこそ重要で、GPUなんてグラフィックスのためのものでしょ」という誤解を解いて、CPUとGPUを1つのプロセッサとして扱うHSAのアプローチこそ正しい未来だということを理解してもらうかということにある。率直に言って、CPU単体の処理能力で比較した場合、Kaveriと、Intelの第4世代Coreプロセッサを比べたら、Kaveriの性能は高くない。だが、そこにGPUという要素が入れば、見事に逆転し、Kaveriが第4世代Coreプロセッサを上回ることが多くなる。

 これは当然の話で、プロセッサを設計する時に、ダイの面積をCPUに多く振るか、GPUに多く振るかの問題に過ぎない。AMDはこのKaveriのダイ設計で47%をGPUに割り当てている。CPUの具体的な数字は明らかにしていないが、ダイの写真を見ればわかるように、CPUが占めている部分はGPUよりも小さい(ラフにいって25〜30%程度だと思われる)。Intelの第4世代Coreプロセッサは、GT3というエンジンが多いGPUを含んだダイでも30%程度に過ぎない。

 このデザインの結果として856GFLOPSというKaveriのピーク性能のうち、CPU由来の部分が118.4GLOPS(約14%)、GPU由来の部分が737.3GLOPS(約86%)となっている。これを見ても、将来の性能向上へのヘッドルームを考えるなら、HSAのアプローチは正しいと言えるだろう。

 問題はこれをユーザーに体感してもらうためにも、早急にHSAに対応したアプリケーションや、ベンチマークプログラムなどを拡充していく必要があるだろう。なお、HSA対応というわけではないが、FutureMarkの総合ベンチマークソフトウェアであるPCMark8は最新版のv2でOpenCLなどGPUを利用した処理を増やしており、Kaveri対競合というベンチマーク結果の性能はずいぶんと変わりつつある。そうしたアプリケーションやベンチマークが徐々に登場することで、ユーザーの考え方も徐々にではあるが、変わっていくことになるだろう。

 その時がいつになるのかはわからないが、少なくともこの記事を読んで頂いた読者の皆さんの考えは以前とは違っているはずだと願ってこの記事のまとめとしたい。

AMDが示した資料によれば、856GFLOPSというピーク性能のうち、CPU由来の部分が118.4GLOPS(約14%)、GPU由来の部分が737.3GLOPS(約86%)

(笠原 一輝)