(57)【特許請求の範囲】
【請求項１】
命令を処理するコンピュータと共に用いて結果を生成しそれによってコンピュータの見ることができる状態を変えるレジスタ・ファイル・バックアップ装置であって、該コンピュータは、データを格納するための複数のアドレス指定可能な場所を備えたレジスタ・ファイルを有し、該バックアップ装置は、ある命令が例外を生成した場合にコンピュータの見ることができる状態を以前の状態に戻す構成であり、該バックアップ装置は、
バックアップ・キュー、および、
結果タグ・キューであり、命令の結果が格納されるレジスタ・ファイルの中の宛先場所に対応するアドレス情報をプログラムの順序で順次格納し、最初の宛先場所をレジスタ・ファイルへ転送し、次の宛先場所をレジスタ・ファイルおよび前記バックアップ・キューの双方へ転送する結果タグ・キューを有し、
前記バックアップ・キューは、前記結果タグ・キューから前記次の宛先場所を受け取って格納し、宛先場所が変更される以前のレジスタ・ファイルの中の前記次の宛先場所の内容に対応するバックアップ・データを受け取ってバックアップ格納し、ある命令が例外を生成した後に前記バックアップ・データをレジスタ・ファイルの中の前記次の宛先場所へ戻し転送する装置。
【請求項２】
前記結果タグ・キューは、さらに、命令の結果が格納されるレジスタ・ファイルの中の宛先場所に対応する前記アドレス情報を格納する複数の記憶場所を有し、前記アドレス情報は、レジスタ・ファイルの中の宛先場所のアドレスの一部であるタグを備える請求項１記載の装置。
【請求項３】
前記結果タグ・キューは、前記次の宛先場所のアドレス情報を獲得するよりも、前記結果タグ・キューの中の別の記憶場所から前記最初の宛先場所のアドレス情報を獲得する請求項２記載の装置。
【請求項４】
前記最初の宛先場所のアドレス情報および前記次の宛先場所のアドレス情報は、前記結果タグ・キューの中の別々の記憶場所に格納される請求項２記載の装置。
【請求項５】
前記バックアップ・キューは、さらに、その中に前記バックアップ・データおよび前記次の宛先場所を格納する複数の記憶場所を備える請求項１記載の装置。
【請求項６】
前記バックアップ・キューは、レジスタ・ファイルが書き込まれる第一のサイクルと例外が検出される第二のサイクルの間のパイプライン・ステージの数に等しい深度を備える請求項５記載の装置。
【請求項７】
前記装置は、さらに、
前記次の宛先場所が前記バックアップ・キューの中に格納される前にそれを一時的に格納するための第一のラッチ、および、
前記バックアップ・データが前記バックアップ・キューの中に格納される前にそれを一時的に格納するための第二のラッチを備える請求項１記載の装置。
【請求項８】
前記装置は、さらに、
前記結果タグ・キューから前記最初の宛先場所を受け取り前記バックアップ・キューから前記次の宛先場所を読み出す第一のマルチプレクサ、および、
前記バックアップ・キューから命令の結果を受け取り前記バックアップ・データを読み出す第二のマルチプレクサを備える請求項１記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータにおいてプログラムが見ることのできるマシン状態（ｐｒｏｇｒａｍ−ｖｉｓｉｂｌｅ  ｍａｃｈｉｎｅ  ｓｔａｔｅ）の管理に関し、より具体的には、レジスタ・ファイルの内容を尚早に上書きする例外を処理するように設計されたコンピュータのレジスタ・ファイル・システム並びに方法に関する。
【背景技術】
【０００２】
本明細書の中で論じた基本概念については、多くの参考資料の中でより詳細に説明されている（例えば、非特許文献１、２、３参照）。特に非特許文献１では第５章でレジスタ・ファイルの例外処理について優れた記述がある。
【０００３】
例外処理、それもとりわけ正確な割り込み（ｐｒｅｃｉｓｅ  ｉｎｔｅｒｒｕｐｔ）をサポートすることは、コンピュータ・アーキテクチャ上の複雑な問題を提起することになる。例えば、或る特定の命令の結果については、その命令は全く例外をシグナルしないことが確定してからでないと、中央演算処理装置（ＣＰＵ）のレジスタ・ファイルや、プログラムが見ることのできるマシン状態のその他いかなる部分にも書き込まれることはない。そうでなければ、その命令は、例外がシグナルされてから、マシンにおける見ることができる状態に影響を及ぼすことになる。（本明細書で、ＣＰＵ、コンピュータ、並びにプロセッサという用語は同じ意味において使われている。）
【非特許文献１】Ｍｉｋｅ  Ｊｏｈｎｓｏｎ著「Ｓｕｐｅｒｓｃａｌａｒ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｄｅｓｉｇｎ」（Ｐｒｅｎｔｉｃｅ−Ｈａｌｌ，  Ｉｎｃ．，  Ｅｎｇｌｅｗｏｏｄ  Ｃｌｉｆｆｓ，  Ｎｅｗ  Ｊｅｒｓｅｙ，  １９９１）
【非特許文献２】Ｊｏｈｎ  Ｌ．  Ｈｅｎｎｅｓｓｙ他著「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ−Ａ  Ｑｕａｎｔｉｔａｔｉｖｅ  Ａｐｐｒｏａｃｈ」  （Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ  Ｐｕｂｌｉｓｈｅｒｓ，  Ｉｎｃ．，Ｓａｎ  Ｍａｔｅｏ，  １９９０）
【非特許文献３】Ｊ．  Ｅ．  Ｓｍｉｔｈ他「Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｐｒｅｃｉｓｅ  Ｉｎｔｅｒｒｕｐｔｓ  ｉｎ  Ｐｉｐｅｌｉｎｅｄ  Ｐｒｏｃｅｓｓｓｏｒｓ」、第１２回国際年次シンポジウム（１９８５年６月）会報、３６〜４４ページ
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来、最後の例外が決定されてからでないと書き込みが起きないように、この問題はプロセッサのパイプライン・ステージ（パイプラインの深度）数を増やすことによって回避されてきた。しかしながら、この方法は命令をインタロックする許容程度を縮小したり、バイパス回路の必要容量を増加したりすることになり、一般的にいずれの場合においても総体的な性能の低下を招くことになる。
【０００５】
「履歴バツファ（ｈｉｓｔｏｒｙ  ｂｕｆｆｅｒ）」の概念については、コンピュータ・アーキテクチャに関する第１２回国際年次シンポジウム（１９８５年６月）の会報（非特許文献３）の中で、順序を無視して完了（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｃｏｍｐｌｅｔｉｏｎ）するパイプライン・スカラ式のプロセッサにおいて正確な割り込みを実行するための手段として紹介されている。このアプローチにおいて、レジスタ・ファイルはマシンにおいてプログラムが見ることのできる状態を包含し、履歴バッファは先読み（ｌｏｏｋａｈｅａｄ）状態の項目によって入れ替えられた、順序通り（ｉｎ−ｏｒｄｅｒ）の状態の項目を格納する（即ち、新しい値によって置き換えられた古い値を包含する。そこから履歴バッファと名付けられている。）。
【０００６】
履歴バッファは円環状バッファとして管理される。履歴バッファ内の各エントリにはエントリ番号が付けられる。履歴バッファには「ｎ」個のエントリが存在するが、その場合「ｎ」は最長の機能ユニット・パイプラインの長さに相当する。ヘッド・タグ並びにテール・タグは、バッファのヘッドと、命令用に予約されたバッファ内のエントリをそれぞれ識別するために使用される。ヘッドとテールの間のエントリは有効と考えられる。
【０００７】
発行（ｉｓｓｕｅ）時、各履歴バッファのエントリは、（１）命令の発行以前のレジスタ・ファイルの値と、（２）結果の宛先レジスタ、（３）プログラム・カウンタ、（４）例外が発行時に生成されるか否かによって例外ビットまたは有効ビットのいずれかを含む制御情報と共にロードされる。
【０００８】
結果シフト・レジスタは、順序を無視して完了するためにマシン状態を正しく回復するのに必要となるリオーダ（ｒｅｏｒｄｅｒ）・タグを含む様々なマシン制御信号を管理すべく履歴バッファと共に使われる。結果シフト・レジスタは結果をうみ出す機能ユニット用のエントリと結果の宛先レジスタ用のエントリとを包含している。結果シフト・レジスタは先入れ先出し（ＦＩＦＯ）方式のスタックとして動作する。
【０００９】
プロセッサの機能ユニットから結果バス上を送られる結果は、命令が完了するとレジスタ・ファイルに直接書き込まれる。命令が完了すると例外報告が戻ってきて履歴バッファに書き込まれる。例外報告は結果シフト・レジスタ内にあるタグの使用によってしかるべき履歴バッファのエントリに導かれる。履歴バッファが例外の発生なく完了したとわかっているヘッドの部分に要素を含んでいる場合、その履歴バッファのエントリはもう不要になり、そのバッファの記憶場所は再使用することができる（ヘッド・ポインタが増分される）。履歴バッファはパイプライン・ステージの最大数より短いことがある。履歴バッファのエントリが全て使われ（バッファが小さすぎる）ていれば、エントリが使用可能になるまで発行は阻止されなければならない。従って、履歴バッファはこうした事がめったに起こらないように充分に長くしてある。
【００１０】
例外条件が履歴バッファのヘッドに到着すると、バッファは制止され、命令の発行は直ちに中止されて、パイプライン活動が完了するまで待機になる。活動バッファのエントリは次にテールからヘッドへの順序で空にされ、履歴値はその元々のレジスタにロードされる。履歴のヘッドにあるプログラム・カウンタ値は正確なプログラム・カウンタである。
【００１１】
この方法によって別途に必要となるハードウエアは履歴情報を入れておくための大規模なバッファの形状をしている。ソース・オペランド同様に宛先の値は発行時に読み出されなければならないから、レジスタ・ファイルも３個の読み出しポートを備えていなければならない。
【００１２】
前文に鑑み、例外処理をするためにはそれゆえに簡略化されたバックアップ・システムが必要であるということが明確である。
【課題を解決するための手段】
【００１３】
本発明は、コンピュータにおいて見ることができる状態を変える結果を生成する命令を処理する、コンピュータで使うためのレジスタ・ファイル・バックアップキューのシステム並びに方法を対象としている。コンピュータはデータを格納するための複数のアドレス指定可能な記憶場所を有するレジスタ・ファイルを備えている。本発明に基づくバンクアップ・システムは、１つの命令によって例外が生成された場合、コンピュータにおいて見ることができる状態を前の状態に戻すように設計されている。当バックアップ・システムは、同等のソフトウエアやハードウエア・デバイスと比較してより簡単にレジスタ・ファイルのバックアップができるように、オーバヘッドを減らしてある。
【００１４】
本発明では、命令結果が格納されるべきレジスタ・ファイル内の宛先の記憶場所に該当するアドレス情報を、プログラムの順序に従って結果タグ・キューに順次格納する。
【００１５】
結果タグ・キューから、アドレス情報の第１の部分はレジスタ・ファイルに転送され、アドレス情報の第２の部分はレジスタ・ファイルの内容をバックアップ格納するためにバックアップ・キューに転送される。
【００１６】
バックアップ・キューはまた、宛先記憶場所が前記のアドレス情報の第２の部分に従って変更される前に、レジスタ・ファイル内の少なくとも１ケ所以上の宛先記憶場所の内容に該当するさらに別の情報を受け取り且つ格納する。
【００１７】
本発明では、もし命令例外が生成されれば、バックアップ・キュー内に格納された前記のアドレス情報の第２の部分に従って、当バックアップ・キューからレジスタ・ファイルの記憶場所に、前記のさらに別の情報を転送する。
【００１８】
１つの命令が終わる前に、読み出しに先立って前の命令までの全ての命令が既に効力を発しているように、命令によって修正変更されることがある（レジスタ・ファイルの宛先レジスタの以前の値を含むが、それに限定されるわけではない）プログラムが見ることのできる何らかの状態の値が読み出される。その結果として出てきたデータは、「実行されていない命令（ｕｎｃｏｍｍｉｔｔｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ）」の直前の、プロセッサにおいてプログラムが見ることのできる状態を事実上「覚えている」バックアップ・キューの中に入れられ、従って例外を起こすどんな命令の効力をも無効にするために使うことができる。（「実行されていない命令」はＨｅｎｎｅｓｓｙ他によって、ある将来の時点で例外を起こすかもしれない命令と定義されている。）
【発明の効果】
【００１９】
本発明は、このように、割り込みがシグナルされる例外を結果が書き込まれた後にサポートし且つ順序を無視して完了することのないメカニズムを提供するものである。設計の複雑化は最小限に抑えられており、遅れて発生する例外（ｌａｔｅ−ｅｘｃｅｐｔｉｏｎ）のケースを処理するためにプロセッサのパイプライン深度をさらに大きくする必要はない。このアプローチの方がパイプラインの深度を大きくするやり方より既存の設計（例えば、機能拡張（拡大）によってそれまでできなかった遅れて発生する例外ケースが可能になる場合）に「付け加え」易い。コンフィギャレーションによっては、例外が発生するケースを除いて、総体的な性能には大して影響しないこともある。
【００２０】
上述の、またさらに他の本発明の特徴並びに優れた点については、添付の図面に示されているように、本発明に基づく好適な実施例の以下の詳細な記述から明確になるであろう。
【発明を実施するための最良の形態】
【００２１】
本発明に基づく動作については図１に示した典型的なブロック図に表す通りである。この例において、本発明に基づくコンピュータのレジスタ・ファイル・システムの環境は、図１に示すように、命令オペランド及び結果を格納するための複数のアドレス指定可能な記憶場所を有するレジスタ・ファイル１０２、機能ユニット兼バイパス論理１０４、結果を格納するために命令によって指定されるレジスタ・ファイルの記憶場所のアドレスに該当する情報を格納するための結果タグ・キュー１０６（結果タグとも呼ばれる）、バックアップ・キュー１０８、バックアップ・データ・ラツチ１１０、バックアップ・タグ・ラッチ１１２、データ・マルチプレクサ１１４、並びにアドレス／タグ・マルチプレクサ１１６とから成り立っている。
【００２２】
上記の例においてブロック１０２を中央演算処理装置（プロセッサ、ＣＰＵもしくはコンピュータとも呼ばれる）のレジスタ・ファイルと考えるのが最も簡単だが、本発明は、普遍性を損なうことなく、プログラムが見ることのできるマシン状態のどんな部分（または全体）にも適用される。
【００２３】
レジスタ・ファイル１０２は命令のオペランド（オペランド・タグとも呼ばれる）を格納するレジスタのアドレスに該当する情報を受け取るＰ ａｄｒ入力を備えている。オペランドはレジスタ・ファイル１０２に格納され、従来の方法で命令を実行するためにバス１３４を介して機能ユニット１０４に渡される。
【００２４】
命令オペランドの読み出しを行なう他に、システムは命令結果を受け取るための宛先レジスタを決定する。システムは次に、命令の実行に先立って宛先レジスタの内容を読み出し、その内容と宛先レジスタに該当するタグ（例えば、レジスタ・ファイル・エントリのアドレスなど）をバックアツプ・キュー１０８の中に格納する。例外（例えば、加算あふれなどの演算例外）が発生した場合には、バックアップ・キュー１０８の内容を読み出し、それに該当するタグによって指定された記憶場所にあるレジスタ・ファイル１０２の中にそのデータを格納することによって、例外が発生する前のレジスタ・ファイル１０２の状態を取り戻すことができる。
【００２５】
レジスタ・ファイル１０２内のデータのバックアップを整合するには、結果タグ・キュー１０６が必要である。結果タグ・キュー１０６は、命令結果を格納するために、レジスタ・ファイル１０２内の宛先記憶場所に該当するタグを格納する。結果タグは従来の方法で命令をデコードすることによって生成される。結果タグ・キュー１０６に格納されたタグは実行する順序に従って、先入れ先出し方式で格納される。結果タグ・キュー１０６は、レジスタ・ファイルの同じ宛先記憶場所への書き込み命令がある場合、その前の命令が全て完了するまでタグを遅らせる。
【００２６】
バックアップ・キュー１０８の深度は、レジスタ・ファイルが書き込まれるサイクルと例外が検出されるサイクルの間のパイプライン・ステージ数（即ち、サイクル）によって決まる。
【００２７】
本発明に基づく実施例の一つは、フェッチ、デコード、実行／格納の３ステージのパイプライン構成になっている。この実施例において、例外はレジスタ・ファイル１０２が書き込まれるのと同じサイクル中にしかシグナルされない。従って、バックアップ・キュー１０８は１個の宛先レジスタの内容及びそのタグを格納するのに充分な深度であればよい。
【００２８】
従来の方法では、マルチサイクルのパイプライン遅延の後で、いくつかの命令結果がレジスタ・ファイルＩ０２に書き込まれ且つ例外が発生すれば、その結果、マシンの多くの状態が遅れてシグナルされた例外によって消されてしまうことになる。しかしながら、本発明においては、バックアップ・キュー１０８を深くすることにより、それらの失われた状態を復元するために失われた状態を回復することができる。例外が処理される前に、それ以前の全ての結果（命令が実行される前のレジスタ・ファイル内に収められている結果）が、例外を生成した命令に先行する命令までレジスタ・ファイル１０２に書き込まれていなければならない。
【００２９】
当業者には明らかなように、（例えば）データ例外が発生したかどうかを示す信号はデータ・バスから発信され、制御論理（表示されていない）によって検出される。制御論理は次に何をするかを決定し、マルチプレクサ１１４及び１１６の入力集合の一つを選択する制御信号１１８（図１に表示）を生成する。
【００３０】
通常動作（即ち、例外発生なし）中、制御信号１１８は、結果をレジスタ・ファイル１０２の書き込みポートＷに渡すべく機能ユニッ１０４から「命令結果データ」１２２を選択するために、マルチプレクサ１１４を制御する。
【００３１】
例外が検出されれば、制御信号１１８は、レジスタ・ファイルの状態を例外を起こした命令の直前の状態に戻すべくバックアップ・キュー１０８から「書き込み取消し（ｕｎｗｒｉｔｅ）データ」１２４を選択するために、マルチプレクサ１１４を制御する。
【００３２】
同様に、通常動作（例外発生なし）中、制御信号１１８は、結果タグ・キュー１０６のトップからレジスタ・ファイル１０２の書き込みアドレス入力Ｗ ａｄｒまでの結果タグを選択するために、マルチプレクサ１１６を制御する。例外が検出されれば、制御信号１１８は、レジスタ・ファイル１０２に書き込み取消しデータをどこに格納すべきか指示するためにバックアップ・キュー１０８から「書き込み取消しタグ」１２５を選択すべく、マルチプレクサ１１６を制御する。
【００３３】
データのバックアップについて記載する。図１に示すように、レジスタ・ファイル１０２は結果タグ・キュー１０６からの命令オペランドに関する情報を受信するための入力ポート「Ｑ ａｄｒ」  を備えている。Ｑ ａｄｒ入力ポートは、バックアップ・キュー１０８に書き込まれるべきデータに該当する「バックアップ・タグ」１２６を結果タグ・キュー１０６から受け取る。この例において、バス１２８は次のサイクルでレジスタ・ファイル１０２に書き込まれるべき結果タグ・キュー１０６のエントリに接続されている。結果タグはＱ ａｄｒ入力に送られると同時に、バス１２８を介してバックアップ・キュー１０８にも送られ一時的にタグ・ラッチ１１２に格納される。こうすることによって、本発明に基づくシステムは、次の命令によって上書きされるべき結果をバックアップ・キュー１０８に格納することができるようになる。レジスタ・ファイル１０２はデータ出力ポート「Ｑ」を介してバックアップ・タグ１２６に該当する「バックアップ・データ」１３０を出力する。バックアップ・データ１３０は、タグ・ラッチ１１２に先に到着する該当バックアップ・タグ１２６が同時にバックアップ・キュー１０８にラッチされるように、データラッチ１１０に送られる。
【００３４】
制御ライン１３２はバックアップ・キュー１０８のスタックの方向を変えるために備えられている。通常動作中、バックアップ・データ及びバックアップ・タグはバックアップ・キュー１０８の中に押し込まれる。上述のように、バックアップ・キュー１０８の深度はパイプラインの長さによって決まる。この例におけるバックアップ・キュー１０８の深度は１である。深度によって、古い情報は、最後のエントリがより新しい情報によって上書きされると、スタックの「底から押し出される」と言われている。例外が検出されれば、制御信号１３２はバックアップ・キュー１０８の方向を逆にして、情報が後入れ先出し方式ではじき出され、レジスタ・ファイル１０２の中に格納される。
【００３５】
書き込み取消しのプロセスはハードウエアまたはソフトウエアのオペレーティング・システムのいずれかによって制御することができる。しかしながら、オペレーティング・システムで制御する場合、そのプロセスを制御する命令自体をバックアップ・キュー１０８に書き込むことがないように注意しなければならない。即ち、例外ハンドラが呼び出される前にキューを使用不可にするメカニズムがなければならない。
【００３６】
本発明に基づく好適な実施例においては、読み出しステージと書き込みステージとは正確に１サイクルで隔てられているから、追加の読み出しポート（即ち、Ｐポートに加えて）は不要である。さらに以下の条件の一つが満たされている：
１．遅れて例外を発生させることができる命令に要する読み出しポートとは別に、読み出しポートを必要とする遅れた例外を生成させることができない命令が存在し、バックアップ・キュー１０８の深度がちょうど１である（即ち、最後の例外がシグナルするのがちょうど１サイクル遅く、該当する書き込みを打ち切れない）。
【００３７】
２．  最大数の読み出しポートを要する命令はいずれも常にその引き数と同一のレジスタ番号を書き込む。
【００３８】
上記の条件の一つが満たされてはいるが、読み出しステージと書き込みステージとの間に１サイクル以上の間隔がある場合でも、本発明はレジスタ・ファイルの読み出しポート数を増やさずに適用することができる。この場合、書き込み前のステージではなく読み出しのステージでバックアップ・キュー１０８の中を読み出し、且つバックアップ・キュー１０８を深くすることが必要である。しかしながら、インターロックの追加（前の命令の結果からそのバックアップの読み出しまで）により性能が低下する可能性があるから、これは最適とはいえない。
【００３９】
本発明による例として、表１に示すように、Ａ、Ｂ、Ｃ、Ｄ、及びＥの５つのパイプライン・ステージを有するマシンを考えてみよう。この例の典型的なフローチャートは図２に示す通りである。表１並びに図２は以下に述べる説明の中で参照される。書き込みはＤのステージで起きる。例外はＥのステージで発生する。命令のステージＣより後にシグナルする例外はその命令が書き込むのを防ぐことはできない。（読み出しは、この例とは無関係に、Ａ、  Ｂ、及びＣのステージのいずれでも起きることがある。）
例外がシグナルするのが２サイクル遅いため該当する書き込みを防ぐことはできないから、本発明に基づくバックアップ・キュー１０８は２記憶場所分の深度がなければならない。
【００４０】
表ｌにおいて、サイクル番号の１〜９を上に、命令のｉからｉ＋４とバックアップ・キューの記憶場所Ｑ１及びＱ２を左側に示す。
【００４１】
【表１】
0003724581.tif 000002
【００４２】
命令ｉ＋２のバックアップと例外検出は図２に示す通りである。動作はステップ２０２で開始される。命令ｉ＋２は、ステップ２０４に示すように、サイクル６のステージＤでバックアップ・キューＱ１の中にバックアップされる。命令Ｄの結果は、ステップ２０６に示すように、レジスタ・ファイルに送られる。例外は命令ｉ＋２によって起こされサイクル７でシグナルされる（条件付きステップ２０８のイエスブランチ「Ｙ」を参照）と仮定しよう。この時点で、ステージＡ、Ｂ（サイクル７には示されていない）並びにＣにおける命令は打ち切られる（ステップ２１０参照）が、命令ｉ＋３までの全ての命令の結果は既に書き込まれた後である。しかしながら、プログラムからみると、命令のｉ＋２とｉ＋３は例外ゆえに状態に影響を及ぼすべきではなかった。この２つの命令によって上書きされた状態はバックアップ・キューに格納される（ステップ２１２参照）。Ｑｌのデータは、サイクル８で命令ｉ＋３の宛先アドレスのレジスタ・ファイルに結果が書き込まれる（ステップ２１４参照）。その後バックアップ・キューが逆方向にシフトし、Ｑ１のデータはサイクル９で命令ｉ＋２の宛先で結果が書き込まれる（ステップ２１６参照）。現時点では、見ることができる状態全体にフェッチ及び実行されるべき例外ハンドラの最初の命令に対する適切な値がある（ステップ２１８参照）。
【００４３】
命令ｉー２がステージＥで例外をシグナルせず且つ命令ｉー３がステージＤで例外をシグナルしていれば、そのプロセスは、命令ｉー２が無効にされない場合を除いて、ほぼ同じである（ステップ２２２及び２２４がらなるループ２２１参照）ことに注意すること。例外が検出されなければ、ステップ２２６に示すようにパイプラインは単に次に進み、（各ステップの）実行が続けられていく。
【００４４】
本発明のさらに別の実施例においては、見ることができる状態の一部を管理するために本発明を使うことが可能であるが、残りの部分のパイプラインを深くする。性能を低下させることなくステータス・ビット用のバイパス論理の実行が可能なことがあるから、最も適当なアプリケーション（適用）は、ステータス・ビットの終了を遅らせるが、バックアップ・キューをレジスタ・ファイルとして使うことである。
【００４５】
本発明に基づく様々な実施例について以上記述してきたが、そうした実施例は例として挙げたのであって、それによって制限されるものではないことが理解されるはずである。従って、本発明の広さ並びに範囲は上に述べた例としての実施例のいずれによっても制限されるべきではない。
【図面の簡単な説明】
【００４６】
【図１】本発明に基づくレジスタ・ファイル・バックアップ・キュー・システムの典型的なブロック図である。
【図２】本発明に基づくレジスタ・ファイル・バックアップ・キュー・システムによってとられる基本的なステップを示す典型的なフローチャートである。
【符号の説明】
【００４７】
１０２…レジスタ・ファイル、１０４…機能ユニット兼バイパス論理、１０６…結果タグ・キュー、１０８…バックアップ・キュー、１１０…バックアップ・データ・ラツチ、１１２…バックアップ・タグ・ラツチ、１１４…データ・マルチプレクサ、１１６…アドレス／タグ・マルチプレクサ
【図１】
0003724581.tif 000003
【図２】
0003724581.tif 000004