(57)【要約】      （修正有）【課題】プロセッサのスループットの低下を抑制する。【解決手段】Ｋ個のスロットを有する命令デコーダと、Ｌ個（Ｋ＞Ｌ＞２）の入力ポート有する第１〜４リザベーションステーション（ＲＳ）と、第１／第２ＲＳ専用の第１／第２演算ユニットと、第３／第４ＲＳ専用の第１／第２ロードストア（ＬＳ）ユニットと、Ｋ個の命令を、第１〜４ＲＳのいずれかに割り振るアロケーションユニットを有する。第１／第２演算ユニットで実行でき、第１／第２のＬＳユニットで実行できない第１の命令は第１の割振りテーブルに基づいて第１または第２ＲＳに割振り、第１／第２ＬＳユニットで実行でき、第１／第２演算ユニットで実行できない第２の命令は第２の割振りテーブルに基づいて第３または第４のＲＳに割振り、第１／第２ＬＳユニットと第１／第２演算ユニットで実行できる第３の命令は第３の割振りテーブルに基づいて前記第１〜４のＲＳのいずれかに割振る。【選択図】図２
2019185646.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成するＫ個（Ｋは複数）のデコーダスロットを有する命令デコーダと、
Ｌ個（Ｌは複数でＫ＞Ｌ）の入力ポートと、前記実行命令を前記Ｌ個の入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダの前記Ｋ個のデコーダスロットそれぞれが生成するＫ個の前記実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットとを有し、
前記アロケーションユニットは、
（１）前記実行命令が前記第１及び第２の演算ユニットで実行でき、前記第１及び第２のＬＳユニットで実行できない第１の命令の場合、前記第１の命令を第１の割振りテーブルに基づいて前記第１または第２のＲＳに割振り、
（２）前記実行命令が前記第１及び第２のＬＳユニットで実行でき、前記第１及び第２の演算ユニットで実行できない第２の命令の場合、前記第２の命令を第２の割振りテーブルに基づいて前記第３または第４のＲＳに割振り、
（３）前記実行命令が前記第１及び第２のＬＳユニットと前記第１及び第２の演算ユニットとで実行できる第３の命令の場合、前記第３の命令を第３の割振りテーブルに基づいて前記第１乃至第４のＲＳのいずれかに割振り、
前記第1、第２、第３の割振りテーブルは、前記Ｋ個のデコーダスロットそれぞれに対応するＫ個の割振り先ＲＳを有し、
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１及び第２のＲＳの命令キューの空きがより多いとより少ないについて第１の順番の組み合わせで有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１の順番の組み合わせで有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、第１の複数デコーダスロットに対して、前記第1の割振りテーブルの前記第１の複数デコーダスロットに対する割振り先ＲＳとし、前記第１の複数デコーダスロットと異なる第２の複数デコーダスロットに対して、前記第２の割振りテーブルの前記第２の複数デコーダスロットに対する割振り先ＲＳとし、且つ前記第１の順番の組み合わせで有する、演算処理装置。
【請求項２】
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳと、前記第３及び第４のＲＳとを同数で有する、請求項１に記載の演算処理装置。
【請求項３】
前記第１の順番の組み合わせは、少なくとも前記インオーダーで最先のデコーダスロットに対して前記より多いＲＳを、前記インオーダーで最後のデコーダスロットに対して前記より少ないＲＳを有する、請求項２に記載の演算処理装置。
【請求項４】
前記第３の割振りテーブルは、
（１）前記第１の複数デコーダスロットが、前記インオーダーで最先の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで最後の複数デコーダスロットであるＡ型第３の割振りテーブルと、
（２）前記第１の複数デコーダスロットが、前記インオーダーで最後の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで最先の複数デコーダスロットであるＢ型第３の割振りテーブルと、を有し、
前記アロケーションユニットは、
（１）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より多い場合、前記Ａ型第３の割振りテーブルに基づいて前記第３の実行命令を割振り、
（２）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より少ない場合、前記Ｂ型第３の割振りテーブルに基づいて前記第３の実行命令を割振る、請求項３に記載の演算処理装置。
【請求項５】
前記第３の割振りテーブルは、
（１）前記第１の複数デコーダスロットが、前記インオーダーで奇数の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで偶数の複数デコーダスロットであるＡ型第３の割振りテーブルと、
（２）前記第１の複数デコーダスロットが、前記インオーダーで奇数の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで偶数の複数デコーダスロットであるＢ型第３の割振りテーブルと、を有し、
前記アロケーションユニットは、
（１）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より多い場合、前記Ａ型第３の割振りテーブルに基づいて前記第３の実行命令を割振り、
（２）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より少ない場合、前記Ｂ型第３の割振りテーブルに基づいて前記第３の実行命令を割振る、請求項３に記載の演算処理装置。
【請求項６】
前記アロケーションユニットは、
前記実行命令が前記第１の命令の場合、前記第１のＲＳの前記命令キューの空き数と前記第２のＲＳの前記命令キューの空き数の差分が第１の基準値以上の場合、前記第１の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第１または第２のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＡ型第１の割振りテーブルに基づいて、前記第１の命令(RSE命令)を割り振る、請求項１に記載の演算処理装置。 
【請求項７】
前記アロケーションユニットは、
前記実行命令が前記第２の命令の場合、前記第３のＲＳの前記命令キューの空き数と前記第４のＲＳの前記命令キューの空き数の差分が第２の基準値以上の場合、前記第２の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第３または第４のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＡ型第２の割振りテーブルに基づいて、前記第２の命令を割り振る、請求項１に記載の演算処理装置。
【請求項８】
前記アロケーションユニットは、
前記実行命令が前記第３の命令の場合で、最も前記命令キューの空き数が多い最大空きＲＳの空き数と、前記最大空きＲＳ以外のＲＳの空き数との差分が第３の基準値以上の場合に、
（１）前記最大空きＲＳが前記第１または第２のＲＳなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第１または第２のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＥ型第３の割振りテーブルに基づいて、前記第３の命令を割り振り、
（２）前記最大空きＲＳが前記第３または第４のＲＳなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第３または第４のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＦ型第３の割振りテーブルに基づいて、前記第３の命令を割り振る、請求項４または５に記載の演算処理装置。
【請求項９】
前記アロケーションユニットは、
前記実行命令が前記第３の命令の場合で、前記第１及び第２のＲＳの前記命令キューの第１合計空き数と、前記第３及び第４のＲＳの前記命令キューの第２合計空き数との差分が第４の基準値以上の場合に、
（１）前記第１合計空き数が前記第２合計空き数より多いなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で、且つ前記より多いＲＳを前記インオーダーで最先に、前記より少ないＲＳを前記インオーダーで最後に有するＣ型第３の割り当てテーブルに基づいて、前記第３の命令を割り振り、
（２）前記第１合計空き数が前記第２合計空き数より少ないなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で、且つ前記より多いＲＳを前記インオーダーで最先に、前記より少ないＲＳを前記インオーダーで最後に有するＤ型第３の割り当てテーブルに基づいて、前記第３の命令を割り振る、請求項８に記載の演算処理装置。
【請求項１０】
それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成するＫ個（Ｋは複数）のデコーダスロットを有する命令デコーダと、
Ｌ個（Ｌは複数でＫ＞Ｌ）の入力ポートと、前記実行命令を前記Ｌ個の入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダの前記Ｋ個のデコーダスロットそれぞれが生成するＫ個の前記実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットとを有する演算処理装置の制御方法であって、
前記アロケーションユニットは、
（１）前記実行命令が前記第１及び第２の演算ユニットで実行でき、前記第１及び第２のＬＳユニットで実行できない第１の命令の場合、前記第１の命令を第１の割振りテーブルに基づいて前記第１または第２のＲＳに割振り、
（２）前記実行命令が前記第１及び第２のＬＳユニットで実行でき、前記第１及び第２の演算ユニットで実行できない第２の命令の場合、前記第２の命令を第２の割振りテーブルに基づいて前記第３または第４のＲＳに割振り、
（３）前記実行命令が前記第１及び第２のＬＳユニットと前記第１及び第２の演算ユニットとで実行できる第３の命令の場合、前記第３の命令を第３の割振りテーブルに基づいて前記第１乃至第４のＲＳのいずれかに割振り、
前記第1、第２、第３の割振りテーブルは、前記Ｋ個のデコーダスロットそれぞれに対応するＫ個の割振り先ＲＳを有し、
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳ（RSE0/1）をそれぞれ前記Ｌ個以下で、且つ前記第１及び第２のＲＳの命令キューの空きがより多いとより少ないについて第１の順番の組み合わせで有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１の順番の組み合わせで有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、第１の複数デコーダスロットに対して、前記第1の割振りテーブルの前記第１の複数デコーダスロットに対する割振り先ＲＳとし、前記第１の複数デコーダスロットと異なる第２の複数デコーダスロットに対して、前記第２の割振りテーブルの前記第２の複数デコーダスロットに対する割振り先ＲＳとし、且つ前記第１の順番の組み合わせで有する、演算処理装置の制御方法。
【請求項１１】
それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成する命令デコーダと、
入力ポートと、前記実行命令を前記入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダが生成するループ内の実行命令を有するループ内実行命令列を一時的に記憶するループキャッシュと、
前記命令デコーダが生成する前記実行命令を、または前記ループキャッシュ内に記憶された前記ループ内実行命令列の実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットと、
前記第1及び第２の演算ユニットの実行結果及び前記第１及び第２のロードストアユニットの演算結果を格納する汎用レジスタファイルとを有し、
前記第1及び第２の演算ユニットは、実行結果を自身の入力に前記汎用レジスタファイルを介さずに供給するバイパス経路を有し、前記実行結果を自身以外の演算ユニットに前記汎用レジスタファイルを介さずに供給するバイパス経路を有さず、
前記第１及び第２のＬＳユニットは、実行結果を自身の入力に前記汎用レジスタファイルを介さずに供給するバイパス経路を有し、前記実行結果を自身以外のＬＳユニットに前記汎用レジスタファイルを介さずに供給するバイパス経路を有さず、
前記アロケーションユニットは、
前記ループキャッシュ内の前記ループ内命令列が、１つ前の実行命令の演算結果を次の実行命令の演算に利用する依存関係を持つ連続する複数の実行命令を有するチェイン命令列を含む場合、
前記チェイン命令列が、前記第１の演算ユニットで実行でき、前記第２の演算ユニットと前記第１及び第２のＬＳユニットで実行できない第１の実行命令を含み、前記第１の演算ユニットで実行できず、前記第２の演算ユニットと前記第１のＬＳユニットと第２のＬＳユニットのいずれかで実行できる第２の実行命令を含まない場合、前記チェイン命令列内の実行命令を前記第１のＲＳに割り振る、演算処理装置。
【請求項１２】
前記アロケーションユニットは、
前記チェイン命令列が、前記第１のＬＳユニットまたは前記第２のＬＳユニットで実行でき、前記第１の演算ユニット及び第２の演算ユニットで実行できない第３の実行命令を含み、前記第１のＬＳユニット及び第２のＬＳユニットで実行できず、前記第１の演算ユニット及び第２の演算ユニットのいずれかで実行できる第４の実行命令を含まない場合、前記チェイン命令列内の実行命令を前記第３のＲＳまたは第４のＲＳに割り振る、請求項１１に記載の演算処理装置。
【請求項１３】
前記アロケーションユニットは、
前記チェイン命令列が、前記第１及び第２の演算ユニットと、前記第１及び第２のＬＳユニットのいずれかで実行できる汎用実行命令だけを含む場合、前記チェイン命令列内の実行命令を前記第１乃至第４のＲＳのいずれかの１つのＲＳに割り振る、請求項１１に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置は、プロセッサまたはCPU（Central Processing Unit）である。プロセッサは、メインメモリからフェッチした命令（以下、フェッチ命令と称する）を登録する命令キャッシュと、命令キャッシュからフェッチしたフェッチ命令を一旦格納する命令バッファとを有する。さらに、プロセッサは、命令バッファ内の命令をプログラムの順番（インオーダ）でデコードする命令デコーダと、デコードされた命令（以下、実行命令と称する）を命令キューに格納するリザベーションステーションとを有する。そして、リザベーションステーションにキューインされた実行命令は、命令実行の準備が整うと、順不同（アウトオブオーダー）で演算器により実行される。これら命令バッファ、命令デコーダは、パイプラインの構成を有し、プロセッサ内のクロックに同期して命令を順番に処理する。
【０００３】
スーパースカラプロセッサは、上記の演算器を複数有し、複数の演算器が複数のデコードされた命令を並列に実行することができる。
【０００４】
上記のプロセッサについては、例えば、以下の特許文献１、２、３にも開示される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−５５８１４号公報
【特許文献２】特開２００４−３０４２４号公報
【特許文献３】特開２０１０−２５７１９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デコード処理のスループットを上げるために、命令デコーダは複数のスロットを有し、複数のスロットで複数のフェッチ命令を並列してデコードする。そして、命令デコーダは、デコードされた複数の実行命令を並列にリザベーションステーションにキューインする。命令デコーダは、プロセッサ内のパイプライン全体の動作を制御する要となる処理ユニットであるので、上記のように命令デコーダの複数スロットが複数のフェッチ命令を並列に処理することでパイプラインのスループットを向上できる。
【０００７】
一方、プロセッサの消費電力削減のために、リザベーションステーションの入力ポート数を制限することが行われる。この場合、命令デコーダのスロット数（Ｋ個）よりもリザベーションステーションの入力ポート数（Ｌ個）が少ないため、命令デコーダで並列に生成したＫ個の命令を１サイクルで１つのリザベーションステーションに並列にキューインすることができない。その結果、命令デコーダはＫ個のデコードされた命令を複数サイクルで１つのリザベーションステーションにキューインすることになり、命令デコーダのスループットの低下を招く。
【０００８】
また、スーパースカラプロセッサは、複数の演算器を有し、複数の命令を並列に処理する。そして、プロセッサの動作周波数を上げるために、複数の演算器それぞれに専用のリザベーションステーションを設けることが行われる。この場合、あるリザベーションステーションにキューインされた実行命令は、それに対応する演算器で実行されるが、他の演算器では実行されない。そのため、１つのリザベーションステーションに多くの実行命令が割振られると、それに対応する演算器に実行命令の処理が集中し、複数の演算器のスループットの低下を招く。
【０００９】
そこで，本実施の形態の第1の側面の目的は，プロセッサ内のスループットの低下を抑制した演算処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本実施の形態の第１の側面は，それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成するＫ個（Ｋは複数）のデコーダスロットを有する命令デコーダと、
Ｌ個（Ｌは複数でＫ＞Ｌ）の入力ポートと、前記実行命令を前記Ｌ個の入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダの前記Ｋ個のデコーダスロットそれぞれが生成するＫ個の前記実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットとを有し、
前記アロケーションユニットは、
（１）前記実行命令が前記第１及び第２の演算ユニットで実行でき、前記第１及び第２のＬＳユニットで実行できない第１の命令の場合、前記第１の命令を第１の割振りテーブルに基づいて前記第１または第２のＲＳに割振り、
（２）前記実行命令が前記第１及び第２のＬＳユニットで実行でき、前記第１及び第２の演算ユニットで実行できない第２の命令の場合、前記第２の命令を第２の割振りテーブルに基づいて前記第３または第４のＲＳに割振り、
（３）前記実行命令が前記第１及び第２のＬＳユニットと前記第１及び第２の演算ユニットとで実行できる第３の命令の場合、前記第３の命令を第３の割振りテーブルに基づいて前記第１乃至第４のＲＳのいずれかに割振り、
前記第1、第２、第３の割振りテーブルは、前記Ｋ個のデコーダスロットそれぞれに対応するＫ個の割振り先ＲＳを有し、
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１及び第２のＲＳの命令キューの空きがより多いとより少ないについて第１の順番の組み合わせで有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１の順番の組み合わせで有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、第１の複数デコーダスロットに対して、前記第1の割振りテーブルの前記第１の複数デコーダスロットに対する割振り先ＲＳとし、前記第１の複数デコーダスロットと異なる第２の複数デコーダスロットに対して、前記第２の割振りテーブルの前記第２の複数デコーダスロットに対する割振り先ＲＳとし、且つ前記第１の順番の組み合わせで有する、演算処理装置である。
【発明の効果】
【００１１】
第１の側面によれば，プロセッサ内のスループットの低下を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態における情報処理装置の構成例を示す図である。
【図２】本実施の形態におけるプロセッサの構成例を示す図である。
【図３】本実施の形態における命令デコーダの一例を示す図である。
【図４】リザベーションステーションの入力ポート数を制限した構成例を示す図である。
【図５】各演算器に専用のリザベーションステーションを設け、演算器のバックツーバックのパスの経路例を示す図である。
【図６】本実施の形態におけるアロケーションユニットの構成例を示す図である。
【図７】割振りテーブルの第１の例を示す図である。
【図８】割振りテーブルの第２の例を示す図である。
【図９】第１の実施の形態におけるアロケーションユニットALC_UNTの割振り制御部１６の動作を示すフローチャート図である。
【図１０】割振りテーブルによる各スロットD0-D3の命令の割振り例を示す図である。
【図１１】比較例として好ましくない割振りテーブルによる各スロットD0-D3の命令の割振り例を示す図である。
【図１２】第２の実施の形態におけるアロケーションユニットALC_UNTの割振り制御部１６の動作を示すフローチャート図である。
【図１３】図１２のS40（RSE割振りテーブルの選択とそれに基づく割振り処理）を示すフローチャート図である。
【図１４】図１２のS60（RSA割振りテーブルの選択とそれに基づく割振り処理）を示すフローチャート図である。
【図１５】図１２のS80（RSX割振りテーブルの選択とそれに基づく割振り処理）を示すフローチャート図である。
【図１６】第３の実施の形態における４つの演算器の構成例を示す図である。
【図１７】第３の実施の形態における割振り制御部の動作のフローチャート図である。
【図１８】第４の実施の形態におけるプロセッサの構成例を示す図である。
【図１９】第４の実施の形態におけるアロケーションユニットの割振り制御部の動作を示すフローチャート図である。
【図２０】ループキャッシュに登録された命令列の例に対するチェインIDとチェインテーブルIDを示す図である。
【図２１】チェインテーブルの一例を示す図である。
【図２２】チェイン命令列内のRSE命令、RSE0命令、RSE1命令の存在の有無と、図２１のチェインテーブルのIDの３ビットRSE0,RSE1,RSAのうちRSE0、RSE1のフィールドとの対応を示す図表である。
【発明を実施するための形態】
【００１３】
図１は、本実施の形態における情報処理装置の構成例を示す図である。情報処理装置１０は、例えばHPC（High Performance Computer）やサーバなどのコンピュータである。情報処理装置は、複数の演算処理装置（プロセッサまたはCPU）CPU_0，CPU_1と、複数のメインメモリMEM_0, MEM_1と、インターコネクト制御部１１とを有する。演算処理装置は、それぞれのメモリにアクセス可能である。さらに、複数の演算処理装置CPU_0，CPU_1は、インターコネクト制御部（チップ）１１を介して、ストレージ等の複数の外部装置12_0、12_1や図示しないネットワークなどに接続される。インターコネクト制御部１１は、外部装置やネットワークに対して入出力制御を行う。
【００１４】
［第１の実施の形態］
［プロセッサの構成例］
図２は、本実施の形態におけるプロセッサの構成例を示す図である。図２に示したプロセッサは、演算器として、ロードストアユニットとして動作するオペランドアドレス生成器OP_ADD_GEN（EAGA,EAGB）と、固定小数点演算器EXA,EXBとを有する。オペランドアドレス生成器は、アドレス計算するための加減算回路と、データを格納する１次データキャッシュメモリL1_DCACHEと、キャッシュミスした場合のメインメモリへのアクセス制御ユニットを有する。従って、オペランドアドレス生成器も一種の演算器である。
【００１５】
また、固定小数点演算器は、加減算回路と論理演算器と乗算器や除算器などを有する。プロセッサは、固定小数点演算器に加えて、浮動小数点演算器を有してもよい。但し、図２では浮動小数点演算器を省略している。以下の実施の形態では、便宜的に浮動小数点演算器を省略して説明する。
【００１６】
また、図２の例では、２つのオペランドアドレス生成器OP_ADD_GENと、２つの固定小数点演算器EXA,EXBを有する。ただし、これらの個数は、一例であり、命令デコーダI_DEC内のスロット数に応じた個数であればよい。
【００１７】
プロセッサ全体の構成について、処理の流れに沿って以下説明する。命令フェッチアドレス生成器I_F_ADD_GENがフェッチアドレスを生成し、プログラム内の実行順に（インオーダーで）１次命令キャッシュL1_ICACHEからフェッチされたフェッチ命令が一旦命令バッファI_BUFに格納される。そして、命令デコーダI_DECが、命令バッファ内のフェッチ命令をインオーダーで入力しデコードし、実行に必要な情報を付加した実行命令を生成する。
【００１８】
命令デコーダで生成された実行命令は、アロケーションユニット（割り振りユニット）ALC_UNTにより、インオーダーで、リザベーションステーションと呼ばれるキュー構造のストレージにキューインされ蓄積される。リザベーションステーションは、命令を実行する演算器や回路ごとに設けられ、例えば、オペランドアドレス生成器EAGA,EAGBに対応する２個のRSA（Reservation Station for Address generation）、固定小数点演算器EXA,EXBに対応する２個のRSE(Reservation Station for Execution)、分岐予測ユニットBR_PRDに対応するRSBR(Reservation Station for Branch)を有する。プロセッサが複数の浮動小数点演算器を有する場合は、それに対応する複数のリザベーションステーションを有する。
【００１９】
以下、リザベーションステーションは、省略してRSと称することもある。
【００２０】
そして、各リザベーションステーション内にキューインされた実行命令は、命令実行に必要な入力オペランドが前の命令の演算処理が完了してレジスタファイルから読み出し可能であるか（リードアフタライト制約が満たされるか）や、演算器を使用できるかなど、命令の実行条件が整ったものから、順不同で（アウトオブオーダーで）対応する演算器等で実行される。
【００２１】
一方、命令デコーダでデコードされて生成された実行命令は、そのプログラム内の実行順通りに命令識別子（Instruction Identification: IID）を割り振られ、アロケーションユニットALC_UNTにより、インオーダーでコミットスタックエントリCSE（Commit Stack Entry、以下CSEと称する）に送られる。CSEは、割り振られてきた実行命令をインオーダーで格納するキュー構造のストレージと、演算器からの命令の処理完了報告に応答してキュー内の情報等に基づき演算のコミット処理（完了処理）を行う命令コミット処理ユニットとを有する。
【００２２】
割り振られてきた実行命令は、CSE内のキューにインオーダーで格納され、命令の処理完了報告を待つ。そして、上記したとおり、各リザベーションステーションから実行命令がアウトオブオーダーで演算器に送信され、演算器により実行される。その後、命令の処理完了報告がCSEに送られると、CSEの命令コミット処理ユニットが、キューに格納された処理完了報告待ちの命令の中から処理完了報告に対応する実行命令をインオーダーで完了処理し、レジスタなどの回路資源の更新を行う。
【００２３】
プロセッサは、更に、ソフトウエアからアクセス可能なアーキテクチャレジスタファイル（または汎用ジスタファイル）ARC_REGと、演算器による演算結果を一時的に格納するリネーミングレジスタファイルREN_REGとを有する。それぞれのレジスタファイルは複数のレジスタを有する。実行命令をアウトオブオーダーで実行することを可能にするため、リネーミングレジスタファイルは、演算結果を一時的に格納し、演算の完了処理で、リネーミングレジスタに格納した演算結果がアーキテクチャレジスタファイル内のレジスタに格納され、リネーミングレジスタファイル内のレジスタが開放される。また、CSEは、完了処理でプログラムカウンタPCをインクリメントする。
【００２４】
分岐処理用のRSBRにキューインされた分岐命令は、分岐予測ユニットBR_PRDによって分岐予測され、予測結果に基づいて命令フェッチアドレス生成器I_F_ADD_GENが分岐先アドレスを生成する。
【００２５】
また、プロセッサ内には、２次命令キャッシュL2_CACHEを有し、２次命令キャッシュは図示しないメモリアクセスコントローラを介してメインメモリM_MEMにアクセスする。
【００２６】
命令デコーダI_DECは、インオーダーでフェッチした複数のフェッチ命令、例えば４個（Ｋ個）のフェッチ命令を並列に入力し、デコードして４つの実行命令を原則として並列にアロケーションユニットALC_UNTを介して、実行命令を実行可能な演算器のRSに割振る。このように命令デコーダを複数のスロットD0-D3で構成することで、フェッチ命令のデコード処理のスループットを向上する。
【００２７】
［命令デコーダの構成例］
図３は、本実施の形態における命令デコーダの一例を示す図である。命令デコーダI_DECは、４つのデコーダスロットD0-D3を有する。各デコーダスロットD0-D3は、入力されるフェッチ命令F_INSTをラッチする入力バッファと、フェッチ命令をデコードして実行命令を生成する実行命令生成部１３と、実行命令EX_INSTを発行する実行命令発行部１４とを有する。実行命令は、フェッチされた命令のオペコードを実行可能にするためのデコード結果を含んだ命令である。例えば、どのリザベーションステーションを使用するか、どの演算器を使用するか、オペランドにどのデータを使用するかなど、演算に必要な情報を含む命令である。実行命令生成部１３は、フェッチされた命令オペコードをデコードし、演算実行に必要な情報を得て実行命令を生成する。
【００２８】
図示されるとおり、命令デコーダの各スロットD0-D3は、４つのフェッチ命令F_INSTを並列に入力し、４つの実行命令EX_INSTを原則として並列に出力する。この並列処理を繰り返すことで、命令デコーダのスループットが向上する。
【００２９】
図２，３に記載したスーパースカラプロセッサにおいて、構成を最適化して、低消費電力化やクロック周波数を高くする等の改良を行うが必要になる。以下、３つの改良例（１）（２）（３）を説明する。
【００３０】
（１）消費電力抑制の一つの方法として、各リザベーションステーションRSA,RSEの実行命令の入力ポート数を、命令デコーダI_DECのスロット数４（Ｋ個）よりも少ない２（Ｌ個）に制限する。図２において、各リザベーションステーションRSA0,RSA1,RSE0,RSE1の入力ポートの数は２である。その結果、例えば、アロケーションユニットALC_UNTは、命令デコーダI_DECが並列に出力する４個の実行命令を、２つのリザベーションステーションRSE0,RSE1それぞれに２個の実行命令を並列に割振る。または、アロケーションユニットALC_UNTは、命令デコーダI_DECが並列に出力する４個の実行命令を、２つのリザベーションステーションRSA0,RSA1それぞれに２個の実行命令を並列に割振る。さらに、命令デコーダI_DECが並列に出力する４個の実行命令を、４つのリザベーションステーションRSA0,RSA1,RSE0,RSE1それぞれに１個の実行命令を並列に割振ることもできる。
【００３１】
このように、リザベーションステーションの入力ポート数を命令デコーダのスロット数より少ない数に制限することで、リザベーションステーションの動作に伴う消費電力を抑制できる。ただし、命令デコーダI_DECの４つのスロットD0-D3のスループットの低下を防止する必要がある。
【００３２】
（２）リザベーションステーションのパイプライン回路のクロック周波数を高くする一つの方法として、各演算器にそれぞれ専用のリザベーションステーションを設ける。
【００３３】
つまり、図２に示したとおり、２つの固定小数点演算器EXA,EXBに対して２つのリザベーションステーションRSE0,RSE1を設け、RSE0は演算器EXAに命令を発行するが演算器EXBには発行せず、逆に、RSE1は演算器EXBに命令を発行するが演算器EXAには発行しない。このような構成にすることで、各RSE0,RSE1のキューに格納される実行待ちの命令に対してアウトオブオーダーで利用できる回路資源を多くすることができる。
【００３４】
さらに、各RSE0,RSE1のキューで実行待ちの複数の命令から対応する演算器に発行する命令を選択する論理段数を減らすことができる。その理由は、各RSを各演算器専用にすることで、１つの演算器に対して発行できるRS内の命令数を減らすことができ、少ない命令数から演算器に発行する命令を選択する論理段数を減らすことができる。その結果、リザベーションステーションのパイプライン回路の段数を減らすことで、１クロックサイクルの処理時間が短くなり、クロック周波数を高くできる。
【００３５】
オペランドアドレス生成器EAGA,EAGBとリザベーションステーションRSA0,RSA1も、固定小数点演算器EXA,RXB及びRSE0,RSE1と同様の関係とする。
【００３６】
（３）演算器のクロック周波数を高くする別の方法として、演算器のバックツーバック（Back to Back）のパスを自身の演算器やRSにフィードバックする方法が考えられる。バックツーバックのパスは、演算器の演算結果を次の演算の入力オペランドに供給するパスや、一つ前の演算結果から次の演算で発行できる実行命令を各リザベーションステーションから検出するパスなどである。このパスを、それぞれの演算器において、自身の演算結果を自身の演算器やRSにフィードバックし、他の演算器や他のRSにフィードバックしないことで、演算器自身の演算結果は自身の演算器の入力オペランドにのみフィードバックすれば良くなる。また、リザベーションステーションへのフィードバックに対して探索するRS内で待機中の実行命令の数を少なくできる。そのため、クロックサイクル時間を短くできクロックの高周波化が可能になる。
【００３７】
［リザベーションステーションと演算器の構成例］
図４は、リザベーションステーションの入力ポート数を制限した構成例を示す図である。図４により、前述した改良例（１）について説明する。
【００３８】
図４には、４つのデコーダスロットD0-D3を有する命令デコーダI_DECと、実行命令の演算器のリザベーションステーションへの割り振りを行うアロケーションユニットALC_UNTと、リザベーションステーションRS_0の構成例が示される。
【００３９】
リザベーションステーションRS_0は、２つの入力ポートIN_PO_00, IN_PO_01と、各入力ポートから入力される実行命令をキューインして蓄積する入力キューIN_QUEと、入力キューIN_QUEで待機中の命令の中から、演算器に発行する命令を選択する命令選択回路１５とを有する。入力ポートIN_PO_00から入力する実行命令は、入力キューIN_QUEの０番から探索していって１番目に若い空いている番号にキューインし、同様に、入力ポートIN_PO_01から入力する実行命令は、入力キューIN_QUEの０番から探索していって２番目に若い空いている番号にキューインする。各入力キューは、例えば、８個の実行命令を格納可能である。
【００４０】
そして、命令選択回路１５は、実行可能状態になった命令を、入力キューIN_QUEで待機中の命令から選択し、その命令をRS_0に対応する演算器EX_0に発行する。前述したとおり、RSでの命令の発行は、アウトオブオーダーで行われる。リザベーションステーションRS_1もRS_0と同様の構成と動作を有する。
【００４１】
前述したとおり、リザベーションステーションRS_0の入力ポート数を２と、命令デコーダI_DECのスロット数４より少なく制限することで、RS内で待機中の命令数を減らして消費電力抑制とクロックの高周波化を図ることができる。
【００４２】
図５は、各演算器に専用のリザベーションステーションを設け、演算器のバックツーバックのパスの経路例を示す図である。図５により、前述した改良例（２）（３）について説明する。
【００４３】
図５には、リザベーションステーションRS_0,RS_1と、それぞれに対応する演算器EX_0,EX_1と、リネーミングレジスタファイルREN_REGと、アーキテクチャレジスタファイルARC_REGが示される。リネーミングレジスタファイル及びアーキテクチャレジスタファイルと、各演算器への接続は省略されている。
【００４４】
図５では、第一に、２つの演算器EX_0,EX_1にそれぞれ、専用のリザベーションステーションRS_0,RS_1が設けられる。そして、リザベーションステーションRS_0にキューインされた命令は、演算器EX_0に発行されるが、演算器EX_1に発行されることはない。逆に言えば、もう一つのリザベーションステーションRS_1内の命令が、演算器EX_0の回路資源を使用することはない。これにより、リザベーションステーションRS_0内にキューインされた複数の実行命令は、演算器EX_0の回路資源を専有して利用できる。また、リザベーションステーションRS_0内の命令選択回路は、入力キュー内で待機中の少ない数の命令から、演算器EX_0に発行すべき命令を選択できる。
【００４５】
第二に、演算器EX_0は、リザベーションステーションRS_0から実行命令を発行される。実行命令には、例えば、オペコードに加えて入力オペランドに対応するレジスタ番号、演算結果を格納するレジスタ番号などの命令実行に必要は情報が含まれている。演算器EX_0は、アーキテクチャレジスタファイルのレジスタ番号に対応するレジスタの値を入力オペランドに設定し、オペコードに対応する演算を実行し、演算結果を一旦リネーミングレジスタファイル内のレジスタに格納する。そして、命令の完了処理で、リネーミングレジスタ内の演算結果がアーキテクチャレジスタに格納される。アーキテクチャレジスタは、ソフトウエアからアクセス可能であり、以降の命令はアーキテクチャレジスタ内の値を入力オペランドに供給して演算を実行する。
【００４６】
演算器EX_0には、演算結果をリネーミングレジスタやアーキテクチャレジスタを経由せずに直接入力オペランドにバイパスするバックツーバックのパスBB_00を有する。このようなパスの利用は、次のようなプログラムにおいて実行サイクルを短縮することができる。
Add x0, x0, x0
Add x0, x0, x0
Add x0, x0, x0
Add x0, x0, x0
上記のプログラムでは、アーキテクチャレジスタ内のレジスタx0の値にレジスタx0の値を加算して、同じレジスタx0に書き込む加算命令Addが４回連続する。つまり、４つの加算命令は、それぞれ１つ前の加算命令の加算結果を次の加算命令が入力に利用するという依存性を有する。そこで、一つ前の加算命令の加算結果を、リネーミングレジスタ及びアーキテクチャレジスタを経由せずに、上記のパスB_00を経由して演算器EX_0の入力オペランドに供給すれば、各加算命令の実行サイクルを最短化することができる。
【００４７】
上記の改良（１）（２）（３）をプロセッサに適用する場合、以下の点に注目して、アロケーションユニットALC_UNTが、命令デコーダI_DECの４つのスロットD0-D3が生成する実行命令を各リザベーションステーションRSへ割振るようにすることが望ましい。
【００４８】
改良（１）をプロセッサに適用した場合、アロケーションユニットが、各リザベーションステーションの入力ポート数を超えた数の実行命令を割振ると、命令デコーダI_DECが並列に生成する４つの実行命令を１サイクルで出力することができない。その結果、命令デコーダは、全実行命令がリザベーションステーションへの割り振りを完了するまで、次のフェッチ命令のデコード処理を待たされることになり、命令デコーダのスループットが低下する。
【００４９】
改良（２）をプロセッサに適用した場合、アロケーションユニットが、実行命令をあるリザベーションステーションにかたよって割振ると、複数の演算器のうち特定の演算器への命令の発行が集中し、他の演算器への命令発行が少なくなる。このような命令の特定の演算器へのかたよりは、複数の演算器によるスループットの低下を招く。
【００５０】
改良（３）をプロセッサに適用した場合、演算の依存性がある連続する命令列を異なる演算器を割振ると、最短のパスであるバックツーバックのパスを利用することができず、命令と命令との間に無処理時間の隙間が発生し、実質的に演算レイテンシが長くなる。
【００５１】
［アロケーションユニット］
図６は、本実施の形態におけるアロケーションユニットの構成例を示す図である。アロケーションユニットALC_UNTは、命令デコーダI_DECの４つのスロットD0-D3が出力する実行命令をどのリザベーションステーションに割振るかを示す割振りテーブルALC_tableと、割振りテーブルを参照して、各スロットD0-D3の実行命令をどのリザベーションステーションに割振るかを決定する割振り制御部１６と、割振り制御部が決定した各スロットD0-D3の割振り先情報に基づいて、各スロットD0-D3の実行命令を割振り先のリザベーションステーションに割振る割振り部１７とを有する。
【００５２】
命令デコーダI_DECは、各スロットD0-D3に入力されたフェッチ命令をデコードする過程で、その実行命令を割振ることができるRSの判別を行う。このRSの判別では、固定小数点演算器EXA,EXBの両方に割振ることができる命令をRSE命令と、オペランドアドレス生成器EAG（EAGA,EAGB）に割振ることができる命令をRSA命令と、そして、EXA,EXB,EAGの全てに割振ることができる命令をRSX命令とそれぞれ称する。また、RSE命令はRSAの演算器では実行できず、RSA命令はRSEの演算器では実行できない。
【００５３】
一例として、固定小数点演算器EXA,EXBは、加減算器と、AND,OR等の論理演算器と、乗算器などを有するのに対して、オペランドアドレス生成器EAGA,EAGBは、加減算器と、メインメモリにアクセスするロードストアユニットを有する。このような場合、AND命令はRSE命令、LOAD命令はRSA命令、そして、ADD命令はRSX命令と判別される。
【００５４】
命令デコーダI_DECは、さらに、フェッチ命令をデコードする過程で、フェッチ命令の１つ前の命令と依存関係があるか否かを判定し、依存関係がある場合そのフェッチ命令にスレーブフラグ（SLAVE_FG）を付加する。
【００５５】
そして、命令デコーダI_DECは、各スロットD0-D3でのフェッチ命令のデコード過程で検出した、命令種別（RSE命令、RSA命令、RSX命令）と、依存関係があるか否かを示すスレーブフラグSLAVE_FGを、割振り情報として、割振り制御部１６に送信する。
【００５６】
割振り制御部１６は、割振り情報に基づいて割振りテーブルを参照し、各スロットD0-D3の実行命令の割振り先リザベーションステーションを決定し、割振り部１７と命令デコーダI_DECに送信する。さらに、割振り部１７は、スロットD0-D3それぞれの割振り先情報に基づいて、各スロットD0-D3の実行命令を、原則並列に、割振り先のリザベーションステーションに割振る。
【００５７】
各リザベーションステーションは、実行命令を対応する演算器に発行した場合、入力キューに空きが発生したことを通知する命令発行通知I_I_NTFを、命令デコーダI_DECに通知する。
【００５８】
命令デコーダI_DECは、各リザベーションステーションの入力キューの空き情報を得るために、各RSの入力キューの利用カウンタUSED_CTRを有する。この利用カウンタUSED_CTRは、４つのリザベーションステーション別（USED_CTR_RSA0,RSA1,RSE0,RSE1）に有する。これらの利用カウンタは、割振り制御部ALC_UNTから各スロットD0-D3の割振り先RS情報ALC_D_INFに基づいて割振られた命令数分インクリメントされ、RSからの命令発行通知I_I_NTFに応答してデクリメントされる。その結果、命令デコーダI_DECは、これらの利用カウンタのカウント値を各RSの入力キューの最大エントリ数から減じることで、各RSの入力キューの空き数を把握することができる。
【００５９】
［割振りテーブルの例］
図７は、割振りテーブルの第１の例を示す図である。割振りテーブル内のD0-D3は命令デコーダの４つのスロットを示す。また、割振りテーブルRSE_table1, RSA_table_1, RSX_table_1及びRSX_table_2は、各スロットD0-D3から出力される実行命令が上記のRSE命令、RSA命令、RSX命令かに基づいて選択される割振りテーブルである。これらの割振りテーブルは基本となる割振りテーブルであり、第１の実施の形態で使用される。
【００６０】
さらに、割振りテーブルのスロットD0-D3と各割振りテーブルRSE_table1, RSA_table_1, RSX_table_1及びRSX_table_2の交差点には、割振り先RSが示される。この割振り先RSの種類は以下のとおりである。
RSEm：RSE0,RSE1のうち、空き数が多い方（more）のRS
RSEf：RSE0,RSE1のうち、空き数が少ない方（fewer）のRS
RSAm：RSA0,RSA1のうち、空き数が多い方（more）のRS
RSAf：RSA0,RSA1のうち、空き数が少ない方（fewer）のRS
他の割振りテーブルRSE_table_2, RSA_table_2, RSX_table_3〜RSX_table_6については、後の実施の形態で説明する。
【００６１】
図８は、割振りテーブルの第２の例を示す図である。この割振りテーブルも図７の第１の例と同様の構成であり、割振りテーブルRSE_table_1, RSA_table_1, RSX_table_1及びRSX_table_2と、RSX_table_3及びRSX_table_4は、図７の第１の例と割振り先の配置が異なる。どのように異なるかは後述する。
【００６２】
図９は、第１の実施の形態におけるアロケーションユニットALC_UNTの割振り制御部１６の動作を示すフローチャート図である。前述したとおり、割振り制御部１６には、命令デコーダI_DECから、各スロットD0-D3の割振り情報として、実行命令がRSE命令、RSA命令、RSX命令のいずれかの命令種別情報とスレーブフラグSLAVE_FGが付加されたか否かの情報が供給される。
【００６３】
そして、割振り制御部１６は、スレーブフラグに基づいて、割振り対象の実行命令がそれの１つ前の命令と依存関係があり、且つ１つ前の命令と同じRSに割り振り可能か否か判定し（S1）、可能な場合（S1のYES）、割振り対象の実行命令を１つ前の命令と同じRSに割振り先RSを決定する（S2）。
【００６４】
また、割振り制御部１６は、次の様に割り振り先RSを決定する。
（１）割振り対象の実行命令がRSE命令の場合（S3のYES）、割振りテーブルRSE_table_1に基づいて割振り先RSを決定する（S4）。
（２）さらに、割振り対象の実行命令がRSA命令の場合（S5のYES）、割振りテーブルRSA_table_1に基づいて割振り先RSを決定する（S6）。
（３）さらに、割振り対象の実行命令がRSX命令の場合（S7のYES）、割振りテーブルRSX_table_1またはRSX_table_2に基づいて割振り先RSを決定する（S8）。どちらのテーブルにするかは、リザベーションステーションRSE0,RSE1の合計空き数と、RSA0,RSA1の合計空き数とを比較し、RSE側の合計空き数が多ければ、割振りテーブルRSX_table_1を選択する。
そして、RSE,RSA,RSX命令のいずれにも該当しない場合（S7のNO）、RSE、RSAには割り振らない（S9）。このような命令は、分岐命令やNOP（Non Operation）命令などである。
【００６５】
図１０は、割振りテーブルによる各スロットD0-D3の命令の割振り例を示す図である。図１０には、割振りテーブルRSE_table_1とRSX_table_1の例が示される。そして、具体例を示すテーブルT1には、各スロットD0-D3が出力する命令種別の具体例と、各スロットに対応して参照するテーブル参照tableと、割振り先RSとが示される。
【００６６】
［RSE命令用割振りテーブルRSE_table_1の特徴］
RSE命令用の割振りテーブルRSE_table_1は、各スロットD0-D3に対して、割振り先RSをRSEm/RSEf/RSEm/RSEfとする。これは図７の第１の例である。つまり、スロットD0,D2のRSE命令の割振り先をRSEmとし、スロットD1,D3のRSE命令の割振り先をRSEfとする。また、スロットD0-D3に対して割振り先が全てRSEになっている。そして、割振り先RSとしてRSE0,RSE1を２個以下（RSの入力ポート数２以下）で同数有する。更に、スロットD0-D3に対して、空きが多いRS／空きが少ないRS／空きが多いRS／空きが少ないRSという第１の順番(m/f/m/f)になっている。
【００６７】
この様な割振りテーブルに基づいてRSへ割振ると、全スロットD0-D3がRSE命令の場合、２つのRSE命令はRSEmに割り振られ、２つのRSE命令はRSEfに割り振られる。つまり、この割振りテーブルRSE_table_1を使用すると、RSEmとRSEfそれぞれには最大で２つの命令しか同時に割り振られない。
【００６８】
各リザベーションステーションの入力ポート数は２であるので、全スロットD0-D3がRSE命令の場合、命令デコーダI_DECのスロット数４に対して各リザベーションステーションの入力ポート数２の構成に対し、その４つのRSE命令を１クロックサイクルで並列にリザベーションステーションRSE0,RSE1に割振ることができる。
【００６９】
さらに、４つのRSE命令のうちプログラム内の実行順が最も先のスロットD0のRSE命令は、空きが多いRSEmに割り当てられ、最も後のスロットD3のRSE命令は空きが少ないRSEfに割り当てられる。また、スロットD1,D2間では、空きが少ないRSEfと空きが多いRSEmとにそれぞれ割り当てられる。
【００７０】
これにより、RSE0,RSE1間の空き数を均一化することができ、RSE0,RSE1に対応する演算器EXA,EXBの処理命令数を均一化でき、複数の演算器の使用効率を高めることができる。この理由は、命令デコーダの４つのスロットD0-D3の命令は、例えば、先頭スロットD0の命令が分岐命令であり且つ分岐先が他のスロットD1-D3のいずれの命令でもない場合が想定されるので、後ろのスロットの命令ほど実行される確率が低下するからである。したがって、割振りテーブルRSE_table_1では、実行順が先のスロットD0に空き数が多いRS（RSEm）を、後のスロットD3に空き数が少ないRS(RSEf)を割振り先にしている。
【００７１】
この点、割振りテーブルRSE_table_1は、図８の第２の例のように、RSEm/RSEm/RSEf/RSEfにしても同様の割振り効果を得ることができる。
【００７２】
［RSA命令用割振りテーブルRSA_table_1の特徴］
図１０には示していないが、図７の割振りテーブル例のRSA命令用の割振りテーブルRSA_table_1は、RSE命令用の割振りテーブルTSE_table_1と同様に、スロットD0-D3の順番に、RSAm/RSAf/RSAm/RSAfと、RSAmが２つ、RSAfが２つで、全てRSAになっている。つまり、スロットD0,D2のRSA命令の割振り先をRSAmとし、スロットD1,D3のRSA命令の割振り先をRSAfとする。また、スロットD0-D3に対して割振り先が全てRSAになっている。そして、割振り先RSとしてRSA0,RSA1を２個以下（RSの入力ポート数２以下）で同数有する。更に、空きが多いRS／空きが少ないRS／空きが多いRS／空きが少ないRSという第１の順番(m/f/m/f)になっている。その結果、RSE用テーブルと同じ機能を有する。
【００７３】
［RSX命令用割振りテーブルRSX_table_1の特徴］
一方、RSX命令用の割振りテーブルRSX_table_1は、各スロットD0-D3に対して、割振り先RSをRSEm/RSEf/RSAm/RSAfにする。これも図７に示した例である。つまり、割振り先は、RSEm,RSEf,RSAm,RSAfがそれぞれ１つであり、RSEかRSAかについては、D0-D3に対してRSE/RSE/RSA/RSAという順番（E/E/A/A）になっている。さらに、RSE命令用テーブルとRSA命令用テーブルと同様に、空きが多いRS／空きが少ないRS／空きが多いRS／空きが少ないRSという第１の順番(m/f/m/f)になっている。そして、４つの割振り先ＲＳは、RSE0,RSE1,RSA0,RSA1を同数有する。
【００７４】
この割振りテーブルによれば、スロットD0,D1のRSX命令の割振り先をRSEm,RSEfとし、スロットD1,D3のRSX命令の割振り先をRSAm,RSAfとする。この様に割振ると、全スロットD0-D3がRSX命令の場合、２つのRSX命令はRSEに割り振られ、２つのRSA命令はRSAに割り振られる。
【００７５】
そのため、全スロットD0-D3がRSX命令の場合、その４つのRSX命令を、２つのRSX命令はRSE0,RSE1に、残りの２つのRSX命令はRSAｍ，RSAｆに、１クロックサイクルで並列に割振ることができる。
【００７６】
さらに、４つのRSX命令のうちプログラム内の実行順が最も先のスロットD0のRSX命令は空きが多いRSEmに割り当てられ、最も後のスロットD3のRSX命令は空きが少ないRSAfに割り当てられる。そして、スロットD1,D2では、割振りテーブルRSE_table_1と同様に、スロットD1のRSX命令は空きが少ないRSEfに割り当てられ、スロットD2のRSX命令は空きが多いRSAmに割り当てられる。
【００７７】
その結果、RSE0,RSE1,RSA0,RSA1間の空き数を均一化することができ、RSE0,RSE1に対応する演算器EXA,EXBと、RSA0,SA1に対応する演算器EAGA,EAGBの処理命令数を均一化でき、複数の演算器の使用効率を高めることができる。
【００７８】
［RSX命令用割振りテーブルRSX_table_2の特徴］
同様に、図７の２番目のRSX命令用の割振りテーブルRSX_table_2は、１番目のRSX命令用割振りテーブルRSX_table_1とRSEとRSAの順番が逆に（A/A/ E/E）なっているが、両者は同様にRSEm,RSEf,RSAm,RSAfがそれぞれ１つであり、更に、RSE命令用テーブルとRSA命令用テーブルと同様に、空きが多いRS／空きが少ないRS／空きが多いRS／空きが少ないRSという第１の順番(m/f/m/f)になっている。
【００７９】
上記のように、RSE用、RSA用、RSX用割振りテーブルは全て、４つのスロットD0-D3について、同じRSの数が最大２であり、空きが多いRSmと少ないRSｆの組み合わせが第１の順番(m/f/m/f)になっている。
【００８０】
図８の第２の割振りテーブルは、RSE_table_1では、RSEが２つ、RSAが２つであるが、図７と異なり、空きが多いRSmと少ないRSfの組み合わせが第２の順番(m/m/f/f)になっている。そして、４つの割振り先ＲＳは、RSE0,RSE1,RSA0,RSA1を同数有する。RSA_table_1、RSX_table_1, RSX_table_2も同様に第２の順番である。
【００８１】
そして、RSX_table_3, RSX_table_4についても、図７では第１の順番(m/f/m/f)であり、図８では第２の順番(m/m/f/f)になっている。
【００８２】
RSE_table_2, RSA_table_2, RSX_table_5, RSX_table_6は、図7と図８で同じである。
【００８３】
図７、図８の２種類のRSX命令用割振りテーブルRSX_table_1, RSX_table_2は、次のような特徴も有する。すなわち、RSX命令用割振りテーブルRSX_table_1,2は、４個の割振り先ＲＳを、第１の複数デコーダスロットD0,D1（またはD0,D2）に対して、RSE命令用割振りテーブルの第１の複数デコーダスロットD0,D1（またはD0,D2）に対する割振り先ＲＳとし、第１の複数デコーダスロットと異なる第２の複数デコーダスロットD2,D3（またはD1,D3）に対して、RSA命令用割振りテーブルの第２の複数デコーダスロットD2,D3（またはD1,D3）に対する割振り先ＲＳとし、且つ第１の順番の組み合わせで有する。
【００８４】
［具体例］
そこで、図１０のテーブルT1の例を参照すると、スロットD0-D3の４つの命令がどのような組み合わせであっても、同じRSEまたはRSAに３個以上の命令が割り振られることはない。また、同じ命令種別のRS間では、空きが多いRS数と少ないRS数が同じで且つ順番が先のスロット側が空きが多いRS(RSm)であり、同じ命令種別間の命令数が均一化されるようになっている。
【００８５】
テーブルT1の具体例では、スロットD0-D3に命令種別がRSE命令／RSX命令／RSE命令／RSX命令となっているので、各スロットS0-D3の参照テーブルは、その命令種別に対応したRSE命令用割振りテーブルRSE_table_1かRSX命令用割振りテーブルRSX_table_1のいずれかとなる。その結果、スロットD0-D3の命令の割振り先は、RSEm/RSEf/RSEm/RSAfとなる。
【００８６】
この割振り先の結果を見ると、RSEmには２つの命令が、RSEfとRSAfにはそれぞれ１つの命令が割り振られる。つまり、同じRSEまたはRSAに３個以上の命令が割り振られることはない。
【００８７】
このことは、前述の改良（１）の構成において、命令デコーダ内の４つのスロットD0-D3の４つの命令が、同じクロックサイクルで並列にリザベーションステーションに割り振られるので、命令デコーダの処理のスループットを低下させることはない。
【００８８】
図１１は、比較例として好ましくない割振りテーブルによる各スロットD0-D3の命令の割振り例を示す図である。RSE_table_1の割振り先は、図１０と同じRSEm/RSEf/RSEm/RSEfであるのに対して、RSX_table_1の割振り先は、図１０と異なりRSAm/RSEm/RSAf/RSEfである。比較例の好ましくない点は、図７の例のように、両テーブルが第１の順番(m/f/m/f)に統一されていないことである。または、図８のように、両テーブルが第２の順番(m/m/f/f)に統一されていないことである。
【００８９】
具体例のテーブルT2では、図１０のテーブルT1と同じ様に、命令種別はD0-D3でRSE/RSX/RSE/RSX、参照テーブルもT1と同じだが、割振り先RSはRSEm/RSEm/RSEm/RSEfとなり、同じRSEmに３つの命令が割り振られることになる。これでは、１サイクルで命令デコーダの命令をRSEmのRSに割振ることができない。
【００９０】
この比較例から理解できるとおり、RSE_table_1, RSA_table_1のテーブル例で説明すると、図７では、割振り先の空き数(m,f)の組み合わせは第１の順番(m/f/m/f)で統一されているのに対して、図８では、割振り先の空き数(m,f)の組み合わせは第２の順番(m/m/f/f)で統一されている。
【００９１】
RSX_table_1, RSX_table_2の例でも、図７では割振り先の空き数(m,f)の組み合わせは第１の順番（m/f/m/f）であり、図８では第２の順番(m/m/f/f)である。そのため、割振り先のRSEかRSAかの組み合わせは、図７では順番（E/E/A/A）または（A/A/E/E）であるのに対して、図８では順番（E/A/E/A）または（A/E/A/E）である。
【００９２】
このように、RSXの割振りテーブルは、第１の順番(m/f/m/f)または第２の順番(m/m/f/f)のいずれかでRSE,RSAのテーブルと統一されていれば、RSEとRSAの組み合わせは、順番（E/E/A/A）または（A/A/E/E）でも、順番（E/A/E/A）または（A/E/A/E）でも良い。
【００９３】
［第２の実施の形態］
第２の実施の形態では、前述の改良（２）に対応して、RSEとRSAの間の割振り命令数を均一化するとともに、RSE0,RSE1,RSA0,RSA1全てで割振り命令数を均一化する割振りテーブルを使用して実行命令の割振りを行う。そのために、アロケーションユニットは、図７または図８の割振りテーブルRSE_table_1, RSA_table_1, RSX_table_1, RSX_table_2に加えて、RSE_table_2, RSA_table_2, RSX_table_3, RSX_table_4, RSX_table_5, RSX_table_6も使用して割振り処理を行う。以下の説明では図７を例にして説明するが、図８の例で割り振っても良い。
【００９４】
図１２は、第２の実施の形態におけるアロケーションユニットALC_UNTの割振り制御部１６の動作を示すフローチャート図である。割振り制御部１６は、割振り対象の実行命令がそれの１つ前の命令と依存関係があり、且つ１つ前の命令と同じRSに割り振り可能か否か判定し（S1）、可能な場合（S1のYES）、割振り対象の実行命令を１つ前の命令と同じRSに割振り先RSを決定する（S2）。ここまでの割振りは図９と同じである。
【００９５】
また、割振り制御部１６は、次の様に割り振り先RSを決定する。
（１）割振り対象の実行命令がRSE命令の場合（S3のYES）、RSE割振りテーブルの選択とそれに基づく割振りを実行する（S40）。
（２）さらに、割振り対象の実行命令がRSA命令の場合（S5のYES）、RSA割振りテーブルの選択とそれに基づく割振りを実行する（S60）。
（３）さらに、割振り対象の実行命令がRSX命令の場合（S7のYES）、RSX割振りテーブルの選択とそれに基づく割振りを実行する（S80）。
そして、RSE,RSA,RSX命令のいずれにも該当しない場合（S7のNO）、RSE、RSAには割り振らない（S9）。
【００９６】
図１３は、図１２のS40（RSE割振りテーブルの選択とそれに基づく割振り処理）を示すフローチャート図である。割振り制御部１６は、命令がRSE命令の場合、RSE0とRSE1の空き数の差分が第1の閾値TH1以上ある場合は（S41のYES）、全てのスロットD0-D3でRSEmに割振るRSE_table_2を選択しRSE命令を割振る（S42）。第1の閾値TH1未満の場合は（S41のNO）、第１の実施の形態と同様に、基本の割振りテーブルRSE_table_1を選択しRSE命令を割振る（S43）。このように、RSE0とRSE1の空き数の差分が大きいか否かに応じて、RSE_table_2とRSE_table_1とを使い分けることで、RSE0,RSE1の空き数が可能な限り均一化される。
【００９７】
図１４は、図１２のS60（RSA割振りテーブルの選択とそれに基づく割振り処理）を示すフローチャート図である。割振り制御部１６は、命令がRSA命令の場合、RSA0とRSA1の空き数の差分が第２の閾値TH2以上ある場合は（S61のYES）、全てのスロットD0-D3でRSAmに割振るRSA_table_2を選択しRSA命令を割振る（S62）。第２の閾値TH2未満の場合は（S61のNO）、第１の実施の態と同様に、基本の割振りテーブルRSA_table_1を選択しRSA命令を割振る（S63）。図１３のRSEの例と同様に、RSA0とRSA1の空き数の差分が大きいか否かに応じて、RSA_table_2とRSA_table_1とを使い分けることで、RSA0,RSA1の空き数が可能な限り均一化される。
【００９８】
図１５は、図１２のS80（RSX割振りテーブルの選択とそれに基づく割振り処理）を示すフローチャート図である。割振り制御部１６は、最大空き数のRSAの空き数と他のRSの空き数との差分が第３の閾値TH3以上ある場合（S81のYES）、全てのスロットD0-D3でRSAmに割振るRSX_table_6を選択しRSX命令を割振る（S82）。逆に、最大空き数のRSEの空き数と他のRSの空き数との差分が第３の閾値TH3以上ある場合（S83のYES）、全てのスロットD0-D3でRSEmに割振るRSX_table_5を選択しRSX命令を割振る（S84）。
【００９９】
割振り制御部１６は、RSA0,RSA1の合計空き数がRSE0,RSE1の合計空き数より第４の閾値TH4以上多い場合（S85のYES）、全てRSAで第１の順番（m/f/m/f）の組み合わせRSAm/RSAf/RSAm/RSAfのRSX_table_4を選択しRSX命令を割振る（S86）。逆に、RSE0,RSE1の合計空き数がRSA0,RSA1の合計空き数より第４の閾値TH4以上多い場合（S87のYES）、全てRSEで第１の順番（m/f/m/f）の組み合わせRSEm/RSEf/RSEm/RSEfのRSX_table_3を選択しRSX命令を割振る（S88）。
【０１００】
最後に、割振り制御部１６は、第１の実施の形態の図９の工程S8と同様に、RSA0,RSA1の合計空き数がRSE0,RSE1の合計空き数より多い場合（S89のYES）、RSX_table_2で割振り（S90）、多くない場合（S89のNO）、RSX_table_1で割振る（S91）。
【０１０１】
上記のように割振りテーブルを空き数の関係に応じて選択することで、RSE内、RSA内、RSEとRSA間、全RS間で割り振られる命令数を均一化することができる。但し、RSE_table_2、RSA_table_2、RSX_table_5、RSX_table_6を選択した場合、４つの割振り先が同じRSになるので、その場合は命令デコーダは２クロックサイクルで同じRSに命令を割振る。命令デコーダの命令割振りに基づくスループットと、全演算器による処理数の均一化によるスループットのいずれを重要視するかで、これらのテーブルの選択を行わないか、行うかを決めるようにしてもよい。
【０１０２】
図６に示したとおり、アロケーションユニット内の割振りテーブルALC_tableには、命令デコーダI_DECは、RSA0,RSA1,RSE0,RSE1の使用カウンタの値に基づくの空き数の情報が供給されるので、図１２〜図１５に基づいて、割振りテーブル内の最適なテーブルが選択され、選択された参照テーブル情報が割振り制御部１６に供給される。この最適なテーブルの選択を割り振り制御部１６が行ってもよい。
【０１０３】
［第３の実施の形態］
図１６は、第３の実施の形態における４つの演算器の構成例を示す図である。図１６に示した構成例では、オペランドアドレス生成器EAGA,EAGBは、加減算器ADD/SUBとロードストア部LOAD/STOREとを有する。第１の固定小数点演算器EXAは、加減算器ADD/SUBと論理演算器AND/ORと除算器DIVとを有し、そして、第２の固定小数点演算器EXBは、加減算器ADD/SUBと論理演算器AND/ORと乗算器MUL(Multiplexer)とを有する。除算器DIVや乗算器MULは、回路実装コストが高く使用頻度が少ないので、いずれか一方の固定小数点演算器に設けられる例である。
【０１０４】
上記のような４つの演算器の構成の場合、命令デコーダは、除算命令などRSE0の演算器だけで実行できるRSE0命令と、乗算命令などRSE1の演算器だけで実行できるRSE1命令とを、RSE0,RSE1両方の演算器で実行できるRSE命令と区別して判別する。そして、アロケーションユニットの割振り制御部は、RSE0命令と判別された場合、割振りテーブルや依存性による割振りではなく、割振り先をRSE0と決定し、RSE1命令と判別された場合、同様に割振り先をRSE1と決定する。
【０１０５】
図１７は、第３の実施の形態における割振り制御部の動作のフローチャート図である。図１７では、図１２のフローチャートに工程S10-S13が追加される。すなわち、割振り制御部は、命令デコーダが生成する実行命令がRSE0命令の場合（S10のYES）、その命令をRSE0に割振り（S11）、実行命令がRSE1命令の場合（S12のYES）、その命令をRSE1に割振る（S13）。それ以降は、図１２と同じである。
【０１０６】
［第４の実施の形態］
図１８は、第４の実施の形態におけるプロセッサの構成例を示す図である。図１８において図２と異なる構成は、命令デコーダI_DECとアロケーションユニットALC_UNTとの間に、ループキャッシュLP_CACHEと命令セレクタI_SELとを有することである。命令デコーダI_DECは、図示しないが、図２と同じように４スロットD0-D3を有する。
【０１０７】
ループキャッシュは、プログラムの実行順の命令列内にループを検出すると、命令デコーダI_DECが出力する１ループ分の実行命令を登録（記憶）する。そして、それ以降は、命令デコーダからではなく、ループキャッシュから１ループ内の実行命令を出力する。そして、命令セレクタI_SELはループキャッシュ側の実行命令を選択し、アロケーションユニットALC_UNTに出力する。ループキャッシュが１ループ内の実行命令の出力を繰り返している間、命令デコーダ以前の命令フェッチアドレス生成器I_F_ADD_GEN、L1命令キャッシュL1_ICACHE、命令バッファI_BUF、命令デコーダI_DECの動作を停止し、省電力化する。但し、命令デコーダによるRSの使用カウンタによる各RSの使用エントリ数の管理等は継続される。そして、ループキャッシュから実行命令が出力中、アロケーションユニット内の割振り部１７は、ループキャッシュから出力される実行命令を割振りテーブルに基づくRSに割振る。
【０１０８】
第１の実施の形態等の図９，図１２，図１７では、命令デコーダが入力されたフェッチ命令が、一つ前の命令に依存する命令であることを検知すると、そのフェッチ命令に対応する実行命令にスレーブフラグSLAVE_FGを付加する。そして、アロケーションユニットが、スレーブフラグ付き実行命令について、一つ前の命令に割振ったRSと同じRSに割振り可能であれば、同じRSに割振る。これにより、演算器に設けられたバックツーバックのパスを使用して演算サイクルを最短化する。
【０１０９】
しかし、依存が検出された実行命令がRSE0命令である場合、一つ前の実行命令は、割振りテーブルに基づいてRSに割振られるので、必ずしも同じRSE0に割振られているとは限らない。このように、スレーブフラグを付加する方法では、依存のある命令が必ずしも同じRSに割振られるとは限らず、演算器の実行サイクルの最短化を実現できない場合がある。
【０１１０】
一方、図１８のように、ループキャッシュには１つのループ内の全ての実行命令が登録される。したがって、ループキャッシュ内に登録される命令列から、依存性のある命令列（以下、チェイン命令列と称する）を全て判別することができる。
【０１１１】
そこで、第４の実施の形態では、アロケーションユニットが、ループキャッシュ内に登録された実行命令列を判定し、チェイン命令列を検出するたびに、インクリメントされるチェインIDを、検出したチェイン命令列の命令に割り当てる。このチェインIDはループキャッシュ内に登録される。そして、チェイン命令列内の命令種別に基づいて、そのチェイン命令列内の命令をどのRSに割振るかを、チェインテーブル（後で詳述する）に基づいて選択する。
【０１１２】
図１９は、第４の実施の形態におけるアロケーションユニットの割振り制御部の動作を示すフローチャート図である。割振り制御部は、依存性のある実行命令に付加されるスレーブフラグではなく、チェインIDが付加された実行命令について、チェインテーブルが指定する割振り先RSに割り振り可能か否かを判定する（S14）。そして、チェインテーブルのRSに割り振り可能な場合、そのチェインID付実行命令をチェインテーブルの割振り先RSに割振る（S15）。
【０１１３】
図２０は、ループキャッシュに登録された命令列の例に対するチェインIDとチェインテーブルIDを示す図である。ループキャッシュ内に１６命令が登録されていたとする。そのうち、命令番号１−４と、７−１２が依存性のあるチェイン命令列と判定されたとする。
【０１１４】
その場合、ループキャッシュまたはアロケーションユニットが、ループキャッシュ内の命令列を判定して、命令番号１−４のチェイン命令列にチェインID「０」を割り当て、命令番号７−１２のチェイン命令列にチェインID「１」を割り当てる。チェインIDは、ループキャッシュに登録する。
【０１１５】
図２１は、チェインテーブルの一例を示す図である。チェインテーブルのIDは、各チェインIDのチェイン命令列内のRSE0命令、RSE1命令、RSA命令の３ビットで構成される。したがって、チェインテーブルIDは[000]-[111]の８種類である。
【０１１６】
図２２は、チェイン命令列内のRSE命令、RSE0命令、RSE1命令の存在の有無と、図２１のチェインテーブルのIDの３ビットRSE0,RSE1,RSAのうちRSE0、RSE1のフィールドとの対応を示す図表である。RSE命令とはRSE0でもRSE1でも実行できる命令である。図２２の表では、左側の３列がチェイン命令列内にRSE命令、RSE0命令、RSE1命令が含まれるか否かを示し、右側の２列が図２１のチェインテーブルに示されるRSE0とRSE1のフィールドの値を示す。
【０１１７】
例えば、左側の３列において、チェイン命令列内にRSE命令とRSE0命令が含まれRSE1命令が含まれていない場合（RSE=1, RSE0=1, RSE1=0）、右側の２列はRSE0=1, RSE1=0とする。左側3列のRSE命令はRSE0命令とRSE1命令のいずれとも言えるので、RSE0=1に基づいて、右側2列ではRSE0=1, RSE1=0とする。チェイン命令列内にRSE0命令が含まれRSE1命令とRSE命令が含まれない場合も（RSE=0, RSE0=1, RSE1=0）、右側の２列はRSE0=1, RSE1=0とする。左側３列のRSE0命令とRSE1命令を入れ替えても同じである。
【０１１８】
また、左側の３列において、チェイン命令列内にRSE命令が含まれずRSE0命令とRSE1命令が含まれている場合（RSE=0, RSE0=1, RSE1=1）、右側の２列はRSE0=1, RSE1=1とする。チェイン命令列内にRSE命令が含まれ、RSE0命令とRSE1命令が含まれている場合（RSE=1, RSE0=1, RSE1=1）も、右側の２列はRSE0=1, RSE1=1とする。
【０１１９】
更に、左側の３列において、チェイン命令列内にRSE命令が含まれRSE0命令とRSE1命令が含まれていない場合（RSE=1, RSE0=0, RSE1=0）も、右側の２列はRSE0=1, RSE1=1とする。
【０１２０】
そして、図２２には示していないが、RSA命令については、単純に、チェイン命令列内にRSA命令が含まれている場合、チェインテーブルのRSAもRSA=1となる。
【０１２１】
図２２において、チェインテーブルID＝[000]の場合、チェイン命令列は全てRSX命令である。従って、チェイン命令列内の命令は４つのRSE0,RSE1,RSA0,RSA1のいずれに割り振っても演算可能である。そこで、チェインIDの番号を４で除した余り＝０場合にRSA0、同余り＝１の場合にRSA1、同余り＝２の場合にRSE0、同余り＝３の場合にRSE1を、それぞれ割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先は同じRSに固定されるので、割振り先RSの演算器の処理をバックツーバックのパスを利用して最短サイクルで繰り返すことができる。
【０１２２】
チェインテーブルID＝[001]の場合、チェイン命令列はRSX命令とRSA命令である。従って、チェイン命令列内の命令は、２つのRSA0、RSA1のいずれに割り振っても演算可能である。そこで、チェインIDの番号を２で除した余り＝０の場合にRSA0、同余り＝１の場合にRSA1を、それぞれ割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSA0またはRSA1のいずれかに固定される。
【０１２３】
チェインテーブルID＝[010]の場合、チェイン命令列はRSX命令とRSE命令とRSE1命令（またはRSX命令とRSE1命令）である。従って、チェイン命令列内の命令は、RSE1を割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSE1に固定される。
【０１２４】
同様に、チェインテーブルID＝[100]の場合、チェイン命令列はRSX命令とRSE命令とRSE0命令（またはRSX命令とRSE0命令）である。従って、チェイン命令列内の命令は、RSE0を割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSE0に固定される。
【０１２５】
チェインテーブルID＝[011]の場合、チェイン命令列はRSX命令とRSA命令とRSE命令とRSE1命令（またはRSX命令とRSA命令とRSE1命令）である。割振り先をRSAに固定すると、RSA命令のロードストア処理により演算器の最短サイクルでの演算処理が中断されることが予測される。従って、チェイン命令列内の命令は、RSE1を割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSE1に固定される。但し、RSA命令は例外的にRSAに割振られる。つまり、RSA命令でRSE1の演算器の最短サイクルによる演算処理が中断される場合を除いて、RSE1の演算器の演算処理を最短化できる。
【０１２６】
同様に、チェインテーブルID＝[101]の場合、チェイン命令列はRSX命令とRSA命令とRSE命令とRSE0命令（またはRSX命令とRSA命令とRSE0命令）である。上記のチェインテーブルID=[011]と同様の理由で、チェイン命令列内の命令は、RSE0を割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSE0に固定される。但し、RSA命令は例外的にRSAに割振られる。つまり、RSA命令でRSE0の演算器の最短サイクルによる演算処理が中断される場合を除いて、RSE0の演算器の演算処理を最短化できる。
【０１２７】
チェインテーブルID＝[110]の場合、チェイン命令列はRSX命令とRSE命令とRSE1命令とRSE0命令（またはRSX命令とRSE1命令とRSE0命令）である。この場合、チェイン命令列内の命令は、２つのRSE1、RSE0のいずれに割り振っても演算可能の可能性がある。
【０１２８】
そこで、チェインIDの番号を２で除した余り＝０の場合にRSE0、同余り＝１の場合にRSE1を割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSE0またはRSE1のいずれかに固定される。但し、RSE0命令は例外的に必ずRSE0に割振られ、RSE1命令は例外的に必ずRSE1に割振られる。同じチェイン命令列内の命令をRSE0,RSE1のいずれか一方に固定して割振ることで、固定されたRSの演算器による最短サイクルによる演算処理を期待することができる。
【０１２９】
チェインテーブルID＝[111]の場合、チェイン命令列はRSX命令とRSE命令とRSE1命令とRSE0命令とRSA命令（またはRSX命令とRSE1命令とRSE0命令とRSA命令）である。この場合、チェイン命令列内の命令は、２つのRSE1、RSE0のいずれに割り振っても演算可能の可能性がある。また、固定的にRSAに割振ると演算器の最短サイクル処理が中断することがありうる。
【０１３０】
そこで、チェインIDの番号を２で除した余り＝０の場合にRSE0、同余り＝１の場合にRSE1を割振り先とする。この場合、同じチェインIDの命令（同じチェイン命令列内の命令）の割振り先はRSE0またはRSE1のいずれかに固定される。但し、RSE0命令は例外的に必ずRSE0に割振られ、RSE1命令は例外的に必ずRSE1に割振られる。同様に、RSA命令は例外的にRSA0,RSA1のいずれかに割振られる。同じチェイン命令列内の命令をRSE0,RSE1のいずれか一方に固定して割振ることで、固定されたRSの演算器による最短サイクルによる演算処理を期待することができる。
【０１３１】
第４の実施の形態では、ループキャッシュ内に１つのループ内の全命令列が登録されるので、その命令列を分析して依存性のあるチェイン命令列を検出する。そして、チェイン命令列内のRSE0命令、RSE1命令、RSA命令の３ビットで分類されるチェインテーブルを検索し、チェインテーブルに示された割振り先RSでチェイン命令列の命令を割振る。これにより、チェイン命令列の命令の割振り先がチェインテーブルに示された割振り先RSに固定されるので、固定的に割振られるRSの演算器による最短サイクルでの演算処理を最大限に利用することができる。
【０１３２】
以上の実施の形態をまとめると，次の付記のとおりである。
【０１３３】
（付記１）
それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成するＫ個（Ｋは複数）のデコーダスロットを有する命令デコーダと、
Ｌ個（Ｌは複数でＫ＞Ｌ）の入力ポートと、前記実行命令を前記Ｌ個の入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダの前記Ｋ個のデコーダスロットそれぞれが生成するＫ個の前記実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットとを有し、
前記アロケーションユニットは、
（１）前記実行命令が前記第１及び第２の演算ユニットで実行でき、前記第１及び第２のＬＳユニットで実行できない第１の命令の場合、前記第１の命令を第１の割振りテーブルに基づいて前記第１または第２のＲＳに割振り、
（２）前記実行命令が前記第１及び第２のＬＳユニットで実行でき、前記第１及び第２の演算ユニットで実行できない第２の命令の場合、前記第２の命令を第２の割振りテーブルに基づいて前記第３または第４のＲＳに割振り、
（３）前記実行命令が前記第１及び第２のＬＳユニットと前記第１及び第２の演算ユニットとで実行できる第３の命令の場合、前記第３の命令を第３の割振りテーブルに基づいて前記第１乃至第４のＲＳのいずれかに割振り、
前記第1、第２、第３の割振りテーブルは、前記Ｋ個のデコーダスロットそれぞれに対応するＫ個の割振り先ＲＳを有し、
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１及び第２のＲＳの命令キューの空きがより多いとより少ないについて第１の順番の組み合わせで有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１の順番の組み合わせで有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、第１の複数デコーダスロットに対して、前記第1の割振りテーブルの前記第１の複数デコーダスロットに対する割振り先ＲＳとし、前記第１の複数デコーダスロットと異なる第２の複数デコーダスロットに対して、前記第２の割振りテーブルの前記第２の複数デコーダスロットに対する割振り先ＲＳとし、且つ前記第１の順番の組み合わせで有する、演算処理装置。
【０１３４】
（付記２）
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳと、前記第３及び第４のＲＳとを同数で有する、付記１に記載の演算処理装置。
【０１３５】
（付記３）
前記第１の順番の組み合わせは、少なくとも前記インオーダーで最先のデコーダスロットに対して前記より多いＲＳを、前記インオーダーで最後のデコーダスロットに対して前記より少ないＲＳを有する、付記２に記載の演算処理装置。
【０１３６】
（付記４）
前記第３の割振りテーブルは、
（１）前記第１の複数デコーダスロットが、前記インオーダーで最先の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで最後の複数デコーダスロットであるＡ型第３の割振りテーブルと、
（２）前記第１の複数デコーダスロットが、前記インオーダーで最後の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで最先の複数デコーダスロットであるＢ型第３の割振りテーブルと、を有し、
前記アロケーションユニットは、
（１）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より多い場合、前記Ａ型第３の割振りテーブルに基づいて前記第３の実行命令を割振り、
（２）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より少ない場合、前記Ｂ型第３の割振りテーブルに基づいて前記第３の実行命令を割振る、付記３に記載の演算処理装置。
【０１３７】
（付記５）
前記第３の割振りテーブルは、
（１）前記第１の複数デコーダスロットが、前記インオーダーで奇数の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで偶数の複数デコーダスロットであるＡ型第３の割振りテーブルと、
（２）前記第１の複数デコーダスロットが、前記インオーダーで奇数の複数デコーダスロットで、前記第２の複数デコーダスロットが、前記インオーダーで偶数の複数デコーダスロットであるＢ型第３の割振りテーブルと、を有し、
前記アロケーションユニットは、
（１）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より多い場合、前記Ａ型第３の割振りテーブルに基づいて前記第３の実行命令を割振り、
（２）前記第１及び第２のＲＳの命令キューの空き合計が前記第３及び第４のＲＳの命令キューの空き合計より少ない場合、前記Ｂ型第３の割振りテーブルに基づいて前記第３の実行命令を割振る、付記３に記載の演算処理装置。
【０１３８】
（付記６）
前記アロケーションユニットは、
前記実行命令が前記第１の命令の場合、前記第１のＲＳの前記命令キューの空き数と前記第２のＲＳの前記命令キューの空き数の差分が第１の基準値以上の場合、前記第１の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第１または第２のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＡ型第１の割振りテーブルに基づいて、前記第１の命令(RSE命令)を割り振る、付記１に記載の演算処理装置。 
【０１３９】
（付記７）
前記アロケーションユニットは、
前記実行命令が前記第２の命令の場合、前記第３のＲＳの前記命令キューの空き数と前記第４のＲＳの前記命令キューの空き数の差分が第２の基準値以上の場合、前記第２の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第３または第４のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＡ型第２の割振りテーブルに基づいて、前記第２の命令を割り振る、付記１に記載の演算処理装置。
【０１４０】
（付記８）
前記アロケーションユニットは、
前記実行命令が前記第３の命令の場合で、最も前記命令キューの空き数が多い最大空きＲＳの空き数と、前記最大空きＲＳ以外のＲＳの空き数との差分が第３の基準値以上の場合に、
（１）前記最大空きＲＳが前記第１または第２のＲＳなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第１または第２のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＥ型第３の割振りテーブルに基づいて、前記第３の命令を割り振り、
（２）前記最大空きＲＳが前記第３または第４のＲＳなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個のデコーダスロット全てに対して前記第３または第４のＲＳのうち前記命令キューの空きがより多いＲＳを割振り先にするＦ型第３の割振りテーブルに基づいて、前記第３の命令を割り振る、付記４または５に記載の演算処理装置。
【０１４１】
（付記９）
前記アロケーションユニットは、
前記実行命令が前記第３の命令の場合で、前記第１及び第２のＲＳの前記命令キューの第１合計空き数と、前記第３及び第４のＲＳの前記命令キューの第２合計空き数との差分が第４の基準値以上の場合に、
（１）前記第１合計空き数が前記第２合計空き数より多いなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で、且つ前記より多いＲＳを前記インオーダーで最先に、前記より少ないＲＳを前記インオーダーで最後に有するＣ型第３の割り当てテーブルに基づいて、前記第３の命令を割り振り、
（２）前記第１合計空き数が前記第２合計空き数より少ないなら、前記Ａ型第３またはＢ型第３の割振りテーブルに代えて、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳのうち前記命令キューの空きがより多いＲＳとより少ないＲＳとを同数で、且つ前記より多いＲＳを前記インオーダーで最先に、前記より少ないＲＳを前記インオーダーで最後に有するＤ型第３の割り当てテーブルに基づいて、前記第３の命令を割り振る、付記８に記載の演算処理装置。
【０１４２】
（付記１０）
前記アロケーションユニットは、
割振り対象の前記実行命令が、前記インオーダーで１つ前の実行命令と演算の依存関係を有し、前記１つ前の実行命令と同じＲＳに割振り可能な場合、前記割振り対象の実行命令を、前記割振りテーブルに基づかずに、前記１つ前の実行命令と同じＲＳに割り振る、付記１に記載の演算処理装置。
【０１４３】
（付記１１）
前記第１の演算ユニットと前記第２の演算ユニットが、互いに排他的な演算回路を有し、
前記アロケーションユニットは、
前記実行命令が前記第１の演算ユニットで実行可能で前記第２の演算ユニットで実行不能な第１演算ユニット専用命令の場合、前記割振りテーブルに基づかず、前記第１のＲＳに割り振り、
前記実行命令が前記第１の演算ユニットで実行不能で前記第２の演算ユニットで実行可能な第２演算ユニット専用命令の場合、前記割振りテーブルに基づかず、前記第２のＲＳに割り振る、付記１に記載の演算処理装置。
【０１４４】
（付記１２）
それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成するＫ個（Ｋは複数）のデコーダスロットを有する命令デコーダと、
Ｌ個（Ｌは複数でＫ＞Ｌ）の入力ポートと、前記実行命令を前記Ｌ個の入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダの前記Ｋ個のデコーダスロットそれぞれが生成するＫ個の前記実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットとを有する演算処理装置の制御方法であって、
前記アロケーションユニットは、
（１）前記実行命令が前記第１及び第２の演算ユニットで実行でき、前記第１及び第２のＬＳユニットで実行できない第１の命令の場合、前記第１の命令を第１の割振りテーブルに基づいて前記第１または第２のＲＳに割振り、
（２）前記実行命令が前記第１及び第２のＬＳユニットで実行でき、前記第１及び第２の演算ユニットで実行できない第２の命令の場合、前記第２の命令を第２の割振りテーブルに基づいて前記第３または第４のＲＳに割振り、
（３）前記実行命令が前記第１及び第２のＬＳユニットと前記第１及び第２の演算ユニットとで実行できる第３の命令の場合、前記第３の命令を第３の割振りテーブルに基づいて前記第１乃至第４のＲＳのいずれかに割振り、
前記第1、第２、第３の割振りテーブルは、前記Ｋ個のデコーダスロットそれぞれに対応するＫ個の割振り先ＲＳを有し、
前記第１の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第１及び第２のＲＳ（RSE0/1）をそれぞれ前記Ｌ個以下で、且つ前記第１及び第２のＲＳの命令キューの空きがより多いとより少ないについて第１の順番の組み合わせで有し、
前記第２の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、前記第３及び第４のＲＳをそれぞれ前記Ｌ個以下で、且つ前記第１の順番の組み合わせで有し、
前記第３の割振りテーブルは、前記Ｋ個の割振り先ＲＳを、第１の複数デコーダスロットに対して、前記第1の割振りテーブルの前記第１の複数デコーダスロットに対する割振り先ＲＳとし、前記第１の複数デコーダスロットと異なる第２の複数デコーダスロットに対して、前記第２の割振りテーブルの前記第２の複数デコーダスロットに対する割振り先ＲＳとし、且つ前記第１の順番の組み合わせで有する、演算処理装置の制御方法。
【０１４５】
（付記１３）
それぞれが、プログラムのインオーダーでフェッチされたフェッチ命令をデコードし実行命令を生成する命令デコーダと、
入力ポートと、前記実行命令を前記入力ポートを介してキューインする命令キューとをそれぞれ有する第１乃至第４のリザベーションステーション（以下ＲＳと称する）と、
前記第１及び第２のＲＳをそれぞれが専用に有し、前記第１及び第２のＲＳそれぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２の演算ユニットと、
前記第３及び第４のＲＳをそれぞれが専用に有し、前記第３及び第４のＲＳ内それぞれにキューインされた実行命令をそれぞれが専ら実行する第１及び第２のロードストアユニット（以下ＬＳユニットと称する）と、
前記命令デコーダが生成するループ内の実行命令を有するループ内実行命令列を一時的に記憶するループキャッシュと、
前記命令デコーダが生成する前記実行命令を、または前記ループキャッシュ内に記憶された前記ループ内実行命令列の実行命令を、前記第１乃至第４のＲＳのいずれかに割り振るアロケーションユニットと、
前記第1及び第２の演算ユニットの実行結果及び前記第１及び第２のロードストアユニットの演算結果を格納する汎用レジスタファイルとを有し、
前記第1及び第２の演算ユニットは、実行結果を自身の入力に前記汎用レジスタファイルを介さずに供給するバイパス経路を有し、前記実行結果を自身以外の演算ユニットに前記汎用レジスタファイルを介さずに供給するバイパス経路を有さず、
前記第１及び第２のＬＳユニットは、実行結果を自身の入力に前記汎用レジスタファイルを介さずに供給するバイパス経路を有し、前記実行結果を自身以外のＬＳユニットに前記汎用レジスタファイルを介さずに供給するバイパス経路を有さず、
前記アロケーションユニットは、
前記ループキャッシュ内の前記ループ内命令列が、１つ前の実行命令の演算結果を次の実行命令の演算に利用する依存関係を持つ連続する複数の実行命令を有するチェイン命令列を含む場合、
前記チェイン命令列が、前記第１の演算ユニットで実行でき、前記第２の演算ユニットと前記第１及び第２のＬＳユニットで実行できない第１の実行命令を含み、前記第１の演算ユニットで実行できず、前記第２の演算ユニットと前記第１のＬＳユニットと第２のＬＳユニットのいずれかで実行できる第２の実行命令を含まない場合、前記チェイン命令列内の実行命令を前記第１のＲＳに割り振る、演算処理装置。
【０１４６】
（付記１４）
前記アロケーションユニットは、
前記チェイン命令列が、前記第１のＬＳユニットまたは前記第２のＬＳユニットで実行でき、前記第１の演算ユニット及び第２の演算ユニットで実行できない第３の実行命令を含み、前記第１のＬＳユニット及び第２のＬＳユニットで実行できず、前記第１の演算ユニット及び第２の演算ユニットのいずれかで実行できる第４の実行命令を含まない場合、前記チェイン命令列内の実行命令を前記第３のＲＳまたは第４のＲＳに割り振る、付記１３に記載の演算処理装置。
【０１４７】
（付記１５）
前記アロケーションユニットは、
前記チェイン命令列が、前記第１及び第２の演算ユニットと、前記第１及び第２のＬＳユニットのいずれかで実行できる汎用実行命令だけを含む場合、前記チェイン命令列内の実行命令を前記第１乃至第４のＲＳのいずれかの１つのＲＳに割り振る、付記１３に記載の演算処理装置。
【０１４８】
以下は、上記付記の文言と実施の形態の符号との対応の一例である。上記の第１及び第２の演算ユニットはEXA,EXB、第３及び第４の演算ユニットはEAGA,EAGB、第１の命令はRSE命令、第２の命令はRSA命令、第３の命令はRSX命令、第１、第２、第３の割振りテーブルはRSE_t1、RSA_t1、RSX_t1,t2、第１の順番の組み合わせはRSEm,RSEf,RSEm,RSEf、RSAm,RSAf,RSAf,RSAm、RSEm,RSEf,RSAm,RSAf、RSEm,RSEm,RSEf,RSEf、又はRSAm,RSAm,RSAf,RSAf、RSEm,RSAm,RSEf,RSAfである。さらに、Ａ型第３の割振りテーブルはRSX_t1、Ｂ型第３の割振りテーブルはRSX_t2、Ｃ型第３の割振りテーブルはRSX_t3、Ｄ型第３の割振りテーブルはRSX_t4、Ｅ型第３の割振りテーブルはRSX_t5、Ｆ型第３の割振りテーブルはRSX_t6である。Ａ型第１の割振りテーブルはRSE_t2、Ａ型第２の割振りテーブルはRSA_t2である。
【符号の説明】
【０１４９】
RS：リザベーションステーション
EAGA,EAGB：オペランドアドレス生成器
RSA：オペランドアドレス生成器のリザベーションステーション
EXA,EXB：固定小数点演算器
RSE：固定小数点演算器のリザベーションステーション
I_BUF：命令バッファ
I_DEC：命令デコーダ
D0-D3：スロット
ALC_UNT：アロケーションユニット
LP_CACHE：ループキャッシュ
I_SEL：命令セレクタ
IN_PO_0,IN_PO_1：入力ポート
IN_QUE_0,IN_QUE_1：入力キュー
ALC_table：割振りテーブル
【図１】
2019185646.tif 000003
【図２】
2019185646.tif 000004
【図３】
2019185646.tif 000005
【図４】
2019185646.tif 000006
【図５】
2019185646.tif 000007
【図６】
2019185646.tif 000008
【図７】
2019185646.tif 000009
【図８】
2019185646.tif 000010
【図９】
2019185646.tif 000011
【図１０】
2019185646.tif 000012
【図１１】
2019185646.tif 000013
【図１２】
2019185646.tif 000014
【図１３】
2019185646.tif 000015
【図１４】
2019185646.tif 000016
【図１５】
2019185646.tif 000017
【図１６】
2019185646.tif 000018
【図１７】
2019185646.tif 000019
【図１８】
2019185646.tif 000020
【図１９】
2019185646.tif 000021
【図２０】
2019185646.tif 000022
【図２１】
2019185646.tif 000023
【図２２】
2019185646.tif 000024