(57)【特許請求の範囲】
【請求項１】
主記憶装置からベクトルデータをロードするプロセッサネットワーク手段と、
ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理手段と、
ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理手段を備え、
前記ロードバッファ管理手段が、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトル処理装置。
【請求項２】
前記ロードバッファ管理手段が、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク手段が、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理手段が、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする請求項１に記載のベクトル処理装置。
【請求項３】
前記ベクトルロード管理手段が、
前記ベクトルデータの全要素を受信したとき、無効化フラグが“１”の場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理手段が、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする請求項２に記載のベクトル処理装置。
【請求項４】
前記ベクトルロード管理手段が、
前記ベクトルデータの全要素を受信したとき、何個目の分岐命令の後の命令かを示す分岐レベルが”０”で無効化フラグが“０”の場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする請求項２又は請求項３に記載のベクトル処理装置。
【請求項５】
前記ベクトルロード管理手段が、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”１”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”０”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”１”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする請求項３又は請求項４に記載のベクトル処理装置。
【請求項６】
前記ベクトルロード管理手段が、
前記ベクトルデータの要素数を格納する格納手段を含み、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が０になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする請求項５に記載のベクトル処理装置。
【請求項７】
前記ロードバッファ管理手段が、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク手段に発行した前記メモリアクセスリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理手段は、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリアクセスリクエストの数に更新する
ことを特徴とする請求項６に記載のベクトル処理装置。
【請求項８】
前記ロードバッファ管理手段が、
後続のベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする請求項１から請求項７の何れか１項に記載のベクトル処理装置。
【請求項９】
ベクトル演算を行うベクトル装置によるベクトルロード命令実行方法であって、
プロセッサネットワーク手段が、記憶装置からベクトルデータをロードし、
ベクトルロード管理手段が、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行い、
ロードバッファ管理手段が、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理し、
前記ロードバッファ管理手段は、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトルロード命令実行方法。
【請求項１０】
ベクトル演算を行うベクトル装置を構成するコンピュータ上で動作するベクトルロード命令実行プログラムであって、
プロセッサネットワーク手段に、記憶装置からベクトルデータをロードするプロセッサネットワーク処理を実行させ、
ベクトルロード管理手段に、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理処理を実行させ、
ロードバッファ管理手段に、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理処理を実行させ、
前記ロードバッファ管理処理で、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトルロード命令実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル処理装置に関し、特に、ロードバッファ解放技術に関する。
【背景技術】
【０００２】
一般に、ベクトル処理装置は、主記憶装置からロードしたベクトルデータやベクトル演算中の中間結果などを保持する複数のベクトルレジスタと、ベクトルレジスタに保持されたベクトルデータに対する演算を行うベクトル演算器とを備え、大量のデータを高速に演算することができるようになっている。
【０００３】
また、主記憶装置のアクセス速度はベクトル演算の速度に比べて遅いため、ベクトルデータのベクトルレジスタへのロードを高速化するために、主記憶装置とベクトルレジスタとの間にベクトルデータを一時的に格納するロードバッファを備え、ベクトルロード命令の解読時に主記憶装置からロードバッファへのベクトルデータの読み出しを開始させる技術が、例えば特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３７２６０９２号
【特許文献２】特願２０１０−２２９３６２号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、背景技術では、分岐予測が失敗した時に、例えば特許文献２に開示のように、主記憶装置からのデータ転送が完了するまでロードバッファを解放することができないという課題があった。これにより、分岐予測失敗によって無効になったベクトルロード命令によりロードバッファが枯渇してしまい、分岐予測失敗後のベクトルロード命令が発行できず、無効になったベクトルロード命令による主記憶装置へのレイテンシが大きくなってしまい性能が低下していた。
【０００６】
ここで、背景技術による投機ベクトルロードの実行フローを図９に示す。
【０００７】
背景技術では、ベクトルロードデータを一時的に格納するロードバッファの確保を行ってから、主記憶装置に対してアクセスを行い、主記憶装置から読み出されるベクトルデータの全要素をロードバッファに格納し、分岐予測が成功した場合はベクトルレジスタにロードデータの転送を行ってからロードバッファの解放を行い、また分岐予測が失敗した場合はベクトルレジスタにロードデータを転送せずにロードバッファの解放を行っていた。
【０００８】
そのため、投機のベクトルロード命令が分岐予測失敗により無効命令になった時でも、主記憶装置から全要素のロードデータが読み出されるまでロードバッファを解放できないため、投機で発行した無効なベクトルロード命令がロードバッファを使用している事により、ロードバッファが枯渇した場合にベクトルロード命令を発行する事ができなかった。これにより、無効なベクトルロード命令のロードデータ読出によるメモリアクセスのレイテンシ分だけ性能が低下するという問題点があった。
【０００９】
（発明の目的）
本発明の目的は、上述の課題を解決し、ロードバッファの枯渇による性能低下を防ぐ、
ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明の第１のベクトル処理装置は、主記憶装置からベクトルデータをロードするプロセッサネットワーク手段と、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理手段と、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理手段を備え、ロードバッファ管理手段が、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファを解放する。
【００１１】
本発明の第１のベクトルロード命令実行方法は、ベクトル演算を行うベクトル装置によるベクトルロード命令実行方法であって、プロセッサネットワーク手段が、記憶装置からベクトルデータをロードし、ベクトルロード管理手段が、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行い、ロードバッファ管理手段が、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを一意に識別するロードバッファ番号と仮想番号とを連結して管理し、ロードバッファ管理手段は、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファを解放する。
【００１２】
本発明の第１のベクトルロード命令実行プログラムは、ベクトル演算を行うベクトル装置を構成するコンピュータ上で動作するベクトルロード命令実行プログラムであって、プロセッサネットワーク手段に、記憶装置からベクトルデータをロードするプロセッサネットワーク処理を実行させ、ベクトルロード管理手段に、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理処理を実行させ、ロードバッファ管理手段に、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理処理を実行させ、ロードバッファ管理処理で、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファを解放する。
【発明の効果】
【００１３】
本発明によれば、ロードバッファの枯渇による性能低下を防ぐことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態によるベクトル処理装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態によるロードバッファ管理部の構成例を示す図である。
【図３】本発明の第１の実施の形態によるベクトルロード管理部の構成例を示す図である。
【図４】本発明の第１の実施の形態によるベクトル処理装置の動作を示すシーケンス図である。
【図５】本発明の第１の実施の形態によるベクトル処理装置の動作を示すフローチャートである。
【図６】本発明のベクトル処理装置の最小限の構成を示すブロック図である。
【図７】本発明の第２の実施の形態によるベクトルロード管理部の構成例を示す図である。
【図８】本発明のベクトル処理装置のハードウェア構成例を示すブロック図である。
【図９】背景技術による投機ベクトルロードの動作を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
本発明の上記及び他の目的、特徴及び利点を明確にすべく、添付した図面を参照しながら、本発明の実施形態を以下に詳述する。なお、上述の本願発明の目的のほか、他の技術的課題、その技術的課題を解決する手段及びその作用効果についても、以下の実施形態による開示によって明らかとなるものである。
【００１６】
なお、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１７】
（第１の実施の形態）
本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１８】
図１は、本発明の第１の実施の形態によるベクトル処理装置１００の構成を示すブロック図である。図１を参照すると、本実施の形態によるベクトル処理装置１００は、プロセッサ１０と、主記憶装置７０とを備える。
【００１９】
プロセッサ１０と主記憶装置７０とは、信号線１０１及び信号線１０２を介して相互に接続されている。
【００２０】
信号線１０１は、主記憶装置７０に記憶された命令をプロセッサ１０から読み出すために用いられる信号線である。
【００２１】
信号線１０２は、主記憶装置７０に記憶されたベクトルデータ等をプロセッサ１０への読み出したり、プロセッサ１０で生成したベクトルデータ等を主記憶装置７０に書き込むために用いられる信号線である。信号線１０２を多重化することで、複数のベクトルロード命令による主記憶装置７０からのベクトルデータの読出し等を並列に行う事もできる。
【００２２】
プロセッサ１０は、命令制御部２０と、メモリアクセス処理部３０と、プロセッサネットワーク部４０と、ベクトル制御部５０と、ベクトル処理部６０とを含む。
【００２３】
命令制御部２０は、主記憶装置７０と信号線１０１で接続され、メモリアクセス処理部３０と信号線１０３で接続され、ベクトル制御部５０と信号線１０４で接続される。
【００２４】
命令制御部２０は、信号線１０１を通じて主記憶装置７０から読み出した命令を解読する命令解読部２１と、解読された命令がスカラ命令である場合にそのスカラ命令にかかる処理を実行するスカラ処理部２２を含む。
【００２５】
命令解読部２１は、解読した命令がスカラ命令である場合には、そのスカラ命令をスカラ処理部２２へ出力する。一方、解読した命令がベクトル命令である場合には、そのベクトル命令を信号線１０４を介してベクトル制御部５０に出力する。さらに、そのベクトル命令がベクトルロード命令である場合は、そのベクトルロード命令を信号線１０３を介してメモリアクセス処理部３０に出力する。
【００２６】
ベクトルロード命令は、ロードするベクトルデータの主記憶装置７０のアドレスを特定する情報（例えば開始アドレスとベクトルデータの間隔）と、ベクトルデータの要素数と、ベクトルデータをロードするベクトルレジスタの番号とを含む。
【００２７】
メモリアクセス処理部３０は、主記憶装置７０へのアクセスを制御する機能を有し、命令制御部２０と信号線１０３で接続され、プロセッサネットワーク部４０と信号線１０５で接続され、ベクトル制御部５０と信号線１０６で接続され、ベクトル処理部６０と信号線１０７で接続されている。
【００２８】
メモリアクセス処理部３０は、信号線１０３を通じて命令制御部２０から送られてくるベクトルロード命令を解読すると共に、プロセッサネットワーク部４０の状態を管理する。
【００２９】
また、メモリアクセス処理部３０は、メモリアクセスリクエストを制御する信号を信号線１０５を介してプロセッサネットワーク部４０に送る。
【００３０】
また、メモリアクセス処理部３０は、主記憶装置７０とプロセッサネットワーク４０との間、及びプロセッサネットワーク部４０とベクトル処理部６０との間のデータの行き来を制御する。
【００３１】
また、メモリアクセス処理部３０は、ロードバッファ６４の空き管理を行うロードバッファ管理部３１を備える。
【００３２】
ロードバッファ管理部３１は、ベクトルロード命令に関して、ベクトル処理部６０内に設けられている複数のロードバッファ６４（６４−１〜６４−ｎ）の空き管理を行う。
【００３３】
メモリアクセス処理部３０が命令制御部２０から信号線１０３を通じてベクトルロード命令を受信すると、ロードバッファ管理部３１は、受信したベクトルロード命令用に、空き状態の１つのロードバッファ６４−ｉ（ｉ＝１〜ｎ）を割り当てて、それを使用中状態として管理する。
【００３４】
そして、ロードバッファ管理部３１は、割り当てたロードバッファ６４−ｉを一意に識別するロードバッファ番号と、所定の仮想番号をベクトルロード命令に付したメモリアクセスリクエストを、信号線１０５を通じてプロセッサネットワーク部４０に発行する。
【００３５】
また、ロードバッファ管理部３１は、メモリアクセスリクエストの発行と同時に、ロードバッファ番号、仮想番号、分岐レベル、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報を信号線１０６を通じてベクトル制御部５０に通知する。該ベクトルロード命令情報は、ベクトル制御部５０を介してベクトル処理部６０に通知される。
【００３６】
また、メモリアクセス処理部３０が信号線１０７を通じてベクトル処理部６０からロードバッファ番号を指定したロードバッファ解放通知を受けると、ロードバッファ管理部３１は、そのロードバッファ番号に係るロードバッファ６４−ｉを再び空き状態として管理する。
【００３７】
ここで、図２にロードバッファ管理部３１の構成例を示す。
【００３８】
図２を参照すると、ロードバッファ管理部３１は、レジスタ群３１１と、レジスタ設定部３１２と、リクエスト発行部３１３を含む。
【００３９】
レジスタ群３１１は、ロードバッファ６４−１〜６４−ｎに１対１に対応するレジスタ３１１−１〜３１１−ｎの集合で構成される。各レジスタ３１１−１〜３１１−ｎは、ロードバッファ番号フィールド３１１１、使用中フラグフィールド３１１２、分岐レベルフィールド３１１３、仮想番号フィールド３１１４、無効化フラグフィールド３１１５を含む。
【００４０】
ロードバッファ番号フィールド３１１１には、ロードバッファ６４−ｉのロードバッファ番号が固定的に設定されている。
【００４１】
使用中フラグフィールド３１１２は、該当するロードバッファ番号を使用する時にフラグが設定され、信号線１０７によって通知されるロードバッファ解放通知、及び投機実行したベクトルロード命令が分岐失敗によって無効化された時にフラグがリセットされる。
【００４２】
分岐レベルフィールド３１１３には、ロードバッファ番号を確保したベクトルロード命令に対応した分岐レベルが設定される。分岐レベルは、分岐成功時にはデクリメントされ、分岐失敗時にはクリアされる。
【００４３】
仮想番号フィールド３１１４には、ロードバッファ６４−ｉの、仮想化する個数分の番号が固定的に設定されている。
【００４４】
無効化フラグフィールド３１１５は、分岐レベル≠０の場合において、分岐失敗が報告されたときに使用されていた仮想番号に対応する箇所に“１”が設定され、信号線１０７によって通知されるロードバッファ解放通知によってリセットされる。
【００４５】
無効化フィールド３１１５に、“１”が設定されていない、最若版の仮想番号が有効（現在使用中／次回使用可能）な番号となる。
【００４６】
レジスタ設定部３１２は、命令制御部２０と信号線１０３で接続され、ベクトルロード命令を受け取り、レジスタ群３１１の使用中フラグ、分岐レベル、仮想番号の設定管理を行う。
【００４７】
また、レジスタ設定部３１２は、ベクトル処理部６０と信号線１０７で接続され、レジスタ群３１１−ｉのバッファ解放通知を受け取り、該バッファ解放通知を受けたロードバッファの解放や、無効化フラグのリセットを行う。
【００４８】
リクエスト発行部３１３は、信号線１０６を通じて、そしてベクトル制御部５０を介して、ベクトル処理部６０に対してロードバッファ番号、仮想番号、分岐レベル、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報を通知する。
【００４９】
また、リクエスト発行部３１３は、信号線１０３から通知されたベクトルロード命令にロードバッファ番号と仮想番号を付したメモリアクセスリクエストを、信号線１０５を通じてプロセッサネットワーク部４０に発行する。
【００５０】
プロセッサネットワーク部４０は、主記憶装置７０と信号線１０２で接続され、メモリアクセス処理部３０と信号線１０５で接続され、ベクトル処理部６０と信号線１０８で接続される。
【００５１】
プロセッサネットワーク部４０は、メモリアクセス処理部３０から与えられるメモリアクセスリクエストに応じて、主記憶装置７０とベクトル処理部６０との間でベクトルデータをやりとりする。この時、メモリアクセスリクエストの投機／非投機にかかわらず、メモリアクセスリクエストは全要素分が主記憶装置７０に発行される。
【００５２】
ベクトルロード命令に係るメモリアクセスリクエストに関し、プロセッサネットワーク部４０は、主記憶装置７０から読み出したベクトルデータを構成する各要素に、メモリアクセスリクエストが含むロードバッファ番号及び仮想番号を付して、信号線１０８を通じてベクトル処理部６０に送出する。信号線１０８を多重化する事によって、複数のメモリアクセスリクエストにかかるベクトルデータを並行してベクトル処理部６０に供給できるようにもできる。
【００５３】
ベクトル処理部６０は、メモリアクセス処理部３０と信号線１０７で接続され、プロセッサネットワーク部４０と信号線１０８で接続され、ベクトル制御部５０と信号線１０９、１１０で接続される。
【００５４】
ベクトル処理部６０は、ベクトルデータに対してベクトル演算を実行する機能を持つ。
また、ベクトル処理部６０は、少なくとも１つのベクトルパイプライン演算器６１を備える。
【００５５】
ベクトルパイプライン演算器６１は、ベクトルデータを格納する複数のベクトルレジスタ６２と、ベクトルレジスタ６２に格納されたベクトルデータに対してベクトル演算を行う１つ以上のベクトル演算器６３と、主記憶装置７０から読み出されたベクトルデータを一時的に格納する複数のロードバッファ６４と、ベクトルロード管理部６５と、ベクトル演算器６３およびロードバッファ６４から出力されるベクトルデータをベクトルレジスタ６２に振り分けるクロスバスイッチ回路６６とを含む。
【００５６】
なお、ベクトル演算されたベクトルデータを主記憶装置７０にストアするストアバッファなど、ストアに関連する構成は本発明と直接関係しないため図示を省略している。
【００５７】
ベクトルロード管理部６５は、メモリアクセス処理部３０と信号線１０７で接続され、プロセッサネットワーク部４０と信号線１０８で接続され、ベクトル制御部５０と信号線１０９，１１０で接続される。
【００５８】
ベクトルロード管理部６５は、信号線１０８を通じて送られてきたベクトルデータの要素を、該要素に付されたロードバッファ番号に係るロードバッファ６４−ｉに一旦格納する。そしてその後、ロードバッファ６４−ｉに格納されたベクトルデータをベクトルレジスタ６２に転送する。図３にベクトルロード管理部６５の構成例を示す。
【００５９】
図３を参照すると、ベクトルロード管理部６５は、レジスタ群６５１と、レジスタ設定部６５２と、ライト部６５３と、リード部６５４とを含む。
【００６０】
レジスタ群６５１は、ロードバッファ６４−１〜６４−ｎに１対１に対応するレジスタ６５１−０〜６５１−ｎの集合で構成される。
【００６１】
各レジスタ６５１−ｉ（ｉ＝１〜ｎ）は、ロードバッファ番号フィールド６５１１、仮想番号フィールド６５１２、無効化フラグフィールド６５１３、ライト要素数フィールド６５１４、リード要素数フィールド６５１５、ベクトルレジスタ（ＶＡＲ）番号フィールド６５１６、分岐レベルフィールド６５１７、使用可否フラグフィールド６５１８を含む。
【００６２】
ロードバッファ番号フィールド６５１１には、ロードバッファ６４−ｉのロードバッファ番号が固定的に設定されている。
【００６３】
仮想番号フィールド６５１２には、ロードバッファ６４−ｉの、仮想化する個数分の番号が固定的に設定されている。
【００６４】
無効化フラグフィールド６５１３は、分岐レベル≠０の場合において、分岐失敗が報告されたときに”１”が設定され、解放通知発行時に“０”が設定される。
【００６５】
ライト要素数フィールド６５１４及びリード要素数フィールド６５１５には、ベクトルロード命令情報中の要素数が設定される。
【００６６】
ベクトルレジスタ番号フィールド６５１６には、ベクトルロード命令でロードするベクトルデータを格納するベクトルレジスタ６２の番号が設定される。
【００６７】
分岐レベルフィールド６５１７には、ロードバッファ番号を確保したベクトルロード命令に対応した分岐レベルが設定されて、分岐成功時にはデクリメント、分岐失敗時にはクリアされる。
【００６８】
使用可否フラグフィールド６５１８には、ロードバッファに格納したベクトルデータが使用可能である場合に“１”が設定され、解放通知発行時に“０”が設定される。
【００６９】
レジスタ設定部６５２は、ベクトル制御部５０と信号線１０９で接続され、レジスタ群６５１の初期設定や分岐レベルの管理を行う。
【００７０】
また、レジスタ設定部６５２は、メモリアクセス処理部３０と信号線１０７で接続され、レジスタ６５１−ｉのロードバッファ解放通知を送る。該ロードバッファ解放通知を受けたロードバッファ管理部３１は、該通知に係るロードバッファ６４−ｉの解放（使用中フラグ／無効化フラグのリセット）を行う。
【００７１】
レジスタ設定部６５２は、信号線１０９を通じてベクトル制御部５０から、ロードバッファ番号、分岐レベル、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報が伝達されると、そのロードバッファ番号をロードバッファ番号フィールド６５１１に持つレジスタ６５１−ｉの分岐レベルフィールド６５１２に、ベクトルロード命令の分岐レベルを設定する。また、該レジスタ６５１−ｉのベクトルレジスタ番号フィールド６５１４にベクトルロード命令情報中のベクトルレジスタ番号を設定する。さらに、該レジスタ６５１−ｉのライト要素数フィールド６５１５及びリード要素数フィールド６５１６にベクトルロード命令情報中の要素数を設定する。
【００７２】
ライト部６５３は、プロセッサネットワーク部４０と信号線１０８で接続され、ベクトルデータのロードバッファ６４への書き込みを行う。
【００７３】
ライト部６５３は、信号線１０８を通じてプロセッサネットワーク部４０からベクトルデータの要素を受信した時に、受信した要素に付加されているロードバッファ番号を持つロードバッファ６４−ｉについて、レジスタ６５１−ｉを参照して、該要素に付加されている仮想番号に対応する無効化フラグフィールド６５１３が”０“であった場合、該ロードバッファ６４−ｉにその要素を書き込む。
【００７４】
次いで、ライト部６５３は、該ロードバッファ番号をロードバッファ番号フィールド６５１に持つレジスタ６５１−ｉのライト要素数フィールド６５１４の値を、書き込んだ要素数分だけ減算し、全要素の書き込みが終了したときに使用可否フラグフィールド６５１８を”１“に設定する。
【００７５】
受信した要素に付加されているロードバッファ番号を持つロードバッファ６４−ｉについて、レジスタ６５１−ｉを参照して、該要素に付加されている仮想番号に対応する無効化フラグフィールド６５１３が”１“であった場合、ライト部６５３は、該ロードバッファ６４−ｉにその要素の書き込みを行わずに、該要素を廃棄する。
【００７６】
次いで、ライト部６５３は、該ロードバッファ番号をロードバッファ番号フィールド６５１１に持つレジスタ６５１−ｉのライト要素数フィールド６５１４の値を、書き込んだ要素数分だけ減算する。
【００７７】
また、分岐レベルフィールド６５１７が”０“でない場合、ライト部６５３は、受信した要素に付加されているロードバッファ番号を持つロードバッファ６４−ｉにその要素を書き込む。
【００７８】
次いで、ライト部６５３は、該ロードバッファ番号をロードバッファ番号フィールド６５１１に持つレジスタ６５１−ｉのライト要素数フィールド６５１４の値を、書き込んだ要素数分だけ減算していき、全要素の書き込みが終了した時点で分岐レベルフィールド６５１７が”０“であった場合、使用可否フラグフィールド６５１８を”１“に設定する。
さらにこの時、書き込み中／全要素書き込み後に無効化フラグフィールド６５１３が“１”であった場合は、ライト部６５３は、使用可否フラグフィールド６５１８の設定は行わない。
【００７９】
リード部６５４は、ベクトル制御部５０と信号線１０９で接続され、ロードバッファ６４からベクトルレジスタ６２へのベクトルデータの転送を行う。
【００８０】
リード部６５４は、レジスタ設定部６５２によってライト要素数フィールド６５１４が全要素数に初期設定されたレジスタ６５１−ｉについて、そのレジスタのロードバッファ番号フィールド６５１１に設定されたバッファ番号を持つロードバッファ６４−ｉのベクトルデータを、そのレジスタのベクトルレジスタ番号フィールド６５１６に設定された番号のベクトルレジスタ６２に転送する条件が満足されたかどうかを監視する。
【００８１】
リード部６５４は、ベクトルデータの全要素がロードバッファ６４−ｉに格納済みである（使用可否フラグフィールド６５１８の値が“１“である）場合に、該レジスタ６５１−ｉについて転送可能と判断する。
【００８２】
リード部６５４は、或るレジスタ６５１−ｉについて転送可能と判断した場合、信号線１１０を通じてベクトル制御部５０に対して、そのレジスタ６５１−ｉのロードバッファ番号フィールド６５１１に設定されたバッファ番号及びベクトルレジスタ番号フィールド６５１６に設定されたベクトルレジスタ番号を指定した転送開始通知を送出する。
【００８３】
そして、該転送開始通知を送出した後、リード部６５４は、ロードバッファ番号フィールド６５１１に設定されたバッファ番号を持つロードバッファ６４−ｉに格納されているデータを順次に読み出して、ベクトルレジスタ番号フィールド６５１６に設定された番号のベクトルレジスタ６２にクロスバスイッチ回路６６を通じて書き込んでいく。このとき、リード部６５４は、ベクトルデータの１要素をロードバッファ６４から読み出す毎に、リード要素数フィールド６５１５の値を１だけ減算する。
【００８４】
リード要素数フィールド６５１５の値が０になると、転送完了となり、リード部６５４は、そのレジスタ６５１−ｉのロードバッファ番号フィールド６５１１に設定されたバッファ番号及びベクトルレジスタ番号フィールド６５１６に設定されたベクトルレジスタ番号を指定した転送終了通知として信号線１１０を通じてベクトル制御部５０に送出する。
【００８５】
そして、該転送終了通知の送出と同時に、リード部６５４は、そのレジスタ６５１−ｉのロードバッファ番号フィールド６５１１及び仮想番号フィールド６５１２に設定された番号をロードバッファ解放通知として信号線１０７を通じてメモリアクセス処理部３０に送出し、そのレジスタ６５１−ｉのフィールド６５１２〜６５１７を例えばＮＵＬＬに初期化する。
【００８６】
無効化フラグフィールド６５１３が“１”、ライト要素数フィールド６５１４が“０”の場合は、投機的に実行されたベクトルロード命令が無効化された場合であるため、リード部６５４は、そのレジスタ６５１−ｉのロードバッファ番号フィールド６５１１に設定されたバッファ番号及びベクトルレジスタ番号フィールド６５１６に設定されたベクトルレジスタ番号を指定した転送終了通知として信号線１１０を通じてベクトル制御部５０に送出する
【００８７】
そして、該転送終了通知の送出と同時に、リード部６５４は、そのレジスタ６５１−ｉのロードバッファ番号フィールド６５１１および仮想番号フィールド６５１２に設定された番号をロードバッファ解放通知として信号線１０７を通じてメモリアクセス処理部３０に送出し、そのレジスタ６５１−ｉのフィールド６５１２〜６５１７を例えばＮＵＬＬに初期化する。
【００８８】
ベクトル処理部６０は、ベクトルロード命令と、分岐レベルと、分岐予測結果と、ロードバッファ番号とを、メモリアクセス処理部３０から受け取り、ベクトルロード命令の投機／非投機状態を管理する。
【００８９】
ベクトルロード命令は、メモリアクセス処理部３０が信号線１０３を通じて命令制御部２０から受信したものである。
【００９０】
分岐レベルは、何個目の分岐命令の後の命令かを示すものである。
【００９１】
本実施の形態によるベクトルロード命令の投機実行方法は、上述の構成において、ロードバッファを確保した後に、各ロードバッファにｎ個持っている仮想番号の最若番の番号を選択し、ロードバッファ番号に仮想番号を連結して管理することを特徴とする。また、本実施の形態によるベクトルロード命令の投機実行方法は、上述の構成において、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に、分岐予測失敗した仮想番号と異なる仮想番号を連結することによって、個数が限られているロードバッファを有効に使用する事で性能を向上させることを特徴とする。さらに、分岐予測が失敗した場合は、選択した仮想番号を連結したロードバッファを解放して、後続のベクトルロード命令がロードバッファを確保した後に、分岐予測失敗した仮想番号と異なる仮想番号を連結することを特徴とする。
【００９２】
（第１の実施の形態の動作の説明）
次に、本実施の形態によるベクトル処理装置１００の動作について、図面を参照して詳細に説明する。
【００９３】
図４は、本実施の形態に係るベクトル処理装置１００による投機ベクトルロードの実行フローを示すシーケンス図である。
【００９４】
本実施の形態は、ロードバッファ６４の確保を行うときに、ロードバッファに付加する仮想番号と、分岐レベル（何個目の分岐命令の後の命令かを示している）と、分岐予測結果とをベクトルロード管理部６５に通知する。ベクトルロード管理部６５は、仮想番号と分岐レベルと無効化フラグをロードバッファ６４と同時に管理する機能を備える。
【００９５】
ベクトルロード管理部６５は、管理している分岐レベルに対して、分岐予測が成功したときには分岐レベルのデクリメントを行い、分岐レベル＝０になった命令は非投機の命令として処理する。
【００９６】
分岐予測が失敗したとき、ロードバッファ管理部３１では、投機で確保したロードバッファに対応する仮想番号に対して無効化フラグを“１”にする。
【００９７】
また、ベクトルロード管理部６５では、投機で確保したロードバッファに対応する仮想番号に無効化フラグを“１”にさせて、投機のベクトルロードのデータが主記憶装置から転送されてきても、ロードバッファからベクトルレジスタ６２にデータを転送せずに廃棄し、
無効化フラグが“１”になっているロードバッファの廃棄が完了した事をロードバッファ管理部３１に報告する。
【００９８】
また、ロードバッファ管理部３１は、該当する仮想番号の無効化フラグを“０”にする。
ロードバッファ管理部３１は、無効化フラグが“０”の仮想番号を用いてロードバッファを確保する事が出来るようになるため、無効なベクトルロード命令のためにロードバッファが枯渇する事がなくなり、分岐予測後のベクトルロード命令が実行できるようになり、無効なベクトルロード命令のロードデータ読出によるメモリアクセスのレイテンシを隠蔽する事ができる。
【００９９】
次に、図１の回路の動作について、図５のフローチャートを参照して説明する。
【０１００】
プロセッサ１０は、主記憶装置７０から命令を読出し、命令解読部２１でスカラ命令かベクトル命令かの判定を行い（図５のステップＳ０１）、命令解読部２１でスカラ命令であった場合は、スカラ処理部２２にて処理を行う（ステップＳ０２）。
【０１０１】
命令解読部２１でベクトル命令と判定された場合は、メモリアクセス処理部３０のロードバッファ管理部３１にてロードバッファ６４−ｉと無効化フラグが“０”の最若版の仮想番号を確保（ステップＳ０３）してから、プロセッサネットワーク部４０を介して、主記憶装置７０にベクトルロード命令を発行する（ステップＳ０４）。
【０１０２】
ベクトルロード命令の発行と同時に、メモリアクセス処理部３０はベクトル制御部５０を介してベクトル処理部６０内のベクトルロード管理部６５に、各種情報の登録を行う。
【０１０３】
ベクトルロード管理部６５は、登録された各種情報内の分岐レベルフィールドを参照して、発行されたベクトルロード命令の分岐レベル判定を行い（ステップＳ０５）、分岐レベルが０であった場合は、該当ベクトルロードの全要素数分のリプライがあったかの判定を行い（ステップＳ０６）、全要素数のリプライが返却されていない場合は、全要素数分のリプライ返却を待つ（ステップＳ０６）。
【０１０４】
全要素数のリプライが返却されていた場合、ベクトルロード管理部６５は、分岐予測失敗によって無効化フラグが“０”であるかの判定を行い（ステップＳ０７）無効化フラグが“１”の場合は、無効化されたロードバッファ番号のロードバッファ解放通知に仮想番号を付加してメモリアクセス処理部３０に連絡し、ロードバッファ管理部３１はロードバッファの解放を行う（ステップＳ０９）。
【０１０５】
無効化フラグが“０”の場合、ベクトルロード管理部６５は、ロードバッファ６４からベクトルレジスタ６２へクロスバスイッチ６６を介してデータを転送したのち（ステップＳ０８）、使用が完了したロードバッファ番号のロードバッファ解放通知をメモリアクセス処理部３０に連絡し、ロードバッファ管理部３１はロードバッファの解放を行う（ステップＳ０９）。
【０１０６】
ステップＳ０５で分岐レベルが０でなかった場合、ベクトルロード管理部６５は、該当ベクトルロードの全要素数分のリプライがあったかの判定を行い（ステップＳ１０）、全要素数のリプライが返却されていない場合は、全要素数分のリプライ返却を待つ（ステップＳ１０）。
【０１０７】
全要素数のリプライが返却されていた場合、ベクトルロード管理部６５は、分岐予測失敗によって無効化フラグが“０”であるかの判定を行う（ステップＳ１１）。
【０１０８】
無効化フラグが“１”の場合、ベクトルロード管理部６５は、無効化されたロードバッファ番号のロードバッファ解放通知に仮想番号を付加してメモリアクセス処理部３０に連絡し、ロードバッファ管理部３１はロードバッファの解放を行う（ステップＳ０９）。
【０１０９】
無効化フラグが“０”の場合、ベクトルロード管理部６５は、分岐レベルが０であるかどうかの判定を行う（ステップＳ１２）、分岐レベルが０で無かった場合は、ステップＳ１１に戻る。
【０１１０】
分岐レベルが０であった場合、ベクトルロード管理部６５は、ロードバッファ６４からベクトルレジスタ６２へクロスバスイッチ６６を介してデータを転送したのち（ステップＳ０８）、使用が完了したロードバッファ番号のロードバッファ解放通知をメモリアクセス処理部３０に連絡し、ロードバッファ管理部３１はロードバッファの解放を行う（ステップＳ０９）。
【０１１１】
（第１の実施の形態による効果）
本実施の形態による第１の効果は、投機的に発行したベクトルロード命令が分岐予測失敗により無効になった場合に、ロードバッファをすぐに解放するため、無効なベクトルロード命令によるロードバッファの枯渇が無くなるため、ロードバッファを有効に活用する事ができるようになることである。
【０１１２】
本実施の形態による第２の効果は、投機的に発行したベクトルロード命令が分岐予測失敗により無効になった場合に、ロードバッファをすぐに解放し、無効なベクトルロード命令が確保しているロードバッファがなくなるため、分岐予測後のベクトルロード命令が発行できるようになることである。これにより、無効なベクトルロード命令のロードデータ読出によるメモリアクセスのレイテンシを隠蔽できるため、性能を向上させることができる。
【０１１３】
なお、本発明の課題を解決できる最小限の構成を図６に示す。ベクトル処理装置１００が、主記憶装置７０からベクトルデータをロードするプロセッサネットワーク部４０と、ベクトルデータのロードバッファ６４への格納及びベクトルレジスタ６２への転送を行うベクトルロード管理部６５と、ベクトルロード命令にロードバッファ６４を確保するとともに、ロードバッファ６４に複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを６４一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理部３１を備え、ロードバッファ管理部３１が、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置７０から読み出される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファ６４を解放することで、上述した本発明の課題を解決することができる。
【０１１４】
（第２の実施の形態）
次に、本発明の第２の実施の形態にについて説明を行う。
【０１１５】
次に、本発明の他の実施例について図面を参照して詳細に説明する。
【０１１６】
図７は、本実施の形態によるベクトルロード管理部６５の構成例を示す図である。他の構成については第１の実施の形態と同様であるため説明を省略する。
【０１１７】
図７を参照すると、本実施の形態によるベクトルロード管理部６５は、第１の実施の形態によるベクトルロード管理部６５が備えていたライト要素数フィールド６５１４及びリード要素数フィールド６５１５を備えず、代わりに、ベクトルロード命令の全要素数を格納する要素数フィールド６５１９と、格納／転送要素数をカウントする要素数カウンタ６５１１０を備える。
【０１１８】
要素数フィールド６５１９にはベクトルロード情報中の要素数を最初に設定し、メモリアクセス処理部３０が、ベクトルロード命令の全要素を、プロセッサネットワーク部４０に信号線１０５を通じて送出し終わっていた場合は、分岐レベル≠０のベクトルロード命令に対して分岐予測失敗が報告された時に、無効化フラグフィールド６５１３に”１“を設定する。
【０１１９】
しかし、メモリアクセス処理部３０が分岐レベル≠０のベクトルロード命令の送出を行っている時に、分岐予測失敗が報告された場合は、該当するベクトルロード命令の要素数フィールド６５１９を、メモリアクセス処理部３０が発行したメモリアクセスリクエスト数の値に更新し、無効化フラグフィールド６５１３に”１“を設定する。
【０１２０】
ライト部６５３は、プロセッサネットワーク部４０と信号線１０８で接続され、ベクトルデータのロードバッファ６４への書き込みを行う。
【０１２１】
ライト部６５３は、信号線１０８を通じてプロセッサネットワーク部４０からベクトルデータの要素を受信した時に、受信した要素に付随するロードバッファ番号を持つロードバッファ６４にその要素を書き込む。
【０１２２】
次いで、ライト部６５３は、該ロードバッファ番号をロードバッファ番号フィールド６５１に持つレジスタ６５１−ｉの要素数カウンタフィールド６５１１０の値を、書き込んだ要素数分だけ加算する。
【０１２３】
さらに、ライト部６５３は、レジスタ６５１−ｉの要素数カウンタフィールド６５１１０の値が要素数フィールド６５１９の値と一致したときに、無効化フラグフィールド６５１３が“０”であったら、使用可否フラグフィールド６５１８を”１“に設定する。無効化フラグフィールド６５２３が“１”の場合は、使用可否フラグフィールド６５１８の設定は行わない。
【０１２４】
本実施の形態では、分岐予測失敗によって投機的に実行されたベクトルロード命令が無効化された場合に、仮想番号の解放が早くなるケースができるため、仮想番号を効率よく使用できるので、少ないハード量の増加で実現が可能となる。また余分なメモリアクセスリクエストを発行しないことによる消費電力低減といった新たな効果を有する。
【０１２５】
次に、本発明のベクトル処理装置１００のハードウェア構成例について、図８を参照して説明する。図８は、本発明のベクトル処理装置１００のハードウェア構成例を示すブロック図である。
【０１２６】
図８を参照すると、本発明のベクトル処理装置１００は、一般的なコンピュータ装置と同様のハードウェア構成であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリからなる、データの作業領域やデータの一時退避領域に用いられる主記憶部８０２、ネットワークを介してデータの送受信を行う通信部８０３、入力装置８０５や出力装置８０６及び記憶装置８０７と接続してデータの送受信を行う入出力インタフェース部８０４、上記各構成要素を相互に接続するシステムバス８０８を備えている。記憶装置８０７は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置等で実現される。
【０１２７】
本発明の各機能は、プログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、記憶装置８０７に格納し、そのプログラムを主記憶部８０２にロードしてＣＰＵ８０１で実行することにより、ソフトウェア的に実現することも可能である。
【０１２８】
以上、好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【０１２９】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【０１３０】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
【０１３１】
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
【０１３２】
また、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【０１３３】
さらに、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
【０１３４】
（付記１）
主記憶装置からベクトルデータをロードするプロセッサネットワーク手段と、
ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理手段と、
ベクトルロード命令において、ロードデータを一時的に格納するロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理手段を備え、
前記ロードバッファ管理手段が、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトル処理装置。
【０１３５】
（付記２）
前記ロードバッファ管理手段が、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク手段が、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理手段が、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする付記１に記載のベクトル処理装置。
【０１３６】
（付記３）
前記ベクトルロード管理手段が、
前記ベクトルデータの全要素を受信したとき、無効化フラグが“１”の場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理手段が、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする付記２に記載のベクトル処理装置。
【０１３７】
（付記４）
前記ベクトルロード管理手段が、
前記ベクトルデータの全要素を受信したとき、分岐レベルが”０”で無効化フラグが“０”の場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする付記２又は付記３に記載のベクトル処理装置。
【０１３８】
（付記５）
前記ベクトルロード管理手段が、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”１”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”０”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”１”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする付記３又は付記４に記載のベクトル処理装置。
【０１３９】
（付記６）
前記ベクトルロード管理手段が、
前記ベクトルデータの要素数を格納する格納手段を含み、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が０になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする付記５に記載のベクトル処理装置。
【０１４０】
（付記７）
前記ロードバッファ管理手段が、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク手段に発行した前記メモリアクセスリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理手段は、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリアクセスリクエストの数に更新する
ことを特徴とする付記６に記載のベクトル処理装置。
【０１４１】
（付記８）
前記ロードバッファ管理手段が、
後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする付記１から付記７の何れか１項に記載のベクトル処理装置。
【０１４２】
（付記９）
ベクトル演算を行うベクトル装置によるベクトルロード命令実行方法であって、
プロセッサネットワーク手段が、記憶装置からベクトルデータをロードし、
ベクトルロード管理手段が、ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行い、
ロードバッファ管理手段が、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理し、
前記ロードバッファ管理手段は、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトルロード命令実行方法。
【０１４３】
（付記１０）
前記ロードバッファ管理手段は、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク手段は、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理手段は、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする付記９に記載のベクトルロード命令実行方法。
【０１４４】
（付記１１）
前記ベクトルロード管理手段は、
前記ベクトルデータの全要素を受信したとき、無効化フラグが“１”の場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理手段は、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする付記９又は付記１０に記載のベクトルロード命令実行方法。
【０１４５】
（付記１２）
前記ベクトルロード管理手段は、
前記ベクトルデータの全要素を受信したとき、分岐レベルが”０”で無効化フラグが“０”の場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする付記９から付記１１の何れか１項に記載のベクトルロード命令実行方法。
【０１４６】
（付記１３）
前記ベクトルロード管理手段は、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”１”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”０”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”１”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする付記１１又は付記１２に記載のベクトルロード命令実行方法。
【０１４７】
（付記１４）
前記ベクトルロード管理手段は、
前記ベクトルデータの要素数を格納手段に格納し、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が０になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする付記１３に記載のベクトルロード命令実行方法。
【０１４８】
（付記１５）
前記ロードバッファ管理手段は、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク手段に発行した前記メモリアクセスリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理手段は、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリアクセスリクエストの数に更新する
ことを特徴とする付記１４に記載のベクトルロード命令実行方法。
【０１４９】
（付記１６）
前記ロードバッファ管理手段は、
後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする付記９から付記１５の何れか１項に記載のベクトルロード命令実行方法。
【０１５０】
（付記１７）
ベクトル演算を行うベクトル装置を構成するコンピュータ上で動作するベクトルロード命令実行プログラムであって、
プロセッサネットワーク手段に、記憶装置からベクトルデータをロードするプロセッサネットワーク処理を実行させ、
ベクトルロード管理手段に、ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理処理を実行させ、
ロードバッファ管理手段に、ベクトルロード命令において、ベクトルデータを一時的に格納するロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理処理を実行させ、
前記ロードバッファ管理処理で、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から読み出される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトルロード命令実行プログラム。
【０１５１】
（付記１８）
前記ロードバッファ管理処理で、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク処理で、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理処理で、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする付記１７に記載のベクトルロード命令実行プログラム。
【０１５２】
（付記１９）
前記ベクトルロード管理処理で、
前記ベクトルデータの全要素を受信したとき、無効化フラグが“１”の場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理処理で、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする付記１７又は付記１８に記載のベクトルロード命令実行プログラム。
【０１５３】
（付記２０）
前記ベクトルロード管理処理で、
前記ベクトルデータの全要素を受信したとき、分岐レベルが“０”で無効化フラグが“０”の場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする付記１７から付記１９の何れか１項に記載のベクトルロード命令実行プログラム。
【０１５４】
（付記２１）
前記ベクトルロード管理処理で、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”１”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”０”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”１”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする付記１９又は付記２０に記載のベクトルロード命令実行プログラム。
【０１５５】
（付記２２）
前記ベクトルロード管理処理で、
前記ベクトルデータの要素数を格納手段に格納し、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が０になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする付記２１に記載のベクトルロード命令実行プログラム。
【０１５６】
（付記２３）
前記ロードバッファ管理処理で、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク手段に発行した前記メモリアクセスリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理処理で、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリアクセスリクエストの数に更新する
ことを特徴とする付記２２に記載のベクトルロード命令実行プログラム。
【０１５７】
（付記２４）
前記ロードバッファ管理処理で、
後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする付記１７から付記２３の何れか１項に記載のベクトルロード命令実行プログラム。
【符号の説明】
【０１５８】
１０：プロセッサ
２０：命令制御部
２１：命令解読部
２２：スカラ処理部
３０：メモリアクセス処理部
３１：ロードバッファ管理部
３１１（３１１−１〜３１−ｎ）：レジスタ群
３１１１：ロードバッファ番号フィール
３１１２：使用中フラグフィールド
３１１３：分岐レベルフィールド
３１１４：仮想番号フィールド
３１１５：無効化フラグフィールド
４０：プロセッサネットワーク部
５０：ベクトル制御部
６０：ベクトル処理部
６１：ベクトルパイプライン演算器
６２：ベクトルレジスタ
６３：ベクトル演算器
６４（６４−１〜６４−ｎ）：ロードバッファ
６５：ベクトルロード管理部
６５１（６５１−１〜６５１−ｎ）：レジスタ群
６５１１：ロードバッファ番号フィールド
６５１２：仮想番号フィールド
６５１３：無効化フラグフィールド
６５１４：ライト要素数フィールド
６５１５：リード要素数フィールド
６５１６：ベクトルレジスタ（ＶＡＲ）番号フィールド
６５１７：分岐レベルフィールド
６５１８：使用可否フラグフィールド
６５１９：要素数フィールド
６５１１０：要素数カウンタフィールド
６５２：レジスタ設定部
６５３：ライト部
６５４：リード部
６６：クロスバスイッチ回路
１０１〜１１０：信号線
８０１：ＣＰＵ
８０２：主記憶部
８０３：通信部
８０４：入出力インタフェース部
８０５：入力装置
８０６：出力装置
８０７：記憶装置
８０８：システムバス
【図１】
0005648645.tif 000002
【図２】
0005648645.tif 000003
【図３】
0005648645.tif 000004
【図４】
0005648645.tif 000005
【図５】
0005648645.tif 000006
【図６】
0005648645.tif 000007
【図７】
0005648645.tif 000008
【図８】
0005648645.tif 000009
【図９】
0005648645.tif 000010