(57)【要約】【課題】命令の完了処理に使用される命令完了保持部に対する命令情報の格納と取り出しに使用する回路および配線の規模を削減する。【解決手段】演算処理装置は、複数のデコーダを含み、命令に割り当てる命令番号が複数のデコーダ毎に決められた命令デコード部と、命令を実行する命令実行部と、複数のデコーダの各々に対応して設けられた複数の保持領域を含む保持ブロックを有し、複数の保持領域に命令番号がそれぞれ割り当てられ、命令の完了処理に使用される命令完了保持部と、複数のデコーダが命令をそれぞれデコードすることで生成する命令情報を、命令番号に基づいて、命令をデコードしたデコーダに対応する保持ブロックの複数の保持領域のいずれかに格納し、命令実行部が実行した命令に対応する命令情報を命令完了保持部からインオーダで取り出して命令の完了処理を実行する命令完了制御部と、を有する。【選択図】図１
2020077334.tif 000002
【特許請求の範囲】
【請求項１】
命令をそれぞれデコードする複数のデコーダを含み、命令に割り当てる命令番号が前記複数のデコーダ毎に決められた命令デコード部と、
前記命令デコード部がデコードした命令を実行する命令実行部と、
前記複数のデコーダの各々に対応して設けられた複数の保持領域を含む保持ブロックを有し、前記複数の保持領域に命令番号がそれぞれ割り当てられ、命令の完了処理に使用される命令完了保持部と、
前記複数のデコーダが命令をそれぞれデコードすることで生成する命令情報を、命令番号に基づいて、命令をデコードしたデコーダに対応する保持ブロックの前記複数の保持領域のいずれかに格納し、前記命令実行部が実行した命令に対応する命令情報を前記命令完了保持部からインオーダで取り出して命令の完了処理を実行する命令完了制御部と、を有することを特徴とする演算処理装置。
【請求項２】
前記命令デコード部は、サイクル毎に命令に割り当てる複数の命令番号に対応してグループ番号を割り当て、割り当てたグループ番号を、前記複数のデコーダが生成した命令情報とともに前記命令完了制御部に出力し、
前記命令完了制御部は、前記各保持ブロックの前記複数の保持領域のうち、グループ番号に対応する命令番号が割り当てられた保持領域に前記命令デコード部から受信した命令情報を格納することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記命令完了制御部は、
実行が完了していない最も古いサイクルの命令に割り当てられた最古グループ番号に対応する命令情報を保持する命令完了バッファを有し、
最古グループ番号に対応するすべての命令の実行が完了した場合、グループ番号を更新して次のグループ番号に対応する複数の命令情報を前記複数の保持領域のいずれかから前記命令完了バッファに転送し、
最古グループ番号に対応する複数の命令のいずれかが実行を完了していない場合、グループ番号を更新せずに、前記複数の保持領域のいずれかから前記命令完了バッファへの命令情報の転送を抑止することを特徴とする請求項２に記載の演算処理装置。
【請求項４】
前記命令完了制御部は、
命令の実行が完了したことを示す完了報告情報と命令番号との受信に基づいて、前記各保持ブロックの前記複数の保持領域のうち、受信した命令番号が割り当てられた保持領域に完了報告情報を格納し、
最古グループ番号に対応する各命令の実行の完了を、完了報告情報に基づいて判定することを特徴とする請求項３に記載の演算処理装置。
【請求項５】
前記命令完了制御部は、最古グループ番号に対応する複数の命令のいずれかが実行を完了していない場合、グループ番号を更新せずに、グループ番号に対応する前記複数の保持領域のいずれかから完了報告情報を読み出して前記命令完了バッファに転送することを特徴とする請求項４に記載の演算処理装置。
【請求項６】
前記命令完了制御部は、
完了報告情報と命令番号との受信に基づいて、命令番号に対応するグループ番号が最古グループ番号と一致するかを判定する判定部と、
前記判定部が一致を判定した場合、受信した完了報告情報を前記命令完了バッファにバイパスさせるバイパス経路と、を有することを特徴とする請求項４または請求項５に記載の演算処理装置。
【請求項７】
前記命令完了制御部は、前記各保持ブロックの前記複数の保持領域が保持する命令情報をグループ番号に基づいて選択し、選択した命令情報を前記命令完了バッファに出力する、前記各保持ブロックに対応して設けられた選択部を有することを特徴とする請求項３ないし請求項６のいずれか１項に記載の演算処理装置。
【請求項８】
前記命令デコード部は、デコードした命令が発行できなかった場合、グループ番号を更新せず、発行できなかった命令を次のサイクルで再デコードすることを特徴とする請求項２ないし請求項７のいずれか１項に記載の演算処理装置。
【請求項９】
前記命令デコード部は、前記複数のデコーダのうち命令をデコードしなかったデコーダがある場合、命令に割り当てられない命令番号を欠番とすることを特徴とする請求項１ないし請求項８のいずれか１項に記載の演算処理装置。
【請求項１０】
前記命令デコード部は、２のｎ乗でない３以上の前記複数のデコーダを有し、
前記複数の保持領域への命令番号の割り当ては、前記複数のデコーダの数を２のｎ乗個と仮定して、存在しないデコーダが命令をデコードしたと仮定した場合に命令に割り当てられる命令番号を欠番として実行されることを特徴とする請求項１ないし請求項９のいずれか１項に記載の演算処理装置。
【請求項１１】
命令をそれぞれデコードする複数のデコーダを含む命令デコード部と、前記命令デコード部がデコードした命令を実行する命令実行部と、命令に割り当てる命令番号がそれぞれ割り当てられた複数の保持領域を含み、命令の完了処理に使用される命令完了保持部と、を有する演算処理装置の制御方法において、
前記複数のデコーダ毎に命令番号が決められ、
前記命令完了保持部は、前記複数のデコーダの各々に対応して設けられた複数の保持領域を含む保持ブロックを有し、
前記演算処理装置が有する命令完了制御部が、
前記複数のデコーダが命令をそれぞれデコードすることで生成する命令情報を、命令番号に基づいて、命令をデコードしたデコーダに対応する保持ブロックの前記複数の保持領域のいずれかに格納し、
前記命令実行部が実行した命令に対応する命令情報を前記命令完了保持部からインオーダで取り出して命令の完了処理を実行すること、を特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
スーパースカラ方式の演算処理装置は、例えば、命令をそれぞれデコードする複数のデコーダを含む命令デコード部と、命令を演算器等に発行するリザベーションステーションと、命令を実行する演算器等の命令実行部と、発行された命令の完了を管理するコミットスタックエントリ（Commit  Stack  Entry）とを有する。この種の演算処理装置では、命令デコード部は、命令バッファ等から受信した命令をインオーダでデコードし、命令実行部は、リザベーションステーションから発行される命令に基づいて、命令をアウトオブオーダで実行する（例えば、特許文献１、２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３２８４８４号公報
【特許文献２】特開２００３−３２３２９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
命令デコード部は、並列にそれぞれデコードする複数の命令に命令番号を順番に割り当て、サイクル毎に命令のデコードにより生成される命令情報をコミットスタックエントリに格納する。コミットスタックエントリは、命令番号が割り当てられた複数のエントリを有し、サイクル毎にデコーダから供給される複数の命令情報の各々を、命令番号が一致するエントリに格納する。
【０００５】
例えば、あるサイクルで命令をデコードできないデコーダがあった場合にも、命令番号は欠落せずに次のサイクルでデコードした命令に順番に割り当てられる。このため、複数のデコーダの各々がデコードする命令に、全ての命令番号が割り当てられる可能性がある。換言すれば、複数のデコーダの各々がデコードにより生成する命令情報は、コミットスタックエントリの全てのエントリに格納される可能性がある。したがって、各デコーダが生成する命令情報を、命令番号に対応するエントリに格納可能にするため、コミットスタックエントリの入力側にはセレクタやスイッチ等の切り替え部と、切り替え部に接続される配線とが設けられる。
【０００６】
演算器等から出力される命令完了情報には、命令デコード部により割り当てられた命令番号が付加されている。このため、演算器等から出力される命令完了情報をコミットスタックエントリに格納する場合にも、命令情報をコミットスタックエントリに格納する場合と同様に、命令完了情報は、コミットスタックエントリの全てのエントリに格納される可能性がある。したがって、コミットスタックエントリの入力側には、命令完了情報用の切り替え部と配線とが設けられる。さらに、コミットスタックエントリに保持された命令情報等を、命令の完了報告に基づいて取り出す場合にも、命令情報を取り出すコミットスタックエントリの出力側に切り替え部と配線とが設けられる。例えば、命令情報等のビット数が多くなるほど、切り替え部の回路規模は大きくなり、配線数も多くなる。さらに、回路規模が大きく、配線数が多いほど、演算処理装置の消費電力は増加する。
【０００７】
１つの側面では、本発明は、命令の完了処理に使用される命令完了保持部に対する命令情報の格納と取り出しに使用する回路および配線の規模の増大を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
一つの観点によれば、演算処理装置は、命令をそれぞれデコードする複数のデコーダを含み、命令に割り当てる命令番号が前記複数のデコーダ毎に決められた命令デコード部と、前記命令デコード部がデコードした命令を実行する命令実行部と、前記複数のデコーダの各々に対応して設けられた複数の保持領域を含む保持ブロックを有し、前記複数の保持領域に命令番号がそれぞれ割り当てられ、命令の完了処理に使用される命令完了保持部と、前記複数のデコーダが命令をそれぞれデコードすることで生成する命令情報を、命令番号に基づいて、命令をデコードしたデコーダに対応する保持ブロックの前記複数の保持領域のいずれかに格納し、前記命令実行部が実行した命令に対応する命令情報を前記命令完了保持部からインオーダで取り出して命令の完了処理を実行する命令完了制御部と、を有する。
【発明の効果】
【０００９】
１つの側面では、本発明は、命令の完了処理に使用される命令完了保持部に対する命令情報の格納と取り出しに使用する回路および配線の規模の増大を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態における演算処理装置および演算処理装置の制御方法の一例を示す図である。
【図２】他の演算処理装置の一例を示す図である。
【図３】別の実施形態における演算処理装置の一例を示す図である。
【図４】図３の演算処理装置のパイプライン処理の一例を示す図である。
【図５】スーパースカラ方式によるアウトオブオーダ実行の一例を示す図である。
【図６】図３の命令デコード部の一例を示す図である。
【図７】図３の命令完了制御部の一例を示す図である。
【図８】図７のＣＳＥ２４０とその関連回路との一例を示す図である。
【図９】図７のＣＳＥ２４２とその関連回路との一例を示す図である。
【図１０】図７のＣＳＥ２４０、ＣＳＥ２４２のＩＩＤの割り当ての一例を示す図である。
【図１１】図８のＣＳＥ２４０および図９のＣＳＥ２４２に格納される命令データ等の割り当ての一例を示す図である。
【図１２】図８および図９のＣＳＥ−ＷＩＮＤＯＷに格納される命令データ等の割り当ての一例を示す図である。
【図１３】グループコミットが成立しない場合に、コミットされた命令に対応するＣＳＥ−ＷＩＮＤＯＷ内の情報を無効にする回路の一例を示す図である。
【図１４】命令のデコードに基づいてＣＳＥ−ＷＩＮＤＯＷをセットする動作の一例を示す図である。
【図１５】命令の完了報告に基づいてＣＳＥ−ＷＩＮＤＯＷをセットする動作の一例を示す図である。
【図１６】他の命令完了制御部におけるＣＳＥ２４０とその関連回路との一例を示す図である。
【図１７】他の命令完了制御部におけるＣＳＥ２４２とその関連回路との一例を示す図である。
【図１８】図１６のＣＳＥ２４０および図１７のＣＳＥ２４２に格納される命令データ等の割り当ての一例を示す図である。
【図１９】図１６および図１７のＣＳＥ−ＷＩＮＤＯＷに格納される命令データ等の割り当ての一例を示す図である。
【図２０】別の実施形態における演算処理装置に含まれるＣＳＥ２４２とその関連回路との一例を示す図である。
【図２１】別の実施形態における演算処理装置に含まれるＣＳＥの一例を示す図である。
【図２２】他の演算処理装置におけるＣＳＥの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて実施形態を説明する。
【００１２】
図１は、一実施形態における演算処理装置および演算処理装置の制御方法の一例を示す。図１に示す演算処理装置１００は、命令デコード部１、命令実行部２、命令完了制御部３および命令完了保持部４を有する。例えば、演算処理装置１００は、スーパースカラ方式のプロセッサである。
【００１３】
命令デコード部１は、命令ＩＮＳをそれぞれデコードする複数のデコーダ１ａ、１ｂを含む。命令デコード部１は、デコーダ１ａ、１ｂ毎に、命令ＩＮＳに割り当てる命令番号（０、１、２、３、．．．）を決める。デコーダ１ａ、１ｂは、受信した命令ＩＮＳを並列にデコードし、デコード結果である命令情報ＩＩＮＦ（ＩＩＮＦａ、ＩＩＮＦｂ）をそれぞれ出力する。
【００１４】
命令実行部２は、命令デコード部がデコードした命令ＩＮＳ（ＩＩＮＦａ、ＩＩＮＦｂ）を実行する。なお、命令実行部２は、命令ＩＮＳをアウトオブオーダで実行してもよい。この場合、演算処理装置１００は、命令ＩＮＳをインオーダで命令デコード部１から受信して保持し、保持した命令をアウトオブオーダで命令実行部２に発行するリザベーションステーションを有してもよい。
【００１５】
命令実行部２の数は、２つ以外でもよい。演算処理装置１００が複数の命令実行部２を有する場合、命令実行部２が実行する演算の種類は、互いに同じでもよく、相違してもよい。また、命令実行部２は、メモリアクセス命令を実行するためにメモリに対するアクセスアドレスを生成する機能を有してもよく、分岐命令に対する分岐処理を実行する機能を有してもよい。
【００１６】
命令完了保持部４は、デコーダ１ａに対応して設けられる複数の保持領域４ａを含む保持ブロックＢＬＫａと、デコーダ１ｂに対応して設けられる複数の保持領域４ｂを含む保持ブロックＢＬＫｂとを有する。複数の保持領域４ａには、命令番号（例えば、偶数）が順次割り当てられる。複数の保持領域４ｂには、保持領域４ａに割り当てられた命令番号とは異なる命令番号（例えば、奇数）が順次割り当てられる。なお、例えば、命令番号＝”４”を割り当てる予定の命令をデコーダ１ａがデコードしなかった場合、命令番号＝”４”は欠番とされる。この場合、デコーダ１ｂが次にデコードする命令に命令番号＝”４”が割り当てられることはない。
【００１７】
命令完了制御部３は、デコーダ１ａが生成した命令情報ＩＩＮＦａを、命令番号が一致する保持領域４ａに格納し、デコーダ１ｂが生成した命令情報ＩＩＮＦｂを、命令番号が一致する保持領域４ｂに格納する。また、命令完了制御部３は、命令実行部２が実行した命令ＩＮＳに対応する命令情報ＩＩＮＦを命令完了保持部４からインオーダで取り出して命令の完了処理を実行する。
【００１８】
図１に示す演算処理装置１００では、デコーダ１ａ、１ｂ毎に、命令ＩＮＳに割り当てる命令番号が決められ、デコーダ１ａ、１ｂ毎に、命令情報ＩＩＮＦを格納する保持領域４ａ、４ｂが決められている。このため、デコーダ１ａが生成した命令情報ＩＩＮＦａは、保持領域４ａのいずれかに格納され、保持領域４ｂに格納されることはない。デコーダ１ｂが生成した命令情報ＩＩＮＦｂは、保持領域４ｂのいずれかに格納され、保持領域４ａに格納されることはない。
【００１９】
したがって、演算処理装置１００は、命令完了保持部４の入力側に、命令情報ＩＩＮＦの格納先を保持領域４ａ、４ｂのいずれかに切り替える切り替え部と配線とを設けることなく、命令情報ＩＩＮＦを保持領域４ａ、４ｂに格納することができる。また、演算処理装置１００は、命令完了保持部４の出力側に、保持領域４ａ、４ｂのそれぞれから読み出す命令情報ＩＩＮＦの出力先を切り替える切り替え部と配線とを設けることなく、保持領域４ａ、４ｂに保持された命令情報ＩＩＮＦを読み出すことができる。
【００２０】
例えば、各命令情報ＩＩＮＦは、数十ビット程度であり、切り替え部および配線を設けた場合、切り替え部の素子数および配線の本数が回路規模に与える影響は大きい。この結果、切り替え部および配線を設ける場合に比べて、演算処理装置１００の回路規模の増大を抑制することができる。
【００２１】
図２は、他の演算処理装置１１０の一例を示す。演算処理装置１１０は、図１に示す演算処理装置１００の命令デコード部１および命令完了制御部３の代わりに命令デコード部５および命令完了制御部６を有している。また、演算処理装置１１０は、命令完了保持部４の入力側に接続される切り替え部６ａと、命令完了保持部４の出力側に接続される切り替え部６ｂと、切り替え部６ａ、６ｂに接続される配線とを有する。
【００２２】
命令デコード部５は、命令ＩＮＳをそれぞれデコードする複数のデコーダ５ａ、５ｂを含む。命令デコード部５は、デコーダ５ａ、５ｂがそれぞれデコードする命令ＩＮＳに割り当てる命令番号をデコード順にしたがって決める。このため、例えば、デコーダ５ａが命令ＩＮＳをデコードしないサイクルでは、デコーダ５ｂがデコードする命令に偶数の命令番号が割り当てられる場合がある。同様に、デコーダ５ａがデコードする命令に奇数の命令番号が割り当てられる場合がある。
【００２３】
このため、命令完了制御部６は、命令情報ＩＩＮＦに含まれる命令番号に基づいて、切り替え部６ａを制御し、保持領域４ａ、４ｂのいずれかに命令情報ＩＩＮＦを格納する。また、命令完了制御部６は、切り替え部６ｂを制御し、命令ＩＮＳの実行が完了した命令情報ＩＩＮＦを保持領域４ａ、４ｂのいずれかから取り出して出力する。図２に示す演算処理装置１１０では、保持領域４ａ、４ｂがデコーダ５ａ、５ｂに共通に設けられるため、切り替え部６ａ、６ｂと配線とが演算処理装置１１０に設けられる。これにより、図１の演算処理装置１００に比べて回路規模が増大する。
【００２４】
以上、図１に示す実施形態では、デコーダ１ａ、１ｂ毎に命令に割り当てる命令番号を決めることで、デコーダ１ａが生成した命令情報ＩＩＮＦａは、保持領域４ａに格納され、デコーダ１ｂが生成した命令情報ＩＩＮＦｂは、保持領域４ｂに格納される。これにより、命令完了保持部４の入力側と出力側に切り替え部および配線を設けなくてよいため、演算処理装置１００の回路規模の増大を抑制することができる。
【００２５】
図３は、別の実施形態における演算処理装置の一例を示す。図３に示す演算処理装置１０２は、例えば、スーパースカラ方式のプロセッサである。
【００２６】
演算処理装置１０２は、命令フェッチアドレス生成部１０、１次命令キャッシュ１２、命令バッファ１４、命令デコード部１６および分岐予測部１８およびリザベーションステーション２０（２０１、２０２、２０３、２０４）を有する。また、演算処理装置１０２は、コミットスタックエントリ２４を含む命令完了制御部２２、プログラムカウンタ（ＰＣ）３２、ネクストプログラムカウンタ（ＮＰＣ）３４、オペランドアドレス生成部３６および１次データキャッシュ３８を有する。さらに、演算処理装置１０２は、演算器４０、４２、固定小数点数用のレジスタ４４および浮動小数点数用のレジスタ４４を有する。なお、コミットスタックエントリ２４は、命令完了制御部２２の外部に設けられてもよい。演算器４０、４２は、命令実行部の一例である。
【００２７】
命令フェッチアドレス生成部１０は、順次生成されるアドレス、分岐予測部１８から受けるアドレスおよびリザベーションステーション２０４からの情報に基づいて、命令をフェッチするためのアドレスを生成する。命令フェッチアドレス生成部１０は、生成したアドレスを１次命令キャッシュ１２に出力する。例えば、分岐予測部１８による分岐予測ミスに基づいてパイプラインクリアが発生した場合、リザベーションステーション２０４（ＲＳＢＲ）が出力する正しい分岐先アドレスにより命令フェッチが再開される。
【００２８】
１次命令キャッシュ１２は、命令フェッチアドレス生成部１０から受信するアドレスが示す領域に保持された命令を取り出し、取り出した命令を命令バッファ１４に出力する。１次命令キャッシュ１２は、アドレスに対応する命令を保持していない場合、図示しない２次キャッシュから命令を取り出すために、２次キャッシュにアクセス要求を出力する。２次キャッシュは、命令およびデータを保持する。なお、２次キャッシュは、アドレスに対応する命令を保持していない場合、図示しないメインメモリにアクセス要求を出力し、メインメモリから命令を取り出す。
【００２９】
命令バッファ１４は、１次命令キャッシュ１２から出力される命令を保持し、保持した命令を命令デコード部１６に出力する。例えば、命令バッファ１４は、４つの命令を並列に命令デコード部１６に出力する。
【００３０】
命令デコード部１６は、命令バッファ１４から出力される複数の命令をそれぞれデコードし、各命令の出力先のリザベーションステーション２０（２０１、２０２、２０３、２０４のいずれか）を決定する。命令デコード部１６は、決定したリザベーションステーション２０に、デコードにより得られた命令データを発行する。命令データは、デコードスロットＤＳ（図６）が命令をデコードすることで生成するデコード結果であり、命令情報の一例である。
【００３１】
例えば、命令デコード部１６は、デコードした命令がメモリアクセス命令（ロード命令またはストア命令）である場合、命令をリザベーションステーション２０１に投入する。命令デコード部１６は、デコードした命令が固定小数点数の演算命令である場合、命令をリザベーションステーション２０２に投入する。命令デコード部１６は、デコードした命令が浮動小数点数の演算命令である場合、命令をリザベーションステーション２０３に投入する。命令デコード部１６は、デコードした命令が分岐命令である場合、命令をリザベーションステーション２０４に投入する。
【００３２】
また、命令デコード部１６は、演算処理装置１０２で実行するプログラム中の記述の順番にしたがって命令に命令識別子ＩＩＤ（Instruction  Identification）およびグループ識別子ＧＩＤ（Group  Identification）を割り当てる。命令識別子ＩＩＤは、命令に割り当てられる命令番号の一例であり、グループ識別子ＧＩＤは、デコードのサイクル毎に割り当てられる命令識別子ＩＩＤに対応して割り当てられるグループ番号の一例である。
【００３３】
命令デコード部１６は、命令識別子ＩＩＤを、デコード結果とともにリザベーションステーション２０に出力し、グループ識別子ＧＩＤを、デコード結果とともに命令完了制御部２２に出力する。命令バッファ１４および命令デコード部１６は、プログラム中の記述の順番を入れ替えることなく複数の命令を並列に処理する（インオーダ）。以下では、命令識別子ＩＩＤは、単にＩＩＤとも称され、グループ識別子ＧＩＤは、グループ番号ＧＩＤまたはＧＩＤとも称される。
【００３４】
分岐予測部１８は、命令フェッチアドレス生成部１０により生成されたアドレスに基づいて、分岐命令により分岐が実行されるか否かを予測し、分岐を予測した場合、分岐先アドレスを命令フェッチアドレス生成部１０に出力する。
【００３５】
リザベーションステーション２０１は、命令デコード部１６から順次受けるメモリアクセス命令を保持し、保持したメモリアクセス命令を実行可能な順にオペランドアドレス生成部３６に出力する。以下では、リザベーションステーション２０１は、ＲＳＡ（Reservation  Station  for  Address  generation）２０１とも称される。リザベーションステーション２０２は、命令デコード部１６から順次受ける固定小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器４０に出力する。以下では、リザベーションステーション２０２は、ＲＳＥ（Reservation  Station  for  Execution）２０２とも称される。
【００３６】
リザベーションステーション２０３は、命令デコード部１６から順次受ける浮動小数点数の演算命令を保持し、保持した演算命令を実行可能な順に演算器４２に出力する。以下では、リザベーションステーション２０３は、ＲＳＦ（Reservation  Station  for  Floating  point）２０３とも称される。演算器４０、４２に発行された命令は、プログラムに記述された命令の順番と関係なく実行される（アウトオブオーダ）。
【００３７】
リザベーションステーション２０４は、命令デコード部１６から順次受ける分岐命令を、分岐の判断が可能になるまで保持する。リザベーションステーション２０４は、分岐命令に基づいて分岐予測部１８の分岐予測が成功したか否かを判定し、判定結果に基づいてネクストプログラムカウンタ３４の値を更新する。また、リザベーションステーション２０４は、分岐予測の判定が完了したことを示す情報を分岐予測部１８に出力する。以下では、リザベーションステーション２０４は、ＲＳＢＲ（Reservation  Station  for  BRanch）２０４とも称される。
【００３８】
命令完了制御部２２は、命令デコード部１６によりデコードされた命令を、プログラムに記述された命令の順番通りに貯めておくキュー構造のコミットスタックエントリ２４を有する。以下では、コミットスタックエントリ２４は、ＣＳＥ２４またはＣＳＥとも称される。命令完了制御部２２は、ＣＳＥ２４に保持された情報と演算器４０、４２等からの命令実行の完了報告とに基づいて、命令の完了処理を、プログラムで記述された順に実行する（インオーダ）。すなわち、命令完了制御部２２は、アウトオブオーダにより実行が完了した命令に基づいてインオーダで命令の完了処理を実行する。以下では命令の完了処理は、コミットとも称される。
【００３９】
プログラムカウンタ（ＰＣ）３２は、命令完了制御部２２からの指示に基づいて、命令の格納先を示すメモリアドレスを更新し、更新したメモリアドレスを命令フェッチアドレス生成部１０に出力する。ネクストプログラムカウンタ（ＮＰＣ）３４は、プログラムカウンタ３２が保持するメモリアドレスの次のメモリアドレスを保持する。なお、命令デコード部１６が最大で４つの命令を並列にデコードする場合、プログラムカウンタ３２の値およびネクストプログラムカウンタ３４の値は、完了処理が実行された命令の数に対応して更新される。
【００４０】
オペランドアドレス生成部３６は、ＲＳＡ２０１から投入されるメモリアクセス命令に基づいてアドレスを生成し、生成したアドレスを一次データキャッシュ３８に出力する。１次データキャッシュ３８は、オペランドアドレス生成部３６からのアドレスによりアクセスされ、データを入出力する。なお、図３では、演算処理装置１０２は、複数のオペランドアドレス生成部３６を有するが、オペランドアドレス生成部３６の数は単数でもよい。
【００４１】
１次データキャッシュ３８は、１次命令キャッシュ１２と同様に、アドレスに対応するデータを保持していない場合、２次キャッシュからデータを取り出すために、２次キャッシュにアクセス要求を出力する。例えば、ロード命令では、１次データキャッシュ３８は、取り出したデータをレジスタ４４、４６のいずれかに格納する。
【００４２】
演算器４０は、固定小数点数用の演算器である。演算処理装置１０２は、命令デコード部１６により並列にデコードされた固定小数点数の演算命令を並列に実行するために、複数の演算器４０を有してもよい。演算器４０は、演算に使用するデータをレジスタ４４から取得し、演算結果をレジスタ４４に格納する。
【００４３】
演算器４２は、浮動小数点数用の演算器である。例えば、演算処理装置１０２は、命令デコード部１６により並列にデコードされた浮動小数点数の演算命令を並列に実行するために、複数の演算器４２を有してもよい。演算器４２は、演算に使用するデータをレジスタ４６から取得し、演算結果をレジスタ４６に格納する。
【００４４】
レジスタ４４は、演算器４０で実行する演算に使用するデータを保持し、演算器４０による演算の実行結果を保持する。レジスタ４６は、演算器４２で実行する演算に使用するデータを保持し、演算器４２による演算の実行結果を保持する。
【００４５】
なお、レジスタ４４、４６は、レジスタファイル構造を有しており、それぞれ複数のレジスタを含む。例えば、レジスタ４４、４６は、レジスタファイルと、演算結果等をレジスタファイルに格納するまで保持する更新バッファとを共用し、リネーム表等を使用してレジスタを管理する物理レジスタ方式が採用される。なお、レジスタ４４、４６の各々代わりに、更新バッファとレジスタファイルとが設けられてもよい。
【００４６】
図４は、図３の演算処理装置１０２のパイプライン処理の一例を示す。なお、パイプライン処理は、図４に示す例に限定されない。例えば、演算処理装置１０２は、演算命令を、デコードステージＤ、プライオリティステージＰ、バッファステージＢ、演算実行ステージＸ、命令完了ステージＣおよび書き込みステージＷを含むパイプライン処理により実行する。かぎ括弧内に示すステージは、命令完了制御部２２の動作に関係するパイプライン処理（デコードトランスファステージＤＴ、取り出しステージＣＭ１および完了待ちステージｃ）を示す。
【００４７】
以下では、デコードステージＤ、プライオリティステージＰ、バッファステージＢ、演算実行ステージＸ、命令完了ステージＣおよび書き込みステージＷは、単にステージＤ、Ｐ、Ｂ、Ｘ、Ｃ、Ｗとも称される。デコードトランスファステージＤＴ、取り出しステージＣＭ１および完了待ちステージｃは、単にステージＤＴ、ＣＭ１、ｃとも称される。また、ステージＤ、Ｐ、Ｂ、Ｘ、Ｃ、Ｗ、ＤＴ、ＣＭ１、ｃが実行されるサイクルは、サイクルＤ、Ｐ、Ｂ、Ｘ、Ｃ、Ｗ、ＤＴ、ＣＭ１、ｃとも称される。
【００４８】
ステージＤでは、命令デコード部１６は、命令バッファ１４が出力する命令をインオーダでデコードする。そして、命令デコード部１６は、デコードした命令を、グループ識別子ＧＩＤとともに命令完了制御部２２に出力し、デコードした命令を、命令の種別に基づいて、命令識別子ＩＩＤとともにリザベーションステーション２０１、２０２、２０３、２０４に出力する。
【００４９】
ステージＰでは、各リザベーションステーション２０は、実行が可能となった命令をアウトオブオーダで選択する。なお、演算資源等の使用中等により各リザベーションステーション２０が命令を発行できない場合、図４の下側の演算命令のパイプライン処理に示すように、ステージＤとステージＰの間には、空きサイクルが挿入される。
【００５０】
ステージＢでは、演算器４０、４２等は、ステージＰで選択された命令で使用するデータ等をレジスタ４４、４６等から読み出す。ステージＸでは、演算器４０、４２は、ステージＢでレジスタ４４、４６等から読み出したデータを使用して、ステージＰで選択された命令を実行する。
【００５１】
ステージＤＴでは、命令完了制御部２２は、命令デコード部１６が出力した命令を、グループＩＤに対応するＣＳＥ２４のエントリにインオーダで登録する。なお、図４の下側の演算命令のパイプライン処理に示すように、ステージＤとステージＰの間に空きサイクルが挿入される場合にも、ステージＤＴは、ステージＤの次のサイクルで実行される。
【００５２】
ステージＣＭ１では、命令完了制御部２２は、命令の実行の完了報告に基づいて、ＣＳＥ２４に登録された命令をインオーダで取り出し、図８に示すＣＳＥ−ＷＩＮＤＯＷ２６０にセットする。なお、取り出し対象の命令がＣＳＥ２４から取り出せない場合、ステージＤＴとステージＣＭ１との間には空きサイクルが挿入される。
【００５３】
ステージｃは、命令の実行の完了報告が発行されるまで（すなわち、ステージＸにより命令が完了するまで）挿入される。ステージＸに対応するステージｃでは、演算器４０、４２は、演算結果をレジスタ４４、４６等に格納し、演算の完了を示す完了報告が命令完了制御部２２に出力されるのを待つ。なお、例えば、演算例外が発生した場合、演算器４０、４２は、演算例外の発生を示す情報を命令完了制御部２２に出力する。
【００５４】
命令がロード命令またはストア命令の場合、ステージＸに対応するステージｃにおいて、１次データキャッシュ３６は、データ転送が完了したことを示す完了情報が命令完了制御部２２に出力されるのを待つ。命令が分岐命令の場合、ステージＸに対応するステージｃにおいて、ＲＳＢＲ２０４は、分岐予測部１８の分岐予測に対する判定が完了したことを示す完了情報を命令完了制御部２２に出力する。そして、命令完了制御部２２は、ステージＣにおいて、各完了情報に基づいて、インオーダで命令完了の処理を開始する。ステージＷでは、プログラムカウンタ３２の値およびネクストプログラムカウンタ２６の値が更新され、命令の実行に使用したレジスタ４４、４６等の資源が解放される。
【００５５】
図５は、スーパースカラ方式によるアウトオブオーダ実行の一例を示す。なお、図５では、演算処理装置１０２は、最大４個の命令を並列に実行する。例えば、命令フェッチアドレス生成部１０が出力するアドレスに基づいて１次命令キャッシュ１２からインオーダでフェッチされた複数の命令は、命令バッファ１４を介して命令デコード部１６に出力される。例えば、一次命令キャッシュ１２が並列に出力する命令の数は、命令バッファ１４が命令デコード部１６に並列に出力する命令の数（例えば、４個）より多い。
【００５６】
命令デコード部１６は、ステージＤにおいて、命令バッファ１４から出力される複数の命令をインオーダでそれぞれデコードする。演算器４０、４２は、命令デコード部１６がデコードした複数の命令をアウトオブオーダで実行する。なお、演算器４０、４２による演算に掛かるサイクル数（ステージＸの数）は、命令の種類により異なる。
【００５７】
ここで、並列に実行される４つの命令において、プログラムの記述順が遅い命令の実行が、プログラムの記述順が早い命令の実行より早く完了した場合、プログラムの記述順が早い命令の実行が完了するまでステージＷによる命令の完了処理は実行されない。図５に示す例では、プログラムの記述順が最も早い命令（一番上の命令）の実行が完了するまで、命令の完了処理は開始されない。これにより、アウトオブオーダで実行された複数の命令をインオーダで完了させることができる。そして、ステージＷにより、命令の実行に使用したレジスタ４４、４６等の資源が解放され、複数の命令の完了処理（コミット処理）がインオーダで実行され、命令の実行が完了する。
【００５８】
図６は、図３の命令デコード部１６の一例を示す。命令デコード部１６は、４つのデコードスロットＤＳ（ＤＳ０、ＤＳ１、ＤＳ２、ＤＳ３）を含むデコード処理部１６１、デコードレジスタＤＲ（ＤＲ０、ＤＲ１、ＤＲ２、ＤＲ３）およびＧＩＤ生成部１６２を有する。各デコードスロットＤＳは、命令バッファ１４から出力される命令をデコードするデコーダの一例である。
【００５９】
各デコードレジスタＤＲは、例えば、各デコードスロットＤＳに対応して設けられる。なお、複数のデコードスロットＤＳに１つのデコードレジスタＤＲが対応してもよく、１つのデコードスロットＤＳに複数のデコードレジスタＤＲが対応してもよい。デコードスロットＤＳの数は、複数個であれば、４つに限定されない。４つのデコードスロットＤＳにより、デコードサイクル毎に最大で４つの命令をデコード可能である。以下では、各デコードレジスタＤＲが、各デコードスロットＤＳに対応するものとして説明する。
【００６０】
デコード処理部１６１は、命令バッファ１４から並列に出力される複数の命令をインオーダで受信し、デコードスロットＤＳ毎に、命令のデコード、リソースの割り当て、レジスタのリネーミングなどを実行する。各デコードレジスタＤＲは、バリッドフラグＶ、リリースフラグＲＥＬおよびデータ領域Ｄを有する。
【００６１】
バリッドフラグＶは、対応するデコードスロットＤＳが命令をデコードした場合に”１”にセットされる。例えば、命令バッファ１４から３つの命令を受信した場合、３つのデコードスロットＤＳに対応するバリッドフラグＶは、”１”にセットされ、残りにデコードスロットＤＳに対応するバリッドフラグＶは、”０”にリセットされる。
【００６２】
リリースフラグＲＥＬは、対応するデコードスロットＤＳによりデコードが実行され、命令で使用するリソースなどの条件がそろった場合、”１”にセットされる。データ領域Ｄには、対応するデコードスロットＤＳによるデコード結果（命令データＤ（Ｄ０−Ｄ３））が格納される。なお、図示していないが、命令デコード部１６は、デコードした命令毎に命令識別子ＩＩＤを割り当てる。例えば、命令識別子ＩＩＤは、ＣＳＥ２４に格納可能な命令の数（１２８個）に合わせて”０”から”１２７”のいずれかに設定される。
【００６３】
ＧＩＤ生成部１６２は、ＧＩＤを保持するラッチ１６３、１６４、インクリメンタ１６５およびセレクタ１６６を有する。ラッチ１６３は、セレクタ１６６の出力をラッチする。インクリメンタ１６５は、ラッチ１６３から出力される現在のＧＩＤを”１”増加させてセレクタ１６６に出力する。例えば、インクリメンタ１６５は、ＧＩＤ＝”０”から”３１”を巡回的に生成するカウンタである。
【００６４】
セレクタ１６６は、４入力のアンド回路の出力が論理０の場合、ラッチ１６３の出力を選択し、ＧＩＤを更新しない。セレクタ１６６は、４入力のアンド回路の出力が論理１の場合、インクリメンタ１６５の出力を選択することでＧＩＤを更新する。命令デコード部１６が命令バッファ１４から命令を受信した場合、各デコードレジスタＤＲの状態は、バリッドフラグＶ＝”１”、リリースフラグＲＥＬ＝”０”になる。そして、命令を発行可能な状態になったとき、バリッドフラグＶ＝”１”、リリースフラグＲＥＬ＝”１”になる。
【００６５】
バリッドフラグＶ＝”０”を除くデコードレジスタＤＲのいずれかがバリッドフラグＶ＝”１”、リリースフラグＲＥＬ＝”０”の状態の場合、アンド回路の出力は論理０のため、ＧＩＤは更新されない。バリッドフラグＶ＝”０”を除くデコードレジスタＤＲの全てがバリッドフラグＶ＝”１”、リリースフラグＲＥＬ＝”１”の状態になった場合、アンド回路の出力は論理１になり、ＧＩＤは更新される。なお、全てのバリッドフラグＶ０−Ｖ３がリセットされている場合にも、ＧＩＤは更新される。
【００６６】
図７は、図３の命令完了制御部２２の一例を示す。図７に示すステージＤ、ＤＴ、ＣＭ１、Ｃ、Ｗ、Ｘは、図４に示す各ステージに対応する。命令完了制御部２２は、デコードされた命令用のＣＳＥ２４０およびコミット用（完了用）のＣＳＥ２４２を、ＣＳＥ２４として含む。ＣＳＥ２４０、２４２は、命令の完了処理に使用される命令完了保持部の一例である。また、命令完了制御部２２は、ラッチ部２５０、バイパス制御部２５２、ＣＳＥ−ＷＩＮＤＯＷ２６０、命令完了判定部２７０および命令完了処理部２８０を有する。ＣＳＥ−ＷＩＮＤＯＷ２６０は、実行が完了していない最も古いサイクルの命令に割り当てられたグループ番号ＧＩＤに対応する命令データＤを保持する命令完了バッファの一例である。実行が完了していない最も古いサイクルの命令に割り当てられたグループ番号ＧＩＤは、最古グループ番号の一例である。
【００６７】
ＣＳＥ２４０（デコード）は、ラッチ部２５０を介して命令デコード部１６から受信する複数の命令データＤ（デコード結果：物理アドレスや使用するリソース種等）を、命令デコード部１６から指示されたエントリに保持する。ラッチ部２５０は、命令デコード部１６がデコードにより得た複数の命令データＤ（デコード結果）を保持する。ＣＳＥ２４２（コミット）は、演算器４０、４２、１次データキャッシュ３８またはＲＳＢＲ２０４等から出力される命令の完了報告を、指示されたエントリに保持する。演算器４０、４２、１次データキャッシュ３８またはＲＳＢＲ２０４等から出力される命令の完了報告は、アウトオブオーダで発行されるため、完了報告の発生タイミングは、ばらばらである。ＣＳＥ２４０、ＣＳＥ２４２の例は、図８から図１１に示される。
【００６８】
バイパス制御部２５２は、例えば、演算器４０、４２、１次データキャッシュ３８またはＲＳＢＲ２０４からの完了報告に含まれるＩＩＤを、ＣＳＥ２４２に格納される前にＣＳＥ−ＷＩＮＤＯＷ２６０に転送する。これにより、ＣＳＥ−ＷＩＮＤＯＷ２６０に同じＩＩＤを含む命令（データ）がセットされている場合、ＣＳＥ２４２から完了情報を含むデータが出力される前に、命令の完了処理が実行可能になる。演算器４０、４２等からの完了報告に含まれるＩＩＤがＣＳＥ−ＷＩＮＤＯＷ２６０にセットされていない場合、ＣＳＥ２４２からＣＳＥ−ＷＩＮＤＯＷ２６０への完了情報のセットに基づいて、命令の完了処理が実行される。
【００６９】
ＣＳＥ−ＷＩＮＤＯＷ２６０には、命令の実行の完了報告に基づいてＣＳＥ２４０、２４２からインオーダで取り出される命令データＤが、命令の完了候補としてセットされる。ＣＳＥ−ＷＩＮＤＯＷ２６０に保持された命令データＤは、完了報告に基づいてインオーダで命令完了処理部２８０に出力される。
【００７０】
命令完了判定部２７０は、ＣＳＥ−ＷＩＮＤＯＷ２６０に保持された複数の命令データＤに対応する複数の命令の各々の完了報告が発行されたか否かを監視する。命令完了判定部２７０は、ＣＳＥ−ＷＩＮＤＯＷ２６０に保持された複数の命令データＤに対応する複数の命令の各々の完了報告が発行された場合、完了報告が発行された命令の命令データＤを命令完了処理部２８０への出力を制御する。また、命令完了判定部２７０は、ＣＳＥ−ＷＩＮＤＯＷ２６０に保持された全ての命令データＤに対応する命令の完了報告が発行された場合、ＣＳＥ２４０、２４２からＣＳＥ−ＷＩＮＤＯＷ２６０に次の命令データＤを格納する処理を制御する。
【００７１】
命令完了処理部２８０は、完了報告に基づいてＣＳＥ−ＷＩＮＤＯＷ２６０から出力される少なくとも１つの命令データＤに基づいて、プログラムカウンタＰＣの更新等をするための情報を出力し、命令の完了処理を実行する。
【００７２】
図８は、図７のＣＳＥ２４０とその関連回路との一例を示す。図７と同じ要素については、図７と同じ符号を付し、詳細な説明は省略される。図８は、図７に示す要素以外に、グループデコード部２４３、ゲート部２４４およびセレクタ部２４５Ｄを有する。
【００７３】
ＣＳＥ２４０は、図６に示すデコードスロットＤＳ（ＤＳ０−ＤＳ３）に対応する４つの列ブロックＣＢ（ＣＢ０−ＣＢ３）を有する。なお、図８では、ＣＳＥ−ＷＩＮＤＯＷ２６０は、列ブロックＣＢ０−ＣＢ３毎に分割して示される。各列ブロックＣＢは、３２個のエントリを有し、４つの列ブロックＣＢの４つのエントリ（１行）毎にグループ番号ＧＩＤ（図１０）が割り当てられる。各列ブロックＣＢのエントリ内の番号は、エントリに割り当てられたＩＩＤを示す。各エントリは、ＩＩＤが割り当てられる保持領域の一例であり、列ブロックＣＢは、デコードスロットＤＳに対応する保持ブロックの一例である。
【００７４】
例えば、ＩＩＤ＝０、１、２、３に対応する４つのエントリが１つのグループに対応し、ＩＩＤ＝４、５、６、７に対応する４つのエントリが別のグループに対応する。各グループは、後述するグループ番号ＧＩＤにより識別される。例えば、ＧＩＤ＝０は、ＩＩＤ＝０、１、２、３に対応するエントリを示し、ＧＩＤ＝３１は、ＩＩＤ＝１２４、１２５、１２６、１２７に対応するエントリを示す。ＣＳＥ２４０のＩＩＤ、ＧＩＤの割り当ての例は、図１０に示される。
【００７５】
ラッチ部２５０は、複数のラッチを有し、列ブロックＣＢに対応して、命令データＤ（Ｄ０−Ｄ３）およびリリースフラグＲＥＬ（ＲＥＬ０−ＲＥＬ３）の論理をＤサイクルで受けて保持する。なお、ラッチおよびレジスタは、特に断らない限り、クロック信号に同期して動作するが、クロック信号の図示は省略される。
【００７６】
グループデコード部２４３は、命令デコード部１６から出力される５ビットのグループ番号ＧＩＤ［４：０］をＤサイクルで保持するラッチＬＴとデコーダＧＤＥＣとを有する。デコーダＧＤＥＣは、ラッチＬＴに保持されたグループ番号ＧＩＤを、ＤＴサイクルにデコードし、３２本のグループ選択信号ＧＳＥＬ０−ＧＳＥＬ３１のいずれか１つを有効レベルに設定する。３２本のグループ選択信号ＧＳＥＬは、ＣＳＥ２４０の３２個のグループにそれぞれ対応する。このように、グループデコード部２４３は、７ビットのＩＩＤではなく５ビットのＧＩＤを用いて命令データＤを格納するエントリを選択できるため、ＩＩＤを用いる場合に比べてグループデコード部２４３の回路規模を削減することができる。
【００７７】
ゲート部２４４は、列ブロックＣＢ毎に３２個のアンド回路を有する。３２個のアンド回路の各々は、３２個のグループ選択信号ＧＳＥＬ０−３１のいずれかと、列ブロックＣＢに対応するリリースフラグＲＥＬとを受ける。リリースフラグＲＥＬ０−ＲＥＬ３は、命令データＤ０−Ｄ３が有効か無効かを示す。
【００７８】
そして、有効レベルのグループ選択信号ＧＳＥＬに対応するアンド回路からクロックイネーブル信号ＣＬＫＥＮが出力され。これにより、クロックイネーブル信号ＣＬＫＥＮに対応するエントリにクロック信号が供給され、命令データＤがエントリに格納される。クロックイネーブル信号ＣＬＫＥＮに対応しないエントリには、クロック信号を受けないため、命令データＤは格納されない。すなわち、各列ブロックＣＢは、対応するリリースフラグＲＥＬが有効の場合、グループ選択信号ＧＳＥＬで示されるエントリに、受信した命令データＤを格納する。各列ブロックＣＢは、対応するリリースフラグＲＥＬが無効の場合、受信した命令データＤの格納を抑止する。
【００７９】
命令完了判定部２７０は、コミット判定部２７１、選択信号生成部２７２およびレジスタ２７３を有する。コミット判定部２７１は、各ＣＳＥ−ＷＩＮＤＯＷ２６０から受信するコミット状態を示すコミット信号ＣＭＴに基づいて、ＣＳＥ２４０から次のエントリ（グループ）の命令データＤをＣＳＥ−ＷＩＮＤＯＷ２６０に取り込むか否かを判定する。ここで、各ＣＳＥ−ＷＩＮＤＯＷ２６０のコミット状態とは、命令の実行の完了報告に対応する情報がセットされた状態である。
【００８０】
コミット判定部２７１は、受信したコミット信号ＣＭＴに基づいて、インオーダでコミット可能な命令（すなわち、ＩＩＤが連続する命令）を検出する。そして、コミット判定部２７１は、ＣＳＥ−ＷＩＮＤＯＷ２６０が保持する全ての命令がコミット可能な状態にあった場合、グループコミット信号ＧＣＭＴを出力する。すなわち、次のエントリの命令データＤをＣＳＥ−ＷＩＮＤＯＷ２６０に取り込む場合、コミット判定部２７１は、グループコミット信号ＧＣＭＴを各ＣＳＥ−ＷＩＮＤＯＷ２６０とレジスタ２７３とに出力する。
【００８１】
各ＣＳＥ−ＷＩＮＤＯＷ２６０は、グループコミット信号ＧＣＭＴに基づいて生成されるクロックイネーブル信号ＣＬＫＥＮを受信し、後述するセレクタ２４６Ｄが選択中の命令データＤをクロック信号に同期してＣＭ１サイクルで取り込む。なお、グループコミット信号ＧＣＭＴは、クロックイネーブル信号として各ＣＳＥ−ＷＩＮＤＯＷ２６０に供給されてもよい。命令完了判定部２７０の動作は、図１４および図１５で説明される。
【００８２】
レジスタ２７３は、ＣＳＥ−ＷＩＮＤＯＷ２６０が保持する命令データＤが保持されていたＣＳＥ２４０のグループ番号ＣＧＩＤ（ＧＩＤ）を保持する。レジスタ２７３は、グループコミット信号ＧＣＭＴに基づいて、グループ番号ＣＧＩＤを更新する。選択信号生成部２７２は、グループ番号ＣＧＩＤに”１”を加えたグループ番号を生成し、生成したグループ番号をデコードして３２本のネクストグループ選択信号ＮＧＳＥＬ０−ＮＧＳＥＬ３１のいずれか１つを有効レベルに設定する。ネクストグループ選択信号ＮＧＳＥＬ０−ＮＧＳＥＬ３１は、ＣＳＥ２４０の３２個のグループにそれぞれ対応している。有効レベルに設定されたネクストグループ選択信号ＮＧＳＥＬは、ＣＳＥ−ＷＩＮＤＯＷ２６０に次に格納される命令データＤのグループ番号を示す。なお、グループ番号ＣＧＩＤは、”０”から”３１”まで巡回的に生成される。
【００８３】
セレクタ部２４５Ｄは、各列ブロックＣＢに対応するセレクタ２４６Ｄ（３２：１）を有する。各セレクタ２４６Ｄは、対応する列ブロックＣＢに保持された３２個のグループの命令データＤと、３２個のネクストグループ選択信号ＮＧＳＥＬ０−３１とを受ける。各セレクタ２４６Ｄは、有効レベルのネクストグループ選択信号ＮＧＳＥＬに対応する命令データＤを選択し、選択した命令データＤを各ＣＳＥ−ＷＩＮＤＯＷ２６０に出力する。セレクタ２４６Ｄは、各保持ブロックＣＢの複数のエントリが保持する命令データＤをグループ番号ＧＩＤに基づいて選択し、選択した命令データＤをＣＳＥ−ＷＩＮＤＯＷ２６０に出力する選択部の一例である。
【００８４】
なお、各セレクタ２４６Ｄの代わりに、８入力から１つを選択する８：１のセレクタと、４入力から１つを選択する４：１セレクタとが設けられてもよい。あるいは、各セレクタ２４６Ｄの代わりに、８入力から１つを選択する８：１のセレクタと、２入力から１つを選択する２つの２：１セレクタとが設けられてもよい。
【００８５】
列ブロックＣＢ０−ＣＢ３は、命令デコード部１６のデコードスロットＤＳ（図６）にそれぞれ対応して設けられる。このため、例えば、デコードスロットＤＳ０から出力された命令データＤ０は、列ブロックＣＢ０のみに格納され、列ブロックＣＢ１−ＣＢ３に格納されない。したがって、ラッチ部２５０の命令データＤ０を保持するラッチから列ブロックＣＢ１−ＣＢ３のそれぞれに命令データＤ０を転送する転送経路（配線）を設けることなく、ＣＳＥ２４０に命令データＤ０を格納することができる。また、各列ブロックＣＢ０−ＣＢ３に対応して命令データＤ０−Ｄ３を選択するセレクタ等の切り替え部を設けることなく、ＣＳＥ２４０に命令データを格納することができる。
【００８６】
さらに、１つの命令データＤ０は、１つの列ブロックＣＢのみに格納され、他の列ブロックＣＢに格納されないため、各セレクタ２４６Ｄは、対応する列ブロックＣＢの３２個の命令データＤを選択して、ＣＳＥ−ＷＩＮＤＯＷ２６０に供給すればよい。すなわち、各セレクタ２４６Ｄは、４つの列ブロックＣＢ０−ＣＢ３の１２８個の命令データＤを選択しなくてよい。したがって、列ブロックＣＢ１−ＣＢ３から各セレクタ２４６Ｄに命令データＤを転送する転送経路（配線）を設けることなく、ＣＳＥ−ＷＩＮＤＯＷ２６０に命令データＤを格納することができ、セレクタ２４６Ｄの回路規模を抑えることができる。
【００８７】
図９は、図７のＣＳＥ２４２とその関連回路との一例を示す。図７および図８と同じ要素については、図７および図８と同じ符号を付し、詳細な説明は省略される。ＣＳＥ−ＷＩＮＤＯＷ２６０および命令完了処理部２８０と、命令完了判定部２７０内のコミット判定部２７１およびレジスタ２７３は、図８と共通の回路である。なお、ＣＳＥ２４２の列ブロックＣＢ０−ＣＢ３は、ＣＳＥ２４０の列ブロックＣＢ０−ＣＢ３とは物理的に異なる回路である。
【００８８】
図９では、演算器４０から完了報告を受ける場合について説明するが、演算器４２、１次データキャッシュ３８およびＲＳＢＲ２０４等から受ける完了報告に対しても同様の動作が実行される。図９は、図７に示す要素以外に、ラッチ部２５３、デコーダ２５４、ＩＩＤマッチ部２５２Ａ、セレクタ部２４５Ｅおよびオア部２５２Ｂを有する。
【００８９】
ラッチ部２５３は、演算器４０からアウトオブオーダで完了報告ＣＯＭＰ、ＩＩＤ（ＥＩＩＤ：７ビット）およびコンディションコードや例外などを示すデータＥＤを受信する。なお、完了報告ＣＯＭＰは、ＥＩＩＤが有効であることを示すバリッドフラグでもありデータでもある。完了報告ＣＯＭＰは、完了報告情報の一例である。
【００９０】
デコーダ２５４は、完了報告ＣＯＭＰを受信した場合、ＥＩＩＤをデコードする。そして、デコーダ２５４は、ＥＩＩＤの下位２ビットから４本の選択信号ＣＢＳＥＬ（ＣＢＳＥＬ０−ＣＢＳＥＬ３）を生成し、ＥＩＩＤの上位５ビットから３２本の選択信号ＥＳＥＬ（ＥＳＥＬ０−ＥＳＥＬ３１）を生成する。
【００９１】
選択信号ＣＢＳＥＬにより、列ブロックＣＢのいずれかが選択される。選択信号ＥＳＥＬは、クロックイネーブル信号ＣＬＫＥＮとして各列ブロックＣＢに供給され、クロック信号に同期して選択信号ＣＢＳＥＬにより選択された列ブロックＣＢ内のエントリのいずれか１つに完了報告ＣＯＭＰおよびデータＥＤが格納される。これにより、１サイクル毎にＣＳＥ２４２の１つのエントリに完了報告ＣＯＭＰおよびデータＥＤが登録される。
【００９２】
ＣＳＥ２４２への完了報告ＣＯＭＰの格納は、ＧＩＤではなく、ＩＩＤに基づいて実行される。これにより、命令デコード部１６は、演算器４０、４２等にＧＩＤを発行せずに、ＩＩＤを発行することができ、リザベーションステーション２０を含む既存の回路を利用して演算処理装置１０２を設計することができる。
【００９３】
ＩＩＤマッチ部２５２Ａおよびオア部２５２Ｂは、バイパス制御部２５２（図７）として機能する。ＩＩＤマッチ部２５２Ａは、完了報告ＣＯＭＰがセットされ、かつ、ＥＩＩＤが属するＧＩＤと現在のＣＧＩＤ（＝ＧＩＤ）とが一致する場合、ＥＩＩＤに対応するオア部２５２Ｂに完了報告ＣＯＭＰおよびデータＥＤを出力する。ここで、ＧＩＤは、７ビットのＥＩＩＤ［６：０］の上位５ビットにより表され、列ブロックＣＢは、ＥＩＩＤ［６：０］の下位２ビットにより表される。ＩＩＤマッチ部２５２Ａとオア部２５２Ｂとの間を接続する配線ＢＹＰＳは、バイパス経路の一例である。
【００９４】
これにより、ＥＩＩＤに対応するＣＳＥ−ＷＩＮＤＯＷ２６０に完了報告ＣＯＭＰおよびデータＥＤがセットされ、列ブロックＣＢ０−ＣＢ３からの完了報告ＣＯＭＰを待つことなく完了処理を開始することができる。すなわち、完了報告ＣＯＭＰおよびデータＥＤのバイパス機能が実現される。なお、ラッチ部２５３に格納された情報は、ＩＩＤマッチ部２５２Ａの動作にかかわりなく、対象の列ブロックＣＢ０−ＣＢ３に格納される。ＩＩＤマッチ部２５２Ａは、完了報告ＣＯＭＰとＥＩＩＤとの受信に基づいて、ＥＩＩＤに対応するグループ番号ＣＧＩＤがＣＳＥ−ＷＩＮＤＯＷ２６０に保持された命令データＤに対応するグループ番号ＧＩＤと一致するかを判定する判定部の一例である。
【００９５】
コミット判定部２７１が出力するグループコミット信号ＧＣＭＴ（クロックイネーブル信号ＣＬＫＥＮとして使用）は、レジスタ２７３に供給されるが、ＣＳＥ−ＷＩＮＤＯＷ２６０には供給されない。このため、各ＣＳＥ−ＷＩＮＤＯＷ２６０は、グループコミット信号ＧＣＭＴにかかわりなく、毎サイクル、セレクタ２４６Ｅが選択中の完了報告ＣＯＭＰ、データＥＤ、またはＩＩＤマッチ部２５２Ａから出力される完了報告ＣＯＭＰ、データＥＤを取り込む。
【００９６】
選択信号生成部２７４は、グループ番号ＣＧＩＤに”１”を加えたグループ番号を生成する。選択信号生成部２７４は、生成したグループ番号またはグループ番号ＣＧＩＤをデコードして３２本のグループ選択信号ＧＳＥＬ０−ＧＳＥＬ３１のいずれか１つを有効レベルに設定する。グループ選択信号ＧＳＥＬ０−ＧＳＥＬ３１は、ＣＳＥ２４０の３２個のグループにそれぞれ対応しており、有効レベルに設定されたグループ選択信号ＧＳＥＬは、ＣＳＥ−ＷＩＮＤＯＷ２６０に格納される完了報告ＣＯＭＰおよびデータＥＤのグループ番号を示す。なお、グループ番号ＣＧＩＤが”３１”の場合、”１”を加えたグループ番号は”０”になる。
【００９７】
セレクタ部２４５Ｅは、各列ブロックＣＢに対応するセレクタ２４６Ｅ（３２：１）を有する。各セレクタ２４６Ｅは、対応する列ブロックＣＢに保持された３２個のグループの完了報告ＣＯＭＰおよびデータＥＤと、３２個のグループ選択信号ＧＳＥＬ０−３１とを受ける。各セレクタ２４６Ｅは、有効レベルのグループ選択信号ＧＳＥＬに対応する完了報告ＣＯＭＰおよびデータＥＤを選択し、選択した完了報告ＣＯＭＰおよびデータＥＤを各ＣＳＥ−ＷＩＮＤＯＷ２６０に出力する。
【００９８】
なお、各セレクタ２４６Ｅの代わりに、８入力から１つを選択する８：１のセレクタと、４入力から１つを選択する４：１セレクタが設けられてもよい。あるいは、各セレクタ２４６Ｅの代わりに、８入力から１つを選択する８：１のセレクタと、２入力から１つを選択する２つの２：１セレクタが設けられてもよい。
【００９９】
各ＣＳＥ−ＷＩＮＤＯＷ２６０は、すでにセットされている完了報告ＣＯＭＰおよびデータＥＤの上書きが必要なため、毎サイクルＣＳＥ２４０から完了報告ＣＯＭＰおよびデータＥＤを取り込む。取り込む完了報告ＣＯＭＰおよびデータＥＤが保持されたグループは、グループ選択信号ＧＳＥＬが、現在のＧＩＤを示すか、次のＧＩＤを示すかにより異なる。
【０１００】
オア部２５２Ｂは、列ブロックＣＢ毎に、完了報告ＣＯＭＰおよびデータＥＤの各ビットに対応するオア回路を有する。オア部２５２Ｂは、セレクタ２４６Ｅから出力される完了報告ＣＯＭＰおよびデータＥＤ、またはＩＩＤマッチ部２５２Ａから出力される完了報告ＣＯＭＰおよびデータＥＤをＣＳＥ−ＷＩＮＤＯＷ２６０に出力する。なお、オア部２５２Ｂは、ＩＩＤマッチ部２５２Ａから完了報告ＣＯＭＰを受けた場合、ＩＩＤマッチ部２５２Ａから受けるデータＥＤを優先してＣＳＥ−ＷＩＮＤＯＷ２６０に出力する。
【０１０１】
図１０は、図７のＣＳＥ２４０、ＣＳＥ２４２のＩＩＤの割り当ての一例を示す。ＣＳＥ２４０、ＣＳＥ２４２は、各エントリのサイズおよび登録される情報が異なることを除き、同様の構成であるため、以下では、ＣＳＥ２４０が説明される。ＣＳＥ２４０は、０番から３１番のグループ番号ＧＩＤが割り当てられた３２個のグループ領域を有する。各グループ領域は、４つのデコードスロットＤＳの各々に対応する４つのエントリを有し、各エントリは、１つの命令のデコード結果である命令データＤ等を保持する。すなわち、ＣＳＥ２４０は、命令データＤを保持する１２８個のエントリを有する。
【０１０２】
各エントリは、列ブロックＣＢ０から列ブロックＣＢ３にかけて番号が１つずつ増加するＩＩＤが割り当てられる。各エントリ内の数値はＩＩＤを示す。列ブロックＣＢ０に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍した値であり、列ブロックＣＢ２に対応に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して１を加えた値である。列ブロックＣＢ２に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して２を加えた値であり、列ブロックＣＢ３に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して３を加えた値である。
【０１０３】
図１０に示すＣＳＥ２４０では、デコードスロットＤＳ０がデコードした命令の命令データＤは、列ブロックＣＢ０に格納され、デコードスロットＤＳ１がデコードした命令の命令データＤは、列ブロックＣＢ１に格納される。デコードスロットＤＳ２がデコードした命令の命令データＤは、列ブロックＣＢ２に格納され、デコードスロットＤＳ３がデコードした命令の命令データＤは、列ブロックＣＢ３に格納される。これにより、例えば、デコードスロットＤＳ０がデコードした命令データＤは、列ブロックＣＢ１−ＣＢ３には格納されないため、命令データＤを転送する転送経路（配線）の数を減らすことができ、回路規模を抑えることができる。
【０１０４】
図１１は、図８のＣＳＥ２４０および図９のＣＳＥ２４２に格納される命令データＤ等の割り当ての一例を示す。図１１は、演算処理装置１０２の制御方法の一例を示す。表中の数値はＩＩＤを示す。この実施形態では、デコードスロットＤＳ０−ＤＳ３の各々のデコードにより生成された命令データＤが、列ブロックＣＢ０−ＣＢ３の各々に格納される。なお、命令デコード部１６は、演算器４０、４２等に通知するためにＩＩＤを生成するが、ＣＳＥ２４０にはＩＩＤを通知せず、ＩＩＤの代わりにグループ番号ＧＩＤを通知する。
【０１０５】
ＣＳＥ２４０への命令データＤの割り当ては、命令デコード部１６によりＤサイクルに実行され、割り当てに基づいて、ＤＴサイクルでＣＳＥに格納される。例えば、第１サイクルにおいて、命令デコード部１６は、命令をそれぞれデコードし、デコードにより得られた４つの命令データＤにグループ番号ＧＩＤ＝０をインオーダで割り当てる。これにより、デコードサイクル毎に最大で４つの命令にＩＩＤが割り当て可能である。
【０１０６】
第２サイクルにおいて、命令デコード部１６は、デコードにより得た３つの命令データＤにグループ番号ＧＩＤ＝１を割り当てる。一方、デコードスロットＤＳ３には命令が割り当てられないため、デコードは保留される。命令が割り当てられない原因として、命令バッファ１４から命令が来ていない、あるいは、前の命令との依存関係により命令の発行が抑止される場合などがある。
【０１０７】
第３サイクルにおいて、命令デコード部１６は、第２サイクルで割り当てされなかった命令を含む４つの命令をインオーダでデコードし、デコードにより得られた４つの命令データＤにグループ番号ＧＩＤ＝２を割り当てる。この際、命令デコード部１６は、第２サイクルで割り当てられなかったＩＩＤ＝７を欠番とし、第３サイクルでは、ＩＩＤ＝８からＩＩＤ＝１１までを命令データＤにそれぞれ割り当てる。これにより、図１０で説明したように、各デコードスロットＤＳで割り当てるＩＩＤを、４の倍数＋所定の増分にすることができ、ＣＳＥ２４０、ＣＳＥ２４２に接続される配線の本数の増加および回路の増加を抑制することができる。
【０１０８】
第４サイクルにおいて、命令デコード部１６は、４つの命令にグループ番号ＧＩＤ＝３を割り当てる。また、命令デコード部１６は、命令に使用する資源の割り当てを待つなどにより、ＩＩＤ＝１４、１５に対応する命令の発行をできないため、括弧付きで示すように、これら命令の発行を保留し、グループ番号ＧＩＤを更新しない。
【０１０９】
第５サイクルにおいて、命令デコード部１６は、グループ番号ＧＩＤを”３”に維持したまま、第４サイクルで保留した命令（ＩＩＤ＝１４、１５に対応）を再デコードする。この際、命令デコード部１６は、第４サイクルと同じデコードスロットＤＳ２、３に、ＩＩＤ＝１４、１５を再度割り当てた命令をデコードする。
【０１１０】
すなわち、ＩＩＤ＝１４が割り当てられる命令は、デコードスロットＤＳ０ではなく、デコードスロットＤＳ２によりデコードされ、ＩＩＤ＝１５が割り当てられる命令は、デコードスロットＤＳ１ではなく、デコードスロットＤＳ３によりデコードされる。これにより、ＩＩＤ＝１４、１５が割り当てられた命令は、第３サイクルで格納されるはずであった列ブロックＣＢ２、ＣＢ３のエントリに格納される。したがって、例えば、デコードスロットＤＳ０から列ブロックＣＢ２に命令データＤを転送する配線と転送経路を切り替えるセレクタとを設けることなく、命令データＤをＣＳＥ２４０に格納することができる。この結果、ＣＳＥ２４０に接続される配線の本数の増加および回路の増加を抑制することができる。
【０１１１】
第６サイクルでは、第２サイクルと同様に、命令デコード部１６は、デコードにより得た３つの命令データＤにグループ番号ＧＩＤ＝４を割り当て、デコードスロットＤＳ３に対応するＩＩＤ＝１９を欠番にする。第７サイクルにおいても、第２サイクルと同様に、命令デコード部１６は、デコードにより得た２つの命令データＤにグループ番号ＧＩＤ＝５を割り当て、デコードスロットＤＳ０、３に対応するＩＩＤ＝２０、２３を欠番にする。第８サイクルは、第２サイクルと同様である。
【０１１２】
なお、ＣＳＥ２４２への完了報告ＣＯＭＰおよびデータＥＤ等の割り当ては、演算器４０等からのＩＩＤおよび完了報告ＣＯＭＰに基づいて、命令毎に実行されることを除き、ＣＳＥ２４０に対する割り当てと同様である。
【０１１３】
図１２は、図８および図９のＣＳＥ−ＷＩＮＤＯＷ２６０に格納される命令データＤ等の割り当ての一例を示す。図１２は、演算処理装置１０２の制御方法の一例を示す。表中の数値はＩＩＤを示す。表中の符号（Ｃ）は、対応する命令の完了報告が発行された状態（コミット状態）を示し、符号（Ｃ）がないものは、対応する命令の完了報告が発行されていないことを示す。グループコミットの欄の”Ｃ”は、１つのグループ番号ＧＩＤに対応して、ＣＳＥ−ＷＩＮＤＯＷ２６０に格納された全ての命令データＤがコミットしたことを示す。ＣＳＥ−ＷＩＮＤＯＷ２６０に格納された命令のコミットは、命令完了制御部２２によりＣサイクルに実行される。
【０１１４】
この実施形態では、ＤＴサイクルでＣＳＥ２４０に格納された命令データＤ等に割り当てられたＩＩＤが、ＣＳＥ−ＷＩＮＤＯＷ２６０のＩＩＤの割り当てにそのまま引き継がれる。すなわち、図１２に示す割り当ては、図１１に示す割り当てと同じである。
【０１１５】
第１サイクルにおいて、グループ番号ＧＩＤ＝０の各命令は、コミットされ、グループ０のコミットが成立する。このため、グループ番号ＧＩＤ＝１が割り当てられた３つの命令データＤ等がＣＳＥ２４０からＣＳＥ−ＷＩＮＤＯＷ２６０に格納される。
【０１１６】
第２サイクルにおいて、グループ番号ＧＩＤ＝１の各命令は、コミットされ、グループ１のコミットが成立する。このため、グループ番号ＧＩＤ＝２が割り当てられた４つの命令データＤ等がＣＳＥ２４０からＣＳＥ−ＷＩＮＤＯＷ２６０に格納される。
【０１１７】
第３サイクルにおいて、グループ番号ＧＩＤ＝２の命令のうち、ＩＩＤ＝８、９に対応する２つの命令がコミットされるが、ＩＩＤ＝１０、１１に対応する２つの命令はコミットされないため、グループ２のコミットが成立しない。このため、図８に示した命令完了判定部２７０は、グループ番号ＧＩＤを更新せず、ＩＩＤ＝１０、１１に対応する２つの命令がコミットされるのを待つ。
【０１１８】
第４サイクルにおいて、ＩＩＤ＝１０、１１に対応する２つの命令がコミットされ、グループ２のコミットが成立する。このため、グループ番号ＧＩＤ＝３が割り当てられた４つの命令データＤ等がＣＳＥ２４０からＣＳＥ−ＷＩＮＤＯＷ２６０に格納される。この後、第１サイクルまたは第３サイクルと同様に、第５サイクル以降の割り当てが実行される。
【０１１９】
第３および第４サイクルに示すように、命令完了制御部２２は、グループ番号ＧＩＤに対応するＩＩＤが割り当てられた命令のいずれかがコミットしない場合、グループ番号ＧＩＤを更新せずにコミットしなかった命令のコミットの判定を次のサイクルで実行する。これにより、ＩＩＤ＝”１０”、”１１”に対応する命令データＤをＣＳＥ−ＷＩＮＤＯＷ２６０に再セットすることなく、コミットの判定処理を実行することができ、ＣＳＥ−ＷＩＮＤＯＷ２６０へのセット動作を簡易に実行することができる。
【０１２０】
図１２においても、各デコードスロットで割り当てるＩＩＤを、４の倍数＋所定の増分にすることで、ＣＳＥ２４０とＣＳＥ−ＷＩＮＤＯＷ２６０との間に接続される配線の本数の増加および回路の増加を抑制することができる。
【０１２１】
図１３は、グループコミットが成立しない場合に、コミットされた命令に対応するＣＳＥ−ＷＩＮＤＯＷ２６０内の情報を無効にする回路の一例を示す。図１３は、ＣＳＥ２４２に対応するＣＳＥ−ＷＩＮＤＯＷ２６０を示す。
【０１２２】
例えば、ＣＳＥ−ＷＩＮＤＯＷ２６０に格納する情報が有効か無効かを示すバリッドフラグＶ（論理１が有効を示す）は、アンド回路ＡＮＤを介してＣＳＥ−ＷＩＮＤＯＷ２６０に格納される。ＣＳＥ−ＷＩＮＤＯＷ２６０に格納されたバリッドフラグＶの論理は、インバータＩＶを介して反転され、アンド回路ＡＮＤに伝達される。このため、ＣＳＥ−ＷＩＮＤＯＷ２６０にバリッドフラグＶ（＝論理１）が一度セットされた後、ＣＳＥ−ＷＩＮＤＯＷ２６０のバリッドフラグＶは論理０に維持される。
【０１２３】
これにより、ＣＳＥ−ＷＩＮＤＯＷ２６０に保持された複数の命令データＤ等のいくつかがコミットされずに残った場合、先にコミットした命令データＤ等が再びコミットされることを抑止することができる。例えば、図１２の第４サイクルにおいて、第３サイクルで先にコミットした２つの命令が再びコミットされることを抑止することができ、演算処理装置１０２の誤動作を抑止することができる。
【０１２４】
図１４は、命令のデコードに基づいてＣＳＥ−ＷＩＮＤＯＷ２６０をセットする動作の一例を示す。図１４は、演算処理装置１０２の制御方法の一例を示す。図１４に示すフローは、図８の命令完了判定部２７０等により繰り返し実行される。なお、命令の完了報告に基づいてＣＳＥ−ＷＩＮＤＯＷ２６０をセットする動作の例は、図１５に示される。
【０１２５】
まず、ステップＳ１０において、図８の選択信号生成部２７２は、グループ番号ＣＧＩＤに”１”を加えたグループ番号を生成する。グループ番号は、ＣＳＥ２４０から次に読み出す命令データＤ等が保持されたエントリを示す。次に、ステップＳ１２において、選択信号生成部２７２は、ステップＳ１０で生成したグループ番号をデコードして、ネクストグループ選択信号ＮＧＳＥＬ０−３１のいずれか１つを有効レベルに設定する。
【０１２６】
次に、ステップＳ１４において、命令完了判定部２７０は、有効レベルに設定されたネクストグループ選択信号ＮＧＳＥＬに基づいて、次のグループ番号ＧＩＤの命令データＤ等をセレクタ２４５に選択させる。次に、ステップＳ１６において、図８のコミット判定部２７１は、グループコミットが成立した場合、動作をステップＳ２０に移行する。一方、グループコミットが成立しない場合、すなわち、ＣＳＥ−ＷＩＮＤＯＷ２６０にセットされた命令データＤに対応する命令のいずれかが実行を完了していない場合、動作をステップＳ１８に移行する。例えば、図１２に示す第１サイクル、第２サイクル、第４サイクル、第５サイクル、第７サイクル、第８サイクルでは、そのサイクルでグループコミットが成立するため、動作はステップＳ２０に移行される。図１３に示す第３サイクル、第６サイクル、第９サイクルでは、そのサイクルではグループコミットが成立しないため、動作はステップＳ１８に移行する。
【０１２７】
ステップＳ１８において、図１３に示すインバータＩＶおよびアンド回路ＡＮＤは、コミットが成立した命令に対応してＣＳＥ−ＷＩＮＤＯＷ２６０に保持されたバリッドフラグＶを無効状態（論理０）に設定し、動作をステップＳ１６に戻す。例えば、図１２に示す第３サイクルでは、ＩＩＤ＝８、９に対応する命令はコミットされるため、ＩＩＤ＝８、９に対応する命令データＤ等は、無効状態に設定される。ステップＳ１８では、グループ番号ＧＩＤは更新されず、ＣＳＥ２４０からＣＳＥ−ＷＩＮＤＯＷ２６０への命令データＤの転送は抑止される。
【０１２８】
グループコミットが成立した場合、ステップＳ２０において、コミット判定部２７１は、ＣＳＥ２４０に対応するＣＳＥ−ＷＩＮＤＯＷ２６０に出力するグループコミット信号ＧＣＭＴを生成する。これにより、セレクタ部２４５Ｄが選択している次のグループ番号ＧＩＤの命令データＤがＣＳＥ−ＷＩＮＤＯＷ２６０にセットされる。すなわち、グループコミットが成立した場合、ＣＳＥ−ＷＩＮＤＯＷ２６０にセットする命令データＤに対応するグループ番号ＧＩＤが更新される。
【０１２９】
次に、ステップＳ２２において、レジスタ２７３は、グループコミット信号ＧＣＭＴに基づいて、グループ番号ＣＧＩＤを更新し、次のグループ番号ＧＩＤを出力する。この後、動作は、ステップＳ１０に戻る。
【０１３０】
図１５は、命令の完了報告に基づいてＣＳＥ−ＷＩＮＤＯＷ２６０をセットする動作の一例を示す。図１５は、演算処理装置１０２の制御方法の一例を示す。図１５に示すフローは、図９の命令完了判定部２７０により繰り返し実行される。
【０１３１】
まず、ステップＳ３０において、図９の選択信号生成部２７４は、グループ番号ＣＧＩＤに”１”を加えたグループ番号を生成する。グループ番号は、ＣＳＥ２４２から次に読み出す完了報告ＣＯＭＰおよびデータＥＤが保持されたエントリを示す。ステップＳ３０の動作は、図１４のステップＳ１０の動作と同様である。
【０１３２】
次に、ステップＳ３２において、図９のコミット判定部２７１は、グループコミットが成立した場合、動作をステップＳ３４に移行し、グループコミットが成立しない場合、動作をステップＳ４２に移行する。ステップＳ３２の動作は、図１４のステップＳ１６の動作と同様である。
【０１３３】
ステップＳ３４において、選択信号生成部２７４は、ステップＳ３０で生成したグループ番号をデコードして、グループ選択信号ＧＳＥＬＥ０−３１のいずれか１つを有効レベルに設定する。ステップＳ３４の動作は、図１４のステップＳ１２の動作と同様である。
【０１３４】
次に、ステップＳ３６において、命令完了判定部２７０は、有効レベルに設定されたグループ選択信号ＧＳＥＬＥに基づいて、次のグループ番号ＧＩＤの完了報告ＣＯＭＰおよびデータＥＤ等をセレクタ部２４５Ｅに選択させる。ステップＳ３６の動作は、図１４のステップＳ１４の動作と同様である。
【０１３５】
次に、ステップＳ３８において、ＣＳＥ２４２に対応するＣＳＥ−ＷＩＮＤＯＷ２６０は、オア部２５２Ｂが出力する完了報告ＣＯＭＰおよびデータＥＤをセットする。次に、ステップＳ４０において、レジスタ２７３は、図１４のステップＳ２０で生成されるグループコミット信号ＧＣＭＴに基づいて、グループ番号ＣＧＩＤを更新し、次のグループ番号ＧＩＤを出力する。この後、動作は、ステップＳ３０に戻る。なお、ステップＳ４０の動作は、説明を分かりやすくするために、図８のステップＳ２２の動作を重複して示したものであり、図８のステップＳ２２と図９のステップＳ４０がそれぞれ実行されるものではない。
【０１３６】
一方、グループコミットが成立しない場合、ステップＳ４２において、選択信号生成部２７４は、現在のＣＧＩＤをデコードして、グループ選択信号ＧＳＥＬ０−３１のいずれか１つを有効レベルに設定する。すなわち、ＣＧＩＤ（ＧＩＤ）は更新されない。次に、ステップＳ４４において、命令完了判定部２７０は、有効レベルに設定されたグループ選択信号ＧＳＥＬに基づいて、現在のグループ番号ＧＩＤの完了報告ＣＯＭＰおよびデータＥＤ等をセレクタ部２４５Ｅに選択させる。
【０１３７】
次に、ステップＳ４６において、ＣＳＥ２４２に対応するＣＳＥ−ＷＩＮＤＯＷ２６０は、オア部２５２Ｂが出力する完了報告ＣＯＭＰおよびデータＥＤをセットする。これにより、各列ブロックＣＢ０−ＣＢ３に対応して、新たに発生する完了報告ＣＯＭＰをＣＳＥ２４２からＣＳＥ−ＷＩＮＤＯＷ２６０にセットすることができる。この際、４つのセレクタ２４６Ｅに共通のグループ選択信号ＧＳＥＬ０−３１を用いることで、完了報告ＣＯＭＰをＣＳＥ−ＷＩＮＤＯＷ２６０にセットする回路を、後述する図１６に示す回路に比べて簡易な構成にすることができる。次に、ステップＳ４８において、レジスタ２７３は、グループコミット信号ＧＣＭＴを受けないため、グループ番号ＣＧＩＤを更新することなく、動作をステップＳ３０に戻す。
【０１３８】
図１６は、他の命令完了制御部におけるＣＳＥ２４０とその関連回路との一例を示す。図８と同一または同様の構成については、同じ符号を付し、詳細な説明は省略する。
【０１３９】
図１６に示す命令完了制御部は、ラッチ部２５１、デコーダ２５５、セレクタ部２５６、ＣＳＥ２４０、セレクタ部２４７Ｄ、ＣＳＥ−ＷＩＮＤＯＷ２６０、命令完了処理部２８０および命令完了判定部２７５を有する。ＣＳＥ２４０、ＣＳＥ−ＷＩＮＤＯＷ２６０および命令完了処理部２８０は、図９と同じである。
【０１４０】
ラッチ部２５１は、命令デコード部１６から受信するＩＩＤをラッチする回路が追加されたことを除き、図８に示すラッチ部２５０と同様である。以下では、ラッチ部２５１に含まれるラッチは、ラッチ２５１とも称される。各デコーダ２５５は、リリースフラグＲＥＬが有効な場合、ＩＩＤをデコードして命令データＤを格納するＣＳＥ２４０のエントリを決定する。各デコーダ２５５は、決定したエントリに命令データＤを格納するための選択信号ＤＳＥＬ（ＤＳＥＬ０−ＤＳＥＬ３）およびＥＳＥＬ（ＥＳＥＬ０−ＥＳＥＬ１２７）を生成する。
【０１４１】
各デコーダ２５５が生成する選択信号ＤＳＥＬ０−ＤＳＥＬ３の各々は、セレクタ部２５６の４つのセレクタ２５７（２５７０−２５７３）のいずれかに供給される。例えば、各セレクタ２５７は、各デコーダ２５５から出力される４つの選択信号ＤＳＥＬをオア回路で受け、オア回路が出力する選択信号ＤＳＥＬに基づいて、命令データＤ０−Ｄ３のいずれかを選択する。
【０１４２】
各デコーダ２５５が生成する選択信号ＥＳＥＬ０−１２７は、３２本ずつ列ブロックＣＢ０−ＣＢ３のそれぞれに供給される。選択信号ＥＳＥＬ０−１２７は、ＩＩＤ番号に対応しており、ＣＳＥ２４０の１２８個のエントリをそれぞれ対応する。各列ブロックＣＢ０−ＣＢ３は、各デコーダ２５５から出力される４つの選択信号ＥＳＥＬをオア回路で受け、オア回路が出力する選択信号ＥＳＥＬに基づいてクロックイネーブル信号ＣＬＫＥＮを生成する。４つの選択信号ＥＳＥＬは、末尾の数字が同じ選択信号ＥＳＥＬ（例えば、４つのＥＳＥＬ０）である。そして、生成したクロックイネーブル信号ＣＬＫＥＮに対応するエントリにクロック信号が供給され、命令データＤ０−Ｄ３のいずれかがクロック信号に同期して選択信号ＥＳＥＬが示すエントリに格納される。
【０１４３】
例えば、命令データＤ０を出力するデコードスロットＤＳ０（図６）に対応するラッチ２５１が、命令データＤ０とＩＩＤ＝”０”をラッチした場合、セレクタ２５７０は、選択信号ＤＳＥＬ０に基づいて命令データＤ０を選択する。列ブロックＣＢ０は、選択信号ＥＳＥＬ０に基づいて、セレクタ２５７０が選択した命令データＤ０を、ＩＩＤ＝”０”が割り当てられたエントリに格納する。
【０１４４】
また、命令データＤ０を出力するデコードスロットＤＳ０に対応するラッチ２５１が、命令データＤ０とＩＩＤ＝”２”をラッチした場合、セレクタ２５７２は、選択信号ＤＳＥＬ２に基づいて命令データＤ０を選択する。列ブロックＣＢ２は、選択信号ＥＳＥＬ２に基づいて、セレクタ２５７２が選択した命令データＤ０を、ＩＩＤ＝”２”が割り当てられたエントリに格納する。
【０１４５】
同様に、命令データＤ３を出力するデコードスロットＤＳ３に対応するラッチ２５１が、命令データＤ３とＩＩＤ＝”８”をラッチした場合、セレクタ２５７０は、選択信号ＤＳＥＬ３に基づいて命令データＤ３を選択する。列ブロックＣＢ０は、選択信号ＥＳＥＬ１２４に基づいて、セレクタ２５７０が選択した命令データＤ３を、ＩＩＤ＝”８”が割り当てられたエントリに格納する。
【０１４６】
このように、図１６では、デコードスロットＤＳ０−ＤＳ３が出力する命令データＤが、列ブロックＣＢ０−ＣＢ３のいずれにも格納可能である。このため、ラッチ２５１から格納先の列ブロックＣＢ０−ＣＢ３までに命令データＤを転送するために”（１２８＋４）×４”本の選択信号の配線が設けられる。また、例えば、数十ビットの各命令データＤ０−Ｄ３を４つのセレクタ２５７に接続するための配線が設けられる。さらに、デコーダ２５５とセレクタ２５７が設けられる。このため、命令データＤ０をＣＳＥ２４０に格納するための回路規模は、図８に比べて大きくなる。
【０１４７】
命令完了判定部２７５は、選択信号生成部２７６およびＩＩＤ（ＣＩＤＤ）を保持するレジスタ２７７を有する。選択信号生成部２７６は、４つのＣＳＥ−ＷＩＮＤＯＷ２６０からコミット信号ＣＭＴを受信し、受信したコミット信号ＣＭＴの数に対応する増分を示す更新信号ＵＰＤをレジスタ２７７に出力し、レジスタ２７７により更新されたＣＩＤＤを受信する。選択信号生成部２７６は、更新されたＣＩＤＤに基づいて、次に、ＣＳＥ−ＷＩＮＤＯＷ２６０にセットする命令データＤを選択するための選択信号ＩＩＤＳＥＬ（ＩＩＤＳＥＬ０−ＩＩＤＳＥＬ５１１）を生成する。５１２本の選択信号ＩＩＤＳＥＬは、１２８本ずつ各セレクタ２４８Ｄに供給される。これにより、連続する任意の４つのＩＩＤに対応する命令データＤを４つのＣＳＥ−ＷＩＮＤＯＷ２６０に格納することが可能になる。
【０１４８】
例えば、レジスタ２７７がＣＩＤＤ＝”２”を出力する場合、選択信号生成部２７６は、列ブロックＣＢ２のＩＩＤ＝”２”が割り当てられたエントリを左から１番目のセレクタ２４８Ｄに選択させる選択信号ＩＩＤＳＥＬを生成する。選択信号生成部２７６は、列ブロックＣＢ３のＩＩＤ＝”３”が割り当てられたエントリを左から２番目のセレクタ２４８Ｄに選択させる選択信号ＩＩＤＳＥＬを生成する。選択信号生成部２７６は、列ブロックＣＢ０のＩＩＤ＝”４”が割り当てられたエントリを左から３番目のセレクタ２４８Ｄに選択させる選択信号ＩＩＤＳＥＬを生成する。そして、選択信号生成部２７６は、列ブロックＣＢ１のＩＩＤ＝”５”が割り当てられたエントリを左から４番目のセレクタ２４８Ｄに選択させる選択信号ＩＩＤＳＥＬを生成する。
【０１４９】
図１６では、５１２本の選択信号ＩＩＤＳＥＬの配線が設けられ、各列ブロックＣＢ０−ＣＢ３の各エントリから４つのセレクタ２４８Ｄに数十ビットの命令データＤを転送するための配線が設けられる。これにより、ＣＳＥ２４０の各エントリが保持する命令データＤを４つのＣＳＥ−ＷＩＮＤＯＷ２６０のいずれにも格納可能になる。しかし、命令データＤ０をＣＳＥ−ＷＩＮＤＯＷ２６０に読み出すための回路規模は、図８に比べて大きくなる。
【０１５０】
換言すれば、図８では、列ブロックＣＢ０−ＣＢ３がデコードスロットＤＳ０−ＤＳ３に対応して設けられ、ＩＩＤの欠番を許可するため、各デコードスロットＤＳ０−ＤＳ３は、４の倍数＋所定の増分のＩＩＤのみを生成すればよい。このため、命令データＤを任意の列ブロックＣＢ０−ＣＢ３に格納し、取り出す配線が不要になるため、命令完了制御部２２の回路規模を図１６に比べて削減することができる。
【０１５１】
図１７は、他の命令完了制御部におけるＣＳＥ２４２とその関連回路との一例を示す。図９と同一または同様の構成については、同じ符号を付し、詳細な説明は省略する。
【０１５２】
図１７に示す命令完了制御部は、ラッチ部２５３、デコーダ２５４、ＩＩＤマッチ部２５３Ａ、ＣＳＥ２４２、セレクタ部２４７Ｅ、オア部２５２Ｂ、命令完了判定部２７５、ＣＳＥ−ＷＩＮＤＯＷ２６０および命令完了処理部２８０を有する。ＣＳＥ−ＷＩＮＤＯＷ２６０、命令完了処理部２８０および命令完了判定部２７５は、図１６と共通の回路である。
【０１５３】
ラッチ部２５３、デコーダ２５４、ＣＳＥ２４２、オア部２５２ＢおよびＣＳＥ−ＷＩＮＤＯＷ２６０は、図９と同じである。ＩＩＤマッチ部２５３Ａは、レジスタ２７７から受けるＣＩＩＤ（ＣＩＩＤ、ＣＩＩＤ＋１、ＣＩＩＤ＋２、ＣＩＩＤ＋３）の各々をＥＩＤＤと比較することを除き、図９に示すＩＩＤマッチ部２５２Ａと同じ機能を有する。ＩＩＤマッチ部２５３Ａは、ＥＩＩＤと一致するＣＩＩＤがある場合、バイパス経路ＢＹＰＳを介して、一致したＣＩＩＤに対応するオア部２５２Ｂに完了報告ＣＯＭＰとデータＥＤとを出力する。セレクタ２４８Ｅは、選択するビット数が異なることを除き図１６に示すセレクタ２４８Ｄと同じ機能を有する。
【０１５４】
図１７においても、図１６と同様に、ＣＳＥ２４２の各エントリが保持する完了報告ＣＯＭＰおよびデータＥＤを４つのＣＳＥ−ＷＩＮＤＯＷ２６０のいずれにも格納可能にするために、５１２本の選択信号ＩＩＤＳＥＬの配線が設けられる。また、各列ブロックＣＢ０−ＣＢ３の各エントリから４つのセレクタ２４８Ｅに完了報告ＣＯＭＰおよびデータＥＤを転送するための配線が設けられる。このため、命令データＤ０をＣＳＥ−ＷＩＮＤＯＷ２６０に読み出すための回路規模は、図９に比べて大きくなる。換言すれば、図９では、任意の列ブロックＣＢ０−ＣＢ３に格納された完了報告ＣＯＭＰおよびデータＥＤを任意のＣＳＥ−ＷＩＮＤＯＷ２６０に取り出す配線が不要になるため、命令完了制御部２２の回路規模を図１７に比べて削減することができる。
【０１５５】
図１８は、図１６のＣＳＥ２４０および図１７のＣＳＥ２４２に格納される命令データＤ等の割り当ての一例を示す。図１１と同様の割り当てについては、詳細な説明は省略される。表中の数値はＩＩＤを示し、表中の括弧内は命令Ｄが割り当てられる列ブロックＣＢ０−ＣＢ３を示す。
【０１５６】
第１サイクルおよび第２サイクルの割り当ては図１１の第１サイクルおよび第２サイクルの割り当てと同様である。図１８ではＩＩＤの欠番はないため、第３サイクルにおいて、”７”から”１０”のＩＩＤに対応するエントリに命令データＤ等がインオーダで割り当てられる。例えば、デコードスロットＤＳ０による命令データＤは、列ブロックＣＢ３に格納され、デコードスロットＤＳ１による命令データＤは、列ブロックＣＢ０に格納される。
【０１５７】
第４サイクルでも、第３サイクルと同様に、デコードスロットＤＳ０による命令データＤは、列ブロックＣＢ３に格納され、デコードスロットＤＳ１により生成された命令データＤは、列ブロックＣＢ０に格納される。第４サイクルでは、ＩＩＤ＝”１３”、”１４”に割り当てられた命令データＤは、第４サイクルで発行できなかったため、第５サイクルで再度割り当てられる。この場合、第５サイクルでは、ＩＩＤ＝”１３”、”１４”に割り当てられた命令データＤは、デコードスロットＤＳ０、ＤＳ１によりデコードされる。
【０１５８】
この後、第６サイクルから第８サイクルにおいても、ＩＩＤが欠番されることなく、命令データＤがインオーダで割り当てられる。
【０１５９】
図１６および図１７に示す命令完了制御部では、デコードスロットＤＳと列ブロックＣＢとが対応していない。このため、デコードスロットＤＳにより生成された命令データＤは、例えば、表中のデコードスロットＤＳ０の列に示すように、列ブロックＣＢ０だけでなく、列ブロックＣＢ１−ＣＢ３にも割り当てられる。これにより、図１６に示すように、セレクタ部２５６部および多数の配線等が設けられる。
【０１６０】
なお、ＣＳＥ２４２への完了報告ＣＯＭＰおよびデータＥＤ等の割り当ては、演算器４０等からのＩＩＤおよび完了報告ＣＯＭＰに基づいて、命令毎に実行されることを除き、ＣＳＥ２４０に対する割り当てと同様である。
【０１６１】
図１９は、図１６および図１７のＣＳＥ−ＷＩＮＤＯＷ２６０に格納される命令データＤ等の割り当ての一例を示す。図１２と同様の割り当てについては、詳細な説明は省略される。表中の左側の数値はＩＩＤを示し、表中の括弧内は命令Ｄが割り当てられた列ブロックＣＢ０−ＣＢ３を示す。表中の右側の”Ｃ”は、対応する命令の完了報告が発行された状態（コミット状態）を示し、”Ｃ”がないものは、対応する命令の完了報告が発行されていないことを示す。
【０１６２】
第１サイクルの割り当ては図１２の第１サイクルの割り当てと同様である。第２サイクルでは、ＩＩＤ＝”７”に対応する命令は、コミット状態であるが、ＩＩＤ＝”６”に対応する命令がコミット状態でないため、コミットされない。この場合、第３サイクルにおいて、ＩＩＤ＝”６”から”９”に対応する命令が４つのＣＳＥ−ＷＩＮＤＯＷ２６０に割り当てられる。
【０１６３】
第３サイクルでは、ＩＩＤ＝”９”に対応する命令がコミット状態でないため、第４サイクルにおいて、ＩＩＤ＝”９”から”１２”に対応する命令が４つのＣＳＥ−ＷＩＮＤＯＷ２６０に割り当てられる。
【０１６４】
図１９では、４つのＣＳＥ−ＷＩＮＤＯＷ２６０の全てに命令データＤ等が順次インオーダで割り当てられるため、図１８と同様に、各ＣＳＥ−ＷＩＮＤＯＷ２６０には、全ての列ブロックＣＢ０−ＣＢ３に保持された命令データＤ等がセットされる可能性がある。したがって、図１６および図１７に示すように、多数の配線およびセレクタ部２５６部等が設けられる。
【０１６５】
以上、図３から図１５に示す実施形態においても、図１および図２に示す実施形態と同様に、ＣＳＥ２４０、ＣＳＥ２４２の入力側と出力側に切り替え部および配線を設けなくてよいため、演算処理装置１０２の回路規模の増大を抑制することができる。
【０１６６】
さらに、図３から図１５に示す実施形態では、ＧＩＤを用いてＣＳＥ２４０のエントリを選択できるため、ＩＩＤを用いる場合に比べてグループデコード部２４３の回路規模を削減することができる。
【０１６７】
図１２の第３および第４サイクルに示すように、グループ番号ＧＩＤに対応するＩＩＤが割り当てられた命令のいずれかがコミットしない場合、グループ番号ＧＩＤを更新せずにコミットしなかった命令のコミットの判定が次のサイクルで実行される。これにより、ＩＩＤ＝”１０”、”１１”に対応する命令データＤをＣＳＥ−ＷＩＮＤＯＷ２６０に再セットすることなく、コミットの判定処理を実行することができ、ＣＳＥ−ＷＩＮＤＯＷ２６０へのセット動作を簡易に実行することができる。
【０１６８】
図８に示すＣＳＥ２４０への命令データＤの格納をＧＩＤに基づいて実行する場合にも、ＣＳＥ２４２への完了報告ＣＯＭＰの格納は、ＩＩＤに基づいて実行される。これにより、命令デコード部１６は、演算器４０、４２等にＧＩＤを発行せずに、ＩＩＤを発行することができ、リザベーションステーション２０を含む既存の回路を利用して演算処理装置１０２を設計することができる。
【０１６９】
グループコミットが成立しない場合、４つのセレクタ２４６Ｅに共通のグループ選択信号ＧＳＥＬ０−３１を用いて、新たに発生する完了報告ＣＯＭＰをＣＳＥ−ＷＩＮＤＯＷ２６０にセットすることができる。これにより、完了報告ＣＯＭＰをＣＳＥ−ＷＩＮＤＯＷ２６０にセットする回路を、図１６に示す回路に比べて簡易な構成にすることができる。
【０１７０】
ＩＩＤマッチ部２５２Ａを設けることで、完了報告ＣＯＭＰおよびデータＥＤのバイパス機能を実現することができ、列ブロックＣＢ０−ＣＢ３からの完了報告ＣＯＭＰを待つことなく完了処理を開始することができる。
【０１７１】
セレクタ２４６Ｄを列ブロックＣＢの各々に対応して設けることで、各セレクタ２４６Ｄは、他の列ブロックＣＢに保持された命令データＤを選択しなくてよい。このため、各セレクタ２４６Ｄの回路規模および各セレクタ２４６Ｄに接続される配線の数を抑えることができる。
【０１７２】
命令完了制御部２２は、グループ番号ＧＩＤに対応するＩＩＤが割り当てられた命令のいずれかがコミットしない場合、グループ番号ＧＩＤを更新せずにコミットしなかった命令のコミットの判定を次のサイクルで実行する。これにより、コミットしなかった命令データＤをＣＳＥ−ＷＩＮＤＯＷ２６０に再セットすることなく、コミットの判定処理を実行することができ、ＣＳＥ−ＷＩＮＤＯＷ２６０へのセット動作を簡易に実行することができる。
【０１７３】
命令に割り当てられなかったＩＩＤを欠番とすることで、デコードスロットＤＳ毎に割り当てられるＩＩＤを、重複することなく決めることができる。この結果、ＣＳＥ２４０、ＣＳＥ２４２に接続される配線の本数の増加および回路の増加を抑制することができる。
【０１７４】
図２０は、別の実施形態における演算処理装置に含まれるＣＳＥ２４２とその関連回路との一例を示す。図２０では、図９のデコーダ２５４の代わりに、デコーダ２５４Ａ、アンド部２５４Ｂおよびオア部２５４Ｃが設けられる。演算処理装置のその他の構成および機能は、図３から図１５に示す構成および機能と同様である。すなわち、ＣＳＥ２４２に情報を格納する回路構成が、図３に示す演算処理装置１０２と相違する。
【０１７５】
この実施形態では、ラッチ部２５３に取り込まれた完了報告ＣＯＭＰおよびデータＥＤは、クロックイネーブル信号ＣＬＫＥＮによる制御を使用せずに、各列ブロックＣＢ０−ＣＢ３のエントリに格納される。
【０１７６】
デコーダ２５４Ａは、ラッチ部２５３に保持された完了報告ＣＯＭＰとＥＩＩＤに基づいて、１２８個のエントリのいずれかを選択する選択信号ＤＳＥＬ（ＤＳＥＬ０−ＤＳＥＬ１２７）の１つを有効レベルに設定する。アンド部２５４Ｂには、各選択信号ＤＳＥＬに対応して、完了報告ＣＯＭＰ用とデータＥＤ用のアンド回路が設けられ、オア部２５４Ｃには、各選択信号ＤＳＥＬに対応して、完了報告ＣＯＭＰ用とデータＥＤ用のオア回路が設けられる。
【０１７７】
各アンド回路は、対応する選択信号ＤＳＥＬが有効レベルの場合、完了報告ＣＯＭＰまたはデータＥＤをオア回路に出力する。オア回路は、アンド回路から完了報告ＣＯＭＰまたはデータＥＤを受けた場合、受けた完了報告ＣＯＭＰまたはデータＥＤを、対応するエントリに格納する。また、オア回路は、アンド回路から完了報告ＣＯＭＰまたはデータＥＤのいずれも受けない場合、対応するエントリが出力する完了報告ＣＯＭＰまたはデータＥＤを、対応するエントリにループバックする。
【０１７８】
図２０に示す構成では、ＣＳＥ２４２の１つのエントリに対して、回路遅延や配線遅延などの要因により、完了報告ＣＯＭＰおよびデータＥＤを複数のサイクルでばらばらに受信した場合にも、先に受信した情報を失うことなくエントリに保持し続けることができる。
【０１７９】
図２１は、別の実施形態における演算処理装置に含まれるＣＳＥ（コミットスタックエントリ）の一例を示す。ＣＳＥは、図８に示すＣＳＥ２４０および図９に示すＣＳＥ２４２のそれぞれに対応する。図２１に示すＣＳＥを含む演算処理装置の命令デコード部は、６つのデコードスロットＤＳ０−ＤＳ５を有する。すなわち、図２１に示すＣＳＥを含む演算処理装置は、例えば、スーパースカラ方式のプロセッサである。ＣＳＥおよびデコードスロットＤＳ０−ＤＳ５以外の演算処理装置の構成および機能は、図３から図１５と同様である。
【０１８０】
ＣＳＥは、各々が４０個のエントリを含む６個の列ブロックＣＢ０−ＣＢ５を有し、合計で２４０個のエントリを有する。各エントリ内の左側の数値はＩＩＤを示し、括弧内の数値は、２進数でのＩＩＤを示す。ＣＳＥへのＩＩＤの割り当ては、列ブロックＣＢ６、ＣＢ７があると仮定して行われる。すなわち、列ブロックＣＢ６、ＣＢ７に割り当てられるべきＩＩＤは欠番とされる。
【０１８１】
このように、命令デコード部１６が、２のｎ乗個（ｎは１以上の整数）でない３つ以上のデコードスロットＤＳを有する場合、エントリへのＩＩＤの割り当ては、デコードスロットＤＳの数を２のｎ乗個と仮定して実行される。そして、存在しないデコードスロットＤＳが命令をデコードしたと仮定した場合に命令に割り当てられるＩＩＤは欠番とされる。
【０１８２】
これにより、列ブロックＣＢ０に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍した値になり、列ブロックＣＢ２に対応に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して１を加えた値になる。列ブロックＣＢ２に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して２を加えた値になり、列ブロックＣＢ３に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して３を加えた値になる。列ブロックＣＢ４に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して４を加えた値になり、列ブロックＣＢ５に割り当てられるＩＩＤは、グループ番号ＧＩＤを４倍して５を加えた値になる。
【０１８３】
図２１に示すＣＳＥでは、デコードスロットＤＳ０がデコードした命令のデータは、列ブロックＣＢ０に格納され、デコードスロットＤＳ１がデコードした命令のデータは、列ブロックＣＢ１に格納される。デコードスロットＤＳ２がデコードした命令のデータは、列ブロックＣＢ２に格納され、デコードスロットＤＳ３がデコードした命令のデータは、列ブロックＣＢ３に格納される。デコードスロットＤＳ４がデコードした命令のデータは、列ブロックＣＢ４に格納され、デコードスロットＤＳ５がデコードした命令のデータは、列ブロックＣＢ５に格納される。
【０１８４】
このように、デコードスロットＤＳの数が２のべき乗でない場合、デコードスロットＤＳが２のべき乗個あると仮定し、各列ブロックＣＢのエントリにＩＩＤを割り当てることで、ＧＩＤを、例えば、ＩＩＤの上位６ビットと一致させることができる。これにより、ＩＩＤ用のデコーダを設けることなく、ＧＩＤを用いて命令データＤ等を格納するエントリを決定することができる。この結果、ＣＳＥに命令データＤ等を格納するための配線および回路と、ＣＳＥからＣＳＥ−ＷＩＮＤＯＷに命令データＤ等を転送するための配線および回路とを削減することができる。また、列ブロックＣＢの番号は、ＩＩＤの下位３ビットと一致するため、ＩＩＤから列ブロックＣＢの番号を特定することができる。
【０１８５】
図２２は、他の演算処理装置に含まれるＣＳＥ（コミットスタックエントリ）の一例を示す。ＣＳＥは、図８に示すＣＳＥ２４０および図９に示すＣＳＥ２４２のそれぞれに対応する。図２２に示すＣＳＥを含む演算処理装置の命令デコード部は、６つのデコードスロットＤＳ０−ＤＳ５を有する。
【０１８６】
ＣＳＥの構成は、ＩＩＤの割り当てが異なることを除き、図２１に示すＣＳＥの構成と同じである。図２２では、ＩＩＤに欠番はないため、列ブロックＣＢ０から列ブロックＣＢ５にかけて番号が１つずつ増加するＩＩＤが順次割り当てられる。この場合、ＩＩＤを用いて命令データＤ等を格納する列ブロックＣＢを求めるための専用のデコーダが設けられる。また、ＩＩＤを用いて命令データＤ等を格納するＧＩＤ（すなわち、エントリ）を求めるための専用のデコーダが設けられる。さらに、ＣＳＥの入力側と出力側とに、命令データＤ等を入力または出力するためのセレクタと多数の配線とが設けられる。この結果、図２２のＣＳＥの周辺に設けられる回路の規模は、図２１のＣＳＥの周辺に設けられる回路の規模より増大する。
【０１８７】
以上、図２１に示す実施形態では、命令デコード部１６が、２のｎ乗個（ｎは１以上の整数）でない数のデコードスロットＤＳを有する場合にも、ＩＩＤ用のデコーダを設けることなく、ＩＩＤを用いて命令データＤ等を格納するエントリを決定することができる。この結果、ＣＳＥに命令データＤ等を格納するための配線および回路と、ＣＳＥからＣＳＥ−ＷＩＮＤＯＷに命令データＤ等を転送するための配線および回路とを削減することができる。
【０１８８】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１８９】
１            命令デコード部
１ａ、１ｂ    デコーダ
２            命令実行部
３            命令完了制御部
４            命令保持部
４ａ、４ｂ    保持領域
１６          命令デコード部
２２          命令完了制御部
２４          ＣＳＥ
３６          オペランドアドレス生成部
４０、４２    演算器
１００、１０２  演算処理装置
１６１        デコード処理部
２０４        ＲＳＢＲ
２５２Ａ      ＩＩＤマッチ部
２６０        ＣＳＥ−ＷＩＮＤＯＷ
ＢＹＰＳ      配線
ＣＢ          列ブロック
ＣＯＭＰ      完了報告
Ｄ            命令データ
ＤＳ          デコードスロット
ＧＩＤ        グループ識別子、グループ番号
ＩＩＤ        命令識別子
ＩＩＮＦ      命令情報
ＩＮＳ        命令
【図１】
2020077334.tif 000003
【図２】
2020077334.tif 000004
【図３】
2020077334.tif 000005
【図４】
2020077334.tif 000006
【図５】
2020077334.tif 000007
【図６】
2020077334.tif 000008
【図７】
2020077334.tif 000009
【図８】
2020077334.tif 000010
【図９】
2020077334.tif 000011
【図１０】
2020077334.tif 000012
【図１１】
2020077334.tif 000013
【図１２】
2020077334.tif 000014
【図１３】
2020077334.tif 000015
【図１４】
2020077334.tif 000016
【図１５】
2020077334.tif 000017
【図１６】
2020077334.tif 000018
【図１７】
2020077334.tif 000019
【図１８】
2020077334.tif 000020
【図１９】
2020077334.tif 000021
【図２０】
2020077334.tif 000022
【図２１】
2020077334.tif 000023
【図２２】
2020077334.tif 000024