いいえ、正しい設計思想なのです。(Isaiahの設計思想)   

2008年1月27日



☆電源ネタとあたらな疑問。   
さて、ずっと電源関係のネタが続いたので今回は気分を変えてCPUネタである。

いや、電源関係のネタが終わったわけではない。 実を言うと前回の話の内で、クロックのスプレッド・スペクトラムに関して ちょっとした疑念がわいてきて、それについていろいろと調べている最中なのだ。

どういう事かというと、スプレッド・スペクトラムが本当にEMI対策になっているのか?という疑念だ。 前回、クロックのスペクトラムを拡散させると高次相互作用が減ると書いた。 だが、これは真の意味でクロックのスペクトラムが拡散している事が大前提である。

しかし、CPUのクロックは携帯電話におけるCDMA方式のようなDS(直接拡散)方式ではなく、 多くの場合で周波数掃引方式を採用している。 周波数掃引方式の場合は、時間平均ではピークパワーが減るけれど、 ある一瞬のスペクトラムを見た場合は急峻な波形のままであり、その時間内だけ見れば決してピークパワーは減ってはいない。

この場合は、高次相互作用は時間平均では減るけれど、高次相互作用が発生している時間内では 拡散を行っていないのと同じピークパワーで発生しているわけだ。 つまり、スペクトラム拡散を行っていようがいまいが、 拡散された周波数範囲全般にわたって全積分強度を考えれば実際は同じレベルなのではないだろうか? との疑念を抱いているわけだ。

これを考える上でいろいろとWeb上で調べてみたのだが、 スプレッド・スペクトラムが真の意味でEMI対策になっているかどうかは、 実はその筋のプロの世界でも論争になっているようである。 一般論で言うと、妨害を与える側(たとえばCPUアーキテクト等)は対策になっているという見解が多く、 妨害を受ける側(たとえば携帯電話などの通信業者等)は根本的な対策になっていないという立場をとる事が多いようだ。

当サイトはDSのように真の意味で周波数成分が拡散していればちゃんと高次相互作用も減るのでEMI対策として 有効と判断している。だが、そうではなくある一瞬だけ見れば拡散していないピークが存在し 周波数掃引で時間平均を考えることで見かけ上のピークパワーを減らしている場合にもEMI対策になっているかには少々疑念があり、 これについてはもう少しちゃんと勉強した上で当サイトの見解を述べてみたいと思う。

☆シングルコアとは...VIAはIsaiahの設計を間違えたのか?   
というわけで、電源ネタは1回お休み。 今回のネタはVIAの新プロセッサIsaiahである。 市場シェアではごく小さなシェアしか獲得していないVIAだが、 CPUのトレンドについて考えるには非常におもしろいと思ったから扱ってみた。

Isaiahの詳細については各種メディアで報道されているからそれをご参照いただきたい。 ( VIA、新設計アーキテクチャCPU「Isaiah」を2008年前半に製品投入 辺りの記事が一番詳しいのではないだろうか。)

Isaiahには現代トレンドに沿った特徴と、現代トレンドに沿わなかった特徴がある。 それらを列記すると以下の通りとなる。

これは現代CPUの設計思想を考える上でとてもおもしろい傾向だと思う。

まず、歴史的に見たVIAの根本的な設計思想を見てみよう。 VIAのプロセッサは歴史的に見るとパフォーマンスよりもコストと省電力性を重視した設計となってきた歴史がある。

VIAはCPU設計においてCyrix社(それ以前にNational Semiconductor社に買収されていたので正式には同社の子会社だが)を買収し、 社内でCyrix設計のコアと社内コンペとなった時期があった。 だが、結局量産に採用されたのは高パフォーマンス&高消費電力・大サイズコアのCyrix案ではなかった。 CyrixIIIとCyrixの名前を冠して発売されたものの、現C7コアのご先祖様にあたる低パフォーマンス&低消費電力・小サイズコア案が採用されたのだ。

だが、この高パフォーマンス&高消費電力・大サイズコアのCyrix案は仮に実現したとしても商売としてはうまく行かなかった事は明白だと思う。 当サイトは当時のトレンドである内部RISCアーキテクチャは正しい設計思想と思っており、CISCアーキテクチャに長年こだわってきたCyrix案は 仮に一部内部RISCアーキテクチャを採用していたとしても中途半端な設計になるだろうと予想していたのだ。 (結局Cyrix案のコアは量産されなかったので、当時のCyrix案が内部RISCアーキテクチャを採用していたのか、 長年の伝統に従って純CISCアーキテクチャだったのかは推測でしかわからない。)

ここで余談を少々。実は判官贔屓な当サイトはCyrix案が採用されればレアなコアとしてお試しに購入してみようと当時は思っていた。 だが、純CISC設計に対する感情的な思い入れとは裏腹に、論理的に考えれば純CISC設計は間違っており、 VIAの決定は正しい判断だと渋々認めざるを得なかった...というのは当時の懐かしい思い出である。 (論理と感情の葛藤だね。判官贔屓な当サイトは同様な葛藤でCrusoeも技術的な面白さからご指名でノートPCを購入してしまった。 CPUの性能面から見れば決して正しい選択ではなかった事は今更言うつもりはない。所詮趣味なんだから楽しければ良いのだ。)

とっ、話を戻して... というわけで、VIAのコアは市場シェアがそれほど大きくなくても赤字を出さずに生産を継続できるために、 ダイサイズを小さくすることで収益性を改善している事がわかる。 パフォーマンスが低いことは、低コスト・低消費電力でカバーできるとの判断である。

では、ここで低コスト・低消費電力を考えた場合、今回のIsaiahの設計思想が正しいかどうかを考えてみよう。

まず、記事中でも指摘されているとおりOut-of-Orderはコアサイズ的にも消費電力的にも正しくない選択である。 Out-of-Orderは確かに性能を上げるけれど、増やされたトランジスタ数に比べると非効率な性能上昇でしかない。 また、トランジスタ数に見合った性能向上が得られないと言うことは、電力効率も低下するという事を意味する。

これは今回採用されなかったデュアルコア設計と比較してみればわかりやすくなる。 というわけで、ここで現C7コアのデュアルコア・バージョンを考えてみよう。

比較項目 コアサイズ C7比推定性能
Isaiah 同一プロセスルール換算で3.7倍
(プロセスルールの縮小により実際は約2倍)
1.9倍
(ポラックの法則から推定)
デュアルコア版C7 同一プロセスルールならほぼ2倍
(+α分は必要だが、共用で削減できる部分も。)
2倍
(理論ピーク性能)

どうだろうか? 見ていただくとわかるとおり、理論ピーク性能ベースで考えた場合は 現行のC7コアをそのままデュアルコア化したほうが性能・コスト(ダイサイズ)共に良好なことがわかる。 (注意:推定性能は整数演算性能である。Isaiahの浮動小数点演算性能は4倍になるとされるので、この点ではIsaiahが勝る。)

また、現行C7コアをデュアルコア化した方が開発コストも削減する事が可能だし、 従って開発期間も短くて済む。 (キャッシュ増量だけで性能が上がるか?という問題を別にすれば) キャッシュの増量は抜本的な設計変更を必要とするものではないし、 もちろん浮動小数点演算の強化は別途必要なわけだが、 これはPenrynのように部分的な改良でも実現可能であり、 このためにOut-of-Order化などという抜本的な大改良が必要だった訳ではないだろう。

消費電力面でもOut-of-Order化は不利だ。 デュアルコアの場合、スレッドが1つしか無い場合は1コアを止めることが可能であり、 高性能が必要ないケースで2つスレッドがあれば2コアを低クロックで動作させることで 一定性能を維持したままさらに消費電力削減が可能だ。

つまり、現状のPC環境ではマルチコアはそれほど効果的ではないという事実を無視して 理論ピーク性能がそのまま実性能を意味すると考えた場合のベストな設計思想とは下記の通りだ。

結局の所、もしデュアルコアの性能が通常のPC環境でフルに発揮できるとすれば、 Isaiahの設計思想はまったく間違っていたことになる。

☆デュアルコア化より進化の限界までシングルコア能力を上げる事が最優先。   
では、なぜVIAはこんな間抜け?な設計をしたのだろうか?

それは先ほど紹介した記事の中に回答が書かれている。 同記事から引用させていただくと、 「デュアルコア、クアッドコアという方向性は、将来はあり得るだろう。 しかし、重要なことはデュアルコアにすることでダイサイズは倍になるが、性能は倍にはならないということだ。 我々は効率にこだわっているし、エンドユーザーに対して低価格で低消費電力で、 しかもバリューのある製品を届けるというコンセプトにこだわっている。 だから、CNはシングルコアとして設計したのだ」となる。

当サイトが上記に示したリストからすれば、デュアルコアC7の方が理論上は同一性能でのダイサイズが小さくなる。 つまり、コスト的にはデュアルコアの方が低価格となる。 また、先ほど書いたとおりスレッド数が十分にあれば、デュアルコアの方がより低消費電力になる。

しかし、これはPC用途でも常時十分にスレッド数が存在するという事が大前提となる。 つまり、それが成り立たないことをVIAは熟知しているからこそ、 コストや消費電力面でビハインドがある事を承知でOut-of-Order機構を採用したのだ。

効率にこだわっているからシングルコアにしたというVIAの主張はきわめて示唆に富んでいる。 なぜならば、理論ピーク性能ベースではデュアルコア版C7の方がIsaiahよりも見かけ上は効率的だからだ。 ポラックの法則が示唆するところは、小コアのマルチコアの方が大コアのシングルコアよりも効率が高い事による。 しかし、アムダールの法則が示唆するところは、マルチコアが効率的なのは十分なスレッドが常時発行できる場合に限るという点が重要だ。

両者のバランスを考えて、PC用途ではポラックの法則よりもアムダールの法則の方が寄与が大きいとVIAは判断したのだろう。 これは現段階でのマルチコアに対する当サイトの認識と一致する。

マルチコア化はPC用途で正しい進化の方向性か?という疑問に対し、 もしそれが正しいのならばVIAのようなコアの複雑化はまったく誤った判断となる。 スレッド数が順調に増えるという前提が成り立つ場合の正しい設計とは、 CELLのように小さなコアをたくさん入れることであろう。

そして、実際C7コアはx86-CPUとしてはかなりダイサイズが小さいことで知られている。 普通に考えればデュアルコア化に都合の良い話ではないか。

以前使用していたVIA-C3(800MHz)
静音性を生かしWindows2000時代には当サイトの実質的なメインマシンとして稼働していた。
決して高性能ではないが、ゲームやビデオ編集以外の用途ならば必要にして十分な性能だった。

しかし、マルチコア化はコアの複雑化が行き詰まったためにやむを得ず選択された苦肉の策であるという、 当サイトの以前からの主張に従えばどうだろうか?

intelやAMDはOut-of-Order化、μOPs-Fusion、大容量2次キャッシュ、浮動小数点演算の強化などを 既に済ましており、ここから単一コア処理能力を上げることは確かに難しい。 マルチコア化はやむを得ない面も確かにある。

しかし、それらをまだ済ましていないVIAの場合は、デュアルコア化よりもまず先にやるべき事が残されている。

シングルコアでの性能向上が行き詰まっていない段階のVIAはシングルコアの性能向上をまず先に済ませることが 正しい設計思想である。マルチコア化はシングルコアでの性能向上が行き詰まった段階になってはじめて手を付ければそれで良いのである。

☆L2を大容量化するためにもOut-of-Order化は必須。   
もう一点追加するとすれば、それは2次キャッシュの1MB化にOut-of-Order化が必須だったという事だろう。

キャッシュの寄与はキャッシュミスがロスタイムの多くを占める場合に有効なのであって、 それはコアの実行性能が上がれば上がるほど相対的にキャッシュミスの寄与が大きくなる。 逆にC7コアのようにコア自身の処理能力が低い場合は相対的にキャッシュミスの寄与が小さく、 従ってキャッシュ増量を行っても性能向上は限られたものとなる。 (以前、当サイトはその辺りの事情を螺旋階段が性能を上げる。(キャッシュだけに頼れない理由。) に書いたことがあるので、興味のある方はご参照いただきたい。)1)

プロセスルールの進化によって搭載可能なトランジスタ数は増えているが、 これをキャッシュに振り向けて性能向上を図ろうとする場合、 無条件でただキャッシュ増量すれば性能が上がるというような単純なものではなく、 キャッシュの効きを良くするためには同時にコアの高性能化も不可欠というわけだ。 (もちろん、コアが高性能化すればいい話なのでOut-of-Order化の他にも手はある。 IBMのPower6の様にin-order化する代わりに高クロック化という手も考えられる。)

というわけで、搭載可能トランジスタ数が増えたことをキャッシュ増量に使おうとした場合、 現在のC7コアをデュアルコア化してもせいぜい2倍(コアあたりのキャッシュ量がシングルコアC7同一になる。)の キャッシュ容量が限界と予想できる。つまり、 一気に8倍というIsaiahでの2次キャッシュ増量はOut-of-Order化によって実現可能になったと考えるべきだと思う。

IsaiahはOut-of-Order化されたとは言ってもコスト・消費電力重視な設計のため、 コア単体の実行性能はおそらくはCoreマイクロアーキテクチャには負けると思う。 だから、Penrynのような6MB(1コアあたりでは3MB)という大容量まで増量可能かというと不明な面はある。 だが、少なくとも今回の1MBキャッシュはちゃんと機能するだろう。 (1次、2次キャッシュ量の容量差が開いたのに排他的制御を採用するのはチト疑問だけどね。 おそらく使い慣れた設計を踏襲したかったのだとは思うが、容量差が大きいなら無駄な容量は相対的に比率が減るのだから、 レイテンシの小さい通常制御を採用する手もあったように思う。)

というわけで、Out-of-Order化も大容量2次キャッシュもシングルコアの進化の限界に到達するまでは デュアルコアより優先度は高いと考えるのが妥当だろう。

ところで、Isaiahは3命令同時デコードだが、トランジスタ効率から考えてAMDのような完全3命令同時デコード仕様には なっていないと当サイトでは推測している。 おそらくはショートデコーダー2個+ロングデコーダー1個の構成だろう。 つまり、仮に当サイトの推定通りだとすると デコード能力は4命令デコードのMerom系よりはワンランク下と見るのが妥当だろう。 intelで言えばDothan〜YonahクラスのCPUだと思われる。

intelはPentium-M系のCPUをYonahからデュアルコア化した。 つまり、VIAがデュアルコアCPUを作るのはおそらくは次世代からと推定できる。 DothanからYonahではコア自身の改良は小幅なものだった。 従って、おそらくはIsaiahを小改良したコアを使ったデュアルコアになると思われる。

☆いいえ、Isaiahの設計思想はまったくもって正しいのです。   
というわけで、今回の当サイトの結論は下記の通りになる。

「マルチコアだから速い。」を連呼するPC雑誌だが、 C7コアベースでもマルチコア化すればVistaが快適に動くだろうか? という点を一度真剣に考えてみて欲しい気がする。 (当サイトの頭の中では、もちろん快適とは思えない。)

VIAは低価格・低消費電力市場向け製品だからシングルコアにしたのだと主張しているが、 理論ピーク性能ベースで見た場合はC7ベースのデュアルコア設計の方が高性能であり、かつ低価格・低消費電力な事は先に示したとおりだ。 だから、逆に低価格・低消費電力向けだからシングルコアにしたのだというVIAの主張は 一見すると矛盾だらけのように見えるかもしれない。

しかし、PC用途では依然としてシングルコアの性能がコア数よりもまず第一に必要な要件なのである。 高性能なシングルコアCPUは低性能コアからなるデュアルコアよりもPC用途ではずっと実用的なのである。 だからこそ、低価格・低消費電力市場向け製品だからこそシングルコアにしたのだ。

要するに当サイトの主張に沿って考えた場合、Isaiahの設計思想はまったくもって正しいのだ。



1)
あっ、今読み返してみたら、この記事、掲載の日付が間違ってますね。 我ながら相変わらず誤記多いなぁ〜。トホホ。