(57)【特許請求の範囲】
【請求項１】
ロードバッファを有するベクトル処理部と、
ベクトルデータを一時的に保持するキャッシュ部と、
ベクトルロード命令を前記キャッシュ部へ通知するメモリアクセス処理部と、を備え、
前記メモリアクセス処理部は、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記キャッシュ部は、前記プリフェッチ命令に応じてベクトルデータを主記憶装置から読み出して前記キャッシュ部に配置する、
ベクトル演算装置。
【請求項２】
前記ロードバッファの解放後、前記メモリアクセス処理部は、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、請求項１に記載のベクトル演算装置。
【請求項３】
前記キャッシュ部は、前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、請求項１又は２に記載のベクトル演算装置。
【請求項４】
前記キャッシュ部は、前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、請求項３に記載のベクトル演算装置。
【請求項５】
前記ロードバッファの使用状態をフラグ情報により管理するロードバッファ管理部を備え、前記メモリアクセス処理部、又は、ベクトル処理部が、前記ロードバッファ管理部を備える、請求項１から請求項４のいずれか１項に記載のベクトル演算装置。
【請求項６】
前記メモリアクセス処理部は、前記ベクトルロード命令の受付後、前記ロードバッファ管理部を検索して、前記ロードバッファが使用できるかを判定する、請求項５に記載のベクトル演算装置。
【請求項７】
前記ベクトル処理部は、ロードデータがロードバッファに格納されているか否かを管理するベクトルロード管理部を備え、
前記ベクトルロード管理部は、ロードバッファの解放後にロードバッファ管理部にロードバッファの解放を通知する、請求項５又は請求項６のいずれか１項に記載のベクトル演算装置。
【請求項８】
主記憶装置と、請求項１から７に記載のベクトル演算装置とを備える、ベクトル処理装置。
【請求項９】
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御方法であって、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、
ベクトル演算装置の制御方法。
【請求項１０】
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御プログラムであって、
前記ベクトル演算装置に、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、ことを実行させる、
ベクトル演算装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロードバッファを備えるベクトル演算装置に関する。
【背景技術】
【０００２】
ベクトル処理装置は、主記憶装置とベクトル演算装置を備え、当該ベクトル演算装置は、主記憶装置からロードしたベクトルデータやベクトル演算中の中間結果を保持するベクトルレジスタと、ベクトルレジスタに保持されたベクトルデータを演算するベクトル演算器とを有する。
【０００３】
主記憶装置のアクセス速度は、ベクトル演算の速度に比べて遅く、ベクトルデータのベクトルレジスタへのロードを高速化するために、特許文献１のベクトル演算装置は、主記憶装置とベクトルレジスタとの間にベクトルデータを一時的に格納するロードバッファを備える。
【０００４】
一方、メモリ管理の技術として、特許文献２、３にプリフェッチが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平２−１０１５７６号公報
【特許文献２】特許第４５３２９３１号公報
【特許文献３】特開２００２−２９７３７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１のような、ベクトルデータを格納するロードバッファを有するベクトル演算装置は、ロードバッファが枯渇すると、ロードバッファが確保されるまでベクトルロード命令を保留し、ロードバッファが確保されてからベクトルロード命令を発行する。このとき、発行されたベクトルロード命令が、キャッシュメモリに送られてキャッシュミスになると、主記憶装置からキャッシュメモリにベクトルデータを転送する必要が生じる。
これにより、ベクトル演算装置におけるベクトルロード命令の実行時間が長くなり、装置性能が低下する。
【０００７】
また、特許文献２、３には、スカラ演算装置にプリフェッチに適用させる技術の開示はあるが、ベクトル演算装置に適用させるための具体的な開示はない。
【０００８】
このように、ロードバッファを備えるベクトル演算装置において、ロードバッファの枯渇によるベクトルロード命令の実行時間の長期化を解消する具体的な技術が望まれている。
【０００９】
本発明の目的は、ロードバッファを備えるベクトル演算装置において、ベクトルロード命令の実行時間を短縮することが可能な技術を提供することにある。
【課題を解決するための手段】
【００１０】
本発明のベクトル演算装置は、ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部と、ベクトルロード命令を前記キャッシュ部へ通知するメモリアクセス処理部と、を備え、前記メモリアクセス処理部は、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、前記キャッシュ部は、前記プリフェッチ命令に応じてベクトルデータを主記憶装置から読み出して前記キャッシュ部に配置する。
【００１１】
本発明のベクトル演算装置の制御方法は、ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御方法であって、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する。
【００１２】
本発明のベクトル演算装置の制御プログラムは、ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御方法であって、前記ベクトル演算装置に、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、ことを実行させる。
【００１３】
本発明のベクトル処理装置は、主記憶装置と、上述のベクトル演算装置とを備える。
【発明の効果】
【００１４】
本発明は、ロードバッファを備えるベクトル演算装置において、ベクトルロード命令の実行時間を短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態によるベクトル演算装置の構成を示すブロック図である。
【図２】第１の実施形態によるベクトル演算装置１のメモリアクセス処理部２の動作を示すフローチャートである。
【図３】本発明の第２の実施形態によるベクトル処理装置の構成を示すブロック図である。
【図４】本発明の第２の実施形態によるベクトル処理装置の動作を示すシーケンス図である。
【図５】本発明の第３の実施形態によるベクトル処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
（第１の実施形態）
本発明の第１の実施形態によるベクトル演算装置について図面を参照して説明する。
【００１７】
図１は、第１の実施形態によるベクトル演算装置の構成を示すブロック図である。図１に示すように、ベクトル演算装置１は、ロードデータを格納するロードバッファ６を有し、ベクトルデータに対するベクトル演算を実行するベクトル処理部５と、主記憶装置（図示せず）からのベクトルデータを一時的に保持するキャッシュ部４を有する。更にベクトル演算装置１は、ベクトルロード命令に応じて、主記憶装置からベクトル処理部５にベクトルデータを転送するプロセッサネットワーク部３と、ベクトルロード命令をプロセッサネットワーク部３へ通知するメモリアクセス処理部２と、を備える。メモリアクセス処理部２は、ロードバッファ６が使用できない場合、ベクトルロード命令の通知を保留し、保留したベクトルロード命令に対応するプリフェッチ命令を生成し、キャッシュ部４１にプリフェッチ命令を通知する。キャッシュ部４１は、プリフェッチ命令に応じてベクトルデータを主記憶装置から読み出してキャッシュ部４に配置する（書き込む）。
【００１８】
なお、ベクトル演算装置、及び、これを含むベクトル処理装置の各構成については、第２の実施形態にてさらに詳しく説明する。
【００１９】
次に、第１の実施形態によるベクトル演算装置の動作について図面を用いて説明する。
【００２０】
図２は、第１の実施形態によるベクトル演算装置のメモリアクセス処理部の動作を示すフローチャートである。図２に示すように、ベクトル演算装置１のメモリアクセス処理部２は、ベクトルロード命令を受付けた後、ベクトル処理部５のロードバッファ６が使用できるか否かを判定する（Ａ１）。
【００２１】
ベクトル処理部５のロードバッファ６が使用できる場合（Ａ１のＹｅｓ）、メモリアクセス処理部２は、プロセッサネットワーク部３（キャッシュ部４１を含む）にベクトルロード命令を通知する（Ａ５）。
【００２２】
ベクトル処理部５のロードバッファ６が使用できない場合（Ａ１のＮｏ）、メモリアクセス処理部２は、プロセッサネットワーク部３（キャッシュ部４１を含む）へのベクトルロード命令の通知を保留（Ａ２）し、ベクトルロード命令によるベクトルデータのベクトル処理部５への転送を保留する。メモリアクセス処理部２は、保留したベクトルロード命令に対応するプリフェッチ命令を生成し、生成したプリフェッチ命令をプロセッサネットワーク部３（キャッシュ部４を含む）に通知する（Ａ３）。
【００２３】
その後、メモリアクセス処理部２は、ロードバッファ６が使用できる否かを判定し（Ａ４）、ロードバッファ６が使用できる場合（Ａ４のＹｅｓ）、メモリアクセス処理部２は、プロセッサネットワーク部３（キャッシュ部４を含む）にベクトルロード命令を通知する（Ａ５）。プロセッサネットワーク部３（キャッシュ部４を含む）は、プリフェッチ命令に応じて、ベクトルデータを、主記憶装置から読み出してキャッシュ部４に配置する。
【００２４】
上述のように、第１の実施形態によるベクトル処理装置１によれば、ベクトルロード命令を受けたメモリアクセス処理部２は、ロードバッファ６が使用できない場合、保留したベクトルロード命令に対応するプリフェッチ命令を生成し、生成したプリフェッチ命令をプロセッサネットワーク部３へ通知する。プロセッサネットワーク部３（キャッシュ部４を含む）は、プリフェッチ命令に応じて、主記憶装置からベクトルロード命令に対応するベクトルデータをプロセッサネットワーク部３のキャッシュ部４に配置する。その後、ロードバッファ６が使用可能になった際に、メモリアクセス処理部２から通知されるベクトルロード命令に対して、キャッシュ部４でベクトルデータがキャッシュヒットするため、プロセッサネットワーク部３（キャッシュ部４を含む）は、対応するベクトルデータをベクトル処理部５に速やかに転送することができる。すなわち、ベクトルロード命令の実行時間を短縮することができる。
【００２５】
また、第１の実施形態では、保留したベクトルロード命令に対応するプリフェッチ命令を用いている。このため、先行技術文献に記載のような、履歴保持機構やアドレス予測機構を必要としない。また、予測によるプリフェッチではないため、予測が外れて不必要なデータをキャッシュすることもない。
【００２６】
（第２の実施形態）
次に、本発明の第２の実施形態によるベクトル演算装置、及び、ベクトル処理装置について図面を用いて説明する。図３は、第２の実施形態によるベクトル処理装置１００の構成を示すブロック図である。図３に示すように、第２の実施形態のベクトル処理装置１００は、ベクトルベクトル演算装置１０と、主記憶装置７０とを備える。
（ベクトル処理装置１００）
ベクトル演算装置１０と主記憶装置７０は、信号線１０１及び信号線１０２を介して相互に接続されている。信号線１０２は、主記憶装置７０に記憶されたベクトルデータをベクトル演算装置１０に読み出すため、又は、ベクトル演算装置１０で生成したベクトルデータを主記憶装置７０に書き込むために用いられる。
【００２７】
以下、ベクトル処理装置１００を構成する、ベクトル演算装置１０及び主記憶装置７０について詳細に説明する。
【００２８】
（ベクトル演算装置１０）
ベクトル演算装置１０は、命令制御部２０と、メモリアクセス処理部３０と、プロセッサネットワーク部４０と、ベクトル制御部５０と、ベクトル処理部６０と、を備える。
【００２９】
（命令制御部２０）
命令制御部２０は、主記憶装置７０と信号線１０１で接続され、メモリアクセス処理部３０と信号線１０３で接続され、ベクトル制御部５０と信号線１０４で接続されている。
【００３０】
命令制御部２０は、信号線１０１を通じて主記憶装置７０から読み出した命令を解読する。解読された命令がスカラ命令である場合は、そのスカラ命令にかかる処理を実行する。一方、解読された命令がベクトル命令である場合は、そのベクトル命令を、信号線１０４を介してベクトル制御部５０に出力する。さらに、そのベクトル命令がベクトルロード命令である場合は、そのベクトルロード命令を、信号線１０３を介して後述のメモリアクセス処理部３０に出力する。ベクトルロード命令は、ロードするベクトルデータの主記憶装置７０のアドレスを特定する情報（例えば、開始アドレスとベクトルデータの間隔）と、ベクトルデータの要素数と、ベクトルデータをロードするベクトルレジスタに割り振られたベクトルレジスタ番号を含む。
【００３１】
（メモリアクセス処理部３０）
メモリアクセス処理部３０は、信号線１０３により命令制御部２０と、信号線１０５によりプロセッサネットワーク部４０と、信号線１０６によりベクトル制御部５０と、信号線１０７によりベクトル処理部６０と、それぞれ接続されている。メモリアクセス処理部３０は、命令制御部２０から送られる命令に応じてベクトル処理部６０と主記憶装置７０とのアクセスを制御する。第２の実施形態によるベクトル演算装置１０のメモリアクセス処理部３０は、第１の実施形態によるベクトル演算装置１のメモリアクセス処理部２に相当する。
【００３２】
メモリアクセス処理部３０は、信号線１０３を通じて命令制御部２０から送られるベクトルロード命令を解読すると共に、プロセッサネットワーク部４０の状態を管理する。また、メモリアクセス処理部３０は、ベクトルロード命令を、信号線１０５を介してプロセッサネットワーク部４０に送る。さらに、メモリアクセス処理部３０は、主記憶装置７０とプロセッサネットワーク４０との間、及び、プロセッサネットワーク部４０とベクトル処理部６０との間のデータの行き来を制御する。
【００３３】
（ロードバッファ管理部３１）
メモリアクセス処理部３０は、後述するロードバッファ６２の空き管理を行うロードバッファ管理部３１を備える。ロードバッファ管理部３１は、ベクトルロード命令に関して、ベクトル処理部６０のロードバッファ６２における記憶領域の空きを管理する。
【００３４】
メモリアクセス処理部３０が、命令制御部２０から信号線１０３を通じてベクトルロード命令を受信すると、ロードバッファ管理部３１は、受信したベクトルロード命令用に、空き状態のロードバッファ６２の記憶領域を割り当てて、それを使用中として管理する。そして、ロードバッファ管理部３１は、割り当てたロードバッファ６２の記憶領域を一意に識別するロードバッファ番号を、信号線１０５を通じてプロセッサネットワーク部４０に発行する。
【００３５】
また、ロードバッファ管理部３１は、ロードバッファ番号、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報を、信号線１０６を通じてベクトル制御部５０に通知する。該ベクトルロード命令情報は、ベクトル制御部５０を介してベクトル処理部６０に通知される。
【００３６】
なお、ロードバッファ管理部３１は、メモリアクセス処理部３０が信号線１０７を通じて後述するベクトル処理部６０からロードバッファ番号を指定したロードバッファ解放通知を受けると、そのロードバッファ番号に係るロードバッファ６２の記憶領域を再び空き状態として管理する。
【００３７】
ロードバッファ管理部３１は、ロードバッファ６２の記憶領域の管理のために、フラグ情報を用いる。ロードバッファ６２の記憶領域に対応してロードバッファ番号が固定的に設定される。このロードバッファ番号に１対１で対応するフラグが、ロードバッファ番号数の分、設定される。ベクトルロード命令で使用中のロードバッファ６２の記憶領域は、対応するロードバッファ番号のフラグが１となる。一方、ベクトル処理部６０から送られてくるロードバッファ解放通知によって解放されるロードバッファ６２の記憶領域は、対応するロードバッファ番号のフラグが０となる。すなわち、フラグがリセットされる。このようにメモリアクセス処理部３０は、ロードバッファ管理部３１のフラグ情報を検索することにより、使用可能なロードバッファ６２の記憶領域の有無を判定し、使用するロードバッファ番号を特定できる。
【００３８】
ここで、第２の実施形態によるベクトル演算装置１０のメモリアクセス処理部３０は、ベクトルロード命令を受付けた際にベクトルロード管理部３１を検索し、ロードバッファ６２に使用可能な記憶領域がある場合、後述のプロセッサネットワーク部４０にベクトルロード命令であることを通知する。さらに、メモリアクセス処理部３０は、主記憶装置７０上の所望のベクトルデータを特定する情報、要素数、ロードバッファ番号をプロセッサネットワーク部４０に通知する。また、メモリアクセス処理部３０は、ベクトル制御部５０にロードバッファ番号を通知する。
【００３９】
一方、ロードバッファ６２に使用可能な記憶領域がない場合、メモリアクセス処理部３０は、ロードバッファ６２に記憶領域が確保されるまでプロセッサネットワーク部４０へのベクトルロード命令、及び、それに付随する情報の通知を保留する。また、メモリアクセス処理部３０は、ベクトル制御部５０へのロードバッファ番号の通知も保留する。
【００４０】
メモリアクセス処理部３０は、ロードバッファ６２に使用可能な記憶領域がないと判定した際に、後述するプロセッサネットワーク部４０にプリフェッチ命令を通知するとともに、ベクトルロード命令の主記憶装置７０上の所望のベクトルデータを特定する情報、要素数を通知する。
【００４１】
そして、ロードバッファ６２に記憶領域が確保された後、メモリアクセス処理部３０は、プロセッサネットワーク部４０にベクトルロード命令、及び、それに付随する情報を通知し、ベクトル制御部５０にロードバッファ番号を通知する。
（プロセッサネットワーク部４０）
プロセッサネットワーク部４０は、主記憶装置７０と信号線１０２で接続され、メモリアクセス処理部３０と信号線１０５で接続され、ベクトル処理部６０と信号線１０８で接続される。プロセッサネットワーク部４０は、主記憶装置７０のデータを一時的に保持するキャッシュ部４１を備える。第２の実施形態によるベクトル演算装置１０のプロセッサネットワーク部４０は、第１の実施形態によるベクトル演算装置１のプロセッサネットワーク部３に相当する。
【００４２】
プロセッサネットワーク部４０は、メモリアクセス処理部３０から送られてくるベクトルロード命令に応じて、主記憶装置７０とベクトル処理部６０との間で、ベクトルデータを転送する。
【００４３】
プロセッサネットワーク部４０は、メモリアクセス処理部３０から送られるベクトルロード命令を要素毎のベクトルロード命令に分解し、要素毎のベクトルロード命令に情報を付加し後述するベクトル処理部６０に転送する。付加する情報は、ベクトルロード命令の場合、所望のベクトルデータの格納位置、ロードバッファ番号、要素番号であり、プリフェッチ命令の場合、所望のベクトルデータの格納位置である。
【００４４】
（キャッシュ部４１）
キャッシュ部４１は、命令がベクトルロード命令の場合、主記憶装置７０内の所望のベクトルデータをキャッシュ部４１が保持しているか否かを判定（キャッシュヒット／ミス判定）する。所望のベクトルデータをキャッシュ部４１が保持している場合（キャッシュヒット時）、キャッシュ部４１は、キャッシュ部４１で保持しているベクトルデータをベクトル処理部３０にロードデータとして転送する。一方、キャッシュ部４１が保持していない場合（キャッシュミス時）、キャッシュ部４１は、主記憶装置７０にロード命令を送り、主記憶装置７０から所望のベクトルデータを受け取る。続いて、キャッシュ部４１は、ベクトルデータをキャッシュ部４１へ格納するとともにベクトル処理部６０へロードデータとして転送する。キャッシュ部４１は、ベクトル処理部６０にロードデータを転送する際にロードバッファ番号、要素番号も付加して転送する。
【００４５】
また、キャッシュ部４１は、メモリアクセス処理部３０からの命令が、プリフェッチ命令の場合も、主記憶装置７０内のベクトルデータをキャッシュ部４１が保持しているか否かを判定（キャッシュヒット／ミス判定）する。キャッシュ部４１が保持している場合（キャッシュヒット時）、プリフェッチ命令は完了する。キャッシュ部４１が保持していない場合（キャッシュミス時）、キャッシュ部４１は、主記憶装置７０にキャッシュフィル命令を送り、主記憶装置７０から所望のベクトルデータを受け取り、キャッシュ部４１へ格納する。
（ベクトル制御部５０）
ベクトル制御部５０は、命令制御部２０と信号線１０４で接続され、メモリアクセス処理部３０と信号線１０６で接続され、ベクトル処理部６０と信号線１０９で接続される。
【００４６】
ベクトル制御部５０は、命令制御部２０から送られてくるベクトル命令に応じてベクトル処理部６０で行うベクトル命令を制御する。
【００４７】
ベクトルロード命令時にはメモリアクセス処理部３０からロードバッファ番号を受け取った後にベクトル処理部６０へベクトルロード命令であることを通知すると同時にロードバッファ番号、要素数、転送先ベクトルレジスタ番号を通知する。
（ベクトル処理部６０）
ベクトル処理部６０は、メモリアクセス処理部３０と信号線１０７で接続され、プロセッサネットワーク部４０と信号線１０８で接続され、ベクトル制御部５０と信号線１０９、１１０で接続される。
【００４８】
ベクトル処理部６０は、ベクトルデータに対してベクトル演算を実行する機能を持つ。ベクトル処理部６０は、ベクトルロード管理部６１と、主記憶装置７０から読み出されたベクトルデータを一時的に格納するロードバッファ６２と、ベクトルデータを格納するベクトルレジスタ６３と、ベクトルレジスタ６３に格納されたベクトルデータに対してベクトル演算を行う１つ以上のベクトル演算器（不図示）とを備える。第２の実施形態によるベクトル演算装置１０のベクトル処理部６０、ロードバッファ６２は、それぞれ第１の実施形態によるベクトル演算装置１のベクトル処理部５、ロードバッファ６に相当する。
【００４９】
ベクトル演算器およびロードバッファ６２から出力されるベクトルデータは、ベクトルレジスタ６３に振り分けられる。なお、ベクトル演算されたベクトルデータを主記憶装置７０にストアするストアバッファなど、ストアに関連する構成は具体的な説明、及び、図示を省略している。
【００５０】
また、ベクトル処理部６０は、メモリアクセス処理部３０からベクトルロード命令、及び、ロードバッファ番号を受け取る。
ベクトルロード命令は、メモリアクセス処理部３０が信号線１０３を通じて命令制御部２０から受信する。
（ベクトルロード管理部６１）
ベクトルロード管理部６１は、メモリアクセス処理部３０と信号線１０７で接続され、プロセッサネットワーク部４０と信号線１０８で接続され、ベクトル制御部５０と信号線１０９，１１０で接続される。
【００５１】
ベクトルロード管理部６１は、信号線１０８を通じて送られてきたベクトルデータの要素を、該要素に付されたロードバッファ番号に係るロードバッファの記憶領域に一旦格納する。そしてその後、ロードバッファ６２の記憶領域に格納されたベクトルデータをベクトルレジスタ６３に転送する。
【００５２】
また、ベクトルロード管理部６１は、ロードバッファ管理部３１から、ロードバッファ解放通知を受け、該通知に係るロードバッファ６２の記憶領域を解放（使用中フラグのリセット）する。
【００５３】
ベクトルロード管理部６１は、ベクトル制御部５０から送られたロードバッファ番号、要素数、転送先のベクトルレジスタ番号を含むベクトルロード命令、及び、プロセッサネットワーク部４０から送られたロードバッファ番号、要素番号を含むロードデータに応じてロードバッファ６２内にロードデータが整列したか否かを管理する。ロードデータが整列し、ベクトルレジスタへの転送が可能になった場合にはロードバッファ６２からロードデータを読み出しベクトルレジスタ６３へ転送する。
【００５４】
ベクトルロード管理部６１は、ロードバッファ６２からベクトルレジスタ６３へ転送を行うためにロードバッファ６２からロードデータを読み出した後に信号線１０７を通じてメモリアクセス処理部３０にロードバッファ解放通知を送る。
【００５５】
ロードバッファ６２は、ロードデータを格納する記憶領域を備える。ロードバッファ６２の記憶領域は、複数個ありベクトルロード命令ごとに使用するロードバッファ６２の記憶領域を指定するためにロードバッファ番号が付与されている。ロードデータ６２の記憶領域における格納位置は、ロードバッファ番号と要素番号により決定される。
【００５６】
ベクトルレジスタ６３は、ベクトル演算を行う際のデータを格納しておくレジスタである。ベクトルレジスタ６３は、複数個ありベクトル命令ごとに使用するベクトルレジスタを指定するためにベクトルレジスタ番号が付与されている。ベクトル処理部６０内のベクトル演算器は図示していない。
（主記憶装置７０）
主記憶装置７０は、命令制御部２０と信号線１０１で接続され、プロセッサネットワーク部４０と信号線１０２で接続される。主記憶装置７０はプロセッサネットワーク部６０から送られてくるベクトルロードに従ってベクトルデータの転送を行う。
【００５７】
ロード命令時には所望のベクトルデータを特定する情報を基にベクトルデータを読み出しプロセッサネットワーク部に転送する。キャッシュフィル命令時にも同様に所望のベクトルデータを特定する情報を基にベクトルデータを読み出しプロセッサネットワーク部４１に転送する。
【００５８】
次に、第２の実施形態のベクトル演算装置１０の動作について図面を用いて説明する。図４は、第２の実施形態によるベクトル演算装置１０の動作を示すシーケンス図である。図中、実線は、第２の実施形態の動作を示し、破線は、関連する比較例の動作を示している。
【００５９】
はじめに、命令制御部２０は、主記憶装置７０から読み出した命令を解読し、ベクトルロード命令である場合は、そのベクトルロード命令を、メモリアクセス処理部３０に出力する。メモリアクセス処理部３０は、ベクトル処理部６０のロードバッファ６２が使用できるか否かを判定する。ロードバッファ６２が使用できない場合、メモリアクセス処理部３０は、ベクトルロード命令の通知を保留し、ベクトルロード命令に代えてプリフェッチ命令をプロセッサネットワーク部４０に通知する。
【００６０】
プロセッサネットワーク部４０のキャッシュ部４１は、プリフェッチ命令に応じて、ベクトルロード命令に対応するベクトルデータがキャッシュ部４１にあるか否かを判定する。ベクトルデータがキャッシュ部４１に存在する場合、プリフェッチ命令は完了する。ベクトルデータがキャッシュ部４１に存在しない場合、キャッシュ部４１は、主記憶装置からベクトルロード命令に対応するベクトルデータをキャッシュ部４１に配置する。
【００６１】
ベクトル処理部６０のベクトルロード管理部６１は、ロードバッファ６２に空きができると、ロードバッファ解放通知をメモリアクセス処理部３０に通知し、メモリアクセス処理部３０は、通知を保留していたベクトルロード命令をプロセッサネットワーク部４０に通知する。
【００６２】
プロセッサネットワーク部４０のキャッシュ部４１は、ベクトルロード命令を受けて、ベクトルロード命令に対応するベクトルデータがキャッシュ部４１にあるか否かを判定する。プリフェッチ命令によってキャッシュ部４１に対応するベクトルデータが存在するため、キャッシュ部４１は、ベクトルデータをベクトル処理部６０へ転送する。
【００６３】
次に、図４に示す比較例の動作について説明する。図４の破線が示すように比較例のメモリアクセス処理部は、ロードバッファが使用できない場合、プリフェッチ命令をプロセッサネットワーク部に通知せず、ロードバッファが解放されるまでベクトルロード命令の通知を保留する。比較例のメモリアクセス処理部は、ロードバッファ解放後、プロセッサネットワーク部にベクトルロード命令を通知する。このときプロセッサネットワーク部のキャッシュ部にベクトルロード命令に対応するベクトルデータが存在しない（キャッシュミス）と、プロセッサネットワーク部は、主記憶装置からベクトルデータをロードすることになる。このとき、比較例は、ベクトルロード命令の実行時間が長くなる。
【００６４】
結果として、図４に示すように第２の実施形態のベクトル処理装置は、比較例に比べて、ベクトルロード命令の実行時間を短縮することができる。
【００６５】
なお、メモリアクセス処理部３０からのプリフェッチ命令後、ベクトルデータがキャッシュ部４１に配置される前に、ロードバッファ６２が開放され、メモリアクセス処理部３０で保留されていたベクトルロード命令が通知される場合がある。この場合、主記憶装置７０への同一アドレスにアクセスする際に、プリフェッチ命令時の主記憶装置７０への同一アドレスへのアクセスデータを用いる。これにより主記憶装置７０へのアクセスを高速化でき、後続のベクトルロード命令の実行時間を短縮することができる。
【００６６】
上述のように、第２の実施形態によるベクトル処理装置１００によれば、メモリアクセス処理部３０は、ベクトルロード命令を受け付けた際、ロードバッファ６２が使用できない場合にベクトルロード命令の通知を保留する。続いて、メモリアクセス処理部３０は、ベクトルロード命令に対応するプリフェッチ命令を生成し、プリフェッチ命令を発行する。更に、メモリアクセス処理部３０は、ロードバッファ解放通知を受け付け、使用可能なロードバッファ６２が確保された後にベクトルロード命令を発行する。
【００６７】
キャッシュ部４１は、プリフェッチ命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュミス時には主記憶装置７０へアクセスしベクトルデータをキャッシュ部４１に保持しておく。また、キャッシュ部４１は、ベクトルロード命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュヒット時にキャッシュからベクトルデータをロードバッファ６２に送る。キャッシュミス時にはキャッシュ部４１は、主記憶装置７０へアクセスしデータを転送しロードバッファ６２へ送る。このようにロードバッファ６２が使用できない場合に保留されたベクトルロード命令について、ロードバッファ６２が使用可能になった際に、プリフェッチ命令でキャッシュ部４１にベクトルデータを保持できた場合には保留されていたベクトルロード命令はキャッシュにヒットする。このため、プロセッサネットワーク部４０は、対応するベクトルデータをベクトル処理部４０に速やかに転送することができる。すなわち、ベクトルロード命令の実行時間を短縮することができる。  また、プリフェッチ命令後、ベクトルデータがキャッシュ部４１に配置される前に保留されたベクトルロード命令が通知されると、キャッシュ部４１でキャッシュヒットしない場合がある。このとき、プリフェッチ命令時のアクセスデータを用いて主記憶装置７０にアクセスすることで、主記憶装置７０へのアクセスを高速化し、後続のベクトルロード命令の実行時間を短縮することができる。
【００６８】
さらに、第２の実施形態は、第１の実施形態と同様に、保留したベクトルロード命令に対応するプリフェッチ命令を用いている。このため、先行技術文献に記載のような、履歴保持機構やアドレス予測機構を必要としない。また予測によるプリフェッチではないため、予測が外れて不必要なデータをキャッシュすることもない。
【００６９】
＜第３の実施形態＞
本発明の第３の実施形態によるベクトル演算装置、及び、ベクトル処理装置について、図面を用いて説明する。図５は、第３の実施形態によるベクトル処理装置の構成を示すブロック図である。第３の実施形態によるベクトル処理装置１００Ａは、ロードバッファ管理部６４の配置が第２の実施形態によるベクトル処理装置１００と相違する。すなわち、第２の実施形態によるベクトル処理装置１００は、ロードバッファ管理部３１をメモリアクセス処理部３０に備えるが、第３の実施形態によるベクトル処理装置１００Ａは、ロードバッファ管理部６４をベクトルベクトル処理部６０Ａに備える。なお、第３の実施形態によるベクトル処理装置１００Ａの構成の説明において、第２の実施形態によるベクトル処理装置１００と同じ構成については、同一の符号を付与し詳細な説明は省略する。
【００７０】
ベクトル演算装置１０Ａは、命令制御部２０、メモリアクセス処理部３０Ａ、プロセッサネットワーク部４０、ベクトル制御部５０、ベクトル処理部６０Ａを備える。
【００７１】
プロセッサネットワーク部４０は、主記憶装置のベクトルデータを保持するキャッシュ部４１を備える。
【００７２】
ベクトル処理部６０Ａは、ベクトルロード管理部６１、ロードバッファ６２、ベクトルレジスタ６３およびロードバッファ管理部６４を備える。
【００７３】
メモリアクセス処理部３０Ａは、命令制御部２０から送られてくる命令に応じてベクトル処理部６０Ａと主記憶装置７０とのアクセスを制御する。ベクトルロード命令時には信号線１０７を通じてベクトルロード処理部６０Ａにロードバッファ番号要求を送り、ベクトル処理部６０Ａよりロードバッファ番号を受け取った後にプロセッサネットワーク部４０へベクトルロード命令を通知する。これとともに主記憶装置７０上の所望のベクトルデータを特定する情報、要素数、ロードバッファ番号を通知する。またベクトル制御部５０にロードバッファ番号を通知する。
【００７４】
第３の実施形態のメモリアクセス処理部３０Ａは、ロードバッファ番号の要求をベクトル処理部６０Ａに送った後、ベクトル処理部６０Ａより後述するプリフェッチ指示を受け取ると、ベクトルロード命令の通知を保留する。更にメモリアクセス処理部３０Ａは、プロセッサネットワーク部４０にプリフェッチ命令を通知するとともに、ベクトルロード命令の主記憶装置７０上の所望のベクトルデータを特定する情報、要素数を通知する。
【００７５】
ベクトル処理部６０Ａは、ベクトルロード管理部６１と、ロードバッファ６２と、ベクトルレジスタ６３、ロードバッファ管理部６４を含み、メモリアクセス処理部３０Ａから送られてくるロードバッファ要求に応じてベクトルロード管理部６１を検索する。
【００７６】
ロードバッファに使用可能な記憶領域がある場合、ベクトル処理部６０Ａは、信号線１０７と通じてロードバッファ番号をメモリアクセス処理部３０Ａに通知する。ロードバッファに使用可能な記憶領域が無い場合、ベクトル処理部６０Ａは、信号線１０７と通じてプリフェッチ指示をメモリアクセス処理部３０Ａに送出する。なお、ベクトル処理部６０Ａは、ロードバッファが確保された後、ロードバッファ番号をメモリアクセス処理部３０Ａに通知する。
【００７７】
ベクトルロード管理部６１は、ベクトル制御部５０から送られたロードバッファ番号、要素数、転送先ベクトルレジスタ番号を含むベクトルロード命令、および、プロセッサネットワーク部４０から送られたロードバッファ番号、要素番号を含むロードデータに応じてロードバッファ６２内にロードデータが整列したか否かを管理する。
【００７８】
またベクトルロード管理部６１は、プロセッサネットワーク部４０から送られてきたロードデータをロードバッファ６２に送り、ロードデータがロードバッファ６２に格納されているか否かを管理する。ベクトルロード管理部６１は、ロードデータが整列し、ベクトルレジスタ６３への転送が可能になった場合、ロードバッファ６２からロードデータを読み出しベクトルレジスタ６３へ転送する。
【００７９】
ベクトルロード管理部６１は、ロードバッファ６２からベクトルレジスタ６３にロードデータを転送するために、ロードバッファ６２からロードデータを読み出した後にロードバッファ管理部６４にロードバッファ解放通知を送る。
【００８０】
ロードバッファ管理部６４は、ロードバッファ番号に１対１で対応するフラグをロードバッファ番号数の分持つ。ロードバッファ管理部６４は、ベクトルロード命令で使用したロードバッファ番号に対応するフラグを１とし、ベクトルロード管理部６１から送られてくるロードバッファ解放通知により解放するロードバッファ番号に対応するフラグを０とする。
【００８１】
これによりメモリアクセス処理部３０Ａは、ベクトル処理部６０Ａのロードバッファ管理部６４にあるフラグを検索することで、使用可能なロードバッファの有無を判定し、使用するロードバッファ番号を特定する。
【００８２】
上述のように、第３の実施形態によるベクトル処理装置１００Ａによれば、第２の実施形態と同様に、ベクトルロード命令の実行時間を短縮することができる。
【００８３】
すなわち、メモリアクセス処理部３０Ａは、ベクトルロード命令を受け付けた際、ロードバッファ６２が使用できない場合にベクトルロード命令を保留する。続いて、メモリアクセス処理部３０Ａは、ベクトルロード命令に対応するプリフェッチ命令を生成し、プリフェッチ命令を発行する。更に、メモリアクセス処理部３０は、ロードバッファ解放通知を受け付け、使用可能なロードバッファが確保された後にベクトルロード命令を発行する。
【００８４】
キャッシュ部４１は、プリフェッチ命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュミス時には主記憶装置７０へアクセスしベクトルデータをキャッシュ部４１に保持しておく。また、キャッシュ部４１は、ベクトルロード命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュヒット時にキャッシュからデータをロードバッファ６２に送り、ミス時には主記憶装置７０へアクセスしデータを転送しロードバッファ６２へ送る。
【００８５】
このように、ロードバッファ６２が使用できない場合に保留されたベクトルロード命令は、ロードバッファ６２が使用可能になった後、プリフェッチ命令でキャッシュ部４１にベクトルデータが保持された場合に、キャッシュにヒットする。このため、プロセッサネットワーク部４０は、対応するベクトルデータをベクトル処理部４０に速やかに転送することができる。
【００８６】
また、プリフェッチ命令後、ベクトルデータがキャッシュ部４１に配置される前に保留されたベクトルロード命令が通知されると、キャッシュ部４１でキャッシュヒットしない場合がある。このとき、プリフェッチ命令時のアクセスデータを用いて主記憶装置７０にアクセスすることで、主記憶装置７０へのアクセスを高速化し、後続のベクトルロード命令の実行時間を短縮することができる。  さらに、第３の実施形態は、第１の実施形態と同様に、保留したベクトルロード命令に対応するプリフェッチ命令を用いている。このため、先行技術文献に記載のような、履歴保持機構やアドレス予測機構を必要としない。また予測によるプリフェッチではないため、予測が外れて不必要なデータをキャッシュすることもない。
【００８７】
（その他）
なお、本発明の各機能は、プログラムを組み込んだＬＳＩのハードウエア部品である回路部品を実装することにより、その動作をハードウエア的に実現することができる。またその機能を提供するプログラムを記憶装置（図示せず）に格納し、そのプログラムを主記憶部１００にロードして命令制御部で実行することにより、ソフトウエア的に実現することも可能である。
ベクトル処理装置１００、又は、ベクトル演算装置１、１０が備える各部の実現手段は、特に限定されない。すなわち、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した二つ以上の装置を有線又は無線で接続し、これら複数の装置により実現してもよい。
【００８８】
以上、実施形態（及び実施例）を参照して本願発明を説明したが、本願発明は上記実施形態（及び実施例）に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００８９】
上記の実施形態の一部又は全部は、以下の付記のように記載されうるが、以下には限られない。
【００９０】
（付記１）
ロードバッファを有するベクトル処理部と、
ベクトルデータを一時的に保持するキャッシュ部と、
ベクトルロード命令を前記キャッシュ部へ通知するメモリアクセス処理部と、を備え、
前記メモリアクセス処理部は、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記キャッシュ部は、前記プリフェッチ命令に応じてベクトルデータを主記憶装置から読み出して前記キャッシュ部に配置する、ベクトル演算装置。
【００９１】
（付記２）
前記ロードバッファの解放後、前記メモリアクセス処理部は、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、付記１に記載のベクトル演算装置。
【００９２】
（付記３）
前記キャッシュ部は、前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、付記１又は付記２に記載のベクトル演算装置。
【００９３】
（付記４）
前記キャッシュ部は、前記プリフェッチ命令に応じて、対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、付記３に記載のベクトル演算装置。
【００９４】
（付記５）
前記ロードバッファの使用状態をフラグ情報により管理するロードバッファ管理部を備え、前記メモリアクセス処理部、又は、ベクトル処理部が、前記ロードバッファ管理部を備える、付記１〜付記４のいずれか１つに記載のベクトル演算装置。
【００９５】
（付記６）
前記メモリアクセス処理部は、前記ベクトルロード命令の受付後、前記ロードバッファ管理部を検索して、前記ロードバッファが使用できるかを判定する、付記５に記載のベクトル演算装置。
【００９６】
（付記７）
前記ベクトル処理部は、ロードデータがロードバッファに格納されているか否かを管理するベクトルロード管理部を備え、
前記ベクトルロード管理部は、ロードバッファの解放後にロードバッファ管理部にロードバッファの解放を通知する、付記５又は付記６のいずれか１つに記載のベクトル演算装置。
【００９７】
（付記８）
主記憶装置と、付記１から８のいずれか１つに記載のベクトル演算装置とを備える、付記１〜付記７のいずれか１つに記載のベクトル演算装置。
【００９８】
（付記９）
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御方法であって、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、
ベクトル演算装置の制御方法。
【００９９】
（付記１０）
前記ロードバッファの解放後、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、付記９に記載のベクトル演算装置の制御方法。
【０１００】
（付記１１）
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、付記９又は付記１０に記載のベクトル演算装置の制御方法。
【０１０１】
（付記１２）
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、付記１１に記載のベクトル演算装置の制御方法。
【０１０２】
（付記１３）
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御プログラムであって、
前記ベクトル演算装置に、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、ことを実行させる、
ベクトル演算装置の制御プログラム。
【０１０３】
（付記１４）
前記ロードバッファの解放後、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、付記１３に記載のベクトル演算装置の制御プログラム。
【０１０４】
（付記１５）
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、付記１３又は付記１４に記載のベクトル演算装置の制御プログラム。
【０１０５】
（付記１６）
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、付記１５に記載のベクトル演算装置の制御プログラム。
【０１０６】
（付記１７）
ロードデータを格納するロードバッファを有し、ベクトルデータに対するベクトル演算を実行するベクトル処理部と、
主記憶装置からの前記ベクトルデータを一時的に保持するキャッシュ部を有し、ベクトルロード命令に応じて、前記主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送するプロセッサネットワーク部と、
前記ベクトルロード命令を前記プロセッサネットワーク部へ通知するメモリアクセス処理部と、を備え、
前記メモリアクセス処理部は、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留したベクトルロード命令に対応するプリフェッチ命令を前記プロセッサネットワーク部に通知し、
前記プロセッサネットワーク部は、前記プリフェッチ命令に応じて対応するベクトルデータを、前記主記憶装置から読み出して前記キャッシュ部に配置する、ベクトル演算装置。
【符号の説明】
【０１０７】
１  ベクトル演算装置
２  メモリアクセス処理部
３  プロセッサネットワーク部
４  キャッシュ部
５  ベクトル処理部
６  ロードバッファ
１０、１０Ａ  ベクトル演算装置
２０  命令制御部
３０、３０Ａ  メモリアクセス処理部
４０  プロセッサネットワーク部
４１  キャッシュ部
５０  ベクトル制御部
６０  ベクトル処理部
６１  ベクトルロード管理部
６２  ロードバッファ
６３  ベクトルレジスタ
６４  ロードバッファ管理部
１００、１００Ａ  ベクトル処理装置
１０１  信号線
１０２  信号線
１０３  信号線
１０４  信号線
１０５  信号線
１０６  信号線
１０７  信号線
１０８  信号線
１０９  信号線
【図１】
0006413605.tif 000002
【図２】
0006413605.tif 000003
【図３】
0006413605.tif 000004
【図４】
0006413605.tif 000005
【図５】
0006413605.tif 000006