(57)【要約】【課題】ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という課題を解決すること。【解決手段】命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、前記命令に応じて、前記一時記憶装置が保持する前記要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する前記要素の出力先を決定する出力先決定部と、を有し、前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する。【選択図】図１
2019159440.tif 000002
【特許請求の範囲】
【請求項１】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
ベクトルプロセッサ。
【請求項２】
請求項１に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じてデータ型を判断することで、前記一時記憶装置が記憶する複数の要素を１つの要素として扱う
ベクトルプロセッサ。
【請求項３】
請求項１又は２に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、１つの値をいくつの要素を用いて表現するかを示すデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
【請求項４】
請求項１から請求項３までのいずれか１項に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のベクトルプロセッサであって、
前記出力先決定部は、前記データ型判断部による判断の結果と、前記命令の種類と、に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する
ベクトルプロセッサ。
【請求項６】
請求項１から請求項５までのいずれか１項に記載のベクトルプロセッサであって、
前記一時記憶装置が記憶する各要素を用いて前記演算を実行する演算処理部を有し、
前記出力先決定部は、前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する各要素を前記演算処理部に含まれる演算器のうちのどの演算器のどのポートに出力するか決定することで、各要素の出力先を決定する
ベクトルプロセッサ。
【請求項７】
請求項６に記載のベクトルプロセッサであって、
前記演算処理部に含まれる前記演算器のそれぞれは、前記一時記憶装置と通信可能なよう接続されている
ベクトルプロセッサ。
【請求項８】
請求項１から請求項７までのいずれか１項に記載のベクトルプロセッサであって、
前記一時記憶装置が保持する要素のデータ型のうちの、１つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
ベクトルプロセッサ。
【請求項９】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、
判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
決定した出力先に各要素を出力することで前記演算を実行する
演算実行方法。
【請求項１０】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を実現させ、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベクトルプロセッサ、演算実行方法、プログラムに関する。
【背景技術】
【０００２】
ベクトルレジスタに格納したデータを用いて演算を行うベクトルプロセッサが知られている。
【０００３】
このような技術の一つとして、例えば、特許文献１がある。特許文献１には、１マシンサイクルに２要素以上で演算処理することを可能とするためのベクトル演算処理装置が記載されている。具体的には、ベクトル演算処理装置は、分配手段と、処理要素数制御手段と、を有している。特許文献１によると、分配手段は、ベクトル演算器へ被演算ベクトルデータの供給を行う。また、処理要素数制御手段は、分配手段にマシンサイクルあたりの処理可能な被演算ベクトルデータ数を指示し、かつマシンサイクルあたりの処理可能な被演算ベクトルデータ数に応じた数のベクトル演算器に演算処理を指示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開Ｈ１０−３１２３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されているようなベクトル演算処理装置（ベクトルプロセッサ）を用いて演算を行う場合、通常２つのオペランドが必要になる。例えば、２つのオペランドをメモリから読み込み（８ｂｙｔｅ×２）、演算結果をメモリに書き込む（８ｂｙｔｅ）と、２４ｂｙｔｅのメモリリード、メモリライトが発生する。この間に行われる演算回数は１回のみであるが、実際、このような計算で必要となるＢ／Ｆ（Ｂｙｔｅ／Ｆｌｏｐ）値は２４である。
【０００６】
一方で、一般的な最先端計算機のＢ／Ｆ値は０．５以下になっており、必要となるＢ／Ｆ値と実際のＢ／Ｆ値との間には大きな差が生じている。その結果、例えば、上記のようなオペランドＡ、オペランドＢをメモリからリードして演算結果Ｃをメモリにライトする、などの単純な計算を繰り返すプログラムでは、性能をほとんど出すことができず、ほとんどの時間ＣＰＵの演算器リソースを無駄にしてしまう、という問題が生じていた。換言すると、ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という問題が生じていた。
【０００７】
そこで、本発明の目的は、ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という問題を解決するベクトルプロセッサ、演算実行方法、プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
かかる目的を達成するため本発明の一形態であるベクトルプロセッサは、
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
という構成を採る。
【０００９】
また、本発明の他の形態である演算実行方法は、
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、
判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
決定した出力先に各要素を出力することで前記演算を実行する
という構成を採る。
【００１０】
また、本発明の他の形態であるプログラムは、
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を実現させ、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行するプログラムである。
【発明の効果】
【００１１】
本発明は、以上のように構成されることにより、ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という問題を解決するベクトルプロセッサ、演算実行方法、プログラムを提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態におけるベクトルプロセッサの構成の一例を示すブロック図である。
【図２】図１で示す演算処理部の構成の一例を示す図である。
【図３】一要素が一バイトの場合を示す図である。
【図４】二要素をまとめて一要素として扱い半精度を表現する図である。
【図５】四要素をまとめて一要素として扱い単精度を表現する図である。
【図６】八要素をまとめて一要素として扱い倍精度を表現する図である。
【図７】二要素をまとめて一要素として扱い多項式を表現する図である。
【図８】二要素をまとめて一要素として扱い分数を表現する図である。
【図９】二要素をまとめて一要素として扱い複素数を表現する図である。
【図１０】四要素をまとめて一要素として扱い四元数を表現する図である。
【図１１】四要素を一要素として扱い２×２行列を表現する図である。
【図１２】十六要素を一要素として扱い４×４行列を表現する図である。
【図１３】複素数同士の乗算を行う際の処理の一例を説明するための図である。
【図１４】２×２行列同士の乗算を行う際の処理の一例を説明するための図である。
【図１５】除算を行う際の処理の一例を説明するための図である。
【図１６】ソートを行う際の処理の一例を説明するための図である。
【図１７】半精度の乗算を行う際の処理の一例を説明するための図である。
【図１８】ベクトルプロセッサが行う演算処理方法の一例を示すフローチャートである。
【図１９】一般的な乗算処理の一例を説明するための図である。
【図２０】本発明の第２の実施形態におけるベクトルプロセッサの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１３】
［第１の実施形態］
本発明の第１の実施形態を図１から図１９までを参照して説明する。図１は、ベクトルプロセッサ１の構成の一例を示す図である。図２は、演算処理部１２の構成の一例を示す図である。図３から図１２までは、データ構造の一例を説明するための図である。図１３は、複素数同士の乗算を行う際の処理の一例を説明するための図である。図１４は、２×２行列同士の乗算を行う際の処理の一例を説明するための図である。図１５は、除算を行う際の処理の一例を説明するための図である。図１６は、ソートを行う際の処理の一例を説明するための図である。図１７は、半精度の乗算を行う際の処理の一例を説明するための図である。図１８は、ベクトルプロセッサ１が行う演算処理方法の一例を示すフローチャートである。図１９は、一般的な乗算処理の一例を説明するための図である。
【００１４】
第１の実施形態では、一時記憶装置であるベクトルレジスタ１１に格納された各要素を用いて命令に応じた演算を行うベクトルプロセッサ１について説明する。後述するように、ベクトルプロセッサ１は、命令に応じて、ベクトルレジスタ１１の複数要素をまとめて１つの要素として扱うことが出来るよう構成されている。このような構成により、半精度、単精度、倍精度、行列、複素数、四元数、多項式など多様なデータ型を１つの要素として扱うことが可能となる。
【００１５】
ベクトルプロセッサ１は、命令に応じた演算処理を実行する。後述するように、ベクトルプロセッサ１は、上記演算処理を実行する際に、ベクトルレジスタ１１の複数要素をまとめて一要素として扱う。換言すると、ベクトルプロセッサ１は、命令に基づいて、ベクトルレジスタの要素にデータ型を定義する。
【００１６】
図１は、ベクトルプロセッサ１の構成の一例を示している。図１を参照すると、ベクトルプロセッサ１は、複数のベクトルレジスタ１１と、演算処理部１２と、変換部１３と、データ型判断部１４と、セレクタ１５と、を有している。
【００１７】
なお、ベクトルプロセッサ１は、図示しない演算装置と記憶装置とを有している。ベクトルプロセッサ１は、図示しない記憶装置に格納されたプログラムを演算装置が実行することで、変換部１３と、データ型判断部１４と、セレクタ１５と、を実現する。なお。上記各処理部は、演算回路などにより実現されても構わない。
【００１８】
ベクトルレジスタ１１は、複数の要素を保持する一時記憶装置である。例えば、ベクトルレジスタ１１は、２５６個の要素を保持することが出来る。ベクトルレジスタ１１は、例えば、ベクトルプロセッサ１が主記憶から取得した、演算に用いるベクトルデータを表す複数の要素を保持する。
【００１９】
ベクトルレジスタ１１は、当該ベクトルレジスタ１１に格納されたそれぞれの要素を、演算処理部１２に含まれる複数の演算器群に出力することが出来るよう構成されている。例えば、演算処理部１２が、前段の演算器群（例えば、図２で示す演算器１２２）と、後段の演算器群（例えば、図２で示す演算器１２３）とを有しているとする。この場合、ベクトルレジスタ１１は、前段の演算器群を構成する演算器１２２のすべてと通信可能なよう接続されている。換言すると、図２で示すように、ベクトルレジスタ１１は、前段の演算器群を構成する演算器１２２すべてに対する入力パスを有する。このような構成により、ベクトルレジスタ１１に格納された各要素は、前段の演算器群のどのポートに対しても出力することが出来る。また、ベクトルレジスタ１１に格納された各要素は、複数の演算器群に対して出力することが出来る。
【００２０】
また、ベクトルレジスタ１１は、演算処理部１２に含まれる複数の演算器群から演算の結果を入力することが出来るよう構成されている。例えば、上記と同様に、演算処理部１２が、前段の演算器群（例えば、図２で示す演算器１２２）と、後段の演算器群（例えば、図２で示す演算器１２３）とを有しているとする。この場合、ベクトルレジスタ１１は、後段の演算器群を構成する演算器１２３のすべてと通信可能なよう接続されている。換言すると、図２で示すように、ベクトルレジスタ１１は、後段の演算器群を構成する演算器１２３すべてからの入力パスを有する。このような構成により、後段の演算器群を構成する各演算器１２３は、演算の結果を任意のベクトルレジスタ１１の任意の要素に格納することが出来る。
【００２１】
以上のように、ベクトルレジスタ１１は、複数の要素を保持している。また、ベクトルレジスタ１１は、演算処理部１２に含まれる演算器群のうちの任意の演算器（例えば、演算処理部１２が前段と後段の演算器群を含む場合、前段の演算器群のうちの任意の演算器）に対して要素を出力可能なよう構成されている。また、ベクトルレジスタ１１は、後段の演算器群を構成する各演算器１２３から演算の結果を受け取ることが出来るよう構成されている。なお、どの演算器１２２のどのポートに出力するかを決定する出力先の制御は、後述するセレクタ１５により行われる。
【００２２】
なお、本実施形態においては、ベクトルレジスタ１１の一要素が１バイトであると定義する。しかしながら、ベクトルレジスタ１１の一要素は１バイト以外であっても構わない。
【００２３】
演算処理部１２は、ベクトルレジスタ１１に格納された要素を用いて、演算処理を実行する。
【００２４】
図２は、演算処理部１２の構成の一例を示している。図２を参照すると、演算処理部１２は、複数のレジスタ１２１と、複数の演算器１２２と、複数の演算器１２３と、を有している。なお、上記構成のうち複数の演算器１２２は、前段の演算器群を構成している。また、上記構成のうち複数の演算器１２３は、後段の演算器群を構成している。
【００２５】
図２で示すように、ベクトルレジスタ１１が保持する各要素は、リードレジスタであるレジスタ１２１を介して、前段の演算器群を構成する演算器１２２へと出力する。演算器１２２に対しては、リードレジスタであるレジスタ１２１から演算に用いる要素の供給が行われる。
【００２６】
前段の演算器群を構成する演算器１２２のそれぞれは、受信した要素を用いた演算を行う。演算器１２２には、例えば、乗算器１２２１、減算器１２２２、比較器、加算器、シフト器、などが含まれ得る。演算器１２２には、上記例示したものの一部のみが含まれても構わないし、上記例示したもの以外が含まれても構わない。
【００２７】
前段の演算器群を構成する演算器１２２のそれぞれは、後段の演算器群を構成する演算器１２３すべてと通信可能なよう接続されている。換言すると、図２で示すように、演算器１２２のそれぞれは、後段の演算器群を構成する演算器１２３すべてに対する入力パスを有する。このような構成により、演算器１２２のそれぞれは、当該演算器１２２による演算の結果を後段の演算器群のどのポートに対しても出力することが出来る。また、演算器１２２のそれぞれは、当該演算器１２２による演算の結果を、複数の演算器１２３に対して送信することが出来る。なお、どの演算器１２３のどのポートに出力するかを決定する出力先の制御は、後述するセレクタ１５により行われる。
【００２８】
後段の演算器群を構成する演算器１２３のそれぞれは、演算器１２２による演算後のデータ同士の演算を行う。上述したように、演算器１２２のそれぞれは、当該演算器１２２による演算の結果を、複数の演算器１２３に対して送信することが出来る。そのため、後段の演算器群を構成する演算器１２３のそれぞれは、前段の演算器群を構成する演算器１２２による演算後のデータを任意に組み合わせて演算を行うことが出来る。演算器１２３には、例えば、減算器１２３１、加算器１２３２、乗算器１２３３、比較器１２３４、シフト器、などが含まれ得る。演算器１２３には、上記例示したものの一部のみが含まれても構わないし、上記例示したもの以外が含まれても構わない。
【００２９】
上述したように、後段の演算器群を構成する演算器１２３のそれぞれは、複数のベクトルレジスタ１１それぞれと通信可能なよう接続されている。換言すると、演算器１２３のそれぞれは、複数のベクトルレジスタ１１すべてに対する入力パスを有する。このような構成により、後段の演算器群を構成する各演算器１２３は、演算の結果を任意のベクトルレジスタ１１の任意の要素に格納することが出来る。
【００３０】
以上が、演算処理部１２の構成の一例である。なお、演算処理部１２は、図２で例示した以外の構成を有していても構わない。例えば、ベクトルレジスタ１１は、少なくとも一部の演算器１２３に対する入力パスを有しても構わない。また、演算処理部１２は、３段以上な複数段の演算器群を有していても構わない。
【００３１】
変換部１３は、演算処理部１２で実行する命令に応じて、データ型の変換を行う。例えば、変換部１３は、命令に応じて実行する演算の種類や演算対象などに応じて、１つの値をいくつの要素を用いて表現するかを示すデータ型の変換を行う。
【００３２】
具体的には、例えば、変換部１３は、図３で示す１要素が１バイトである１バイト型を、二要素をまとめて１つの要素として扱う半精度型（図４参照）へと変換する。このような変換を行う場合、変換部１３は、変換前に一要素を用いて表現されている値を、二要素を用いて表現することになる。また、変換部１３は、図４で示す半精度型を、四要素をまとめて１つの要素として扱う単精度型（図５参照）へと変換する。また、変換部１３は、図５で示す単精度型を、八要素をまとめて１つの要素として扱う倍精度型に変換する。このように、変換部１３は、命令に応じて実行する演算の種類や演算対象などに応じて、１バイト型を、半精度型、単精度型、倍精度型、などのいずれかに変換することが出来る。
【００３３】
データ型判断部１４は、演算処理部１２において実行する命令に応じて、ベクトルレジスタ１１が保持する各要素をどのようなデータ型で扱うか判断する。例えば、データ型判断部１４は、命令に応じて実行する演算の種類や演算対象などに応じて、ベクトルレジスタ１１が保持する各要素をどのようなデータ型で扱うか判断する。データ型判断部１４が判断するデータ型には、例えば、１つの値をいくつの要素を用いて表現するかを示すためのデータ型と、多項式や分数など演算対象の種類に応じたデータ型と、などがある。データ型判断部１４による判断結果に応じて、ベクトルレジスタ１１の複数要素が１つの要素として扱われることになる。
【００３４】
図３から図１２までは、データ型判断部１４が判断するデータ型の一例を示している。具体的には、図３から図６までは、１つの値をいくつの要素を用いて表現するかを示すためのデータ型の一例を示しており、図７から図１２までは、多項式や分数など演算対象の種類に応じたデータ型の一例を示している。
【００３５】
図３は、一要素が１バイトである１バイト型のデータ構造の一例を示している。データ構造が１バイト型である場合、最大ベクトル長は、例えば、２５６となる。１バイト型のデータ構造は、従来用いられているものと同じである。
【００３６】
図４は、二要素をまとめて１つの要素として扱い半精度を表現する半精度型のデータ構造の一例を示している。データ構造が半精度型である場合、二要素を用いて１つの値が表現されることになる。なお、データ構造が半精度型である場合、最大ベクトル長は、例えば、１２８になる。
【００３７】
図５は、四要素をまとめて１つの要素として扱い単精度を表現する単精度型のデータ構造の一例を示している。データ構造が単精度型である場合、前半から四要素ずつをまとめて１つの要素とする。つまり、データ構造が単精度型である場合、四要素を用いて１つの値が表現されることになる。なお、データ構造が単精度型である場合、最大ベクトル長は、例えば、６４になる。
【００３８】
図６は、八要素をまとめて１つの要素として扱い倍精度を表現する倍精度型のデータ構造の一例を示している。データ構造が倍精度型である場合、前半から八要素ずつまとめて１つの要素とする。つまり、データ構造が倍精度型である場合、八要素を用いて１つの値が表現されることになる。なお、データ構造が倍精度型である場合、最大ベクトル長は、例えば、３２になる。
【００３９】
以上が、１つの値をいくつの要素を用いて表現するかを示すためのデータ型の一例である。なお、上述したように、上述した各データ型は、演算処理部１２で実行する命令に応じて、変換部１３によりデータ構造の変換を行うことが出来るデータ型である。
【００４０】
図７は、二要素をまとめて１つの要素として扱い多項式（ａｘ＋ｂ）を表現する多項式型のデータ構造の一例を示している。データ構造が多項式型である場合、例えば、前半から二要素ずつまとめて１つの要素とする。つまり、データ構造が多項式型である場合、二要素を用いて１つの多項式が表現されることになる。例えば、図７で示す場合、一要素が値ａを表し、一要素が値ｂを表すことで、二要素を用いて１つの多項式を表現している。なお、データ構造が上記のような多項式型である場合、最大ベクトル長は、例えば、１２８になる。
【００４１】
なお、図７で示す多項式型のうちのａやｂなどの値は、図７で示すような１バイト型ではなく半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。例えば、多項式型の各値を半精度型で表す場合、二要素を用いてａを表し二要素を用いてｂを表す、つまり、四要素を用いて１つの多項式を表現することになる。
【００４２】
図８は、二要素をまとめて１つの要素として扱い分数（ａ／ｂ）を表現する分数型のデータ構造の一例を示している。データ構造が分数型である場合、例えば、前半から二要素ずつまとめて１つの要素とする。つまり、データ構造が分数型である場合、二要素を用いて１つの多項式が表現されることになる。例えば、図８で示す場合、一要素が値ａを表し、一要素が値ｂを表すことで、二要素を用いて１つの分数を表現している。なお、データ構造が上記のような分数型である場合、最大ベクトル長は、例えば、１２８になる。
【００４３】
なお、図８で示す分数型のうちのａやｂなどの値は、多項式型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
【００４４】
図９は、二要素をまとめて１つの要素として扱い複素数（ａ＋ｂｉ）を表現する複素数型のデータ構造の一例を示している。データ構造が複素数型である場合、例えば、前半から二要素ずつまとめて１つの要素とする。つまり、データ構造が複素数型である場合、二要素を用いて１つの複素数が表現されることになる。例えば、図９で示す場合、一要素が値ａを表し、一要素が値ｂを表すことで、二要素を用いて１つの複素数を表現している。なお、データ構造が上記のような複素数型である場合、最大ベクトル長は、例えば、１２８になる。
【００４５】
なお、図９で示す分数型のうちのａやｂなどの値は、多項式型や分数型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
【００４６】
図１０は、四要素をまとめて１つの要素として扱い四元数（ａ＋ｂｉ＋ｃｊ＋ｄｋ）を表現する四元数型のデータ構造の一例を示している。データ構造が四元数型である場合、例えば、前半から四要素ずつまとめて１つの要素とする。つまり、データ構造が四元数型である場合、四要素を用いて１つの四元数が表現されることになる。例えば、図１０で示す場合、一要素が値ａを表し、一要素が値ｂを表し、一要素が値ｃを表し、一要素が値ｄを表すことで、四要素を用いて１つの四元数を表現している。なお、データ構造が上記のような複素数型である場合、最大ベクトル長は、例えば、６４になる。
【００４７】
なお、図１０で示す四元数型のうちのａ、ｂ、ｃ、ｄなどの値は、多項式型、分数型、複素数型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
【００４８】
図１１は、四要素をまとめて１つの要素として扱い２×２行列を表現する２×２行列型のデータ構造の一例を示している。データ構造が２×２行列型である場合、例えば、前半から四要素ずつまとめて１つの要素とする。つまり、データ構造が２×２行列型である場合、四要素を用いて１つの２×２行列が表現されることになる。例えば、図１１で示す場合、一要素が値ａを表し、一要素が値ｂを表し、一要素が値ｃを表し、一要素が値ｃを表すことで、四要素を用いて１つの２×２行列を表現している。なお、データ構造が上記のような２×２行列型である場合、最大ベクトル長は、例えば、６４になる。
【００４９】
なお、図１１で示す２×２行列型のうちのａ、ｂ、ｃ、ｄなどの値は、多項式型、分数型、複素数型、四元数型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
【００５０】
図１２は、一六要素をまとめて１つの要素として扱い４×４行列を表現する４×４行列型のデータ構造の一例を示している。データ構造が４×４行列型である場合、例えば、前半から一六要素ずつまとめて１つの要素とする。つまり、データ構造が４×４行列型である場合、一六要素を用いて１つの４×４行列が表現されることになる。例えば、図１２で示す場合、各一要素を用いて値ａ、値ｂ、値ｃ、値ｄ、値ｅ、値ｆ、値ｇ、値ｈ、値ｉ、値ｊ、値ｋ、値ｌ、値ｍ、値ｎ、値ｏ、値ｐをそれぞれを表すことで、一六要素を用いて１つの行列を表現している。なお、データ構造が上記のような行列型である場合、最大ベクトル長は、例えば、１６になる。
【００５１】
なお、図１２で示す行列型のうちのａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、ｈ、ｉ、ｊ、ｋ、ｌ、ｍ、ｎ、ｏ、ｐなどの値は、多項式型、分数型、複素数型、四元数型、２×２行列型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
【００５２】
以上が、演算対象の種類に応じたデータ型の一例である。なお、演算対象の種類に応じたデータ型には、上記例示したもの以外を含めても構わない。例えば、データ型には、２×３行列型なども含めることが出来る。
【００５３】
データ型判断部１４は、命令に応じて実行する演算の種類や演算対象などに応じて、ベクトルレジスタ１１が保持する各要素を上述した各データ型のうちのいずれのデータ型で扱うか判断することになる。そして、データ型判断部１４は、判断した結果をセレクタ１５に出力する。
【００５４】
セレクタ１５は、データ型判断部１４による判断の結果や実行する命令の種類（例えば、命令により実行する演算の種類）に基づいて、ベクトルレジスタ１１が保持する各要素の出力先や、演算器１２２や演算器１２３による演算の結果の出力先を決定する。つまり、セレクタ１５は、ベクトルレジスタ１１が記憶する要素の出力先を決定する出力先決定部として動作する。セレクタ１５が決定した出力先にベクトルレジスタ１１が保持する各要素を出力することで、演算を実行することになる。
【００５５】
例えば、セレクタ１５は、ベクトルレジスタ１１が保持する各要素を、前段の演算器群を構成する演算器１２２のうちのどの演算器１２２のどの入力ポートに入力するか決定する。つまり、セレクタ１５は、データ型判断部１４による判断の結果に基づいて、命令に応じた処理を演算処理部１２が実行するよう、ベクトルレジスタ１１が保持する各要素の出力先を決定する。セレクタ１５による決定に応じて、ベクトルレジスタ１１が保持する各要素は、決定されたポートへと入力されることになる。
【００５６】
また、セレクタ１５は、データ型判断部１４による判断の結果に基づいて、前段の演算器群を構成する演算器１２２のそれぞれによる演算の結果をどの演算器１２３のどのポートに出力するか決定する。つまり、セレクタ１５は、データ型判断部１４による判断の結果に基づいて、命令に応じた処理を演算処理部１２が実行するよう、演算器１２２による演算の結果の出力先を決定する。セレクタ１５による決定に応じて、演算器１２２による演算の結果は、決定されたポートへと入力されることになる。
【００５７】
また、セレクタ１５は、データ型判断部１４による判断の結果に基づいて、後段の演算器群を構成する演算器１２３のそれぞれによる演算の結果をどのベクトルレジスタ１１のどの要素に格納するか決定する。
【００５８】
ここで、図１３から図１７を参照して、具体的な演算を行う際の処理の一例について説明する。これにより、セレクタ１５により決定される出力先の制御の具体的な一例について説明する。
【００５９】
図１３は、複素数同士の乗算を行う場合について例示している。具体的には、（ａ＋ｂｉ）×（ｃ＋ｄｉ）の演算を行う場合について例示している。図１３を参照すると、複素数同士の乗算を行う場合、データ型判断部１４は、ベクトルレジスタ１１が保持する各要素を、二要素をまとめて１つの要素として扱い複素数を表現する複素数型のデータ構造として扱うと判断する。例えば、データ型判断部１４は、ベクトルレジスタ１１−１の一要素が値ａを表現し、続く一要素が値ｂを表現することで、二要素をまとめて１つの複素数（ａ＋ｂｉ）を表現していると判断する。また、データ型判断部１４は、ベクトルレジスタ１１−２の一要素が値ｃを表現し、続く一要素が値ｄを表現することで、二要素をまとめて１つの複素数（ｃ＋ｄｉ）を表現していると判断する。
【００６０】
セレクタ１５は、上記データ型判断部１４による判断の結果と実行する命令の種類（この場合、複素数同士の乗算）に応じて、各要素の出力先となるポートを決定する。例えば、セレクタ１５は、乗算器１２２１−１に対して値ａを表現する要素と値ｃを表現する要素を出力すると決定する。また、セレクタ１５は、乗算器１２２１−２に対して値ｂを表現する要素と値ｄを表現する要素を出力すると決定する。上記の結果、乗算器１２２１−１ではａｃが算出され、乗算器１２２１−２ではｂｃが算出される。また、乗算器１２２１−１、乗算器１２２１−２による演算の結果は、セレクタ１５による決定に応じて、減算器１２３１に出力される。これにより、減算器１２３１では、ａｃ−ｂｄを算出する。同様に、セレクタ１５が出力先を決定することにより、乗算器１２２１−３、乗算器１２２１−４、加算器１２３２により、ａｄ＋ｂｃを算出する。その結果、ベクトルレジスタ１１には、一要素としてａｃ−ｂｄが格納され、続く一要素としてａｄ＋ｂｃが格納される。ここで、上述したように、図１３で示す例の場合、データ型判断部１４は、ベクトルレジスタ１１が保持する各要素を、二要素をまとめて１つの要素として扱い複素数を表現する複素数型のデータ構造として扱うと判断している。従って、上記ベクトルレジスタ１１が保持する二要素は、ａｃ−ｂｄ＋（ａｄ＋ｂｃ）ｉの複素数を表現していることになる。
【００６１】
以上のように、ベクトル長２の複素数同士の乗算では、４回の乗算と１回の加算と１回の減算を行っている。つまり、合計６回の演算を行っている。
【００６２】
図１４は、２×２行列同士の乗算を行う場合について例示している。図１４を参照すると、２×２行列同士の乗算を行う場合、データ型判断部１４は、ベクトルレジスタ１１が保持する各要素を、四要素をまとめて１つの要素として扱い２×２行列を表現する２×２行列型のデータ構造として扱うと判断する。例えば、データ型判断部１４は、ベクトルレジスタ１１−１の各要素が値ａ１、値ｂ１、値ｃ１、値ｄ１を表現することで、四要素をまとめて１つの２×２行列を表現していると判断する。また、データ型判断部１４は、ベクトルレジスタ１１−２の各要素が値ａ２、値ｂ２、値ｃ２、値ｄ２を表現することで、四要素をまとめて１つの２×２行列を表現していると判断する。
【００６３】
セレクタ１５は、上記データ型判断部１４による判断の結果と実行する命令の種類（この場合、２×２行列同士の乗算）に応じて、各要素の出力先となるポートを決定する。セレクタ１５が出力先を決定することにより、乗算器１２２１−１、乗算器１２２１−２、加算器１２３２−１により、ａ１ａ２＋ｂ１ｃ２を算出する。同様に、乗算器１２２１−３、乗算器１２２１−４、加算器１２３２−２により、ａ１ｂ２＋ｂ１ｄ２を算出する。また、乗算器１２２１−５、乗算器１２２１−６、加算器１２３２−３により、ｃ１ａ２＋ｄ１ｃ２を算出する。また、乗算器１２２１−７、乗算器１２２１−８、加算器１２３２−４により、ｃ１ｂ２＋ｄ１ｄ２を算出する。その結果、ベクトルレジスタ１１には、一要素としてａ１ａ２＋ｂ１ｃ２が格納され、続く一要素としてａ１ｂ２＋ｂ１ｄ２が格納され、続く一要素としてｃ１ａ２＋ｄ１ｃ２が格納され、続く一要素としてｃ１ｂ２＋ｄ１ｄ２が格納される。ここで、上述したように、図１４で示す例の場合、データ型判断部１４は、ベクトルレジスタ１１が保持する各要素を、四要素をまとめて１つの要素として扱い２×２行列を表現する２×２行列型のデータ構造として扱うと判断している。従って、上記ベクトルレジスタ１１が保持する四要素は、２×２行列同士の乗算結果を表現していることになる。
【００６４】
以上のように、ベクトル長４の２×２行列同士の乗算では、８回の乗算と４回の加算を行っている。つまり、合計１２回の演算を行っている。
【００６５】
図１５は、除算（ａ／ｂ）を行う場合について例示している。除算を行う場合も、データ型判断部１４による判断の結果に基づいて、二要素をまとめて１つの除算を表現していると判断する。例えば、図１５で示す場合、二要素をまとめて１つの要素とし、前半の要素に被除数ａ、後半の要素に除数ｂが格納されている。そして、セレクタ１５による出力先の決定に応じて、演算処理部１２で演算が行われる。
【００６６】
図１５では、ゴールドシュミット除算という、乗算のみで除算を行うことができるアルゴリズムを使用する場合について例示している。図１５で示す動作を数回繰り返すことで、除算結果を得ることができる。なお、精度によって、図１５で示す動作を繰り返す回数は変更される。
【００６７】
図１６では、ソートを行う場合について例示している。図１６では、バブルソートを用いる場合について例示している。バブルソートでは、図１６中の１、２の操作を要素−１回繰り返すことで、ベクトルレジスタ１１内のソートを行う。
【００６８】
なお、ソートを行う場合、データ型判断部１４による判断の結果に基づいてソートを行うことが出来る。例えば、データ型判断部１４が二要素をまとめて１つの複素数（ｃ＋ｄｉ）を表現する複素数型と判断している場合、１つの複素数を表現していると判断される二要素を１つの要素とみなして、二要素で表現される各１つの要素ずつのソートを行うことが出来る。
【００６９】
図１７は、半精度の乗算を行う場合について例示している。図１７で示す場合、二要素を用いて１つの値が表現されることになる。例えば、図１７で示す場合、データ型判断部１４は、ベクトルレジスタ１１−１が保持する二要素を用いて被乗数が表現されていると判断する。また、データ型判断部１４は、ベクトルレジスタ１１−２が保持する二要素を用いて乗数が表現されていると判断する。
【００７０】
セレクタ１５は、上記データ型判断部１４による判断の結果と実行する命令の種類（半精度の乗算）に応じて、各要素の出力先となるポートを決定する。半精度同士の乗算を行う場合、８ビットの乗算器１２２１４つと、桁数の調整を行うシフト器と、演算結果を加算する加算器１２３２と、を用いることで演算結果を得ることが出来る。
【００７１】
なお、単精度や倍精度の乗算を行う場合も、半精度の場合と同様に、複数の乗算器と、シフト器と、加算器と、を組み合わせて演算を行うことで実現することが出来る。
【００７２】
上述したように、セレクタ１５は、データ型判断部１４による判断の結果や実行する命令の種類に基づいて、ベクトルレジスタ１１が保持する各要素や演算器１２２や演算器１２３による演算の結果の出力先を決定する。
【００７３】
以上が、ベクトルプロセッサ１の構成の一例である。続いて、図１８を参照して、ベクトルプロセッサ１が行う演算実行方法の一例について説明する。
【００７４】
ベクトルプロセッサ１は、演算に用いるベクトルデータを主記憶から取得して、ベクトルレジスタ１１に格納する。これにより、ベクトルレジスタ１１は、演算に用いるベクトルデータを表す複数の要素を保持する。
【００７５】
図１８を参照すると、変換部１３は、ベクトルレジスタ１１が保持する要素を用いて実行する演算の種類などに応じて、データ構造の変換を行うか否か判断する（ステップＳ１０１）。データ構造の変換を行う場合（ステップＳ１０１、Ｙｅｓ）、変換部１３は、１バイト型を、半精度型、単精度型、倍精度型、などのいずれかに変換することで、データ構造の変換を行う。一方、データ構造の変換を行わない場合（ステップＳ１０１、Ｎｏ）、変換部１３は、上記データ構造の変換を行わない。
【００７６】
データ型判断部１４は、演算処理部１２において実行する命令に応じて、ベクトルレジスタ１１が保持する各要素をどのようなデータ型で扱うか判断する（ステップＳ１０３）。データ型判断部１４が判断するデータ型には、例えば、１つの値をいくつの要素を用いて表現するかを示すためのデータ型と、多項式や分数など演算対象の種類に応じたデータ型と、などがある。そして、データ型判断部１４は、判断した結果をセレクタ１５に出力する。
【００７７】
セレクタ１５は、データ型判断部１４による判断の結果や実行する命令の種類に基づいて、ベクトルレジスタ１１が保持する各要素の出力先や、演算器１２２や演算器１２３による演算の結果の出力先を決定する（ステップＳ１０３）。
【００７８】
セレクタ１５による決定に基づいて、ベクトルレジスタ１１が保持する各要素は、演算処理部１２に含まれる演算器１２２や演算器１２３に出力される。これにより、演算処理部１２は、演算を実行する（ステップＳ１０４）。その後、演算処理部１２は、演算した結果をベクトルレジスタ１１に出力する。
【００７９】
以上が、ベクトルプロセッサ１が行う演算実行方法の一例である。
【００８０】
このように、本実施形態におけるベクトルプロセッサ１は、データ型判断部１４とセレクタ１５とを有している。このような構成により、セレクタ１５は、データ型判断部１４による判断の結果や実行する命令の種類に基づいて、ベクトルレジスタ１１が保持する各要素の出力先などを決定することが出来る。その結果、ベクトルプロセッサ１は、複数の要素を１つの要素にまとめた結果に基づく演算を行うことが可能となる。
【００８１】
ここで、半精度、単精度、倍精度、行列、複素数、四元数、多項式などの乗算は、同じデータに対して演算を一度以上する。そのため、上記構成によると、Ｂ／Ｆ（Ｂｙｔｅ／Ｆｌｏｐ）値が小さい場合でも演算器を効率良く使うことが可能となり、性能を高めることが可能となる。
【００８２】
なお、図１９は、ベクトル長４のベクトルレジスタ２１を用いた通常の乗算の一例を示している。図１９で示すように、通常の乗算の場合、それぞれ各要素で乗算を行うことが出来る。つまり、通常の乗算では、４つの乗算器２２を用いて４回の演算を行うことができる。一方で、例えば上述したベクトル長４のベクトルレジスタ１１で２×２行列を表現する２×２行列型の乗算の場合、８回の乗算と４回の加算を行って合計１２回の演算を行うことができる（図１４参照）。ここで、通常の乗算と２×２行列の乗算を比較すると、オペランドに使用する要素数は同じであるが、通常の乗算の演算回数は４回であるのに対して、２×２行列の乗算の演算回数は１２回となる。つまり、２×２行列型の乗算では通常の乗算より３倍の演算をすることが出来ることが分かる。このように、ベクトルレジスタ１１の要素にデータ型を定義すると、多様なデータ型を表現することが出来る。その結果、Ｂ／Ｆ値が小さい場合でも、演算器を効率良く使い、性能を高めることが可能となる。
【００８３】
［第２の実施形態］
次に、図２０を参照して、本発明の第２の実施形態について説明する。第２の実施形態では、ベクトルプロセッサ３の構成の概要について説明する。
【００８４】
ベクトルプロセッサ３は、後述する出力先決定部３３が決定した出力先に各要素を出力することで演算を実行する。図２０は、ベクトルプロセッサ３の構成の一例を示している。図２０を参照すると、ベクトルプロセッサ３は、一時記憶装置３１と、データ型判断部３２と、出力先決定部３３と、を有している。なお、ベクトルプロセッサ３は、図示しない演算装置と記憶装置とを有している。ベクトルプロセッサ３は、図示しない記憶装置に格納されたプログラムを演算装置が実行することで、データ型判断部３２と、出力先決定部３３と、を実現する。なお。上記各処理部は、演算回路などにより実現されても構わない。
【００８５】
一時記憶装置３１は、命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する。
【００８６】
データ型判断部３２は、命令に応じて、一時記憶装置３１が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断する。また、出力先決定部３３は、データ型判断部３２による判断の結果に基づいて、一時記憶装置３１が記憶する要素の出力先を決定する。上述したように、ベクトルプロセッサ３は、出力先決定部３３が決定した出力先に各要素を出力することで演算を実行する。
【００８７】
このように、本実施形態におけるベクトルプロセッサ３は、データ型判断部３２と出力先決定部３３と、を有している。このような構成により、出力先決定部３３は、データ型判断部３２による判断の結果に基づいて、一時記憶装置３１が記憶する要素の出力先を決定することが出来る。その結果、ベクトルプロセッサ１は、複数の要素を１つの要素にまとめた結果に基づく演算を行うことが可能となる。これにより、演算器を効率良く使うことが可能となり、性能を高めることが可能となる。
【００８８】
また、上述したベクトルプロセッサ３は、当該ベクトルプロセッサ３に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置３１を有するベクトルプロセッサに、命令に応じて、一時記憶装置３１が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部３２と、データ型判断部３２による判断の結果に基づいて、一時記憶装置３１が記憶する要素の出力先を決定する出力先決定部３３と、を実現させ、出力先決定部３３が決定した出力先に各要素を出力することで演算を実行する、プログラムである。
【００８９】
また、上述したベクトルプロセッサ３により実行される演算実行方法は、命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置３１を有するベクトルプロセッサが、命令に応じて、一時記憶装置３１が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、判断の結果に基づいて、一時記憶装置３１が記憶する要素の出力先を決定し、決定した出力先に各要素を出力することで演算を実行する、という方法である。
【００９０】
上述した構成を有する、プログラム、又は、演算実行方法、の発明であっても、上記ベクトルプロセッサ３と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【００９１】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるベクトルプロセッサなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
【００９２】
（付記１）
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
ベクトルプロセッサ。
（付記２）
付記１に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じてデータ型を判断することで、前記一時記憶装置が記憶する複数の要素を１つの要素として扱う
ベクトルプロセッサ。
（付記３）
付記１又は付記２に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、１つの値をいくつの要素を用いて表現するかを示すデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
（付記４）
付記１から付記３までのいずれか１項に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
（付記５）
付記１から付記４までのいずれか１項に記載のベクトルプロセッサであって、
前記出力先決定部は、前記データ型判断部による判断の結果と、前記命令の種類と、に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する
ベクトルプロセッサ。
（付記６）
付記１から付記５までのいずれか１項に記載のベクトルプロセッサであって、
前記一時記憶装置が記憶する各要素を用いて前記演算を実行する演算処理部を有し、
前記出力先決定部は、前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する各要素を前記演算処理部に含まれる演算器のうちのどの演算器のどのポートに出力するか決定することで、各要素の出力先を決定する
ベクトルプロセッサ。
（付記７）
付記６に記載のベクトルプロセッサであって、
前記演算処理部に含まれる前記演算器のそれぞれは、前記一時記憶装置と通信可能なよう接続されている
ベクトルプロセッサ。
（付記８）
付記１から付記７までのいずれか１項に記載のベクトルプロセッサであって、
前記一時記憶装置が保持する要素のデータ型のうちの、１つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
ベクトルプロセッサ。
（付記９）
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、
判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
決定した出力先に各要素を出力することで前記演算を実行する
演算実行方法。
（付記１０）
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を実現させ、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
プログラム。
【００９３】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００９４】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【００９５】
１  ベクトルプロセッサ
１１  ベクトルレジスタ
１２  演算処理部
１２１  レジスタ
１２２  演算器
１２２１  乗算器
１２２２  減算器
１２３  演算器
１２３１  減算器
１２３２  加算器
１２３３  乗算器
１２３４  比較器
１３  変換部
１４  データ型判断部
１５  セレクタ
２１  ベクトルレジスタ
２２  乗算器
３  ベクトルプロセッサ
３１  一時記憶装置
３２  データ型判断部
３３  出力先決定部
【図１】
2019159440.tif 000003
【図２】
2019159440.tif 000004
【図３】
2019159440.tif 000005
【図４】
2019159440.tif 000006
【図５】
2019159440.tif 000007
【図６】
2019159440.tif 000008
【図７】
2019159440.tif 000009
【図８】
2019159440.tif 000010
【図９】
2019159440.tif 000011
【図１０】
2019159440.tif 000012
【図１１】
2019159440.tif 000013
【図１２】
2019159440.tif 000014
【図１３】
2019159440.tif 000015
【図１４】
2019159440.tif 000016
【図１５】
2019159440.tif 000017
【図１６】
2019159440.tif 000018
【図１７】
2019159440.tif 000019
【図１８】
2019159440.tif 000020
【図１９】
2019159440.tif 000021
【図２０】
2019159440.tif 000022
【手続補正書】
【提出日】平成31年4月3日(2019.4.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行し、
前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
【請求項２】
請求項１に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じてデータ型を判断することで、前記一時記憶装置が記憶する複数の要素を１つの要素として扱う
ベクトルプロセッサ。
【請求項３】
請求項１又は２に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、１つの値をいくつの要素を用いて表現するかを示すデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
【請求項４】
請求項１から請求項３までのいずれか１項に記載のベクトルプロセッサであって、
前記出力先決定部は、前記データ型判断部による判断の結果と、前記命令の種類と、に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する
ベクトルプロセッサ。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のベクトルプロセッサであって、
前記一時記憶装置が記憶する各要素を用いて前記演算を実行する演算処理部を有し、
前記出力先決定部は、前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する各要素を前記演算処理部に含まれる演算器のうちのどの演算器のどのポートに出力するか決定することで、各要素の出力先を決定する
ベクトルプロセッサ。
【請求項６】
請求項５に記載のベクトルプロセッサであって、
前記演算処理部に含まれる前記演算器のそれぞれは、前記一時記憶装置と通信可能なよう接続されている
ベクトルプロセッサ。
【請求項７】
請求項１から請求項６までのいずれか１項に記載のベクトルプロセッサであって、
前記一時記憶装置が保持する要素のデータ型のうちの、１つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
ベクトルプロセッサ。
【請求項８】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断し、
判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
決定した出力先に各要素を出力することで前記演算を実行する
演算実行方法。
【請求項９】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を実現させ、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行し、
前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
プログラム。
【請求項１０】
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行し、
前記一時記憶装置が保持する要素のデータ型のうちの、１つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
ベクトルプロセッサ。