x86とCMTは相性が悪かった、ってことなのかなぁ、と。
SMTとCMTでは実行効率を上げる為のポイントが少し違うので。
Bulldozer最大の失敗はデコーダがショボかった、ということだと思う。
そしてこれは多分開発チームにとって「想定外」というか「やっちまった」ことなんだろうなと。
慌ててSteamrollerではデコーダを分離したものの、恐らくこのデコーダも実行モジュールと1:2にするにはショボくても1:1にするのにはリッチ過ぎて(さすがにデコーダを完全に最適に再設計する時間的余裕は無かったと思う)、結果的にBulldozerは当初目指していた方向性をどう頑張っても実現出来なかった、ということではないかと思ってしまうのですよ。
♯勿論実行モジュールとの比較論で。単純にデコーダだけ比べればそりゃIntelの方がリッチさ。
一方でIntelは昔からHTについては研究していたし、SPARCやPOWERでもSMTは採用されている。
SMTの良い所は実はデコーダへの要求が少ないところだったりする。・・・ってこう書くと誤解しかされないか。
言い換えると、SMTってのは物量作戦でどうにかし易い。
簡単に言うと、SMTでもCMTでもCPUで実行効率を上げようとするとコンスタントに演算ユニットを動かし続ける必要があるのだが、この動かし続けるってのが、言うは易く・・・ってヤツなんですな。
問題は現在では大抵のアーキテクチャが建増ししまくりの欠陥住宅みたいな命令構造になっていることで、x86はその中でも特に酷いモノの一つ。
あんまりにもアレなのでIntelは過去にx86を何度も捨てようとしたのだがことごとく失敗したのも皆さんご存知の通り。
なのでx86でコンスタントに演算ユニットを動かし続けるには、デコーダが相当頑張って、常に命令を流し込み続けないといけない。
結果としてx86ではデコーダ回路が膨張し続け、コスト(ダイ使用面積・消費電力等)がトンでもないことに。
そこでIntelは研究していたSMTをHTという形で実装。この発想は極めて単純で、且つよく出来ている。
1系統の処理で演算ユニットを常にフル稼働させようとすると、デコーダの効率を追求するから難しい。
→ならば2系統分の処理を1つの演算ユニットに突っ込んでしまえ。
→デコーダの効率が仮に50%でも2つ束ねれば演算ユニットは常に100%全力で走り続けるよね?
まぁ実際にはデコード効率の話はこんな単純じゃないし、SMTではソフトウェア側に特定のお作法が要求されるとか、実はそもそもIntelはデコーダリッチで実行部が(相対的に)プアだったのでSMTにしても劇的に効率改善はしなかったとか、色々話としてはすっ飛ばしてるのだけど、兎にも角にもこうしてIntelはHyperThreadingという形でSMTを実装したワケで。
一方、同じころのAMDはデコーダリッチの限界が見えていながらもその限界に向かって全力疾走していた状態。実際K8なんかは同時期のIntelと比べても十分に競争力があったのだ、が。
いよいよデコーダリッチの限界にブチ当たったAMDが選んだのがCMTという選択肢。そしてその結果は・・・と。
結局Bulldozer系の実行効率が劇的には改善しないところを見ると、x86にCMTは喰い合わせが悪かったとしか思えないんですよね。小手先修正のマイナーチェンジで確実に効率が改善されているところ自体は、AMDのアーキテクトはコア特性を良く把握していて取り敢えず出来ることはやっているんだな、とは思うけど。
そして、次世代x86パフォーマンスコアはSMTへ。
ある意味もう選択肢はこれしか無い、ということなんでしょうな。
そうなると後は、果たして2スレッドのSMTで収めてくるか、もっと増やしてくるのか。
・・・取り敢えず、北京のAPU14で「FXは復活する」とか「新アーキテクチャ」とか「2年以内」なんて話が出てきたらしいので、実物が出てくるまで妄想し続けることとしましょう。
♯にしても、現在のAMDを実質的に支えてると言っても過言ではないBobcat~Jaguarアーキテクチャですら結局K型番は貰えてないし、x86コアはもうK型番は貰えないのか、な。
◇
ところで、全然関係ない話を最後に一つ。
Project Skybridgeが出てきて、Mini-ITX辺りでx86もARMも積めて遊べる低価格マザーが出てきたら、オモチャ的な意味で結構面白いことになりそうだと思うですよ、個人的にはね。
♯エンタープライズの方では正直あんましヒットするとは思えないけど。
勿論現在でもARMの開発キットなんかの中にはマザー1枚で完結する「ARM PC」もあるし、Androidのおかげで昔と比べると随分と選択肢も増えてきているが、それでもやっぱり所詮は開発キット、色々と特殊だし、第一¥がお高いので。
ここに、メモリの量やCPU速度を選べて、x86マザー並に低価格なARMボードがでてくれば、色々遊べそうだな、と。
♯例えば無駄に豪華なリソースでAndroidを動かすとか。何とかGoogle Playが導入出来ればいろんな意味で最強じゃね、とか。
・・・そいやARMなWindows ServerをMSが開発中って噂が昔出たけど、アレの続報聞かないなぁ。結局ガセだったんかね?
自分はBullアーキ失敗の最大の原因は初代BulldozerのZambeziが、
自動設計ツールの頼りすぎた事による「手抜き」、及びそれによって出来た代物が前世代のK10未満だった事だと思います。
後にすぐ職人の手によって最適化された2代目BullアーキのPiledriverが出てきましたが、
もし、上記の手抜きをせずに初代BulldozerそのものがPiledriverであれば、
ワッパが少し悪いかな?位の印象で済み、またこの時のデータからK10アーキとBullアーキで
同一ソケットを使いまわすとワッパが悪くなるので現在の様に別ソケットにするという展開となっても、
現在の様なAPUオンリーだけでなくCPU単体も販売しても商売となり得る事位は出来たのではないかと思っています。
(逆に言えばそういう事して自滅しているから、AMDは商売に関しては下手くそだのと言われるんですよね…)
それと、デコーダ周りもそうですがFPUを貧弱にし過ぎたのでは?というのもあります。
FPUを2コアで共有するという事自体は上手いアイデアだと思いますが、
製品を出した当時はHSA構想の「将来FPUに投げている処理はGPUが担う」という事が全く出来ないのに
FPU自体を貧弱にした為に、これを使用する演算が全然振るわなかったのも原因かなと…