(57)【要約】【課題】回路規模を低く抑えつつ、マスク情報に基づくベクトル命令を高速に処理することができるベクトル演算処理装置等を提供する。【解決手段】ベクトル演算処理装置１０２は、Ｎ個（ただし、Ｎ＞０）の要素を有する配列データを成す各要素に関して演算するか否かを表すマスク情報の先頭または末尾において、所定の値が連なる要素数に応じて、前記配列データとして順に配列されている前記各要素のうち、処理対象となる特定の範囲を、前記各要素を識別可能な要素番号を用いて、前記範囲を区画する少なくともいずれか一方の前記要素番号によって、前記範囲を設定する設定部１０１と、前記配列データにおける前記演算範囲に含まれる要素番号に対応する要素に関して、ベクトル命令に応じた処理を実施するベクトル演算部１０８とを有する。【選択図】  図１
2014235585.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ個（ただし、Ｎ＞０）の要素を有する配列データを成す各要素に関して演算するか否かを表すマスク情報の先頭または末尾において、所定の値が連なる要素数に応じて、前記配列データとして順に配列されている前記各要素のうち、処理対象となる特定の範囲を、前記各要素を識別可能な要素番号を用いて、前記範囲を区画する少なくともいずれか一方の前記要素番号によって、前記範囲を設定する設定部と、
前記配列データにおける前記演算範囲に含まれる要素番号に対応する要素に関して、ベクトル命令に応じた処理を実施するベクトル演算部と
を備えるベクトル演算処理装置。
【請求項２】
前記設定部は、前記先頭において所定の値が連なる要素数がＫ（ただし、１≦Ｋ≦Ｎ）である場合に、前記演算範囲に含まれる要素番号の下限をＪ（ただし、２≦Ｊ≦Ｋ＋１）に設定する
請求項１に記載のベクトル演算処理装置。
【請求項３】
前記設定部は、前記末尾において所定の値が連なる要素数がＭ（ただし、１≦Ｍ≦Ｎ）である場合に、前記演算範囲に含まれる要素番号の個数をＬ（ただし、Ｎ−Ｍ≦Ｌ≦Ｎ−１）に設定する
請求項１に記載のベクトル演算処理装置。
【請求項４】
前記設定部は、前記末尾において所定の値が連なる要素数がＭ（ただし、１≦Ｍ≦Ｎ）である場合に、前記演算範囲に含まれる要素番号の個数をＰ（ただし、Ｎ−Ｍ―Ｋ≦Ｐ≦Ｎ−１）に設定する
請求項２に記載のベクトル演算処理装置。
【請求項５】
前記マスク情報において、先頭における要素から、所定の値が連なる要素数を計測する第１要素計測部を備え、
前記設定部は、前記第１要素計測部が計測する値に応じて前記演算範囲に含まれる要素番号の下限を設定する
請求項２に記載のベクトル演算処理装置。
【請求項６】
前記マスク情報において、末尾における要素から、所定の値が連なる要素数を計測する第２要素計測部を備え、
前記設定部は、前記第２要素計測部が計測する値に応じて前記演算範囲に含まれる要素番号の個数を設定する
請求項３または請求項４に記載のベクトル演算処理装置。
【請求項７】
情報処理装置において、Ｎ個（ただし、Ｎ＞０）の要素を有する配列データを成す各要素に関して演算するか否かを表すマスク情報の先頭または末尾において、所定の値が連なる要素数に応じて、前記配列データとして順に配列されている前記各要素のうち、処理対象となる特定の範囲を、前記各要素を識別可能な要素番号を用いて、前記範囲を区画する少なくともいずれか一方の前記要素番号によって、前記範囲を設定し、前記配列データにおける前記演算範囲に含まれる要素番号に対応する要素に関して、ベクトル命令に応じた処理を実施するベクトル演算処理方法。
【請求項８】
Ｎ個（ただし、Ｎ＞０）の要素を有する配列データを成す各要素に関して演算するか否かを表すマスク情報の先頭または末尾において、所定の値が連なる要素数に応じて、前記配列データとして順に配列されている前記各要素のうち、処理対象となる特定の範囲を、前記各要素を識別可能な要素番号を用いて、前記範囲を区画する少なくともいずれか一方の前記要素番号によって、前記範囲を設定する設定機能と、
前記配列データにおける前記演算範囲に含まれる要素番号に対応する要素に関して、ベクトル命令に応じた処理を実施するベクトル機能と
をコンピュータに実現させるベクトル演算処理プログラム。
【請求項９】
前記設定機能において、前記先頭において所定の値が連なる要素数がＫ（ただし、１≦Ｋ≦Ｎ）である場合に、前記演算範囲に含まれる要素番号の下限をＪ（ただし、２≦Ｊ≦Ｋ＋１）に設定する
請求項８に記載のベクトル演算処理プログラム。
【請求項１０】
前記設定機能において、前記末尾において所定の値が連なる要素数がＭ（ただし、１≦Ｍ≦Ｎ）である場合に、前記演算範囲に含まれる要素番号の個数をＬ（ただし、Ｎ−Ｍ≦Ｌ≦Ｎ−１）に設定する
請求項８に記載のベクトル演算処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトル命令を処理するベクトル演算処理装置等に関する。
【背景技術】
【０００２】
ベクトルデータ（以降、「配列データ」とも表す）は、数値等のデータ（以降、データ数をＮと表す。）を一つにまとめたデータ形式である。それぞれのデータは、ベクトルデータを成す要素（以降、「ベクトルデータの要素」とも表す）に関連付けされている。ベクトル命令は、該ベクトルデータを成す各要素に対する演算等の処理を、一度に、実現する命令である。例えば、ベクトル加算は、ベクトルデータを成す要素ごとに足し合わせる命令である。
【０００３】
マスク情報は、ベクトルデータにおける各要素が有効であるか否かを表す情報等である。マスク情報は、ベクトルデータに関連付けされている。すなわち、ベクトルデータにおける第Ａ要素（ただし、１≦Ａ≦Ｎ）は、マスク情報における第Ａ要素に関連付けされている。例えば、マスク情報の第Ａ要素における値が所定の値でない場合、ベクトルデータの第Ａ要素における値は有効である。逆に、マスク情報の第Ａ要素における値が所定の値である場合、ベクトルデータの第Ａ要素における値は無効である。
【０００４】
図９及び図１０を参照しながら、一般的なベクトル演算処理装置における処理について説明する。図９は、一般的なベクトル演算処理装置が有する構成を表すブロック図である。図１０は、一般的なベクトル演算処理装置における処理を表すフローチャートである。
【０００５】
ベクトル演算処理装置９０１は、ベクトルデータを記憶可能なベクトルレジスタ部９０６―１乃至９０６―３と、ベクトルレジスタ部９０６―１乃至９０６―３から読み取るデータを記憶する領域を指し示すアドレスを算出する読み取りアドレス生成部９０７―１乃至９０７―３と、データを保存するベクトルレジスタ部９０６―１乃至９０６―３におけるアドレスを指し示す書き込みアドレス生成部９０８―１乃至９０８―３と、ベクトルレジスタ部９０６―１乃至９０６―３にデータを書き込む際に制御する書き込み制御部９０９―１乃至９０９―３と、ベクトルレジスタ部９０６―１乃至９０６―３を選択するベクトルレジスタ選択部９０２と、ベクトルデータを成す要素に関する演算を処理するベクトル演算部９０５と、マスク情報部９０４と、マスク情報に応じて制御を行うマスク情報セレクタ部９０３とを有する。ベクトル演算処理装置９０１は、複数のベクトルレジスタ部（９０６―１乃至９０６―３等）を有する。
【０００６】
ベクトル演算処理装置９０１は、例えば、ベクトル加算等のベクトル命令を受け取り、ベクトル命令に応じて、ベクトルデータに関する演算処理を実施する。
【０００７】
マスク情報部９０４は、ベクトルデータを記憶することができる。
【０００８】
読み取りアドレス生成部９０７―１（または、９０７―２、９０７―３、以降、９０７―１を例にして説明する）は、マシンクロックサイクル等に応じて、ベクトル演算部９０５がベクトルレジスタ部９０６―１から読み取るベクトルデータを成す要素を指し示すアドレスを生成する。例えば、読み取りアドレス生成部９０７―１は、「ｊ」という値であるとする。ベクトル演算部９０５は、ベクトルレジスタ部９０６―１の第ｊ要素における値を読み取る。その後、読み取りアドレス生成部９０７―１は、マシンクロックサイクル等に応じて、アドレスを「ｊ＋１」に更新する。
【０００９】
同様に、書き込みアドレス生成部９０８―１は、マシンクロックサイクル等に応じて、ベクトル演算部９０５がベクトルレジスタ部９０６―１に保存するベクトルデータを成す要素を指し示すアドレスを生成する。例えば、書き込みアドレス生成部９０８―１は、「ｊ」という値であるとする。ベクトル演算部９０５は、算出した値をベクトルレジスタ部９０６―１の第ｊ要素に保存する。その後、書き込みアドレス生成部９０８―１は、マシンクロックサイクル等に応じて、アドレスを「ｊ＋１」に更新する。
【００１０】
ベクトルレジスタ選択部９０２は、ベクトル演算部９０５が処理を行う対象であるベクトルレジスタ部（９０６―１、９０６―２、または、９０６―３）を選ぶ。
【００１１】
例えば、第１ベクトルデータ及び第２ベクトルデータを加算し、算出した値をベクトルデータに保存するベクトル加算命令を例として、ベクトル演算処理装置９０１における処理について説明する。読み取りアドレス生成部（９０７―１乃至９０７―３）及び書き込みアドレス生成部（９０８―１乃至９０８―３）は、いずれも「１」を保存しているとする。
【００１２】
まず、ベクトル演算部９０５は、読み取りアドレス生成部９０７―１から「１」を読み取り（ステップＳ１００１）、読み取った「１」に応じてベクトルレジスタ部９０６―１における第１ベクトルデータの第１要素を読み取る（ステップＳ１００２）。同様に、ベクトル演算部９０５は、読み取りアドレス生成部９０７―２から「１」を読み取り、読み取った「１」に応じてベクトルレジスタ部９０６―２における第２ベクトルデータの第１要素を読み取る。
【００１３】
次に、ベクトル演算部９０５は、読み取った２つの値を足し合わせる（ステップＳ１００３）。その後、ベクトルレジスタ選択部９０２は、ベクトル演算部９０５が算出した値を保存するベクトルレジスタ部９０６―３を選ぶ（ステップＳ１００４）。ベクトル演算部９０５は、ベクトルレジスタ選択部９０２が選択したベクトルレジスタ部９０６―３におけるアドレスを指し示す書き込みアドレス生成部９０８―３から、アドレス（すなわち「１」）を読み取る（ステップＳ１００５）。次に、ベクトル演算部９０５は、ベクトルレジスタ選択部９０２が選択したベクトルレジスタ部９０６―３の第１要素に算出した値を保存する（ステップＳ１００６）。
【００１４】
次に、読み取りアドレス生成部（９０７―１乃至９０７―３）及び書き込みアドレス生成部（９０８―１乃至９０８―３）は、それぞれ、マシンクロックサイクル等に応じて、１を加えることによりアドレスを更新する（ステップＳ１００７）。
【００１５】
また、読み取りアドレス生成部（９０７―１乃至９０７―３）及び書き込みアドレス生成部（９０８―１乃至９０８―３）は、入力される回数に応じて処理を行ってもよい。その場合、読み取りアドレス生成部（９０７―１乃至９０７―３）及び書き込みアドレス生成部（９０８―１乃至９０８―３）は、入力される回数だけアドレスを生成する。
【００１６】
ベクトル演算処理装置９０１は、上述した処理を繰り返し実施することにより、ベクトル命令を処理する。
【００１７】
また、マスク情報セレクタ部９０３は、ベクトル演算部９０５における処理に応じて、マスク情報部９０４におけるマスク情報を読み取る。マスク情報セレクタ部９０３は、読み取ったマスク情報が所定の値でない場合に、書き込みを許可する信号を書き込み制御部（９０９―１乃至９０９―３）に送る。書き込み制御部（９０９―１乃至９０９―３）は、書き込みを許可する信号を受信し、ベクトル演算部９０５が算出した値をベクトルレジスタ部（９０６―１、９０６―２、または、９０６―３）に保存する。
【００１８】
逆に、マスク情報セレクタ部９０３は、読み取ったマスク情報が所定の値である場合に、書き込みを許可しない信号を書き込み制御部（９０９―１乃至９０９―３）に送る。書き込み制御部（９０９―１乃至９０９―３）は、書き込みを許可しない信号を受信し、ベクトル演算部９０５が算出した値をベクトルレジスタ部（９０６―１、９０６―２、または、９０６―３）に保存しない。
【００１９】
特許文献１乃至３は、上述したようなマスク情報に基づくベクトル命令を処理するベクトル演算処理装置等を開示する。
【００２０】
特許文献１は、マスク情報の任意の要素における値が、所定の値でない場合に、該マスク情報に基づくベクトル命令を、マスク情報を用いないベクトル命令に変換するベクトル演算処理装置を開示する。特許文献１が開示するベクトル演算処理装置は、所定の値でない要素数と、ベクトルデータが有する要素数が一致する場合に、上記のように命令を変換することにより、該ベクトル命令を高速に処理する。
【００２１】
特許文献２は、マスク情報の任意の要素における値が、所定の値でない場合に、実行中の該マスク情報に基づくベクトル命令を、強制的に終了するベクトル演算処理装置を開示する。特許文献２が開示するベクトル演算処理装置は、所定の値でない要素数を計測し、計測した要素数が０である場合に、マスク情報に基づくベクトル命令を強制的に終了する。
【００２２】
特許文献３は、マスク情報に基づくベクトル命令を効率よく処理するベクトル演算処理装置を開示する。特許文献３が開示するベクトル演算処理装置は、マスク情報において、所定の値が連なる要素の要素数を計測し、該計測した要素数に応じて、ベクトルデータを指し示すアドレスを算出する。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特開昭６１−２７５９７５号公報
【特許文献２】特開昭６１−２７５９７６号公報
【特許文献３】特開平１−１９７８７４号公報
【特許文献４】特開平０７−２３９８４４号公報
【特許文献５】特開２００７−３３４５６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００２４】
図１１に示すマスク情報である例について説明する。図１１は、マスク情報の一例を表す図である。この例において、マスク情報が有する要素数（以降、「ベクトル長」とも表す）は２０である。
【００２５】
例えば、所定の値は０であるとする。この例において、ベクトル演算部９０５は、マスク情報部９０４におけるマスク情報の第ｊ要素における値が１である場合に、算出した値をベクトルレジスタ部（９０６―１乃至９０６―３）の第ｊ要素に保存する。また、ベクトル演算部９０５は、マスク情報部９０４におけるマスク情報の第ｊ要素における値が１でない場合に、算出した値をベクトルレジスタ部（９０６―１乃至９０６―３）の第ｊ要素に保存しない（以降、上述したベクトル演算処理装置９０１を「第１ベクトル演算処理装置」と表す）。
【００２６】
すなわち、この例において、ベクトル演算部９０５は、算出した値のうち第６、９、１１、１２、１５及び１６要素をベクトルレジスタ部（９０６―１乃至９０６―３）に保存する。
【００２７】
しかしながら、ベクトル演算部９０５は、算出した値を保存しない第１乃至５、７、８、１０、１３、１４、及び、１７乃至２０要素についても上述した処理を実施する。そのため、この処理は冗長な処理である。
【００２８】
一方、ベクトル演算処理装置９０１における処理を効率化する方法として、図１２に示すように、マスク情報部９０４におけるベクトルデータを成す要素の値が所定の値とは異なる要素を特定する識別子（以降、「要素番号」と表す）を保存することにより、演算する要素の値のみを保存する方法がある。図１２は、マスク情報の一例を表す図である。特許文献４及び特許文献５は、図１２に示す保存方法におけるデータを処理する技術を開示する。
【００２９】
図１２に示すマスク情報を処理するために、読み取りアドレス生成部及び書き込みアドレス生成部は、マスク情報部における要素番号に応じて、アドレスを生成する。しかしながら、要素番号ごとにアドレスを生成する処理が、値を１増やす処理に比べ処理量が多いため、要素番号ごとにアドレスを生成する機能を実装するハードウェア量（または、「回路規模」とも表現する）は増大する。
【００３０】
特許文献１及び特許文献２が開示するベクトル演算処理装置は、マスク情報における各要素の値が所定の値である場合に、該マスク情報に基づくベクトル命令を変換、または、中止する。そのため、該ベクトル演算処理装置は、マスク情報に基づくベクトル命令に関する処理そのものを、高速に処理するものではない。
【００３１】
また、特許文献３乃至特許文献５が開示するベクトル演算処理装置は、マスク情報において、所定の値が連なる要素の要素数に応じて、アドレス生成部を設定する。したがって、該ベクトル演算処理装置は、マスク情報に基づくベクトル命令を高速に処理可能である。しかしながら、上述したように、該機能を実装する回路規模は増大する。
【００３２】
そこで、本発明の主たる目的は、回路規模を低く抑えつつ、マスク情報に基づくベクトル命令を高速に処理可能なベクトル演算処理装置等を提供することである。
【課題を解決するための手段】
【００３３】
前述の目的を達成するために、本発明に係るベクトル演算処理装置は、以下の構成を備えることを特徴とする。
【００３４】
すなわち、本発明に係るベクトル演算処理装置は、
Ｎ個（ただし、Ｎ＞０）の要素を有する配列データを成す各要素に関して演算するか否かを表すマスク情報の先頭または末尾において、所定の値が連なる要素数に応じて、前記配列データとして順に配列されている前記各要素のうち、処理対象となる特定の範囲を、前記各要素を識別可能な要素番号を用いて、前記範囲を区画する少なくともいずれか一方の前記要素番号によって、前記範囲を設定する設定部と、
前記配列データにおける前記演算範囲に含まれる要素番号に対応する要素に関して、ベクトル命令に応じた処理を実施するベクトル演算部と
を備えることを特徴とする。
【００３５】
また、本発明の他の見地として、本発明に係るベクトル演算処理方法は、
情報処理装置において、Ｎ個（ただし、Ｎ＞０）の要素を有する配列データを成す各要素に関して演算するか否かを表すマスク情報の先頭または末尾において、所定の値が連なる要素数に応じて、前記配列データとして順に配列されている前記各要素のうち、処理対象となる特定の範囲を、前記各要素を識別可能な要素番号を用いて、前記範囲を区画する少なくともいずれか一方の前記要素番号によって、前記範囲を設定し、前記配列データにおける前記演算範囲に含まれる要素番号に対応する要素に関して、ベクトル命令に応じた処理を実施する
ことを特徴とする。
【発明の効果】
【００３６】
本発明に係るベクトル演算処理装置等によれば、回路規模を低く抑えつつ、マスク情報に基づくベクトル命令を高速に処理することができる。
【図面の簡単な説明】
【００３７】
【図１】第１の実施形態に係るベクトル演算処理装置が有する構成を示すブロック図である。
【図２】第１の実施形態に係るベクトル演算処理装置における処理の流れを示すフローチャートである。
【図３】第１の実施形態に係るベクトル演算処理装置における処理の流れを示すフローチャートである。
【図４】第１の実施形態に係るベクトル演算処理装置が処理するマスク情報の一例を表す図である。
【図５】第２の実施形態に係るベクトル演算処理装置が有する構成を示すブロック図である。
【図６】第２の実施形態に係るベクトル演算処理装置における処理の流れを示すフローチャートである。
【図７】第３の実施形態に係るベクトル演算処理装置が有する構成を示すブロック図である。
【図８】第３の実施形態に係るベクトル演算処理装置における処理の流れを示すフローチャートである。
【図９】一般的なベクトル演算処理装置が有する構成を表すブロック図である。
【図１０】一般的なベクトル演算処理装置における処理を表すフローチャートである。
【図１１】マスク情報の一例を表す図である。
【図１２】マスク情報の一例を表す図である。
【発明を実施するための形態】
【００３８】
次に、本発明を実施する実施形態について図面を参照して詳細に説明する。
【００３９】
＜第１の実施形態＞
第１の実施形態に係るベクトル演算処理装置１０２が有する構成と、ベクトル演算処理装置１０２が行う処理とについて、図１乃至図３を参照しながら詳細に説明する。図１は、第１の実施形態に係るベクトル演算処理装置１０２が有する構成を示すブロック図である。図２及び図３は、第１の実施形態に係るベクトル演算処理装置１０２における処理の流れを示すフローチャートである。
【００４０】
ベクトル演算処理装置１０２は、設定部１０１を有する。ベクトル演算処理装置１０２は、さらに、マスク情報部１０４と、ベクトルレジスタ部１０７と、ベクトル演算部１０８と、読み取りアドレス生成部１０５と、書き込みアドレス生成部１０６とを有する。
【００４１】
図１１に示す一例を参照しながら、ベクトル演算処理装置１０２における処理について説明する。この例において、所定の値は、「０」であるとする。また、ベクトルデータにおける要素数はＮであるとする。
【００４２】
まず、設定部１０１は、マスク情報部１０４から、図１１に示すようなマスク情報を読み取る。次に、設定部１０１は、読み取ったマスク情報の先頭において、所定の値が連なるか否かを判定する（ステップＳ２０１）。マスク情報の先頭は、マスク情報が第１要素乃至第Ｎ要素からなる場合に、第１要素乃至第ｉ要素（１≦ｉ≦Ｎ）を表すとする。
【００４３】
図１１に示す例において、マスク情報の第１要素乃至第５要素における値は、それぞれ「０」であるため、設定部１０１は、マスク情報の先頭において、所定の値が連なると判定する（ステップＳ２０１にてＹＥＳと判定）。
【００４４】
設定部１０１は、ステップＳ２０１にてＹＥＳと判定する場合、マスク情報の先頭において、所定の値が連なる要素数を算出する（ステップＳ２０２）。図１１に示す例においては、第１要素乃至第５要素が所定の値であるため、設定部１０１は、「５」を算出する。
【００４５】
設定部１０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、算出した値に応じた値を保存する（ステップＳ２０３）。図１１に示す例においては、例えば、設定部１０１は、算出した値「５」に１を加えた値「６」を、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に保存する（ステップＳ２０３）。
【００４６】
図１１に示す例においては、ベクトル演算部１０８は、ベクトルデータの第６要素から処理する。すなわち、設定部１０１は、ステップＳ２０３における処理を実施することにより、ベクトル演算部１０８が処理する要素番号の範囲である特定の範囲（すなわち、「演算範囲」と表すこともできる）を決定する。
【００４７】
次に、ベクトル演算部１０８は、図１０に示すようなフローチャートに従い、ベクトル命令に応じた処理を行う（ステップＳ２０４）。図１１に示す例においては、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６が「６」を保存するため、ベクトル演算部１０８は、ベクトルデータの第６要素から処理を行う。すなわち、この例において、設定部１０１は、マスク情報の先頭において所定の値が連なる要素数を算出することにより、特定の範囲を区画する一方の要素番号「６」を設定する。
【００４８】
また、設定部１０１は、読み取ったマスク情報の末尾において、所定の値が連なるか否かを判定してもよい（ステップＳ３０１）。マスク情報の末尾は、マスク情報が第１要素乃至第Ｎ要素からなる場合に、第Ｎ−ｊ要素乃至第Ｎ要素（ただし、１≦ｊ≦Ｎ）を表すとする。
【００４９】
図１１に示す例において、マスク情報の第１７要素乃至第２０要素における値は、それぞれ「０」であるため、設定部１０１は、マスク情報の末尾において、所定の値が連なると判定する（ステップＳ３０１にてＹＥＳと判定）。
【００５０】
設定部１０１は、ステップＳ３０１にてＹＥＳと判定する場合、マスク情報の末尾において、所定の値が連なる要素数を算出する（ステップＳ３０２）。図１１に示す例においては、第１７要素乃至第２０要素が所定の値であるため、設定部１０１は、「４」を算出する。
【００５１】
次に、設定部１０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、算出した要素数に応じた値を保存する。図１１に示す例においては、例えば、設定部１０１は、１１（＝２０（すなわち、「マスク情報の要素数」）−５（すなわち「ステップＳ２０２において算出した値」）−４（すなわち「ステップＳ３０２において算出した値」）を、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に保存する（ステップＳ３０３）。この場合、「１１」は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６がアドレスを生成する回数を表す。
【００５２】
すなわち、この例において、設定部１０１は、マスク情報の末尾において所定の値が連なる要素数をカウントすることにより、特定の範囲を区画する他方の要素番号を設定する。
【００５３】
次に、ベクトル演算部１０８は、図１０に示すようなフローチャートに従い、ベクトル命令に応じた処理を行う（ステップＳ３０４）。図１１に示す例においては、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６が「１１」を保存するため、ベクトル演算部１０８は、ベクトルデータの第６要素乃至第１６要素に関する処理を行う。
【００５４】
上述した例において、ベクトル演算部１０８は、図４に示すマスク情報に従い、ベクトル命令を処理する。図４は、第１の実施形態に係るベクトル演算処理装置１０２が処理するマスク情報の一例を表す図である。図４に示すマスク情報は、図１１に示すマスク情報の第６要素乃至第１６要素を表す。
【００５５】
ベクトル演算部１０８は、図４に示すマスク情報に応じて、マスク情報の要素の値が、所定の値でない場合に、ベクトルレジスタに算出した値を保存する。すなわち、ベクトル演算部１０８は、ベクトルレジスタ部１０７の第６、９、１１、１２、１５及び１６要素に、算出した値を保存する。
【００５６】
上述した例において、設定部１０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、処理を開始するアドレスと、処理を行う回数とを保存するとしたが、少なくとも一方を保存すればよい。また、設定部１０１は、処理を行う処理回数を算出するとしたが、処理を終了するアドレスを保存してもよい。
【００５７】
上述した例においては、ベクトル演算部１０８が、マスク情報部１０４における値に応じて、算出した値をベクトルレジスタ部１０７に保存するか否かを決定する。しかしながら、ベクトル演算部１０８は、ベクトルレジスタ部１０７から第ｊ要素を読み取る場合に、マスク情報部１０４における値を参照する機能を有していてもよい。
【００５８】
この場合、ベクトル演算部１０８は、マスク情報部１０４におけるマスク情報の第ｊ要素における値が所定の値でない場合に、ベクトルレジスタ部１０７の第ｊ要素における値を読み取る。ベクトル演算部１０８は、読み取った値に基づいて、ベクトル命令を処理する。また、ベクトル演算部１０８は、マスク情報部１０４におけるマスク情報の第ｊ要素における値が所定の値である場合に、ベクトルレジスタ部１０７の第ｊ要素における値を読み取らない。
【００５９】
また、上述した例において、マスク情報の先頭における所定の値が連なる要素数に１を加えた値（この値を、「第１値」と表す。）を、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に保存したが、保存する値は、第１値以下の整数値であればよい。
【００６０】
同様に、マスク情報の末尾における所定の値が連なる要素数に応じて、アドレスを生成する回数を算出したが、アドレスを生成する回数は、算出した値よりも大きな値であればよい。
【００６１】
すなわち、本実施形態は、上述した例に限定されない。
【００６２】
本実施形態において、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６は、マシンクロックサイクル等に応じてアドレスを１ずつ増やすことにより更新する。本実施形態における読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６は、第１ベクトル演算処理装置における読み取りアドレス生成部及び書き込みアドレス生成部と同様の機能を実現する。そのため、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６を実現する回路は、第１ベクトル演算処理装置における読み取りアドレス生成部及び書き込みアドレス生成部と同様の回路となる。すなわち、本実施形態によれば、回路規模を低く抑えることができる。
【００６３】
さらに、本実施形態によれば、マスク情報の先頭または末尾、もしくはその両者において、所定の値に一致する要素に関連する処理を行わない。その結果、本実施形態によれば、ベクトル命令に要する処理時間を短縮することができる。
【００６４】
すなわち、第１の実施形態に係るベクトル演算処理装置１０２によれば、回路規模を低く抑えつつ、マスク情報に基づくベクトル命令を高速に処理することができる。
【００６５】
尚、上述した例において、ベクトル演算処理装置１０２は、マスク情報を参照するベクトル命令を処理するとした。一方、マスク情報を参照しないベクトル命令の場合に、設定部１０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、ベクトルデータの第１要素を表す「１」を保存してもよい。
【００６６】
また、マスク情報における各要素の値が所定の値である場合には、設定部１０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、ベクトルデータの第１要素を表す「１」を保存するとともに、アドレスを生成する回数として「１」を保存してもよい。
【００６７】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする第２の実施形態について説明する。
【００６８】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第１の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
【００６９】
図５及び図６を参照しながら、第２の実施形態に係るベクトル演算処理装置５０３が有する構成と、ベクトル演算処理装置５０３が行う処理とについて説明する。図５は、第２の実施形態に係るベクトル演算処理装置５０３が有する構成を示すブロック図である。図６は、第２の実施形態に係るベクトル演算処理装置５０３における処理の流れを示すフローチャートである。
【００７０】
図５を参照すると、ベクトル演算処理装置５０３は、第１要素計測部５０２と、設定部５０１とを有する。
【００７１】
第１要素計測部５０２は、マスク情報部１０４からマスク情報を読み取る。次に、第１要素計測部５０２は、マスク情報における先頭において所定の値が連なる要素数を算出する（ステップＳ６０１）。例えば、第１要素計測部５０２は、マスク情報の第１要素から順に所定の値であるか否かを判定してもよい。第１要素計測部５０２における処理は、上述した例に限定されない。
【００７２】
例えば、図１１に示す例の場合、第１要素計測部５０２は、マスク情報の第１要素から順に所定の値（すなわち、この例においては「０」）であるか否かを判定する。マスク情報の第１要素乃至第５要素が「０」であるため、第１要素計測部５０２は、「５」を算出する（ステップＳ６０１）。
【００７３】
次に、設定部５０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、算出した要素数に応じて値を保存する（ステップＳ６０２）。ここで、保存する値は、例えば、ベクトルデータにおいてベクトル演算部１０８が処理する要素番号の下限値である。例えば、設定部５０１は、算出した要素数に１を加えることにより、上記の下限値を算出することができる。
【００７４】
設定部５０１は、ステップＳ６０２における処理を実施することにより、ベクトル演算部１０８が処理する要素番号の範囲である演算範囲を決定する。
【００７５】
設定部５０１が、上述のように算出した下限値以下の正数値を、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に保存することにより、ベクトル演算処理装置５０３が処理する要素数は、第１ベクトル演算処理装置が処理する要素数よりも少ない。
【００７６】
第２の実施形態は、第１の実施形態と同様の構成を有するため、第２の実施形態は、第１の実施形態と同様の効果を享受することができる。すなわち、第２の実施形態に係るベクトル演算処理装置によれば、回路規模を低く抑えつつ、マスク情報に基づくベクトル命令を高速に処理することができる。
【００７７】
さらに、本実施形態において、第１要素計測部５０２は、例えば、算出した要素数に応じて、ベクトル演算部１０８が処理する要素番号の特定の範囲（すなわち、「演算範囲」）を算出する。そのため、本実施形態によれば、上述した効果に加え、さらにベクトル演算部１０８が処理する回数を減らすことができる。
【００７８】
＜第３の実施形態＞
次に、上述した第１の実施形態を基本とする第３の実施形態について説明する。
【００７９】
以下の説明においては、本実施形態に係る特徴的な部分を中心に説明すると共に、上述した第１の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明を省略する。
【００８０】
図７と図８とを参照しながら、第３の実施形態に係るベクトル演算処理装置７０３が有する構成と、ベクトル演算処理装置７０３が行う処理とについて説明する。図７は、第３の実施形態に係るベクトル演算処理装置７０３が有する構成を示すブロック図である。図８は、第３の実施形態に係るベクトル演算処理装置７０３における処理の流れを示すフローチャートである。
【００８１】
ベクトル演算処理装置７０３は、第２要素計測部７０２と、設定部７０１とを有する。
【００８２】
第２要素計測部７０２は、マスク情報部１０４からマスク情報を読み取る。次に、第２要素計測部７０２は、マスク情報における末尾において所定の値が連なる要素数を算出する（ステップＳ８０１）。
【００８３】
例えば、第２要素計測部７０２は、マスク情報の第Ｎ要素から順に所定の値であるか否かを判定してもよい。また、第２要素計測部７０２は、マスク情報において、所定の値でない要素のうち要素番号が最大の要素を探索し、Ｎから、探索した要素の要素番号を引くことにより、上記の要素数を算出してもよい。第２要素計測部７０２における処理は、上述した例に限定されない。
【００８４】
例えば、図１１に示す例の場合、第２要素計測部７０２は、マスク情報の第２０要素から順に所定の値（すなわち、この例においては「０」）であるか否かを判定する。マスク情報の第１７要素乃至第２０要素が「０」であるため、第２要素計測部７０２は、「４」を算出する（ステップＳ８０１）。
【００８５】
次に、設定部７０１は、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に、算出した要素数に応じて値を保存する（ステップＳ８０２）。ここで、保存する値は、例えば、ベクトルデータにおいてベクトル演算部１０８が処理する要素数である。例えば、設定部７０１は、ベクトルデータが有するベクトル長から、算出した要素数を引くことにより、上記の処理する要素数を算出することができる。
【００８６】
設定部７０１は、ステップＳ８０２における処理を実施することにより、ベクトル演算部１０８が処理する要素番号の範囲である特定の範囲を決定する。
【００８７】
設定部７０１が、上述のように算出した要素数乃至Ｎ−１のいずれかの正数値を、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に保存することにより、ベクトル演算処理装置７０３が処理する要素数は、第１ベクトル演算処理装置が処理する要素数よりも少ない。
【００８８】
第３の実施形態は、第１の実施形態と同様の構成を有するため、第１の実施形態は、第３の実施形態と同様の効果を享受することができる。すなわち、第３の実施形態に係るベクトル演算処理装置７０３によれば、回路規模を低く抑えつつ、マスク情報に基づくベクトル命令を高速に処理することができる。
【００８９】
さらに、本実施形態において、第２要素計測部７０２は、例えば、算出した要素数に応じて、ベクトル演算部１０８が処理する要素数を算出する。そのため、本実施形態によれば、上述した効果に加え、さらにベクトル演算部１０８が処理する回数を減らすことができる。
【００９０】
尚、本実施形態は、第１の実施形態を基本としたが、第２の実施形態を基本としてもよい。この場合、例えば、設定部７０１は、Ｎから第１要素計測部５０２が算出した要素数及び第２要素計測部７０２が算出した要素数を引くことにより、上記のような処理する要素数を算出する。その場合でも、設定部７０１が、上記のように算出した要素数乃至Ｎ−１のいずれかの正数値を、読み取りアドレス生成部１０５及び書き込みアドレス生成部１０６に保存することにより、ベクトル演算処理装置７０３が処理する要素数は、第１ベクトル演算処理装置が処理する要素数よりも少ない。
【符号の説明】
【００９１】
１０１    設定部
１０２    ベクトル演算処理装置
１０４    マスク情報部
１０５    読み取りアドレス生成部
１０６    書き込みアドレス生成部
１０７    ベクトルレジスタ部
１０８    ベクトル演算部
５０１    設定部
５０２    第１要素計測部
５０３    ベクトル演算処理装置
７０１    設定部
７０２    第２要素計測部
７０３    ベクトル演算処理装置
９０１    ベクトル演算処理装置
９０２    ベクトルレジスタ選択部
９０３    マスク情報セレクタ部
９０４    マスク情報部
９０５    ベクトル演算部
９０６―１    ベクトルレジスタ部
９０６―２    ベクトルレジスタ部
９０６―３    ベクトルレジスタ部
９０７―１    読み取りアドレス生成部
９０７―２    読み取りアドレス生成部
９０７―３    読み取りアドレス生成部
９０８―１    書き込みアドレス生成部
９０８―２    書き込みアドレス生成部
９０８―３    書き込みアドレス生成部
９０９―１    書き込み制御部
９０９―２    書き込み制御部
９０９―３    書き込み制御部
【図１】
2014235585.tif 000003
【図２】
2014235585.tif 000004
【図３】
2014235585.tif 000005
【図４】
2014235585.tif 000006
【図５】
2014235585.tif 000007
【図６】
2014235585.tif 000008
【図７】
2014235585.tif 000009
【図８】
2014235585.tif 000010
【図９】
2014235585.tif 000011
【図１０】
2014235585.tif 000012
【図１１】
2014235585.tif 000013
【図１２】
2014235585.tif 000014