Click


Microprocessor Forumレポート
これがItanium(Merced)だ――Intelが内部アーキテクチャを公開

期日:10月3日~8日
会場:カリフォルニア州サンノゼ ファーモントホテル



●拍子抜けするほどあっさりした構造

 Intelが、ついに「Itanium(アイテニアム)=Merced(マーセド)」のベールをはいだ。10月3日から米国サンノゼで開催されている「Microprocessor Forum 1999」で、Itaniumのチップそのもののインプリメンテーションを明らかにしたのだ。

 Intelは、これまでIA-64アーキテクチャに関してはかなりの情報を公開してきたが、実際のIA-64プロセッサであるItaniumが、どういう構造になっているのかは一切明かさなかった。それを、今回はある程度突っ込んだ部分まで公開してきた。

 図を見ればわかるのだが、Itaniumの構造は、拍子抜けするほど単純だ。これは、最新のプロセッサに見られるような、命令の順序を組み替えて実行可能なものから実行するアウトオブオーダー実行機能のような複雑なスケジューリング機構を持たず、ごく単純に命令を順番に(インオーダー)実行する構造になっているからだ。

 また、ハードウェアリソースも、決してリッチではない。Itaniumは、6命令を同時発行し、9ポート、つまり9個の実行ユニットを並列に並べている。6命令同時発行は、確かにリッチだが、9個の実行ユニットというのは、多いけれども驚くほどの数ではない。例えば、Athlonも9個の実行ユニットを備える。その割にレジスタは整数/浮動小数点演算とも128本づつと多く、不釣り合いな印象がある。

 もっともこれは、将来への拡張性を持たせたアーキテクチャの最初のインプリメンテーションだからと考えるのが妥当だろう。実際、Intelのロナルド・E・カリー氏(ディレクタオブマーケティング、IA-64 Processor Division)は、9月のIDFの際に「第2世代のMcKinleyでは、発行する命令数も実行ユニットの数も増える」と語っている。逆を言えば、アーキテクチャで確保されている膨大なレジスタなどのリソースを、フルに活かせるようになるのは、McKinley以降の世代ということになる。

●パイプラインは10段

パイプライン構成図
 Itaniumは、10ステージのインオーダーのパイプライン構成を取る。10ステージというのは、Pentium III(12ステージ)など現在のx86プロセッサと較べると少ないように見える。しかし、x86プロセッサのパイプラインが深いのは、可変長で命令フォーマットが複雑なx86命令のデコードでステージを費やしているからで、IA-64ではそのロスがない。それを差し引くとパイプラインが浅いわけではない。


ブロック図
 ブロック図を見てもわかる通り、ItaniumにはPentium IIIやRISCプロセッサに見られるような、リザベーションステーションやリオーダーバッファ(名称は異なる場合がある)は見あたらない。アウトオブオーダーのスケジューリングを行なわないために、こうした複雑な機構は必要がないからだ。

 パイプラインの順番に追っていくと、まず、フェッチされた命令はインストラクションキューと呼ばれるバッファに入る。IA-64では、3命令づつ128ビットの「Bundle(バンドル)」と呼ばれる命令グループに収められる。このキューでは、8バンドルを収める。また、IA-32命令は、この段階でIA-32命令用のデコード/スケジューリングユニットに送られる。

 Itaniumでは、このインストラクションキューから最大6命令、つまり2バンドル分の命令が同時に発行(イシュー)される。この命令発行の仕組みはじつに単純だ。IA-64ではバンドルに格納できる命令タイプの組み合わせが決まっているために、2バンドル分の命令は、必ず9つのイシューポートに対して発行できる。バンドルに格納された命令のタイプは、バンドルの上位4ビットのテンプレートでわかる仕組みになっている。

 また、バンドル内やバンドル間の命令に依存性があるかどうかの情報も、テンプレートに収められている。そのため、IA-64では、MPUがハードウェアで依存性をチェックする必要がない。Itaniumはテンプレートを見て、依存性があるところで発行を止めるだけですむ。これが、アウトオブオーダーのMPUになると、リザベーションステーションにいったん命令をプール。命令間の依存性を調べて、同時発行できる組み合わせをハードウェアが検出する。


●ターゲットクロックは750MHz

 イシューポートは、ブランチが3、メモリが2、整数演算が2、浮動小数点演算が2となっている。これに対応する実行ユニットは、ブランチユニットが3、整数演算/メモリユニットが4、浮動小数点ユニットが2だ。

 目立つのは、浮動小数点ユニットの強化で、パイプライン化された2つのFMAC(積和演算器)を備える。このFMACは、最大で2つづつ、合計4つの倍精度浮動小数点演算を1サイクルで実行できるという。また、このFMACは、単精度浮動小数点演算ではSIMD形式をサポート、8演算を1サイクルで実行できる。

 ちなみに、Intelの公表しているItaniumの予測性能は浮動小数点演算がピークで6GFLOPS以上となっている。したがって、逆算するとItaniumのターゲットクロックは750MHz以上ということになる。

 レジスタは、整数レジスタが128本、浮動小数点レジスタが128本。このほか、ブランチ/プレディケートレジスタがある。レジスタにはスタックエンジンというコントロール機構があり、一群のレジスタをフレームとしてグループ化して制御したり、ローティングなどを行なう。

 キャッシュは、Itaniumでは3階層を取る。Itaniumのチップ本体(die)にはL1キャッシュとL2キャッシュを内蔵する。この容量はまだ明らかにされていない。そのほかにパッケージ内にL3キャッシュを内蔵する。これは、Intel製のカスタマイズSRAMで、4MBだ。Xeonに内蔵されているものと同様にTagRAMを内蔵したものになる。また、キャッシュ間のインターフェイスはECC化されている。

 システムバスは、まだクロックやプロトコルが明らかにされていない。しかし、カリー氏によると、バスにはソースシンクロナスクロッキングテクノロジを使うという。

('99年10月8日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当 pc-watch-info@impress.co.jp