IA-64アーキテクチャ
マニアックな人たちへ
「IA-64プロセッサ基本講座」なる本を読んでいるので、少しだけ、IA-64アーキテクチャのお話をしようと思う。本に書かれていると内容よりは、Meが勝手に理解しているIA-64アーキテクチャについて。。。
IA-64アーキテクチャは命令レベル並列化を実装したものである。俗に言う複数のパイプライン段数をもったスパースカラーだ。特にIA-64は命令の順序について柔軟な構造をしている。要は複数同時実行できる命令をグルーピング化して、ソフトウェア(アセンブルコード)でグルーピングを記述できる。そして順序があって同時実行できないグループの境目もソフトウェア(アセンブルコード)で制御できる。
そしてバンドルといわれる4つの命令を同時実行できる命令列(これをVLIW (Very Long Instruction Word)という)をそれぞれのパイプラインに流して、1クロックで1命令以上の実行性能を出すという訳。また投機実行で、if 文のtrueとfalseの命令をバンドルとしてそれぞれパイプラインに流し、評価式が正しい分岐の方を有効にしてパイプラインのハザードを解消するとか、まあ色々あるんだけど、実際どうなのよっ!というところはMeも分かりませんっ!
要はコンパイラが頭が良くないと、せっかくのハードウェア機能も丸つぶれなので、コンパイラはかなり頑張らないといけない。職場復帰したら、コンパイラが生成するアセンブルコードを見るのが楽しみ。もちろん、こっそりだけど。。。カカ。。。