(57)【特許請求の範囲】
【請求項１】
コンピュータシステムの命令を処理するコンピュータシステムであって、
前記命令を処理し実行するように構成された複数のパイプラインと、
複数のマルチビットレジスタを有し、前記パイプラインのうちの１つから前記パイプラインによって処理される前記命令のうちの１つに関連するレジスタ識別子を受信し、該レジスタ識別子に応じて前記マルチビットレジスタのうちの１つにおける前記レジスタ識別子によって識別されるレジスタに対する未書込みが存在するか否かを示す第１ビットを変更するように構成され、前記未書込みの際に該未書込みによって取得されたデータを読み出す命令が検出されたか否かに応じて、前記１つのレジスタにおける第２ビットを制御するようにさらに構成されたスコアボードと
からなり、前記１つの命令がロード命令であり、前記スコアボードは、前記１つのマルチビットレジスタの複数のビットを制御し、該複数のビットが、前記１つの命令に応じてメモリ階層のうちのどの部分を探索したかを示すようにする、コンピュータシステム。
【請求項２】
コンピュータプログラムの命令を処理する方法であって、
パイプライン、および複数のマルチビットレジスタを含むスコアボードを提供するステップと、
前記命令のうちの１つを前記パイプラインを介して処理するステップと、
前記１つの命令の実行によって生成されたデータが入手不可能であることを検出するステップと、
前記データを読み出すための未完の命令を検出するステップと、
前記検出するステップのそれぞれに基づいて前記マルチビットレジスタのうちの１つを更新するステップと
からなり、前記更新するステップは、前記１つのマルチビットレジスタが、前記１つの命令に関連する未書込みが存在するか否か、および前記１つの命令をキャンセルすることができるか否かを示すものになるように実施される、方法。
【請求項３】
コンピュータプログラムの命令を処理するシステムにおいて、
前記命令を処理し実行するように構成された複数のパイプラインと、
前記パイプラインに接続され、複数のレジスタのうちのどのレジスタが退避された命令によって発生した未書込みに関連するものであるかを示すスコアボードであって、さらに、前記退避された命令のうちのどの命令がキャンセル可能であるかを示すデータを含むスコアボードとを備え、
前記データは、前記退避された命令のうちの１つに応答してメモリ階層のうちのどの部分が探索されたかに基づいて設定されるものである、システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概してデータ処理技術に関し、特に、コンピュータプログラムの命令を処理し、処理システムの効率が向上されるように長レイテンシ命令の属性および／またはステータス情報を示す、処理システムおよび方法に関する。
【０００２】
【従来の技術】
多くのプロセッサの性能を向上させるために、パイプライン処理が開発されている。パイプライン処理では、プロセッサには、複数命令を同時に処理することができる少なくとも１つのパイプラインが備えられている。したがって、パイプラインにおける１つの命令の実行が、そのパイプラインにおける先行する命令の実行の結果が入手可能になる前に始まる場合があり、それにより、いくつかのデータハザードが生成される。
【０００３】
たとえば、第１の命令が、実行時に、データを生成し特定のレジスタにそのデータを書込み、第２の命令が、実行時に、第１の命令によって生成されたデータを利用する場合がある。第１の命令によって生成されたデータが入手可能になる前に、第２の命令が実行される場合、データエラーが発生する。したがって、第１の命令によって生成されるデータが入手可能になるまで、これら２つの命令間にデータハザードが存在する。この種のデータハザードは、一般に、「リードアフタライト」（ＲＡＷ）データハザードと呼ばれる。
【０００４】
他の状況において、第２の命令が、実行時に、第２の命令の前に実行を開始した第１の命令と同じレジスタにデータを書込む場合がある。第２の命令が第１の命令の前にそのデータを生成しレジスタに書込むとすると、データエラーの可能性がある。それは、レジスタが、両命令が完全に実行され処理された後、第２の命令ではなく第１の命令のデータを有することになるためである。その結果、第１の命令によって生成されるデータがレジスタに書込まれるまで、これら２つの命令間にデータハザードが存在する。この種のデータハザードは、一般に、「ライトアフタライト」（ＷＡＷ）データハザードと呼ばれる。
【０００５】
上述したデータハザードおよび他のタイプのデータハザードからのエラーの防止を助けるために、大抵のスーパスカラプロセッサは、プロセッサのパイプラインによって処理されている命令に関連するデータハザードを検出するハザード検出回路を有する。ハザード検出回路は、通常、後の命令が、入手可能なデータをまだ生成していない先の命令と同じレジスタを利用する（たとえば、書込むかまたは読出す）時を検出することにより、上述したデータハザードを検出する。
【０００６】
しかしながら、第１の命令によって生成されるデータは、第１の命令を処理しているパイプラインによって第１の命令が退避されたかなり後まで（たとえば、第１の命令がパイプラインを出たかなり後まで）、他の命令による使用、またはプロセッサの特定のレジスタへの書込みのための入手ができない場合がある。たとえば、ロード命令は、実行時、プロセッサの外部のメモリからデータを検索する要求を生成する場合がある。メモリ階層のどこにデータが存在しているかにより、上述した要求に応答してデータをプロセッサに戻すために、数クロックサイクルから数千クロックサイクル程度かかる場合がある。したがって、プロセッサは、第1の命令がプロセッサのパイプラインを出るかまたは他の方法で退避される後まで、第1の命令によって生成されるデータを受取らない可能性がある。言い換えれば、第１の命令によって生成されるデータは、第1の命令がプロセッサのパイプラインを出るかまたは他の方法で退避される後まで、他の命令の実行に使用するために入手可能とならない。命令がパイプラインによって退避された後に入手可能なデータを生成する、上述したロード命令などの命令を、本明細書では「長レイテンシ命令」と呼ぶ。
【０００７】
長レイテンシ命令に対してデータハザードを検出するプロセスを容易にするために、プロセッサには通常、一般に「スコアボード」と呼ばれるレジスタファイルが備えられている。これは、プロセッサが、プロデューサ（すなわち、データを生成する命令）の先行する実行に応答して生成されたデータをまだ受取っていない時を示すものである。言い換えれば、スコアボードは、汎用レジスタへの未書込みがある時を示す。本明細書では、「未書込み」という用語は、先に実行された命令によって生成されたデータが、汎用レジスタへの書込みが予定されているが、まだその汎用レジスタに書込まれていない状況を言うために使用される。本技術分野において周知のように、「汎用レジスタ」は、書込み命令の実行によって書込まれ、および／または読出し命令の実行によって読出される１組のレジスタのうちの１つである。
【０００８】
スコアボードは、各レジスタがあるビット値を含む、複数のレジスタを有している。各スコアボードレジスタとそこに含まれるビット値は、書込み命令の実行によって生成されるデータを受取るプロセッサの汎用レジスタの１つに対応している。書込み命令によって生成されたデータがデータを受取るべき汎用レジスタに書込まれる前に、書込み命令が退避された場合、その汎用レジスタに対応するスコアボードレジスタにおけるビット値が表明される。さらに、書込み命令によって生成されたデータが最終的に汎用レジスタに書込まれると、上述したビット値は非表明される。したがって、汎用レジスタの１つに対する未書込みがあるか否かを判断するために、１つの汎用レジスタに対応するスコアボードレジスタのビット値を分析することができる。
【０００９】
スコアボードにおける表明された各ビット値は、表明されたビット値に対応する汎用レジスタへの未書込みがあることを示す。したがって、ＲＡＷまたはＷＡＷデータハザードからのエラーを防止するために、少なくとも未書込みが終了するまで（すなわち、汎用レジスタに書込まれるよう予定されたデータが、その汎用レジスタに実際に書込まれるか、または他の方法で入手可能となるまで）、プロセッサによって処理されているいかなる命令も、上述した汎用レジスタに対し書込みまたは読出しを行わないようにされなければいけない。さらに、スコアボードにおける非表明された各ビット値は、現時点で、非表明されたビット値に対応する汎用レジスタへの未書込みが無いことを示す。したがって、プロセッサによって処理されている命令は、ＲＡＷまたはＷＡＷデータハザードからのいかなるエラーも生成すること無しに、上述した汎用レジスタに対する読出しまたは書込みを行うことができる。
【００１０】
【発明が解決しようとする課題】
スコアボードの分析ないし他の方法で、ＲＡＷまたはＷＡＷデータハザードが検出された場合、ＲＡＷまたはＷＡＷデータハザードからのエラーは、しばしば、プロセッサによって処理されている１つまたは複数の命令を停止することにより防止される。１９９９年９月７日に出願され特許出願第０９／３９０，１９９号が割り当てられた、参照をもってその開示内容が本明細書内に組み込まれている「Superscalar Processing System and Method for Efficiently Performing In Order Processing of Instructions」と題された米国特許出願は、データハザードを防止するために命令を停止するプロセスをより詳細に述べている。命令が停止されると、プロセッサは、一時的に命令の更なる処理を行わないようにする。したがって、ストールはエラーを防止する可能性があるが、命令が停止される場合その命令がパイプラインを通過する総時間が増大するため、プロセッサ性能に対し悪影響を与える。ストールのプロセッサ性能に対する悪影響を最小化するために、命令の更なる処理がデータエラーを生成しないということを保証するために必要である以外は、命令はもはや停止されるべきではない。
【００１１】
さらに、命令がプロセッサのパイプラインを段階的に進んでいる間に、プロセッサは命令の属性および／またはステータスを示すある情報を保持する。処理システムは、しばしばこの情報を利用して、命令の処理を制御し、ストールの数および／または持続時間が最小化されるようその命令に関連するデータハザードを迅速に解消する。しかしながら、命令は、退避された後、通常プロセッサを出ており、プロセッサが、そのプロセッサによって保持されている属性および／またはステータス情報を有効に利用して、データハザードを解消するかまたは他の機能を実行することはもはや不可能である。
【００１２】
このように、これまで、当業界において、ストールの最小化など、種々の効率化が実現可能であるように、長レイテンシ命令に関連する属性および／またはステータス情報を示すシステムおよび方法を提供する必要性があったが、未だにその必要性は満たされていない。
【００１３】
【課題を解決するための手段】
本発明は、上述した従来技術の欠点および欠陥を克服する。概して、本発明は、コンピュータプログラムの命令を処理し、命令に関連する属性および／またはステータス情報を示す、システムおよび方法を提供する。本発明は、特に、長レイテンシ命令を処理する場合に有用である。
【００１４】
構造的に、本発明の処理システムは、パイプラインとスコアボードとハザード検出回路とを利用する。パイプラインは、コンピュータプログラムの命令を処理し実行する。命令の多くが、命令が実行される時にデータが書込まれるべきレジスタを識別するレジスタ識別子を含んでいる。命令のうちの１つの実行によって生成されるデータが、その１つの命令のレジスタ識別子によって識別されるレジスタにまだ書込まれておらず、プログラムの他の命令の実行に使用されるために入手不可能である場合、その１つの命令のレジスタ識別子は、スコアボードに渡される。スコアボードは、複数のマルチビットレジスタを含み、そのマルチビットレジスタのうちの１つに存在する第１ビットは、受取られたレジスタ識別子に基づいて変更される。また、スコアボードは、その１つの命令に関連する属性および／またはステータスデータなどのデータを受取り、その受取ったデータに基づいてその１つのレジスタにおける少なくとも第２ビットを変更してよい。したがって、スコアボードの各レジスタは、特定のレジスタへの未書込みが存在するか否かを示し、未書込みをもたらす命令に関連する情報を示す。
【００１５】
また、本発明は、コンピュータプログラムの命令を処理する方法を提供するものとしてみることもできる。本方法は、以下のステップにより広く概念化することができる。すなわち、パイプラインと、複数のマルチビットレジスタを含むスコアボードとを提供するステップと、パイプラインを介して命令の１つを処理するステップと、この１つの命令によって定義されるレジスタ識別子をスコアボードに渡すステップと、レジスタ識別子に基づいてマルチビットレジスタの１つにおける第１ビットを変更するステップと、その１つの命令に関連するデータをスコアボードに渡すステップと、そのデータに基づいて１つのレジスタにおける第２ビットを変更するステップと、上記１つの命令の実行を介して生成されたデータが入手不可能であることを検出するステップと、上記１つの命令の実行を介して生成されたデータが入手不可能であることを検出するステップに応じて、第１ビットを変更するステップを実行するステップと、である。
【００１６】
本発明の他の特徴および利点は、当業者により、以下の詳細な説明を添付図面と共に読む時に吟味することにより、明らかとなろう。かかるすべての特徴および利点は、本明細書において本発明の範囲内に含まれ、特許請求の範囲によって保護される、ということが意図されている。
【００１７】
本発明は、以下の図面を参照してより理解することができる。図面の要素は、必ずしも一定の比率で縮小されていず、本発明の原理を明確に例証することに重きがおかれている。さらに、各図面を通して同じ参照符号は対応する部分を示している。
【００１８】
【発明の実施の形態】
本発明は、概して、長レイテンシ命令に対する命令属性および／またはステータス情報を追跡する処理システムに関する。本発明の原理をよりよく説明するために、まず図１を参照する。図１は、従来からのスーパスカラ処理システム１５（以下、単に処理システム１５とする）を示す。処理システム１５は、コンピュータプログラムの命令を受取り各命令を複数のパイプライン２１のうちの１つに割当てる命令分配ユニット１８を含んでいる。各パイプライン２１は、そのパイプライン２１に割当てられた各命令を、適当であれば処理および実行するよう構成されている。
【００１９】
通常、各パイプライン２１は、特定のタイプの命令（たとえば、整数演算、浮動小数点演算、メモリ演算など）のみを処理するように構成されている。したがって、命令分配ユニット１８は、各命令をその命令と互換性のあるパイプライン２１にのみ割当てるよう構成されている。さらに、図１では、平明であるように、制御回路２４とハザード検出回路２５としばしば「スコアボード」と呼ばれるレジスタファイル２７とが、１つのパイプライン２１に連結されているように示されているが、各パイプライン２１が同様に制御回路２４とハザード検出回路２５とスコアボード２７と連結されている、ということは留意されるべきである。しかしながら、望ましい場合には、長レイテンシ命令を処理しないパイプライン２１について、スコアボード２７の書込みポートに１つのパイプライン２１を連結する接続３１を取除いてもよい。
【００２０】
処理システム１５によって処理される命令の実行時に、しばしばデータが、処理システム１５に関連する汎用レジスタ２９に対し書込みおよび読出しがなされる、ということは周知である。さらに、命令の実行において汎用レジスタ２９が利用される（すなわち、書込みまたは読出しが行われる）場合、命令は、通常、汎用レジスタ２９を識別するレジスタ識別子を含む。レジスタ識別子は、通常、レジスタ識別子によって識別される汎用レジスタ２９に対して一意である、ｎビットの符号化されたバイナリ値（ｎは、０より大きい整数）である。
【００２１】
ハザード検出回路２５は、パイプライン２１によって処理されている命令に含まれるレジスタ識別子を受取り比較することにより、ＲＡＷおよび／またはＷＡＷデータハザードなどの何らかのデータハザードが、パイプライン２１によって処理される命令間に存在するか否かを判断するように構成されている。ハザード検出回路２５は、データハザードを検出すると、制御回路２４に対し、パイプライン２１におけるいずれの命令がデータハザードに関連しているかを示す通知信号を送信する。これに応じて、制御回路２４は、１つまたは複数のパイプライン２１に制御信号を送信することにより、データハザードに関連するデータエラーを防止するために、その１つまたは複数のパイプライン２１が停止するようにする（すなわち、一時的に命令の更なる処理を行わないようにする）。データハザードが終了すると、制御回路２４は、停止された１つまたは複数の命令の処理の再開を可能にする。
【００２２】
いくつかの命令の実行により、外部レジスタまたは処理システム１５の外部のメモリにおけるロケーションからデータが検索される。かかるデータが処理システム１５によって受取られると、処理システム１５は通常、データを検索した命令によって識別される汎用レジスタ２９に対しデータを書込む。通常、そのデータはその後、後の命令を実行するために利用される。
【００２３】
データの検索に必要な時間は、データが位置する場所によって異なり、データの検索を要求する命令は、しばしば、処理システム１５によってデータが受取られる前に退避される。しかしながら、命令が退避されパイプライン２１を出ると、ハザード検出回路２５は通常、検索されたデータが少なくとも処理システム１５によって受取られるまでかかるデータハザードが存在する場合であっても、パイプライン２１における命令のレジスタ識別子を比較することのみによっては、その命令に関連するＲＡＷまたはＷＡＷデータハザードをもはや検出することができなくなる。
【００２４】
したがって、退避された命令に関連するデータハザードを検出するために、通常、追加のステップがとられる。たとえば、図１に示す実施の形態において、退避されようとしているプロデューサによりレジスタ２９の１つに対し未書込みがもたらされる場合、プロデューサに含まれ、かつ未書込みに関連する（すなわち、書込みがなされる汎用レジスタ２９を識別する）レジスタ識別子が、少なくとも１つのｎビット接続であるのが望ましい１組の接続３１を介してスコアボード２７に渡される。平明であるように、図１は、パイプライン２１のうちの１つをスコアボード２７に連結する1組の接続３１のみを示している、ということは留意されるべきである。しかしながら、一般に、複数のパイプライン２１をスコアボード２７の異なる書込みポートにそれぞれ連結する複数組の接続３１がある。長レイテンシ命令を処理する各パイプライン２１は、図１において接続３１がパイプライン２１のうちの１つをスコアボード２７に連結するように、スコアボード２７に連結されなければならないが、所望であれば、複数のパイプライン２１が同様にスコアボード２７に連結されてもよい。
【００２５】
スコアボード２７は、図２に示すように、複数のレジスタ３２（以下、スコアボードレジスタ３２とする）を含む。スコアボードレジスタ３２の各々は、汎用レジスタ２９（図１）のうちの異なる１つにそれぞれ対応し、あるビット値を有する。スコアボード２７は、接続３１に連結された書込みポート３４を含む。書込みポート３４は、未書込みに関連するプロデューサに含まれる上述したレジスタ識別子を受取り、受取ったレジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ３２のビット値を表明する。レジスタ識別子はしばしば符号化されており、したがって書込みポート３４は、適当なスコアボードレジスタ３２のビットを表明する前に、レジスタ識別子を復号化する。
【００２６】
再び図１を参照すると、未書込みに関連する汎用レジスタ２９に書込まれるデータは、通常、データが書込まれる汎用レジスタ２９を識別するレジスタ識別子と共にインタフェース４２によって受取られる。インタフェース４２は、上記データを識別された汎用レジスタ２９に渡し、接続４５を介してレジスタ識別子をスコアボード２７に渡す。スコアボード２７は、書込みポート３６（図２）を有している。この書込みポート３６は、接続４５に連結されており、接続４５からレジスタ識別子を受取り、レジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ３２のビット値を非表明する。
【００２７】
上述したように、スコアボードレジスタ３２のビット値を表明および非表明することにより、ハザード検出回路２５は、スコアボード２７のスコアボードレジスタ３２に含まれるビットに基づき、退避された命令に関連するデータハザードを検出することができる。すなわち、汎用レジスタ２９のうちの特定の１つに対応するスコアボードレジスタ３２に含まれるビットが、表明されている場合、１つの汎用レジスタ２９に対する未書込みが存在する。したがって、パイプライン２１によって処理されている他の命令が、その１つの汎用レジスタ２９からのデータを利用する場合、ＲＡＷまたはＷＡＷデータハザードが存在する可能性がある。しかしながら、上記スコアボードレジスタ３２に含まれるビットが非表明されている場合、現時点で、退避された命令による１つの汎用レジスタ２９への未書込みはない。したがって、１つの汎用レジスタ２９に書込みをする、退避された命令に関連するＲＡＷまたはＷＡＷデータハザードは、存在しないはずである。
【００２８】
各パイプライン２１は、通常、パイプライン２１のうちの１つについて図１および図２によって示されているように、少なくとも１つの読出しポート４８に連結されている。パイプライン２１における未実行の命令と先に退避された命令との間のデータハザードを検出するために、パイプライン２１は、通常、接続４９を介して、未実行の命令を実行する際に使用される汎用レジスタ２９を識別する符号化されたｎビットレジスタ識別子を渡す。読出しポート４８は、レジスタ識別子を受取り復号化する。また、読出しポート４８は、レジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ３２に含まれるビットを分析する。上記スコアボードレジスタ３２のビットが、レジスタ識別子によって識別される汎用レジスタ２９に対する未書込みがあることを示す場合、読出しポート４８は、接続５２を介して、上記未実行の命令に関連するデータハザードが存在する可能性があることを示す信号を送信する。たとえば、読出しポート４８によって分析されるスコアボードレジスタ３２のビットが表明されている場合、読出しポート４８は、表明された１ビット信号を送信する。あるいは、読出しポート４８は、非表明された１ビット信号を送信する。接続５２を介して送信された信号に基づき、ハザード検出回路２５は、未実行の命令に関連するデータハザードが存在するか否かを判断する。
【００２９】
なお、スコアボード２７に対する書込みおよび読出しに関連する有限量の遅延がある。したがって、ハザード検出回路２５を迅速に更新するために、インタフェース４２を介してスコアボード２７に送信されるレジスタ識別子はまた、バイパス接続５４を介してスコアボード２７をバイパスする。状況によっては、ハザード検出回路２５は、バイパス接続５４からのレジスタ識別子を利用することにより、パイプライン２１のうちの１つにおける命令に対するストールを防止するかまたは取除く場合がある。
【００３０】
さらに、各命令は、実行時に複数の汎用レジスタ２９を利用する場合があり、そのため、複数のレジスタ識別子を含む場合がある 。別個の組の接続４９，５２および別個の読出しポート４８は、通常、可能な各レジスタ識別子に提供される。たとえば、処理システム１５の構造が、各パイプライン２１における各命令が３つまでのレジスタ識別子を含むことができるようなものである場合、通常、３組の接続４９を介して各パイプライン２１に連結された少なくとも３つの読出しポート４８がある。
【００３１】
スコアボード２７により、退避された命令に関連するデータハザードの検出が可能となるが、処理システム１５に伴う問題は、課題の部分で述べたように、一旦命令が退避されると、その命令に関連する属性および／またはステータス情報が処理システム１５によって利用されない、ということである。したがって、処理システム１５は、可能なもっとも有効な方法ではデータハザードを解消することができない。
【００３２】
概して、本発明は、ハザード検出など種々の動作がより効率的に発生するように、退避された命令の属性および／またはステータス情報を追跡する処理システムを提供する。図３は、本発明の好ましい実施の形態の原理に従う処理システム５０を示す。図３に示すように、処理システム５０は、メモリ５９に格納されたコンピュータプログラム５７からの命令を実行するために、コンピュータシステム５５内で利用される。
【００３３】
処理システム５０は、１つまたは複数のバスを含むことができるローカルインタフェース６２を介して、コンピュータシステム５５内の他の要素と通信しかつそれらを駆動する。さらに、たとえばキーボードまたはマウスなどの入力装置６４を用いて、コンピュータシステム５５のユーザからデータを入力することができ、スクリーンディスプレイ６６またはプリンタ６８を用いて、ユーザにデータを出力することができる。ディスク格納機構７１はローカルインタフェース６２に接続されることにより、不揮発性ディスク（たとえば、磁気、光など）に対しおよび不揮発性ディスクからデータを転送することができる。コンピュータシステム５５はネットワークインタフェース７３に接続する事が可能で、それによって、コンピュータシステム５５はネットワーク７５とデータを交換することができるようになる。
【００３４】
従来からの処理システム１５と同様に、処理システム５０は、図４に示すように、少なくとも１つのパイプライン２１と、制御回路２４と、ハザード検出回路８１と、スコアボード８２と、を含む。図４において、制御回路２４およびハザード検出回路８１には、１つのパイプライン２１のみが連結されているが、好ましい実施の形態では、制御回路２４およびハザード検出回路８１に対し他のパイプライン２１が同様に連結されている。さらに、図４は、接続８３、９１を介してスコアボード８２に連結された１つのパイプライン２１を示す。好ましい実施の形態では、長レイテンシ命令を処理する各パイプライン２１が同様にスコアボード８２に連結されているが、所望であれば、スコアボード８２に対し他のパイプライン２１を同様に連結することも可能である。
【００３５】
好ましい実施の形態のハザード検出回路８１は、少なくとも上記命令のレジスタ識別子に基づき、パイプライン２１によって処理されている命令に関連するデータハザードを検出する。この目的のために、パイプライン２１における各命令に関連するレジスタ識別子は、それぞれハザード検出回路８１に渡される。ハザード検出回路８１は、受取ったレジスタ識別子に基づいてデータハザードを検出する。「System and Method for Coalescing Data Utilized to Detect Data Hazards」と題された米国特許出願０９／４９３５０４号（代理人整理番号第１０９７１１８４号）および「System and Method for Utilizing Instruction Attributes to Detect Data Hazards」と題された米国特許出願（代理人整理番号第１０９７１３３３号）は、共に参照をもってその開示内容が本明細書内に組み込まれたものとするが、パイプライン２１によって処理されている命令に関連するレジスタ識別子に基づいてデータハザードを検出するために利用される技術について、更に詳しく述べている。
【００３６】
図５に示すように、スコアボード８２は、複数のマルチビットレジスタ８７を含み、そこでは、各スコアボードレジスタ８７とそのためそこに含まれるビット値とが、特定の汎用レジスタ２９（図４）に対応している。各スコアボードレジスタ８７は、状態ビットと１つまたは複数の属性および／またはステータスビットとを含む。属性およびステータスビットは、後により詳細に説明する。状態ビットは、従来からのスコアボードレジスタ３２に含まれるビットと同様に、対応する汎用レジスタ２９に対する未書込みが存在するか否かを示す。スコアボードレジスタ８７における状態ビットは、表明されている場合、退避された命令によって、対応する汎用レジスタ２９に対する未書込みがあることを示す。非表明されている場合、状態ビットは、かかる未書込みが存在しないことを示す。したがって、スコアボード８２は、従来からのスコアボード２７と同様に、どの汎用レジスタ２９が退避された命令によってもたらされる未書込みに関連しているかを示す。
【００３７】
一例として、ロード命令が、そのロード命令に応じて検索されたデータがインタフェース４２によって受取られる前に、パイプライン２１の１つによって退避されようとしていると仮定する。この状態において、ロード命令に含まれるレジスタ識別子によって識別される汎用レジスタ２９への未書込みが、上記データがそのレジスタ２９に書込まれるまで、あるいはロード命令がキャンセルされるまで、存在する。したがって、未書込みの存在を示すために、ロード命令を処理しているパイプライン２１は、接続８３を介してロード命令のレジスタ識別子をスコアボード８２に渡す。書込みポート３４は、レジスタ識別子を受取り、そのレジスタ識別子に応じて、ロード命令に応じて検索されるデータを受取るべき汎用レジスタ２９（すなわち、接続８３を介して渡されたレジスタ識別子によって識別される汎用レジスタ２９）に対応するスコアボードレジスタ８７の状態ビットを表明する。
【００３８】
インタフェース４２は、ロード命令に応じて検索されたデータを受取ると、その検索されたデータを上記汎用レジスタ２９に渡し、その汎用レジスタ２９を識別するレジスタ識別子をスコアボード８２に渡す。これに応じて、書込みポート３６は、上記汎用レジスタ２９に対応するスコアボードレジスタ８７の状態ビットを非表明する。その結果、状態ビットは、表明されている時、対応する汎用レジスタ２９に対する未書込みが存在することを示し、非表明されている時、かかる未書込みが存在しないことを示す。
【００３９】
所望であれば、ロード命令に関連する属性データが、接続８３を介して渡される上述したレジスタ識別子と共に、接続９１を介してスコアボード８２に渡されてもよい。たとえば、好ましい実施の形態では、ロード命令に関連する投機ビットが接続９１を介してスコアボード８２に渡される。投機ビットは、非表明されている場合、ロード命令が非投機的であり完全に実行されるべきであることを示す。表明されている場合、投機ビットは、ロード命令が投機的であることを示す。
【００４０】
本技術分野において周知のように、投機的命令は、その命令によって生成されるデータがプログラム実行中に使用されない可能性があっても、そのプログラム実行中に発行される命令である。投機的命令によって生成されるデータを利用する他の有効な命令が検出された場合、投機的命令は非投機的命令に変換されることにより、データエラーが防止される。これは、投機ビットを非表明することによって達成することができる。したがって、接続９１を介して渡される投機ビットが表明されている場合、この表明された投機ビットに関連する命令は投機的に出されており、上記命令によって生成されたデータを利用している他の有効な命令は検出されない。したがって、いかなるデータエラーももたらすことなく、投機ビットに関連する命令をキャンセルする（すなわち、完全な実行を防止する）ことが可能である。
【００４１】
これに関して、コンピュータプログラム５７の各命令がそのコンピュータプログラム５７の各実行の間に必ずしも実行されないことは周知である。一定の実行時状態に基づいて、コンピュータプログラム５７の異なる実行の間に異なる命令が実行される。したがって、コンピュータプログラム５７の特定の実行の間に、処理システム５０によって実行される命令のいずれもが特定の投機的命令によって生成されるデータを利用しない可能性がある。かかる状態において、投機的命令を実行することは必要なく、投機的命令はキャンセルされることが可能である。「Processor and Method for Speculatively Executing Instructions from Multiple Instruction Streams Indicated by a Branch Instruction」と題された米国特許第５，８６０，０１７号は、参照をもってその開示内容が本明細書内に組み込まれたものとするが、投機的命令の処理をより詳細に述べている。
【００４２】
「Superscalar Processing System and Method for Efficiently Preventing Errors Caused by Write-After-Write Data Hazards」と題された米国特許出願０９／３９１０２３号（代理人整理番号第１０９７１１９５号）は、参照をもってその開示内容が本明細書内に組み込まれたものとするが、ロード命令が、表明された投機ビットに関連している場合の上述したロード命令など、投機的プロデューサによって生成されたデータを別の命令が利用するか否かを、ハザード検出回路８１がいかに検出するかをより詳細に述べている。これに関して、パイプライン２１は、プログラム順序でコンピュータプログラム５７の命令を実行する。ハザード検出回路８１は、投機的プロデューサに応じて汎用レジスタ２９への未書込みが生成された後に、その汎用レジスタ２９を使用する次の命令が書込み命令であることを検出した場合、投機的プロデューサによって生成されたデータが、その時点のプログラム実行の間にパイプライン２１によって実行される別の命令によって利用されない、ということを判定する。したがって、ハザード検出回路８１は、投機的プロデューサがキャンセルされてもよいと判断する。
【００４３】
しかしながら、ハザード検出回路８１は、投機的プロデューサに応じて汎用レジスタ２９に対する未書込みが生成された後に、その汎用レジスタ２９を利用する次の命令が読出し命令であることを検出した場合、パイプライン２１によって実行される別の命令がその投機的プロデューサによって生成されるデータを利用することを検出する。したがって、ハザード検出回路８１は、投機的プロデューサが非投機的プロデューサに変換されるべきであり、プロデューサがキャンセルされてはならない、と判断する。
【００４４】
プロデューサに関連する投機ビットは、表明されている場合、プロデューサによって生成されるデータを利用する別の命令が検出されていないことを示すため、プロデューサのキャンセルが可能であるか否かを示すために使用される場合がある。たとえば、投機ビットが表明されている（すなわち、プロデューサが投機的であることを示す）場合、プロデューサによって生成されるデータが処理システム５０によって実行される命令のいずれによっても使用されない可能性がある。したがって、プロデューサをキャンセルすることが可能な場合がある。一方、投機ビットが非表明されている（すなわち、プロデューサが非投機的であることを示す）場合、プロデューサはキャンセルされないであろう。
【００４５】
さらに、スコアボードレジスタ８７の各々は、上述した状態ビットに加えて属性および／またはステータスビットを含む。書込みポート３４は、それぞれ接続９１，８３を介して渡される投機ビットおよびレジスタ識別子を受取ると、そのレジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ８７の追加のビットの１つに、投機ビットを書込むように構成されている。したがって、スコアボーレジスタド８７は、対応する汎用レジスタ２９に対する未書込みが存在するか否かを示すのみでなく、未書込みをもたらしたプロデューサが投機であるか非投機的であるかをも示す。スコアボードレジスタ８７の投機ビットが表明されている場合、先のプロデューサは投機的であり、投機ビットが非表明されている場合、先のプロデューサは非投機的である。
【００４６】
さらに、ハザード検出回路８１は、パイプライン２１の１つによって処理されている未実行の命令の１つが、退避されたロード命令など、退避されたプロデューサによってもたらされた未書込みに関連する汎用レジスタ２９を利用する、ということを検出した場合、まず未実行の命令が読出し命令であるか否か判断する。未実行の命令が読出し命令である場合、データエラーを防止するために、退避されたロード命令によって生成されたデータは汎用レジスタ２９に書込まれなければならない。言い換えれば、退避されたロード命令はキャンセルされるべきでない。さらに、スコアボード８２が退避されたロード命令が非投機的であることを示すのを確実にするために、ハザード検出回路８１は、上記汎用レジスタ２９を識別するレジスタ識別子を接続９７を介して書込みポート９５に渡す。これに応じて、書込みポート９５は、接続９７を介して渡されるレジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ８７の投機ビットを非表明する。その結果、未書込みに関連する退避されたロード命令は、非投機的であるものと示され、それによりハザード検出回路８１は、いかなる後続の書込み命令の検出に応じても、退避されたロード命令をキャンセルしない。
【００４７】
しかしながら、上述した未実行の命令が書込み命令である場合、ハザード検出回路８１は、上記スコアボードレジスタ８７からの投機ビットを分析する。これに関して、上述したように、未実行の命令を処理しているパイプライン２１が接続４９を介して未実行の命令のレジスタ識別子を送信する場合、読出しポート９８は、レジスタ識別子によって識別された汎用レジスタ２９に対応するスコアボード８７の各ビットを、接続９９を介して渡すよう構成されているのが望ましい。接続９９を介して渡された投機ビットが、退避されたロード命令が投機的であることを示す場合、ハザード検出回路８１は、上記汎用レジスタ２９から読出しを行いかつ退避されたロード命令と未実行の命令との間で実行される別の命令をまだ検出していないことを認識する。したがって、ハザード検出回路８１がプログラム順序で命令を分析すると仮定すると、ハザード検出回路８１は、パイプライン２１によって処理されている命令がいずれも退避されたロード命令によって生成されたデータを利用しないことを認識する。その結果、ハザード検出回路８１は、退避されたロード命令をキャンセルしようとする。「Superscalar Processing System and Method for Efficiently Preventing Errors Caused by Write-After-Write Data Hazards」と題された上述した米国特許出願は、ハザード検出回路８１がロード命令をいかにキャンセルしようとするかをより詳細に述べている。
【００４８】
ハザード検出回路８１が退避されたロード命令を正常にキャンセルした場合、未書込みは終了し、上述した未書込みに関連するデータハザードはもはや存在しなくなる。したがって、ハザード検出回路８１は、退避されたロード命令に関連するデータハザードの検出を止める。
【００４９】
さらに、上述した特許出願に示されているように、退避されたロード命令が正常にキャンセルされた場合、キャンセルされたロード命令によって生成されるデータを受取った汎用レジスタ２９を識別するレジスタ識別子は、インタフェース４２に渡され、ロード命令が正常にキャンセルされたことを知らせるのが望ましい。そして、インタフェース４２は、このレジスタ識別子を書込みポート３６に渡し、書込みポート３６は、レジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ８７の状態ビットを非表明する。これにより、この汎用レジスタ２９に関連する未書込みがもはや存在しないことを示す。
【００５０】
一方、未実行の命令が投機的書込み命令である時に、ハザード検出回路８１が退避されたロード命令をキャンセルしなかった場合、未実行の命令と退避されたロード命令との間にＷＡＷデータハザードが存在する。その結果、ハザード検出回路８１は、上記汎用レジスタ２９に対する未書込みが終了するまで未実行の命令を停止する。言い換えれば、ハザード検出回路８１は、未実行の命令によって利用される汎用レジスタ２９に対応するスコアボードレジスタ８７の状態ビットが非表明されるまで、未実行の命令を停止する。
【００５１】
上記技術を実現することにより、退避されたプロデューサのキャンセルが可能である場合にその退避されたプロデューサに関連するストールの発生が防止されるため、ストールの悪影響が低減される。
【００５２】
ハザード検出回路８１が退避されたロード命令が正常にキャンセルされることが可能であるか否かを判断するのを助けるために、各スコアボードレジスタ８７は上述した投機ビットおよび状態ビットに加えてステータスビットを含むのが望ましい。ステータスビットは、退避されたロード命令に応じたデータの探索がどこまで進行したかを示し、未書込みに応じて状態ビットが表明される度に非表明された値に初期化されるのが望ましい。
【００５３】
これに関して、ロード命令の実行中、通常、データの検索に対する要求が処理システム５０からメモリインタフェース１１２（図３）に渡される。要求に応じて、メモリインタフェース１１２は、事前に定義されたアルゴリズムにしたがってデータの探索を開始する。たとえば、メモリインタフェース１１２は、まずキャッシュメモリにおいて要求されたデータを探索するだろう。要求されたデータがキャッシュメモリに見つからない場合、メモリインタフェース１１２は主記憶装置内を探索するだろう。メモリインタフェース１１２は、要求されたデータが見つかるまで、あるいは要求されたデータの検索が不可能であると判断するまで、種々のレベルのメモリ階層を探索し続ける。データが見つかると、探索は終了され、データはそのデータが書込まれるべき汎用レジスタ２９を識別するレジスタ識別子と共にインタフェース４２に渡される。
【００５４】
ロード命令をキャンセルするために、ハザード検出回路８１はキャンセルの要求をメモリインタフェース１１２に渡す。その要求に応じて、メモリインタフェース１１２は、要求されたデータの探索を終了する。要求されたデータが見つかった場合、メモリインタフェース１１２はデータをインタフェース４２に渡さない。
【００５５】
しかしながら、コンピュータシステム５５のアーキテクチャによっては、メモリインタフェース１１２による探索がある点を超えて進行していると（たとえば、メモリインタフェース１１２がメモリ階層の特定のメモリロケーションの探索を開始していると）、ロード命令のキャンセルが不可能な場合がある。その結果、メモリ探索がある点（たとえば、探索をもたらしているロード命令のキャンセルが不可能な点）を超えて進行していると、メモリインタフェース１１２は、見つかったデータが書込まれるべき汎用レジスタ２９を識別するレジスタ識別子を、インタフェース４２（図５）に渡すよう構成されている。そして、インタフェース４２は、このレジスタ識別子を接続１１７を介してスコアボード８２の書込みポート１１５に渡す。
【００５６】
これに応じて、書込みポート１１５は、識別された汎用レジスタ２９に対応するスコアボードレジスタ８７のステータスビットを表明するよう構成されている。その結果、スコアボードレジスタ８７は、対応する汎用レジスタ２９に関連する未書込みが存在するか否かを示すのみでなく、未書込みをもたらす退避された命令のキャンセルが可能か否かをも示す。したがって、汎用レジスタ２９に対する未書込みをもたらすロード命令のキャンセルが可能か否かを判断するために、ハザード検出回路８１は、汎用レジスタ２９に対応するスコアボードレジスタ８７に含まれるステータスビットを分析する。非表明されている場合、ロード命令に対する探索は、ロード命令がキャンセルされることが不可能であるほど進行していない。表明されている場合、ロード命令によって要求されるデータに対する探索は、ロード命令のキャンセルが不可能なほど進行している。
【００５７】
なお、アプリケーションによっては、メモリ階層においてデータの探索がどこまで進行したかをより精密に知ることが望ましい場合もある。したがって、各スコアボードレジスタ８７に複数のステータスビットがある場合があり、その場合各ステータスビットは、メモリ階層中の種々の点を超えて探索が進行しているか否かを示す。
【００５８】
さらに、他のタイプの属性および／またはステータス情報を示すために、スコアボードレジスタ８７に他のタイプのデータが保持される場合がある。たとえば、各スコアボードレジスタ８７は、バンクレジスタビットを含む場合がある。状態ビットが未書込みの存在を示す場合、バンクレジスタビットは、いずれのレジスタバンクが、未書込みをもたらす退避されたプロデューサによって生成されたデータを受取ることになるかを示す。これに関して、多くの処理システム５０は、図４に示す汎用レジスタ２９をミラーリングするレジスタの第２バンクを含む。レジスタの第２バンクにおける各レジスタは、汎用レジスタ２９の１つを識別する同じレジスタ識別子によって各々識別されることが可能である。データが汎用レジスタ２９の１つかまたは第２レジスタバンクの対応するレジスタに対して書込まれるか読出されるかは、実行時に決定され、プログラム５７の実行にしたがって変化する場合がある。
【００５９】
さらに、命令の１つを実行するために汎用レジスタ２９の１つが使用され、他の命令を実行するために第２レジスタバンクの対応するレジスタが使用される場合、他のプロデューサと同じレジスタ識別子を有するコンシューマとの間にデータハザードは存在しない。したがって、パイプライン２１は、レジスタ識別子と共に状態ビットをスコアボード８２に渡す場合、そのレジスタ識別子に関連するプロデューサによって生成されるデータを受取るために、汎用レジスタ２９の１つかまたは第２バンクのレジスタの１つのいずれが使用されるかを示すバンクレジスタビットをもまた渡す場合がある。これに応じて、スコアボード８２は、上述した技術にしたがって、状態ビットと適当なスコアボードレジスタ８７におけるバンクレジスタビットとを更新できる場合がある。
【００６０】
ハザード検出回路８１はバンクレジスタビットを利用して、データハザードを解消することができる。たとえば、コンシューマが、そのコンシューマのレジスタ識別子によって識別される汎用レジスタ２９に対応するスコアボードレジスタ８７に含まれるバンクレジスタビットと異なるバンクレジスタビットを有する場合、スコアボードレジスタ８７の状態ビットが表明されている場合であっても、データハザードは存在しない。当業者には、本発明の原理を逸脱することなく、各スコアボードレジスタ８７に含まれ、長レイテンシ命令に関連する他のパラメータを示す、データの他の例が多数あることが明らかである。
【００６１】
さらに、本発明は、退避されたロード命令に基づいてスコアボードレジスタ８７に含まれるビットを制御するものとして述べられてきた。しかしながら、他の実施の形態において、スコアボードレジスタ８７に含まれるビットを制御するために、他のタイプの長レイテンシ命令からのデータが同様に使用される場合がある。
【００６２】
本発明の上述した実施の形態、特に「好ましい」実施の形態が、単に実現可能な例であり、単に本発明の原理を明確に理解するために示されている、ということは重ねて強調されるべきである。本発明の思想および原理から実質的に逸脱することなく、多くの変形および変更を本発明の上記実施の形態に対して行うことができる。かかるすべての変更および変形は、本明細書においてこの開示および本発明の範囲内に含まれ、かつ、後述の特許請求の範囲によって保護されることが意図されている。
【００６３】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．コンピュータプログラム（５７）の命令を処理するシステム（５０）であって、
前記命令を処理し実行するよう構成された複数のパイプライン（２１）と、
前記パイプライン（２１）に連結され、複数のマルチビットレジスタ（８７）を有し、前記パイプライン（２１）の１つからレジスタ識別子を受取り、かつ前記レジスタ識別子に応じて前記マルチビットレジスタ（８７）の１つにおける第１ビットを変更するよう構成され、前記第１ビットが、前記レジスタ識別子によって識別されるレジスタ（２９）への未書込みが存在するか否かを示すものであり、前記レジスタ識別子が前記パイプライン（２１）によって処理される前記命令の１つに関連するものであって、さらに、前記１つの命令に関連するデータを受取り、かつ前記受取ったデータに基づいて前記１つのレジスタ（８７）における第２ビットを変更するよう構成されたスコアボード（８２）と、
を含むシステム。
２．  前記１つの命令はロード命令であり、前記１つの命令に関連する前記データは、前記１つの命令に応じていずれのメモリロケーションが探索されたかを示すものであって、
前記第２ビットに基づいて前記１つの命令のキャンセルが可能か否かを検出するよう構成された回路（８１）をさらに含むことを特徴とする上記１記載のシステム（５０）。
３．  前記スコアボード（８２）に連結された回路（８１）をさらに含み、前記回路（８１）は、前記第１および第２ビットに基づいてデータハザードを検出するよう構成されている上記１記載のシステム（５０）。
４．  前記第２ビットは、前記１つの命令が投機的であるか否かを示し、前記回路（８１）は、さらに、前記パイプライン（２１）の１つによって処理されている他の命令が前記レジスタ識別子によって識別される前記レジスタを利用するか否かを検出し、かつ、前記他の命令に応じて前記第２ビットを変更するよう構成されている上記３記載のシステム（５０）。
５．  コンピュータプログラム（５７）の命令を処理する方法であって、
パイプライン（２１）と複数のマルチビットレジスタ（８７）を含むスコアボード（８２）とを提供するステップと、
前記パイプライン（２１）を介して前記命令の１つを処理するステップと、
前記１つの命令によって定義されるレジスタ識別子を前記スコアボード（８２）に渡すステップと、
前記レジスタ識別子に基づいて前記マルチビットレジスタ（８７）の１つにおける第１ビットを変更するステップと、
前記１つの命令に関連するデータを前記スコアボード（８２）に渡すステップと、
前記データに基づいて前記１つのレジスタ（８７）における第２ビットを変更するステップと、
前記１つの命令の実行を介して生成されたデータが入手不可能であることを検出するステップと、
前記１つの命令の実行を介して生成されたデータが入手不可能であることを検出する前記ステップに応じて、前記第１ビットを変更するステップを実行するステップと、
を含む方法。
６．  前記第１および第２ビットに基づいてデータハザードを検出するステップをさらに含む上記５記載の方法。
７．  前記第２ビットを介して前記１つの命令の投機的状態を示すステップと、
他の命令が実行時に前記レジスタ識別子によって識別されるレジスタ（２９）を利用するか否かを検出するステップと、
前記他の命令が前記レジスタ（２９）を利用するか否かを検出するステップに基づき、前記第２ビットを変更するステップと、
をさらに含む上記５記載の方法。
８．  前記１つの命令を退避させるステップと、
前記退避させるステップに応じて前記第１ビットを変更するステップを実行するステップと、
前記実行するステップに応じて生成されたデータを受取るステップと、
前記受取るステップに応じて前記第１ビットを変更するステップと、
をさらに含む上記５記載の方法。
９．  前記１つの命令に応じてデータを検索するステップと、
前記第２ビットを介して、前記検索するステップがどこまで進行したかを示すステップと、
前記第２ビットに基づいて前記１つの命令のキャンセルが可能か否かを検出するステップと、
前記１つの命令がキャンセルされることが可能であるか否かを検出するステップに基づき、前記１つの命令をキャンセルするステップと、
をさらに含む上記５記載の方法。
１０．  前記レジスタ識別子に基づいて前記１つのレジスタ（８７）を選択するステップと、
前記選択するステップに応じて前記第１ビットを変更するステップを実行するステップと、
前記選択するステップに応じて前記第２ビットを変更するステップを実行するステップと、
をさらに含む上記５記載の方法。
【００６４】
【発明の効果】
以上のごとく、本発明により、長レイテンシ命令に関連する属性及び／またはステータス情報を示すシステム及び方法を提供することが可能となる。それによって、ストールの最小化など、種々の効率を実現できる。
【図面の簡単な説明】
【図１】従来からの処理システムを示すブロック図である。
【図２】図１に示す処理システムのスコアボードを示すブロック図である。
【図３】本発明による処理システムを採用するコンピュータシステムを示すブロック図である。
【図４】図３に示す処理システムを示すブロック図である。
【図５】図４に示す処理システムのスコアボードを示すブロック図である。
【符号の説明】
２１…パイプライン
２９…汎用レジスタ
５０…処理システム
５７…コンピュータプログラム
８１…ハザード検出回路
８２…スコアボード
８７…スコアボードレジスタ
【図１】
0003808314.tif 000002
【図２】
0003808314.tif 000003
【図３】
0003808314.tif 000004
【図４】
0003808314.tif 000005
【図５】
0003808314.tif 000006