Itaniumとは
Intelが開発しているCPUです。
売上
このグラフが面白いです。
File:Itanium Sales Forecasts edit.png - Wikipedia
2003年からダメだと思っていた
自分がスラドに2003/04/26に書いた投稿1では控えめな表現ですが、 Itaniumの設計に問題があるんじゃないのと書いていました。
Itaniumがダメなのは、穿った見方をすれば、
- Itaniumの設計もしくはコンパイラの出来が悪く性能が出ない。
- 性能の出ないダメCPUというイメージを避けるためにキャッシュを増やしてなんとか性能アップ
- ダイサイズが非常にデカくなって値段高騰
- IA-32部分の性能の悪さもあって売れず
控えめな表現をしてたのは、当時はどこの企業もItaniumに注力していたので、 自分の方が正しいという自信がなかったからです。 あと、リプライにもあるように、IA-32互換の足かせが外れたときに どれくらい速度が出るかも気になってたのですが、 結果的に他のCPUと比べて速いという評判も聞かれませんでした。
EPICアーキテクチャが根本的に間違ってた理由
それは、EPICアーキテクチャが典型的な静的アーキテクチャだからです。
WikipediaのEPICアーキテクチャにかかれている以下の目標がすでに問題があります2。
目標は複数命令の動的スケジューリングの複雑さをハードウェア実装からコンパイラに移すことであり、 これにより(トレースフィードバック情報を使って)命令スケジューリングが静的に行われるようになる。
例えば、以下のようなコードは並列化可能です。
int foo(int a, int b) {
int c = a * 2;
int d = b * 3;
return c + d;
}
しかし、以下のように条件分岐が入ると、コードは簡単に並列化不可能になります。 投機的実行を使えば並列化可能ですが、それでは他のCPUと変わりません。 なので、明示的な並列化によるメリットは非常に限られています。
int foo(int a, int b) {
if (a < b) {
return a * 2;
} else {
return b * 3;
}
}
Itaniumはほとんど何も残さなかった
Itaniumは失敗に終わりそうですが、 それ以上に問題なのは、Itanium由来の技術がほとんどないことです。 UEFIくらいでしょうか。
逆に、商業的にはItanium以上の失敗の、 Cell B.E.は、ヘテロジニアスマルチコアと呼ばれる、 異なるアーキテクチャのCPUコアを組み合わせるタイプのCPUを採用しました。 Cell B.E.は扱いが難しく、性能を発揮するのが難しかったのですが、 異なるアーキテクチャのCPUを組み合わせる概念はARMのbig.LITTLEのように、広く使われています。