アカウント名:
パスワード:
ところで、今までこの手の話題が出てきた場合
「アーキテクチャ的には素晴らしかったが、商売としては失敗したね」
……と言った声が、多少は出るものなのですが。Itaniumに関しては、アーキテクチャ的に惜しむ声を余り(と言うか全く)聞きませんね。
かなり今更な話になるのですが、純粋に技術面から見たItaniumってどうだったのでしょうか?
他の人からはクソみそに言われるでしょうから、5年ぐらい IA-64 と付き合った者として餞別代りに Itanium を擁護してみます。
個人的な感想としては IA-64 は「はまったコードは非常に速いが、外れたコードは非常に遅い」アーキです。ただ「はまったコード」」を生成するには icc のような最適化コンパイラが必須です。また最適化コンパイラがあっても、「はまったコード」にコンパイルできないアプリも多いです。gcc とか perl のようなのが特に苦手。
命令アーキテクチャとしては、尖った機構がふんだんに存在しています。
あと Itanium2 としての特徴ですが、
良いのか悪いのか分からない点としては、
CPU から見ると高速化が可能。プログラマーとしては非常に困った性質で、C 言語だと volatile を付けないと通常のロード・ストア命令が生成されるので、他のアーキ用に書かれたマルチプロセッサ用のソースコードが容赦なく異常動作する。
悪い点は、やっぱり Out-of-Order 実行がない点ですね。命令グループに命令をそんなに詰め込めないし、ロード命令がウェイトすると後続命令は実行できないので、結局性能が上がりません。OoO を導入するには論理レジスタ数が多すぎることがネックになると思います。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり
アーキテクチャとしてのメリット (スコア:1)
ところで、今までこの手の話題が出てきた場合
「アーキテクチャ的には素晴らしかったが、商売としては失敗したね」
……と言った声が、多少は出るものなのですが。
Itaniumに関しては、アーキテクチャ的に惜しむ声を余り(と言うか全く)聞きませんね。
かなり今更な話になるのですが、純粋に技術面から見たItaniumってどうだったのでしょうか?
Re:アーキテクチャとしてのメリット (スコア:3, 参考になる)
他の人からはクソみそに言われるでしょうから、5年ぐらい IA-64 と付き合った者として餞別代りに Itanium を擁護してみます。
個人的な感想としては IA-64 は「はまったコードは非常に速いが、外れたコードは非常に遅い」アーキです。
ただ「はまったコード」」を生成するには icc のような最適化コンパイラが必須です。
また最適化コンパイラがあっても、「はまったコード」にコンパイルできないアプリも多いです。gcc とか perl のようなのが特に苦手。
命令アーキテクチャとしては、尖った機構がふんだんに存在しています。
SPARC の register-window に似ているがあちらは物理レジスタが不足した時にソフト割り込みが懸って OS が処理する必要がある。IA-64 は CPU 内の Register-Stack-Engine が stack-register をメモリに自動的にロード・ストアしてくれる。そのため関数呼び出しが非常に高速。
あと Itanium2 としての特徴ですが、
良いのか悪いのか分からない点としては、
CPU から見ると高速化が可能。プログラマーとしては非常に困った性質で、C 言語だと volatile を付けないと通常のロード・ストア命令が生成されるので、他のアーキ用に書かれたマルチプロセッサ用のソースコードが容赦なく異常動作する。
悪い点は、やっぱり Out-of-Order 実行がない点ですね。命令グループに命令をそんなに詰め込めないし、ロード命令がウェイトすると後続命令は実行できないので、結局性能が上がりません。OoO を導入するには論理レジスタ数が多すぎることがネックになると思います。
コンタミは発見の母
Re: (スコア:0)
レジスタリネーミングでないOoOも、まさにそのイリノイ大を含めていろいろ提案されてますぅ。
ランアヘッド、スカウトスレッド(Rock;_;)、フリーフリッカーなど。
アイデアとしてはどれも、ストールした命令の推移閉包以外を先に仮コミットするものです。OoOコミットってやつ。
互換性のため、ストール地点のレジスタ内容はどこかに保存します。
スカウト方式なら本スレッドが止まり、レジスタ内容を超高速でコピーしてスカウトが先に進みます。
別の方式では、投機実行用に小さなフルアソシアティブなレジスタファイルあるいはコミットキューを用意します。
Re: (スコア:0)
インオーダーであるPOWER6にも限定的にOoOが実装されています。
一つは、ロードミス後も値を無視して走り続けるモード。これはプリフェッチのよい近似になりますが計算結果はデタラメですので再実行します。
もう一つは、SMTの相手方を利用したスカウト風。これは通常時はSMTになりません。
OoOで性能が向上する主要な要因はプリフェッチ効果ですから、IA-64ではあまり改善の余地は残っていない可能性はあります。
今日のプロセッサはレジスタファイルよりもROBのほうがクリティカルな面がありますから、IA-64のOoO化はそちらでも不利ですね。