(57)【要約】【課題】リネーム機能を備えるベクトル処理装置の処理性能を向上させる。【解決手段】本発明によるベクトル処理装置は、複数のベクトルレジスタと、複数のベクトルレジスタに対応する複数の退避用レジスタと、ベクトル命令管理部とを具備する。ベクトル命令管理部は、待機中の先行命令による読み出し先の第１ベクトルレジスタと、後続命令の書き込み先の第２ベクトルレジスタが重複する場合、待機中の先行命令の読み出し先のベクトルレジスタを、第１ベクトルレジスタから第１ベクトルレジスタに対応する第１退避用レジスタに変更する。又、ベクトル命令管理部は、第１ベクトルレジスタ内のデータを削除することなく、当該データを第１退避用レジスタに書き込む。【選択図】図２
2010205088.tif 000002
【特許請求の範囲】
【請求項１】
複数のベクトルレジスタと、
前記複数のベクトルレジスタに対応する複数の退避用レジスタと、
待機中の先行命令による読み出し先の第１ベクトルレジスタと、後続命令の書き込み先の第２ベクトルレジスタが重複する場合、前記待機中の先行命令の読み出し先のベクトルレジスタを、前記第１ベクトルレジスタから前記第１ベクトルレジスタに対応する第１退避用レジスタに変更し、前記第１ベクトルレジスタ内のデータを削除することなく、前記データを前記第１退避用レジスタに書き込むベクトル命令管理部と、
を具備するベクトル処理装置。
【請求項２】
請求項１に記載のベクトル処理装置において、
前記ベクトル命令管理部は、
先行命令によって使用されるベクトルレジスタと、実行中の命令によって使用されるベクトルレジスタとを比較して、先行命令の発行可否を判定するベクトルレジスタビジー管理部と、
先行命令による読み出し先のベクトルレジスタと、後続命令による書き込み先のベクトルレジスタとを比較して、ベクトルデータを退避するか否かを判定する退避判定部と、
前記ベクトルレジスタビジー管理部の判定結果と、前記退避判定部の判定結果とに基づいて、発行する命令を決定する命令発行管理部と、
を備えるベクトル処理装置。
【請求項３】
請求項２に記載のベクトル処理装置において、
前記命令発行管理部は、
先行命令がセットされる第１発行ステージレジスタと、
後続命令がセットされるデコードステージレジスタと、
前記ベクトルレジスタビジー管理部において、前記先行命令の発行を待ち合わせると判定された場合、前記デコードステージレジスタ内の後述命令がセットされる第２発行ステージレジスタと、
を備える
前記命令発行管理部は、前記第１発行ステージレジスタと前記第２発行ステージレジスタの一方にセットされた命令を発行する
ベクトル処理装置。
【請求項４】
請求項３に記載のベクトル処理装置において、
前記命令発行管理部は、
前記第１発行ステージレジスタにセットされた先行命令を変更するリネーミング回路と、
前記退避判定部において退避が必要であると判定された場合、前記リネーミング回路で変更された先行命令を前記第１発行ステージレジスタにセットするセレクタ回路と、
を更に備えるベクトル処理装置。
【請求項５】
複数のベクトルレジスタと、前記複数のベクトルレジスタに対応する複数の退避用レジスタとを備えるベクトル処理装置によるベクトル処理方法において、
待機中の先行命令による読み出し先の第１ベクトルレジスタと、後続命令の書き込み先の第２ベクトルレジスタが重複する場合、前記待機中の先行命令の読み出し先のベクトルレジスタを、前記第１ベクトルレジスタから前記第１ベクトルレジスタに対応する第１退避用レジスタに変更するステップと、
前記第１ベクトルレジスタ内のデータを削除することなく、前記データを前記第１退避用レジスタに書き込むステップと、
を具備するベクトル処理方法。
【請求項６】
請求項５に記載のベクトル処理方法において、
先行命令によって使用されるベクトルレジスタと、実行中の命令によって使用されるベクトルレジスタとを比較して、先行命令の発行可否を判定するステップと、
先行命令による読み出し先のベクトルレジスタと、後続命令による書き込み先のベクトルレジスタとを比較して、ベクトルデータを退避するか否かを判定するステップと、
前記ベクトルレジスタビジー管理部の判定結果と、前記退避判定部の判定結果とに基づいて、発行する命令を決定するステップと、
を更に備えるベクトル処理方法。
【請求項７】
請求項６に記載のベクトル処理方法において、
先行命令を第１発行ステージレジスタにセットするステップと、
後続命令をデコードステージレジスタにセットするステップと、
前記ベクトルレジスタビジー管理部において、前記先行命令の発行を待ち合わせると判定された場合、前記デコードステージレジスタ内の後述命令を第２発行ステージレジスタにセットするステップと、
を更に備え、
前記発行する命令を決定するステップは、前記第１発行ステージレジスタと前記第２発行ステージレジスタの一方にセットされた命令を発行するステップを備える
ベクトル処理方法。
【請求項８】
請求項７に記載のベクトル処理方法において、
前記先行命令を変更するステップは、前記第１発行ステージレジスタにセットされた先行命令を変更するステップと、
前記退避判定部において退避が必要であると判定された場合、前記変更された先行命令を前記第１発行ステージレジスタにセットするステップと、
を備えるベクトル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リネーム機能を備えるベクトル処理装置に関する。
【背景技術】
【０００２】
ベクトル処理装置では、ベクトルレジスタに対し、先行命令である読み出し命令が待たされている間において、当該ベクトルレジスタに対して後続の書き込み命令が入力されることがある。この場合、従来のベクトル処理装置では、元のデータが書き潰されるのを防ぐため、先行する読み出し命令が発行され、読み出し動作が開始されるのを待機した後、後続の書き込み命令発行されていた。
【０００３】
このため、従来のベクトル処理装置では、先行する読み出し命令の待ち時間が長い場合、後続の書込み命令や、それに続く命令の発行が長い時間待たされてしまうため、ベクトル処理性能が低下していた。
【０００４】
このような命令の待ち合わせを回避して処理能力を向上させる技術が、例えば、特開２００３−１９６０８６に記載されている（特許文献１参照）。特許文献１に記載の技術では、データの読み出しはワーキングレジスタにアクセスし、データを書き込むときは、マスタレジスタとワーキングレジスタの両方にアクセスする。又、ワーキングレジスタに、マスタレジスタのカレントウィンド前後のデータも格納することで、アウトオブオーダーの処理を妨げないようにしている。
【０００５】
一方、リネーミング機能によって、物理レジスタのリソースを抑止する技術が特開２００６−２６８１６８に記載されている（特許文献２参照）。
【０００６】
しかし、リネーミング機能等により、後続の書き込み命令の書き込み先を、別のベクトルレジスタに割り当てたとしても、後続命令がマスク付き書込み命令の場合、マスクが無効の要素に対しては、元のデータを保持させる必要がある。すなわち、リネーミング機能を有するベクトル処理装置では、元データが存在しないベクトルレジスタに対するマスク付き書き込みは不可能である。このような場合も、後続の書き込み命令に対して新たなベクトルレジスタを割り当てることができず、先行命令の読み出し動作が開始されるまで、後続の書き込み命令の発行を待たせる必要があり、ベクトル処理性能の低下を招いていた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−１９６０８６
【特許文献２】特開２００６−２６８１６８
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、リネーム機能を備えるベクトル処理装置の処理性能を向上させることにある。
【課題を解決するための手段】
【０００９】
本発明によるベクトル処理装置は、複数のベクトルレジスタと、複数のベクトルレジスタに対応する複数の退避用レジスタと、ベクトル命令管理部とを具備する。ベクトル命令管理部は、待機中の先行命令による読み出し先の第１ベクトルレジスタと、後続命令の書き込み先の第２ベクトルレジスタが重複する場合、待機中の先行命令の読み出し先のベクトルレジスタを、第１ベクトルレジスタから第１ベクトルレジスタに対応する第１退避用レジスタに変更する。又、ベクトル命令管理部は、第１ベクトルレジスタ内のデータを削除することなく、当該データを第１退避用レジスタに書き込む。
【００１０】
本発明によるベクトル方法は、複数のベクトルレジスタと、複数のベクトルレジスタに対応する複数の退避用レジスタとを備えるベクトル処理装置において実行される。本発明によるベクトル方法は、待機中の先行命令による読み出し先の第１ベクトルレジスタと、後続命令の書き込み先の第２ベクトルレジスタが重複する場合、待機中の先行命令の読み出し先のベクトルレジスタを、第１ベクトルレジスタから第１ベクトルレジスタに対応する第１退避用レジスタに変更するステップと、第１ベクトルレジスタ内のデータを削除することなく、当該データを第１退避用レジスタに書き込むステップとを具備する。
【発明の効果】
【００１１】
本発明によれば、ベクトル処理装置におけるベクトル処理性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、従来技術によるベクトル処理装置におけるベクトル命令列の処理動作の一例を示すタイムチャートである。
【図２】図２は、本発明によるベクトル処理装置の実施の形態における構成を示すブロック図である。
【図３】図３は、本発明によるベクトル命令管理部の実施の形態における構成を示すブロック図である。
【図４】図４は、本発明によるベクトル処理装置におけるベクトル命令列の処理動作の一例を示すタイムチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明によるベクトル処理装置、及びベクトル処理方法の実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
【００１４】
（概要）
本発明によるベクトル処理装置には、ベクトルレジスタ４２１〜４２ｎとして通常使用するベクトルレジスタ４２１ａ〜４２ｎａ（以下、通常レジスタ４２１ａ〜４２１ｎと称す）と退避用のベクトルレジスタ４２１ｂ〜４２ｎｂ（以下、退避用レジスタ４２１ｂ〜４２ｎｂと称す）とが設けられる。本発明によるベクトル処理装置では、先行命令である読み出し命令が待たされているベクトルレジスタに対し、後続の書き込み命令が割り当てられた場合、当該ベクトルレジスタの退避用レジスタにデータを退避させることにより、先行する読み出し命令の開始を待たずに、後続の書き込み命令を実行し、ベクトル処理性能を向上できる。
【００１５】
又、本発明では、通常レジスタ４２１ａ〜４２ｎａのデータを退避用レジスタ４２１ｂ〜４２ｎｂに書き出し、元データが残っている通常使用する通常レジスタ４２１ａ〜４２ｎａに対して、マスク付き書き込み命令の動作を行うように制御することが可能である。このため、後続命令が、読み出しが待たされているベクトルレジスタ（通常レジスタ）に対するマスク付き書き込み命令の場合であっても、先行命令の読み出し開始を待たずに、後続のマスク付き書き込み命令を発行することができ、ベクトル処理性能の向上を図ることができる。
【００１６】
（構成）
図２は、本発明によるベクトル処理システムの実施の形態における構成図である。図２を参照して、本発明によるベクトル処理システムの実施の形態における構成を説明する。
【００１７】
図２を参照して、本発明のベクトル処理装置は、ベクトル命令発行部１、ベクトル命令管理部２、主記憶装置３、ベクトル処理部４を具備する。ベクトル命令管理部２は、命令発行管理部２０と、ベクトルレジスタビジー管理部２１、退避判定部２２を備える。ベクトル処理部４は、ベクトルマスク生成部４０、選択部４１、４５、ベクトルレジスタ群として、複数のベクトルレジスタ４２１〜４２ｎ、演算器群として、演算器４６１〜４６ｎを備える。
【００１８】
ベクトル命令発行部１は、実行すべき命令を保持し、ベクトル命令管理部２へ、ベクトル命令２０１を出力する。ベクトル命令は、ベクトル命令の種別（Ｃｏｄｅ）と、その付随情報とを含む。付随情報は、例えば、ベクトル長（ＶＬ）と、ベクトルマスクフラグ（ＭＦ）と、ベクトルデータの読み出し、及び書き込み対象であるベクトルレジスタを示すベクトルレジスタ番号（ＶＲ）を含む。
【００１９】
命令発行管理部２０は、ベクトル命令発行部１から入力されるベクトル命令２０１を解読し、解読したベクトル命令を格納する。又、命令発行管理部２０は、ベクトルレジスタビジー管理部２１から入力される通常レジスタ４２１ａ〜４２ｎａのビジーフラグ情報などを参照し、リソースが重なっているか否かを確認する発行チェックを行う。命令発行管理部２０は、発行可能ならばベクトル処理部４に対し、ベクトル命令２０２を出力し、発行できない場合は、発行条件が揃うまでベクトル命令２０２の発行を待機させる。
【００２０】
退避判定部２２は、命令発行管理部２０で解読されたベクトル命令の内容に応じて、ベクトルレジスタ内のデータを退避させるか否かの判定を行なう。詳細には、退避判定部２２は、先ずベクトル命令が、あるベクトルレジスタへの書き込み命令である場合には、当該ベクトルレジスタに対する読み出し命令が先行命令として存在し、かつその読み出し命令の発行が待たされているかどうかの判定を行う。すなわち、退避判定部２２は、後続命令の書き込み対象となるベクトルレジスタに対して、先行読み出し命令が待機中であるか否かを確認する。ここで、待機中の先行読み出し命令がある場合、退避判定部２２は、ベクトル処理部４に対し、当該ベクトルレジスタ内のデータを退避させるための退避指示１０８を送出する。
【００２１】
ベクトルレジスタビジー管理部２１は、命令発行管理部２０からベクトル処理部４に発行された命令に基づき、使用されるベクトルレジスタのビジー管理を行う。
【００２２】
ベクトルレジスタのビジー管理の詳細を説明する。通常レジスタ４２１ａ〜４２ａｎの各々には、書き込み用ビジーカウンタと読み出し用ビジーカウンタ等が設けられる。当初、命令発行管理部２０から送られてくる各ベクトルレジスタのビジー期間情報がビジーカウンタに初期設定としてセットされ、以降、カウンタ値が“０”になるまでカウントダウン動作が行われる。ビジーフラグは、ビジーカウンタ毎に存在し、カウンタ値≠“０”のとき“１”を、カウンタ値＝“０”のとき“０”を保持する。
【００２３】
主記憶装置３は、ベクトルデータを保持する。命令発行管理部２０から出力されたベクトル命令２０２が、ベクトルデータをベクトルレジスタへ転送する命令である場合、ベクトル処理部４は、主記憶装置３からベクトルデータ４００を読み出す。読み出されたベクトルデータ４００は、選択部４１を介して、ベクトル命令２０２で指定されたベクトルレジスタに出力される。
【００２４】
選択部４１には、記憶装置３から読み出されたベクトルデータ４００、または演算器群の演算器４６１〜４６ｎより出力された演算結果であるベクトルデータ４０３が入力される。選択部４１は、命令発行管理部２０から出力されるベクトル命令２０２に付随するベクトルレジスタ番号に従いベクトルレジスタ群の内のひとつ、又は、複数のベクトルレジスタに対して、入力されたベクトルデータを出力する。
【００２５】
ベクトル命令２０２がマスク付命令である場合、選択部４１は、ベクトルマスク生成部４０よりベクトルマスクデータ４０１を入力し、ベクトル命令２０２に応じて入力されたデータに対して、ベクトルマスク処理を行い、ベクトルレジスタ群に対して出力する。
【００２６】
ベクトルレジスタ群は複数のベクトルレジスタ４２１〜４２ｎを備える。ベクトルレジスタ群は、命令発行管理部２０から出力されたベクトル命令２０２に従い、ベクトル命令が書き込み命令の場合には選択部４１より出力されたベクトルデータを格納し、命令が読み出し命令の場合には、ベクトルデータの読み出しを行い、読み出しデータを、選択部４５に出力する。ここで、書き込み命令が、マスク付き書き込み命令の場合には、ベクトルデータの要素毎に存在するマスクビットが、“１”の要素は書き込みが行われるが、“０”の要素には書き込みは行われない。
【００２７】
ベクトルレジスタ４２１〜４２ｎは、通常レジスタ４２１ａ〜４２ｎａに対応する退避用レジスタ４２１ｂ〜４２ｎｂを備える。命令発行管理部２０からデータの退避指示１０８を受け取ると、退避指示１０８で指定されたベクトルレジスタにおける通常レジスタのデータが対応する退避用レジスタに書き出される。この際、通常レジスタのデータは削除されずにそのまま保持される。例えば、退避指示１０８がベクトルレジスタ４２１に対する退避指示である場合、通常レジスタ４２１ａのデータが退避用レジスタ４２１ｂに書き出される。この際、通常レジスタ４２１ａ内のデータは削除されず、そのまま保持される。
【００２８】
選択部４５は、ベクトルレジスタ群から読み出されたベクトルデータを、命令発行管理部２０から出力されるベクトル命令２０２に従い、演算器群、選択部４１、又は主記憶装置３に出力する。詳細には、選択部４５は、ベクトル命令２０２が演算命令である場合は、ベクトルレジスタ群から読み出されたベクトルデータを演算器群（演算器４６１〜４６ｎ）に出力し、ベクトル命令２０２が他のベクトルレジスタへの移送命令である場合は、ベクトルレジスタ群から読み出されたベクトルデータを選択部４１に出力し、ベクトル命令２０２が主記憶装置３への格納命令である場合は、ベクトルレジスタ群から読み出されたベクトルデータを記憶装置３に出力する。
【００２９】
演算器群は、１つ、ないしは、複数の演算器４６１〜４６ｎを備える。命令発行管理部２０から出力されるベクトル命令２０２が演算命令である場合には、選択部４５からのベクトルデータに対する演算を行い、演算結果であるベクトルデータ４０３を選択部４１に出力する。
【００３０】
ベクトルマスク生成部４０は、命令発行管理部２０から出力されたベクトル命令２０２がマスク付命令であった場合、ベクトルデータに対するマスクデータ４０１を選択部４１に出力する。
【００３１】
次に、図３を参照して、ベクトル命令管理部２の実施の形態における構成の詳細を説明する。図３は、ベクトル命令管理部２内の命令発行管理部２０、ベクトルレジスタビジー管理部２１、及び、退避判定部２２の構成例を示すブロック図である。
【００３２】
命令発行管理部２０は、命令入力レジスタ２１１、命令デコード回路２１２、デコードステージレジスタ２１３、リネーミング回路２１４、セレクタ回路２１５、発行ステージ１レジスタ２１６、発行チェック回路２１７、発行１レジスタ２１８、発行ステージ２レジスタ２１９、発行チェック回路２２０、発行２レジスタ２２１を備える。又、退避判定部２２は、退避条件検出回路２３１、ＡＮＤ回路２３２、２３４、ＯＲ回路２３３、退避スタートレジスタ２３５を備える。
【００３３】
図３を参照して、ベクトル命令管理部１から入力されたベクトル命令２０１は、命令入力レジスタ２１１に格納され、命令デコード回路２１２によりデコードされて、デコードステージレジスタ２１３に格納される。デコードステージ２１３から出力された命令１００は、セレクタ回路２１５と、退避判定部２２内の退避条件検出回路２３１と、発行ステージ２レジスタ２１９へ送出される。
【００３４】
退避条件検出回路２３１は、先行命令と後続命令における読み出し対象のベクトルレジスタと書き込み対象のベクトルレジスタとの一致、不一致に応じた退避有効信号１０３及び追い越し有効信号１０４を出力する。詳細には、（１）先行命令と後続命令が、同一ベクトルレジスタに対する先行読み出し命令と、後続書き込み命令の組み合わせであることが検出されると、退避有効信号１０３として“１”が設定される。あるいは、（２）後続命令と先行命令とが、異なるベクトルレジスタへの読み出し命令、または書き込み命令の組み合わせであることが検出されると、追い越し有効信号１０４として“１”が設定される。ここで、退避条件検出回路２３１には、発行ステージ１レジスタ２１６から出力されるベクトル命令１０１が先行命令として入力され、デコードステージレジスタ２１３から出力されるベクトル命令１００が後続命令として入力される。退避条件検出回路２３１は、ベクトル命令１０１（先行命令）とベクトル命令１００（後続命令）の対象となるベクトルレジスタの一致、不一致を検出する。退避条件検出回路２３１からの退避有効信号１０３は、ＡＮＤ回路２３２及びＯＲ回路２３３に入力され、追い越し有効信号１０４は、ＯＲ回路２３３に入力される。
【００３５】
ＡＮＤ回路２３２は、入力される退避有効信号１０３と第１発行待機信号１０５との論理積を退避決定信号１０６として出力する。退避決定信号１０６は、セレクト信号としてセレクタ回路２１５に入力され、また退避スタートレジスタ２３５へのセット信号として退避スタートレジスタ２３５に入力される。ＯＲ回路２３３は、入力される退避有効信号１０３と追い越し有効信号１０４との論理和をＡＮＤ回路２３４へ出力する。ＡＮＤ回路２３４は、ＯＲ回路２３３の出力と第１発行待機信号１０５との論理積を、発行ステージ２レジスタのセット信号１０７として発行ステージ２レジスタ２１９に出力する。
【００３６】
退避スタートレジスタ２３５は、退避決定信号１０６に基づいて退避指示信号（退避指示１０８）の信号レベルを決定する。詳細には、退避決定信号１０６が“１”のとき、“１”がセットされ、“０”のとき“０”がセットされる。退避スタートレジスタ２３５に“１”がセットされると、退避指示信号１０８として“１”が設定される。
【００３７】
発行チェック回路２１７は、ベクトルレジスタビジー管理部２１から入力されるベクトルレジスタのビジーフラグ情報１０９に基づき、発行ステージ１レジスタ２１６に格納されたベクトル命令の発行チェックを行う。発行チェック回路２１７は、発行チェックの結果、発行可能と判定すると、発行ステージ１レジスタ２１６に格納されているベクトル命令を発行１レジスタ２１８にセットし、第１発行待機信号１０５に“０”を送出する。又、発行チェック回路２１７は、発行不可能と判定すると、発行１レジスタ２１８へ命令のセットは行わず、第１発行待機信号１０５に“１”を送出する。又、このとき発行不可能と判定された命令の後続命令（デコードステージレジスタ２１３にセットされている命令）が、先行命令を追い越す場合にリネーミング対象となるベクトルレジスタを決定し、リネーミング情報１０２としてリネーミング回路２１４に送出する。発行１レジスタ２１８にベクトル命令が格納されると、次のタイミングで発行１レジスタ２１８内の命令がベクトル命令２０２−１として発行される。
【００３８】
発行チェック回路２２０は、ベクトルレジスタビジー管理部２１から入力されるベクトルレジスタのビジーフラグ情報１０９に基づき、発行ステージ２レジスタ２１９に格納されたベクトル命令の発行チェックを行う。発行チェック回路２２０は、発行チェックの結果、発行可能と判定すると、発行２レジスタ２２１に発行ステージ２レジスタ２１９に格納されているベクトル命令をセットし、発行不可能と判定すると、発行２レジスタ２２１への命令のセットは行わない。発行２レジスタ２２１にベクトル命令がセットされると、次のタイミングで発行２レジスタ２２１内の命令がベクトル命令２０２−２として発行される。
【００３９】
ここで、ベクトルレジスタビジー管理部２１は、発行されたベクトル命令２０２（２０２−１又は２０２−２）に基づいて算出された、当該ベクトル命令２０２に応じて使用されるベクトルレジスタのビジー期間を取得する。
【００４０】
リネーミング回路２１４は、発行チェック回路２１７から入力するベクトルレジスタリネーミング情報１０２に基づき、発行ステージ１レジスタ２１６のベクトル命令を書き換えてセレクタ回路２１５に出力する。詳細には、リネーミング回路２１４は、発行ステージ１レジスタ２１６内から入力されたベクトル命令で設定されている読み出し先ベクトルレジスタを、通常レジスタから退避用レジスタに変更し、セレクタ回路２１５に出力する。退避用レジスタに変更されるベクトルレジスタは、後続のベクトル命令で設定されている書き込み先のベクトルレジスタと同一の読み出し先ベクトルレジスタである。セレクタ回路２１５は、退避決定信号１０６が“０”の場合は、デコードステージレジスタ２１３から出力されるベクトル命令を、“１”の場合は、リネーミング回路２１４から出力されるベクトル命令を選択し、発行ステージ１レジスタ２１６へ出力する。
【００４１】
（動作）
次に、図３及び図４を参照して、本発明によるベクトル処理装置の動作の詳細を説明する。ここでは、ベクトルレジスタ群に含まれる通常レジスタ４２１ａ〜４２７ａをＶ０、Ｖ１、Ｖ２、Ｖ３、Ｖ４、Ｖ５、Ｖ６とし、退避用レジスタ４２１ｂ〜４２７ｂをＶ０’、Ｖ１’、Ｖ２’、Ｖ３’、Ｖ４’、Ｖ５’、Ｖ６’として説明する。又、以下に示す（１）〜（５）のベクトル命令列が実行されることを一例に本発明によるベクトル処理の動作を説明する。
＜ベクトル命令列例＞
（１）除算命令Ｄ：Ｖ５÷Ｖ６をＶ１に格納（処理時間が長い命令）
（２）加算命令Ａ０：Ｖ２＋Ｖ３をＶ０に格納
（３）乗算命令Ｍ：Ｖ０×Ｖ１をＶ２に格納
（４）移送命令Ｔ：Ｖ４をＶ０に格納
（５）加算命令Ａ１：Ｖ１＋Ｖ２をＶ３に格納
尚、除算命令Ｄは処理時間が長く、処理が終了するまで７クロック分の時間がかかるものとする。
【００４２】
図４は、上述のベクトル命令列を処理するベクトル命令管理部２の動作を示すタイムチャートである。上述の（１）〜（５）ベクトル命令列を含むベクトル命令２０１がベクトル命令発行部１からベクトル命令管理部２に入力される。ベクトル命令２０１は、まず命令入力レジスタ２１１に格納された後、デコード回路２１２で解読され、デコードステージレジスタ２１３に順次格納されていく。
【００４３】
時刻Ｔ２：
時刻Ｔ２において、デコードステージレジスタ２１３に除算命令Ｄが格納される。この際、発行ステージ１レジスタ２１６には、命令は存在しないため、退避条件検出回路２３１の出力である退避有効信号１０３と、追い越し有効信号１０４はともに“０”となる。又、時刻Ｔ２において実行中の命令がないため、発行チェック回路２１７は、発行可能と判定し発行待機信号１０５を“０”に設定する。一方、発行チェック回路２２０は、発行ステージ２レジスタ２１９に命令が存在しないため、発行不可能と判定する。
【００４４】
以上のように、時刻Ｔ２では、退避有効信号１０３“０”、発行待機信号１０５“０”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“０”となる。又、退避有効信号１０３“０”、追い越し有効信号１０４“０”、第１発行待機信号１０５“０”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“０”となる。
【００４５】
時刻Ｔ３：
時刻Ｔ２において、発行チェック回路２１７は発行可能と判定しているが、発行ステージ１レジスタ２１６にベクトル命令が格納されていないため、時刻Ｔ３では、発行１レジスタ２１８への命令のセットは行わなれない。又、発行チェック回路２２０は発行不可能と判定しているため、時刻Ｔ３では、発行２レジスタ２２１への命令のセットは行わなれない。
【００４６】
時刻Ｔ３において、セレクタ回路２１５は、退避決定信号１０６“０”に応じて、デコードステージレジスタ２１３内の除算命令Ｄを選択して発行ステージ１レジスタ２１６にセットする。又、デコードステージレジスタ２１３には、後続の加算命令Ａ０がセットされ、命令入力レジスタ２１１には、乗算命令Ｍがセットされる。更に、セット信号１０７が“０”であるため、発行ステージ２レジスタ２１９への命令のセットは行われない。
【００４７】
ここで、発行ステージ１レジスタ２１６に格納される除算命令Ｄ（Ｖ５÷Ｖ６をＶ１に格納）と、デコードステージレジスタ２１３に格納される加算命令Ａ０（Ｖ２＋Ｖ３をＶ０に格納）は、異なるベクトルレジスタへの読み出し命令、書き込み命令の組み合わせとなる。このため、退避条件検出回路２３１から出力される退避有効信号１０３は“０”、追い越し有効信号１０４は“１”となる。
【００４８】
発行チェック回路２１７では、発行ステージ１レジスタ２１６に格納された除算命令Ｄの発行チェックが行われる。ここでは、実行中の命令がないため発行可能と判定され、第１発行待機信号１０５は“０”に設定される。一方、発行チェック回路２２０は、発行ステージ２レジスタ２１９に命令が存在しないため、発行不可能と判定する。
【００４９】
以上のように、時刻Ｔ３では、退避有効信号１０３“０”、発行待機信号１０５“０”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“０”となる。又、退避有効信号１０３“０”、追い越し有効信号１０４“１”、第１発行待機信号１０５“０”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“０”となる。
【００５０】
時刻Ｔ４：
時刻Ｔ３において、発行チェック回路２１７は発行可能と判定しているため、発行ステージ１レジスタ２１６にセットされている除算命令Ｄは、時刻Ｔ４において発行１レジスタ２１８にセットされ、次のタイミング（時刻Ｔ５）において直ちに発行される。尚、除算命令Ｄの実行（発行１レジスタ２１８へのセット）に伴いベクトルレジスタＶ１に対する読み出しフラグが立つ。この読み出しフラグは、除算命令Ｄの結果がベクトルレジスタＶ１に書き込まれるまでの間“１”に設定される。ここでは、７クロックの期間（時刻Ｔ１１まで）“１”に設定される。一方、発行チェック回路２２０は、発行不可能と判定しているため時刻Ｔ４では発行２レジスタ２２１への命令のセットは行わなれない。
【００５１】
時刻Ｔ４において、セレクタ回路２１５は、退避決定信号１０６“０”に応じて、デコードステージレジスタ２１３内の加算命令Ａ０を選択して発行ステージ１レジスタ２１６にセットする。又、デコードステージレジスタ２１３には、後続の乗算命令Ｍがセットされ、命令入力レジスタ２１１には、移送命令Ｔがセットされる。更に、セット信号１０７が“０”であるため、発行ステージ２レジスタ２１９への命令のセットは行われない。
【００５２】
ここで、発行ステージ１レジスタ２１６に格納される加算命令Ａ０（Ｖ２＋Ｖ３をＶ０に格納）と、デコードステージレジスタ２１３に格納される乗算命令Ｍ（Ｖ０×Ｖ１をＶ２に格納）は、同一のベクトルレジスタＶ０に対する読み出し命令（先行命令）と、書き込み命令（後続命令）の組み合せとなる。すなわち、先行命令である加算命令Ａ０の読み出し対象レジスタ（ベクトルレジスタＶ２）と後続命令である乗算命令Ｍの書き込み対象レジスタ（ベクトルレジスタＶ２）が同一である。このため、退避条件検出回路２３１から出力される退避有効信号１０３は“１”、追い越し有効信号１０４は“０”となる。
【００５３】
発行チェック回路２１７では、発行ステージ１レジスタ２１６に格納された加算命令Ａ０の発行チェックが行わる。ここでは、実行中の先行命令の除算命令Ｄとリソース（演算器と、読み出し、及び書き込みベクトルレジスタ）が重ならないので、発行可能と判定され、第１発行待機信号１０５は“０”に設定される。一方、発行チェック回路２２０は、発行ステージ１レジスタ２１９に命令が存在しないため、発行不可能と判定する。
【００５４】
以上のように、時刻Ｔ４では、退避有効信号１０３“１”、発行待機信号１０５“０”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“０”となる。又、退避有効信号１０３“１”、追い越し有効信号１０４“０”、第１発行待機信号１０５“０”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“０”となる。
【００５５】
時刻Ｔ５：
時刻Ｔ４において、発行チェック回路２１７は発行可能と判定しているため、発行ステージ１レジスタ２１６にセットされている加算命令Ａ０は、時刻Ｔ５において発行１レジスタ２１８にセットされ、次のタイミング（時刻Ｔ６）において直ちに発行される。一方、発行チェック回路２２０は、発行不可能と判定しているため時刻Ｔ５では発行２レジスタ２２１への命令のセットは行わなれない。
【００５６】
時刻Ｔ５において、セレクタ回路２１５は、退避決定信号１０６“０”に応じて、デコードステージレジスタ２１３内の乗算命令Ｍを選択して発行ステージ１レジスタ２１６にセットする。又、デコードステージレジスタ２１３には、後続の移送命令Ｔがセットされ、命令入力レジスタ２１１には、加算命令Ａ１がセットされる。更に、セット信号１０７が“０”であるため、発行ステージ２レジスタ２１９への命令のセットは行われない。
【００５７】
ここで、発行ステージ１レジスタ２１６に格納される乗算命令Ｍ（Ｖ０×Ｖ１をＶ２に格納）と、デコードステージレジスタ２１３に格納される移送命令Ｔ（Ｖ４をＶ０に格納）は、同一ベクトルレジスタＶ０に対する読み出し命令、書き込み命令、の組み合せとなる。詳細には、先行命令である乗算命令Ｍの読み出し対象レジスタ（ベクトルレジスタＶ０）と後続命令である移送命令Ｔの書き込み対象レジスタ（ベクトルレジスタＶ０）が同一である。このため、退避条件検出回路２３１から出力される退避有効信号１０３は“１”、追い越し有効信号１０４は“０”となる。
【００５８】
発行チェック回路２１７では、発行ステージ１レジスタ２１６に格納された乗算命令Ｍの発行チェックが行わる。乗算命令Ｍで使用するベクトルレジスタＶ０（読み出し対象レジスタ）は、実行中の除算命令Ｄで使用中のベクトルレジスタ（書き込み対象レジスタ）と同一である。除算命令Ｄの処理時間は長く、ベクトルレジスタＶ０に対する処理結果の書き込みが終了するまで、乗算命令Ｍの発行は待たされる。すなわち、乗算命令の発行は不可能と判定され、第１発行待機信号１０５は“１”に設定される。この際、発行チェック回路２１７は、リネーミング対象となるベクトルレジスタＶ０を指定するリネーミング情報１０２をリネーミング回路２１４に送出する。一方、発行チェック回路２２０は、発行ステージ２レジスタ２１９に命令が存在しないため、発行不可能と判定する。
【００５９】
以上のように、時刻Ｔ５では、退避有効信号１０３“１”、発行待機信号１０５“１”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“１”となる。又、退避有効信号１０３“１”、追い越し有効信号１０４“０”、第１発行待機信号１０５“１”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“１”となる。
【００６０】
時刻Ｔ６：
時刻Ｔ５において、発行チェック回路２１７は発行不可能と判定しているため、発行ステージ１レジスタ２１６で乗算命令Ｍは待機する。この際、リネーミング回路２１４において、乗算命令Ｍは乗算命令Ｍ’に書き換えられる。詳細には、リネーミング回路２１４は、リネーミング情報１０２に基づいて、リネーミング対象となるベクトルレジスタを特定し、当該ベクトルレジスタを、対応する退避用ベクトルレジスタに変更するようにリネーミングを行なう。ここでは、乗算命令Ｍにおいて、後続の移送命令Ｔの書き込み対象レジスタと同一の読み出し対象レジスタ（ベクトルレジスタＶ０）を、退避用レジスタＶ０’に変えるように乗算命令Ｍが書き換えられる。すなわち、乗算命令Ｍ’は、Ｖ０’＊Ｖ１をＶ２に格納する命令となる（Ｖ０’は、通常レジスタＶ０の退避用レジスタ）。一方、発行チェック回路２２０は、発行不可能と判定しているため時刻Ｔ６では発行２レジスタ２２１への命令のセットは行わなれない。
【００６１】
時刻Ｔ６において、セレクタ回路２１５は、退避決定信号１０６“１”に応じて、リネーミング回路２１４において書き換えられた乗算命令Ｍ’を選択して発行ステージ１レジスタ２１６にセットする。又、セット信号１０７“１”に応じて、デコードステージ２１３内の移送命令Ｔが発行ステージ２レジスタ２１９にセットされる。更に、デコードステージレジスタ２１３には、後続のＡ１命令Ｔがセットされる。
【００６２】
退避決定信号１０６“１”により退避スタートレジスタに“１”がセットされると、退避対象ベクトルレジスタＶ０に対し、退避指示１０８が出力され、ベクトルレジスタＶ０から退避用レジスタＶ０’へのデータの書き出しが開始される。この際、ベクトルレジスタＶ０内のデータは削除されない。退避用レジスタＶ０’への書き出しが開始されると、退避用レジスタＶ０’のＶＡＬＩＤ信号が“１”にセットされる。このＶＡＬＩＤ信号が“１”の退避用レジスタには、有効なデータが保持されていることを示し、ＶＡＬＩＤ信号が“０”になるまで書き込みが行われないように制御される。
【００６３】
又、デコードステージレジスタ２１３にセットされた加算命令Ａ１と発行ステージ１レジスタ６にセットされた命令Ｍ’は、異なるベクトルレジスタへの読み出し命令、書き込み命令の組み合わせとなる。このため、退避条件検出回路２３１から出力される退避有効信号１０３は“０”、追い越し有効信号１０４は“１”となる。乗算命令Ｍ’は、除算命令ＤによるベクトルレジスタＶ１への書き込みがまだ開始されていないので、発行は待たされたままとなり、第１発行待機信号１０５は、“１”のまま保持される。
【００６４】
待機中のベクトル命令に設定された読み出し対象レジスタとデコードレジスタ２１３にセットされた後続命令に設定された書き込み対象レジスタが同一である場合、待機中のベクトル命令は、リネーミング回路２１４によって、当該同一のベクトルレジスタを退避するように更に変更される。
【００６５】
以上のように、時刻Ｔ６では、退避有効信号１０３“０”、発行待機信号１０５“１”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“０”となる。又、退避有効信号１０３“０”、追い越し有効信号１０４“１”、第１発行待機信号１０５“１”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“１”となる。
【００６６】
一方、発行チェック回路２２０は、発行ステージ２レジスタ２１９内の移送命令Ｔが発行可能か否かを判定する。実行中の先行命令の除算命令Ｄとリソース（演算器と、読み出し、及び書き込みベクトルレジスタ）が重ならないので、発行可能と判定される。
【００６７】
時刻Ｔ７：
時刻Ｔ６において、発行チェック回路２２０は発行可能と判定しているため、発行ステージ２レジスタ２１９にセットされている移送命令Ｔは、時刻Ｔ７において発行２レジスタ２２１にセットされ、次のタイミング（時刻Ｔ８）において直ちに発行される。一方、発行チェック回路２１７は、発行不可能（待機）と判定しているため時刻Ｔ７では発行１レジスタ２１８への命令のセットは行わなれない。
【００６８】
時刻Ｔ７において、デコードステージレジスタ２１３には、ベクトル命令がセットされない。このため、発行ステージ１レジスタ２１６に乗算命令Ｍ’が設定された状態を維持する。又、セット信号１０７“１”に応じて、デコードステージ２１３内の加算命令Ａ１が発行ステージ２レジスタ２１９にセットされる。
【００６９】
デコードステージレジスタ２１３に命令がセットされていないため、発行ステージ１レジスタ６にセットされた命令Ｍ’と同一レジスタへの書き込み及び読み出しの重複はない。この場合、退避条件検出回路２３１から出力される退避有効信号１０３は“０”、追い越し有効信号１０４は“０”となる。又、乗算命令Ｍ’は、除算命令ＤによるベクトルレジスタＶ１への書き込みがまだ開始されていないので、発行は待たされたままとなり、第１発行待機信号１０５は、“１”のまま保持される。
【００７０】
以上のように、時刻Ｔ７では、退避有効信号１０３“０”、発行待機信号１０５“１”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“０”となる。又、退避有効信号１０３“０”、追い越し有効信号１０４“０”、第１発行待機信号１０５“１”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“０”となる。
【００７１】
一方、発行チェック回路２２０は、発行ステージ２レジスタ２１９内の加算命令Ａ１（Ｖ１＋Ｖ２をＶ３に格納）が発行可能か否かを判定する。実行中の先行命令の除算命令Ｄとリソース（演算器と、読み出し、及び書き込みベクトルレジスタ）が重ならないので、発行可能と判定される。
【００７２】
時刻Ｔ８：
時刻Ｔ７において、発行チェック回路２２０は発行可能と判定しているため、発行ステージ２レジスタ２１９にセットされている加算命令Ａ１は、時刻Ｔ８において発行２レジスタ２２１にセットされ、次のタイミング（時刻Ｔ９）において直ちに発行される。一方、発行チェック回路２１７は、発行不可能（待機）と判定しているため時刻Ｔ８では発行１レジスタ２１８への命令のセットは行わなれない。
【００７３】
時刻Ｔ８において、デコードステージレジスタ２１３には、ベクトル命令がセットされない。このため、発行ステージ１レジスタ２１６に乗算命令Ｍ’が設定された状態を維持する。
【００７４】
デコードステージレジスタ２１３に命令がセットされていないため、発行ステージ１レジスタ２１６にセットされた命令Ｍ’と同一レジスタへの書き込み及び読み出しの重複はない。この場合、退避条件検出回路２３１から出力される退避有効信号１０３は“０”、追い越し有効信号１０４は“０”となる。又、乗算命令Ｍ’は、除算命令ＤによるベクトルレジスタＶ１への書き込みがまだ開始されていないので、発行は待たされたままとなり、第１発行待機信号１０５は、“１”のまま保持される。
【００７５】
以上のように、時刻Ｔ８では、退避有効信号１０３“０”、発行待機信号１０５“１”となるため、ＡＮＤ回路２３２から出力される退避決定信号１０６は“０”となる。又、退避有効信号１０３“０”、追い越し有効信号１０４“０”、第１発行待機信号１０５“１”となるため、ＡＮＤ回路２３４から出力されるセット信号１０７は“０”となる。
【００７６】
一方、発行チェック回路２２０は、発行ステージ２レジスタ内に命令がセットされていないため、発行不可能と判定する。
【００７７】
時刻Ｔ９から時刻Ｔ１０の間、除算命令Ｄに対する処理が完了するまで、ベクトル命令管理部２は、乗算命令Ｍ’の発行を待ち合わせる。その後、時刻Ｔ１１において、除算命令ＤによるベクトルレジスタＶ１への書き込みが開始されると、ベクトルレジスタＶ１の読み出しビジーフラグが“０”になり、乗算命令Ｍ’が発行される。除算命令Ｍ’に基づく処理では、退避用レジスタＶ０’内のデータが使用される。この際、退避用レジスタＶ０’が使用可能となるように退避用レジスタＶ０’のＶＡＬＩＤ信号が“０”に設定される。
【００７８】
このようにして、本発明では、使用レジスタＶ０への書き込み命令である移送命令Ｔの先行命令として、同一の使用レジスタＶ０に対する読み出し命令を含む乗算命令Ｍが存在し、当該先行命令（乗算命令Ｍ）が発行待ちとなっている場合、使用レジスタＶ０のデータを退避用レジスタＶ０’に退避する。これにより、先行命令（乗算命令Ｍ）のレジスタＶ０への読み出し動作の開始を待たずに、後続命令（移動命令Ｔ）が追い越して発行されるため、命令発行待ち時間を削減でき、ベクトル処理性能を向上させることができる。
【００７９】
例えば、ベクトルレジスタに退避用レジスタを持たない従来技術によって上述の（１）〜（５）の命令列を実行する場合、図１に示すタイムチャートのよう動作する。すなわち、移送命令Ｔ、及び加算命令Ａ１は、先行命令である乗算命令ＭによるベクトルレジスタＶ０に対する読み出し動作が開始されるのを待ってから発行される。このため、除算命令Ｄの処理時間が長い場合（例えば７クロック）には、移送命令Ｔの発行は、乗算命令Ｍが発行されるまでの期間、すなわち時刻Ｔ１３までの長時間待たされることになる。
【００８０】
一方、本発明によるベクトル処理装置では、待機している乗算命令による処理の開始を待つことなく他のベクトル命令（移送命令Ｔ、加算命令Ａ１）を発行できるため、図４に示すように移送命令Ｔ、加算命令Ａ１による処理を従来に比べて６クロック分の期間早く実行することができる。又、これに伴い、乗算命令Ｍ’による処理の終了時間が、入力される命令列の終了時間となるため、命令列の処理時間を従来よりも早めることができる。
【００８１】
又、本発明では、リネーミング機能を有するベクトル処理装置において、後続命令がマスク付き書き込み命令であっても、発行が待たされている先行命令を追い越して、当該後続命令を発行することができる。
【００８２】
例えば、従来技術では、あるベクトルレジスタへの先行する読み出し命令が待たされており、後続命令の書き込み対象が当該ベクトルレジスタである場合、リネーミング機能により、別のベクトルレジスタを書き込み先のベクトルレジスタとして割り当て、後続の書き込み命令を待たせることなく実行することができる。しかし、後続命令が、マスク付きの書き込み命令の場合、書き込み先として別のベクトルレジスタを割り当ててしまうと、元のデータが存在しないため、マスク付き書き込みを実行できなくなる。従って、このような場合、ベクトルレジスタのリネーミング機能は使えず、先行命令の読み出しが開始されるまで、後続の書き込み命令は待たされることになり、ベクトル性能を向上させることができない。
【００８３】
一方、本発明によるベクトル処理装置では、待機中の先行命令を追い越して実行される後続命令は、退避用レジスタにデータが退避され、元データを保持している通常レジスタに対して処理される。このように、マスク付き書き込み命令で使用される通常レジスタには元データが保持されているため、先行命令を追い越して実行される後続命令が、マスク付き書き込み命令であっても当該命令を問題なく実行することができる。従って、後続命令がマスク付き書き込み命令であり、その書き込み先のレジスタが、待機中の先行命令における読み出し先のレジスタである場合でも、問題なく後続命令は先行命令を追い越して実行することができる。
【００８４】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【００８５】
１：ベクトル命令発行部
２：ベクトル命令管理部
３：主記憶装置
４：ベクトル処理部
２０：命令発行管理部
２１：ベクトルレジスタビジー管理部
２２：退避判定部
４０：ベクトルマスク生成部
４１、４５：選択部
４２１〜４２ｎ：ベクトルレジスタ
４２１ａ〜４２ｎａ：通常レジスタ
４２１ｂ〜４２ｎｂ：退避用レジスタ
４６１〜４６ｎ：演算器
２１１：命令入力レジスタ
２１２：命令デコードレジスタ
２１３：デコードステージレジスタ
２１４：リネーミング回路
２１５：セレクタ回路
２１６：発行ステージ１レジスタ
２１７、２２０：発行チェック回路
２１８：発行１レジスタ
２１９：発行ステージ２レジスタ
２２１：発行２レジスタ
２３１：退避条件検出回路
２３２、２３４：ＡＮＤ回路
２３３：ＯＲ回路
２３５：退避スタートレジスタ
１０３：退避有効信号
１０４：追い越し有効信号
１０５：発行待機信号
【図１】
2010205088.tif 000003
【図２】
2010205088.tif 000004
【図３】
2010205088.tif 000005
【図４】
2010205088.tif 000006