Windows 2000 キーワード

Itanium

アイテニアム/アイタニュム

デジタルアドバンテージ

 これまで開発コード名「Merced(マーセド)」で呼ばれていた製品のブランド名。PentiumCeleronXeonなどのネーミングを担当した米Lexicon Branding(レキシコン ブランディング)社が命名した。アイタニュウムもしくはアイテニアムと発音する。正式な日本語読み、カタカナ表記は10月末現在未定である。

 Itaniumは、米Intel社とHewlett-Packard社によって提唱されている、次世代の64bitプロセッサのための命令セットアーキテクチャIA-64を採用する最初の製品となる。マイクロソフトは、このItaniumをターゲットとするWindows 2000の64bit化対応作業を進めており、すでに開発者向けにSDK(Software Development Kit)やDDK(Device Driver Development Kit)の配布を行っている(米Microsoftの「64-Bit Windows Overview」のページ)。また米Computer World誌の記事によれば、マイクロソフトは、Itaniumのプロトタイプシステム上で、64bit版のWindows 2000のデモンストレーションを行った。

 80386以降続いているIntel社の32bitプロセッサアーキテクチャであるIA-32は、典型的なCISCプロセッサであり、RISC系のプロセッサと比べると、性能向上が難しいとされている。それでもPentium Pro以降やx86互換構成のプロセッサなどでは、フェッチした命令をRISC風の命令に変換して、RISCプロセッサなどで使われている数々の高速化手法(投機実行、パイプライン化、スーパースカラー、アウトオブオーダー実行、レジスタリネーミング、高度な分岐予測など)を駆使して高速化を図ってきた。しかしここにきてそのようなアプローチによる性能向上にも限界が見え始めてきた。

 さらに高速化を行うには、同時に実行する命令実行モジュールやレジスタリソースなどを増加させたり、分岐予測精度を高めたり、キャッシュなどを大容量化したりする必要があるが、これは、設計の複雑化、デバッグの困難化、製造技術の高度化、人的・資金的リソースの大規模化など、開発にかかる手間や資金、時間などのリソースが膨大になるという問題がある。また、いくら分岐予測精度をあげて、さらに並列に実行できる命令の数を増やしても、実際のプログラムでは相互に干渉せずに同時・並列に実行できる命令の数は2〜4命令といわれており、投入したリソースの割には得られる効果が少なくなってきている。

 そこで、従来の逐次実行的なアーキテクチャを改め、まったく新しい、そして将来の性能向上も十分見込めるようなアーキテクチャの開発がIntel社とHP社の共同作業によって進められた。この結果開発されたのがIA-64アーキテクチャである。

 IA-64における64という名称は、レジスタ幅や演算データ幅が64bitであるところから付けられている。IA-32アーキテクチャでは、フラットにアクセスできる最大アドレス空間は32bit(4Gbytes)しかなく、すでに大規模アプリケーションなどでは、アドレス空間が不足している。そこで64bitプロセッサや64bitオペレーティングシステムが求められ、すでに実用化が始まっている。IA-64では、プロセッサ構造の抜本的な改革を行うと同時に、データ処理幅の64bit化も行い、これからの需要にも十分応えられるようにしている。

 IA-64では、EPIC(Explicitly Parallel Instruction Computing、明示的並列命令コンピューティング)と呼ばれる技術が核になっている。これは、あらかじめプログラミング時に、並列に実行できる命令を明示的に、静的にプログラム中に記述しておいて、実行時にはそれらの命令をすべて同時に実行する、という技術である。また、データの投機的なロード(データのロード開始と、データの使用を分離する)や、分岐成立時と不成立時の命令ストリームを並列に記述しておき、条件に応じてどちらかしか実行しないということも行う。これにより、プロセッサが持つ演算ユニットを最大限並列に動作させて、さらにメモリロードの遅延によるパイプラインのストールや、分岐によるペナルティなどをなくして、性能を向上させることができる。

 ItaniumはこのIA-64アーキテクチャを採用した最初の製品として、2000年下半期に出荷される予定である。2次キャッシュはCPUコア上に実装されているが(オンダイ)、パッケージ内にさらに4Mbytesの3次キャッシュを外付けしている。

インテルItaniumプロセッサ

IntelとHPが共同開発した64ビットアーキテクチャのIA-64を初めて搭載したマイクロプロセッサ。2000年後半の出荷が予定されている。

 IA-64は命令セットアーキテクチャであり、実際にインプリメントされるプロセッサにおける演算ユニットの数や、同時に実行可能な命令数などは、IA-64では定義されていない。Itaniumでは、分岐ユニット×3、整数/メモリ演算ユニット×4、浮動小数点演算ユニット×2を持ち、同時に最大で6命令まで発行可能となっている。

 IA-64には、64bitの汎用整数レジスタが128本、82bitの浮動小数点レジスタが128本、1bitのプリディケーション(述語)レジスタが64本、分岐先レジスタ(間接分岐に使用)が8本ある。汎用レジスタや浮動小数点レジスタが128本もあるのは、並列に実行できる命令の数を多くするためと、関数呼び出し間でのパラメータの受け渡しなどにも使う(SPARCのレジスタウィンドウのように使う)ためである。また、ループ命令の実行時には、ループ内で使うレジスタを自動的にローテーションさせる機能(自動的なループアンローリング機能)も持っており、そのためにも大量のレジスタが必要になる(ローテーションさせないと、ループの繰り返しによって同じレジスタばかりが使用されることになり、リソースが衝突して、パイプラインがストールしてしまう)。

 IA-64では、1つの命令語は128bitとかなり長いが(これをバンドルという)、この中には41bit長の命令が3つ(3スロット)と、「テンプレート」と呼ばれる5bitの情報が含まれている。1つのバンドルには、3つの命令が含まれているが、実際にいくつの命令を同時に実行するのかは、テンプレート部で指示することになる。つまり、バンドルの長さと、実際に並列に実行される命令の数は異なっており、必要ならば2つ以上のバンドルにまたがる命令をすべて同時に実行することも可能だ。Itaniumでは前述のように最大で6命令分(2バンドル)を同時に発行することができる。

 41bitの命令コードの内訳は、命令の種類や演算長の指定のほか、ソース1、ソース2、ディスティネーションの各レジスタの指定、プリディケーションレジスタの指定、などが含まれている。プリディケーションレジスタには条件比較の結果を入れておき、このレジスタの内容が1ならその命令を実行するが、0なら命令を実行しないというふうに使う(プリディケーションレジスタ0を指定すると、無条件で常に実行される)。従来のアーキテクチャにおける分岐命令を、プリディケーションレジスタを使った条件付き命令に変換して実行すれば、分岐に伴うペナルティを避けることができる。

 IA-64はまったく新しい命令セットアーキテクチャであるが、実際には過去のプロセッサ(x86アーキテクチャ)との互換性も考慮して、IA-32アーキテクチャも実装されることになっている。Itaniumの場合、IA-32用のデコード、制御ユニットを内蔵しており、実行ユニットはIA-64と共用するような方法を採用している。なお、IA-32命令は、オウト・オブ・オーダーで実行される。

 つまり、IA-64はIA-32のスーパーセットであり、従来のx86のプログラム(MMXや、Pentium IIIのStreaming SIMD Extension機能も含む)もモードを変えればそのままダイレクトに実行することができる(HPのPA-RISCにはエミュレーションで対応)。IA-32モードで実行する場合、IA-64の汎用レジスタや浮動小数点レジスタの一部が、IA-32の各レジスタなどを格納するために使われることになっている。

 インテルによれば、ItaniumにおけるIA-32コードの実行性能は、同時期に販売されている最も高速なIA-32プロセッサに比べて、遅いものになるという。

インテルItaniumプロセッサのブロック図

IA-64を初めて実装するItaniumプロセッサのブロック図。IA-32用のデコードが別に設けられていることがわかる。また、1次キャッシュ、2次キャッシュ、3次キャッシュの各データ転送にはECCが採用されており、信頼性の向上を実現している。
 
関連記事
64-Bit Windows Overview(米Microsoft)
Intel, Microsoft demo 64-bit Windows(米Computer World誌)


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間