(57)【特許請求の範囲】
【請求項１】
命令を保持する命令保持手段と、
前記命令保持手段から命令を読み出して発行するとともに、マスクデータの生成を指示するマスクデータ生成命令を実行しているか否かを示すフラグ情報を保持するベクトル命令発行手段と、
複数のマスクデータを保持するマスクレジスタと、
前記マスクレジスタから１ビット毎に読み出されたマスクデータを用いてマスク演算処理を行う分割マスク演算器と、
前記マスクレジスタから一括して読み出された全マスクデータを用いてマスク演算処理を行う一括マスク演算器と、
前記フラグ情報が前記マスクデータ生成命令の実行を示す値である場合に前記分割マスク演算器からの出力を前記マスクレジスタに書き込むように制御し、前記フラグ情報が前記マスクデータ生成命令の実行を示す値ではない場合に前記一括マスク演算器からの出力を前記マスクレジスタに書き込むように制御するマスクデータ選択手段と、
を備えるベクトル処理装置。
【請求項２】
前記ベクトル命令発行手段は、
１クロックサイクル毎に前記命令保持手段から命令を読み出して発行することを特徴とする請求項１に記載のベクトル処理装置。
【請求項３】
前記マスクレジスタに格納された各マスクデータと対応するベクトルデータを保持するベクトルレジスタと、
前記ベクトル命令発行手段が発行した命令に応じて、前記ベクトルレジスタからベクトルデータを読み出すベクトルレジスタ選択手段と、
前記ベクトルレジスタ選択手段が読み出したベクトルデータを用いてベクトル演算を行うベクトル演算器と、
をさらに備えていることを特徴とする請求項１または請求項２に記載のベクトル処理装置。
【請求項４】
前記命令の種別として、前記マスクデータ生成命令、マスク演算命令、マスク付きベクトル命令を含むことを特徴とする請求項１乃至請求項３のいずれか１項に記載のベクトル処理装置。
【請求項５】
前記マスクレジスタの各要素に保持されたマスクデータと、前記ベクトルレジスタの各要素に保持されたベクトルデータと、が要素番号によって対応付けられていることを特徴とする請求項３に記載のベクトル処理装置。
【請求項６】
マスクデータを保持するマスクレジスタと、
１ビット単位でのマスク演算処理を行う分割マスク演算器と、
前記マスクレジスタのデータサイズのマスク演算処理を行う一括マスク演算器と、
を有するベクトル処理装置の制御方法であって、
マスクデータの生成を指示するマスクデータ生成命令の処理中には、後続するマスク演算命令を、前記マスクレジスタからビット単位でマスクデータを読み出し、読み出したマスクデータを前記分割マスク演算器によって演算して演算結果を前記マスクレジスタに書き込み、
マスクデータの生成を指示するマスクデータ生成命令の処理中ではない場合には、後続するマスク演算命令を、前記マスクレジスタから前記マスクデータを一括して読み出し、読み出したマスクデータを前記一括マスク演算器によって演算して演算結果を前記マスクレジスタに書き込む、
ベクトル処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はベクトル処理装置及びベクトル演算処理装置の制御方法に関し、特にマスクデータを生成する命令を扱うベクトル処理装置及びベクトル演算処理装置の制御方法に関する。
【背景技術】
【０００２】
はじめに、本発明に関連する一般的なベクトル処理装置の構成及び動作について説明する。ベクトル処理装置は、大別するとマスク演算命令の処理において、マスク演算を一括して処理する（マスク演算一括処理）装置と、マスク演算を分割して処理する（マスク演算分割処理）装置と、がある。マスク演算一括処理とは、マスクレジスタに格納されている全マスクデータを一括して演算する方法である。一方、マスク演算分割処理とは、要素毎にマスクデータを保持するマスクレジスタから、マスクデータをクロックサイクル毎に一つずつ読み出して、マイクロレジスタのデータ長（要素長）と同じクロックサイクルの間、演算処理を行う方法である。
【０００３】
図１は、マスク演算一括処理を行う一般的なベクトル処理装置の構成を示すブロック図である。図示するように、ベクトル処理装置は、命令記憶手段１０１、ベクトル命令発行手段１０２、ベクトルレジスタ１０３−１、１０３−２、ベクトルレジスタ選択手段１０４、ベクトル演算器１０５、演算結果選択手段１０６、マスクレジスタ１０７−１〜３、ｎ＋１ビットマスクレジスタ選択手段１０８、マスク演算器１０９、１／ｎ選択手段１１０、及びビットシフタ１１１を具備する。
【０００４】
演算結果選択手段１０６は、ベクトル演算器１０５を含む１個あるいは複数の演算器から出力される演算結果ベクトルデータを受信する。演算結果選択手段１０６は、当該ベクトルデータを０要素目からｎ要素目（ｎは０より大きい整数）までｎ＋１クロックサイクルの間、順にベクトルレジスタ１０３−１及び１０３−２に書き込む。
【０００５】
命令記憶手段１０１は、命令を記憶する。ベクトル命令発行手段１０２は、命令記憶手段１０１から命令を順次読み出して、発行する。当該命令には、マスク付きベクトル命令、マスクデータ生成命令、マスク演算命令を含む。以下、命令記憶手段１０１が記憶する命令がマスク付きベクトル命令である場合についての動作を説明する。この場合、ベクトル命令発行手段１０２は、１／ｎ選択手段１１０に対して、マスクレジスタ１０７−１に格納されたマスクデータをマスクレジスタ１０７の０番目要素から１クロックサイクル毎に一つ読み出すように指示する。１／ｎ選択手段１１０は、対応する要素のマスクデータの値を読み出し、演算結果選択手段１０６に通知する。このマスクデータの値に応じて、ベクトルレジスタ１０３におけるデータ書き込みの可否を通知する。ベクトルレジスタ１０３には、書き込みが可能である場合にベクトルデータが書き込まれる。
【０００６】
続いて、命令記憶手段１０１が記憶する命令がマスクデータ生成命令である場合について説明する。マスクデータ生成命令とは、要素が連続するベクトルデータをベクトル演算器１０５で比較した結果として出力されるマスクデータを、ベクトルデータの要素番号に対応するマスクレジスタ１０７の要素番号位置に格納する命令である。ベクトル命令発行手段１０２は、マスクデータ生成命令を発行することにより、ベクトルレジスタ１０３の出力を指示する。ベクトルレジスタ選択手段１０４は、１個あるいは複数のベクトルレジスタ１０３（本例では１０３−１、及び１０３−２）からベクトルデータを読み出す。ベクトル演算器１０５は、読み出したベクトルデータに応じてマスク生成命令演算を実行する。演算結果は、ビットシフタ１１１及びｎ＋１ビットマスクレジスタ選択手段１０８を介してマスクレジスタ１０７に書き込まれる。
【０００７】
次に、命令記憶手段１０１が記憶する命令がマスク演算命令である場合について説明する。ベクトル命令発行手段１０２は、マスク演算命令を発行する。マスク演算命令に応じて、１個または複数のマスクレジスタ１０７に格納されているマスクデータが一括して読み出される（ｎ＋１ビットのマスクデータが一括して読み出される）。マスク演算器１０９は、このｎ＋１ビットのマスクデータを１クロックサイクルで演算する。演算結果は、マスク演算命令内に含まれる要素情報に応じて、ｎ＋１ビットマスクレジスタ選択手段１０８を介してマスクレジスタ１０７に書き込まれる。
【０００８】
続いて、マスク演算分割処理について説明する。図２は、マスク演算分割処理を行う一般的なベクトル処理装置の構成を示すブロック図である。図示するように、ベクトル処理装置は、命令記憶手段１０１、ベクトル命令発行手段１０２、ベクトルレジスタ１０３−１〜３、ベクトルレジスタ選択手段１０４、ベクトル演算器１０５、演算結果選択手段１０６、マスクレジスタ１０７−１〜３、ビットシフタ１１１−１〜３、１ビットマスクレジスタ選択手段１１２、及び１ビットマスク演算器１１３を具備する。
【０００９】
図２の構成において、マスク付きベクトル命令及びマスクデータ生成命令の処理は、図１の構成と同様である。以下、図２の構成における、マスク演算命令の処理について説明する。ベクトル命令発行手段１０２は、マスク演算命令を発行する。マスク演算命令に応じて、１ビットマスクレジスタ選択手段１１２は、１個または複数のマスクレジスタ１０７に格納されているマスクデータを１ビット単位で読み出し、１／ｎ選択手段１１０を通して１ビットマスク演算器１１３に供給する。そして、１ビットマスク演算器１１３は、最大ｎ＋１クロックサイクルの間、１ビットのマスクデータに関するマスク演算を行う。演算結果は、１ビットマスクレジスタ選択手段１１２及びビットシフタ１１１を介して、マスクレジスタ１０７に要素毎に書き込まれる。
【００１０】
特許文献１には、マスク反転命令の実行時間を短縮することにより、マスク反転命令の次のマスクを使用する命令の待ち時間を短縮するベクトル処理装置を開示している。当該ベクトル処理装置は、マスクレジスタ自体を複数用意することにより処理の高速化を図っている。なお、特許文献１は、マスクデータの処理レートには言及していない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第４５０２９８３号公報
【特許文献２】特開２０１０−２０４９１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
上述のように、マスクデータは、マスクデータ生成命令に従って生成される。マスクデータの生成処理は、ベクトルデータがベクトル演算器１０５に入力されてから、ベクトルデータのワード数分だけ演算が行われる。そして、マスクデータは、マスクレジスタ１０７内のベクトルデータと対応する要素に格納される。
【００１３】
ベクトル命令発行手段１０２からマスク付きベクトル命令が発行された場合、ベクトル演算器１０５から出力された演算結果の有効性の判定は、マスクレジスタ１０７に格納されたマスクデータを用いて行われる。すなわち、１／ｎ選択手段１１０は、ベクトル演算器１０５が処理対象としたベクトルデータと対応するマスクデータをマスクレジスタ１０７から取得する。この取得したマスクデータの有効性に応じて、ベクトルレジスタ１０３への書き込み時に、マスクデータが無効な場合の書き込みを抑止する。
【００１４】
上述の、マスクデータ生成命令及びマスク付きベクトル命令の処理は、マスクレジスタ１０７の観点（に対する処理）としては、１クロックサイクルに１ビットを生成または読み出す逐次処理である。すなわち、１クロックサイクル毎に１ビット（１つ（１ビット）のマスクデータ）が処理される。
【００１５】
一方、前述したように、マスク演算命令の処理において、マスク演算一括処理とマスク演算分割処理の２種類の処理がある。マスク演算一括処理とは、マスクレジスタに格納されている全データを一括して演算する方法である。一方、マスク演算分割処理とは、マスクレジスタ１０７の値を毎クロックサイクル読み出して、マイクロレジスタのデータ長と同じクロックサイクルの間、演算処理を行う方法である。
【００１６】
図２に示す構成のベクトル処理装置では、マスク演算命令の先行命令としてマスクデータ生成命令を実行する場合、またはマスク演算命令の後続命令としてマスク付きベクトル命令を実行する場合、異なるビット（要素番号）の処理を行うことができるため、１クロックサイクルに１ビット処理を並列して行う（２命令を実行する）ことができる。しかしながら、マスク演算命令の先行命令としてマスクデータ生成命令を実行しない場合や、マスク演算命令の後続命令としてマスク付きベクトル命令を実行しない場合、並列処理が行われない。すなわち、当該ベクトル処理装置は、上記の場合（先行命令または後続命令が存在しない）には、マスクレジスタ１０７の要素数分の処理時間（クロックサイクル）を要する。
【００１７】
図１に示す構成のベクトル処理装置では、マスク演算命令の先行命令としてマスクデータ生成命令を実行しない場合や、マスク演算命令の後続命令としてマスク付きベクトル命令を実行しない場合であっても、マスク演算命令を一括して実行する。すなわち、このような場合であっても、ベクトル処理装置は、マスク演算命令を１クロックサイクルで終了する。しかし、当該ベクトル処理装置では、マスク演算命令の先行命令としてマスクデータ生成命令を実行する場合、マスクデータ生成命令に応じて生成されるマスクデータ（の最終データ）がマスクレジスタ１０７に書き込まれるまで、マスク演算命令を実行することが出来ない。
【００１８】
すなわち、上述のベクトル処理装置の構成（図１、図２）では、マスク演算命令の先行命令または後続命令の種別によっては、処理にかかるクロックサイクルが増大してしまうという問題があった。
【００１９】
本発明は、上述した問題を鑑みてなされたものであり、マスク演算命令の先行命令または後続命令の種別に依存せず、処理速度を向上することができるベクトル処理装置、及びベクトル処理装置の制御方法を提供することを主たる目的とする。
【課題を解決するための手段】
【００２０】
本発明にかかるベクトル処理装置の一態様は、
命令を保持する命令保持手段と、
前記命令保持手段から命令を読み出して発行するとともに、マスクデータの生成を指示するマスクデータ生成命令を実行しているか否かを示すフラグ情報を保持するベクトル命令発行手段と、
複数のマスクデータを保持するマスクレジスタと、
前記マスクレジスタから１ビット毎に読み出されたマスクデータを用いてマスク演算処理を行う分割マスク演算器と、
前記マスクレジスタから一括して読み出された全マスクデータを用いてマスク演算処理を行う一括マスク演算器と、
前記フラグ情報が前記マスクデータ生成命令の実行を示す値である場合に前記分割マスク演算器からの出力を前記マスクレジスタに書き込むように制御し、前記フラグ情報が前記マスクデータ生成命令の実行を示す値ではない場合に前記一括マスク演算器からの出力を前記マスクレジスタに書き込むように制御するマスクデータ選択手段と、
を備える、ものである。
【００２１】
本発明にかかるベクトル処理装置の制御方法の一態様は、
マスクデータを保持するマスクレジスタと、１ビット単位でのマスク演算処理を行う分割マスク演算器と、前記マスクレジスタのデータサイズのマスク演算処理を行う一括マスク演算器を有するベクトル処理装置の制御方法であって、
マスクデータの生成を指示するマスクデータ生成命令の処理中には、後続するマスク演算命令を、前記マスクレジスタからビット単位でマスクデータを読み出し、読み出したマスクデータを前記分割マスク演算器によって演算して演算結果を前記マスクレジスタに書き込み、
マスクデータの生成を指示するマスクデータ生成命令の処理中ではない場合には、後続するマスク演算命令を、前記マスクレジスタから前記マスクデータを一括して読み出し、読み出したマスクデータを前記一括マスク演算器によって演算して演算結果を前記マスクレジスタに書き込む、ものである。
【発明の効果】
【００２２】
本発明によれば、マスク演算命令の先行命令または後続命令の種別に依存せず、処理速度を向上することができるベクトル処理装置、及びベクトル処理装置の制御方法を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】一般的なベクトル処理装置（マスク演算一括処理）の構成を示すブロック図である。
【図２】一般的なベクトル処理装置（マスク演算分割処理）の構成を示すブロック図である。
【図３】実施の形態１にかかるベクトル処理装置の構成を示すブロック図である。
【図４】実施の形態１にかかるベクトル処理装置と、図１に示すベクトル処理装置の動作の比較を示すタイムチャートである。
【図５】実施の形態１にかかるベクトル処理装置と、図２に示すベクトル処理装置の動作の比較を示すタイムチャートである。
【図６】実施の形態１にかかるベクトル処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【００２４】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるベクトル処理装置の構成、及び動作の説明に先立ち、当該ベクトル処理装置が処理する命令について説明する。なお、後述するマスクレジスタ１０７は、マスクレジスタの更新指示がない限り、常に同じ値を保持する。
【００２５】
マスクデータ生成命令とは、要素が連続するベクトルデータ（たとえばベクトルレジスタ１０３のｎ番目要素とｎ＋１番目要素）をベクトル演算器１０５で比較した結果であるマスクデータを、マスクレジスタ１０７内の要素番号（ｎ番目要素）に対応する箇所に格納する命令である。マスク演算命令とは、１個あるいは複数のマスクレジスタ１０７に格納されているマスクデータを、マスク演算器に入力して演算を行い、演算結果をマスクレジスタ１０７に格納する命令である。マスク付きベクトル命令とは、ベクトルレジスタ１０３に対する書き込みデータにおいて、マスクレジスタ１０７から、ベクトルレジスタ１０３への書き込み位置を示す要素番号と同じ要素番号の位置からマスクデータを読み出し、読み出したマスクデータの値に応じてベクトルレジスタ１０３への書き込みを制御する（書き込みを許可する、または書き込みを禁止する）命令である。
【００２６】
（構成）
図３は、本実施の形態にかかるベクトル処理装置の構成を示すブロック図である。本実施の形態にかかるベクトル処理装置は、命令記憶手段１０１、ベクトル命令発行手段１０２、ベクトルレジスタ１０３−１、１０３−２、ベクトルレジスタ選択手段１０４、ベクトル演算器１０５、演算結果選択手段１０６、マスクレジスタ１０７−１〜３、ｎ＋１ビットマスクレジスタ選択手段（マスクデータ選択手段）１０８、マスク演算器（一括マスク演算器）１０９、１／ｎ選択手段１１０−１〜３、ビットシフタ１１１−１〜３、１ビットマスク演算器（分割マスク演算器）１１３を具備する。
【００２７】
ベクトル命令発行手段１０２は、内部にマスクデータ生成命令実行中フラグ（フラグ情報）１１４を保持する。
【００２８】
命令記憶手段１０１は、命令を記憶する。ベクトル命令発行手段１０２は、命令記憶手段１０１から命令を読み出して、発行する。ベクトル命令発行手段１０２は、発行した命令がマスクデータ生成命令である場合、マスクデータ生成命令実行中フラグ１１４を点灯させる。マスクデータ生成命令実行中フラグ１１４は、ハイレベル（点灯）またはロウレベル（消灯）のいずれか２値を取る情報である。マスクデータ生成命令実行中フラグ１１４は、マスクデータ生成命令の実行終了後に消灯される（ロウレベルに設定される）。ベクトル命令発行手段１０２は、マスクデータ生成命令実行中フラグ１１４の状態（点灯、消灯）をｎ＋１ビットマスクレジスタ選択手段１０８に通知する。
【００２９】
ベクトルレジスタ１０３は、０番目要素からｎ番目要素までベクトルデータを保持可能なレジスタである。
【００３０】
ベクトルレジスタ選択手段１０４は、ベクトル命令発行手段１０２が発行した命令の種別に応じて、ベクトルレジスタ１０３内のベクトルデータをベクトル演算器１０５に出力する。
【００３１】
ベクトル演算器１０５は、ベクトルレジスタ選択手段１０４から供給されたベクトルデータを用いて、演算処理を行う演算器である。演算結果は、演算結果選択手段１０６に供給される。なお、ベクトルレジスタ１０３、ベクトル演算器１０５の動作については、特許文献２も参照されたい。
【００３２】
演算結果選択手段１０６は、ベクトル演算器１０５を含む１個あるいは複数の演算器から出力される演算結果のベクトルデータを受信する。演算結果選択手段１０６は、当該ベクトルデータを０要素目からｎ要素目（ｎは０より大きい整数）までｎ＋１クロックサイクルの間、順にベクトルレジスタ１０３−１及び１０３−２にベクトルデータを書き込む。
【００３３】
マスクレジスタ１０７は、０番目要素からｎ番目要素までマスクデータを保持可能なレジスタである。マスクレジスタ１０７内の各要素は、ベクトルレジスタ１０３内の各要素と対応付けられている（たとえば、ベクトルレジスタ１０３の３番目要素として格納されたベクトルデータに対応するマスクデータが、マスクレジスタ１０７内の３番目要素として格納されている）。
【００３４】
ｎ＋１ビットマスクレジスタ選択手段１０８は、生成されたマスクデータをマスクレジスタ１０７に格納する処理部である。ｎ＋１ビットマスクレジスタ選択手段１０８は、後述のマスク演算器１０９、及び１ビットマスク演算器１１３からマスクデータを受信する。ｎ＋１ビットマスクレジスタ選択手段１０８は、ベクトル命令発行手段１０２から通知されたマスクデータ生成命令実行中フラグ１１４が点灯している場合、１ビットマスク演算器１１３から受信したマスクデータをマスクレジスタ１０７に書き込む。ｎ＋１ビットマスクレジスタ選択手段１０８は、ベクトル命令発行手段１０２から通知されたマスクデータ生成命令実行中フラグ１１４が消灯している場合、マスク演算器１０９から受信したマスクデータをマスクレジスタ１０７に書き込む。
【００３５】
マスク演算器１０９は、マスクレジスタ１０７から読み出されたｎ＋１ビットのマスクデータを１クロックサイクルで演算する演算器である。当該演算結果は、ｎ＋１ビットマスクレジスタ選択手段１０８を介して、マスクレジスタ１０７に書き込まれる。
【００３６】
１／ｎ選択手段１１０は、マスクレジスタ１０７から１つの要素に関するマスクデータを取得する処理部である。１／ｎ選択手段１１０−１は、マスクレジスタ１０７−１から取得したマスクデータを演算結果選択手段１０６に供給する。１／ｎ選択手段１１０−２は、マスクレジスタ１０７−２から取得したマスクデータを１ビットマスク演算器１１３に供給する。１／ｎ選択手段１１０−３は、マスクレジスタ１０７−３から取得したマスクデータを１ビットマスク演算器１１３に供給する。
【００３７】
1ビットマスク演算器１１３は、１ビットのマスクデータを１／ｎ選択手段１１０−２及び１１０−３から受信し、当該マスクデータを用いた１ビットマスク演算を行う演算器である。演算結果は、ビットシフタ１１１−３及びｎ＋１ビットマスクレジスタ選択手段１０８を介して、マスクレジスタ１０７の該当要素に書き込まれる。
【００３８】
続いて、命令記憶手段１０１が記憶する命令がマスク付きベクトル命令である場合の各処理部の動作について説明する。この場合、ベクトル命令発行手段１０２は、１／ｎ選択手段１１０に対して、1クロックサイクル毎にマスクレジスタ１０７−１に格納されたマスクデータから読み出す要素番号（これからベクトルレジスタ１０３の書き込み対象となる要素番号）を通知する。１／ｎ選択手段１１０は、対応する要素のマスクデータの値を読み出し、演算結果選択手段１０６に通知する。このマスクデータの値に応じて、ベクトルレジスタ１０３の書き込み対象の要素番号へのベクトルデータの書き込みの可否が決定される。
【００３９】
次に、命令記憶手段１０１が記憶する命令がマスクデータ生成命令である場合について説明する。ベクトル命令発行手段１０２は、マスクデータ生成命令を発行することにより、ベクトルレジスタ１０３からの出力を指示する。ベクトルレジスタ選択手段１０４は、１個あるいは複数のベクトルレジスタ１０３（本例では１０３−１、及び１０３−２）から1クロックサイクル毎に１ビットのベクトルデータを読み出す。ベクトル演算器１０５は、読み出したベクトルデータに応じてマスクデータ生成命令演算を実行する。演算結果は、ビットシフタ１１１及びｎ＋１ビットマスクレジスタ選択手段１０８を介してマスクレジスタ１０７に書き込まれる。マスクレジスタ１０７への書き込みの際、ベクトルレジスタ１０３の要素番号と、書き込み先の要素番号と、が対応するように書き込みが行われる。
【００４０】
続いて、命令記憶手段１０１が記憶する命令がマスク演算命令である場合について説明する。まず、当該マスク演算命令の先行命令としてマスクデータ生成命令が発行されている場合の処理について説明する。マスクデータ生成命令の実行中には、前述のようにマスクデータ生成命令実行中フラグ１１４が点灯する（ハイレベルに設定される）。ベクトル命令発行手段１０２は、マスクデータ生成命令実行中フラグ１１４の点灯をｎ＋１ビットマスクレジスタ選択手段１０８に通知する。これに応じ、マスクレジスタ選択手段１０８は、１ビットマスク演算器１１３からの出力をマスクレジスタ１０７に書き込むように制御する。１／ｎ選択手段１１０−２及び１１０−３は、マスクレジスタ１０７−２、１０７−３からそれぞれマスクデータを１ビットずつ１クロックサイクル毎に読み出して１ビットマスク演算器１１３に供給する。１ビットマスク演算器１１３は、供給されたマスクデータを用いてマスク演算を行う。すなわち、１ビットマスク演算器１１３は、最大ｎ＋１クロックサイクルの間、マスク演算を行う。演算結果は、ビットシフタ１１１−３、及びｎ＋１ビットマスクレジスタ選択手段１０８を介して、マスクレジスタ１０７に書き込まれる。ベクトル命令発行手段１０２は、先行命令の発行後、１クロックサイクル後に後続命令を読み出して発行する。なお、ベクトル命令発行手段１０２は、先行命令の発行後、複数クロックサイクル後に後続命令を発行することも可能であるが、後述の図４に示すように、１クロックサイクル後に後続命令を発行する場合が最も処理時間を短くすることができる。
【００４１】
次に、命令記憶手段１０１が記憶する命令がマスク演算命令であり、当該マスク演算命令の先行命令としてマスクデータ生成命令が発行されていない、または先行命令であるマスクデータ生成命令の処理が終了している場合について説明する。マスクデータ生成命令が実行されていないため、マスク演算命令の実行時には、マスクデータ生成命令実行中フラグ１１４が消灯している（ロウレベルに設定される）。ベクトル命令発行手段１０２は、マスクデータ生成命令実行中フラグ１１４の消灯をｎ＋１ビットマスクレジスタ選択手段１０８に通知する。これに応じ、マスクレジスタ選択手段１０８は、マスク演算器１０９からの出力をマスクレジスタ１０７に書き込むように制御する。マスク演算器１０９は、マスクレジスタ１０７に格納されているｎ＋１ビットのマスクデータを読み出す。マスク演算器１０９は、このｎ＋１ビットのマスクデータを用いて、１クロックサイクルでマスク演算を行う。演算結果は、ｎ＋１ビットマスクレジスタ選択手段１０８を介して、マスクレジスタ１０７に書き込まれる。この場合にも、ベクトル命令発行手段１０２は、先行命令の発行後、１クロックサイクル後に後続命令を命令保持部１０２から読み出して発行する。
【００４２】
（動作）
続いて、図４及び図５を参照して、本実施の形態にかかるベクトル処理装置の動作について説明する。図４は、本実施の形態にかかるベクトル処理装置と図１に示すベクトル処理装置（マスク演算の一括処理を行う構成）の動作を比較するタイムチャートである。以下の例では、両ベクトル処理装置の命令記憶手段１０１には、マスクデータ生成命令、マスク演算命令、マスク付きベクトル命令が格納されている。
【００４３】
両ベクトル処理装置内のベクトル命令発行手段１０２は、同時に（タイミングｔ１）にマスクデータ生成命令を発行する。これに応じて、両ベクトル処理装置は、マスクデータの生成処理を実行する。
【００４４】
ここで、本実施の形態にかかるベクトル処理装置は、マスクデータ生成命令の発行タイミング（タイミングｔ１）にマスクデータ生成命令実行中フラグ１１４を点灯させる（ハイレベルに設定する）。点灯させる期間は、マスクデータ生成命令の処理が終了するまで（マスクデータがマスクレジスタ１０７に書き込み終わるまで）である。
【００４５】
図１に示すベクトル処理装置では、マスクデータ生成命令の処理により全てのマスクデータがマスクレジスタ１０７に書き込まれた後に、ベクトル命令発行手段１０２からマスク演算命令が発行される（タイミングｔ９）。マスク演算は、１クロックサイクルで一括処理され、演算結果がマスクレジスタ１０７に書き込まれる（タイミングｔ１０）。書き込み終了と同時（タイミングｔ１０）に、ベクトル命令発行手段１０２は、ベクトル命令（マスク付きベクトル命令）を発行する。
【００４６】
一方、本実施の形態にかかるベクトル処理装置では、マスクデータ生成命令実行中フラグ１１４が点灯しているため、マスク演算処理が１ビット単位に分割されて行われる（１ビットマスク演算器１１３が処理を行う）。これにより、マスクデータ生成命令の発行直後にマスク演算命令を発行することができる（タイミングｔ２）。
【００４７】
マスク演算命令の演算結果は、タイミングｔ３から１ビット毎にマスクレジスタ１０７に書き込まれる。前述のように、マスク付きベクトル命令は、１ビット単位での処理が行われる。そのため、このマスクレジスタ１０７の値を用いるマスク付きベクトル命令もマスク演算命令の発行直後に発行することができる（タイミングｔ３）。図示するように、１ビット毎のマスク演算処理とマスク付きベクトル命令の処理が並行して行われる。
【００４８】
この結果、図１に示すベクトル処理装置では、タイミングｔ１９に処理が終了するのに対し、本実施の形態にかかるベクトル処理装置は、タイミングｔ１２に処理を終了することができる。すなわち、処理の高速化を図ることができる。
【００４９】
次に、本実施の形態にかかるベクトル処理装置と図２に示すベクトル処理装置（マスク演算の分割処理を行う構成）についての比較を行う。図５は、本実施の形態にかかるベクトル処理装置と図２に示すベクトル処理装置（マスク演算の分割処理を行う構成）の動作を比較するタイムチャートである。以下の例では、両ベクトル処理装置の命令記憶手段１０１には、マスク演算命令が格納されている。両ベクトル処理装置は、命令記憶手段１０１内にマスクデータ生成命令を格納していないものとする。または、両ベクトル処理装置は、マスクデータ生成命令の処理が既に終了しているものとする。同様に、両ベクトル処理装置は、命令記憶手段１０１内にマスク付きベクトル命令を格納していないものとする。または、両ベクトル処理装置は、マスク付きベクトル命令の処理が既に終了しているものとする。
【００５０】
図２に示すベクトル処理装置では、マスク演算命令がタイミングｔ１に発行される。これに応じて、１ビット毎にマスク演算の処理が実行され、マスク演算の結果が１ビット毎に書き込まれる。このため、マスク演算の結果が全て算出されるまでに、マスクレジスタ１０７の要素数と同一数のクロックサイクルが必要となる（タイミングｔ１１に処理を終了する）。
【００５１】
本実施の形態にかかるベクトル処理装置でも、マスク演算命令がタイミングｔ１に発行される。ここで、本実施の形態にかかるベクトル処理装置において、マスクデータ生成命令実行中フラグ１１４が消灯している。そのため、本実施の形態にかかるベクトル処理装置では、ｎ＋１ビットのマスクデータを一括して１クロックサイクルで処理する。すなわち、マスク演算器１０９を用いた処理を実行する。これにより、本実施の形態にかかるベクトル処理装置は、図２に示すベクトル処理装置と比べてマスクレジスタ１０７に高速にマスク演算の結果を書き込むことができる。
【００５２】
（効果）
以上、本実施の形態にかかるベクトル処理装置は、マスクデータ生成命令実行中フラグ１１４の状態（点灯、消灯）に応じて、後続の命令の実行を制御している。詳細には、本実施の形態にかかるベクトル処理装置は、マスクデータ生成命令実行中フラグ１１４の状態（点灯、消灯）に応じて、使用する演算器（マスク演算器１０９、１ビットマスク演算器１１３）を切り替えている。これにより、本実施の形態にかかるベクトル処理装置は、先行するマスクデータ生成命令の実行の如何に関わらず、後続のマスク演算命令を速やかに処理することができる。
【００５３】
（本発明の説明）
以下、図６を参照して、本発明の本質的な構成、及び動作について改めて説明する。図６は、本発明にかかるベクトル処理装置の本質的な処理を行う処理部を示すブロック図である。なお、当該ベクトル処理装置は、図示しないもののベクトルレジスタ、ベクトル演算器等といったベクトル処理装置が備えるべき各種処理部を適宜備えることは勿論である。
【００５４】
命令記憶手段１０１は、実行されるべき命令を保持する。ベクトル命令発行手段１０２は、命令記憶手段１０１から命令を読み出して発行する。ベクトル命令発行手段１０２は、マスクデータ生成命令を実行しているか否かを示すフラグ情報であるマスクデータ生成命令実行中フラグ１１４を保持する。マスクレジスタ１０７は、０番目要素からｎ番目要素までマスクデータを保持する。１／ｎ選択手段１１０は、マスクレジスタ１０７からある要素のマスクデータを読み出して１ビットマスク演算器１１３に供給する。
【００５５】
１ビットマスク演算器１１３は、供給された１ビットマスクデータを用いたマスク演算を行い、演算結果をｎ＋１ビットマスクレジスタ選択手段１０８に供給する。マスク演算器１０９は、マスクレジスタ１０７から全てのマスクデータ（ｎ＋１ビットのマスクデータ）を読み出し、読み出したマスクデータを１クロックサイクルでマスク演算する。マスク演算器１０９は、演算結果をｎ＋１ビットマスクレジスタ選択手段１０８に供給する。
【００５６】
ｎ＋１ビットマスクレジスタ選択手段１０８は、ベクトル命令発行手段１０２からマスクデータ生成命令実行中フラグ１１４の値を受け付ける。ｎ＋１ビットマスクレジスタ選択手段１０８は、マスクデータ生成命令実行中フラグ１１４が点灯している場合に１ビットマスク演算器１１３から供給されたマスクデータをマスクレジスタ１０７に書き込む。ｎ＋１ビットマスクレジスタ選択手段１０８は、マスクデータ生成命令実行中フラグ１１４が消灯している場合にマスク演算器１０９から供給されたマスクデータをマスクレジスタ１０７に書き込む。
【００５７】
上述の図６に示す構成であっても、マスクレジスタ１０７への書き込みの際に、先行命令としてマスクデータ生成命令が実行されているか否かに応じて、適切なマスク演算器を用いた処理を行うことができる。先行命令の種別に応じて適切な演算器を用いた処理を行うことにより、先行して実行している命令の種別に影響を受けることなく、処理速度を高速化することができる。
【００５８】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【００５９】
１０１  命令記憶手段
１０２  ベクトル命令発行手段
１０３  ベクトルレジスタ
１０４  ベクトルレジスタ選択手段
１０５  ベクトル演算器
１０６  演算結果選択手段
１０７  マスクレジスタ
１０８  ｎ＋１ビットマスクレジスタ選択手段
１０９  マスク演算器
１１０  １／ｎ選択手段
１１１  ビットシフタ
１１２  １ビットマスクレジスタ選択手段
１１３  １ビットマスク演算器
１１４  マスクデータ生成命令実行中フラグ
【図１】
0005881163.tif 000002
【図２】
0005881163.tif 000003
【図３】
0005881163.tif 000004
【図４】
0005881163.tif 000005
【図５】
0005881163.tif 000006
【図６】
0005881163.tif 000007