JP3715057B2 - パニック・トラップ・システム - Google Patents
パニック・トラップ・システム Download PDFInfo
- Publication number
- JP3715057B2 JP3715057B2 JP02742397A JP2742397A JP3715057B2 JP 3715057 B2 JP3715057 B2 JP 3715057B2 JP 02742397 A JP02742397 A JP 02742397A JP 2742397 A JP2742397 A JP 2742397A JP 3715057 B2 JP3715057 B2 JP 3715057B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- signal
- trap
- execution
- 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
Links
- 230000007246 mechanism Effects 0.000 claims description 130
- 238000012958 reprocessing Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 31
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 15
- 238000000354 decomposition reaction Methods 0.000 description 12
- 239000013256 coordination polymer Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000003860 storage Methods 0.000 description 9
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 230000001419 dependent effect Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/1407—Checkpointing the instruction stream
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、一般にコンピュータ・プロセッサ・アーキテクチャに関連する。特に、プロセッサの命令の実行順序が狂っているときに、不正確な処理からリカバリするためのパニック・トラップ・システムと方法に関する。また、パニック・トラップ・システムと方法は、タイミングと同期を図るためにも使用される。
【0002】
【従来の技術】
コンピュータ・プロセッサ(演算処理装置)は、一般に、システムのオペレーションを実行する制御装置と、計算型のオペレーションを実行する算術論理演算装置(ALU)を含む。プロセッサのデザインは、レジスタ・セット、これらのレジスタ間の通信経路、及びこれらが稼働する方法を指示し制御する手段の選択によって決定される。通常、プロセッサは、メイン・メモリの中に保持されている一連の命令から成るプログラムによって稼働される。各々の命令は、ビット群であり、通常、プロセッサによって実行されるオペレーションを指定する1又は複数のワードの長さである。
【0003】
一般に、プロセッサの基本サイクルは、以下のステップから成る。
(a)命令をメイン・メモリから命令レジスタに取り出す。
(b)命令を復号する(すなわち、命令が示す実行すべきことを決定する。各命令が、実行されるオペレーションとそのオペレーションが使用するデータを示す)。
(c)命令によって指定されたオペレーションを実行する。
(d)次の命令の位置を決定する。通常、次の命令が、現在の命令の直後に続いている。
【0004】
しかしながら、複数のスカラ・オペレーションが平行して実行されるスーパースカラ・プロセッサのような高性能なプロセッサにおいて、プロセッサが、混乱した順序またはプロセッサを操作しているソフトウェアによって定義された順序と一致していない順序で命令を実行するように設計される場合がある。これらのシステムでは、プログラムによって定義された順序で命令が発生したときではなく、命令が実行されることができるときに、命令は実行される。更に、順序の混乱した命令の実行の後、プログラムにその結果を渡す前に、命令順序に対応させて、最終的に再処理される。
【0005】
キャッシュ・メモリは、しばしばパフォーマンスを最適化するために、コンピュータのプロセッサに関連して、使われている。キャッシュ・メモリは、コンピュータのプロセッサとメイン・メモリの間に置かれた高速バッファである。プロセッサで使用される現在のデータと命令が、キャッシュ・メモリに移され、それによって、2つの利益を生じる。第1に、プロセッサのメモリ使用要求のための平均のアクセス時間が減少し、プロセッサのスループットが増加する。第2に、それによって、利用可能なメモリ・バンド幅によるプロセッサの使用が減り、システム・バス上の他の装置が、プロセッサのじゃまをすることなくメモリを使用できるようになる。キャッシュ・メモリは、メイン・メモリからプロセッサへの命令とデータの転送スピードをアップさせるために使用される。メイン・メモリ・サイクル・タイムが一般的にプロセッサ・クロッキング率より遅いので、このキャッシュ機能が重要となる。
【0006】
プロセッサがデータ・キャッシュをデータ・ラインのためにアクセスするとき、プロセッサはアドレスをキャッシュに転送する。キャッシュが、アドレスからキャッシュ・インデックスを解析して、要求されたデータ・ラインを含む記憶領域を選択するためにそれを使用する。キャッシュが、実ページ番号(RPN)であり、領域と状態インジケータに対応し、タグに対応するデータ・ラインが有効であるか否かを示す、タグを出力する。
【0007】
一般的に、キャッシュと関連するサポート回路は、状態インジケータとタグを受け取る。状態インジケータが無効データを示すとき、サポート回路がプロセッサに「ミス」表示を転送し、その場合には、プロセッサがデータ・ラインのためにメイン・メモリをアクセスしなければならない。状態インジケータが有効なデータを示すとき、キャッシュが要求されたデータ・ラインを現在記憶しているか否かを決定するために、サポート回路はタグとアドレスの残余とを比較する。キャッシュがタグの比較によって決められるような要求されたデータ・ラインを持たないとき、サポート回路が、プロセッサに「ミス」表示を転送する。その場合、プロセッサが、メイン・メモリをデータ・ラインのためにアクセスしなければならない。キャッシュがタグの比較によって決められるような要求されたデータ・ラインを持つとき、サポート回路が、プロセッサに「ヒット」表示を転送して、要求されたデータ・ラインを読出すためにプロセッサにプロンプトを出す。
【0008】
命令の順序外実行を行うプロセッサにおいて、命令の不正確な実行処理のために不正確な結果が生じる場合がある。また、命令がそれが依存する命令より先に実行されるとき、不正確な結果が生成じ、例えば、記憶(ストア)命令に依存するロード命令によって、ストア命令が転送される場合を考える。一般に、「ロード」命令はストレージ(キャッシュ又はメイン・メモリ)からレジスタへのデータ転送要求であるのに、「ストア」命令はレジスタからストレージへのデータ転送要求である。ロード命令がストア命令の前に処理される場合、ロード命令は無効データを送信する。従って、ストア命令は、正しい結果を得るためにロード命令の前に実行される。順序外命令を実行するスーパースカラ・プロセッサにおいて、不正確な結果が得られた場合、不正確な結果を認識して、そこから回復するためのメカニズムが必要である。
【0009】
【発明が解決しようとする課題】
従って、本発明の目的は、順序外命令を実行するスーパースカラ・プロセッサにおいて、不正確な結果が得られた場合、不正確な結果を認識して、そこから回復するためのメカニズムを提供することである。
【0010】
また、本発明の他の目的は、スーパースカラ・プロセッサ及び順序外命令を実行するプロセッサのパフォーマンスを改善することである。
【0011】
更に、本発明の他の目的は、命令の不正確な順序の実行からプロセッサを回復するためのシステムと方法を提供することである。
【0012】
即ち、本発明の目的は、命令の順序外実行から生成された不正確な結果からプロセッサを回復するのに使われ、更には、タイミングと同期を図るパニック・トラップ・システム及び方法を提供することである。
【0013】
【課題を解決するための手段】
パニック・トラップ(panic trap)・システムは、以下の構造から成る。
【0014】
命令フェッチ・メカニズム(IFETCH)は、命令を命令キャッシュ(ICACHE)から取り出す。IFETCHは、タイミングや同期を取るためにパニック・トラップ・インジケータと命令を関連付ける。パニック・トラップ・インジケータとは、プロセッサを操作しているソフトウェアには発生しない非構造的な信号である。命令が終了したならば、このパニック・トラップ・インジケータは、最終的に、パニック・トラップ・インジケータを持っている命令から順に取出しを再開する。
【0015】
2つの待ち行列は、命令をIFETCHから受け取る。ALU(算術論理演算装置)命令待ち行列(AQUEUE)は、ALUで示される命令を受け取って、順序外命令を実行する。各々の命令は、それぞれの命令レジスタの内でAQUEUEに置かれる。メモリ命令待ち行列(MQUEUE)は、データ・キャッシュ(DCACHE)かメイン・メモリで示される命令を受け取って、順序外命令を実行する。MQUEUEは、命令レジスタを含み、メモリ命令と命令実行の結果に応じたデータ・アドレスを受け取るアドレス・リオーダ・バッファ・スロット(ARBSLOTS)と関連付けられる。
【0016】
トラップ・インジケータ・ロジックは、メモリ命令の構造的に不正確な実行を認識し、パニック・トラップ・インジケータを実行後の命令と関連付けるための各ARBSLOTと関連する。実行されたロード命令が実行されていないストア命令に依存する場合が、命令の構造的に不正確な実行の一例を示す場面である。パニック・トラップ・インジケータ・ロジックは、この場面を決定し、発見した場合にパニック・トラップ・インジケータを発生する依存ロジックを持つ。
【0017】
ARBSLOTは、さらに、命令が可干渉性チェック信号を基に転送されたデータに影響を与える場合を決定するキャッシュ可干渉性チェック(CCC)ハザード分解システムを含む。CCCハザード分解システムは、パニック・トラップ・インジケータをセットすることができる。
【0018】
システム・インタフェースへのアクセスを制御するシステム・インタフェース制御は、同期信号や遠隔装置からの外部割込の受信に基づいて、パニック・トラップ・インジケータを起動することがある。この場合、システム・インタフェース制御が、実行後の引退し(RETIRE)た命令を担当して、パニック・トラップ・インジケータと命令とを関係付ける引退メカニズムにパニック・トラップ・インジケータを転送する。
【0019】
命令に応じてキャッシュ・アクセスに関係付けられたパリティ・エラーが生じた場合、DCACHEはパニック・トラップを起動することがある。DCACHEは、パニック・トラップ・インジケータを引退メカニズムに提供することによってパニック・トラップを発生する。
【0020】
命令がAQUEUEかMQUEUEの中で実行された後、命令は引退メカニズムによって引退させられる。引退処理の間、パニック・トラップ・インジケータを認識しながら、引退メカニズムに関連するトラップ・ベクトル・ゼネレータが、AQUEUEやMQUEUEからの命令を消去し、IFETCHに再び読出しをさせ、パニック・トラップを引き起こした命令から順に実行する。
【0021】
また、本発明はいくつかの新しい方法を提供している。最初の方法は、プロセッサを命令の順序外実行で処理された不正確な結果から回復することを許可し、特に、実行段階の間のパニック・トラップの関係を管理する。
【0022】
第1の方法の概要を次に示す。再処理メカニズムの中で命令を集め、順序外命令を実行する。命令の構造的に不正確な実行を認識し、命令と関連するパニック・トラップ・インジケータを発生する。発生したパニック・トラップ・インジケータは不正確な実行を示している。実行後の命令を引退させるとき、発生したパニック・トラップ・インジケータを認識し、再処理メカニズムを除去して、無効な命令から順に読出しを再び始める。
【0023】
第2の方法は、読出段階の間、順序外命令を実行し、特に、命令と関連付けられたパニック・トラップを示すプロセッサで、不正確な実行結果を生じた命令から回復を可能とする。第2の方法の概要を次に示す。命令を読出し、命令が読出しの間、無効であることを決める。パニック・トラップ・インジケータを無効な命令と関連付け、他の命令によって無効な命令を再処理メカニズムに置く。再処理メカニズムの中で順序外命令を実行する。そして、実行後の命令を引退させるとき、パニック・トラップ・インジケータを認識し、再処理メカニズムを除去して、無効な命令から順に再び読出し始める。
【0024】
3番目の方法は、順序外命令を実行するプロセッサと関連するデータ・キャッシュによって発見されたパリティ・エラーからの回復を可能とする。第3の方法の概要を次に示す。再処理メカニズムの中に命令を集め、順序外命令を実行する。データ・キャッシュに対するアクセスを含んでいる命令を実行し、パリティ・エラーがアクセス中に起こったかを決める。プロセッサでパニック・トラップを生成し、データ・キャッシュからトラップ・ベクトル・ゼネレータへ転送する。再処理メカニズムを除去して、その命令で命令の実行を再び始める。
【0025】
前述した目的を達成することに加えて、本発明は、次の他の特徴を持つ。
【0026】
本発明の特徴は、IFETCHがタイミングと同期目的のためにパニック・トラップ・システムを使用することができるということである。
【0027】
また、本発明の他の特徴は、DCACHEがキャッシュ・アクセスに関係するパリティ・エラーを示し、回復するためにパニック・トラップ・システムを使用することができるということである。
【0028】
更に、本発明の他の特徴は、システム・インタフェース制御がタイミングと同期を図るためにパニック・トラップ・システムを使用することができるということである。
【0029】
また更に、本発明の他の特徴は、パニック・トラップ・システムのデザインが単純でその処理が信頼でき、大量生産でコンピュータが安価にできるということである。
【0030】
【発明の実施の形態】
図1には、コンピュータ11内で、特に、コンピュータ11のプロセッサ14内の命令読出/実行システム12内で、実行するパニック・トラップ・システム100(図3〜5参照)が表示されている。コンピュータ11は、一般に、プロセッサ14と、プロセッサ14を操作するソフトウェア(S/W)18を持つメイン・メモリ16と、図中の矢印23で示すようにプロセッサ14と接続するデータ・キャッシュ24(DCACHE)と、プロセッサ14とメイン・メモリ16を相互に連結させる1又は複数のバスのようなシステム・インタフェース22とから成る。
【0031】
オペレーションにおいて、プロセッサ14の中の命令読出/実行システム12がソフトウェア18を実行できるように、プロセッサ14の中で現在使用されているデータが、DCACHE24へ移される。それによって、プロセッサのメモリ要求の平均アクセス時間が減少し、システム・インタフェース22上の通信量が最少となる。ここで、新しいパニック・トラップ・システム100を除く前述のコンピュータ装置とそれらの構成の相互作用は従来技術として知られている。
【0032】
DCACHE24の一般的なキャッシュ・ラインは、タグ、状態インジケータ、及びデータを含む。キャッシュ・インデックスは、DCACHE24に転送されて、要求されたデータ・ラインを含む記憶域を選択するために、DCACHE24によって使用される。キャッシュ・インデックスの受信に応じて、DCACHE24が、タグを出力する。タグは、記憶域に対応している実ページ番号(RPN)であり、状態インジケータは、タグに対応しているデータ・ラインが有効であるか無効であるかを示し、データは、有効又は無効のどちらかである。一般的に、状態インジケータは次の状態を示す。「無効(invalid)」は、データが供給されないことを意味する。「有効共有(valid shared)」は、データが供給されるが、どこか他の場所にあることを意味する。「有効プライベイト・クリーン(valid private clean)」は、ラインがソール(sole)・コピーを持ち、DCACHE24がラインにまだ書込んでいないことを意味する。「有効プライベイト・ダーティ(valid private dirty)」は、ラインがソール・コピーを持ち、DCACHE24がラインに書込まれる(即ち、メイン・メモリ16にラインをコピーする必要がある)。
【0033】
DCACHE24と接続しているタグ比較メカニズム228(図6)は、状態(ステータス)インジケータとタグを受け取る。状態インジケータが無効データを示すとき、タグ比較メカニズム228はプロセッサ14に「ミス」表示を転送する。その場合、プロセッサ14はメイン・メモリ16をデータ・ラインのためにアクセスする。状態インジケータが有効データを示すとき、DCACHE24が要求されたデータ・ラインを現在記憶しているか否かを決定するために、タグ比較メカニズム228は、タグとアドレスの残余とを比較する。タグの比較によって決定され要求されたデータ・ラインをDCACHE24が持たないとき、タグ比較メカニズム228はプロセッサ14に「ミス」表示を転送する。その場合、プロセッサ14はメイン・メモリ16をデータ・ラインのためにアクセスする。タグ比較によって決定され要求されたデータ・ラインをDCACHE24が持つとき、タグ比較メカニズム228はプロセッサ14に「ヒット」表示を転送し、要求されたデータ・ラインを読取るためにプロセッサ14にプロンプトを出す。
【0034】
命令読出/実行システム12の実行を図2のブロック図で示す。図2の中で示されるように、命令読出/実行システム12が、命令をソフトウェア18(図1)から記憶するための命令キャッシュ(ICACHE)26を持つ。命令フェッチ・メカニズム(IFETCH)28が命令キャッシュ26と接続され、最後に、実行のためにキャッシュ26から命令を検索する。ここで、命令IFETCH 28は、一度に4つの命令(各32ビット)を読取り、ソート・メカニズム32へ命令を転送する。
【0035】
命令は、IFETCH28から、待ち行列か保留場所のような適当な再処理メカニズムに送り出される。ここで、命令は、ソートされ、算術論理ユニット(ALU)とメモリ待ち行列に(MQUEUE)に分配される。
【0036】
特に、ソート・メカニズム32は、IFETCH28から命令を受取り、各命令が算術論理ユニット(ALU)かメモリかに前もって分別されているかどうかを決定する。それに応じて、ソート・メカニズム32が、図2の矢印36aと36bに示すように、それぞれ命令をAQUEUE38aとMQUEUE38bに分配する。
【0037】
AQUEUE38aは、矢印43で示されるように、算術論理演算装置(ALU)42に転送されるそれぞれの命令を記憶するレジスタ41aを持つALU命令処理メカニズム39a(総計28個)を含む。AQUEUE38aの命令は、順序付けられて(即ち、データフロー型式で)実行される。命令が完了すると、AQUEUEリネーム・レジスタ44aによって結果が獲得され、命令にAQUEUE38aの中で完了したことを示す印が付けられる。AQUEUE38aは、ソート・メカニズム32からサイクル毎に4つの命令(それぞれ32ビット)を受信し、矢印51aによって示されるように引退(RETIRE)メカニズム52へ、サイクル毎に2つの命令(それぞれ32ビット)を送信する。
【0038】
インタフェース45で示すように、AQUEUE38aの制御の下に、ALU42がリネーム・レジスタ44a、44bと汎用レジスタ46からオペランドを検索することができる。ALU42がオペランドを実行した後、矢印49で示されるように、実行結果は、AQUEUEリネーム・レジスタ44aに記憶される。MQUEUE38bは、命令処理メカニズム39bを含む。各々の命令処理メカニズム39bは、それぞれのメモリ命令を記憶するレジスタ41bと、それぞれのアドレスを記憶するアドレス・リオーダ・バッファ・スロット(ARBSLOT:総計28個)48を含む。MQUEUE38b中のメモリ命令は、メモリに対して「ロード(load)」及び「記憶(store)」として類別することができる。「ロード」は、メモリ(キャッシュやメイン・メモリ)からレジスタへデータを伝送する要求であるのに対して、「記憶」はレジスタからメモリへデータを伝送する要求である。
【0039】
命令の実行の間、最初の行程は、アドレスを計算するために定められた数学的オペレーションをオペランドの上で実行することを意味し、2番目の行程は、計算されたアドレスに基づくデータのためにメモリやキャッシュをアクセスすることを意味する。MQUEUE38bは、各々の命令と、2つの行程と、順次(即ち、データフロー型式)メモリ/キャッシュ・アクセスとを実行する。命令が完了すると、結果がMQUEUEリネーム・レジスタ44bによって獲得され、命令にMQUEUE38bの中で完了したことを示す印が付けられる。MQUEUE38bは、ソート・メカニズム32からサイクル毎に4つの命令(それぞれ32ビット)を受信し、矢印51bによって示されるように引退(RETIRE)メカニズム52へ、サイクル毎に2つの命令(それぞれ32ビット)を送信する。
【0040】
特に、命令実行の最初行程の間、アドレスはアドレス計算機58で生成される。アドレス計算機58が、MQUEUEリネーム・レジスタ44bから検索されたオペランドに基づいてアドレスを計算し、矢印62で示されるように、MQUEUE38bの中の命令に対応するARBSLOT48に(実または仮想)アドレスを渡す。
【0041】
命令による計算の制御は、図2の矢印64で示される。メモリ命令実行の2番目の行程が遂行されるとき、DCACHE24でロード又は記憶を達成するために、矢印54で示されるように、計算されたアドレス(キャッシュ・インデックスを含む)がDCACHE24へ転送される。ここで、可能であれば、2つアドレスが、各々の各サイクルでMQUEUE38bからDCACHE24へ転送される。このマルチ・アドレス機能を適応させるため、例えば、DCACHE24は、デュアル・ポートで実行される。これに対して他の例として、奇数と偶数アドレスが、単一移行されたランダム・アクセス・メモリ(RAM)中のそれぞれの奇数と偶数キャッシュ・バンクに同時に送られるものもある。この詳細は、同じ発明者によって同日、同時に出願された"Address Aggregation System And Method For Increasing Throughput Of Addresses To A Data Cache From A Processor"に記述されている。一度、DCACHE24がアドレスを処理すると、矢印56に示すように、データ結果はMQUEUEリネーム・レジスタ44bに転送される。
【0042】
引退メカニズム52は、実行された命令(即ち、サイクル毎に2つの32ビット・ワード)を待ち行列38a、38bの各々から受け取る。引退メカニズム52は、構造的状態で命令結果を入れる。ソフトウェア18(図1)は、結果が引退メカニズム52によって構造的状態に変換されることに関与しない。引退メカニズム52が、それぞれ矢印73、74によって示されるように、命令の属性に基づいて命令結果を汎用レジスタ46や制御レジスタ72に移動することにより、ソフトウェア18によって定義されたプログラム命令の中の待ち行列38a、38bの命令を引退させ、矢印76a、76bによって示すように命令結果をリネーム・レジスタ44a、44bから汎用レジスタ46に渡す。
【0043】
引退メカニズム52が、キャッシュ24のデータ・ラインに結果的に記憶された命令を、引退させるとき、ラインが変わり、メイン・メモリ16でラインを更新し、メイン・メモリ16に最終的に転送することを示すために、引退メカニズム52が、ラインに応じて状態インジケータを、「ダーティ」とマークする。
【0044】
また、引退メカニズム52は、命令に関係する「例外」があるか否かを決定するロジックを持つ。「例外」は、1又は複数の以前の命令に対応する特別な状況を示すフラグである。引退メカニズム52は、「例外」を示した命令に先行する待ち行列38a、38b内の全ての命令を捨てて、命令フェッチメカニズム28に、もう一度再処理するために問題となっている命令を検索させるか、または、特別な状況を扱う特別なソフトウェアを検索させるかする。
【0045】
パニック・トラップ・システム及び方法
ここで、パニック・トラップ・システム100とそれに関連する方法を図3〜5を参照して詳述する。一般に、パニック・トラップ・システム100及び方法が、エラーを認識し、エラーの生じた命令を再実行することによって、命令の不正確な順序外実行からの回復を可能とする。それによって、2回目の実行で、正しい結果となる。このことは、ソフトウェア18(図1)では見られない非構造的なハードウェア信号であるパニック・トラップの概念を利用することによって達成される。
【0046】
パニック・トラップは、以下の構成によって発生する。
(a) 命令に関するタイミング又は同期要求時、IFETCH28。
(b)メモリ命令の不正確な順序外実行時、MQUEUE38bのメモリ命令処理メカニズム39bの中のARBSLOT48。
(c)メモリ命令に従うアクセスに関する発見されたパリティ・エラー時、DCACHE24。
(d)同期命令(例えば、マルチ・プロセッサ(MP)システムの中での)、外部割込み、その他の事象での、システム・インタフェース22へ(又は、から)のアクセスを制御するシステム・インタフェース制御22。
【0047】
特に、IFETCH28は、タイミングや同期を図るためにパニック・トラップを始める。例えば、IFETCH28は、命令と関連してパニック・トラップをセットすることによって、待ち時間サイクルを挿入することができる。ここで、パニック・トラップ・インジケータ102(1又は複数のビット)は、命令処理メカニズム39a、39bに渡される各命令104と関連する。IFETCH28は、インジケータ102が潜在的に不正確な動作を引き起こす命令104と関係するパニック・トラップを発生する。この発生又は非発生に基づき、パニック・トラップ・インジケータ102は、特別な命令104が引退メカニズム52によって最終的に引退するときパニック・トラップを始めるか否かを示めす。パニック・トラップ・インジケータ102として1又は複数のビットを実行する代わりに、パニック・トラップ・ロード命令が、引退メカニズム52でパニック・トラップを始めるIFETCH28によって、AQUEUE38aに置かれる。
【0048】
命令の実行が不正確な結果を引き起こすとき、ARBSLOT48自身によるパニック・トラップの生成に関して、メモリ命令104と関連するパニック・トラップ・インジケータ102が、対応するARBSLOT48によって、発生される。発生又は非発生に基づき、パニック・トラップ・インジケータ102は、特別な命令104が引退メカニズム52によって最終的に引退するときパニック・トラップを始めるか否かを示めす。パニック・インジケータ102が命令104と関連するARBSLOT48によって発生される時の例としては、命令104がストア命令に従うロード命令であって、ストア命令がロード命令に先立って実行されなかったという状況がある。この場合、ロード命令は、無視される無効データを生成する結果となる。
【0049】
また、矢印106で示されるように、DCACHE24はパニック・トラップ・インジケータ102を引退メカニズム52に供給する。この事によって、DCACHE24は、DCACHE24への記憶及びDCACHE24からのロードが有効であることを確保するために、パリティ・チェック・ロジックを持つ。特に、ロードの間、DCACHE24はパリティ・エラーのためにタグとデータをチェックし、記憶の間、DCACHE24はパリティ・エラーのためにタグをチェックする。パリティ・エラーが発見されたならば、DCACHE24は、パニック・トラップ・インジケータを引退メカニズム52に発生する。幾つかのケースでは、パリティ・エラーから回復でき、他のケース(例えば、ダーティ・データ、タグ・エラー等)では、回復できない。回復ができる場合において、引退メカニズム52によって、パリティ・エラーを発生した命令の再実行を行い、新しいデータ・ラインがメイン・メモリ16から検索されるようになる。回復が可能でない場合において、最終的にコンピュータ11のオペレーションを停止するトラップ・コードに、引退メカニズム52が、向くことになる。
【0050】
また、矢印112で示すように、プロセッサ14に接続されたシステム・インタフェース制御108は、引退メカニズム52にパニック・トラップ・インジケータを提供する。システム・インタフェース制御108がシステム・インタフェース22へ(又はから)のアクセスを制御する。例えば、マルチ・プロセッサ(MP)システムで、プロセッサ14がMPシステムの他のプロセッサと同期するように、システム・インタフェース制御108が、同期命令をシステム・インタフェース22から受け取ることができる。同期命令がシステム・インタフェース制御108によって受け取られるとき、システム・インタフェース制御108は、パニック・トラップ・インジケータを引退メカニズム52に発生する。待ち行列38a、38bがフラッシュされたあと、パニック・トラップを得る命令がリフェッチされ、フラッシュとリスタート・オペレーションの結果、プログラムの実行の同期がそのまま続くことになる。
【0051】
引退メカニズム52が発生されたパニック・トラップ・インジケータ102を持つ命令104を引退させるとき、あるいは、引退メカニズム52が発生されたパニック・トラップ・インジケータ106、112をDCACHE24又はシステム・インタフェース制御108から受け取るとき、引退メカニズム52は、トラップ表示をトラップ・ベクトル・ゼネレータ114へ知らせる(矢印116)。引退メカニズム52は、パニック・トラップが発生されたトラップ・ベクトル・ゼネレータ114に対して指示を出し、パニック・トラップに対応する命令アドレスを転送する。次に、矢印118、118a、118bによって示されるように、トラップ・ベクトル・ゼネレータ114は、AQUEUE38aとMQUEUE38bの内容を削除する。さらに、矢印121で示すように、トラップ・ベクトル・ゼネレータ114は、命令アドレスをIFETCH28へ送る。IFETCH28は、矢印27で示されるように、新しい命令アドレスから始まる命令アドレスをICACHE26から検索し、順序外実行のためにアドレスをAQUEUE38aとMQUEUE38bに置く。従って、パニック・トラップにかけられた命令の命令アドレスで、命令の実行がもう一度始まる。
【0052】
また、引退メカニズム52は、構造的トラップ(非構造的パニック・トラップでなく)を受け取る場合がある。例えば、システム・インタフェース制御108は、外部割込みをシステム・インタフェース22から受け取る場合がある。この場合、システム・インタフェース制御108は、外部割込みを扱うためにコードと対応している命令アドレスとともに、引退メカニズム52へトラップ信号を発生する。さらに、引退メカニズム52は、トラップ・ベクトル・ゼネレータ114へ、トラップが発生したことを示し、トラップと対応している命令アドレスを転送する。上述のように、トラップ・ベクトル・ゼネレータ114は、順次に応答する。
【0053】
従来の構造的トラップと同様に非構造的パニック・トラップを生成するための各ARBSLOT48の内のトラップ・インジケータ・ロジックのオペレーションを図4に示す。図4において、トラップ・インジケータ・ロジック122は、構造的トラップ・インジケータ(T)122からの構造的トラップ信号126と同様にパニック・トラップ・インジケータ(P)102からのパニック・トラップ信号121を発生できる入力を、受け取る。ここで、トラップ・インジケータ102、122は、ラッチ又は他の適当なロジック記憶装置である。
【0054】
ここで、トラップ・インジケータ・ロジック122が、記憶・ロード(ST/LD)ハザード信号124(図7のST/LD_HAZARD)とキャッシュ可干渉性チェック(CCC)ハザード信号125(図6のCCC_HAZARD)を受取る。ハザード信号124、125は、パニック・トラップが発生される時を示すためにAND論理ゲート135に渡される信号132を生成するOR論理ゲート128に伝えられる。また、AND論理ゲート135は、UPDATE信号131を受け取る否定回路133から、-UPDATE信号134を受け取る。トラップ・インジケータ・ロジック122と対応する命令がそのデータ・アドレスを対応するARBSLOT48に示すとき、UPDATE信号134が、発生する。UPDATE信号134の発生が、P信号121を消滅するか、クリアする。UPDATE信号134の発生は、TLB_TRAP信号141が消滅されている場合、トラップ信号126をクリアし、TLB_TRAP141がトランジスタ145を通じて発生する場合、トラップ信号126をセットする。さらに、AND論理ゲート135に与えられる-UPDATE信号134が、クリア処理の後に発生し、ハザード信号124、125が、命令が有効な間に獲得され、AND論理ゲート135からの信号136が発生する。
【0055】
AND論理ゲート135からの信号136は、トランジスタ137、138に作用する。トランジスタ137が、最終的にパニック・トラップを生成し、トランジスタ138が、最終的に構造的トラップを生成する。パニック・トラップに関連して、UPDATE信号123が発生していないとき、トランジスタ137は、パニック・トラップ信号121を発生することができる。構造的トラップに関連して、UPDATE信号123が発生せず、且つ変換ルックアサイド・バッファ(TLB)214(図6)からTLB_TRAP信号141が発生するとき、トランジスタ138は、構造的トラップ信号126を発生する。
【0056】
ARBSLOT48と関連する命令が、引退メカニズム52(図3)によって引退されるとき、矢印146で示すように、引退信号RET[i](ここで、iはトラップ・インジケータ・ロジック122を含む特別のARBSLOT48に対応する)によって制御されるようなドライバ142、144は、パニック・トラップ信号121と構造的トラップ信号126のそれぞれを引退メカニズム52へ送り出す。
【0057】
ここで、28個の引退ポインタRET[27:0]は、AQUEUE38aとMQUEUE38bの各々のために生成される。これらの引退ポインタRET[27:0]は、次の2つの命令が各待ち行列38a、38bの中で引退する場所を示す。各待ち行列38a、38bに与えられた時間で、前述の2つの引退ポインタが各々2つの連続的命令処理メカニズム39a、39bに対して発生し、それによって、まだ引退していない最も古い命令を含む2つの命令処理メカニズム39a、39bを示す。命令が引退するとき、その対応するポインタは消滅し、次の最も古いものが発生する。実行の例として、引退ポインタRET[27:0]は、循環桁移動チェインから28個のマスタ・スレーブ・ラッチで生成される。
【0058】
図5は、本発明を実行するために、ロジックの実行が引退メカニズム52と関連することを示す。引退メカニズム52が、AQUEUE38aとMQUEUE38b中に引退命令と関連データで構成され、構造的状態になる。図5において、引退メカニズム52は、第1の行程52aと第2の行程52bを含む2つの行程パイプを含む。
【0059】
第1行程52aにおいて、AQUEUE38aとMQUEUE38bからの命令データは、構造的トラップと非構造的パニック・トラップの表示のために、それぞれのAQUEUEとMQUEUEの一部52a'、52a''によって、別々に分析される。構造的トラップの概念は、よく知られている技術である。構造的トラップの例は、アドレス・カルキュレータ58(図2)の変換ルックアサイド・バッファ(TLB)214(図6)によって生成される(TLBミス、書込違反、調整違反、参照違反など)である。(構造的又はパニック)トラップが発生するならば、関連命令は機能停止し、トラップ表示がトラップ・ベクトル・ゼネレータ114に転送される。更に、第1行程52aは、AQUEUE38aとMQUEUE38bからの命令を再処理して、再結合するために、命令と関連データを分析する。第1行程52aが第2行程52bに情報を伝送するように、再結合処理が発生する。最終的に、命令結果は、順に、汎用レジスタ46(図2)や制御レジスター72(図2)に転送される。
【0060】
特に、図5の中で示されるように、第1行程52aが4つのレジスタ148(簡潔にするため148a、148bの2つのみ示す)を含む。レジスタ148aは命令データをAQUEUE38aから受け取るのに対して、レジスタ148bは命令データをMQUEUE38bから受け取る。
【0061】
レジスタ148aが、ALUオペレーション・コード(OPCODE)154と、命令アドレス(INSTR_ADDR)155と、トラップ・タイプ・インジケータ(T_TYPE:1又は複数のビット)156と、構造的トラップ・インジケータ(T:1又は複数のビット)157と、パニック・トラップ・インジケータ(P:1又は複数のビット)102とを受け取る。T_TYPE156は、構造的トラップのタイプを示す。RET_INSERT信号152によって記録されるそれぞれのトランジスタ159に接続されるそれぞれの入力158を介して、前述の情報がレジスタ148に置かれる。
【0062】
第1行程52aのMQUEUE部分において、レジスタ148bは、メモリ・オペレーション・コード(INSTR_OPCODE)164と、命令アドレス(INSTR_ADDR)165と、トラップ・タイプ・インジケータ(T_TYPE:1又は複数のビット)166と、構造的トラップ・インジケータ(T:1又は複数のビット)167と、パニック・トラップ・インジケータ(P)102と、データ・アドレス(DATA_ADDR)62とを受け取る。前述の情報は、RET_INSERT152信号によって記録されるそれぞれの入力168とそれぞれのトランジスタ169を介して、レジスタ148bに移される。
【0063】
OR論理ゲート172は、パニック・トラップ・インジケータ106、112と同様に、構造的トラップ入力をDCACHE24とシステム・インタフェース制御108から受け取るために配置される。このゲート172の結果は、この引退した命令がトラップに必要か否かを示す。
【0064】
図5において、OR論理ゲート173が、MQUEUE38bと、DCACHE24と、システム・インタフェース制御108とから、パニック・トラップ・インジケータを受け取るために配置されている。このゲート173の結果は、パニック・トラップ・インジケータ102がこの引退した命令と関連しているか否かを示す。DCACHE24及びシステム・インタフェース制御108からのパニック・トラップ・インジケータ102は、外部システムによって生成されるので、命令と関係付けることができる。トラップを引退する次のMQUEUE命令に割り当てる。構造的トラップ(T_TYPE166で示される)とパニック・トラップとを選択できるならば、パニック・トラップが準備されていることがソフトウェア18に対して意味があるので、構造的トラップが機能する。
【0065】
他の実施の形態として、INSTR_ADDR155、165が、実際の命令アドレスを記憶するルックアップ・テーブルに、ポインタで置換される場合がある。この場合は、引退メカニズム52の第1行程52a内で、記憶域を節約する。
【0066】
第2行程52bにおいて、ADVANCE信号174が、レジスタ148a、148bの内容をそれぞれのレジスタ178a-178dに伝送するために、それぞれのトランジスタ176a-176dに作用する。上述では、レジスタ178a-178dの中で位置決めされた命令は、プログラム順となっている。トラップされた命令があるならば、最初のトラップされた命令だけが、レジスタ178a、178dの中で許可される。各々の命令は、命令の順序を示す一組のb4ビット182と関係付けられる。b4ビット182が引退メカニズム52からの出力であるとき、b4ビット182は命令を処理するために利用される。
【0067】
構造的トラップ・インジケータT157、167が、(図4の構造的又はパニック)トラップが生成されたか否かを示すトラップ信号187を生成するために、矢印185で示されるように、OR論理ゲート184に転送される。トラップ信号187は、トラップ・ベクトル・ゼネレータ114へ渡される。
【0068】
トラップ・タイプ・インジケータ156、166とパニック・トラップ・インジケータ102が結合され、トラップ・タイプ信号196を生じるために、矢印194で示されるように、マルチプレクサ(MUX)192に伝えられる。トラップされた命令が、レジスタ178a-178dの1つの中にあるとき、他の有効なトラップされた命令は、他のレジスタ178a-178dのいずれにも存在しない。更に、トラップされた命令を持っているレジスタ178a-178dが、T_TYPEとPを出力するとき、矢印196で示すように、トラップ・ゼネレータ114にこれらのビットを渡すために、レジスタ178a-178dは、MUX192を制御する。トラップ・タイプ・インジケータ156、166は、構造的トラップのタイプを識別するトラップ・インジケータT157、167に対応している。
【0069】
INSTR_ADDR155、165は、トラップ・ベクトル・ゼネレータ114のための命令アドレス201を生成するために、矢印199で示すように、MUX198に伝えられる。MUX198は、MUX192と同時に制御され、従って、トラップされた命令に関連するINSTR_ADDR201がトラップ・ベクトル・ゼネレータ114に転送される。
【0070】
発生されたトラップ信号187、トラップ・タイプ信号196、パニック・トラップ・インジケータ102、及び命令アドレス201の受取りに基づいて、トラップ・ベクトル・ゼネレータ114は、新しい命令アドレス121を生成して、それをIFETCH28(図3)に渡す。トラップが構造的トラップTであるとき、新しい命令アドレス121がトラップ・ハンドラ、例えば、TLBミス・ハンドラ、外部割込ハンドラなど、のアドレスに対応する。トラップが、IFETCH28又は命令処理メカニズム39a、39bからの非構造的パニック・トラップPであるとき、新しい命令アドレス121は、パニック・トラップされた命令に対応する。
【0071】
キャッシュ可干渉性チェック(CCC)ハザード分解システム
キャッシュ可干渉性チェック(CCC)ハザード125(図4)の生成を、図6を基に説明する。各々ARBSLOT48は、DCACHE24から出力されプロセッサ14で利用可能でないすでに使用されたCCCデータを、ロード命令が持つかどうかを決定するCCCハザード分解システム202を含む。
【0072】
キャッシュ可干渉性チェックの間、システム・インタフェース22に接続される、遠隔処理装置や遠隔入出力(I/O)装置のような他の装置が、データ・ラインの独占排他的なコピーを行う。従って、遠隔装置は、DCACHE24がデータ・ラインのコピーを持つか否かを決定するために、要求をDCACHE24へ送り出す。DCACHE24がデータ・ラインを持つならば、データ・ラインの所有権が、DCACHE24からシステム・インタフェース22に接続される遠隔装置に移される。
【0073】
本発明のMQUEUE38bにおいて、個別のARBSLOT48は、CCCデータ・ラインと対応しているアドレス(キャッシュ・インデックスとタグを含む)を受け取るか否か及びデータ・ラインが存在するか否かを決定するために、DCACHE24をアクセスすることに使用される。CCC照会に対するレスポンスが、システム・インタフェース制御108(最終的には、システム・インタフェース22)に送り出される。レスポンスは、その状態インジケータと同様に、(存在するならば)データ・ラインを含む。
【0074】
CCCデータ・ラインのアドレスは、いずれかのARBSLOT48の命令がCCCデータ・ラインを使用するか否かを決定するために、MQUEUE38b内の全てのARBSLOT48へ移される。CCCデータ・ラインのロードを意味する命令がすでに実行されるならば、パニック・トラップは、その対応するパニック・トラップ・インジケータ102(図4)を介してその命令に関連付けられる。
【0075】
図6において、CCCハザード分解システム202は、ヒット(HIT)インジケータ206と、キャッシュ・インデックス207と、タグ208とを有するレジスタ204を含む。キャッシュ・インデックス207とタグ208は、アドレス・カルキュレータ58から受け取られる。アドレス・カルキュレータ58は、リネーム・レジスタ44a、44bや汎用レジスタ46(図2)からオペランド(OP)212を受け取って、実行する加算機211を含む。加算機211が、矢印216で示すように、ARBSLOT48及び変換ルックアサイド・バッファ(TLB)214に渡される仮想アドレスを生成する。TLB214は仮想アドレス216に基づいて実アドレス・タグを生成し、矢印218で示すように、レジスタ204にそれを渡す。
【0076】
レジスタ204のキャッシュ・インデックス207は、矢印222で示すように、DCACHE24へアクセスするのに使用される。キャッシュ・インデックス222を受信して、DCACHE24が、タグ224と、状態インジケータ226と、データとを選別して出力するために、着信キャッシュ・インデックスを使用する。タグ224と状態インジケータ226は、ヒットかミスかを判断するために、タグ比較メカニズム228に渡される。データは、MQUEUEリネーム・レジスタ44bに移される。また、タグ比較メカニズム228が、ARBSLOTレジスタ204から受け取ったタグ208とDCACHE24からのタグ224を比較する。比較の結果が一致したならば、矢印227で示すように、タグ比較メカニズム228が、ヒット・インジケータ206を通してレジスタ204の中にヒットを発生する。
【0077】
更に、CCCハザード分解システム202が、矢印232で示すように、遠隔CCCARBSLOT48から(キャッシュ・インデックスを持つ)アドレスMISS_ADDR231と、ローカルARBSLOTレジスタ204からキャッシュ・インデックス207とを受け取るように構成された、キャッシュ・インデックス比較メカニズム228を含む。キャッシュ・インデックスの比較に基づいて、比較メカニズム228は、ローカルARBSLOT48の中の命令が、CCCデータ・ラインを使用したどうかを示すマッチ信号(MATCH)234を生成する。MATCH信号234は、CCCハザード信号125を発生するAND論理ゲート236と、CCCハザード信号125を消滅するAND論理ゲート238とに転送される。
【0078】
AND論理ゲート236は、MATCH信号234と、ローカルARBSLOT48がキャッシュ・ヒットを持ち、既にデータを受信しているかどうかを示すDONE信号239と、CCC ARBSLOT48が比較のためにそのアドレスMISS_ADDR231を配信したことを示す、CCC ARBSLOT48からのCCC制御信号(CCC-CNTL)241と、を受け取る。前述の信号の状態に基づいて、AND論理ゲート236は、信号237を生成して、CCCハザード信号125を生成するAND論理ゲート247にそれを渡す。
【0079】
DONE信号239は、AND論理ゲート243によって生成される。このDONE信号239を生成するために、AND論理ゲート243は、以下のものを受け取る。
(a)ARBSLOT48が他のARBSLOT48の中のストア命令に依存するロード命令を持つときを示すストア非依存信号(-DS:図7)242。
(b)ARBSLOT48の中に有効アドレスがあるときを示すキャッシュ・アクセス有効信号(CAV)245。
(c)DCACHE24がARBSLOT48の中の命令によってアクセスしたときを示す非キャッシュ保留信号(-CP:図7)246'。
(d)ヒット又はミスがDCACHE24で起こったことを示すヒット信号(HIT)247。
(e)ローカルARBSLOT48の中の命令がDCACHE24には無い現在発生しているミス・データに依存しないときを示す非依存ノーミス(onmiss)信号(-DM)248。
【0080】
AND論理ゲート238が、キャッシュ・インデックス比較メカニズム228からのMATCH信号234と、AND論理ゲート243からのDONE信号239と、最も古い命令ポインタOLDEST_INSTR237と、を受け取る。ポインタOLDEST_INSTR237が、ローカルARBSLOT48が最も古い命令を持って、既にその命令を引退させるために準備している時を示す。ここで、現在のARBSLOT48と以前のARBSLOT48とに対応する引退ポインタRETを考慮することによって、OLDEST_INSTR信号237が生成される。もし、現在のARBSLOT48に対応する引退ポインタが存在し、以前のARBSLOT48のそれが消滅しているならば、現在のARBSLOT48が最も古く、OLDEST_INSTR信号237が発生する。しかしながら、もし、現在のARBSLOT48に対応する引退ポインタが存在し、また、以前のARBSLOT48のそれも存在するならば、現在のARBSLOT48が一番古いものではなく、OLDEST_INSTR信号237が消滅する。
【0081】
ローカルARBSLOT48の中の命令が、引退メカニズム52(図3)によって引退するとき、AND論理ゲート238が、否定回路245によって反転され、CCCハザード信号125を消滅するAND論理ゲート247に送り出す、待ち時間信号(WAIT)244を生成する。従って、もし、ARBSLOT48が、引退メカニズム52(図3)にその命令を始めるために準備するならば、CCCハザード分解システム202がパニック・トラップを防ぎ、ARBSLOT48を完了させる。この機能は、不必要で役に立たないパニック・トラップを防いで、パフォーマンスを最適化する。
【0082】
記憶・ロード(ST/LD)ハザード分解システム
各々ARBSLOT48は、実行されるロード命令がまだ実行されていないストア命令に依存したデータを利用する場合、パニック・トラップを生成する記憶・ロード(ST/LD)ハザード分解システム252を有し、それを利用する。ロード命令が、実行されていないストア命令に依存するデータを使用したとき、データは無効であり、よって、ロード命令の結果も無効となり捨てられ、ロード命令が再実行される。
【0083】
図7において、ST/LDハザード分解システム252は、キャッシュ・インデックスの一致があるか否かを示す比較信号258を得るために、遠隔ARBSLOT48からの遠隔キャッシュ・インデックス253とローカル・レジスタ204の中のローカル・キャッシュ・インデックス207とを比較するキャッシュ・インデックス比較メカニズム228を持つ。一致する場合、それらのそれぞれの命令は、同じデータを必要とするオペレーションを指示する場合がある。後述するように、それらのキャッシュ・インデックスが一致するならば、命令が同じデータを必要とするか否かを確定するために、更に、それらの相対データ・サイズに関係して、チェックが実行される。
【0084】
スロット比較メカニズム259は、遠隔ARBSLOT48からの遠隔スロット番号SLOT261受け取って、それを、2つのARBSLOT48の2つの命令がより新しい命令であることを示すYOUNGER信号264を得るために、ローカル・レジスタ204の中のローカル・スロット番号SLOT263と比較する。命令が、順番にARBSLOT48に置かれ、したがって、スロット番号が、より新しい命令を含むARBSLOT48の番号を直接意味する。
【0085】
AND論理ゲート266は、キャッシュ・インデックス比較メカニズム254からの比較信号258と、MATCH信号269を得るために命令に応じたデータ・サイズが一致するか否かを示すSIZE_MATCH信号267とを受け取る。ここで、このデータ・サイズは、1バイト(8ビット)、ハーフ・ワード(hw:16ビット)、1ワード(32ビット)、及びダブル・ワード(dw:64ビット)を含む。データが一致する場合、それらが重なればよく、データ・サイズが同一である必要はない。図8に示されるサイズ・マッチ決定メカニズム326によって、SIZE_MATCH信号267が得られる。MATCH信号269が発生するとき、キャッシュ・インデックス207、255が一致し、そして、それらに対応するデータ・サイズが一致する。
【0086】
AND論理ゲート272は、YOUNGER信号264と、遠隔ARBSLOT48によってDCACHE24に送られるストア命令があるか否かを示すSTORE_LAUNCH信号274と、ローカルARBSLOT48の中の命令がロード命令であるか否かを示すLOAD信号275と、キャッシュ・インデックスとそれらのデータ・サイズが一致するか否かを示すAND論理ゲート266からのMATCH信号269と、を受け取る。前述の信号に基づいて、AND論理ゲート272は、AND論理ゲート278、279に送る信号277を生成する。信号277によって、ラッチあるいは他の適当なロジック・メカニズムのような依存ストア(DS)インジケータ281でDS信号315が発生し、若しくは、ARBSLOT48がすでに実行してデータ・アドレスを受け取ったか否かに応じて、ST/LDハザード信号124(図4)が発生する。一般に、他のARBSLOT48がDCACHE24にアドレスを渡すことを実行するストア命令を持つとき、AND論理ゲート272は、ロード命令を持つARBSLOT48の中で稼働するようになる。
【0087】
AND論理ゲート278がAND論理ゲート272からの信号277と否定信号-DONE282を受け取り、DSインジケータ281でDS信号315を発生するトランジスタ286に対するアクチュエータ信号284を得る。
【0088】
AND論理ゲート279がAND論理ゲート272からの信号277と肯定信号DONE288を受け取り、最終的にパニック・トラップを発生させるST/LD_HAZARD信号124(図4)を得る。
【0089】
AND論理ゲート292は、ローカルARBSLOT48の命令が遠隔ARBSLOT48の命令より古いかどうかを示すスロット比較メカニズム259からのYOUNGER信号264と、遠隔ARBSLOT48で実行されている命令がロード命令であるかどうかを示すLOAD_LAUNCH信号294と、ローカルARBSLOT48がストア命令を含むかどうかを示すSTORE信号295と、対応するデータ・サイズと同様にキャッシュ・インデックス207、255が一致するかどうかを示すAND論理ゲートロジック266からのマッチ信号269と、を受け取る。前述の信号に応じて、AND論理ゲート292は、一致がトリガーとなって、同じ遠隔ARBSLOT48の中のDSインジケータ281を介して最終的にDS信号315を発生するASSERT_DS信号を生成する。HIT_DS信号302を他の遠隔ARBSLOT48に送り出すドライバ299へASSERT_DS信号298が送られる。AND論理ゲート303と駆動信号305に基づくGRANTED_+_2信号307が真であるならば、HIT_DS信号302が、DSインジケータ281にDS信号315を発生するトランジスタ304を駆動する。DCACHE24へのアクセスがARBSLOT48に与えられた後に、GRANTED_+_2信号が2サイクルで発生するという問題がある。従って、ロード命令がDCACHE24で開始され、ローカルARBSLOT48がロード命令に依存するデータに関連するストア命令を含むとき、AND論理ゲート292は、上述のように稼働する。この場合、ロード命令が始められていて、データがまだ受け取られていない場合には、パニック・トラップは必要ない。
【0090】
AND論理ゲート306が、ストア命令が遠隔ARBSLOT48で引退するときを示す遠隔ARBSLOT48からのSTORE_RETIRE信号308と、(アドレスMISS_ADDRのキャッシュ・インデックスがローカル・キャッシュ・インデックスと一致するかどうかを示す図6のAND論理ゲート228からの)MATCH信号234と、を受け取る。前述の信号に基づいて、AND論理ゲート306は、DSインジケータ281によって維持されたDS信号315を最終的に消滅するDEASSERT_DS信号309を生成する。図7で示すように、DEASSERT_DS信号309が、DSインジケータ281によってを生じたDS信号315を消滅するトランジスタ312に作用する。
【0091】
DSインジケータ281によるDS信号315の発生は、いつARBSLOT48がその命令を実行しその結果に対応するデータ・アドレスを受け取るかを示すDONE信号239の生成に影響する。これについて、AND論理ゲート243(図6)は、否定回路318でDS信号315の反転によって生成される-DS信号242、CAV信号245、-CP信号2461、-DM信号248、及びHITインジケータ206からHIT信号247によって、DONE信号239を生成する。DS信号315が発生されるとき、この信号は、DCACHE24に対するアクセス要求からの依存するロード命令を防止する。
【0092】
更に、ストア命令が引退メカニズム52のパイプを通じて、スムーズに実行されなかったため、ARBSLOT48がデータを得るためにDCACHE24をもう一度アクセスするとき、ARBSLOT48が、引退メカニズム52からHIT_RETRY信号322を受け取る。このHIT_RETRY信号322は、否定回路323を通じて、AND論理ゲート324へ渡される。AND論理ゲート324も、GRANT_+_2信号327を受け取る。DCACHEアクセスが与えられた後、2サイクルでHIT_RETRY信号322が受け取られるとき、AND論理ゲート324は信号325を発生する。信号325は、順番に、CPインジケータ327から作用するトランジスタ326に作用する。PCインジケータ327は、それぞれARBSLOT48がDCACHE24をアクセスしたのか否かを示すCP信号246を消滅するか発生するために構成されるラッチか他の適当なロジック装置である。CPインジケータ327は、論理ハイ・ボルテージ(high voltage)に接続され、UPDATE信号123によって作用するトランジスタ328によって、CP信号246を発生するためにセットされる。さらに、CP信号246は、DONE信号239を生成するAND論理ゲート243に送出される-CP信号246'を生成するために、否定回路329に送出される。従って、HIT_RETRY信号322が発生するとき、-CP信号246'がAND論理ゲート243に発生せず、DONE信号239が消滅する。
【0093】
図8は、SIZE_MATCH信号267(図7)を生成する各ARBSLOT48のサイズ一致決定ロジック326を示す。一般に、図8のロジック326は、ロード命令が、それらのそれぞれのデータ・サイズに基づくストア命令に依存するか否かを決定する。各命令と関連するデータは、次のサイズのいずれかである。1バイト(8ビット)、ハーフ・ワード(16ビット)、1ワード(32ビット)、又はダブル・ワード(64ビット)。データ・アドレスの重複がある限り、データが異なるサイズのとき、ロード・データは記憶データに依存することができる。例えば、ロード・バイトが記憶ワードと重複するならば、ロード・バイトは、記憶ワードに依存する場合がある。また例えば、記憶バイトがロード・ハーフ・ワードの範囲内であるならば、ロード・ハーフ・ワードは、記憶バイトに依存する場合がある。
【0094】
ARBSLOT48の各々と対応するアドレスは、そのサイズを示すSIZE信号(例えば、2ビット)を含む。サイズの符号化を次に示す。「00」は1バイトを意味し、「01」はハーフ・ワードを意味し、「10」は1ワードを意味し、「11」はダブル・ワードを意味する。
【0095】
図8において、SIZE_MATCHメカニズム326は、開始命令に対応するREMOTE_ADDR[62]信号331と、ローカル命令に対応するLOCAL_ADDR[62]信号256a、334とを受け取るXOR論理ゲート328を含む。これらの信号に基づいて、XOR論理ゲート328が、これらのアドレス・ビットが一致するか否かを示す信号332を生成する。
【0096】
NAND論理ゲート334が、遠隔発生信号と対応しているREMOTE_SIZE[0]信号333と、ローカル命令と対応しているLOCAL_SIZE[0]信号335とを受け取り、これらの1つ又は両方のアドレスがハーフ・ワード・サイズより大きいサイズで発生したことを示す信号336を生成する。よって、オーバーラップ(重複)オペレーションは、これらの命令のアドレス・ビット[63,62]の一致を必要としない。
【0097】
XOR論理ゲート338が、遠隔発生信号と対応しているREMOTE_ADDR[63]信号339と、ローカル命令と対応しているLOCAL_ADDR[63]信号342とを受け取り、これらのアドレス・ビットが一致するか否かを示す信号346を生成する。
【0098】
NAND論理ゲート348が、遠隔発生信号と対応しているREMOTE_SIZE[1]信号352と、ローカル命令と対応しているLOCAL_SIZE[1]信号354とを受け取り、これらの1つ又は両方のアドレスが1バイト・サイズより大きいサイズで発生したことを示す信号356を生成する。よって、オーバーラップ(重複)オペレーションは、この命令のアドレス・ビット[63]の一致を必要としない。
【0099】
AND論理ゲート358は、信号332、336受け取って、それらの信号から、アドレス・ビット[62]が一致しないことを示す信号362を生成する。
【0100】
AND論理ゲート364が、信号346、356受け取って、それらの信号から、アドレス・ビット[63]が一致するか否かを示す信号366を生成する。
【0101】
NOR論理ゲート368が、信号362、366受け取って、SIZE_MATCH信号267を生成する。この信号により、最適な比較ができるようにデータ・サイズが一致する。
【0102】
サイズ一致決定メカニズム326(図8)と同様に、ST/LDハザード分解システム252(図7)の全体的なオペレーションを以下に説明する。
【0103】
ストア命令が開始されローカルARBSLOT48内でロード命令と一致するとき、ストア命令よりロード命令が新しいかどうかが確認される。ロード命令がストア命令より新しくない場合、なにも起きない。ロード命令がストア命令より新しい場合、ロード命令が実行されていれば、ST/LD_HAZARD信号124が発生し、ロード命令が実行されていないならば、DSインジケータが発生する。
【0104】
ロード命令が開始され他のARBSLOT48内でストア命令と一致するとき、ストア命令を持っているARBSLOT48は、ロード命令を持っているARBSLOT48の中で、DS信号315を発生させる。
【0105】
他のARBSLOT48の中で一致するストア命令が引退するとき、DSインジケータ281によって発生し消滅するDS信号315は、ARBSLOT48の中のロード命令によってクリアされる。DSインジケータがARBSLOT48で消滅するとき、ARBSLOT48は、DCACHE 24をアクセスできるようになる。
【0106】
本願発明は、例として次の実施態様を含む。
(1)プロセッサの順序外命令の実行で生じた不正確な結果から回復するためのシステムであって、前記プロセッサに接続され、命令を読出すフェッチ・メカニズムと、前記プロセッサに接続され、前記命令を前記フェッチ・メカニズムから受け取り、前記命令を順序外で実行する再処理メカニズムと、前記再処理メカニズムに接続され、前記再処理メカニズムの命令の構造的に不正確な実行を認識し、前記実行の後、前記命令をパニック・トラップ・インジケータと関連付けるパニック・トラップ論理手段と、前記再処理メカニズムと前記フェッチ・メカニズムに接続され、前記再処理メカニズムを消去し、前記フェッチ・メカニズムに再読出しをさせ、前記パニック・トラップ・インジケータに基づいて前記命令を開始するトラップ・ベクトル・ゼネレータと、を有する前記システム。
(2)前記パニック・トラップ論理手段が、ロード命令がストア命令より先に実行される場合と前記ロード命令が前記ストア命令によって供給されるデータに依存する場合とを決定し、前記決定に基づいて前記パニック・トラップインジケータを発生する依存論理手段を有する、(1)記載のシステム。
(3)更に、命令が、可干渉性チェック信号に基づいて転送されるデータを必要とする場合を決定するハザード論理手段を有する(1)記載のシステム。
(4)前記フェッチ・メカニズムが前記パニック・トラップ・インジケータと前記命令の1つとを関連付ける手段を有する(1)記載のシステム。
(5)更に、前記命令の1つがデータ・キャッシュへのアクセスの結果パリティ・エラーを生じたことを検出し、前記パニック・トラップ・インジケータと前記命令を関連付ける手段を有する(1)記載のシステム。
【0107】
(6)順序外命令を実行するプロセッサにおいて、不正確な実行結果を生じる命令から回復するシステムであって、前記プロセッサに接続され、命令を読出し、パニック・トラップ・インジケータと再実行される命令とを関連付けるフェッチ・メカニズムと、前記プロセッサに接続され、前記命令を前記フェッチ・メカニズムから受け取り、前記命令を順序外で実行する再処理メカニズムと、前記再処理メカニズムと前記フェッチ・メカニズムに接続され、命令の実行後に該命令を受け取り、前記再処理メカニズムを消去し、前記フェッチ・メカニズムに前記パニック・トラップ・インジケータに基づいて前記命令を順番に再読出しをさせるトラップ・ベクトル・ゼネレータと、を有する前記システム。
【0108】
(7)順序外命令を実行するプロセッサに接続されたデータ・キャッシュによって発生したパリティ・エラーから回復するためのシステムであって、命令を読出すフェッチ・メカニズムと、前記命令を前記フェッチ・メカニズムから受け取り、前記命令を順序外で実行し、前記データ・キャッシュへアクセスする再処理メカニズムと、アクセス中にパリティ・エラーが発生したことを検知し、アクセスによってパリティ・エラーが生じたときパニック・トラップ・インジケータを生成するデータ・キャッシュと、実行後に前記命令を引退させるタイミングを操作し、前記パニック・トラップ・インジケータを認識し、前記再処理メカニズムを消去し、前記フェッチ・メカニズムに再読出しをさせるパニック・トラップゼネレータと、を有する前記システム。
【0109】
(8)プロセッサにおいて、順序外命令の実行で生じた不正確な結果から回復するための方法であって、再処理メカニズムに命令を集めるステップと、前記命令を順序外で実行するステップと、命令の構造的に不正確な実行を認識するステップと、前記命令に応じて前記不正確な命令を示すパニック・トラップ・インジケータを発生するステップと、実行後前記命令を引退させる場合、前記パニック・トラップ・インジケータ認識し、前記再処理メカニズムを消去し、無効命令を順に再読出しするステップと、を有する前記方法。
【0110】
(9)順序外命令を実行するプロセッサにおいて、不正確な実行結果を生じる命令から回復する方法であって、命令を読出すステップと、前記読出し中に、命令が無効であることを決定するステップと、パニック・トラップ・インジケータと前記無効命令とを関連付けるステップと、前記無効命令を他の命令と共に再処理メカニズムへ配置するステップと、前記命令を前記再処理メカニズムの中で順序外に実行するステップと、実行後に前記命令を引退させる場合、パニック・トラップ・インジケータを認識し、前記再処理メカニズムを消去し、前記無効命令を順番に再読出しするステップと、を有する前記方法。
(10)順序外命令を実行するプロセッサに接続されたデータ・キャッシュによって発生したパリティ・エラーから回復するための方法であって、再処理メカニズムに命令を集めるステップと、前記命令を順序外で実行するステップと、前記キャッシュにアクセスする命令を実行するステップと、前記アクセス中にパリティ・エラーが発生したことを検知するステップと、前記プロセッサにおいて、前記データ・キャッシュからトラップ・ベクトル・ゼネレータへパニック・トラップ・インジケータを生成して転送するステップと、を有する前記方法。
【0111】
【発明の効果】
本発明によると、命令の順序外実行から生成された不正確な結果からプロセッサを回復するのに使われ、更には、タイミングと同期を図るパニック・トラップ・システム及び方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の新しいパニック・トラップ・システム及び方法を実行するコンピュータを示すブロック図である。
【図2】図1のプロセッサの命令読出/実行システムの実行処理を示すブロック図である。
【図3】図1の新しいパニック・トラップ・システムの実行処理を示すブロック図である。
【図4】図3の各アドレス・リオーダ・バッファ・スロット(ARBSLOT)中のパニック・インジケータを発生するトラップ・インジケータ・ロジックの実行処理を示すブロック図である。
【図5】図3の引退メカニズム(RETIRE)の実行処理を示すブロック図である。
【図6】図4のハザード信号CCC_HAZARD(最終的にパニック・トラップ)を生成するためのキャッシュ可干渉性チェック(CCC)システムを示すブロック図である。
【図7】図4のハザード信号ST/LD_HAZARD(最終的にパニック・トラップ)を生成するための記憶/ロード(ST/LD)ハザード分解システムの実行処理を示すブロック図である。
【図8】図7の信号SIZE_MATCHを生成するサイズ・マッチ決定メカニズムの実行処理を示すブロック図である。
【符号の説明】
12 命令読出/実行システム
24 データ・キャッシュ
26 命令キャッシュ
28 命令フェッチ・メカニズム
32 ソート・メカニズム
38a ALU待ち行列
38b メモリ待ち行列
42 算術演算論理装置
48 アドレス・リオーダ・バッファ・スロット
52 引退メカニズム
Claims (3)
- プロセッサ内ソフトウェアの順序外命令の実行で生じた不正確な結果から回復するためのシステムであって、
前記プロセッサに接続され、命令を読出すフェッチ・メカニズムと、
前記プロセッサに接続され、前記命令を前記フェッチ・メカニズムから受け取り、前記命令を順序外で実行する再処理メカニズムと、
前記再処理メカニズムに接続され、前記再処理メカニズムの命令の構造的に不正確な実行を認識し、前記実行の後、前記命令をパニック・トラップ・インジケータと関連付けるパニック・トラップ論理手段と、
前記再処理メカニズムと前記フェッチ・メカニズムに接続され、前記再処理メカニズム内の命令を消去し、前記フェッチ・メカニズムに再読出しをさせ、前記パニック・トラップ・インジケータに基づいて前記命令を開始するトラップ・ベクトル・ジェネレータと、
を備え、前記パニック・トラップ・インジケータは、前記構造的に不正確な実行を生じさせた命令を前記再処理メカニズムから引退させる引退信号による制御によって、前記トラップ・ベクトル・ジェネレータに送られるようにした、前記システム。 - プロセッサ内ソフトウェアの順序外命令の実行で生じた不正確な結果から回復するためのシステムであって、
前記順序外命令を集め、実行する第1の手段と、
前記第1の手段に接続され、命令の構造的に不正確な実行を認識し、前記不正確な実行を生じた命令を示す、前記ソフトウェアに不可視の非構造的ハードウェア信号である、パニック・トラップ・インジケータを、該命令を引退させる引退信号によってアサートする第2の手段と、
前記アサートされたパニック・トラップ・インジケータを認識し、前記不正確な実行を生じた命令から順に命令の再読出しを行う第3の手段と、
を有する前記システム。 - プロセッサ内ソフトウェアの順序外命令の実行で生じた不正確な結果から回復するための方法であって、
再処理メカニズムに命令を集めるステップと、
前記命令を順序外で実行するステップと、
命令の構造的に不正確な実行を認識するステップと、
命令の構造的に不正確な命令を認識し、該不正確な実行を生じた命令を示す、前記ソフトウェアに不可視の非構造的ハードウェア信号であるパニック・トラップ・インジケータを、該命令を引退させる引退信号によってアサートするステップと、
前記アサートされたパニック・トラップ・インジケータを認識し、前記再処理メカニズム内の命令を消去し、前記不正確な実行を生じた命令から順に命令の再読出しを行うステップと、
を有する前記方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US609,807 | 1996-03-01 | ||
US08/609,807 US5838942A (en) | 1996-03-01 | 1996-03-01 | Panic trap system and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09244895A JPH09244895A (ja) | 1997-09-19 |
JP3715057B2 true JP3715057B2 (ja) | 2005-11-09 |
Family
ID=24442416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02742397A Expired - Fee Related JP3715057B2 (ja) | 1996-03-01 | 1997-02-12 | パニック・トラップ・システム |
Country Status (4)
Country | Link |
---|---|
US (1) | US5838942A (ja) |
JP (1) | JP3715057B2 (ja) |
DE (1) | DE19650509C2 (ja) |
GB (1) | GB2310742B (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6892294B1 (en) | 2000-02-03 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Identifying execution ready instructions and allocating ports associated with execution resources in an out-of-order processor |
US11494331B2 (en) * | 2019-09-10 | 2022-11-08 | Cornami, Inc. | Reconfigurable processor circuit architecture |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1990010267A1 (en) * | 1989-02-24 | 1990-09-07 | Nexgen Microsystems | Distributed pipeline control for a computer |
US5280615A (en) * | 1990-03-23 | 1994-01-18 | Unisys Corporation | Out of order job processing method and apparatus |
JP2642529B2 (ja) * | 1991-04-30 | 1997-08-20 | 株式会社東芝 | 並列プロセッサーの命令分配処理装置 |
US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
JPH0820949B2 (ja) * | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
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 |
US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
US5420990A (en) * | 1993-06-17 | 1995-05-30 | Digital Equipment Corporation | Mechanism for enforcing the correct order of instruction execution |
SG48907A1 (en) * | 1993-12-01 | 1998-05-18 | Intel Corp | Exception handling in a processor that performs speculative out-of-order instruction execution |
US5627985A (en) * | 1994-01-04 | 1997-05-06 | Intel Corporation | Speculative and committed resource files in an out-of-order processor |
US5524263A (en) * | 1994-02-25 | 1996-06-04 | Intel Corporation | Method and apparatus for partial and full stall handling in allocation |
US5546597A (en) * | 1994-02-28 | 1996-08-13 | Intel Corporation | Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution |
US5584037A (en) * | 1994-03-01 | 1996-12-10 | Intel Corporation | Entry allocation in a circular buffer |
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 |
US5649225A (en) * | 1994-06-01 | 1997-07-15 | Advanced Micro Devices, Inc. | Resynchronization of a superscalar processor |
US5625789A (en) * | 1994-10-24 | 1997-04-29 | International Business Machines Corporation | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle |
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 |
-
1996
- 1996-03-01 US US08/609,807 patent/US5838942A/en not_active Expired - Lifetime
- 1996-12-05 DE DE19650509A patent/DE19650509C2/de not_active Expired - Fee Related
-
1997
- 1997-02-07 GB GB9702535A patent/GB2310742B/en not_active Expired - Fee Related
- 1997-02-12 JP JP02742397A patent/JP3715057B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE19650509C2 (de) | 2002-02-28 |
GB2310742A (en) | 1997-09-03 |
GB2310742B (en) | 2000-09-13 |
US5838942A (en) | 1998-11-17 |
GB9702535D0 (en) | 1997-03-26 |
JPH09244895A (ja) | 1997-09-19 |
DE19650509A1 (de) | 1997-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5809275A (en) | Store-to-load hazard resolution system and method for a processor that executes instructions out of order | |
US6119204A (en) | Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization | |
US6021485A (en) | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching | |
US6748518B1 (en) | Multi-level multiprocessor speculation mechanism | |
US4985825A (en) | System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer | |
US5511175A (en) | Method an apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US6349382B1 (en) | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order | |
US6691220B1 (en) | Multiprocessor speculation mechanism via a barrier speculation flag | |
US6625660B1 (en) | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations | |
US6963967B1 (en) | System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture | |
US6266768B1 (en) | System and method for permitting out-of-order execution of load instructions | |
US5931957A (en) | Support for out-of-order execution of loads and stores in a processor | |
JPS63193230A (ja) | 高性能マイクロプロセッサ集積回路とメモリ参照を行なう方法 | |
US6606702B1 (en) | Multiprocessor speculation mechanism with imprecise recycling of storage operations | |
JP2017532643A (ja) | 永続ストアフェンスプロセッサ、方法、システム、及び命令 | |
US5930832A (en) | Apparatus to guarantee TLB inclusion for store operations | |
US5751986A (en) | Computer system with self-consistent ordering mechanism | |
US6301654B1 (en) | System and method for permitting out-of-order execution of load and store instructions | |
JPH05303492A (ja) | データ処理装置 | |
US5748937A (en) | Computer system that maintains processor ordering consistency by snooping an external bus for conflicts during out of order execution of memory access instructions | |
JP3159435B2 (ja) | ロード/ロード検出及びリオーダー方法及び装置 | |
US6725340B1 (en) | Mechanism for folding storage barrier operations in a multiprocessor system | |
US6728873B1 (en) | System and method for providing multiprocessor speculation within a speculative branch path | |
US6477635B1 (en) | Data processing system including load/store unit having a real address tag array and method for correcting effective address aliasing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040126 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040126 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050419 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050630 |
|
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: 20050823 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050824 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |