私はコンピューターの歴史を読んでいて、IA-64(Itanium)プロセッサーを持ってきました。それらは非常に興味深く聞こえ、Intelがそれらを削除することにした理由について私は混乱していました。
そのサイクルで実行したい2つの命令を明示的に選択できることは、特に、より高速なブートローダーなど、アセンブリでプログラムを作成する場合に、優れたアイデアです。
レジスタの数百は、アセンブリプログラマにとって納得のいくものでなければなりません。他の変数を呼び出さない場合は、基本的にすべての関数変数をレジスタに格納できます。
このような指示を行う機能:
(qp) xor r1 = r2, r3 ; r1 = r2 XOR r3
(qp) xor r1 = (imm8), r3 ; r1 = (imm8) XOR r3
対しなければならないこと:
; eax = r1
; ebx = r2
; ecx = r3
mov eax, ebx ; first put r2 into r1
xor eax, ecx ; then set r1 equivalent to r2 XOR r3
mov eax, (imm32) ; first put (imm32) into r1
xor eax, ecx ; then set r1 equivalent to (imm32) XOR r3
X86の後方比較がないためだと聞きましたが、Pentium回路を追加し、Itaniumモードに切り替えるプロセッサフラグを追加するだけでは修正できませんでした(保護モードまたはロングモードへの切り替えなど)。
それについてのすべての素晴らしいことは、彼らにAMDよりも大きな飛躍をもたらすでしょう。
何か案は?
悲しいことに、これを行うには非常に高度なコンパイラが必要になることを意味します。または、CPUの特定のモデルごとに1つでも。 (たとえば、追加機能を備えたItaniumの新しいバージョンでは、異なるコンパイラが必要になります)。
Visual Studio 2010でWinForms(ターゲットには.NET 2.0のみが含まれていた)プロジェクトで作業していたとき、IA-64のコンパイルターゲットがありました。つまり、IA-64用にコンパイルできた.NETランタイムがあり、.NETランタイムはWindowsを意味します。さらに、 ハミルトンの答え はWindowsNTについて言及しています。 Windows NTのような本格的なOSがあるということは、IA-64マシンコードを生成できるコンパイラがあることを意味します。
パフォーマンスは期待に比べて非常に残念で、Intelのx86アーキテクチャに比べると売れ行きがよくありませんでした。
インテルは、2000年頃にWindows NTを実行しているItaniumでトレードショーのために Hamilton C Shell を構築するように私に話しました。 Itaniumを入手するのは困難だったので、私は彼らのラボのマシンにVPNを使用しました。 x86、MIPS、Alpha、PowerPCでNTのバージョンをすでに構築しているので、「ポート」は簡単で、ほとんどが私のメイクファイルにわずかな調整を加えただけです。多分30分くらいかかったと思います。
しかし、パフォーマンスは本当に圧倒的で、間違いなくVPNを上回っていたため、トレードショーに行って直接試してみるとまだがっかりしました。 Itaniumは、素晴らしい製品ではなく、誰も購入しなかったため、どこにも行きませんでした。
追加:
しばらくの間、Intelは、WebサイトでVPNリモート開発の経験を使用してItaniumに移植した私の経験を宣伝しました。もう行ってしまいましたが、archive.orgでスナップショットを撮りました。これが彼らの リモートFAQ で述べたことです:
Q:リモートアクセスサービスについて話せる顧客はいますか?
A:はい、 ハミルトンラボラトリーズ *。サービスから得られたハミルトン研究所の利点の詳細については、 ハミルトン研究所のケーススタディ を参照してください。
" ケーススタディ "には、顧客がそれを求めていたので、Itaniumバージョンを作成したと書かれています。しかし、Itaniumのコピーを販売したことは覚えていません。 PowerPCを含む他のすべてのためにそれらを販売しました(そしてNTを実行している人の何人があったと思いますか?)Itaniumのために決して。
課題:ハミルトンCシェル製品の開発を加速し、インテル®Itanium®向けのお客様のアーキテクチャツールの市場投入までの時間を確保するおよびWindows * 2000。
解決策:高速インターネットアクセスとShiva®VPNクライアントを含むリモートアクセスプログラムを使用して、Itanium開発環境にアクセスし、ソースコードを変更してファイルを作成しました。デバッグをテストし、64ビットアプリケーションをわずか7時間でリモートで再コンパイルします。
正解:パフォーマンスが悪い。インテルは、彼らが望む製品に進化するはずだったときに、革新的な製品をリリースしようとしました。
具体的には、一般的な状況ではプロセッサの速度が十分ではありませんでした。 Intelは、プロセッサ速度とメモリ速度のギャップが拡大しているのと同じように、プロセッサをリリースしました。縮小命令セット(RISC)プロセッサであるItaniumは、その従兄弟であるx86バリアントよりも多くの命令あたりのバイト数を必要としました。メモリ負荷の増加により、プロセッサの実行が遅くなりました。
これらすべては、本質的に最初のリリースであるアーキテクチャ全体によって苛立たされました。 RISC自体は新しいアイデアではありませんでしたが、ハードウェアコンポーネントの多くは新しいレイアウト設計であり、必要でした。 Itaniumの命令レイアウトには、高品質のソフトウェアが利用可能になる前に開発コミュニティによって徹底的に消化される必要のある多くの新しいアイデアもありました。
最終的には、多くのテクノロジーがIntelの既存のチップリリースで使われるようになりました-エンドユーザーには簡単には見えません。
Itaniumは素晴らしいデザインですそれを活用できるなら利点。
残念ながら、これを行うには非常に高度なコンパイラが必要になることを意味します。または、CPUの特定のモデルごとに1つでも。 (たとえば、追加機能を備えたItaniumの新しいバージョンでは、異なるコンパイラが必要になります)。
このようなコンパイラーを一度作成するのは難しい作業です。 CPUのすべてのバリエーションに対してこれを行うことは、経済的ではありません。
あまり触れられていないItaniumの歴史の他の重要な部分は、2001年にItaniumがデビューしたとき、大量のRAMをコモディティハードウェアに取り込むことができなかったという事実です。x86_64は地平線のほんの一瞬であり、AMDOpteronsはさらに2年間は実際にはリリースされませんでした。
Itaniumサーバーでの私の最初の(そして唯一の)経験は、2002年に化学会社で、欠陥を検出するためにオイル分析を実行するためにSQLServerが必要だったときでした。このオイルは、10億ドル規模の企業の数百万ドル規模のマシンから出入りしていたため、それぞれ128GBのRAMを搭載したItaniumのクラスターがありました。 128GbのRAM今日でもまだかなりの量ですが、サーバーへのインストールは簡単で安価です。
2002年には、128 GBのRAMは巨大な量でした。すでにSQL Serverインフラストラクチャがあったため、いくつかのItaniumマシンをフォークしてRAMをロードする方が、別のプラットフォームと別のデータベースに切り替えることでした。
128Gb(またはそれ以上)をコモディティサーバーに取り込むのは簡単です。これは、実際に実行可能な競合他社がなかったItanium市場の大部分の1つです(Opteronは2003年に登場しましたが、もちろん、何百ギガのメモリを取ることは至る所にあります)購入するのが安く、所有するのが安く、そしてより速いオプションが殺到しています。
AMDがIntelに、競争するために主流のプロセッサにより多くのリソースを割り当てるように促したためだと聞きました。 AMDは2003年にAthlon64を発表しました。これは、Pentiumよりも価格/パフォーマンスが優れていました。 IntelがItaniumを全面的に開発し続けた場合、現在のx86プロセッサよりも高速になると考えられています。