(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムの命令を実行するコンピュータシステムであって、
コンピュータプログラムの前記命令を処理するように構成された複数のパイプラインと、
前記パイプラインに接続された融合回路であって、前記パイプラインから複数のレジスタ識別子を同時に受信して該複数のレジスタ識別子を単一のレジスタ識別子へと結合するよう構成されており、該単一のレジスタ識別子が、複数のビットを有すると共に、該融合回路により結合された前記複数のレジスタ識別子のうちの少なくとも１つにより識別される各レジスタを識別するものであり、該融合回路が、受信した前記複数のレジスタ識別子のうちの１つの少なくとも１つのビットを、受信した前記複数のレジスタ識別子のうちの別の１つの別のビットと結合して、前記単一のレジスタ識別子の前記複数のビットのうちの１つを生成する、融合回路と、
前記融合回路に接続されたハザード検出回路であって、前記融合回路から前記単一のレジスタ識別子を受信して該単一のレジスタ識別子を該ハザード検出回路が受信した他の情報と比較するよう構成され、更に、前記単一のレジスタ識別子と該ハザード検出回路が受信した前記他の情報との比較に基づき特定のタイプのデータハザードが存在するか否かを検出するよう構成されている、ハザード検出回路と
からなるコンピュータシステム。
【請求項２】
前記パイプラインに接続された複数のデコーダを更に含み、該複数のデコーダの各々が、前記複数のレジスタ識別子のうちの１つをエンコードされた形式でそれぞれ受信して該受信した前記１つのエンコードされたレジスタ識別子をデコードするように構成されており、前記融合回路が、前記デコーダを介して前記パイプライン(132)に接続されている、請求項１に記載のコンピュータシステム。
【請求項３】
コンピュータプログラムの命令を実行するコンピュータシステムであって、
前記命令を処理する手段と、
前記処理手段から第１のレジスタ識別子を受信する手段であって、前記第１のレジスタ識別子は前記命令のうちの１つに関連するとともに複数のレジスタのうちの１つを識別し、前記第１のレジスタ識別子は前記複数のレジスタのそれぞれに対応する複数のビットを有し、前記レジスタの各々は前記第１のレジスタの前記ビットの少なくとも１つにそれぞれ対応し、前記第１のレジスタ識別子の前記ビットのうちの前記第１のレジスタ識別子によって識別される前記１つのレジスタに対応するビットはアサートされ、前記第１のレジスタ識別子の前記ビットのうちの前記第１のレジスタ識別子によって識別される前記１つのレジスタ以外のいずれのレジスタに対応するビットもデアサートされる、第１のレジスタ識別子を受信する手段と、
前記処理手段から第２のレジスタ識別子を受信する手段であって、前記第２のレジスタ識別子は前記命令のうちの他の命令に関連するとともに前記複数のレジスタのうちの１つを識別し、前記第２のレジスタ識別子は前記複数のレジスタのそれぞれに対応する複数のビットを有し、前記レジスタの各々は前記第２のレジスタ識別子の前記ビットの少なくとも１つにそれぞれ対応し、前記第２のレジスタ識別子の前記ビットのうちの前記第２のレジスタ識別子によって識別される前記１つのレジスタに対応するビットはアサートされ、前記第２のレジスタ識別子によって識別される前記１つのレジスタ以外のいずれのレジスタに対応する各ビットもデアサートされる、第２のレジスタ識別子を受信する手段と、
前記第１のレジスタ識別子を前記第２のレジスタ識別子と結合させ、前記第１および第２のレジスタ識別子によって識別される前記レジスタを識別する第３のレジスタ識別子を生成する手段と、
前記第３の識別子を他のレジスタ識別子と比較して、特定種類のデータハザードが存在するか否かを検出する手段と、
からなるコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理技術に関し、特に、コンピュータプログラムの複数の命令間のデータハザードを示すデータを生成し、該データを融合してデータハザードの検出に必要となる回路及び複雑さを最小限にするシステム及び方法に関する。
【０００２】
【従来の技術】
多くのプロセッサの性能を向上させるためにパイプライン処理が開発された。パイプライン処理では、プロセッサは、同時に多数の命令を処理することができる少なくとも１つのパイプラインを備える。このため、１つのパイプラインでの１つの命令の実行が、同パイプラインでの先行する命令を実行した結果が利用可能となる前に開始される場合があり、その結果としてデータ従属性ハザードによる誤りが生じることになる。
【０００３】
データ従属性は、パイプラインで実行されることになる１つの命令が他の命令の実行により生成されるデータを利用する場合に存在するものであり、該他の命令によって生成されたデータが上記１つの命令によってまだ利用可能でない場合にデータ従属性ハザードが生じることになる。例えば、後続の命令が、その実行時に、先行する命令を実行することによって生じたデータを利用する場合がある（例えば、後続の加算命令が先行するロード命令によって読み出されたデータを利用する場合がある）。先行する命令の実行により生じるデータが利用可能になる前に後続の命令が実行される場合には、後続のデータは不正なデータを使用し、その結果としてデータ従属性誤りが生じる。従って、後続の命令によって用いられるデータが利用可能になるまで、又はデータ従属性誤りが生じるまで、２つの命令の間にデータ従属性ハザードが存在する。
【０００４】
言うまでもなく、データ従属性誤りを防ぐことができるように、データ従属性ハザードを検出することが重要である。しかし、データ従属性ハザードを検出するための回路は複雑な場合が多く、またしばしばプロセッサにおいて比較的大きな領域を利用する。これは、同時に命令を実行する複数のパイプラインを含むスーパスケーラプロセッサの場合に特に当てはまる。ここで、１つのパイプライン内の命令は、同じパイプライン内の別の命令との従属性を有するのみならず、別のパイプライン内の別の命令との従属性も有する場合がある。このため、データ従属性ハザードを十分に検査するためには、１つのパイプライン内の第１の命令は、該第１の命令とデータ従属性ハザードを共有し得る各パイプライン内の各命令と比較される必要がある。その結果として、プロセッサ内のパイプラインの数が増えると、データ従属性ハザードを規定するデータ従属性を検出するために必要とされる回路及び複雑さが急激に増大することになる。
【０００５】
【発明が解決しようとする課題】
このため、これまでに取り扱われてこなかったが、コンピュータプログラムの命令間のデータハザードを検出するための最小限の複雑さと回路を有する効率的な処理システムが当業界で必要とされている。
【０００６】
本発明は、これまで議論されたような従来技術の不十分な点及び不完全な点を克服するものである。本発明は一般に、命令データの融合を行ってコンピュータプログラムの命令間のデータハザードを効率的に検出する処理システム及び方法を提供する。
【０００７】
【課題を解決するための手段】
アーキテクチャに関しては、本発明のシステムは、複数のパイプライン、融合回路、及びハザード検出回路を用いる。各パイプラインは、コンピュータプログラムの命令を受信して処理し、融合回路は、該パイプラインから複数のレジスタ識別子を受信する。各レジスタ識別子は、複数のレジスタのうちの１つを識別し、融合回路は、複数のレジスタ識別子を結合させて単一のレジスタ識別子とし、該単一のレジスタ識別子が、融合回路により受信された複数のレジスタ識別子により識別される各レジスタを識別できるようにする。次いでハザード検出回路が、前記単一のレジスタ識別子をハザード検出回路により受信された他の情報と比較し、特定のタイプのデータハザードが存在するか否かを検出する。融合回路の前記結合ステップにより、データハザードを検出するために必要とされるハザード検出回路による比較回数を低減させることができ、ハザード検出回路を実施するための回路及び複雑さも同様に低減させることができる。
【０００８】
本発明の別の態様によれば、パイプラインにデコーダが接続され、該デコーダを介して前記パイプラインに融合回路が接続される。各デコーダは、複数のパイプラインの１つにより送信された複数のレジスタ識別子の１つを受信しデコードする。
【０００９】
本発明の別の態様によれば、属性インタフェイスが、複数のパイプラインの１つに接続されて、属性データを受信する。次いで該属性インタフェイスは、前記属性データに基づき、複数のパイプラインの１つにより送信された複数のレジスタ識別子の１つにおける複数のビットのうちの少なくとも１つの値を制御する。
【００１０】
また、本発明は、コンピュータシステムにおいてデータハザードを検出するための方法を提供するものとみなすことができる。該方法は、次のステップにより幅広く概念化することができる。即ち、コンピュータプログラムの複数の命令を処理し、該複数の命令の１つに関連する第１のレジスタ識別子であって、複数のレジスタにそれぞれ対応する複数のビットを有しており、前記複数のレジスタの各々が該第１のレジスタ識別子の前記複数のビットのうちの少なくとも１つに対応するようになっている、第１のレジスタ識別子を受信し、前記複数の命令のうちの別の命令に関連する第２のレジスタ識別子であって、前記複数のレジスタにそれぞれ対応する複数のビットを有しており、前記複数のレジスタの各々が前記第１のレジスタ識別子の前記複数のビットのうちの少なくとも１つに対応するようになっている、第２のレジスタ識別子を受信し、前記第１のレジスタ識別子において、該第１のレジスタ識別子により識別される前記複数のレジスタのうちの１つに対応する１つのビットをアサートし、前記第１のレジスタ識別子により識別される前記１つのレジスタ以外の何れかのレジスタに対応する該第１のレジスタ識別子の各ビットをデアサートし、前記第２のレジスタ識別子において、第２のレジスタ識別子により識別されるレジスタのうちの１つに対応する１つのビットをアサートし、該第２のレジスタ識別子により識別される１つのレジスタ以外の何れかのレジスタに対応する該第２のレジスタ識別子の各ビットをデアサートし、前記第１のレジスタ識別子と前記第２のレジスタ識別子とを結合させ、該結合ステップに応じて第３のレジスタ識別子を生成し、該第３のレジスタ識別子が第１及び第２のレジスタ識別子により識別されるレジスタを識別するものであり、該第３のレジスタ識別子を別のレジスタ識別子と比較し、該比較ステップに基づきデータハザードを検出する、という各ステップである。
【００１１】
本発明の他の特徴及び利点は、図面と併せて以下の詳細な説明を検討することにより当業者には明らかとなろう。かかる特徴及び利点は全て、本書に記載する本発明の範囲内にあり、また請求の範囲により保護されるものである、ということが意図されている。
【００１２】
【発明の実施の形態】
本発明は、図面を参照することにより更に理解を深めることができる。図面の構成要素は、互いに対して必ずしも一定の尺度となっておらず、本発明の原理を明確に説明することに重点が置かれている。更に、同様の符号は、複数の図面を通して対応する要素を示している。
【００１３】
本発明は一般に、データハザードに起因する誤りを防ぐことができるように、コンピュータプログラムの命令を実行する処理システム内のデータハザードを効率的に検出するシステム及び方法に関する。本発明の原理を示すために、図１を参照すると、従来のスーパースケーラ処理システム15が示されている。処理システム15は、コンピュータプログラムの命令を受信し、各命令を複数のパイプライン21の１つに割り当てる命令分散ユニット18を備えている。各パイプライン21は、該パイプライン21が受信した各命令を実行するように構成される。
【００１４】
各パイプライン21は通常は、特定のタイプの命令（例えば、整数演算、浮動小数点演算、メモリ演算等）のみを処理するよう構成される。このため、命令分散ユニット18は、命令と互換性を有するパイプライン21にのみ各命令を割り当てるよう構成される。更に、単純化のため、図１では、比較ロジック22又は24が１つのパイプライン21に接続されるように示されているが、各パイプライン21は同様に比較ロジック22又は24に接続されることに留意されたい。
【００１５】
図１に示すように、パイプライン21は典型的には、複数ステージで命令を処理する。本明細書で用いる「ステージ」とは、パイプライン21の任意の部分であり、該パイプライン21は、命令を処理するものであり、また入力にラッチを備えており、これにより該ステージに入力されるデータのタイミングをクロック信号のエッジに応じて制御できるようになっている。図１に示すパイプライン21は、４つのステージ、即ち、レジスタステージ25、実行ステージ28、例外検出ステージ32、及び書き込みステージ35で命令を処理する。別の実施形態では、処理システム15は、他のタイプ及び組み合わせのステージで命令を処理することが可能である。
【００１６】
図１に示すシステム15では、複数のパイプライン21のうちの１つにより受信される命令は、最初にレジスタステージ25で処理される。該レジスタステージ25では、命令を実行するために必要とされるオペランドが取得される。オペランドが取得されると、前記命令は、該命令を実行する実行ステージ28に入る。該実行ステージ28で命令が実行された後、該命令は例外検出ステージ32に入り、該例外検出ステージ32で、（例えばデータに信頼性がないことを示す）実行中のオーバーランといった状態がチェックされる。該例外検出ステージ32の終了後、命令は書き込みステージ35に入り、該書き込みステージ35で、実行ステージ28の結果が、レジスタファイル39内のレジスタ37又は特定のメモリ位置に書き込まれる。
【００１７】
典型的には、パイプライン21の各ステージ25,28,32,35は、特定の時点では１つの命令のみを処理するが、該ステージ25,28,32,35がそれぞれの命令を同時に処理して、各パイプライン21が多数の命令を処理できるようにすることも可能である。例えば、図１に示すシステム15では、複数のパイプライン21のうちの１つが４つの命令を同時に処理することが可能であり、この場合、該１つのパイプライン21の各ステージ25,28,32,35が前記４つの命令をそれぞれ１つずつ処理する。更に、各パイプライン21は、その他のパイプライン21が他の命令を処理している間に命令を処理することが可能である。よって、図１に示すシステム15を介して比較的多数の命令を同時に処理することが可能である。
【００１８】
タイミングを制御するために、命令は典型的には、クロック信号のエッジに応じてステージ25,28,32,35を段階的に進む。例えば、書き込みステージ35内の命令は、レジスタステージ25、実行ステージ28、及び例外検出ステージ32内の命令がそれぞれ同一パイプライン21の実行ステージ28、例外検出ステージ32、及び書き込みステージ35に入るのと同一のクロックエッジで、パイプライン21から出ることが可能である。しかし、命令は典型的には、データ従属性誤りを生じさせることなく各ステージが該命令を完全に処理するまでステージ25,28,32,35から出ることが抑止される。
【００１９】
ここで、クロック信号の次のアクティブエッジの前にステージ25,28,32,35内の命令の処理がデータ従属性誤りを生じることなく終了することができない場合に、ステージ25,28,32,35内の命令を停止させる(stall)必要がある場合がある。例えば、例外検出ステージ32及び書き込みステージ35内の命令の処理が、データ従属性誤りを生じることなく終了し、これらのステージ32,35内の命令がそれぞれクロック信号の次のエッジで該ステージ32,35から出力される一方、それと同じパイプライン21の実行ステージ28内の命令が、次のクロックエッジが生じる前に利用することができない（例えば、先行するロード命令によって未だ読み込み中である）データを利用する場合がある。このため、実行ステージ28内の命令は次のクロックエッジで実行ステージ28から出ることができない。これは、該命令の処理が、次のクロックエッジの発生前に誤りを生じることなく終了することができないからである。換言すれば、実行ステージ28内の命令が停止される。実行ステージ28が、データ従属性誤りを生じることなく命令を完全に処理することが可能となるまで、該命令は停止されたままとなる。「Superscalar Processing System and Method for efficiently Performing In-Order Processing of Instructions」と題する1999年9月7日出願の米国特許出願第09/390,199号には、データ従属性ハザードを防ぐために命令を停止させる適切なプロセスがより詳細に記載されている。
【００２０】
各ステージ25,28,32,35は通常は、任意の特定の時点で１つの命令のみを処理するよう構成されているため、先の例における同一パイプライン21のレジスタステージ25内の命令も、少なくとも実行ステージ28内の命令が実行ステージ28から出力可能となるまでレジスタステージ25内で停止されることになる。このため、ステージ25,28,32,35のうちの１つで命令が停止される場合には、該命令と同一のパイプライン21により処理されている後続の各命令もまた停止され、該停止は、該後続の命令が次のステージ25,28,32,35に入る準備が整っている場合であっても行われることになる。
【００２１】
命令はパイプライン21を通って段階的に進行するので、データ従属性ハザードを検出して、（通常は命令の少なくとも１つを停止させることにより）データ従属性誤りを防止できるようすることが望ましい。データ従属性ハザードの検出は、通常は、データ従属性を検出し、該データ従属性に関連するデータがまだ利用できないことを判定することにより行われる。このため、２つの命令間にデータ従属性ハザードが存在するか否かを検出するために、通常は、1）２つの命令間にデータ従属性が存在するか否か、2）該データ従属性に関連するデータ（即ち、複数の命令のうちの１つにより生成されて他の命令により利用されるデータ）が利用可能であるか否かの判定が行われる。
【００２２】
２つの命令間のデータ従属性は、通常は、それらの命令に関連するレジスタ識別子を比較することにより検出される。ここで、各命令は通常は、該命令によりどのレジスタ37が用いられることになるかを示す少なくとも１つのレジスタ識別子を含む。例えば、データを生成する（例えば書き込む）命令（「プロデューサ」と呼ばれる）は、該プロデューサの実行時にデータが書き込まれるべきレジスタを識別するレジスタ識別子を含み、記憶されているデータ又はプロデューサにより生成されたデータを利用する（例えば取り出す）命令（「コンシューマ」と呼ばれる）は、該コンシューマの実行時にデータが取り出されるべきレジスタ37を識別するレジスタ識別子を含む。複数のパイプライン21のうちの１つにおける後続のステージ28,32,又は35が、先行するステージ25,28又は32により処理されるコンシューマと同一のレジスタ識別子を有するプロデューサを処理している場合には、それら２つの命令間にデータ従属性が存在する。更に、プロデューサにより生成されてコンシューマにより用いられるデータが、未だコンシューマに対して利用可能となっていない場合には、該２つの命令間のデータ従属性によりデータ従属性ハザードが生じることになる。
【００２３】
本書の目的上、１つの命令が１つのステージで処理された後に該命令が別のステージで処理される場合には、該別のステージは前記１つのステージに対して「後続の」ステージであるとする。例えば、図１では、実行ステージ28はレジスタステージ25の後続ステージであり、レジスタステージ25は実行ステージ28の先行ステージである。
【００２４】
ほとんどの命令は、その実行時にデータの取り出しとデータの格納との両方を行うという点で、コンシューマでもプロデューサでもあることに留意されたい。本書で用いるように、「プロデューサ」と呼ばれる命令のレジスタ識別子は、該命令が別のレジスタ37からデータを取り出す場合（したがって別のレジスタ識別子と関連する場合）であっても、該命令がデータを格納することになるレジスタ37を識別する。更に、「コンシューマ」と呼ばれる命令のレジスタ識別子は、該命令が別のレジスタ37にデータを格納する場合（したがって別のレジスタ識別子に関連する場合）であっても、該命令がデータを取り出すことになるレジスタ37を識別する。
【００２５】
コンシューマのためのオペランドがレジスタステージ25で取得されるため、通常は該レジスタステージ25内の各コンシューマのレジスタ識別子が後続のステージ28,32,35内の各プロデューサのレジスタ識別子と比較されて、データ従属性ハザードを生じさせるデータ従属性が該レジスタステージ25内のコンシューマとの間に存在するか否かが判定される。かかるレジスタ識別子の比較を可能にするために、各命令に関連するレジスタ識別子を、該命令と共にパイプライン21を通過させる場合がある。
【００２６】
ここで、レジスタ識別子（通常はｎビットのエンコードされた値）が最初に、図２の従来のシステムにより示すように、デコーダ42によりｍビット値（ｍは通常は２n）へとデコードされる。値ｍは、システム15に関連するレジスタ37の数に対応し、ｍビットレジスタ識別子の各ビットは、特定のレジスタ識別子37に対応する。デコーダ42は、ｎビットレジスタ識別子によりどのレジスタ37が識別されるかを判定し、その識別されたレジスタ37に対応するｍビットレジスタ識別子内のビットをアサートするよう構成される。ｍビットレジスタ識別子の残りのビットはデアサートされる。このため、複数のレジスタのうちの１つのレジスタ37に関連するビットがアサートされた場合、ｍビットレジスタ識別子は該１つのレジスタ37を識別する。
【００２７】
ｍビットレジスタ識別子は、該レジスタ識別子に関連する命令がラッチ56,58,61,63によりステージ25,28,32,35へラッチされるのと同一のクロックエッジで、ラッチ44,46,48,52によりステージ25,28,32,35へそれぞれラッチされる。このため、レジスタ識別子及びそれに関連する命令は、同時に同一ステージ25,28,32,35内に存在することになる。それらのレジスタ識別子に関連する命令がステージ25,28,32,35にそれぞれラッチされると、図２に示すように、それらの命令が処理回路66,69,72,75によりそれぞれ処理される。処理回路66,69,72,75は、ステージ25,28,32,35に関して上述した機能をそれぞれ実行する。ここで、処理回路66はオペランドを取得し、処理回路69は命令を実行し、処理回路72は例外を検査し、処理回路75は、命令の実行により生成されたデータをレジスタ37又はメモリ内の特定の位置に書き込む。
【００２８】
ステージ25,28,32,35内のｍビットレジスタ識別子は、それらｍビットレジスタ識別子に関連する何れかの命令間にデータ従属性が存在するか否かを判定するために、ｍビットレジスタ識別子を比較するよう構成された比較ロジック22へ伝送される。ここで、レジスタステージ25内のコンシューマが、後続のステージ28,32,35の何れかのプロデューサとのデータ従属性を有するか否かを判定するために、比較ロジック22は、レジスタステージ25内のコンシューマのｍビットレジスタ識別子を、実行ステージ28、例外検出ステージ32、及び書き込みステージ35内のプロデューサの各ｍビットレジスタ識別子と比較する。ステージ25,28又は32内のプロデューサの比較されたｍビットレジスタ識別子の何れかが、レジスタステージ25内のコンシューマのｍビットレジスタ識別子と一致する場合には、比較ロジック22は、該２つの一致したレジスタ識別子に関連する命令間にデータ従属性が存在するものと判定する。更に、ステージ28,32,35内の命令のうちの１つにより生成されたデータであってレジスタステージ25内のコンシューマとのデータ従属性を有するデータが、未だレジスタステージ25内のコンシューマにより用いることができない場合には、比較ロジック22は、該２つの命令間にデータ従属性ハザードが存在するものと判定する。
【００２９】
図３は、パイプライン21の１つにおいて命令を処理し、及びデータ従属性ハザードを生じさせるデータ従属性を検査するために、従来から用いられている回路の別の実施形態を示している。ｎビットのエンコードされたレジスタ識別子に関連する命令が、ステージ25,28,32,35内にラッチされ、上述のように処理回路66,69,72,75により処理される。しかし、該ｎビットレジスタ識別子がデコーダ42（図2）によりデコードされることはない。代わりに、該ｎビットレジスタ識別子は、ステージ25,28,32,35に命令がそれぞれラッチされるのと同一のクロックエッジで、ラッチ87,89,91,93によりステージ25,28,32,35にそれぞれラッチされる。このため、該ｎビットレジスタ識別子は、該ｎビットレジスタ識別子と関連する命令と共にステージ25,28,32,35を通過する。
【００３０】
各ステージ25,28,32,35内のｎビットレジスタ識別子は、比較ロジック24へと伝送される。該比較ロジック24は、該ｎビットレジスタ識別子に関連する命令間にデータ従属性ハザードを明示するデータ従属性が存在するか否かを判定するためにレジスタ識別子を比較するよう構成されている。ここで、レジスタステージ25内のコンシューマが、後続のステージ28,32及び／又は35内のプロデューサの何れかとのデータ従属性を有するか否かを判定するために、比較ロジック24は、レジスタステージ25内のコンシューマのｎビットレジスタ識別子を、実行ステージ28、例外検出ステージ32、及び書き込みステージ35内のプロデューサの各ｎビットレジスタ識別子と比較する。ｎビットレジスタ識別子がエンコードされているため、比較ロジック24は、ｎビットコンパレータを用いて、レジスタステージ25内のレジスタ識別子がステージ28,32及び／又は35内のレジスタ識別子の何れかと一致するか否かを判定する。ステージ28,32又は35の何れかにおけるプロデューサの比較されたｎビットレジスタ識別子の何れかが、レジスタステージ25内のコンシューマのｎビットレジスタ識別子と一致する場合には、比較ロジック24は、該２つの一致するレジスタ識別子と関連する命令間にデータ従属性が存在するものと判定する。更に、ステージ28,32又は35内の命令のうちの１つにより生成されたデータであってレジスタステージ25内のコンシューマとデータ従属性を有するデータが、未だレジスタステージ25内のコンシューマにより用いることができない場合には、比較ロジック24は、該２つの命令間にデータ従属性ハザードが存在するものと判定する。
【００３１】
単純化のため、図２及び図３に示す回路は、ステージ25,28,32,35を通して１つのパイプライン21内の命令のレジスタ識別子のみを進行させるものである点に留意されたい。更に、上述の回路は、パイプライン21により処理される各命令毎に１つのレジスタ識別子しか処理しないものである。多くの命令は、２つ以上のレジスタ識別子を含むことが可能であるため、同一命令について多数のレジスタ識別子を取り扱うために必要に応じて更に多くの回路を実施すべきである。更に、レジスタステージ25内のコンシューマのレジスタ識別子は、同一パイプライン21内のステージ28,32,35のプロデューサのレジスタ識別子と比較されるだけでなく、他のパイプライン21の後続のステージ28,32及び／又は35の何れかの各プロデューサのレジスタ識別子とも比較されるべきである。このため、パイプライン21の数が増えると、データ従属性ハザードを検出するための配線及び他の回路が急激に増加することになる。
【００３２】
特に、プロデューサにより生成されたデータがコンシューマにとって利用可能となるのに要する待ち時間の長さが均一でも一定でもないとすると、データ従属性ハザードを検出すると共にデータ従属性誤りを防止するのに必要となる回路は、比較的複雑なものとなる。更に図２において、より高性能の処理システム15の場合には、レジスタ37の数(ｍ)は通常は比較的大きなものとなる。このため、ｍビットレジスタ識別子を各ステージ25,28,32,35にラッチするために（即ち、ステージ間でｍビットレジスタ識別子を伝送するために）必要となる配線の数も比較的多くなる（例えば数百本）。この更に増える配線は、処理システム15内の貴重な空間を浪費し、システム15の全体的な配線の設計をより一層複雑化させるものとなる。
【００３３】
更に、図３におけるエンコードされたレジスタ識別子を比較するためのｎビットコンパレータ（該ｎビットコンパレータ用の配線も含む）もまた、処理システム15内の貴重な空間を浪費し、システム15の全体的な配線の設計をより一層複雑化させるものとなる。更に、ステージ25,28,32,35を通してｍビットレジスタ識別子及び該レジスタ識別子と関連する命令を個別にラッチすることにより、ラッチの数が増大し、このためシステム15を実施するために必要となる回路及び空間の量も増大する。複雑さ及び空間に関連する問題は、パイプライン21の数が増加すると共に悪化する。
【００３４】
一般に、本発明は、データ従属性ハザードを効率的に検出するシステム及び方法を提供する。図４は、本発明を実施するために用いることが可能な処理システム100を示している。同図に示すように、該処理システム100は、メモリ109に格納されているコンピュータプログラム107からの命令を実行するためにコンピュータシステム105内で使用することが可能である。
【００３５】
処理システム100は、ローカルインタフェイス112を介してシステム105内の他の要素との通信を行い、及び該要素を駆動する。ローカルインタフェイス112は、１つ又は２つ以上のバスを備えることができる。更に、入力装置114、例えばキーボード又はマウスを用いて、システム105のユーザからデータを入力することができ、画面ディスプレイ116又はプリンタ118を用いてユーザにデータを出力することができる。ディスク記憶機構112がローカルインタフェイス112に接続され、不揮発性ディスク（例えば磁気ディスクや光ディスク）との間でデータを送受信することができる。システム105は、該システム105がネットワーク125とデータを交換できるようにするネットワークインタフェイス123に接続することができる。
【００３６】
データ従属性、ひいてはデータ従属性ハザードを検出するための回路を除き、処理システム100の構成は、従来の処理システム15の構成と同一であることが好ましい。このため、図５に示すように、処理システム100は、従来のシステム15に関して上述したように、レジスタステージ133、実行ステージ136、例外検出ステージ139、及び書き込みステージ142において、パイプライン132を介して命令を処理する。所望により、他のステージ及び他のステージの組み合わせを介して、パイプライン132により実行される処理を分割することが可能である点に留意されたい。更に図５では、比較ロジック144がデコーダ155,157,159,161を介して１つのパイプライン132に接続されたものとして単純化して示されているが、各パイプライン132を同様のデコーダを介して比較ロジック144に同様に接続するのが好ましいことに留意されたい。
【００３７】
図６に示すように、処理システム100は、システム100のタイミングを制御するために用いられるラッチ145,147,149,151を備えている。ここで、当業界で既知の技術を用いて、ラッチ145,147,149,151はそれぞれ処理回路66,69,72,75に命令をラッチする。従来のシステム15と同様に、ラッチ145,147,149,151は、各ステージ133,136,139,142内の処理回路66,69,72,75がそれぞれ特定の時点で１つの命令のみを処理するよう制御されることが好ましい。更に、図６に示すパイプライン132は、最大で４つの命令、即ち、各処理回路66,69,72,75毎に１つの命令を、同時に処理することが可能である。しかし、他の実施形態では、任意の処理回路66,69,72及び／又は75は、ある時点で同時に２つ以上の命令を処理することも可能である。
【００３８】
ラッチ145,147,149,151は、ラッチ145,147,149,151によりラッチされている命令によりそれぞれ規定されるエンコードされたｎビットレジスタ識別子をデコーダ155,157,159,161にそれぞれ転送するよう構成される。このため、各ラッチ145,147,149,151は、処理回路66,69,72,75へ命令をそれぞれ転送する際に、各命令により規定されるエンコードされたｎビットレジスタ識別子をデコーダ155,157,159,161にそれぞれ転送する。
【００３９】
各デコーダ155,157,159,161は、受信したｎビットレジスタ識別子を、該受信したｎビットレジスタ識別子と同一レジスタ37を識別するｍビットレジスタ識別子へとデコードするよう構成される。該値ｍは、システム100と関連するレジスタ37の数に対応することが好ましく、各ｍビットレジスタ識別子内の各ビットは、特定のレジスタ37に対応する。各デコーダ155,157,159,161は、受信したｎビットレジスタ識別子によりどのレジスタ37が識別されるかを判定し、及び該識別されたレジスタ37に対応するｍビットレジスタ識別子内のビットをアサートするよう構成されることが好ましい。該ｍビットレジスタ識別子内の残りのビットはデアサートされる。その結果として、各ｍビットレジスタ識別子は、アサートされた１つのビットとデアサートされた残りのビットとを有することになる。そのアサートされたビットは、受信したｎビットレジスタ識別子を含む命令により用いられるレジスタ37に対応する。しかし、他の技術を用いてｎビットレジスタ識別子をデコードを行い、及び他の識別子を用いて命令に関連するレジスタ37を識別することも可能である点に留意されたい。
【００４０】
各デコーダ155,157,159,161は、デコードされたｍビットレジスタ識別子を比較ロジック144へ転送し、該比較ロジック144が、受信した各ｍビットレジスタ識別子を少なくとも１つの他の受信したｍビットレジスタ識別子と比較し、データ従属性及び／又はデータ従属性ハザードが存在するか否かを判定する。２つの命令の間のデータ従属性ハザードは、該２つの命令間にデータ従属性がない場合には存在しないことに留意されたい。このため、データ従属性ハザードの検出はまたデータ従属性の検出であるとみなされるべきである。
【００４１】
比較ロジック144の機能を例示するために、従来のシステム15と同様に、レジスタステージ133内のコンシューマが、他の何れかのステージ136,139,142内の何れかのプロデューサとのデータ従属性ハザードを有するか否かを判定することが好ましい。この例では、コンシューマがレジスタステージ133内にあり、プロデューサが他のステージ136,139,142内にあり、デコーダ155によりデコードされるｍビットレジスタ識別子が、デコーダ157,159,161によりデコードされるｍビットレジスタ識別子とそれぞれ比較されるものと仮定する。
【００４２】
このため、図６に示すように、デコーダ155によりデコードされるｍビットレジスタ識別子はANDロジック164,166,168に転送され、デコーダ157,159,161によりデコードされるｍビットレジスタ識別子はANDロジック164,166,168にそれぞれ転送される。次いで、各ANDロジック164,166,168は、レジスタステージ133で処理されているコンシューマと他の任意のステージ136,139,142で処理されている何れかのプロデューサとの間にデータ従属性が存在するか否かを判定するために、受信したｍビットレジスタ識別子を比較する。レジスタステージ133で処理されているコンシューマと、これからデータを生成する（即ちコンシューマが利用可能なデータを未だ生成していない）他のステージ136,139,142で処理されている何れかのプロデューサとの間にデータ従属性が存在する場合には、比較ロジック144は、該コンシューマと該１つのプロデューサとの間にデータ従属性ハザードが存在するものと判定する。次いで、制御回路（図示せず）が、かかるデータ従属性誤りを防ぐための判定に応じてレジスタステージ133内のコンシューマを停止させる（又は他のステップを実行する）ことが可能である。
【００４３】
図７は、ANDロジック164,166,168の実施に適したロジックを示している。ここで、各ANDロジック164,166,168は、受信したｍビットレジスタ識別子の１つのからの１ビットと受信した他のｍビットレジスタ識別子からの１ビットとを各々が受信するｍ個のANDゲート172を備えている。各ANDゲート172により受信された両方のビットは、同一のレジスタ37に対応するものであることが好ましい。このため、受信した２つのｍビットレジスタ識別子が一致する場合には、ANDゲート172の１つがアサート出力を生成することになる。したがって、ANDゲート172の出力を解析することが可能であり、ANDゲート172の何れかの出力がアサートされる場合には、一致したｍビットレジスタ識別子と関連する命令間にデータ従属性が存在するものと判定することができる。ANDゲート172の出力を迅速に解析するために、各出力はORゲート175（図８）に転送することが可能であり、該ORゲート175は、２つの比較されたｍビットレジスタ識別子が一致する場合にのみ、アサートされた出力を生成する。
【００４４】
システム100の設計の結果として、データ従属性ひいてはデータ従属性ハザードを検出するために必要とされる配線を含む回路及び空間の量が従来のシステム15と比べて低減されることになる。特に、ステージ間でレジスタ識別子を転送するために図２において用いられる配線の数を著しく低減させることができ、また比較ロジック144の実施を、図３の比較ロジック24に関して説明したようなｎビットコンパレータの実施よりも遙かに単純で小さなものとすることができる。更に、デコーダ155,157,159,161並びに比較ロジック144の実施に用いられるデバイスは、空間及び配線の複雑さを最小限に抑えるよう容易に配置することができる。更に、デコーダ155,157,159,161がラッチ44,46,48及び52（図２）よりも小さな空間しか利用しないようにすることができる。その結果として、データ従属性及び／又はデータ従属性ハザードを検出するためのシステム100の回路を、従来のシステム15の回路よりも遙かに小型に及び効率的に構成することができる。
【００４５】
図６が、パイプライン132内の各命令からの１つのレジスタ識別子を他のレジスタ識別子と比較することができる回路を示していることに留意されたい。しかし、命令は２つ以上のレジスタ識別子を含むことも可能である。このため、図６の回路と同様に追加の回路を実施して、各命令の各レジスタ識別子が確実に検査できるようにすることも可能である。例えば、レジスタステージ133内のコンシューマは、実行時に２つの異なるレジスタ37からデータを取り出すことが可能であり、したがって、２つの異なるレジスタ識別子を含むことが可能である。かかる命令に適応させるために、レジスタステージ133は、別のデコーダ155を備えることが好ましい。該デコーダ155は、他のレジスタ識別子を、比較ロジック144により他のステージ136,139,142内の他のｍビットレジスタ識別子と比較することが可能なｍビットレジスタ識別子へとデコードする。したがって、図６に示す設計は、必要に応じて、２つ以上のレジスタ識別子と関連する命令に適応させるよう拡張することが可能なものである、ということは当業者には明らかであろう。
【００４６】
更に、図６は、単一のパイプライン132についての回路を示したものである。スーパースケーラシステム100では、異なるパイプライン132内の命令間のデータ従属性ハザード、ひいてはデータ従属性を検査することが望ましい。このため、本書で説明する技術に従って、異なるパイプライン132の命令間のデータ従属性及び／又はデータ従属性ハザードを検査するために、１つのパイプライン132内の命令のｍビットレジスタ識別子を、同一の又は異なるパイプライン132内の命令のｍビットレジスタ識別子と比較することが可能である、ということは当業者には明らかであろう。例えば、１つのパイプライン132のデコーダ155によりデコードされるｍビットデータ識別子を、ANDロジック164,166,168と類似したロジックを介して別のパイプライン132のデコーダ157,159,161によりデコードされるｍビットレジスタ識別子と比較して、該１つのパイプライン132のレジスタステージ133内の命令と、他のパイプライン132のステージ136,139,142内の命令との間にデータ従属性及び／又はデータ従属性ハザードが存在するか否かを判定することが可能である。
【００４７】
更に、上記のように、レジスタステージ133内の各コンシューマと関連するレジスタ識別子を、ステージ136,139,142内の各プロデューサのレジスタ識別子と比較することが一般に望ましい。しかし、他の実施形態では、何れか１つのパイプライン132の何れか１つのステージ133,136,139又は142からのレジスタ識別子を、何れか１つのパイプライン132の何れか１つのステージ133,136,139又は142からのレジスタ識別子と比較して、該比較されたレジスタ識別子と関連する２つの命令間にデータ従属性が存在するか否かを判定することが可能である。
データの融合
必要に応じて、比較ロジック144に与えられるデータを融合させて、データハザードの効率的な検出を可能にすることが可能である。例えば、図９に示すように、融合回路177,179は、デコーダ155,157,159,161から受信したデータを融合させるように及び該データと比較ロジック144とのインタフェイスを形成するように構成することが可能である。
【００４８】
融合回路177は、図９に示すパイプライン132のレジスタステージ133からのｍビットレジスタ識別子と、別のステージ及び／又は別のパイプライン132からの少なくとも１つのｍビットレジスタ識別子とを受信し、該受信したｍビットレジスタ識別子を規定するデータの少なくとも一部を結合するように構成される。例えば、図９に示す実施形態では、融合回路177は、同図に示すパイプライン132のレジスタステージ133と関連するデコーダ155からのｍビットレジスタ識別子と、別のパイプライン132からのｍビットレジスタ識別子とを受信する。次いで融合回路177は、該受信したレジスタ識別子を結合させて、該受信したレジスタ識別子により識別される各レジスタ37（図５）を識別する単一のｍビットレジスタ識別子を形成する。
【００４９】
ここで、融合回路177により生成されるｍビットレジスタ識別子内の各ビットは、システム100の異なるレジスタ37の異なる１つに対応する。更に融合回路177は、受信したｍビットレジスタ識別子の１つにより識別されるレジスタ37に対応する先行するｍビットレジスタ識別子内の各ビットをアサートし、及びｍビットレジスタ識別子の残りのビットをデアサートするように設計される。
【００５０】
しかし、融合回路177は、何れかのパイプライン132のレジスタステージ133内の各コンシューマと関連する各ｍビットレジスタ識別子を受信することが好ましいことに留意されたい。このため、２つのパイプライン132のみがシステム100内に存在し、及び実行時に各コンシューマが単一のレジスタ37からしか読み出しを行わないものと仮定すると、図９に示す回路は本発明の好適実施形態に従うものとなる。しかし、多くの応用形態では、パイプライン132の数は３つ以上であり、単一のコンシューマの実行を介して読み出しが行われるレジスタ37は２つ以上存在する。その結果として、融合回路177により受信されるレジスタ識別子の数が増加する場合がある。
【００５１】
何れにしても、融合回路177により生成されるｍビットレジスタ識別子は、該融合回路177により受信されるｍビットレジスタ識別子により識別される各レジスタ37を識別し、何れかのパイプライン132のレジスタステージ133内の何れかのコンシューマの実行を介して読み出されることになる各レジスタ37を識別することが好ましい。ここで、受信されるｍビットレジスタ識別子により識別されるレジスタ37の１つに対応する、融合回路177により生成されるｍビットレジスタ識別子の各ビットがアサートされることになる。融合回路177により生成されるｍビットレジスタ識別子の残りのビットはデアサートされることになる。
【００５２】
融合回路179は、図９に示すパイプライン132のステージ136,139及び／又は142からｍビットレジスタ識別子を受信し、及び／又は別のパイプライン132からｍビットレジスタ識別子を受信するように構成される。次いで、融合回路179は、融合回路177と同様に、受信されたｍビットレジスタ識別子を規定するデータの少なくとも一部を結合するよう設計される。例えば、図９に示す実施形態では、融合回路179は、同図に示すパイプライン132の各ステージ136,139,142からのｍビットレジスタ識別子と、別のパイプライン132の各ステージ136,139,142からのｍビットレジスタ識別子とを受信する。次いで融合回路179は、該受信したレジスタ識別子を結合させて、該受信したレジスタ識別子により識別される各レジスタ37（図５）を識別する１つのｍビットレジスタ識別子を形成する。
【００５３】
ここで、融合回路179により生成されるｍビットレジスタ識別子内の各ビットは、システム100の異なるレジスタ37の１つに対応する。更に、融合回路179は、受信したｍビットレジスタ識別子の１つにより識別されるレジスタ37に対応する先行するｍビットレジスタ識別子内の各ビットをアサートし、該ｍビットレジスタ識別子の残りのビットをデアサートするよう設計される。
【００５４】
しかし、融合回路179は、何れかのパイプライン132の何れかのステージ133,139,142内の何れかのプロデューサと関連する各ｍビットレジスタ識別子を受信することが好ましいことに留意されたい。このため、上述のように、２つのパイプライン132のみがシステム100内に存在し、及び実行時に各プロデューサが１つのレジスタ37に対してのみ書き込みを行うものと仮定すると、図９に示す回路は好ましい実施形態に従うものとなる。しかし、多くの応用形態では、パイプライン132の数は３つ以上であり、１つのプロデューサの実行を通して書き込まれるレジスタ37は２つ以上存在する場合がある。その結果として、融合回路179により受信されるレジスタ識別子の数が増加することになる。更に、融合回路179は、必ずしも各ステージ136,139,142からレジスタ識別子を受信する必要はない。
【００５５】
何れにしても、融合回路179により生成されるｍビットレジスタ識別子は、該融合回路179により受信されるｍビットレジスタ識別子により識別される各レジスタ37を識別し、この際に、何れかのパイプライン132のステージ136,139,142内の何れかのプロデューサにより書き込まれる各レジスタ37を識別することが好ましい。ここで、融合回路179により生成されるｍビットレジスタ識別子の各ビットであって受信されるｍビットレジスタ識別子により識別されるレジスタ37の１つに対応する各ビットがアサートされることになる。融合回路179により生成されるｍビットレジスタ識別子の残りのビットはデアサートされることになる。
【００５６】
図１０は、融合回路177を実施するために用いることができる典型的な回路を示している。ここで、融合回路177は、ｍ個のORゲート180を備えることが可能である。各ORゲート180は、該融合回路177により受信される各レジスタ識別子からの１ビットを受信する。更に、１つのORゲート180により受信される各ビットは、同一のレジスタ37（図５）に対応するものであることが好ましい。このため、融合回路177により受信されるｍビットレジスタ識別子のうちの１つにより識別される各レジスタ37毎に、ORゲート180の１つがアサートされた出力を生成することになる。その結果として、融合回路177は、ｍビットレジスタ識別子を生成し、そのｍビットレジスタ識別子の各ビットがレジスタ37の１つに対応する。受信した何れかのレジスタ識別子により識別されるレジスタ37に対応するｍビットレジスタ識別子のビットはアサートされ、一方、残りのビットはデアサートされることになる。
【００５７】
図１１は、融合回路179を実施するために用いることができる典型的な回路を示す。ここで、融合回路179は、ｍ個のORゲート181を備えることが可能である。各ORゲート181は、融合回路179により受信される各レジスタ識別子からの１ビットを受信する。更に、単一のORゲート181により受信される各ビットが同一レジスタ37に対応するものであることが好ましい。このため、融合回路179により受信されるｍビットレジスタ識別子のうちの１つにより識別される各レジスタ37毎に、ORゲート181の１つがアサートされた出力を生成することになる。その結果として、融合回路179は、ｍビットレジスタ識別子を生成し、該ｍビットレジスタ識別子の各ビットがレジスタ37の１つに対応する。受信した何れかのレジスタ識別子により識別されるレジスタ37に対応するｍビットレジスタ識別子のビットはアサートされ、一方残りのビットはデアサートされることになる。
【００５８】
融合回路177,179により現時点で生成されるｍビットレジスタ識別子を比較することにより、比較ロジック144は、パイプライン132により処理されている命令間にデータハザードが存在するか否かを判定することができる。融合回路177,179により生成されたレジスタ識別子を比較するために図７に示すANDロジック164を実施することが可能である。
【００５９】
ここで、各ANDゲート172（図７）は、融合回路177,179により生成される各レジスタ識別子からの１ビットを受信する。更に、１つのANDゲート172により受信される各ビットは、同一のレジスタ37に対応するものであることが好ましい。このため、融合回路177,179から受信されるｍビットレジスタ識別子の両方により識別される各レジスタ37毎に、ANDゲート172の１つがアサートされた出力を生成することになる。その結果として、図９のANDロジック164は、ｍビットレジスタ識別子を生成し、該ｍビットレジスタ識別子の各ビットがレジスタ37の１つに対応する。融合回路177,179から受信した両方のレジスタ識別子により識別されるレジスタ37に対応するｍビットレジスタ識別子のビットはアサートされ、一方、残りのビットはデアサートされることになる。
【００６０】
このため、ANDロジック164により生成されるｍビットレジスタ識別子のアサートされた各ビットは、対応するレジスタ37に関連するデータハザードが存在する可能性があることを示し、ANDロジック164により生成されるｍビットレジスタ識別子のデアサートされた各ビットは、対応するレジスタ37に関連するデータハザードが存在しないことを示す。従って、比較ロジック144は、ANDロジック164により生成されるｍビットレジスタ識別子内のアサートされた各ビット毎にデータハザードを検出するよう構成することが可能である。
属性データ
システム100の効率を更に向上させるために、追加の回路を実施して不必要な停止(stall)を防止し、これによりパイプライン132の命令を処理する際に受ける遅延を低減させることが可能である。これに関連して、パイプラインにより処理されている命令をイネーブル及びディセーブルする述語(predication)技術が開発されている。イネーブルされた命令はパイプライン132により実行され、ディセーブルされた命令は実行されることなくパイプライン132内を通過する。本出願人の「System and Method for Providing Predicate Data」と題する米国特許出願（代理人整理番号第10971191号）には、プロセッサ性能を向上させるために述語データを用いるプロセスについて更に説明されている。
【００６１】
停止による悪影響を最小限にするために、述語データを解析して、命令がパイプライン132により実行されるべきか否かを判定することが可能である。述語データから、ある命令が実行されるべきではないものと判定できる場合には、その命令は、その命令と他の命令との間のデータハザードに起因してデータ誤りを生じさせる可能性はない。このため、その命令のレジスタ識別子が別の命令のレジスタ識別子と一致する場合であっても、それら命令の一方が記述データによりディセーブルされる場合には、実際にはそれら命令間にデータハザードが存在することはない。その結果として、不要な停止を防ぐために、２つの命令の一方が述語データによりディセーブルされている場合には、比較ロジック144は、それら命令間のデータハザードを検出するのをやめることが望ましい。
【００６２】
更に、以下により詳細に説明するように、２つの命令のレジスタ識別子が一致する場合であっても、パイプライン132により処理されている命令のタイプに基づいて、該２つの命令間にデータハザードが存在しないものと判定することが可能な場合もある。結果的に、追加の回路をシステム100内に配設し、該回路により、属性データ（パイプライン132により処理されている命令の述語状態及び／又はタイプを示すデータ等）を解析して、不要な停止の発生を防止できるようにすることが望ましい。
【００６３】
図１２は、データハザードの検出時に属性データ（即ち命令のタイプ及び／又は述語状態を示すデータ）を解析するためにシステム100により用いることが可能な追加の回路183,185,187,189を示している。同図に示すように、デコーダ155,157,159,161により生成されるｍビットレジスタ識別子はそれぞれ属性インタフェイス183,185,187,189に入力され、属性インタフェイス183,185,187,189はそれぞれラッチ145,147,149,151から属性データを受信する。各属性インタフェイス183,185,187,189は、受信した属性データと、受信したｍビットレジスタ識別子とのインタフェイスを形成して、受信したｍビットレジスタ識別子と関連する命令を実行するためにどのレジスタ37（図５）が用いられるかを示すだけでなく命令及び／又はその命令の述語状態を示すデータも生成する。このため、比較回路191は、命令を実行するために用いられるレジスタ37だけでなく命令のタイプ及び／又は命令の述語状態にも基づいて、上記命令と別の命令との間にデータハザードが存在するか否かを検出することが可能である。その結果、比較ロジック191は、比較ロジック144よりも正確にデータハザードを検出するよう構成される。
【００６４】
例示を目的として、例外検出ステージ139内のプロデューサがマルチメディア（mmu）命令である場合にのみ、レジスタステージ133内の非マルチメディア（非mmu）コンシューマが、該プロデューサとのデータハザードを規定するものと仮定する。更に、非mmuコンシューマが現時点でレジスタステージ133内に存在するものと仮定する。比較ロジック144（図6）が属性データを解析せず、このため、パイプライン132により処理されている命令のタイプ及び命令の述語状態を考慮しない場合には、比較ロジック144は、パイプライン132のうちの１つのデコーダ159により受信されるレジスタ識別子がパイプライン132のうちの１つのデコーダ155により同時に受信されるレジスタ識別子と一致する場合には必ず、データハザードを検出することになる。
【００６５】
したがって、レジスタステージ133内のコンシューマと同一レジスタ識別子を有する、パイプライン132の例外検出ステージ139内の少なくとも全てのプロデューサが、少なくとも書き込みステージ142に進むまで、レジスタステージ133内の上記コンシューマは停止されることになる。換言すれば、少なくとも１つのタイプのプロデューサは、該プロデューサが少なくとも書き込みステージ142に到達するまで、レジスタステージ133内の少なくとも１つのタイプのコンシューマにとって利用不可能なデータを生成するため、該コンシューマは、該コンシューマに先行すると共に該コンシューマと同一のレジスタ識別子を有する全てのプロデューサが少なくとも書き込みステージ142に到達するまで、レジスタステージ133内で停止されることになる。さもないと、パイプライン132のうちの１つの例外検出ステージ139内のプロデューサがmmu命令であり及びレジスタステージ133内のコンシューマが非mmu命令である場合にデータ誤りが発生する可能性がある。
【００６６】
しかし、比較回路191は、命令のレジスタ識別子のみならず命令のタイプ及び／又は述語状態を示す属性データを受信し解析するよう設計される。このため、比較ロジック191は、２つの命令が同一のレジスタ識別子を有する場合であっても、例外検出ステージ139内のプロデューサとレジスタステージ133内のコンシューマとの間にデータハザードが存在しないことを検出することができる。
【００６７】
ここで、レジスタステージ133のラッチ145が、レジスタステージ133内の命令の述語状態を示す１ビットの属性データを伝送し、及びレジスタステージ133内の命令が特定のタイプの命令（例えば上記実施形態におけるmmu命令）であるか否かを示す１ビットの属性データを伝送する。更に、例外検出ステージ139のラッチ149が、例外検出ステージ139内の命令の述語状態を示す１ビットの属性データを伝送し、及び例外検出ステージ139内の命令が特定のタイプの命令（例えば上記実施形態におけるmmu命令）であるか否かを示す１ビットの属性データを伝送する。属性インタフェイス183,187はラッチ145,149から属性データをそれぞれ受信し、該受信した属性データ及びデコードされたレジスタ識別子を示すデータをデコーダ155,159からハザード検出回路196へ送信する。
【００６８】
ハザード検出回路196は、1）レジスタステージ133内のコンシューマが、例外検出ステージ139内のプロデューサと同一のレジスタ識別子を有し、2）レジスタステージ133及び例外検出ステージ139内の両方の命令が、述語イネーブルされており（predicate enabled）、3）レジスタステージ133及び例外検出ステージ139内の命令のタイプが、２つの命令間にデータハザードが存在し得るものである場合にのみ、データハザードを検出するよう設計される。例示のため、（a）レジスタステージ133内のコンシューマが非mmu命令であり、かつ例外検出ステージ139内のプロデューサがmmu命令であるか、（b）レジスタステージ133内のコンシューマがmmu命令であり、かつ例外検出ステージ139内のプロデューサが非mmu命令である場合にのみ、上記条件3）が満たされるものと仮定する。しかし、他のタイプの命令及び／又は他のタイプの命令の組み合わせもまた条件3）を満たすことが可能であり、この場合には、本発明の上記実施形態を実施するために用いた回路を変更することが必要となる（これについては以下で詳述する）、ということが当業者には明らかであろう。
【００６９】
３つの上記条件（即ち条件1）〜3））の何れかの条件が満たされない場合に、ハザード検出回路196はデータハザードを検出しない。その結果として、幾つかの状況で、レジスタステージ133内のコンシューマの停止を、該コンシューマと同一のレジスタ識別子を有するプロデューサが書き込みステージ142に達するまで防止し又は排除することができ、これにより該コンシューマを先行してパイプライン132により処理することが可能となる。
【００７０】
図１３は、属性インタフェイス183に接続されるデコーダ155の典型的な実施形態を示している。ここで、該デコーダ155は、処理システム100のレジスタ37（図５）にそれぞれ対応するｍ行のデコードロジック202を有する一列のロジックである。該デコードロジック202の各行は、デコーダ155に送信されるｎビットレジスタ識別を受信し、該ｎビットレジスタ識別子がデコードロジック202の当該行に対応するレジスタ37を識別する場合にアサートされた出力を送信し、該ｎビットレジスタ識別子が別のレジスタ37を識別する場合にはデアサートされた出力を送信するように設計される。換言すれば、デコードロジック202の各行は、デコーダ155により生成されるｍビットレジスタ識別子のうちの１ビットを出力する。
【００７１】
属性インタフェイス183は、ｍ行のインタフェイスロジック204を備えている。該ｍ行のインタフェイスロジック204は、デコードロジック202の各行にそれぞれ対応し、したがってシステム100のレジスタ37に対応するものである。各行のインタフェイスロジック204は、デコードロジック202のうちの１つの出力を受信し、及びラッチ145から伝送される属性データを受信するよう設計される。他の属性インタフェイス185,187,189により処理される属性データはそれぞれラッチ147,149,151から受信される。
【００７２】
ラッチ145は、レジスタステージ133内の命令の述語状態を示す（即ちレジスタステージ内の命令がイネーブルされたか否かを示す）１ビット値と、レジスタステージ133内の命令が特定のタイプの命令であるか否かを示す少なくとも１ビット値とを属性インタフェイス183に伝送するよう構成することが可能である。例えば、ラッチ145は、レジスタステージ133内の命令が述語イネーブルされた場合にのみ複数のビット（即ち図１４において接続部207を介して伝送されるビット）のうちの１つをアサートし、レジスタステージ133内の命令がmmu命令である場合にのみ他のビット（接続部208を介して伝送されるビット）をアサートすることが好ましい。
【００７３】
属性インタフェイス183内の各行のインタフェイスロジック204は、デコーダ155から受信されるビットがアサートされているか否かを示すだけでなくレジスタステージ133内の命令の述語状態及び／又はタイプも示す出力を生成するように構成される。例えば、図１３及び図１４により示される実施形態における各行のインタフェイスロジック204が２ビット出力を生成することが可能である。単一行のインタフェイスロジック204により出力されるビットの何れも、該行のインタフェイスロジック204がデコーダにより現時点で受信されたｎビットレジスタ識別子により識別されるレジスタ37に対応し、かつレジスタステージ133内の命令が述語イネーブルされている場合にのみ、アサートすることが可能である。換言すれば、各行のインタフェイスロジック204は、デコーダ155から受信されるビット値がデアサートされる場合、又は接続部207を介して伝送されるビット値がデアサートされる場合に、両方の出力ビットをデアサートするよう構成される。
【００７４】
属性インタフェイス183の各行のインタフェイスロジック204は更に、ラッチ145から受信される属性データが、レジスタステージ133内の命令が特定のタイプの命令であることを示す場合にのみ、各出力ビットをそれぞれアサートするように構成される。例えば、属性インタフェイス183に関する図１４のANDゲート209は、レジスタステージ133内の命令がmmu命令である場合にのみアサートされた出力を生成し、属性インタフェイス183に関する図１４のANDゲート210は、レジスタステージ133内の命令が非mmu命令である場合にのみアサートされた出力を生成することが可能である。
【００７５】
ここで、ANDゲート209の出力がアサートされる場合には、レジスタステージ133内の命令が、1）イネーブルされ、2）mmu命令（即ち例外検出ステージ139内の命令が非mmu命令である場合にのみ該例外検出ステージ139内の命令とのデータハザードを規定することができるタイプのもの）であり、3）ANDゲート209を含む当該行のインタフェイスロジック204に対応するレジスタ37を利用する、ということがわかる。更に、ANDゲート210の出力がアサートされる場合には、レジスタステージ133内の命令が、1）イネーブルされ、2）非mmu命令（即ち例外検出ステージ139内の命令がmmu命令である場合にのみ該例外検出ステージ139内の命令とのデータハザードを規定することができるタイプのもの）であり、3）ANDゲート210を含む当該行のインタフェイスロジック204に対応するレジスタ37を利用する、ということがわかる。
【００７６】
デコーダ159及び属性インタフェイス187の回路は、上記デコーダ155及び属性インタフェイス183の回路と類似又は同一のものとすることが可能である。更に、ラッチ145と同様に、ラッチ149は、例外検出ステージ139内の命令がイネーブルされた場合にのみ、属性インタフェイス187へ伝送される属性ビット（即ち図１４において接続部207を介して伝送されるビット）のうちの１つをアサートし、例外検出ステージ139内の命令が特定のタイプの命令（例えばmmu命令）である場合にのみ、属性インタフェイス187へ伝送される他の属性ビット（即ち図１４において接続部208を介して伝送されるビット）をアサートする。
【００７７】
属性インタフェイス183の出力と同様に、属性インタフェイス187に関するインタフェイスロジック204（図１３）の各行の出力を２ビット出力とすることが可能である。ここで、属性インタフェイス187に関する図１４のANDゲート209の出力は、例外検出ステージ139内の命令が、1）イネーブルされ、2）mmu命令（即ちレジスタステージ133内の命令が非mmu命令であるときにのみ、レジスタステージ133内の命令とのデータハザードを規定することができるタイプのもの）であり、及び、3）ANDゲート209を含むインタフェイスロジック204の行と対応するレジスタ37を用いる場合にのみ、アサートされることが好ましい。更に、上記の実施形態では、属性インタフェイス187に関する図１４のANDゲート210の出力は、例外検出ステージ139内の命令が、1）イネーブルされ、2）非mmu命令（即ちレジスタステージ133内の命令がmmu命令であるときにのみ、レジスタステージ133内の命令でデータハザードを規定することができるタイプのもの）であり、及び、3）ANDゲート209を含むインタフェイスロジック204の行と対応するレジスタ37を用いる場合にのみ、アサートされる。
【００７８】
ハザード検出ロジック196は、属性インタフェイス183,187からの出力を受信して比較し、該ロジック196内に入力される情報に基づいてデータハザードが存在するか否かを検出するように構成される。ここで、レジスタステージ133内のコンシューマのレジスタ識別子と例外検出ステージ139内のプロデューサのレジスタ識別子とが一致し、該コンシューマ及び該プロデューサの両方がイネーブルされ、及び該コンシューマ及び該プロデューサがデータハザードを規定するタイプのものである（例えば、（a）レジスタステージ133内のコンシューマが非mmu命令であり、かつ例外検出ステージ139内のプロデューサがmmu命令であり、又は（b）レジスタステージ133内のコンシューマがmmu命令であり、例外検出ステージ139内のプロデューサが非mmu命令である）場合にのみ、ハザード検出ロジック196がデータハザードを検出する。
【００７９】
図１５は、上記の実施形態においてハザード検出ロジック196を実施するために用いることが可能な回路を示している。ここで、ハザード検出ロジック196はｍ行の比較ロジック211を備えている。該比較ロジック211の各行は、属性インタフェイス183からのインタフェイスロジック204の１つの行と、属性インタフェイス187からのインタフェイスロジック204の１つの行とからの出力を受信するよう構成される。ハザード検出回路196内の同一行の比較ロジック211に出力を伝送する属性インタフェイス183,187のインタフェイスロジック204の各行は、同一のレジスタ37に対応することが好ましい。換言すれば、ハザード検出回路196内の比較ロジック211の同一行に接続される、属性インタフェイス183,187のインタフェイスロジック204の両方の行は、デコーダ155,159により同時に受信されるｎビットレジスタ識別子が一致する場合にのみ、アサートされた出力を生成することが可能である。このため、比較ロジック211の行の何れもが、少なくとも属性インタフェイス183からの１ビットのアサートされた出力と属性インタフェイス187からの１ビットのアサートされた出力とを同時に受信しない場合には、レジスタステージ133及び例外検出ステージ139内の命令に関連するｎビットレジスタ識別子が一致せず、又はレジスタステージ133又は例外検出ステージ139内の命令の少なくとも１つがディセーブルされている。その結果として、一行の比較ロジック211が、属性インタフェイス183からの少なくとも１つのアサートされたビットと、属性インタフェイス187からの１つのアサートされたビットとを受信しない場合には、ハザード検出ロジック196はデータハザードを検出せず、現時点でデータハザードが検出されないことを示す信号を送信する。
【００８０】
しかし、複数行の比較ロジック211のうちの１つが、少なくとも属性インタフェイス183からの１ビットのアサートされた出力と属性インタフェイス187からの１ビットのアサートされた出力とを同時に受信する場合には、レジスタステージ133及び例外検出ステージ139内の命令に関連するｎビットレジスタ識別子が一致する。このため、レジスタステージ133及び例外検出ステージ139内の両方の命令がイネーブルされ、更に、これら２つの命令間でデータハザードが存在するか否かを判定するための解析が実行される。ここで、レジスタステージ133及び例外検出ステージ139内の命令がデータハザードを生成しないタイプのものであることを上述の属性インタフェイス183,187からの出力が示さない限り、アサートされた出力を受信する比較ロジック211の行はデータハザードを検出する。
【００８１】
例えば、上記の典型的な実施形態では、ハザード検出回路196は、（a）属性インタフェイス187からの出力が例外検出ステージ139内のプロデューサがmmu命令であることを示し、かつ属性インタフェイス183からの出力が、レジスタステージ133内のコンシューマが非mmu命令であることを示す場合にのみ、又は（b）属性インタフェイス187からの出力が、例外検出ステージ139内のプロデューサが非mmu命令であることを示し、かつ属性インタフェイス183からの出力が、レジスタステージ133内のコンシューマがmmu命令であることを示す場合にのみ、データハザードを検出することが可能となる。
【００８２】
図１６は、上記の実施形態に関する一行分の比較ロジック211を実施するために用いることができる回路を示している。同図の接続部221は、属性インタフェイス183（図１２）内のインタフェイスロジック204の行に含まれるANDゲート209（図１４）の出力に接続され、接続部223は、属性インタフェイス183（図１２）内の上述のインタフェイスロジック204の行に含まれるANDゲート210（図１４）の出力に接続される。更に、図１６の接続部227は、属性インタフェイス187（図１２）内のインタフェイスロジック204の行に含まれるANDゲート210（図１４）の出力に接続され、接続部229は、上述の属性インタフェイス187（図１２）内のインタフェイスロジック204の行に含まれるANDゲート209（図１４）の出力に接続される。
【００８３】
このため、接続部231上の値は、（1）レジスタステージ133内のコンシューマのレジスタ識別子が例外検出ステージ139内のプロデューサのレジスタ識別子と一致し、（2）レジスタステージ133及び例外検出ステージ139内の命令が何れも述語イネーブルされ、（3）レジスタステージ133内のコンシューマが非mmu命令であり、及び（4）例外検出ステージ139内のプロデューサがmmu命令である場合にのみ、アサートされることになる。更に、接続部233上の値は、（1）レジスタステージ133内のコンシューマのレジスタ識別子が例外検出ステージ139内のプロデューサのレジスタ識別子と一致し、（2）レジスタステージ133及び例外検出ステージ139内の命令が何れも述語イネーブルされ、（3）レジスタステージ133内のコンシューマがmmu命令であり、及び（4）例外検出ステージ139内のプロデューサが非mmu命令である場合にのみ、アサートされることになる。
【００８４】
その結果として、ハザード検出回路196内の比較ロジック211の行は、接続部231又は233上の値がアサートされた際に、レジスタステージ133内のコンシューマと例外検出ステージ139内のプロデューサとの間のデータハザードを検出する。ここで、ORゲート235により出力される値は、比較ロジック211の行がデータハザードを検出するか否かを示すものとなる。ORゲート235の出力の値がアサートされると、比較ロジック211の行は、レジスタステージ133及び例外検出ステージ139内の２つの命令間にデータハザードが存在することを示す。逆に、ORゲート235の出力の値がデアサートされると、比較ロジック211の行は、レジスタステージ133及び例外検出ステージ139内の２つの命令間のデータハザードが該比較ロジック211の行によって検出されないことを示す。
【００８５】
図１７に示すように、ハザード検出回路196内の比較ロジック211の各行に対するORゲート235の出力は、ORゲート252により結合され、該ORゲート252の出力が、ハザード検出回路196がデータハザードを検出するか否かを示すようになる。ORゲート252の出力の値がアサートされると、ハザード検出回路196は、レジスタステージ133及び例外検出ステージ139内の２つの命令間にデータハザードが存在することを示す。逆に、ORゲート252の出力の値がデアサートされると、ハザード検出回路196は、レジスタステージ133及び例外検出ステージ139内の２つの命令間にデータハザードが存在しないことを示す。
【００８６】
図６に示すシステム100の場合と同様に、ハザードを検出するために、レジスタステージ133及び例外検出ステージ139以外のステージ内の命令のレジスタ識別子及び属性データが比較されることに留意されたい。ここで、デコーダ157,161、属性インタフェイス185,189、及びハザード検出ロジック194,198の構成は、それぞれ、デコーダ155,159、属性インタフェイス183,187、及びハザード検出ロジック196の構成と同様にすることが可能である。更に、比較ロジック144と同様に、比較ロジック191は、本発明に従って、１つのパイプライン132内の命令のレジスタ識別子及び属性データを、別のパイプライン132内の別の命令のレジスタ識別子及び属性データと比較して、データハザードを検出することが可能である。
【００８７】
更に、本発明の原理から逸脱することなく図１２に示す回路の変更形態を実施できることは当業者には明らかであろう。例えば、述語状態を示すビット又は命令タイプを示すビットといった１ビットの属性データのみを属性インタフェイス183,185,187,189へ伝送し、該ビットを用いてデータハザードを正確に検出することが可能である。ここで、比較回路191は、２つの命令のレジスタ識別子が一致し、かつ両方の命令がイネーブルされる場合にのみ、データハザードを検出するように構成することが可能であり、又は、２つの命令のレジスタ識別子及びタイプに基づきデータハザードを検出するように構成することが可能である。
【００８８】
更に、パイプライン132から属性インタフェイス183,185,187,189へ送信される属性データによって異なる命令タイプを示すことが可能であり、また異なる数のビット値を送信して、レジスタ識別子、述語状態、及び／又は属性情報を表すことが可能である。特に、上述の命令タイプに加えて又は上述以外の命令タイプによりデータハザードを規定することが可能であり、ステージ133,136,139及び／又は142のうちの何れかのステージの属性データが異なる命令タイプを示すことも可能である。属性インタフェイス183,185,187及び／又は189のそれぞれに送信される複数組の属性データは、１ビット又は２ビット以上の情報とすることが可能である。更に、属性インタフェイス183,185,187及び／又は189並びにハザード検出回路194,196及び／又は198の回路の構成は、特に、他のタイプの命令間のデータハザードを示すよう変更することを必要とする可能性がある。
【００８９】
更に、データハザードを生成し得る命令タイプは、各ステージ間で変化し得るものである。このため、属性インタフェイス183,185,187及び／又は189にそれぞれ伝送される属性データにより示される命令タイプは異なる可能性がある。例えば、書き込みステージ142内にある２つのタイプの命令が、レジスタステージ133内の特定のタイプの命令との間でデータハザードを生成する可能性がある。その結果として、属性インタフェイス189は３ビット（書き込みステージ142内の命令の述語状態を示す１ビットと、該命令が、レジスタステージ133内の命令とのデータハザードを規定する可能性のある２つのタイプの命令か否かを示す２ビット）の属性データを受信する可能性がある。次いで、該データが本発明の原理に従って解析されて、データハザードを検出することが可能となる。別のステージ133,136,139及び／又は142内の別のタイプの命令とのデータハザードを規定し得る各ステージ133,136,139及び／又は142内の命令のタイプを示す各133,136,139及び／又は142からの属性データのみを送信することにより、本発明を実施するための回路の規模を最小限にすることができる。
【００９０】
更に、必要に応じて、図２及び／又は図３に示す従来のシステム15に属性インタフェイス183,185,187及び／又は189を組み込んで、比較回路22及び／又は24が属性情報及びレジスタ識別子に基づきデータハザードを検出できるようにすることも可能である。
【００９１】
更に、本発明の原理を用いて、書き込み−書き込み（以下WAW(write-after-write)と称す）ハザードを検出することも可能である点に留意されたい。WAWハザードは、（1）先行する命令と後続の命令の何れも同一レジスタに書き込みを行う場合であって、（2）先行する命令が実際に該レジスタに書き込みを行う前に存在するものである。データ従属性ハザードを検出するのと同様に、WAWハザードは、２つの書き込み命令が同一のレジスタ識別子を含むか否かを判定することにより検出することができる。このため、上述の回路を用いて、２つの書き込み命令が同一のレジスタを用いる際に検出することができる。次いで、追加の回路を用いて、先行する命令からのデータが該レジスタに書き込まれたか否かを判定することが可能である。次いで上述の情報を用いてWAWハザードが存在するか否かを判定することが可能である。
属性データの融合
システム100の効率を最大限にし、かつシステム100の実施に必要となる配線数を低減させるために、属性インタフェイス183,185,187及び／又は189により生成されるデータを、図９のデコーダ155,157,159及び／又は161により生成されるデータと同様に、融合させることが可能である。これらの原理を例示するために、図１８を参照する。同図は、属性データを含むデータであってデータハザードの検出に利用されるデータを融合するために用いることが可能な典型的な回路を示している。
【００９２】
例示のため、1）コンシューマがプロデューサと同一レジスタ識別子を有し、2）コンシューマ及びプロデューサの両方が述語イネーブルされ、及び 3）コンシューマ及びプロデューサのタイプが該２つの命令間にデータハザードが存在し得るものである場合にのみ、レジスタステージ133内のコンシューマとステージ136,139又は142の１つのステージ内のプロデューサとの間にデータハザードが存在し得るものと仮定する。また例示のため、（a）プロデューサが実行ステージ136、例外検出ステージ139、又は書き込みステージ142内にあるときに、コンシューマが非mmu命令であり、及びプロデューサがmmu命令であり、（b）プロデューサが実行ステージ136、例外検出ステージ139、又は書き込みステージ142内にあるときに、コンシューマがmmu命令であり、及びプロデューサが非mmu命令であり、又は（c）プロデューサが実行ステージ136内にあるときに、コンシューマが非mmu命令であり、及びプロデューサが算術演算装置（ALU）命令である場合にのみ、上記条件3）が満たされるものと仮定する。しかし、以下で詳細に説明するように、他の命令タイプ及び／又は他の命令タイプの組み合わせもまた上記条件3）を満たすことが可能であり、この場合には本発明の上記形態を実施するために用いられる回路を変更する必要がある、ということが当業者には明らかであろう。
【００９３】
上記仮定に鑑み、データハザードを検出するために、属性インタフェイス212は、図１２の属性インタフェイス183と同一に構成され、このため、図１３に示すようにｍ行のインタフェイスロジック204を備えたものとなる。属性インタフェイス212内のインタフェイスロジック204の各行は、レジスタ37の異なる１つに対応し、２ビット出力を生成する。レジスタステージ133内のコンシューマが述語イネーブルされない場合、又はコンシューマのレジスタ識別子がインタフェイスロジック204の行に対応するレジスタ37を識別しない場合には、インタフェイスロジック204の行により出力されるビットはアサートされない。更に、レジスタステージ133内のコンシューマがmmu命令である場合にのみ、インタフェイスロジック204のその行により出力されるビットの１つはアサートされ、そのコンシューマが非mmu命令である場合にのみ、他のビットがアサートされる。その結果として、属性インタフェイス212からハザード検出回路196に入力される値は、図１２の属性インタフェイス183により生成されることになる値と同一値をとることになる。
【００９４】
更に、属性インタフェイス216,218の構成は、図１２の属性インタフェイス187と同一である。このため、属性インタフェイス212の出力と同様に、属性インタフェイス216,218はそれぞれ、図１３に示すようにｍ行のインタフェイスロジック204を備える。属性インタフェイス216のインタフェイスロジック204の各行は、レジスタ37の異なる１つに対応し、２ビット出力を生成する。更に、属性インタフェイス218のインタフェイスロジック204の各行は、レジスタ37の異なる１つに対応し、２ビット出力を生成する。例外検出ステージ139内のプロデューサが述語イネーブルされない場合、又はプロデューサのレジスタ識別子がインタフェイスロジック204の行に対応するレジスタ37を識別しない場合には、属性インタフェイス216のインタフェイスロジック204の行により出力されるビットはアサートされない。同様に、書き込みステージ142内のプロデューサが述語イネーブルされない場合、又は該プロデューサのレジスタ識別子がインタフェイスロジック204の行に対応するレジスタ37を識別しない場合には、属性インタフェイス218内のインタフェイスロジック204の行により出力されるビットはアサートされない。
【００９５】
更に、例外検出ステージ139内のプロデューサがmmu命令である場合にのみ、属性インタフェイス216内のインタフェイスロジック204の行により出力されるビットの１つがアサートされ、該プロデューサが非mmu命令である場合にのみ、他のビットがアサートされる。更に、書き込みステージ142内のプロデューサがmmu命令である場合にのみ、属性インタフェイス218内のインタフェイスロジック204の行により出力されるビットの１つがアサートされ、該プロデューサが非mmu命令である場合にのみ、他のビットがアサートされる。その結果として、属性インタフェイス216,218から融合ロジック223に入力される値は、ステージ139,142内の命令が、（1）特定のレジスタ37を識別するか否か、（2）述語イネーブルされるか否か、及び（3）mmu命令又は非mmu命令であるか、を示すものとなる。
【００９６】
属性インタフェイス214は、属性インタフェイス212,216,218とは異なり、各ラッチ147から３ビットの属性データを受信する。これらのビットのうち２ビットは、属性インタフェイス212,216,218により受信される属性ビットと同様に、実行ステージ136内の命令が述語イネーブルされるか否か、及び実行ステージ136内の命令がmmu命令であるか否かを示すものとなる。ここで、実行ステージ136内の命令が述語イネーブルされると、そのビットの１つがアサートされ、実行ステージ136内の命令がmmu命令であると、他のビットがアサートされる。属性インタフェイス214により受信される第３のビットは、そのアサート時に、実行ステージ136内の命令がALU命令であることを示すものとなる。
【００９７】
図１９に示すように、属性インタフェイス214は、ｍ行のインタフェイスロジック224を備える。該インタフェイスロジック224の各行は、レジスタ37の異なる１つに対応し、３ビット出力を生成する。実行ステージ136内のプロデューサが述語イネーブルされない場合、又は該プロデューサのレジスタ識別子がインタフェイスロジック224の行に対応するレジスタ37を識別しない場合には、インタフェイスロジック224の行により出力されるビットはアサートされない。更に、実行ステージ136内のプロデューサがmmu命令である場合にのみ、インタフェイスロジック224の行により出力されるビットの１つがアサートされ、該プロデューサが非mmu命令である場合にのみ、該ビットのうちの別のビットがアサートされる。該プロデューサがALU命令である場合にのみ、最後のビットがアサートされる。その結果として、属性インタフェイス214から融合ロジック223に入力される値は、実行ステージ136内の命令が、（1）特定のレジスタ37を識別するか否か、（2）述語でイネーブルされるか否か、（3）mmu命令、非mmu命令、又はALU命令であるか、を示すものとなる。
【００９８】
図２０は、一行のインタフェイスロジック224を実施するために用いることができる典型的な回路を示す。ここで、各ANDゲート231がデコーダ157から１ビットを受信し、接続部232を介してラッチ147から属性データのビットの１つを受信する。デコーダ157からのビットは、インタフェイスロジック224の行が、デコーダ157により受信されデコードされたレジスタ識別子により識別されるレジスタ37に対応する場合にアサートされる。更に、接続部232を介して、各ANDゲート231により受信された属性データの上述のビットは、実行ステージ136内の命令が述語イネーブルされる場合にアサートされる。またANDゲート231の１つは、接続部233を介して、実行ステージ136内の命令がmmu命令であるか否かを示す属性データのビットを受信する。また別のANDゲート231は、上述の属性データのビットを反転させたものを受信し、残りのANDゲート231は、接続部234を介して、実行ステージ136内の命令がALU命令であるか否かを示す属性データのビットを受信する。
【００９９】
図２１に示すように、属性インタフェイス214,216,218の出力を受信する融合ロジック223は、複数のレジスタ37にそれぞれ対応するｍ行の融合ロジック237を備えている。該融合ロジック237の各行は、属性インタフェイス214内の一行のインタフェイスロジック224、属性インタフェイス216内の一行のインタフェイスロジック204、及び属性インタフェイス218内の一行のインタフェイスロジック204に接続され、そこからの出力を受信する。更に、融合ロジック237の同一行に接続されるインタフェイスロジック204,224の行は、融合ロジック237の行と同一のレジスタに対応する。このため、２つの属性インタフェイス214,216又は218に関連して該属性インタフェイスに接続されるステージ136,139又は142内の命令が、一致するレジスタ識別子を有し、及び何れも述語イネーブルされる場合にのみ、一行のインタフェイスロジック237が、２つの属性インタフェイス214,216又は218からのアサートされた出力を受信することが可能となる。
【０１００】
図２２に示すように、融合ロジック237の各行は、融合ロジック223により受信されるビット値を結合するORゲート241,243といったORゲートを備えている。ORゲート241は、属性インタフェイス214,216,218からの各ビットを受信し、該ビットがアサートされるとき、レジスタステージ133内の命令が第１のタイプである場合にデータハザードが存在することを示す。ORゲート243は、属性インタフェイス214,216,218からの各ビットを受信し、該ビットがアサートされるとき、レジスタステージ133内の命令が第２のタイプである場合にデータハザードが存在することを示す。
【０１０１】
例えば、上述のように、ステージ136,139又は142のうちの何れかのステージ内のmmuプロデューサは、レジスタステージ133内の非mmuコンシューマとのデータハザードを規定することが可能である。このため、図２２に示す実施形態では、ORゲート241は、ステージ136,139又は142内の命令がmmu命令であるか否かを示す、属性インタフェイス214,216及び218内のインタフェイスロジック204,224の対応する行（即ち、図２２に示す融合ロジック237の行に接続される属性インタフェイス214,216,218内のインタフェイスロジック204,224の行）から各ビット値を受信することが好ましい。その結果として、ORゲート241の出力は、ステージ136,139又は142内のプロデューサの１つが、（1）融合ロジック237の行に対応するレジスタ37を識別するレジスタ識別子と関連し、（2）述語イネーブルされ、及び（3）mmu命令である場合に、アサートされる。
【０１０２】
更に、上記のように、ステージ136,139又は142のうちの何れかのステージ内の非mmuプロデューサ、又は実行ステージ136内のALUプロデューサは、レジスタステージ133内の非mmuコンシューマとのデータハザードを規定することが可能である。このため、図２２に示す実施形態では、ORゲート243は、ステージ136,139又は142内の命令がmmu命令であるか否かを示す、属性インタフェイス214,216,218内のインタフェイスロジック204,224の対応する行（即ち、図22に示す融合ロジック237の行に接続される属性インタフェイス214,216,218内のインタフェイスロジック204,224の行）から各ビット値を受信し、実行ステージ136内の命令がALU命令であるか否かを示す、属性インタフェイス214内のインタフェイスロジック224の対応する行からのビットを受信することが好ましい。その結果として、ORゲート243の出力は、（1）ステージ136,139又は142内の命令の１つが、（a）融合ロジック237の行に対応するレジスタ37を識別するレジスタ識別子と関連し、（b）述語イネーブルされ、及び（c）非mmu命令である場合にアサートされ、又は、（2）実行ステージ136内の命令が、（a）融合ロジック237の行に対応するレジスタ37を識別するレジスタ識別子と関連し、（b）述語イネーブルされ、及び（c）ALU命令である場合にアサートされる。
【０１０３】
このため、図１５及び図１８により示されるハザード検出回路196を用いて、属性インタフェイス212及び融合回路223の出力を受信し、及び該出力に基づいてデータハザードを検出することが可能である。ここで、ハザード検出回路196は、複数のレジスタ37にそれぞれ対応するｍ行の比較ロジック211を備えている。比較ロジック211の各行は、比較ロジック211の行と同一のレジスタ37に対応する属性インタフェイス212内のインタフェイスロジック204の行からの出力を受信し、比較ロジック211の行と同一のレジスタ37に対応する融合ロジック237の行からの出力を受信する。このため、単一行の比較ロジック211は、レジスタステージ133内の述語イネーブルされた命令のレジスタ識別子が、ステージ136,139又は142のうちの１つのステージ内の述語イネーブルされた命令のレジスタ識別子と一致する場合にのみ、属性インタフェイス212及び融合回路223の両方からのアサートされた出力を受信することができる。
【０１０４】
更に、接続部211（図１６）上の信号は、レジスタステージ133内のコンシューマが、（1）比較ロジック211の行に対応するレジスタ37を識別するレジスタ識別子を有し、（2）述語イネーブルされ、及び（3）mmu命令である場合にのみ、アサートされることになる。接続部227上の信号は、ORゲート243（図２２）に接続されており、ステージ136,139又は142のうちの１つのステージ内のプロデューサが、（1）比較ロジック211の行に対応するレジスタ37を識別するレジスタ識別子を有し、（2）述語イネーブルされ、及び（3）非mmu命令又はALU命令である場合にのみ、アサートされることになる。
【０１０５】
接続部223（図１６）上の信号は、レジスタステージ133内のコンシューマが、（1）比較ロジック211の行に対応するレジスタ37を識別するレジスタ識別子を有し、（2）述語イネーブルされ、及び（3）非mmu命令である場合にのみ、アサートされることになる。更に、接続部229上の信号は、ORゲート241（図２２）に接続されており、ステージ136,139又は142のプロデューサが、（1）比較ロジック211の行に対応するレジスタ37を識別するレジスタ識別子を有し、（2）述語イネーブルされ、及び（3）mmu命令である場合にのみ、アサートされることになる。したがって、接続部231,233上の信号の一方は、システム100により処理されている命令のうちの２つの命令間にデータハザードが存在する場合にのみ、アサートされることになる。これらの２つの命令の一方は、上述の比較ロジック211の行に対応するレジスタ37を識別するレジスタ識別子を有するレジスタステージ133内のコンシューマである。このコンシューマは、データ誤りを防ぐために、停止されることが必要な場合もある。
【０１０６】
比較ロジック144及び／又は191にデータを入力する前に、デコーダ155,157,159及び／又は161（図９）により、並びに／又は属性インタフェイス212,214,216及び／又は218（図１８）により生成されるデータを融合することにより、データハザードを検出するための比較ロジック144及び／又は191による比較回数をより低減させることができる。このため、多数のパイプライン132及び／又はレジスタ識別子に対してデータハザードを検出するために必要とされる回路及びその複雑さを著しく低減させることができる。
【０１０７】
更に、データハザードを検出する回路及びその複雑さを低減させるために、融合回路177,179及び／又は223（図９及び図１８）を、例えば、「ワイヤードOR」構造といった「ワイドOR(wide OR)」構造により実施することが可能である。「ワイドOR」構造は、最小限の回路及びその複雑性を介して多数の入力信号のOR演算を行って一層少数の出力信号を生成する周知の構造である。このため、「ワイドOR」構造を用いて、デコーダ155,157,159及び／又は161（図９）により、並びに／又は属性インタフェイス212,214,216及び／又は218（図１８）により生成されるデータを融合することにより、処理システム100に関連するデータハザードを検出するために必要とされる回路の規模を最小限にすることができる。
【０１０８】
図１８は、同一のパイプライン132の命令間でレジスタ識別子と属性データとを比較する回路のみを示したものであることに留意されたい。しかし、図９に示す実施形態と同様に、図１８の融合ロジック223及びハザード検出回路196に送信されるデータは、本発明の原理から逸脱することなく、パイプライン132の何れかから送信することが可能である。実際に、各パイプライン132が融合ロジック223及び／又はハザード検出回路196に同様にデータを送信して、システム100に関連する各データハザードをハザード検出回路196により検出できるようにすることが好ましい。しかし、ハザード検出回路196及び／又は融合ロジック223は、本書で説明したそれらの実施形態に変更を加えて、異なるパイプライン132から該融合ロジック223及び／又はハザード検出回路196へデータを送信するために必要となる付加的な接続部に適応させる必要がある場合もある。更に、融合ロジックは、図９の融合ロジック177と同様に、異なるパイプライン132のレジスタステージ133から送信されるデータを融合するよう実施する必要がある場合もある。
【０１０９】
本発明の上記の実施形態、特に何れかの「好ましい」実施形態は、本発明の単なる例示にすぎず、本発明の原理を明確に理解するために説明したものにすぎない、ということを強調しておく必要がある。本発明の思想及び原理から実質的に逸脱することなく、本発明の上記実施形態に対し、多くの変形及び修正を加えることが可能である。かかる全ての変形及び修正は、本開示及び本発明の範囲内にあって特許請求の範囲によって保護されるものとなることが意図されている。
【０１１０】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．コンピュータプログラム(107)の命令を実行するシステム(100)であって、
前記コンピュータプログラム(107)の前記命令を処理するよう構成された複数のパイプライン(132)と、
該パイプライン(132)に接続された融合回路(177,179,223)であって、前記パイプライン(132)から複数のレジスタ識別子を同時に受信して該複数のレジスタ識別子を単一のレジスタ識別子へと結合するよう構成されており、該単一のレジスタ識別子が、複数のビットを有すると共に、該融合回路(177,179,223)により結合された前記複数のレジスタ識別子のうちの少なくとも１つにより識別される各レジスタを識別するものであり、該融合回路(177,179,223)が、受信した前記複数のレジスタ識別子のうちの１つの少なくとも１つのビットを、受信した前記複数のレジスタ識別子のうちの別の１つの別のビットと結合して、前記単一のレジスタ識別子の前記複数のビットのうちの１つを生成する、融合回路(177,179,223)と、
前記融合回路(177,179,223)に接続されたハザード検出回路(164,196)であって、前記融合回路(177,179,223)から前記単一のレジスタ識別子を受信して該単一のレジスタ識別子を該ハザード検出回路が受信した他の情報と比較するよう構成され、更に、前記単一のレジスタ識別子と該ハザード検出回路が受信した前記他の情報との比較に基づき特定のタイプのデータハザードが存在するか否かを検出するよう構成されている、ハザード検出回路(164,196)と
を備えている、コンピュータプログラム(107)の命令を実行するシステム(100)。
２．前記パイプライン(132)に接続された複数のデコーダ(155,157,159,161)を更に備えており、該複数のデコーダ(155,157,159,161)の各々が、前記複数のレジスタ識別子のうちの１つをエンコードされた形式でそれぞれ受信して該受信した前記１つのエンコードされたレジスタ識別子をデコードするよう構成されており、前記融合回路(177,179,223)が、前記デコーダ(155,157,159,161)を介して前記パイプライン(132)に接続されている、前項１に記載のシステム。
３．前記複数のパイプライン(132)のうちの１つに接続され、前記複数のレジスタ識別子のうちの１つを受信するよう構成された、属性インタフェイス(212,214,216,218)であって、属性データを受信すると共に該属性データに基づいて前記少なくとも１つのビットの値を制御するよう構成され、更に前記１つのレジスタ識別子を前記融合回路(177,179,223)に送信するよう構成されている、属性インタフェイス(212,214,216,218)を更に備えている、前項１に記載のシステム。
４．前記属性データが、複数の前記命令のうちの１つの命令のタイプを示すものである、前項３に記載のシステム。
５．前記属性データが、複数の前記命令のうちの１つの命令の述語状態を示すものである、前項３に記載のシステム。
６．コンピュータシステム(105)においてデータハザードを検出するための方法であって、
コンピュータプログラム(107)の複数の命令を処理し、
該複数の命令のうちの１つと関連する第１のレジスタ識別子を受信し、該第１のレジスタ識別子が、複数のレジスタ(37)にそれぞれ対応する複数のビットを有しており、前記レジスタ(37)の各々が、前記第１のレジスタ識別子の前記複数のビットのうちの少なくとも１つに対応するようになっており、
前記命令のうちの別の命令と関連する第２のレジスタ識別子を受信し、該第２のレジスタ識別子が、前記複数のレジスタ(37)にそれぞれ対応する複数のビットを有しており、前記レジスタ(37)の各々が、前記第１のレジスタ識別子の前記複数のビットのうちの少なくとも１つに対応するようになっており、
前記第１のレジスタ識別子において、該第１のレジスタ識別子により識別される前記複数のレジスタ(37)のうちの１つに対応する前記複数のビットのうちの１つをアサートし、
前記第１のレジスタ識別子により識別される前記１つのレジスタ(37)以外の何れかの前記レジスタ(37)に対応する前記第１のレジスタ識別子の前記各ビットをデアサートし、
前記第２のレジスタ識別子において、該第２のレジスタ識別子により識別される前記複数のレジスタ(37)のうちの１つに対応する前記複数のビットのうちの１つをアサートし、
前記第２のレジスタ識別子により識別される前記１つのレジスタ(37)以外の何れかの前記レジスタ(37)に対応する前記第２のレジスタ識別子の前記各ビットをデアサートし、
前記第１のレジスタ識別子と前記第２のレジスタ識別子とを結合し、
該結合ステップに応じて第３のレジスタ識別子を生成し、該第３のレジスタ識別子が、前記第１及び前記第２のレジスタ識別子により識別される前記レジスタ(37)を識別するものであり、
前記第３のレジスタ識別子を別のレジスタ識別子と比較し、
該比較ステップに基づきデータハザードを検出する、
という各ステップを有する、コンピュータシステム(105)においてデータハザードを検出するための方法。
７．前記第３のレジスタ識別子の生成ステップが、
前記第１及び前記第２のレジスタ識別子の一方におけるアサートされたビットに基づいて前記第３のレジスタ識別子における複数の前記ビットのうちの１つをアサートする、
というステップを含む、前項６に記載の方法。
８．前記１つの命令のタイプを示す属性データを受信し、
該属性データに基づいて前記第１のレジスタ識別子内の前記１つのビットの値を制御する、
という各ステップを更に有する、前項６に記載の方法。
９．前記１つの命令の述語状態を示す属性データを受信し、
該属性データに基づいて前記第１のレジスタ識別子における前記１つのビットの値を制御する、
という各ステップを更に有する、前項６に記載の方法。
【図面の簡単な説明】
【図１】従来技術による処理システムを示すブロック図である。
【図２】図１に示すパイプラインを詳細に示すブロック図である。
【図３】図２に示すパイプラインの別の実施形態を示すブロック図である。
【図４】本発明の原理に従う処理システムを用いたコンピュータシステムを示すブロック図である。
【図５】図４に示す処理システムを示すブロック図である。
【図６】図５に示すパイプライン及び比較ロジックを詳細に示すブロック図である。
【図７】図６に示すANDロジックを詳細に示すブロック図である。
【図８】図７に示すANDロジックの別の実施形態を示すブロック図である。
【図９】図６のパイプラインと比較ロジックとの間で通信されるデータを融合するために用いることができる融合回路を示すブロック図である。
【図１０】図９に示す融合回路の一部を詳細に示すブロック図である。
【図１１】図９に示す融合回路の別の部分を詳細に示すブロック図である。
【図１２】属性データを用いてデータハザードを検出する、本発明によるパイプライン及び比較ロジックの別の実施形態を示すブロック図である。
【図１３】図１２に示すデコーダ及び属性インタフェイスを詳細に示すブロック図である。
【図１４】図１３に示すインタフェイスロジックのうちの一行分を詳細に示すブロック図である。
【図１５】図１２に示すハザード検出回路を詳細に示すブロック図である。
【図１６】図１５に示す比較ロジックのうちの一行分を詳細に示すブロック図である。
【図１７】図１５に示すハザード検出回路における比較ロジックの各行の出力を結合するために用いられるORゲートを示すブロック図である。
【図１８】図１２のパイプラインと比較ロジックとの間で通信されるデータを融合するために用いることができる融合回路を示すブロック図である。
【図１９】図１８に示す属性インタフェイスを詳細に示すブロック図である。
【図２０】図１９に示すインタフェイスロジックのうちの一行分を詳細に示すブロック図である。
【図２１】図１８に示す融合回路を詳細に示すブロック図である。
【図２２】図２１に示す融合回路のうちの一行分を詳細に示すブロック図である。
【符号の説明】
37  レジスタ
100                 システム
107                 コンピュータプログラム
132                 パイプライン
155,157,159,161     デコーダ
164,196             ハザード検出回路
177,179,223         融合回路
212,214,216,218     属性インタフェイス
【図１】
0003704046.tif 000002
【図２】
0003704046.tif 000003
【図３】
0003704046.tif 000004
【図４】
0003704046.tif 000005
【図５】
0003704046.tif 000006
【図６】
0003704046.tif 000007
【図７】
0003704046.tif 000008
【図８】
0003704046.tif 000009
【図９】
0003704046.tif 000010
【図１０】
0003704046.tif 000011
【図１１】
0003704046.tif 000012
【図１２】
0003704046.tif 000013
【図１３】
0003704046.tif 000014
【図１４】
0003704046.tif 000015
【図１５】
0003704046.tif 000016
【図１６】
0003704046.tif 000017
【図１７】
0003704046.tif 000018
【図１８】
0003704046.tif 000019
【図１９】
0003704046.tif 000020
【図２０】
0003704046.tif 000021
【図２１】
0003704046.tif 000022
【図２２】
0003704046.tif 000023