アカウント名:
パスワード:
これなぁ・・・「Itaniumとは一体なんだったのか」
記事本文からリンクされているASCII.jpの記事には「当時のインテルの考えは、x86は命令体系が複雑であり、将来性能を引き上げる際にはこの命令体系の複雑さがボトルネックになると考えていた」とあるが、なのでItaniumは32bitのx86と互換性がない設計になった、ということのようだが、それならどうして性能がポンコツだったのか・・・実際のところ、Itaniumの発売から20年近く経ち、現れたApple M1なんかは、x86より高効率と喧伝されているわけだが、当初の目論見では、Itaniumも、簡潔な命令セットで高効率で低消費電力で高性能、を目指していたのだろうか?どうしてそうなれなかったのか・・・。
IA-32のデコードの難しさとそれに伴う並列実行の困難さ(依存関係の解決が必要なため)から、IA-64はデコードを簡単にし、高度な並列実行を命令のフォーマットレベルで可能にしたものだと当時読んだ記憶があります。並列実行の計画はコンパイル時に行い、実行時にはそれをどんどん実行していけば性能がでるだろうという想定に基づいていたものの、実際にはコンパイル時に行った静的な並列化よりも実行時に並列化を動的に行うIA-32の方が性能が出るという事態になり、クロックあたりの性能が伸びずにとん挫したわけです。
当初のIA-64はIA-32のコードも実行できます。どうやって実行していたのかはよく知らないのですが、IA-64の特定のレジスターにIA-32のレジスターがマッピングされているのを見ると、IA-32をIA-64の命令に固定的に変換するデコーダーが搭載されていて、IA-32の1命令単位での変換となることから(Pentium Pro以降はIA-32を並列実行できるのに対して)IA-32命令を並列実行することができず、性能が出なかったのではないかなと、資料を眺めていて妄想しています。これを解消するために後期にはIA-32 EL(Execution Layer)が追加され、ソフトウェアによるエミュレーション動作になり、ハードウェアによる実行よりも高速化したという流れなのではないでしょうか。あくまで妄想ですが。
マイクロアーキを共有しつつデコーダ経由のIA32/x64とダイレクトに演算ユニットを指定するIA64、とか出来なかったのかね。そう簡単じゃないか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
一体なんだったのか (スコア:0)
これなぁ・・・「Itaniumとは一体なんだったのか」
記事本文からリンクされているASCII.jpの記事には
「当時のインテルの考えは、x86は命令体系が複雑であり、将来性能を引き上げる際にはこの命令体系の複雑さがボトルネックになると考えていた」とあるが、なのでItaniumは32bitのx86と互換性がない設計になった、ということのようだが、
それならどうして性能がポンコツだったのか・・・
実際のところ、Itaniumの発売から20年近く経ち、現れたApple M1なんかは、x86より高効率と喧伝されているわけだが、
当初の目論見では、Itaniumも、簡潔な命令セットで高効率で低消費電力で高性能、
を目指していたのだろうか?どうしてそうなれなかったのか・・・。
Re:一体なんだったのか (スコア:0)
IA-32のデコードの難しさとそれに伴う並列実行の困難さ(依存関係の解決が必要なため)から、IA-64はデコードを簡単にし、高度な並列実行を命令のフォーマットレベルで可能にしたものだと当時読んだ記憶があります。
並列実行の計画はコンパイル時に行い、実行時にはそれをどんどん実行していけば性能がでるだろうという想定に基づいていたものの、実際にはコンパイル時に行った静的な並列化よりも実行時に並列化を動的に行うIA-32の方が性能が出るという事態になり、クロックあたりの性能が伸びずにとん挫したわけです。
当初のIA-64はIA-32のコードも実行できます。
どうやって実行していたのかはよく知らないのですが、IA-64の特定のレジスターにIA-32のレジスターがマッピングされているのを見ると、IA-32をIA-64の命令に固定的に変換するデコーダーが搭載されていて、IA-32の1命令単位での変換となることから(Pentium Pro以降はIA-32を並列実行できるのに対して)IA-32命令を並列実行することができず、性能が出なかったのではないかなと、資料を眺めていて妄想しています。
これを解消するために後期にはIA-32 EL(Execution Layer)が追加され、ソフトウェアによるエミュレーション動作になり、ハードウェアによる実行よりも高速化したという流れなのではないでしょうか。あくまで妄想ですが。
Re: (スコア:0)
マイクロアーキを共有しつつデコーダ経由のIA32/x64とダイレクトに演算ユニットを指定するIA64、とか出来なかったのかね。
そう簡単じゃないか。