(57)【要約】【課題】ベクトルマスク処理命令を高速に処理すること。【解決手段】本発明に係るベクトル処理装置１００は、命令の制御を行う命令制御部２と、情報を保持しておく主記憶部３と、複数のベクトルレジスタ４、複数の演算器５、該演算器５とベクトルレジスタ間を接続する複数のクロスバ６、及びベクトルマスク情報を格納しベクトルマスク処理命令を処理するベクトルマスク情報部７を有する複数のベクトルパイプライン処理部１と、ベクトルパイプライン処理部１間を接続して処理を行うベクトルパイプラインクロスバ９とを備え、ベクトルマスク情報の更新命令の際に、ベクトルマスク情報の内の各部分のベクトルマスク情報について、複数のベクトルパイプライン処理部１がそれぞれベクトルマスク処理を先行して実行し、該部分処理結果を格納し、格納された部分処理結果を用いて、ベクトルマスク情報を処理するものである。【選択図】図１
2009086870.tif 000002
【特許請求の範囲】
【請求項１】
命令の制御を行う命令制御部と、情報を保持しておく主記憶部と、複数のベクトルレジスタ、複数の演算器、該演算器と前記ベクトルレジスタ間を接続する複数のクロスバ、及びベクトルマスク情報を格納しベクトルマスク処理命令を処理するベクトルマスク情報部を有する複数のベクトルパイプライン処理部と、前記ベクトルパイプライン処理部間を接続して処理を行うベクトルパイプラインクロスバを備えたベクトル処理装置において、
前記ベクトルマスク情報の更新命令の際に、前記ベクトルマスク情報の内の各部分のベクトルマスク情報について、前記複数のベクトルパイプライン処理部がそれぞれ前記ベクトルマスク処理を先行して実行し、該部分処理結果を格納する手段と、
前記格納された部分処理結果を用いて、前記ベクトルマスク情報を処理する手段
を備えることを特徴とするベクトル処理装置。
【請求項２】
前記ベクトル処理装置は、
前記ベクトルマスク情報の更新命令の際に、前記ベクトルマスク情報の内の各部分のベクトルマスク情報について、前記複数のベクトルパイプライン処理部がそれぞれベクトルマスク処理を先行して実行し、該部分処理結果とベクトル長を格納する手段と、
前記ベクトル長の変化が無い場合に、前記部分処理結果と前記ベクトル長を用いて、前記ベクトルマスク情報を処理する手段
を備えることを特徴する請求項１記載のベクトル処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル処理装置に関し、特にベクトルマスク処理命令を高速に処理するベクトル処理装置に関する。
【背景技術】
【０００２】
図６は、従来のベクトル処理装置の一例を示したブロック図である（例えば特許文献１など）。図６に示すように、ベクトル処理装置２００は、命令の制御を行う命令制御部２０２と、情報を保持しておく主記憶部２０３と、複数のベクトルレジスタ２０４−１〜２０４−４、複数の演算器２０５−１〜２０５−２、演算器とベクトルレジスタ間を接続する複数のクロスバ２０６−１〜２０６−２、及びベクトルマスク情報を格納するベクトルマスク情報部２０７を有する複数のベクトルパイプライン処理部２０１〜２０１ｎと、ベクトルパイプライン処理部間を接続して処理を行うベクトルパイプラインクロスバ２０９を備える。
【０００３】
ベクトルパイプライン処理部２０１〜２０１ｎは、命令制御部２０２からの命令起動により動作する。ベクトルパイプライン処理部２０１〜２０１ｎは主記憶部２０３と接続されている。ベクトルパイプライン処理部２０１〜２０１ｎにおいて、ベクトルレジスタ２０４−１〜２０４−４は、クロスバ２０６−２を経由して、演算器２０５−１〜２０５−２と接続されている。演算器２０５−１〜２０５−２は、例えば加算／乗算／論理演算／除算を行う。各演算器２０５−１〜２０５−２による演算結果は、クロスバ２０６−１を経由して、任意のベクトルレジスタ２０４−１〜２０４−４に格納することができる。ベクトルレジスタ２０４−１〜２０４−４は、主記憶部２０３へのデータの送出、及び、主記憶部２０３からのデータの受け取りができるようになっている。ベクトルエレメントデータは、各ベクトルパイプライン処理部内のベクトルレジスタ２０４−１〜２０４−４にインタリーブして割り当てられ、各ベクトルパイプライン処理部は同時並列動作する。
【０００４】
ベクトルマスク情報部２０７には、ベクトルマスク生成命令によって生成されるベクトルマスク情報が格納される。ベクトルマスク生成命令は、命令内の条件コードに基づいて、比較条件（＝または≠または＜または＞または≦または≧など）を指定することができる。ベクトルマスク生成命令は、ベクトルデータの各々の要素が、指定された条件を満足するか否かを演算器にて判定し、判定結果に従って、ベクトルデータの各々の要素の有効性を示すベクトルマスク情報を生成する。
【０００５】
各ベクトルパイプライン処理部に対して、命令制御部２０２よりベクトルマスク生成命令が指示された場合には、ベクトルマスク情報が生成され、ベクトルマスク情報部２０７に格納される。生成されたベクトルマスク情報は、マスク付きベクトル命令が実行される際に、ベクトルデータ内の各々のデータの有効／無効の判別に用いられる。
【０００６】
ベクトルマスク生成命令が実行される際には、生成されたベクトルマスク情報を用いて、ベクトルマスク処理命令が実行される。ベクトルマスク処理命令としては、Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令、Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令、及びＴｒａｉｌｉｎｇ  Ｏｎｅ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令などを指定することができる。Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令は、ベクトルマスク情報について、ベクトルマスク情報の内、そのビット（ｂｉｔ）が"１"である個数を算出する。Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令は、ベクトルマスク情報の先頭からのビットが"０"である個数を算出する。Ｔｒａｉｌｉｎｇ  Ｏｎｅ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令は、ベクトルマスク情報のビットが"１"であるビットの内、最後の"１"のビット位置を算出する。
【特許文献１】特開平１０−３２０３８０号公報
【特許文献２】特開平０７−２００５４１号公報
【特許文献３】特開平０９−０９１２７２号公報
【特許文献４】特公平０７−０３１６６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のベクトル処理装置では、ベクトルマスク情報を更新する命令の際には、各ベクトルパイプライン処理部に対して命令制御部２０２よりベクトルマスク処理命令の実行指示が通知され、通知を受けた各ベクトルパイプライン処理部からベクトルパイプラインクロスバ２０９内にあるマスク情報処理部（不図示）へとベクトルマスク情報が送出され、全てのベクトルマスク情報が集められた後にベクトルマスク処理命令を実行するものであり、ベクトル処理命令の高速化が不十分なものであった。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明に係るベクトル処理装置は、命令の制御を行う命令制御部と、情報を保持しておく主記憶部と、複数のベクトルレジスタ、複数の演算器、該演算器と前記ベクトルレジスタ間を接続する複数のクロスバ、及びベクトルマスク情報を格納しベクトルマスク処理命令を処理するベクトルマスク情報部を有する複数のベクトルパイプライン処理部と、前記ベクトルパイプライン処理部間を接続して処理を行うベクトルパイプラインクロスバを備えたベクトル処理装置において、前記ベクトルマスク情報の更新命令の際に、前記ベクトルマスク情報の内の各部分のベクトルマスク情報について、前記複数のベクトルパイプライン処理部がそれぞれ前記ベクトルマスク処理を先行して実行し、該部分処理結果を格納する手段と、前記格納された部分処理結果を用いて、前記ベクトルマスク情報を処理する手段を備えることを特徴とする。
【０００９】
このような構成により、ベクトルマスク情報が更新される際に、各ベクトルパイプライン処理部において処理可能な部分を先行して処理し、該結果を保持して使用することで、ベクトルマスク処理命令に要する処理時間を短縮することができ、ベクトルマスク処理命令を高速に処理することができる。
【発明の効果】
【００１０】
本発明にかかるベクトル処理装置によれば、ベクトルマスク処理命令を高速に処理することができる。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。図１に本実施の形態に係るベクトル処理装置のブロック図を示す。図１に示すように、ベクトル処理装置１００は、命令の制御を行う命令制御部２と、情報を保持しておく主記憶部３と、複数のベクトルレジスタ４−１〜４−４、複数の演算器５−１〜５−２、演算器とベクトルレジスタ間を接続する複数のクロスバ６−１〜６−２、及びベクトルマスク情報を格納しベクトルマスク処理命令を処理するベクトルマスク情報部７を有する複数のベクトルパイプライン処理部１〜１ｎと、ベクトルパイプライン処理部間を接続して処理を行うベクトルパイプラインクロスバ９を備える。
【００１２】
ベクトルパイプライン処理部１〜１ｎは、命令制御部２からの命令起動により動作する。ベクトルパイプライン処理部１〜１ｎは主記憶部３と接続されている。ベクトルパイプライン処理部１〜１ｎにおいて、ベクトルレジスタ４−１〜４−４は、クロスバ６−２を経由して、演算器５−１〜５−２と接続されている。演算器５−１〜５−２は、例えば加算／乗算／論理演算／除算を行う。各演算器５−１〜５−２による演算結果は、クロスバ６−１を経由して、任意のベクトルレジスタ４−１〜４−４に格納することができる。ベクトルレジスタ４−１〜４−４は、主記憶部３へのデータの送出、及び、主記憶部３からのデータの受け取りができるようになっている。ベクトルエレメントデータは、各ベクトルパイプライン処理部内のベクトルレジスタ４−１〜４−４にインタリーブして割り当てられ、各ベクトルパイプライン処理部は同時並列動作する。尚、ベクトルパイプライン処理部の個数は任意の個数が可能である。
【００１３】
ベクトルマスク情報部７には、ベクトルマスク生成命令によって生成されるベクトルマスク情報が格納される。ベクトルマスク生成命令は、命令内の条件コードに基づいて、比較条件（＝または≠または＜または＞または≦または≧など）を指定することができる。ベクトルマスク生成命令は、ベクトルデータの各々の要素が、指定された条件を満足するか否かを演算器にて判定し、判定結果に従って、ベクトルデータの各々の要素の有効性を示すベクトルマスク情報を生成する。
【００１４】
ベクトルマスク情報部７はベクトルマスク情報状態判定部８を備える。ベクトルマスク情報状態判定部８は、ベクトルマスク生成命令を実行する際に、ベクトルマスク処理命令によって使用される、自ベクトルパイプライン処理部における先行処理結果と、自ベクトルパイプライン処理部における処理すべきベクトル要素数（ベクトル長)を保持する。ベクトルマスク情報状態判定部８は、例えばフリップ・フロップなどから構成される。
【００１５】
各ベクトルパイプライン処理部に対して、命令制御部２よりベクトルマスク生成命令が指示された場合には、ベクトルマスク情報が生成され、ベクトルマスク情報部７に格納される。生成されたベクトルマスク情報は、マスク付きベクトル命令が実行される際に、ベクトルデータ内の各々のデータの有効／無効の判別に用いられる。
【００１６】
ベクトルマスク生成命令が実行される際には、生成されたベクトルマスク情報を用いて、ベクトルマスク処理命令が実行される。上述したように、ベクトルマスク処理命令としては、Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令、Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令、及びＴｒａｉｌｉｎｇ  Ｏｎｅ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令などを指定することができる。
【００１７】
各ベクトルパイプライン処理部に対して、命令制御部２からベクトルマスク処理命令の実行指示が通知される。該通知を受けると、ベクトルマスク情報状態判定部８は、全ベクトルマスク情報の内の各部分のベクトルマスク情報についてのベクトルマスク処理を、対応する各ベクトルパイプライン処理部内で先行してベクトル長分連続して実行すると共に、この部分処理結果及びベクトル長をベクトルマスク情報状態判定部８に保持する。そして、ベクトルマスク生成命令が実行されたタイミングから、ベクトル長の変化があるか否かを判定する。判定の結果、ベクトル長の変化が無い場合には、予め処理して保持している自ベクトルパイプライン処理部の先行処理結果を用いて、ベクトルマスク処理命令を高速に処理すると共に、該命令が先行処理結果を用いて実行可能であることを命令制御部２へと通知する。
【００１８】
図２は、本実施の形態に係るベクトル処理装置による動作例を示すタイムチャートである。図２では、ベクトル処理装置１００が、Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令動作を実行する一例を示す。Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令の場合には、ベクトルマスク更新命令が実行された際に、それぞれのベクトルパイプライン処理部において、ベクトルマスク情報の内ビットが"１"の数を予め求めて、その部分処理結果をベクトル情報状態判定部８に保持しておくと共に、その際のベクトル長についてもベクトル情報状態判定部８に保持しておく。そして、ベクトルマスク更新命令の後続命令にて、Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令の実行指示が出された場合には、まず、ベクトルマスク更新命令時点からベクトル長に変化があるか否かを判定する。判定の結果、ベクトル長に変化が無い場合には、予め求めて保持しておいた部分処理結果より処理を開始すると共に、該命令が先行処理結果を用いて実行可能であることを命令制御部２に通知する。
【００１９】
このように、全ベクトルマスク情報の内の対応する部分のベクトルマスク情報について、各ベクトルパイプライン処理部がそれぞれベクトルマスク処理を先行して実行してその部分処理結果を保持しておき、全ベクトルマスク情報についてのベクトルマスク処理をベクトルパイプラインクロスバ９において処理する際に、予め求めておいた各ベクトルパイプライン処理部内の部分処理結果を用いてベクトルマスク情報を処理することで、全てのベクトルマスク情報に対して、ベクトルマスク情報の内ビットが"１"の数を求める処理を改めて実行する必要がないため、ベクトルパイプライン処理部内のベクトルマスク情報の内ビットが"１"の数を求めるために要する処理時間分の処理時間を短縮することができる。
【００２０】
図３は、従来のベクトル処理装置による動作例を示すタイムチャートである。図３では、従来のベクトル処理装置２００が、Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令動作を実行する一例を示す。従来は、ベクトルマスク処理命令の実行指示が命令制御部２から各ベクトルパイプライン処理部へと通知され、該通知を受けたベクトルマスク情報部７は、各ベクトルマスク情報をベクトルパイプラインクロスバ内にあるマスク情報処理部（不図示）へと全て集めた後、Ｐｏｐｕｌａｔｉｏｎ  Ｃｏｕｎｔ命令を処理するものであった。
【００２１】
図４は、本実施の形態に係るベクトル処理装置による動作例を示すタイムチャートである。図４では、ベクトル処理装置１００が、Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令動作を実行する一例を示す。Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令の場合には、ベクトルマスク更新命令が実行された際に、ベクトルマスク情報の先頭ビットが"１"である場合には、その処理結果である"０"をベクトル情報状態判定部８に予め保持しておくと共に、その際のベクトル長についてもベクトル情報状態判定部８に保持しておく。そして、ベクトルマスク更新命令の後続命令にてＬｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令の実行指示が出された場合には、まず、ベクトルマスク更新命令時点からベクトル長に変化があるか否かを判定する。判定の結果、ベクトル長に変化が無く、ベクトルマスク情報の先頭ビットが"１"である場合には、予め保持しておいた"０"値を結果として命令制御部２に返却すると共に、該命令が先行処理結果を用いて実行可能であることを命令制御部２に通知する。
【００２２】
このように処理を実行することで、ベクトルパイプラインクロスバ９において、全ベクトルマスク情報に対して、先頭からのビットが"０"の数を求めるための処理を改めて実行する必要がないため、先頭からのビットが"０"の数を求めるための処理時間を短縮することができる。
【００２３】
図５は、従来のベクトル処理装置による動作例を示すタイムチャートである。図５では、従来のベクトル処理装置２００が、Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令動作を実行する一例を示す。従来は、ベクトルマスク処理命令の実行指示が命令制御部２から各ベクトルパイプライン処理部へと通知され、該通知を受けたベクトルマスク情報部７は、ベクトルパイプラインクロスバ内にあるベクトルマスク情報処理部へと全てのベクトルマスク情報（ベクトルマスクデータ）を集めた後、Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令を処理するものであった。
【００２４】
尚、図示は省略するが、ベクトル処理装置１００による、Ｔｒａｉｌｉｎｇ  Ｏｎｅ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令動作に関しては、Ｌｅａｄｉｎｇ  Ｚｅｒｏ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令動作と同様である。即ち、ベクトルマスク更新命令が実行された際に、ベクトルマスク情報の最終ビット(ベクトル長に相当する最終ビット)が"１"である場合には、そのベクトル長をベクトル情報状態判定部８に予め保持しておく。そして、後続命令にて、Ｔｒａｉｌｉｎｇ  Ｏｎｅ  ｏｆ  Ｖｅｃｔｏｒ  Ｍａｓｋ  Ｃｏｕｎｔ命令の実行指示が出された場合には、まず、ベクトルマスク更新命令時点からベクトル長に変化があるか否かを判定する。判定の結果、ベクトル長に変化が無く、ベクトルマスク情報の最終ビットが"１"である場合には、予め保持しておいたベクトル長を結果として命令制御部２に返却すると共に、該命令が先行処理結果を用いて実行可能であることを命令制御部２に通知する。このように処理することで、ベクトルマスク情報の最後の"１"のビット位置を求めるための処理時間を短縮することができる。
【００２５】
以上説明してきたように、本実施の形態に係るベクトル処理装置１００は、ベクトルマスク情報の更新命令の際に、ベクトルマスク情報の内の各部分のベクトルマスク情報について、複数のベクトルパイプライン処理部がそれぞれベクトルマスク処理を先行して実行し、該部分処理結果とベクトル長をベクトル情報状態判定部８に格納する。そして、ベクトル長の変化が無い場合に、部分処理結果とベクトル長を用いて、ベクトルマスク情報を処理することで、ベクトルマスク処理命令に要する処理時間を短縮することができ、ベクトルマスク処理命令を高速に処理することができる。
【００２６】
尚、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施の形態に係るベクトル処理装置を示すブロック図である。
【図２】本発明の実施の形態に係るベクトル処理装置の動作例を示すタイムチャートである。
【図３】従来のベクトル処理装置の動作例を示すタイムチャートである。
【図４】本発明の実施の形態に係るベクトル処理装置の動作例を示すタイムチャートである。
【図５】従来のベクトル処理装置の動作例を示すタイムチャートである。
【図６】従来のベクトル処理装置を示すブロック図である。
【符号の説明】
【００２８】
１００  ベクトル処理装置
１  ベクトルパイプライン処理部
２  命令制御部
３  主記憶部
４-１〜４-４  ベクトルレジスタ
５-１〜５-２  演算器
６-１〜６-２  クロスバ
７  ベクトルマスク情報部
８  ベクトルマスク情報状態判定部
９  ベクトルパイプラインクロスバ
【図１】
2009086870.tif 000003
【図２】
2009086870.tif 000004
【図３】
2009086870.tif 000005
【図４】
2009086870.tif 000006
【図５】
2009086870.tif 000007
【図６】
2009086870.tif 000008