IA-64
IA-64の最新ニュースをまとめて検索!
IA-64(Intel Architecture 64、あいえーろくじゅうよん)はインテルとヒューレット・パッカードが共同で開発した、64ビットマイクロプロセッサのアーキテクチャであり、Itanium、Itanium 2で採用されている。
特徴としてEPICアーキテクチャを採用し、多数のレジスタを持つ。インテルの従来の32ビットであるIA-32(x86)とは、命令セットの互換性は無いが、IA-32のエミュレーションモードを持つ。
IA-64は当初はIA-32の後継ともされたが、実際にはx86市場ではx86を64ビットに拡張したx64(AMD64およびIntel 64)が広く普及した結果、IA-64は主に特定用途に留まっている。
目次 |
[編集] 名称
正式には「Intel Architecture 64」であり、インテルの戦略面の強い用語と言える。AMDなど互換プロセッサーメーカーではあまり使われない。
また現在では、既存の80x86ベースの64ビット化であるIntel 64などが主流となった影響か、インテルの資料でも「IA-64」の用語は減少し、Itanium 2などの説明も「EPICアーキテクチャを採用した」など個別の技術名が使われている。
[編集] 概要
インテルは1990年代に、80x86で32ビットのパーソナルコンピュータ市場では主流となったが、64ビットのサーバ市場はいわゆるRISC陣営(SPARC、MIPS、PA-RISC、POWERなど)に占められており、また32ビット市場でもAMDなど互換プロセッサーメーカーの攻勢を受けていた。
インテルはRISC陣営の一社であるヒューレット・パッカード (HP)と提携し、HPのVLIW技術(後に改良版のEPICアーキテクチャ)を採用するIA-64の共同開発を発表した。この際、従来の32ビットまでの80x86アーキテクチャをIA-32と呼び、将来的にはIA-64に置き換えられるとした。またHPはIA-64を自社のPA-RISCの後継と位置づけた。
この提携の目的は、インテルには上位サーバ市場への本格進出と互換プロセッサーメーカーの振り切り、更にはWindows NTでRISC(MIPS、Alpha、PowerPC)もサポートしたマイクロソフトへの牽制、またHPには次世代プロセッサーの開発費用分担と事実上の業界標準への狙いがあったと言われるが、PC市場のインテル独占状態がサーバ市場にも及ぶと考えられ業界に衝撃を与えた。またIA-64は既存のIA-32とは互換性が無い(エミュレーションのみ)事も広く議論となった。
しかしIA-64は、Itaniumの開発遅延と性能の低さ、結果としてHP(およびHPと提携する日本電気、日立製作所)以外の採用メーカーの少なさ、サポートOSの少なさ、その間の競合プロセッサ(SPARC、POWERなど)の性能向上、更にはx86市場の64ビット化にはx64(IA-64を批判したAMDによるAMD64、およびインテル版実装のIntel 64)が普及してしまった。2005年9月にはデルがIA-64から撤退した。POWERを持つIBMも2005年以降はほとんど採用していない。
IA-64は現状では、HP(およびHPと提携する日本電気、日立製作所)のPA-RISC後継、およびレジスタ数が多いなどエミュレーションによって異なるアーキテクチャからの移行が容易な事もあり、一部の無停止コンピュータ(HP Integrity NonStopなど)、メインフレームやオフィスコンピュータ(富士通、日本電気、Bullなど)の置き換えプロセッサが中心となっている。
[編集] 歴史
- 1994年 インテルとHPがIA-64の共同開発を発表
- 1999年 インテルとHPがIA-64の詳細を発表
- 2001年 Itanium発表
- 2005年1月 マイクロソフトがItanium用Windows XPの販売停止(以後はWindows Serverのみ)
- 2005年9月 デルがItaniumサーバから撤退
- 2005年9月 Itanium Solutions Alliance (ISA)発足
- 2006年 Itanium 2発表(後にItaniumと改称)
[編集] アーキテクチャ
詳細は「EPICアーキテクチャ」を参照
主流となっているアウト・オブ・オーダー実行設計では、複雑なデコーダシステムがパイプラインに入ってきた命令を調べ、並行して実行できる命令を選んで実行していく。
A := B + C; D := F + G;
例えば上記の2行のコードは互いに影響しないので同時に実行できる。したがってこれらはふたつの実行ユニットにそれぞれ渡されて並行して実行される。命令レベルの並列性を引き出すことが最近のCPUで性能を向上させる基本である。
コードが並行して実行できるかどうかを予測することは難しい。多くの場合、ある命令が別のある命令に依存しているかどうかは様々な条件に左右される。先にあげた例が次のようになっていたらどうだろうか。
A := B + C; IF A = 5 THEN D := F + G;
こうなると計算自体は依存していないのだが、ふたつめの加算結果をDに格納するかどうかはひとつめの計算結果に依存する。
このような場合、CPUは一般的には結果を推量する。例えば、IFが90%の確率で成立する場合、ふたつめの加算処理は別の実行ユニットに渡されて実行される。ところがその推量が間違っていた場合、ふたつめの加算をなかったことにしなければならず、大きな性能低下を招く。最近のCPUの性能向上は推量ロジックがいかに高確率で推量するかにかかっているが、改善は徐々に始まったところである。
IA-64はコンパイラにその仕事を任せている。プログラムをCPUが実行する前にコンパイラがコードを調査してCPUが実行時にするような判断を行う。どのパスを通るかを決めたら、コンパイラは並行して実行できる命令を集め、ひとつの大きな命令に入れる。そして、それを並べてプログラムを作成する。 これをVLIW"very long instruction word"(非常に長い命令語)という。
CPUからコンパイラにこの仕事を移管することは、いくつかの利点がある。第一にコンパイラはコードを時間をかけて調べることが出来る。これはとにかく高速に実行しなければならないCPUにはない利点である。したがってコンパイラの方がチップで実行する場合よりも予測精度を高められる。第二に予測回路は非常に複雑であり、これをコンパイラに移管することで回路を大きく削減できる。CPUは調べて推量する必要がないので、命令を分割して各実行ユニットに渡してやればよい。第三にコンパイラで推量をするのは一回限りなので、CPUで実行するたびに推量するより効率的である。
欠点としては、プログラムの実際の動きはコード生成時に完全に予測できるとは限らないということが挙げられる。実際の動きは入力されるデータの内容に大きく左右される。アウト・オブ・オーダー実行ロジックを持つ主流のCPUは実行時に実際のデータに基づいて決定できるのに対して、コンパイラは入力データを推量することしかできない。したがって、コンパイラがCPUよりも予測を失敗する可能性がある。つまりVLIWの性能はコンパイラの性能に大きく依存する。VLIWはマイクロプロセッサのハードウェアの複雑さを低減する代わりにコンパイラの複雑さを要求するものである。
[編集] レジスタ
IA-64アーキテクチャは、128本の64ビット整数レジスタ(r0 - r127)と128本の82ビット浮動小数点レジスタ(f0 - f127)という非常に多くのレジスタを定義している。
[編集] 整数レジスタ
128本の64ビット整数レジスタ(r0 - r127)の内、汎用レジスタとしてはr0 - r31の32本が使われる(r0はゼロレジスタで、読み出すと常に 0 を返し、書き込むと例外が発生する)。 残りの96本(r32 - r127)はレジスタスタックエンジン (Register Stack Engine; RSE) を使ったレジスタローテーションという手法で管理され、プロシージャ呼び出し間で名前が変更される可能性がある。これは多くのRISCプロセッサに見られるレジスタ・ウィンドウを洗練させたもので、AMD Am29000のオーバーラップウィンドウサイズを変更可能なレジスタ・ウィンドウとの類似性が指摘されるが、IA-64ではプレディケーションと組み合わせることで、ループを自動的に展開して実行することができる。
[編集] 命令セット
本アーキテクチャはマルチメディア演算や浮動小数点演算に関する命令も用意している。
典型的なVLIWではロング命令ワードの各サブ命令の位置が特定の機能ユニットに対応しているが、Itaniumではサブ命令の配置についていくつかの組み合わせ(バンドル)を用意していて、その中にはシリアル実行モードとパラレル実行モードのバランスをとるものもある。バンドルのエンコーディングには将来のIA-64の拡張のために空きがある。加えて、Itaniumは個別に設定可能なプリディケートレジスタ(predicate register)を持っており、各命令について実行時に出力するか否かを決定できる。
Itaniumは、起動した時点ではいくつかの命令実行機能が動作しないようになっている。ブートストラップが実行されるとまずExtensible Firmware Interface(EFI)がロードされ、追加の命令がチップ内のメモリに格納される。続いてプロセッサモード(64ビットか32ビットか)や他のブート時の設定が行われる。この設計によりItaniumシステムはEFIプログラムの内容によって異なった機能を展開できる。
[編集] IA-32サポート
IA-32をサポートするため、Itaniumは特殊なジャンプ命令で32ビットモードに移行する。IA-32命令は、専用のデコーダとダイナミックスケジューラを経て、IA-64と共通の実行ユニットで実行され、IA-32用のリタイアメント処理が行われる。すなわち、IA-32命令に関しては(IA-64命令と違い)アウオトブオーダ実行される。にもかかわらず、IA-64命令では同クロックのPentium3相当の性能が出る一方で、IA32命令では同クロックのPentium3の3割程度の速度しか出ない。例えば、Itaniumの機能ユニットは通常のALUでの計算の副作用のため整数フラグを自動的には生成しないし、境界が整っていないメモリロードを複数続けて行うようにはできていない。LinuxやWindows上で動作するIA-32EL(Execution Layer)というIA-32ソフトウェアエミュレーターがあるが、ハードウェアがIA-32モードで実行するよりもエミュレータで実行した方が約50%高性能である。
Windowsエミュレータはマイクロソフトから、LinuxエミュレータはNovellのようなLinuxベンダーから入手可能である。Itanium 2のMontecitoからはハードウエアデコーダは削除され、Extensible Firmware Interface(EFI)でIA-32エミュレータがロードされる様になった。
[編集] 競争相手
他の64ビットアーキテクチャはIA-64よりも古くから実用化されているが、すでに64ビットサーバおよびワークステーション市場から姿を消そうとしている (MIPS, Alpha, PA-RISC)。市場で残っている競争相手はAMDのAMD64アーキテクチャとIBMのPOWERアーキテクチャ、サン・マイクロシステムズのUltraSPARCアーキテクチャなどである。
インテルは新しいXeonでIA-32を拡張したIntel 64を採用し、これはAMD64と概ね互換性がある。
2005年に、HPがIA-64搭載のワークステーションの販売を終了した(それに伴ってハードウェアへのバンドルのみのOEM提供だったWindows XP Professional 64-bit Itanium Editionの提供も終了し、代わってx64 Edition が販売が開始された)事に象徴されるように、IA-64はワークステーション市場からも姿を消している。現在はメインフレーム代替市場に活路を見出しつつあるが、採用例が日本メーカーに集中している。
[編集] 関連項目
[編集] 外部リンク
- Itanium Solutions Alliance
- ASCII24 -【詳報】IA-64の主なアーキテクチャがついに発表----豊富なレジスタと命令の組み合わせが明らかに(1999/6)
- 元麻布春男の週刊PCホットライン - 新プラットフォームに対するIA-64ベンダの反応(2005/4)
- 元麻布春男の週刊PCホットライン - Itanium 2の今後を占う(2007/11)
「「
最終更新 2009年11月16日 (月) 19:15 (日時は個人設定で未設定ならばUTC)。
【IA-64】変更履歴

