死ぬ気で使えるようにするのか?諦めるのか?   

2009年3月8日



☆ホンダの新型インサイト快走とのこと。   
さて、出張から帰ってきた。 帰ってきたのは良いのだが、梅の花...ちょっと満開を過ぎてた。

先週は東京でも雪が降った位でかなり寒かったのだが、それでも室内だから花は咲いていく。 もっとも、しおれてしまった訳じゃなくまだまだ鑑賞に堪えるので、 机に座れば春気分は健在。仕事がかなりきつかったので、これを見ながらホッと一息。

実際、出張帰りは終電ギリギリという状況で、乗り遅れたら超絶金額のタクシー利用しか選択肢が無い。 (こんなご時世に高額タクシー料金で旅費を精算したら、経理担当にブン殴られるかも。) しかも、東京経由なのに帰り道に秋葉原に寄れないのは痛い。 がんばって仕事しているのだから帰り道にこれくらいの役得はあっても良さそうに思うのだけど、 秋葉原に着く頃には全店閉店の時間帯。トホホ〜。 まぁ、円安進行でメモリやHDD、SSDで最安値ゲットの可能性は無くなったから、まだ我慢できる話かな?

そういえば、当サイトはこの状況下での円安進行は全然読めていなかった。 当サイトはPCマニアサイトであるが、もし経済マニアサイト(笑)だったら完全に予想を外していたところだった。

実際、サブプライムバブル崩壊直後にはどう予想していたかというと... 日本はバブル崩壊による負の遺産が積もりに積もっていた影響で銀行に投資余力が無く、 これが不幸中の幸いでサブプライムローンの被害が先進国中最小だった。 また、円キャリー取引が逆回転を始めたのも円高要因であり、 だから当然円高が進むだろうと思っていた。 サブプライムローンがはじけた時点では円安になるなどとは想像もつかなかったのだ。

ところが、想定通りの急激な円高進行後に急転直下の円安。 えぇ!!! そんなバカな〜 と思って調べてみたら、輸出の急激な落ち込みで製造業の経営状態が急降下。 典型例は超サプライズのトヨタ3月末赤字決算予想で、これらが日本の経済評価を急落させているらしい。

今回の経済危機はサブプライムローンバブルの破裂によるものだが、 その直接の被害が一番少ない国であるということよりも、製造業の業績急落の方が影響力が大きいと判断されるとは... 日本という国は良くも悪くも製造業で成り立っている国だということを思い知らされた次第。

もっとも、これは悪い話ではない。 たとえば韓国ではウォン安で輸出競争力が増し、 この世界的不況にも関わらず液晶パネル製造ラインがフル操業状態だという。 日本はこれに対抗するためシャープが一部工場の中国移転を検討するなど悪い話が多かった。 しかし、円安となれば(この程度では焼け石に水とはいえ)国際競争力の回復に役立つからだ。

ただし、技術者としては円安に期待するのは他力本願の根性無しなのがちょっと問題。 昼飯時に新聞を読んでいたのだが、ホンダの新型インサイトが絶好調だという。 各社製造ラインの稼働率が50%を割り込む酷い経済状況の中でもインサイトの製造ラインは需要を捌ききれず、 現在の状況では納車は約半年後だそうだ。 (iPhoneのように、発売当日はバカ売れしたがその後急激に失速して閑古鳥というパターンもあるので油断はできないが...)

当サイトの仕事は材料開発だけど、このホンダの新型インサイト絶好調の記事を読んで、 自分もニーズにあった廉価&高性能材料を開発すれば自力で不況を乗り切れるという確信を得た。 当サイトの趣味であるCPU探訪も同様で、intelやAMDもヒット商品次第ではこの不況を難なく乗り切る事ができるだろう。 サブプライム不況は100年来の不況と言われているが、失業率から見れば不況のレベルは同じではない。 消費を渋っているのは不況が怖いので手元資金を貯め込みたいだけであって、100年前と違って魅力のある製品を作れば販売余地はまだまだある。 この不況は技術者にとって腕の見せ所という訳だね。 (もっとも最大の問題点は、当サイトはホンダの技術者ほどには脳ミソが良ろしくないという点。 同僚の開発能力におんぶにだっこの現状では他力本願なのは変わらない...トホホ。というか、早く配位子場理論を身につけろって事だね。)

☆ついにCPUベンダーも認め始めた。   
というわけでホンダの新型インサイトの話ではなく本題のPCの話なのだが、 このインサイト絶好調の話は結構参考になるのではないだろうか?

プリウスやインサイトというとエコな環境対応車種として人気を集めている訳だが、 車の走行性能という面ではポルシェやフェラーリに勝てるわけではない。 スポーツカーのような「走行性能で勝つ」という勝ちパターンではないのだ。

ではなぜ売れ行き絶好調なのかというと、当然ながら燃費性能だ。 それに加えて新型インサイトではハイブリッドであるにも関わらず、 価格が普通のガソリン車とほとんど変わらない点が大きな魅力だ。 つまり、売れ行き絶好調の理由は燃費性能と低価格。 走行性能に関しては一定の基準を満たせばよいと判断されているのである。

では、CPUの世界ではどうだろうか?

現在でもマルチコア化が進行中で(見かけ上の)性能は順調に伸びているが、 これは一般人向けにスポーツカーを販売するようなものである。 マルチコアが高めているのは潜在能力数値だけであって、 それがユーザーの目に見える形で現れるかどうかはソフトウエア次第である。 (マルチコアが有効なのはサーバー用途やHPC用途。アプリのマルチスレッド対応が進んでいるからだ。) マルチメディア系アプリやマルチスレッド対応3Dゲームを多用する人以外の一般人に クアッドコアCPUを推奨したりするのはミスリードとしか言いようが無い。

しかし、(最近はちょっとスローペース化しているとはいえ)ムーアの法則で搭載トランジスタ数が増えれば なにがしかの回路を搭載しなければならない。さもないとファブのキャパが埋まらなくなるからだ。 そのような事情があるからマルチコア化が進むわけだが、それも限界に達しつつあるようだ。

先日、出張先で名前は忘れてしまったがエレクトロニクス系のユーザー限定非売雑誌が置いてあったので、 お昼休みに読んでいた。そしたら、お名前は失念してしまったがフリースケールの技術開発部門トップの インタビュー記事が載っていた。

内容であるが、要約するとフリースケールはマルチスレッド対応アプリの基礎開発を自腹でやるという内容だった。 インタビュアーが「それはアプリのベンダーがやるべき仕事でしょう。」という意味の質問をすると、 フリースケールの姿勢を説明してくれていた。

要するに、こういう回答だ。

マルチコア化が進行するのは時代の流れだが、マルチコアはアプリが対応しない限り性能を引き出せない。 だが、自分たちはハードウエア企業だからとこれをソフトウエアベンダーに丸投げにすると対応がものすごくスローダウンしてしまう。 だから、マルチコアの性能を引き出すためには、自腹覚悟でもマルチスレッド対応化を自分たちで進捗させるしか無いと言うのである。

この見解には当サイトも強く同意。 実際、フリースケールは口先だけではなく実行に移していて、 ハードウエアを本業にしているにも関わらず今やソフトウエアを扱う社員の数は ハードウエアを専門とする社員とタメであるそうだ。

マルチコア最大の問題点はキャッシュ構造がどうとかスヌープがどうこうといった問題ではなく、 ソフトウエア開発がものすごく困難になるという点である。 その意味でコアの中身について熟知してるCPUベンダー自身がアプリの並列化に手をつけるのは効果的であろう。 何のことはない、対応アプリが無い限りマルチコアはその潜在性能を生かせない事をついに本家CPUベンダーが認め始めたのだ。組み込み向けがメインのフリースケールとPC向けがメインのintel・AMDでは事情が異なると 考える方もいらっしゃるかもしれないが、本質的な部分は同じであろう。

じつはこの見解はソフトウエア開発関係者の業界ではずっと以前から常識であった。 PC雑誌が過剰なマルチコア化に対して「すごい性能!」とベタ褒め記事を書くのは、 彼らから見ればソフトウエア開発の困難を全然わかっていない失笑ものの内容。 実際、マルチコア化がどれくらいまでPC用途で浸透するかという意見は ハードウエア技術者とソフトウエア技術者では共通認識が無く、 ハードウエア側では16コア位までは行くという意見があるのに対し、 ソフトウエア側では4コア程度が上限(しかも、対応アプリを使っての話!)という意見が多い。

ILPウォールの困難がマルチコア化を招いた事情はよく理解できるが、 高度なアプリのマルチスレッド対応化はILPウォールに勝るとも劣らない難易度であり、 並列化処理をソフトエア開発者に丸投げする現状は、いかにも進歩をスローダウンさせているように思う。 (特にデータ並列性が生かせないフローコントロール系のアプリがしんどいらしい。)

というわけで、この方向性は一般人には役に立たないスポーツカーを性能を落とさないで町中でも乗れるような 易しい車にしましょうという話である。しかし、アプリのマルチスレッド対応にはまだまだ時間がかかるというわけだ。 (PC用CPUのマルチコア化が始まったのは2003年頃であり、2009年の今でも「まだまだ時間がかかる。」というのは、 いくら何でも遅れすぎの気もするが...)

☆理想のメニーコアはデュアルコア。   
さて、というわけで対応アプリが無いとPC用途ではマルチコアは生かせない事はCPUベンダー自身が認めはじめたわけだが、 当サイトは典型的マルチコア設計であるLarrabeeには結構期待を抱いている。 商売としての成功は難しいだろうが、当サイトの趣味はあくまで技術談義メインなのでOKだ。

ところでマルチコア否定派最右翼の当サイトがメニーコアの典型例であるLarrabeeに注目するのは自己矛盾では? と思われた方はいらっしゃるだろうか?

今のところそのようなご感想メールを頂いたことは無いが、これは結構説得力のある意見だろうと思う。 というわけで、その意味を説明してみよう。

Larrabeeはメニーコアの典型例だが、今Larrabeeが戦っているのはAMD製やVIA製のPC用CPUではなく、 AMDなら旧ATIの製品群、それにNVIDIAの製品群だ。つまりGPGPUである。

ここで問題になるのは、GPGPUはある意味で究極のメニーコアとも言えるが、 ソフトウエア開発者から見た場合はメニーコアであることをあまり意識しないで済むように工夫されているという点だろう。 それに対して、おそらく現状のLarrabeeはアプリケーションレベルで見てもメニーコアであることを 直接に意識しなければならない構造であると思われる。

たとえば、 なぜLarrabeeベースのPS4はハードルが高いのかという記事を読むと、Larrabeeにはいろいろな問題点がある事がわかる。 この中でアムダールの法則に関する考察は当サイトでも同様の意見を過去に書いたことがあり、この記事と当サイトの認識は一致している。 (しかし、これは新規アーキテクチャの産みの苦しみとも言うべきもので、当サイトは否定的には考えない。)

ただし、当サイトではアムダールの法則以外にもう一点問題点を考えている。 それが「ソフトウエア開発者から見たコア数」という観点である。

最初に新型インサイトの話を持ち出したので、自動車の話で例えてみよう。

その昔、「間違いだらけの車選び」という徳大寺有恒氏の人気自動車評論本があった。 当サイトは自動車マニアではないのでほとんど立ち読みで済ましていたが、 一つ非常に同意できる内容が書かれていたことを思い出す。 それは、AT車の変速機のギア数に関する意見である。

当時のAT車は普及車が3速、高級車が4速という時代で、現代より1速少なかった。 それが、普及車は4速、高級車が5速に変わりつつある時代の転換期。 世間の意見はATのギア数が多くなればなるほど進歩的で高級車種という扱いだった。

このときに「ギア数が多いほど進歩している。」という時代の流れに異論を唱えたのが徳大寺氏だ。 かれは無段変速機であるCVTを例に出して 「ATの進歩とはギア数が増える事ではなく、ギア数を減らすことなのだ。」と主張したのである。

世間では評価が分かれる徳大寺本だけど、 当サイトは少なくともこの意見に関しては「相当に読みが深い。」と思ったものである。 その通りである。AT車のギア数が増えるのはやむを得ない事情によるものであり、本来ならばギア数は少ないほど良い。

ここでギア数をコア数と読み替えてみよう。 事情は全く同じである。

PC用途でコア数が増えるのはILPウォールによりコア単体の性能向上が難しくなったという、 いわば「やむを得ない事情」によるものである。 それしか選択肢が無くなったというのが本音であり、CPUベンダーにとってマルチコア化はやりたくてやっている訳ではない。 (やりたいのならば初代Pentiumの頃でもi486の頃でも技術的には可能だった。)

たとえばトータルでのCPU性能が同じだった場合は、 シングルコアの方がデュアルコアよりも無条件で実効性能が高い事をPCマニアは正しく認識すべきである。 つまり、「本当の意味でのCPUの進歩とは、コア数が増える事ではなくコア数を減らすことなのだ。」と当サイトは強く主張したい。

ではなぜコア数が少ない方が良いのだろうか?

それはもちろんソフトウエア開発者の負担がその分減るからである。 マルチコアは原理的に駄目という訳ではなく、対応ソフトが無いから駄目というのが当サイトの意見。 ならば、ハードウエア上のコア数が何個あろうとも、ソフトウエア上から見たコア数が少なければそれで良いことになる。 コア数とはハードウエア上から見た数とソフトウエア上から見た数が必ずしも一致する必要性はない。 (ミドルウエアを噛ませるとか、いろいろ方法はあるだろう。)

とするとGPGPUはその条件を満たしているが、報道されている範囲ではLarrabeeはその条件を満たしていないようだ。 もちろん、汎用性でGPGPUを上回る領域を想定しなければならないLarrabeeでその条件を満たすのはGPGPUより難しいわけだが、 発売までにはGPGPUを参考に何らかの手を打ってくるだろうというのが当サイトの好奇心。 マルチコアに対するソフトウエアの対応はいろいろな手法があるだろうが、 アプリを複数のスレッドに対応させるという正当派の対策とは別に、 アプリケーション側から見たコア数を少なく見せかけるという方法も十分に考えられると思う。

ともあれ、この開発がうまくいくかどうかはLarrabeeに限らすメニーコアの将来を決める重要要素の一つになるだろうと考えている。

コア数はシングルが理想だが、ヘテロジュニアスの場合はシンプルコアと複雑なコアを一つにする事は原理的に難しい。 従って、ハードウエア的には複雑なコア1個+シンプルコア多数のメニーコアだが、 ソフトウエア的に見れば複雑なコア1個+ストリームプロセッサ1個のデュアルコアに見えるというのが 考えられる理想のターゲットのような気がする。 いわば理想のメニーコアとはソフトウエア上から見ればデュアルコアに見えるハズなのだ。

☆スポーツカーからエコカーへの転換。   
次に安易なマルチコア化は進ませないという方針転換についても考えてみよう。 先ほどのフリースケールの方向性は正攻法でマルチコアを生かすという方向性だが、他に道はないのだろうか?

そこで参考になるのがインサイトのバカ売れぶりだ。 インサイトの燃費性能は地球環境を考えての時代のトレンドである。 しかし、一般ユーザーにとっての最大の恩恵はガソリン代が安く済むという点である。 車体価格が安いのが魅力な点も結局は価格の問題であり、 要するにガソリン代にせよ車体価格にせよ安いという事が魅力なのである。

とすると今後のCPU開発の方向性が見えてくるだろう。 コア数は自動車で言えば排気量みたいなもので、現状は通勤用の自家用車にF1マシンを売り込むような状況だ。 ちゃんとわかっているコアなユーザーならば「対応アプリを使わない限りデュアルコアで十分だ。」 と思っているハズであり、実際アメリカのPC雑誌ライターはそのように書いているしね。 ちなみに、当サイトはシングルスレッド性能を落としてまでマルチスレッド性能を高める必要性はないという 立場を取っており、デュアルコアでも潜在能力を生かし切っていないと考えている。 従って、多くのユーザーではSMTさえ装備していればコア数は1個で十分と考えている。

マルチコア化はPCユーザーの事情で進む話では無いので、 PC雑誌がいくら提灯記事を書こうとも対応アプリを使用しない限り 実際にはあまり役立たないというのはいつかは必ずバレる話である。 特にコア数が増えるほどスペック上の性能と実効性能の差が乖離するので、 デュアルコアよりクアッドコア、クアッドコアよりもオクタコアの方がバレ易くなる。 そんなリスクを負う位ならば、本当にユーザーが喜ぶ製品を作った方が良い。

そして、現状ではユーザーが喜ぶ製品とは性能は一定値以上を確保しつつ価格が安い製品であろう。 価格が安い事がCPUベンダーの利益率を押し下げてしまうならば、 価格の安さ以上にコストダウンを図る方向に開発の方向性をシフトさせることである。

当サイトはAtom330マザーを買い、性能が思ったほどには伸びなかったのでちょっと落ち込んだけど、 この方向性は非常に有望だろうとも思う。 言っていることが矛盾しているようにも思えるだろうが、Atom330はPC用途ではまだ性能が少し足らないが、 開発の方向性としては全然間違っていないという意味だ。 (というか、いわゆる共食いを防ぐために一定の処理能力にあえてコントロールされているのかも。)

Atom330よりもう1ランク性能が上がればほとんどの用途をカバー可能になるだろう。
あるいはOSの負荷がもう少し下がればAtom330でも十分となる。Windows7には期待。

PC用途の場合に大事なことは、無策のままコア数のみを増やすことではないだろう。 (あえて進めるならばフリースケールのように自腹を切ってでもアプリの対応を促進させるか、 次項で書いたとおり見かけ上のコア数を減らしプログラマの負担を減らすのが大前提。 いずれにせよ、使えるアプリを増やす事が最大の課題だ。) それよりも重要なのはコストダウン省電力化だ。 コストダウンは直接に低価格化につながるし、省電力化は電池の容量を小さくしたり 電源回路や冷却ファンを簡易化できるので これも間接的にコストダウンにつながる重要な技術革新である。

また、将来のトレンドとしてダイの接続パッドのコスト負担が相対的に増えるという問題点があるが、 消費電力が減ると電源接続用のパッド数を減らすことができるので、 その分を他の接続PIN用途に回したりダイ面積をその分小さくすることも可能となる。 (トランジスタサイズ縮小のペースに対して接続パッド面積の縮小ペースは小さいので、 ミクロンルールが上がる毎にパッドの負担分は相対的に増える傾向にある。)

ムーアの法則に従って増えた搭載可能トランジスタ数をオンチップのGPU統合やメモリコントローラ、サウスブリッジの 統合に使えば埋め草はまだある。しかも、intelの場合はAMDのようにGPUベンダーを吸収合併したわけではないので、 GPU市場を奪うことができれば他社市場への切り込みに成功した事になる。 不況下でもパイが増えるわけだ。 (もっとも、現状は逆にintelマーケットにNVIDIAが切り込もうとしているみたいだが...)

今までの設計思想とはひたすら性能を追い求めるものだった。 これがCore MAの頃には消費電力あたりの性能向上が重要とされるようになった。 そして将来のトレンドはというと、性能は一定値で良く、同じ性能数値を満たした上で いかにコストと消費電力を下げるかという問題点に移って行く。

さて、この場合の基準性能とはどの程度が必要なのだろうか?

現状では当サイトのいじった範囲ではOSがVistaの場合はAtom330が最低合格ライン。 ただし、性能的にはギリギリで余裕がほとんど無いので、 消費電力が増える犠牲を払ってもOut-of-Orderを採用した方が良いかもしれない。 (あるいは、もう少しクロックを高めるか...)

どちらにせよ、ビジネスターゲットとしてはもう少し上位を狙うべきだろう。1) そうすると、今使っているメインマシンのCeleron-M 440程度が妥当な下限かもしれない。 3Dゲームさえしなければ、これで何の不満も無いわけだしね。

もっとも、Windows7ではCPU負荷が結構軽くなるという話もあって、 そうするとAtom330程度でも今のXP並に十分合格点が与えられるかもしれない。 この評価は主流OSのCPU負荷次第なので何とも判断が難しいところだ。

ともあれ、高性能な方にしても近い将来の技術水準で十分に実現可能な事は間違いなく、 マルチコアを生かす方策に目処が立たなければこちら以外に進むべき方向性は無くなってしまう。 重くなったVistaがPCマニアから総スカンを喰ったように、 実質的に速くならないマルチコアは誰も買わなくなるだけだからである。

というわけで、当サイトの今年のトレンド予想である。

というわけで、今回は出張の移動中に考えたネタ。 本当は購入したSSDでネタを...と思っていたのだけど、月の半分近くをホテルで過ごす毎日なので 実機をいじる暇が無く難しかった。今日(3/8)はアパートに戻れたので、次回こそはSSDネタを予定している。 結論だけ簡単に書いておくと...意外なことに今年はSSD伸び悩みの1年になる可能性が高いという事である。



1)
Atomの魅力は価格と消費電力である。消費電力が大きくても問題ない用途で 通常のCPUと価格差が無くなれば、あえてAtomを選ぶ理由はない。 というわけで、価格の安さに惹かれるならば、Atomのネットトップよりも こんな感じの とかこんな感じの方が良いと思う。 (もっともコアはクアッドでなくデュアルでいいから、その分値段を安くしたのがあればもっと良いと思うのだけど。 これでも十分に安いから、ちょっと自分勝手言い過ぎかな?)

Atom人気はネットブックレベルまでであり、デスクトップではブレークしないだろう。 (そのネットブックもノートPCの価格が下がれば失速すると思われる。) 一時的には価格の安さで売れるかもしれないが、上記の通りの通常製品が廉価販売された時点で売れ行きは急速に鈍っていくハズである。 Atom人気の本質は価格の安さ。それ以外にはない。すべては価格の相対ポジション次第なのだ。


本記事の間違い訂正

PCマニアとしていろいろと考えている当サイトだが、そこはシロウト。 久々にやらかしたようである。とあるプログラミングのプロの方から間違いの指摘を受けた。

もちろん、自分でそれに異論があれば相手が誰であろうと言いたいことを書いて反論してしまう当サイトだが、 今回はすんなり訂正する事にした。 それは、メールを読んでご指摘が正しいと思ったからだ。 なので、返信もメールの転載許可を依頼するだけで反論は一切無し。 こういうときはグタグタ言い訳をするのではなく、素直に訂正させていただく一手だろう。

で、何を間違えたのか。 それはGPGPUのプログラミングモデルを見当違いに認識していたこと。 当サイトはGPGPUの物理コアは数個まとまって論理コアになっていると勘違いしていたのだが、 実際は下記の通りだそうだ。

幸いにしてメールの転載許可をいただく事ができたので、転載してみよう。 メールはかなり長文で精読するには時間がかかる内容だが、最初の一文が一番わかりやすい。 「CUDAやBrook+, OpenCLなどのSPMDのプログラミング手法のことを言ってるのだと 思いますが、CUDAやOpenCLはシェーダコアの各SPで動作する論理スレッドの 処理単位でカーネル関数を記述する方式を採っています。 NVIDIAはこれを「SIMT」と呼んでいます。」 つまり、「シェーダコアの各SPで動作する論理スレッドの処理単位」という点で当サイトの誤認識確定である。

とすると、コア数が多いほどプログラミング上で不利な点は間違っていないので、 プログラミング上で不利なのはLarrabeeよりはむしろGPGPUという事になる。 論理は同じだがコア数が逆転したので、結論も逆転してしまったわけだ。 (intelの技術者さんにはお詫びですな。)

ここ最近は誤記以外の間違いの指摘が無かったので油断していたのか、 知識に間違いが混ざり込んでやらかしたというわけ。

もう1点指摘があったのは下記の点。 「新たな言語を覚えなくともフルセットのC/C++でプログラミングできるというのは、 開発者の負担を減らすことにもなると思います。 逆に言うと、「専用の言語」の取得の必要が生じる時点で、もはやマルチコアに対して フリーランチでは無いということです。 それ故、何をもってGPUがメニーコアを意識する必要が無く、Larrabeeには必要あると言って おられるのか、私にはまったくもって理解出来ません。」

厳しい指摘だが、正しい指摘でもあると思ったのであえて最後の厳しい一文まで掲載する事にしてみた。 コア数の問題が仮に間違っていなかったとしても、この点から見れば確かにその通りである。

というわけで、今回の内容は「コア数が少ない方がよい。」という主張は変えなくても良いが、 GPGPUとLarrabeeの関係は訂正させていただく事にした。 (なお、本文の方は自戒の意味も込めてあえてミスがあるままにしてあるのでご注意を。) まだまだPCマニアとしては精進が足らなかったようだ。

ともあれご指摘どうもありがとうございました。