(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5881163
(24)【登録日】2016年2月12日
(45)【発行日】2016年3月9日
(54)【発明の名称】ベクトル処理装置、ベクトル演算処理装置の制御方法
(51)【国際特許分類】
G06F 17/16 20060101AFI20160225BHJP
【FI】
G06F17/16 E
【請求項の数】6
【全頁数】14
(21)【出願番号】特願2012-79361(P2012-79361)
(22)【出願日】2012年3月30日
(65)【公開番号】特開2013-210738(P2013-210738A)
(43)【公開日】2013年10月10日
【審査請求日】2015年2月12日
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】三井 徹
【審査官】
田中 幸雄
(56)【参考文献】
【文献】
特開平09−091272(JP,A)
【文献】
特開平04−116770(JP,A)
【文献】
特開昭60−059469(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
命令を保持する命令保持手段と、
前記命令保持手段から命令を読み出して発行するとともに、マスクデータの生成を指示するマスクデータ生成命令を実行しているか否かを示すフラグ情報を保持するベクトル命令発行手段と、
複数のマスクデータを保持するマスクレジスタと、
前記マスクレジスタから1ビット毎に読み出されたマスクデータを用いてマスク演算処理を行う分割マスク演算器と、
前記マスクレジスタから一括して読み出された全マスクデータを用いてマスク演算処理を行う一括マスク演算器と、
前記フラグ情報が前記マスクデータ生成命令の実行を示す値である場合に前記分割マスク演算器からの出力を前記マスクレジスタに書き込むように制御し、前記フラグ情報が前記マスクデータ生成命令の実行を示す値ではない場合に前記一括マスク演算器からの出力を前記マスクレジスタに書き込むように制御するマスクデータ選択手段と、
を備えるベクトル処理装置。
【請求項2】
前記ベクトル命令発行手段は、
1クロックサイクル毎に前記命令保持手段から命令を読み出して発行することを特徴とする請求項1に記載のベクトル処理装置。
【請求項3】
前記マスクレジスタに格納された各マスクデータと対応するベクトルデータを保持するベクトルレジスタと、
前記ベクトル命令発行手段が発行した命令に応じて、前記ベクトルレジスタからベクトルデータを読み出すベクトルレジスタ選択手段と、
前記ベクトルレジスタ選択手段が読み出したベクトルデータを用いてベクトル演算を行うベクトル演算器と、
をさらに備えていることを特徴とする請求項1または請求項2に記載のベクトル処理装置。
【請求項4】
前記命令の種別として、前記マスクデータ生成命令、マスク演算命令、マスク付きベクトル命令を含むことを特徴とする請求項1乃至請求項3のいずれか1項に記載のベクトル処理装置。
【請求項5】
前記マスクレジスタの各要素に保持されたマスクデータと、前記ベクトルレジスタの各要素に保持されたベクトルデータと、が要素番号によって対応付けられていることを特徴とする請求項3に記載のベクトル処理装置。
【請求項6】
マスクデータを保持するマスクレジスタと、
1ビット単位でのマスク演算処理を行う分割マスク演算器と、
前記マスクレジスタのデータサイズのマスク演算処理を行う一括マスク演算器と、
を有するベクトル処理装置の制御方法であって、
マスクデータの生成を指示するマスクデータ生成命令の処理中には、後続するマスク演算命令を、前記マスクレジスタからビット単位でマスクデータを読み出し、読み出したマスクデータを前記分割マスク演算器によって演算して演算結果を前記マスクレジスタに書き込み、
マスクデータの生成を指示するマスクデータ生成命令の処理中ではない場合には、後続するマスク演算命令を、前記マスクレジスタから前記マスクデータを一括して読み出し、読み出したマスクデータを前記一括マスク演算器によって演算して演算結果を前記マスクレジスタに書き込む、
ベクトル処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はベクトル処理装置及びベクトル演算処理装置の制御方法に関し、特にマスクデータを生成する命令を扱うベクトル処理装置及びベクトル演算処理装置の制御方法に関する。
【背景技術】
【0002】
はじめに、本発明に関連する一般的なベクトル処理装置の構成及び動作について説明する。ベクトル処理装置は、大別するとマスク演算命令の処理において、マスク演算を一括して処理する(マスク演算一括処理)装置と、マスク演算を分割して処理する(マスク演算分割処理)装置と、がある。マスク演算一括処理とは、マスクレジスタに格納されている全マスクデータを一括して演算する方法である。一方、マスク演算分割処理とは、要素毎にマスクデータを保持するマスクレジスタから、マスクデータをクロックサイクル毎に一つずつ読み出して、マイクロレジスタのデータ長(要素長)と同じクロックサイクルの間、演算処理を行う方法である。
【0003】
図1は、マスク演算一括処理を行う一般的なベクトル処理装置の構成を示すブロック図である。図示するように、ベクトル処理装置は、命令記憶手段101、ベクトル命令発行手段102、ベクトルレジスタ103−1、103−2、ベクトルレジスタ選択手段104、ベクトル演算器105、演算結果選択手段106、マスクレジスタ107−1〜3、n+1ビットマスクレジスタ選択手段108、マスク演算器109、1/n選択手段110、及びビットシフタ111を具備する。
【0004】
演算結果選択手段106は、ベクトル演算器105を含む1個あるいは複数の演算器から出力される演算結果ベクトルデータを受信する。演算結果選択手段106は、当該ベクトルデータを0要素目からn要素目(nは0より大きい整数)までn+1クロックサイクルの間、順にベクトルレジスタ103−1及び103−2に書き込む。
【0005】
命令記憶手段101は、命令を記憶する。ベクトル命令発行手段102は、命令記憶手段101から命令を順次読み出して、発行する。当該命令には、マスク付きベクトル命令、マスクデータ生成命令、マスク演算命令を含む。以下、命令記憶手段101が記憶する命令がマスク付きベクトル命令である場合についての動作を説明する。この場合、ベクトル命令発行手段102は、1/n選択手段110に対して、マスクレジスタ107−1に格納されたマスクデータをマスクレジスタ107の0番目要素から1クロックサイクル毎に一つ読み出すように指示する。1/n選択手段110は、対応する要素のマスクデータの値を読み出し、演算結果選択手段106に通知する。このマスクデータの値に応じて、ベクトルレジスタ103におけるデータ書き込みの可否を通知する。ベクトルレジスタ103には、書き込みが可能である場合にベクトルデータが書き込まれる。
【0006】
続いて、命令記憶手段101が記憶する命令がマスクデータ生成命令である場合について説明する。マスクデータ生成命令とは、要素が連続するベクトルデータをベクトル演算器105で比較した結果として出力されるマスクデータを、ベクトルデータの要素番号に対応するマスクレジスタ107の要素番号位置に格納する命令である。ベクトル命令発行手段102は、マスクデータ生成命令を発行することにより、ベクトルレジスタ103の出力を指示する。ベクトルレジスタ選択手段104は、1個あるいは複数のベクトルレジスタ103(本例では103−1、及び103−2)からベクトルデータを読み出す。ベクトル演算器105は、読み出したベクトルデータに応じてマスク生成命令演算を実行する。演算結果は、ビットシフタ111及びn+1ビットマスクレジスタ選択手段108を介してマスクレジスタ107に書き込まれる。
【0007】
次に、命令記憶手段101が記憶する命令がマスク演算命令である場合について説明する。ベクトル命令発行手段102は、マスク演算命令を発行する。マスク演算命令に応じて、1個または複数のマスクレジスタ107に格納されているマスクデータが一括して読み出される(n+1ビットのマスクデータが一括して読み出される)。マスク演算器109は、このn+1ビットのマスクデータを1クロックサイクルで演算する。演算結果は、マスク演算命令内に含まれる要素情報に応じて、n+1ビットマスクレジスタ選択手段108を介してマスクレジスタ107に書き込まれる。
【0008】
続いて、マスク演算分割処理について説明する。
図2は、マスク演算分割処理を行う一般的なベクトル処理装置の構成を示すブロック図である。図示するように、ベクトル処理装置は、命令記憶手段101、ベクトル命令発行手段102、ベクトルレジスタ103−1〜3、ベクトルレジスタ選択手段104、ベクトル演算器105、演算結果選択手段106、マスクレジスタ107−1〜3、ビットシフタ111−1〜3、1ビットマスクレジスタ選択手段112、及び1ビットマスク演算器113を具備する。
【0009】
図2の構成において、マスク付きベクトル命令及びマスクデータ生成命令の処理は、
図1の構成と同様である。以下、
図2の構成における、マスク演算命令の処理について説明する。ベクトル命令発行手段102は、マスク演算命令を発行する。マスク演算命令に応じて、1ビットマスクレジスタ選択手段112は、1個または複数のマスクレジスタ107に格納されているマスクデータを1ビット単位で読み出し、1/n選択手段110を通して1ビットマスク演算器113に供給する。そして、1ビットマスク演算器113は、最大n+1クロックサイクルの間、1ビットのマスクデータに関するマスク演算を行う。演算結果は、1ビットマスクレジスタ選択手段112及びビットシフタ111を介して、マスクレジスタ107に要素毎に書き込まれる。
【0010】
特許文献1には、マスク反転命令の実行時間を短縮することにより、マスク反転命令の次のマスクを使用する命令の待ち時間を短縮するベクトル処理装置を開示している。当該ベクトル処理装置は、マスクレジスタ自体を複数用意することにより処理の高速化を図っている。なお、特許文献1は、マスクデータの処理レートには言及していない。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特許第4502983号公報
【特許文献2】特開2010−204913号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述のように、マスクデータは、マスクデータ生成命令に従って生成される。マスクデータの生成処理は、ベクトルデータがベクトル演算器105に入力されてから、ベクトルデータのワード数分だけ演算が行われる。そして、マスクデータは、マスクレジスタ107内のベクトルデータと対応する要素に格納される。
【0013】
ベクトル命令発行手段102からマスク付きベクトル命令が発行された場合、ベクトル演算器105から出力された演算結果の有効性の判定は、マスクレジスタ107に格納されたマスクデータを用いて行われる。すなわち、1/n選択手段110は、ベクトル演算器105が処理対象としたベクトルデータと対応するマスクデータをマスクレジスタ107から取得する。この取得したマスクデータの有効性に応じて、ベクトルレジスタ103への書き込み時に、マスクデータが無効な場合の書き込みを抑止する。
【0014】
上述の、マスクデータ生成命令及びマスク付きベクトル命令の処理は、マスクレジスタ107の観点(に対する処理)としては、1クロックサイクルに1ビットを生成または読み出す逐次処理である。すなわち、1クロックサイクル毎に1ビット(1つ(1ビット)のマスクデータ)が処理される。
【0015】
一方、前述したように、マスク演算命令の処理において、マスク演算一括処理とマスク演算分割処理の2種類の処理がある。マスク演算一括処理とは、マスクレジスタに格納されている全データを一括して演算する方法である。一方、マスク演算分割処理とは、マスクレジスタ107の値を毎クロックサイクル読み出して、マイクロレジスタのデータ長と同じクロックサイクルの間、演算処理を行う方法である。
【0016】
図2に示す構成のベクトル処理装置では、マスク演算命令の先行命令としてマスクデータ生成命令を実行する場合、またはマスク演算命令の後続命令としてマスク付きベクトル命令を実行する場合、異なるビット(要素番号)の処理を行うことができるため、1クロックサイクルに1ビット処理を並列して行う(2命令を実行する)ことができる。しかしながら、マスク演算命令の先行命令としてマスクデータ生成命令を実行しない場合や、マスク演算命令の後続命令としてマスク付きベクトル命令を実行しない場合、並列処理が行われない。すなわち、当該ベクトル処理装置は、上記の場合(先行命令または後続命令が存在しない)には、マスクレジスタ107の要素数分の処理時間(クロックサイクル)を要する。
【0017】
図1に示す構成のベクトル処理装置では、マスク演算命令の先行命令としてマスクデータ生成命令を実行しない場合や、マスク演算命令の後続命令としてマスク付きベクトル命令を実行しない場合であっても、マスク演算命令を一括して実行する。すなわち、このような場合であっても、ベクトル処理装置は、マスク演算命令を1クロックサイクルで終了する。しかし、当該ベクトル処理装置では、マスク演算命令の先行命令としてマスクデータ生成命令を実行する場合、マスクデータ生成命令に応じて生成されるマスクデータ(の最終データ)がマスクレジスタ107に書き込まれるまで、マスク演算命令を実行することが出来ない。
【0018】
すなわち、上述のベクトル処理装置の構成(
図1、
図2)では、マスク演算命令の先行命令または後続命令の種別によっては、処理にかかるクロックサイクルが増大してしまうという問題があった。
【0019】
本発明は、上述した問題を鑑みてなされたものであり、マスク演算命令の先行命令または後続命令の種別に依存せず、処理速度を向上することができるベクトル処理装置、及びベクトル処理装置の制御方法を提供することを主たる目的とする。
【課題を解決するための手段】
【0020】
本発明にかかるベクトル処理装置の一態様は、
命令を保持する命令保持手段と、
前記命令保持手段から命令を読み出して発行するとともに、マスクデータの生成を指示するマスクデータ生成命令を実行しているか否かを示すフラグ情報を保持するベクトル命令発行手段と、
複数のマスクデータを保持するマスクレジスタと、
前記マスクレジスタから1ビット毎に読み出されたマスクデータを用いてマスク演算処理を行う分割マスク演算器と、
前記マスクレジスタから一括して読み出された全マスクデータを用いてマスク演算処理を行う一括マスク演算器と、
前記フラグ情報が前記マスクデータ生成命令の実行を示す値である場合に前記分割マスク演算器からの出力を前記マスクレジスタに書き込むように制御し、前記フラグ情報が前記マスクデータ生成命令の実行を示す値ではない場合に前記一括マスク演算器からの出力を前記マスクレジスタに書き込むように制御するマスクデータ選択手段と、
を備える、ものである。
【0021】
本発明にかかるベクトル処理装置の制御方法の一態様は、
マスクデータを保持するマスクレジスタと、1ビット単位でのマスク演算処理を行う分割マスク演算器と、前記マスクレジスタのデータサイズのマスク演算処理を行う一括マスク演算器を有するベクトル処理装置の制御方法であって、
マスクデータの生成を指示するマスクデータ生成命令の処理中には、後続するマスク演算命令を、前記マスクレジスタからビット単位でマスクデータを読み出し、読み出したマスクデータを前記分割マスク演算器によって演算して演算結果を前記マスクレジスタに書き込み、
マスクデータの生成を指示するマスクデータ生成命令の処理中ではない場合には、後続するマスク演算命令を、前記マスクレジスタから前記マスクデータを一括して読み出し、読み出したマスクデータを前記一括マスク演算器によって演算して演算結果を前記マスクレジスタに書き込む、ものである。
【発明の効果】
【0022】
本発明によれば、マスク演算命令の先行命令または後続命令の種別に依存せず、処理速度を向上することができるベクトル処理装置、及びベクトル処理装置の制御方法を提供することができる。
【図面の簡単な説明】
【0023】
【
図1】一般的なベクトル処理装置(マスク演算一括処理)の構成を示すブロック図である。
【
図2】一般的なベクトル処理装置(マスク演算分割処理)の構成を示すブロック図である。
【
図3】実施の形態1にかかるベクトル処理装置の構成を示すブロック図である。
【
図4】実施の形態1にかかるベクトル処理装置と、
図1に示すベクトル処理装置の動作の比較を示すタイムチャートである。
【
図5】実施の形態1にかかるベクトル処理装置と、
図2に示すベクトル処理装置の動作の比較を示すタイムチャートである。
【
図6】実施の形態1にかかるベクトル処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【0024】
<実施の形態1>
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるベクトル処理装置の構成、及び動作の説明に先立ち、当該ベクトル処理装置が処理する命令について説明する。なお、後述するマスクレジスタ107は、マスクレジスタの更新指示がない限り、常に同じ値を保持する。
【0025】
マスクデータ生成命令とは、要素が連続するベクトルデータ(たとえばベクトルレジスタ103のn番目要素とn+1番目要素)をベクトル演算器105で比較した結果であるマスクデータを、マスクレジスタ107内の要素番号(n番目要素)に対応する箇所に格納する命令である。マスク演算命令とは、1個あるいは複数のマスクレジスタ107に格納されているマスクデータを、マスク演算器に入力して演算を行い、演算結果をマスクレジスタ107に格納する命令である。マスク付きベクトル命令とは、ベクトルレジスタ103に対する書き込みデータにおいて、マスクレジスタ107から、ベクトルレジスタ103への書き込み位置を示す要素番号と同じ要素番号の位置からマスクデータを読み出し、読み出したマスクデータの値に応じてベクトルレジスタ103への書き込みを制御する(書き込みを許可する、または書き込みを禁止する)命令である。
【0026】
(構成)
図3は、本実施の形態にかかるベクトル処理装置の構成を示すブロック図である。本実施の形態にかかるベクトル処理装置は、命令記憶手段101、ベクトル命令発行手段102、ベクトルレジスタ103−1、103−2、ベクトルレジスタ選択手段104、ベクトル演算器105、演算結果選択手段106、マスクレジスタ107−1〜3、n+1ビットマスクレジスタ選択手段(マスクデータ選択手段)108、マスク演算器(一括マスク演算器)109、1/n選択手段110−1〜3、ビットシフタ111−1〜3、1ビットマスク演算器(分割マスク演算器)113を具備する。
【0027】
ベクトル命令発行手段102は、内部にマスクデータ生成命令実行中フラグ(フラグ情報)114を保持する。
【0028】
命令記憶手段101は、命令を記憶する。ベクトル命令発行手段102は、命令記憶手段101から命令を読み出して、発行する。ベクトル命令発行手段102は、発行した命令がマスクデータ生成命令である場合、マスクデータ生成命令実行中フラグ114を点灯させる。マスクデータ生成命令実行中フラグ114は、ハイレベル(点灯)またはロウレベル(消灯)のいずれか2値を取る情報である。マスクデータ生成命令実行中フラグ114は、マスクデータ生成命令の実行終了後に消灯される(ロウレベルに設定される)。ベクトル命令発行手段102は、マスクデータ生成命令実行中フラグ114の状態(点灯、消灯)をn+1ビットマスクレジスタ選択手段108に通知する。
【0029】
ベクトルレジスタ103は、0番目要素からn番目要素までベクトルデータを保持可能なレジスタである。
【0030】
ベクトルレジスタ選択手段104は、ベクトル命令発行手段102が発行した命令の種別に応じて、ベクトルレジスタ103内のベクトルデータをベクトル演算器105に出力する。
【0031】
ベクトル演算器105は、ベクトルレジスタ選択手段104から供給されたベクトルデータを用いて、演算処理を行う演算器である。演算結果は、演算結果選択手段106に供給される。なお、ベクトルレジスタ103、ベクトル演算器105の動作については、特許文献2も参照されたい。
【0032】
演算結果選択手段106は、ベクトル演算器105を含む1個あるいは複数の演算器から出力される演算結果のベクトルデータを受信する。演算結果選択手段106は、当該ベクトルデータを0要素目からn要素目(nは0より大きい整数)までn+1クロックサイクルの間、順にベクトルレジスタ103−1及び103−2にベクトルデータを書き込む。
【0033】
マスクレジスタ107は、0番目要素からn番目要素までマスクデータを保持可能なレジスタである。マスクレジスタ107内の各要素は、ベクトルレジスタ103内の各要素と対応付けられている(たとえば、ベクトルレジスタ103の3番目要素として格納されたベクトルデータに対応するマスクデータが、マスクレジスタ107内の3番目要素として格納されている)。
【0034】
n+1ビットマスクレジスタ選択手段108は、生成されたマスクデータをマスクレジスタ107に格納する処理部である。n+1ビットマスクレジスタ選択手段108は、後述のマスク演算器109、及び1ビットマスク演算器113からマスクデータを受信する。n+1ビットマスクレジスタ選択手段108は、ベクトル命令発行手段102から通知されたマスクデータ生成命令実行中フラグ114が点灯している場合、1ビットマスク演算器113から受信したマスクデータをマスクレジスタ107に書き込む。n+1ビットマスクレジスタ選択手段108は、ベクトル命令発行手段102から通知されたマスクデータ生成命令実行中フラグ114が消灯している場合、マスク演算器109から受信したマスクデータをマスクレジスタ107に書き込む。
【0035】
マスク演算器109は、マスクレジスタ107から読み出されたn+1ビットのマスクデータを1クロックサイクルで演算する演算器である。当該演算結果は、n+1ビットマスクレジスタ選択手段108を介して、マスクレジスタ107に書き込まれる。
【0036】
1/n選択手段110は、マスクレジスタ107から1つの要素に関するマスクデータを取得する処理部である。1/n選択手段110−1は、マスクレジスタ107−1から取得したマスクデータを演算結果選択手段106に供給する。1/n選択手段110−2は、マスクレジスタ107−2から取得したマスクデータを1ビットマスク演算器113に供給する。1/n選択手段110−3は、マスクレジスタ107−3から取得したマスクデータを1ビットマスク演算器113に供給する。
【0037】
1ビットマスク演算器113は、1ビットのマスクデータを1/n選択手段110−2及び110−3から受信し、当該マスクデータを用いた1ビットマスク演算を行う演算器である。演算結果は、ビットシフタ111−3及びn+1ビットマスクレジスタ選択手段108を介して、マスクレジスタ107の該当要素に書き込まれる。
【0038】
続いて、命令記憶手段101が記憶する命令がマスク付きベクトル命令である場合の各処理部の動作について説明する。この場合、ベクトル命令発行手段102は、1/n選択手段110に対して、1クロックサイクル毎にマスクレジスタ107−1に格納されたマスクデータから読み出す要素番号(これからベクトルレジスタ103の書き込み対象となる要素番号)を通知する。1/n選択手段110は、対応する要素のマスクデータの値を読み出し、演算結果選択手段106に通知する。このマスクデータの値に応じて、ベクトルレジスタ103の書き込み対象の要素番号へのベクトルデータの書き込みの可否が決定される。
【0039】
次に、命令記憶手段101が記憶する命令がマスクデータ生成命令である場合について説明する。ベクトル命令発行手段102は、マスクデータ生成命令を発行することにより、ベクトルレジスタ103からの出力を指示する。ベクトルレジスタ選択手段104は、1個あるいは複数のベクトルレジスタ103(本例では103−1、及び103−2)から1クロックサイクル毎に1ビットのベクトルデータを読み出す。ベクトル演算器105は、読み出したベクトルデータに応じてマスクデータ生成命令演算を実行する。演算結果は、ビットシフタ111及びn+1ビットマスクレジスタ選択手段108を介してマスクレジスタ107に書き込まれる。マスクレジスタ107への書き込みの際、ベクトルレジスタ103の要素番号と、書き込み先の要素番号と、が対応するように書き込みが行われる。
【0040】
続いて、命令記憶手段101が記憶する命令がマスク演算命令である場合について説明する。まず、当該マスク演算命令の先行命令としてマスクデータ生成命令が発行されている場合の処理について説明する。マスクデータ生成命令の実行中には、前述のようにマスクデータ生成命令実行中フラグ114が点灯する(ハイレベルに設定される)。ベクトル命令発行手段102は、マスクデータ生成命令実行中フラグ114の点灯をn+1ビットマスクレジスタ選択手段108に通知する。これに応じ、マスクレジスタ選択手段108は、1ビットマスク演算器113からの出力をマスクレジスタ107に書き込むように制御する。1/n選択手段110−2及び110−3は、マスクレジスタ107−2、107−3からそれぞれマスクデータを1ビットずつ1クロックサイクル毎に読み出して1ビットマスク演算器113に供給する。1ビットマスク演算器113は、供給されたマスクデータを用いてマスク演算を行う。すなわち、1ビットマスク演算器113は、最大n+1クロックサイクルの間、マスク演算を行う。演算結果は、ビットシフタ111−3、及びn+1ビットマスクレジスタ選択手段108を介して、マスクレジスタ107に書き込まれる。ベクトル命令発行手段102は、先行命令の発行後、1クロックサイクル後に後続命令を読み出して発行する。なお、ベクトル命令発行手段102は、先行命令の発行後、複数クロックサイクル後に後続命令を発行することも可能であるが、後述の
図4に示すように、1クロックサイクル後に後続命令を発行する場合が最も処理時間を短くすることができる。
【0041】
次に、命令記憶手段101が記憶する命令がマスク演算命令であり、当該マスク演算命令の先行命令としてマスクデータ生成命令が発行されていない、または先行命令であるマスクデータ生成命令の処理が終了している場合について説明する。マスクデータ生成命令が実行されていないため、マスク演算命令の実行時には、マスクデータ生成命令実行中フラグ114が消灯している(ロウレベルに設定される)。ベクトル命令発行手段102は、マスクデータ生成命令実行中フラグ114の消灯をn+1ビットマスクレジスタ選択手段108に通知する。これに応じ、マスクレジスタ選択手段108は、マスク演算器109からの出力をマスクレジスタ107に書き込むように制御する。マスク演算器109は、マスクレジスタ107に格納されているn+1ビットのマスクデータを読み出す。マスク演算器109は、このn+1ビットのマスクデータを用いて、1クロックサイクルでマスク演算を行う。演算結果は、n+1ビットマスクレジスタ選択手段108を介して、マスクレジスタ107に書き込まれる。この場合にも、ベクトル命令発行手段102は、先行命令の発行後、1クロックサイクル後に後続命令を命令保持部102から読み出して発行する。
【0042】
(動作)
続いて、
図4及び
図5を参照して、本実施の形態にかかるベクトル処理装置の動作について説明する。
図4は、本実施の形態にかかるベクトル処理装置と
図1に示すベクトル処理装置(マスク演算の一括処理を行う構成)の動作を比較するタイムチャートである。以下の例では、両ベクトル処理装置の命令記憶手段101には、マスクデータ生成命令、マスク演算命令、マスク付きベクトル命令が格納されている。
【0043】
両ベクトル処理装置内のベクトル命令発行手段102は、同時に(タイミングt1)にマスクデータ生成命令を発行する。これに応じて、両ベクトル処理装置は、マスクデータの生成処理を実行する。
【0044】
ここで、本実施の形態にかかるベクトル処理装置は、マスクデータ生成命令の発行タイミング(タイミングt1)にマスクデータ生成命令実行中フラグ114を点灯させる(ハイレベルに設定する)。点灯させる期間は、マスクデータ生成命令の処理が終了するまで(マスクデータがマスクレジスタ107に書き込み終わるまで)である。
【0045】
図1に示すベクトル処理装置では、マスクデータ生成命令の処理により全てのマスクデータがマスクレジスタ107に書き込まれた後に、ベクトル命令発行手段102からマスク演算命令が発行される(タイミングt9)。マスク演算は、1クロックサイクルで一括処理され、演算結果がマスクレジスタ107に書き込まれる(タイミングt10)。書き込み終了と同時(タイミングt10)に、ベクトル命令発行手段102は、ベクトル命令(マスク付きベクトル命令)を発行する。
【0046】
一方、本実施の形態にかかるベクトル処理装置では、マスクデータ生成命令実行中フラグ114が点灯しているため、マスク演算処理が1ビット単位に分割されて行われる(1ビットマスク演算器113が処理を行う)。これにより、マスクデータ生成命令の発行直後にマスク演算命令を発行することができる(タイミングt2)。
【0047】
マスク演算命令の演算結果は、タイミングt3から1ビット毎にマスクレジスタ107に書き込まれる。前述のように、マスク付きベクトル命令は、1ビット単位での処理が行われる。そのため、このマスクレジスタ107の値を用いるマスク付きベクトル命令もマスク演算命令の発行直後に発行することができる(タイミングt3)。図示するように、1ビット毎のマスク演算処理とマスク付きベクトル命令の処理が並行して行われる。
【0048】
この結果、
図1に示すベクトル処理装置では、タイミングt19に処理が終了するのに対し、本実施の形態にかかるベクトル処理装置は、タイミングt12に処理を終了することができる。すなわち、処理の高速化を図ることができる。
【0049】
次に、本実施の形態にかかるベクトル処理装置と
図2に示すベクトル処理装置(マスク演算の分割処理を行う構成)についての比較を行う。
図5は、本実施の形態にかかるベクトル処理装置と
図2に示すベクトル処理装置(マスク演算の分割処理を行う構成)の動作を比較するタイムチャートである。以下の例では、両ベクトル処理装置の命令記憶手段101には、マスク演算命令が格納されている。両ベクトル処理装置は、命令記憶手段101内にマスクデータ生成命令を格納していないものとする。または、両ベクトル処理装置は、マスクデータ生成命令の処理が既に終了しているものとする。同様に、両ベクトル処理装置は、命令記憶手段101内にマスク付きベクトル命令を格納していないものとする。または、両ベクトル処理装置は、マスク付きベクトル命令の処理が既に終了しているものとする。
【0050】
図2に示すベクトル処理装置では、マスク演算命令がタイミングt1に発行される。これに応じて、1ビット毎にマスク演算の処理が実行され、マスク演算の結果が1ビット毎に書き込まれる。このため、マスク演算の結果が全て算出されるまでに、マスクレジスタ107の要素数と同一数のクロックサイクルが必要となる(タイミングt11に処理を終了する)。
【0051】
本実施の形態にかかるベクトル処理装置でも、マスク演算命令がタイミングt1に発行される。ここで、本実施の形態にかかるベクトル処理装置において、マスクデータ生成命令実行中フラグ114が消灯している。そのため、本実施の形態にかかるベクトル処理装置では、n+1ビットのマスクデータを一括して1クロックサイクルで処理する。すなわち、マスク演算器109を用いた処理を実行する。これにより、本実施の形態にかかるベクトル処理装置は、
図2に示すベクトル処理装置と比べてマスクレジスタ107に高速にマスク演算の結果を書き込むことができる。
【0052】
(効果)
以上、本実施の形態にかかるベクトル処理装置は、マスクデータ生成命令実行中フラグ114の状態(点灯、消灯)に応じて、後続の命令の実行を制御している。詳細には、本実施の形態にかかるベクトル処理装置は、マスクデータ生成命令実行中フラグ114の状態(点灯、消灯)に応じて、使用する演算器(マスク演算器109、1ビットマスク演算器113)を切り替えている。これにより、本実施の形態にかかるベクトル処理装置は、先行するマスクデータ生成命令の実行の如何に関わらず、後続のマスク演算命令を速やかに処理することができる。
【0053】
(本発明の説明)
以下、
図6を参照して、本発明の本質的な構成、及び動作について改めて説明する。
図6は、本発明にかかるベクトル処理装置の本質的な処理を行う処理部を示すブロック図である。なお、当該ベクトル処理装置は、図示しないもののベクトルレジスタ、ベクトル演算器等といったベクトル処理装置が備えるべき各種処理部を適宜備えることは勿論である。
【0054】
命令記憶手段101は、実行されるべき命令を保持する。ベクトル命令発行手段102は、命令記憶手段101から命令を読み出して発行する。ベクトル命令発行手段102は、マスクデータ生成命令を実行しているか否かを示すフラグ情報であるマスクデータ生成命令実行中フラグ114を保持する。マスクレジスタ107は、0番目要素からn番目要素までマスクデータを保持する。1/n選択手段110は、マスクレジスタ107からある要素のマスクデータを読み出して1ビットマスク演算器113に供給する。
【0055】
1ビットマスク演算器113は、供給された1ビットマスクデータを用いたマスク演算を行い、演算結果をn+1ビットマスクレジスタ選択手段108に供給する。マスク演算器109は、マスクレジスタ107から全てのマスクデータ(n+1ビットのマスクデータ)を読み出し、読み出したマスクデータを1クロックサイクルでマスク演算する。マスク演算器109は、演算結果をn+1ビットマスクレジスタ選択手段108に供給する。
【0056】
n+1ビットマスクレジスタ選択手段108は、ベクトル命令発行手段102からマスクデータ生成命令実行中フラグ114の値を受け付ける。n+1ビットマスクレジスタ選択手段108は、マスクデータ生成命令実行中フラグ114が点灯している場合に1ビットマスク演算器113から供給されたマスクデータをマスクレジスタ107に書き込む。n+1ビットマスクレジスタ選択手段108は、マスクデータ生成命令実行中フラグ114が消灯している場合にマスク演算器109から供給されたマスクデータをマスクレジスタ107に書き込む。
【0057】
上述の
図6に示す構成であっても、マスクレジスタ107への書き込みの際に、先行命令としてマスクデータ生成命令が実行されているか否かに応じて、適切なマスク演算器を用いた処理を行うことができる。先行命令の種別に応じて適切な演算器を用いた処理を行うことにより、先行して実行している命令の種別に影響を受けることなく、処理速度を高速化することができる。
【0058】
以上、本発明を上記実施形態に即して説明したが、上記実施形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【0059】
101 命令記憶手段
102 ベクトル命令発行手段
103 ベクトルレジスタ
104 ベクトルレジスタ選択手段
105 ベクトル演算器
106 演算結果選択手段
107 マスクレジスタ
108 n+1ビットマスクレジスタ選択手段
109 マスク演算器
110 1/n選択手段
111 ビットシフタ
112 1ビットマスクレジスタ選択手段
113 1ビットマスク演算器
114 マスクデータ生成命令実行中フラグ