<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wikippe.e-do-match.com/index.php?action=history&amp;feed=atom&amp;title=IA-64</id>
	<title>IA-64 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wikippe.e-do-match.com/index.php?action=history&amp;feed=atom&amp;title=IA-64"/>
	<link rel="alternate" type="text/html" href="https://wikippe.e-do-match.com/index.php?title=IA-64&amp;action=history"/>
	<updated>2026-09-26T19:51:58Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wikippe.e-do-match.com/index.php?title=IA-64&amp;diff=136385&amp;oldid=prev</id>
		<title>111.64.9.93: fix yo</title>
		<link rel="alternate" type="text/html" href="https://wikippe.e-do-match.com/index.php?title=IA-64&amp;diff=136385&amp;oldid=prev"/>
		<updated>2013-12-07T07:21:23Z</updated>

		<summary type="html">&lt;p&gt;fix yo&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;IA-64&amp;#039;&amp;#039;&amp;#039;（&amp;#039;&amp;#039;&amp;#039;Intel Architecture 64&amp;#039;&amp;#039;&amp;#039;、アイエーろくじゅうよん）は[[インテル]]と[[ヒューレット・パッカード]]が共同で開発した、[[64ビット]][[マイクロプロセッサ]]の[[命令セット]]アーキテクチャ(ISA)であり、[[Itanium]]で採用されている。&lt;br /&gt;
&lt;br /&gt;
特徴として[[EPICアーキテクチャ]]を採用し、多数のレジスタを持つ。インテルの従来の[[32ビット]]である&amp;#039;&amp;#039;&amp;#039;[[IA-32]]&amp;#039;&amp;#039;&amp;#039;([[x86]])とは、[[命令セット]]の互換性は無いが、IA-32の[[エミュレータ|エミュレーション]]モードを持つ。IA-64は当初はIA-32の後継ともされたが、実際にはx86を64ビットに拡張した&amp;#039;&amp;#039;&amp;#039;[[x64]]&amp;#039;&amp;#039;&amp;#039;の普及もあり、特定用途に留まっている。&lt;br /&gt;
&lt;br /&gt;
== 名称 ==&lt;br /&gt;
正式には「Intel Architecture 64」で、インテルの戦略面の強い用語である。現在では、既存の[[x86]]ベースの[[64ビット]]化である[[x64|Intel 64]]などが主流となった影響か、インテルの資料でも「IA-64」の用語は減少し、Itanium 2などの説明も「[[EPICアーキテクチャ]]を採用した」など個別の技術名が使われている。&lt;br /&gt;
&lt;br /&gt;
== 概要 ==&lt;br /&gt;
[[インテル]]は[[1990年代]]に、[[x86]]で32ビットの[[パーソナルコンピュータ]]市場では主流となったが、64ビットの[[サーバ]]市場はいわゆる[[RISC]]陣営（[[SPARC]]、[[MIPSアーキテクチャ|MIPS]]、[[PA-RISC]]、[[POWER]]など）に占められており、また32ビット市場でも[[アドバンスト・マイクロ・デバイセズ|AMD]]、[[サイリックス|Cyrix]]など互換プロセッサーメーカーの攻勢を受けていた。&lt;br /&gt;
&lt;br /&gt;
[[インテル]]は[[RISC]]陣営の一社であるヒューレット・パッカード (HP)と提携し、HPの&amp;#039;&amp;#039;&amp;#039;[[VLIW]]&amp;#039;&amp;#039;&amp;#039;技術（後に改良版の&amp;#039;&amp;#039;&amp;#039;[[EPICアーキテクチャ]]&amp;#039;&amp;#039;&amp;#039;）を採用する&amp;#039;&amp;#039;&amp;#039;IA-64&amp;#039;&amp;#039;&amp;#039;の共同開発を発表した。この際、従来の32ビットまでの[[x86]]アーキテクチャを&amp;#039;&amp;#039;&amp;#039;IA-32&amp;#039;&amp;#039;&amp;#039;と呼び、将来的にはIA-64に置き換えられるとした。またHPはIA-64を自社の[[PA-RISC]]([[HP-UX]]稼動CPU)の後継と位置づけた。&lt;br /&gt;
&lt;br /&gt;
この提携の目的は、インテルには上位[[サーバ]]市場への本格進出と互換プロセッサーメーカーの振り切り、更には[[Microsoft Windows NT|Windows NT]]でRISC([[MIPS]]、[[DEC Alpha|Alpha]]、[[PowerPC]])もサポートした[[マイクロソフト]]への牽制、またHPには次世代プロセッサーの開発費用分担と事実上の業界標準への狙いがあったと言われるが、PC市場のインテル独占状態がサーバ市場にも及ぶと考えられ業界に衝撃を与えた。またIA-64は既存のIA-32とは互換性が無い（[[エミュレータ|エミュレーション]]のみ）事も広く議論となった。&lt;br /&gt;
&lt;br /&gt;
しかしIA-64は、[[Itanium]]の開発遅延と性能の低さ、結果としてHP（およびHPと提携する[[日本電気]]、[[日立製作所]]）以外の採用メーカーの少なさ、自社以外のサポート[[オペレーティングシステム|OS]]の少なさ、その間の競合プロセッサ（[[SPARC]]、[[POWER]]など）の性能向上、更にはx86市場の64ビット化にはx64（IA-64を批判したAMDによる[[x64|AMD64]]、およびインテル版実装の[[x64|Intel 64]]）が普及してしまった。[[2005年]]9月には[[デル]]がIA-64から撤退した。POWERを持つ[[IBM]]も[[2005年]]以降はほとんど採用していない。&lt;br /&gt;
&lt;br /&gt;
IA-64は現状では、HP（およびHPと提携する日本電気、日立製作所）のPA-RISC後継、および[[レジスタ (コンピュータ)|レジスタ]]数が多いなどエミュレーションによって異なるアーキテクチャからの移行が容易な事もあり、一部の[[無停止コンピュータ]]（[[HP Integrity NonStop]]など）や[[OpenVMS]]、[[メインフレーム]]や[[オフィスコンピュータ]]（[[富士通]]、日本電気、[[Bull]]など）の置き換えプロセッサが中心となっている。&lt;br /&gt;
&lt;br /&gt;
== 歴史 ==&lt;br /&gt;
{{main|Itanium#歴史}}&lt;br /&gt;
*[[1994年]] インテルとHPがIA-64の共同開発を発表&lt;br /&gt;
*[[1999年]] インテルとHPがIA-64の詳細を発表&lt;br /&gt;
*[[2001年]] Itaniumリリース&lt;br /&gt;
&lt;br /&gt;
== アーキテクチャ ==&lt;br /&gt;
{{Main|EPICアーキテクチャ}}&lt;br /&gt;
主流となっている[[アウト・オブ・オーダー実行]]設計では、複雑なデコーダシステムが[[命令パイプライン|パイプライン]]に入ってきた命令を調べ、並行して実行できる命令を選んで実行していく。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
A := B + C;&lt;br /&gt;
D := F + G;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
例えば上記の2行のコードは互いに影響しないので同時に実行できる。したがってこれらはふたつの実行ユニットにそれぞれ渡されて並行して実行される。[[命令レベルの並列性]]を引き出すことが最近のCPUで性能を向上させる基本である。&lt;br /&gt;
&lt;br /&gt;
コードが並行して実行できるかどうかを予測することは難しい。多くの場合、ある命令が別のある命令に依存しているかどうかは様々な条件に左右される。先にあげた例が次のようになっていたらどうだろうか。&lt;br /&gt;
&amp;lt;source lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
A := B + C;&lt;br /&gt;
IF A = 5 THEN D := F + G;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
こうなると計算自体は依存していないのだが、ふたつめの加算結果を&amp;lt;tt&amp;gt;D&amp;lt;/tt&amp;gt;に格納するかどうかはひとつめの計算結果に依存する。&lt;br /&gt;
&amp;lt;!--この例が、典型的なプリディケーションが適用できる状況である事が問題である--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
このような場合、CPUは一般的には結果を推量する。例えば、&amp;lt;tt&amp;gt;IF&amp;lt;/tt&amp;gt;が90%の確率で成立する場合、ふたつめの加算処理は別の実行ユニットに渡されて実行される。ところがその推量が間違っていた場合、ふたつめの加算をなかったことにしなければならず、大きな性能低下を招く。最近のCPUの性能向上は推量ロジックがいかに高確率で推量するかにかかっているが、改善は徐々に始まったところである。&lt;br /&gt;
&lt;br /&gt;
IA-64は[[コンパイラ]]にその仕事を任せている。プログラムをCPUが実行する前にコンパイラがコードを調査してCPUが実行時にするような判断を行う。どのパスを通るかを決めたら、コンパイラは並行して実行できる命令を集め、ひとつの大きな命令に入れる。そして、それを並べてプログラムを作成する。&lt;br /&gt;
これを&amp;#039;&amp;#039;&amp;#039;[[VLIW]]&amp;#039;&amp;#039;&amp;#039;&amp;quot;very long instruction word&amp;quot;(非常に長い命令語)という。&lt;br /&gt;
&lt;br /&gt;
CPUからコンパイラにこの仕事を移管することは、いくつかの利点がある。第一にコンパイラはコードを時間をかけて調べることが出来る。これはとにかく高速に実行しなければならないCPUにはない利点である。したがってコンパイラの方がチップで実行する場合よりも予測精度を高められる。第二に予測回路は非常に複雑であり、これをコンパイラに移管することで回路を大きく削減できる。CPUは調べて推量する必要がないので、命令を分割して各実行ユニットに渡してやればよい。第三にコンパイラで推量をするのは一回限りなので、CPUで実行するたびに推量するより効率的である。&lt;br /&gt;
&lt;br /&gt;
欠点としては、プログラムの実際の動きはコード生成時に完全に予測できるとは限らないということが挙げられる。実際の動きは入力されるデータの内容に大きく左右される。アウト・オブ・オーダー実行ロジックを持つ主流のCPUは実行時に実際のデータに基づいて決定できるのに対して、コンパイラは入力データを推量することしかできない。したがって、コンパイラがCPUよりも予測を失敗する可能性がある。つまりVLIWの性能はコンパイラの性能に大きく依存する。VLIWはマイクロプロセッサのハードウェアの複雑さを低減する代わりにコンパイラの複雑さを要求するものである。&lt;br /&gt;
&lt;br /&gt;
=== レジスタ ===&lt;br /&gt;
IA-64アーキテクチャは、128本の64ビット整数レジスタ（r0 - r127）と128本の82ビット浮動小数点レジスタ（f0 - f127）という非常に多くのレジスタを定義している。&lt;br /&gt;
&lt;br /&gt;
==== 整数レジスタ ====&lt;br /&gt;
128本の64ビット整数レジスタ（r0 - r127）の内、汎用レジスタとしてはr0 - r31の32本が使われる（r0はゼロレジスタで、読み出すと常に 0 を返し、書き込むと例外が発生する）。&lt;br /&gt;
残りの96本（r32 - r127）はレジスタスタックエンジン ({{lang|en|Register Stack Engine; RSE}}) を使ったレジスタローテーションという手法で管理され、プロシージャ呼び出し間で名前が変更される可能性がある。これは多くの[[RISC]]プロセッサに見られる[[レジスタ・ウィンドウ]]を洗練させたもので、[[AMD Am29000]]のオーバーラップウィンドウサイズを変更可能なレジスタ・ウィンドウとの類似性が指摘されるが、IA-64ではプレディケーションと組み合わせることで、ループを自動的に展開して実行することができる。&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
=== 命令フォーマットとバンドル ===&lt;br /&gt;
=== プレディケーション ===&lt;br /&gt;
ARMアーキテクチャと同様な仕組み&lt;br /&gt;
=== 浮動小数点レジスタと投機実行 ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 命令セット ===&lt;br /&gt;
本アーキテクチャはマルチメディア演算や浮動小数点演算に関する命令も用意している。&lt;br /&gt;
&lt;br /&gt;
典型的なVLIWではロング命令ワードの各サブ命令の位置が特定の機能ユニットに対応しているが、Itaniumではサブ命令の配置についていくつかの組み合わせ(バンドル)を用意していて、その中にはシリアル実行モードとパラレル実行モードのバランスをとるものもある。バンドルのエンコーディングには将来のIA-64の拡張のために空きがある。加えて、Itaniumは個別に設定可能なプリディケートレジスタ（{{lang|en|predicate register}}）を持っており、各命令について実行時に出力するか否かを決定できる。&lt;br /&gt;
&lt;br /&gt;
Itaniumは、起動した時点ではいくつかの命令実行機能が動作しないようになっている。ブートストラップが実行されるとまず[[Unified Extensible Firmware Interface|Extensible Firmware Interface]] (EFI) がロードされ、追加の命令がチップ内のメモリに格納される。続いてプロセッサモード(64ビットか32ビットか)や他のブート時の設定が行われる。この設計によりItaniumシステムはEFIプログラムの内容によって異なった機能を展開できる。&lt;br /&gt;
&lt;br /&gt;
== IA-32サポート ==&lt;br /&gt;
[[IA-32]]をサポートするため、[[Itanium]]は特殊なジャンプ命令で32ビットモードに移行する。IA-32命令はItaniumの各機能ユニットで実行される。しかし、ItaniumはEPICスタイルの命令を高速に実行するよう設計されているため、アウト・オブ・オーダー実行機能を持っておらず、IA-32コードの実行はIA-64モードと比較しても[[Pentium]]系プロセッサと比較しても非常に性能的に不利である。例えば、Itaniumの機能ユニットは通常の[[演算論理装置|ALU]]での計算の副作用のため整数フラグを自動的には生成しないし、境界が整っていないメモリロードを複数続けて行うようにはできていない。[[Linux]]や[[Microsoft Windows|Windows]]上で動作するIA-32ソフトウェアエミュレーターがあるが、ハードウェアがIA-32モードで実行するよりもエミュレータで実行した方が約50%高性能である。&lt;br /&gt;
&lt;br /&gt;
Windowsエミュレータはマイクロソフトから、LinuxエミュレータはNovellのようなLinuxベンダーから入手可能である。Itanium 2のMontecitoからはハードウエアデコーダは削除され、[[Unified Extensible Firmware Interface|Extensible Firmware Interface]] (EFI) でIA-32エミュレータがロードされる様になった。&lt;br /&gt;
&lt;br /&gt;
== 採用 ==&lt;br /&gt;
{{main|Itanium#採用}}&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
*[[Itanium]]&lt;br /&gt;
*[[x86]]&lt;br /&gt;
*[[x64]]&lt;br /&gt;
*[[IA-32]]&lt;br /&gt;
*[[RISC]]&lt;br /&gt;
*[[VLIW]]&lt;br /&gt;
*[[EPICアーキテクチャ]]&lt;br /&gt;
&lt;br /&gt;
== 外部リンク ==&lt;br /&gt;
*[http://www.itaniumsolutionsalliance.org/japanese/home Itanium Solutions Alliance]&lt;br /&gt;
*[http://ascii24.com/news/i/tech/article/1999/06/01/602497-000.html?geta ASCII24 -【詳報】IA-64の主なアーキテクチャがついに発表----豊富なレジスタと命令の組み合わせが明らかに(1999/6)]&lt;br /&gt;
*[http://pc.watch.impress.co.jp/docs/2005/0415/hot365.htm 元麻布春男の週刊PCホットライン - 新プラットフォームに対するIA-64ベンダの反応(2005/4)]&lt;br /&gt;
*[http://pc.watch.impress.co.jp/docs/2007/1113/hot515.htm 元麻布春男の週刊PCホットライン - Itanium 2の今後を占う(2007/11)]&lt;br /&gt;
&lt;br /&gt;
{{Processor architectures}}&lt;br /&gt;
&lt;br /&gt;
[[Category:インテルのマイクロプロセッサ]]&lt;br /&gt;
[[Category:コンピュータアーキテクチャ]]&lt;br /&gt;
[[Category:ヒューレット・パッカード]]&lt;br /&gt;
&lt;br /&gt;
[[en:Itanium#Architecture]]&lt;/div&gt;</summary>
		<author><name>111.64.9.93</name></author>
	</entry>
</feed>