原因があって結果がある。(PenrynとNehalem雑感)   

2007年4月16日



☆Coreマイクロアーキテクチャはもう最終段階? 未完の大器が必要なのだ!   
と言うわけで、ようやく本題。

最近、intelからPenrynとNehalemの情報が一部公開されたわけだけど、 最近更新をサボリ気味なので予想を書く前にPenrynのみならずNehalemの概要まで発表されてしまった。 なので、今回は予想ではなくて当サイトのあるべきCPUの姿とどれが近いかで考えてみたいと思う。

まず、Penryn。何のかんの言っても要するにMeromの改良版であって、 T7200を買ってしまった当サイトには興味の範疇外である。 特に、性能向上を2次キャッシュ増量に頼っていると言うことは、 確実に性能が向上する一方、性能向上の度合いに限界も見える訳で、 手堅い設計だけれどアーキテクチャ的には全然おもしろくない。 (何か隠し球があれば話は別だが...)

アーキテクチャの変更を抑制し、単純な量的改良(この場合はキャッシュ増量)で事を済ませると言うことは、 一言で言えばCore〜Core2シリーズの派生品はアーキテクチャ的拡張の限界を迎えつつあるという事ではないだろうか? (当サイトはPenrynではデコード系の大幅刷新無しと予想する後藤弘茂氏の見解に同意する。)1) なぜならば、CPUを刷新する際に各種要素の一部だけを改良し他の部分の改良を放棄した場合、 その機能の効き具合の飽和が始まるからである。(ILP向上の放棄はキャッシュの効き具合を弱めるし、 ILPを改良した場合はメモリアクセスも改善しないと性能が飽和してしまう。 お互いに無関係に一方的に性能を強化できる訳ではないと思う。)

わかりやすい例がAthlon系列からAMD64系列への改良だ。 メモリコントローラのオンチップ化とμOPs-Fusionに似たパック-アンパックステージの追加搭載は基本的に一連の改良だと思う。 コア部分のILP向上とメモリアクセスの改善は螺旋階段を登るように連綿と行えという事だと思う。 (それをAMDのようにオンチップメモコンでやるか、intelのようにキャッシュでやるかという違いはあるにせよ。)

あえてもう一度繰り返して言う。 キャッシュ増量とILP向上はセットであり、お互いに無関係に一方を強化し続けるだけで一方的に性能を強化できる訳ではないと思う。 基本的には両者は同時に改良すべきだし、それが不可能ならばせめて世代毎に交互に改良してゆくべきだ。 (注:キャッシュも平均値的にはILPを向上するわけだが、ここで言うILPとは直接の同時実行命令数という意味でのILPね。念のため。)

しかし、残念ながらPenryn以降の同系列CPUでILPを向上できる見込みは薄いという報道が多い。 キャッシュ増量を次世代でもう一度行うのは、夢よ、もう一度...と言うわけだが、 一度目の増量ほどの効果が見込めるかどうか...当サイトには非常に疑問だ。

実際、Core系列のCPUを見ているとμOPs-Fusionという発想を例外とすれば、 長期的・継続的に改良され続ける設計思想に乏しい様に思う。

Penrynを見ていると、何というか多数の部分最適化の集合体というか... 説明しにくいのだが、「こうすればCPUは速くなる!」という発想を設計思想の中心に込めるのではなく、 「ここはこれが問題だからこう改良して問題点を潰し、あっちは別の点が問題だからこのようにして問題点を潰し...」 といった短所を潰す発想というか... 設計思想に枝葉を付けていくのではなく、すでにある枝葉の虫(バグ)を駆除して行くような考え方というか... ボトルネックを解消していくことが設計思想と言えば設計思想なのかな...

Net-Burstなら高クロック至上主義、K8アーキテクチャなら正統派高IPC主義、 Crusoeならホットスポットの動的最適化といったように、根幹部分にはアーキテクトの設計思想が必ず滲み出るものなのだ。 だが、Core系アーキテクチャには消費電力削減といった非性能部分での主張はあるが、 肝心の性能に何しては命令を極力分解しないという設計思想以外には骨太な設計思想(良い悪いは別にして)に欠ける様に思うのだ。

とすると、Penrynの問題点も見えてくる。 それはアーキテクチャ拡張のヘッドルームが小さいことだろう。 要するに問題点を潰していくだけならば、近いうちに改良に行き詰まるということだ。

当サイトは軽量な機体で超高性能を達成したゼロ戦の姿とCore系アーキテクチャが重なって見える。 ゼロ戦は登場当時は画期的高性能で無敵の戦闘力を誇ったが、機体が徹底的に軽量化されていたため 機体の改良余地が少なく、後にゼロ戦を徹底的に研究して開発されたアメリカ製新型機には苦戦を強いられた。

コアが小さい事はメリットには間違い無い。コストは安くなるし、消費電力は減る。 しかし、今後の改良余地という意味では骨太な設計思想ある程度の冗長な設計が不可欠とも思う。 ギリギリに切り詰めた設計では、高効率と引き替えに進化の袋小路に陥りやすい。 当サイトはμOPs-Fusionを高く評価する側だが、それでも継続的な改良点がμOPs-Fusionだけではゼロ戦と同じ運命だろうとも思う。

例えばNet-Burstは10年以上継続して使えるアーキテクチャを目指して設計され、 そして消費電力問題に敗れて時代の表舞台から去っていった。 つまり、想定外の問題で消え去る羽目になったものの、 設計自体は10年間の改良に耐える設計を目標にしていたわけだ。 そういう背景とは別にノートPC用CPUから派生したCore系CPUは、 同一系列による長期の改良を前提としていなかったのかもしれない。 (ノートPCは例えば無線LANといった周辺技術による影響をデスクトップより受けやすい。 だから、ノートPC用CPUは長期的展望に基づいた設計を考えること自体がデスクトップ用CPUよりも難しいと思う。)

実際、この系列の初代CPUであるPentium-Mが世に出たのは2004年であり、まだ実質3年しか経過していない。 (初代はP6アーキテクチャ自体という意見は申し訳ないけど却下ね。 確かに下地にはなっているのだろうけどP6アーキテクチャはイスラエル開発部隊の作ではないからね。) Pentium4の発売開始が2000年末だった事を考えると、Penrynは(もし当サイトの予想が正しければ)意外に短い期間での最終製品だった事になる。 良く言えば完成の域に達した。悪く言えば行き詰まったということだ。

Core〜Core2のアーキテクチャが失敗作というのならば短命に終わるのは当然である。 しかし、失敗作どころかAMDからシェアを奪還した名機なんだから改良の余地がある限り延命策をとるのは経営者として当然の判断だろう。 そしてその間に少しでもNehalemの完成度を上げるべきだ。 ごく少数の品種とはいえ失敗作と言われたNet-Burstでさえ老骨に鞭打って未だに現役で働いているのだからね。 (それとも、ATIを買収して経営資金的に余力の少なくなったAMDに対し、今こそNehalemを切り札に一挙先制攻撃という目論見なのか?)

これ以上改良ができないというのならばハナから完成度が高くて改良の余地も少ないと思うべきだろうが、 これが良いことか悪いことかは短期的判断と長期的判断では異なる。 長く使える基本設計という思想は決して悪くなく、当サイトはCPUの設計思想にある種の未完の大器を求めるのである。

☆オンチップメモリコントローラ搭載は技術ではなく政治的決断と考える。   
と言うわけで、当サイト的注目は断然Nehalemである。

もちろん、一般ユーザーから見れば設計が手堅かろうが大幅なアーキテクチャ刷新だろうが 性能さえ上がればどちらでもいいわけで、その意味ではPenrynをバカにする気はさらさら無い。 しかし、やはりCPUマニア的に見ればキャッシュ増量とアーキテクチャ刷新では心のウズウズ度が違おうというものだ。

Nehalemの改良点については各種報道を見ていただくとして、 当サイト的注目点は以下の3つ。

  1. Hyper-Threadingの復活
  2. オンチップメモリコントローラ
  3. CPU-GPU混載
しかし、2番目のメモリコントローラ搭載は技術的には正しいことがずっと前からわかっており、 あとはintelの政治的決断を待つだけだったし、3番目のGPU混載は当サイトの以前からの主張とはいえ、 Fusionの後追いだから二番煎じの感は否めない。

オンチップメモリコントローラに関して言うと、実はintel自身がずっと以前からこれが技術的には正解であることは熟知しており、 ただ政治的に可能な限り決定を先延ばししてきただけなのではないかというのが当サイトの主張だ。

どういう事かというと、それはintelがどの半導体メーカーを最大のライバルと見ているかに理由があると思う。

オンチップメモリコントローラがCPU-FSB-ノースブリッジ型構造より性能的に優位なのは AMD64系CPUがCoreマイクロアーキテクチャより少ないキャッシュ量でそれなりの戦いができることに現れている。 intelだってバカではないから当然そんなことは承知していたはずであり、 ではなぜそうしなかったかというと、ノートPCでの消費電力問題も一部あるだろうが、 最大の理由はメモリの標準化動向に経営を左右されたくなかったという一点に尽きると思う。

わかりやすく言うと、オンチップメモリコントローラを採用しなかった期間のintelはAMDではなく サムスンを最大のライバルと考えていたためと言うことだろう。 製品系列という意味ではAMDが最大ライバルのように誰でも考えるだろうが、 企業の事業規模という意味ではAMDはintelの敵ではない。 半導体業界の主導権争いを考えるとしたら、intelがまずライバルと考えるのは 売り上げ規模でintelに肉薄するサムスンに違いない。

オンチップメモリコントローラアーキテクチャはDRAM最大手のサムスンに主導権を握られ易くなるアーキテクチャであり、 intelとしては性能面で優位なのはわかってはいても何としても避けたかったのではないか...

そこをNet-Burstの失敗でintelの優位が足下から揺らぎ、その結果、まず眼下の敵AMDを叩く方針に転換して オンチップメモリコントローラ採用となったのだろう。 もちろん、サムスンに一時の勢いが無くなったという日本の経済誌がすべからく予測を大コケさせた 半導体業界の動静変化もintelの経営判断に影響を及ぼしていると思う。

余談だが、じゃぁCore系アーキテクチャ段階で採用すればいいのでは?と思われる方がいらっしゃるだろう。 実はオンチップメモリコントローラ方式は巨大キャッシュでメインメモリのアクセスを抑制する方法に比べると 消費電力面では不利となる。チップ間アクセスはオンチップアクセスよりもドライブ電流を極端に喰うからだ。 Core系アーキテクチャは本来はノートPC用だから、オンチップメモリコントローラよりは消費電力面で有利なキャッシュに注力するのは当然で、 もともとオンチップメモリコントローラ方式を前提に基本設計されていなかったのだと思う。

☆原因があって結果がある。つまり、Hyper-Threadingは悪くない。   
というわけで、Hyper-Threadingである。 Hyper-Threadingを3つの内で1番に持ってきたのはちょっとアレだが、お許し頂きたい。(汗) 1.は当サイト的には嬉しい予想の的中事項だからだ。(^^;)

Northwoodまで順調に性能を伸ばしてきたPentium4がPrescottで大失敗したとき、 そのアーキテクチャであるNet-Burstはネット上で叩かれた。 それはもうボロクソとも言えるもので、そのありとあらゆる特徴がダメ出しされた。

当然、Hyper-Threadingもその例外ではなく、 虚妄のマルチスレッド対応として散々に叩かれた。

しかし、当サイトは相対的にNet-Burstの事を悪く書かなかった。 このため、一時期はintel教信者扱いされたこともある。2)

このとき、当サイトは何を考えていたか...

「良いときにはすべてが良く見え、悪いときにはすべてが悪く見える。 これは因果関係を逆に見ているからではないか...」

結果が悪ければ当然原因がある。しかし、結果が悪いとき因果関係を考えずに、 悪い結果に合わせようとすべての要因を悪く考える。 結果が良いときには、逆に要因をすべてよく考える...

これは経済誌等でよく見られる現象で、物事の評論によりお金を取るプロとしては もっともあってはならない事だと常々考えてきたことだ。 結果に合うように原因があるのではなく、原因があるから結果があるのである。 結果から原因を考えるのはあくまで原因を探る思考の過程であって、 因果関係は「結果→原因」ではない。

最近は一部の報道機関がようやくわかってきたようで、某韓国メーカーに対しても過大評価も過小評価もしないように注意していると 書くようになったが、一時期はすべてのメディアが某韓国メーカーのすべてを大賞賛するというミスを犯していた。 おかげで、これらの経済誌は東芝やエルピーダという日本のメモリメーカーの復活劇を全く予想できていなかった。 数年前の経済誌は「メモリ業界は韓国勢が席巻。日本メーカーは再起不能。」という予測一色である。 ちなみに、エルピーダは前年度の営業利益がわずか1億4400万円だったのに対し、今年度はなんと680億円!の見通し。 (ちなみに、当サイトの予測は2004年8/23に書いた。ここの巻頭余談をご参照くださいまし。)

Net-Burstも同様であり、つまり、Net-Burstの失敗要因は核心部分が一つかせいぜい二つ程度しかないのではないか... というのが当サイトの分析方針であったのだ。 (すべての設計をミスするというのは、ある意味で凄い才能だ。)

Net-Burstの失敗要因...

よく言われるのは高クロック主義である。 30段とも言われるハイパーパイプラインは高クロック動作を前提として設計されている。 分岐予測に失敗すればパイプラインをフラッシュするダメージは非常に大きい。

しかし、当サイトは単純に高クロック主義を悪いとは決めつけていない。

例えば最近ではPower6の例がある。 Power6は極端なまでの高クロック主義だが、Net-Burstのような破綻をきたしていないどころか きわめて優れたプロセッサとしてプロ間の評価もかなり高い。 当サイトは以前BlueGene/Lの事をあまり良く書かなかったためアンチIBMと思われている節もあるが、 それぞれ純粋に技術的に評価しているだけであって、 Power6は当サイトの目(節穴だけど)から見てもきわめて優れたプロセッサだと思う。

シンプルな構図で物事を単純化して考えるのは当サイトもよくやる手法だが、 「高クロック=悪」という構図は図式の単純化としても誤っていると思う。 高クロックが裏目に出る場合もあると考えるべきだろう。

とすると、どう考えればいいのだろうか?

以前に分析したのはトレースキャッシュの影響である。(ここをご参照ください。) キャッシュ効率が低いことがNet-Burstの欠点ではないか、という指摘だ。

そして、その原因の根本は徹底した内部RISC構造とx86命令を単純なμOPsにバラバラに分解するシステムにある。

Net-Burstのx86ベースでのIPCが低いことはよく知られているが、 その原因について世間の平均的認識と当サイトの認識はかなり異なる。 世間一般の認識はμOPsレベルで見てもIPCが低いプロセッサという認識になるのに対し、 当サイトの認識はμOPsレベルでのIPCは決して低くなく、ただ、x86を多くのμOPsに分解するために μOPsベースのIPCをx86ベースのIPCに換算する際にIPCが低下してしまうと言う認識だ。

どちらが正しいかであるが、SSE関連の命令でNet-Burstがどれだけ健闘するかでわかると思う。 SSEは基本的にx86のような複雑なメモリアクセスモデルを採用せず、むしろRISC命令セットに近い設計思想となっている。 つまり、Net-Burstの内部でのμOPsへの分解数はおそらく非SSE命令より小さいと思われる。 もしそうならばμOPsレベルでのIPCとx86ベースでのIPCの乖離が非SSE命令より小さいというのが当サイトの読み筋だ。

一方、高クロック、高パイプラインがNet-BurstのIPC低下の原因とする従来説ならば、 基本的には両者の性能には大きな違いが出ないはずだ。 (分岐予測ミスの影響を考えると、分岐命令の多寡の影響は受けそうだが...)

当サイトは、Net-BurstがSSE系の処理ならAMD64系に負けない理由を 自説で説明できるのではないかと思っているのだが...真実はどうなんだろうか?

ともあれ、こうした目で見てみるとHyper-ThreadingにはNet-Burst失敗の要因が重ね合わないことがわかる。 ありとあらゆるNet-Burstの特徴が駄作というわけではなく、Hyper-Threadingは悪くない。

「原因があるから結果がある。」と考えればNet-Burst失敗の要因にHyper-Threadingは無関係であり、 冤罪であるというのが当サイトの主張である。 むしろ、Hyper-Threadingは投入トランジスタ量の割に性能向上への寄与が大きいという効果があり、 ポラックの法則から考えればむしろ非常にトランジスタ効率の良い設計思想であると思う。

☆注目しては見たものの...   
と言うわけで、NehalemはμOPs-Fusionという命令を細かく分解しないCore系アーキテクチャに Net-Burstの特徴を組み込んだものになる。 そしてGPU搭載というFusionの特徴もメモリコントローラ搭載というAMD64系の特徴も取り込む。

(Coreマイクロアーキテクチャ+Net-Burst+Fusion+AMD64)÷4...

Nehalemは「Pentium Pro以来の大幅改変」と言われており、当サイトも大いに期待していたのであるが、 残念ながらそんな印象を拭えない。

Nehalemに注目してみたものの、考えてみた結果は正直「これは凄い。」という感想を持てなかったのも事実だ。 性能的にはかなりの高性能が見込めるとは思うのだが、はっきり言って 各種プロセッサのいいとこ取りでは骨太な設計思想に欠けるではないか。 (たとえ性能がイマイチでも、当サイトはCrusoeのような骨太な設計思想が大好きである。 そこには設計者のものの考え、理想、信念、主義主張が見えるからだ。 「いいとこ取り」は結果としては高性能を出せるかもしれないが、要するに先行技術への媚びである。)

Net-Burstの失敗に懲りて、実際に先行例のある方式のいいとこだけを選り集めるのでは、 短期的には成功しても長期的には拡張性に欠けると思う。 ひょっとしてintelはNet-BurstやIA64系の失敗で「CPUの世界では長期的展望予測は所詮当たらない。」と開き直って、 開発方針を短期サイクル小改良の繰り返しに置き換えたのであろうか?

Nehalemに対する当サイトの今の期待はNet-BurstにおけるHyper-Threadingと同じだ。 つまり、(当サイトの好奇心という意味では)発表内容ではあまり大きな期待ができなさそうなので、「隠し球」に期待を寄せている。 Hyper-Threadingの時のような「隠し球」があればいいのだが...

手前味噌だが、「隠し球」がトレースキャッシュの採用だと当サイト的に大変嬉しいね。 そうすれば、Hyper-Threading、GPU混載と並んで、当サイトが以前ダメ出し喰った技術予想がすべて100%復活する事になるから...



1)
Coreマイクロアーキテクチャのボトルネックはフェッチ帯域の関係で命令がうまくデコードできない事にあると言われているが、 むしろコアのトランジスタ数から見て、並列性を抽出する過程のハードウエア量を多く取っていない事と、 実行ユニットが比較的少ないことも問題だと当サイトは考えている。 (消費電力とは相反する問題だから、ノートPC用CPUとして妥協したのかもしれないが...)

2)
Fusionのおかげで今はAMD教信者扱いなんだが...なんだかね〜。