(57)【要約】【課題】デコードサイクル内での制御論理を深くすることなく非対称命令を特定の発行先に発行可能とする。【解決手段】対称命令発行部５６は、複数命令が全て対称命令ある場合、異なる演算器２６，２８毎に設けた複数のリザベーションステーション２２−１，２２−２に対しフルになるまで対称命令を発行する。非対称命令発行部５６は、複数命令の中に非対称命令があり、残りが対称命令であることを判別した場合、非対称命令を先行フローと後続フローのマルチフローに展開して特定の演算器２６に対応して設けたリザベーションステーション２２−１に非対称命令を発行し、残りの対称命令は非対称命令とは異なる発行サイクルで異なる演算器２６，２８毎に設けた複数のリザベーションステーション２２−１，２２−２に対しフルになるまで発行する。【選択図】　　　　　図１
2004038751.tif 000002
【特許請求の範囲】
【請求項１】
インオーダーで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダーで命令を確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令制御を実行するプロセッサに於いて、
同時にフェッチしてデコードされた複数命令の全てが異なる演算器で演算可能な対称命令であるか、複数命令の中に特定の演算器でのみ演算可能な非対称命令があり残りが前記対称命令であるかを判別する命令判別部と、
複数命令の全てが対称命令あることを判別した場合、異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで前記対称命令を発行する対称命令発行部と、
複数命令の中に非対称命令があり残りが対称命令であることを判別した場合、前記非対称命令を先行フローと後続フローのマルチフローに展開して前記特定の演算器に対応して設けたリザベーションステーションに前記非対称命令を発行し、残りの対称命令は前記非対称命令とは異なる発行サイクルで異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで発行する非対称命令発行部と、
を備えたことを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサにおいて、前記非対称命令発行部は、命令語レジスタ群に保持された非対称命令を、先行フローのデコードサイクルでマルチフロー命令語レジスタに転送して保持し、後続フローのデコードサイクルで前記マルチフロー命令語レジスタの非対称命令を対応するリザベーションステーションに発行することを特徴とするプロセッサ。
【請求項３】
請求項２記載のプロセッサにおいて、前記非対称命令発行部は、命令語レジスタ群に保持された非対称命令より前の対称命令を、先行フローのデコードサイクルで複数のリザベーションステーションに発行し、更に、後続フローのデコードサイクルの次のデコードサイクルで残りの対称命令を複数のリザベーションステーションに発行することを特徴とするプロセッサ。
【請求項４】
請求項２記載のプロセッサにおいて、前記対称命令発行部及び前記非対称命令発行部は、命令レジスタ群に保持している対称命令を、レジスタ位置に対応して予め定めたリザベーションステーションに向けて発行することを特徴とするプロセッサ。
【請求項５】
請求項４記載プロセッサに於いて、前記対称命令発行部及び前記非対称命令発行部は、対称命令を予め定めたリザベーションステーションに向けて発行する際に、発行先のリザベーションステーションの使用状態がフルの場合、使用状態に空きのある他のリザベーションステーションに発行することを特徴とするプロセッサ。
【請求項６】
請求項１記載プロセッサに於いて、前記対称命令は加算命令又は減算命令であり、前記非対称命令は乗算命令又は除算命令であり、前記実行部に、前記加算命令、減算命令、乗算命令及び除算命令の演算を実行可能な非対称命令演算器と、前記加算命令及び減算命令の演算を実行可能な対称命令演算器を設けたことを特徴とするプロセッサ。
【請求項７】
インオーダーで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダーで命令を確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令を実行する命令制御方法に於いて、
命令判別部により、同時にフェッチしてデコードされた複数命令の全てが異なる演算器で演算可能な対称命令であるか、複数命令の中に特定の演算器でのみ演算可能な非対称命令があり残りが前記対称命令であるかを判別する命令判別ステップと、
対称命令発行部により、複数命令の全てが対称命令あることを判別した場合、異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで前記対称命令を発行する対称命令発行ステップと、
非対称命令発行部により、複数命令の中に非対称命令があり残りが対称命令であることを判別した場合、前記非対称命令を先行フローと後続フローのマルチフローに展開して前記特定の演算器に対応して設けたリザベーションステーションに前記非対称命令を発行し、残りの対称命令は前記非対称命令とは異なる発行サイクルで異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで発行する非対称命令発行ステップと、
を備えたことを特徴とする命令制御方法。
【請求項８】
請求項７記載の命令制御方法に於いて、前記非対称命令発行ステップは、命令語レジスタ群に保持された非対称命令を、先行フローのデコードサイクルでマルチフロー命令語レジスタに転送して保持し、後続フローのデコードサイクルで前記マルチフロー命令語レジスタの非対称命令を対応するリザベーションステーションに発行することを特徴とする命令制御方法。
【請求項９】
請求項８記載の命令制御方法に於いて、前記非対称命令発行ステップは、命令語レジスタ群に保持された非対称命令より前の対称命令を、先行フローのデコードサイクルで複数のリザベーションステーションに発行し、更に、後続フローのデコードサイクルの次のデコードサイクルで残りの対称命令を複数のリザベーションステーションに発行することを特徴とする命令制御方法。
【請求項１０】
請求項８記載の命令制御方法に於いて、前記対称命令発行ステップ及び前記非対称命令発行ステップは、命令語レジスタ群に保持している対称命令を、レジスタ位置に対応して予め定めたリザベーションステーションに向けて発行し、この発行先のリザベーションステーションの使用状態がフルの場合、使用状態に空きのある他のリザベーションステーションに発行することを特徴とする命令制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動的パイプラインスケジューリングにより命令を実行するプロセッサ及び命令制御方法に関し、特に、異なる種類の演算器に対する命令の発行を制御するプロセッサ及び命令制御方法に関する。
【０００２】
【従来の技術】
従来、動的パイプラインスケジュールを実行するプロセッサにあっては、プログラム順序に依存したインオーダーの命令発行部、プログラムの順番に依存しないアウトオブオーダーの命令実行部、更に、プログラム順序に依存したインオーダーの確定部（コミット部）という３つに分かれて処理を実行する。
【０００３】
即ち、命令発行部は、インオーダーにより命令をフェッチしてデコードし、リザベーションステーションに命令操作（オペコードなど）とオペランドを保持させる。命令実行部は、リザベーションステーションに全てのオペランドが準備され、演算器が利用可能となり次第、アウトオブオーダーで投機的に命令を実行し、結果を得る。確定部は、分岐予測結果などに基づき命令の確定を判別してインオーダーで命令を完了させ、実行結果をレジスタファイルまたはメモリ（ストアの場合のみ）に入れる。
【０００４】
このような動的パイプラインスケジューリングを採用したプロセッサにあっては、命令実行部に種類の異なる複数の演算器を設けており、演算器の種類に応じて命令を発行する制御が必要となる。
【０００５】
図９は、従来のプロセッサにおける命令発行制御の説明図である。図９において、命令発行部には例えば４つの命令語レジスタ１００−１〜１００−４が設けられ、命令キャッシュから同時に４命令がフェッチされ、デコードされる。命令語レジスタ１００−１〜１００−４の命令は、選択回路１０２と優先切替回路１０６を介してリザベーションステーション１０８−１，１０８−２に発行される。
【０００６】
命令実行部には例えば乗算除算演算器１１０と加算減算演算器１１２が設けられる。乗算除算演算器１１０は、乗算命令と除算命令以外に加算命令及び減算命令も実行できる。これに対し加算減算演算器１１２は加算命令及び減算命令の実行ができ、乗算命令や除算命令は実行できない。
【０００７】
このため乗算除算演算器１１０に対応して設けたリザベーションステーション１０８−１には、乗算命令、除算命令、加算命令及び減算命令が発行され、加算減算演算器１１２に対応して設けたリザベーションステーション１０８−２には、加算命令及び減算命令が発行される。
【０００８】
ここで加算命令及び減算命令は、命令語レジスタ１００−１〜１００−４から見て対称に配置されている乗算除算演算器１１０と加算減算演算器１１２の両方で実行可能であることから、対称命令と定義される。これに対し乗算命令及び除算命令は、命令語レジスタ１００−１〜１００−４から見て非対称に位置している乗算除算演算器１１０のみで実行可能であることから、非対称命令と定義される。
【０００９】
選択回路１０２は、命令レジスタ１００−１〜１００−４の全てに対称命令がフェッチされデコードされたときの発行先を設定している。この例では、選択回路１０２は、命令語レジスタ１００−１，１００−３の発行先としてリザベーションステーション１０８−１を設定し、命令語レジスタ１００−２，１００−４の発行先としてリザベーションステーション１０８−２を設定している。
【００１０】
優先切替回路１０６は、命令語レジスタ１００−１〜１００−４のいずれかに非対称命令がフェッチされてデコードされた場合、非対称命令を保持している命令語レジスタの発行先がリザベーションステーション１０８−１となるように切り替える。これによって発生頻度の少ない非対称命令は必ず乗算除算演算器１１０に対応して設けたリザベーションステーションに発行されることになる。
【００１１】
図１０は、図９の従来例について、命令語レジスタ１００−１〜１００−４の全てに対称命令として加算命令Ａｄｄがフェッチされデコードされた場合である。まず図１０（Ａ）で、命令語レジスタ１００−１，１００−２から選択回路１０２により設定された発行先であるリザベーションステーション１０８−１，１０８−２に加算命令Ａｄｄが発行される。
【００１２】
次に図１０（Ｂ）のように、命令語レジスタ１００−３，１００−４から選択回路１０２により設定された発行先であるリザベーションステーション１０８−１，１０８−２に加算命令Ａｄｄが発行される。尚、図１０（Ａ）（Ｂ）は同じデコードサイクルの処理である。
【００１３】
図１１は、図９の従来例について、命令語レジスタ１００−１に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされデコードされ、残りの命令語レジスタ１００−２〜１００−４に対称命令として加算命令Ａｄｄががフェッチされデコードされた場合である。
【００１４】
まず図１１（Ａ）で、命令語レジスタ１００−１から選択回路１０２により設定された発行先であるリザベーションステーション１０８−１に乗算命令Ｍｕｌｔｉｐｌｙが発行される。同時に命令語レジスタ１００−２から選択回路１０２により設定された発行先であるリザベーションステーション１０８−２に加算命令Ａｄｄが発行される。次に図１１（Ｂ）で図１０（Ｂ）と同じ処理を行う。
【００１５】
図１２は、命令語レジスタ１００−２に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされデコードされ、残りの命令語レジスタ１００−１，１００−３，１００−４に対称命令として加算命令Ａｄｄががフェッチされデコードされた場合である。
【００１６】
まず図１２（Ａ）で、命令語レジスタ１００−２の発行先は選択回路１０２により設定されたリザベーションステーション１０８−２であるが、この設定は正しくないことから、図９の優先切替回路１０６が動作し、命令語レジスタ１００−２の発行をリザベーションステーション１０８−１に切り替えてから乗算命令Ｍｕｌｔｉｐｌｙが発行される。同時に命令語レジスタ１００−１の発行先を優先切替回路１０６によりリザベーションステーション１０８−２に切替え、加算命令Ａｄｄを発行する。次に図１２（Ｂ）で、図１０（Ｂ）と同じ処理を行う。
【００１７】
図１３は、命令語レジスタ１００−３に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされデコードされ、残りの命令語レジスタ１００−１，１００−３，１００−４に対称命令として加算命令Ａｄｄががフェッチされデコードされた場合である。この場合は、選択回路１０２の設定にしたがった発行が行われる。
【００１８】
図１４は、命令語レジスタ１００−４に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされデコードされ、残りの命令語レジスタ１００−１〜１００−３に対称命令として加算命令Ａｄｄがフェッチされデコードされた場合である。
【００１９】
まず図１４（Ａ）は、図１０（Ａ）と同じである。次に図１３（Ｂ）のように、命令語レジスタ１００−４の発行先は選択回路１０２により設定されたリザベーションステーション１０８−２であるが、この設定は正しくないことから、図９の優先切替回路１０６が動作し、命令語レジスタ１００−４の発行先をリザベーションステーション１０８−１に切り替えてから乗算命令Ｍｕｌｔｉｐｌｙが発行される。同時に命令語レジスタ１００−３の発行先を優先切替回路１０６によりリザベーションステーション１０８−２に切替え、加算命令Ａｄｄを発行する。
【００２０】
【発明が解決しようとする課題】
しかしながら、このような従来の命令発行制御にあっては、図１２（Ａ）や図１４（Ｂ）のような場合、選択回路１０２で設定している命令発行先が正しくないことから、これを判別して優先切替回路１０６によって発行先を切り替える制御を必要とする。このため優先切替回路１０６で発行先を切替制御する分、デコードサイクルにおいて制御論理が深くなる。つまり、デコードサイクルにおける優先切替回路の付加で、プロセッサの動作周波数の向上を難しくするという問題がある。
【００２１】
本発明は、従来、選択回路及び優先切替回路を必要としていたものを、非対称命令の発行に際し、マルチフロー展開し、マルチフロー命令語レジスタからのみ、しかも同時には対称命令の命令語レジスタ群からはあえて発行を行わないことで、命令語レジスタからの対称命令の選択と発行を高周波の動作周波数で可能し、且つ非対称命令の発行も同時に他の命令を発行しないので選択回路が必要なく制御が単純化できるプロセッサ及び命令制御方法を提供することを目的とする。
【００２２】
【課題を解決するための手段】
図１は本発明の原理説明図である。本発明のプロセッサは、インオーダで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダで命令を確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令制御を実行する。
【００２３】
このようなプロセッサについて本発明は、同時にフェッチしてデコードされた複数命令の全てが異なる演算器（乗算除算演算器２６，加算減算演算器２８）で演算可能な対称命令であるか、複数命令の中に特定の演算器（乗算除算演算器２６）でのみ演算可能な非対称命令があり、残りが対称命令であるかを判別する判別部５４と、複数命令の全てが対称命令あることを判別した場合、異なる演算器（乗算除算演算器２６，加算減算演算器２８）毎に設けた複数のリザベーションステーション２２−１，２２−２に対しフルになるまで対称命令を発行する対称命令発行部５８と、複数命令の中に非対称命令があり、残りが対称命令であることを判別した場合、非対称命令を先行フローと後続フローのマルチフローに展開して特定の演算器（乗算除算演算器２６）に対応して設けたリザベーションステーション２２−１に非対称命令を発行し、残りの対称命令は非対称命令とは異なる発行サイクルで異なる演算器（乗算除算演算器２６，加算減算演算器２８）毎に設けた複数のリザベーションステーション２２−１，２２−２に対しフルになるまで発行する非対称命令発行部５６とを備えたことを特徴とする。
【００２４】
ここで、非対称命令発行部５６は、命令語レジスタ群４４に保持された非対称命令を、先行フローのデコードサイクルでマルチフロー命令語レジスタ４８に転送して保持し、後続フローのデコードサイクルでマルチフロー命令語レジスタ４８の非対称命令を対応するリザベーションステーション２２−１に発行する。
【００２５】
このように本発明は、非対称命令に対し内部的に先行フローと後続フローのマルチフローに展開し、先行フローの命令操作はノー・オペレーション（ｎｏ　ｏｐｅｒａｔｉｏｎ）として扱い、同時に、非対称命令をマルチフロー命令語レジスタに転送して保持し、次の後続フローの命令操作としてマルチフロー命令語レジスタから非対称命令を対応するリザベーションステーションに発行する。残りの命令は命令語レジスタにとどめたままにしておくことで、同サイクルでの他の命令の発行切替を必要としないため、高周波数の動作で非対称命令を特定のリザベーションステーションに優先的に発行させることができる。
【００２６】
非対称命令発行部５６は、複数の命令語レジスタ４４に保持された前にある対称命令を、先行フローのデコードサイクルで複数のリザベーションステーション２２−１，２２−２に発行し、更に、後続フローのデコードサイクルの次のデコードサイクルで残りの対称命令を複数のリザベーションステーション２２−１，２２−２に発行する。
【００２７】
対称命令発行部５８及び非対称命令発行部５６は、複数の命令語レジスタ４４に保持している対称命令を、レジスタ位置に対応して予め定めたリザベーションステーション２２−１，２２−２に向けて発行する。更に、対称命令を予め定めたリザベーションステーション２２−１に向けて発行する際に、発行先のリザベーションステーション２２−１の使用状態がフルの場合、使用状態に空きのある他のリザベーションステーション２２−２に発行する。これによってリザベーションステーションがフルになるまでデコードステージでのストールを回避する。
【００２８】
対称命令は加算命令又は減算命令であり、非対称命令は乗算命令又は除算命令であり、実行部に、加算命令、減算命令、乗算命令及び除算命令の演算を実行可能な非対称命令演算器（乗算除算演算器２６）と、加算命令及び減算命令の演算を実行可能な対称命令演算器（加算減算演算器２８）を設ける。
【００２９】
本発明は、インオーダーで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダーで命令を確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令を実行するプロセッサ命令制御方法を提供する。
【００３０】
この命令制御方法は、
命令判別部により、同時にフェッチしてデコードされた複数命令の全てが異なる演算器で演算可能な対称命令であるか、複数命令の中で特定の演算器でのみ演算可能な非対称命令があり残りが対称命令であるかを判別する命令判別ステップと、
対称命令発行部により、複数命令の全てが対称命令あることを判別した場合、異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで対称命令を発行する対称命令発行ステップと、
非対称命令発行部により、複数命令の中に非対称命令があることを判別した場合、非対称命令を先行フローと後続フローのマルチフローに展開して特定の演算器に対応して設けたリザベーションステーションに非対称命令を発行し、残りの対称命令は非対称命令とは異なる発行サイクルで異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで発行する対称命令発行ステップと、
を備えたことを特徴とする。尚、この命令制御方法の詳細は、プロセッサの場合と基本的に同じである。
【００３１】
【発明の実施の形態】
図２は、動的パイプラインスケジューリングにより命令を実行し、且つ本発明の命令発行制御を行うプロセッサのハードウェア構成のブロック図である。
【００３２】
図２において、プロセッサは、命令フェッチ部１０、分岐予測部１４、命令キャッシュ１２、命令発行部１６、リネーミング処理部１８、リザベーションステーション処理部２０、命令実行部２４、ストアバッファ３２、データキャッシュ３４、リソースモニタ３５及びレジスタファイル３６を備える。
【００３３】
リザベーションステーション処理部２０には、リザベーションステーション２２−１〜２２−３が設けられる。命令実行部２４には、乗算除算演算器２６、加算減算演算器２８及びロード／ストア演算部３０が設けられる。
【００３４】
ここで、乗算除算演算器２６は乗算命令操作、除算命令操作に加え、加算命令操作と減算命令操作を実行することができ、非対称命令演算器として機能する。また加算減算演算器２８は、加算命令操作と減算命令操作を実行することはできるが、乗算命令操作と除算命令操作はできず、対称命令演算器として機能する。
【００３５】
このため命令発行部１６から見て加算命令と減算命令に対しては対称に位置する乗算除算演算器２６と加算減算演算器２８で命令操作を実行でき、それ故、この加算命令と減算命令を対称命令と呼ぶ。命令発行部１６は対称命令についてはリザベーションステーション２２−１，２２−２のどちらに発行しても良い。
【００３６】
これに対し乗算命令と除算命令は、命令発行部１６から見て非対称な位置関係にある乗算除算演算器２６でしか命令操作を実行できず、それ故、非対称命令と呼ぶ。命令発行部１６は、非対称命令については、乗算除算演算器２６でしか命令操作を実行できないため、必ずリザベーションステーション２２−１に向けて発行する。
【００３７】
本発明の命令発行制御にあっては、非対称命令を内部的に先行フローと後続フローのマルチフローに展開し、このマルチフローの命令操作を通じてリザベーションステーションに発行する。
【００３８】
レジスタファイル３６には、コミットスタックエントリ３８、アーキテクチャレジスタファイルとして知られた汎用レジスタファイル４０、及びタリネーミング処理部１８のレジスタ割り当ての対称となるレジスタ更新バッファ４２を備えている。
【００３９】
また命令キャッシュ１２及びデータキャッシュ３４は、ＳＰＡＲＣポートアーキテクチャに対応した図示しないインタフェースからシステムコントローラを介してメモリに接続されている。
【００４０】
図２の動的パイプラインスケジューリングを行う本発明のプロセッサの基本的な処理手順を説明すると次のようになる。命令フェッチ部１０は、命令キャッシュ１２側の待ち行列から例えば４命令をまとめて命令発行部１６内の４つの命令語レジスタ（図示せず）にフェッチしてデコードする。デコードされた４つの命令はリザベーションステーション処理部２０に送られる。
【００４１】
リザベーションステーション処理部２０は演算用として、例えば２つのリザベーションステーション２２−１，２２−２を備えており、予め定めた関係にある空きのあるリザベーションステーションに対し命令を格納する。
【００４２】
ここでリザベーションステーション２２−１，２２−２は例えば８つのエントリを備えており、合計１６個の演算命令をリザーブすることができる。このリザベーションステーション処理部２０に対する命令の発行は、プログラムの順番に従ったインオーダーで行われる。
【００４３】
リザベーションステーション２２−１，２２−２に命令を発行すると同時に、コミットスタックエントリ３８にも命令ごとにエントリが割り当てられ、命令のコミット（確定）による開放まで保持される。この実施形態でコミットスタックエントリ３８は６４エントリを有する。
【００４４】
このため命令発行部１６の命令語レジスタからは、リザベーションステーション処理部２０の対応するリザベーションステーション２２−１，２２−２とコミットスタックエントリ３８及びその命令の実行に必要な資源（レジスタ更新バッファ、ストアバッファ等）に利用可能なエントリがないと命令は発行されず、デコードサイクルでストールすることになる。
【００４５】
命令実行部２４は、リザベーションステーション２２−１又は２２−２に命令の全てのオペランドの準備が整い且つ対応する乗算除算演算器２６又は加算減算演算器２８が演算可能となると、直ちに命令操作が実行されて実行結果が得られる。命令実行部２４における命令の実行操作はプログラムの順序どおりとはならず、実行可能命令から逐次投機的に実行するアウトオブオーダーで行う。
【００４６】
命令実行部２４の実行結果は、分岐の成立などの判定結果を受けて命令を確定し、ストアバッファ３２に格納した後、ストア命令であればデータキャッシュ３４に格納してインオーダーで命令を完了させ、それ以外の演算命令であれば、更に汎用レジスタファイル４０の対応レジスタに格納してインオーダーで命令を完了させる。このように命令が確定すると、コミットスタックエントリ３８の割当エントリは開放される。
【００４７】
また本発明のプロセッサは、命令実行部２４においてアウトオブオーダーで命令操作を実行しており、命令実行がプログラムの順序どおりでないために、命令ごとに情報を保持する専用レジスタを割り当てなければならない。
【００４８】
図２の命令発行部１６には例えば４つの命令語レジスタを用意していることから、４つの専用レジスタを割り当てることができなければ、命令を同時にリザベーションステーション処理部２０に格納することができず、専用レジスタを割り当て尽くした時点でデコードサイクルでストールしなければならない。
【００４９】
この命令ごとに割り当てる専用レジスタとしてレジスタ更新バッファ４２が準備されている。この実施形態においてレジスタ更新バッファ４２は、例えば６４エントリを確保している。
【００５０】
命令ごとに専用レジスタを割り当て、レジスタ内容がプログラム順序で更新参照される方法として、レジスタリネーミングが知られている。このレジスタリネーミングを具体的に説明すると次のようになる。いま次のような命令１、命令２、命令３があったとする。
【００５１】
命令１　Ｒ１＋Ｒ２＝Ｒ３
命令２　Ｒ３＋Ｒ４＝Ｒ３
命令３　Ｒ３＋Ｒ８＝Ｒ９
この３つの命令１〜３において、命令１のディストネーションレジスタＲ３と命令２の第１オペランドレジスタＲ３は依存関係にある。また命令２のディストネーションレジスタＲ３と命令３の第１オペランドレジスタＲ３も依存関係にある。
【００５２】
このような場合に、レジスタリネーミングにあっては、命令１のディストネーションレジスタＲ３と命令２の第１オペランドレジスタＲ３を例えばリネーミングレジスタＲ３ａとして専用レジスタを割り当てる。また命令２のディストネーションレジスタＲ３と命令３の第１オペランドレジスタＲ３にリネーミングレジスタＲ３ｂを割り当てる。
【００５３】
命令のデコードの際に割り当てられたリネーミングレジスタＲ３ａは、命令１がコミットするまで使用が確保される。またリネーミングレジスタＲ３ｂは命令２がコミットするまで使用が確保される。コミットされたらディストネーションレジスタＲ３そのものから読み出す。
【００５４】
図３は、図２のプロセッサにおける本発明による命令発行制御の機能ブロック図である。図３において、命令発行部１６には４つの命令語レジスタ４４−１〜４４−４が配置されており、図２の命令フェッチ部１０によりアクセスを受けた命令キャッシュ１２から同時に４つの命令をフェッチし、デコードする。なお、命令は命令語レジスタ４４−１，４４−２，４４−３，４４−４の順番にフェッチされる。
【００５５】
命令語レジスタ４４−１〜４４−４にフェッチされてデコードされた命令は、発行制御部４６を介してリザベーションステーション２２−１，２２−２に送られ、それぞれに対応して設けている乗算除算演算器２６と加算減算演算器２８でアウトオブオーダーで命令が実行される。
【００５６】
ここで対称命令である加算命令と減算命令については乗算除算演算器２６でも命令操作を実行できるため、この対称命令に対しリザベーションステーション２２−１，２２−２の両方が命令の発行先となる。これに対し非対称命令である乗算命令または除算命令については、乗算除算演算器２６でしか命令操作を実行できないため、リザベーションステーション２２−１のみが非対称命令の発行先となる。
【００５７】
非対称命令の発行先となるリザベーションステーション２２−１側には、マルチフロー命令語レジスタ４８が設けられている。マルチフロー命令語レジスタ４８は、命令語レジスタ４４−１〜４４−４にフェッチされてデコードされた命令について、内部的にマルチフロー展開されたときの命令を転送して保持する。
【００５８】
発行制御部４６には非対称命令発行部５６と対称命令発行部５８が設けられている。またリザベーションステーション２２−１，２２−２に対しては使用数カウンタ５０，５２が設けられる。
【００５９】
命令発行部１６から命令が投入されると、使用数カウンタ５０−１，５０−２は１つカウントアップし、命令実行部側の乗算除算演算器２６あるいは加算減算演算器２８にアウトオブオーダーで命令が送られると、１つカウントダウンする。このため、使用数カウンタ５０，５２の値を見ることでリザベーションステーション２２−１，２２−２の使用エントリ数が分かり、これによって空きがあるかどうか判別することができる。
【００６０】
判別部５４は、使用数カウンタ５０，５２の値を参照することで、リザベーションステーション２２−１，２２−２のエントリ使用状態を監視しており、フルになった場合には空きのあるリザベーションステーション側に命令を投入する処理を発行制御部４６に指示する。
【００６１】
ここで対称命令発行部５８は、命令語レジスタ４４−１〜４４−４に加算命令及びまたは減算命令となる対称命令が全てフェッチされてデコードされた際に、命令語レジスタ４４−１〜４４−４の位置に対応して予め設定されたリザベーションステーション２２−１，２２−２に対し対称命令を発行するルールを設定している。
【００６２】
図４は、図３の対称命令発行部５８による命令発行制御を対称命令として加算命令Ａｄｄを例にとって示している。なお、図４（Ａ）（Ｂ）に分けているが、これは同じデコードサイクルでの制御である。
【００６３】
図４（Ａ）において、命令語レジスタ４４−１〜４４−４に対し全て加算命令Ａｄｄがフェッチされた場合、命令語レジスタ４４−１の発行先はリザベーションステーション２２−１、命令語レジスタ４４−２の発行先はリザベーションステーション２２−２と予め設定していることから、リザベーションステーション２２−１，２２−２に空きがあることを条件に加算命令を発行する。
【００６４】
続いて図４（Ｂ）で、命令語レジスタ４４−１，４４−３の発行先はリザベーションステーション２２−１、命令語レジスタ４４−２，４４−４の発行先はリザベーションステーション２２−２と予め設定していることから、対応する発行先に加算命令Ａｄｄを発行する。
【００６５】
このため、命令語レジスタ４４−１〜４４−４の全てに、同時に４つずつ連続して加算命令及びまたは減算命令の対称命令がフェッチされてデコードされている場合には、リザベーションステーション２２−１，２２−２に空きがある限り、命令の発行が連続的に行われ、デコードステージでのストールを回避できる。
【００６６】
一方、対称命令発行部５８は、例えば図４（Ａ）において命令語レジスタ４４−１の加算命令Ａｄｄの発行先のリザベーションステーション２２−１が、図３の使用数カウンタ５０の値から判別部５４でフル状態が判別された場合には、別のリザベーションステーション２２−２の状態を使用数カウンタ５２の値から認識し、もし空きがあれば、リザベーションステーション２２−２に発行先を変更して加算命令Ａｄｄを発行するルールを設定している。
【００６７】
この命令発行のルールによって、２つのリザベーションステーション２２−１，２２−２がフルになるまで、対称命令についてデコードサイクルでのストールを避けることができる。
【００６８】
再び図３を参照するに、発行制御部４６に設けた非対称命令発行部５６は、命令語レジスタ４４−１〜４４−４のいずれか乗算命令または除算命令となる非対称命令がフェッチされてデコードされ、残りの命令語レジスタに加算命令または減算命令からなる対称命令がフェッチされてデコードされた場合に、非対称命令を内部的に先行フローと後続フローのマルチフローに展開して、専用のリザベーションステーション２２−１に対し発行する非対称命令発行制御を行う。
【００６９】
図５は、図３の非対称命令発行部５６により命令語レジスタ４４−１に乗算命令Ｍｕｌｔｉｐｌｙがフェッチされてデコードされ、残りの命令語レジスタ４４−２〜４４−４に対称命令としての加算命令Ａｄｄがフェッチされてデコードされた場合の命令発行制御である。ここで乗算命令Ｍｕｌｔｉｐｌｙに対し加算命令Ａｄｄは後ろに位置している。
【００７０】
まず図５（Ａ）の最初のデコードサイクルで、命令語レジスタ４４−１にフェッチされてデコードされた命令が非対称命令としての乗算命令Ｍｕｌｔｉｐｌｙであることを解読して、これをノーオペレーションｎｏｐとして扱い、内部的に先行フローと後続フローのマルチフローに展開し、第１フローの命令操作によって命令語レジスタ４４−１の乗算命令Ｍｕｌｔｉｐｌｙをマルチフロー命令語レジスタ４８に転送して保持する。
【００７１】
続いて図５（Ｂ）の２番目のデコードサイクルにあっては、マルチフロー命令語レジスタ４８に格納された非対称命令である乗算命令Ｍｕｌｔｉｐｌｙを第２フローの命令操作によって、非対称命令の専用発行先として予め設定されたリザベーションステーション２２−１に対し発行する。このとき、命令未発行となっている命令語レジスタ４４−２〜４４−４について、命令発行操作は行わない。
【００７２】
続いて図５（Ｃ）の３番目のデコードサイクルで、命令語レジスタ４４−２，４４−３，４４−４から乗算命令Ｍｕｌｔｉｐｌｙの後ろにある対称命令としての加算命令Ａｄｄを、図３の対称命令発行部５８のルールによって予め設定された発行先であるリザベーションステーション２２−１，２２−２に対し発行する。これによりインオーダーによる命令発行が維持される。
【００７３】
図６は、命令語レジスタ４４−１〜４４−４のうち、左から２番目の命令語レジスタ４４−２に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされてデコードされ、残りの命令語レジスタ４４−１，４４−３，４４−４に対称命令としての加算命令Ａｄｄがフェッチされてデコードされた場合である。ここで乗算命令Ｍｕｌｔｉｐｌｙがフェッチされた命令語レジスタ４４−２から見て、命令語レジスタ４４−１の加算命令Ａｄｄは先の命令となり、命令語レジスタ４４−３，４４−４の加算命令Ａｄｄは後の命令となる。
【００７４】
この場合には、図６（Ａ）の最初のデコードサイクルで２番目の命令語レジスタ４４−２の乗算命令Ｍｕｌｔｉｐｌｙは、マルチフローに展開されることで、先行フローの命令操作でマルチフロー命令語レジスタ４８に転送保持され、図６（Ｂ）の次のデコードサイクルでマルチフロー命令語レジスタ４８から専用の発行先であるリザベーションステーション２２−１に発行される。
【００７５】
一方、対称命令としての加算命令Ａｄｄをフェッチしてデコードしている命令語レジスタ４４−１，４４−３，４４−４については、図６（Ａ）の最初のデコードサイクルで図３の対称命令発行部５８のルールに従って、命令語レジスタ４４−２の乗算命令Ｍｕｌｔｉｐｌｙの前となる命令語レジスタ４４−１の加算命令Ａｄｄがリザベーションステーション２２−１に発行される。
【００７６】
また図６（Ｃ）の３番目のデコードサイクルで、命令語レジスタ４４−２の乗算命令Ｍｕｌｔｉｐｌｙの後ろとなる命令語レジスタ４４−３，４４−４の加算命令Ａｄｄが、対称命令発行部５８のルールによりリザベーションステーション２２−１，２２−２に発行され、インオーダーの命令発行が維持される。
【００７７】
図７は、命令語レジスタ４４−１〜４４−４のうちの左から３番目の命令語レジスタ４４−３に対し、非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされてデコードされ、残りのレジスタに対称命令としての加算命令Ａｄｄがフェッチされてデコードされた場合の命令発行制御である。
【００７８】
この場合にも、図７（Ａ）で３番目の命令語レジスタ４４−３の乗算命令Ｍｕｌｔｉｐｌｙは内部的にマルチフロー展開され、第１フローの命令操作でマルチフロー命令語レジスタ４８に転送保持され、図７（Ｂ）の２番目のデコードサイクルで専用の発行先であるリザベーションステーション２２−１に後続フローの命令操作で発行される。
【００７９】
一方、命令語レジスタ４４−３の乗算命令Ｍｕｌｔｉｐｌｙの前となる命令語レジスタ４４−１，４４−２の加算命令Ａｄｄについては、図７（Ａ）の最初のデコードサイクルで図３の対称命令発行部５８のルールによってリザベーションステーション２２−１，２２−２に対し発行される。
【００８０】
また命令語レジスタ４４−３の乗算命令Ｍｕｌｔｉｐｌｙの後ろとなる命令語レジスタ４４−４の加算命令Ａｄｄについては、図７（Ｃ）の３番目のデコードサイクルで図３の対称命令発行部５８のルールに従ってリザベーションステーション２２−２に発行され、インオーダーによる命令発行が維持される。
【００８１】
図８は、命令語レジスタ４４−１〜４４−４のうち左から４番目、即ち右端の命令語レジスタ４４−４に対し、非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされてデコードされ、残りの命令語レジスタ４４−１〜４４−３には対称命令である加算命令Ａｄｄがフェッチされてデコードされた場合の命令発行制御である。即ち非対称命令である乗算命令Ｍｕｌｔｉｐｌｙに対し残りの加算命令Ａｄｄが全て前に来た場合である。
【００８２】
この場合にも、図８（Ａ）の最初のデコードサイクルで命令語レジスタ４４−４の乗算命令Ｍｕｌｔｉｐｌｙが内部的にマルチフローに展開され、先行フローの命令操作によりマルチフロー命令語レジスタ４８に転送して保持される。そして図８（Ｂ）の２番目のデコードサイクルで、専用の発行先であるリザベーションステーション２２−１に対し後続フローの命令操作により、マルチフロー命令語レジスタ４８から乗算命令Ｍｕｌｔｉｐｌｙが発行される。
【００８３】
一方、命令語レジスタ４４−１、４４−２，４４−３の対称命令である加算命令Ａｄｄについては、命令語レジスタ４４−４の乗算命令Ｍｕｌｔｉｐｌｙの前にあることから、図８（Ａ）の最初のデコードサイクルで図３の対称命令発行部５８のルールに従って対応するリザベーションステーション２２−１，２２−２に対し発行され、インオーダーによる命令発行が維持される。
【００８４】
この図５〜図８のように、命令語レジスタ４４−１〜４４−４の任意の位置に非対称命令として例えば乗算命令Ｍｕｌｔｉｐｌｙがフェッチされてデコードされても、非対称命令を内部的に先行フローと後続フローのマルチフローに展開し、先行フローの命令操作で必ずマルチフロー命令語レジスタ４８に転送して保持した後、第２フローの命令操作で非対称命令の発行先として予め決めている専用のリザベーションステーション２２−１に発行することとなる。
【００８５】
そして、残り３つの対称命令については、マルチフロー命令語レジスタ４８からのリザベーションステーション２２−１に対する非対称命令の発行を行うデコードサイクルに対する前後のサイクルで、図４（Ａ），（Ｂ）に示した対称命令の発行ルールに従って、リザベーションステーション２２−１，２２−２に対し命令を発行することになる。
【００８６】
このような本発明の命令発行制御にあっては、従来、選択回路及び優先切替回路を必要としていたものを、非対称命令の発行に際し、マルチフロー展開し、マルチフロー命令語レジスタからのみ、しかも同時には対称命令の命令語レジスタ群からはあえて発行を行わないことで、命令語レジスタからの対称命令の選択と発行を高周波の動作周波数で可能とする。また非対称命令の発行も同時に他の命令を発行しないので、選択回路が必要なく、制御が単純化できる。
【００８７】
また非対称命令をマルチフロー展開することでデコードサイクルが増加するが、乗算命令及び除算命令となる非対称命令の頻度が少ないことから、全体的な処理性能に与える影響は少ない。
【００８８】
即ち、図９のような従来の切替回路による非対称命令の専用のリザベーションステーションへの発行の切替制御にあっては、対称命令発行のための選択回路に加え、非対称命令発行のための優先切替回路を実装することで論理が深くなり、高周波回路動作の実現を難しくする。しかし、本発明にあっては、非対称命令をマルチフロー展開することで、クロック動作周波数は高速のまま発生頻度の少ない非対称命令についてデコードサイクルを１つ増加することで命令発行制御を行い、これによってプロセッサの動作周波数向上に対する問題を回避することができる。
【００８９】
なお上記の実施形態にあっては、説明を簡単にするため、図２の命令実行部２４に数値演算器として乗算除算演算器２６と加算減算演算器２８を１つずつ設けた場合を例にとるものであったが、本発明はこれに限定されず、更に多くの演算器を設けた場合についてもそのまま適用できる。もちろん、命令実行部２４の数に対応してリザベーションステーション処理部２０のリザベーションステーションが設けられることは言うまでもない。
【００９０】
また上記の実施形態は、非対称命令として乗算命令と除算命令を例にとり、対称命令として加算命令と減算命令を例にとるものであったが、これに限定されず、種類の異なる複数の演算器を設けている場合、複数の演算器で実行可能な命令であれば、これを対称命令とし、特定の限られた演算器でしか命令実行ができない場合には、これを非対称命令として、同様に本発明の命令発行制御を適用することができる。
【００９１】
また本発明は上記の実施形態に限定されず、その目的と利点を損なうことのない適宜の変形を含む。更に上記の実施形態に示した数値による限定は受けない。
【００９２】
【発明の効果】
以上説明してきたように本発明によれば、複数の数値演算器のうちの特定の演算器でのみ命令操作が実行できる非対称命令を、内部的に先行フローと後続フローのマルチフローに展開し、先行フローの命令操作で非対称命令をマルチフロー命令語レジスタに転送して保持し、次の後続フローの命令操作により非対称命令を演算器に対応した専用のリザベーションステーションに発行し、非対称命令がフェッチしてデコードされる命令語レジスタの位置が異なっても、マルチフロー展開による命令発行制御でデコードサイクルにおける制御論理を深くせずに非対称命令の発行を可能とし、これにより高周波化実現のための問題を解消して、非対称命令を特定の発行先に格納できる。
【００９３】
また非対称命令のマルチフロー展開によりデコードサイクルが増加しても、対称命令に対し非対称命令の頻度は少ないことから、プロセッサ全体としての処理性能への影響は少なく、むしろ制御論理を深くしないことによるＧＨｚオーダで動作するプロセッサに対する高周波化実現のための問題を回避し、命令実行動作を保証することができる。
【図面の簡単な説明】
【図１】本発明の原理説明図
【図２】本発明によるプロセッサのハードウェア構成のブロック図
【図３】図２のプロセッサにおける本発明の命令発行制御の機能ブロック図
【図４】全ての命令語レジスタに対称命令をフェッチしてデコードした場合の命令発行制御の説明図
【図５】１番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の命令発行制御の説明図
【図６】２番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の命令発行制御の説明図
【図７】３番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の命令発行制御の説明図
【図８】４番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の命令発行制御の説明図
【図９】非対称命令を優先切替により特定のリザベーションステーションに発行する従来の命令発行制御の機能ブロック図
【図１０】全ての命令語レジスタに対称命令をフェッチしてデコードした場合の従来の命令発行制御の説明図
【図１１】１番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の従来の命令発行制御の説明図
【図１２】２番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の従来の命令発行制御の説明図
【図１３】３番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の従来の命令発行制御の説明図
【図１４】４番目の命令語レジスタに非対称命令をフェッチしてデコードした場合の従来の命令発行制御の説明図
【符号の説明】
１０：命令フェッチ部
１２：命令キャッシュ
１４：分岐予測部
１６：命令発行部
１８：リネーミング処理部
２０：リザベーションステーション処理部
２２，２２−１〜２２−３：リザベーションステーション
２４：命令実行部
２６：乗算除算演算器（非対称命令演算器）
２８：加算減算演算器（対称命令演算器）
３０：ロード／ストア演算部
３２：ストアバッファ
３４：データキャッシュ
３５：リソースモニタ
３６：レジスタファイル
３８：コミットスタックエントリ
４０：汎用レジスタファイル
４２：レジスタ更新バッファ（ＲＵＢ）
４４，４４−１〜４４−４：命令語レジスタ
４６：発行制御部
４８：マルチフロー命令語レジスタ
５０，５２：使用数カウンタ
５４：判別部
５６：非対称命令発行部
５８：対称命令発行部
【図１】
2004038751.tif 000003
【図２】
2004038751.tif 000004
【図３】
2004038751.tif 000005
【図４】
2004038751.tif 000006
【図５】
2004038751.tif 000007
【図６】
2004038751.tif 000008
【図７】
2004038751.tif 000009
【図８】
2004038751.tif 000010
【図９】
2004038751.tif 000011
【図１０】
2004038751.tif 000012
【図１１】
2004038751.tif 000013
【図１２】
2004038751.tif 000014
【図１３】
2004038751.tif 000015
【図１４】
2004038751.tif 000016
【手続補正書】
【提出日】平成15年2月3日(2003.2.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
インオーダーで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダーで命令の確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令制御を実行するプロセッサに於いて、
同時にフェッチしてデコードされた複数命令の全てが異なる演算器で演算可能な対称命令であるか、複数命令の中に特定の演算器でのみ演算可能な非対称命令があり残りが前記対称命令であるかを判別する命令判別部と、
複数命令の全てが対称命令あることを判別した場合、異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで前記対称命令を発行する対称命令発行部と、
複数命令の中に非対称命令があり残りが対称命令であることを判別した場合、前記非対称命令を先行フローと後続フローのマルチフローに展開して前記特定の演算器に対応して設けたリザベーションステーションに前記非対称命令を発行し、残りの対称命令は前記非対称命令とは異なる発行サイクルで異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで発行する非対称命令発行部と、
を備えたことを特徴とするプロセッサ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
請求項２記載のプロセッサにおいて、前記対称命令発行部及び前記非対称命令発行部は、命令語レジスタ群に保持している対称命令を、レジスタ位置に対応して予め定めたリザベーションステーションに向けて発行することを特徴とするプロセッサ。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
インオーダーで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダーで命令の確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令を実行する命令制御方法に於いて、
命令判別部により、同時にフェッチしてデコードされた複数命令の全てが異なる演算器で演算可能な対称命令であるか、複数命令の中に特定の演算器でのみ演算可能な非対称命令があり残りが前記対称命令であるかを判別する命令判別ステップと、
対称命令発行部により、複数命令の全てが対称命令あることを判別した場合、異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで前記対称命令を発行する対称命令発行ステップと、
非対称命令発行部により、複数命令の中に非対称命令があり残りが対称命令であることを判別した場合、前記非対称命令を先行フローと後続フローのマルチフローに展開して前記特定の演算器に対応して設けたリザベーションステーションに前記非対称命令を発行し、残りの対称命令は前記非対称命令とは異なる発行サイクルで異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで発行する非対称命令発行ステップと、
を備えたことを特徴とする命令制御方法。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
命令発行部には例えば乗算除算演算器１１０と加算減算演算器１１２が設けられる。乗算除算演算器１１０は、乗算命令と除算命令以外に加算命令及び減算命令も実行できる。これに対し加算減算演算器１１２は加算命令及び減算命令の実行ができ、乗算命令や除算命令は実行できない。


【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
選択回路１０２は、命令語レジスタ１００−１〜１００−４の全てに対称命令がフェッチされデコードされたときの発行先を設定している。この例では、選択回路１０２は、命令語レジスタ１００−１，１００−３の発行先としてリザベーションステーション１０８−１を設定し、命令語レジスタ１００−２，１００−４の発行先としてリザベーションステーション１０８−２を設定している。


【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
図１１は、図９の従来例について、命令語レジスタ１００−１に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされデコードされ、残りの命令語レジスタ１００−２〜１００−４に対称命令として加算命令Ａｄｄがフェッチされデコードされた場合である。


【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
図１３は、命令語レジスタ１００−３に非対称命令である乗算命令Ｍｕｌｔｉｐｌｙがフェッチされデコードされ、残りの命令語レジスタ１００−１，１００−３，１００−４に対称命令として加算命令Ａｄｄがフェッチされデコードされた場合である。この場合は、選択回路１０２の設定にしたがった発行が行われる。


【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
【課題を解決するための手段】
図１は本発明の原理説明図である。本発明のプロセッサは、インオーダで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダで命令の確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令制御を実行する。


【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
本発明は、インオーダーで命令を発行する命令発行部、アウトオブオーダーで命令を実行する命令実行部及びインオーダーで命令の確定を判別して完了させる確定部を備え、動的パイプラインスケジューリングにしたがって命令を実行するプロセッサ命令制御方法を提供する。


【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
この命令制御方法は、
命令判別部により、同時にフェッチしてデコードされた複数命令の全てが異なる演算器で演算可能な対称命令であるか、複数命令の中で特定の演算器でのみ演算可能な非対称命令があり残りが対称命令であるかを判別する命令判別ステップと、
対称命令発行部により、複数命令の全てが対称命令であることを判別した場合、異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで対称命令を発行する対称命令発行ステップと、
非対称命令発行部により、複数命令の中に非対称命令があることを判別した場合、非対称命令を先行フローと後続フローのマルチフローに展開して特定の演算器に対応して設けたリザベーションステーションに非対称命令を発行し、残りの対称命令は非対称命令とは異なる発行サイクルで異なる演算器毎に設けた複数のリザベーションステーションに対しフルになるまで発行する非対称命令発行ステップと、
を備えたことを特徴とする。尚、この命令制御方法の詳細は、プロセッサの場合と基本的に同じである。


【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
レジスタファイル３６には、コミットスタックエントリ３８、アーキテクチャレジスタファイルとして知られた汎用レジスタファイル４０、及びリネーミング処理部１８のレジスタ割り当ての対象となるレジスタ更新バッファ４２を備えている。


【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００５９
【補正方法】変更
【補正の内容】
【００５９】
命令発行部１６から命令が投入されると、使用数カウンタ５０，５２は１つカウントアップし、命令実行部側の乗算除算演算器２６あるいは加算減算演算器２８にアウトオブオーダーで命令が送られると、１つカウントダウンする。このため、使用数カウンタ５０，５２の値を見ることでリザベーションステーション２２−１，２２−２の使用エントリ数が分かり、これによって空きがあるかどうか判別することができる。


【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
再び図３を参照するに、発行制御部４６に設けた非対称命令発行部５６は、命令語レジスタ４４−１〜４４−４のいずれかに乗算命令または除算命令となる非対称命令がフェッチされてデコードされ、残りの命令語レジスタに加算命令または減算命令からなる対称命令がフェッチされてデコードされた場合に、非対称命令を内部的に先行フローと後続フローのマルチフローに展開して、専用のリザベーションステーション２２−１に対し発行する非対称命令発行制御を行う。


【手続補正１４】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2004038751.tif 000017