JP3096423B2 - スーパースカラまたはvliwプロセッサにおけるメモリ操作の順序替えのための方法及び装置 - Google Patents

スーパースカラまたはvliwプロセッサにおけるメモリ操作の順序替えのための方法及び装置

Info

Publication number
JP3096423B2
JP3096423B2 JP08098035A JP9803596A JP3096423B2 JP 3096423 B2 JP3096423 B2 JP 3096423B2 JP 08098035 A JP08098035 A JP 08098035A JP 9803596 A JP9803596 A JP 9803596A JP 3096423 B2 JP3096423 B2 JP 3096423B2
Authority
JP
Japan
Prior art keywords
exception
instruction
bit
delayed
address
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.)
Expired - Fee Related
Application number
JP08098035A
Other languages
English (en)
Other versions
JPH08314721A (ja
Inventor
マフムット・ケマール・エビシオグルー
デッビット・アーノルド・ルイック
ジャイミー・ハムベルト・モレノ
ガブリエル・モーリシオ・シルバーマン
フイリップ・ブラウン・ウィンターフィールド
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH08314721A publication Critical patent/JPH08314721A/ja
Application granted granted Critical
Publication of JP3096423B2 publication Critical patent/JP3096423B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/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
    • 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
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的には、プロ
グラムにおける命令レベルの並列化を利用するために、
スーパースカラあるいはVLIW(very long
instruction word)プロセッサにお
けるメモリ操作の順序替えに関し、より詳しくは、任意
に分離されたあるいは曖昧なメモリ参照にもかかわらず
メモリ操作を順序替えし、それによってコンピュータ・
システムの性能を著しくな改善するための方法および装
置に関する。該方法および装置は、単一プロセッサ・シ
ステムおよび多重プロセッサ・システムに適用が可能で
ある。
【0002】
【従来の技術】高性能の現代のプロセッサは、プログラ
ムにおける命令レベルの並列化を利用するために、すな
わち同時に二つ以上の命令を実行するために、スーパー
スカラおよび/またはVLIW技術に依存している。こ
のようなプロセッサは、多数の機能ユニットを含んでお
り、命令の順次ストリームを実行し、一サイクルごとに
メモリから二以上の命令を取り出すことができ、また、
リソースの依存性および利用可能性に応じてサイクルご
とに二以上の命令をディスパッチすることができる。こ
れらの機能は、コンパイラによって活用され、コンパイ
ラは、スーパースカラおよび/またはVLIW機溝のた
めに最適化されたコードを生成する。
【0003】順次プログラムにあっては、メモリ・ロー
ド操作は、メモリからデータを読み出し、それをプロセ
ッサ・レジスターにロードし、ロードされたデータに依
存する一連の操作を頻繁に開始する。利用可能なリソー
スがあるスーパースカラあるいはVLIWプロセッサで
は、メモリ・ロード操作をできるだけ早期に開始すると
が有利である。なざなら、他の遊休のリソースを使用で
きるようになり、(潜在的なキャッシュ・ミスを含め
て)メモリ・アクセスの遅延を隠し、それによってプロ
グラムの実行時間が短縮できるからである。ロードなら
びにそのロードに依存する操作は、厳密な順次プログラ
ムで行なわれるより早期に実行され、実行時間の短縮が
達成される。このためには、非ブロック化ロード(すな
わち、キャッシュ・ミスを生みだすロードを越えて命令
を発し続ける)を実行する機能、先行するストアの前に
ロード(すなわち、非プログラム順序のロード)を発行
する機能、先行するブランチの前へロードを移動させる
(すなわち、投機の)機能、およびあるロードに依存す
る操作を他の操作の前へ移動させる機能が必要である。
言い換えれば、プログラムの操作の順序替えを行なう機
能が必要である。
【0004】メモリ操作の順序替えを行なう機能は、い
くつかの要因、とくにプログラムの実行における実行時
依存性から生じる要因によって制限される。これらの要
因には、条件付きブランチ命令の前へ操作を移動するこ
とおよび曖昧なメモリ参照が含まれる。
【0005】ある操作を先行する条件付きブランチ命令
の前へ移動することは、その操作が本当に必要かどうか
がわかる前に実行されるため、プログラムの実行に投機
性を招くことになる。その操作が必要であろうという期
待のもとで、コードの移動が行なわれる。副作用のない
レジスタ間操作は、その結果が未使用(「死んだ」)レ
ジスタに保管される限り、投機的に実行することができ
る。操作の必要がない場合には、その結果は単に無視さ
れる。他方、副作用のあるレジスタ間操作及びメモリ・
ロード操作は、例外(エラー)、保護違反、あるいは揮
発性メモリ位置へのアクセスなど、起きてはならない副
作用から回復する機構が存在している場合にのみ投機的
に実行することができる。
【0006】あるメモリ・ロード操作を先行するメモリ
・ストア操作の前へ動かすことは、コンパイル時にロー
ドとストアによってアクセスされるメモリ位置が異なる
ことを判別できない場合には、プログラムの実行におい
て、曖昧な参照という問題が生じる。曖昧でないメモリ
参照は、衝突しないので、非プログラム順序で実行する
ことができる。他方、曖昧なメモリ参照は、衝突の可能
性を検出し、定刻前にロードされたデータを無視し、ス
トア操作が行なわれた後に正しい値を再ロードする機構
が存在する場合にのみ非プログラム順序で実行すること
ができる。この衝突は、複数バイトのオペランドの一バ
イトで起こる場合があるため、ロード操作を行なうこと
が可能になる前にストア操作を完了することが必要にな
る。
【0007】上に述べた二つの問題は異なるものである
が、その影響と要求は同じである。すなわち、曖昧さの
副作用を検出しまたそこから回復するための機構が存在
しなければならない。以下の説明では、これらの問題
は、いずれも「順序替えメモリ・アクセスの問題」と呼
ぶ。
【0008】現在用いられているコンパイルの手法は、
メモリ操作の順序替えのための静的メモリの曖昧さをな
くすアルゴリズムを含むものである。これらのアルゴリ
ズムは、二つのメモリ参照、すなわち一つのメモリ・ス
トア操作に続く一つのメモリ・ロード操作が同じ位置に
アクセスするかどうかを判別する。参照が衝突しなけれ
ば(すなわち、それらが異なるメモリ位置をアドレス指
定する場合には)、操作を順序替えして、ロードをスト
アの前に実行することが可能である。静的な曖昧さをな
くす作業は、メモリ・アクセスのパターンが予測可能な
場合にのみうまく機能する。しかし、そうでない場合も
多く、コンパイラ/プログラマは、参照が実際に衝突す
ることについて控えめな仮定を立て、順次(最初の順序
で)実行してプログラムにおける命令レベルの並列化の
可能性を低くするようにしなければならない。
【0009】メモリ操作の順序替えには、これまでにも
強い関心がはらわれてきた。例えば、K.ディフェンド
ーフおよびM.アレンの論文「モトローラ88110ス
ーパースカラRISCマイクロプロセッサの機構」IE
EE Micro、1992年4月、pp.40−63
を参照されたい。モトローラ88110プロセッサ中の
動的スケジューラは、ストア命令をストア待ち行列にデ
ィスパッチしストアされるべきオペランドが他の操作で
まだ生成されていない場合にはそのストア操作は停止す
る。その後のロード命令は、そのストアを迂回してただ
ちにメモリにアクセスし、メモリ・アクセスの動的順序
替えを行なうことができる。アドレス比較器は、アドレ
スの危険を検出し、ロードがストアの前に同じアドレス
へ進むのを防ぐ。待ち行列は、三つの未解決のストア操
作を保持するため、この構造によって、きついループの
実行時オーバーラップが可能となる。この構造は、順次
実行のストリームの中でロードを実際に前へ動かすもの
ではなく、ストア操作がが停止されたことによってロー
ド操作が遅延することがないようにするだけである。
【0010】一定の条件下でのロード/ストア操作のル
ープから外への静的な動きは、K.エブシオグルー、R
・グローブス、K.キム、G.シルバーマン、および
I.ジブの「スーパースカラ環境内でのVLIWコンパ
イレーションの手法」プログラミング言語の設計と実施
に関するSIGPLAN会議(PLDI’94)、19
94年、に記載されている。このアプローチは、基本的
には、条件付きで実行されるロードとストアが安全とみ
なされる場合にはそれらを移動させる追加の機能を有す
る、ループ不変命令のループから外への静的な移動の一
般化である。この最適化の作業のために必要な条件は、
衝突するメモリ参照(曖昧なメモリ参照)の可能性がな
いことを保証することを含むが、これは、常に可能なこ
とではない。
【0011】プロセッサのアーキテクチャを修正するこ
となしに投機的ロードのスケジューリングを可能にする
コンパイレーションの手法は、D.バーンステン、M.
ロデー、およびM.ホプキンズの米国特許出願「コンピ
ュータのための命令スケジューラー」(1992年5月
14日出願、第07/882739号の維続出願として
の、1994年12月27日出願、第08/36483
6号、本出願の譲受人に譲渡)に記載されている。この
アプローチでは、投機的実行のためのロード操作の適当
性は、それを、その操作で使用されるベース・レジスタ
に適用される条件および/またはそのベース・レジスタ
の内容に応じた一定数のカテゴリに分類することによっ
て判別される。すなわち、上記のK.エブシオグルー等
が記載している手法と同様に、このアプローチも、コン
パイル時に検出できる場合に限定される。
【0012】「投機的な曖昧さの除去」とよばれるハイ
ブリッドなメモリの曖昧さをなくす手法が、A.フア
ン、G.スレーブンバーグ、およびJ.シェンの「投機
的な曖昧さの除去:ダイナミック・メモリの曖昧さをな
くすためのコンパイレーションの手法」第21回コンピ
ュータ・アーキテクチャ国際シンポジウム、シカゴ、p
p.200−210、1994年、に提案されている。
このアプローチは、ハードウエアとコンパイラの手法を
組み合わせてその目的を達成しようとするものである。
この手法は、ハードウエア内のガードされた実行機能を
必要とする曖昧なメモリ参照のいずれかの結果を見越し
てコードに変形を行なうものである。各対の曖昧なメモ
リ参照ごとに、コンパイラは、メモリ参照に依存するコ
ードの二つのバージョンを生成する。一つのバージョン
は、アドレスが重なり合うことを仮定し、他のバージョ
ンは重なり合わないことを仮定する。いずれのバージョ
ンにおいても、副作用のない操作が行なわれ、副作用の
ある操作は、二つのアドレスの比較の結果によってガー
ドされる。このアプローチは、ガードされた実行の機能
に加えてもとのプログラムより多くの操作とリソースを
必要とし、曖昧さの除去しか行なわず、ブランチの前へ
ロード操作を移動させる機能をもたない。
【0013】ロード操作をストア操作の前に実行できる
ようにしてプログラム実行のコンパイラの最適化を行な
う他の方法が、A.ニコローの「実行時の曖昧さの除
去:静的に予想できない依存性への対処」IEEE議事
録第38巻、1989年5月、に記載されている。この
アプローチは、ストア操作の前へ移動させることのでき
るロードのコンパイラー識別と必要なコードのコンパイ
ラ挿入に依存するもので、上記資料にA.フアン等が記
載しているように、プロセッサがロードとストア操作の
諸アドレスの間に一致があるかどうか実行時にチェック
を行なうことができるが、保護された実行機能はない。
一致がなければ、プロセッサは、ロードがストアの前へ
動かされた一連の命令を実行する。他方、一致があれ
ば、プロセッサは、ロードがストアの後に行なわれる一
連の命令を実行する。アドレスの一致のチェックがプロ
セッサによって行なわれるので、このアプローチは、よ
り多くの命令の実行とそれに関連する依存性(例:メモ
リ・アドレスの明示生成とアドレス比較)による潜在的
な性能劣化を招く。さらに、順序替えロード操作は、ロ
ードおよびストアの両操作のためのメモリ・アドレスが
解決されるまで行なうことができない。
【0014】非プログラム順序操作の性能を改善するた
めの方法および装置は、M.クマール、K.エブシオグ
ルー、およびE.クロンスタッドの米国特許出願「コン
ピュータ・システムの性能を改善するための方法および
装置」(1992年5月6日出願第07/880102
号の維続出願としての、1994年10月7日出願、第
08/320111号、本出願の譲受人に譲渡)に記載
されている。この方法およびアプローチは、コンパイラ
の手法、4つの新しい命令、およびアドレス比較装置を
使用するものである。コンパイラは、メモリ・ロード操
作をメモリ・ストア操作の前へ静的に移動させる。非プ
ログラム順序でロードされたオペランドのアドレスは、
アソシアティブ・メモリへ保管される。要求があれば、
アドレス比較装置が、アソシアティブ・メモリに保管さ
れたアドレスをストア操作によって生成されたアドレス
と比較する。衝突が検出されれば、問題を解決するため
の回復コードが実行される。このシステムは、それらの
アドレスの比較を行なう必要がなくなれば、アソシアテ
ィブアドレス内に保管されたアドレスを消去する。この
アプローチは、メモリ操作の順序替えの問題を扱うだけ
のものである。メモリ・ロード操作を投機的に実行する
機能は含んでいない。さらに、このアプローチは、アド
レス内の衝突のチェックを始動させまた必要のなくなっ
たオペランドのアドレスを消去するための特別の命令を
必要とし、また、コンパイラに潜在的な衝突をすべて検
出してペアリングさせなければならない。その結果、こ
のアプローチは、(おそらくはエラーによって生じる)
ストア/ロード命令の予想されない組合わせによって生
じる衝突に対処することができないし、また、コヒーレ
ントな多重プロセッサのコンテキストで使用することも
できない。
【0015】関連する主題として、コンパイラ・サポー
トをともなったハードウエア機構が、K.エブシオグル
ー、およびM.シルバーマンの米国特許出願「投機的命
令における例外の取り扱い」(1995年1月24日出
願、第08/377563号、本出願の譲受人に譲渡)
に記載されている。この機構は、投機的に実行される命
令によって生じる例外からオーバーヘッドを少なくする
ものである。この機構は、投機的な命令の実行中に生成
された例外を示すためのレジスタごとの追加ビット、レ
ジスタ・オペランドを保管して例外によって無効化され
た投機的命令が再実行されるようにするための二つの付
加的レジスタ・ファイル、ならびに例外の発生源をたど
ることのできる情報などのハードウエアに依存するもの
である。この機構は、投機的命令にのみ適用可能で、順
序替えされたメモリ操作には適用できない。
【0016】F.アマーソン、R.ガプタ、V.カター
ル、M.シュランスカーの特許出願「ロード命令の積極
的実行を可能にするメモリ・プロセッサ」(1993年
4月2日出願、英国特許出願、GB2265481A、
第9302148.3号)には、ロード命令を順序替え
するための装置および方法が記載されている。この特許
出願は、コンパイラが、待ち時間の長いロード命令を命
令の順序の前の方へ移動させるコンピュータ・システム
のためのメモリ・プロセッサを記載したものである。こ
のメモリ・プロセッサは、ロード命令を、ロードに先立
って実行されたであろうなんらかの順序が後のストア命
令がそのロード命令によって指定されたと同じアドレス
を参照するかどうかを判別するための十分な時間だけ特
別のレジスタ・ファイルに保管する。その場合には、メ
モリ・プロセッサが、最初のロードを命令ストリームの
中に再挿入し、それが順序通りに実行されるようにす
る。したがって、このシステムでは、コンパイラの制御
のもとでロードをストアの前へ移動させることができる
もので、ハードウエアに依存して衝突から回復するため
のコードを挿入する。しかし、このシステムでは、ロー
ドに依存する他の命令の順序替えを行なうことはできな
い(ハードウエア・リソースは、ロード命令のみを再挿
入することができる)。また、ロードまたは他の命令の
投機的実行を行なうこともできない。言い換えれば、こ
の方法および装置は、コンパイルするときに最大値を知
る必要のあるロード命令の待ち時間を隠すことに限られ
ている。
【0017】
【発明が解決しようとする課題】したがって、本発明の
一つの目的は、ロード命令を実行ストリームの前の方へ
移動することができ、メモリからの読み出しと非プログ
ラム順序でロードされたデータを用いることの間に任意
の距離を置くことができる機構を提供することである。
本発明の他の一つの目的は、ロード操作のループから外
ヘの移動に限定されずまた曖昧なメモリ参照を許容する
ことのできる機構を提供することである。本発明のさら
に他の一つの目的は、曖昧さをなくすために一つだけ追
加の命令を実行し、それにより性能を高め、またメモリ
の曖昧さの解消を投機的実行と統合する機構を提供する
ことである。本発明のさらに他の一つの目的は、導入さ
れるオーバーヘッドが命令一つだけであり、ロード操作
を任意に命令ストリームの前のほうへ移動させることの
できる機構を提供することである。本発明のさらに他の
一つの目的は、ストア/ロード命令の予想しない組合わ
せの結果生じる衝突に対処することができ、コヒーレン
トな多重プロセッサのコンテキストで使用することので
きる機構を提供することである。本発明のさらに他の一
つの目的は、必要な実装がかなり簡単な、投機的実行と
メモリ操作の順序替えを組み合わせる機構を提供するこ
とである。
【0018】
【課題を解決するための手段】本発明にもとづけば、任
意に分離された曖昧なメモリ参照についてでも、スーパ
ースカラまたはVLIWプロセッサにおけるメモリ操作
の順序替えを行なうための方法および装置が提供され
る。この順序替えは、従属操作の順序をプログラム実行
の前のほうへ移動させることによってプログラムの経路
長を短縮し、それによってコンピュータ・システムの性
能を高めるものである。この方法および装置は、メモリ
操作の順序替えと投機的実行を統合するものであり、単
一プロセッサ・システムにもまた多重プロセッサ・シス
テムにも適用が可能である。装置は、メモリのアドレス
指定における衝突をチェックする多重入力アドレス比較
器、順序替えされたメモリ操作によって生成された衝突
を示す比較器入力ごとの状況ビット、保留の例外を示す
ためのプロセッサのレジスタ・ファイル内のレジスタご
との状況ビット、レジスタを非プログラム順序でロード
し、非プログラム順序でロードされたレジスタをコピー
し、非プログラム順序でロードされたレジスタをコミッ
トするための特別な命令、およびこれらのリソースを使
用するコードならびに非プログラム順序で命令を実行す
る間に生じる例外から回復するためのコードを生成する
ためのコンパイラ・サポートから溝成される。
【0019】非プログラム順序のメモリ操作から、下記
の要件が生じる。 ・非プログラム順序ロード操作によって生成される例外
(副作用)は、ロードされたデータがプログラム順序で
の(非投機的)操作に使用されるまで報告されてはなら
ない(行なわれてはならない)。 ・ロード操作をストア操作の上へ移動させたときのアド
レスのオーバーラップによる衝突が検出されなければな
らない。 ・ストアの前にロードされたデータは、プログラム順序
で使用される前に妥当性がチェックされなければならな
い(言い換えれば、オーバーラップするストアにより無
効となっていないことのチェック)。 ・揮発性の位置には投機的にロードすることができな
い。
【0020】本発明で用いられるアプローチは、下記に
依存するものである。 ・命令レベルでの並列化を利用するためのコンパイラに
よるコードの静的順序替え。 ・曖昧なメモリ・アクセスにおける衝突を検出し、遅延
した例外を報告し、非プログラム順序でロードされたデ
ータを操作するためのハードウエア・サポート。 ・非プログラム順序でロードされたデータを操作しまた
遅延した例外から回復するためのコードのコンパイラ生
成。
【0021】
【発明の実施の形態】図1および図2は、本発明によっ
て行なわれる非プログラム順序および他の操作のフロー
チャートを示す。
【0022】プロセッサが発行する各命令およびコヒー
レントな多重プロセッサ・システムにおける他のプロセ
ッサが発行する各ストア操作は、機能ブロック101で
デコードされる。命令が、決定ブロック102で非プロ
グラム順序ロード操作と判別され、該命令が、決定ブロ
ック103で例外を生成すると判別された場合、機能ブ
ロック104で、ロード命令の目的レジスタに関連する
遅延例外(DX)ビットがセットされるが、プロセッサ
にはいかなる例外も発生されない。他方、該命令が例外
を生成しない場合には、該命令によって参照されるメモ
リ・アドレスの範囲がアドレス比較器(AC)のエント
リに保管され、このエントリの有効なビットが、機能ブ
ロック105で有効にセットされる(すなわち、アドレ
ス比較器のエントリは、最近非プログラム順序でロード
されたメモリ・アドレスのキャッシュとして作用す
る)。
【0023】命令が、決定ブロック106でストア操作
と判別された場合、決定ブロック107で、該命令によ
って参照されるメモリ・アドレスの範囲がアドレス比較
器の中のすべてのエントリと比較される。機能ブロック
108では、この範囲と一致する各エントリについて、
対応する有効ビットを無効にセットする。決定ブロック
109では、すべてのアドレスが比較されたかどうか判
別する。
【0024】該命令が、決定ブロック110でコミット
操作と判別された場合、命令のソース・レジスタに関連
するアドレス比較器エントリ内の有効ビットが決定ブロ
ック111でチェックされる。該ビットが偽にセットさ
れている場合、機能ブロック112で遅延例外が生成さ
れる。同時に、そのコミット命令のソース・レジスター
の遅延例外ビットも決定ブロック113でチェックされ
る。このビットがセットされた場合、機能ブロック11
4で遅延例外が生成される。
【0025】決定ブロック115で、操作が他のいずれ
かの操作であると判別された場合、決定ブロック116
で該命令のすべてのソース・レジスタの遅延例外ビット
がチェックされる。これらのビットのいずれかがセット
された場合、機能ブロック117で、命令の目的レジス
タの遅延例外ビットがセットされるが、プロセッサには
いかなる例外も発生されない。それ以外では、機能ブロ
ック118で、命令の目的レジスターの遅延例外ビット
が偽とセットされる。
【0026】決定ブロック119で遅延例外が判別され
てプロセッサに発生された場合、該例外命令は打ち切ら
れ、実行制御が機能ブロック120で例外ハンドラへ移
される。この例外ハンドラは、該例外を生成しまた該例
外が発生される前に実行されたロード操作ならびにロー
ドに依存するすべての操作の実行を繰り返す「回復コー
ド」の実行を担当するものである。
【0027】図1および図2のフローチャートには、本
発明の以下の特徴が示されている。 例外報告: ロード操作の非プログラム順序実行の間に
生じるエラー(副作用)(保護違反など)は、非プログ
ラム順序でロードされたデータが順次命令ストリームの
中のロード命令の元の場所でプログラム順序の操作に必
要とされるまでは報告されない。エラーがある場合に
は、ロード命令ならびに非プログラム順序で実行された
ロードに依存するすでに実行された他の命令がその地点
で再実行される。
【0028】例外を生じるおそれのある非プログラム順
序ロード命令を実行するため、目的レジスタには「遅延
例外」ビットのタグが付けられる。このビットは、遅延
の形で、非プログラム順序ロード命令の実行中に発生し
た例外を報告するために用いられる。遅延例外ビット
は、非プログラム順序ロードが例外を生成したときにセ
ットされ、レジスタが他の操作に使用されるときに伝播
される。コミット操作は、そのオペランドの遅延例外ビ
ットをチェックする。遅延例外ビットがセットされる場
合には、遅延例外が生成される。例外ハンドラは、遅延
の形で報告される例外を生じたロード命令ならびにそれ
に依存するすでに実行された他の命令の再実行を担当す
るものである。
【0029】記憶・アドレスのオーバーラップによる衝
突: ストア操作の前へ動かされたロード操作は、メモ
リ・アドレスのオーバーラップによる衝突を生じること
がある。衝突は、また、コヒーレントな多重プロセッサ
環境の中で他のプロセッサによって行なわれる操作によ
って生じることもある。いずれの場合にも、非プログラ
ム順序ロードは、非プログラム順序ロードの実行からロ
ードされたデータの最初のプログラム順序の使用までの
間に(同じまたは別のプロセッサによる)同じメモリ位
置へのストア操作の結果として無効になったデータにア
クセスすることがある。
【0030】ロード/ストア・アドレスのオーバーラッ
プから生じる衝突は、多重エントリ「アドレス比較器」
(AC)を用いて動的に検出される。非プログラム順序
ロード操作を実行するときには、ロードされたオペラン
ドの実アドレスの範囲がアドレス比較器エントリ内に保
管される。
【0031】ストア操作が実行されるときには、そのス
トア・オペランドの実アドレスの範囲がアドレス比較器
内のすべてのエントリの内容と比較される。同様に、コ
ヒーレント多重プロセッサ・システムでは、システム内
の他のプロセッサからストア参照を受け取ったときにア
ドレス比較器エントリもチェックされる。各アドレス比
較器エントリについて、その実アドレスにおけるオーバ
ーラップが検出された場合には、そのエントリは無効の
マークが付けられる。
【0032】非プログラム順序でロードされたデータの
コミット: 非プログラム順序でロードされたオペラン
ドならびにそれから生じるすべての値は、非投機的(プ
ログラム順序)命令の中のオペランドとして使用できる
ようになる前に「コミットされる」必要がある。すなわ
ち、プログラムは、特定のレジスターに関連するアドレ
ス比較器エントリがデータが使用される地点(通常は、
プログラム内の元の場所)でまだ有効であることを検査
する必要がある。このためには特別の命令が用いられ、
非プログラム順序でロードされたデータを別のレジスタ
にオプションでコピーし、同時に関連するアドレス比較
器エントリの有効性を検査する。エントリが有効である
場合には、コミット(コピー)操作が進行する。一方、
エントリが無効である場合には、遅延例外が発生され
る。例外ハンドラは、そのロード操作および該ロードに
依存するすでに実行された他のすべての操作を再実行す
る。
【0033】揮発性ロード: 揮発性の位置からのロー
ドは、非プログラム順序で実行されない。(記憶保護機
構によって検出された)揮発性の位置からの非プログラ
ム順序にロードするいかなる試みも、単に関連するレジ
スタの遅延例外ビットを設定するだけである。記憶装置
へのアクセスは行なわれない。
【0034】ハードウエアの実装 図3は、上に述べた非プログラム順序ロードおよび他の
操作をサポートするハードウエア・リソースが配備され
たプロセッサを示す。このプロセッサは、固定および浮
動小数点算術論理装置(ALU)など複数の機能ユニッ
トを含む。図には、6個の機能ユニット201ないし2
06が示されているが、当業者には、具体的なプロセッ
サの設計に応じてより多くのまたはより少ない機能ユニ
ットを配備できることが理解されよう。これらの機能ユ
ニットは、データ・キャッシュ207からデータにアク
セスし、多重プロセッサ・システムの場合には、該デー
タ・キャッシュが他のプロセッサに接続されている。機
能ユニットは、汎用レジスタ(GPR)208、浮動小
数点レジスタ(FPR)209、および条件レジスター
210に適当に接続される。
【0035】これまでに記載した構造は、従来のもので
当業者にはよく理解されているものである。本発明は、
GPR208、FPR208、および条件レジスタ21
0にそれぞれアドレス比較器(AC)バッファ211お
よび遅延例外(DX)ビット212、213、214を
それぞれ付加するものである。より詳細には、一つの遅
延例外ビットが非プログラム順序で実行された操作の目
的となりえる各レジスタに関連付けられる。遅延例外ビ
ットは、特殊レジスタとしてアクセス可能であり、ま
た、コンテキストの切り替え時にプロセッサの状態の一
部として保管され復元される。
【0036】アドレス比較器エントリは、非プログラム
順序でロードされる各レジスタと関連付けられる。図3
は、静的関連を示しており、各レジスタは、固有の(固
定された)関連エントリをもっている。(あるいは、ア
ドレス比較器エントリは、実行時に、それを必要とする
各レジスタに動的に割り当てることもできる。)本発明
のこの実施形態にあっては、各ACエントリは、(1)
非プログラム順序でロードされたオペランドの実アドレ
スの範囲、(2)非プログラム順序でロードされたオペ
ランドのいずれかのバイトが同じプロセッサまたはコヒ
ーレントな多重プロセッサ・システムの他のプロセッサ
のいずれかからのその後のストア操作によって修正され
たかどうかを示す有効ビット、および、(3)ACエン
トリでカバーされるアドレスの範囲および各ストア操作
のアドレスの範囲における一致をチェックする比較器か
ら構成されている。
【0037】図3に示す実施形態では、ある実装が非プ
ログラム順序でロードすることのできるレジスタ数より
少ないACエントリを含む場合には、ACエントリのな
いレジスタは、永久に無効にセットされる関連する有効
ビットを有するだけである。このようにして、存在しな
いACエントリへのアクセスは無効エントリをが報告
し、遅延例外がを生成する。
【0038】非プログラム順序命令は、以下のようにレ
ジスタ・オペランドのDXビットを使用する。命令が例
外を生成する場合には、目的レジスタのDXビットのみ
がセットされ、例外は発生さ。命令によって使用された
オペランドのDXビットがセットされると(これは、遅
延例外がすでに生成されたことを示す)、目的レジスタ
のDXビットもセットされる。すなわち、遅延例外が非
プログラム順序操作を通して伝播される。
【0039】上に述べたリソースに加えて、本発明は、
プロセッサによって実行される次の命令を含む。Loa
d Register Out−of−order −
この命令は、メモリ位置をレジスタにロードし、有効
のマークが付けられた対応するACエントリ内のオペラ
ンドの実アドレスの範囲をストアする。実際には、ロー
ド命令は、該命令のプログラム順序/非プログラム順序
性を示す1ビットを付加することで拡張される。Mov
e Register Out−of−order −
この命令は、ソース・レジスタの内容とそれに関連す
るACエントリを目的レジスタ及び関連する目的ACエ
ントリにコピーする。その機能から、これは、常に非プ
ログラム順序命令である。ソース・レジスタの遅延例外
(DX)ビットは、目的レジスタの遅延例外ビットにコ
ピーされるが、例外は発生しない。Commit Re
gister − この命令は、プログラム順序でのみ
実行される。これは、非プログラム順序でロードされた
レジスタの内容を他のレジスタにコピーし、ソース・レ
ジスタに関連するアドレス比較器エントリがまだオーバ
ーラップするアドレスへのストアによって無効化されて
いないかどうかをチェックし、また、ソース・レジスタ
の遅延例外ビットがセットされていないかどうかをチェ
ックする。アドレス比較器エントリが有効であり遅延例
外(DX)ビットがセットされていない場合には、レジ
スター移動操作が進行する。ACエントリが有効でない
場合あるいはDXビットがセットされている場合には、
遅延例外が生成される。Invalidate Add
ress Comparator Entries −
この命令は、アドレス比較器の全内容を無効化する。
これは、コンテキストの切り替え時にACが保管されて
いない場合に、古いコンテキストからのACが新しいコ
ンテキストにおいて例外を生成するのを避けるためにシ
ステム・ソフトウエアによって使用される。
【0040】ロード操作の投機の例 以下、上に述べたリソースの使用を例により示す。下の
左側の欄は(元の)コードを示すもので、ストア命令の
下に、ロード命令と、そのロードに依存する若干の算術
命令を含んでいる。この例では、命令名の後の最初のレ
ジスタが目的レジスタであり、残りのレジスタはオペラ
ンドである。 元のコード ストアの上に移動されたロード ・・・ load? r25,10(r4) ・・・ ・・・ store r3,20(r2) store r3,20(r2) ・・・ ・・・ load r5,10(r4) commit r5,r25 add r6,r5,20 add r5,r5,20 sub r7,r6,r7 sub r7,r6,r7 ・・・ ・・・ ロード命令は、右側の欄に示すようにストアの上に動か
される。この例では、目的レジスタがリネームされると
仮定している。右側の欄のロード命令コードにクエスチ
ョン・マークで示されているように、新しい目的レジス
タは非プログラム順序でロードされる。その結果、その
データは目的レジスタにロードされるが、ロードされた
オペランドのアドレスの範囲は、有効のマークが付けら
れたACエントリに保管される。右側の欄に示すよう
に、元のロード命令は、コミット命令で置換される。
【0041】ロードに続く算術命令が下に示すように順
序替えされると仮定する。 前のコード コミット命令の上に移動された操作 load? r25,10(r4) load? r25,10(r4) ・・・ add? r26,r25,20 ・・・ add? r27,r26,r7 ・・・ ・・・ store r3,20(r2) store r3,20(r2) ・・・ ・・・ commit r5,r25 commit r5,r25 add r6,r5,20 copy r6,r26 sub r7,r6,r7 copy r7,r27 ・・・ ・・・ さらに、これらの命令が例外を生じないと仮定する。そ
の場合には、コミット操作の後にレジスタ・コピー操作
が続き、必要ならば非プログラム順序操作の結果をそれ
らの宛先レジスタへコピーする。このようなコピー操作
は、コンパイラが行なうコードの最適化の中のコピー伝
播ステップによってなくすことができる。非プログラム
順序レジスターのコミット命令とは異なり、このレジス
タ・コピー操作は、対応するオペランドが前のコミット
操作によって暗示的に有効化または無効化されているた
め、アドレス比較器をチェックすることなく、ソース・
レジスタを宛先レジスタにコピーするだけである。
【0042】ストア操作が非プログラム順序でロードさ
れた位置とオーバーラップする場合には、ストア操作の
副作用として、対応するACエントリが無効としてマー
クが付けられる。その結果、コミット命令の実行が遅延
例外を生じる。この例外に関連するハンドラは、ロード
操作ならびに該ロードに依存しまた例外が生じる前に実
行された二つの操作を実行する回復コードを含んでい
る。このため、回復コードの中で再実行される命令のオ
ペランドは、同じレジスタの中または他の位置でまだ利
用可能でなければならない。
【0043】例として、上に示した順序替えコードのた
めの下に示す回復コードを検討する 順序替えされたコード 回復コード load? r25,10(r4) add? r26,r25,20 sub? r27,r26,r7 ・・・ store r3,20(r2) ・・・ rcvr:load r25,10(r 4) commit r5,r25 add r5,r25,2 0 copy r6,r26 sub r5,r26,r 7 copy r7,r27 return ・・・ 非プログラム順序ロードに依存する各命令は、回復コー
ドの一部として再実行され、該回復コードは、コミット
操作を再実行するために戻ることに留意が必要である。
あるいは、さらに最適化のため、可能な場合には、回復
コードは、元の目的レジスタを直接に更新して、コピー
伝播の最適化によって除去されなかったレジスタ・コピ
ー操作をスキップすることができる。以上、本発明を好
ましい一実施形態に関して説明したが、当業者は、本発
明を特許請求の範囲の精神および範囲内で変更して実施
できることが理解できよう。
【0044】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)スーパースカラまたはVLIWプロセッサにおい
てメモリ操作を順序替えする方法であって、プロセッサ
によって発行された命令をデコードするステップと、デ
コードされた命令が非プログラム順序ロード命令である
かどうかを判別し、そうであれば、その非プログラム順
序ロード命令が例外を生成するかどうかを判別するステ
ップと、例外を生成する非プログラム順序ロード命令に
ついて、前記ロード命令の目的レジスタに関連する遅延
例外ビットをセットするステップと、例外を生成しない
非プログラム順序ロード命令のメモリ・アドレスをアド
レス比較器に保管し、前記アドレス比較器に保管された
メモリ・アドレスのための有効ビットをセットするステ
ップと、デコードされた命令がストア操作であるかどう
かを判別するステップと、デコードされたストア命令に
よって参照されたメモリ・アドレスの範囲を前記アドレ
ス比較器の中のすべてのエントリと比較するステップ
と、前記アドレス比較器の中の一致する各エントリにつ
いて、その対応するエントリの有効ビットを無効にセッ
トするステップと、デコードされた命令がコミット操作
であるかどうかを判別するステップと、前記デコードさ
れたコミット操作の目的レジスタに関連するアドレス比
較器エントリの前記有効ビットをチェックし、前記有効
ビットが無効にセットされている場合には遅延例外を生
成し、同時に、前記コミット操作のソース・レジスタの
遅延例外ビットをチェックし、遅延例外ビットがセット
されている場合には、遅延例外を生成するステップと、
例外命令を打ち切り、制御を例外ハンドラへ移すステッ
プと、を有する方法。 (2)上記(1)に記載のスーパースカラまたはVLI
Wプロセッサにおいてメモリ操作を順序替えする方法で
あって、さらに、前記デコードされた命令が非プログラ
ム順序ロード、ストア、又はコミット命令以外であるか
どうかを判別するステップと、該命令によって用いられ
たすべてのソース・レジスタのための前記遅延例外ビッ
トをチェックし、任意の遅延例外ビットがセットされて
いる場合には、目的レジスターの対応する遅延例外ビッ
トをセットするステップと、を有する方法。 (3)メモリ操作を順序替えすることのできるスーパー
スカラまたはVLIWプロセッサであって、前記プロセ
ッサによって発行される命令をデコードするためのデコ
ーダと、各々が特殊レジスタとしてアクセス可能な遅延
例外ビットを有する複数のレジスタと、デコードされた
命令が非プログラム順序ロード命令であるかどうかを判
別し、そうであれば、該非プログラム順序ロード命令が
例外を生成するかどうかを判別する機能的手段であっ
て、例外を生成する非プログラム順序ロード命令につい
て前記ロード命令の目的レジスタに関連する遅延例外ビ
ットをセットする機能的手段と、例外を生成しない非プ
ログラム順序ロード命令のメモリ・アドレスを保管する
ためのアドレス比較器であって、保管されたメモリ・ア
ドレスのためにセットされる有効ビットを有するアドレ
ス比較器と、ただし、前記機能的手段は、デコードされ
た命令がストア操作であるかどうかを判別し、前記アド
レス比較器は、デコードされたストア命令によって参照
されたメモリ・アドレスの範囲を前記アドレス比較器の
中のすべてのエントリと比較し、前記アドレス比較器の
中の一致する各エントリについて、その対応するエント
リの有効ビットを無効にセットし、前記機能的手段は、
デコードされた命令がコミット操作であるかどうかを判
別し、該デコードされたコミット操作のソース・レジス
タに関連するアドレス比較器エントリの前記有効ビット
をチェックし前記有効ビットが無効にセットされている
場合には遅延例外を生成し、また同時に、前記コミット
操作のソースレジスタの遅延例外ビットをチェックし、
遅延例外ビットがセットされている場合には、遅延例外
を生成して例外命令を打ち切り、例外命令が打ち切られ
るときに回復コードを実行する例外ハンドラーし、を有
するスーパースカラまたはVLIWプロセッサ。
【図面の簡単な説明】
【図1】本発明によって行なわれるプログラム順序およ
び非プログラム順序の操作の実行のための論理を示すフ
ローチャート。
【図2】本発明によって行なわれるプログラム順序およ
び非プログラム順序の操作の実行のための論理を示すフ
ローチャート。
【図3】図1及び図2のフローチャートに示した非プロ
グラム順序の操作の実行をサポートするハードウエア・
リソースを示すブロック図である。
【符号の説明】
201〜206 機能ユニット 207 データ・キャッシュ 208 汎用レジスタ 209 浮動小数点レジスタ 210 条件レジスタ 211 アドレス比較器 212〜214 DXビット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デッビット・アーノルド・ルイック アメリカ合衆国55906ミネソタ州 ロー チェスター ハウソーン ヒル ロード エヌ・イ 2317 (72)発明者 ジャイミー・ハムベルト・モレノ アメリカ合衆国10530ニューヨーク州 ハーツデール ホルメス・アベニュー 205 (72)発明者 ガブリエル・モーリシオ・シルバーマン アメリカ合衆国10546ニューヨーク州 ミルウッド ヒッデン ホーロー・レー ン 141 (72)発明者 フイリップ・ブラウン・ウィンターフィ ールド アメリカ合衆国55902ミネソタ州 ロー チェスター エイス アベニュー エ ス・ダブリュウ 822 (56)参考文献 特開 平6−214799(JP,A) 特開 平6−89194(JP,A) 特開 平6−290045(JP,A) 特開 平7−271585(JP,A) 特開 平7−271584(JP,A) 特開 平7−160501(JP,A) 特開 平8−16395(JP,A) 特開 平8−234981(JP,A) 特開 平5−143332(JP,A) 特表 平8−504977(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】スーパースカラまたはVLIWプロセッサ
    においてメモリ操作を順序替えする方法であって、 プロセッサによって発行された命令をデコードするステ
    ップと、 デコードされた命令が非プログラム順序ロード命令であ
    るかどうかを判別し、そうであれば、その非プログラム
    順序ロード命令が例外を生成するかどうかを判別するス
    テップと、 例外を生成する非プログラム順序ロード命令について、
    前記ロード命令の目的レジスタに関連する遅延例外ビッ
    トをセットするステップと、 例外を生成しない非プログラム順序ロード命令のメモリ
    ・アドレスをアドレス比較器に保管し、前記アドレス比
    較器に保管されたメモリ・アドレスのための有効ビット
    をセットするステップと、 デコードされた命令がストア操作であるかどうかを判別
    するステップと、 デコードされたストア命令によって参照されたメモリ・
    アドレスの範囲を前記アドレス比較器の中のすべてのエ
    ントリと比較するステップと、 前記アドレス比較器の中の一致する各エントリについ
    て、その対応するエントリの有効ビットを無効にセット
    するステップと、 デコードされた命令がコミット操作であるかどうかを判
    別するステップと、 前記デコードされたコミット操作のソース・レジスタ
    関連するアドレス比較器エントリの前記有効ビットをチ
    ェックし、前記有効ビットが無効にセットされている場
    合には遅延例外を生成し、同時に、前記コミット操作の
    ソース・レジスタの遅延例外ビットをチェックし、遅延
    例外ビットがセットされている場合には、遅延例外を生
    成するステップと、 例外命令を打ち切り、制御を例外ハンドラへ移すステッ
    プと、 を有する方法。
  2. 【請求項2】許請項1に記載のスーパースカラまたはV
    LIWプロセッサにおいてメモリ操作を順序替えする方
    法であって、さらに、 前記デコードされた命令が非プログラム順序ロード、ス
    トア、又はコミット命令以外であるかどうかを判別する
    ステップと、 該命令によって用いられたすべてのソース・レジスタの
    ための前記遅延例外ビットをチェックし、任意の遅延例
    外ビットがセットされている場合には、目的レジスター
    の対応する遅延例外ビットをセットするステップと、を
    有する方法。
  3. 【請求項3】メモリ操作を順序替えすることのできるス
    ーパースカラまたはVLIWプロセッサであって、 前記プロセッサによって発行される命令をデコードする
    ためのデコーダと、 各々が特殊レジスタとしてアクセス可能な遅延例外ビッ
    トを有する複数のレジスタと、 デコードされた命令が非プログラム順序ロード命令であ
    るかどうかを判別し、そうであれば、該非プログラム順
    序ロード命令が例外を生成するかどうかを判別する機能
    的手段であって、例外を生成する非プログラム順序ロー
    ド命令について前記ロード命令の目的レジスタに関連す
    る遅延例外ビットをセットする機能的手段と、 例外を生成しない非プログラム順序ロード命令のメモリ
    ・アドレスを保管するためのアドレス比較器であって、
    保管されたメモリ・アドレスのためにセットされる有効
    ビットを有するアドレス比較器と、ただし、 前記機能的手段は、デコードされた命令がストア操作で
    あるかどうかを判別し、 前記アドレス比較器は、デコードされたストア命令によ
    って参照されたメモリ・アドレスの範囲を前記アドレス
    比較器の中のすべてのエントリと比較し、前記アドレス
    比較器の中の一致する各エントリについて、その対応す
    るエントリの有効ビットを無効にセットし、 前記機能的手段は、デコードされた命令がコミット操作
    であるかどうかを判別し、該デコードされたコミット操
    作のソース・レジスタに関連するアドレス比較器エント
    リの前記有効ビットをチェックし前記有効ビットが無効
    にセットされている場合には遅延例外を生成し、また同
    時に、前記コミット操作のソースレジスタの遅延例外ビ
    ットをチェックし、遅延例外ビットがセットされている
    場合には、遅延例外を生成して例外命令を打ち切り、 例外命令が打ち切られるときに回復コードを実行する例
    外ハンドラーし、を有するスーパースカラまたはVLI
    Wプロセッサ。
JP08098035A 1995-05-10 1996-04-19 スーパースカラまたはvliwプロセッサにおけるメモリ操作の順序替えのための方法及び装置 Expired - Fee Related JP3096423B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/435,411 US5625835A (en) 1995-05-10 1995-05-10 Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US435411 1995-05-10

Publications (2)

Publication Number Publication Date
JPH08314721A JPH08314721A (ja) 1996-11-29
JP3096423B2 true JP3096423B2 (ja) 2000-10-10

Family

ID=23728285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08098035A Expired - Fee Related JP3096423B2 (ja) 1995-05-10 1996-04-19 スーパースカラまたはvliwプロセッサにおけるメモリ操作の順序替えのための方法及び装置

Country Status (3)

Country Link
US (1) US5625835A (ja)
EP (1) EP0742512A3 (ja)
JP (1) JP3096423B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970997B2 (en) 2001-05-23 2005-11-29 Nec Corporation Processor, multiprocessor system and method for speculatively executing memory operations using memory target addresses of the memory operations to index into a speculative execution result history storage means to predict the outcome of the memory operation

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0877021A (ja) * 1994-09-01 1996-03-22 Fujitsu Ltd 割込処理装置および方法
US5784639A (en) * 1995-12-29 1998-07-21 Intel Corporation Load buffer integrated dynamic decoding logic
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US5838942A (en) * 1996-03-01 1998-11-17 Hewlett-Packard Company Panic trap system and method
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US5854928A (en) * 1996-10-10 1998-12-29 Hewlett-Packard Company Use of run-time code generation to create speculation recovery code in a computer system
US5890009A (en) * 1996-12-12 1999-03-30 International Business Machines Corporation VLIW architecture and method for expanding a parcel
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
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
US6047388A (en) * 1997-04-09 2000-04-04 International Business Machines Corporation Method and apparatus for processing an invalid address request
EP0991994A4 (en) * 1997-06-25 2001-11-28 Transmeta Corp IMPROVED MICROPROCESSOR
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
JPH1173301A (ja) * 1997-08-29 1999-03-16 Matsushita Electric Ind Co Ltd 情報処理装置
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
WO1999019795A1 (en) * 1997-10-13 1999-04-22 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for optimizing execution of load and store instructions
US6216223B1 (en) * 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
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
US6301653B1 (en) 1998-10-14 2001-10-09 Conexant Systems, Inc. Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
US6930695B1 (en) * 1998-11-30 2005-08-16 Sun Microsystems, Inc. Method and apparatus for detecting device support in a graphical user interface
US6301627B1 (en) 1998-12-18 2001-10-09 International Business Machines Corporation Method/system for identifying delayed predetermined information transfer request as bypassable by subsequently-generated information transfer request using bypass enable bit in bridge translation control entry
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
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
US6718541B2 (en) 1999-02-17 2004-04-06 Elbrus International Limited Register economy heuristic for a cycle driven multiple issue instruction scheduler
US6584611B2 (en) 1999-02-17 2003-06-24 Elbrus International Limited Critical path optimization—unload hard extended scalar block
US6427193B1 (en) 1999-05-18 2002-07-30 Advanced Micro Devices, Inc. Deadlock avoidance using exponential backoff
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6415360B1 (en) 1999-05-18 2002-07-02 Advanced Micro Devices, Inc. Minimizing self-modifying code checks for uncacheable memory types
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US7634635B1 (en) 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
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
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6591342B1 (en) * 1999-12-14 2003-07-08 Intel Corporation Memory disambiguation for large instruction windows
US6598156B1 (en) * 1999-12-23 2003-07-22 Intel Corporation Mechanism for handling failing load check instructions
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6618803B1 (en) * 2000-02-21 2003-09-09 Hewlett-Packard Development Company, L.P. System and method for finding and validating the most recent advance load for a given checkload
US6594821B1 (en) * 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6631460B1 (en) 2000-04-27 2003-10-07 Institute For The Development Of Emerging Architectures, L.L.C. Advanced load address table entry invalidation based on register address wraparound
US6721878B1 (en) * 2000-06-14 2004-04-13 Cypress Semiconductor Corp. Low-latency interrupt handling during memory access delay periods in microprocessors
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
JP3729064B2 (ja) * 2000-11-29 2005-12-21 日本電気株式会社 データ依存関係検出装置
US7185327B2 (en) * 2001-01-09 2007-02-27 Hewlett-Packard Development Company, L.P. System and method for optimizing operations via dataflow analysis
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US7269719B2 (en) * 2002-10-30 2007-09-11 Stmicroelectronics, Inc. Predicated execution using operand predicates
JP3902147B2 (ja) * 2003-03-04 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体
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
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
JP4486434B2 (ja) * 2004-07-29 2010-06-23 富士通株式会社 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US7590826B2 (en) * 2006-11-06 2009-09-15 Arm Limited Speculative data value usage
JP2008293378A (ja) * 2007-05-25 2008-12-04 Panasonic Corp プログラム書き換え装置
US20110213995A1 (en) * 2007-08-09 2011-09-01 International Business Machines Corporation Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage
US20090044032A1 (en) * 2007-08-09 2009-02-12 Timothy Chainer Method, Apparatus and Computer Program Product Providing Instruction Monitoring for Reduction of Energy Usage
US8214602B2 (en) * 2008-06-23 2012-07-03 Advanced Micro Devices, Inc. Efficient load queue snooping
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8392929B2 (en) * 2009-12-15 2013-03-05 Microsoft Corporation Leveraging memory isolation hardware technology to efficiently detect race conditions
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
CN104978282B (zh) * 2014-04-04 2019-10-01 上海芯豪微电子有限公司 一种缓存系统和方法
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
WO2016014081A1 (en) * 2014-07-25 2016-01-28 Hewlett-Packard Development Company, L.P. Exception handling predicate register
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US11080060B2 (en) 2019-04-23 2021-08-03 International Business Machines Corporation Preventing operand store compare conflicts using conflict address data tables
US10990393B1 (en) 2019-10-21 2021-04-27 Advanced Micro Devices, Inc. Address-based filtering for load/store speculation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903264A (en) * 1988-04-18 1990-02-20 Motorola, Inc. Method and apparatus for handling out of order exceptions in a pipelined data unit
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
US5450560A (en) * 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
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
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
TW260765B (ja) * 1994-03-31 1995-10-21 Ibm
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970997B2 (en) 2001-05-23 2005-11-29 Nec Corporation Processor, multiprocessor system and method for speculatively executing memory operations using memory target addresses of the memory operations to index into a speculative execution result history storage means to predict the outcome of the memory operation

Also Published As

Publication number Publication date
JPH08314721A (ja) 1996-11-29
EP0742512A2 (en) 1996-11-13
EP0742512A3 (en) 1998-08-26
US5625835A (en) 1997-04-29

Similar Documents

Publication Publication Date Title
JP3096423B2 (ja) スーパースカラまたはvliwプロセッサにおけるメモリ操作の順序替えのための方法及び装置
US5758051A (en) Method and apparatus for reordering memory operations in a processor
US8001421B2 (en) Compiler technique for efficient register checkpointing to support transaction roll-back
JP5404574B2 (ja) マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション
JP3741144B2 (ja) コンピュータシステム
JP4578042B2 (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
US5694577A (en) Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
JP2001175473A (ja) コンピュータ処理システムにおいて実行述語を実現する方法及び装置
KR102344010B1 (ko) 벡터 명령들에 대한 요소간 어드레스 해저드들의 처리
KR20000076584A (ko) 컴퓨터 프로세싱 시스템에서의 로드 연산을 재순서화하기위한 방법 및 장치
US5699538A (en) Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US6732363B1 (en) Supporting inter-process communication through a conditional trap instruction

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees