(57)【要約】【課題】  個々の命令を幾つかのサブ段へ分割し、各段の複雑さを低下させつつクロック測度を高めるプロセッサ命令パイプラインは、ＲＩＳＣアーキテクチャの典型的な特徴である。処理に必要なオペランドはレジスタファイルから読み出される。パイプライン処理中のリード・アフター・ライト・アクセス問題は、レジスタファイルのアドレス毎に個々のエントリを有するスコアボードを用いて回避されうる。命令がパイプラインに入ると、パイプライン内の命令がその結果を夫々のレジスタアドレスに書き込もうとしていることを示すフラグが、特定の命令の宛先アドレスのアドレスにセットされる。フラグが設定されている限り結果は利用できない。これは命令処理がレジスタファイルへの結果の書き込み成功するとクリアされる。【解決手段】  本発明によれば、１つのフラグだけでなく、その結果を特定のレジスタファイルアドレスへ書き込もうとする命令を現在持っているパイプライン段の数及び各命令の種別が、特定の命令に対応するスコアボードアドレスに格納される。【選択図】  図１
2004342087.tif 000002
【特許請求の範囲】
【請求項１】
一連の処理命令をパイプライン処理する方法であって、
一連の続くパイプライン段において、部分的な又は中間的な第１のパイプライン処理オペランド又は結果が、前記パイプライン段のうちの１つ又はそれ以上のパイプライン段による適当な１つ又は複数の時点における更なるアクセスのために、例えばレジスタファイルといったオペランド／結果記憶部に中間的に又は永久的に格納されるように、前記命令を処理する段階と、
前記パイプライン段のうちの１つ又はそれ以上において利用可能な部分的な又は中間的な第２のパイプライン処理オペランド又は結果は、前記オペランド／結果記憶部へのアクセスなしに、適切な１つ又は複数の時点において１つ又はそれ以上の他の前記パイプライン段によってアクセスされる段階と、
次のパイプライン処理によって必要とされる前記部分的な又は中間的な第１のパイプライン処理オペランド又は結果のうちの特定のものの有無についての情報が格納されるスコアボードが用いられる段階とを含み、
前記スコアボード中で、前記パイプライン段のうちのどの１つ又は複数のパイプライン段に現在必要とされている１つ又は複数のオペランド又は結果が１つ又はそれ以上の他の前記パイプライン段における使用のために利用可能に位置が決められているかに関するデータが格納され更新され、
前記スコアボード中で、前記現在必要とされている１つ又は複数のオペランド又は結果に関連する命令の種別に関するデータが格納され更新され、
前記１つ又はそれ以上の他の前記パイプライン段は、前記オペランド／結果記憶部に格納されたデータにアクセスする必要なしに、前記現在必要とされている１つ又はそれ以上のオペランド又は結果に直接アクセスするために、前記位置に関するデータ及び前記命令の種別に関するデータを利用することを特徴とする方法。
【請求項２】
一連の処理命令をパイプライン処理する装置であって、
オペランド／結果記憶部と、
前記命令が処理され、それにより部分的な又は中間的な第１のパイプライン処理オペランド又は結果が、前記パイプライン段のうちの１つ又はそれ以上のパイプライン段による適当な１つ又は複数の時点における更なるアクセスのために、例えばレジスタファイルといったオペランド／結果記憶部に中間的に又は永久的に格納され、
前記パイプライン段のうちの１つ又はそれ以上において利用可能な部分的な又は中間的な第２のパイプライン処理オペランド又は結果は、前記オペランド／結果記憶部へのアクセスなしに、適切な１つ又は複数の時点において１つ又はそれ以上の他の前記パイプライン段によってアクセスされる、
一連の続くパイプライン段と、
前記パイプライン段のうちのどの１つ又は複数のパイプライン段に現在必要とされている１つ又は複数のオペランド又は結果が１つ又はそれ以上の他の前記パイプライン段における使用のために利用可能に位置が決められているかに関するデータが格納され更新され、
前記現在必要とされている１つ又は複数のオペランド又は結果に関連する命令の種別に関するデータが格納され更新され、
前記１つ又はそれ以上の他の前記パイプライン段は、前記オペランド／結果記憶部に格納されたデータにアクセスする必要なしに、前記現在必要とされている１つ又はそれ以上のオペランド又は結果に直接アクセスするために、前記位置に関するデータ及び前記命令の種別に関するデータを利用する、
スコアボードとを含む、装置。
【請求項３】
前記スコアボードは、前記オペランド／結果記憶部中のレジスタの各アドレス用の個々のインクリメント器を含む、請求項１又は２記載の方法又は装置。
【請求項４】
前記パイプライン段のうちの最初のパイプライン段は、前記最初のパイプライン段に処理命令が入るときに前記スコアボード中の宛先レジスタのアドレスにゼロ値を書き込み、現在のパイプライン段計数が最新に保たれるよう、前記最初のパイプライン段に以前に入った処理命令に関連する全ての段カウンタは対応するパイプライン段がストールされていなければ新しいサイクル毎にインクリメントされ、処理された処理命令が前記一連のパイプライン段のうちの最後のパイプライン段を離れるとき、前記パイプライン段計数はそれ以上はインクリメントされない終了値に設定される、請求項３記載の方法又は装置。
【請求項５】
前記一連のパイプライン段は、前記最初及び最後のパイプライン段を除き、前記パイプライン段のうちの１つ又はそれ以上において利用可能な部分的な又は中間的な第２のパイプライン処理オペランド又は結果を共通バスへ供給し、前記部分的な又は中間的なパイプライン処理オペランド又は結果は、共通バスから、前記オペランド／結果記憶部へのアクセスなしに適切な１つ又は複数の時点において１つ又はそれ以上の他の前記パイプライン段によってアクセスされうる、請求項１乃至４のうちいずれか一項記載の方法又は装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一連の処理命令をパイプライン処理する方法及び装置に関連し、特に、縮小命令セットコンピュータ（ＲＩＳＣ）アーキテクチャの命令スケジューリング及び結果フォワーディングロジックに係る。
【背景技術】
【０００２】
個々の命令の処理を幾つかの（サブ）段へ分割し、従って、各段の複雑さを低下させると同時にクロック速度を高めるプロセッサ命令パイプラインは、ＲＩＳＣアーキテクチャの典型的な特徴である。このようなパイプラインは、１命令／サイクルのスループットを有するが、数サイクル（ｎサイクル）／命令の待ち時間（latency）を有する。このような動作は、本発明に関係のある以下の２つのことを意味する。
【０００３】
（Ａ）順次命令ストリーム中の特定の命令がその直後の１つ又は複数の命令についてのオペランドとして必要とされる結果を与える場合、その後続の命令の処理は、先行する命令の処理が対応するパイプライン段においてその結果を生じさせるまで待たねばならない（即ち、パイプラインに入ることはできず、従って休止した（idling）パイプライン段を生じさせる）。この種類の処理動作は、リード・アフター・ライト（ＲＡＷ；read-after-write）パイプライン・ハザードと称される。
【０００４】
（Ｂ）オペランドは、通常は、いわゆるレジスタファイルから読み出される。しかしながら、処理結果が発生された後、これらの結果がレジスタファイルに実際に格納されるまでは、通常は１つ又は２つの追加的なサイクル又は段を必要とする。処理装置が異なる待ち時間を有する場合（例えば、ロードオペレーションは、通常は浮動小数点オペレーションよりも高速に処理される）、正確な割込みを保証するよう全ての処理装置は同じ段に戻って書き込まねばならないため、結果の発生とレジスタファイルアクセスの間の遅延は増加する。しかしながら、いったん結果が実際に発生されれば、レジスタファイルを迂回することにより続くパイプライン段から直接結果を読み出すことが可能である。この種類の処理は「結果フォワーディング（result forwarding）」と称される。
【０００５】
ＲＡＷハザードは、「スコアボード」を用いることにより回避されえ、このスコアボードは、一般的には、上述のレジスタファイルのアドレス毎の個々のエントリを扱う。いったん、命令がパイプラインに入ると、この特定の命令の宛先アドレス（即ち結果アドレス）のアドレスにフラグがセットされる。このフラグは、パイプライン内の命令がその結果を夫々のレジスタアドレスに書き込もうとしていることを知らせる。従って、フラグがセットされているかぎり、結果は利用可能ではない。これは、命令処理が結果をレジスタファイルへ書き込むことに成功したときにクリアされる。パイプラインに入ろうとするいかなる続く命令も、そのソース（即ちオペランド）レジスタアドレスのうちの少なくとも１つに対してフラグがセットされてるかどうかを確認せねばならない。命令は、これらのフラグがクリアされない限り、パイプラインに入ることは許されない。従って、スコアボードは、各サイクル毎にアクセスされねばならない。例えば、非特許文献１に、スコアボードアーキテクチャについて詳述されている。
【非特許文献１】ジョン・エル・ヘネシー（John L. Hennessy）、デイビッド・エイ・パターソン（David A. Patterson）著、「コンピュータアーキテクチャ：定性的アプローチ（Computer Architecture: A Qualitative Approach）」、モルガン・カウフマン出版（Morgan Kaufmann Publishers）、ＩＳＢＮ：１５５８６０５９６７、第３版、２００２年５月１５日
【発明の開示】
【発明が解決しようとする課題】
【０００６】
公知のスコアボードによる解決策の不利な点は、フォワーディング及び命令スケジューリングロジックの比較的費用が高く通信を集約的に用いる低速の実施を用いることである。パイプラインに入ろうとする各命令に対してこのようなフォワーディングを行うには、各オペランドについて、オペランドアドレスが、結果の発生に続くパイプライン段のうちの１つに宛先レジスタとして現われるかを調べねばならない。特に、異なる遅延を示す処理装置の場合、かなりのパイプライン段がフォワードに適した結果を持っている。公知のフォワーディング実施は、それらの全てとの同時の通信を必要とする。
【課題を解決するための手段】
【０００７】
本発明によれば、１つのフラグだけでなく、結果（又はオペランド）を特定のレジスタファイルアドレスへ書き込もうとする命令、及び、夫々の命令の種別（又はオペランド、従ってこの種別は２値符号化された符号語であってもよい）を現在持っているパイプライン段の番号又は対応する符号語が、対応するスコアボード又はレジスタファイルアドレス中の特定の命令（又はオペランド）の宛先アドレス（即ち結果アドレス）のアドレスに格納される。この特徴は、スコアボード中にわずかに更に多い格納空間を必要とする一方で、ＲＡＷハザード検出、及び、特に、命令フォワーディングを簡単なものにする。
【０００８】
換言すれば、公知のスコアボードアーキテクチャは、命令パイプライン内で現在処理されている命令によって、特定の宛先レジスタアドレスが使用されていることを示すために、単一のビットを用いるのに対して、本発明は、夫々の命令の現在のパイプライン段の番号及びその命令の種別を示すより複雑なデータアイテムを使用する。有利には、この特定の情報アイテムは、ＲＡＷハザードを防止するのに必要なストール（stall）サイクルの数及び／又は結果（又はオペランド）がそこからフォワードされうるパイプライン段を計算するのに使用されうる。
【０００９】
さもなければ、フォワーディングに用いられる全てのパイプライン段の結果（又はオペランド）は監視される必要があり、発行ロジックは、夫々のフラグがセットされているかどうかを調べるために各サイクル毎にスコアボードにアクセスする必要がある。かかる目的に必要なロジック及び配線は、費用がかかり処理速度が遅いものとなる。本発明は、パイプライン処理において、処理速度を高めることを容易とすることを目的とする。この目的は、請求項１に開示された方法によって解決される。この方法を用いる装置は、請求項２に開示されている。
【００１０】
有利には、ＲＩＳＣアーキテクチャにおいて結果フォワーディングに用いられた費用のかかる潜在的な低速のバスを探索し回るロジックは、旧式のものとなる。リード・アフター・ライト（ＲＡＷ）パイプラインハザード検出の効率性もまた高められる。
【００１１】
原理的には、本発明の方法は、
一連の処理命令をパイプライン処理する方法であって、
一連の続くパイプライン段において、部分的な又は中間的な第１のパイプライン処理オペランド又は結果が、パイプライン段のうちの１つ又はそれ以上のパイプライン段による適当な１つ又は複数の時点における更なるアクセスのために、例えばレジスタファイルといったオペランド／結果記憶部に中間的に又は永久的に格納されるように、命令を処理する段階と、
パイプライン段のうちの１つ又はそれ以上において利用可能な部分的な又は中間的な第２のパイプライン処理オペランド又は結果は、オペランド／結果記憶部へのアクセスなしに、適切な１つ又は複数の時点において１つ又はそれ以上の他のパイプライン段によってアクセスされる段階と、
次のパイプライン処理によって必要とされる部分的な又は中間的な第１のパイプライン処理オペランド又は結果のうちの特定のものの有無についての情報が格納されるスコアボードが用いられる段階とを含み、
スコアボード中で、パイプライン段のうちのどの１つ又は複数のパイプライン段に現在必要とされている１つ又は複数のオペランド又は結果が１つ又はそれ以上の他のパイプライン段における使用のために利用可能に位置が決められているかに関するデータが格納され更新され、
スコアボード中で、現在必要とされている１つ又は複数のオペランド又は結果に関連する命令の種別に関するデータが格納され更新され、
１つ又はそれ以上の他のパイプライン段は、オペランド／結果記憶部に格納されたデータにアクセスする必要なしに、現在必要とされている１つ又はそれ以上のオペランド又は結果に直接アクセスするために、位置に関するデータ及び命令の種別に関するデータを利用する方法に適する。
【００１２】
原理的には、本発明の装置は、
一連の処理命令をパイプライン処理する装置であって、
オペランド／結果記憶部と、
命令が処理され、それにより部分的な又は中間的な第１のパイプライン処理オペランド又は結果が、パイプライン段のうちの１つ又はそれ以上のパイプライン段による適当な１つ又は複数の時点における更なるアクセスのために、例えばレジスタファイルといったオペランド／結果記憶部に中間的に又は永久的に格納され、
パイプライン段のうちの１つ又はそれ以上において利用可能な部分的な又は中間的な第２のパイプライン処理オペランド又は結果は、オペランド／結果記憶部へのアクセスなしに、適切な１つ又は複数の時点において１つ又はそれ以上の他のパイプライン段によってアクセスされる、
一連の続くパイプライン段と、
パイプライン段のうちのどの１つ又は複数のパイプライン段に現在必要とされている１つ又は複数のオペランド又は結果が１つ又はそれ以上の他のパイプライン段における使用のために利用可能に位置が決められているかに関するデータが格納され更新され、
現在必要とされている１つ又は複数のオペランド又は結果に関連する命令の種別に関するデータが格納され更新され、
１つ又はそれ以上の他のパイプライン段は、オペランド／結果記憶部に格納されたデータにアクセスする必要なしに、現在必要とされている１つ又はそれ以上のオペランド又は結果に直接アクセスするために、位置に関するデータ及び命令の種別に関するデータを利用する、
スコアボードとを含む、装置に適する。
【発明を実施するための最良の形態】
【００１３】
本発明の有利な更なる実施例については、従属する各請求項に開示されている。本発明の典型的な実施例について、添付の図面を参照して説明する。
【００１４】
図１中、（順次）命令ストリームは、一連のｎ個のパイプライン処理段ＳＴＧ０乃至ＳＴＧＮ−１の最初の段ＳＴＧ０に入る。これらの段は夫々、例えば、一連のレジスタ並びにＣＰＵ又はマイクロプロセッサで行われる典型的な計算及びオペレーションを実行する適当な処理手段を含みうる。例えば、段ＳＴＧ３乃至ＳＴＧｎ−２は、中間の又は部分的な結果を１つのフォワーディングバスＦＷＤＢ又は多数のフォワーディングバスへフォワードしうる。しかし、アプリケーション次第で、段ＳＴＧ２及び／又はＳＴＧ１は中間の又は部分的な結果をバスＦＷＤＢへフォワードすることもあり、或いは、続く段ＳＴＧ４、ＳＴＧ５のうちの更なる段は中間の又は部分的な結果をバスＦＷＤＢへフォワードしないこともある。段ＳＴＧ０乃至ＳＴＧｎ−２は、中間のパイプライン処理結果を更なる処理のために対応する後続の段へフォワードしうる。
【００１５】
最初の段ＳＴＧ０は、バスＦＷＤＢ及び／又はレジスタファイルＲＥＧＦから中間の又は部分的な結果を読み出しうる。最後の段ＳＴＧｎ−１は、最終的な結果をレジスタファイルＲＥＧＦへ、そして最終的にはバスＦＷＤＢへ書き込む。段ＳＴＧ０は、上述のパイプライン段を表す番号及び上述の命令種別を表す番号を、スコアボードＳＣＢへ書き込む。段ＳＴＧ３−ＳＴＧｎ−１からバスＦＷＤＢへのＦＷＤＢバス出力のフォワーディングは、スコアボードＳＣＢによって与えられる夫々の段出力制御信号ＳＴＧ３０Ｃ乃至ＳＴＧＮ−１０Ｃによって制御される。パイプライン処理の一般的な原理により、通常は、段ＳＴＧ１及びＳＴＧ２がいかなる中間の又は部分的な結果もバスＦＷＤＢへフォワードすることは全く意味がない。しかし、上述のように、アプリケーションによっては、段ＳＴＧ２、ＳＴＧ１、ＳＴＧ４、ＳＴＧ５、．．．のいずれも、夫々の段出力制御信号ＳＴＧ２０Ｃ，ＳＴＧ１０Ｃ，ＳＴＧ４０Ｃ，ＳＴＧ５０Ｃを更に伴うものであってもよく、又は、これらを全く伴わないものであってもよい。
【００１６】
図２は、スコアボードＳＣＢの可能な実施例をより詳細に示す図である。段ＳＴＧ０からの出力信号ＩＳＴＧ０は、制御段ＣＴＲＬへ供給される。この制御段ＣＴＲＬは、一連の段カウンタレジスタＳＴＧＣＲ０乃至ＳＴＧＣＲＭ−１へリセット信号Ｒｅｓを与える。通常は、ＭはＮには等しくない。段ＣＴＲＬはまた、例えば、ビットＡ乃至Ｄからなる種別コード信号を一連の命令種別レジスタＩＴＲ０乃至ＩＴＲＭ−１へ与える。レジスタＳＴＧＣＲ０乃至ＳＴＧＣＲＭ−１、並びに、ＩＴＲ０乃至ＩＴＲＭ−１は、システム又はサイクルクロックＣＬＫによって、また、ＣＴＲＬから入来するイネーブル信号ＥＮＢによって更に制御される。レジスタＳＴＧＣＲ０乃至ＳＴＧＣＲＭ−１、並びに、レジスタＩＴＲ０乃至ＩＴＲＭ−１の出力信号は、制御段ＣＴＲＬへ供給される。
【００１７】
例えば、値「０」は、命令がパイプラインに入るときに（パイプライン段ＳＴＧ０）スコアボードＳＣＢ中の宛先レジスタのアドレスに書き込まれる。第１のパイプライン段に以前に入った命令の宛先レジスタアドレスに関する全ての段カウンタエントリは、パイプラインが、例えばＲＡＷハザードによりストールしていなければ、新しいサイクル毎にインクリメントされる。従って、現在の段番号は、常に最新に保たれる。対応する命令がパイプラインを出るとき（パイプライン段ＳＴＧｎ−１）、カウンタは値「ｎ」にインクリメントされる。エントリ値「ｎ」はインクリメントされない。換言すれば、現在のパイプライン段計数は最新に保たれ、処理された処理命令が一連のパイプライン段の最後のパイプライン段ＳＴＧ−１を離れるとき、パイプライン段計数はそれ以上はインクリメントされない終了値に設定される。
【００１８】
この種類の処理は、各レジスタアドレスに対するＣＴＲＬ内で個々のインクリメント器を用いて実行されうる。制御段ＣＴＲＬは、図１を参照して上述したように制御信号ＳＴＧ３０Ｃ乃至ＳＴＧＮ−１０Ｃを与える。
【００１９】
ここで、ｘを、結果を発生するパイプライン段の最後の番号であるとし、この番号は、命令の種別によっては、やはりスコアボードＳＣＢに格納される。また、ｙを、パイプラインに入ることが意図される命令のオペランドアドレスのスコアボードエントリであるとする。すると、必要なストールサイクルの数は、ｘからｙを差し引くことによって容易に計算されうる。結果が「０」以下であれば、ストールは必要でない。ｙがｎと等しくない場合、フォワーディングが必要とされる。結果を実際にフォーワードしているパイプライン段は、ｙ、即ち、信号ＯＣＳＴＧｙによって直接指される。
【００２０】
従って、フォワーディングのために個々のパイプライン段との通信は必要でない。スコアボードＳＣＢは、段ＳＴＧ０によってのみアクセスされる。全ての通信はローカルのままとされるため、グローバルな配線は省かれる（このような配線は、現在のサブミクロンシリコン技術では、処理を遅くする）。通信のための潜在的な費用の高い低速のロジックもまた省かれる。
【００２１】
例えば、本発明を実施するのにＳＰＡＲＣ  Ｖ８  ＲＩＳＣプロセッサが使用されえ、それにより浮動小数点ユニット用の内部インタフェースは、より良いパフォーマンスを達成するために本発明により設計を改められうる。浮動小数点パイプラインは、８段の長さを有しうるものであり、浮動小数点オペレーションはそれらの結果を６番目の段で発生することができ、ロードオペレーションは２番目の段で既に行われうる。従って、特に、ロード命令は多くのフォワーディングを必要とする。実装についてはレジスタ転送レベルでのＶＨＤＬシミュレーションを用いて、また、ＦＰＧＡボード上での高速プロとタイピング実装によって十分に確認されている。
【００２２】
本発明のパイプライン処理は、望ましくは、電子的に及び／又は自動的に実行される。ハードウエアを用いるかわりに、本発明は、対応するソフトウエアを用いても実行されうる。
【図面の簡単な説明】
【００２３】
【図１】レジスタファイル／パイプライン／スコアボードの配置を示す図である。
【図２】図１のレジスタファイル／パイプライン／スコアボードの配置に対するサイズｎの典型的なスコアボードを示す図である。
【符号の説明】
【００２４】
ＲＥＧＦ  レジスタファイル
ＦＷＤＢ  フォワーディングバス
ＳＴＧ０・・・ＳＴＧｎ−１  段
ＳＴＧ３０Ｃ・・・ＳＴＧＮ−１０Ｃ  段出力制御信号
ＳＣＢ  スコアボード
【図１】
2004342087.tif 000003
【図２】
2004342087.tif 000004