(58)【調査した分野】(Int.Cl.,DB名)
前記キャッシュ部は、前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、請求項1又は2に記載のベクトル演算装置。
前記キャッシュ部は、前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、請求項3に記載のベクトル演算装置。
前記ロードバッファの使用状態をフラグ情報により管理するロードバッファ管理部を備え、前記メモリアクセス処理部、又は、ベクトル処理部が、前記ロードバッファ管理部を備える、請求項1から請求項4のいずれか1項に記載のベクトル演算装置。
前記メモリアクセス処理部は、前記ベクトルロード命令の受付後、前記ロードバッファ管理部を検索して、前記ロードバッファが使用できるかを判定する、請求項5に記載のベクトル演算装置。
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御方法であって、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、
ベクトル演算装置の制御方法。
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御プログラムであって、
前記ベクトル演算装置に、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、ことを実行させる、
ベクトル演算装置の制御プログラム。
【発明を実施するための形態】
【0016】
(第1の実施形態)
本発明の第1の実施形態によるベクトル演算装置について図面を参照して説明する。
【0017】
図1は、第1の実施形態によるベクトル演算装置の構成を示すブロック図である。
図1に示すように、ベクトル演算装置1は、ロードデータを格納するロードバッファ6を有し、ベクトルデータに対するベクトル演算を実行するベクトル処理部5と、主記憶装置(図示せず)からのベクトルデータを一時的に保持するキャッシュ部4を有する。更にベクトル演算装置1は、ベクトルロード命令に応じて、主記憶装置からベクトル処理部5にベクトルデータを転送するプロセッサネットワーク部3と、ベクトルロード命令をプロセッサネットワーク部3へ通知するメモリアクセス処理部2と、を備える。メモリアクセス処理部2は、ロードバッファ6が使用できない場合、ベクトルロード命令の通知を保留し、保留したベクトルロード命令に対応するプリフェッチ命令を生成し、キャッシュ部41にプリフェッチ命令を通知する。キャッシュ部41は、プリフェッチ命令に応じてベクトルデータを主記憶装置から読み出してキャッシュ部4に配置する(書き込む)。
【0018】
なお、ベクトル演算装置、及び、これを含むベクトル処理装置の各構成については、第2の実施形態にてさらに詳しく説明する。
【0019】
次に、第1の実施形態によるベクトル演算装置の動作について図面を用いて説明する。
【0020】
図2は、第1の実施形態によるベクトル演算装置のメモリアクセス処理部の動作を示すフローチャートである。
図2に示すように、ベクトル演算装置1のメモリアクセス処理部2は、ベクトルロード命令を受付けた後、ベクトル処理部5のロードバッファ6が使用できるか否かを判定する(A1)。
【0021】
ベクトル処理部5のロードバッファ6が使用できる場合(A1のYes)、メモリアクセス処理部2は、プロセッサネットワーク部3(キャッシュ部41を含む)にベクトルロード命令を通知する(A5)。
【0022】
ベクトル処理部5のロードバッファ6が使用できない場合(A1のNo)、メモリアクセス処理部2は、プロセッサネットワーク部3(キャッシュ部41を含む)へのベクトルロード命令の通知を保留(A2)し、ベクトルロード命令によるベクトルデータのベクトル処理部5への転送を保留する。メモリアクセス処理部2は、保留したベクトルロード命令に対応するプリフェッチ命令を生成し、生成したプリフェッチ命令をプロセッサネットワーク部3(キャッシュ部4を含む)に通知する(A3)。
【0023】
その後、メモリアクセス処理部2は、ロードバッファ6が使用できる否かを判定し(A4)、ロードバッファ6が使用できる場合(A4のYes)、メモリアクセス処理部2は、プロセッサネットワーク部3(キャッシュ部4を含む)にベクトルロード命令を通知する(A5)。プロセッサネットワーク部3(キャッシュ部4を含む)は、プリフェッチ命令に応じて、ベクトルデータを、主記憶装置から読み出してキャッシュ部4に配置する。
【0024】
上述のように、第1の実施形態によるベクトル処理装置1によれば、ベクトルロード命令を受けたメモリアクセス処理部2は、ロードバッファ6が使用できない場合、保留したベクトルロード命令に対応するプリフェッチ命令を生成し、生成したプリフェッチ命令をプロセッサネットワーク部3へ通知する。プロセッサネットワーク部3(キャッシュ部4を含む)は、プリフェッチ命令に応じて、主記憶装置からベクトルロード命令に対応するベクトルデータをプロセッサネットワーク部3のキャッシュ部4に配置する。その後、ロードバッファ6が使用可能になった際に、メモリアクセス処理部2から通知されるベクトルロード命令に対して、キャッシュ部4でベクトルデータがキャッシュヒットするため、プロセッサネットワーク部3(キャッシュ部4を含む)は、対応するベクトルデータをベクトル処理部5に速やかに転送することができる。すなわち、ベクトルロード命令の実行時間を短縮することができる。
【0025】
また、第1の実施形態では、保留したベクトルロード命令に対応するプリフェッチ命令を用いている。このため、先行技術文献に記載のような、履歴保持機構やアドレス予測機構を必要としない。また、予測によるプリフェッチではないため、予測が外れて不必要なデータをキャッシュすることもない。
【0026】
(第2の実施形態)
次に、本発明の第2の実施形態によるベクトル演算装置、及び、ベクトル処理装置について図面を用いて説明する。
図3は、第2の実施形態によるベクトル処理装置100の構成を示すブロック図である。
図3に示すように、第2の実施形態のベクトル処理装置100は、ベクトルベクトル演算装置10と、主記憶装置70とを備える。
(ベクトル処理装置100)
ベクトル演算装置10と主記憶装置70は、信号線101及び信号線102を介して相互に接続されている。信号線102は、主記憶装置70に記憶されたベクトルデータをベクトル演算装置10に読み出すため、又は、ベクトル演算装置10で生成したベクトルデータを主記憶装置70に書き込むために用いられる。
【0027】
以下、ベクトル処理装置100を構成する、ベクトル演算装置10及び主記憶装置70について詳細に説明する。
【0028】
(ベクトル演算装置10)
ベクトル演算装置10は、命令制御部20と、メモリアクセス処理部30と、プロセッサネットワーク部40と、ベクトル制御部50と、ベクトル処理部60と、を備える。
【0029】
(命令制御部20)
命令制御部20は、主記憶装置70と信号線101で接続され、メモリアクセス処理部30と信号線103で接続され、ベクトル制御部50と信号線104で接続されている。
【0030】
命令制御部20は、信号線101を通じて主記憶装置70から読み出した命令を解読する。解読された命令がスカラ命令である場合は、そのスカラ命令にかかる処理を実行する。一方、解読された命令がベクトル命令である場合は、そのベクトル命令を、信号線104を介してベクトル制御部50に出力する。さらに、そのベクトル命令がベクトルロード命令である場合は、そのベクトルロード命令を、信号線103を介して後述のメモリアクセス処理部30に出力する。ベクトルロード命令は、ロードするベクトルデータの主記憶装置70のアドレスを特定する情報(例えば、開始アドレスとベクトルデータの間隔)と、ベクトルデータの要素数と、ベクトルデータをロードするベクトルレジスタに割り振られたベクトルレジスタ番号を含む。
【0031】
(メモリアクセス処理部30)
メモリアクセス処理部30は、信号線103により命令制御部20と、信号線105によりプロセッサネットワーク部40と、信号線106によりベクトル制御部50と、信号線107によりベクトル処理部60と、それぞれ接続されている。メモリアクセス処理部30は、命令制御部20から送られる命令に応じてベクトル処理部60と主記憶装置70とのアクセスを制御する。第2の実施形態によるベクトル演算装置10のメモリアクセス処理部30は、第1の実施形態によるベクトル演算装置1のメモリアクセス処理部2に相当する。
【0032】
メモリアクセス処理部30は、信号線103を通じて命令制御部20から送られるベクトルロード命令を解読すると共に、プロセッサネットワーク部40の状態を管理する。また、メモリアクセス処理部30は、ベクトルロード命令を、信号線105を介してプロセッサネットワーク部40に送る。さらに、メモリアクセス処理部30は、主記憶装置70とプロセッサネットワーク40との間、及び、プロセッサネットワーク部40とベクトル処理部60との間のデータの行き来を制御する。
【0033】
(ロードバッファ管理部31)
メモリアクセス処理部30は、後述するロードバッファ62の空き管理を行うロードバッファ管理部31を備える。ロードバッファ管理部31は、ベクトルロード命令に関して、ベクトル処理部60のロードバッファ62における記憶領域の空きを管理する。
【0034】
メモリアクセス処理部30が、命令制御部20から信号線103を通じてベクトルロード命令を受信すると、ロードバッファ管理部31は、受信したベクトルロード命令用に、空き状態のロードバッファ62の記憶領域を割り当てて、それを使用中として管理する。そして、ロードバッファ管理部31は、割り当てたロードバッファ62の記憶領域を一意に識別するロードバッファ番号を、信号線105を通じてプロセッサネットワーク部40に発行する。
【0035】
また、ロードバッファ管理部31は、ロードバッファ番号、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報を、信号線106を通じてベクトル制御部50に通知する。該ベクトルロード命令情報は、ベクトル制御部50を介してベクトル処理部60に通知される。
【0036】
なお、ロードバッファ管理部31は、メモリアクセス処理部30が信号線107を通じて後述するベクトル処理部60からロードバッファ番号を指定したロードバッファ解放通知を受けると、そのロードバッファ番号に係るロードバッファ62の記憶領域を再び空き状態として管理する。
【0037】
ロードバッファ管理部31は、ロードバッファ62の記憶領域の管理のために、フラグ情報を用いる。ロードバッファ62の記憶領域に対応してロードバッファ番号が固定的に設定される。このロードバッファ番号に1対1で対応するフラグが、ロードバッファ番号数の分、設定される。ベクトルロード命令で使用中のロードバッファ62の記憶領域は、対応するロードバッファ番号のフラグが1となる。一方、ベクトル処理部60から送られてくるロードバッファ解放通知によって解放されるロードバッファ62の記憶領域は、対応するロードバッファ番号のフラグが0となる。すなわち、フラグがリセットされる。このようにメモリアクセス処理部30は、ロードバッファ管理部31のフラグ情報を検索することにより、使用可能なロードバッファ62の記憶領域の有無を判定し、使用するロードバッファ番号を特定できる。
【0038】
ここで、第2の実施形態によるベクトル演算装置10のメモリアクセス処理部30は、ベクトルロード命令を受付けた際にベクトルロード管理部31を検索し、ロードバッファ62に使用可能な記憶領域がある場合、後述のプロセッサネットワーク部40にベクトルロード命令であることを通知する。さらに、メモリアクセス処理部30は、主記憶装置70上の所望のベクトルデータを特定する情報、要素数、ロードバッファ番号をプロセッサネットワーク部40に通知する。また、メモリアクセス処理部30は、ベクトル制御部50にロードバッファ番号を通知する。
【0039】
一方、ロードバッファ62に使用可能な記憶領域がない場合、メモリアクセス処理部30は、ロードバッファ62に記憶領域が確保されるまでプロセッサネットワーク部40へのベクトルロード命令、及び、それに付随する情報の通知を保留する。また、メモリアクセス処理部30は、ベクトル制御部50へのロードバッファ番号の通知も保留する。
【0040】
メモリアクセス処理部30は、ロードバッファ62に使用可能な記憶領域がないと判定した際に、後述するプロセッサネットワーク部40にプリフェッチ命令を通知するとともに、ベクトルロード命令の主記憶装置70上の所望のベクトルデータを特定する情報、要素数を通知する。
【0041】
そして、ロードバッファ62に記憶領域が確保された後、メモリアクセス処理部30は、プロセッサネットワーク部40にベクトルロード命令、及び、それに付随する情報を通知し、ベクトル制御部50にロードバッファ番号を通知する。
(プロセッサネットワーク部40)
プロセッサネットワーク部40は、主記憶装置70と信号線102で接続され、メモリアクセス処理部30と信号線105で接続され、ベクトル処理部60と信号線108で接続される。プロセッサネットワーク部40は、主記憶装置70のデータを一時的に保持するキャッシュ部41を備える。第2の実施形態によるベクトル演算装置10のプロセッサネットワーク部40は、第1の実施形態によるベクトル演算装置1のプロセッサネットワーク部3に相当する。
【0042】
プロセッサネットワーク部40は、メモリアクセス処理部30から送られてくるベクトルロード命令に応じて、主記憶装置70とベクトル処理部60との間で、ベクトルデータを転送する。
【0043】
プロセッサネットワーク部40は、メモリアクセス処理部30から送られるベクトルロード命令を要素毎のベクトルロード命令に分解し、要素毎のベクトルロード命令に情報を付加し後述するベクトル処理部60に転送する。付加する情報は、ベクトルロード命令の場合、所望のベクトルデータの格納位置、ロードバッファ番号、要素番号であり、プリフェッチ命令の場合、所望のベクトルデータの格納位置である。
【0044】
(キャッシュ部41)
キャッシュ部41は、命令がベクトルロード命令の場合、主記憶装置70内の所望のベクトルデータをキャッシュ部41が保持しているか否かを判定(キャッシュヒット/ミス判定)する。所望のベクトルデータをキャッシュ部41が保持している場合(キャッシュヒット時)、キャッシュ部41は、キャッシュ部41で保持しているベクトルデータをベクトル処理部30にロードデータとして転送する。一方、キャッシュ部41が保持していない場合(キャッシュミス時)、キャッシュ部41は、主記憶装置70にロード命令を送り、主記憶装置70から所望のベクトルデータを受け取る。続いて、キャッシュ部41は、ベクトルデータをキャッシュ部41へ格納するとともにベクトル処理部60へロードデータとして転送する。キャッシュ部41は、ベクトル処理部60にロードデータを転送する際にロードバッファ番号、要素番号も付加して転送する。
【0045】
また、キャッシュ部41は、メモリアクセス処理部30からの命令が、プリフェッチ命令の場合も、主記憶装置70内のベクトルデータをキャッシュ部41が保持しているか否かを判定(キャッシュヒット/ミス判定)する。キャッシュ部41が保持している場合(キャッシュヒット時)、プリフェッチ命令は完了する。キャッシュ部41が保持していない場合(キャッシュミス時)、キャッシュ部41は、主記憶装置70にキャッシュフィル命令を送り、主記憶装置70から所望のベクトルデータを受け取り、キャッシュ部41へ格納する。
(ベクトル制御部50)
ベクトル制御部50は、命令制御部20と信号線104で接続され、メモリアクセス処理部30と信号線106で接続され、ベクトル処理部60と信号線109で接続される。
【0046】
ベクトル制御部50は、命令制御部20から送られてくるベクトル命令に応じてベクトル処理部60で行うベクトル命令を制御する。
【0047】
ベクトルロード命令時にはメモリアクセス処理部30からロードバッファ番号を受け取った後にベクトル処理部60へベクトルロード命令であることを通知すると同時にロードバッファ番号、要素数、転送先ベクトルレジスタ番号を通知する。
(ベクトル処理部60)
ベクトル処理部60は、メモリアクセス処理部30と信号線107で接続され、プロセッサネットワーク部40と信号線108で接続され、ベクトル制御部50と信号線109、110で接続される。
【0048】
ベクトル処理部60は、ベクトルデータに対してベクトル演算を実行する機能を持つ。ベクトル処理部60は、ベクトルロード管理部61と、主記憶装置70から読み出されたベクトルデータを一時的に格納するロードバッファ62と、ベクトルデータを格納するベクトルレジスタ63と、ベクトルレジスタ63に格納されたベクトルデータに対してベクトル演算を行う1つ以上のベクトル演算器(不図示)とを備える。第2の実施形態によるベクトル演算装置10のベクトル処理部60、ロードバッファ62は、それぞれ第1の実施形態によるベクトル演算装置1のベクトル処理部5、ロードバッファ6に相当する。
【0049】
ベクトル演算器およびロードバッファ62から出力されるベクトルデータは、ベクトルレジスタ63に振り分けられる。なお、ベクトル演算されたベクトルデータを主記憶装置70にストアするストアバッファなど、ストアに関連する構成は具体的な説明、及び、図示を省略している。
【0050】
また、ベクトル処理部60は、メモリアクセス処理部30からベクトルロード命令、及び、ロードバッファ番号を受け取る。
ベクトルロード命令は、メモリアクセス処理部30が信号線103を通じて命令制御部20から受信する。
(ベクトルロード管理部61)
ベクトルロード管理部61は、メモリアクセス処理部30と信号線107で接続され、プロセッサネットワーク部40と信号線108で接続され、ベクトル制御部50と信号線109,110で接続される。
【0051】
ベクトルロード管理部61は、信号線108を通じて送られてきたベクトルデータの要素を、該要素に付されたロードバッファ番号に係るロードバッファの記憶領域に一旦格納する。そしてその後、ロードバッファ62の記憶領域に格納されたベクトルデータをベクトルレジスタ63に転送する。
【0052】
また、ベクトルロード管理部61は、ロードバッファ管理部31から、ロードバッファ解放通知を受け、該通知に係るロードバッファ62の記憶領域を解放(使用中フラグのリセット)する。
【0053】
ベクトルロード管理部61は、ベクトル制御部50から送られたロードバッファ番号、要素数、転送先のベクトルレジスタ番号を含むベクトルロード命令、及び、プロセッサネットワーク部40から送られたロードバッファ番号、要素番号を含むロードデータに応じてロードバッファ62内にロードデータが整列したか否かを管理する。ロードデータが整列し、ベクトルレジスタへの転送が可能になった場合にはロードバッファ62からロードデータを読み出しベクトルレジスタ63へ転送する。
【0054】
ベクトルロード管理部61は、ロードバッファ62からベクトルレジスタ63へ転送を行うためにロードバッファ62からロードデータを読み出した後に信号線107を通じてメモリアクセス処理部30にロードバッファ解放通知を送る。
【0055】
ロードバッファ62は、ロードデータを格納する記憶領域を備える。ロードバッファ62の記憶領域は、複数個ありベクトルロード命令ごとに使用するロードバッファ62の記憶領域を指定するためにロードバッファ番号が付与されている。ロードデータ62の記憶領域における格納位置は、ロードバッファ番号と要素番号により決定される。
【0056】
ベクトルレジスタ63は、ベクトル演算を行う際のデータを格納しておくレジスタである。ベクトルレジスタ63は、複数個ありベクトル命令ごとに使用するベクトルレジスタを指定するためにベクトルレジスタ番号が付与されている。ベクトル処理部60内のベクトル演算器は図示していない。
(主記憶装置70)
主記憶装置70は、命令制御部20と信号線101で接続され、プロセッサネットワーク部40と信号線102で接続される。主記憶装置70はプロセッサネットワーク部60から送られてくるベクトルロードに従ってベクトルデータの転送を行う。
【0057】
ロード命令時には所望のベクトルデータを特定する情報を基にベクトルデータを読み出しプロセッサネットワーク部に転送する。キャッシュフィル命令時にも同様に所望のベクトルデータを特定する情報を基にベクトルデータを読み出しプロセッサネットワーク部41に転送する。
【0058】
次に、第2の実施形態のベクトル演算装置10の動作について図面を用いて説明する。
図4は、第2の実施形態によるベクトル演算装置10の動作を示すシーケンス図である。図中、実線は、第2の実施形態の動作を示し、破線は、関連する比較例の動作を示している。
【0059】
はじめに、命令制御部20は、主記憶装置70から読み出した命令を解読し、ベクトルロード命令である場合は、そのベクトルロード命令を、メモリアクセス処理部30に出力する。メモリアクセス処理部30は、ベクトル処理部60のロードバッファ62が使用できるか否かを判定する。ロードバッファ62が使用できない場合、メモリアクセス処理部30は、ベクトルロード命令の通知を保留し、ベクトルロード命令に代えてプリフェッチ命令をプロセッサネットワーク部40に通知する。
【0060】
プロセッサネットワーク部40のキャッシュ部41は、プリフェッチ命令に応じて、ベクトルロード命令に対応するベクトルデータがキャッシュ部41にあるか否かを判定する。ベクトルデータがキャッシュ部41に存在する場合、プリフェッチ命令は完了する。ベクトルデータがキャッシュ部41に存在しない場合、キャッシュ部41は、主記憶装置からベクトルロード命令に対応するベクトルデータをキャッシュ部41に配置する。
【0061】
ベクトル処理部60のベクトルロード管理部61は、ロードバッファ62に空きができると、ロードバッファ解放通知をメモリアクセス処理部30に通知し、メモリアクセス処理部30は、通知を保留していたベクトルロード命令をプロセッサネットワーク部40に通知する。
【0062】
プロセッサネットワーク部40のキャッシュ部41は、ベクトルロード命令を受けて、ベクトルロード命令に対応するベクトルデータがキャッシュ部41にあるか否かを判定する。プリフェッチ命令によってキャッシュ部41に対応するベクトルデータが存在するため、キャッシュ部41は、ベクトルデータをベクトル処理部60へ転送する。
【0063】
次に、
図4に示す比較例の動作について説明する。
図4の破線が示すように比較例のメモリアクセス処理部は、ロードバッファが使用できない場合、プリフェッチ命令をプロセッサネットワーク部に通知せず、ロードバッファが解放されるまでベクトルロード命令の通知を保留する。比較例のメモリアクセス処理部は、ロードバッファ解放後、プロセッサネットワーク部にベクトルロード命令を通知する。このときプロセッサネットワーク部のキャッシュ部にベクトルロード命令に対応するベクトルデータが存在しない(キャッシュミス)と、プロセッサネットワーク部は、主記憶装置からベクトルデータをロードすることになる。このとき、比較例は、ベクトルロード命令の実行時間が長くなる。
【0064】
結果として、
図4に示すように第2の実施形態のベクトル処理装置は、比較例に比べて、ベクトルロード命令の実行時間を短縮することができる。
【0065】
なお、メモリアクセス処理部30からのプリフェッチ命令後、ベクトルデータがキャッシュ部41に配置される前に、ロードバッファ62が開放され、メモリアクセス処理部30で保留されていたベクトルロード命令が通知される場合がある。この場合、主記憶装置70への同一アドレスにアクセスする際に、プリフェッチ命令時の主記憶装置70への同一アドレスへのアクセスデータを用いる。これにより主記憶装置70へのアクセスを高速化でき、後続のベクトルロード命令の実行時間を短縮することができる。
【0066】
上述のように、第2の実施形態によるベクトル処理装置100によれば、メモリアクセス処理部30は、ベクトルロード命令を受け付けた際、ロードバッファ62が使用できない場合にベクトルロード命令の通知を保留する。続いて、メモリアクセス処理部30は、ベクトルロード命令に対応するプリフェッチ命令を生成し、プリフェッチ命令を発行する。更に、メモリアクセス処理部30は、ロードバッファ解放通知を受け付け、使用可能なロードバッファ62が確保された後にベクトルロード命令を発行する。
【0067】
キャッシュ部41は、プリフェッチ命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュミス時には主記憶装置70へアクセスしベクトルデータをキャッシュ部41に保持しておく。また、キャッシュ部41は、ベクトルロード命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュヒット時にキャッシュからベクトルデータをロードバッファ62に送る。キャッシュミス時にはキャッシュ部41は、主記憶装置70へアクセスしデータを転送しロードバッファ62へ送る。このようにロードバッファ62が使用できない場合に保留されたベクトルロード命令について、ロードバッファ62が使用可能になった際に、プリフェッチ命令でキャッシュ部41にベクトルデータを保持できた場合には保留されていたベクトルロード命令はキャッシュにヒットする。このため、プロセッサネットワーク部40は、対応するベクトルデータをベクトル処理部40に速やかに転送することができる。すなわち、ベクトルロード命令の実行時間を短縮することができる。 また、プリフェッチ命令後、ベクトルデータがキャッシュ部41に配置される前に保留されたベクトルロード命令が通知されると、キャッシュ部41でキャッシュヒットしない場合がある。このとき、プリフェッチ命令時のアクセスデータを用いて主記憶装置70にアクセスすることで、主記憶装置70へのアクセスを高速化し、後続のベクトルロード命令の実行時間を短縮することができる。
【0068】
さらに、第2の実施形態は、第1の実施形態と同様に、保留したベクトルロード命令に対応するプリフェッチ命令を用いている。このため、先行技術文献に記載のような、履歴保持機構やアドレス予測機構を必要としない。また予測によるプリフェッチではないため、予測が外れて不必要なデータをキャッシュすることもない。
【0069】
<第3の実施形態>
本発明の第3の実施形態によるベクトル演算装置、及び、ベクトル処理装置について、図面を用いて説明する。
図5は、第3の実施形態によるベクトル処理装置の構成を示すブロック図である。第3の実施形態によるベクトル処理装置100Aは、ロードバッファ管理部64の配置が第2の実施形態によるベクトル処理装置100と相違する。すなわち、第2の実施形態によるベクトル処理装置100は、ロードバッファ管理部31をメモリアクセス処理部30に備えるが、第3の実施形態によるベクトル処理装置100Aは、ロードバッファ管理部64をベクトルベクトル処理部60Aに備える。なお、第3の実施形態によるベクトル処理装置100Aの構成の説明において、第2の実施形態によるベクトル処理装置100と同じ構成については、同一の符号を付与し詳細な説明は省略する。
【0070】
ベクトル演算装置10Aは、命令制御部20、メモリアクセス処理部30A、プロセッサネットワーク部40、ベクトル制御部50、ベクトル処理部60Aを備える。
【0071】
プロセッサネットワーク部40は、主記憶装置のベクトルデータを保持するキャッシュ部41を備える。
【0072】
ベクトル処理部60Aは、ベクトルロード管理部61、ロードバッファ62、ベクトルレジスタ63およびロードバッファ管理部64を備える。
【0073】
メモリアクセス処理部30Aは、命令制御部20から送られてくる命令に応じてベクトル処理部60Aと主記憶装置70とのアクセスを制御する。ベクトルロード命令時には信号線107を通じてベクトルロード処理部60Aにロードバッファ番号要求を送り、ベクトル処理部60Aよりロードバッファ番号を受け取った後にプロセッサネットワーク部40へベクトルロード命令を通知する。これとともに主記憶装置70上の所望のベクトルデータを特定する情報、要素数、ロードバッファ番号を通知する。またベクトル制御部50にロードバッファ番号を通知する。
【0074】
第3の実施形態のメモリアクセス処理部30Aは、ロードバッファ番号の要求をベクトル処理部60Aに送った後、ベクトル処理部60Aより後述するプリフェッチ指示を受け取ると、ベクトルロード命令の通知を保留する。更にメモリアクセス処理部30Aは、プロセッサネットワーク部40にプリフェッチ命令を通知するとともに、ベクトルロード命令の主記憶装置70上の所望のベクトルデータを特定する情報、要素数を通知する。
【0075】
ベクトル処理部60Aは、ベクトルロード管理部61と、ロードバッファ62と、ベクトルレジスタ63、ロードバッファ管理部64を含み、メモリアクセス処理部30Aから送られてくるロードバッファ要求に応じてベクトルロード管理部61を検索する。
【0076】
ロードバッファに使用可能な記憶領域がある場合、ベクトル処理部60Aは、信号線107と通じてロードバッファ番号をメモリアクセス処理部30Aに通知する。ロードバッファに使用可能な記憶領域が無い場合、ベクトル処理部60Aは、信号線107と通じてプリフェッチ指示をメモリアクセス処理部30Aに送出する。なお、ベクトル処理部60Aは、ロードバッファが確保された後、ロードバッファ番号をメモリアクセス処理部30Aに通知する。
【0077】
ベクトルロード管理部61は、ベクトル制御部50から送られたロードバッファ番号、要素数、転送先ベクトルレジスタ番号を含むベクトルロード命令、および、プロセッサネットワーク部40から送られたロードバッファ番号、要素番号を含むロードデータに応じてロードバッファ62内にロードデータが整列したか否かを管理する。
【0078】
またベクトルロード管理部61は、プロセッサネットワーク部40から送られてきたロードデータをロードバッファ62に送り、ロードデータがロードバッファ62に格納されているか否かを管理する。ベクトルロード管理部61は、ロードデータが整列し、ベクトルレジスタ63への転送が可能になった場合、ロードバッファ62からロードデータを読み出しベクトルレジスタ63へ転送する。
【0079】
ベクトルロード管理部61は、ロードバッファ62からベクトルレジスタ63にロードデータを転送するために、ロードバッファ62からロードデータを読み出した後にロードバッファ管理部64にロードバッファ解放通知を送る。
【0080】
ロードバッファ管理部64は、ロードバッファ番号に1対1で対応するフラグをロードバッファ番号数の分持つ。ロードバッファ管理部64は、ベクトルロード命令で使用したロードバッファ番号に対応するフラグを1とし、ベクトルロード管理部61から送られてくるロードバッファ解放通知により解放するロードバッファ番号に対応するフラグを0とする。
【0081】
これによりメモリアクセス処理部30Aは、ベクトル処理部60Aのロードバッファ管理部64にあるフラグを検索することで、使用可能なロードバッファの有無を判定し、使用するロードバッファ番号を特定する。
【0082】
上述のように、第3の実施形態によるベクトル処理装置100Aによれば、第2の実施形態と同様に、ベクトルロード命令の実行時間を短縮することができる。
【0083】
すなわち、メモリアクセス処理部30Aは、ベクトルロード命令を受け付けた際、ロードバッファ62が使用できない場合にベクトルロード命令を保留する。続いて、メモリアクセス処理部30Aは、ベクトルロード命令に対応するプリフェッチ命令を生成し、プリフェッチ命令を発行する。更に、メモリアクセス処理部30は、ロードバッファ解放通知を受け付け、使用可能なロードバッファが確保された後にベクトルロード命令を発行する。
【0084】
キャッシュ部41は、プリフェッチ命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュミス時には主記憶装置70へアクセスしベクトルデータをキャッシュ部41に保持しておく。また、キャッシュ部41は、ベクトルロード命令を受け付けた後にキャッシュヒット、又は、キャッシュミスを判定し、キャッシュヒット時にキャッシュからデータをロードバッファ62に送り、ミス時には主記憶装置70へアクセスしデータを転送しロードバッファ62へ送る。
【0085】
このように、ロードバッファ62が使用できない場合に保留されたベクトルロード命令は、ロードバッファ62が使用可能になった後、プリフェッチ命令でキャッシュ部41にベクトルデータが保持された場合に、キャッシュにヒットする。このため、プロセッサネットワーク部40は、対応するベクトルデータをベクトル処理部40に速やかに転送することができる。
【0086】
また、プリフェッチ命令後、ベクトルデータがキャッシュ部41に配置される前に保留されたベクトルロード命令が通知されると、キャッシュ部41でキャッシュヒットしない場合がある。このとき、プリフェッチ命令時のアクセスデータを用いて主記憶装置70にアクセスすることで、主記憶装置70へのアクセスを高速化し、後続のベクトルロード命令の実行時間を短縮することができる。 さらに、第3の実施形態は、第1の実施形態と同様に、保留したベクトルロード命令に対応するプリフェッチ命令を用いている。このため、先行技術文献に記載のような、履歴保持機構やアドレス予測機構を必要としない。また予測によるプリフェッチではないため、予測が外れて不必要なデータをキャッシュすることもない。
【0087】
(その他)
なお、本発明の各機能は、プログラムを組み込んだLSIのハードウエア部品である回路部品を実装することにより、その動作をハードウエア的に実現することができる。またその機能を提供するプログラムを記憶装置(図示せず)に格納し、そのプログラムを主記憶部100にロードして命令制御部で実行することにより、ソフトウエア的に実現することも可能である。
ベクトル処理装置100、又は、ベクトル演算装置1、10が備える各部の実現手段は、特に限定されない。すなわち、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した二つ以上の装置を有線又は無線で接続し、これら複数の装置により実現してもよい。
【0088】
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0089】
上記の実施形態の一部又は全部は、以下の付記のように記載されうるが、以下には限られない。
【0090】
(付記1)
ロードバッファを有するベクトル処理部と、
ベクトルデータを一時的に保持するキャッシュ部と、
ベクトルロード命令を前記キャッシュ部へ通知するメモリアクセス処理部と、を備え、
前記メモリアクセス処理部は、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記キャッシュ部は、前記プリフェッチ命令に応じてベクトルデータを主記憶装置から読み出して前記キャッシュ部に配置する、ベクトル演算装置。
【0091】
(付記2)
前記ロードバッファの解放後、前記メモリアクセス処理部は、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、付記1に記載のベクトル演算装置。
【0092】
(付記3)
前記キャッシュ部は、前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、付記1又は付記2に記載のベクトル演算装置。
【0093】
(付記4)
前記キャッシュ部は、前記プリフェッチ命令に応じて、対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、付記3に記載のベクトル演算装置。
【0094】
(付記5)
前記ロードバッファの使用状態をフラグ情報により管理するロードバッファ管理部を備え、前記メモリアクセス処理部、又は、ベクトル処理部が、前記ロードバッファ管理部を備える、付記1〜付記4のいずれか1つに記載のベクトル演算装置。
【0095】
(付記6)
前記メモリアクセス処理部は、前記ベクトルロード命令の受付後、前記ロードバッファ管理部を検索して、前記ロードバッファが使用できるかを判定する、付記5に記載のベクトル演算装置。
【0096】
(付記7)
前記ベクトル処理部は、ロードデータがロードバッファに格納されているか否かを管理するベクトルロード管理部を備え、
前記ベクトルロード管理部は、ロードバッファの解放後にロードバッファ管理部にロードバッファの解放を通知する、付記5又は付記6のいずれか1つに記載のベクトル演算装置。
【0097】
(付記8)
主記憶装置と、付記1から8のいずれか1つに記載のベクトル演算装置とを備える、付記1〜付記7のいずれか1つに記載のベクトル演算装置。
【0098】
(付記9)
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御方法であって、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、
ベクトル演算装置の制御方法。
【0099】
(付記10)
前記ロードバッファの解放後、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、付記9に記載のベクトル演算装置の制御方法。
【0100】
(付記11)
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、付記9又は付記10に記載のベクトル演算装置の制御方法。
【0101】
(付記12)
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、付記11に記載のベクトル演算装置の制御方法。
【0102】
(付記13)
ロードバッファを有するベクトル処理部と、ベクトルデータを一時的に保持するキャッシュ部を備え、ベクトルロード命令に応じて、主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送する、ベクトル演算装置の制御プログラムであって、
前記ベクトル演算装置に、
前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留されたベクトルロード命令に対応するプリフェッチ命令を生成して通知し、
前記プリフェッチ命令に応じてベクトルデータを前記主記憶装置から読み出して前記キャッシュ部に配置する、ことを実行させる、
ベクトル演算装置の制御プログラム。
【0103】
(付記14)
前記ロードバッファの解放後、前記保留されたベクトルロード命令を前記キャッシュ部へ通知する、付記13に記載のベクトル演算装置の制御プログラム。
【0104】
(付記15)
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在しない場合、前記主記憶装置から読み出して前記キャッシュ部に配置する、付記13又は付記14に記載のベクトル演算装置の制御プログラム。
【0105】
(付記16)
前記プリフェッチ命令に応じて対応するベクトルデータが存在するか否か判定し、前記対応するベクトルデータが存在する場合、前記プリフェッチ命令を完了する、付記15に記載のベクトル演算装置の制御プログラム。
【0106】
(付記17)
ロードデータを格納するロードバッファを有し、ベクトルデータに対するベクトル演算を実行するベクトル処理部と、
主記憶装置からの前記ベクトルデータを一時的に保持するキャッシュ部を有し、ベクトルロード命令に応じて、前記主記憶装置から前記ベクトル処理部に前記ベクトルデータを転送するプロセッサネットワーク部と、
前記ベクトルロード命令を前記プロセッサネットワーク部へ通知するメモリアクセス処理部と、を備え、
前記メモリアクセス処理部は、前記ロードバッファが使用できない場合、前記ベクトルロード命令の通知を保留し、前記保留したベクトルロード命令に対応するプリフェッチ命令を前記プロセッサネットワーク部に通知し、
前記プロセッサネットワーク部は、前記プリフェッチ命令に応じて対応するベクトルデータを、前記主記憶装置から読み出して前記キャッシュ部に配置する、ベクトル演算装置。