(57)【要約】【課題】ベクトルプロセッサのリネーミング制御において余計なデータの移送をせずに、レジスタ資源の利用効率を向上できる命令制御装置を提供する。【解決手段】命令を待機させるためのバッファと、ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる物理レジスタが割り当てられた論理レジスタに関して、次の書き込み先の物理レジスタがいずれであるのかを示す指示値と、物理レジスタごとにバッファに待機している命令の数を示す参照値とが保持される第１のテーブルと、論理レジスタが参照する物理レジスタの値をベクトルデータの要素ごとに保持する第２のテーブルと、リネーミングルールに従って、指示値と参照値との組合せによって決まる設定に基づいて第２のテーブルを更新するとともに、第２のテーブルの更新に合わせて指示値および参照値を更新するリネーミング制御手段とを備える命令制御装置とする。【選択図】      図１
2019086809.tif 000002
【特許請求の範囲】
【請求項１】
依存関係によって発行できない命令を待機させるためのバッファと、
ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関して、次の書き込み先の前記物理レジスタがいずれであるのかを示す指示値と、前記物理レジスタごとに前記バッファに待機している命令の数を示す参照値とが保持される第１のテーブルと、
前記論理レジスタが参照する前記物理レジスタの値を前記ベクトルデータの要素ごとに保持する第２のテーブルと、
前記第１のテーブルを参照し、予め決められたリネーミングルールに従って、前記指示値と前記参照値との組合せによって決まる設定に基づいて前記第２のテーブルを更新するとともに、前記第２のテーブルの更新に合わせて前記指示値および前記参照値を更新するリネーミング制御手段とを備える命令制御装置。
【請求項２】
複数の前記ベクトルレジスタに含まれる第１の物理レジスタおよび第２の物理レジスタが割り当てられた前記論理レジスタに関して、
前記リネーミング制御手段は、
前記論理レジスタへの書き込み命令を受け付けた際に、
前記指示値が第１の値の場合、
前記第１の物理レジスタに関する前記参照値が０ならば、前記第２のテーブルにおける前記第１の物理レジスタの値を前記第２の物理レジスタの値の逆の値に設定して、前記第１のテーブルの前記指示値を第２の値に更新し、
前記第１の物理レジスタに関する前記参照値が０ではなく、前記第２の物理レジスタの前記参照値が０であるならば、前記第２の物理レジスタの値を前記第１の物理レジスタの値の逆の値に設定し、
前記第１の物理レジスタに関する前記参照値が０ではなく、前記第２の物理レジスタの前記参照値が０ではないならば、対象の前記論理レジスタに対する前記書き込み命令を前記バッファに待ち合わせ、
前記指示値が第２の値の場合、
前記第２の物理レジスタに関する前記参照値が０ならば、前記第２のテーブルにおける前記第２の物理レジスタの値を前記第１の物理レジスタの値の逆の値に設定して、前記第１のテーブルの前記指示値を第１の値に更新し、
前記第２の物理レジスタに関する前記参照値が０ではなく、前記第１の物理レジスタの前記参照値が０であるならば、前記第１の物理レジスタの値を前記第２の物理レジスタの値の逆の値に設定し、
前記第２の物理レジスタに関する前記参照値が０ではなく、前記第１の物理レジスタの前記参照値が０ではないならば、対象の前記論理レジスタに対する前記書き込み命令を前記バッファに待ち合わせる、という前記リネーミングルールに従って、前記第１のテーブルおよび前記第２のテーブルを更新する請求項１に記載の命令制御装置。
【請求項３】
前記第２のテーブルは、
前記ベクトルデータの要素ごとに設定されるマスク値を含み、
前記リネーミング制御手段は、
前記第２のテーブルを参照し、前記ベクトルデータの要素のうち前記マスク値が０の要素に関しては前記指示値および前記参照値を更新せず、前記マスク値が１の要素に関しては前記指示値および前記参照値を更新する請求項２に記載の命令制御装置。
【請求項４】
前記リネーミング制御手段は、
前記ベクトルデータの要素数が前記第２のテーブルの要素数よりも小さい場合、前記ベクトルデータの要素に割り当てられない前記物理レジスタに関しては前記第２のテーブルの値を更新しない請求項１乃至３のいずれか一項に記載の命令制御装置。
【請求項５】
命令が格納される命令格納手段と、
複数の前記ベクトルレジスタを含む演算装置に対して前記命令格納手段に格納された命令を実行させる命令実行制御手段とを有する請求項１乃至４のいずれか一項に記載の命令制御装置。
【請求項６】
前記リネーミング制御手段は、
いずれかの前記論理レジスタに命令が書き込まれた後に、書き込まれた命令に後続する未処理の読み出し命令が前記論理レジスタに対応する前記物理レジスタに残っている命令の数を計測し、実際に命令が書き込まれた前記物理レジスタの前記参照値を減じ、前記参照値が減じられた前記物理レジスタに対応する前記論理レジスタの前記指示値を更新するテーブル管理手段と、
前記命令格納手段から命令を受け取った際に前記参照値を参照して、前記参照値が０の場合は命令を発行し、前記参照値が０ではない場合は命令を前記バッファに待機させる命令管理手段とを有し、
前記命令管理手段は、
書き込み命令を受け取ると、前記第２のテーブルを参照し、前記リネーミングルールに従って書き込み先の前記物理レジスタを特定し、特定した書き込み先の前記物理レジスタへの書き込み命令を前記命令実行制御手段に発行し、
読み出し命令を受け取ると、前記第２のテーブルを参照し、前記リネーミングルールに従って読み出し元の前記物理レジスタを特定し、特定した読み出し元の前記物理レジスタからの読み出し命令を前記命令実行制御手段に発行する請求項５に記載の命令制御装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の命令制御装置と、
複数のベクトルレジスタを含み、前記命令制御装置によって発行される命令に応じて演算を実行する演算装置とを備えるベクトルプロセッサ。
【請求項８】
請求項７に記載のベクトルプロセッサと、
前記ベクトルプロセッサによって読み書きされる前記ベクトルデータが格納される記憶装置とを備えるベクトル計算機。
【請求項９】
ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関して、次に書き込みが行われる前記物理レジスタがいずれであるのかを示す指示値と、対象の前記物理レジスタを参照する先行命令の待ち合わせの数を示す参照値とが保持される第１のテーブルを参照し、
予め決められたリネーミングルールに従って、前記指示値と前記参照値との組合せによって決まる設定に基づいて、前記論理レジスタが参照する前記物理レジスタを前記ベクトルデータの要素ごとに示す第２のテーブルを更新する命令制御方法。
【請求項１０】
ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関して、次に書き込みが行われる前記物理レジスタがいずれであるのかを示す指示値と、対象の前記物理レジスタを参照する先行命令の待ち合わせの数を示す参照値とが保持される第１のテーブルを参照する処理と、
予め決められたリネーミングルールに従って、前記指示値と前記参照値との組合せによって決まる設定に基づいて、前記論理レジスタが参照する前記物理レジスタを前記ベクトルデータの要素ごとに示す第２のテーブルを更新する処理とをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトルプロセッサに含まれるレジスタのリネーミング制御を実行する命令制御装置、命令制御方法およびプログラムに関する。
【背景技術】
【０００２】
半導体プロセスの微細化により、ＬＳＩ（Large-Scale Integrated circuit）に搭載できる論理回路の数が飛躍的に増加し、ＣＰＵ（Central Processing Unit）の演算性能が向上している。このようなＣＰＵの演算性能の向上は、コア数を増加させるマルチコア化の寄与が大きく、単一コア当たりの性能向上は鈍化しつつある。しかしながら、ＣＰＵのマルチコア化による性能向上を享受するために必要な並列化が困難なプログラムも多数存在するため、単一コアの性能向上が求められる。
【０００３】
計算機システムにおいて、ＣＰＵの性能を向上させるためには、単位時間当たりに実行できる命令数を高めればよい。例えば、ＣＰＵの持続的な性能向上のためには、命令発行レートを向上することが望まれる。一般的な計算機システムにおいて、演算処理は、レジスタ間で行われる。例えば、パイプライン処理を用いる場合、あるレジスタに対する命令を発行した後に、同じレジスタが別の命令を実行するためには一定のマシンサイクルを要する。
【０００４】
単一コアの性能を向上させる手法の一つに、レジスタリネーミングという手法がある。レジスタリネーミングでは、プログラムが前提とする個数よりも多くの個数のレジスタを用意しておく。そして、プログラム上では同一のレジスタに対する複数の命令がある場合、命令の実行時において、プログラムで規定されているレジスタとは別のレジスタを用いる。例えば、先行命令がリードするまで後続命令がライトできない依存関係（Write after Read：ＷＡＲ）や、先行命令がライトするまで後続命令はライトできない依存関係（Write after Write：ＷＡＷ）がある。レジスタリネーミングによれば、ＷＡＲやＷＡＷといった依存関係を解消・緩和できる。
【０００５】
一般的なレジスタリネーミングでは、ある演算結果を書き込むレジスタに別名を与え、リソースの依存性を緩和する。例えば、命令Ａが論理リソースＸに対してデータを読み出している途中で、同一の論理リソースＸに対する書き込みを行う後続命令Ｂに関して、論理リソースＸに対して物理リソースＸ１、Ｘ２をそれぞれ命令Ａ、命令Ｂに割り当てておく。その結果、命令Ｂの実行によるデータの書きつぶしが防止され、命令Ｂの発行制限が緩和されて命令発行レートの向上が見込める。
【０００６】
一般的なベクトルプロセッサには、要素ごとに計算の有無を切り替えるマスク機能が設けられており、レジスタリネーミングを適用できない場合がある。例えば、前述の命令Ｂにマスクが掛かっている場合、マスク対象の要素には、演算結果の元の値、すなわち命令Ａの実行結果の対応する要素を格納する必要がある。なぜならば、演算がマスクされているため、あるレジスタに既に書き込まれたデータが、後に実行される命令で参照される可能性があるからである。そのため、一般的なベクトルプロセッサでは、複数の独立したリソースを命令Ａと命令Ｂとに割り当てるだけではなく、リソース間において値の引渡しが必要となる。そのようなベクトルプロセッサには、既存のレジスタリネーミング技術を単純に導入することができなかった。
【０００７】
特許文献１には、論理ベクトルレジスタ番号から物理ベクトルレジスタ番号へ変換するベクトル命令管理回路について開示されている。特許文献１の回路は、後続命令のマスクフラグ、先行ベクトル命令のベクトル長および後続命令のベクトル長を考慮して、論理ベクトルレジスタに物理レジスタ番号を割り付ける。
【０００８】
特許文献２には、ベクトルプロセッサに適したベクトルレジスタのリネーミングを行うベクトルレジスタリネーミング制御方式について開示されている。特許文献２の制御方式では、実行する命令にとってのデスティネーションレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長（以下、第１のベクトル長）と、実行する命令のベクトル長（以下、第２のベクトル長）とを比較する。そして、特許文献２の制御方式では、第１のベクトル長と第２のベクトル長との大小比較結果に従って、デスティネーションレジスタに対する物理レジスタの新規割り当てと演算幅とを制御する。また、特許文献２の制御方式では、実行する命令にとってのソースレジスタである論理レジスタに対するライトを生じさせた最後の命令のベクトル長（第３のレジスタ長）と、第２のレジスタ長とを比較する。そして、特許文献２の制御方式では、第２のレジスタ長と第３のレジスタ長との大小比較結果に従って、ソースレジスタに対する物理レジスタと論理レジスタとの依存関係を生成する。さらに、特許文献２の制御方式では、第１のレジスタ長と第２のレジスタ長との大小比較結果と、実行する命令がマスク演算であるか否かに従って、デスティネーションレジスタの非更新部分のデータコピーを行うための依存関係を生成する。
【０００９】
特許文献３には、レジスタリネーミングを行うベクトルプロセッサについて開示されている。特許文献３のベクトルプロセッサは、ベクトル演算を行うベクトル演算部と、命令発行制御部とを備える。命令発行制御部は、リネーミングテーブル管理部、ポインタリスト管理部、リネーミング部および命令発行部を有する。リネーミングテーブル管理部は、ベクトル命令で指定される論理ベクトルレジスタに仮想ベクトルレジスタを割り当て、論理ベクトルレジスタと割り当てられた仮想ベクトルレジスタとの対応関係を示すリネーミングテーブルを管理する。ポインタリスト管理部は、割り当てられた仮想ベクトルレジスタの要素ごとに物理レジスタ上の任意のデータ領域を割り当て、各要素と割り当てられたデータ領域との対応関係を示すポインタリストを管理する。リネーミング部は、ベクトル命令で指定される論理ベクトルレジスタを、リネーミングテーブルで示される仮想ベクトルレジスタに置換するリネーミング処理を行う。命令発行部は、リネーミング処理後のベクトル命令で指定される仮想ベクトルレジスタとポインタリストとに基づいて、リネーミング処理後のベクトル命令をベクトル演算部に対して発行する命令発行処理を行う。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−２６８１６８号公報
【特許文献２】特許第６０２０４２８号公報
【特許文献３】特開２０１０−２０５０４９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１の手法によれば、マスク付き演算の有無とベクトル長の比較結果とが条件を満たした場合、デスティネーションとなる論理レジスタが一致する後続の命令に対して同一の物理レジスタを割り当てることでベクトルレジスタの利用効率を向上できる。ところで、特許文献１の手法では、異なる命令に同一の物理レジスタを割り当ててしまうため、プログラムに記述された命令をイン・オーダーで実行する必要がある。すなわち、特許文献１の手法では、プログラムに記述された命令の順序をアウト・オブ・オーダーで実行できず、レジスタのＷＡＲ依存関係を解消することができない。
【００１２】
特許文献２の手法によれば、ベクトルレジスタの利用効率を向上できる。しかし、特許文献２の手法では、マスク演算に必要な機能として、後続の命令にマスクが掛かっていた場合、マスク対象の要素には、演算結果の元の値、すなわち先行命令の実行結果の対応する要素を格納する必要がある。その結果、特許文献２の手法では、ソースレジスタの読み出しに加えて、デスティネーションレジスタの値を同時に読み出す必要があるため、読み出し可能になるまでの待ち合わせ、読み出した値の持ち回るための回路を確保する必要があった。
【００１３】
特許文献３の手法によれば、レジスタリネーミングを行うベクトルプロセッサにおいて、レジスタ資源の利用効率を向上できる。しかし、特許文献３の手法では、論理レジスタと物理レジスタを自由に割り当て、要素単位にポインタを用意しているため、ゲート量が増大してしまう。
【００１４】
本発明の目的は、上述した課題を解決するために、ベクトルプロセッサのリネーミング制御において、余計なデータの移送をせずに、レジスタ資源の利用効率を向上できる命令制御装置を提供することにある。
【課題を解決するための手段】
【００１５】
本発明の一態様の命令制御装置は、依存関係によって発行できない命令を待機させるためのバッファと、ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関して、次の書き込み先の物理レジスタがいずれであるのかを示す指示値と、物理レジスタごとにバッファに待機している命令の数を示す参照値とが保持される第１のテーブルと、論理レジスタが参照する物理レジスタの値をベクトルデータの要素ごとに保持する第２のテーブルと、第１のテーブルを参照し、予め決められたリネーミングルールに従って、指示値と参照値との組合せによって決まる設定に基づいて第２のテーブルを更新するとともに、第２のテーブルの更新に合わせて指示値および参照値を更新するリネーミング制御手段とを備える。
【００１６】
本発明の一態様の命令制御方法は、ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関して、次に書き込みが行われる物理レジスタがいずれであるのかを示す指示値と、対象の物理レジスタを参照する先行命令の待ち合わせの数を示す参照値とが保持される第１のテーブルを参照し、予め決められたリネーミングルールに従って、指示値と参照値との組合せによって決まる設定に基づいて、論理レジスタが参照する物理レジスタをベクトルデータの要素ごとに示す第２のテーブルを更新する。
【００１７】
本発明の一態様のプログラムは、ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関して、次に書き込みが行われる物理レジスタがいずれであるのかを示す指示値と、対象の物理レジスタを参照する先行命令の待ち合わせの数を示す参照値とが保持される第１のテーブルを参照する処理と、予め決められたリネーミングルールに従って、指示値と参照値との組合せによって決まる設定に基づいて、論理レジスタが参照する物理レジスタをベクトルデータの要素ごとに示す第２のテーブルを更新する処理とをコンピュータに実行させる。
【発明の効果】
【００１８】
本発明によれば、ベクトルプロセッサのリネーミング制御において、余計なデータの移送をせずに、レジスタ資源の利用効率を向上できる命令制御装置を提供することが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施形態に係るベクトル計算機の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るベクトル計算機に含まれる演算部の構成を示すブロック図である。
【図３】本発明の第１の実施形態に係るベクトル計算機の演算部に含まれるベクトルレジスタ群の構成例を示すブロック図である。
【図４】本発明の第１の実施形態に係るベクトル計算機の命令発行制御部に含まれる参照チェックテーブルの一例を示すテーブルである。
【図５】本発明の第１の実施形態に係るベクトル計算機の命令発行制御部に含まれるリネーミング管理テーブルの一例を示すテーブルである。
【図６】本発明の第１の実施形態に係るベクトル計算機の命令発行制御部に含まれる命令バッファについて説明するための図である。
【図７】本発明の第１の実施形態に係る命令発行制御部が従うリネーミングルールをまとめたテーブルである。
【図８】本発明の第１の実施形態に係る命令発行制御部に含まれるリネーミング制御部の構成を示すブロック図である。
【図９】本発明の第１の実施形態に係る命令発行制御部がリネーミングルールに従って行う動作について説明するためのフローチャートである。
【図１０】本発明の第１の実施形態の変形例に係る演算部に含まれるベクトルレジスタ群の構成例を示すブロック図である。
【図１１】本発明の第２の実施形態に係る命令発行制御部の構成を示すブロック図である。
【図１２】本発明の第２の実施形態に係るベクトル計算機の命令発行制御部に含まれるリネーミング管理テーブルの一例を示すテーブルである。
【図１３】本発明の第２の実施形態に係る命令発行制御部が従うリネーミングルールをまとめたテーブルである。
【図１４】本発明の第２の実施形態に係る命令発行制御部がリネーミングルールに従って行う動作について説明するためのフローチャートである。
【図１５】本発明の実施例に係る命令発行制御部が用いるリネーミング管理テーブルの初期状態の一例である。
【図１６】本発明の実施例に係る命令発行制御部が用いるリネーミング管理テーブルの１回目の書き込み命令に伴う遷移について説明するための一例である。
【図１７】本発明の実施例に係る命令発行制御部が用いるリネーミング管理テーブルの２回目の書き込み命令に伴う遷移について説明するための一例である。
【図１８】本発明の実施例に係る命令発行制御部が用いるリネーミング管理テーブルの３回目の書き込み命令に伴う遷移について説明するための一例である。
【図１９】本発明の実施例に係る命令発行制御部が用いるリネーミング管理テーブルの４回目の書き込み命令に伴う遷移について説明するための一例である。
【図２０】本発明の実施例に係る命令発行制御部が用いるリネーミング管理テーブルの５回目の書き込み命令に伴う遷移について説明するための一例である。
【図２１】本発明の各実施形態に係る制御系統を実現するためのハードウェア構成の一例である。
【発明を実施するための形態】
【００２０】
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由がない限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。また、以下の実施形態において、図面に示す構成要素間の接続線は一例であって、接続線の数や接続状態を正確に表すものではない。
【００２１】
（第１の実施形態）
まず、本発明の第１の実施形態に係るベクトル計算機について図面を参照しながら説明する。本実施形態は、ベクトル計算機のベクトルプロセッサに含まれるベクトルレジスタのリネーミング制御を実行する命令制御装置に関する。
【００２２】
例えば、ベクトルレジスタは、８個の論理レジスタ（Ｌ_ＶＲ０、Ｌ_ＶＲ１、・・・、Ｌ_ＶＲ８）、１６個の物理レジスタ（Ｒ_ＶＲ０_Ａ、Ｒ_ＶＲ０_Ｂ、Ｒ_ＶＲ１_Ａ、Ｒ_ＶＲ１_Ｂ、・・・、Ｒ_ＶＲ７_Ａ、Ｒ_ＶＲ７_Ｂ）で構成できる。また、ベクトルレジスタには、少なくとも１個のマスクレジスタを含めてもよい。ただし、ベクトルレジスタを構成する論理レジスタ、物理レジスタおよびマスクレジスタの数はここで挙げた数に限定されない。以下においては、説明を簡略化するために、各レジスタの要素数を１６とする。
【００２３】
（構成）
図１は、本実施形態のベクトル計算機１の構成を示すブロック図である。図１のように、ベクトル計算機１は、命令制御部２０および演算部３０を有するベクトルプロセッサ１０と、メインメモリ４０とを備える。命令制御部２０は、命令格納部２１、命令発行制御部２２、命令実行制御部２３を有する。また、命令発行制御部２２は、参照チェックテーブル１２１、リネーミング管理テーブル１２２、命令バッファ１２３、リネーミング制御部１２４を含む。
【００２４】
ベクトルプロセッサ１０は、ベクトルロードやベクトルストア、ベクトル演算といったベクトル命令（以下、命令と記載する）を処理するプロセッサである。
【００２５】
ベクトルプロセッサ１０は、ベクトルロード命令に応答して、メインメモリ４０からベクトルデータを読み出す。また、ベクトルプロセッサ１０は、ベクトルストア命令に応答して、メインメモリ４０にベクトルデータを書き込む。また、ベクトルプロセッサ１０は、ベクトル演算命令に応答して、ベクトルデータを用いてベクトル演算を行う。
【００２６】
命令制御部２０（命令制御装置とも呼ぶ）は、演算部３０に実行させる命令を格納し、命令のレジスタリネーミングやスケジューリングを行う。また、命令制御部２０は、演算部３０に対する命令の発行を制御する。
【００２７】
演算部３０（演算手段とも呼ぶ）は、命令制御部２０によって発行される命令に応じて、ベクトルロードやベクトルストア、ベクトル演算を行う。演算部３０は、一群のベクトルレジスタおよび一群のベクトル演算器を備える。
【００２８】
演算部３０は、命令制御部２０からのベクトルロード命令に応じて、メインメモリ４０から読み出されたベクトルデータをベクトルレジスタに格納する。演算部３０は、命令制御部２０からのベクトルストア命令に応じて、ベクトルレジスタからベクトルデータを読み出し、読み出したベクトルデータをメインメモリ４０に書き込む。演算部３０は、命令制御部２０からのベクトル演算命令に応じてベクトルレジスタからベクトルデータを読み出し、ベクトル演算器においてそのベクトルデータを用いてベクトル演算を実行して、演算結果であるベクトルデータをベクトルレジスタに書き込む。
【００２９】
メインメモリ４０（記憶装置と呼ぶ）は、ベクトルデータなどのデータが格納される主記憶装置である。
【００３０】
〔命令制御部〕
次に、命令制御部２０の詳細構成について説明する。なお、命令格納部２１および命令実行制御部２３を含まず、命令発行制御部２２のみの構成も命令制御装置と呼ぶことがある。
【００３１】
命令格納部２１（命令格納手段とも呼ぶ）には、演算部３０に実行させる命令が格納される。言い換えると、命令格納部２１には、命令制御部２０によって発行される命令が格納される。
【００３２】
命令発行制御部２２は、命令格納部２１から命令を受け取ると、受け取った命令の発行を制御する。命令発行制御部２２は、命令として書き込み命令を受け取ると、ベクトルレジスタのリネーミング制御を実行し、命令格納部２１から受け取った書き込み命令を実行する指示を命令実行制御部２３に出力する。また、命令発行制御部２２は、命令として読み出し命令を受け取ると、命令格納部２１から受け取った読み出し命令を実行する指示を命令実行制御部２３に出力する。
【００３３】
命令実行制御部２３（命令実行制御手段とも呼ぶ）は、命令発行制御部２２からの指示に応じて、複数のベクトルレジスタを含む演算部３０に対して命令格納部２１に格納された命令を実行させるように制御する。
【００３４】
〔命令発行制御部〕
次に、命令発行制御部２２の詳細構成について説明する。なお、命令発行制御部２２のことを命令制御装置と呼ぶこともある。
【００３５】
参照チェックテーブル１２１（第１のテーブルとも呼ぶ）は、対象の物理レジスタを参照する先行命令がいくつ待ち合わされているかを示すテーブルである。参照チェックテーブル１２１には、対象の物理レジスタに対応する論理レジスタに関して、次に書き込みが行われる物理レジスタがいずれであるのかを示す値（ｎｅｘｔ値とも呼ぶ）が格納される。また、参照チェックテーブル１２１には、対象の物理レジスタを参照する先行命令の待ち合わせ数（ｒｅｆ値とも呼ぶ）が格納される。なお、ｎｅｘｔ値を指示値と呼び、ｒｅｆ値を参照値と呼ぶこともある。
【００３６】
言い換えると、参照チェックテーブル１２１は、ベクトルデータの要素ごとに構成された複数のベクトルレジスタに含まれる少なくとも二つの物理レジスタが割り当てられた論理レジスタに関するｎｅｘｔ値とｒｅｆ値とを保持する。ｎｅｘｔ値は、次の書き込み先の物理レジスタがいずれであるのかを示す指示値である。ｒｅｆ値は、物理レジスタごとに命令バッファ１２３に待機している命令の数を示す参照値である。
【００３７】
リネーミング管理テーブル１２２（第２のテーブルとも呼ぶ）は、論理レジスタに対して物理レジスタのいずれの要素を参照しているのかを管理するためのテーブルである。言い換えると、リネーミング管理テーブル１２２は、論理レジスタが参照する物理レジスタの値をベクトルデータの要素ごとに保持するテーブルである。
【００３８】
命令バッファ１２３（バッファとも呼ぶ）は、依存関係によって命令発行制御部２２が発行できない命令を、先行する命令処理が完了するまで待機させるためのバッファである。命令バッファ１２３（バッファとも呼ぶ）には、発行待ちの命令がスタックされ、スタックされた命令で使用されるレジスタの情報が保持される。
【００３９】
リネーミング制御部１２４（リネーミング制御手段とも呼ぶ）は、予め決められたリネーミングルールに従って、リネーミング管理テーブル１２２の値を更新する。リネーミングルールとは、参照チェックテーブル１２１の値に基づいて、リネーミング管理テーブル１２２の値を更新するためのルールである。また、リネーミングルールは、書き込み命令や読み出し命令に応じた実行内容のルールを含む。
【００４０】
〔演算部〕
次に、演算部３０の構成について図面を参照しながら説明する。図２は、演算部３０の構成を示すブロック図である。図２のように、演算部３０は、読み出しクロスバ３１、演算部３２、書き込みクロスバ３３、レジスタ群３４を有する。
【００４１】
読み出しクロスバ３１は、命令制御部２０からの命令に応じて、レジスタ群３４を構成する物理レジスタからデータをリードし、リードしたデータを演算部３２のいずれかの演算器に送る。
【００４２】
演算部３２は、複数の演算器によって構成される。なお、図２には、三つの演算器（演算器Ａ、演算器Ｂ、演算器Ｃ）によって演算部３２が構成される例を示しているが、演算部３２を構成する演算器の数は三つに限定されない。演算部３２は、少なくとも二つの演算器を含むように構成できる。
【００４３】
演算部３２は、読み出しクロスバ３１からデータを受け取り、命令制御部２０からの命令に応じて、それぞれの演算器においてベクトル演算を行う。演算部３２は、ベクトル演算の演算結果を書き込みクロスバ３３に送る。
【００４４】
書き込みクロスバ３３は、演算部３２から受け取った演算結果を、レジスタ群３４に含まれるいずれかの物理レジスタに格納する。
【００４５】
レジスタ群３４は、ベクトルデータの要素ごとに構成された複数の物理レジスタを含む。
【００４６】
図３は、レジスタ群３４の構成例を示す概念図である。レジスタ群３４は、ベクトルデータの要素ごとに割り当てられる複数のベクトルレジスタ１３４によって構成される。例えば、ベクトルレジスタ１３４は、ＳＲＡＭ（Static Random Access Memory）によって構成する。例えば、ベクトルレジスタ１３４は、レジスタ単位で構成するのではなく、ベクトルデータの要素単位で一つのＳＲＡＭに構成する。
【００４７】
図３の例では、要素０に対応するベクトルレジスタ１３４−０、要素１に対応するベクトルレジスタ１３４−１、要素２に対応するベクトルレジスタ１３４−２、・・・、要素ｎに対応するベクトルレジスタ１３４−ｎを図示している（ｎは整数）。本実施形態においては、要素数が１６の場合について例示する。
【００４８】
複数の論理レジスタ（Ｌ_ＶＲ０〜７）のそれぞれには、ベクトルレジスタ１３４−０〜ｎのそれぞれに含まれる二つの記憶領域が割り当てられる。図３において、Ｌ_ＶＲ０には、ベクトルレジスタ１３４−０〜ｎの二つの物理レジスタ（Ｒ_ＶＲ０_Ａ、Ｒ_ＶＲ０_Ｂ）が割り当てられる。同様に、Ｌ_ＶＲ１には、ベクトルレジスタ１３４−０〜ｎの二つの物理レジスタ（Ｒ_ＶＲ１_Ａ、Ｒ_ＶＲ１_Ｂ）が割り当てられる。Ｌ_ＶＲ２〜７についても、同様に、ベクトルレジスタ１３４−０〜ｎの二つの物理レジスタ（Ｒ_ＶＲ２〜７_Ａ、Ｒ_ＶＲ２〜７_Ｂ）が割り当てられる。
【００４９】
すなわち、本実施形態においては、１つの論理レジスタに対応させて２つの物理レジスタが固定的に割り当てられる。なお、図３においては、論理レジスタに対して、連続する二つのデータ領域を割り当てているが、離れたデータ領域を割り当てるように構成してもよい。また、一つの論理レジスタに対して、三つ以上の物理レジスタを割り当てるように構成してもよい。また、論理レジスタごとに割り当てる物理レジスタの数が異なっていてもよい。
【００５０】
〔参照チェックテーブル〕
次に、参照チェックテーブル１２１について一例を挙げて説明する。図４は、命令発行制御部２２に含まれる参照チェックテーブル１２１の一例である。図４の参照チェックテーブル１２１には、Ｌ_ＶＲｎに関して、ｎｅｘｔ値と、対応する二つの物理レジスタ（Ｒ_ＶＲｎ_Ａ、Ｒ_ＶＲｎ_Ｂ）のｒｅｆ値とが格納される（ｎは０〜７の整数）。
【００５１】
ｎｅｘｔ値は、各論理レジスタＬ_ＶＲｎに関して、次に書き込みが行われる方の物理レジスタがどちらであるのかを示す値である。ｎｅｘｔ値がＡ（第１の値とも呼ぶ）の場合は、Ａ側の物理レジスタ（第１の物理レジスタとも呼ぶ）に書き込みが行われる。一方、ｎｅｘｔ値がＢ（第２の値とも呼ぶ）の場合は、Ｂ側の物理レジスタ（第２の物理レジスタとも呼ぶ）に書き込みが行われる。
【００５２】
参照チェックテーブル１２１のｎｅｘｔ値は、書き込みが行われた際に、書き込みが行われた側の反対側の値に更新される。具体的には、ｎｅｘｔ値は、二つの物理レジスタのうちＡ側に書き込みが行われた際にはＢに更新され、Ｂ側に書き込みが行われた際にはＡに更新される。このとき、ｎｅｘｔ値がＡでありながら、Ｂ側に書き込みが行われた際には、ｎｅｘｔ値がＡのままである。同様に、ｎｅｘｔ値がＢでありながら、Ａ側に書き込みが行われた際には、ｎｅｘｔ値がＢのままである。
【００５３】
ｒｅｆ値は、対象の物理レジスタを参照する先行命令の待ち合わせ数を示す。例えば、参照チェックテーブル１２１において、Ｌ_ＶＲ０に対応するＲ_ＶＲ０_Ａのｒｅｆ値は０、Ｒ_ＶＲ０_Ｂのｒｅｆ値は１であることを示す。
【００５４】
〔リネーミング管理テーブル〕
次に、リネーミング管理テーブル１２２について一例を挙げて説明する。図５は、命令発行制御部２２に含まれるリネーミング管理テーブル１２２の一例である。リネーミング管理テーブル１２２は、論理レジスタごとに設定される。図５は、Ｌ_ＶＲ０のリネーミング管理テーブル１２２の一例である。リネーミング管理テーブル１２２は、論理レジスタに対して、物理レジスタのいずれの要素を参照しているのかを示す。
【００５５】
例えば、Ｌ_ＶＲ０への書き込み命令が、要素長１６（ＶＬ＝１６）で発行されたものとする。この場合、リネーミング管理テーブル１２２の全ての要素について、参照チェックテーブル１２１のｎｅｘｔ値に従った方の物理レジスタが更新される。
【００５６】
例えば、Ｌ_ＶＲ０への書き込み命令が、要素長１４（ＶＬ＝１４）で発行されたものとする。この場合、リネーミング管理テーブル１２２の要素０〜１３について、参照チェックテーブル１２１のｎｅｘｔ値に従った方の物理レジスタが更新される。このとき、リネーミング管理テーブル１２２の要素１４、１５に対応する物理レジスタは更新されない。すなわち、リネーミング管理テーブル１２２に従って物理レジスタを更新することによって、ベクトルデータの要素長の変化に対応したベクトルレジスタのリネーミングが可能となる。
【００５７】
言い換えると、リネーミング制御部１２４は、ベクトルデータの要素数がリネーミング管理テーブル１２２の要素数よりも小さい場合、ベクトルデータの要素に割り当てられない物理レジスタに関してはリネーミング管理テーブル１２２の値を更新しない。
【００５８】
〔命令バッファ〕
次に、命令バッファ１２３について一例を挙げて説明する。図６は、命令バッファ１２３における命令待ち合わせの一例である。図６の例では、読み出し命令、書き込み命令Ａ、書き込み命令Ｂに関して、複数の命令が待ち合わせていることを示す。通常、命令の参照は古い順に行われるが、依存関係がない命令であって、先行する命令が発行できない新しい命令に関しては、古い命令を追い越して発行できる。
【００５９】
〔リネーミングルール〕
次に、命令発行制御部２２が用いるリネーミングルールについて一例を挙げて説明する。図７は、命令発行制御部２２が用いるリネーミングルール１００を示すテーブルである。図７のリネーミングルール１００は、命令発行制御部２２が、参照チェックテーブル１２１の状態に従って、リネーミング管理テーブル１２２の設定値を更新する際に用いるルールを示す。なお、参照チェックテーブル１２１の状態に応じたリネーミング管理テーブル１２２の設定値は、論理レジスタの初期状態などによって変化しうる。また、リネーミングルール１００においては、Ｒ_ＶＲｎ_Ａ（第１の物理レジスタとも呼ぶ）のｒｅｆ値をｒｅｆＡ（第１の参照値とも呼ぶ）、Ｒ_ＶＲｎ_Ｂ（第２の物理レジスタとも呼ぶ）のｒｅｆ値をｒｅｆＢ（第２の参照値とも呼ぶ）と記載する。
【００６０】
命令発行制御部２２は、命令格納部２１から受け取った書き込み命令に応じて、リネーミングルール１００に従って、参照チェックテーブル１２１の値の状態に対応させてリネーミング管理テーブル１２２の設定値を更新する。以下に、リネーミングルール１００に従って、参照チェックテーブル１２１の値の状態に対応させてリネーミング管理テーブル１２２の設定値を更新する例を示す。
【００６１】
＜状態Ｃ１１＞ｎｅｘｔ値＝Ａ、ｒｅｆＡ＝０
Ｒ_ＶＲ０_ＡにＲ_ＶＲ０_Ｂの逆の値が設定される（設定Ｓ１１）。このとき、Ｒ_ＶＲ０_Ａには、設定Ｓ２の設定値に従って、Ｒ_ＶＲ０_Ｂの逆の値が書き込まれる。
【００６２】
＜状態Ｃ１２＞ｎｅｘｔ値＝Ａ、ｒｅｆＡ＜＞０、ｒｅｆＢ＝０
Ｒ_ＶＲ０_ＢにＲ_ＶＲ０_Ａの逆の値が設定される（設定Ｓ１２）。このとき、Ｒ_ＶＲ０_Ｂには、設定Ｓ１２の設定値に従って、Ｒ_ＶＲ０_Ａの逆の値が書き込まれる。
【００６３】
＜状態Ｃ１３＞ｎｅｘｔ値＝Ａ、ｒｅｆＡ＜＞０、ｒｅｆＢ＜＞０
設定値の更新を行わず、待ち合わせとなる（設定Ｓ１３）。
【００６４】
＜状態Ｃ１４＞ｎｅｘｔ値＝Ｂ、ｒｅｆＢ＝０
Ｒ_ＶＲ０_ＢにＲ_ＶＲ０_Ａの逆の値が設定される（設定Ｓ１４）。このとき、Ｒ_ＶＲ０_Ｂには、設定Ｓ７の設定値に従って、Ｒ_ＶＲ０_Ａの逆の値が書き込まれる。
【００６５】
＜状態Ｃ１５＞ｎｅｘｔ値＝Ｂ、ｒｅｆＢ＜＞０、ｒｅｆＡ＝０
Ｒ_ＶＲ０_ＡにＲ_ＶＲ０_Ｂの逆の値が設定される（設定Ｓ１５）。このとき、Ｒ_ＶＲ０_Ａには、設定Ｓ１５の設定値に従って、Ｒ_ＶＲ０_Ａの逆の値が書き込まれる。
【００６６】
＜状態Ｃ１６＞ｎｅｘｔ値＝Ｂ、ｒｅｆＡ＜＞０、ｒｅｆＢ＜＞０
設定値の更新を行わず、待ち合わせとなる（設定Ｓ１６）。
【００６７】
命令発行制御部２２は、命令格納部２１から読み出し命令を受け取った際には、リネーミング管理テーブル１２２の設定値に従って読み出しを実行する。このとき、命令発行制御部２２は、読み出しを実行した物理アドレスに関する読み出し命令を一つ実行したため、読み出し命令を実行した物理アドレスに関して参照チェックテーブル１１５のｒｅｆ値を１デクリメントする。
【００６８】
例えば、リネーミング制御部１２４は、ベクトルレジスタ１３４に含まれるＲ_ＶＲｎ_ＡおよびＲ_ＶＲｎ_Ｂが割り当てられたＬ_ＶＲｎ_Ａへの書き込み命令を受け付けた際に、上述のリネーミングルールに従ってレジスタリネーミング制御を実行する。
【００６９】
リネーミング制御部１２４は、ｎｅｘｔ値がＡの場合、ｒｅｆＡおよびｒｅｆＢの少なくともいずれかの値に応じて、リネーミング管理テーブル１２２の値を設定し、参照チェックテーブル１１５のｎｅｘｔ値を更新する。リネーミング制御部１２４は、ｒｅｆＡが０ならば、リネーミング管理テーブル１２２におけるＲ_ＶＲｎ_Ａの値をＲ_ＶＲｎ_Ｂの値の逆の値に設定し、参照チェックテーブル１１５のｎｅｘｔ値をＢに更新する。リネーミング制御部１２４は、ｒｅｆＡが０ではなく、ｒｅｆＢが０ならば、リネーミング管理テーブル１２２におけるＲ_ＶＲｎ_Ｂの値をＲ_ＶＲｎ_Ａの値の逆の値に設定する。リネーミング制御部１２４は、ｒｅｆＡおよびｒｅｆＢが０ではないならば、対象のＬ_ＶＲｎに対する書き込み命令を命令バッファ１２３に待ち合わせる。
【００７０】
リネーミング制御部１２４は、ｎｅｘｔ値がＢの場合、ｒｅｆＢおよびｒｅｆＡの少なくともいずれかの値に応じて、リネーミング管理テーブル１２２の値を設定し、参照チェックテーブル１１５のｎｅｘｔ値を更新する。リネーミング制御部１２４は、ｒｅｆＢが０ならば、リネーミング管理テーブル１２２におけるＲ_ＶＲｎ_Ｂの値をＲ_ＶＲｎ_Ａの値の逆の値に設定し、参照チェックテーブル１１５のｎｅｘｔ値をＡに更新する。リネーミング制御部１２４は、ｒｅｆＢが０ではなく、ｒｅｆＡが０ならば、リネーミング管理テーブル１２２におけるＲ_ＶＲｎ_Ａの値をＲ_ＶＲｎ_Ｂの値の逆の値に設定する。リネーミング制御部１２４は、ｒｅｆＡおよびｒｅｆＢが０ではないならば、対象のＬ_ＶＲｎに対する書き込み命令を命令バッファ１２３に待ち合わせる。
【００７１】
〔リネーミング制御部〕
次に、リネーミング制御部１２４の構成について図面を参照しながら説明する。図８はリネーミング制御部１２４の構成を示す概念図である。例えば、リネーミング制御部１２４の機能は、記憶領域（図示しない）に展開されたプログラムを演算装置（図示しない）が実行することによって実現される。
【００７２】
リネーミング制御部１２４は、テーブル管理部１４１、命令管理部１４３、リネーミングルール１００を含む。
【００７３】
テーブル管理部１４１（テーブル管理手段とも呼ぶ）は、いずれかの論理レジスタに命令が書き込まれた後に、その命令に後続する未処理の読み出し命令がその論理レジスタに対応する物理レジスタにいくつ残っているのかを計測する。テーブル管理部１４１は、計測した未処理の読み出し命令の数を参照チェックテーブル１２１に記録する。
【００７４】
テーブル管理部１４１は、論理レジスタに書き込みがなされた際に、実際に書き込みが行われた物理レジスタのｒｅｆ値を１減ずる。このとき、テーブル管理部１４１は、その論理レジスタのｎｅｘｔ値を、書き込みが行われた物理レジスタと対をなす物理レジスタに書き換える。言い換えると、テーブル管理部１４１は、書き込みがなされた論理レジスタのｎｅｘｔ値を更新する。例えば、論理レジスタのｎｅｘｔ値がＡの場合、テーブル管理部１４１は、書き込みがなされた論理レジスタのｎｅｘｔ値をＢに更新する。例えば、論理レジスタのｎｅｘｔ値がＢの場合、テーブル管理部１４１は、書き込みがなされた論理レジスタのｎｅｘｔ値をＡに更新する。
【００７５】
テーブル管理部１４１は、参照チェックテーブル１２１のｒｅｆ値を参照し、リネーミングルール１００に従って、リネーミング管理テーブル１２２の値を更新する。
【００７６】
命令管理部１４３は、参照チェックテーブル１２１のｒｅｆ値を参照し、命令格納部２１から受け取った命令を発行するか、命令バッファ１２３で待機させるか判断する。命令管理部１４３は、参照チェックテーブル１２１のｒｅｆ値が０の場合は、受け取った命令を発行する。命令管理部１４３は、参照チェックテーブル１２１のｒｅｆ値が０ではない場合は、受け取った命令を命令バッファ１２３に待機させる。
【００７７】
命令管理部１４３は、書き込み命令を受け取ると、リネーミング管理テーブル１２２を参照し、リネーミングルール１００に従って、書き込み命令に応じた各要素の書き込み先の物理レジスタを特定する。命令管理部１４３は、特定した書き込み先の物理レジスタへの書き込み命令を命令実行制御部２３に発行する。
【００７８】
命令管理部１４３は、読み出し命令を受け取ると、リネーミング管理テーブル１２２を参照し、読み出し元の物理レジスタを特定する。命令管理部１４３は、特定した読み出し元の物理レジスタからの読み出し命令を命令実行制御部２３に発行する。
【００７９】
リネーミングルール１００は、レジスタリネーミングのルールである。例えば、リネーミングルール１００は、図７に例示したようにテーブル形式で格納される。
【００８０】
以上が、本実施形態のベクトル計算機１の構成に関する説明である。
【００８１】
（動作）
次に、命令発行制御部２２がリネーミングルールに従って行うレジスタリネーミング制御について図面を参照しながら説明する。図９は、命令発行制御部２２がリネーミングルールに従って行う動作について説明するためのフローチャートである。
【００８２】
図９において、まず、命令発行制御部２２は、参照チェックテーブル１２１のｎｅｘｔ値を参照して書き込み先の物理アドレスを判断する（ステップＳ１０１）。
【００８３】
ステップＳ１０１において、書き込み先の物理アドレスがＲ_ＶＲｍ_Ａの場合（ステップＳ１０１でｎｅｘｔ＝Ａ）、命令発行制御部２２は、ｒｅｆＡをチェックする（ステップＳ１０２）。
【００８４】
ステップＳ１０２において、ｒｅｆＡが０の場合（ステップＳ１０２でＹｅｓ）、命令発行制御部２２は、設定Ｓ１１に従ってリネーミング管理テーブル１２２を更新する。そして、命令発行制御部２２は、設定Ｓ１１に従って設定された設定値をＲ_ＶＲｍ_Ａへ書き込む（ステップＳ１０６）。
【００８５】
ステップＳ１０２において、ｒｅｆＡが０ではない場合（ステップＳ１０２でＮｏ）、命令発行制御部２２は、ｒｅｆＢをチェックする（ステップＳ１０３）。
【００８６】
ステップＳ１０３において、ｒｅｆＢが０の場合（ステップＳ１０３でＹｅｓ）、命令発行制御部２２は、設定Ｓ１２に従ってリネーミング管理テーブル１２２を更新する。そして、命令発行制御部２２は、設定Ｓ１２に従って設定された設定値をＲ_ＶＲｍ_Ｂへ書き込む（ステップＳ１０６）。
【００８７】
ステップＳ１０３において、ｒｅｆＢが０ではない場合（ステップＳ１０３でＮｏ）、命令発行制御部２２は、書き込みを行わずに、命令バッファ１２３に命令を待ち合わせる（ステップＳ１０７）。
【００８８】
一方、ステップＳ１０１において、書き込み先の物理アドレスがＲ_ＶＲｍ_Ｂの場合（ステップＳ１０１でｎｅｘｔ＝Ｂ）、命令発行制御部２２は、ｒｅｆＢをチェックする（ステップＳ１０４）。
【００８９】
ステップＳ１０４において、ｒｅｆＢが０の場合（ステップＳ１０４でＹｅｓ）、命令発行制御部２２は、設定Ｓ１４に従ってリネーミング管理テーブル１２２を更新する。そして、命令発行制御部２２は、設定Ｓ１４に従って設定された設定値をＲ_ＶＲｍ_Ｂへ書き込む（ステップＳ１０６）。
【００９０】
ステップＳ１０４において、ｒｅｆＢが０ではない場合（ステップＳ１０４でＮｏ）、命令発行制御部２２は、ｒｅｆＡをチェックする（ステップＳ１０５）。
【００９１】
ステップＳ１０５において、ｒｅｆＡが０の場合（ステップＳ１０５でＹｅｓ）、命令発行制御部２２は、設定Ｓ１５に従ってリネーミング管理テーブル１２２を更新する。そして、命令発行制御部２２は、設定Ｓ１５に従って設定された設定値をＲ_ＶＲｍ_Ａへ書き込む（ステップＳ１０６）。
【００９２】
ステップＳ１０５において、ｒｅｆＡが０ではない場合（ステップＳ１０５でＮｏ）、命令発行制御部２２は、書き込みを行わずに、命令バッファ１２３に命令を待ち合わせる（ステップＳ１０７）。
【００９３】
以上が、リネーミングルールに従って命令発行制御部２２が行うレジスタリネーミング制御についての説明である。
【００９４】
以上のように、本実施形態においては、論理レジスタと物理レジスタとの関係を固定ししながらレジスタリネーミング制御を行う。そのため、本実施形態によれば、ゲート量を増大させることなく、単純な回路でリネーミングを実現し、演算性能が向上したベクトル計算機を提供できる。
【００９５】
（変形例）
ここで、本実施形態の変形例について一例を挙げて説明する。図１０は、本実施形態のレジスタ群３４（図３）の変形例のレジスタ群３４−２の詳細構成の概念図である。レジスタ群３４−２は、ベクトルデータの各要素に割り当てられる複数のベクトルレジスタ１３４によって構成される。図１０の例では、要素０に対応するベクトルレジスタ１３４−０、要素１に対応するベクトルレジスタ１３４−１、要素２に対応するベクトルレジスタ１３４−２、・・・、要素ｎに対応するベクトルレジスタ１３４−ｎを図示している（ｎは整数）。
【００９６】
複数の論理レジスタ（Ｌ_ＶＲ０〜７）のそれぞれには、ベクトルレジスタ１３４−０〜ｎのそれぞれに含まれる三つの物理レジスタが割り当てられる。図３において、Ｌ_ＶＲ０には、ベクトルレジスタ１３４−０〜ｎの三つの物理レジスタ（Ｒ_ＶＲ０_Ａ、Ｒ_ＶＲ０_Ｂ、Ｒ_ＶＲ０_Ｃ）が割り当てられる。同様に、Ｌ_ＶＲ１には、ベクトルレジスタ１３４−０〜ｎの三つの物理レジスタ（Ｒ_ＶＲ１_Ａ、Ｒ_ＶＲ１_Ｂ、Ｒ_ＶＲ１_Ｃ）が割り当てられる。Ｌ_ＶＲ２〜７についても、同様に、ベクトルレジスタ１３４−０〜ｎの三つの物理レジスタ（Ｒ_ＶＲ２〜７_Ａ、Ｒ_ＶＲ２〜７_Ｂ、Ｒ_ＶＲ２〜７_Ｃ）が割り当てられる。
【００９７】
すなわち、本実施形態においては、１つの論理レジスタに対応させて三つの物理レジスタが固定的に割り当てられる。図１０に示す本変形例によれば、図３に示す構成と比べて、命令の待ち合わせの発生頻度を減らすことができる。
【００９８】
（第２の実施形態）
次に、本発明の第２の実施形態に係るベクトル計算機について図面を参照しながら説明する。本実施形態のベクトル計算機は、マスク演算とベクトル長の変化を考慮したベクトルレジスタのリネーミングを行う。特に、本実施形態のベクトル計算機は、マスクされた書き込み非対象の要素をコピー動作することなく継承することを可能とする。マスクレジスタは、ベクトルレジスタとは別のレジスタとして構成してもよいし、ベクトルレジスタの一部を割り当てて構成してもよい。
【００９９】
図１１は、本実施形態の命令発行制御部２２−２の構成を示すブロック図である。図１１のように、命令発行制御部２２−２は、参照チェックテーブル２２１、リネーミング管理テーブル２２２、命令バッファ２２３、リネーミング制御部２２４を有する。また、リネーミング制御部２２４は、テーブル管理部２４１、命令管理部２４３、リネーミングルール２００を含む。なお、参照チェックテーブル２２１、リネーミング管理テーブル２２２、命令バッファ２２３、リネーミング制御部２２４は、第１の実施形態の対応する構成と同様であるが、以下において説明するような相違点が含まれる。
【０１００】
図１２は、リネーミング制御部２２４が用いるリネーミング管理テーブル２２２である。リネーミング管理テーブル２２２は、マスク値Ｖを保持する点で、第１の実施形態のリネーミング管理テーブル１２２とは異なる。リネーミング管理テーブル２２２において、マスク値Ｖが１の場合、その要素にはマスクが掛かっていないことを示す。一方、リネーミング管理テーブル２２２において、マスク値が０の場合、その要素にマスクが掛かっていることを示す。
【０１０１】
言い換えると、リネーミング管理テーブル２２２は、ベクトルデータの要素ごとに設定されるマスク値Ｖを含む。リネーミング制御部２２４は、リネーミング管理テーブル２２２を参照し、ベクトルデータの要素のうちマスク値が０の要素に関してはｎｅｘｔ値およびｒｅｆ値を更新せず、マスク値が１の要素に関してはｎｅｘｔ値およびｒｅｆ値を更新する。
【０１０２】
図１３は、リネーミングルール２００をまとめたテーブルである。図１３のリネーミングルール２００は、リネーミング管理テーブルの欄にマスク値Ｖを保持する点で、第１の実施形態のリネーミングルール１００（図７）とは異なる。リネーミングルール２００においては、Ｒ_ＶＲｎ_Ａのｒｅｆ値をｒｅｆＡ、Ｒ_ＶＲｎ_Ｂのｒｅｆ値をｒｅｆＢと記載する。
【０１０３】
リネーミング制御部２２４は、予め決められたリネーミングルール２００に従って、リネーミング管理テーブル２２２の値を更新する。リネーミング制御部２２４は、マスク値Ｖが１に設定された要素についてはリネーミング管理テーブル２２２の値を更新し、マスク値Ｖが０に設定された要素についてはリネーミング管理テーブル２２２の値を更新しない。
【０１０４】
命令発行制御部２２−２は、受け取った書き込み命令に応じて、リネーミングルール２００に従って、参照チェックテーブル２２１の値の状態に対応させてリネーミング管理テーブル２２２の設定値を更新する。以下に、リネーミングルール２００に従って、参照チェックテーブル２２１の値の状態に対応させてリネーミング管理テーブル２２２の設定値を更新する例を示す。
【０１０５】
リネーミング制御部２２４は、書き込み命令が発行された際には、以下のリネーミングルールに従って、参照チェックテーブル２２１の状態に応じて、リネーミング管理テーブル２２２の設定値を更新する。
【０１０６】
＜状態Ｃ２１＞ｎｅｘｔ値＝Ａ、ｒｅｆＡ＝０
マスク値Ｖが０ならば、設定値はＲ_ＶＲ０_Ｂのままである（設定Ｓ２１）。このとき、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂにはマスクが掛かっているため、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂに書き込みは実行されない。
【０１０７】
マスク値Ｖが１ならば、設定値にはＲ_ＶＲ０_Ｂの逆の値が設定される（設定Ｓ２２）。このとき、Ｒ_ＶＲ０_Ａには、設定Ｓ２２の設定値に従って、Ｒ_ＶＲ０_Ｂの逆の値が書き込まれる。
【０１０８】
＜状態Ｃ２２＞ｎｅｘｔ値＝Ａ、ｒｅｆＡ＜＞０、ｒｅｆＢ＝０
マスク値Ｖが０ならば、設定値はＲ_ＶＲ０_Ｂのままである（設定Ｓ２３）。このとき、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂにはマスクが掛かっているため、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂに書き込みは実行されない。
【０１０９】
マスク値Ｖが１ならば、設定値にはＲ_ＶＲ０_Ａの逆の値が設定される（設定Ｓ２４）。このとき、Ｒ_ＶＲ０_Ｂには、設定Ｓ２４の設定値に従って、Ｒ_ＶＲ０_Ａの逆の値が書き込まれる。
【０１１０】
＜状態Ｃ２３＞ｎｅｘｔ値＝Ａ、ｒｅｆＡ＜＞０、ｒｅｆＢ＜＞０
マスク値に関わらず、待ち合わせとなる（設定Ｓ２５）。
【０１１１】
＜状態Ｃ２４＞ｎｅｘｔ値＝Ｂ、ｒｅｆＢ＝０
マスク値Ｖが０ならば、設定値はＲ_ＶＲ０_Ａのままである（設定Ｓ２６）。このとき、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂにはマスクが掛かっているため、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂに書き込みは実行されない。
【０１１２】
マスク値Ｖが１ならば、設定値にはＲ_ＶＲ０_Ａの逆の値が設定される（設定Ｓ２７）。このとき、Ｒ_ＶＲ０_Ｂには、設定Ｓ７の設定値に従って、Ｒ_ＶＲ０_Ａの逆の値が書き込まれる。
【０１１３】
＜状態Ｃ２５＞ｎｅｘｔ値＝Ｂ、ｒｅｆＢ＜＞０、ｒｅｆＡ＝０
マスク値Ｖが０ならば、設定値はＲ_ＶＲ０_Ａの値のままである（設定Ｓ２８）。このとき、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂにはマスクが掛かっているため、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_Ｂに書き込みは実行されない。
【０１１４】
マスク値Ｖが１ならば、設定値にはＲ_ＶＲ０_Ｂの逆の値が設定される（設定Ｓ２９）。このとき、Ｒ_ＶＲ０_Ａには、設定Ｓ２７の設定値に従って、Ｒ_ＶＲ０_Ａの逆の値が書き込まれる。
【０１１５】
＜状態Ｃ２６＞ｎｅｘｔ値＝Ｂ、ｒｅｆＡ＜＞０、ｒｅｆＢ＜＞０
マスク値に関わらず、待ち合わせとなる（設定Ｓ３０）。
【０１１６】
読み出し命令が発行された際には、リネーミング管理テーブル２２２に設定された物理アドレスの値に従って読み出しが実行される。また、読み出しが実行された物理アドレスに対応する論理アドレスに関しては、読み出し命令が一つ実行されたため、参照チェックテーブル２２１のｒｅｆ値がカウントダウンされる。
【０１１７】
以上が、リネーミングルール２００に関する説明である。なお、参照チェックテーブル２２１の状態に応じたリネーミング管理テーブル２２２の設定値は、論理レジスタの初期状態などによって変化しうる。
【０１１８】
（動作）
次に、命令発行制御部２２−２がリネーミングルールに従って行う動作について図面を参照しながら説明する。図１４は、命令発行制御部２２−２がリネーミングルールに従って行うレジスタリネーミング制御について説明するためのフローチャートである。
【０１１９】
図１４において、まず、命令発行制御部２２−２は、参照チェックテーブルのｎｅｘｔ値を参照して書き込み先の物理アドレスを判断する（ステップＳ２０１）。
【０１２０】
ステップＳ２０１において、書き込み先の物理アドレスがＲ_ＶＲｍ_Ａの場合（ステップＳ２０１でｎｅｘｔ＝Ａ）、命令発行制御部２２−２は、ｒｅｆＡをチェックする（ステップＳ２０２）。
【０１２１】
ステップＳ２０２において、ｒｅｆＡが０の場合（ステップＳ２０２でＹｅｓ）、命令発行制御部２２−２は、マスク値Ｖをチェックする（ステップＳ２０３）。
【０１２２】
ステップＳ２０３において、マスク値Ｖが０の場合（ステップＳ２０２でＶ＝０）、Ｒ_ＶＲ０_Ａにはマスクが掛かっているため、命令発行制御部２２−２は、リネーミング管理テーブル２２２を更新しない（設定Ｓ２１）。
【０１２３】
ステップＳ２０３において、マスク値Ｖが１の場合（ステップＳ２０２でＶ＝１）、命令発行制御部２２−２は、設定２２に従ってリネーミング管理テーブル２２２を更新する。このとき、命令発行制御部２２−２は、設定Ｓ２２の設定値に従って、Ｒ_ＶＲ０_ＡにＲ_ＶＲ０_Ｂの逆の値を書き込む（ステップＳ２１０）。
【０１２４】
ステップＳ２０２において、ｒｅｆＡが０ではない場合（ステップＳ２０２でＮｏ）、命令発行制御部２２−２は、ｒｅｆＢをチェックする（ステップＳ２０４）。
【０１２５】
ステップＳ２０４において、ｒｅｆＢが０の場合（ステップＳ２０４でＹｅｓ）、命令発行制御部２２−２は、マスク値Ｖをチェックする（ステップＳ２０５）。
【０１２６】
ステップＳ２０５において、マスク値Ｖが０の場合（ステップＳ２０５でＶ＝０）、Ｒ_ＶＲ０_Ａにはマスクが掛かっているため、命令発行制御部２２−２は、リネーミング管理テーブル２２２を更新しない（設定２３）。
【０１２７】
ステップＳ２０５において、マスク値Ｖが１の場合（ステップＳ２０５でＶ＝１）、命令発行制御部２２−２は、設定２４に従ってリネーミング管理テーブル２２２を更新する。このとき、命令発行制御部２２−２は、設定Ｓ２４の設定値に従って、Ｒ_ＶＲ０_ＢにＲ_ＶＲ０_Ａの逆の値を書き込む（ステップＳ２１０）。
【０１２８】
ステップＳ２０４において、ｒｅｆＢが０ではない場合（ステップＳ２０４でＮｏ）、命令発行制御部２２−２は、設定Ｓ２５に従って待ち合わせる（ステップＳ２１１）。
【０１２９】
一方、ステップＳ２０１において、書き込み先の物理アドレスがＲ_ＶＲｍ_Ｂの場合（ステップＳ２０１でｎｅｘｔ＝Ｂ）、命令発行制御部２２−２は、ｒｅｆＢをチェックする（ステップＳ２０６）。
【０１３０】
ステップＳ２０６において、ｒｅｆＢが０の場合（ステップＳ２０６でＹｅｓ）、命令発行制御部２２−２は、マスク値Ｖをチェックする（ステップＳ２０７）。
【０１３１】
ステップＳ２０７において、マスク値Ｖが０の場合（ステップＳ２０７でＶ＝０）、Ｒ_ＶＲ０_Ｂにはマスクが掛かっているため、命令発行制御部２２−２は、リネーミング管理テーブル２２２を更新しない（設定Ｓ２６）。
【０１３２】
ステップＳ２０７において、マスク値Ｖが１の場合（ステップＳ２０７でＶ＝１）、命令発行制御部２２−２は、設定２７に従ってリネーミング管理テーブル２２２を更新する。このとき、命令発行制御部２２−２は、設定Ｓ２７の設定値に従って、Ｒ_ＶＲ０_ＢにＲ_ＶＲ０_Ａの逆の値を書き込む（ステップＳ２１０）。
【０１３３】
ステップＳ２０２において、ｒｅｆＢが０ではない場合（ステップＳ２０６でＮｏ）、命令発行制御部２２−２は、ｒｅｆＡをチェックする（ステップＳ２０８）。
【０１３４】
ステップＳ２０８において、ｒｅｆＡが０の場合（ステップＳ２０８でＹｅｓ）、命令発行制御部２２−２は、マスク値Ｖをチェックする（ステップＳ２０９）。
【０１３５】
ステップＳ２０９において、マスク値Ｖが０の場合（ステップＳ２０９でＶ＝０）、Ｒ_ＶＲ０_Ｂにはマスクが掛かっているため、命令発行制御部２２−２は、リネーミング管理テーブル２２２を更新しない（設定Ｓ２８）。
【０１３６】
ステップＳ２０９において、マスク値Ｖが１の場合（ステップＳ２０９でＶ＝１）、命令発行制御部２２−２は、設定２９に従ってリネーミング管理テーブル２２２を更新する。このとき、命令発行制御部２２−２は、設定Ｓ２９の設定値に従って、Ｒ_ＶＲ０_ＡにＲ_ＶＲ０_Ｂの逆の値を書き込む（ステップＳ２１０）。
【０１３７】
ステップＳ２０８において、ｒｅｆＡが０ではない場合（ステップＳ２０８でＮｏ）、命令発行制御部２２−２は、設定Ｓ３０に従って待ち合わせる（ステップＳ２１１）。
【０１３８】
以上が、リネーミングルールに従って命令発行制御部２２−２が行うレジスタリネーミング制御についての説明である。
【０１３９】
以上のように、本実施形態によれば、マスク演算のための特別なレジスタ読出しをすることなく、プログラムに記述された命令の順序を変更して実行するアウト・オブ・オーダーを可能とし、演算性能が向上したベクトル計算機を提供できる。
【０１４０】
（実施例）
次に、第２の実施形態に係る実施例として、命令発行制御部２２−２によるレジスタリネーミング制御に伴うリネーミング管理テーブル２２２の値の遷移について説明する。なお、以下の実施例は、第２の実施形態と同じ構成を用いて説明する。
【０１４１】
図１５〜図２０は、命令発行制御部２２−２が、論理レジスタ（Ｌ_ＶＲ０）のリネーミング管理テーブル２２２の値を書き込み回数に伴って遷移させる例について説明するための一例である。なお、Ｌ_ＶＲ０以外の論理レジスタ（Ｌ_ＶＲ１〜７）に関しても同様である。
【０１４２】
図１５は、論理レジスタＶＲ０のリネーミング管理テーブル２２２の初期状態を示す。図１５のように、初期状態においては、論理レジスタＶＲ０の全ての要素がＶＲ０_Ａを指している。また、初期状態において、参照チェックテーブル１１５のｎｅｘｔ値はＡであり、ｒｅｆＡは０であるものとする。
【０１４３】
まず、１回目のＶＲ０への書き込み命令が、要素長１６（ＶＬ＝１６）、マスク値Ｖが全て１で発行される。このとき、ｎｅｘｔ値がＡであるため、命令発行制御部２２−２は、リネーミング管理テーブル２２２のＲ_ＶＲ０_Ａ側の値を更新する。
【０１４４】
図１３のリネーミングルール２００によると、ｎｅｘｔ値がＡであり、ｒｅｆＡが０であるため、参照チェックテーブル２２１は状態Ｃ２１である。このとき、全ての要素のマスク値Ｖが１であるため、命令発行制御部２２−２は、リネーミング管理テーブル２２２のＲ_ＶＲ０_Ａ側の値（ＶＲ０_Ａ）をＲ_ＶＲ０_Ｂ側の値の逆の値に設定する（設定Ｓ２２）。ここでは、Ｒ_ＶＲ０_Ａ側に書き込みが行われたため、命令発行制御部２２−２は、参照チェックテーブル２２１のＶＲ０に対するｎｅｘｔ値をＢに更新する。このとき、後続にＶＲ０の読み出し命令が発行されると、全要素でＶＲ０_Ａの値が読み出される。リネーミング管理テーブル２２２は図１６の右側の状態に遷移する。
【０１４５】
次に、２回目のＶＲ０への書き込み命令が、要素長１４（ＶＬ＝１４）かつ一部の要素（要素３、５、８、１２）のマスク値が０で発行される。このとき、ｎｅｘｔ値がＢであるため、命令発行制御部２２−２は、リネーミング管理テーブル２２２のＲ_ＶＲ０_Ｂ側の値を更新する。
【０１４６】
図１３のリネーミングルール２００によると、ｎｅｘｔ値がＢであり、ｒｅｆＢが０であるため、参照チェックテーブル２２１は状態Ｃ２４である。命令発行制御部２２−２は、Ｖ＝１の要素（要素０〜２、４、６、７、９〜１１、１３）に関しては、Ｒ_ＶＲ０_Ａの値（ＶＲ０_Ａ）の逆の値（ＶＲ０_Ｂ）を設定する（設定Ｓ２７）。一方、命令発行制御部２２−２は、Ｖ＝０の要素（要素３、５、８、１２）に関しては、Ｒ_ＶＲ０_Ａ側の値（ＶＲ０_Ａ（＊１））をそのまま設定する（設定Ｓ２６）。また、命令発行制御部２２−２は、要素長ＶＬの範囲外である要素１４と要素１５に関しては、書き込みを実行しないため、Ｒ_ＶＲ０_Ａ側の値（ＶＲ０_Ａ（＊２））をそのまま設定する。また、Ｒ_ＶＲ０_Ｂ側に書き込みが行われたため、命令発行制御部２２−２は、参照チェックテーブル２２１のＶＲ０に対応するｎｅｘｔ値をＡに更新する。リネーミング管理テーブル２２２は図１７の右側の状態に遷移する。
【０１４７】
次に、３回目のＶＲ０への書き込み命令が、要素長１６（ＶＬ＝１６）かつマスクが全て１で発行される。このとき、ｎｅｘｔ値がＡであるため、命令発行制御部２２−２は、先行のＲ_ＶＲ０_Ａ側へのリード命令が待ち合わされていなければ（ｒｅｆＡ＝０の状態）Ｒ_ＶＲ０_Ａ側の値を更新する。
【０１４８】
図１３のリネーミングルールによると、ｎｅｘｔ値がＡであり、ｒｅｆＡが０であるため、参照チェックテーブル２２１は状態Ｃ２１である。マスクが全て１であるので、命令発行制御部２２−２は、Ｒ_ＶＲ０_Ｂ側の値の逆の値を全ての要素に設定する（設定Ｓ２２）。また、命令発行制御部２２−２は、Ｒ_ＶＲ０_Ａ側に書き込みを行ったため、参照チェックテーブル２２１のｎｅｘｔ値をＢに更新する。ネーミング管理テーブル２２２は図１８の右側の状態に遷移する。
【０１４９】
次に、４回目のＶＲ０への書き込み命令が、要素長１６（ＶＬ＝１６）かつ一部の要素（要素２、３、７、１２）のマスク値が０で発行される。このとき、ｎｅｘｔ値がＢであるため、命令発行制御部２２−２は、先行のＲ_ＶＲ０_Ｂ側へのリード命令を待ち合わせ、Ｒ_ＶＲ０_Ｂ側の値を更新する。一方、先行のＲ_ＶＲ０_Ｂ側へのリード命令が待ち合わされており、かつＲ_ＶＲ０_Ａ側へのリード命令が待ち合わされていなければ、命令発行制御部２２−２は、ｎｅｘｔ値がＢであっても、Ｒ_ＶＲ０_Ａ側の値を更新する。
【０１５０】
図１３のリネーミングルールによると、ｎｅｘｔ値がＢであり、ｒｅｆＢが０ではなく、ｒｅｆＡが０であるため、参照チェックテーブル２２１は状態Ｃ２５である。命令発行制御部２２−２は、Ｖ＝１の要素（要素０、１、４〜６、８〜１１、１３〜１５）に関しては、Ｒ_ＶＲ０_Ｂの値の逆の値をＲ_ＶＲ０_Ａに設定するため、Ｒ_ＶＲ０_ＡにはＶＲ０_Ａが設定される（設定Ｓ２９）。一方、命令発行制御部２２−２は、Ｖ＝０の要素（要素２、３、７、１２）に関しては、Ｒ_ＶＲ０_Ａ側の値をそのまま設定する（設定Ｓ２８）。また、命令発行制御部２２−２は、Ｒ_ＶＲ０_Ａ側に書き込みを行ったため、参照チェックテーブル２２１のｎｅｘｔ値をＢに更新する。ネーミング管理テーブル２２２は図１９の右側の状態に遷移する。
【０１５１】
次に、５回目のＶＲ０への書き込み命令が、要素長１６（ＶＬ＝１６）かつ一部の要素（要素２、３、７、１２）のマスク値が０で発行される。このとき、ｎｅｘｔ値がＢであるため、命令発行制御部２２−２は、先行のＲ_ＶＲ０_Ｂ側へのリード命令の待ち合わせが解消（ｒｅｆＢ＝０）されていれば（状態Ｃ２４）、Ｒ_ＶＲ０_Ｂの値を更新する。
【０１５２】
図１３のリネーミングルールによると、ｎｅｘｔ値がＢであり、ｒｅｆＢ＝０があれば、参照チェックテーブル２２１は状態Ｃ２４である。命令発行制御部２２−２は、Ｖ＝１の要素（要素０、１、４−６、８−１１、１３−１５）に関しては、Ｒ_ＶＲ０_Ａの値の逆の値をＲ_ＶＲ０_Ｂに設定する（設定Ｓ２７）。一方、命令発行制御部２２−２は、Ｖ＝０の要素（要素２、３、７、１２）に関しては、Ｒ_ＶＲ０_Ａ側の値をそのまま設定する（設定Ｓ２６）。また、命令発行制御部２２−２は、Ｒ_ＶＲ０_Ｂ側に書き込みを行ったため、参照チェックテーブル２２１のｎｅｘｔ値をＡに更新する。ネーミング管理テーブル２２２は図２０の右側の状態に遷移する。
【０１５３】
なお、ＶＲ０への書き込み時に、Ｒ_ＶＲ０_Ａ、Ｒ_ＶＲ０_Ｂの両方のｒｅｆの値が０ではないときは（状態Ｃ２３または状態Ｃ２６）、リード命令が待ち合わされていることを意味する。この場合、命令発行制御部２２−２は、Ｒ_ＶＲ０_ＡおよびＲ_ＶＲ０_ＢのいずれのＶＲ０も更新できないため、命令を待ち合わせる。
【０１５４】
以上の一連の動作により、余計なデータの移送することなくリネーミング動作をすることができる。
【０１５５】
（ハードウェア）
ここで、本発明の各実施形態に係る制御系統（命令制御装置や命令発行制御装置）を実行するハードウェア構成について、図２１の制御装置９０を一例として挙げて説明する。なお、図２１の制御装置９０は、各実施形態の制御系統を実行するための構成例であって、本発明の範囲を限定するものではない。
【０１５６】
図２１のように、制御装置９０は、プロセッサ９１、記憶装置９３および入出力インターフェース９５を備える。図２１においては、インターフェースをＩ／Ｆ（Interface）と略して表記する。プロセッサ９１、記憶装置９３および入出力インターフェース９５は、バス９９を介して互いにデータ通信可能に接続される。また、プロセッサ９１および記憶装置９３は、入出力インターフェース９５を介して、インターネットやイントラネットなどのネットワークに接続されてもよい。
【０１５７】
プロセッサ９１は、所定のプログラムを記憶装置９３に展開し、記憶装置９３に展開されたプログラムを実行する。本実施形態においては、制御装置９０にインストールされたソフトウェアプログラムを用いる構成とすればよい。プロセッサ９１は、本実施形態に係る制御系統による処理を実行する。
【０１５８】
記憶装置９３は、プログラムが展開される領域を有する。記憶装置９３は、例えばＤＲＡＭ（Dynamic Random Access Memory）などの揮発性メモリとすればよい。また、ＭＲＡＭ（Magnetoresistive Random Access Memory）などの不揮発性メモリを記憶装置９３として構成・追加してもよい。また、記憶装置９３は、ハードディスクやフラッシュメモリなどのローカルディスクを含んでよい。また、記憶装置９３は、プロセッサ９１の記憶領域（レジスタなど）を含むように構成してもよい。
【０１５９】
入出力インターフェース９５は、制御装置９０と周辺回路とを接続するためのインターフェースである。
【０１６０】
制御装置９０には、必要に応じて、ディスクドライブを接続してもよい。例えば、ディスクドライブは、バス９９に接続される。ディスクドライブは、プロセッサ９１と図示しない記録媒体（プログラム記録媒体）との間で、記録媒体からのデータ・プログラムの読み出し、制御装置９０の処理結果の記録媒体への書き込みなどを仲介する。記録媒体は、例えば、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光学記録媒体で実現できる。また、記録媒体は、ＵＳＢ（Universal Serial Bus）メモリやＳＤ（Secure Digital）カードなどの半導体記録媒体や、フレキシブルディスクなどの磁気記録媒体、その他の記録媒体によって実現してもよい。
【０１６１】
以上が、本発明の各実施形態に係る制御系統を可能とするためのハードウェア構成の一例である。なお、図２１のハードウェア構成は、各実施形態に係る制御系統の演算処理を実行するためのハードウェア構成の一例であって、本発明の範囲を限定するものではない。また、各実施形態に係る制御系統に関する処理をコンピュータに実行させるプログラムも本発明の範囲に含まれる。さらに、各実施形態に係るプログラムを記録したプログラム記録媒体も本発明の範囲に含まれる。各実施形態に係るプログラムは、ネットワーク経由で制御装置９０に提供されてもよい。
【０１６２】
各実施形態の制御系統の構成要素は、任意に組み合わせることができる。また、各実施形態の制御系統の構成要素は、ソフトウェアによって実現してもよいし、回路によって実現してもよい。
【０１６３】
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１６４】
１    ベクトル計算機
１０    ベクトルプロセッサ
２０    命令制御部
２１    命令格納部
２２    命令発行制御部
２３    命令実行制御部
３０    演算部
３１    読み出しクロスバ
３２    演算部
３３    書き込みクロスバ
３４    レジスタ群
４０    メインメモリ
１００、２００    リネーミングルール
１２１、２２１    参照チェックテーブル
１２２、２２２    リネーミング管理テーブル
１２３、２２３    命令バッファ
１２４、２２４    リネーミング制御部
１３４    ベクトルレジスタ
１４１、２４１    テーブル管理部
１４３、２４３    命令管理部
【図１】
2019086809.tif 000003
【図２】
2019086809.tif 000004
【図３】
2019086809.tif 000005
【図４】
2019086809.tif 000006
【図５】
2019086809.tif 000007
【図６】
2019086809.tif 000008
【図７】
2019086809.tif 000009
【図８】
2019086809.tif 000010
【図９】
2019086809.tif 000011
【図１０】
2019086809.tif 000012
【図１１】
2019086809.tif 000013
【図１２】
2019086809.tif 000014
【図１３】
2019086809.tif 000015
【図１４】
2019086809.tif 000016
【図１５】
2019086809.tif 000017
【図１６】
2019086809.tif 000018
【図１７】
2019086809.tif 000019
【図１８】
2019086809.tif 000020
【図１９】
2019086809.tif 000021
【図２０】
2019086809.tif 000022
【図２１】
2019086809.tif 000023