JP2013182507A - ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム - Google Patents

ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム Download PDF

Info

Publication number
JP2013182507A
JP2013182507A JP2012047028A JP2012047028A JP2013182507A JP 2013182507 A JP2013182507 A JP 2013182507A JP 2012047028 A JP2012047028 A JP 2012047028A JP 2012047028 A JP2012047028 A JP 2012047028A JP 2013182507 A JP2013182507 A JP 2013182507A
Authority
JP
Japan
Prior art keywords
vector
load
load buffer
buffer
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012047028A
Other languages
English (en)
Other versions
JP5648645B2 (ja
Inventor
Masao Fukagawa
雅夫 深川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012047028A priority Critical patent/JP5648645B2/ja
Publication of JP2013182507A publication Critical patent/JP2013182507A/ja
Application granted granted Critical
Publication of JP5648645B2 publication Critical patent/JP5648645B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 ロードバッファの枯渇による性能低下を防ぐ。
【解決手段】 ベクトル処理装置100が、主記憶装置70からベクトルデータをロードするプロセッサネットワーク部40と、ベクトルデータのロードバッファ64への格納及びベクトルレジスタ62への転送を行うベクトルロード管理部65と、ベクトルロード命令にロードバッファ64を確保するとともに、ロードバッファ64に複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを64一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理部31を備え、ロードバッファ管理部31が、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置70から返却される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファ64を解放する。
【選択図】 図1

Description

本発明は、ベクトル処理装置に関し、特に、ロードバッファ解放技術に関する。
一般に、ベクトル処理装置は、主記憶装置からロードしたベクトルデータやベクトル演算中の中間結果などを保持する複数のベクトルレジスタと、ベクトルレジスタに保持されたベクトルデータに対する演算を行うベクトル演算器とを備え、大量のデータを高速に演算することができるようになっている。
また、主記憶装置のアクセス速度はベクトル演算の速度に比べて遅いため、ベクトルデータのベクトルレジスタへのロードを高速化するために、主記憶装置とベクトルレジスタとの間にベクトルデータを一時的に格納するロードバッファを備え、ベクトルロード命令の解読時に主記憶装置からロードバッファへのベクトルデータの読み出しを開始させる技術が、例えば特許文献1に開示されている。
特許第3726092号 特願2010−229362号
しかし、背景技術では、分岐予測が失敗した時に、例えば特許文献2に開示のように、主記憶装置からのデータ転送が完了するまでロードバッファを解放することができないという課題があった。これにより、分岐予測失敗によって無効になったベクトルロード命令によりロードバッファが枯渇してしまい、分岐予測失敗後のベクトルロード命令が発行できず、無効になったベクトルロード命令による主記憶装置へのレイテンシが大きくなってしまい性能が低下していた。
ここで、背景技術による投機ベクトルロードの実行フローを図9に示す。
背景技術では、ベクトルロードデータを一時的に格納するロードバッファの確保を行ってから、主記憶装置に対してアクセスを行い、主記憶装置から返却されるベクトルデータの全要素をロードバッファに格納し、分岐予測が成功した場合はベクトルレジスタにロードデータの転送を行ってからロードバッファの解放を行い、また分岐予測が失敗した場合はベクトルレジスタにロードデータを転送せずにロードバッファの解放を行っていた。
そのため、投機のベクトルロード命令が分岐予測失敗により無効命令になった時でも、主記憶装置から全要素のロードデータが返却されるまでロードバッファを解放できないため、投機で発行した無効なベクトルロード命令がロードバッファを使用している事により、ロードバッファが枯渇した場合にベクトルロード命令を発行する事ができなかった。これにより、無効なベクトルロード命令のロードデータ返却によるメモリアクセスのレイテンシ分だけ性能が低下するという問題点があった。
(発明の目的)
本発明の目的は、上述の課題を解決し、ロードバッファの枯渇による性能低下を防ぐ、ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラムを提供することである。
本発明の第1のベクトル処理装置は、主記憶装置からベクトルデータをロードするプロセッサネットワーク手段と、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理手段と、ベクトルロード命令にロードバッファを確保するとともに、ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理手段を備え、ロードバッファ管理手段が、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファを解放する。
本発明の第1のベクトルロード命令実行方法は、ベクトル演算を行うベクトル装置によるベクトルロード命令実行方法であって、プロセッサネットワーク手段が、記憶装置からベクトルデータをロードし、ベクトルロード管理手段が、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行い、ロードバッファ管理手段が、ベクトルロード命令にロードバッファを確保するとともに、ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを一意に識別するロードバッファ番号と仮想番号とを連結して管理し、ロードバッファ管理手段は、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファを解放する。
本発明の第1のベクトルロード命令実行プログラムは、ベクトル演算を行うベクトル装置を構成するコンピュータ上で動作するベクトルロード命令実行プログラムであって、プロセッサネットワーク手段に、記憶装置からベクトルデータをロードするプロセッサネットワーク処理を実行させ、ベクトルロード管理手段に、ベクトルデータのロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理処理を実行させ、ロードバッファ管理手段に、ベクトルロード命令にロードバッファを確保するとともに、ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理処理を実行させ、ロードバッファ管理処理で、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファを解放する。
本発明によれば、ロードバッファの枯渇による性能低下を防ぐことができる。
本発明の第1の実施の形態によるベクトル処理装置の構成を示すブロック図である。 本発明の第1の実施の形態によるロードバッファ管理部の構成例を示す図である。 本発明の第1の実施の形態によるベクトルロード管理部の構成例を示す図である。 本発明の第1の実施の形態によるベクトル処理装置の動作を示すシーケンス図である。 本発明の第1の実施の形態によるベクトル処理装置の動作を示すフローチャートである。 本発明のベクトル処理装置の最小限の構成を示すブロック図である。 本発明の第2の実施の形態によるベクトルロード管理部の構成例を示す図である。 本発明のベクトル処理装置のハードウェア構成例を示すブロック図である。 背景技術による投機ベクトルロードの動作を示すシーケンス図である。
本発明の上記及び他の目的、特徴及び利点を明確にすべく、添付した図面を参照しながら、本発明の実施形態を以下に詳述する。なお、上述の本願発明の目的のほか、他の技術的課題、その技術的課題を解決する手段及びその作用効果についても、以下の実施形態による開示によって明らかとなるものである。
なお、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
(第1の実施の形態)
本発明の第1の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の第1の実施の形態によるベクトル処理装置100の構成を示すブロック図である。図1を参照すると、本実施の形態によるベクトル処理装置100は、プロセッサ10と、主記憶装置70とを備える。
プロセッサ10と主記憶装置70とは、信号線101及び信号線102を介して相互に接続されている。
信号線101は、主記憶装置70に記憶された命令をプロセッサ10から読み出すために用いられる信号線である。
信号線102は、主記憶装置70に記憶されたベクトルデータ等をプロセッサ10への読み出したり、プロセッサ10で生成したベクトルデータ等を主記憶装置70に書き込むために用いられる信号線である。信号線102を多重化することで、複数のベクトルロード命令による主記憶装置70からのベクトルデータの読出し等を並列に行う事もできる。
プロセッサ10は、命令制御部20と、メモリアクセス処理部30と、プロセッサネットワーク部40と、ベクトル制御部50と、ベクトル処理部60とを含む。
命令制御部20は、主記憶装置70と信号線101で接続され、メモリアクセス処理部30と信号線103で接続され、ベクトル制御部50と信号線104で接続される。
命令制御部20は、信号線101を通じて主記憶装置70から読み出した命令を解読する命令解読部21と、解読された命令がスカラ命令である場合にそのスカラ命令にかかる処理を実行するスカラ処理部22を含む。
命令解読部21は、解読した命令がスカラ命令である場合には、そのスカラ命令をスカラ処理部22へ出力する。一方、解読した命令がベクトル命令である場合には、そのベクトル命令を信号線104を介してベクトル制御部50に出力する。さらに、そのベクトル命令がベクトルロード命令である場合は、そのベクトルロード命令を信号線103を介してメモリアクセス処理部30に出力する。
ベクトルロード命令は、ロードするベクトルデータの主記憶装置70のアドレスを特定する情報(例えば開始アドレスとベクトルデータの間隔)と、ベクトルデータの要素数と、ベクトルデータをロードするベクトルレジスタの番号とを含む。
メモリアクセス処理部30は、主記憶装置70へのアクセスを制御する機能を有し、命令制御部20と信号線103で接続され、プロセッサネットワーク部40と信号線105で接続され、ベクトル制御部50と信号線106で接続され、ベクトル処理部60と信号線107で接続されている。
メモリアクセス処理部30は、信号線103を通じて命令制御部20から送られてくるベクトルロード命令を解読すると共に、プロセッサネットワーク部40の状態を管理する。
また、メモリアクセス処理部30は、メモリアクセスリクエストを制御する信号を信号線105を介してプロセッサネットワーク部40に送る。
また、メモリアクセス処理部30は、主記憶装置70とプロセッサネットワーク40との間、及びプロセッサネットワーク部40とベクトル処理部60との間のデータの行き来を制御する。
また、メモリアクセス処理部30は、ロードバッファ64の空き管理を行うロードバッファ管理部31を備える。
ロードバッファ管理部31は、ベクトルロード命令に関して、ベクトル処理部60内に設けられている複数のロードバッファ64(64−1〜64−n)の空き管理を行う。
メモリアクセス処理部30が命令制御部20から信号線103を通じてベクトルロード命令を受信すると、ロードバッファ管理部31は、受信したベクトルロード命令用に、空き状態の1つのロードバッファ64−i(i=1〜n)を割り当てて、それを使用中状態として管理する。
そして、ロードバッファ管理部31は、割り当てたロードバッファ64−iを一意に識別するロードバッファ番号と、所定の仮想番号をベクトルロード命令に付したメモリアクセスリクエストを、信号線105を通じてプロセッサネットワーク部40に発行する。
また、ロードバッファ管理部31は、メモリアクセスリクエストの発行と同時に、ロードバッファ番号、仮想番号、分岐レベル、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報を信号線106を通じてベクトル制御部50に通知する。該ベクトルロード命令情報は、ベクトル制御部50を介してベクトル処理部60に通知される。
また、メモリアクセス処理部30が信号線107を通じてベクトル処理部60からロードバッファ番号を指定したロードバッファ解放通知を受けると、ロードバッファ管理部31は、そのロードバッファ番号に係るロードバッファ64−iを再び空き状態として管理する。
ここで、図2にロードバッファ管理部31の構成例を示す。
図2を参照すると、ロードバッファ管理部31は、レジスタ群311と、レジスタ設定部312と、リクエスト発行部313を含む。
レジスタ群311は、ロードバッファ64−1〜64−nに1対1に対応するレジスタ311−1〜311−nの集合で構成される。各レジスタ311−1〜311−nは、ロードバッファ番号フィールド3111、使用中フラグフィールド3112、分岐レベルフィールド3113、仮想番号フィールド3114、無効化フラグフィールド3115を含む。
ロードバッファ番号フィールド3111には、ロードバッファ64−iのロードバッファ番号が固定的に設定されている。
使用中フラグフィールド3112は、該当するロードバッファ番号を使用する時にフラグが設定され、信号線107によって通知されるロードバッファ解放通知、及び投機実行したベクトルロード命令が分岐失敗によって無効化された時にフラグがリセットされる。
分岐レベルフィールド3113には、ロードバッファ番号を確保したベクトルロード命令に対応した分岐レベルが設定される。分岐レベルは、分岐成功時にはデクリメントされ、分岐失敗時にはクリアされる。
仮想番号フィールド3114には、ロードバッファ64−iの、仮想化する個数分の番号が固定的に設定されている。
無効化フラグフィールド3115は、分岐レベル≠0の場合において、分岐失敗が報告されたときに使用されていた仮想番号に対応する箇所に“1”が設定され、信号線107によって通知されるロードバッファ解放通知によってリセットされる。
無効化フィールド3115に、“1”が設定されていない、最若版の仮想番号が有効(現在使用中/次回使用可能)な番号となる。
レジスタ設定部312は、命令制御部20と信号線103で接続され、ベクトルロード命令を受け取り、レジスタ群311の使用中フラグ、分岐レベル、仮想番号の設定管理を行う。
また、レジスタ設定部312は、ベクトル処理部60と信号線107で接続され、レジスタ群311−iのバッファ解放通知を受け取り、該バッファ解放通知を受けたロードバッファの解放や、無効化フラグのリセットを行う。
リクエスト発行部313は、信号線106を通じて、そしてベクトル制御部50を介して、ベクトル処理部60に対してロードバッファ番号、仮想番号、分岐レベル、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報を通知する。
また、リクエスト発行部313は、信号線103から通知されたベクトルロード命令にロードバッファ番号と仮想番号を付したメモリアクセスリクエストを、信号線105を通じてプロセッサネットワーク部40に発行する。
プロセッサネットワーク部40は、主記憶装置70と信号線102で接続され、メモリアクセス処理部30と信号線105で接続され、ベクトル処理部60と信号線108で接続される。
プロセッサネットワーク部40は、メモリアクセス処理部30から与えられるメモリアクセスリクエストに応じて、主記憶装置70とベクトル処理部60との間でベクトルデータをやりとりする。この時、メモリアクセスリクエストの投機/非投機にかかわらず、メモリアクセスリクエストは全要素分が主記憶装置70に発行される。
ベクトルロード命令に係るメモリアクセスリクエストに関し、プロセッサネットワーク部40は、主記憶装置70から読み出したベクトルデータを構成する各要素に、メモリアクセスリクエストが含むロードバッファ番号及び仮想番号を付して、信号線108を通じてベクトル処理部60に送出する。信号線108を多重化する事によって、複数のメモリアクセスリクエストにかかるベクトルデータを並行してベクトル処理部60に供給できるようにもできる。
ベクトル処理部60は、メモリアクセス処理部30と信号線107で接続され、プロセッサネットワーク部40と信号線108で接続され、ベクトル制御部50と信号線109、110で接続される。
ベクトル処理部60は、ベクトルデータに対してベクトル演算を実行する機能を持つ。また、ベクトル処理部60は、少なくとも1つのベクトルパイプライン演算器61を備える。
ベクトルパイプライン演算器61は、ベクトルデータを格納する複数のベクトルレジスタ62と、ベクトルレジスタ62に格納されたベクトルデータに対してベクトル演算を行う1つ以上のベクトル演算器63と、主記憶装置70から読み出されたベクトルデータを一時的に格納する複数のロードバッファ64と、ベクトルロード管理部65と、ベクトル演算器63およびロードバッファ64から出力されるベクトルデータをベクトルレジスタ62に振り分けるクロスバスイッチ回路66とを含む。
なお、ベクトル演算されたベクトルデータを主記憶装置70にストアするストアバッファなど、ストアに関連する構成は本発明と直接関係しないため図示を省略している。
ベクトルロード管理部65は、メモリアクセス処理部30と信号線107で接続され、プロセッサネットワーク部40と信号線108で接続され、ベクトル制御部50と信号線109,110で接続される。
ベクトルロード管理部65は、信号線108を通じて送られてきたベクトルデータの要素を、該要素に付されたロードバッファ番号に係るロードバッファ64−iに一旦格納する。そしてその後、ロードバッファ64−iに格納されたベクトルデータをベクトルレジスタ62に転送する。図3にベクトルロード管理部65の構成例を示す。
図3を参照すると、ベクトルロード管理部65は、レジスタ群651と、レジスタ設定部652と、ライト部653と、リード部654とを含む。
レジスタ群651は、ロードバッファ64−1〜64−nに1対1に対応するレジスタ651−0〜651−nの集合で構成される。
各レジスタ651−i(i=1〜n)は、ロードバッファ番号フィールド6511、仮想番号フィールド6512、無効化フラグフィールド6513、ライト要素数フィールド6514、リード要素数フィールド6515、ベクトルレジスタ(VAR)番号フィールド6516、分岐レベルフィールド6517、使用可否フラグフィールド6518を含む。
ロードバッファ番号フィールド6511には、ロードバッファ64−iのロードバッファ番号が固定的に設定されている。
仮想番号フィールド6512には、ロードバッファ64−iの、仮想化する個数分の番号が固定的に設定されている。
無効化フラグフィールド6513は、分岐レベル≠0の場合において、分岐失敗が報告されたときに”1”が設定され、解放通知発行時に“0”が設定される。
ライト要素数フィールド6514及びリード要素数フィールド6515には、ベクトルロード命令情報中の要素数が設定される。
ベクトルレジスタ番号フィールド6516には、ベクトルロード命令でロードするベクトルデータを格納するベクトルレジスタ62の番号が設定される。
分岐レベルフィールド6517には、ロードバッファ番号を確保したベクトルロード命令に対応した分岐レベルが設定されて、分岐成功時にはデクリメント、分岐失敗時にはクリアされる。
使用可否フラグフィールド6518には、ロードバッファに格納したベクトルデータが使用可能である場合に“1”が設定され、解放通知発行時に“0”が設定される。
レジスタ設定部652は、ベクトル制御部50と信号線109で接続され、レジスタ群651の初期設定や分岐レベルの管理を行う。
また、レジスタ設定部652は、メモリアクセス処理部30と信号線107で接続され、レジスタ651−iのロードバッファ解放通知を送る。該ロードバッファ解放通知を受けたロードバッファ管理部31は、該通知に係るロードバッファ64−iの解放(使用中フラグ/無効化フラグのリセット)を行う。
レジスタ設定部652は、信号線109を通じてベクトル制御部50から、ロードバッファ番号、分岐レベル、ベクトルレジスタ番号、要素数を含むベクトルロード命令情報が伝達されると、そのロードバッファ番号をロードバッファ番号フィールド6511に持つレジスタ651−iの分岐レベルフィールド6512に、ベクトルロード命令の分岐レベルを設定する。また、該レジスタ651−iのベクトルレジスタ番号フィールド6514にベクトルロード命令情報中のベクトルレジスタ番号を設定する。さらに、該レジスタ651−iのライト要素数フィールド6515及びリード要素数フィールド6516にベクトルロード命令情報中の要素数を設定する。
ライト部653は、プロセッサネットワーク部40と信号線108で接続され、ベクトルデータのロードバッファ64への書き込みを行う。
ライト部653は、信号線108を通じてプロセッサネットワーク部40からベクトルデータの要素を受信した時に、受信した要素に付加されているロードバッファ番号を持つロードバッファ64−iについて、レジスタ651−iを参照して、該要素に付加されている仮想番号に対応する無効化フラグフィールド6513が”0“であった場合、該ロードバッファ64−iにその要素を書き込む。
次いで、ライト部653は、該ロードバッファ番号をロードバッファ番号フィールド651に持つレジスタ651−iのライト要素数フィールド6514の値を、書き込んだ要素数分だけ減算し、全要素の書き込みが終了したときに使用可否フラグフィールド6518を”1“に設定する。
受信した要素に付加されているロードバッファ番号を持つロードバッファ64−iについて、レジスタ651−iを参照して、該要素に付加されている仮想番号に対応する無効化フラグフィールド6513が”1“であった場合、ライト部653は、該ロードバッファ64−iにその要素の書き込みを行わずに、該要素を廃棄する。
次いで、ライト部653は、該ロードバッファ番号をロードバッファ番号フィールド6511に持つレジスタ651−iのライト要素数フィールド6514の値を、書き込んだ要素数分だけ減算する。
また、分岐レベルフィールド6517が”0“でない場合、ライト部653は、受信した要素に付加されているロードバッファ番号を持つロードバッファ64−iにその要素を書き込む。
次いで、ライト部653は、該ロードバッファ番号をロードバッファ番号フィールド6511に持つレジスタ651−iのライト要素数フィールド6514の値を、書き込んだ要素数分だけ減算していき、全要素の書き込みが終了した時点で分岐レベルフィールド6517が”0“であった場合、使用可否フラグフィールド6518を”1“に設定する。さらにこの時、書き込み中/全要素書き込み後に無効化フラグフィールド6513が点灯していた場合は、ライト部653は、使用可否フラグフィールド6518の設定は行わない。
リード部654は、ベクトル制御部50と信号線109で接続され、ロードバッファ64からベクトルレジスタ62へのベクトルデータの転送を行う。
リード部654は、レジスタ設定部652によってライト要素数フィールド6514が全要素数に初期設定されたレジスタ651−iについて、そのレジスタのロードバッファ番号フィールド6511に設定されたバッファ番号を持つロードバッファ64−iのベクトルデータを、そのレジスタのベクトルレジスタ番号フィールド6516に設定された番号のベクトルレジスタ62に転送する条件が満足されたかどうかを監視する。
リード部654は、ベクトルデータの全要素がロードバッファ64−iに格納済みである(使用可否フラグフィールド6518の値が“1“である)場合に、該レジスタ651−iについて転送可能と判断する。
リード部654は、或るレジスタ651−iについて転送可能と判断した場合、信号線110を通じてベクトル制御部50に対して、そのレジスタ651−iのロードバッファ番号フィールド6511に設定されたバッファ番号及びベクトルレジスタ番号フィールド6516に設定されたベクトルレジスタ番号を指定した転送開始通知を送出する。
そして、該転送開始通知を送出した後、リード部654は、ロードバッファ番号フィールド6511に設定されたバッファ番号を持つロードバッファ64−iに格納されているデータを順次に読み出して、ベクトルレジスタ番号フィールド6516に設定された番号のベクトルレジスタ62にクロスバスイッチ回路66を通じて書き込んでいく。このとき、リード部654は、ベクトルデータの1要素をロードバッファ64から読み出す毎に、リード要素数フィールド6515の値を1だけ減算する。
リード要素数フィールド6515の値が0になると、転送完了となり、リード部654は、そのレジスタ651−iのロードバッファ番号フィールド6511に設定されたバッファ番号及びベクトルレジスタ番号フィールド6516に設定されたベクトルレジスタ番号を指定した転送終了通知として信号線110を通じてベクトル制御部50に送出する。
そして、該転送終了通知の送出と同時に、リード部654は、そのレジスタ651−iのロードバッファ番号フィールド6511及び仮想番号フィールド6512に設定された番号をロードバッファ解放通知として信号線107を通じてメモリアクセス処理部30に送出し、そのレジスタ651−iのフィールド6512〜6517を例えばNULLに初期化する。
無効化フラグフィールド6513が点灯していて、ライト要素数フィールド6514が“0”の場合は、投機的に実行されたベクトルロード命令が無効化された場合であるため、リード部654は、そのレジスタ651−iのロードバッファ番号フィールド6511に設定されたバッファ番号及びベクトルレジスタ番号フィールド6516に設定されたベクトルレジスタ番号を指定した転送終了通知として信号線110を通じてベクトル制御部50に送出する
そして、該転送終了通知の送出と同時に、リード部654は、そのレジスタ651−iのロードバッファ番号フィールド6511および仮想番号フィールド6512に設定された番号をロードバッファ解放通知として信号線107を通じてメモリアクセス処理部30に送出し、そのレジスタ651−iのフィールド6512〜6517を例えばNULLに初期化する。
ベクトル処理部60は、ベクトルロード命令と、分岐レベルと、分岐予測結果と、ロードバッファ番号とを、メモリアクセス処理部30から受け取り、ベクトルロード命令の投機/非投機状態を管理する。
ベクトルロード命令は、メモリアクセス処理部30が信号線103を通じて命令制御部20から受信したものである。
分岐レベルは、何個目の分岐命令の後の命令かを示すものである。
本実施の形態によるベクトルロード命令の投機実行方法は、上述の構成において、ロードバッファを確保した後に、各ロードバッファにn個持っている仮想番号の最若番の番号を選択し、ロードバッファ番号に仮想番号を連結して管理することを特徴とする。また、本実施の形態によるベクトルロード命令の投機実行方法は、上述の構成において、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に、分岐予測失敗した仮想番号と異なる仮想番号を連結することによって、個数が限られているロードバッファを有効に使用する事で性能を向上させることを特徴とする。さらに、分岐予測が失敗した場合は、選択した仮想番号を連結したロードバッファを解放して、後続のベクトルロード命令がロードバッファを確保した後に、分岐予測失敗した仮想番号と異なる仮想番号を連結することを特徴とする。
(第1の実施の形態の動作の説明)
次に、本実施の形態によるベクトル処理装置100の動作について、図面を参照して詳細に説明する。
図4は、本実施の形態に係るベクトル処理装置100による投機ベクトルロードの実行フローを示すシーケンス図である。
本実施の形態は、ロードバッファ64の確保を行うときに、ロードバッファに付加する仮想番号と、分岐レベル(何個目の分岐命令の後の命令かを示している)と、分岐予測結果とをベクトルロード管理部65に通知する。ベクトルロード管理部65は、仮想番号と分岐レベルと無効化フラグをロードバッファ64と同時に管理する機能を備える。
ベクトルロード管理部65は、管理している分岐レベルに対して、分岐予測が成功したときには分岐レベルのデクリメントを行い、分岐レベル=0になった命令は非投機の命令として処理する。
分岐予測が失敗したとき、ロードバッファ管理部31では、投機で確保したロードバッファに対応する仮想番号に対して無効化フラグを点灯させる。
また、ベクトルロード管理部65では、投機で確保したロードバッファに対応する仮想番号に無効化フラグを点灯させて、投機のベクトルロードのデータが主記憶装置から転送されてきても、ロードバッファからベクトルレジスタ62にデータを転送せずに廃棄し、無効化フラグが点灯しているロードバッファの廃棄が完了した事をロードバッファ管理部31に報告する。
また、ロードバッファ管理部31は、該当する仮想番号の無効化フラグを消灯させる。ロードバッファ管理部31は、無効化フラグが点灯していない仮想番号を用いてロードバッファを確保する事が出来るようになるため、無効なベクトルロード命令のためにロードバッファが枯渇する事がなくなり、分岐予測後のベクトルロード命令が実行できるようになり、無効なベクトルロード命令のロードデータ返却によるメモリアクセスのレイテンシを隠蔽する事ができる。
次に、図1の回路の動作について、図5のフローチャートを参照して説明する。
プロセッサ10は、主記憶装置70から命令を読出し、命令解読部21でスカラ命令かベクトル命令かの判定を行い(図5のステップS01)、命令解読部21でスカラ命令であった場合は、スカラ処理部22にて処理を行う(ステップS02)。
命令解読部21でベクトル命令と判定された場合は、メモリアクセス処理部30のロードバッファ管理部31にてロードバッファ64−iと無効化フラグが点灯していない最若版の仮想番号を確保(ステップS03)してから、プロセッサネットワーク部40を介して、主記憶装置70にベクトルロード命令を発行する(ステップS04)。
ベクトルロード命令の発行と同時に、メモリアクセス処理部30はベクトル制御部50を介してベクトル処理部60内のベクトルロード管理部65に、各種情報の登録を行う。
ベクトルロード管理部65は、登録された各種情報内の分岐レベルフィールドを参照して、発行されたベクトルロード命令の分岐レベル判定を行い(ステップS05)、分岐レベルが0であった場合は、該当ベクトルロードの全要素数分のリプライがあったかの判定を行い(ステップS06)、全要素数のリプライが返却されていない場合は、全要素数分のリプライ返却を待つ(ステップS06)。
全要素数のリプライが返却されていた場合、ベクトルロード管理部65は、分岐予測失敗によって無効化フラグが点灯していないかの判定を行い(ステップS07)無効化フラグが点灯していた場合は、無効化されたロードバッファ番号のロードバッファ解放通知に仮想番号を付加してメモリアクセス処理部30に連絡し、ロードバッファ管理部31はロードバッファの解放を行う(ステップS09)。
無効化フラグが点灯していなかった場合、ベクトルロード管理部65は、ロードバッファ64からベクトルレジスタ62へクロスバスイッチ66を介してデータを転送したのち(ステップS08)、使用が完了したロードバッファ番号のロードバッファ解放通知をメモリアクセス処理部30に連絡し、ロードバッファ管理部31はロードバッファの解放を行う(ステップS09)。
ステップS05で分岐レベルが0でなかった場合、ベクトルロード管理部65は、該当ベクトルロードの全要素数分のリプライがあったかの判定を行い(ステップS10)、全要素数のリプライが返却されていない場合は、全要素数分のリプライ返却を待つ(ステップS10)。
全要素数のリプライが返却されていた場合、ベクトルロード管理部65は、分岐予測失敗によって無効化フラグが点灯していないかの判定を行う(ステップS11)。
無効化フラグが点灯していた場合、ベクトルロード管理部65は、無効化されたロードバッファ番号のロードバッファ解放通知に仮想番号を付加してメモリアクセス処理部30に連絡し、ロードバッファ管理部31はロードバッファの解放を行う(ステップS09)。
無効化フラグが点灯していなかった場合、ベクトルロード管理部65は、分岐レベルが0であるかどうかの判定を行う(ステップS12)、分岐レベルが0で無かった場合は、ステップS11に戻る。
分岐レベルが0であった場合、ベクトルロード管理部65は、ロードバッファ64からベクトルレジスタ62へクロスバスイッチ66を介してデータを転送したのち(ステップS08)、使用が完了したロードバッファ番号のロードバッファ解放通知をメモリアクセス処理部30に連絡し、ロードバッファ管理部31はロードバッファの解放を行う(ステップS09)。
(第1の実施の形態による効果)
本実施の形態による第1の効果は、投機的に発行したベクトルロード命令が分岐予測失敗により無効になった場合に、ロードバッファをすぐに解放するため、無効なベクトルロード命令によるロードバッファの枯渇が無くなるため、ロードバッファを有効に活用する事ができるようになることである。
本実施の形態による第2の効果は、投機的に発行したベクトルロード命令が分岐予測失敗により無効になった場合に、ロードバッファをすぐに解放し、無効なベクトルロード命令が確保しているロードバッファがなくなるため、分岐予測後のベクトルロード命令が発行できるようになることである。これにより、無効なベクトルロード命令のロードデータ返却によるメモリアクセスのレイテンシを隠蔽できるため、性能を向上させることができる。
なお、本発明の課題を解決できる最小限の構成を図6に示す。ベクトル処理装置100が、主記憶装置70からベクトルデータをロードするプロセッサネットワーク部40と、ベクトルデータのロードバッファ64への格納及びベクトルレジスタ62への転送を行うベクトルロード管理部65と、ベクトルロード命令にロードバッファ64を確保するとともに、ロードバッファ64に複数個持っている仮想番号の最若番の番号を選択し、ロードバッファを64一意に識別するロードバッファ番号と仮想番号とを連結して管理するロードバッファ管理部31を備え、ロードバッファ管理部31が、分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置70から返却される前に分岐予測が失敗した場合、仮想番号を連結したロードバッファ番号に係るロードバッファ64を解放することで、上述した本発明の課題を解決することができる。
(第2の実施の形態)
次に、本発明の第2の実施の形態にについて説明を行う。
次に、本発明の他の実施例について図面を参照して詳細に説明する。
図7は、本実施の形態によるベクトルロード管理部65の構成例を示す図である。他の構成については第1の実施の形態と同様であるため説明を省略する。
図7を参照すると、本実施の形態によるベクトルロード管理部65は、第1の実施の形態によるベクトルロード管理部65が備えていたライト要素数フィールド6514及びリード要素数フィールド6515を備えず、代わりに、ベクトルロード命令の全要素数を格納する要素数フィールド6519と、格納/転送要素数をカウントする要素数カウンタ65110を備える。
要素数フィールド6519にはベクトルロード情報中の要素数を最初に設定し、メモリアクセス処理部30が、ベクトルロード命令の全要素を、プロセッサネットワーク部40に信号線105を通じて送出し終わっていた場合は、分岐レベル≠0のベクトルロード命令に対して分岐予測失敗が報告された時に、無効化フラグフィールド6513に”1“を設定する。
しかし、メモリアクセス処理部30が分岐レベル≠0のベクトルロード命令の送出を行っている時に、分岐予測失敗が報告された場合は、該当するベクトルロード命令の要素数フィールド6519を、メモリアクセス処理部30が発行したメモリアクセスリクエスト数の値に更新し、無効化フラグフィールド6513に”1“を設定する。
ライト部653は、プロセッサネットワーク部40と信号線108で接続され、ベクトルデータのロードバッファ64への書き込みを行う。
ライト部653は、信号線108を通じてプロセッサネットワーク部40からベクトルデータの要素を受信した時に、受信した要素に付随するロードバッファ番号を持つロードバッファ64にその要素を書き込む。
次いで、ライト部653は、該ロードバッファ番号をロードバッファ番号フィールド651に持つレジスタ651−iの要素数カウンタフィールド65110の値を、書き込んだ要素数分だけ加算する。
さらに、ライト部653は、レジスタ651−iの要素数カウンタフィールド65110の値が要素数フィールド6519の値と一致したときに、無効化フラグフィールド6513が点灯していなかったら、使用可否フラグフィールド6518を”1“に設定する。無効化フラグフィールド6523が点灯していた場合は、使用可否フラグフィールド6518の設定は行わない。
本実施の形態では、分岐予測失敗によって投機的に実行されたベクトルロード命令が無効化された場合に、仮想番号の解放が早くなるケースができるため、仮想番号を効率よく使用できるので、少ないハード量の増加で実現が可能となる。また余分なメモリアクセスリクエストを発行しないことによる消費電力低減といった新たな効果を有する。
次に、本発明のベクトル処理装置100のハードウェア構成例について、図8を参照して説明する。図8は、本発明のベクトル処理装置100のハードウェア構成例を示すブロック図である。
図8を参照すると、本発明のベクトル処理装置100は、一般的なコンピュータ装置と同様のハードウェア構成であり、CPU(Central Processing Unit)801、RAM(Random Access Memory)等のメモリからなる、データの作業領域やデータの一時退避領域に用いられる主記憶部802、ネットワークを介してデータの送受信を行う通信部803、入力装置805や出力装置806及び記憶装置807と接続してデータの送受信を行う入出力インタフェース部804、上記各構成要素を相互に接続するシステムバス808を備えている。記憶装置807は、例えば、ROM(Read Only Memory)、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置等で実現される。
本発明の各機能は、プログラムを組み込んだ、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、記憶装置807に格納し、そのプログラムを主記憶部802にロードしてCPU801で実行することにより、ソフトウェア的に実現することも可能である。
以上、好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。
また、本発明の方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明の方法およびコンピュータプログラムを実施する時には、その複数の手順の順番は内容的に支障しない範囲で変更することができる。
また、本発明の方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
さらに、上記実施形態の一部又は全部は、以下の付記のようにも記載されうるが、これに限定されない。
(付記1)
主記憶装置からベクトルデータをロードするプロセッサネットワーク手段と、
ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理手段と、
ベクトルロード命令にロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理手段を備え、
前記ロードバッファ管理手段が、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトル処理装置。
(付記2)
前記ロードバッファ管理手段が、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク手段が、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理手段が、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする付記1に記載のベクトル処理装置。
(付記3)
前記ベクトルロード管理手段が、
前記ベクトルデータの全要素を受信したとき、無効化フラグが点灯していた場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理手段が、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする付記1又は付記2に記載のベクトル処理装置。
(付記4)
前記ベクトルロード管理手段が、
前記ベクトルデータの全要素を受信したとき、分岐レベルが”0”で無効化フラグが点灯していない場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする付記1から付記3の何れか1項に記載のベクトル処理装置。
(付記5)
前記ベクトルロード管理手段が、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”1”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”0”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”1”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする付記3又は付記4に記載のベクトル処理装置。
(付記6)
前記ベクトルロード管理手段が、
前記ベクトルデータの要素数を格納する格納手段を含み、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が0になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする付記5に記載のベクトル処理装置。
(付記7)
前記ロードバッファ管理手段が、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク処理手段に発行した前記メモリリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理手段は、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリリクエストの数に更新する
ことを特徴とする付記6に記載のベクトル処理装置。
(付記8)
前記ロードバッファ管理手段が、
後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする付記1から付記7の何れか1項に記載のベクトル処理装置。
(付記9)
ベクトル演算を行うベクトル装置によるベクトルロード命令実行方法であって、
プロセッサネットワーク手段が、記憶装置からベクトルデータをロードし、
ベクトルロード管理手段が、ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行い、
ロードバッファ管理手段が、ベクトルロード命令にロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理し、
前記ロードバッファ管理手段は、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトルロード命令実行方法。
(付記10)
前記ロードバッファ管理手段は、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク手段は、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理手段は、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする付記9に記載のベクトルロード命令実行方法。
(付記11)
前記ベクトルロード管理手段は、
前記ベクトルデータの全要素を受信したとき、無効化フラグが点灯していた場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理手段は、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする付記9又は付記10に記載のベクトルロード命令実行方法。
(付記12)
前記ベクトルロード管理手段は、
前記ベクトルデータの全要素を受信したとき、分岐レベルが”0”で無効化フラグが点灯していない場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする付記9から付記11の何れか1項に記載のベクトルロード命令実行方法。
(付記13)
前記ベクトルロード管理手段は、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”1”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”0”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”1”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする付記11又は付記12に記載のベクトルロード命令実行方法。
(付記14)
前記ベクトルロード管理手段は、
前記ベクトルデータの要素数を格納手段に格納し、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が0になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする付記13に記載のベクトルロード命令実行方法。
(付記15)
前記ロードバッファ管理手段は、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク処理手段に発行した前記メモリリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理手段は、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリリクエストの数に更新する
ことを特徴とする付記14に記載のベクトルロード命令実行方法。
(付記16)
前記ロードバッファ管理手段は、
後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする付記9から付記15の何れか1項に記載のベクトルロード命令実行方法。
(付記17)
ベクトル演算を行うベクトル装置を構成するコンピュータ上で動作するベクトルロード命令実行プログラムであって、
プロセッサネットワーク手段に、記憶装置からベクトルデータをロードするプロセッサネットワーク処理を実行させ、
ベクトルロード管理手段に、ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理処理を実行させ、
ロードバッファ管理手段に、ベクトルロード命令にロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理処理を実行させ、
前記ロードバッファ管理処理で、
分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
ことを特徴とするベクトルロード命令実行プログラム。
(付記18)
前記ロードバッファ管理処理で、
前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
前記プロセッサネットワーク処理で、
前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
前記ベクトルロード管理処理で、
受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
ことを特徴とする付記17に記載のベクトルロード命令実行プログラム。
(付記19)
前記ベクトルロード管理処理で、
前記ベクトルデータの全要素を受信したとき、無効化フラグが点灯していた場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
前記ロードバッファ管理処理で、
前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
ことを特徴とする付記17又は付記18に記載のベクトルロード命令実行プログラム。
(付記20)
前記ベクトルロード管理処理で、
前記ベクトルデータの全要素を受信したとき、分岐レベルが”0”で無効化フラグが点灯していない場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
ことを特徴とする付記17から付記19の何れか1項に記載のベクトルロード命令実行プログラム。
(付記21)
前記ベクトルロード管理処理で、
前記仮想番号に対応した無効化フラグを管理し、
分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”1”を設定し、
前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”0”であった場合、前記ロードバッファに当該要素を書き込み、
当該要素に付加されている仮想番号の無効化フラグが”1”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
ことを特徴とする付記19又は付記20に記載のベクトルロード命令実行プログラム。
(付記22)
前記ベクトルロード管理処理で、
前記ベクトルデータの要素数を格納手段に格納し、
前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
前記格納手段の値が0になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
ことを特徴とする付記21に記載のベクトルロード命令実行プログラム。
(付記23)
前記ロードバッファ管理処理で、
前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク処理手段に発行した前記メモリリクエストの数を前記ベクトルロード管理手段に通知し、
前記ベクトルロード管理処理で、
該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリリクエストの数に更新する
ことを特徴とする付記22に記載のベクトルロード命令実行プログラム。
(付記24)
前記ロードバッファ管理処理で、
後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
ことを特徴とする付記17から付記23の何れか1項に記載のベクトルロード命令実行プログラム。
10:プロセッサ
20:命令制御部
21:命令解読部
22:スカラ処理部
30:メモリアクセス処理部
31:ロードバッファ管理部
311(311−1〜31−n):レジスタ群
3111:ロードバッファ番号フィール
3112:使用中フラグフィールド
3113:分岐レベルフィールド
3114:仮想番号フィールド
3115:無効化フラグフィールド
40:プロセッサネットワーク部
50:ベクトル制御部
60:ベクトル処理部
61:ベクトルパイプライン演算器
62:ベクトルレジスタ
63:ベクトル演算器
64(64−1〜64−n):ロードバッファ
65:ベクトルロード管理部
651(651−1〜651−n):レジスタ群
6511:ロードバッファ番号フィールド
6512:仮想番号フィールド
6513:無効化フラグフィールド
6514:ライト要素数フィールド
6515:リード要素数フィールド
6516:ベクトルレジスタ(VAR)番号フィールド
6517:分岐レベルフィールド
6518:使用可否フラグフィールド
6519:要素数フィールド
65110:要素数カウンタフィールド
652:レジスタ設定部
653:ライト部
654:リード部
66:クロスバスイッチ回路
101〜110:信号線
801:CPU
802:主記憶部
803:通信部
804:入出力インタフェース部
805:入力装置
806:出力装置
807:記憶装置
808:システムバス

Claims (10)

  1. 主記憶装置からベクトルデータをロードするプロセッサネットワーク手段と、
    ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理手段と、
    ベクトルロード命令にロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理手段を備え、
    前記ロードバッファ管理手段が、
    分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
    ことを特徴とするベクトル処理装置。
  2. 前記ロードバッファ管理手段が、
    前記ベクトルデータに前記ロードバッファ番号と前記仮想番号を付加したメモリアクセスリクエストを前記プロセッサネットワーク手段に送信し、
    前記プロセッサネットワーク手段が、
    前記メモリアクセスリクエストに基づいて前記ベクトルデータの発行を前記主記憶装置にリクエストし、
    前記主記憶装置から読み出した前記ベクトルロード命令の各要素に前記ロードバッファ番号及び仮想番号を付して前記ベクトルロード管理手段に送信し、
    前記ベクトルロード管理手段が、
    受信した前記要素を、前記ロードバッファ番号に係る前記ロードバッファに格納する
    ことを特徴とする請求項1に記載のベクトル処理装置。
  3. 前記ベクトルロード管理手段が、
    前記ベクトルデータの全要素を受信したとき、無効化フラグが点灯していた場合は、当該ベクトルデータをベクトルレジスタへは転送せず、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信し、
    前記ロードバッファ管理手段が、
    前記ロードバッファの解放通知に基づいて、前記ロードバッファを解放する
    ことを特徴とする請求項1又は請求項2に記載のベクトル処理装置。
  4. 前記ベクトルロード管理手段が、
    前記ベクトルデータの全要素を受信したとき、分岐レベルが”0”で無効化フラグが点灯していない場合は、当該ベクトルデータをベクトルレジスタへは転送した後、当該ベクトルデータを格納するロードバッファの解放通知を前記ロードバッファ管理手段に送信する
    ことを特徴とする請求項1から請求項3の何れか1項に記載のベクトル処理装置。
  5. 前記ベクトルロード管理手段が、
    前記仮想番号に対応した無効化フラグを管理し、
    分岐失敗が報告された時に使用されていた前記仮想番号に対応する無効化フラグに”1”を設定し、
    前記要素を受信したとき、当該要素に付加されている仮想番号の無効化フラグが”0”であった場合、前記ロードバッファに当該要素を書き込み、
    当該要素に付加されている仮想番号の無効化フラグが”1”であった場合、前記ロードバッファへの当該要素の書き込みを行わずに、当該要素を破棄する
    ことを特徴とする請求項3又は請求項4に記載のベクトル処理装置。
  6. 前記ベクトルロード管理手段が、
    前記ベクトルデータの要素数を格納する格納手段を含み、
    前記ロードバッファに書き込みを行った要素の数だけ前記要素数を減算し、
    前記格納手段の値が0になった場合、当該ベクトルデータを前記ベクトルレジスタへ転送可能と判断する
    ことを特徴とする請求項5に記載のベクトル処理装置。
  7. 前記ロードバッファ管理手段が、
    前記ロードバッファを確保して前記ベクトルロード命令を投機的に発行している最中に、分岐予測失敗によって投機的に発行しているベクトルロード命令の発行を中断した場合、前記プロセッサネットワーク処理手段に発行した前記メモリリクエストの数を前記ベクトルロード管理手段に通知し、
    前記ベクトルロード管理手段は、
    該当するベクトルデータの要素数を格納する格納手段の値を、前記メモリリクエストの数に更新する
    ことを特徴とする請求項6に記載のベクトル処理装置。
  8. 前記ロードバッファ管理手段が、
    後続のベクトルロード命令のロードバッファを確保した場合、分岐予測が失敗した仮想番号と異なる仮想番号を当該ベクトルロード命令に連結する
    ことを特徴とする請求項1から請求項7の何れか1項に記載のベクトル処理装置。
  9. ベクトル演算を行うベクトル装置によるベクトルロード命令実行方法であって、
    プロセッサネットワーク手段が、記憶装置からベクトルデータをロードし、
    ベクトルロード管理手段が、ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行い、
    ロードバッファ管理手段が、ベクトルロード命令にロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理し、
    前記ロードバッファ管理手段は、
    分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
    ことを特徴とするベクトルロード命令実行方法。
  10. ベクトル演算を行うベクトル装置を構成するコンピュータ上で動作するベクトルロード命令実行プログラムであって、
    プロセッサネットワーク手段に、記憶装置からベクトルデータをロードするプロセッサネットワーク処理を実行させ、
    ベクトルロード管理手段に、ベクトルデータの前記ロードバッファへの格納及びベクトルレジスタへの転送を行うベクトルロード管理処理を実行させ、
    ロードバッファ管理手段に、ベクトルロード命令にロードバッファを確保するとともに、前記ロードバッファに複数個持っている仮想番号の最若番の番号を選択し、前記ロードバッファを一意に識別するロードバッファ番号と前記仮想番号とを連結して管理するロードバッファ管理処理を実行させ、
    前記ロードバッファ管理処理で、
    分岐予測結果を待たずに実行したベクトルロード命令のロードデータが主記憶装置から返却される前に分岐予測が失敗した場合、前記仮想番号を連結したロードバッファ番号に係る前記ロードバッファを解放する
    ことを特徴とするベクトルロード命令実行プログラム。
JP2012047028A 2012-03-02 2012-03-02 ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム Active JP5648645B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012047028A JP5648645B2 (ja) 2012-03-02 2012-03-02 ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012047028A JP5648645B2 (ja) 2012-03-02 2012-03-02 ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム

Publications (2)

Publication Number Publication Date
JP2013182507A true JP2013182507A (ja) 2013-09-12
JP5648645B2 JP5648645B2 (ja) 2015-01-07

Family

ID=49273097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012047028A Active JP5648645B2 (ja) 2012-03-02 2012-03-02 ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム

Country Status (1)

Country Link
JP (1) JP5648645B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018156497A (ja) * 2017-03-21 2018-10-04 日本電気株式会社 メモリアクセス装置、命令制御方法、プログラム、情報処理装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155834A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 処理装置
JP2012083937A (ja) * 2010-10-12 2012-04-26 Nec Corp プロセッサ及びベクトルロード命令の実行方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155834A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 処理装置
JP2012083937A (ja) * 2010-10-12 2012-04-26 Nec Corp プロセッサ及びベクトルロード命令の実行方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018156497A (ja) * 2017-03-21 2018-10-04 日本電気株式会社 メモリアクセス装置、命令制御方法、プログラム、情報処理装置

Also Published As

Publication number Publication date
JP5648645B2 (ja) 2015-01-07

Similar Documents

Publication Publication Date Title
US10585804B2 (en) Systems and methods for non-blocking implementation of cache flush instructions
JP3661614B2 (ja) キャッシュメモリ制御方法及びマルチプロセッサシステム
US9367472B2 (en) Observation of data in persistent memory
US9529594B2 (en) Miss buffer for a multi-threaded processor
US8850167B2 (en) Loading/discarding acquired data for vector load instruction upon determination of prediction success of multiple preceding branch instructions
US20150261535A1 (en) Method and apparatus for low latency exchange of data between a processor and coprocessor
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
JP2012038293A5 (ja)
US8793435B1 (en) Load miss result buffer with shared data lines
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
US10558489B2 (en) Suspend and restore processor operations
JP4985452B2 (ja) ベクトル処理装置
US10331373B2 (en) Migration of memory move instruction sequences between hardware threads
US10126952B2 (en) Memory move instruction sequence targeting a memory-mapped device
US20180011636A1 (en) Information processing apparatus and method of accessing a memory
JP5648645B2 (ja) ベクトル処理装置、ベクトルロード命令実行方法、及びベクトルロード命令実行プログラム
US9779044B2 (en) Access extent monitoring for data transfer reduction
JP2006313479A (ja) 半導体集積回路装置及びデータ転送方法
CN117194283A (zh) 基于risc-v指令集的向量读写指令的处理方法
US10996954B2 (en) Calculation processing apparatus and method for controlling calculation processing apparatus
JP2011028343A (ja) 演算処理装置、およびデータ転送方法
JP3726092B2 (ja) ベクトル処理装置およびベクトルロード方法
JP2002024007A (ja) プロセッサシステム
JP7151439B2 (ja) 演算処理装置および演算処理装置の制御方法
US9047092B2 (en) Resource management within a load store unit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130703

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20131010

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140610

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140714

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141014

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141027

R150 Certificate of patent or registration of utility model

Ref document number: 5648645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150