(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムの命令を処理するコンピュータ・システムであって、
複数のレジスタと、
該レジスタにそれぞれ対応する複数の接続と、
前記命令を処理し実行するよう構成された少なくとも１つのパイプラインと、
前記複数の接続と前記少なくとも１つのパイプラインとに結合され、前記複数のレジスタにそれぞれ対応する複数のビットを有し、前記複数のレジスタの1つに対する書込み保留状態が存在するか否かを示す、前記ビットの各々を、前記複数の接続の異なるものを介して送信するスコアボードと、
前記命令の少なくとも1つに関連した、少なくとも1つの符号化レジスタ識別子を、前記複数のレジスタにそれぞれ対応する複数のビットを有し、前記複数のレジスタの少なくとも1つを識別する復号化レジスタ識別子へ復号化するように構成された復号回路と、
前記複数の接続の各々に結合され、前記送信されたビットの各々を、前記復号化レジスタ識別子のビットのそれぞれと比較し、前記送信されたビットの、前記復号化レジスタ識別子のビットとの比較に基づいてデータハザードを検出するよう構成された、ハザード検出回路と、を含み、
前記復号回路は、前記少なくとも１つのパイプラインから前記符号化レジスタ識別子を受け取り、復号化レジスタ識別子へ復号化するように構成され、さらに、復号化レジスタ識別子をハザード検出回路とスコアボードへ送信するように構成されたデコーダを含むコンピュータ・システム。
【請求項２】
コンピュータプログラムの命令を処理するシステムであって、
少なくとも1つのパイプラインと、
複数のレジスタと、
該レジスタの異なるものに各々が対応する複数の接続と、
複数のビットを保持し、該ビットを介して複数のレジスタのうちのどれが書込み保留状態に関連しているかを示す手段であって、複数のビットを複数の接続を介して送信するように構成され、複数の接続の各々により送信される各々のビットは、各々の接続に対応するレジスタが、書込み保留状態に関連しているかを示す手段と、
前記複数のビットと、前記少なくとも1つのパイプラインに現在存在する少なくとも1つの命令に関連する、復号化レジスタ識別子との比較を実行するように構成され、さらに、該比較に基づいて少なくとも1つのデータハザードを検出するよう構成された、ハザード検出回路と、
前記少なくとも１つのパイプラインから、前記少なくとも1つの命令に関連した符号化レジスタ識別子を受け取り、該符号化レジスタ識別子を、複数のレジスタの少なくとも1つを識別する、復号化レジスタ識別子へ復号化する手段であって、復号化レジスタ識別子を前記ハザード検出回路と前記保持手段へ送信するように構成された手段とを含むシステム。
【請求項３】
コンピュータプログラムの命令を処理する方法であって、
命令を少なくとも1つのパイプラインを介して処理するステップと、
複数のレジスタを提供するステップと、
各々が該レジスタのうちの１つにそれぞれ対応する複数のビットを、スコアボード内に保持するステップと、
各々が該レジスタのうちの１つにそれぞれ対応する複数の接続を提供するステップと、
前記ビットを介して、該レジスタのいずれが書込み保留状態に関連しているかを示すステップと、
前記複数の接続の異なるものを介して前記ビットの各々を、スコアボードから送信するステップと、
前記命令の少なくとも1つに関連した、少なくとも1つのレジスタ識別子を、前記複数のレジスタにそれぞれ対応する複数のビットを有し、前記複数のレジスタの少なくとも1つを識別する復号化レジスタ識別子へ、デコーダを介して復号化するステップと
前記送信されたビットの各々を、前記復号化レジスタ識別子のビットのそれぞれと比較するステップと、
該比較に基づいてデータハザードを検出するステップと、
前記復号化レジスタ識別子に基づいて、前記スコアボードビットのうちの1つを変更するステップと、
前記少なくとも1つのレジスタ識別子を、前記少なくとも1つのパイプラインから前記デコーダへ送信するステップと、
前記復号化レジスタ識別子を、前記デコーダから前記スコアボードへ送信するステップと、を含む方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理技術に関し、特に、１つの命令の実行によって生成されるデータが、他の命令の実行において使用可能であるときを効率的に示すことで、その１つの命令に関連するデータハザードを検出できるようにする処理システムおよび方法に関する。本発明は、特に、１つの命令のデータを生成するレイテンシが比較的長い場合に有利である。
【０００２】
【従来の技術】
多くのプロセッサの性能を向上させるために、パイプライン処理が開発されている。パイプライン処理では、プロセッサは、複数の命令を同時に処理することができる少なくとも１つのパイプラインを備えている。従って、パイプラインにおける１つの命令の実行が、そのパイプラインにおける先行する命令の実行の結果が使用可能になる前に開始する場合があり、それによって、いくつかのデータハザードが生成される。
【０００３】
例えば、第１の命令が、実行時に、データを生成し特定のレジスタにそのデータを書込み、第２の命令が、実行時に、第１の命令によって生成されたデータを利用する場合がある。第１の命令によって生成されたデータが使用可能になる前に第２の命令を実行する場合、データエラーが発生する。従って、第１の命令によって生成されるデータが使用可能になるまで、２つの命令間にはデータハザードが存在する。このタイプのデータハザードは一般に「リードアフタライト」（ＲＡＷ）データハザードと呼ばれる。
【０００４】
他の状況において、第２の命令が、実行時に、第２の命令の前に実行を開始した第１の命令と同じレジスタにデータを書込む場合がある。第２の命令が第１の命令の前にそのデータを生成しレジスタに書込む場合、データエラーの可能性がある。なぜなら、両命令が完全に実行され処理された後、レジスタは第２の命令ではなく第１の命令のデータを有することになるためである。従って、第１の命令によって生成されるデータがレジスタに書込まれるまで、２つの命令間にはデータハザードが存在する。このタイプのデータハザードは一般に「ライトアフタライト」（ＷＡＷ）データハザードと呼ばれる。
【０００５】
上述したデータハザードおよび他のタイプのデータハザードからのエラーを防止するために、ほとんどのスーパスカラプロセッサは、プロセッサのパイプラインによって処理されている命令に関連するデータハザードを検出するハザード検出回路を有する。ハザード検出回路は、通常、使用可能なデータをまだ生成していない前の命令と同じレジスタを後の命令が利用する（例えば、書込むまたは読出す）時を検出することによって、上述のデータハザードを検出する。
【０００６】
しかしながら、第１の命令によって生成されるデータは、第１の命令を処理しているパイプラインによって第１の命令が完全に退避（retire）される後まで（例えば、第1の命令がパイプラインを完全に出る後まで）、他の命令による使用またはプロセッサの特定のレジスタへの書込みについて、使用可能とならない場合がある。例えば、ロード命令は、実行時に、プロセッサの外部のメモリからデータを検索する要求を生成する場合がある。上述の要求に応答してデータをプロセッサに返すまでに、メモリ階層のどこにデータが存在しているかによって数クロックサイクルで済む場合から数千クロックサイクルかかる場合まである。従って、プロセッサは、第1の命令がプロセッサのパイプラインを出るかまたは他の方法で退避される後まで、第1の命令によって生成されるデータを受取ることはできない。言い換えれば、第１の命令によって生成されるデータは、第1の命令がプロセッサのパイプラインを出るかまたは他の方法で退避される後まで、他の命令の実行について使用可能とならない。命令がパイプラインによって退避された後に使用可能なデータを生成する、上述したロード命令等の命令を、本明細書では「長レイテンシ命令」と呼称する。
【０００７】
長レイテンシ命令に対するデータハザードを検出するプロセスを容易にするために、プロセッサには通常、一般に「スコアボード」と呼ばれるレジスタファイルが備えられている。これは、プロデューサ（すなわち、データを生成する命令）の先行する実行に応答して生成されたデータを、プロセッサがまだ受取っていない時を示すものである。言い換えれば、スコアボードは、汎用レジスタへの書込み保留状態（pending write）がある時を示す。本明細書で使用されるように、「書込み保留状態」という用語は、前に実行された命令によって生成されたデータが、ある汎用レジスタへ書込まれる予定であるけれども、まだその汎用レジスタに書込まれてはいない状況を表すために使用される。本技術分野において周知のように、「汎用レジスタ」は、書込み命令の実行によって書込まれ、および／または読出し命令の実行によって読出される１組のレジスタのうちの１つである。
【０００８】
スコアボードは、各レジスタが１ビット値を含む複数のレジスタを有している。スコアボードレジスタとそこに含まれるビット値はそれぞれ、書込み命令の実行によって生成されるデータを受取るプロセッサの汎用レジスタの１つに対応している。書込み命令によって生成されたデータがそのデータを受取るべき汎用レジスタに書込まれる前に、書込み命令が退避された場合、その汎用レジスタに対応するスコアボードレジスタにおけるビット値はアサート（assert）される。さらに、書込み命令によって生成されたデータが最終的に汎用レジスタに書込まれると、上述したビット値はデアサート（deassert）される。従って、１つの汎用レジスタに対応するスコアボードレジスタのビット値を分析することによって、その汎用レジスタに対する書込み保留状態があるか否かを判断することができる。
【０００９】
スコアボードにおける各アサートされたビット値は、アサートされたビット値に対応する汎用レジスタへの書込み保留状態があることを示す。従って、ＲＡＷまたはＷＡＷデータハザードからのエラーを防止するために、少なくとも書込み保留状態が終了するまで（すなわち、汎用レジスタに書込まれるよう予定されたデータがその汎用レジスタに実際に書込まれるまで）、プロセッサによって処理されているいかなる命令も、上述した汎用レジスタに対し書込みまたは読出しを行わないようにしなければいけない。さらに、スコアボードにおける各デアサートされたビット値は、現時点で、デアサートされたビット値に対応する汎用レジスタへの書込み保留状態が無いことを示す。従って、プロセッサによって処理されている命令は、ＲＡＷまたはＷＡＷデータハザードからのいかなるエラーも生成せずに、上述の汎用レジスタに対する読出しまたは書込みを行うことができる。
【００１０】
スコアボードを分析すること等によりＲＡＷまたはＷＡＷデータハザードが検出された場合、プロセッサによって処理されている１つまたは複数の命令をストールすることによって、ＲＡＷまたはＷＡＷデータハザードからのエラーを防止することが多い。1999年9月7日に出願された、「Superscalar Processing System and Method for Efficiently Performing In Order Processing of Instructions」と題された出願番号第09/390,199号の米国特許出願は、データハザードを防止するために命令をストールするプロセスをより詳細に述べている。命令がストールされると、そのストールを引き起こしているデータハザードが終了するまで、プロセッサは一時的に命令の更なる処理を行わないようにする。
【００１１】
【発明が解決しようとする課題】
しかしながら、一般にスコアボードに対する書込みおよび読出しに使用する配線および他の回路は相対的に複雑であり、プロセッサ内で相対的に大量の表面領域を利用することが多々ある。プロセッサのコストを最小限にするために、データハザードを検出するのに必要な回路を最小限にすることが望ましい。特に、スコアボードに対する書込みおよび読出しに必要な回路を最小限にしかつ簡略化することが望ましい。
【００１２】
このように、本業界において、データハザードを検出するためにスコアボードを利用する効率的なシステムおよび方法に対する未解決の要請が存在する。
【００１３】
【課題を解決するための手段】
本発明は、上述した従来技術の欠点および欠陥を克服する。一般に、本発明は、コンピュータプログラムの命令を実行し、命令の実行に使用される汎用レジスタへの書込み保留状態の存在を効率的に示す、システムおよび方法を提供する。
【００１４】
構造的に、本発明の処理システムは、複数の汎用レジスタと、複数の接続と、パイプラインと、スコアボードと、ハザード検出回路と、を利用する。複数の接続は、それぞれ汎用レジスタに対応する。スコアボードは、各ビットが対応するレジスタへの書込み保留状態があるか否かを示す、複数のビットを保持する。スコアボードは、１つの汎用レジスタに対する書込み保留状態が存在するか否かを示す１つのビットを、その１つのビットの値に基づいて、およびその１つのビットを送信するためにいずれの接続が使用されるかに基づいて、ハザード検出回路に送信する。そして、ハザード検出回路は、その1つのビットに基づいてデータハザードが存在するか否かを検出する。
【００１５】
本発明の別の特徴によると、汎用レジスタのうちの１つに書込まれているデータに関連するレジスタ識別子を復号化するために、デコーダが使用される。デコーダは、スコアボードとハザード検出回路との両方にレジスタ識別子を送信する。ハザード検出回路は、レジスタ識別子を用いてデータハザードを検出することができ、スコアボードは、レジスタ識別子を用いてそのスコアボードのビットのうちの１つを変更することができる。
【００１６】
また、本発明は、コンピュータプログラムの命令を処理する方法を提供するものとしてみることができる。本方法は、次のステップにより広く概念化することができる。すなわち、複数の汎用レジスタを提供するステップと、各々が汎用レジスタのうちの１つにそれぞれ対応する複数のビットを保持するステップと、各々が汎用レジスタのうちの１つにそれぞれ対応する複数の接続を提供するステップと、ビットを介していずれの汎用レジスタが書込み保留状態に関連するかを示すステップと、汎用レジスタのうちの特定の１つに対応するビットのうちの１つを、特定の１つの汎用レジスタに対応する接続のうちの特定の１つを介して送信するステップと、特定の１つの接続を介して送信される１ビットに基づいてデータハザードを検出するステップと、である。
【００１７】
本発明の他の特徴および利点は、当業者にとって以下の詳細な説明により明らかとなろう。かかるすべての特徴および利点は、本明細書において本発明の範囲内に含まれ、特許請求の範囲によって保護されるよう意図されている。
【００１８】
【発明の実施の形態】
本発明は、一般に、最少量の回路と複雑さを持ち、長レイテンシ命令のデータハザードを効率的に検出する処理システムに関する。本発明の原理をよりよく説明するために、まず図１を参照する。図１は、従来のスーパスカラ処理システム15（以下、単に処理システム15とする）を示す。処理システム15は、コンピュータプログラムの命令を受取り、各命令を複数のパイプライン21のうちの１つに割当てる命令分配ユニット18を含んでいる。各パイプライン21は、そのパイプライン21に割当てられた各命令を、適当であれば処理および実行するよう構成されている。
【００１９】
通常、各パイプライン21は、特定のタイプの命令（例えば、整数演算、浮動小数点演算、メモリ演算等）のみを処理するように構成されている。従って、命令分配ユニット18は、各命令をその命令と適合するパイプライン21にのみ割当てるよう構成されている。さらに図１では、簡潔のために、制御回路24と、ハザード検出回路25と、「スコアボード」と呼ばれることが多いレジスタファイル27とが、１つのパイプライン21に結合されているように示されているが、各パイプライン21が同様に制御回路24とハザード検出回路25とスコアボード27と結合されていることに留意するべきである。しかしながら、望ましいならば、長レイテンシ命令を処理しないパイプライン21については、スコアボード27の書込みポートに１つのパイプライン21を結合する接続31を取除いてもよい。
【００２０】
処理システム15によって受取られる命令の実行時に、処理システム15に関連する汎用レジスタ29に対しデータの書込みおよび読出しが行われることが多い、ということは周知である。さらに、命令の実行時に汎用レジスタ29が利用される（すなわち、書込みまたは読出しが行われる）場合、通常、命令は汎用レジスタ29を識別するレジスタ識別子を含む。レジスタ識別子は、通常、レジスタ識別子によって識別される汎用レジスタ29に対して一意である、ｎビットの符号化されたバイナリ値である。
【００２１】
ハザード検出回路25は、パイプライン21によって処理されている命令に含まれるレジスタ識別子を受取って比較することにより、ＲＡＷおよび／またはＷＡＷデータハザード等のあらゆるデータハザードが、パイプライン21によって処理される命令間に存在するか否かを判断するように構成されている。ハザード検出回路25がデータハザードを検出すると、ハザード検出回路25は、パイプライン21におけるどの命令がデータハザードに関連しているかを示して、制御回路24に対し通知信号を送信する。これに応じて制御回路24は、データハザードに関連するデータエラーを防止するために、１つまたは複数のパイプライン21に制御信号を送信して、その１つまたは複数のパイプライン21をストールさせるようにする（すなわち、一時的に命令の更なる処理を行わないようにする）。データハザードが終了すると、制御回路24はストールされた命令の処理の再開を可能にする。
【００２２】
命令の実行には、外部レジスタまたは処理システム15の外部のメモリにおけるロケーションからデータを検索するものもある。かかるデータが処理システム15によって受取られると、処理システム15は通常、データを検索した命令によって識別される汎用レジスタ29に対しデータを書込む。通常、続いてそのデータは後の命令を実行するために利用される。
【００２３】
データの検索に必要な時間はデータの位置する場所によって異なり、データの検索を要求する命令は処理システム15によってデータが受取られる前に退避されることが多い。しかしながら、命令が退避されパイプライン21を出てしまうと、ハザード検出回路25は、通常、検索されたデータが少なくとも処理システム15によって受取られるまでは、かかるデータハザードが存在するとしても、パイプライン21にある命令のレジスタ識別子を比較するだけでは、その命令に関連するＲＡＷまたはＷＡＷデータハザードを検出することができなくなる。
【００２４】
従って、退避された命令に関連するデータハザードを検出するために、通常、追加のステップがとられる。例えば、図１に示す実施の形態において、退避されかかっているプロデューサにより書込み保留状態がもたらされる場合、プロデューサに含まれかつ書込み保留状態に関連する（すなわち、書込みがなされる汎用レジスタ29を識別する）レジスタ識別子が、１組の接続31を介してスコアボード27に送信される。なお、簡単のために、図１はパイプライン21のうちの１つをスコアボード27に結合する1組の接続31のみを示しているが、一般的に、複数のパイプライン21をスコアボード27の異なる書込みポートにそれぞれ結合する複数組の接続31があることを留意するべきである。長レイテンシ命令を処理する各パイプライン21は、図１において接続31の組がそのパイプライン21のうちの１つをスコアボード27に結合するようにスコアボード27に結合されなければならないが、必要であれば、複数のパイプライン21が同様にスコアボード27に結合されてもよい。
【００２５】
スコアボード27は、図２に示すように、複数のレジスタ32（以下、スコアボードレジスタ32とする）を含む。スコアボードレジスタ32の各々は、汎用レジスタ29（図１）のうちの異なる１つにそれぞれ対応し、1ビット値を有する。スコアボード27は、接続31に結合された書込みポート34aを含む。書込みポート34aは、書込み保留状態に関連するプロデューサに含まれる上述したレジスタ識別子を受取り、受取ったレジスタ識別子によって識別される汎用レジスタ29に対応するスコアボードレジスタ32のビット値をアサートする。レジスタ識別子は符号化されていることが多く、従って書込みポート34aは、適当なスコアボードレジスタ32のビットをアサートする前に、レジスタ識別子を復号化する。
【００２６】
再び図１を参照すると、書込み保留状態に関連する汎用レジスタ29に書込まれるデータは、通常、汎用レジスタ29を識別するレジスタ識別子と共にインタフェース42によって受取られる。インタフェース42は、上記のデータを識別された汎用レジスタ29に送信し、接続45aを介してレジスタ識別子をスコアボード27に送信する。スコアボード27は、書込みポート34b（図２）を有している。この書込みポート34bは、接続45aに結合されており、接続45aからレジスタ識別子を受取り、レジスタ識別子によって識別される汎用レジスタ29に対応するスコアボードレジスタ32のビット値をデアサートする。
【００２７】
インタフェース42は１サイクルで複数のレジスタ識別子を受取る場合があるため、処理システム15は、図１および図２に示すように、インタフェース42によってスコアボード27に受取られたレジスタ識別子の各々をそれぞれ送信しかつ受取るために、接続45b等の複数組の他の接続と、書込みポート34c等の複数の他の書込みポートとを有してもよい。さらにスコアボード27は、通常、種々のパイプライン21からレジスタ識別子を受取るために、それら種々のパイプライン21にそれぞれ結合された複数の書込みポート34aを含む。従って、書込みポート34a、34b、34cの数は非常に大きくなる可能性があり、従って、書込みポート34a、34b、34cをスコアボードレジスタ32とインタフェースする回路は、複雑かつ高価となる可能性がある。
【００２８】
上述したように、スコアボードレジスタ32のビット値をアサートおよびデアサートすることにより、ハザード検出回路25は、スコアボード27のスコアボードレジスタ32に含まれるビットに基づいて、退避された命令に関連するデータハザードを検出することができる。すなわち、スコアボードレジスタ32に含まれる、レジスタ29のうちの特定の１つに対応するビットがアサートされている場合、１つの汎用レジスタ29に対する書込み保留状態が存在する。従って、パイプライン21によって処理されている別の命令が１つの汎用レジスタ29からのデータを利用する場合、ＲＡＷまたはＷＡＷデータハザードが存在する可能性がある。しかしながら、上記スコアボードレジスタ32に含まれるビットがデアサートされている場合、その時点で、退避された命令による１つの汎用レジスタ29への書込み保留状態はない。従って、１つの汎用レジスタ29に書込む退避された命令に関連するＲＡＷまたはＷＡＷデータハザードは、存在しないはずである。
【００２９】
各パイプライン21は、通常、パイプライン21のうちの１つについて図１および図２によって示されているように、１つの読出しポート48ａに結合されている。パイプライン21における保留状態の命令と前に退避された命令との間のデータハザードを検出するために、パイプライン21は、通常、接続49を介して、保留状態の命令を実行する際に使用する汎用レジスタ29を識別する符号化したｎビットレジスタ識別子を送信する。読出しポート48aは、レジスタ識別子を受取り復号化する。また、読出しポート48aは、レジスタ識別子によって識別される汎用レジスタ29に対応するスコアボードレジスタ32に含まれるビットを分析する。上記スコアボードレジスタ32のビットが、レジスタ識別子によって識別される汎用レジスタ29に対する書込み保留状態があることを示す場合、読出しポート48aは、接続52を介して、先行する命令に関連するデータハザードが存在する可能性があることを示す信号を送信する。例えば、読出しポート48aによって分析されるスコアボードレジスタ32のビットがアサートされている場合、読出しポート48aはアサートされた１ビット信号を送信する。あるいは、読出しポート48aはデアサートされた１ビット信号を送信する。接続52を介して送信された信号に基づいて、ハザード検出回路25は保留状態の命令に関連するデータハザードが存在するか否かを判断する。
【００３０】
スコアボード27に対する書込みおよびスコアボード27からの読出しに関連する有限量の遅延があることに留意されたい。従って、ハザード検出回路25に迅速な更新を提供するために、インタフェース42を介してスコアボード27に送信されるレジスタ識別子はまた、バイパス接続54aおよび／または54bを介してスコアボード27をバイパスする。状況によっては、ハザード検出回路25は、バイパス接続54aおよび／または54bからのレジスタ識別子を利用して、パイプライン21のうちの１つにおける命令に対するストールを防止するかまたは取除くことができる。
【００３１】
さらに、各命令は、実行時に複数の汎用レジスタ29を利用してもよく、そのため、複数のレジスタ識別子を含んでもよい。別個の組の接続49、52および別個の読出しポート48aは、通常、それぞれ可能性のあるレジスタ識別子について提供される。例えば、システム15の構造が、各パイプライン21における各命令が３つまでのレジスタ識別子を含むことができるようなものである場合、通常、３組の接続49を介して各パイプライン21に結合される少なくとも３つの読出しポート48a、48b、48cがある。従って、当業者は認めるだろうが、システム15における読出しポート48a、48b、48cおよび接続49、52の数は、多くのスーパスカラプロセッサについて非常に多くなる可能性があり、それによって、書込みの量およびシステム15の複雑さが増大する。システム15の複雑さおよびコストを低減するため、およびシステム15における貴重な空間を維持するために、書込みポート34a、34bおよび／または34cと読出しポート48a、48bおよび／または48cとを含むスコアボード27に対する書込みおよびスコアボード27からの読出しに利用される回路を最小限にすることが望ましい。
【００３２】
一般に、本発明は、効率的にかつ回路の量と複雑さを最小限にしつつ、退避された命令によってもたらされる書込み保留状態を追跡する処理システムを提供する。図３は、本発明の好ましい実施の形態の原理に従う処理システム50を示す。図３に示すように、処理システム50は、メモリ59に格納されたコンピュータプログラム57からの命令を実行するために、コンピュータシステム55内で採用することができる。
【００３３】
処理システム50は、１つまたは複数のバスを含むことができるローカルインタフェース６２を介して、コンピュータシステム55内の他の要素と通信しかつそれらを駆動する。さらに、例えばキーボードまたはマウス等の入力装置64を用いて、コンピュータシステム55のユーザからデータを入力することができ、スクリーンディスプレイ66またはプリンタ68を用いて、ユーザにデータを出力することができる。ディスク格納機構71はローカルインタフェース62に接続されて、不揮発性ディスク（例えば、磁気、光等）に対しおよび不揮発性ディスクからデータを転送することができる。コンピュータシステム55は、コンピュータシステム55をネットワーク75とデータを交換することができるようにするネットワークインタフェース73に接続することが可能である。
【００３４】
従来のシステム15と同様、図４に示すように、処理システム50は、少なくとも１つのパイプライン21と、制御回路24と、ハザード検出回路81と、スコアボード82と、を含む。図４において、制御回路24およびハザード検出回路81には１つのパイプライン21のみが結合されているが、好ましい実施の形態では、制御回路24およびハザード検出回路81に対し他のパイプライン21が同様に結合されている。さらに図４は、接続83およびデコーダ84を介してスコアボード82に結合された１つのパイプライン21を示す。好ましい実施の形態では、長レイテンシ命令を処理する各パイプライン21が同様にスコアボード82に結合されているが、必要な場合、スコアボード82に対し他のパイプライン21を同様に結合することも可能である。
【００３５】
従来のハザード検出回路25と同様に、好ましい実施の形態のハザード検出回路81は、前の命令のレジスタ識別子に基づき、パイプライン21によって処理されている命令に関連するデータハザードを検出する。このため、パイプライン21における各命令のレジスタ識別子はハザード検出回路81に送信され、ハザード検出回路81はレジスタ識別子を比較してデータハザードを検出する。しかしながら、ハザード検出回路81に送信される各ｎビット符号化レジスタ識別子は、まずデコーダ84によって復号化されてｍビットレジスタ識別子となる。ここで、ｍは、処理システム50が命令の実行によって生成されるデータを読出しおよび書込みするために使用する汎用レジスタ29の数に対応する。
【００３６】
ここで、ｍビット復号化レジスタ識別子の各ビットは、特定の汎用レジスタ29に対応する。デコーダ84は、汎用レジスタ29のうちの１つを識別するｎビットレジスタ識別子を受取ると、その１つの汎用レジスタ29に対応するｍビットレジスタ識別子におけるビットをアサートし、ｍビットレジスタ識別子における残りのビットをデアサートするよう構成されている。従って、ｍビットの復号化レジスタ識別子においていずれのビットがアサートされているかを検出することにより、ｍビットの復号化レジスタ識別子によりいずれの汎用レジスタ29が識別されているかを判断することができる。「System and Method for Efficiently Detecting Data Hazards Between Instructions of a Computer Program」と題する、本願と同一の譲受人に譲渡された米国特許出願（代理人整理番号第10971185号）と、「System and Method for Utilizing Instruction Attributes to Detect Data Hazards」と題する、本願と同一の譲受人に譲渡された米国特許出願（代理人整理番号第10971333号）とは、参照によりその開示内容が本明細書に援用されたものとするが、デコーダ84を実現するために使用することができる回路構成と、ハザード検出回路81が２つの命令のうちのレジスタ識別子が一致する時、そして２つの命令間にデータハザードが存在する時を検出するために使用することができる回路構成とを詳細に述べている。
【００３７】
従来のスコアボード27と同様、図５に示すように、スコアボード82は複数のスコアボードレジスタ32を有し、各スコアボードレジスタ32およびそこに含まれるビット値は、特定の汎用レジスタ29に対応する。スコアボードレジスタ32のビットは、アサートされると、対応する汎用レジスタ29の退避された命令による書込み保留状態があるということを示す。スコアボードレジスタ32のビットは、デアサートされると、かかる書込み保留状態が存在しないということを示す。
【００３８】
従って、スコアボード82は、従来からのスコアボード27と同様に、退避された命令によってもたらされる書込み保留状態に、いずれの汎用レジスタ29が関連しているかを示す。しかしながら、上述したように、スコアボード27は一般的に書込みポート34a、34b、34cを介して接続31、45a、45bによって送信されるレジスタ識別子を復号化する。図５に示すように、好ましい実施の形態では、スコアボード82は接続83を介してデコーダ84のうちの少なくとも１つに結合されている。従って、上記デコーダ84は、ハザード検出回路81とスコアボード82との両方に対し、ｍビットの復号化したレジスタ識別子を提供する。接続83によって送信されるレジスタ識別子がｍビットを有しているので、接続83の各々をスコアボードレジスタ32に直接結合することができ、そのため、スコアボード82における書込みポート34a（図２）の必要が無くなる。
【００３９】
すなわち、接続83のうちの１つによって送信される各ビットは、そのビットと同じ汎用レジスタ29に対応するスコアボードレジスタ32に提供される。言い換えれば、接続83によって送信されるｍビットレジスタ識別子が、汎用レジスタ29のうちの特定の１つを識別する場合、その１つの汎用レジスタ29に対応するスコアボードレジスタ32のみがアサートされたビットを受取るべきであり、他のスコアボードレジスタ32はデアサートされたビットを受取るべきである。その結果、スコアボード82によって受取られたレジスタ識別子によって識別される汎用レジスタ29にどのスコアボードレジスタ32が対応するかを検出するために、スコアボード82に書込みポート34a（図２）を必要としない。代りに、適当なスコアボードレジスタ32に適当なビット値を提供するために、ハザード検出回路81にｍビットレジスタ識別子を提供する同じデコーダ84が使用されてもよい。従って、好ましい実施の形態において、データハザードを検出し、かつスコアボード82のビットを適当にアサートするために必要な、回路の量および複雑性が最小化される。
【００４０】
さらに、接続45a、45bから受取られるレジスタ識別子は、好ましくは、スコアボード82における書込みポート34b、34c（図２）の代りにデコーダ85によって復号化される。すなわち、デコーダ８５は、インタフェース42から現時点で送信されているｎビットの符号化レジスタ識別子を受取り、同じサイクルで受取られるｎビットのレジスタ識別子によって識別される汎用レジスタ29の各々を識別するｍビットの復号化レジスタ識別子を出力するよう、構成されている。
【００４１】
好ましい実施の形態では、値ｍは処理システム50における汎用レジスタ29の数に対応し、デコーダ85によって送信されるｍビットの復号化レジスタ識別子の各ビットは、異なる汎用レジスタ29に対応する。デコーダ85は、同じサイクルで受取られたｎビットレジスタ識別子のうちの１つによって識別される汎用レジスタ29に対応する、ｍビットの復号化レジスタ識別子の各ビットをアサートし、かつ、ｍビットの復号化レジスタ識別子の残りのビットをデアサートするよう、構成されている。従って、復号化レジスタ識別子の対応するビットがアサートされている時、汎用レジスタ29は、デコーダ85によって送信されるｍビットの復号化レジスタ識別子によって識別される。
【００４２】
スコアボード82は、デコーダ85から新たな復号化レジスタ識別子を受取ると、復号化レジスタ識別子によって識別される汎用レジスタ29に対応するスコアボードレジスタ32におけるビットをデアサートするよう設計されている。これは、上記汎用レジスタ29に対する書込み保留状態が、すでに存在していないはずだからである。
【００４３】
すなわち、各スコアボードレジスタ32は、デコーダ85から復号化されたレジスタ識別子のビットを受取る。スコアボードレジスタ32は、好ましくは、スコアボードレジスタ32によって受取られたビットと同じ汎用レジスタ29に対応する。言い換えれば、デコーダ85からの復号化レジスタ識別子が汎用レジスタ29のうちの１つを識別する場合、識別された汎用レジスタ29に対応するスコアボードレジスタ32は、デコーダ85からアサートされたビットを受取らなければならない。さらに、デコーダ85から受取ったビットの値がアサートされている場合、アサートされたビット値を受取るスコアボードレジスタ32は、スコアボードレジスタ32に含まれるビット値をクリアする（例えば、デアサートする）よう設計されている。その結果、汎用レジスタ29のうちの特定の１つに対応するスコアボードレジスタ32のアサートされたビットは、現時点でその１つの汎用レジスタ29に対する書込み保留状態があることを示し、スコアボードレジスタ32のデアサートされたビットは、現時点でかかる書込み保留状態が無いことを示す。
【００４４】
望ましい場合、スコアボード82は、ハザード検出回路81がＲＡＷおよびＷＡＷデータハザード等のデータハザードを適切に検出することができるように、スコアボードレジスタ32に含まれるデータに対応する信号を、接続88を介してハザード検出回路81に送信する。好ましい実施の形態では、接続88の各々がスコアボードレジスタ32のうちの異なる１つに結合されており、それによって接続88に結合された１つのスコアボードレジスタ32と同じ汎用レジスタ29に対応する。従って、ハザード検出回路81に送信される信号は、ｍビットデータワードであり、ｍビットデータワードの各ビットは、異なるスコアボードレジスタ32からのビット値に対応する。その結果、ｍビットデータワードにおける各アサートされたビットは、汎用レジスタ29のうちの特定の１つに対する書込み保留状態があることを示す。ｍビットデータワードは、本質的に、複数の汎用レジスタ29を同時に識別することができるｍビットレジスタ識別子である。好ましい実施の形態では、スコアボードレジスタ32の各々が接続88のうちの１つを介してハザード検出回路83に直接結合されているので、従来のスコアボード27における読出しポート48a、48b、48c（図２）を削除することができる。
【００４５】
しかしながら、スコアボード27に対する書込みおよびスコアボード27からの読出しにおいて有限量の遅延があるため、スコアボード82によって送信されるデータは、必ずしも更新されるとは限らない。その結果、書込み保留状態が実際に最近終了した場合、接続88を介して送信されるデータワードは書込み保留状態が存在することを示してしまう可能性がある。ハザード検出回路81に対して使用可能な最新の情報を提供するために、従来の処理システム15のバイパス接続54a、54bと同様に、スコアボード82をバイパスするバイパス接続94は、デコーダ85からの復号化ｍビットレジスタ識別子をハザード検出回路81に提供する。
【００４６】
ハザード検出回路81は、パイプライン21からデコーダ84を介して受取るｍビットレジスタ識別子を、接続88および／または94から受取るｍビットレジスタ識別子と比較して、データハザードを検出する。図６は、パイプライン21から受取ったｍビットレジスタ識別子を、接続88または94から受取ったｍビットレジスタ識別子と比較することによってデータハザードを検出するために使用することができる、回路101の例示的な実現を示す。
【００４７】
各ＡＮＤゲート104は、パイプライン21からｍビットレジスタ識別子の１ビット、および接続88または94からｍビットレジスタ識別子の１ビットを受取る。さらに、同じＡＮＤゲート104によって受取られる各ビットは、同じ汎用レジスタ29に対応する。従って、ＡＮＤゲート104のうちの１つは、パイプライン21からのｍビットレジスタ識別子が、接続88または94からのｍビットレジスタ識別子によって識別される汎用レジスタ29のうちの１つを識別する場合にのみ、アサートされた出力を生成しなければならない。その結果、ＡＮＤゲート104のうちの１つがアサートされた出力を生成する場合、パイプライン21からのｍビットレジスタ識別子に関連する命令は、書込み保留状態下にある汎用レジスタ29を利用し、従って上記の命令に関連するデータハザードが存在する可能性がある。
【００４８】
従って、ＡＮＤゲート104のうちの１つがアサートされた出力を生成する場合、ハザード検出回路81は、パイプライン21から受取るｍビットレジスタ識別子に関連する命令に関連するデータハザードを検出する。一方、ＡＮＤゲート104のうちのいずれもアサートされた出力を生成しない場合、パイプライン21から受取ったｍビットレジスタ識別子によって識別される汎用レジスタ29に関連する書込み保留状態はないはずである。従って、パイプライン21からのｍビットレジスタ識別子に関連する命令によって利用される汎用レジスタ29への書込み保留状態はないはずであり、ハザード検出回路81は、上記の命令に関連するデータハザードを検出しない。
【００４９】
上記の方法に従って、ハザード検出回路81は、データハザードを検出しパイプライン21における命令の１つに関連するデータハザードが存在することを示す信号を制御回路24に送信してもよい。これに応じて制御回路24は、検出されたデータハザードからのデータエラーを防止するために、上記の命令がストールされるべきであることを示す制御信号をその命令を処理しているパイプライン21に送信してもよい。これに応じてパイプライン21は、好ましくは命令をストールする。
【００５０】
ハザード検出回路81は、上記の命令に関連するｍビットレジスタ識別子を、接続88または94から受取るｍビットレジスタ識別子と比較することにより、上述したデータハザードがもはや存在しないことを検出してもよい。すなわち、命令によって利用される汎用レジスタ29に書込まれるよう予定されたデータが、処理システム50によって受取られていてもよく、それにより、上述したデータハザードが終了する。ハザード検出回路81により上述した命令に関連するデータハザードが検出されなかったことに応答して、制御回路24は、命令がストールされるべきではないことを示す制御信号を、その命令を処理しているパイプライン21に送信する。これに応答してパイプライン21は、命令に対するストールを取除き、パイプライン21による命令の処理を再開する。
【００５１】
なお、デコーダ85は、本発明の必要な特徴ではないことに留意されたい。すなわち、必要ならば、スコアボード82に接続45aおよび／または45bから受取られるレジスタ識別子を復号化するための回路を含めることが可能であり、接続45aおよび／または45bによって送信されるレジスタ識別子は、従来の処理システム15と同様、ハザード検出回路81に対して直接送信されてもよい。かかる実施の形態では、ハザード検出回路81は、必要であれば、接続45aおよび／または45bによって送信されるレジスタ識別子を適切に復号化するためのデコーダを含んでもよい。
【００５２】
さらに、簡単のために本明細書では、処理システム15および50が４つの汎用レジスタ29のみを含むものとして示してきた。従って、ｍの値は、好ましくは、図面に示す実施の形態において４に等しい。しかしながら、他の実施の形態において、処理システム50はいかなる数のレジスタ29を有することも可能であり、従って他の実施の形態では、ｍの値は他の整数値とすることができる。さらに、レジスタ識別子は、ｍより大きいかまたは小さい長さのデータワードに復号化または符号化することが可能であるが、かかる実施の形態は、通常、好ましい実施の形態より効率的ではない。すなわち、ハザード検出回路81にｍビットレジスタ識別子を提供することにより、処理システム50の回路構成を縮小することができるのみでなく、ハザード検出回路81によるデータハザードの検出を簡略化しおよび／またはより適切に行うことができる。
【００５３】
さらに、図５を図２と比較することによって分かるように、好ましい実施の形態の構成は、スコアボード82における読出しポート48a、48b、48cを不要にする。さらに、デコーダ84のうちの１つは、スコアボード82とハザード検出回路81との両方に対して送信されるレジスタ識別子を復号化する機能を効率的に実行することができる。その結果、好ましい実施の形態では、処理システム50の実現に必要な回路の量が最小化され、それにより、処理システム50のコストおよび複雑さが最小化される。
【００５４】
動作
処理システム50および関連する方法の好ましい使用および動作を以下に述べる。
【００５５】
コンピュータプログラム57（図３）の命令の処理において、処理システム50（図４）は、実行時にメモリ59からデータ（以下、「検索データ」と言う）を検索して処理システム50の汎用レジスタ29に格納する、第１の命令を受取るものとする。また、処理システム50は、後にコンピュータプログラム57から、実行時に検索データを利用する第２の命令を受取るものとする。両命令を実行するために上記汎用レジスタ29が利用されるので、第１の命令および第２の命令は共に、上記汎用レジスタ29を識別するレジスタ識別子を含む。
【００５６】
第１の命令および第２の命令がパイプライン21によって同時に処理される間、ハザード検出回路81は、２つの命令の復号化レジスタ識別子を比較することにより、２つの命令間のＲＡＷデータハザードを検出することができる。ある時点で、制御回路24は、ＲＡＷデータハザードに関連するエラーを防止するために第２の命令がストールされるようにしてもよい。検索データが処理システム50によって受取られる前に第１の命令が退避された場合、第１の命令が退避されていても、ＲＡＷハザードが第１の命令と第２の命令との間に存在する可能性がある。
【００５７】
第１の命令が退避された後にハザード検出回路81がＲＡＷハザードを検出することができるようにするために、検索データを受取る汎用レジスタ29を識別するｍビットレジスタ識別子は、第１の命令を処理するパイプライン21に結合された接続83を介してスコアボード82に送信される。これに応じて、スコアボード82は、上記レジスタ識別子によって識別される汎用レジスタ29（すなわち、検索データを受取る汎用レジスタ29）に対応するスコアボードレジスタ32（図５）のビットをアサートする。
【００５８】
上記スコアボードレジスタ32に含まれるビット値および第２の命令のレジスタ識別子に基づき、ハザード検出回路81は、第１の命令が退避されていても、上述したＲＡＷデータハザードを検出することができる。これに応じて、制御回路24は、第２の命令がストールされるようにしてもよい。
【００５９】
検索データがインタフェース42によって受取られると、検索データを受取る汎用レジスタ29を識別するレジスタ識別子が、接続45aまたは45bを介してデコーダ85に送信される。デコーダ85は、レジスタ識別子に応じて、少なくとも上記汎用レジスタ29を識別するｍビットの復号化レジスタ識別子を生成する。ここで、上記汎用レジスタ29に対応する、復号化レジスタ識別子のビットがアサートされる。そして、このｍビットレジスタ識別子は、スコアボード82に送信され、復号化レジスタ識別子のアサートされたビットに応じて、スコアボード82は上記汎用レジスタ29に対応するスコアボードレジスタ32（図５）のビットをデアサートする。また、スコアボード82に送信されたｍビットレジスタ識別子は、バイパス接続94を介してハザード検出回路81に送信される。
【００６０】
上述したスコアボードレジスタ32のデアサートされたビット値かまたはバイパス接続94によって送信された上記ｍビットレジスタ識別子のいずれかに基づいて、ハザード検出回路81はＲＡＷハザードがすでに存在しないことを検出する。これに応じて、制御回路24は第２の命令に対するストールを取除き、上述したＲＡＷデータハザードに関連するデータエラーをもたらすことなく、第２の命令の処理が再開される。
【００６１】
本発明は、本明細書において、長レイテンシ命令によって生成されるデータが使用可能でない時を示すためにスコアボード82を利用するものとして説明されたが、あらゆるタイプの命令によって生成されるデータが使用不可能である時を示すために、スコアボード82を同様に使用することもできることに留意されたい。特に、保留状態の命令（すなわち、まだ退避されておらず、パイプライン21によってまだ処理中である命令）によって生成されるデータが使用不可能であるか否かを示すために、スコアボード82を使用することができる。さらに、本発明を、本明細書においていくつかの例において、ロード命令によって生成されたデータが使用不可能であるか否かを示すためにスコアボード82を利用するものとして述べたが、そのように限定されるべきではなく、スコアボード82は、あらゆる他のタイプの命令によって生成されるデータが使用不可能であるか否かを示すために使用することができる。
【００６２】
本発明の精神および原理から実質的に逸脱することなく、多くの変形および変更を本発明の上記実施の形態に対して行うことができる。
【００６３】
本発明は例として以下の実施形態を含む。
（１）  コンピュータプログラム（57）の命令を処理するシステム（50）であって、
複数のレジスタ（32）と、
該レジスタ（32）にそれぞれ対応する複数の接続（88）と、
前記命令の少なくとも１つを処理し実行するよう構成され、該１つの命令が前記レジスタ（32）のうちの１つを識別するレジスタ識別子に関連しているパイプライン（21）と、
前記複数の接続（88）と前記パイプライン（21）とに結合され、前記複数のレジスタ（32）にそれぞれ対応する複数のビットを有し、前記第１のレジスタ識別子を受取り該第１のレジスタ識別子に応じて該１つのレジスタ（32）に対応する該ビットのうちの１つをアサートするよう構成され、少なくとも該１つのレジスタ（32）を識別する第２のレジスタ識別子を受取り該第２のレジスタ識別子に応じて該１ビットをデアサートするよう構成され、さらに、前記接続（88）の１つによって該１ビットを送信するように構成されており、該１ビットが、該１ビットの値に基づいておよび該接続（88）のうちのいずれが該１ビットを送信しているかに基づいて該１つのレジスタ（32）に対する書込み保留状態が存在するか否かを示す、スコアボード（82）と、
前記複数の接続（88）に結合され、前記１ビットを受取ると共に該１ビットに基づいてデータハザードが存在するか否かを検出するよう構成された、ハザード検出回路（81）と、
を含むシステム（50）。
【００６４】
（２）  前記スコアボード（82）は前記複数のビットの各々を含むデータワードを前記ハザード検出回路（81）に送信するようさらに構成され、該データワードの各アサートされたビットが、前記レジスタ（32）の異なる１つが書込み保留状態に関連していることを示す、前記（１）に記載のシステム（50）。
【００６５】
（３）  前記スコアボード（82）は複数のレジスタ（32）を含み、該レジスタ（32）の各々が前記ビットの異なる１つを含むと共に前記接続（88）の異なる１つに結合されている、前記（１）に記載のシステム（50）。
【００６６】
（４）  前記第１のレジスタ識別子は復号化レジスタ識別子であって、
前記命令によって規定された符号化レジスタ識別子を受取るとともに、該符号化レジスタ識別子を復号化して前記復号化レジスタ識別子にするよう構成され、該復号化レジスタ識別子を前記スコアボード（82）に送信するようさらに構成されたデコーダ（84）をさらに含む、前記（１）に記載のシステム（50）。
【００６７】
（５）  前記デコーダ（84）は前記復号化レジスタ識別子を前記ハザード検出回路（81）に送信するようさらに構成されている、前記（４）に記載のシステム（50）。
【００６８】
（６）  前記復号化レジスタ識別子は複数のビットを含み、前記１つのレジスタ（32）に対応する該復号化レジスタ識別子の該ビットのうちの１つはアサートされ、該復号化レジスタ識別子の残りのビットはデアサートされる、前記（４）に記載のシステム（50）。
【００６９】
（７）  コンピュータプログラムの命令を処理する方法であって、
複数のレジスタ（32）を提供するステップと、
各々のビットが、該レジスタ（32）の対応する１つが書込み保留状態に関連しているか否かを示す、複数のビットを保持するステップと、
該ビットの各々を含むデータワードを送信し、該データワードの各アサートされたビットが、前記レジスタ（32）の異なる１つが書込み保留状態に関連していることを示すステップと、
前記データワードを受取るステップと、
該データワードに基づいてデータハザードを検出するステップと、
を含む方法。
【００７０】
（８）  命令を処理するステップと、
該命令に関連する符号化レジスタ識別子を受取るステップと、
該符号化レジスタ識別子を復号化して復号化レジスタ識別子にするステップと、
該復号化レジスタ識別子を他のレジスタ識別子と比較するステップと、
該比較するステップに基づいてデータハザードを検出するステップと、
前記復号化レジスタ識別子に基づいて前記ビットのうちの１つを変更するステップと、
をさらに含む前記（７）に記載の方法。
【００７１】
（９）  コンピュータプログラムの命令を処理する方法であって、
複数のレジスタ（32）を提供するステップと、
各々が該レジスタ（32）のうちの１つにそれぞれ対応する複数のビットを保持するステップと、
各々が該レジスタ（32）のうちの１つにそれぞれ対応する複数の接続（88）を提供するステップと、
前記ビットを介して、該レジスタ（32）のいずれが書込み保留状態に関連しているかを示すステップと、
前記接続（88）のうちの特定の１つにより該レジスタ（32）のうちの特定の１つに対応する前記ビットのうちの１つを送信し、該特定の１つの接続（88）が、該特定の１つのレジスタ（32）に対応しているステップと、
該特定の１つの接続（88）によって送信される該１ビットに基づいてデータハザードを検出するステップと、
を含む方法。
【００７２】
（１０）  命令を処理するステップと、
該命令に関連するレジスタ識別子を受取るステップと、
該レジスタ識別子のビットを前記特定の１つの接続（88）によって送信される前記特定の１ビットと比較するステップと、
該比較するステップに基づいて前記検出するステップを実行するステップと、をさらに含む前記（９）に記載の方法。
【００７３】
【発明の効果】
本発明によれば、データハザードを検出するためにスコアボードを利用するシステムを実現するのに必要な回路の量が最小化され、それによりシステムのコストおよび複雑さが最小化される。
【図面の簡単な説明】
【図１】従来の処理システムを示すブロック図である。
【図２】図１に示す処理システムのスコアボードを示すブロック図である。
【図３】本発明による処理システムを採用するコンピュータシステムを示すブロック図である。
【図４】図３に示す処理システムを示すブロック図である。
【図５】図４に示す処理システムのスコアボードを示すブロック図である。
【図６】図４に示すハザード検出回路を実現するために使用することができる回路を示すブロック図である。
【符号の説明】
21      パイプライン
32      スコアボードレジスタ
50      処理システム
57      コンピュータプログラム
81      ハザード検出回路
82      スコアボード
84      デコーダ
88      接続
【図１】
0003756409.tif 000002
【図２】
0003756409.tif 000003
【図３】
0003756409.tif 000004
【図４】
0003756409.tif 000005
【図５】
0003756409.tif 000006
【図６】
0003756409.tif 000007