JP2005539321A - データ処理システムの外部および内部命令セット - Google Patents

データ処理システムの外部および内部命令セット Download PDF

Info

Publication number
JP2005539321A
JP2005539321A JP2004537249A JP2004537249A JP2005539321A JP 2005539321 A JP2005539321 A JP 2005539321A JP 2004537249 A JP2004537249 A JP 2004537249A JP 2004537249 A JP2004537249 A JP 2004537249A JP 2005539321 A JP2005539321 A JP 2005539321A
Authority
JP
Japan
Prior art keywords
internal
instruction block
internal instruction
instruction
external
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004537249A
Other languages
English (en)
Other versions
JP3820261B2 (ja
Inventor
フルートナー、クリスチャン
ローズ、アンドリュー、クリストファー
Original Assignee
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2005539321A publication Critical patent/JP2005539321A/ja
Application granted granted Critical
Publication of JP3820261B2 publication Critical patent/JP3820261B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

内部命令を実行するようになっている実行コアと、
1つ以上の内部命令のうちの複数の内部命令ブロックを記憶するようになっている変換バッファとを備え、前記内部命令ブロックが1つ以上の外部命令のうちのそれぞれの外部命令ブロックのダイナミックな変換であり、
対応する内部命令ブロックからの1つ以上の内部命令を前記実行コアに供給できるよう、前記変換バッファ内に記憶された前記対応する内部命令ブロックを識別するための前記外部命令ブロックのうちの1つのうちにある、外部命令のための実行リクエストに応答自在なリマッパーを備えた、データを処理するための装置が提供される。

Description

本発明は外部命令セットおよび内部命令セットを有するデータ処理システムに関し、例えば内部で実施される命令セットから、プロセッサの外部からみることができる命令セットの結合を外すよう、ソフトウェア変換器またはハードウェア変換器と組み合わされた特にメモリ構造を使用する、命令キャッシュメモリを有するかかるシステムに関する。
命令変換ハードウェアにより外部Java(登録商標)バイトコードを内部ネーティブプロセッサメモリに変換するシステムを提供することは、米国特許第6,332,215号から公知である。
深くパイプライン化されたシステム内での処理速度を増す手段として、基本構成ブロックを別々にフェッチしなくてもスペキュレーティブトレースを容易にフェッチできるよう、コンピュータコードの基本ブロックのうちの1つのセットを通して前の実行パスを表示するデータを記憶することは、インテル社が製造するペンティアム(登録商標)IVプロセッサのトレースキャッシュ機構から公知である。スペキュレーティブトレース構造を特定するためにタグ内のポインタと共に固定サイズのラインを使用する従来のキャッシュ内にトレース情報が記憶される。後に理解できるように、本発明は従来のキャッシュ構造の上部に構築されるものではなく、本発明は標準的なRAM構造の頂部において可変サイズのブロックからなる一次キャッシュを実施するものであり、これによってスペース効率を高くし、より高速の作動を促進できる。
トランスメタ社が製造するマイクロプロセッサでは非ネーティブ命令セットからネイティブ命令セットに変換し、プロセッサで実行するためにこの変換を管理するためのソフトウェアを使用するシステムを提供することは公知となっている。
多数の外部命令セットをサポートするマイクロプロセッサを提供することも公知である。これらのマイクロプロセッサの一例として、現在3つの外部命令セット、すなわちARM、ThumbおよびJava(登録商標)命令セットをサポートするARMアーキテクチャマイクロプロセッサがある。特定のマイクロプロセッサによってサポートされる異なる命令セットの数を多くできることが望ましいが、命令セットの数が多数になることによってデコーダが更に複雑となり、次にこのことによってプロセッサの性能および電力消費量に悪影響が及び得る。
1つの側面から見れば、本発明は、
内部命令を実行するようになっている実行コアと、
1つ以上の内部命令のうちの複数の内部命令ブロックを記憶するようになっている変換バッファとを備え、前記内部命令ブロックが1つ以上の外部命令のうちのそれぞれの外部命令ブロックのダイナミックな変換であり、
対応する内部命令ブロックからの1つ以上の内部命令を前記実行コアに供給できるよう、前記変換バッファ内に記憶された前記対応する内部命令ブロックを識別するよう、外部命令ブロックのための実行リクエストに応答するリマッパー(remapper)を備えた、データを処理するための装置を提供するものである。
リマッパーは前に遭遇した外部ブロックスタートアドレスの変換バッファ内の対応する内部アドレスへの正確なマッピングを含む。基本ブロックとして一般に知られるものに1つのブロックが関係するが、この知られたものに限定されるものではない。通常、1つ以上のブランチ命令のターゲットである命令でブロックがスタートし、このブロックはブランチ命令またはブロックサイズ上のあらかじめ指定された限界により終了される。しかしながら、後に判るように、あるケースではブロックは可能な場合に多数の基本ブロックからの命令を含む命令の一組を続行できるが、必ずしも元のプログラム順序で続行しなくてもよい。
本発明はある命令セットから別の命令セットへ変換することに関与するプロセッサの性能および電力消費量に対する悪影響を、変換バッファを使用することによって効果的に低減できると認識したものであり、この変換バッファでは当該コンピュータプログラムの同じ部分を実行すべきときに、更なる変換を必要とすることなく、外部メモリの対応するブロックのダイナミックに形成された変換である内部命令のブロックを直接再使用できるように記憶している。実際のコンピュータプログラムの多くはコンピュータコードの小さい同じ部分を繰り返し実行するので、このコンピュータコードを一旦変換した場合、別の変換に関連する性能のオーバーヘッドおよび電力消費量のオーバーヘッドを生じることなく、その変換を再使用できる。
外部命令に対する実行リクエストは外部命令ブロック内の最初の命令を除く他の命令にも可能であるが、メモリを節約するにはできるだけ少ないオーバーラップした変換を記憶することが大いに好ましいので、実行リクエストは内部命令ブロックからの最初の内部命令と共にスタートした実行コアへ供給された対応する内部命令ブロックからの内部命令と共に、外部命令ブロック内の最初の外部命令に対して行うべきである。
そのように作動しない実施例を製造することも可能であるが、内部命令ブロックは外部命令ブロックが指定した少なくとも機能を提供するという点で、内部命令ブロックはそれぞれ対応する外部命令ブロックに機能的に均等であることが大いに好ましい。
外部命令ブロックおよび/または内部命令ブロックが可変長であるときには、メモリ記憶リソースのフレキシビリティおよび効率的な使用を改善できる。
本発明は外部命令および内部命令の双方が外部のアクセス可能な命令セットの一部となっているシステムに特に適す。
外部命令ブロックを区切る好ましい方法は、外部命令ブロックをブランチ外部命令で終了させるようにすることである。このタイプの区切り方法は実際のプログラムの実行内のプログラムフローのジャンプに良好に適合する。
1つの外部命令ブロックを多数の内部命令フレームに変換する場合、好ましくは外部命令ブロックをブランチ外部命令で区切るときに、内部命令ブロックのすべてではない一部をブランチ命令により終了させることができるが、対応する内部命令ブロックをブランチ内部命令で終了させることも好ましい。内部命令ブロックは内部命令ブロックのすべてではない一部が1つのブランチで終了するような結果を生じさせる最大サイズを有することができる。
外部命令ブロックを内部命令ブロックに高速マッピングすることを容易にするために、リマッパー(remapper)は変換バッファ内の対応する内部命令ブロックのアドレスへの必要なマッピングおよびポインティングを識別するマッピングデータを記憶することが好ましい。
変換バッファを異なる部分に分割し、現在の部分内で自由スペースが利用できなくなるまで、新しく発生されたマッピングデータおよび変換された内部命令を書き込む、現在アクティブな部分としてのかかる1つの部分を使用することによって、変換専用のメモリリソースの管理を達成することが好ましく、自由スペースが利用できなくなったときに前に満たされた部分および関連するリマッパー部分をクリアし、新しく発生されたデータをその新しくクリアした部分に向ける。
使用すべきメモリリソースの異なる部分を選択するための好ましい技術は、ラウンドロビンアルゴリズムである。
変換バッファは、内部命令ブロックに関する別の情報、特にインターラプトおよび例外取り扱いなどを容易にするように特定の内部命令が外部命令の間の境界に対応するかどうかを特定する外部命令境界制御データを記憶できることが好ましい。パラレル実行、インターラプトを取り扱う際に有効な早期終了制御データ、処理をスピードアップするのに有効なブランチ予測データ、使用すべき予測される特定の次の内部命令ブロックをポイントする次のブロックデータ、および実行中のコードの統計分析をするために有効なコードプロフィル化データを制御するのに、命令相互依存制御データ(instruction inter dependence control data)を使用できる。内部命令ブロック内に外部命令アドレスを記憶できるが、このことは本質的なことではなく、これとは異なり、内部命令ブロック内において外部命令境界ビットが見られたときはいつも、カウンターをインクリメントすることによって実行時に外部PC値を再構成できる。
本発明の好ましい実施例では、検出された実行行動(execution behaviour)に応答して変換バッファ内に記憶されたデータを更新するようになっている更新機構を設けることによってシステム全体の性能を改善できる。従って、一旦変換をダイナミックに形成した後で観察された挙動に応じてブランチ予測などの情報を更新するフィードバック機構により変換を微調節できる。
変換バッファ内に記憶される命令変換は種々の方法で達成できる。例えば比較的簡単で妥当に密に近似した命令セットのコンテクストにおけるハードウェア変換器、または複雑であるが、あまり密に近似していない命令セットのためのソフトウェア制御により達成できる。
命令変換器は分解された内部命令、例えば分解されたメモリアドレス、インライン例外ハンドラー、モードトランジション、簡略化された計算(すなわちインライン値、PCのように内部命令内の中間オペランド)を発生するために、実行時間情報に応答可能であることが好ましい。
システム全体の性能、特にインターラプトなどを取り扱う能力は内部命令ブロックを配置でき、必要となった場合に高速使用できるように永久的に利用可能なようにロックダウン(lockdown)できるロックダウンエリア(lockdown area)を変換バッファ内に設けることによって改善できる。このロックダウン領域は可変長とすることができる。
変換が一旦なされた場合、この変換が変換バッファから追い出されると、この変換を少なくとも一時的にレスキューメモリ(rescue memory)にホールドすることによって使用できるようにしておくことが好ましいことも、本発明の好ましい実施例は認識している。レスキューメモリは変換バッファより低速でよいが、それにもかかわらず最初から変換を再実行しなければならない場合よりも高速かつ効率的である。更に、すぐに追い出され、かつ将来有効となると判断されたレスキューメモリ内にデータを適切な時期に移動することも可能である。
実行中のプログラムを内部命令ブロックに分割することによって、好ましいことにスペキュレーティブな実行(speculative execution)が容易となり、よってプログラムフローが実際に結果に達する場合に結果を短時間で利用できるようにあらかじめプログラムフロー内に識別された命令ブロックをスペキュレーティブに実行できる。
一例として1つ以上の外部命令ブロックをスペキュレーティブに取り出し、これをスペキュレーティブなスケジュールのための良好な候補として識別できる。その理由は、例えば実行中に多数のパイプラインの停止があり、前の実行中に例外条件が観察されなかった場合があるからである。次に(変換器/デコーダまたはその他のハードウェアもしくはソフトウェアを使って)これらブロックをスペキュレーティブな内部ブロックのセットに変換できる。スペキュレーティブなブロックを実行中に誤ったスペキュレーションが検出された場合、このスペキュレーティブなステートを非スペキュレーティブなステートに一致するよう、恐らくは非スペキュレーティブな順序で命令を再実行しなければならなくなるまで固定する。内部命令ブロックのスペキュレーティブな実行は外部PC値を当初知る事なく、ある状況で実行できることが好ましい。
好ましい実施例では、例外(exceptions)に対する特別な工夫をすることができる。例外はプログラム内で統計的にコード化されていないブランチと見なすことができる。例外を取り扱う1つの方法は、例外ハンドラーの変換を行い(既に変換されているかも知れない)、これを実行し、次に例外を生じさせた命令から次のブランチ命令へ新しいブロックを再変換し、実行を再開することである。このことは、変換バッファ内で余分なダブリ(duplication:デュプリケーション)を生じさせやすい。再変換を防止するために、好ましい実施例は例外を取り込んだ内部PCを特定するリターンアドレススタックにあるビットを追加し、次にマイクロアーキテクチャが内部ブロックの中間で実行を再開できるようにしている。内部および外部PCのマイクロアーキテクチャ上の詳細は、必ずしもアーキテクチャに暴露されないことが重要である。リターンポインタが必ずしもリターンアドレススタックの拡張ではない。
上記検討事項はインターラプト(interrupts:割り込み)にも適用できる。内部ブロックの中間において、インターラプトを取り扱うために、システムはインターラプトが生じたブロックの再変換を防止するために上記のことを行うことができる。
好ましい別の事項は、あるエクストラ基準に基づいてリマッパー(および関連する変換バッファ部分)内の異なる部分にブロックを挿入できることである。例えばある特定のレンジ、別のコードに対するノックダウンコードに対するエントリーポイント、別の変換などにおける必要とされる可能性が低い変換(例えばインターラプトおよび例外再エントリーブロック)にカーネルコードを挿入してもよい。
ロックダウンに対し、リマッパーにおける不要なルックアップを解消するためにリンカー/ローダーにより類似するソフトウェアの一部を使用することによって別の予備処理工程をロックダウンすべきコードが通過できる。この技術は、コード全体のイメージが変換バッファ内に挿入される前にコードイメージ全体にアクセスし、次に変換バッファメモリのスペース内に直接プログラムをリロケートできる能力を有することによって働くことができる。ターゲットはノックダウンされたコード内にあるブランチを特別な内部ブランチ命令に向けることができ、このブランチ命令はリマッパー内のルックアップを通過することなく、変換バッファ内のあるロケーションに直接分岐する。このように、リマッパー内のノックダウンされた領域に対する外部エントリーポイントを記憶させるだけでよい(すなわち外部アドレスから内部アドレスへのインターラプトベクトルのマッピングをするだけでよい)。これによってノックダウンがよりフレキシブルかつより決定的となる。このことは、インターラプトを高速で取り扱いできるようにする上で重要である。
好ましい別の特徴は所定のモードにおいてコアがシステム内の他のメモリと同じようにコアが物理メモリをアドレス指定できるよう、変換バッファを物理メモリの領域にマッピングできるということである。このことは、例えばリマッパーを通過することなくインターラプトハンドラーを直接アドレス指定できる上記状況で有効である。更にデータを変換バッファにいれる方法を必要とするソフトウェア変換器にとってもこのことは有効である。
別の好ましい特徴により、キャッシュ固有の変換動作(リマッパーのテスト、入力の管理など)を行うリマッパーおよびその他をバイパスする特殊な内部ブランチ命令が提供される。これら命令はシステムの特権モードでしか使用できない。
別の側面から見れば、本発明は、
1つ以上の内部命令の複数の内部命令ブロックを変換バッファ内に記憶する工程を備え、前記内部命令ブロックが1つ以上の外部命令のそれぞれの外部命令ブロックのダイナミック変換であり、
更に前記外部命令ブロックのうちの1つの外部にある外部命令に対する実行リクエストに応答し、前記変換バッファ内に記憶された対応する内部命令ブロックを識別する工程と、
前記対応する内部命令ブロックから内部命令を実行するようになっている実行コアへ1つ以上の内部命令を供給する工程とを備えた、データを処理する方法を提供するものである。
命令のプリフェッチに応答して変換を適当に時期に実行できる。
次に添付図面を参照して単なる例により本発明の実施例について説明する。
ARMアーキテクチャは現在3つの外部命令セット、すなわちARM、ThumbおよびJava(登録商標)をサポートしている。しかしながら、命令セットが多数となることによってデコーダが更に複雑となり、これによってプロセッサの性能および電力消費量に悪影響が及び得る。この問題に対処する1つの方法は、変換キャッシュを使ってデコードコストを低減することである。
変換キャッシュはその名称が意味するように必ずしもオリジナルの命令ではない変換をキャッシングする。キャッシュの不一致(cache miss)があると、外部命令の1つの基本ブロックがメモリシステムからフェッチされ、それらの命令がコアの内部(ネイティブ)命令セットに変換される。外部から見える基本ブロックにおける命令の数は内部の表示と同じである必要がなく、これによってハードウェア内で直接どの命令がサポートされているかを判断するのにマイクロアーキテクチャの実現例にフレキシビリティが与えられている。更に、内部命令のレイアウトはパイプライン内で容易にデコードできるようになっており、実現を助けるための追加情報も含むことができる。例えば変換器は2つの隣接する命令は独立しているか否かを理解し、変換キャッシュ内に独立しているか否かをこれら命令にマークすることができる。これら命令が発生されると、コアは候補命令のレジスタ比較を行う代わりに、この命令に対する独立ビットを見るだけでよい。この変換と共に別の情報、例えば外部命令境界、早期終了の許容性なども記憶できる。
図1は変換キャッシュの抽象的なアーキテクチャを示す。そのアーキテクチャの5つのメイン構成部は、変換器、変換バッファ、リマッパー、フェッチユニットおよび更新器である。変換器が外部命令を内部表示に変換し、変換バッファに記憶のフレームを割り当てる。この変換器は基本ブロックのアドレスとその変換のスタートアドレスとの間のマッピングをリマッパーに入力することも行う。変換器のための演算のユニットは基本ブロックであり、この基本ブロックは内部命令の1つ以上の可変サイズのフレームに変換する。変換されたコードの他に、特に1つのフレームはブランチ予測および統計情報(この情報は実行時にダイナミックに更新できる)を含むことができる。本実施例における変換バッファは変換されたフレームを記憶するオンチップの大きいメモリアレイとなっている。この変換バッファは実現に応じて外部メモリのより大きい部分をキャッシングするキャッシュとして実現できる。しかしながら、現在好ましい実現例は独立したオンチップメモリである。フェッチバッファは変換機構と実行コアとの間の「接着剤」である。実行中、フェッチバッファはコアにシーケンシャルな命令をストレートフォワードに供給できるよう、現在実行中のフレームのコピーを維持する。ブランチ命令に遭遇すると、フェッチユニットはそのアドレスをリマッパーに転送する。ターゲットアドレスのマッピングがある場合、変換バッファから直接新しいフレームをロードできるが、そうでない場合、新しいフレームを発生するのにまず変換器を呼び出さなければならない。フェッチユニットの複雑さに応じ、フェッチユニットは変換コストを低減し、ブランチのペナルティを削減するために種々のブランチプリディクタおよびプリフェッチ機能も含むことができる。実行パイプラインの終端には更新器が設けられ、この更新器の主要なタスクは実行を終了した最終フレームに関連する情報(例えばブランチ予測情報)を更新することである。次の章では変換キャッシュの構造に関する設計上の妥協について探る。
変換バッファに関して2つのキーとなる問題がある。1つは変換を見つける方法であり、1つは新しい変換に対してどれだけスペースを再使用するかということである。これら双方の問題はリマッパーを使用し、組織化することによって解決できる。外部アドレスに基づいて次のフレームの(変換バッファ内の)インデックスを探すために、各フレームの実行終了時にリマッパーにアクセスする。図2は2つの元の基本ブロック(BB1とBB2)との間、およびそれらの対応する変換されたフレーム(XBB1とXBB2)との間の制御のフローを示す。一般的なケースでは、変換器はブランチの宛て先アドレスがマップするのはどのフレームであるかをスタティックに判断できないので、リマッパー内で変換アドレスをルックアップしなければならない。このことは次のことを意味する。
・リマッパーのサイズおよび関連性(associativity)は、変換バッファ内で存在できる(すなわちアクセスできる)フレームの数に対する上限を定めること。
・リマッパー内での競合する不一致(conflict misses)に起因し、有効な変換がアクセスできない状態となり得ること。
・フレームを無効にするにはリマッパー内の対応するエントリーを除かなければならない。概念的には、これを行うには変換インデックスからブロックの外部アドレスへの逆マッピングを行わなければならない。
別の関連する問題は、ブランチ命令の存在により命令ストリーム内に基本ブロックの端部を明瞭にマークするが、基本ブロックの入力ポイントは明示的ではないということである。ブランチはISA内には明示的にマークされない連続する命令のセットの終端に1つのターゲットを有し得る。このことは、外部命令ストリームを内部命令ストリームに変換した場合、既に一部が変換済みの新しいブロックに遭遇したときにある種のダブリが生じることを意味する。ダブリを低減する次のような2つの基本的な方法がある。
変換プロセス中、各命令に対し、その命令が既にリマッパーにマッピングされたかどうかをチェックし、一致がある場合、フレームを終了する。この技術は変換器によってまずより大きいブロックのうちのより小さいサブセットに遭遇した場合、ダブリを回避できるが、最初により大きいブロックを実行した場合、ダブリを防止できない。
・変換バッファにおいて、外部基本ブロックのエンドアドレスからそのインデックスへのマッピングを維持すること。この構造はリマッパーに類似するが、開始点ではなく、基本ブロックの終了点によってインデクシングされる。変換バッファ内に新しいフレームを入れる前に、同じ終了ポイントを有する変換があるかどうかを見るように、この構造をチェックする。変換が存在する場合、新しい変換と旧い変換のオーバーラップを適切に調和させ、対応する構造内で更新しなければならない。
ダブリを低減する複数の方法が存在するが、解決を必要とする問題は明らかでない。ブロック内の命令を多くすることは性能にとって有利である。その理由は、命令を多くすることによりブランチ間でのシーケンシャルな命令の数が増加するからである。更に、ダブリを検出するコストは潜在的なスペースの節約よりも大きくなり得る。
バッファを再使用するための簡単なポリシーは、バッファ内にそれ以上のスペースが残されていない場合、リマッパーをクリアにし、すべての変換を除くことである。変換バッファ内に挿入できるフレームの数、それらの平均サイズおよび変換バッファをアドレス指定するのに必要なビット数を検討することにより、リマッパーのサイズを選択する。一例として、変換が外部プログラムと同じ数の命令を含み、基本ブロック内に平均して約4つの命令があり、16ビット未満で変換バッファをアドレス指定できると仮定できる。このことは32Kの変換バッファに対しては4Kのリマッパーサイズに変換される2048個のインデックスエントリーが必要となることを意味する。
リマッパーを通してアクセスできない割り当てスペースの一部が変換バッファ内に存在することになる。このような状況はリマッパー内の競合不一致(conflict miss)の結果として生じる。この問題を取り扱う基本的な方法は、関連性を増すことである。リマッパーは少なくとも4方向に関連している必要があるが、もっと関連性を高めれば確実に報われる。
1つのブロックに多数の入力ポイントがある結果、バイトの一部は何回も変換されることになる。変換バッファにおける多数の変換はスペースをむだにするが、ダブリを低減するのに必要な機構も(メモリおよび制御の複雑さの双方の点で)コストがかかる。例えば、上記のように関連するフレーム変換バッフサイズに対するブロック終了アドレスのマッピングを維持することにより、ダブリを検出できる。ダブリは約5%にしか占めないので、この解決方法はスペース的に有効ではない。有効なバッファ利用が重要であるケースではダブリを低減するのにリマッパーによりアドレスがマッピングされない命令を変えるだけの、より簡単な技術を使用できる。しかしながら、変換の複雑性が増すだけでなく、リマッパーのアクセスがより頻繁となることによって、変換時間に悪影響が及び得る。
変換バッファが満杯になった後で変換バッファ全体をクリアする簡単な技術を使用できる。この技術は準最適な方法であるが、比較的小さい作業負荷および変換バッファサイズに対して良好に働き、変換バッファ内のデータとリマッパー内の対応するエントリーの同期化を簡略にできる。この技術を改良するための主な問題は、変換バッファからあるレンジのフレームを追い出するときはいつも、リマッパーから対応するエントリーを除去しなければならないということである。これを達成するストレートフォワードな方法は、追い出しの前にフレームのすべてをザッと読み(walking through)、これらをリマッパー内でルックアップし、次にそのエントリーを無効にすることである。更に変換バッファ内に新しいフレームを割り当てできるようにするには、現在のスペースを逆フラグメント化(defragmented)しなければならない。この方法はシーケンシャルな、比較的低速のプロセスであり、よって不一致のペナルティ(miss penalty)を大幅に増加し得る。
図3は、より高速でより簡単なスペースの再使用を容易にするセグメント化されたリマッパーを示す。この変換バッファはセグメントに分割されており、割り当てられ、自由にされた対応するセグメントはリマッパーに存在する。フレームインデックスが所定のウォーターマークより低くなっている限り、割り当てインデックスと称されるリマッパーセグメントにフレームが挿入される。フレームのインデックスがスレッショルドを越えた場合、割り当ては新しいリマッパーセグメントに移動する。このセグメントが既に有効なマッピングを含んでいる場合、まずそのセグメントはクリアにされる。リマッパーセグメント内のすべてのラインを同時に無効化することによってクリアリングが迅速に達成され、ウォーターマークは変換バッファ内の次のバッファレンジの終了点にセットされる。再使用するためにアクティブなリマッパーアドレスの最小の作業セット(smallert working set of active remapper addresses)を有するリマッパーセグメントを選択することが好ましい。しかしながら、実際にはラウンドロビン再使用ポリシーが極めて良好に働き、このポリシーは簡単な実現の追加利益を有する。一度に1つのセグメントに複数の新しいマッピングが割り当てられる間、すべてのセグメントにおいてパラレルにアドレスがルックアップされる。しかしながら、割り当てポリシーに起因し、データを含むのにせいぜい1つのセグメントが保証される。
セグメント化されたリマッパーはバッファの再利用を簡略にするが、これに関連した別のコストも生じる。単一の大きいキャッシュから多数の小さいキャッシュを作成することにより、タグ記憶のサイズが大きくなり、個々のセグメント内の競合の不一致も増加し得る。実験によれば、小さいベンチマークでも有効な廃棄される変換の数が少なくなる結果生じる小さいメモリトラヒックにおいて、セグメント化の利点が明らかとなることが証明された。他方、個々のセグメント内での別の競合の結果、メモリトラヒックが増加し得る。この問題はリマッパーにおける関連性、すなわちセグメントの数を多くすることによって軽減できる。より多数のセグメントを用いた場合、同じ数のエントリーはバッファ内のより小さいレンジのためのマッピングを維持する責任があるので、このように働く。セグメントの数を増やすことは各セグメント内の関連性の度合いを増すことの別の方法として有効である。
変換キャッシュの別の利点はデコードのコストを低減し得ることである。しかしながら、キャッシュ内で変換をルックアップするオーバーヘッドがかなり長くされた場合、この利点は相殺される。オーバーヘッドの基本要素はブランチに遭遇する度にリマッパーを通して余分なアクセスをすることである。概念的には各ブランチに対して次のステップをとる必要がある。
・ブランチターゲットアドレスを計算すること。
・ブランチターゲットの仮想−物理アドレスマッピングをすること(TLBルックアップ)。
・キャッシュ内の変換されたフレームを探すためにリマッパーをルックアップすること。
・変換キャッシュのアクセスをすること。
・フレームアライメントをすること。
保守的なデザインによってこれらステップに対するサイクルを2〜3サイクルにすることができるが、各ブランチ命令においてこのオーバーヘッドを負うことはプロセッサの性能を深刻に限定することになる。この問題を取り扱う基本的な方法は、フレームをスペキュレーティブにプリフェッチし、リマップされたフレームインデックスをキャッシングすることにより、フレームルックアップのコストを削減することである。
コアはプログラムの元のロケーションではない変換バッファと別のロケーションからの命令を実行するので、プログラムカウンター(PC)の役割を明瞭にしなければならない。概念的には元のプログラムをシーケンス通過するPCの他に、変換された命令をシーケンス通過する、必ずしもアーキテクチャ上見ることができない内部PCを設ける必要性がある。例外およびブランチセマンティックが正しく作動するために、これら2つのプログラムカウンターの同期状態を維持しなければならない。これを達成する1つの方法は、内部命令が外部命令の境界であるか否かを指定する内部命令によって1ビットの情報を維持することである。外部命令境界ビットがセットされた内部命令を実行するときはいつも、外部PCをインクリメントする。
図4はフェッチユニットおよびプロセッサの他の部分との相互作用の一例を示すより詳細な図である。小さいバッファ内に現在実行中のフレームが維持され、この小さいバッファから命令シーケンサが実行コアに個々の命令(または命令のグループ)を送る。実行と平行してブランチ予測器はスペキュレーティブにフレームをプリフェッチバッファへプリフェッチし、これらフレームを必要に応じて現在実行中のスロットへプロモートする。
変換キャッシュの重要な側面は、各基本ブロックに情報をユニークに関連付けできることである。プリフェッチユニットがこの記憶装置を活用できる1つの方法は、フレームヘッダー(ブランチターゲット)内にブランチ予測情報(2ビットカウンターおよび/または履歴情報)および次の基本インデックスを維持し、よって予測に使用されるデータ間のエリアシングを除くことである。前者の技術は予測の間のエリアシングを低減できるが、後者の方法はリマッパーにアクセスしなければならない回数を低減できる。ブランチ予測のために1または2ビットのステートを使用する簡単なブランチ予測方法を、予測された次のフレームのキャッシュされたインデックスだけでなく、最後の誤って予測されたフレームのインデックスと共に使用できる。このフレームでは2つのフレームのうちのどちらを次に実行するかを1ビットのステートが選択し、2つのフレーム間で予測をいつ切り換えなければならないかを管理するのに第2のビットが使用される。この方法によって使用されるステート量はヘッダー内に予測されたフレームインデックスだけを維持し、リマッパーのルックアップにより誤った予測のレイテンシーを増すことによって縮小できる。1つのフレームが一旦フェッチされると、即座に次のフレームへのプリフェッチを開始できる。その理由は、フレームが実行をスタートした直後に次のフレームの予測が分かっているからである。テストにおいて、デュアル発行プロセッサにおいても各フレームにおける平均命令数はパイプラインを停止することなくプリフェッチを完了させるのに2〜3サイクルの回数でも可能であるように選択される。
内部のISAと外部から見えるISAとは異なっていることがあるので、例外が生じたときはいつも一貫したマシンステートを露出するように注意を払わなければならない。このことは、単一の外部命令を多数の内部命令にマッピングした場合、外部命令の境界でしか例外を取り扱わなければならないことを意味する。この問題に対する1つの解決案は外部命令境界をマークする命令ごとに変換キャッシュ内に追加ビットを維持することである。必要とされる追加ビットはフレームヘッダー内に記憶してもよいし、または変換バッファの各ワード上のタグとして記憶してもよい。
例外とインターラプトとの重要な差は、例外は内部で発生するが、インターラプトは外部ソースによって発生されるということである。例外を取り扱うために実行を最後の外部命令境界までロールバックしなければならないが、他方、現在の命令が実行を終了した後にインターラプトを取り扱ってもよい。良好なインターラプトレイテンシーを保存するためには、このことは外部命令と内部命令との変換を1:1に近いものにしなければならないことを意味する。あるクラスの長いレイテンシーでかつ再スタート可能な命令を、大きい命令を容易にするように定義できる。しかしながら、第2のケースでも前方への進行を保証できることが重要である。
変換キャッシュに対する別の問題は、インターラプトまたは例外ハンドラーの後で実行をどのように再開するかということである。この問題はすべての例外に対して条件を課すことができないフレーム境界でしか通常制御フローが変化しないということである。例外のリターンを取り扱う簡単な方法は、新しいエントリーポイントを作成し、そのアドレスでスタートする新しいフレームを発生させることである。しかしながら、この方法は変換バッファにおけるむだとなるスペース量を大幅に増加させ得る。その理由は、新しいエントリーポイントに再びアクセスされることはありそうにないことであるからである(インターラプトはPCに関して外部からの基本的にランダムな事象であるからである)。良好な方法はフレーム内の任意の命令において実行を再開できる追加情報により、ブランチ予測器のリターンアドレススタックを強化することである。プロセッサはリターンアドレススタックに不一致が生じた場合に、フル変換を使用できる。
変換キャッシュの主要な使用モードは外部基本ブロックの連続命令を変換されたフレーム内の連続命令の対応するセットにリマップすることである。正確な例外セマンティックを保存し、単一ステップのデバッギングを容易にするために、命令の内部順序と外部順序とは同一でなければならない。変換器の基本的なタスクは命令をリマップし、かつデコードを簡略にすることである(ダイナミックなスケジュールを実行するための提案が下記に述べられている)。変換器のための重要な条件の1つは、変換された命令の間の中間値を保持するために数個の追加スクラッチレジスタを利用できることである。外部命令が多数の内部命令にマッピングされるとき、変換される命令間の通信が部分的な結果によりアーキテクチャステートを汚染してはならない。例外に遭遇した場合に、一環したステートにロールバックするための方法が存在しなければならない。
変換キャッシュはデコードされた命令キャッシュとしても働き得る。このことによってクリティカルパス上のデコーダのタスクを簡略化するように、追加ビット情報を維持できる。例えばビットフィールドの順序およびそれらの意味を内部で変えてもよいし、または実行パイプライン内でレジスタの比較が生じなくてもよいように、連続する命令間の独立性を明示的にマークできる。
変換およびデコード演算のほとんどはハードウェアで実現される変換ユニットによって処理されるが、ソフトウェアでも複雑なデコードを行うことができる。複雑な命令に遭遇した際に変換ユニットはコア上で変換−例外ハンドラーの呼び出しを生じさせる例外を生じさせることができる。スペキュレーティブに変換がフェッチされない場合、または例外パイプラインが不調である場合、変換器と同時にコアパイプライン内で実行されるものは何もないはずである。Java(登録商標)変換はソフトウェアで取り扱うための主な候補である。
変換キャッシュの性能は外部命令セットと内部命令セットとがセマンティックにどれだけ近似しているかに大きく依存している。しかしながら、内部命令は外部から利用できるものよりもより大きいレジスタスペースをアドレス指定できなければならず、作動モードの変化を解消する防止する必要がある。
ほとんどの基本ブロックに対し、わずかな簡単な変更をもって外部命令と内部命令との間に1:1の対応性があるが、順序内のコアは順序外の実行の利点を活用できる。このアイデアは次のとおりである。
・マイクロアーキテクチャが実行をモニタし、関連したパイプラインストールの重要な部分を有するフレームをマークする。
・問題のフレームが確率の高い特定の別のフレームの実行をフォローし、実行中に例外が生じる可能性が低い場合、トレーススケジューリングのためにマークされたフレームのセットを選択する。
・実行と同時に変換ユニット内でリスケジューリングを行う。
・一旦スペキュレーティブなフレームが発生されると、先行するフレームの予測されたターゲットアドレスとして新しいフレームのアドレスを挿入する。
・ミススペキュレーションを例外のように取り扱う:スペキュレーティブなステートをブローして除去し、最後の既知の良好な非スペキュレーティブステートから実行を再スタートする。
スペキュレーティブなレジスタの書き込みは別個のレジスタレンジ内で取り扱われるので、ミススペキュレーション後、アーキテクトされたレジスタステートをリカバーすることは容易である。しかしながら、スペキュレーティブなメモリアクセスのための別個のメモリエリアはないので、スペキュレーティブなメモリの書き込みが物理メモリに達しないように注意を払わなければならない。このことは非スペキュレーティブモードでメインメモリにデータを書き込むだけの負荷記憶キューを使用することによって達成できる。
高速で、かつ一貫した実行が必要とされるコード、例えばOSカーネル、インターラプト/例外ハンドラーなどのために、変換のロックダウンエリアを使用することもできる。
再び必要とされる可能性が高いと判断された変換(すなわちこれら変換は頻繁に実行される)を主変換バッファから追い出す前に転送し得る先のレスキューメモリを設けることができる。
変換器はメモリアドレスを分割し、例外ハンドラーをインライン(inline)化し、モードトランジションを除き、それ以外の方法で実行時間情報に基づいて計算を簡略化するように変換をあらかじめ処理するようにもできる。
変換システム管理に対して特権モード命令、例えばリマッパーバイパスブランチ命令およびリマッパー管理命令を設けてもよい。
変換キャッシュアーキテクチャの高レベルの図を略図で示す。 プログラム実行内での制御フローに影響を与えるリマッパーの役割を略図で示す。 リマッパー内のセグメント化された記憶装置を略図で示す。 上記図を参照して説明した変換キャシュを使用するプロセッサ内のフェッチユニットを略図で示す。

Claims (68)

  1. 内部命令を実行するようになっている実行コアと、
    1つ以上の内部命令のうちの複数の内部命令ブロックを記憶するようになっている変換バッファとを備え、前記内部命令ブロックが1つ以上の外部命令のうちのそれぞれの外部命令ブロックのダイナミックな変換であり、
    対応する内部命令ブロックからの1つ以上の内部命令を前記実行コアに供給できるよう、前記変換バッファ内に記憶された前記対応する内部命令ブロックを識別するための前記外部命令ブロックのうちの1つのうちにある、外部命令のための実行リクエストに応答するリマッパーを備えた、データを処理するための装置。
  2. 前記実行リクエストが外部命令ブロック内の第1外部命令に対するものであり、前記対応する内部命令ブロックからの第1内部命令によってスタートする前記実行コアに前記対応する内部命令ブロックからの内部命令が供給される、請求項1記載の装置。
  3. 内部命令ブロックがそれぞれの対応する外部命令ブロックに機能的に等価的である、請求項1および2のいずれかに記載の装置。
  4. 前記外部命令ブロックが可変長である、請求項1、2および3のいずれかに記載の装置。
  5. 前記内部命令ブロックが可変長である、前の請求項のいずれかに記載の装置。
  6. 前記内部命令が外部からアクセスできる命令セットの一部である、前の請求項のいずれかに記載の装置。
  7. 外部命令ブロックがブランチ外部命令によって終了される、前の請求項のいずれかに記載の装置。
  8. 内部命令ブロックがブランチ内部命令によって終了される、前の請求項のいずれかに記載の装置。
  9. 前記リマッパーが前記変換バッファ内の外部命令ブロックのアドレスと対応する内部命令ブロックのアドレスとの間のマッピングを識別するマッピングデータを記憶する、前の請求項のいずれかに記載の装置。
  10. 前記リマッパー内のリマッパーメモリ内に前記マッピングデータが記憶される、請求項9記載の装置。
  11. 前記リマッパーメモリが複数のリマッパーメモリ部分に分割されており、各リマッパーメモリ部分が前記変換バッファ内のそれぞれの変換バッファ部分に関連しており、前記関連する変換バッファ部分が新しく発生したマッピングデータを取り込むための自由スペースを有しなくなるまで、前記リマッパーメモリ部分の1つが新しく発生されたマッピングデータを受けるように働き、前記関連した変換バッファが新しく発生されたマッピングデータを取り込むための自由スペースを有しなくなると、前記リマッパーメモリ部分の別の部分が選択され、クリアされ、その内部に記憶された新しく発生されたマッピングデータが記憶されると共に新しく発生された内部命令ブロックが関連する変換バッファ部分に記憶されるよう前記リマッパーが作動できる、請求項10記載の装置。
  12. 前記リマッパーメモリ部分の前記別の部分がラウンドロビンアルゴリズムを使って選択される、請求項11記載の装置。
  13. 前記内部命令が外部命令間の境界に対応するかどうかを特定する内部命令ブロック内の各内部命令に対する外部命令境界制御データも前記変換バッファが記憶する、前の請求項のいずれかに記載の装置。
  14. 前記内部命令ブロック内の先行する命令に依存することなく前記内部命令を実行してよいかどうか、を特定する内部命令ブロック内の各内部命令に対する命令非依存制御データ(instruction independence control data)も前記変換バッファが記憶する、前の請求項のいずれかに記載の装置。
  15. システムステートを破壊することなく、完了前に前記内部命令を終了してよいかどうかを指定する内部命令ブロック内の各内部命令に対する早期終了制御データも前記変換バッファが記憶する、前の請求項のいずれかに記載の装置。
  16. 前記内部命令ブロックの実行完了時に取り込むべき、予測されたブランチターゲットを指定する各内部命令ブロックに対するブランチ予測データも前記変換バッファが記憶する、前の請求項のいずれかに記載の装置。
  17. 実行すべき予測された次の内部命令ブロックの前記変換バッファ内でのロケーションを指定する、各内部命令ブロックに対する次のブロックデータも、前記変換バッファが記憶する、前の請求項のいずれかに記載の装置。
  18. 前記内部命令ブロックの実行に関する統計を指定する各内部命令ブロックに対するコードプロフィル化データも前記変換バッファが記憶する、前の請求項のいずれかに記載の装置。
  19. 検出された実行行動に応答して記憶された内部命令ブロックに関する前記変換バッファ内に記憶されたデータを更新するようになっている更新器を含む、請求項16、17および18のいずれかに記載の装置。
  20. 外部命令ブロックを内部命令ブロックに変換するようになっている命令変換器を含む、前の請求項のいずれかに記載の装置。
  21. 前記命令変換器が、
    ハードウェアに基づく命令変換器および
    ソフトウェアに基づく命令変換器のうちの1つである、請求項20記載の装置。
  22. ロックダウン記憶装置内に内部命令ブロックを配置できるロックダウン領域を前記変換バッファが含む、前の請求項のいずれかに記載の装置。
  23. 前記変換バッファ内に予め記憶された内部命令ブロックが少なくとも一時的に記憶されるレスキューメモリであって、前記変換バッファ内の前記内部命令ブロックを求めているときに不一致が生じた場合、前記内部命令ブロックをアクセスのために利用できる前記レスキューメモリを含む、前の請求項のいずれかに記載の装置。
  24. 少なくともいくつかの内部命令または内部命令ブロックがプログラム実行フロー内のそれらの位置に先んじてスペキュレーティブに実行される、前の請求項のいずれかに記載の装置。
  25. 外部命令ブロックを内部命令ブロックに変換するときの、前記外部命令ブロックに関して利用できる実行時間命令に前記命令変換器が応答する、請求項20および21のいずれかに記載の装置。
  26. 前記命令変換器が、
    メモリアドレスを決定すること、
    インライン例外ハンドラーを決定すること、
    モード変化を除くこと、および
    実行時間において一定またはほぼ一定の情報に依存する計算を簡略化することのうちの1つ以上を行うように作動できる、請求項25記載の装置。
  27. 内部命令ブロックのうちの内部命令の実行中に例外が発生した時、例外取り扱い命令の実行と例外が生じたポイントにおける前記内部命令ブロックの実行の再開を可能とするための例外リターンポインタの記憶とをトリガーするように作動できる例外ハンドラーを含む、前の請求項のいずれかに記載の装置。
  28. 内部命令ブロックのうちの内部命令の実行中にインターラプトが発生した時、インターラプト取り扱い命令の実行と前記例外が生じたポイントにおける前記内部命令ブロックの実行の再開を可能とするためのインターラプトリターンポインタの記憶とをトリガーするように作動できるインターラプトハンドラーを含む、前の請求項のいずれかに記載の装置。
  29. 前記リマッパーおよび変換バッファが外部命令ブロックの異なるタイプに対応する内部命令ブロックを記憶するように割り当てられた複数の部分を有する、前の請求項のいずれかに記載の装置。
  30. 前記リマッパーメモリが外部命令ブロックの異なるタイプに対応するマッピングデータを記憶するように割り当てられた複数の部分を有する、請求項10記載の装置。
  31. ロックダウン記憶装置内に配置された内部命令ブロックが前記リマッパーにおけるルックアップを低減するようにあらかじめ処理される、請求項22記載の装置。
  32. 前記変換バッファがプログラム制御によりアクセスできる物理メモリのエリアにアドレスマッピングされる、前の請求項のいずれかに記載の装置。
  33. リマッパーバイパスブランチ内部命令が前記リマッパーの動作をバイパスするブランチ動作を実行するようになっている、前の請求項のいずれかに記載の装置。
  34. 1つ以上のリマッパー管理内部メモリが前記リマッパーでの管理動作を実行するようになっている、前の請求項のいずれかに記載の装置。
  35. 1つ以上の内部命令の複数の内部命令ブロックを変換バッファ内に記憶する工程を備え、前記内部命令ブロックが1つ以上の外部命令のそれぞれの外部命令ブロックのダイナミック変換であり、
    更に前記外部命令ブロックのうちの1つの外部にある外部命令に対する実行リクエストに応答し、前記変換バッファ内に記憶された対応する内部命令ブロックを識別する工程と、
    前記対応する内部命令ブロックから内部命令を実行するようになっている実行コアへ1つ以上の内部命令を供給する工程とを備えた、データを処理する方法。
  36. 前記実行リクエストが外部命令ブロック内の第1外部命令に対するものであり、前記対応する内部命令ブロックからの第1内部命令によってスタートする前記実行コアに前記対応する内部命令ブロックからの内部命令が供給される、請求項35記載の方法。
  37. 内部命令ブロックがそれぞれの対応する外部命令ブロックに機能的に等価的である、請求項35および36のいずれかに記載の方法。
  38. 前記外部命令ブロックが可変長である、請求項35、36および37のいずれかに記載の方法。
  39. 前記内部命令ブロックが可変長である、請求項35〜38のいずれかに記載の方法。
  40. 前記内部命令が外部からアクセスできる命令セットの一部である、請求項35〜39のいずれかに記載の方法。
  41. 外部命令ブロックがブランチ外部命令によって終了される、請求項35〜40のいずれかに記載の方法。
  42. 内部命令ブロックがブランチ内部命令によって終了される、請求項35〜41のいずれかに記載の方法。
  43. 前記変換バッファ内の外部命令ブロックのアドレスと対応する内部命令ブロックのアドレスとの間のマッピングを識別するマッピングデータを記憶する工程を備えた、請求項35〜42のいずれかに記載の方法。
  44. リマッパーメモリ内に前記マッピングデータが記憶される、請求項43記載の方法。
  45. 前記リマッパーメモリが複数のリマッパーメモリ部分に分割されており、各リマッパーメモリ部分が前記変換バッファ内のそれぞれの変換バッファ部分に関連しており、前記関連する変換バッファ部分が新しく発生したマッピングデータを取り込むための自由スペースを有しなくなるまで、前記リマッパーメモリ部分の1つが新しく発生されたマッピングデータを受けるように働き、前記関連した変換バッファが新しく発生されたマッピングデータを取り込むための自由スペースを有しなくなると、前記リマッパーメモリ部分の別の部分が選択され、クリアされ、その内部に新しく発生されたマッピングデータが記憶されると共に新しく発生された内部命令ブロックが関連する変換バッファ部分に記憶される、請求項44記載の方法。
  46. 前記リマッパーメモリ部分の前記別の部分がラウンドロビンアルゴリズムを使って選択される、請求項45記載の方法。
  47. 前記内部命令が外部命令間の境界に対応するかどうかを特定する内部命令ブロック内の各内部命令に対する外部命令境界制御データも前記変換バッファが記憶する、請求項35〜46のいずれかに記載の方法。
  48. 前記内部命令ブロック内の先行する命令に依存することなく前記内部命令を実行してよいかどうかを特定する内部命令ブロック内の各内部命令に対する命令非依存制御データも前記変換バッファが記憶する、請求項35〜47のいずれかに記載の方法。
  49. システムステートを破壊することなく、完了前に前記内部命令を終了してよいかどうかを指定する内部命令ブロック内の各内部命令に対する早期終了制御データも前記変換バッファが記憶する、請求項35〜48のいずれかに記載の方法。
  50. 前記内部命令ブロックの実行完了時に取り込むべき、予測されたブランチターゲットを指定する各内部命令ブロックに対するブランチ予測データも前記変換バッファが記憶する、請求項35〜49のいずれかに記載の方法。
  51. 実行すべき予測された次の内部命令ブロックの前記変換バッファ内でのロケーションを指定する、各内部命令ブロックに対する次のブロックデータも、前記変換バッファが記憶する、請求項35〜50のいずれかに記載の方法。
  52. 前記内部命令ブロックの実行に関する統計を指定する各内部命令ブロックに対するコードプロフィル化データも前記変換バッファが記憶する、請求項35〜51のいずれかに記載の方法。
  53. 検出された実行行動に応答して、記憶された内部命令ブロックに関する前記変換バッファ内に記憶されたデータを更新することを含む、請求項50、51および52のいずれかに記載の方法。
  54. 外部命令ブロックを内部命令ブロックに変換することを含む、請求項35〜53のいずれかに記載の方法。
  55. 前記変換が、
    ハードウェアに基づく命令変換器および
    ソフトウェアに基づく命令変換器のうちの1つによって実行される、請求項54記載の方法。
  56. ロックダウン記憶装置内に内部命令ブロックを配置できるロックダウン領域を前記変換バッファが含む、請求項35〜55のいずれかに記載の方法。
  57. 前記変換バッファ内に予め記憶された内部命令ブロックが少なくとも一時的にレスキューメモリに記憶され、前記変換バッファ内の前記内部命令ブロックを求めているときに不一致が生じた場合、前記レスキューメモリがアクセスのために利用できる、請求項35〜56のいずれかに記載の方法。
  58. 少なくともいくつかの内部命令または内部命令ブロックがプログラム実行フローと異なる順序でスペキュレーティブにスケジューリングされる、請求項35〜57のいずれかに記載の方法。
  59. 外部命令ブロックを内部命令ブロックに変換するときの、前記外部命令ブロックに関して利用できる実行時間情報に前記変換が応答する、請求項35〜58のいずれかに記載の方法。
  60. 前記変換が、
    メモリアドレスを決定すること、
    インライン例外ハンドラーを決定すること、
    モード変化を除くこと、および
    実行時間において利用できる情報に依存する計算を簡略化することのうちの1つ以上を行うようになっている、請求項59記載の方法。
  61. 内部命令ブロックの内部命令を実行する間に例外が発生したときに、例外取り扱い命令の実行をトリガーし、前記例外が生じたポイントで前記内部命令ブロックの実行を再開できるように例外リターンポインタを記憶する、請求項35〜60のいずれかに記載の方法。
  62. 内部命令ブロックの内部命令を実行中にインターラプトが発生したときに、インターラプト取り扱い命令の実行をトリガーし、前記インターラプトが生じたポイントで前記内部命令ブロックの実行を再開できるようにインターラプトリターンポインタを記憶する、請求項35〜61のいずれかに記載の方法。
  63. 前記変換バッファが外部命令ブロックの異なるタイプに対応する内部命令ブロックを記憶するように割り当てられた複数の部分を有する、請求項35〜62のいずれかに記載の方法。
  64. 前記リマッパーメモリが外部命令ブロックの異なるタイプに対応するマッピングデータを記憶するように割り当てられた複数の部分を有する、請求項44記載の方法。。
  65. ロックダウン記憶装置内に配置された内部命令ブロックが前記リマッパーにおけるルックアップを低減するようにあらかじめ処理される、請求項56記載の方法。
  66. 前記変換バッファがプログラム制御によりアクセスできる物理メモリのエリアにアドレスマッピングされる、請求項35〜65のいずれかに記載の方法。
  67. リマッパーバイパスブランチ内部命令が前記リマッパーの動作をバイパスするブランチ動作を実行するようになっている、請求項35〜66のいずれかに記載の方法。
  68. 1つ以上のリマッパー管理内部命令が前記リマッパーでの管理動作を実行するようになっている、請求項35〜67のいずれかに記載の方法。
JP2004537249A 2002-09-20 2003-05-15 データ処理システムの外部および内部命令セット Expired - Fee Related JP3820261B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0221916A GB2393274B (en) 2002-09-20 2002-09-20 Data processing system having an external instruction set and an internal instruction set
PCT/GB2003/002092 WO2004027601A1 (en) 2002-09-20 2003-05-15 Data processing system having external and internal instruction sets

Publications (2)

Publication Number Publication Date
JP2005539321A true JP2005539321A (ja) 2005-12-22
JP3820261B2 JP3820261B2 (ja) 2006-09-13

Family

ID=9944499

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004537249A Expired - Fee Related JP3820261B2 (ja) 2002-09-20 2003-05-15 データ処理システムの外部および内部命令セット

Country Status (13)

Country Link
US (1) US7406585B2 (ja)
EP (1) EP1540464B1 (ja)
JP (1) JP3820261B2 (ja)
KR (1) KR101086801B1 (ja)
CN (1) CN1682181B (ja)
AU (1) AU2003232331A1 (ja)
DE (1) DE60308201T2 (ja)
GB (1) GB2393274B (ja)
IL (1) IL165987A (ja)
MY (1) MY127780A (ja)
RU (1) RU2005107713A (ja)
TW (1) TWI263169B (ja)
WO (1) WO2004027601A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008523471A (ja) * 2004-12-06 2008-07-03 マイクロソフト コーポレーション ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
JP2016539423A (ja) * 2013-11-27 2016-12-15 シャンハイ シンハオ マイクロエレクトロニクス カンパニー リミテッド 命令セット変換システム及び方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805710B2 (en) 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
GB0316532D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for partitioning code in program code conversion
GB2424092A (en) * 2005-03-11 2006-09-13 Transitive Ltd Switching between code translation and execution using a trampoline
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8533859B2 (en) * 2009-04-13 2013-09-10 Aventyn, Inc. System and method for software protection and secure software distribution
US8775153B2 (en) 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US9092236B1 (en) * 2011-06-05 2015-07-28 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
US10120692B2 (en) 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
WO2013104107A1 (en) 2012-01-10 2013-07-18 Intel Corporation Isa bridging with callback
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
CN103377033B (zh) * 2012-04-12 2016-01-13 无锡江南计算技术研究所 运算核心及其指令管理方法
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US8856769B2 (en) * 2012-10-23 2014-10-07 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
CN104679481B (zh) * 2013-11-27 2020-04-28 上海芯豪微电子有限公司 一种指令集转换系统和方法
CN104915180B (zh) * 2014-03-10 2017-12-22 华为技术有限公司 一种数据操作的方法和设备
US20160378488A1 (en) * 2015-06-26 2016-12-29 Microsoft Technology Licensing, Llc Access to target address
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10120688B2 (en) 2016-11-15 2018-11-06 Andes Technology Corporation Data processing system and method for executing block call and block return instructions
CN108988931B (zh) * 2018-06-26 2020-10-09 上海卫星工程研究所 卫星测控协处理器
US10924481B2 (en) 2018-11-06 2021-02-16 Bank Of America Corporation Processing system for providing console access to a cyber range virtual environment
US10958670B2 (en) 2018-11-06 2021-03-23 Bank Of America Corporation Processing system for providing console access to a cyber range virtual environment
US10901878B2 (en) 2018-12-19 2021-01-26 International Business Machines Corporation Reduction of pseudo-random test case generation overhead
US10972789B2 (en) 2019-06-03 2021-04-06 At&T Intellectual Property I, L.P. Methods, systems, and devices for providing service differentiation for different types of frames for video content
US11698789B2 (en) 2020-10-12 2023-07-11 Microsoft Technology Licensing, Llc Restoring speculative history used for making speculative predictions for instructions processed in a processor employing control independence techniques

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US66081A (en) * 1867-06-25 Improvement in chucks
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
US5249286A (en) * 1990-05-29 1993-09-28 National Semiconductor Corporation Selectively locking memory locations within a microprocessor's on-chip cache
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5742802A (en) * 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US6216206B1 (en) * 1997-12-16 2001-04-10 Intel Corporation Trace victim cache
US6112280A (en) * 1998-01-06 2000-08-29 Hewlett-Packard Company Method and apparatus for distinct instruction pointer storage in a partitioned cache memory
US6233678B1 (en) * 1998-11-05 2001-05-15 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
US6223254B1 (en) * 1998-12-04 2001-04-24 Stmicroelectronics, Inc. Parcel cache
GB2348305A (en) * 1999-03-24 2000-09-27 Int Computers Ltd Instruction execution mechanism
US6363336B1 (en) * 1999-10-13 2002-03-26 Transmeta Corporation Fine grain translation discrimination
US6351802B1 (en) * 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US20020066081A1 (en) * 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US6718440B2 (en) * 2001-09-28 2004-04-06 Intel Corporation Memory access latency hiding with hint buffer
US6920550B2 (en) * 2001-11-15 2005-07-19 Hewlett-Packard Development Company, L.P. System and method for decoding and executing program binaries

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008523471A (ja) * 2004-12-06 2008-07-03 マイクロソフト コーポレーション ダイナミックトランスレーションによる先取りコンピュータマルウェアの保護
JP2016539423A (ja) * 2013-11-27 2016-12-15 シャンハイ シンハオ マイクロエレクトロニクス カンパニー リミテッド 命令セット変換システム及び方法

Also Published As

Publication number Publication date
MY127780A (en) 2006-12-29
TW200410143A (en) 2004-06-16
EP1540464A1 (en) 2005-06-15
WO2004027601A1 (en) 2004-04-01
CN1682181A (zh) 2005-10-12
GB2393274A (en) 2004-03-24
RU2005107713A (ru) 2005-11-20
EP1540464B1 (en) 2006-09-06
DE60308201D1 (de) 2006-10-19
CN1682181B (zh) 2010-05-26
TWI263169B (en) 2006-10-01
KR20050084558A (ko) 2005-08-26
IL165987A (en) 2010-05-31
AU2003232331A1 (en) 2004-04-08
GB0221916D0 (en) 2002-10-30
US20040059897A1 (en) 2004-03-25
DE60308201T2 (de) 2007-08-23
KR101086801B1 (ko) 2011-11-25
IL165987A0 (en) 2006-01-15
JP3820261B2 (ja) 2006-09-13
US7406585B2 (en) 2008-07-29
GB2393274B (en) 2006-03-15

Similar Documents

Publication Publication Date Title
JP3820261B2 (ja) データ処理システムの外部および内部命令セット
US11954036B2 (en) Prefetch kernels on data-parallel processors
CN106716362B (zh) 用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级
US9483267B2 (en) Exploiting an architected last-use operand indication in a system operand resource pool
US9652230B2 (en) Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US10409763B2 (en) Apparatus and method for efficiently implementing a processor pipeline
US9311095B2 (en) Using register last use information to perform decode time computer instruction optimization
US11176055B1 (en) Managing potential faults for speculative page table access
JP6690812B2 (ja) 複数の変換テーブルを用いた命令セットアグノスティックランタイムアーキテクチャの実施
US9690589B2 (en) Computer instructions for activating and deactivating operands
US20060179236A1 (en) System and method to improve hardware pre-fetching using translation hints
JP6690811B2 (ja) ランアヘッドランタイムゲスト命令変換/デコードプロセスと、ゲストコードが、命令シーケンスにおけるゲスト分岐のターゲットからプリフェッチされるプリフェッチプロセスとを実施するシステム変換器
US6345351B1 (en) Maintenance of speculative state of parallel executed jobs in an information processing system
JP6690813B2 (ja) 変換ルックアサイドバッファを用いた命令セットアグノスティックランタイムアーキテクチャの実施
US8667258B2 (en) High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
CN107077371B (zh) 用于不可知的运行时架构的系统、微处理器和计算机系统
JP6683321B2 (ja) ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
US6892280B2 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060616

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090623

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100623

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100623

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110623

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110623

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120623

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees