地に伏した秀才たち。(GPGPU化の意外な失速とシングルスレッド重視の復活。)   

2012年2月21日



☆癒しのSL風景。(大井川鉄道)   
まずはいつもの余談から。

とは言っても、今回は諸般の事情で週末に遊びに行けなかったので、 昔、金谷図書館で撮影したSLの写真を掲載。

これ、資格試験の勉強中に自宅だとどうしてもPCいじりなんかの誘惑に負けてしまうので、 各種図書館をぐるぐる気分転換しながら回っていた時の話である。 図書館だとさすがにタブレットとかを自分勝手に使うわけにも行かず 参考書や問題集に集中せざるを得なくなるので、自宅周囲の東西南北いろいろな図書館巡りをやっていた。

で、ある日金谷図書館に行ってビックリ。 なんと、図書館脇をSL路線が走っているのね。

大井川鉄道でSL見物。
金谷図書館脇で...

と言うわけでSLが走る時間を調べて、「その時間までに問題集を予定ページ分だけ解けたら、 ご褒美にSL見物OKにしよう。」と決めたわけ。 で、SL見たさに予定ページ分をかろうじて解く事が出来たので、撮影したのがこの写真。

写真撮影後にSLの運転手さんが当サイトに手を振ってくれたりして、 鉄道会社の観光客対応も非常に良心的。 SLってやっぱり観光名所なんですな。

☆GPGPU時代の意外な失速。   
と言うわけで本題へ。

当サイトはずっと以前からPC用途ではマルチコア否定派であった。 アプリ対応の難易度の高さからマルチコア化には否定的立場であり、 当サイトの意見は現状ならばデュアルコアで十分という意見である。

ただし、ではCPUの性能が低くても良いかというと全然そんなことは無く、 原理上アプリの対応が不要なシングルスレッド性能は極めて重要であるという立場である。 いわばシングルスレッド性能重視派最右翼のPCマニアなのだ。 (ただし、ここで書いたとおり、 今後のトレンドとしては低消費電力化の重要度が増して行って、 どこかで重要性の優先順位が入れ替わるとは思ってはいるが...)

では、GPUの汎用化(非グラフィック用途への展開)はどうだろうか?  当サイトの過去の意見は「現段階ではよくわからない。」と言うものであった。 ただし、マルチコア化戦略がプログラミングのマルチコア化対応で失敗した事態が GPGPUのみでクリアOKとは到底思えなかった。

そこで...グラフィック用コアの汎用化という戦略の優劣について考えてみた。

GPUはPCには必須のコアである。これはCPUと同様であり、 当然のことながらPCからGPUが消えて無くなる事は無い。 だが、GPUには汎用化を行うとダイ面積あたりの演算効率が落ちてしまうと言う問題点がある。 つまり、CPUでのマルチコア化と違って汎用化での序盤戦でそれなりのハンデがあるのだ。

もし、GPGPU化にアプリが対応しきれなければ、当然のことではあるが マルチコア化戦略の崩壊と同様にGPUのGPGPU化戦略の崩壊が発生する事になる。 しかも、この初期ハンデの影響で汎用化に失敗した場合は専用化を進めたコアの方が良い事になる。 なぜならば、同じグラフィック性能を出すのに必要なダイサイズが小さくて済むからである。

過去にここに書いたことがあるが、判断の優劣はアプリの対応容易性次第。 つまり、GPGPUがグラフィック用途以外でどれだけ使えるようになるかという話である。

ところが、何のかんの言ってもゲーム用途以外でのキラーアプリがなかなか出てこないのである。

とあるPC系Web記事で、GPUでのゲーム用途対応需要のアップが他の分野のアプリと比較され、 GPGPUの重要度アップが主張されていた。 たしかにゲーム用途では重要性が増しており、この記事内容にウソは無い。

だが... 視点を変えてみよう。 ゲーム用途とはそもそもGPUの汎用化が必要な用途ではないのである。 GPU性能が高ければよく、汎用性が高い必要性はあまり無い。 つまり、この場合のみならば同じダイ面積ならば汎用化しないでグラフィック用途に特化集中した設計の方が優位なのだ。

とすると...この記事は一見するとGPGPUの勝ちを意味しているように見えるかもしれないが、 勝っているのはGPGPU中での本来の用途、すなわちグラフィック性能が大部分であり、 GPU需要の重要性を意味していても汎用化戦略の勝利を意味するものではないのだ。

では汎用化戦略の成功が成し遂げられた場合はどうなるかというと、 あらゆる用途で数値が上がっていかなければならない。

このように、GPUの成長戦略としてはGPGPU化が本当に正しいのであろうか? という強い疑念が当サイトの頭の中にはある。 CPUにおけるシングルスレッド性能をGPUにおけるグラフィック性能、 CPUにおけるマルチコア化をGPUにおけるGPGPU化、と考えれば類似性が指摘できると思う。 問題点はマルチコア化と同様に汎用用途でのアプリの対応性が思ったよりも低いという点にあると思う。

☆GPGPU化によるダイ面積効率低下との戦い。   
ただ、本来の用途であるグラフィック性能は今でも高性能化が求められている。 GPUそのものの性能が低くても良いというわけではない。 とすると、GPGPUでの今後の戦い方が見えてくると思う。 つまり、ソフト面ではアプリの対応容易性がGPGPU化戦略の最重要課題と当サイトではずっと指摘してきたが、 ハードウエア面では汎用化時の効率低下をいかに防ぐかという技術的課題への対応が最大のキモだと思う。

原理上不可能ではあるが、もし仮に汎用化してもダイ効率が全く下がらないGPUアーキテクチャが設計できたとしよう。 GPUはコア数(という概念で書けばだが...)の増大が容易であり、 ダイサイズに比例して性能を上げることは容易である。 つまり、グラフィック用途用にダイサイズを増やしてやりさえずれば、 あとは汎用用途でのアプリの対応をゆっくりと見届けて行けばよい。

しかし、汎用化時のダイコストが大きいままだと、アプリの対応をゆっくりと見届けている間に 専用化したGPUに市場シェアを奪われてしまう事になる。 (同じ性能の場合はダイ面積が小さくできるから、その分製造コストが安くなって販売価格を下げられる。) 使い物にならないダイにユーザーがお金を払わない事は過去にマルチコア化戦略の崩壊が示しているとおりである。 この場合は時代の流れを無視しても低価格化に対応できる専用化戦略の方向性が正しいことになる。

世の中の流れはGPUの汎用化戦略の方向性である。 しかし、その筋の専門家だからといっても神様ではないわけだから、市場予測が100%当たるものではない。

当サイトはGPGPU化のアプリ対応は思ったよりは進捗がかなり遅いように感じている。 マルチコア化の場合は「当サイトのマルチコア否定論はアプリの対応進行によっていずれだんだんと正しくなくなるだろう。」 と初期には考えていた。 いずれはマルチコアは有効になるだろうと思っていたのだ。 しかし、それから5年以上たった今でもクアッドコアはPC用途での主流になっていない。 と言うことは、GPGPU化の進行もこれと同様の状況になる可能性が十分に考えられる。 つまり、当サイトの今の考えではGPUの汎用化ではなく専用化戦略も十分に勝利の可能性があると考えているのである。

ちなみに、当サイトでは過去にここでHaswell予想を書いた。 その根拠となるのが、まさにこの事情なのだと考えている。

☆「地に伏した秀才」のいる会社が勝つ。   
ではGPUの汎用化が想定外に遅れるとしたら、今後のCPU戦略で勝つ方向性とはどのようなものなのであろうか?

設計コスト削減のため、最近のCPUではサーバー用途とPC用途を完全に分けて設計される事は無い。 従って、どちらの方向性に力を入れるのかが重要となる。 また、当サイトの意見はタブレットの普及によってサーバー用途の重要性が増すだろうと考えている。

だが、いくらタブレットが普及してもPCが消え去る可能性がゼロであることもまた過去に指摘してきた。 特に、ビジネスユースではタブレットの普及は世論の想像以上に遅くなるだろうと考えている。 (現場でのデータ入力業務と言ったルーティンワーク以外では想定外に売れ行きが伸びないと思われる。)

PC用途のCPUで最重要なのは(将来は低消費電力性になるとは言え)現段階ではシングルスレッド性能である。 従って、いかにシングルスレッド性能の高いCPUを作れるかがPC用途での勝利を決める鍵である。 また、程度問題とは言ってもサーバー用途で低シングルスレッド性能で問題ない用途は Webサーバーといった用途に限定される。 つまり、マルチコア化が有効な用途でも一定のシングルスレッド性能は必要である。

とすると、今後のCPU戦略での勝利者は、(PC用途でという限定条件付きではあるが) シングルスレッド性能の優劣と言うことになる。

当サイトでは過去にPC用途でのマルチコア化を否定的に考えてきたためPCメディア系からかなり嫌われたフシがあった。 だが、当サイトはPC用途におけるマルチコア化論を否定していただけであり、CPUベンダーをなめてきたわけではない。

intelを例に考えてみよう。

3つのウォールによってシングルスレッド性能アップが停滞期に入ったとき、アーキテクトはかなりの苦境に陥ったはずである。 マルチコア化はシングルスレッド性能アップよりもハードウエア設計の難易度が低いから、 アーキテクトの設計力よりも製造現場の最新ミクロンルール対応などが重要になっていたはずだ。

だが、当サイトがintelを決してなめてかからないのは、あの会社には「地に伏した秀才」が居るからである。

当サイトでは過去にμOPキャッシュの重要性を指摘してきた経緯がある。 ここで大事なことは、μOPキャッシュはマルチコア化やGPGPUと違って アプリの対応が無くても効果が得られるという点である。 もし、効果は2倍になるがアプリの対応が必須の新型キャッシュが開発されたとしても おそらくは採用されないだろうし、仮に採用されたとしても上手くは行かないと思う。 アプリの対応が不要というメリットは世間一般の意見よりも極めて重要度が高いと当サイトでは考えている。

だが、当然ながら万能薬ではない。当サイトでは問題点として μOPキャッシュの問題点としてμOPキャッシュがまだトレースキャッシュと呼ばれていた時代には ダイサイズの巨大化を指摘してきた。 しかし、ここで書いた通りこの問題点は現在では解消されているようである。

だが、今回は別の視点からもう一つの問題点を指摘してみよう。 それは設計難易度の高さである。

たとえばキャッシュを増量したいとき、2次キャッシュと1次キャッシュではどちらの設計難易度が高いだろうか?  また、どちらの効果が大きいだろうか?  これはハードウエア系のPCマニアならば誰でもわかる話であり、 設計難易度も効果も1次キャッシュが高いというのが正解である。

ではμOPキャッシュと1次キャッシュではどうだろうか?

μOPキャッシュは1次キャッシュ以上にアーキテクチャの根底に直結しており、 上記と同様に考えればμOPキャッシュの方が設計難易度も効果も高いだろうと推測している。 実際、当サイトのμOPキャッシュ復活説は1世代遅れて的中したわけで、 それは1世代分の設計難易度アップを伴っている事を意味していると思う。 また、最新CPUでのシングルスレッド性能ではintelがAMDに勝っているが、 これはAMDが実行ユニットの並列化度を下げたことが主因とは言え、 キャッシュ能力の実力差も影響を及ぼしていると当サイトでは考えている。 (μOPキャッシュは教科書本に話が書いてないので推測ではあるが、この推測は間違っていないはずだ。)

とすると、AMDが採用したような通常型1次キャッシュとintelが採用したμOPキャッシュでは、 intelの方がアーキテクトの苦労が大きかったはずである。 要するにAMDはローリスク・ローリターン型のビジネスモデルで対応し、 intelはハイリスク・ハイリターン型にチャレンジしていったのである。

ハイリスク・ハイリターン型と一言で言うのは簡単だけれど、 それがいかに苦労するものであるかは当サイトも産業分野が全然違うとはいえ 似たような仕事をしたことがあるのでよくわかる。 それは、まさに当事者のみしか体感できない地獄の世界なのである。

そんな中でも、ローリスク型に逃げることなく実用化に成功したということは、 「マルチコア化は時代の流れである。」なんて言われた時代に、 自分の信念を捨てず上司のイエスマンになることもなく、 地に伏して「時代の流れ」に反した研究を続けた隠れた秀才がどこかにいたはずである。 要するにintelの真の底力とは、「時代の流れ」とやらに流されない戦略的な目利き技術者、つまり 「名も無き、地に伏した秀才」も居たという多様性経営なのであろう。

まとめると、シングルスレッド性能の時代復帰を読み抜いた陰の実力者のおかげで、 PC用途での復活が見込まれるのである。 また、ARM版Windowsの発表が大きく取り上げられているが、 シングルスレッド性能アップではなくクアッドコア化で対応しようとしている方向性では、 タブレット市場で勝ってはいてもPC用途への参入は大失敗に終わると思う。 (タブレットでシェアが高いのは、OSが軽くて済むからなのだ。) つまり、Windows参入を本気でやるつもりならば、シングルスレッド性能アップを本気でやるより他に勝ち目はないだろう。

同様に考えれば、アプリの対応難易度から考えてGPGPU化が結果的に時代の流れにならない可能性も十分に考えられる と当サイトは思っている。だから、 「時代の流れ」とやらに反してダイ面積あたりのグラフィック性能に注力したグラフィック専用高効率 GPUを考え続けている地に伏した秀才アーキテクトがどこかのグラフィックチップメーカーに居る可能性にも期待したい。