(57)【要約】処理されるための命令をデコードして、ある種類の命令を取得するステップと、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算するステップと、前記サイクル数に従って、その命令がライトバックステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けするステップとを含み、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした命令発行方法。
2008527559.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン式のプロセッサにて用いられる命令発行方法であって、
（ａ）処理されるための命令をデコードして、ある種類の命令を取得するステップと、
（ｂ）前記種類の命令に従って、前記命令に対して実行ステージで占有されるサイクル数を計算するステップと、
（ｃ）前記サイクル数に従って、前記命令がライトバックステージに入る前の所定のサイクルで、前記命令の目的オペランドを、取得可能としてマーク付けするステップとを含み、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、命令発行方法。
【請求項２】
前記所定のサイクルが、前記目的オペランドを生成するサイクル直前のサイクルである、請求項１に記載の命令発行方法。
【請求項３】
前記所定のサイクルが、前記目的オペランドを生成するサイクルである、請求項１に記載の命令発行方法。
【請求項４】
前記ステップ（ｃ）が、ある命令の目的オペランドが前記所定のサイクルで取得可能であるか否かをマーク付けするために発行可能化テーブルを用いるステップを含む、請求項１〜３のいずれかに記載の命令発行方法。
【請求項５】
前記命令が発行ステージに入るときに、前記命令のソースオペランドとして関連付けられた前記目的オペランドが、前記発行可能化テーブルにて取得可能であるか否かを検出するステップを更に含み、
前記関連付けられた目的オペランドが取得可能である場合に、選択ロジックの決定手順を実行するように前記命令が発行すべき状態に入る、請求項４に記載の命令発行方法。
【請求項６】
前記命令がＲＲステージに入るときに、前記関連付けられた目的オペランドがレジスタファイルに格納されているか否かを検出するステップと、
前記関連付けられた目的オペランドがレジスタファイルにまだ格納されていない場合には、前記命令に対して対応する目的オペランドを、バイパス方法によって取得するステップと、
を更に含む、請求項５に記載の命令発行方法。
【請求項７】
パイプライン式のプロセッサにて用いられる命令発行装置であって、
処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、
前記種類の命令に従って、前記命令に対して実行ステージで占有されるサイクル数を計算する計算部と、
前記サイクル数に従って、前記命令がライトバックステージに入る前の所定のサイクルで、前記命令の目的オペランドを、取得可能としてマーク付けする制御部と、
を備え、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、命令発行装置。
【請求項８】
前記所定のサイクルが、前記目的オペランドを生成するサイクル直前のサイクルである、請求項７に記載の命令発行装置。
【請求項９】
前記所定のサイクルが、前記目的オペランドを生成するサイクルである、請求項７に記載の命令発行装置。
【請求項１０】
各指標がある命令の目的オペランドが取得可能であるか否かを示す、発行可能化テーブルを格納する格納部を更に備える、請求項７〜９のいずれかに記載の命令発行装置。
【請求項１１】
前記命令が発行ステージに入るときに、前記命令のソースオペランドとして関連付けられた前記目的オペランドが、前記発行可能化テーブルにて取得可能であるか否かを読み出す読出部を更に備え、
前記関連付けられた目的オペランドが取得可能である場合に、前記制御部が、選択ロジックの決定手順を実行するために前記命令が発行すべき状態に入るように制御する、請求項１０に記載の命令発行装置。
【請求項１２】
パイプライン式のプロセッサであって、
処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、
前記種類の命令に従って、前記命令に対して実行ステージで占有されるサイクル数を計算する計算部と、
前記サイクル数に従って、前記命令がライトバックステージに入る前の所定のサイクルで、前記命令の目的オペランドを、取得可能としてマーク付けする制御部であって、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、前記制御部と、
前記命令に対して対応する演算を実行し、前記命令の前記目的オペランドを生成する実行部とを備えるプロセッサ。
【請求項１３】
前記所定のサイクルが、前記目的オペランドを生成するサイクル直前のサイクルである、請求項１２に記載のプロセッサ。
【請求項１４】
前記所定のサイクルが、前記目的オペランドを生成するサイクルである、請求項１２に記載のプロセッサ。
【請求項１５】
各指標がある命令の目的オペランドが取得可能であるか否かを示す、発行可能化テーブルを格納する格納部を更に備える、請求項１２〜１４のいずれかに記載のプロセッサ。
【請求項１６】
前記命令が発行ステージに入るときに、前記命令のソースオペランドとして関連付けられた前記目的オペランドが、前記発行可能化テーブルにて取得可能であるか否かを読み出す読出部を更に備え、
前記関連付けられた目的オペランドが取得可能である場合に、前記制御部が、選択ロジックの決定手順を実行するために前記命令が発行すべき状態に入るように制御する、請求項１５に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関し、特に、プロセッサが使用する命令発行方法及びプロセッサの対応する命令発行回路に関する。
【背景技術】
【０００２】
電子技術の開発により、プロセッサのデータ処理速度を更に増大させる方法についてコンピュータ・アーキテクチャ研究の最もホットな問題の１つになっている。
【０００３】
ＩＰＣ（１サイクル単位で遂行される命令）の平均数は、プロセッサのデータ処理速度を算定するのに重要な目安である。通常のパイプライン式のスカラプロセッサは、１サイクルあたり１つの命令の最大処理速度を達成することができる（即ち、ＩＰＣ＝１）。ただし、多くの場合、パイプライン式のスカラプロセッサのＩＰＣは１未満である。
【０００４】
現在、パイプライン式のスーパースカラプロセッサが、プロセッサ性能を改善するために応用されている。パイプライン式のスーパースカラプロセッサにおいて、複数の命令フェッチ部、複数の命令デコード部、対応するアルゴリズムを実行するための複数の関数部、及び複数の結果書き込み部を設けることで、１サイクルで、動的スケジュールを用いることにより、複数の命令をあるパイプラインステージから次のパイプラインステージへと移行することができるので、パイプライン式のスーパースカラプロセッサは１サイクルあたり複数の命令を実行できる（ＩＰＣ＞１）。
【０００５】
図１に、パイプラインを表す７つのステージのうち、命令実行ステージの命令ｎを概略的に示す。その７つのステージは、それぞれＩＦ（命令フェッチ）ステージ、ＩＤ（命令デコード及びリネーム）ステージ、ＩＳ（命令発行）ステージ、ＲＲ（レジスタ読み出し）ステージ、ＥＸ（命令実行）ステージ、ＷＢ（ライトバック）ステージ、及びＲＥＴ（命令リタイアメント）ステージである。
【０００６】
以下、その７つのステージを一例として取りあげ、スーパースカラプロセッサの動作原理を簡単に説明する。
【０００７】
まず、複数の命令フェッチ部は、ＩＦステージで命令キャッシュから複数の命令を同時にフェッチし、次に、対応する命令デコード部は、ＩＤステージで複数のデコードする命令を、デコードするとともにリネームし、その複数のデコードした命令を発行キューへと置く。次に、決定手順（即ち、発行ロジックの決定手順）がＩＳステージで複数のデコードした命令に対して実行され、発行キューの各デコードした命令を発行できるか否かについて決定し、ＲＲステージに入る。
【０００８】
パイプライン式のスーパースカラプロセッサのＩＰＣ性能を改善するために、発行キューのそのデコードした命令は、続くＥＸステージでより多くの命令を実行するように可能な限り多く同時に発行すべきである。
【０００９】
デコードした命令を発行することができるか否かに影響する要素は、主に、デコードした命令を実行する上で必要とされるソースオペランドが準備されているか否か、及び、関数部（例えば、浮動小数点加算部及び乗算／除算部）が利用可能か否かを含む。その２つの要素に対応して、ＩＳステージで実行すべき発行ロジックの決定手順は、ウェイクアップロジックの決定手順及び選択ロジックの決定手順からなる。
【００１０】
１．ウェイクアップロジックの決定手順
通常、発行キューの同時実行のために検出すべき１組の命令グループは、ウィンドウ（又は、発行ウィンドウ）と称される。パイプライン式のスーパースカラプロセッサでは、発行ウィンドウ内の検出すべき命令のソースオペランドは、そのパイプラインで実行された命令から生成される目的オペランドによって決定される。従って、そのパイプラインのＥＸステージで実行される命令の結果（即ち、実行した命令の目的オペランド）がサイクル毎にデータバスを介して送信されると、発行ウィンドウ内の検出すべき各命令は、それ自身のソースオペランドと送信された目的オペランドとをそれぞれ比較し、送信された目的オペランドが、その命令が必要とするソースオペランドであるか否かを判別する。この比較の決定手順がウェイクアップロジックの決定手順である。
【００１１】
検出すべき命令により必要とされるソースオペランドの１つが、送信された目的オペランドと対応する場合には、検出すべき命令のソースオペランドが準備されているか否かを示す、対応するタグが“取得可能”に設定され、検出すべき命令により必要とされるソースオペランドの全てが、準備済み、即ち全てのソースオペランドのタグが“取得可能”である場合には、検出すべき命令は、発行すべき状態に入る。
【００１２】
ウェイクアップロジックの決定手順の実行中、発行ウィンドウが大きいほど、検出すべき命令の数が多くなり、発行すべき状態に入る命令の可能性が高くなり、発行キューのデコードした命令の発行数の増大に味方することになる。しかしながら、発行ウィンドウのサイズがむやみに増大すると、送信する目的オペランドに対するデータバスの長さをそれに応じてより長くすることが必要とされ、目的オペランドを送信することによってもたらされるレイテンシの延長を生じさせることになる。更に、発行ウィンドウ内の検出すべき命令の数を増大させて、実行される比較動作の数も増大し、更にウェイクアップロジックの決定手順を実行する時間を長引かせることになる。従って、発行ウィンドウのサイズは、命令発行数を適切に増大させるように設定される必要がある。
【００１３】
２．選択ロジックの決定手順
ウェイクアップロジックの決定手順の後、発行すべき状態に入る各命令は、次のＲＲステージに入る前に選択ロジックの決定手順を必要とする。その理由は、（１）発行すべき状態に入る命令の数は、プロセッサの関数部の数より多いことがありうること、及び（２）幾つかの命令を関数部のサブ組によってのみ実行できることがあり、例えば、プロセッサに１つの乗算器のみがある場合に、全ての乗算演算をこの乗算器で実行しなければならない。それ故、命令が、選択ロジックの決定手順を経て発行すべき状態の命令から選択的に発行されると、次のＥＸステージでのリソースコンフリクトを効果的に抑制することができる。
【００１４】
更に、選択ロジックの決定手順の後に、その命令に依存する次の命令（例えば、次の命令の実行に必要とされるソースオペランドは発行された命令を実行することにより生成される目的オペランドから来ている）は、発行すべき状態に既に入っている命令が発行される後でのみ、そのウェイクアップロジックの決定手順を有効とできる。パイプライン式のスーパースカラプロセッサでは、ウェイクアップロジックの決定手順及び選択ロジックの決定手順からなる“クリティカルループ”として知られるその方式は、依存性の命令間のデータコンフリクトを効果的に抑制することができる。
【００１５】
上述のウェイクアップロジックの決定手順及び選択ロジックの決定手順を経てＩＳステージで同時に発行される命令に関して、それら命令は、ＲＲステージで、レジスタファイルの対応する物理レジスタから、それぞれのソースオペランドを読み取り、次に選択ロジックの決定手順の際に選択された関数部にて、続くＥＸステージで対応する関数演算を実行する。ここで、異なる演算は異なるサイクルを必要としうる。例えば、整数加算演算を実行するのに必要とされるサイクル数は、通常、浮動少数点の乗算演算のサイクル数よりも短い。従って、ＲＲステージからＥＸステージへと同時に移行する命令は、ＥＸステージで生成した命令の演算結果を得るのに異なるサイクルとなりうる。
【００１６】
それぞれのＥＸステージで演算結果を得た後、実行した命令の各々は、それぞれＷＢステージでレジスタファイルの対応する物理レジスタへと演算結果（即ち、目的オペランド）を格納し、そのパイプラインにおける発行ウィンドウのＩＳステージでの次の命令がウェイクアップロジックの決定手順を実行するように、上述したデータバスを介して目的オペランドを送信する。
【００１７】
ＷＢステージの後、実行された命令は、最終的にＲＥＴステージでそのパイプラインの全ての操作手順を終了することになる。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
発行ウィンドウ内の検出すべきデコードした命令の数を増大することにより、ＩＰＣを改善することは、明らかに効果的な方法であることは上述の説明から容易に分かる。しかしながら、上述したように、デコードした命令の数の増大で、ウェイクアップロジックの決定手順を実行する時間も著しく増大し、それはＩＰＣ性能の劣化に確実に通じるものとなる。
【００１９】
従って、この矛盾を解決するために、命令を発行する新規な方法を提案することが必要とされる。そして、これが本発明の目的である。
【課題を解決するための手段】
【００２０】
本発明の目的の１つは、命令発行方法を提供することにあり、その方法によって、ウェイクアップロジックの決定手順を実行する時間を減少させ、プロセッサのＩＰＣ性能を改善する。
【００２１】
本発明によるパイプライン式のプロセッサにて用いられる命令発行方法を提供し、本発明による命令発行方法は、処理されるための命令をデコードして、ある種類の命令を取得するステップと、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算するステップと、前記サイクル数に従って、その命令がライトバックステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けするステップとを含み、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした方法である。
【００２２】
本発明によるパイプライン式のプロセッサにて用いられる命令発行装置を提供し、本発明による命令発行装置は、処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算する計算部と、前記サイクル数に従って、その命令がライトバックステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けする制御部とを備え、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした装置である。
【００２３】
本発明によるパイプライン式のプロセッサを提供し、本発明によるプロセッサは、処理されるための命令をデコードし、ある種類の命令を取得するデコード部と、前記種類の命令に従って、その命令に対して実行ステージで占有されるサイクル数を計算する計算部と、前記サイクル数に従って、その命令がＷＢステージに入る前の所定のサイクルで前記命令の目的オペランドを、取得可能としてマーク付けする制御部であって、前記目的オペランドが取得可能である場合に従って、ソースオペランドとして前記目的オペランドを取得する次の命令が次の演算を実行するようにした、前記制御部と、前記命令に対して対応する演算を実行し、前記命令の前記目的オペランドを生成する実行部とを備える。
【００２４】
本発明による、上述及び他の目的、特徴及び他の利点は、図面に伴う以下の詳細な説明により明確に理解される。
【００２５】
本発明の好適な実施例に関して、以下、各図を参照して詳細に説明する。
【００２６】
各図では、同一又は同様な要素には同一の参照番号を付している。
【発明を実施するための最良の形態】
【００２７】
本発明にて提案される命令発行方法に関して、まず、デコードした命令によってＥＸステージで占有されるサイクル数は、デコードした命令の演算種類に従って計算され、占有されるサイクルは、デコードした命令がＲＲステージに対して発行されるときにカウントされ、発行キューの命令にまだ依存する次の命令は、ＷＢステージに入る後でのみ、その次の命令が発行すべき状態に入ることが許容されるわけではなく、ＥＸステージの最後のサイクルの１サイクル前に、発行すべき状態に入ることが許容される。
【００２８】
本発明にて提案される命令発行方法をより明確にするために、１秒あたり何百万もの命令を実行できる既存のマイクロプロセッサＭＩＰＳ  Ｒ１００を例として、図２Ａ及び図２Ｂを参照して、スーパースカラプロセッサのウェイクアップロジックの実行手順を説明する。
【００２９】
図２Ａに、１０サイクルのパイプラインの各ステージで命令ｎからｎ＋７をそれぞれ示す。ここで、命令ｎ＋３により必要とされる各ソースオペランドは、それぞれ以前に実行した命令ｎ＋１及びｎ＋２の目的オペランドから来ている。
【００３０】
図２Ｂに，プロセッサに設けられるルックアップテーブルの一群のタグを示す。ここで、命令ｎ、ｎ＋１、ｎ＋２及びｎ＋３の目的オペランドが、それぞれ物理レジスタｐ、ｐ＋１、ｐ＋２及びｐ＋３に格納されると仮定すると、その一群のタグは、それぞれ命令ｎ、ｎ＋１、ｎ＋２及びｎ＋３の目的オペランドが対応する物理レジスタに格納されているか否かを示すために用いられる。タグが０であれば、対応する目的オペランドは、まだ対応する物理レジスタに格納されていない（即ち、対応する目的オペランドは取得可能ではない。）ことを意味するものと仮定し、逆に、タグが１であれば、対応する目的オペランドは、対応する物理レジスタに格納されている（即ち、対応する目的オペランドは取得可能である。）ことを意味する。ハードウェアに実現されるときに、ルックアップテーブルを（ｍｘ１）ビットマルチポートＲＡＭ（ランダムアクセスメモリ）とでき、ここに、ｍは、レジスタファイルの物理レジスタの数である。
【００３１】
一般に、命令が発行キューへとディスパッチされるときに、そのディスパッチ時点で、ルックアップテーブル内の対応するタグは、全て“取得不可”状態にある。その状態は、命令がＥＸステージを経て対応する演算を実行した後、演算結果（目的オペランド）がＷＢステージでレジスタファイルの対応する物理レジスタへと書き込まれるときに、タグが“取得可能”状態に設定されるまで維持される。従って、その目的オペランドを必要とする次の命令が、上述のスーパースカラプロセッサの動作原理に従って、タグの指標に基づいて、全てのソースオペランドが準備されているときに、発行すべき状態に入ることになり、選択ロジックの決定手順を経てＲＲステージへと発行される。
【００３２】
図２Ａ及び図２Ｂに示すように、各命令がそれぞれのＷＢステージに入る前では、その対応するタグは０である。命令ｎ、ｎ＋１及びｎ＋２が、それぞれ６番目、７番目、８番目のサイクルで、ＷＢステージに入るときに、それら対応するタグはそれぞれ１に設定される。
【００３３】
命令を発行することが許容されるか否かは、命令によって必要とされるソースオぺランドに対応するタグがルックアップテーブルにて“取得可能”とマーク付けされているか否かによって決定され、更に、ソースオペランドが“取得可能”であるか否かは、以前に実行した依存性の命令がＷＢステージで既に目的オペランドをターゲットレジスタへと書き込んでいたか否かによって決定される。従って、図２Ｂに示すように、命令ｎ＋３のソースオペランドは、それぞれ命令ｎ＋１及びｎ＋２から来ており、８番目のサイクルまでに全てのソースオペランドが得られ、そしてその命令ｎ＋３が、発行すべき状態に入り、且つ、選択ロジックの決定手順を経て発行されることが許容されている後であることを、ウェイクアップロジックの決定手順を経て検出できる。それ故、命令ｎ＋３は、７番目及び８番目のサイクルにてＩＳステージで残留していなければならず、対応するソースオペランドがルックアップテーブルにて“取得可能”であることについての情報を取得するために、２つのウェイクアップロジックの決定手順が、命令ｎ＋１が目的オペランドを生成する時の７番目のサイクルで、及び、命令ｎ＋２が目的オペランドを生成する時の８番目のサイクルで、それぞれ実行される。
【００３４】
しかし、スーパースカラプロセッサにて通常用いられるバイパス回路の構成原理によれば、命令ｎ＋１及びｎ＋２が双方とも１サイクル内で実行できる命令である場合には、命令ｎ＋３は７番目のサイクルにてＲＲステージに入ることができる（即ち、ＩＳステージでの命令ｎ＋３は、６番目のサイクルにて発行されることが許容される。）。特に、命令ｎ＋３が７番目のサイクルでＲＲステージに入るときに、命令ｎ＋１はＷＢステージに入っているので、命令ｎ＋３は、レジスタファイルの対応する物理レジスタの値を読み出すことにより、命令ｎ＋１によって生成した目的オペランドを得ることができる。ここで、命令ｎ＋２がまだＥＸステージであっても、命令ｎ＋３は、バイパス回路を経て命令ｎ＋２によって生成した目的オペランドを得ることができる。それ故、命令ｎ＋３は、このようにＲＲステージで必要とされるソースオペランドを得た後、１０番目のサイクルまでＥＸステージに入ることを待つことなく、８番目のサイクルで対応する演算をスムーズに実行できる。
【００３５】
この際、図２Ａ及び図２Ｂの場合に、ＩＳステージで命令ｎ＋３のみが、発行されることができるか否かについて決定されるときに、もはやルックアップテーブルのタグの指標に依存していないのであれば、即ち、もはやそのＷＢステージで以前の関連する命令によってライトバックした演算結果に依存していない場合に、命令ｎ＋３は、確実により早くＲＲステージに入ることができることが分かる。その際、命令ｎ＋１、ｎ＋２は、まだＷＢステージに入っていない場合でさえ、命令ｎ＋３は、発行すべき状態に入り、且つ、選択ロジックの決定手順を経てＲＲステージへと発行されることが許容されることに対して、障害が確実にないものである。
【００３６】
この点に基づいて、本発明の新規な命令発行方法を提供している。本発明の方法では、発行可能化テーブルを確立し、発行可能化テーブルは、ＩＳステージでの各命令によって必要とされる情報を正しく反映することを可能にし、ＩＳステージでの命令がウェイクアップロジックの決定手順を実行するときに、命令を発行することが可能か否かを発行可能化テーブルから読み出すことにより決定することができる。ルックアップテーブルから読み出すことによる従来の命令発行方法と比較して、本発明は、ウェイクアップロジック動作を実行する時間を減少させ、これによりウェイクアップロジック動作を実行することによりもたらされるレイテンシをより低減させることができる。
【００３７】
本発明の提案される命令発行方法を、図３Ａ及び図３Ｂを参照して詳細に説明する。  
【００３８】
図３Ａに、本発明の命令発行方法によるパイプラインの各ステージで１０サイクルにおける命令ｎからｎ＋９を示す。ここで、命令ｎ＋３の各ソースオペランドは、それぞれ以前に実行された命令ｎ＋１及びｎ＋２からの目的オペランドである。
【００３９】
図３Ｂに、本発明の命令発行方法によるプロセッサに新たに設けられた発行可能化テーブルの一群のタグを示す。また、発行可能化テーブルは、ｍｘ１ビットマルチポートＲＡＭを用いることにより実現することができ、ここで、ｍは、レジスタファイルの物理レジスタの数に対応する。
【００４０】
図３Ｂに示すように、発行可能化テーブルでは、各タグの値は、対応する目的オペランドが対応する物理レジスタに書き込まれているか否かを示すために用いるものではないが、ＲＲステージへと以前に発行された命令が、その命令に依存する次の命令の制限を無効化し、その次の命令が発行すべき状態に入ることを許容するために用いられる。その次の命令が発行すべき状態に入ることができるか否かは、ソースオペランドをその次の命令に与える全ての以前の命令が、その次の命令が発行すべき状態に入ることを許容するか否かによって決定される。そして、その次の命令を発行すべき状態に入った後に発行できるか否かは、選択ロジックの決定手順を更に実行することによって決定される。さらに、対応するタグの指標が１である場合、それは、その命令が、その関連する次の命令に対して発行すべき状態に入ることを許容することを意味しており、つまり、以前に発行された命令の目的オペランドが、ソースオペランドとしてその次の命令によって用いられるときに、発行可能化テーブルの目的オペランドに対応するタグが１であれば、その次の命令によって必要とされるソースオペランドは、“取得可能”状態にあると見える。
【００４１】
本発明の好適な実施例によれば、ＲＲステージへと以前に発行された命令は、その関連する次の命令が発行すべき状態に入ることを許容するために、可能なかぎり早くそのタグを発行可能化テーブルに設定すべきであり、これにより、その次の命令が発行されることを許容する可能性を増大させ、不要なウェイクアップロジック動作を省くことになる。
【００４２】
デコードされた後、デコードした命令に示される演算種類に従ってＥＸステージで演算結果を生成するために、命令は、その命令によって必要とされるサイクル数を正確に決定できる。例えば、一般のプロセッサの関数部では、通常１サイクルのみが整数の加算又は減算演算を実行するのに必要とされるが、浮動少数点の乗算又は除算演算に対しては、通常、数サイクルが必要とされる。種々のプロセッサが、浮動少数点の乗算又は除算演算を実行するのに種々のサイクル数を必要とするが、あらゆるプロセッサが比較的一定数のサイクルで浮動少数点の乗算又は除算演算を実行する。従って、ＲＲステージへと以前に発行された命令は、ＥＸステージの最後のサイクルの１サイクル前より早くないときに、対応するタグを発行可能化テーブルに設定することができ、このことは、以下のセクションで説明する。
【００４３】
図３Ａ及び図３Ｂに示されるように、本発明の方法によれば、１サイクルのみが命令ｎの実行を完了するのに必要とされるので（即ち、ＥＸステージでは１サイクルのみがある）、そのサイクルの１サイクル前（４番目のサイクル）に命令ｎがＲＲステージ入るときに、発行可能化テーブルの対応するタグを１に設定でき、このようにして、その命令ｎに依存する、ＩＳステージでの次の命令は、命令ｎからの制限を押しのけて、４番目のサイクルで発行すべき状態に入ることができる。ソースオペランドを次の命令に与える、以前に発行された関連する命令の各々が、その次の命令が４番目のサイクルで発行すべき状態に入ることを許容し、その次の命令を実行する関数部が、選択ロジックの決定手順を経て利用可能とされる場合には、その次の命令を４番目のサイクルで発行することができる。
【００４４】
同様に、命令ｎ＋１及びｎ＋２は、５番目及び６番目のサイクルで、発行可能化テーブルのそれぞれのタグを１に設定する。
【００４５】
前述したように、命令ｎ＋３は命令ｎ＋１及びｎ＋２に依存し、つまり、命令ｎ＋３の各ソースオペランドは、それぞれ命令ｎ＋１及びｎ＋２の目的オペランドから来ている。６番目のサイクルで、命令ｎ＋１及びｎ＋２に対応するタグは、双方とも１であるので、ＥＸステージでの命令ｎ＋１とＲＲステージでの命令ｎ＋２の双方は、この時点でまだＷＢステージへと入っておらず、目的オペランドがレジスタファイルの対応する物理レジスタへと格納されていないが、命令ｎ＋１及びｎ＋２は、本発明の方法によって、命令ｎ＋３が発行すべき状態に入ることを妨げなくなる。
【００４６】
命令ｎ＋３は、選択ロジックの決定手順を経て６番目のサイクルで、ＲＲステージへと発行されることが許容されると、命令ｎ＋３は７番目のサイクルでＲＲステージに入り、命令ｎ＋１及びｎ＋２は、それぞれパイプラインのＷＢステージ及びＥＸステージに入る。この時点で、ＲＲステージでの命令ｎ＋３は、命令ｎ＋１に対応する物理レジスタの値を読み取ることによって、必要とされるソースオペランドを得るとともに、バイパス回路を経て命令ｎ＋２を実行する演算結果を得て、別のソースオペランドを取得し、８番目のサイクルで２つのソースオペランドを用いて、関数部の対応する演算をスムーズに実行する。
【００４７】
図２Ａと比較して、命令ｎ＋３は、２サイクルより早く、ＲＲステージ及びＥＸステーにそれぞれ入ることになり、パイプラインのＩＳステージで命令ｎ＋３のバブル、及び、そのバブルでウェイクアップロジック動作を実行することによってもたらされるレイテンシ及び電力消費を省くことになる。
【００４８】
他方では、命令ｎ＋３が、６番目のサイクルで選択ロジックの決定手順を経てＲＲステージに入ることを許容されない場合には、命令ｎ＋３は、７番目のサイクルで待機しなければならず、従って７番目のサイクルはバブルになる。このバブルでは、命令ｎ＋３のウェイクアップロジックの決定手順を、発行可能化テーブルの対応するタグを再度参照することにより、実行することができる。或いは又、命令ｎ＋３のウェイクアップロジックの決定手順を、前述した従来のルックアップテーブルを参照することにより実行することができ、ウェイクアップロジック動作を完了した後、選択ロジックの決定手順を継続し、命令ｎ＋３が７番目のサイクルでＲＲステージに発行することが許容されるか否かを決定することができる。
【００４９】
命令ｎ＋３が７番目のサイクルでＲＲステージへと発行されることが許容される場合に、８番目のステージで、命令ｎ＋１は既にＲＥＴステージに入っており、命令ｎ＋２はＷＢステージに既に入っている。この時点で、ＲＲステージでの命令ｎ＋３は、命令ｎ＋１及びｎ＋２に対応する物理レジスタの値を読み出すことによって必要とされるその２つのソースオペランドを得て、その２つのソースオペランドを用いることにより、次の９番目のサイクルで関数部の対応する演算を実行する。
【００５０】
上述の図３Ａにおいて、命令例ｎ、ｎ＋１及びｎ＋３は、全て、１サイクル内で実行できる命令である。それ故、本発明によれば、これら命令は、それぞれのＲＲステージで、関連する次の命令が発行すべき状態になることを許容する。実行のために数サイクルを必要とする命令に関して、以下の方法は、正しく発行すべき状態に入る次の命令における命令制限を無効化するのに用いられる。
【００５１】
図４を参照して、ＥＸステージで命令が対応する演算を完了するために必要とするサイクル数を、命令の演算種類に従ってまず計算する（ステップＳ１０）。例えば、ＥＸステージでの命令は、目的オペランドを得るのにｋサイクルを必要とする。
【００５２】
次に、その命令に対してカウンタを設定し、カウンタの初期値はｋ−１に設定される（ステップＳ２０）。
【００５３】
命令がＲＲステージに入ると、カウンタの値が０であるか否かをチェックする（ステップＳ３０）。その値が０であれば、その命令が１サイクル内で実行できるものであることを意味しており、次に発行可能化テーブルにおけるその命令に対応するタグが図３Ａ及び図３Ｂに示される動作手順を経て設定される（ステップＳ６０）。その値が０でなければ、カウンタの値を、サイクルの終わりで自動的に１だけ減算する（ステップＳ４０）。
【００５４】
次の新たなサイクルに入ると、カウンタの減算した値が０であるか否かをチェックする（ステップＳ５０）。そのカウンタの値が０であれば、ステップＳ６０で、発行可能化テーブルにおけるその命令に対応するタグを設定することが実行され、そのカウンタの値が０でなければ、ステップＳ４０で、そのカウンタの値を、サイクルの終わりで自動的に１だけ減算するように続けられる。
【００５５】
スーパースカラプロセッサに関して、ウェイクアップロジックの決定手順及び選択ロジックの決定手順からなる発行ロジックの決定手順は、不要なバブルの挿入を抑制するために１サイクル内で実行すべきである。それ故、その命令は、（ｋ−１）番目のサイクルで発行可能化テーブルの対応するタグを設定するが、つまり、選択ロジックの決定手順を実行するために関連する次の命令が発行すべき状態に入ることを許容して、（ｋ−２）番目のサイクルで、即ちカウンタが１だけ減算されるときに、その命令は、ウェイクアップロジックの決定手順を有効化することからの、次の命令における制限を実際に無効化している。従って、（ｋ−１）番目のサイクルが来るときに、次の命令は、ウェイクアップロジックの決定手順を実行し、発行可能化テーブルのタグの指標に従って次の命令に関連付けられた以前に発行された全ての命令に対応するタグを検索し、次の命令が発行すべき状態に入ることができるか否かを決定して、選択ロジックの決定手順を実行する。
【００５６】
表１は、完了するのに異なるサイクル数を必要とする命令をリストしており、それら命令が、演算種類に基づいてカウンタ設定の初期値に従ってＲＲステージへと発行されるときの或るサイクルでウェイクアップロジックの決定手順を有効化することからの、関連する次の命令の制限を如何にして無効化するかについて、及び、それら命令が対応するサイクルで発行可能化テーブルの対応するタグを如何にして設定するかについて、リストしている。
【００５７】
【表１】
2008527559.tif 000003
【００５８】
上述した本発明の好適な実施例において、発行可能化テーブル内の命令のタグは、関連付けられた次の命令が発行すべき状態に入ることを許容するために、ＥＸステージの（ｋ−１）番目のサイクルで設定される。或いは又、本発明の別の実施例では、発行可能化テーブル内の命令に対応するタグは、関連付けられた次の命令が発行すべき状態に入ることを許容するために、ＥＸステージのｋ番目のサイクルで設定される。ＷＢステージでルックアップテーブル内のタグを更新する既存のプロセッサと比較して、発行可能化テーブル内の対応するタグがｋ番目のサイクルで更新されるとしても、まだ、パイプラインのＩＳステージで検出すべき命令がそのソースオペランドを待つときに発生する、起こりうるバブルを効果的に低減させることができるようになる。
【００５９】
上述した本発明の命令発行方法は、ソフトウェア又はハードウェア、或いはその双方の組み合わせで実現することができる。
【００６０】
ハードウェアで、即ち命令発行回路で実現するときには、デコード部、発行可能化テーブルを格納するメモリ、発行可能化テーブル内のタグの値を読み出す読出部、発行ロジック手順の実行で関数部が利用可能か否かを決定する決定部、及び、ＲＲステージに命令を発行する発行部は、全て既存のマイクロプロセッサと同一又は同様なコンポーネントを用いることができる。
【００６１】
本発明の命令発行回路には、デコードした命令の演算種類に従って命令の演算を実行するのに必要とされるサイクル数を計算する計算部、カウンタ（そのカウンタの初期値及び動作原理は、前述した命令発行方法のものと同一である）、及び、カウンタの値が０まで減算したときにメモリ内の対応するレジスタの値を設定する制御部が加えられる。それ故、本発明による命令発行回路は、既存のスーパースカラプロセッサに対して大きな変更をすることなく適用することが容易である。
【００６２】
本発明の命令発行回路の様々なコンポーネントによって実行される演算は、提案した命令発行方法についての上述の説明において述べられており、その説明は省略する。
【００６３】
本発明の利点
本発明の命令発行方法及び命令発行回路についての上述の説明に関して、従来技術のルックアップテーブルを発行可能化テーブルで置き換えられることは、容易に理解できる。発行キューの検出すべき命令が、発行すべき状態に入ることが許容されるか否かを決定するときに、実行した命令がＷＢステージに入っていたか否か、及び、目的オペランドを物理レジスタに書き込んでいたか否かに基づくことは、本発明ではもはや当てにしていない。以前に発行された命令は、ＷＢステージに入る前に、対応するサイクルで発行可能化テーブル内の対応するタグを設定し、検出すべき命令が発行すべき状態に入ることが許容されるか否かに基づいて、以前の命令制限を無効化する。従って、既存のスーパースカラプロセッサと比較して、本発明は、パイプラインのＩＳステージで検出すべき命令がそのソースオペランドを待つときに発生する、起こりうるバブルを減少させ、そのバブルでウェイクアップロジック動作を実行することによってもたらされるレイテンシ及び電力消費を抑制する。
【００６４】
本発明の命令発行方法及び命令発行回路は、パイプライン式のスーパースカラプロセッサの使用に好適であり、更に、同じくマルチスレッドプロセッサ及び組み込みプロセッサにも好適である。
【００６５】
本発明にて開示される方法及び回路は、特許請求の範囲によって規定されるように、本発明の趣旨及び範囲を逸脱することなく様々に変更できることは当業者に明らかである。
【図面の簡単な説明】
【００６６】
【図１】パイプラインの実行ステージでの命令を示す概略図である。
【図２Ａ】従来のスーパースカラプロセッサのパイプラインの複数の命令を示す概略図である。
【図２Ｂ】ルックアップテーブル内の図２Ａの幾つかの命令に対応するタグを示す概略図である。
【図３Ａ】本発明の実施例によるスーパースカラプロセッサのパイプラインの複数の命令を示す概略図である。
【図３Ｂ】発行可能化テーブル内の図３Ａの幾つかの命令に対応するタグを示す概略図である。
【図４】本発明による命令発行方法の一実施例を示すフローチャートである。
【図１】
2008527559.tif 000004
【図２Ａ】
2008527559.tif 000005
【図２Ｂ】
2008527559.tif 000006
【図３Ａ】
2008527559.tif 000007
【図３Ｂ】
2008527559.tif 000008
【図４】
2008527559.tif 000009
【国際調査報告】
2008527559.tif 000010
2008527559.tif 000011
2008527559.tif 000012