命令セットアーキテクチャ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータサイエンス命令セットアーキテクチャISAとも呼ばれる)、コンピュータアーキテクチャはある抽象モデルコンピュータ中央処理装置(CPU)など、そのISAによって記述された命令を実行するデバイスは、実装と呼ばます。

一般に、ISAは、サポートされるデータ型レジスタメインメモリを管理するためのハードウェアサポート、基本機能(メモリの一貫性アドレッシングモード仮想メモリなど)、およびの実装ファミリの入力/出力モデルを定義しますISA。

AN ISAは、動作指定マシンコード提供、そのインプリメンテーションの特性に依存しない方法でそのISAの実装上で実行されているバイナリ互換実装間を。これにより、パフォーマンス、物理サイズ、および金銭的コスト(とりわけ)が異なるが、同じマシンコードを実行できるISAの複数の実装が可能になるため、低パフォーマンス、低コストのマシンを次のように置き換えることができます。ソフトウェアを交換することなく、より高コストで高性能なマシン。また、マイクロアーキテクチャの進化も可能にします ISAの新しい、より高性能な実装が前世代の実装で実行されるソフトウェアを実行できるように、そのISAの実装の。

オペレーティングシステムが特定のISAの標準で互換性のあるアプリケーションバイナリインターフェイス(ABI)を維持している場合、そのISAとオペレーティングシステムのマシンコードは、そのISAとそのオペレーティングシステムの新しいバージョンの将来の実装で実行されます。ただし、ISAが複数のオペレーティングシステムの実行をサポートしている場合、最初のオペレーティングシステムが他のオペレーティングシステム用に構築されたマシンコードの実行をサポートしていない限り、あるオペレーティングシステムのマシンコードが別のオペレーティングシステムで実行されることは保証されません。

ISAは、命令やその他の機能を追加するか、より大きなアドレスとデータ値のサポートを追加することで拡張できます。拡張ISAの実装は、それらの拡張なしでISAのバージョンのマシンコードを実行できます。これらの拡張機能を使用するマシンコードは、これらの拡張機能をサポートする実装でのみ実行されます。

それらが提供するバイナリ互換性により、ISAはコンピューティングにおける最も基本的な抽象化の1つになります。

概要

命令セットアーキテクチャは、特定のプロセッサで命令セットを実装するために使用されるプロセッサ設計手法のセットであるマイクロアーキテクチャとは区別されます。異なるマイクロアーキテクチャを備えたプロセッサは、共通の命令セットを共有できます。例えば、インテルのPentiumおよびアドバンスト・マイクロ・デバイスのAthlonは、ほぼ同じバージョンの実装x86命令セットを、しかし、根本的に異なる内部設計を持っています。

特定のマシンの設計とは異なるアーキテクチャー の概念は、System / 360の設計段階でIBMのFredBrooksによって開発されました

NPL [System / 360]の前は、同社のコンピューター設計者は、テクノロジーを選択するだけでなく、機能的およびアーキテクチャーの改良を行うことによって、コスト目標を自由に尊重していました。対照的に、SPREAD互換性の目標は、幅広いコストとパフォーマンスにまたがる一連の5つのプロセッサに対して単一のアーキテクチャを想定していました。5つのエンジニアリング設計チームのいずれも、コストとパフォーマンスの目標を達成する際の困難を緩和する方法として、アーキテクチャ仕様の調整をもたらすことができると期待することはできませんでした。[1]p.137

SmalltalkJava仮想マシンMicrosoft共通言語ランタイムなどのISAとしてバイトコードをサポートする一部の仮想マシン、一般的に使用されるコードパスのバイトコードをネイティブマシンコードに変換することでこれを実装します。さらに、これらの仮想マシンは、解釈によって使用頻度の低いコードパスを実行します(ジャストインタイムコンパイルを参照)。Transmetaは、この方法でVLIWプロセッサ上にx86命令セットを実装しました

ISAの分類

ISAは、さまざまな方法で分類できます。一般的な分類は、アーキテクチャの複雑さによるものです。複雑な命令セットコンピュータ(CISC)は、まれにしか実用的なプログラムで使用することはできませんそのうちのいくつかは、多くの専門的な命令を持っています。縮小命令セットコンピュータ(RISC)は、以下の一般的な操作は、それらが低頻度の使用によって相殺追加プロセッサの実行時間を得有する、サブルーチンとして実現しつつ、効率的、頻繁にプログラムで使用される命令のみを実行することによって処理を簡略化します。[2]

他のタイプは、超長命令語(VLIW)アーキテクチャ、および密接に関連した長命令語(LIW)と明示的並列命令コンピューティング(EPIC)アーキテクチャ。これらのアーキテクチャは、コンパイラに命令の発行とスケジューリングを任せることにより、RISCやCISCよりも少ないハードウェアで命令レベルの並列性を活用しようとしています。

最小命令セットコンピュータ(MISC)や1命令セットコンピュータ(OISC)など、さらに複雑さが少ないアーキテクチャが研究されています。これらは理論的に重要なタイプですが、商品化されていません。

指示

機械語は、個別のステートメントまたは命令から構築されます処理アーキテクチャでは、特定の命令で次のように指定できます。

  • オペコード(実行する命令)例:追加、コピー、テスト
  • 明示的なオペランド:
レジスタ
リテラル/定数値
メモリへのアクセスに使用されるアドレッシングモード

より複雑な操作は、これらの単純な命令を組み合わせることによって構築されます。これらの命令は、順次実行されるか、制御フロー命令によって指示されます。

命令タイプ

多くの命令セットに共通する操作の例は次のとおりです。

データ処理とメモリ操作

  • レジスタを固定定数値に設定ます。
  • データをメモリ位置またはレジスタからメモリ位置またはレジスタにコピーします(マシン命令はしばしば移動と呼ばれますが、この用語は誤解を招く恐れがあります)。レジスタの内容、計算結果を格納するため、または格納されたデータを取得して後で計算を実行するために使用されます。多くの場合、ロードおよびストア操作と呼ばれます
  • ハードウェアデバイスからのデータの読み取り書き込み

算術演算と論理演算

  • 追加減算乗算または除算おそらくは一つ以上の設定、二つのレジスタの値を、レジスタに結果を確定する条件コードステータス・レジスタ
    • インクリメント一部のISAではデクリメントし、些細な場合にオペランドフェッチを保存します。
  • 実行ビット演算取る例えば、接続詞および離接取る、レジスタのペアに対応するビットの否定レジスタの各ビットを。
  • レジスタ内の2つの値を比較します(たとえば、一方が小さいかどうか、または等しいかどうかを確認します)。
  • 浮動小数点命令浮動小数点数で演算用。

制御フロー操作

  • プログラム内の別の場所に分岐し、そこで命令を実行します。
  • 特定の条件が満たされる場合、条件付きで別の場所に分岐します。
  • 別の場所に間接的に分岐します。
  • 次の命令の場所を戻るポイントとして保存しながら、別のコードブロックを呼び出します。

コプロセッサー命令

  • コプロセッサーとの間でデータをロード/ストアするか、CPUレジスターと交換します。
  • コプロセッサー操作を実行します。

複雑な指示

プロセッサは、命令セットに「複雑な」命令を含めることができます。単一の「複雑な」命令は、他のコンピューターで多くの命令を受け取る可能性のある何かを実行します。[要出典]このような命令は、複数のステップを実行する命令、複数の機能ユニットを制御する命令、または特定のプロセッサによって実装される単純な命令の大部分よりも大規模に表示れる命令に代表されます。「複雑な」命令の例には、次のものがあります。

複雑な命令は、RISC命令セットよりもCISC命令セットで一般的ですが、RISC命令セットにもそれらが含まれる場合があります。 RISC命令セットには通常、メモリオペランドを使用したALU演算や、メモリの大きなブロックを移動する命令は含まれていませんが、ほとんどのRISC命令セットには、複数のデータに対して同時に同じ算術演算を実行するSIMDまたはベクトル命令が含まれています。 SIMD命令には、最小限の時間で大きなベクトルと行列を操作する機能があります。 SIMD命令により、音声、画像、およびビデオ処理に一般的に含まれるアルゴリズムを簡単に並列化できます。さまざまなSIMD実装が、MMXなどの商品名で市場に投入されています3DNow!、およびAltiVec

命令エンコーディング

1つの命令には、論理演算を識別する複数のフィールドが含まれる場合があり、送信元アドレスと宛先アドレス、および定数値が含まれる場合もあります。これはMIPSの「AddImmediate」命令であり、ソースレジスタとデスティネーションレジスタを選択し、小さな定数を含めることができます。

従来のアーキテクチャでは、命令には、レジスタにメモリの内容を追加するなど、実行する操作を指定するオペコードと、レジスタ、メモリ位置、またはリテラルデータを指定できる0個以上のオペランド指定子が含まれますオペランド指定子は、その意味を決定するアドレッシングモードを持っている場合もあれば、固定フィールドにある場合もあります。非常に長い命令語多く含む(VLIW)アーキテクチャ、マイクロコード・アーキテクチャを、複数の同時オペコードとオペランドは、単一の命令で指定されています。

トランスポートトリガーアーキテクチャ(TTA)など、一部のエキゾチックな命令セットにはオペコードフィールドがなく、オペランドのみがあります。

フォース仮想マシンやその他の「0オペランド」の命令セットは、いくつかのように任意のオペランド指定フィールド、不足スタックマシンNOSC含むを。[3] [より良い情報源が必要]

条件付き命令には、多くの場合、述語フィールドがあります。これは、特定の条件をエンコードして、操作を実行しないのではなく実行するための数ビットです。たとえば、条件分岐命令は、条件がtrueの場合に制御を転送するため、実行はプログラムの別の部分に進み、条件がfalseの場合は制御を転送しないため、実行は順次続行されます。一部の命令セットには条件付き移動もあるため、条件が真の場合は移動が実行され、条件が真の場合はデータがターゲット位置に格納され、条件が偽の場合はターゲット位置が変更されません。同様に、IBM z / Architectureには条件付きストア命令があります。いくつかの命令セットには、すべての命令に述語フィールドが含まれています。これは呼ばれます分岐予測

オペランドの数

命令セットは、命令で明示的に指定されたオペランドの最大数によって分類できます

(以下の例では、ab、およびcは(直接または計算された)メモリセルを参照するアドレスであり、reg1などはマシンレジスタを参照します。)

C = A + B
  • 0オペランド(ゼロアドレス機)、いわゆるスタックマシン:すべての算術演算は、トップ一つまたはスタック上の2つの位置を使用して行われますpush apush baddpop c
    • C = A+B4つの指示が必要です。スタックマシンの場合、「0オペランド」および「ゼロアドレス」という用語は算術命令に適用されますが、1オペランドのプッシュおよびポップ命令がメモリへのアクセスに使用されるため、すべての命令に適用されるわけではありません。
  • 1オペランド(1アドレスマシン)、いわゆるアキュムレータマシンには、初期のコンピュータと多くの小さなマイクロコントローラが含まれます。ほとんどの命令は、暗黙のアキュムレータを次のように使用して、単一の右オペランド(つまり、定数、レジスタ、またはメモリ位置)を指定します。左オペランド(および存在する場合宛先): 、load aadd bstore c
    • C = A+B3つの指示が必要です。
  • 2オペランド—多くのCISCおよびRISCマシンはこのカテゴリに分類されます。
    • - CISCmove AC ; その後add BC
      • C = A+B2つの指示が必要です。これにより、明示的なストア命令なしで結果が効果的に「保存」されます。
    • CISC —多くの場合、マシンは命令ごとに1つのメモリオペランドに制限されていload a,reg1ます。add b,reg1; store reg1,c; これには、add結果がのように別の場所に格納された拡張C = A+Bであるか、同じメモリ位置に格納されているかに関係なく、メモリの移動にロード/ストアのペアが必要ですA = A+B
      • C = A+B3つの指示が必要です。
    • RISC —明示的なメモリロードが必要な場合、命令は次のようになりますload a,reg1load b,reg2; add reg1,reg2; store reg2,c
      • C = A+B4つの指示が必要です。
  • 3オペランド、データのより良い再利用を可能にします:[4]
    • CISC —単一の命令になります。 add a,b,c
      • C = A+B1つの命令が必要です。
    • CISC —または、命令ごとに2つのメモリオペランドに制限されているマシンでは、move a,reg1; add reg1,b,c;
      • C = A+B2つの指示が必要です。
    • RISC —算術命令はレジスタのみを使用するため、明示的な2オペランドのロード/ストア命令が必要ですload a,reg1load b,reg2; add reg1+reg2->reg3; store reg3,c;
      • C = A+B4つの指示が必要です。
      • 2オペランドまたは1オペランドとは異なり、これにより、レジスタ内の3つの値a、b、およびcがすべて残り、さらに再利用できます。[4]
  • より多くのオペランド-一部のCISCマシンでは、VAX "POLY"多項式評価命令など、3つを超えるオペランド(レジスタまたはメモリアクセス)を許可するさまざまなアドレッシングモードが許可されています。

3オペランド命令の3つのレジスタをエンコードするために必要なビット数が多いため、16ビット命令を持つRISCアーキテクチャは、Atmel AVR、TI MSP430、およびARM Thumbの一部のバージョンなど、常に2オペランド設計です。32ビット命令を持つRISCアーキテクチャは、通常、ARMAVR32MIPSPower ISASPARCアーキテクチャなどの3オペランド設計です。

各命令は、いくつかのオペランド(レジスタ、メモリ位置、または即値)を明示的に指定します。一部の命令は、スタックの最上位または暗黙のレジスタに格納されるなどして、一方または両方のオペランドを暗黙的に指定します。一部のオペランドが暗黙的に指定されている場合、命令で指定する必要のあるオペランドの数は少なくなります。 「宛先オペランド」で宛先を明示的に指定する場合は、追加のオペランドを指定する必要があります。その結果、命令にエンコードされたオペランドの数は、論理演算または算術演算(arity)に数学的に必要な引数の数とは異なる場合があります。オペランドは、命令の「オペコード」表現でエンコードされます。 または、オペコードに続く値またはアドレスとして指定されます。

圧力を登録する

レジスター圧力は、プログラム実行中の任意の時点での空きレジスターの可用性を測定します。使用可能なレジスタが多数使用されている場合、レジスタの圧力は高くなります。したがって、レジスタの圧力が高いほど、レジスタの内容をメモリこぼさなければならないことが多くなります。アーキテクチャ内のレジスタの数を増やすと、レジスタのプレッシャーは減少しますが、コストは増加します。[5]

Thumbなどの組み込み命令セットはレジスタセットが小さいためレジスタ圧力が非常に高くなりますが、MIPSAlphaなどの汎用RISCISAはレジスタ圧力が低くなります。x86-64のようなCISCISAは、レジスタセットが小さいにもかかわらず、レジスタ圧力が低くなっています。これは、CISC ISAが提供する多くのアドレッシングモードと最適化(サブレジスタアドレッシング、ALU命令のメモリオペランド、絶対アドレッシング、PC相対アドレッシング、レジスタ間スピルなど)によるものです。[6]

命令長

命令のサイズまたは長さは、一部のマイクロコントローラーのわずか4ビットから、一部のVLIWシステムの数百ビットまで大きく異なります。パーソナルコンピュータメインフレーム、およびスーパーコンピュータ使用されるプロセッサの命令サイズは8〜64ビットです。 x86で可能な最長の命令は15バイト(120ビット)です。[7]命令セット内では、異なる命令の長さが異なる場合があります。一部のアーキテクチャ、特に最も縮小された命令セットコンピュータ(RISC)では、命令は固定長であり、通常はそのアーキテクチャのワードサイズに対応します。他のアーキテクチャでは、命令の長さは可変で、通常はバイトまたはハーフワードの整数倍です。などのいくつか、 ARMThumbの延長は有する混合命令が自由に混在させることはできませんが、ARMv8における分岐(または例外境界上間で切り替えなければならない2つの固定された可変符号化、通常、32ビットと16ビットエンコーディングを、 )。

RISC命令セットの命令長は通常固定されています(多くの場合4バイト= 32ビット)が、一般的なCISC命令セットの命令の長さは大きく異なります(x86の場合は1〜15バイト)。固定長命令は、いくつかの理由(たとえば、命令がキャッシュラインまたは仮想メモリページの境界にまたがっているかどうかをチェックする必要がない[4])により、可変長命令よりも処理が複雑ではないため、最適化がいくらか簡単になります。速度。

コード密度

1960年代初頭のコンピュータでは、メインメモリは高価で、メインフレーム上でも非常に限られていました。プログラムのサイズを最小化して、限られたメモリに収まるようにすることが、多くの場合中心的でした。したがって、特定のタスクを実行するために必要なすべての命令の合計サイズであるコード密度は、任意の命令セットの重要な特性でした。それは、最初はミニコンピューター、次にマイクロプロセッサーの小さな記憶にとって重要なままでした。スマートフォンアプリケーション、低速のインターネット接続を介してブラウザにダウンロードされるアプリケーション、および組み込みアプリケーションのROMにとって、密度は今日でも重要です。密度を上げることのより一般的な利点は、キャッシュと命令のプリフェッチの有効性が向上することです。

コード密度の高いコンピューターには、多くの場合、プロシージャー入力、パラメーター化された戻り値、ループなどの複雑な命令があります(したがって、遡及的にComplex Instruction Set ComputersCISCと名付けられています)。ただし、より一般的または頻繁な「CISC」命令は、「追加」などの基本的なALU演算と、メモリ内の1つ以上のオペランドのアクセスを組み合わせるだけです(直接、間接、インデックスなどのアドレッシングモードを使用)。 。特定のアーキテクチャでは、2つまたは3つのオペランド(結果を含む)をメモリ内で直接許可するか、自動ポインタインクリメントなどの機能を実行できる場合があります。ソフトウェアで実装される命令セットには、さらに複雑で強力な命令が含まれる場合があります。

縮小命令セットコンピュータであるRISCは、メモリサブシステムが急速に成長している時期に最初に広く実装されました。それらは、実装回路を単純化するためにコード密度を犠牲にし、より高いクロック周波数とより多くのレジスタを介してパフォーマンスを向上させようとします。単一のRISC命令は通常、レジスタの「追加」やメモリ位置からレジスタへの「ロード」など、単一の操作のみを実行します。通常、RISC命令セットの命令長は固定されていますが、一般的なCISC命令セットの命令長は大きく異なります。ただし、RISCコンピュータは通常、特定のタスクを実装するためにより多くの、そしてより長い命令を必要とするため、本質的にバス帯域幅とキャッシュメモリの最適な使用を行いません。

ThumbAVR32などの特定の組み込みRISCISAは、通常、コード圧縮と呼ばれる手法のために非常に高密度を示します。この手法では、2つの16ビット命令を1つの32ビットワードにパックし、デコード段階でアンパックして2つの命令として実行します。[8]

最小命令セットコンピュータ(MISC)は、スタックマシンの一種であり、個別の命令(16〜64)がほとんどないため、複数の命令を1つのマシンワードに収めることができます。これらのタイプのコアは、実装にシリコンをほとんど必要としないことが多いため、FPGAまたはマルチコア形式で簡単に実現できます。 MISCのコード密度は、RISCのコード密度に似ています。増加した命令密度は、タスクを実行するためにより多くのプリミティブ命令を必要とすることによって相殺されます。[要出典]

コード密度を向上させるメカニズムとして、実行可能圧縮に関する研究が行われています。コルモゴロフの複雑の数学は、これの課題と限界を説明しています。

表現

プログラムを構成する命令が、内部の数値形式(機械語を使用して指定されることはめったにありませんそれらは、アセンブリ言語を使用してプログラマーによって指定される場合があります。または、より一般的にはコンパイラーによってプログラミング言語から生成される場合があります

デザイン

命令セットの設計は複雑な問題です。マイクロプロセッサの歴史には2つの段階がありました。 1つ目はCISC(Complex Instruction Set Computer)で、さまざまな命令がありました。しかし、1970年代に、IBMのような場所が調査を行い、セット内の多くの命令を削除できることがわかりました。その結果、より少ない命令セットを使用するアーキテクチャであるRISC(縮小命令セットコンピュータ)が実現しました。より単純な命令セットは、より高速で、プロセッササイズを縮小し、消費電力を削減する可能性を提供する可能性があります。ただし、より複雑なセットは、一般的な操作を最適化したり、メモリとキャッシュの効率を改善したり、プログラミングを簡素化したりする場合があります。

一部の命令セット設計者は、ある種のシステムコールまたはソフトウェア割り込みのために1つ以上のオペコードを予約します。例えば、MOS技術6502回の使用00 HザイログZ80は8つのコードC7、CF、D7、DF、E7、EF、F7、FF使用H [9]ながらモトローラ68000範囲A000..AFFFで使用コードH

命令セットがPopekとGoldbergの仮想化要件を満たしている場合、高速仮想マシンの実装ははるかに簡単です[説明が必要]

NOPスライドで使用される免疫を意識したプログラミングは、メモリの「プログラムされていない」状態があると解釈された場合に実施する方がはるかに簡単ですNOP[疑わしい ]

複数のプロセッサを搭載したシステムでは、命令セットに「フェッチアンドアッド」、「ロードリンク/ストアコンディショナル」(LL /)などのサポートが含まれている場合、ノンブロッキング同期アルゴリズムの実装がはるかに簡単になります[要出典]。 SC)、または「アトミックコンペアアンドスワップ」。

命令セットの実装

任意の命令セットは、さまざまな方法で実装できます。特定の命令セットを実装するすべての方法は同じプログラミングモデルを提供し、その命令セットのすべての実装は同じ実行可能ファイルを実行できます。命令セットを実装するさまざまな方法は、コスト、パフォーマンス、消費電力、サイズなどの間でさまざまなトレードオフをもたらします。

設計する際にマイクロプロセッサのを、エンジニアは、などの加算器、マルチプレクサ、カウンタ、レジスタ、ALUは、として(多くの場合、別々に設計)、「ハードワイヤード」の電子回路のブロックを使用するいくつかの種類のレジスタ転送言語は、その後、多くの場合、記述するために使用されますこの物理的なマイクロアーキテクチャを使用したISAの各命令のデコードとシーケンス。この説明を実装するためのコントロールユニットを構築するには、2つの基本的な方法があります(ただし、多くの設計では中間の方法または妥協点を使用しています)。

  1. 一部のコンピューターは、完全な命令セットのデコードとシーケンスを「ハードワイヤード」で設計します(他のマイクロアーキテクチャーと同様)。
  2. 他の設計では、これを行うためにマイクロコードルーチンまたはテーブル(または両方)を使用します。通常、オンチップROMまたはPLA、あるいはその両方として使用します(ただし、これまでは別々のRAMとROMが使用されてきました)。Western Digitalの MCP-1600は、マイクロコードのための専用の、別々のROMを使用して、古い例です。

一部の設計では、制御ユニットにハードワイヤード設計とマイクロコードの組み合わせを使用しています。

一部のCPU設計では、書き込み可能なコントロールストアを使用します。これらは、CPU内の書き込み可能なRAMまたはフラッシュRekursivプロセッサやImsys Cjipなど)、[10]、またはFPGA(再構成可能コンピューティング)に命令セットをコンパイルします

ISAはインタプリタによってソフトウェアエミュレートすることもできます。当然、解釈のオーバーヘッドのため、エミュレーターを実行しているハードウェアが桁違いに高速でない限り、これはエミュレートされたハードウェアでプログラムを直接実行するよりも遅くなります。今日、新しいISAまたはマイクロアーキテクチャのベンダーは、ハードウェアの実装の準備が整う前に、ソフトウェア開発者がソフトウェアエミュレータを利用できるようにするのが一般的です。

多くの場合、実装の詳細は、命令セット用に選択された特定の命令に強い影響を及ぼします。たとえば、命令パイプラインの多くの実装では、命令ごとに1つのメモリロードまたはメモリストアしか許可されないため、ロードストアアーキテクチャ(RISC)になります。別の例として、命令パイプラインを実装するいくつかの初期の方法は遅延スロットにつながりました

高速デジタル信号処理の要求は反対方向に押し進められており、命令を特定の方法で実装することを余儀なくされています。たとえば、デジタルフィルタを十分に高速に実行するには、一般的なデジタルシグナルプロセッサ(DSP)のMAC命令は、命令と2つのデータワードを同時にフェッチできる一種のハーバードアーキテクチャ使用する必要があり、1サイクルの積和演算 が必要です。乗数

も参照してください

参考文献

  1. ^ ピュー、エマーソンW。; ジョンソン、ライルR。; パーマー、ジョンH.(1991)。IBMの360およびEarly370システムMITプレス。ISBN 0-262-16123-0
  2. ^ クリスタルチェン; グレッグノビック; カークシマノ(2006年12月16日)。「RISCアーキテクチャ:RISCとCISC」cs.stanford.edu 2015年2月21日取得
  3. ^ 「ForthResources:NOSC MailListArchive」奇妙なgizmo.comアーカイブされたオリジナルの2014年5月20日に2014年7月25日取得
  4. ^ a b c John CockeによるIBMでのRISCテクノロジーの進化– IBM Journal of R&D、Volume 44、Numbers 1/2、p.48(2000)
  5. ^ ページ、ダニエル(2009)。「11.コンパイラ」。コンピュータアーキテクチャの実用的な紹介スプリンガー。NS。464 Bibcode2009pica.book ..... PISBN 978-1-84882-255-9
  6. ^ ベンカット、アシッシュ; タルセン、ディーンM.(2014)。ISAの多様性を活用する:異種ISAチップマルチプロセッサの設計コンピュータアーキテクチャに関する第41回年次国際シンポジウム。
  7. ^ 「インテル®64およびIA-32アーキテクチャーソフトウェア開発者マニュアル」インテルコーポレーション検索された12年7月2012
  8. ^ ウィーバー、ヴィンセントM。; マッキー、サリーA.(2009)。新しいアーキテクチャのコード密度の懸念コンピュータ設計に関するIEEE国際会議。CiteSeerX 10.1.1.398.1967土井10.1109 /ICCD.2009.5413117 
  9. ^ ガンスル、ジャック(2001年2月26日)。「プロアクティブデバッグ」Embedded.com
  10. ^ 「過去と現在の偉大なマイクロプロセッサ(V 13.4.0)」cpushack.net 2014年7月25日取得

Further reading

External links