(57)【特許請求の範囲】
【請求項１】
複数の命令を順次に処理するパイプライン・プロセッサであって、
命令を格納する複数の命令バッファと、
前記命令バッファ内の命令のシフトを制御する制御手段と、
次に発行される命令の次の命令である投機的命令を受信し、該命令がどのリソースを使用するかを示すデコード済み情報を出力する投機的デコード回路と、
現在発行されているが完了ステージに達していない命令、及び、次に発行される命令のリソースに関する情報を格納する投機的事前命令情報ストアと、
前記投機的デコード回路からの前記デコード済み情報と、前記投機的事前命令情報ストア内のリソースに関する情報とによって投機的依存性を検出する投機的ハザード検出回路と、
を含み、投機的依存性の検出に応答して１クロック・サイクルのパイプライン・ストールを挿入する投機的検出回路と、
次に発行されている命令を受信し、該命令がどのリソースを使用するかを示すデコード済み情報を出力する基本デコード回路と、
現在発行されているが完了ステージに達していない命令のリソースに関する情報を格納する基本事前命令情報ストアと、
前記基本デコード回路からの前記デコード済み情報と、前記基本事前命令情報ストア内のリソースに関する情報とによって現実の依存性を検出する基本ハザード検出回路と、
を含み、現実の依存性の検出に応答して複数クロック・サイクルのパイプライン・ストールを挿入する基本検出回路と、
を含む、プロセッサ。
【請求項２】
前記投機的ハザード検出回路及び前記基本ハザード検出回路は、依存性が検出された場合に投機的ハザード信号及び基本ハザード信号を夫々アサートする、請求項１記載のプロセッサ。
【請求項３】
前記基本事前命令情報ストアは、前記基本デコード回路からのデコード済み情報と、前記制御手段からの「発行有効」信号と、機能ユニットからの命令進行状況信号とに応答して、どのリソースが前の命令により使用されているかに関する情報を更新する、請求項１または２記載のプロセッサ。
【請求項４】
前記基本ハザード検出回路は、前記デコード済み情報と、前記基本事前命令情報ストア内のリソースに関する情報とを比較する比較器のアレイを含む、請求項１〜３のいずれか１項記載のプロセッサ。
【請求項５】
前記シフトを制御する制御手段は、基本ハザード信号と投機的ハザード信号とを受信して、命令のシフトを制御するために使用する、請求項２〜４のいずれか１項記載のプロセッサ。
【請求項６】
前記現在発行されているが完了ステージに達していない命令が、実行ステージの最初の部分であるＸステージの命令、実行ステージの第２の部分であるＣステージの命令、及び、再書込みステージであるＷステージにある命令からなる、請求項１〜５のいずれか１項記載のプロセッサ。
【請求項７】
実行ステージの第２の部分であるＣステージの命令、及び、再書込みステージであるＷステージにある命令を格納する事前命令情報ストアと、
前記基本デコード回路からの前記デコード済み情報と、前記事前命令情報ストア内のリソースに関する情報の１つとから実行ステージにおける依存性を検出するハザード検出回路とを含み、
実行ステージにおける依存性の検出に応答して第２レベル基本ハザード信号を生成する第３の検出回路をさらに含む、請求項１〜６のいずれか１項記載のプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にはパイプライン・プロセッサに関し、特に、１サイクルのパイプライン・ストールを生成するパイプライン・プロセッサ、中でも、依存性の検出に応答して１サイクルのパイプライン・ストールを生成するために命令を処理するパイプライン・プロセッサに関する。
【０００２】
【従来の技術】
パイプライン・データ処理システムは、１クロック・サイクルに複数の命令を実行できるマイクロプロセッサ・アーキテクチャを含むデータ処理システムである。１サイクルで複数の命令を実行するには、同時に実行できる複数の独立した機能ユニットが必要である。順次パイプライン・プロセッサの場合、それら複数の命令がそれぞれの元のシーケンスで実行される。
【０００３】
命令のいくつかは、１サイクル命令であり、１クロック・サイクルで処理が完了する。他の命令は、処理を完了するのに２クロック・サイクル以上を必要とする。
【０００４】
命令処理時にはよく依存性が生じる。１レジスタが別の、後の命令により読取る必要のある値をレジスタに書込むとき、あるタイプの依存性が生じる。値をレジスタに書込む命令が、実行に２サイクル以上かかるとき、レジスタに格納された値を読取る後の命令は、最初の命令がその実行を完了するまで停止（ｓｔａｌｌ）しなければならない。従って、命令を正しく実行するためには、命令ストリームにパイプライン・ストールを挿入する必要がある。
【０００５】
これまでのシステムでは、依存性によるパイプライン・ストールを挿入するかどうかの決定は、１サイクルのストールを生成する場合には１サイクルで行う必要がある。命令をディスパッチできるかどうか、または命令を停止する必要があるかどうかを決定するため複数のサイクルを使用するメカニズムは、複数のサイクルのストールを引き起こす。ストール条件の判定に複数のサイクルを必要とすることは、プロセッサ周波数を改良するには有益だが、複数のストール・サイクルは、ＣＰＩ（１命令のサイクル数）で測ったプロセッサ性能にはマイナスになる。
【０００６】
従って、依存性の検出に応答して１サイクルのパイプライン・ストールを生成するためのパイプライン・プロセッサ処理命令が求められる。ここで検出メカニズムは、複数のサイクルにより命令のディスパッチを制御する。
【０００７】
【発明が解決しようとする課題】
本願は、依存性を投機的に判定する方法及びそのパイプライン・プロセッサを提供することを目的とする。
【０００８】
【課題を解決するための手段】
プロセッサは複数の命令を順次に処理する。動作に複数のクロック・サイクルを必要とする投機的検出回路により、依存性の存在が確認される。投機的依存性が存在することの確認に応答したときのみ、投機的検出回路が１サイクルのパイプライン・ストールを挿入する。
【０００９】
【発明の実施の形態】
本発明の好適実施例とその利点は、図１乃至図４を参照すれば理解しやすい。同様な参照符号は、対応する同様な部分を示す。
【００１０】
依存性を投機的に判定する方法及びそのパイプライン・プロセッサを開示する。依存性は、データ依存性と構造依存性を含む。プロセッサは、複数の命令を順次に処理することができる。投機的判定は、依存性が存在するかどうかに関して行われる。投機的依存性が存在するとの判定に応答したときのみ、１サイクルのパイプライン・ストールが生成される。
【００１１】
基本ハザード検出回路と基本レジスタ・アドレス・キューが追加され、実際に依存性ハザードが存在するかどうかが判定される。また、投機的ハザード検出回路と投機的レジスタ・アドレス・キューが追加され、投機的依存性ハザードが存在するかどうか判定される。投機的ハザードが存在する場合、パイプは、１つのＮＯＰ命令がパイプに挿入されることにより１サイクルのみ停止される。
【００１２】
ここで開示する発明は、依存性の検出が投機的に完了するので、１サイクルのストールのみ挿入することができる。従って、依存性ハザードは、ハザードの原因となり、ディスパッチされている命令よりも前に検出される。
【００１３】
図１は、好適実施例に従って情報を処理するプロセッサ１０のシステムを示す。好適実施例のプロセッサ１０は単一の集積回路マイクロプロセッサである。よって、後述するように、プロセッサ１０は、レジスタ、バッファ、メモリ等、様々なユニットを含み、これらは全て集積回路により形成される。また好適実施例のプロセッサ１０は、ＲＩＳＣ（縮小命令セット・コンピュータ）方式に従って動作する。図１に示すように、プロセッサ１０のバス・インタフェース・ユニット（ＢＩＵ）１２にシステム・バス１１が接続される。ＢＩＵ１２はプロセッサとシステム・バス１１間の情報転送を制御する。
【００１４】
ＢＩＵ１２は、プロセッサ１０の命令キャッシュ１４及びデータ・キャッシュ１６に接続される。命令キャッシュ１４は命令をシーケンサ・ユニット１８に出力する。シーケンサ・ユニット１８は、命令キャッシュ１４からのこの命令に応答して、プロセッサ１０の他の実行回路に命令を選択的に出力する。
【００１５】
シーケンサ・ユニット１８の他、好適実施例のプロセッサ１０の実行回路は、複数の実行ユニット（分岐ユニット２０）、具体的には固定小数点ユニットＡ（ＦＸＵＡ）２２、固定小数点ユニットＢ（ＦＸＵＢ）２４、複合固定小数点ユニット（ＣＦＸＵ）２６、ロード／ストア・ユニット（ＬＳＵ）２８、及び浮動小数点ユニット（ＦＰＵ）３０を含む。ＦＸＵＡ２２、ＦＸＵＢ２４、ＣＦＸＵ２６、及びＬＳＵ２８は、それぞれのソース・オペランド情報を汎用設計レジスタ（ＧＰＲ）から入力する。好適実施例のＧＰＲは、他のユニットからの結果を、最初にレジスタに格納することなく”転送”（または”バイパス”）することができる。更にＦＸＵＡ２２とＦＸＵＢ２４は繰り上りビット（ＣＡ）・レジスタ４２から”繰り上りビット”を入力する。ＦＸＵＡ２２、ＦＸＵＢ２４、ＣＦＸＵ２６、及びＬＳＵ２８は、それぞれの操作の結果（宛先オペランド情報）をＧＰＲ３２に格納するため出力する。またＣＦＸＵ２６は、ソース・オペランド情報と宛先オペランド情報を特殊レジスタ（ＳＰＲ）４０との間で入出力する。
【００１６】
ＦＰＵ３０はそのソース・オペランド情報を浮動小数点設計レジスタ（ＦＰＲ）３６から入力する。好適実施例のＦＰＲは、他の実行ユニットからの結果を、最初にレジスタに格納することなく”転送”（または”バイパス”）することができる。ＦＰＵ３０は、その操作の結果（宛先オペランド情報）をＦＰＲ３６に格納するため出力する。
【００１７】
ＬＳＵ２８は、ロード命令に応答して、データ・キャッシュ１６から情報を入力し、その情報をＧＰＲ３２にコピーする。情報がデータ・キャッシュ１６に格納されない場合、データ・キャッシュ１６は（ＢＩＵ１２とシステム・バス１１を通して）情報をシステム・バス１１に接続されたシステム・メモリ３９から入力する。更にデータ・キャッシュ１６は、データ・キャッシュ１６からの情報を（ＢＩＵ１２とシステム・バス１１を通して）システム・バス１１に接続されたシステム・メモリ３９へ出力することができる。ＬＳＵ２８は、ストア命令に応答して、ＧＰＲ３２とＦＰＲ３６のうち選択された１つから情報を入力し、その情報をデータ・キャッシュ１６にコピーする。
【００１８】
シーケンサ・ユニット１８は、ＧＰＲ３２とＦＰＲ３６との間で情報を入出力する。分岐ユニット２０は、シーケンサ・ユニット１８から命令及びプロセッサ１０の現在状態を示す信号を入力する。この命令及び信号に応答して、分岐ユニット２０が、プロセッサ１０により実行するため、命令シーケンスを格納するのに適したメモリ・アドレスを示す信号を（シーケンサ・ユニット１８に）出力する。シーケンサ・ユニット１８は、分岐ユニット２０からのこの信号に応答して、指定された命令シーケンスを命令キャッシュ１４から入力する。命令シーケンスが命令キャッシュ１４に格納されていない場合、命令キャッシュ１４は（ＢＩＵ１２とシステム・バス１１を通して）その命令をシステム・バス１１に接続されたシステム・メモリ３９から入力する。
【００１９】
シーケンサ・ユニット１８は、命令キャッシュ１４からの命令入力に応答して、命令を実行ユニット２０、２２、２４、２６、２８、及び３０のうち選択された１つに選択的にディスパッチする。実行ユニットはそれぞれ特定の命令クラスの命令を少なくとも１つ実行する。例えばＦＸＵＡ２２とＦＸＵＢ２４は、ソース・オペランドに対して、加算、減算、ＡＮＤ、ＯＲ、及びＸＯＲ等、第１クラスの固定小数点算術演算を実行する。ＣＦＸＵ２６は、固定小数点乗算、除算等、第２クラスの固定小数点演算をソース・オペランドに対して実行する。ＦＰＵ３０は、浮動小数点乗算、除算等、浮動小数点演算をソース・オペランドに対して実行する。
【００２０】
プロセッサ１０は、高性能を達成するため、実行ユニット２０、２２、２４、２６、２８、及び３０で複数の命令を同時に処理する。よって各命令はステージ・シーケンスとして処理され、それぞれの命令を他の命令のステージと並列に実行できる。この方式を”パイプライン方式”という。好適実施例の重要な側面として、命令は通常、フェッチ、ディスパッチ、実行、再書込み、及び完了の５ステージとして処理される。
【００２１】
フェッチ・ステージでは、シーケンサ・ユニット１８が、ここで分岐ユニット２０、シーケンサ・ユニット１８とともに説明している命令シーケンスを格納する少なくとも１つのメモリ・アドレスから少なくとも１つの命令を（命令キャッシュ１４から）選択的に入力する。
【００２２】
シーケンサ・ユニット１８は、ディスパッチ／デコード／発行ステージで、最初の命令をデコードして実行ユニット２０、２２、２４、２６、２８、及び３０の１つにディスパッチする。ディスパッチ・ステージでは、ディスパッチされる命令に対して、選択された実行ユニットにオペランド情報が与えられる。プロセッサ１０は命令を、プログラムされたシーケンスの順序でディスパッチする。
【００２３】
実行ステージでは、実行ユニットが、ディスパッチされたそれぞれの命令を実行し、それぞれの操作の結果（宛先オペランド情報）をＧＰＲ３２、ＦＰＲ３６、ＳＰＲ４０、及び繰り上りビット・レジスタ４２に格納するため出力する。
【００２４】
再書込みステージでは、別々のユニットからの出力結果が対応するレジスタに書込まれる。命令が異なると、結果を生成するため必要なサイクル数も異なることがあるので、再書込みは、プログラムされた命令シーケンスに関して”順不同”に行われることがある。
【００２５】
シーケンサ・ユニット１８は、様々な実行ユニットから情報を累算し、命令が例外条件なしに終了したかどうかを確認する。現在の命令を含めて現在の命令の前の全命令が例外条件なしに”終了した”場合、現在の命令により上書きされたレジスタの前の設計値は、履歴ファイルに格納する必要がなくなり、命令は”完了する”。プロセッサ１０は従って、命令をそのプログラムされたシーケンスで”完了する”。例外条件が発生した場合、シーケンサ・ユニットはＧＰＲに、例外発生の原因になった命令の前の設計値を復元することを指示する。シーケンサ・ユニットは、次に有効な命令アドレスから命令を”再フェッチ”する。
【００２６】
図２は、本発明の方法及び装置に従った、図１のシーケンサ・ユニットに含まれるストール生成回路を示す。ストール生成回路（依存性検出回路）２００は、基本ハザード検出回路２０２と基本レジスタ・アドレス・キュー２０４を含む基本検出回路２０３、及び投機的ハザード検出回路２０６と投機的レジスタ・アドレス・キュー２０８を含む投機的検出回路２０５を含む。基本ハザード検出回路２０２と基本レジスタ・アドレス・キュー２０４は、依存性により実際にハザードが存在するとき基本ハザード信号を生成するため使用される。検出される依存性は、データ依存性または構造リソース依存性のいずれかと考えられる。投機的ハザード検出回路２０６と投機的レジスタ・アドレス・キュー２０８は、依存性による投機的ハザードが存在するとき投機的ハザード信号を生成するため使用される。ここでも、検出される依存性はデータ依存性または構造依存性のいずれかと考えられる。
【００２７】
命令を格納するため、命令バッファ２１０、２１２、２１４、２１６、及び２１８が追加される。バッファ２１２は、次にディスパッチ／発行される命令を格納するため使用される。バッファ２１４、２１６、及び２１８は投機的命令を格納する。これらのバッファに格納された命令は、命令フェッチ・ユニット２２０により、バッファ２１２の命令とともに、キャッシュ・ラインから順次にフェッチされた命令である。命令バッファ２１０は、最近ディスパッチされた命令を格納するためのものである。
【００２８】
命令は、命令バッファ２１２から機能ユニットに発行される。命令バッファ２１４、２１６、及び２１８は、バッファ２１２の命令の次に続く順次命令を表す。どのサイクルでも状態機械２２２が命令バッファを制御して、図の上方へシフトさせて次の順次命令セットをロードするか、命令キャッシュ（図示せず）から新しい命令セットをロードするか、または発行キューを保留する。命令バッファ２１２の命令と、前に発行されていても終了しておらず、まだマシンのリソースを占有している命令の間にリソース・コンフリクトがある場合は、発行キューを保留する必要がある。
【００２９】
依存性検出回路２００は、デコード回路２０１、事前命令情報ストア２０４、及びハザード検出回路２０２を含む。デコード回路２０１は、現在発行されている命令を命令ディスパッチ・バッファ２１から受信するとともに、状態機械２２２から”発行有効”信号を受信する。デコード回路２０１は、事前命令情報ストア２０４とハザード検出回路２０２に、ターゲット・レジスタ・アドレス、機能ユニットやバス等の構造リソース等、命令がどのリソースを使用しているかを示すデコード済み情報を与える。デコード回路２０１はまた、リソースが必要とされる命令パイプライン・ステージを示す情報を提供する。
【００３０】
事前命令情報ストア２０４は、デコード回路２０１から新しく発行された命令に関する情報、状態機械２２２からの”発行有効”信号、及び機能ユニットからの命令進行状況信号に応答して、どのリソースが前の命令により使用されているかに関する情報を更新する。パイプラインが保留されない順次パイプライン・マシンの場合、事前命令情報ストア２０４は、ターゲット・アドレス・レジスタの一連のキューとして効率よく実装することができ、レジスタをシフトさせ、レジスタや構造リソースが使用されているパイプライン・ステージを示す”ワン・ホット（ｏｎｅ−ｈｏｔ）”情報を維持することができる。
【００３１】
ハザード検出回路２０２は、命令バッファ２１２の命令と”飛行中”の命令（そのリソースはストア２０４により維持される）との間にリソース・コンフリクトが存在するかどうかを判定する。回路２０２は、命令バッファ２１２からのソース・オペランド・レジスタ・アドレスを飛行中の命令のターゲットと比較する比較器のアレイを含む。また回路２０２は、構造リソースのいずれかが、使用されているかまたは使用される予定のサイクルで、飛行中の命令とバッファ２１２の命令の両方に必要かどうかを判定するロジックを含む。
【００３２】
オペランド依存性ハザードまたは構造ハザードが存在する場合、ハザード信号がアサートされ、状態機械２２２が、”発行有効”信号をアサート解除し、命令の進行状況を示す機能ユニットからの”サイクル情報”信号に応答して事前命令情報ストア２０４が更新される間、命令バッファの命令を保留する必要がある
【００３３】
命令は、サイクル毎にバッファからバッファにシフトされる。例えば現在バッファ２１８にある命令は、前の命令が引き続き順次に実行される限り、次のクロック・サイクルの間にバッファ２１６にシフトされる。例外が発生するか、分岐命令が実行された場合、命令フェッチ２２０により、新しい命令がフェッチされ、これら命令バッファに格納される。
【００３４】
状態機械２２２は、基本ハザード信号と投機的ハザード信号をその入力の２つとして受信するためのものである。状態機械２２２は、命令のディスパッチと命令の命令バッファから次のバッファへのシフトを制御するため使用される。
【００３５】
投機的事前命令情報ストア２０８は、現在飛行中で、命令バッファ２１２に格納された命令を含む命令のターゲット・レジスタのアドレスを含む。基本事前命令情報ストア２０４は、現在飛行中の命令のターゲット・レジスタのアドレスを含む。飛行中の命令は、ディスパッチされているが、完了ステージに達していない命令である。
【００３６】
第３検出回路２４１も追加される。第３検出回路２４１は、ハザード検出回路２４０と事前命令情報ストア２４２を含む。第３検出回路２４１は命令バッファ２１２に接続され、検出回路２０３が受信する信号と同じ信号を受信する。第３検出回路２４１は、基本検出回路２０３と同様に動作するが、回路２０３のようにディスパッチ・ステージ（Ｄステージ）で動作するのではなく、実行ステージ（Ｘステージ）で動作する。従って事前命令情報ストア２４２は、パイプのＣ、Ｗの各ステージに命令のターゲットを含む。第３検出回路２４１は、依存性が検出されたとき第２レベル基本ハザード信号を生成する。
【００３７】
図３に、本発明の方法及び装置に従った基本レジスタ・アドレス・キューと投機的レジスタ・アドレス・キューを示す。投機的レジスタ・アドレス・キューは、現在使用中の命令のターゲットと、現在ディスパッチされている命令のターゲットを保持する。従って２０８内の投機的レジスタ・アドレス・キューは、現在Ｄステージつまり命令が現在バッファ２１２にあるディスパッチ・ステージ、Ｄステージに続き、実行ステージの最初の部分であるＸステージ、Ｘステージに続き、実行ステージの第２の部分であるＣステージ、及びＣステージに続き、再書込みステージであるＷステージにある命令のターゲットを保持する。基本レジスタ・アドレス・キュー２０４は、現在Ｘステージ、Ｃステージ、及びＷステージにある命令のターゲットを保持する。
【００３８】
当業者には明らかなように、レジスタ・アドレス・キューは、現在飛行中で、リソースをまだ占有しているか、または結果を生成する可能性のある全命令を保持するのに十分深くする必要がある。
【００３９】
命令が命令バッファから命令バッファにシフトされると、各レジスタ・アドレス・キューのエントリもシフトされる。
【００４０】
ハザード検出回路２０２、及び２０６は、それぞれに関連したレジスタ・アドレス・キューとともにサイクル情報信号も利用し、ハザードが存在するかどうかを判定する。ハザードが存在するのは、ハザード検出回路に関連付けられた命令バッファのターゲットが、関連するレジスタ・アドレス・キューのターゲットの１つと一致することをハザード検出回路が確認したときであり、その命令の実行は適時には完了しない。ハザード検出回路は、サイクル情報信号を利用して関連する命令バッファの命令に有効な値をレジスタに保持できるよう、飛行中の命令が実行を適時に完了するかどうか判定する。
【００４１】
図４は、本発明の方法及びシステムに従ってプロセッサの動作を記述する状態変換テーブルを示す。状態変換テーブルは、様々なハザード信号が現在アサートされているかどうかに応答してプロセッサの動作を記述する。
【００４２】
ここでは、スカラ・プロセッサで命令の発行を制御するメカニズムが記述されているが、同じメカニズムによりスーパースカラ・マイクロプロセッサの複数の機能ユニットに関連付けられた発行キューから命令を発行することができる。
【００４３】
好適実施例について詳しく説明したが、形式や詳細については、当業者には明らかなように、本発明の主旨と範囲から逸脱することなく様々な変更が可能である。
【００４４】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４５】
（１）少なくとも１つの実行ユニットを含み、複数の命令を順次に処理するパイプライン・プロセッサの方法であって、
依存性が存在するかどうかを投機的に判定するステップと、
依存性が存在することの投機的判定に応答して、前記依存性の原因となる命令を前記少なくとも１つの実行ユニットにディスパッチする前に１クロック・サイクルのみのパイプライン・ストールを生成するステップと、
を含む、方法。
（２）複数の命令を順次に処理するパイプライン・プロセッサの方法であって、
複数のクロック・サイクルを利用して依存性が存在するかどうかを投機的に判定するステップと、
投機的依存性が存在することの判定に応答して、１クロック・サイクルのみのパイプライン・ストールを生成するステップと、
を含む、方法。
（３）前記投機的依存性が存在するかどうかを判定するため、投機的命令バッファに接続された第１依存性ハザード検出回路を設定するステップを含む、前記（２）記載の方法。
（４）前記投機的依存性が存在するかどうかの判定に応答して、投機的ハザード信号をアサートするステップを含む、前記（３）記載の方法。
（５）前記投機的ハザード信号のアサートに応答して、１クロック・サイクルのパイプライン・ストールを挿入するステップを含む、前記（４）記載の方法。
（６）実際に依存性が存在するかどうかを判定するため、投機的命令バッファに接続された第２依存性ハザード検出回路を設定するステップを含む、前記（５）記載の方法。
（７）前記現実のハザードが存在することの判定に応答して基本ハザード信号をアサートするステップを含む、前記（６）記載の方法。
（８）前記投機的ハザード信号がアサートされないとき、前記基本ハザード信号のアサートに応答して複数クロック・サイクルのパイプライン・ストールを挿入するステップを含む、前記（７）記載の方法。
（９）複数の命令を順次に処理するパイプライン・プロセッサであって、
複数のクロック・サイクルにより命令バッファの制御を実装し、投機的デコード回路、投機的事前命令情報ストア、及び投機的ハザード検出回路を含み、投機的依存性の検出に応答して１クロック・サイクルのパイプライン・ストールを挿入する、投機的検出回路と、
複数のクロック・サイクルにより命令バッファの制御を実装し、基本デコード回路、基本事前命令情報ストア、及び基本ハザード検出回路を含み、現実の依存性の検出に応答して複数クロック・サイクルのパイプライン・ストールを挿入する、基本検出回路と、
を含む、プロセッサ。
（１０）投機的ハザードが存在することの判定に応答して投機的ハザード信号を生成する前記投機的検出回路を含む、
前記（９）記載のプロセッサ。
（１１）現在飛行中の命令により使用されているリソースを格納する、命令ディスパッチ・バッファに格納された命令のための前記投機的事前命令情報ストアと、
前記投機的事前命令情報ストアの使用中の投機的命令リソースに必要なリソースを比較する前記投機的ハザード検出回路であって、該投機的命令は、前記ディスパッチ・バッファに格納された前記命令の後、次にフェッチされた命令である、該検出回路と、
を含む、前記（９）記載のプロセッサ。
（１２）投機的ハザードの検出に応答して投機的ハザード信号をアサートする前記投機的検出回路を含む、
前記（１１）記載のプロセッサ。
（１３）実際のハザードの検出に応答して基本ハザード信号をアサートする前記基本検出回路を含む、
前記（１１）記載のプロセッサ。
（１４）前記投機的ハザードの原因となり、前記ディスパッチ・バッファに格納されている前記投機的命令の前に、前記投機的ハザード信号をアサートする前記投機的検出回路を含む、
前記（１３）記載のプロセッサ。
【図面の簡単な説明】
【図１】本発明の方法及びシステムに従った順次ディスパッチのパイプライン・プロセッサを示す図である。
【図２】本発明の方法及びシステムに従った、図１のシーケンサ・ユニットに含まれるストール生成回路を示す図である。
【図３】本発明の方法及びシステムに従ったコンピュータ・システムの基本レジスタ・アドレス・キューと投機的レジスタ・アドレス・キューを示す図である。
【図４】本発明の方法及びシステムに従った、プロセッサの動作を記述する状態変換テーブルを示す図である。
【符号の説明】
１０  プロセッサ
１１  システム・バス
１２  バス・インタフェース・ユニット（ＢＩＵ）
１４  命令キャッシュ
１６  データ・キャッシュ
１８  シーケンサ・ユニット
２０  分岐ユニット
２２  固定小数点ユニットＡ（ＦＸＵＡ）
２４  固定小数点ユニットＢ（ＦＸＵＢ）
２６  複合固定小数点ユニット（ＣＦＸＵ）
２８  ロード／ストア・ユニット（ＬＳＵ）
３０  及び浮動小数点ユニット（ＦＰＵ）
３２  ＧＰＲ
３６  浮動小数点設計レジスタ（ＦＰＲ）
３９  システム・メモリ
４０  特殊レジスタ（ＳＰＲ）
４２  繰り上りビット（ＣＡ）・レジスタ
２００  ストール生成回路（依存性検出回路）
２０１  デコード回路
２０２  基本ハザード検出回路
２０３  基本検出回路
２０４  基本レジスタ・アドレス・キュー、事前命令情報ストア
２０５  投機的検出回路
２０６  投機的ハザード検出回路
２０８  投機的レジスタ・アドレス・キュー
２１０、２１２、２１４、２１６、２１８  命令バッファ
２２０  命令フェッチ・ユニット
２２２  状態機械
２４０  ハザード検出回路
２４１  第３検出回路
２４２  事前命令情報ストア
【図１】
0003611304.tif 000002
【図２】
0003611304.tif 000003
【図３】
0003611304.tif 000004
【図４】
0003611304.tif 000005