JP2006099800A - 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置 - Google Patents

先進のマイクロプロセッサにおけるスケジューリング強化方法および装置 Download PDF

Info

Publication number
JP2006099800A
JP2006099800A JP2005334136A JP2005334136A JP2006099800A JP 2006099800 A JP2006099800 A JP 2006099800A JP 2005334136 A JP2005334136 A JP 2005334136A JP 2005334136 A JP2005334136 A JP 2005334136A JP 2006099800 A JP2006099800 A JP 2006099800A
Authority
JP
Japan
Prior art keywords
instruction
sequence
instructions
address
store
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
JP2005334136A
Other languages
English (en)
Other versions
JP3872809B2 (ja
Inventor
Guillermo J Rozas
ロザス,ガイラーモ・ジェイ
Godfrey P D'souza
ドソウザ,ゴドフリー・ピー
Charles R Price
プライス,チャールズ・アール
Paul S Serris
サーリス,ポール・エス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Transmeta Inc
Original Assignee
Transmeta Inc
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 Transmeta Inc filed Critical Transmeta Inc
Publication of JP2006099800A publication Critical patent/JP2006099800A/ja
Application granted granted Critical
Publication of JP3872809B2 publication Critical patent/JP3872809B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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 or 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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 or 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】先進のプロセッサのスケジューラが、加速した速度で実行するコードを発生することを可能にする回路およびソフトウェアを提供する。
【解決手段】スケジューリング動作に対して規定された通常の制約を一部無視し、できるだけ速く実行するようにある命令を単純にスケジューリングし、スケジューリングがスケジューリング制約に違反した場合例外を発生し、例外を発生した各命令セットを正しく実行するために講ずる処置を決定することによって、より迅速に実行するコードをスケジューラ・ソフトウエアに生成させる装置および方法。
【選択図】図6

Description

本発明は、コンピュータ・システムに関し、更に特定すれば、改良されたマイクロプロセッサにおける命令の並び替え(reordering)を加速化する方法および装置に関する。
近年、単純であるが非常に高速なホスト・プロセッサ(「モーフ・ホスト」と称する)およびソフトウエア(「コード・モーフィング・ソフトウエア(code morphing software)」と称する)を組み合わせ、このモーフ・ホスト・プロセッサとは異なるプロセッサのために設計されたアプリケーション・プログラムを、しかも当該プログラムが設計されたプロセッサ(ターゲット・プロセッサ)では達成できない速度で実行する、新たなマイクロプロセッサが開発された。モーフ・ホスト・プロセッサは、コード・モーフィング・ソフトウエアを実行して、アプリケーション・プログラムをモーフ・ホスト・プロセッサの命令に変換し、本来のターゲット・ソフトウエアの目的を達成する。ターゲット命令を変換しつつ、これらを実行すると同時に変換バッファに格納して、更に変換することなく、これらにアクセスすることができる。プログラムの初期的変換および実行は低速であるが、一旦変換すれば、ハードウエアにおいてプログラムを実行する際に通常必要とされるステップの多くは不要となる。
迅速なレートで、他のプロセッサ用に設計されたプログラムを実行可能とするために、モーフ・プロセッサは多数のハードウエア強化を含む。これらの強化の1つは、ホスト・プロセッサと変換バッファとの間に存在するゲート格納バッファ(gated store buffer)である。第2の強化は、変換対象のターゲット命令のいずれのシーケンスにおいても、その開始時におけるターゲット・マシンの状態を格納する1組のホスト・レジスタである。ターゲット・プロセッサの状態がわかっている範囲にあるターゲット命令のシーケンスを、モーフ・ホスト命令に変換し、変換バッファ内に置き、実行を待つ。例外が発生することなく、変換された命令が実行された場合、命令シーケンスの開始時におけるターゲット状態を、シーケンスが完了した時点におけるターゲット状態に更新する。
変換されたホスト命令シーケンスの実行中に例外が発生すると、処理は停止し、ターゲット・マシンの既知状態が存在する、ターゲット命令シーケンスの先頭に動作全体が戻る、即ち、ロールバックすることができる。これによって、命令を動的に変換および実行しつつ、非常に迅速かつ精確な例外処理が可能となり、従来技術では決して達成されなかった成果が得られる。
コード・モーフィング・ソフトウエアの一部であるスケジューラによって新たなマイクロプロセッサを走らせる際、一層の高速化が達成される。スケジューラは、命令が変換されていく際に、生の変換によって生ずるそのままの順序から、同じ結果が得られるが実行の高速化を可能にする順序に、命令を並び替え、再スケジューリングする。スケジューラは、ある種の命令を他の命令の前に置くか、または命令を一緒に走らせて、再スケジューリングしたソフトウエアの実行にかかる時間を短縮しようとする。スケジューラの機能には多数の制約が伴い、最も基本的な制約は、再スケジューリングしたプログラムが、なおも元のプログラムと同じ最終結果を生成しなければならないということである。
一例として、プログラムの中には、正しい結果を得るためには中断なく実行しなければならない命令シーケンスがある。スケジューラは、得られる結果に干渉することなく、かかるシーケンスに干渉することはできない。多くのプロセッサは、ハードウエア・インターロックを備え、かかるシーケンスを実際に中断なく走らせることを保証している。かかる命令シーケンスを保護する必要性のために、ここで論じている先進のモーフ・ホスト・プロセッサのようなハードウエア・インターロックのないプロセッサには、特殊な制約がかけられる。ソフトウエアは、何らかの方法で、かかるシーケンスを把握し、中断なくこれらを走らせることを保証しなければならない。
制御依存性は、スケジューラが直面する、並び替えに対する従来からの制約の別の1つである。制御依存性は、分岐命令に関係する。スケジューラは、分岐の前および後に現れる命令を並び替えても、プログラムが正しく実行することを保証しなければならない。
格納に関して、ロードの並び替えに影響を及ぼす別の依存性がある。例えば、更新したデータをあるメモリ・アドレスに格納し、次いでレジスタ動作において操作する場合、格納を行う時点では、当該アドレスのデータをレジスタ内に保持していてはならない。さもなければ、レジスタ内のデータは古くなっている可能性がある。
これらの制約全てにより、典型的なスケジューラの機能は非常に保守的となり、その結果、生成するコードが低速化する。
従来のスケジューラは、並び替えを行うために、互いに依存しあう命令を決定する際に最善を尽くす。通常のスケジューラは、ある動作が何らかの形で他の動作に依存すること、およびある動作は他の動作に全く依存しないことを判定できるが、他の動作に関しては何も判定することはできない。かかるスケジューラは、他の動作に依存する動作の場合、これらが発生した正常な生来の順序に並べることによって、保守的にこれらを扱う。かかるスケジューラは、他の動作に全く依存しない動作を、それが望むように、並び替える。最終的に、スケジューラは、依存性に関して判断することができない全ての動作を、これらが互いに依存するかのように扱い、したがってこれらの扱いは保守的でしかも緩慢となる。
先進のプロセッサのスケジューラが、加速した速度で実行するコードを発生することを可能にする回路およびソフトウエアを提供することが望ましい。
本発明は、スケジューリング動作に対して規定された通常の制約を一部無視し、できるだけ速く実行するようにある命令を単純にスケジューリングし、このスケジューリングがスケジューリング制約に違反した場合例外を発生し、例外を発生した各命令セットを正しく実行するために講ずる処置を決定することによって、スケジューラ・ソフトウエアに、より迅速に実行するコードを生成させる装置および方法によって実現する。
本発明のこれらおよびその他の目的ならびに特徴は、以下の詳細な説明を、図面と共に参照することによって、より良く理解されよう。図面では、いくつかの図にわたって同様のエレメントは同様の符号で引用することとする。
図1は、技術的現状のマイクロプロセッサよりもはるかに単純な、強化ハードウエア処理部(「モーフ・ホスト」と呼ぶ)、およびエミュレート・ソフトウエア部(「コード・モーフィング・ソフトウエア」と呼ぶ)を組み合わせた新規マイクロプロセッサ10を示す。2つの部分は、一緒に機能して、通常ではハードウエアのみで行う動作を、先進のマイクロプロセッサにおいて実行する。新規マイクロプロセッサ10は、従来技術のマイクロプロセッサよりも高速であり、多数の従来技術のマイクロプロセッサ系列によって走らせることができるあらゆるオペレーティング・システムのためのあらゆるソフトウエアを走らせることができ、しかも従来技術のマイクロプロセッサよりも安価である。
マイクロプロセッサ10は、異なるターゲット・プロセッサ用に設計されたアプリケーション・プログラムを実行するために、コード・モーフィング・ソフトウエア12を実行するように設計されたモーフ・ホスト・プロセッサ11を含む。モーフ・ホスト11は、コード・モーフィング・ソフトウエア12によって提供される加速技法の効率的な利用を可能とするように、特別に適合化したハードウエア強化を含む。モーフ・ホスト・プロセッサは、動作の加速化を支援し、および例外またはエラーが発生した場合に直ちにターゲット・コンピュータの状態を与えるハードウエア強化を含む。コード・モーフィング・ソフトウエアは、とりわけ、ターゲット・プログラムの命令をモーフ・ホスト命令に変換し、ホスト命令のスケジューリングおよび最適化を行い、必要な場合には例外およびエラーに応答して、実行が正しかったことがわかっている最後の時点に実行をロールバックし、その時点における正しいターゲット状態と作業状態を置換することによって正しいターゲット・コードの再変換が行われるようにするソフトウエアを含む。また、コード・モーフィング・ソフトウエアは、処理速度を高める種々のプロセスも含む。図2のブロック図は、ここで論ずる特徴を実現する、モーフ・ホスト11のハードウエア例を詳細に示す。
図3の図(コード・モーフィング・ソフトウエア12の主ループの動作を示す)に示すように、コード・モーフィング・ソフトウエアは、強化モーフ・ホストとの組み合わせにより、実行中にターゲット命令をモーフ・ホスト用命令に変換し、これらのホスト命令をメモリ・データ構造(「変換バッファ」と呼ぶ)内にキャッシュする。一旦ターゲット命令を変換したなら、変換バッファからリコールし、実行することができる。その際、各ターゲット命令を実施するためにはどの原始命令が必要か判定を行い、各原始命令をアドレスし、各原始命令をフェッチし、原始命令のシーケンスを最適化し、各原始命令にアセットを割り当て、原始命令を並び替え、各ターゲット命令を実行する毎に、関係する原始命令の各シーケンスの各ステップを実行するというような、従来技術のハードウエア・マイクロプロセッサでは必要であった多数のステップのいずれも必要としない。
従来技術のエミュレーション技法の主な問題の1つは、ターゲット・プログラムの実行中に発生する例外を巧みに処理できないことであった。ターゲット・アプリケーションの実行中に発生した例外の中は、ターゲット・オペレーティング・システムに送出されるものがあり、例外およびそれに続く命令の適正な実行のためには、いずれのこのような例外の時点においても正しいターゲット状態が得られなければならない。また、他にも、エミュレータが、ある特定のホスト機能によって置換された特定のターゲット動作を検出するために、例外を発生する可能性がある。更に、ホスト・プロセッサも、ターゲット命令から派生したホスト命令を実行する際に、例外を発生する可能性がある。これらの例外は全て、エミュレータによってターゲット命令をホスト命令に変化させようとする試行の間、またはエミュレート・ホスト命令をホスト・プロセッサによって実行するときに、発生する可能性がある。ターゲット・オペレーティング・システムに送出される例外は、常にターゲット・プロセッサの状態に関する知識が必要であるので、特に困難である。
これらの例外から効率的に回復するために、強化モーフ・ホストは多数のハードウエアの改良を含む。これらの改良に、ゲート格納バッファ(図5参照)が含まれる。ゲート格納バッファは、ハードウエア「ゲート」の「アンコミット」側(uncommited side)にワーキング・メモリ状態の変化、およびハードウエア・ゲートの「コミット」側(commited side)にオフィシャル・メモリ状態の変化を格納する。ハードウエア・ゲートにおいて、これらコミットした記憶が主メモリに「流れ出す」。「コミット」動作が、ゲートのアンコミット側から、ゲートのコミット側にメモリの記憶を移転させる。例外が発生すると、「ロールバック」動作によって、ゲート格納バッファ内のアンコミットの記憶は破棄される。
また、ハードウエア強化は、多数の追加プロセッサ・レジスタ(図4参照)も含む。追加のレジスタは、レジスタ名称変更(register renaming)によって、同じハードウエア資源を利用しようとする命令の問題軽減を可能にすることに加えて、ホスト命令を処理するための1組のホスト即ちワーキング・レジスタを維持すること、更に元来ターゲット・アプリケーションを作成した対象であるターゲット・プロセッサのオフィシャル状態を保持する1組のターゲット・レジスタを維持することが可能となる。ターゲット・レジスタは、専用インターフェースを介して、それらのワーキング・レジスタ同等物に接続されており、これによって、コミット動作が全てのワーキング・レジスタの内容をオフィシャル・ターゲット・レジスタに迅速に転送することを可能とし、更に「ロールバック」と呼ぶ動作によって、全てのオフィシャル・ターゲット・レジスタの内容をそれらのワーキング・レジスタ同等物に迅速に転送することを可能にする。
一旦ターゲット命令の1つまたは1群が変換されエラーなく実行し終えると、追加のオフィシャル・レジスタおよびゲート格納バッファによって、メモリの状態およびターゲット・レジスタの状態を更新することができる。更新は、一体のターゲット命令の境界において行われるように、コード・モーフィング・ソフトウエアによって選択される。一連のターゲット命令の変換によって発生した原始ホスト命令を、ホスト・プロセッサが、例外を生ずることなく走らせた場合、これらの命令によって生じたワーキング・メモリ・ストアおよびワーキング・レジスタの状態は、オフィシャル・メモリおよびオフィシャル・ターゲット・レジスタに転送される。
一方、ターゲット命令の境界ではない時点でホスト命令を処理しているときに例外が発生した場合、最後の更新(またはコミット)時におけるターゲット・レジスタ内の元の状態を、ワーキング・レジスタに呼び戻すことができ、ゲート格納バッファ内のアンコミット・メモリ記憶を破棄することができる。そして、発生した例外がターゲット例外である場合、このターゲット例外の原因となったターゲット命令を一度に1つずつ再変換し、ターゲット・マイクロプロセッサによって実行されるかのように、逐次的なシーケンスで実行することができる。各ターゲット命令をエラーなく正しく実行する毎に、ターゲット・レジスタの状態を更新し、格納バッファ内のデータをメモリに通過させる(gate)ことができる。そして、ホスト命令を走らせている際に再度例外が発生した場合、モーフ・ホストおよびメモリのターゲット・レジスタによって、ターゲット・プロセッサの正しい状態を保持し、動作は遅延なく正しく処理することができる。この調整的変換によって行われる新たな変換の各々は、変換される毎に、今後の使用のためにキャッシュすることができ、あるいはページ・フォールトのように一度だけまたは希にしか起こらない場合には、破棄してもよい。これらの特徴を組み合わせ、コード・モーフィング・ソフトウエアおよびモーフ・ホストの組み合わせによって作り出されるマイクロプロセッサが、元来ソフトウエアが書かれた対象であるプロセッサよりも迅速に命令を実行するのを支援する。
単純に命令を変換し、変換した命令をキャッシュし、その命令セットを実行する必要があるときはいつでも各変換を実行することに加えて、コード・モーフィング・ソフトウエアは、異なる変換の並び替え、最適化、および再スケジューリングも行う。最適化プロセスの1つは、実行中に分岐を行う可能性が明白になると、変換したホスト命令の種々のシーケンスを互いにリンクし合う。最終的に、主ループがホスト命令の分岐命令を参照することは、ほぼ完全に不要となる。この条件に達すると、いずれのホスト命令を走らせる前にも、ターゲット命令をフェッチし、ターゲット命令をデコードし、ターゲット命令を構成する原始命令をフェッチし、これら原始動作を最適化し、原始動作を並び替え、これら原始動作を再スケジューリングするために要する時間は不要となる。したがって、改良したマイクロプロセッサを用いていずれのターゲット命令セットを実行するために必要な作業も劇的に減少する。
先に指摘したように、命令の順序が正しいが元のままである場合、並び替えの動作は、スケジューラを利用して、より良い命令の実行順序を選択しようとする。スケジューラに伴う問題の1つに、これらの機能には制約が多いことがあげられる。最も基本的な制約は、プログラムを実行したときに、命令の元のシーケンスで得られるのと同じ最終結果をなおも生成しなければならないことである。これらの制約全てのために、典型的なスケジューラは非常に保守的に機能することを余儀なくされ、その結果生成するコードは、実行が遅くなる。
例えば、正しい結果が生成されることを保証するために、典型的なスケジューラは、決定論に基づいて動作し、依存性を有さない命令、依存性を有する命令、および依存性の存在が未知の命令を選択する。依存性を有する命令、および依存性の存在が未知の命令は全て、依存性が存在するかのように扱われ、並び替えられない。依存性がないことがわかっている命令のみを並び替える。これらの指針にしたがって、スケジューラはコードを生成するので、その実行は遅くなる。
別の制約には、モーフ・ホスト・プロセッサの特定的な実施形態に関するものがある。モーフ・ホスト・プロセッサの一実施形態は、動作を遅くする特殊回路をなくすことによって、機能を迅速化するように設計されたプロセッサである。モーフ・ホスト・プロセッサのこの実施形態は、ハードウエア・ロッキング機構を全く用いずに設計される。ハードウエア・ロッキング機構とは、特定の命令シーケンスにおけるステップ全てが、中断されることなく実行されることを保証することを目的とする回路である。ロッキング機構がない場合、スケジューラは、かかるシーケンス内のステップ全てを並び替えずに、元の変換された順序で処理し、プロセッサがシーケンスから正しい結果を生成することを保証するように、厳密に機能することが要求される。
本発明のスケジューラは、コード・モーフィング・ソフトウエアのソフトウエア部である。従来技術のハードウエアによるスケジューラとは異なり、ソフトウエアのスケジューラは、命令を並び替える際に推測的技法を用いる。スケジューラは、ある動作について、できるだけ高速な動作が望まれると推測し、この結果を達成するように命令を並び替える。モーフ・ホストには、選択した推測が正しくない場合に例外を発生させるハードウエアが設けられている。殆どの場合、推測は正しいので、結果全体は遥かに速い動作となる。しかしながら、推測が正しくない場合、例外が、ソフトウエアにゲート格納バッファおよびターゲット・レジスタを利用させ、正しい状態がわかっている推測的シーケンスの先頭に動作をロールバックさせるのが通例である。
従来技術のスケジューラによって使用されている決定論的戦略とは対照的に、本発明のスケジューラは、並び替えのために命令のカテゴリを選択する際、確率論的指針を利用する。改良されたスケジューラは、変換によってターゲット命令セットから生成される命令のシーケンスから、4つのカテゴリの命令シーケンスを選択する(図6参照)。これらのカテゴリは、依存性のない命令シーケンス、既知の依存性を有する命令シーケンス、依存性を有さない確率が高い命令シーケンス、および依存性を有する確率が高い命令シーケンスを含む。従来技術の場合と同様、依存性がないことがわかっている命令シーケンスは、スケジューラによって任意に並び替えることができる。既知の依存性を有する命令シーケンスは、変換器によって与えられた逐次順序で処理される。
しかしながら、依存性を有さない確率が高い命令は、実際に依存性がないものとして扱われ、実行を可能な限り高速化するように並び替えられる。モーフ・ホストには、正しくない並び替えを検出し、依存性が実際に存在する場合に例外を発生させるハードウエア手段が設けられている。スケジューラはこのハードウエア手段と協働してチェックを行い、並び替えた各命令が正しく実行できない場合を見つけ出し、動作シーケンスが正しく実行しない場合に例外を発生することができる。かかる例外によって、スケジューラは、それが以前に行った並び替えで、例外を発生したものを無視し、保守的にまたはより適切な他の何らかの態様でそのシーケンスを扱うことが可能となる。
一方、依存性を有する確率が高い命令の処理は、積極的な場合または保守的な場合のいずれかが可能である。積極的に処理する場合、これらは、依存性を有さない確率が高い命令として扱われる。これらを並び替え、出来るだけ実行を高速化し、モーフ・ホスト内に設けられているハードウエア手段を用いて、正しくない並び替えが行われた場合を検出し例外を発生させる。保守的に処理する場合、変換器によって与えられる逐次順序でこれらを処理する。通常では、保守的な扱いの方が処理が速い。何故なら、多数の例外を発生することが、実行速度を著しく低下させるからである。
本発明の一実施形態では、図7に示すような回路をホスト・プロセッサに追加する。この回路は、特別の「ロード・アンド・プロテクト」または「ストア・アンド・プロテクト」動作を用いて、スケジューラによって並び替えられた命令がアクセスするメモリ・アドレスを格納するために利用される。かかる「ロード・アンド・プロテクト」または「ストア・アンド・プロテクト」動作は、命令が並び替えられた場合にはいつでも用いることができ、並び替えられた命令がアクセスするメモリ・アドレスを、保護レジスタとして用いるために設計されたモーフ・ホストの複数のレジスタ71の内1つに置く効果を有する。一実施形態では、8つの保護レジスタ71が設けられている。「ロード・アンド・プロテクト」または「ストア・アンド・プロテクト」命令は、その動作に用いられる特定の保護レジスタを指示する。
この明細書全体を通じて、ロード・アンド・プロテクト命令ならびにストア・アンド・プロテクト命令を説明する際「メモリ・アドレス」という用語を用いるが、この用語は、保護されるメモリ領域を決定するために可能な多数の構成に対する参照として用いている。メモリ・アドレスという用語は、保護対象のメモリ・アドレスの記述子を意味するために用いている。例えば、メモリがバイト・アドレス可能なシステムでは、本発明の一実施形態は、開始メモリ・アドレスと、アドレス領域内のバイト数に等しい数のビットとを用いて、これらのバイト各々の保護状態を示す。同様なアドレシングを行う別の実施形態では、開始メモリ・アドレスおよび長さを利用し、一方第3の実施形態では、個々のバイト・アドレスと、バイト・アドレス毎の個々の比較器を利用する。
動作の一例では、命令シーケンスは、第1ストア命令STORE1、第2ストア命令STORE2、およびロード命令LOAD1を順に含む。スケジューラは、並び替えによって正しくない動作が行われる確率は低いと想定して、これらの命令を並び替え、並び替えたシーケンスでは、ロード命令を最初に、第2ストア命令を2番目に、そして第1ストア命令を3番目に置く。これを行うために、スケジューラは、ロード・データを汎用レジスタ72の1つに置き、更にロード・データが得られたメモリ位置のアドレスを、命令によって指定された保護レジスタ71に置くために「ロード・アンド・プロテクト」動作を用いる。ソフトウエア・スケジューラは、並び替えによってエラーが生じたか否か判定するためにはどの命令をチェックすべきかわかっているので、スケジューラは、並び替えによって影響を受ける可能性がある次の命令(この場合、STORE1およびSTORE2命令であり、その前にロードが置かれた)に指示(例えば、ビットマスク内のビット)を置き、保護対象メモリ・アドレスを保持する特定の保護レジスタを示す。この指示が特定の位置(トラッピング機能のために8つの保護レジスタを用いる場合、8つのビットの内1つ)にあることによって、ストア命令によって各記憶が置かれるアドレスが、指示された保護レジスタ71内に保持されているメモリ・アドレスと重複するか否かによって、命令の実行が左右されることを示す。
同様に、スケジューラは「ストア・アンド・プロテクト」動作を用いてSTORE2命令のデータをメモリに格納し、データを格納したメモリ位置のアドレスを、ストア・アンド・プロテクト命令が指定する保護レジスタ71内に置く。また、スケジューラは、並び替えによって影響を受ける可能性がある命令(この場合、STORE1命令のみ)の各々のビットマスク内に指示を置き、この保護対象メモリ・アドレスを保持する特定の保護レジスタを示す。最後に、スケジューラは、最後のSTORE1命令に対して通常のストア命令を用いる。
命令シーケンスが実行されると、ホスト・ハードウエアは比較回路73を用いて、これら3つの命令の各々について、命令のメモリ・アドレスが、保護レジスタ71内の1つに格納されているメモリ・アドレスにおけるデータのいずれかの部分と重複しないか否か判定を行い、重複する場合、例外を発生する。このように、LOAD1動作(ロード・アンド・プロテクトとなっている)はそのメモリを保護レジスタ71に書き込むが、いずれの保護レジスタもチェックしない。何故なら、セットされたインディケータはいずれの保護レジスタも指定していないからである。STORE2動作(ストア・アンド・プロテクトになっている)は、そのメモリ位置を異なる保護レジスタ71に書き込み、LOAD1命令に用いられている保護レジスタ71をチェックして、それらのメモリ位置間の重複を判定する。最後に、STORE1動作(保護レジスタ・インディケータによって増大したが、単なるストアのままである)が、LOAD1およびSTORE2命令の各々に対する保護レジスタをチェックし、そのメモリ・アドレスとLOAD1およびSTORE2命令のメモリ・アドレスとの間の重複を調べる。前述の第1および第3実施形態の場合、比較によって、保護をバイト・レベルに正確に適用することが可能となる。
いずれの例外も、コード・モーフィング・ソフトウエアに、当該例外に応答して講ずる処置を決定させる。通例では、コード・モーフィング・ソフトウエアは、並び替えた命令シーケンスの実行を中断させ、ホストに、命令シーケンスの先頭におけるターゲット・プロセッサの状態に戻させることにより、命令シーケンスを保守的に再処理できるようにする。アドレスが同一でない場合(この例では、ストア命令が保護対象メモリ・アドレスをアクセスしないことを示す)、並び替えた命令シーケンスの実行は、並び替えによって得られる加速ペースで進められる。
ホスト・プロセッサとスケジューラとの間で通信を実現するために、モーフ・ホストが利用するロードおよびストア命令を修正する。一実施形態では、これらの命令は、「ロード・アンド・プロテクト」および「ストア・アンド・プロテクト」命令と完全に置換される。各「ロード・アンド・プロテクト」ならびに各「ストア・アンド・プロテクト」命令は、ビットマスク(例えば、8つの保護レジスタに対応する8つのビット)を含み、これらのビットをフラグとして用いて、並び替えた命令またはエイリアスした命令のメモリ・アドレスを探す、特定の保護レジスタを示す。これらのビットの各々は、チェックすべきハードウエアのためにメモリ・アドレスを格納する、使用可能な保護レジスタの1つを指定する。このビットマスクによって、命令を並び替えたときのメモリ・アドレスを格納するように指定された具体的な保護レジスタをチェックした後、並び替えによって影響を受け得る後続の命令を実行する。「ロード・アンド・プロテクト」ならびに「ストア・アンド・プロテクト」命令は、それぞれ、通常のロードおよびストア命令の代わりに用いることも可能である。何故なら、ビットマスクのいずれのビットもセットされていない場合、チェックは行われないからである。このような場合、「ロード・アンド・プロテクト」ならびに「ストア・アンド・プロテクト」命令は、ロードおよびストア動作と同一である。また、注意すべきこととして、保護レジスタは、メモリ・データを保持する特定の汎用レジスタと関連させることができるので、少数の保護レジスタの効率的な使用が可能となるということがあげられる。
また、本発明のホスト・プロセッサは、並び替えた命令に関係する有効なメモリ・アドレスを収容する保護レジスタの位置を格納する「イネーブル保護レジスタ」74と呼ぶ追加のレジスタも含む。「ロード・アンド・プロテクト」または「ストア・アンド・プロテクト」命令によって与えられる指示を用いて、特定の保護レジスタを示すビットをセットして、当該保護レジスタを示す。一実施形態では、イネーブル保護レジスタのビットは、コミット動作が行われ、変換され並び替えられた命令シーケンスが並び替え例外が生じずに実行されたことを示す場合にはいつでも、クリアされる。並び替えは、全て2つのコミット点間に現れる命令のシーケンスにおいてのみ行われるので、並び替え動作では、新たに変換された命令シーケンス毎に、並び替えに割り当てられる保護レジスタの全てを利用することできる。
この新発明の追加の利点として、「ストア・アンド・プロテクト」動作によって、互いに対するストアの並び替えが可能となることがあげられる。本発明では、データをメモリ位置に格納し、このメモリ位置のアドレスを保護レジスタ内に保護することによって、これを達成することができる。並び替えによって影響を受け得る後続のストアが現れたとき、そのビットマスクは、ハードウエアがメモリ・アドレスに対してチェックすべき保護レジスタを示し、例外を発生すべきか否か、またはストアの並び替えが正しく行われたか否か判定を行う。
新規マイクロプロセッサの一実施形態では、動作の実行において頻繁に用いられるメモリ・データを実行ユニット・レジスタ内に複製し(または「エイリアスし」)、データをメモリからフェッチするために要する時間またはデータをメモリに格納するために要する時間をなくすことを可能にする回路構成が設けられている。例えば、メモリ内のデータが1つ以上のコード・シーケンスの実行中に頻繁に再使用される場合、データを用いる毎に、このデータをメモリから読み出し、実行ユニット内のレジスタにロードしなければならないのが通例である。かかる頻繁なメモリ・アクセスによって必要となる時間を短縮するために、代わりに、コード・シーケンスの開始時にデータをメモリから実行ユニット・レジスタに一旦ロードし、コード・シーケンスが継続する期間中、メモリ空間の代わりとして機能するこのレジスタを指定する。一旦これを行うと、通常では指定されたメモリ・アドレスからレジスタにデータをロードする際に関与するロード動作の各々は、代わりに、単なるレジスタ間コピー動作となり、遥かに速いペースで進み、更にこれらのコピー動作でさえも、更なる最適化によってなくせる場合が多い。
同様に、コード・シーケンスの実行は、当該コード・シーケンスの実行中データを頻繁に1つのメモリ・アドレスに書き込むことを必要とする場合が多い。かかる頻繁な同一アドレスに対するメモリ・ストアに要する時間を短縮するために、データをメモリ・アドレスに書き込む毎に、コード・シーケンスが続いている期間中メモリ空間の代わりとして機能するように指定されている実行ユニット・レジスタにこれを転送することができる。一旦実行ユニット・レジスタを指定すれば、データを変更する毎に必要となるのは、単純なレジスタ間転送動作のみであり、これはメモリ・アドレスへのストアよりも遥かに速く進む。
エリアシング回路の動作は、1996年9月26日に出願され、Method and Apparatus for Aliasing Memory Data in an Advanced Microprocessor(先進のマイクロプロセッサにおいてメモリ・データをエイリアスする方法および装置)と題するM.Wing等の米国特許出願第08/721,698号に記載されている。この特許出願は、本発明の譲受人に譲渡されている。
本発明の並び替え動作を加速するための第2実施形態は、ある追加ハードウエアを利用し、前述の特許出願に記載されているように、並び替えとメモリ・アドレスのエイリアシング双方に同じハードウエアを使用できるようにするものである。尚、並び替えた命令は隣接するコミットした動作の間に現れるのが通例であるのに対して、実行ユニット・レジスタ内にエイリアスしたメモリ・データは、実際には、遥かに長い期間存続するのが通例である。この第2実施形態では、第2「永続」レジスタ76を追加し、イネーブル保護レジスタ74による並び替えのために設けられた短期保護と共に、長期保護即ち永続的保護を利用可能とすることを注記しておく。第2永続レジスタ76はレジスタ74と同様に用いられるが、隣接するコミット動作間よりも長い期間にわたってメモリ・アドレスを維持すべき保護レジスタのみを記録する。
例えば、ある長い期間(例えば、ループの間)使用するために、メモリ・アドレスをエイリアスしデータをホスト・レジスタに格納することが望まれる場合、どの保護レジスタが長期エイリアシング動作のアドレスを保持しているかという指示を命令からコピーし、イネーブル保護レジスタ74および第2永続レジスタ76双方に置く。並び替えた命令シーケンスが例外を発生することなく実行することにより、第1コミット動作を行うことができたと仮定すると、イネーブル保護レジスタがクリアされる。このように、チェックすべき並び替えられた命令のアドレスを保持する保護レジスタを示す短期フラグは、コミット毎に消去される。イネーブル保護レジスタをコミットの時点でクリアした後、第2永続レジスタの内容をイネーブル保護レジスタに書き込む。どの保護レジスタが長期エリアシングのために用いられているかを示す永続レジスタ内のデータは、イネーブル保護レジスタに書き込まれるので、長期エイリアシングに用いられる保護レジスタの指示は、コミット動作による影響を受けない。コミット毎に永続レジスタの内容をイネーブル保護レジスタに書き込むことによって、次の命令シーケンスに対して、そして究極的には、エイリアシング動作のためにデータがもはや不要となって第2レジスタを最終的にクリアするまで、保護を効果的に継続させる。
第2永続レジスタ76に加えて、シャドウ・レジスタ78を保持し、永続レジスタ内に保持されている情報も格納しておく。シャドウ・レジスタは、コミットおよびロールバック動作中に用いられる。コミットが発生すると、永続レジスタ76内のデータは、前述のように、イネーブル保護レジスタ74にコピーされる。また、コミット時に、永続レジスタをシャドウ(保護)するレジスタ78に同じデータがコピーされるので、並び替えられる次の命令シーケンスの開始時には、シャドウ・レジスタに永続レジスタの設定が収容されている。次の命令シーケンスの実行中に例外が発生し、ロールバック動作が必要となった場合、シャドウ・レジスタの内容を、イネーブル保護レジスタおよび永続レジスタの双方にコピーする。これは、命令シーケンスの実行開始前にイネーブル保護レジスタおよび永続レジスタにあったのと同じ指示をこれらのレジスタに置くことになり、これによって、更に保守的に実行を続けるための正しい状態を確保する。
本発明の構成によって、付加的な利点が得られる。永続レジスタ76の追加によって、短期間(コミット間)における並び替え能力、および実行ユニット・レジスタ内に長期間エイリアス・メモリ・データを保持する能力双方を増強するために、同じハードウエアの使用が可能となり、これによってメモリ・アクセスの冗長性を排除することができ、更にコミット動作間に生ずる他の種類の冗長性を排除するためにもこれを用いることができる。例えば、1つの命令シーケンス内で同じメモリ・アドレスから2つのロードが行われる可能性がある。これが発生し、このメモリ・アドレスに対するストアが中間で生じない場合、2番目のロードは単に無視すればよく、最初のメモリ・アクセスによってレジスタ内に置かれたデータを、2番目のロード動作の代わりに、変更することなく用いればよい。しかしながら、これらのロード間にストアが入る場合、このストアが、2番目のアクセスを行うメモリ・アドレスに対して行われたのか否か判定する必要がある。つまり、従来技術の最適化技法では、ロード間にストアが入る場合、2番目のロードを削除することができなかった。
本発明は、動作を短縮するために有効に利用することができる。最初のロードを「ロード・アンド・プロテクト」動作に変更し、メモリ・アドレスを保護レジスタに格納し、ストア命令がチェックすべき特定の保護レジスタを示すフラグを受け取るようにすれば、2番目のロードを削除することができ、「ロード・アンド・プロテクト」動作によって格納したデータを2番目のロードのために用いることができる。ストア命令が保護対象メモリ・アドレスにアクセスしようとする場合、ストアのアクセスが行われる前に、チェックすべき保護レジスタを示すフラグが比較を行わせる。これによって例外を発生し、正しいターゲット状態が存在する最後のコミット点までのロールバックが行われる。こうして、スケジューラは、2番目のロード動作を含む適切な命令シーケンスを与えることができ、シーケンスを再度実行することができる。
同様に、2つのコミット動作間にある命令シーケンスが、同じメモリ・アドレスへの2回のストアを含む場合、このメモリ・アドレスからのロードがストアの間にない場合、最初のストアを削除することができる。しかしながら、このメモリ・アドレスからのデータが中間のロードのために用いられる場合、最初のストアを削除することはできない。本発明を用いて、ロード命令を「ロード・アンド・プロテクト」にすれば、このメモリ・アドレスに対する最初のストアを削除することができる。次いで、2番目のストアが「ロード・アンド・プロテクト」から保護レジスタ指示を受け取り、アクセスのメモリ・アドレスをチェックする。ロードが異なるアドレスからの場合、2番目のストアは正しく続行ことができる。ロードが同じアドレスからの場合、2番目のストアのためにメモリにアクセスしようとすると、例外が発生し、最後のコミット点に動作をロールバックすることになる。この地点から、スケジューラは、双方のストア動作を含むように命令を再スケジューリングし、シーケンスを再実行すればよい。
以上、好適な実施形態に関して本発明を説明したが、本発明の精神および範囲から逸脱することなく、種々の変更や変形も当業者には可能であることは認められよう。例えば、特定のプロセッサ系列と共に機能するように設計された実施形態について本発明を説明したが、本発明は、他のプロセッサ・アーキテクチャのために設計されたプログラムや、プログラムにも同様に適用されることは理解して当然である。したがって、本発明は、添付した特許請求の範囲に基づいて解釈すべきものとする。
図1は、本発明を利用可能な、新規マイクロプロセッサを示す図である。 図2は、図1の新規マイクロプロセッサを実現するハードウエアのブロック図である。 図3は、図1の新規プロセッサの主処理ループを示すフロー・チャートである。 図4は、新規プロセッサの一部を示すブロック図である。 図5は、新規プロセッサの別の一部を示すブロック図である。 図6は、本発明にしたがって設計したスケジューラ・ソフトウエアの動作を示すフロー・チャートである。 図7は、本発明を実施する回路の一実施形態を示すブロック図である。

Claims (19)

  1. 命令のスケジューリング及び実行の方法であって、
    a)第1のアドレス範囲を含む第1のメモリ操作と、前記第1のアドレス範囲の少なくとも一部を含む第2のメモリ操作と、前記第1及び第2のメモリ操作に介入する第3のメモリ操作と、から成る命令のシーケンスをアクセスするステップであって、
    前記第3のメモリ操作が前記第1のアドレス範囲内のアドレスを含むか否か知られておらず、前記第1乃至第3のメモリ操作の内の少なくとも1つがストア操作を含む、
    アクセス・ステップと、
    b)前記命令のシーケンスから前記第2のメモリ操作を除去するステップと、
    c)前記第1のアドレス範囲を確定するために前記第3のメモリ操作に情報を付加するステップであって、
    当該情報が複数のレジスタの内のどれが保護されたアドレスを保持しているかを確定するためのマスクから成る、
    付加ステップと、
    d)前記第2のメモリ操作を除去して、前記命令のシーケンスを実行するステップと、
    e)前記実行中に、前記第3のメモリ操作が前記第1のアドレス範囲内のアドレスに影響を与えるか否かを決定し、もし影響を与えるなら、例外を発生して前記第2のメモリ操作を含む命令のシーケンスを再実行するステップと、
    から成る方法。
  2. 請求項1に記載の方法において、前記ステップe)が更に、前記実行中に、前記第3のメモリ操作が前記保護された任意のアドレスの範囲内のアドレスに影響を与えたか否かを決定するステップを含むことを特徴とする方法。
  3. 請求項1に記載の方法において、更に、前記第1のアドレス範囲に関連するメモリ・アドレスを、前記命令シーケンスの実行前に、前記複数のレジスタの1つにストアするステップを含むことを特徴とする方法。
  4. 請求項1に記載の方法において、更に、前記第1のアドレス範囲に関連するメモリ・アドレスを、前記命令シーケンスの実行前に、レジスタにストアするステップを含むことを特徴とする方法。
  5. 請求項4に記載の方法において、前記命令のシーケンスが、前記第1の命令シーケンス以降の前記命令のシーケンス内にある第4のメモリ操作を含み、
    更に、前記第4のメモリ操作が前記第1のアドレス範囲に影響を与えても例外の発生無しに当該第4のメモリ操作を実行することを許す第2の情報を、前記第4のメモリ操作に付加するステップを含む、
    ことを特徴とする方法。
  6. 請求項1に記載の方法において、前記第3のメモリ操作が介入しない場合、前記第1及び第2のメモリ操作を単一のメモリ操作に安全に縮小できることを特徴とする方法。
  7. 命令のスケジューリング及び実行の方法であって、
    a)第1のアドレス範囲からロードする第1のロード命令と、前記第1のアドレス範囲からロードする第2のロード命令と、前記第1及び第2のロード命令に介入するストア命令と、から成る命令のシーケンスをアクセスするステップであって、
    前記ストア命令が前記第1のアドレス範囲内のアドレスにストアするか否か知られていない、
    アクセス・ステップと、
    b)前記命令のシーケンスから前記第2のロード命令を除去するステップと、
    c)前記第2のロード命令無しに前記命令のシーケンスを実行する、前記第1のアドレス範囲に関するメモリ・アドレスを保護レジスタにストアすることを含むステップと、
    d)前記実行中に、前記ストア命令が前記第1のアドレス範囲内のアドレスにストアするか否かを決定し、もしストアするなら、例外を発生して前記第2のロード命令を含む命令のシーケンスを再実行するステップと、
    から成る方法。
  8. 請求項7に記載の方法において、前記ステップb)が更に、前記保護レジスタを示すために、前記ストア命令にフラグを付加するステップを含むことを特徴とする方法。
  9. 請求項7に記載の方法において、前記ステップb)が更に、前記第1のロード命令をロード・アンド・プロテクト命令に変更するステップを含むことを特徴とする方法。
  10. 命令のスケジューリング及び実行の方法であって、
    a)第1のアドレス範囲への第1のストア命令と、前記第1のアドレス範囲への第2のストア命令と、前記第1及び第2のストア命令に介入するロード命令と、から成る命令のシーケンスをアクセスするステップであって、
    前記ロード命令が前記第1のアドレス範囲に影響を与えるか否か知られていない、
    アクセス・ステップと、
    b)前記命令のシーケンスから前記第1のストア命令を除去するステップであって、前記ロード命令に関連するメモリ・アドレスを保護レジスタにストアするステップを含むステップと、
    c)前記第1のストア命令無しに前記命令のシーケンスを実行するステップと、
    d)前記実行中に、前記ロード命令が前記第1のアドレス範囲内のアドレスに影響を与えたか否かを決定し、もし与えたなら、例外を発生して前記第1のストア命令を含む命令のシーケンスを再実行するステップと、
    から成る方法。
  11. 請求項10に記載の方法において、前記ステップb)が更に、前記保護レジスタを示すために、前記第2のストア命令にフラグを付加するステップを含むことを特徴とする方法。
  12. 請求項10に記載の方法において、前記ステップb)が更に、前記ロード命令をロード・アンド・プロテクト命令に変更するステップを含むことを特徴とする方法。
  13. 命令のスケジューリング及び実行の方法であって、
    a)第1のアドレス範囲へストアする第1のストア命令と、前記第1のアドレス範囲からロードするロード命令と、前記第1のストア命令及び前記ロード命令に介入する第2のストア命令と、から成る命令のシーケンスをアクセスするステップであって、
    前記第2のストア命令が前記第1のアドレス範囲内のアドレスにストアするか否か知られていない、
    アクセス・ステップと、
    b)前記命令のシーケンスから前記ロード命令を除去するステップであって、前記第1のアドレス範囲に関連するメモリ・アドレスを保護レジスタにストアするステップを含むステップと、
    c)前記ロード命令無しに前記命令のシーケンスを実行するステップと、
    d)前記実行中に、前記第2のストア命令が前記第1のアドレス範囲内のアドレスにストアするか否かを決定し、もしストアするなら、例外を発生して前記ロード命令を含む命令のシーケンスを再実行するステップと、
    から成る方法。
  14. 請求項13に記載の方法において、前記ステップb)が更に、前記保護レジスタを示すために、前記第2のストア命令にフラグを付加するステップを含むことを特徴とする方法。
  15. 請求項13に記載の方法において、前記ステップb)が更に、前記第1のストア命令をストア・アンド・プロテクト命令に変更するステップを含むことを特徴とする方法。
  16. 命令のスケジューリング及び実行の方法であって、
    a)第1のアドレス範囲からロードするロード命令と、前記第1のアドレス範囲内のアドレスにストアするか否か知られていない第1のストア命令と、前記第1のアドレス範囲にストアする第2のストア命令とから成る、命令のシーケンスをアクセスするステップであって、
    前記第1のストア命令が前記ロード命令及び前記第2のストア命令に介入する、
    アクセス・ステップと、
    b)前記命令のシーケンスから前記第2のストア命令を除去するステップであって、前記第1のアドレス範囲に関連するメモリ・アドレスを保護レジスタにストアするステップを含むステップと、
    c)前記第2のストア命令無しに前記命令のシーケンスを実行するステップと、
    d)前記実行中に、前記第1のストア命令が前記第1のアドレス範囲内のアドレスにストアするか否かを決定し、もしストアするなら、例外を発生して前記第2のストア命令を含む命令のシーケンスを再実行するステップと、
    から成る方法。
  17. 請求項16に記載の方法において、前記ステップb)が更に、前記保護レジスタを示すために、前記第1のストア命令にフラグを付加するステップを含むことを特徴とする方法。
  18. 請求項16に記載の方法において、前記ステップb)が更に、前記ロード命令をロード・アンド・プロテクト命令に変更するステップを含むことを特徴とする方法。
  19. 請求項16に記載の方法において、前記第2のストア命令が、前記ロード命令が前記第1のアドレス範囲からロードしたのと同じ値を前記第1のアドレス範囲にストア・バックすることを特徴とする方法。
JP2005334136A 1999-06-14 2005-11-18 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置 Expired - Lifetime JP3872809B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/332,338 US7089404B1 (en) 1999-06-14 1999-06-14 Method and apparatus for enhancing scheduling in an advanced microprocessor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001504103A Division JP2003502754A (ja) 1999-06-14 2000-06-12 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置

Publications (2)

Publication Number Publication Date
JP2006099800A true JP2006099800A (ja) 2006-04-13
JP3872809B2 JP3872809B2 (ja) 2007-01-24

Family

ID=23297783

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2001504103A Pending JP2003502754A (ja) 1999-06-14 2000-06-12 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置
JP2005334136A Expired - Lifetime JP3872809B2 (ja) 1999-06-14 2005-11-18 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2001504103A Pending JP2003502754A (ja) 1999-06-14 2000-06-12 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置

Country Status (9)

Country Link
US (3) US7089404B1 (ja)
EP (1) EP1194855B1 (ja)
JP (2) JP2003502754A (ja)
KR (2) KR100758367B1 (ja)
CN (1) CN1202480C (ja)
AT (1) ATE441147T1 (ja)
CA (1) CA2377164C (ja)
DE (1) DE60042824D1 (ja)
WO (1) WO2000077965A2 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6981110B1 (en) 2001-10-23 2005-12-27 Stephen Waller Melvin Hardware enforced virtual sequentiality
US7316017B1 (en) * 2003-01-06 2008-01-01 Slt Logic, Llc System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
US7386619B1 (en) * 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
KR100607987B1 (ko) * 2004-06-24 2006-08-02 삼성전자주식회사 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법
US20060150188A1 (en) * 2004-12-21 2006-07-06 Manuel Roman Method and apparatus for supporting soft real-time behavior
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
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
US9189233B2 (en) 2008-11-24 2015-11-17 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8719649B2 (en) 2009-03-04 2014-05-06 Alcatel Lucent Method and apparatus for deferred scheduling for JTAG systems
US8621301B2 (en) 2009-03-04 2013-12-31 Alcatel Lucent Method and apparatus for virtual in-circuit emulation
US8775884B2 (en) 2009-03-04 2014-07-08 Alcatel Lucent Method and apparatus for position-based scheduling for JTAG systems
US20100229058A1 (en) * 2009-03-04 2010-09-09 Suresh Goyal Method and apparatus for system testing using scan chain decomposition
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US9405547B2 (en) * 2011-04-07 2016-08-02 Intel Corporation Register allocation for rotation based alias protection register
WO2013048379A1 (en) 2011-09-27 2013-04-04 Intel Corporation Expediting execution time memory aliasing checking
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9183105B2 (en) * 2013-02-04 2015-11-10 Alcatel Lucent Systems and methods for dynamic scan scheduling
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
CN103761073A (zh) * 2014-01-08 2014-04-30 东南大学 一种面向ARMv7的基于推测的指令动态调度方法
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US11080182B2 (en) * 2019-01-07 2021-08-03 International Business Machines Corporation Object load introspection using guarded storage

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4817118A (en) 1987-06-29 1989-03-28 Step Engineering Mobile incident logger
US4903264A (en) 1988-04-18 1990-02-20 Motorola, Inc. Method and apparatus for handling out of order exceptions in a pipelined data unit
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5253349A (en) * 1991-01-30 1993-10-12 International Business Machines Corporation Decreasing processing time for type 1 dyadic instructions
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5274815A (en) 1991-11-01 1993-12-28 Motorola, Inc. Dynamic instruction modifying controller and operation method
US5349658A (en) 1991-11-01 1994-09-20 Rourke Thomas C O Graphical user interface
JP2786574B2 (ja) 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
EP0663083B1 (en) 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5450560A (en) 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US6704861B1 (en) * 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5420990A (en) 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5463745A (en) 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5588126A (en) * 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5537559A (en) 1994-02-08 1996-07-16 Meridian Semiconductor, Inc. Exception handling circuit and method
US5559976A (en) 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
US5546599A (en) 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
TW260765B (ja) 1994-03-31 1995-10-21 Ibm
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5689712A (en) 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
US5537620A (en) * 1994-09-16 1996-07-16 International Business Machines Corporation Redundant load elimination on optimizing compilers
JP3617686B2 (ja) 1994-09-26 2005-02-09 株式会社リコー 画像形成装置及び画像形成装置管理システム
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5694577A (en) * 1995-06-06 1997-12-02 Matsushita Electric Industrial Co., Ltd. Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5819056A (en) 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5809273A (en) 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US6185668B1 (en) * 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5901308A (en) * 1996-03-18 1999-05-04 Digital Equipment Corporation Software mechanism for reducing exceptions generated by speculatively scheduled instructions
US5875340A (en) * 1996-05-31 1999-02-23 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US6173366B1 (en) * 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5864692A (en) 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US6011908A (en) * 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US5918005A (en) * 1997-03-25 1999-06-29 International Business Machines Corporation Apparatus region-based detection of interference among reordered memory operations in a processor
US5931957A (en) * 1997-03-31 1999-08-03 International Business Machines Corporation Support for out-of-order execution of loads and stores in a processor
US5790625A (en) 1997-04-14 1998-08-04 International Business Machines Corporation Mechanism for enabling an array of numerous large high speed counters
US5996060A (en) * 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing
US6505296B2 (en) 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US6148394A (en) * 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6609189B1 (en) * 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6192465B1 (en) * 1998-09-21 2001-02-20 Advanced Micro Devices, Inc. Using multiple decoders and a reorder queue to decode instructions out of order
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location

Also Published As

Publication number Publication date
US20120246453A1 (en) 2012-09-27
KR20020022068A (ko) 2002-03-23
WO2000077965A2 (en) 2000-12-21
ATE441147T1 (de) 2009-09-15
EP1194855B1 (en) 2009-08-26
US7089404B1 (en) 2006-08-08
DE60042824D1 (de) 2009-10-08
JP3872809B2 (ja) 2007-01-24
EP1194855A2 (en) 2002-04-10
KR20060002031A (ko) 2006-01-06
CA2377164C (en) 2007-09-25
CN1355902A (zh) 2002-06-26
CN1202480C (zh) 2005-05-18
US9081563B2 (en) 2015-07-14
EP1194855A4 (en) 2004-11-03
JP2003502754A (ja) 2003-01-21
US8209517B1 (en) 2012-06-26
KR100758367B1 (ko) 2007-09-14
WO2000077965A3 (en) 2001-04-05
CA2377164A1 (en) 2000-12-21

Similar Documents

Publication Publication Date Title
JP3872809B2 (ja) 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置
US10061582B2 (en) Method for increasing the speed of speculative execution
US5926832A (en) Method and apparatus for aliasing memory data in an advanced microprocessor
KR100334479B1 (ko) 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치
KR100394967B1 (ko) 개선된 마이크로프로세서를 위한 게이트 저장 버퍼
JP3615770B2 (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
US7716452B1 (en) Translated memory protection apparatus for an advanced microprocessor
US5958061A (en) Host microprocessor with apparatus for temporarily holding target processor state
KR20010073182A (ko) 전송을 적재하는 저장 메커니즘
JP3776132B2 (ja) マイクロプロセッサの改良
US6668287B1 (en) Software direct memory access
TW201732590A (zh) 向量式原子記憶體更新指令
JP3621116B2 (ja) 先進のプロセッサのための変換メモリ保護装置
WO2000065440A2 (en) Exception handling method and apparatus for use in program code conversion
WO1999003037A1 (en) Host microprocessor with apparatus for temporarily holding target processor state
EP3935491B1 (en) Instruction ordering
GB2349486A (en) Exception handling in program code conversion

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060919

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: 20060921

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061020

R150 Certificate of patent or registration of utility model

Ref document number: 3872809

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20091027

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20101027

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20111027

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20111027

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121027

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20121027

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131027

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term