(57)【要約】【課題】効率的にベクトル命令を実行するベクトル演算処理装置及び方法を提供する。【解決手段】ベクトル命令制御部２は、命令発行待機バッファ部２０４と、ベクトル命令が使用するテンポラリレジスタを決定し、ベクトル命令のオペランドに指定されたレジスタ番号がテンポラリレジスタと一致する場合、オペランドレジスタをテンポラリレジスタにリネームし、演算処理命令と演算結果転送命令とに分離して命令発行待機バッファ部２０４へ格納する命令解析手段４１と、実行待ちベクトル命令のうち書き込み先のベクトルレジスタが同じを解析し、同一ベクトルレジスタに格納する、先行して実行される演算処理命令を検出し、検出した演算処理命令に対応する演算結果転送命令発行を中止させる待機命令制御手段４２と、実行待ちベクトル命令へベクトル演算部３へ発行することを管理する命令発行管理手段４３と、を備える。【選択図】図１
2010067141.tif 000002
【特許請求の範囲】
【請求項１】
ベクトル命令を受け付け、ベクトル命令の発行を管理するベクトル命令制御手段と、
ベクトル命令制御手段から発行されたベクトル命令を受け付け、ベクトルレジスタを用いて、ベクトル命令を、演算結果をテンポラリレジスタに一時的に格納する演算処理命令と、テンポラリレジスタに格納した演算結果をベクトルレジスタへ転送する演算結果転送命令とに分解して実行するベクトル演算手段とを備えるベクトル処理装置であって、
前記ベクトル命令制御手段は、
実行待ちベクトル命令を、演算処理命令と演算結果転送命令に分解した状態で格納する命令発行待機バッファ手段と、
ベクトル命令を受け付け、前記受け付けたベクトル命令が使用するテンポラリレジスタを決定し、前記受け付けたベクトル命令のオペランドに指定されたレジスタ番号がテンポラリレジスタと一致する場合、前記受け付けたベクトル命令のオペランドレジスタを前記テンポラリレジスタにリネームし、前記受け付けたベクトル命令と前記リネームしたベクトル命令とのいずれかについて、前記演算処理命令と前記演算結果転送命令とに分離して前記命令発行待機バッファ手段へ格納する命令解析手段と、
前記実行待ちベクトル命令のうち書き込み先のベクトルレジスタが同じを解析し、同一ベクトルレジスタに格納する、先行して実行される演算処理命令を検出し、検出した演算処理命令に対応する演算結果転送命令発行を中止させる待機命令制御手段と、
前記実行待ちベクトル命令の発行を管理する命令発行管理手段と、を備えるベクトル処理装置。
【請求項２】
前記待機命令制御手段は、前回受け付けたベクトル命令の要素数を保持し、新たに受け付けたベクトル命令の要素数が前記前回受け付けたベクトル命令の要素数より小さくなっている場合、演算結果転送命令の発行を中止させることを禁止する無効化禁止信号を出力することを特徴とする請求項１記載のベクトル処理装置。
【請求項３】
前記待機命令制御手段は、前記命令解析手段でリネームされたベクトル命令の演算処理命令を解析し、演算処理命令のオペランド指定がテンポラリレジスタにリネームされていない場合、先行して実行するベクトル命令であり、かつ、リネームされていないベクトルレジスタに書き込むベクトル命令について、前記無効化禁止信号を出力することを特徴とする請求項２記載のベクトル処理装置。
【請求項４】
前記命令発行待機バッファ手段は、前記演算処理命令及び前記演算結果転送命令に加え、前記無効化禁止信号が出力されたか否かを示すフラグを前記演算処理命令及び前記演算結果転送命令に対応づけて格納する領域を有することを特徴とする請求項２または３記載のベクトル処理装置。
【請求項５】
前記命令発行管理手段は、前記フラグが前記無効化禁止命令の出力を示している場合、前記演算結果転送命令を発行することを特徴とする請求項２乃至４のいずれか一項に記載のベクトル処理装置。
【請求項６】
実行待ちベクトル命令を、演算結果をテンポラリレジスタに一時的に格納する演算処理命令と、テンポラリレジスタに格納した演算結果をベクトルレジスタへ転送する演算結果転送命令とに分解した状態で格納する命令発行待機バッファ手段を備えるベクトル処理方法であって、
ベクトル命令を受け付け、前記受け付けたベクトル命令が使用するテンポラリレジスタを決定し、
前記受け付けたベクトル命令のオペランドに指定されたレジスタ番号がテンポラリレジスタと一致する場合、前記受け付けたベクトル命令のオペランドレジスタを前記テンポラリレジスタにリネームし、
前記受け付けたベクトル命令と前記リネームしたベクトル命令とのいずれかについて、前記演算処理命令と前記演算結果転送命令とに分離して前記命令発行待機バッファ手段へ格納し、
前記実行待ちベクトル命令のうち書き込み先のベクトルレジスタが同じを解析し、
同一ベクトルレジスタに格納する、先行して実行される演算処理命令を検出し、検出した演算処理命令に対応する演算結果転送命令発行を中止させ、
前記実行待ちベクトル命令の発行を管理し、ベクトル命令を実行するベクトル演算手段へ出力するベクトル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主にベクトル演算命令発行制御に関する。
【背景技術】
【０００２】
近年、プロセッサなどのハードウェア装置は、命令実行の速度がより速くなるように改善されており、一サイクルで同時に複数の命令を発行して実行することが可能になっている。例えば、ベクトル処理装置では、ベクトル命令を複数の演算器を用いて並列して実行している。ハードウェア装置の性能を改善する技術が例えば、特許文献１、２に開示されている。
【０００３】
ベクトル命令を実行するベクトル処理装置では、ベクトルレジスタを用いて、ベクトル命令を実行し、演算結果をテンポラリレジスタに一時的に格納する演算処理命令と、テンポラリレジスタに格納した演算結果をベクトルレジスタへ転送する演算結果転送命令とに分解して実行している。
【特許文献１】特開２００６−０７９６２３号公報
【特許文献２】特開昭５８−１５４０４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ベクトル処理装置において、演算レジスタが１ポートＲＡＭ（Random Access Memory）で構成される場合に、演算命令実行時に演算処理命令によるレジスタからの読み出し処理と、演算結果転送命令による演算結果の書き込み処理とを実行するため、ＲＡＭへのアクセスが競合してしまうことがあった。
【０００５】
これは、ＬＳＩ（large Scale Integration）の面積を小さくするために演算レジスタその他のハードウェア量を最小限に抑える必要があるため、１ポートＲＡＭを採用するためである。具体的には、１ポートＲＡＭ、すなわち、あるタイミングで読み出し処理または書き込み処理のどちらか一方を実行可能なＲＡＭを採用するため、ＲＡＭへのアクセスが競合するという問題があった。
【０００６】
また、ＬＳＩコスト削減の観点から論理演算部が占める面積を小さくするために演算レジスタその他のハードウェア量最小化は永年の課題である。従って、１ポートＲＡＭを採用せざるをえない状況において、レジスタからの読み出し処理と演算結果の書き込み処理とで競合が発生してしまう構成においても演算性能向上が求められていた。
【０００７】
本発明の目的は、効率的にベクトル命令が実行可能なベクトル処理装置及び方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係るベクトル処理装置の一態様は、ベクトル命令を受け付け、ベクトル命令の発行を管理するベクトル命令制御手段と、ベクトル命令制御手段から発行されたベクトル命令を受け付け、ベクトルレジスタを用いて、ベクトル命令を、演算結果をテンポラリレジスタに一時的に格納する演算処理命令と、テンポラリレジスタに格納した演算結果をベクトルレジスタへ転送する演算結果転送命令とに分解して実行するベクトル演算手段とを備えるベクトル処理装置であって、前記ベクトル命令制御手段は、実行待ちベクトル命令を、演算処理命令と演算結果転送命令に分解した状態で格納する命令発行待機バッファ手段と、ベクトル命令を受け付け、前記受け付けたベクトル命令が使用するテンポラリレジスタを決定し、前記受け付けたベクトル命令のオペランドに指定されたレジスタ番号がテンポラリレジスタと一致する場合、前記受け付けたベクトル命令のオペランドレジスタを前記テンポラリレジスタにリネームし、前記受け付けたベクトル命令と前記リネームしたベクトル命令とのいずれかについて、前記演算処理命令と前記演算結果転送命令とに分離して前記命令発行待機バッファ手段へ格納する命令解析手段と、前記実行待ちベクトル命令のうち書き込み先のベクトルレジスタが同じを解析し、同一ベクトルレジスタに格納する、先行して実行される演算処理命令を検出し、検出した演算処理命令に対応する演算結果転送命令発行を中止させる待機命令制御手段と、前記実行待ちベクトル命令の発行を管理する命令発行管理手段と、を備える。
【０００９】
また、本発明に係るベクトル処理方法の一態様は、実行待ちベクトル命令を、演算結果をテンポラリレジスタに一時的に格納する演算処理命令と、テンポラリレジスタに格納した演算結果をベクトルレジスタへ転送する演算結果転送命令とに分解した状態で格納する命令発行待機バッファ手段を備えるベクトル処理方法であって、ベクトル命令を受け付け、前記受け付けたベクトル命令が使用するテンポラリレジスタを決定し、前記受け付けたベクトル命令のオペランドに指定されたレジスタ番号がテンポラリレジスタと一致する場合、前記受け付けたベクトル命令のオペランドレジスタを前記テンポラリレジスタにリネームし、前記受け付けたベクトル命令と前記リネームしたベクトル命令とのいずれかについて、前記演算処理命令と前記演算結果転送命令とに分離して前記命令発行待機バッファ手段へ格納し、前記実行待ちベクトル命令のうち書き込み先のベクトルレジスタが同じを解析し、同一ベクトルレジスタに格納する、先行して実行される演算処理命令を検出し、検出した演算処理命令に対応する演算結果転送命令発行を中止させ、前記実行待ちベクトル命令の発行を管理し、ベクトル命令を実行するベクトル演算手段へ出力する。
【発明の効果】
【００１０】
本発明によれば、効率的にベクトル命令を実行することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００１２】
（実施形態１）
実施形態では、ベクトル命令を分割した演算処理命令と演算結果転送命令のうち、演算結果転送命令の実行を制御することによって、ベクトル命令の実行の効率化を図る一態様を説明する。本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明の実施形態１に係るベクトル処理装置の命令発行機構の概略を示すブロック図である。ベクトル処理装置は、スカラープロセッシングユニット（以下、適宜「ＳＰＵ」と記す）１、ベクトル命令制御部（以下、適宜「ＶＩＣ」と記す）２、及びベクトル演算パイプ部（以下、適宜「ＶＰＰ」と記す）を備える。
【００１３】
図１において、スカラープロセッシングユニット１は、ＶＰＰ３０〜３７の演算リソースを使うベクトル命令を識別してＶＩＣ２に送出する機能を持つ。
【００１４】
ベクトル命令制御部（ベクトル命令制御手段）２は、ＳＰＵ１から受けたベクトル命令をバッファリングし、演算リソースのビジーを管理し、適切なタイミングでベクトル命令の実行指示をＶＰＰ３０〜３７に送出する。
【００１５】
ベクトル演算パイプ部３０〜３７は、ＶＩＣ２から受けたベクトル命令実行指示に従って指定のベクトル演算処理を実行する。ここでは、８つのベクトル演算パイプ部３０〜３７を備える場合を示しているが、この数に限られるわけではない。また、以降の説明では、ベクトル演算パイプ部３０〜３７の全体を示す場合、ベクトル演算部（ベクトル演算手段）３という。
【００１６】
続いて、ＶＩＣ２の構成を説明する。ＶＩＣ２は、命令解析手段４１、待機命令制御手段４２、命令発行管理手段４３、及び命令発行待機バッファ部２０４から構成される。
【００１７】
命令解析手段４１は、ベクトル命令を受け付け、受け付けたベクトル命令が使用するテンポラリレジスタを決定する。そして、受け付けたベクトル命令のオペランドに指定されたレジスタ番号がテンポラリレジスタと一致する場合、受け付けたベクトル命令のオペランドレジスタをテンポラリレジスタにリネームする。さらに、受け付けたベクトル命令と前記リネームしたベクトル命令とのいずれかについて、演算処理命令と演算結果転送命令とに分離して命令発行待機バッファ部２０４へ格納する。命令解析手段４１は、ベクトル命令バッファ部２０１、命令間依存関係解析部２０２、及び、命令分解およびリネーム処理部２０３を備える。
【００１８】
また、待機命令制御手段４２は、実行待ちベクトル命令のうち書き込み先のベクトルレジスタが同じを解析し、同一ベクトルレジスタに格納する、先行して実行される演算処理命令を検出し、検出した演算処理命令に対応する演算結果転送命令発行を中止させる。待機命令制御手段４２は、同一ＶＲ書き込み認識部２０８、ＴＲ番号使用認識部２０９、及びリタイア命令無効化処理部２１０を備える。
【００１９】
命令発行管理手段４３は、実行待ちベクトル命令の発行を管理する。命令発行管理手段４３は、命令発行チェック部２０５、命令発行部２０６、及び、パスビジー管理部２０７を備える。
【００２０】
以上各手段の機能の概略を説明したが、命令解析手段４１、待機命令制御手段４２、及び命令発行管理手段４３に含まれる各構成要素、及び命令発行待機バッファ部２０４について詳細に説明する。
【００２１】
ベクトル命令バッファ部２０１は、ＳＰＵ１より受け取ったベクトル命令を一旦バッファリングする。ＳＰＵ１から受け取るベクトル命令には、ベクトル命令の書き込み先レジスタ番号、ＶＬ長情報が含まれる。ベクトル命令バッファ部２０１は、命令発行待機バッファ部２０４がビジーで無ければバッファリングしたベクトル命令を読み出すとともにベクトル命令に対してＩＤを付与して命令間依存関係解析部２０２に送出する。「命令発行待機バッファ部２０４がビジー」とは、命令発行待機バッファ部２０４に空きがない状態をいう。また、命令発行待機バッファ部２０４がビジーである場合、ベクトル命令バッファ部２０１は、命令発行待機バッファ部２０４のビジー状態が解消されるまで待つ。このとき、ＳＰＵ１より命令が送出され続けると、自己のメモリが一杯になり、ＳＰＵ１からの命令を保持できないため、ベクトル命令バッファ部２０１は、ＳＰＵ１へビジー信号を送信し、命令の送出停止を指示する。
【００２２】
命令間依存関係解析部２０２は、ベクトル命令バッファ部２０１よりベクトル命令とＩＤとを受け取り、命令依存情報の生成し、ベクトル命令、ＩＤ、及び命令依存情報を命令分解およびリネーム処理部２０３へ送出する。具体的には、命令間依存関係解析部２０２は、受け取ったベクトル命令と命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４に存在する先行ベクトル命令とのレジスタ依存関係を解析し、解析した結果を命令依存情報として生成する。命令間依存関係は、Read after Write、Write after Read、Write after Write、または、依存関係なしのいずれかの情報となる。
【００２３】
また、命令間依存関係解析部２０２に存在するベクトル命令の書き込み先レジスタ番号およびＶＬ長情報およびＩＤを同一ＶＲ書き込み認識部２０８に送出する。命令間依存関係解析部２０２に存在するベクトル命令とは、ベクトル命令バッファ部２０１から送出されたベクトル命令である。命令間依存関係解析部２０２は、ベクトル命令バッファ部２０１から送出されたベクトル命令を保持し、次に新たなベクトル命令が送出されたときに、差し替えられる（上書きされる）。すなわち、命令間依存関係解析部２０２は、ベクトル命令バッファ部２０１から送出された最新のベクトル命令（一つ）を保持している。
【００２４】
命令分解およびリネーム処理部２０３は、命令間依存関係解析部２０２より受け取ったベクトル命令が使用する演算結果格納用のテンポラリレジスタ領域を決定する。また、演算オペランドに指定されたレジスタ番号（ＶＲ番号）がテンポラリレジスタ（ＴＲ）に存在する場合にはオペランドに指定されたレジスタをテンポラリレジスタにリネームして、その情報を命令分解およびリネーム処理部２０３内のリネームテーブルに保持する。
【００２５】
図２にリネームテーブルの一例を示す。図２では、結果格納レジスタ番号が１種類である場合を示している。リネームテーブルに保持されたエントリを削除するタイミングはテンポラリレジスタからベクトルレジスタへの演算結果転送命令（リタイア命令）が発行されたタイミングである。命令発行待機バッファ部２０４内に格納されている未実行命令のオペランドにテンポラリレジスタ番号が含まれていない場合、エントリがリセットされることになる。すなわち、未実行命令のオペランドにテンポラリレジスタ番号が含まれている場合、転送命令を発行しないことが前提となっているため、結果として、エントリがリセットされることはない。
【００２６】
また、命令分解およびリネーム処理部２０３は、ベクトル命令をリネームした後に、ベクトル命令を演算結果格納用のテンポラリレジスタ領域に格納するまでの演算処理命令と、演算結果格納用のテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令の２つに分解する。命令分解およびリネーム処理部２０３は、２つに分解されたベクトル命令（演算処理命令及び演算結果転送命令）、命令間依存関係解析部２０２から受け取った命令間依存情報及びＩＤを命令発行待機バッファ部２０４に送出する。さらにリネームした後のベクトル命令情報をＴＲ番号使用認識部２０９に送出する。
【００２７】
命令発行待機バッファ部２０４は、次の（１）〜（５）の機能を有する。（１）命令分解およびリネーム処理部２０３から受け取った分解されたベクトル命令、命令間依存情報及びＩＤを格納し、ベクトル命令の発行チェックに必要な情報を命令発行チェック部２０５に送出する機能。（２）後述の命令発行チェック部２０５からＩＤとエントリリセット指示を受け取り、指示のあったＩＤに対応するエントリを一定期間後にリセットする機能。さらに（３）リタイア命令無効化処理部２１０から命令発行待機バッファ部２０４内リタイア命令の格納フィールドにリタイア命令無効化禁止フラグが有効では無い場合に、リタイア命令無効化処理部２１０から受け取ったＩＤに対応する演算結果転送命令を無効化する機能。（４）リタイア命令無効化処理部２１０からリタイア命令無効化禁止フラグ有効化信号を受け取ると命令発行待機バッファ部２０４内に格納されている全ての演算結果転送命令の格納フィールドのリタイア命令無効化禁止フラグを有効とする機能。（５）リタイア命令無効化処理部２１０から受け取ったオペランド入力ベクトルレジスタ番号に対してライトするリタイア命令格納フィールドのリタイア命令無効化禁止フラグを有効とする機能。
【００２８】
命令発行チェック部２０５は、命令発行待機バッファ部２０４からベクトル命令の発行チェックに必要な情報として命令間依存情報を受け、命令間依存関係が無く発行可能な命令の中から適切なベクトル命令を選択する。また、命令発行チェック部２０５は、その選択したベクトル命令で使用する演算器や各種データ転送パスなどの演算リソースビジー情報を後述のパスビジー管理部２０７から受け取り、使用する演算リソースすべてにおいてビジーではないという条件を確認すると発行確定と判断して命令発行部２０６およびパスビジー管理部２０７に発行確定となったベクトル命令を送出する。
【００２９】
命令発行部２０６は、命令発行チェック部２０５より発行確定となったベクトル命令を受け取り、後述するベクトル演算部３でのベクトル命令実行に必要な情報の生成を行ってベクトル演算部３に送出する機能を持つ。
【００３０】
パスビジー管理部２０７は、命令発行チェック部２０５から発行確定となったベクトル命令を受け取り、そのベクトル命令が使用する演算リソースそれぞれについてビジー情報を管理する機能と、すべての演算リソースのビジー情報を命令発行チェック部２０５に送出する機能を持つ。ここでは、命令発行部２０６は、ＶＰＰ３０〜３７が同時に動作を開始するように指示することを前提としている。このため、パスビジー管理部２０７は、ＶＰＰ３０から３７の一つのビジー情報を管理する。ここでは、ＶＰＰ３０〜３７が同時に動作を開始するように指示することを前提としている。例えば、ＶＰＰ３０のＶＲ３０３、ＶＲＲ３０９のビジー情報（使用中であるか否か）を管理する。
【００３１】
同一ＶＲ書き込み認識部２０８は、ベクトル命令の書き込み先レジスタ番号およびＶＬ長情報を命令間依存関係解析部２０２から受け取る。同一ＶＲ書き込み認識部２０８は、命令間依存関係解析部２０２に存在する（受け取った）ベクトル命令の書き込み先レジスタ番号と、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４に存在するベクトル命令の書き込み先レジスタ番号を比較して一致したベクトル命令のＩＤをすべてＴＲ番号使用認識部２０９に送出する。具体的には、（１）命令間依存関係解析部２０２が保持するベクトル命令の書き込み先レジスタ番号と、命令分解およびリネーム処理部２０３が保持するベクトル命令の書き込み先レジスタ番号比較し、一致するベクトル命令の書き込み先レジスタ番号を抽出する。続いて、（２）命令間依存関係解析部２０２が保持するベクトル命令の書き込み先レジスタ番号と、命令発行待機バッファ部２０４が保持するベクトル命令の書き込み先レジスタ番号比較し、一致するベクトル命令の書き込み先レジスタ番号を抽出する。（３）上記（１）、（２）で抽出したベクトル命令の書き込み先レジスタ番号をＴＲ番号使用認識部２０９へ送出する。
【００３２】
また、同一ＶＲ書き込み認識部２０８は、命令間依存関係解析部２０２から通知された、直近の演算命令のＶＬ長情報を自己の記憶領域に保持する。同一ＶＲ書き込み認識部２０８は、保持しているＶＬ長情報（直近のＶＬ長情報）と命令間依存関係解析部２０２から受け取ったＶＬ長情報を比較して、命令間依存関係解析部２０２から受け取ったＶＬ長が小さい場合にはリタイア命令無効化禁止信号をＴＲ番号使用認識部２０９に送出する。同一ＶＲ書き込み認識部２０８は、比較処理後、今回命令間依存関係解析部２０２から受け取ったＶＬ長情報を直近のＶＬ長情報として保持する（書き換える）。なお、同一ＶＲ書き込み認識部２０８は、直近のＶＬ長情報として、初期値（ここでは、零）を保持する。
【００３３】
ＴＲ番号使用認識部２０９は、命令分解およびリネーム処理部２０３からリネーム処理が終わったベクトル命令を受け取り、その入力オペランドが前記同一ＶＲ書き込み認識部２０８で一致が確認されたレジスタ番号からテンポラリレジスタ番号にリネームされていることを確認できた場合は同一ＶＲ書き込み認識部２０８から受け取ったＩＤを有効としてリタイア命令無効化処理部２１０に送出する。また、入力オペランドにベクトルレジスタが指定されている場合にはそのオペランド入力ベクトルレジスタ番号を最大オペランド数分リタイア命令無効化処理部２１０に送出する。すなわち、リネーム後のベクトル命令のオペランドにリネームされなかったレジスタ番号がある場合、リネームされなかったレジスタ番号すべてをリタイア命令無効化処理部２１０に送出する。例えばベクトル命令にオペランドが２つの場合、最大オペランド数は２となる。テンポラリレジスタが指定されている場合には特別な動作は行わない。また、ＴＲ番号使用認識部２０９は同一ＶＲ書き込み認識部２０８から受け取ったリタイア命令無効化禁止信号をリタイア命令無効化処理部２１０に送出する機能を持つ。
【００３４】
リタイア命令無効化処理部２１０は、ＴＲ番号使用認識部２０９からＩＤとリタイア命令無効化禁止信号を受け取り、リタイア命令無効化禁止信号が有効でない場合は受け取ったＩＤに対応する演算結果転送命令を無効化する指示を命令発行待機バッファ部２０４に送出する機能を持つ。また、リタイア命令無効化処理部２１０はＴＲ番号使用認識部２０９からリタイア命令無効化禁止信号を受け取ると命令発行待機バッファ部２０４に対してリタイア命令無効化禁止フラグ有効化信号を送出する機能をもつ。さらに、リタイア命令無効化処理部２１０はＴＲ番号使用認識部２０９から受け取ったオペランド入力ベクトルレジスタ番号を命令発行待機バッファ部２０４に対して送出する機能をもつ。
【００３５】
ここで、ＶＬ長が小さくなるとリタイア命令無効化を抑止する理由は、同一ＶＲ番号に格納する演算命令が複数あった時に後続演算命令でＶＬ長が小さくなったにもかかわらず先行命令を無効化してしまうとＶＬの差分に対応するデータがベクトルレジスタに書き込まれないという現象を防止するためである。アーキテクチャによっては許されるケースもあると思われるが、ここでは除外して考える。
【００３６】
先行するベクトル命令のＶＬ長よりも後続のベクトル命令のＶＬ長が大きい場合は、先行ベクトル命令のリタイア命令を無効化しても後続ベクトル命令のリタイア命令でベクトルレジスタに最新の演算結果が格納されるのでデータ一貫性の観点から見ても問題無い。従って、本実施形態では、先行するベクトル命令よりＶＬ長が大きくなる場合、演算結果転送命令を無効化する。これにより、ＶＬ長が大きい場合に演算結果転送命令を無効化しない場合に比べ、演算結果転送命令を実行させる回数をより削減すること可能になる。
【００３７】
なお、ＶＩＣ２の各構成要素が備えるレジスタは、動作開始時にリセットされ、初期値（例えば、零）に設定される。
【００３８】
続いて、ＶＰＰ３０〜３７の詳細を説明する。図３はベクトルパイプ部の構成例を示すブロック図である。ＶＰＰ３０〜３７それぞれは同様の構成を有する。各ＶＰＰは、ロードデータ供給部３０１、レジスタ入力クロスバ３０２、ベクトルレジスタ３０３、レジスタ出力クロスバ３０４、タイミング調整ＦＦ（タイミング調整フリップフロップ）３０５、２入力セレクタ３０６、２入力セレクタ３０７、演算器３０８、テンポラリレジスタ３０９、ストアデータ送出部３１０、及びパイプライン制御部３１１を有する。
【００３９】
ロードデータ供給部３０１は、後述パイプライン制御部３１１の指示に従ってメモリからロードしたデータを、レジスタ入力クロスバ３０２を通じてベクトルレジスタ３０３に送出する。
【００４０】
レジスタ入力クロスバ３０２は、ロードデータ供給部３０１またはテンポラリレジスタ３０９の出力データを後述パイプライン制御部３１１の指示に従って選択し、ベクトルレジスタ３０３に送出する機能を持つ。
【００４１】
ベクトルレジスタ３０３は、本実施形態では４つの１ポートＲＡＭ（ＲＡＭそれぞれに入出力のポートを有する）から構成されており、時分割に割り当てられたポートを使って読み出し動作と書き込み動作を合計４多重に実施可能な機能を持つ。図４に、本実施形態におけるベクトルレジスタデータ要素格納イメージの一例を示す。以降の説明では、ベクトルレジスタ３０３の４つのＲＭＡをＲＡＭ＃０からＲＡＭ＃３として説明する。
【００４２】
レジスタ出力クロスバ３０４は、レジスタ、ベクトルレジスタ３０３から出力されたレジスタリードデータをパイプライン制御部３１１の指示に従って後述のタイミング調整ＦＦ３０５または２入力セレクタ３０７またはストアデータ送出部３１０に出力する機能を持つ。
【００４３】
タイミング調整ＦＦ３０５は、レジスタ出力クロスバ３０４から受けたレジスタリードデータを受け、１クロック後に２入力セレクタ３０６に送出する。
【００４４】
２入力セレクタ３０６は、パイプライン制御部３１１の指示に従ってタイミング調整ＦＦ３０５出力のデータまたは後述のテンポラリレジスタ３０９出力データのどちらかを選択して演算器３０８の演算オペランドデータとして送出する。
【００４５】
２入力セレクタ３０７は、パイプライン制御部３１１の指示に従ってレジスタ出力クロスバ３０４出力のレジスタリードデータまたは後述のテンポラリレジスタ３０９出力データのどちらかを選択して演算器３０８の演算オペランドデータとして送出する。
【００４６】
演算器３０８は、２入力セレクタ３０６および２入力セレクタ３０７の出力を演算オペランドデータとしてパイプライン制御部３１１の指示に従って演算を行い、演算結果データをテンポラリレジスタ３０９に出力する機能を持つ。
【００４７】
テンポラリレジスタ（ＶＲＲ）３０９は、演算器３０８から受けた演算結果データを一時的に格納する機能を持つ。また、パイプライン制御部３１１からの指示に従ってテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令として演算結果データを読み出してレジスタ入力クロスバ３０２に送出する機能と、パイプライン制御部３１１からの指示に従って読み出したデータを演算オペランドデータとして２入力セレクタ３０６または２入力セレクタ３０７に出力する機能を持つ。テンポラリレジスタ３０９は書き込みポートが１つと読み出しポートが３つの合計４ポートを備えたＲＡＭで、前述の動作を同時に行うことが可能な機能を持つ。図５に、本実施形態におけるテンポラリレジスタデータ要素格納イメージの一例を示す。
【００４８】
ストアデータ送出部３１０は、パイプライン制御部３１１からの指示に従ってレジスタ出力クロスバ３０４より受けたレジスタリードデータをメモリに対してストア処理する機能を持つ。
【００４９】
パイプライン制御部３１１はパイプライン制御部で、命令発行部２０６から発行されたベクトル命令を受け取って命令識別処理を行い、所定のタイミングで前述のロードデータ供給部３０１〜ストアデータ送出部３１０の各構成要素に対してデータ転送指示および演算指示を行う機能を持つ。
【００５０】
ベクトル命令は、一般に、ベクトルロード命令、ベクトルストア命令、ベクトル演算命令、マスク更新命令を含む。ベクトルロード命令は読み出しを行う命令、ベクトルストア命令は書き込みを行う命令、ベクトル演算命令は演算を行う命令、マスク更新命令は、マスクビットの操作を行う命令である。ＳＰＵ１からベクトル命令バッファ部２０１へ送出されるベクトル命令は上述した４種類の命令が含まれている。ベクトル命令のうち、演算器３０８を使用する命令を「ベクトル演算命令」と呼び、区別する場合もある。しかし、本実施形態では特に区別せずにベクトル命令の名称を用いて説明する。
【００５１】
次に図面を参照して本実施形態の動作を示す。最初にベクトル命令１つのみの場合の動きを示し、次にベクトル命令が２つの場合の動作を説明する。まず、ベクトル命令が１つの場合の動作を説明する。ここで用いる命令列（命令１とする）の一例を次に示す。
Ｖ７  ←  Ｖ０  ＋  Ｖ１  ＶＬ  ＝  ８・・・・（命令１）
この命令は８要素分（ＶＬ＝８）のレジスタＶ０とレジスタＶ１を算術和してレジスタＶ７に格納するベクトル命令である。ここで命令の要素数（ＶＬ）はベクトル演算パイプ部（ＶＰＰ）３０〜３７それぞれが処理する要素数である。例えば、図１では、ＶＬ＝８の場合、８個のＶＰＰ３０〜３７が処理するため、８＊８＝６４個の要素を並列処理することが可能となる。
【００５２】
命令１がＳＰＵ１でベクトル命令と識別されてＶＩＣ２内のベクトル命令バッファ部２０１に送出される。
【００５３】
ベクトル命令バッファ部２０１は、ＳＰＵ１より受け取ったベクトル命令を一旦バッファリングする。ベクトル命令バッファ部２０１は、命令発行待機バッファ部２０４がビジーで無いことを確認して、バッファリングしたベクトル命令を読み出すとともに、ベクトル命令に対してＩＤ  「０００１」を付与して命令間依存関係解析部２０２に送出する。
【００５４】
命令間依存関係解析部２０２は、命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４に存在する先行ベクトル命令とのレジスタ依存関係を解析する。ここでは、命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４にはこの時点で命令が存在しないためRead after Write、Write after Read、Write after Writeの関係は無いという命令間依存情報とともにベクトル命令およびＩＤ  「０００１」を命令分解およびリネーム処理部２０３に送出する。また、命令間依存関係解析部２０２は、自己に存在するベクトル命令（ベクトル命令バッファ部２０１から受け取ったベクトル命令）の書き込み先レジスタ番号、ＶＬ長情報、及びＩＤ  「０００１」を同一ＶＲ書き込み認識部２０８に送出する。
【００５５】
同一ＶＲ書き込み認識部２０８は、ベクトル命令の書き込み先レジスタ番号およびＶＬ長情報を命令間依存関係解析部２０２から受け取る。同一ＶＲ書き込み認識部２０８は、まず、命令間依存関係解析部２０２に存在するＩＤ  「０００１」ベクトル命令の書き込み先レジスタ番号と、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４に存在するベクトル命令の書き込み先レジスタ番号を比較する。ここでは、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４には命令が存在しないので、同一ＶＲ書き込み認識部２０８は、一致無しの情報をＴＲ番号使用認識部２０９に送出する。また、同一ＶＲ書き込み認識部２０８は、命令間依存関係解析部２０２から今回受け取ったＶＬ長情報を保持する（保持していたＶＬ長情報と差し替える）。
【００５６】
命令分解およびリネーム処理部２０３は、命令間依存関係解析部２０２より受け取ったベクトル命令（命令１）が使用する演算結果格納用のテンポラリレジスタ領域をＴ０と決定し、その情報を命令分解およびリネーム処理部２０３内のリネームテーブルに保持する。演算オペランドに指定されたレジスタ番号（ＶＲ番号）はテンポラリレジスタ（ＴＲ）に存在しないのでオペランドに指定されたレジスタはリネームしない。
【００５７】
また、命令分解およびリネーム処理部２０３は、リネームした後にベクトル命令（命令１）を演算結果格納用のテンポラリレジスタに格納するまでの演算処理命令（命令１−１）と、演算結果格納用のテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令（命令１−２）の２つに分解する。命令１−１、１−２を次に示す。
Ｔ０  ←  Ｖ０  ＋  Ｖ１  ＶＬ  ＝  ８・・・・（命令１−１）
Ｖ７  ←  Ｔ０            ＶＬ  ＝  ８・・・・（命令１−２）
【００５８】
このとき命令ＩＤはそれぞれ「０００１ａ」「０００１ｂ」となり、さらにテンポラリレジスタのRead after Writeの順序関係を守るために２つに分解された２番目の演算結果転送命令（命令１−２）は演算処理命令（命令１−１）に対する命令間依存関係情報を付与され、これらの情報と命令間依存関係解析部２０２から受け取った命令間依存情報を命令発行待機バッファ部２０４に送出する。
【００５９】
命令間依存関係情報は、分解された命令に対して付与される情報であり、分解した命令間において、同一テンポラリレジスタ番号に書き込んだ後読み出すという順序を守る必要があるため付与される。ここでは、ＩＤ「０００１ａ」の命令でＶＲＲ３０９のレジスタＴ０に演算結果が書き込まれ、その後ＩＤ「０００１ｂ」の命令でＴ０に書き込まれた演算結果を読み出してＶ７レジスタに格納する。このときＴ０を介してＩＤ「０００１ｂ」の命令はＩＤ「０００１ａ」の命令に対してRead after Writeの依存関係があることになる。
【００６０】
ＴＲ番号使用認識部２０９は、命令分解およびリネーム処理部２０３からリネーム処理が終わったベクトル命令「Ｖ７  ←  Ｖ０  ＋  Ｖ１」を受け取り、その入力オペランドがテンポラリレジスタ番号にリネームされていることを確認できないことから同一ＶＲ書き込み認識部２０８から受け取ったＩＤを無効とする。また、上述のとおり同一ＶＲ書き込み認識部２０８の出力が一致無しなので、ＴＲ番号使用認識部２０９は、該当ＩＤ無しの情報をリタイア命令無効化処理部２１０に送出する。
【００６１】
命令発行待機バッファ部２０４は、命令分解およびリネーム処理部２０３から受け取った分解されたベクトル命令（命令１−１および命令１−２）と命令間依存情報とＩＤ「０００１ａ」「０００１ｂ」を格納し、ベクトル命令の発行チェックに必要な情報を命令発行チェック部２０５に送出する。この状態を図６に示す。
【００６２】
リタイア命令無効化処理部２１０は、ＴＲ番号使用認識部２０９から該当ＩＤ無しの情報を受け取り、無効化対象が無いので命令発行待機バッファ部２０４に対して無効化指示は送出しない。
【００６３】
命令発行チェック部２０５は命令発行待機バッファ部２０４からベクトル命令の発行チェックに必要な情報として命令間依存情報を受け、命令間依存関係が無く発行可能なＩＤ「０００１ａ」演算処理命令を選択し、演算処理命令が使用する演算リソースである演算器３０８とレジスタスロット（ベクトルレジスタ３０３の各ＲＡＭ）がビジーでは無いことを確認し、発行確定として命令発行部２０６およびパスビジー管理部２０７に発行確定となったベクトル命令を送出する。このときＩＤ「０００１ｂ」演算結果転送命令はＩＤ「０００１ａ」演算処理命令に対する命令間依存関係があるため命令選択条件にあてはまらないので発行されない。
【００６４】
また、命令発行チェック部２０５は、ベクトルレジスタ３０３およびテンポラリレジスタ３０９のレジスタ入出力のタイミング管理をおこない、ＩＤ「０００１ａ」演算処理命令によってテンポラリレジスタ３０９に演算結果が格納された直後にＩＤ「０００１ｂ」演算結果転送命令によるテンポラリレジスタ３０９からの演算結果読み出しが行われるよう命令発行待機バッファ部２０４に保持されている命令間依存関係情をクリアする。本実施形態ではＩＤ「０００１ａ」演算処理命令が発行されてから９クロック後にＩＤ「０００１ｂ」演算結果転送命令が発行可能となるようなタイミングで命令発行待機バッファ部２０４に保持されている命令間依存関係情報をクリアする。
【００６５】
命令発行部２０６は、命令発行チェック部２０５より発行確定となった演算処理命令を受け取り、ベクトル命令実行に必要な情報の生成を行ってベクトル演算部３に含まれるベクトル演算パイプ部３０〜３７に送出する。
【００６６】
パスビジー管理部２０７は命令発行チェック部２０５から発行確定となった演算処理命令を受け取り、そのベクトル命令が使用する演算リソースである演算器ビジー情報ならびにレジスタスロットのビジー情報を管理する。演算器ビジー情報は、演算器３０８が使用中であるか否かの情報である。レジスタスロットのビジー情報は、ベクトルレジスタ３０３内の読み出しアドレス（例えば  ＲＡＭ＃０の読み出しアドレス）が使用中であるか否かの情報である。
【００６７】
パイプライン制御部３１１は、命令発行部２０６より発行された演算処理命令「Ｔ０  ←  Ｖ０  ＋  Ｖ１  ＶＬ＝８」（命令１−１）を受け取り、命令識別処理を行う。続いて、パイプライン制御部３１１は、ベクトルレジスタ３０３およびレジスタ出力クロスバ３０４に対して演算命令オペランドレジスタＶ０とＶ１を８要素分読み出すよう指示する。２入力セレクタ３０６および２入力セレクタ３０７に対してはレジスタリードデータを選択するよう指示する。パイプライン制御部３１１は、演算器３０８については２つのオペランドを算術和するよう指示する。パイプライン制御部３１１は、テンポラリレジスタ３０９には領域Ｔ０に演算結果を格納するよう指示する。
【００６８】
また、パイプライン制御部３１１は、演算処理命令「Ｔ０  ←  Ｖ０  ＋  Ｖ１  ＶＬ＝８」（命令１−１）を受け取った９クロック後に演算結果転送命令「Ｖ７  ←  Ｔ０  ＶＬ＝８」（命令１−２）の識別処理を行い、テンポラリレジスタ３０９にＴ０データ読み出し指示と、レジスタ入力クロスバ３０２にＴ０データ選択指示と、ベクトルレジスタ３０３にＴ０データ書き込み指示を出す。
【００６９】
図７は、一つのベクトル演算パイプ部において一つのベクトル命令の実行例を示すタイムチャートである。ここでは、ＶＰＰ３０の場合を一例として示している。
【００７０】
ベクトルレジスタ３０３は最初にＲＡＭ＃０に対して要素Ｖ０−００のアドレスを入力して読み出し動作を行い、Ｖ０−００要素を読み出す。この状態がタイムチャート図７のｔｉｍｉｎｇ＿１である。以降の説明では、タイムチャートに示すクロック（Clock timing）を「ｔｉｍｉｎｇ＿ｘ」（ｘ≧０）として示す。タイムチャートにおけるＶ０−００の前の"Ｒ"はＲｅａｄ動作であることを示している。"Ｗ"はライト動作であることを示す。
【００７１】
次のクロックｔｉｍｉｎｇ＿２ではＲＡＭ＃０に対して要素Ｖ１−００のアドレスを入力して読み出し動作を行うと同時にＲＡＭ＃１に対して要素Ｖ０−０１のアドレスを入力して読み出し動作を行う。次のクロックｔｉｍｉｎｇ＿３ではＲＡＭ＃１に対し要素Ｖ１−０１のアドレスを入力して読み出し動作を行うと同時にＲＡＭ＃２に対して要素Ｖ０−０２のアドレスを入力して読み出し動作を行う。次のクロックｔｉｍｉｎｇ＿４ではＲＡＭ＃２に対して要素Ｖ１−０２のアドレスを入力して読み出し動作を行うと同時にＲＡＭ＃３に対して要素Ｖ０−０３のアドレスを入力して読み出し動作を行う。次のクロックｔｉｍｉｎｇ＿５ではＲＡＭ＃３に対して要素Ｖ１−０３のアドレスを入力して読み出し動作を行うと同時にＲＡＭ＃０に対して要素Ｖ０−０４のアドレスを入力して読み出し動作を行う。
【００７２】
このようにＲＡＭ＃０〜ＲＡＭ＃３に対してＶ０とＶ１の先頭アドレスを順次入力して指示されたＶ０、Ｖ１レジスタの８要素を順次読み出す。
【００７３】
レジスタ出力クロスバ３０４はベクトルレジスタ３０３から読み出された要素を受け、クロスバ制御を１クロック毎に行って要素Ｖ０−００〜Ｖ０−０７はタイミング調整ＦＦ３０５に送出され、要素Ｖ１−００〜Ｖ１−０７を２入力セレクタ３０７に送出される。上述のようにして読み出された要素Ｖ０−００〜Ｖ０−０７は要素Ｖ１−００〜Ｖ１−０７に対して１クロック分早く読み出されるため、Ｖ０の各要素はタイミング調整ＦＦ３０５でタイミング調整されて２入力セレクタ３０６に入力される。
【００７４】
２入力セレクタ３０６はレジスタリードデータ（要素Ｖ０−００〜Ｖ０−０７）を選択して演算器３０８に出力する。２入力セレクタ３０７はレジスタリードデータ（要素Ｖ１−００〜Ｖ１−０７）を選択して演算器３０８に出力する。
【００７５】
演算器３０８はオペランドデータとして要素Ｖ０−００および要素Ｖ１−００を演算器ステージＡのタイミングで受け取り、演算器ステージＥまでパイプライン動作で算術和演算処理を行い、演算結果をｔｉｍｉｎｇ＿８でテンポラリレジスタ３０９に出力する。
【００７６】
テンポラリレジスタ３０９は演算器３０８から受け取った演算結果を指定されたＴ０−００にｔｉｍｉｎｇ＿９で書き込む。
【００７７】
テンポラリレジスタ３０９は、ｔｉｍｉｎｇ＿９以降順次Ｔ０−０１〜Ｔ０−０７の８つの演算結果要素を書き込む。また、テンポラリレジスタ３０９は、Ｔ０データ読み出し指示を受け、ｔｉｍｉｎｇ＿９でＴ０−００を読み出しレジスタ入力クロスバ３０２に送出する。
【００７８】
レジスタ入力クロスバ３０２はパイプライン制御部３１１からの指示に従い、テンポラリレジスタ３０９から送出されたＴ０−００を選択してベクトルレジスタ３０３内ＲＡＭ＃０に書き込みデータとして送出する。
【００７９】
ｔｉｍｉｎｇ＿１０でベクトルレジスタ３０３内のＲＡＭ＃０にＴ０−００が書き込まれる。ｔｉｍｉｎｇ＿１１でＲＡＭ＃１にＴ０−０１が、ｔｉｍｉｎｇ＿１２でＲＡＭ＃２にＴ０−０２が、ｔｉｍｉｎｇ＿１３でＲＡＭ＃３にＴ０−０３が、ｔｉｍｉｎｇ＿１４でＲＡＭ＃０にＴ０−０４が書き込まれる。以降ｔｉｍｉｎｇ＿１７でＲＡＭ＃３にＴ０−０７が書き込まれて一連の動作が完了する。
【００８０】
次にベクトル命令が２つの場合の動作を説明する。ここで用いる二つの命令列（命令１１、命令１２とする）の一例を次に示す。
Ｖ７  ←  Ｖ０  ＋  Ｖ１  ＶＬ  ＝  ８・・・・（命令１１）
Ｖ７  ←  Ｖ２  ＋  Ｖ７  ＶＬ  ＝  ８・・・・（命令１２）
この命令列は命令１１の書き込み先レジスタ番号と命令１２のオペランドレジスタ番号と書き込み先レジスタ番号が一致していることが特徴である。ここで、命令の要素数（ＶＬ）はベクトル演算パイプ部（ＶＰＰ）３０〜３７それぞれが処理する要素数であることは、命令１の場合と同様である。また、命令１１、１２の処理について、図１の構成図（一部の図ではベクトル演算部３を省略している）を用いて処理の流れを図８〜１５に示す。これらの図では、図１で示した構成要素の名称にかえて、処理内容を示す。空欄の場合、処理を実行していないことになる。図８〜１５を用いて動作を説明する。図８に初期状態（Ｔ）を示す。
【００８１】
まず、命令１１がＳＰＵ１でベクトル命令と識別されて、ＶＩＣ２内のベクトル命令バッファ部２０１に送出される。次のクロックでは命令１２がＳＰＵ１でベクトル命令と識別されて、ＶＩＣ２内のベクトル命令バッファ部２０１に送出される（図８）。
【００８２】
次のクロック（図９）では、ベクトル命令バッファ部２０１は、ＳＰＵ１より受け取ったベクトル命令１１を一旦バッファリングする。続いて、命令発行待機バッファ部２０４がビジーで無いことを確認して、バッファリングしたベクトル命令を読み出すとともにベクトル命令１１に対してＩＤ  「０００１」を付与して命令間依存関係解析部２０２に送出する。
【００８３】
次のクロック（図１０）では、ベクトル命令バッファ部２０１は、ベクトル命令１２をバッファリングする。続いて、ベクトル命令１２に対してＩＤ  「０００２」を付与して命令間依存関係解析部２０２に送出する。命令間依存関係解析部２０２は、自己に存在するベクトル命令の書き込み先レジスタ番号、ＶＬ長情報、及びＩＤ  「０００１」を同一ＶＲ書き込み認識部２０８に送出することは、命令１のベクトル命令の場合と同様である。
【００８４】
同一ＶＲ書き込み認識部２０８は、ベクトル命令の書き込み先レジスタ番号およびＶＬ長情報（ここではＶ７とＶＬ＝８）を命令間依存関係解析部２０２から受け取る。同一ＶＲ書き込み認識部２０８は、まず、命令間依存関係解析部２０２に存在するＩＤ  「０００１」ベクトル命令の書き込み先レジスタ番号と、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４に存在するベクトル命令の書き込み先レジスタ番号を比較する。ここでは、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４には命令が存在しないので、同一ＶＲ書き込み認識部２０８は、一致無しの情報をＴＲ番号使用認識部２０９に送出する。また、同一ＶＲ書き込み認識部２０８は、命令間依存関係解析部２０２から今回受け取ったＶＬ長情報を自己の記憶領域内に保持する。図１３中、点線の矢印は比較動作を表す。図１１〜１５も同様とする。
【００８５】
命令間依存関係解析部２０２は、命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４に存在する先行ベクトル命令とのレジスタ依存関係を解析する。しかしながら、命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４にはこの時点で命令が存在しないためRead after Write、Write after Read、Write after Writeの関係は無いという命令間依存情報とともにベクトル命令１１およびＩＤ  「０００１」を命令分解およびリネーム処理部２０３に送出する。
【００８６】
次のクロック（図１１）では、命令分解およびリネーム処理部２０３は、命令間依存関係解析部２０２より受け取ったベクトル命令１１が使用する演算結果格納用のテンポラリレジスタ領域をＴ０と決定し、その情報を命令分解およびリネーム処理部２０３内のリネームテーブルに保持する。演算オペランドに指定されたレジスタ番号（ＶＲ番号）はテンポラリレジスタ（ＴＲ）に存在しないのでオペランドに指定されたレジスタはリネームしない。
【００８７】
また、命令分解およびリネーム処理部２０３は、リネームした後にベクトル命令１１を演算結果格納用のテンポラリレジスタに格納するまでの演算処理命令部（命令１１−１）と、演算結果格納用のテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令部（命令１１−１）の２つに分解する。命令１１−１、１１−２を次に示す。
Ｔ０  ←  Ｖ０  ＋  Ｖ１  ＶＬ  ＝  ８・・・・（命令１１−１）
Ｖ７  ←  Ｔ０            ＶＬ  ＝  ８・・・・（命令１１−２）
【００８８】
このとき命令ＩＤはそれぞれ「０００１ａ」「０００１ｂ」となり、さらにテンポラリレジスタのRead after Writeの順序関係を守るために２つに分解された２番目の演算結果転送命令部（命令１１−２）は演算処理命令部（命令１１−１）に対する命令間依存関係情報を付与され、これらの情報と命令間依存関係解析部２０２から受け取った命令間依存情報を命令発行待機バッファ部２０４に送出する。
【００８９】
また、命令間依存関係解析部２０２は、命令１２と、命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４に存在する先行ベクトル命令１１とのレジスタ依存関係を解析する。命令間依存関係解析部２０２は、命令１２が、命令分解およびリネーム処理部２０３に存在するベクトル命令１１「Ｖ７  ←  Ｖ０  ＋  Ｖ１  ＶＬ＝８」に対してRead after Write、Write after Writeの関係があることを検出し、この命令間依存情報とともにベクトル命令１２およびＩＤ  「０００２」を命令分解およびリネーム処理部２０３に送出する。また、命令間依存関係解析部２０２は、自己に存在するベクトル命令の書き込み先レジスタ番号およびＶＬ長情報およびＩＤ  「０００２」を同一ＶＲ書き込み認識部２０８に送出する。
【００９０】
同一ＶＲ書き込み認識部２０８は、ベクトル命令の書き込み先レジスタ番号およびＶＬ長情報（ここではＶ７とＶＬ＝８）を命令間依存関係解析部２０２から受け取る。まず、同一ＶＲ書き込み認識部２０８は、命令間依存関係解析部２０２に存在するＩＤ  「０００２」ベクトル命令１２の書き込み先レジスタ番号と、命令分解およびリネーム処理部２０３に存在するベクトル命令１１の書き込み先レジスタ番号を比較する。同一ＶＲ書き込み認識部２０８は、命令１２と、命令分解およびリネーム処理部２０３に存在するＩＤ  「０００１ｂ」ベクトル命令１１の書き込み先レジスタ番号が一致するので、一致したベクトル命令１１−１のＩＤ  「０００１ｂ」をＴＲ番号使用認識部２０９に送出する。また、同一ＶＲ書き込み認識部２０８は、ＶＬ長情報を保持する機能を持ち、保持しているＶＬ長情報と命令間依存関係解析部２０２から受け取ったＶＬ長情報を比較する。同一ＶＲ書き込み認識部２０８は、どちらも同じ「８」であることからリタイア命令無効化禁止信号をＴＲ番号使用認識部２０９に送出しない。
【００９１】
次のクロック（図１２）では、命令分解およびリネーム処理部２０３は、命令間依存関係解析部２０２より受け取ったベクトル命令１２が使用する演算結果格納用のテンポラリレジスタ領域を、リネームテーブルに保持されていた「Ｖ７  −  Ｔ０」の関係からＴ０と決定し、その情報を命令分解およびリネーム処理部２０３内のリネームテーブルに保持する。このときのリネームテーブルの具体例が図２に相当する。演算オペランドに指定されたレジスタ番号も同様にリネームテーブルの情報からＴ０とリネームする。この処理の結果ベクトル命令１２は次のようになる「Ｔ０  ←  Ｖ２  ＋  Ｔ０」。
【００９２】
また、命令分解およびリネーム処理部２０３は、リネームした後にベクトル命令１２を演算結果格納用のテンポラリレジスタに格納するまでの演算処理命令部（命令１２−１）と、演算結果格納用のテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令部（命令１２−２）の２つに分解する。命令１２−１、１２−２を次に示す。
Ｔ０  ←  Ｖ２  ＋  Ｔ０  ＶＬ  ＝  ８・・・・（命令１２−１）
Ｖ７  ←  Ｔ０            ＶＬ  ＝  ８・・・・（命令１２−２）
【００９３】
このとき命令ＩＤはそれぞれ「０００２ａ」「０００２ｂ」となり、さらにテンポラリレジスタのRead after Writeの順序関係を守るために２つに分解された２番目の演算結果転送命令部（命令１２−２）は演算処理命令部（命令１２−１）に対する命令間依存関係情報を付与され、これらの情報と命令間依存関係解析部２０２から受け取った命令間依存情報を命令発行待機バッファ部２０４に送出する。
【００９４】
ＴＲ番号使用認識部２０９は命令分解およびリネーム処理部２０３からリネーム処理が終わったベクトル命令１２「Ｔ０  ←  Ｖ２  ＋  Ｔ０」を受け取り、その入力オペランドがテンポラリレジスタ番号にリネームされていることを確認し、同一ＶＲ書き込み認識部２０８から受け取ったＩＤ  「０００１ｂ」を有効としてリタイア命令無効化処理部２１０に送出する。
【００９５】
命令発行待機バッファ部２０４は、命令分解およびリネーム処理部２０３からＩＤ「０００１ａ」、命令１１−１とＩＤ「０００１ｂ」、命令１１−２を受け取り、バッファリングする。この時の命令発行待機バッファ部２０４の状態を図６に示す。命令１１は命令１と同じであるため、命令１の場合と同様の状態となる。
【００９６】
次のクロック（図１３）では、命令発行待機バッファ部２０４は命令分解およびリネーム処理部２０３からＩＤ「０００２ａ」、命令１２−１とＩＤ「０００２ｂ」、命令１２−２を受け取り、バッファリングする。この時の命令発行待機バッファ部２０４の状態を図１６に示す。
【００９７】
リタイア命令無効化処理部２１０は、ＴＲ番号使用認識部２０９から有効なＩＤ  「０００１ｂ」を受け取り、ＩＤ  「０００１ｂ」の演算結果転送命令を無効化する指示を命令発行待機バッファ部２０４に送出する。
【００９８】
命令発行待機バッファ部２０４は、リタイア命令無効化処理部２１０からＩＤ  「０００１ｂ」の演算結果転送命令を無効化する指示を受け取り、ＩＤ  「０００１ｂ」の無効化禁止フラグが"０"であることからＩＤ  「０００１ｂ」の演算結果転送命令を無効化する。この時の命令発行待機バッファ部２０４の状態を図１７に示す。個のタイミングで、命令発行待機バッファ部２０４に最初に格納された命令１１−１が命令発行チェック部２０５へ送出される。
【００９９】
次のクロック（図１４）では、命令１１−１が命令発行部２０６へ送出され、次のクロック（図１５）でベクトル演算部３において命令１１−１が実行される。
【０１００】
命令発行待機バッファ部２０４にバッファリングされた命令が実行された時のタイムチャートを図１８に示す。図１８は、ｔｉｍｉｎｇ＿１８において、命令１２−１の命令のオペランドデータ８要素目の読み出しされるまでを示している。図７のタイムチャートと比べると、（１）命令１２−１の１要素目のオペランド読み出しがｔｉｍｉｎｇ＿１０で開始されていること、（２）オペランドの一方がＶ７→Ｔ０にリネームされているため、ｔｉｍｉｎｇ＿１１でテンポラリレジスタ３０９から読み出されていることが特徴的である。
【０１０１】
次に命令１１、１２をベースにＶＬ長が小さくなる方向へ変化した場合の動作を使って説明する。この動作は従来の動作とも同じである。冗長な説明を略し、特徴的な点を説明する。ここで用いる二つの命令列（命令２１、命令２２とする）の一例を次に示す。命令２１は、命令１１と同じであるが説明をわかりやすくするため、命令２１とする。
Ｖ７  ←  Ｖ０  ＋  Ｖ１  ＶＬ  ＝  ８・・・・（命令２１）
Ｖ７  ←  Ｖ２  ＋  Ｖ７  ＶＬ  ＝  ６・・・・（命令２２）
この命令列は命令１１、１２に示す命令列がベースとなっており、命令２１のＶＬ長は８であるが命令２２のＶＬ長は６とＶＬ長が短くなっている。また、図１９〜２６に処理の流れを示す。図の表し方は、図８〜１５と同様である。また、図１９〜２６は、命令の番号及び命令２２のＶＬ長が異なるため全クロックの処理の流れを示したが、図８〜１８と同様の処理については説明を省略する。
【０１０２】
命令分解およびリネーム処理部２０３が分解した命令列は次のようになる。分解の動作は命令１１、１２と同様である。
Ｔ０  ←  Ｖ０  ＋  Ｖ１  ＶＬ  ＝  ８・・・・（命令２１−１）
Ｖ７  ←  Ｔ０            ＶＬ  ＝  ８・・・・（命令２１−２）
Ｔ０  ←  Ｖ２  ＋  Ｔ０  ＶＬ  ＝  ６・・・・（命令２２−１）
Ｖ７  ←  Ｔ０            ＶＬ  ＝  ６・・・・（命令２２−２）
【０１０３】
図２２に示すように、図命令間依存関係解析部２０２は、命令分解およびリネーム処理部２０３および命令発行待機バッファ部２０４に存在する先行ベクトル命令とのレジスタ依存関係を解析する。命令２２は、命令分解およびリネーム処理部２０３に存在するベクトル命令２１「Ｖ７  ←  Ｖ０  ＋  Ｖ１  ＶＬ＝８」に対してRead after Write、Write after Writeの関係があることを検出し、この命令間依存情報とともにベクトル命令２２およびＩＤ  「０００２」を命令分解およびリネーム処理部２０３に送出する。また、命令間依存関係解析部２０２は、自己に存在するベクトル命令の書き込み先レジスタ番号およびＶＬ長情報およびＩＤ  「０００２」を同一ＶＲ書き込み認識部２０８に送出する。
【０１０４】
同一ＶＲ書き込み認識部２０８は、ベクトル命令の書き込み先レジスタ番号およびＶＬ長情報を命令間依存関係解析部２０２から受け取る。まず、同一ＶＲ書き込み認識部２０８は、命令間依存関係解析部２０２に存在するＩＤ  「０００２」ベクトル命令２２の書き込み先レジスタ番号と、命令分解およびリネーム処理部２０３に存在するベクトル命令２１の書き込み先レジスタ番号を比較する。同一ＶＲ書き込み認識部２０８は、命令分解およびリネーム処理部２０３に存在するＩＤ  「０００１ｂ」ベクトル命令２１の書き込み先レジスタ番号が一致するので、一致したベクトル命令２１−１のＩＤ  「０００１ｂ」をＴＲ番号使用認識部２０９に送出する。また、同一ＶＲ書き込み認識部２０８は、１クロック前に通過した直近のベクトル命令２１のＶＬ長情報「８」を保持しており、その値と命令間依存関係解析部２０２から受け取ったベクトル命令２２のＶＬ長情報「６」を比較する。同一ＶＲ書き込み認識部２０８は、ベクトル命令２２のＶＬ長が、保持していたＶＬ長より小さいことを検出し、リタイア命令無効化禁止信号をＴＲ番号使用認識部２０９に送出する。また、同一ＶＲ書き込み認識部２０８は、今回命令間依存関係解析部２０２から受け取ったベクトル命令２２のＶＬ長情報「６」を自己の記憶領域内に保持する。
【０１０５】
次のクロック（図２３）では、ＴＲ番号使用認識部２０９は、命令分解およびリネーム処理部２０３からリネーム処理が終わったベクトル命令２２「Ｔ０  ←  Ｖ２  ＋  Ｔ０」を受け取り、その入力オペランドがテンポラリレジスタ番号にリネームされていることを確認し、同一ＶＲ書き込み認識部２０８から受け取ったＩＤ  「０００１ｂ」を有効としてリタイア命令無効化処理部２１０に送出するとともに、同じく同一ＶＲ書き込み認識部２０８から受け取ったリタイア命令無効化禁止信号をリタイア命令無効化処理部２１０に送出する。
【０１０６】
リタイア命令無効化処理部２１０はＴＲ番号使用認識部２０９から有効なＩＤ  「０００１ｂ」を受け取ると同時にリタイア命令無効化禁止信号を受け取るため、ＩＤ  「０００１ｂ」の演算結果転送命令を無効化する指示の送出を行わず、リタイア命令無効化禁止信号を命令発行待機バッファ部２０４に送出する（図２３）。
【０１０７】
命令発行待機バッファ部２０４は、リタイア命令無効化処理部２１０からリタイア命令無効化禁止信号を受け取り、命令発行待機バッファ部２０４内にバッファリングされている全ての演算結果転送命令の無効化禁止フラグを有効化する（図２４）。この時の命令発行待機バッファ部２０４の状態を図２７に示す。また、図２５、２６に示すように、命令２１−２は、無効化されることなく、命令発行待機バッファ部２０４に保持され、命令の実行を待つ。
【０１０８】
命令発行待機バッファ部２０４にバッファリングされた命令が実行された時のタイムチャートを図２８に示す。
【０１０９】
図２８はｔｉｍｉｎｇ＿１８において、命令２２−１の命令のオペランドデータ８要素目読み出しされるまでのタイムチャートを示している。命令２１−２のリタイア命令が実行されるため図１８のタイムチャートと比べると、（１）命令２２−１の１要素目のオペランド読み出しが１クロック遅いｔｉｍｉｎｇ＿１１で開始されること、（２）命令２２−１のオペランド読み出しが６要素分で終わっていることが特徴的である。
【０１１０】
以上の動作により、命令１１、１２の命令列のように命令間で書き込み先レジスタ番号が一致していて、かつＶＬ長が同じであるような命令の場合は先行する命令のリタイア命令を無効化することで、ＲＡＭのポート競合確率を減少させることが可能となり、演算器の未使用時間が無いよう後続演算命令の実行を開始できる確率を高くできる。
また、命令を実行する上で一貫性を保証しつつ必要な命令のみ実行することでデータ変化率を減少させることが可能となる。
【０１１１】
（その他の実施形態）
実施形態１においてベクトルレジスタ３０３のベクトルレジスタは４つの１ポートＲＡＭから構成して、時分割に割り当てられたポートを使って読み出し動作と書き込み動作を行うような動作となっているが、使用するＲＡＭについてはリード動作とライト動作が同時に行える２ポートＲＡＭで構成することも可能である。この場合読み出し動作とリタイア命令処理動作が競合することは無いが、ベクトルロード命令処理とリタイア命令処理が競合するケースがあるためリタイア命令無効化は性能向上に効果がある。
【０１１２】
また、２ポートＲＡＭからベクトルレジスタを構成する場合は１つのＲＡＭにあるベクトルレジスタ番号の要素を全て格納するような構成を採ることも可能で、この場合は複数のＲＡＭから時分割で読み出す必要は無く、１つのＲＡＭから連続して要素を読み出す動作となり、この場合にもＲＡＭのライトポート使用時間を削減できるためリタイア命令無効化は性能向上に効果がある。
【０１１３】
また、本実施形態では４つのＲＡＭからベクトルレジスタを構成しているが、５つ以上のＲＡＭから構成する装置においても性能向上に効果がある。
【０１１４】
実施形態１ではベクトル命令を演算結果格納用のテンポラリレジスタに格納するまでの演算処理命令と、演算結果格納用のテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令（リタイア命令）の２つに分解して命令発行待機バッファ部２０４に別々のレコードにバッファリングする例を挙げているが、２つに分解した各々の単位で無効化・無効化禁止が制御出来るならば別々のレコードにする必要は無く、２つに分解した命令を１つのレコードに格納しても良い。
【０１１５】
実施形態１の説明では命令間依存関係解析部２０２、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４における処理にそれぞれ１クロックの時間を要する想定であるが、回路遅延に余裕があればこれらの処理を１クロックで行っても良い。これは同一ＶＲ書き込み認識部２０８、ＴＲ番号使用認識部２０９、リタイア命令無効化処理部２１０、命令発行待機バッファ部２０４における処理についても同じである。
【０１１６】
実施形態１ではベクトルストア命令の動作を記載しなかったが、実施形態１の構成ではストア命令はテンポラリレジスタにリネームされることは無いため、ベクトルストア命令のソースレジスタ番号についても無効化禁止対象レジスタとしてとしてリタイア命令無効化処理部２１０に対して送出することで命令一貫性を保ちつつベクトルストア命令にも対応可能である。
命令発行制御部については命令間の一貫性が保たれるならばＯｕｔ−ｏｆ−ＯｒｄｅｒまたはＩｎ−Ｏｒｄｅｒの制御方式であっても対応可能である。
【０１１７】
同一ＶＲ書き込み認識部２０８は直近の演算命令とＶＬ長が変化したことを検出することで先行するリタイア命令の無効化禁止フラグを有効にすることを可能としているが、ベクトルマスクが更新されたことを検出する機能を追加することでマスク付き演算命令にも対応可能である。このとき同一ＶＲ書き込み認識部２０８にてベクトルマスク更新命令を識別したら前記リタイア命令無効化禁止信号をＴＲ番号使用認識部２０９に対して送出する。
【０１１８】
以上説明したように、上記実施形態のいずれかは、連続実行が可能なベクトル演算器と複数のＲＡＭから構成されるベクトルレジスタとベクトル演算器の出力結果を一時的に格納可能なテンポラリレジスタを持ち、ベクトル演算命令が実行される場合にはベクトル演算結果を一時的にテンポラリレジスタに格納する動作と、テンポラリレジスタから演算結果を読み出してベクトルレジスタに演算結果を転送する動作に分けて処理を行うベクトル処理装置、特にベクトルレジスタを構成するＲＡＭのライトポートがベクトルロード命令やベクトル転送命令などと競合する装置（例えば、ベクトル演算部３）を用いるベクトル処理装置に適用することができる。
【０１１９】
特に、ベクトル命令を発行する場合に、ベクトル演算命令をテンポラリレジスタを使ってリネームした後に、ベクトル命令を演算結果格納用のテンポラリレジスタに格納するまでの演算処理命令と、演算結果格納用のテンポラリレジスタからレジスタに演算結果を転送する演算結果転送命令の２つに分けて命令発行待機バッファ手段（例えば、図１の命令発行待機バッファ部２０４）に格納してから命令発行チェックを行った後に命令発行を確定する命令発行制御手段（例えば、図１のベクトル命令制御部２）を備える場合に適用することができる。
【０１２０】
具体的には、テンポラリレジスタから演算結果を読み出してベクトルレジスタに演算結果を転送する動作を行う命令演算結果転送命令（リタイア命令）と定義したときに、ベクトル演算命令間の書き込み先ベクトルレジスタを解析して同一ベクトルレジスタに格納する命令を検出し、先行するベクトル演算命令のリタイア命令を無効化することでリタイア命令の発行を抑止するよう制御する。これらの処理は、図１の命令解析手段４１、待機命令制御手段４２、命令発行待機バッファ部２０４より実現することができる。より具体的には、図１の命令間依存関係解析部２０２、命令分解およびリネーム処理部２０３、命令発行待機バッファ部２０４、同一ＶＲ書き込み認識部２０８、ＴＲ番号使用認識部２０９、及びリタイア命令無効化処理部２１０が連携して動作することにより実現される。
【０１２１】
また、ベクトル処理装置において、待機命令制御手段４２は、直近のベクトル演算命令のＶＬ長情報を保持する手段と、後続命令のＶＬ長情報と前記直近のベクトル演算命令のＶＬ長情報とを比較して、ＶＬ長が小さくなっていることを検出した場合に、先行命令のリタイア命令を無効化しないようリタイア命令無効化禁止信号を生成する。具体的には、図１の同一ＶＲ書き込み認識部２０８、ＴＲ番号使用認識部２０９、リタイア命令無効化処理部２１０が連携して動作することにより実現される。
【０１２２】
さらに、ベクトル処理装置において、待機命令制御手段４２は、テンポラリレジスタを使ってリネームされた後の演算命令のオペランド指定をチェックしてテンポラリレジスタにリネームされていないオペランドがあった場合はリネームされなかったベクトルレジスタにライトする先行命令のリタイア命令を無効化しないようリタイア命令無効化禁止信号を生成する。
具体的には、図１の同一ＶＲ書き込み認識部２０８、ＴＲ番号使用認識部２０９、リタイア命令無効化処理部２１０、命令発行待機バッファ部２０４が連携して動作することにより実現される。
【０１２３】
また、ベクトル処理装置において、待機命令命令をバッファリングする際にベクトル演算命令を演算結果格納用のテンポラリレジスタ領域に格納するまでの演算処理命令と、演算結果格納用のテンポラリレジスタ領域からレジスタに演算結果を転送する演算結果転送命令（リタイア命令）の２つに区別して格納可能な手段とリタイア命令の無効化を禁止するフラグを設けた。さらに、リタイア命令無効化を禁止するフラグが有効であった場合にはリタイア命令の無効化指示があった場合にも該当するリタイア命令を無効化しない機能を備えた。具体的には、図１の命令発行待機バッファ部２０４によって実現される。
【０１２４】
以上説明したように、本発明の実施形態の一態様によれば、システム全体の性能向上を図ることができる。その理由は、命令間で書き込み先レジスタ番号が一致していて、かつＶＬ長が同じであるような命令の場合は先行する命令のリタイア命令を無効化することで、ＲＡＭのポート競合確率を減少させることが可能となり、演算器の未使用時間が無いよう後続演算命令の実行を開始できる確率を高めることによる。すなわち、ベクトル演算命令間の書き込み先ベクトルレジスタを解析して同一ベクトルレジスタに格納する命令を検出し、先行するベクトル演算命令のリタイア命令を無効化する手段を設けることによって、命令一貫性を保った上でベクトルレジスタへの書き込みパスの使用頻度低下させることを可能にする。
【０１２５】
また、システムの消費電力低減を図ることができる。その理由は、命令を実行する上で一貫性を保証しつつ必要な命令のみ実行することでデータ変化率を減少させることが可能となることによる。
【０１２６】
上記各実施形態は、演算処理装置特にベクトル処理装置に適用することが可能である。
【０１２７】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【０１２８】
【図１】本発明の実施形態１に係るベクトル処理装置の命令発行機構の概略を示すブロック図である。
【図２】リネームテーブルの一例を示す図である。
【図３】ベクトルパイプ部の構成例を示すブロック図である。
【図４】ベクトルレジスタデータ要素格納イメージの一例を示す図である。
【図５】テンポラリレジスタデータ要素格納イメージの一例を示す図である。
【図６】命令１の命令列を、命令発行待機バッファへ格納した状態例を示す図である。
【図７】一つのベクトル演算パイプ部において命令１のベクトル命令の実行例を示すタイムチャートである。
【図８】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（初期状態Ｔ）。
【図９】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋１）。
【図１０】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋２）。
【図１１】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋３）。
【図１２】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋４）。
【図１３】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋５）。
【図１４】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋６）。
【図１５】命令１１、１２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋７）。
【図１６】命令１１、１２の命令列を、命令発行待機バッファ部へ格納した直後の状態例を示す図である。
【図１７】図９aの状態からリタイア命令を無効化した後の命令発行待機バッファ部の状態例を示す図である。
【図１８】一つのベクトル演算パイプ部において要素数が同じ二つのベクトル命令の実行例を示すタイムチャートである。
【図１９】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（初期状態Ｔ）。
【図２０】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋１）。
【図２１】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋２）。
【図２２】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋３）。
【図２３】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋４）。
【図２４】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋５）。
【図２５】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋６）。
【図２６】命令２１、２２を実行する場合、ＶＩＣ内の処理の流れを示す図である（クロックＴ＋７）。
【図２７】命令２１、２２の命令列を、命令発行待機バッファ部へ格納した状態例を示す図である。
【図２８】一つのベクトル演算パイプ部において要素数が異なる二つのベクトル命令の実行例を示すタイムチャートである。
【符号の説明】
【０１２９】
１  スカラープロセッシングユニット（ＳＰＵ）
２  ベクトル命令制御部（ＶＩＣ）
３  ベクトル演算部
４１  命令解析手段
４２  待機命令制御手段
４３  命令発行管理手段
３０〜３７  ベクトル演算パイプ部（ＶＰＰ）
２０１  ベクトル命令バッファ部
２０２  命令間依存関係解析部
２０３  命令分解およびリネーム処理部
２０４  命令発行待機バッファ部
２０５  命令発行チェック部
２０６  命令発行部
２０７  パスビジー管理部
２０８  同一ＶＲ書き込み認識部
２０９  ＴＲ番号使用認識部
２１０  リタイア命令無効化処理部
３０１  ロードデータ供給部
３０２  レジスタ入力クロスバ
３０３  ベクトルレジスタ
３０４  レジスタ出力クロスバ
３０５  タイミング調整ＦＦ
３０６  ２入力セレクタ
３０７  ２入力セレクタ
３０８  演算器
３０９  テンポラリレジスタ
３１０  ストアデータ送出部
３１１  パイプライン制御部
【図１】
2010067141.tif 000003
【図２】
2010067141.tif 000004
【図３】
2010067141.tif 000005
【図４】
2010067141.tif 000006
【図５】
2010067141.tif 000007
【図６】
2010067141.tif 000008
【図７】
2010067141.tif 000009
【図８】
2010067141.tif 000010
【図９】
2010067141.tif 000011
【図１０】
2010067141.tif 000012
【図１１】
2010067141.tif 000013
【図１２】
2010067141.tif 000014
【図１３】
2010067141.tif 000015
【図１４】
2010067141.tif 000016
【図１５】
2010067141.tif 000017
【図１６】
2010067141.tif 000018
【図１７】
2010067141.tif 000019
【図１８】
2010067141.tif 000020
【図１９】
2010067141.tif 000021
【図２０】
2010067141.tif 000022
【図２１】
2010067141.tif 000023
【図２２】
2010067141.tif 000024
【図２３】
2010067141.tif 000025
【図２４】
2010067141.tif 000026
【図２５】
2010067141.tif 000027
【図２６】
2010067141.tif 000028
【図２７】
2010067141.tif 000029
【図２８】
2010067141.tif 000030