JP6604393B2 - ベクトルプロセッサ、演算実行方法、プログラム - Google Patents

ベクトルプロセッサ、演算実行方法、プログラム Download PDF

Info

Publication number
JP6604393B2
JP6604393B2 JP2018041432A JP2018041432A JP6604393B2 JP 6604393 B2 JP6604393 B2 JP 6604393B2 JP 2018041432 A JP2018041432 A JP 2018041432A JP 2018041432 A JP2018041432 A JP 2018041432A JP 6604393 B2 JP6604393 B2 JP 6604393B2
Authority
JP
Japan
Prior art keywords
determination unit
data type
storage device
output destination
temporary storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018041432A
Other languages
English (en)
Other versions
JP2019159440A (ja
Inventor
慧 木本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2018041432A priority Critical patent/JP6604393B2/ja
Priority to US16/292,554 priority patent/US10877764B2/en
Publication of JP2019159440A publication Critical patent/JP2019159440A/ja
Application granted granted Critical
Publication of JP6604393B2 publication Critical patent/JP6604393B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length

Description

本発明は、ベクトルプロセッサ、演算実行方法、プログラムに関する。
ベクトルレジスタに格納したデータを用いて演算を行うベクトルプロセッサが知られている。
このような技術の一つとして、例えば、特許文献1がある。特許文献1には、1マシンサイクルに2要素以上で演算処理することを可能とするためのベクトル演算処理装置が記載されている。具体的には、ベクトル演算処理装置は、分配手段と、処理要素数制御手段と、を有している。特許文献1によると、分配手段は、ベクトル演算器へ被演算ベクトルデータの供給を行う。また、処理要素数制御手段は、分配手段にマシンサイクルあたりの処理可能な被演算ベクトルデータ数を指示し、かつマシンサイクルあたりの処理可能な被演算ベクトルデータ数に応じた数のベクトル演算器に演算処理を指示する。
特開H10−312374号公報
特許文献1に記載されているようなベクトル演算処理装置(ベクトルプロセッサ)を用いて演算を行う場合、通常2つのオペランドが必要になる。例えば、2つのオペランドをメモリから読み込み(8byte×2)、演算結果をメモリに書き込む(8byte)と、24byteのメモリリード、メモリライトが発生する。この間に行われる演算回数は1回のみであるが、実際、このような計算で必要となるB/F(Byte/Flop)値は24である。
一方で、一般的な最先端計算機のB/F値は0.5以下になっており、必要となるB/F値と実際のB/F値との間には大きな差が生じている。その結果、例えば、上記のようなオペランドA、オペランドBをメモリからリードして演算結果Cをメモリにライトする、などの単純な計算を繰り返すプログラムでは、性能をほとんど出すことができず、ほとんどの時間CPUの演算器リソースを無駄にしてしまう、という問題が生じていた。換言すると、ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という問題が生じていた。
そこで、本発明の目的は、ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という問題を解決するベクトルプロセッサ、演算実行方法、プログラムを提供することにある。
かかる目的を達成するため本発明の一形態であるベクトルプロセッサは、
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
という構成を採る。
また、本発明の他の形態である演算実行方法は、
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、
判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
決定した出力先に各要素を出力することで前記演算を実行する
という構成を採る。
また、本発明の他の形態であるプログラムは、
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を実現させ、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行するプログラムである。
本発明は、以上のように構成されることにより、ベクトルプロセッサにおいては、演算器を効率的に使って性能を高めることが難しい、という問題を解決するベクトルプロセッサ、演算実行方法、プログラムを提供することが可能となる。
本発明の第1の実施形態におけるベクトルプロセッサの構成の一例を示すブロック図である。 図1で示す演算処理部の構成の一例を示す図である。 一要素が一バイトの場合を示す図である。 二要素をまとめて一要素として扱い半精度を表現する図である。 四要素をまとめて一要素として扱い単精度を表現する図である。 八要素をまとめて一要素として扱い倍精度を表現する図である。 二要素をまとめて一要素として扱い多項式を表現する図である。 二要素をまとめて一要素として扱い分数を表現する図である。 二要素をまとめて一要素として扱い複素数を表現する図である。 四要素をまとめて一要素として扱い四元数を表現する図である。 四要素を一要素として扱い2×2行列を表現する図である。 十六要素を一要素として扱い4×4行列を表現する図である。 複素数同士の乗算を行う際の処理の一例を説明するための図である。 2×2行列同士の乗算を行う際の処理の一例を説明するための図である。 除算を行う際の処理の一例を説明するための図である。 ソートを行う際の処理の一例を説明するための図である。 半精度の乗算を行う際の処理の一例を説明するための図である。 ベクトルプロセッサが行う演算処理方法の一例を示すフローチャートである。 一般的な乗算処理の一例を説明するための図である。 本発明の第2の実施形態におけるベクトルプロセッサの構成の一例を示すブロック図である。
[第1の実施形態]
本発明の第1の実施形態を図1から図19までを参照して説明する。図1は、ベクトルプロセッサ1の構成の一例を示す図である。図2は、演算処理部12の構成の一例を示す図である。図3から図12までは、データ構造の一例を説明するための図である。図13は、複素数同士の乗算を行う際の処理の一例を説明するための図である。図14は、2×2行列同士の乗算を行う際の処理の一例を説明するための図である。図15は、除算を行う際の処理の一例を説明するための図である。図16は、ソートを行う際の処理の一例を説明するための図である。図17は、半精度の乗算を行う際の処理の一例を説明するための図である。図18は、ベクトルプロセッサ1が行う演算処理方法の一例を示すフローチャートである。図19は、一般的な乗算処理の一例を説明するための図である。
第1の実施形態では、一時記憶装置であるベクトルレジスタ11に格納された各要素を用いて命令に応じた演算を行うベクトルプロセッサ1について説明する。後述するように、ベクトルプロセッサ1は、命令に応じて、ベクトルレジスタ11の複数要素をまとめて1つの要素として扱うことが出来るよう構成されている。このような構成により、半精度、単精度、倍精度、行列、複素数、四元数、多項式など多様なデータ型を1つの要素として扱うことが可能となる。
ベクトルプロセッサ1は、命令に応じた演算処理を実行する。後述するように、ベクトルプロセッサ1は、上記演算処理を実行する際に、ベクトルレジスタ11の複数要素をまとめて一要素として扱う。換言すると、ベクトルプロセッサ1は、命令に基づいて、ベクトルレジスタの要素にデータ型を定義する。
図1は、ベクトルプロセッサ1の構成の一例を示している。図1を参照すると、ベクトルプロセッサ1は、複数のベクトルレジスタ11と、演算処理部12と、変換部13と、データ型判断部14と、セレクタ15と、を有している。
なお、ベクトルプロセッサ1は、図示しない演算装置と記憶装置とを有している。ベクトルプロセッサ1は、図示しない記憶装置に格納されたプログラムを演算装置が実行することで、変換部13と、データ型判断部14と、セレクタ15と、を実現する。なお。上記各処理部は、演算回路などにより実現されても構わない。
ベクトルレジスタ11は、複数の要素を保持する一時記憶装置である。例えば、ベクトルレジスタ11は、256個の要素を保持することが出来る。ベクトルレジスタ11は、例えば、ベクトルプロセッサ1が主記憶から取得した、演算に用いるベクトルデータを表す複数の要素を保持する。
ベクトルレジスタ11は、当該ベクトルレジスタ11に格納されたそれぞれの要素を、演算処理部12に含まれる複数の演算器群に出力することが出来るよう構成されている。例えば、演算処理部12が、前段の演算器群(例えば、図2で示す演算器122)と、後段の演算器群(例えば、図2で示す演算器123)とを有しているとする。この場合、ベクトルレジスタ11は、前段の演算器群を構成する演算器122のすべてと通信可能なよう接続されている。換言すると、図2で示すように、ベクトルレジスタ11は、前段の演算器群を構成する演算器122すべてに対する入力パスを有する。このような構成により、ベクトルレジスタ11に格納された各要素は、前段の演算器群のどのポートに対しても出力することが出来る。また、ベクトルレジスタ11に格納された各要素は、複数の演算器群に対して出力することが出来る。
また、ベクトルレジスタ11は、演算処理部12に含まれる複数の演算器群から演算の結果を入力することが出来るよう構成されている。例えば、上記と同様に、演算処理部12が、前段の演算器群(例えば、図2で示す演算器122)と、後段の演算器群(例えば、図2で示す演算器123)とを有しているとする。この場合、ベクトルレジスタ11は、後段の演算器群を構成する演算器123のすべてと通信可能なよう接続されている。換言すると、図2で示すように、ベクトルレジスタ11は、後段の演算器群を構成する演算器123すべてからの入力パスを有する。このような構成により、後段の演算器群を構成する各演算器123は、演算の結果を任意のベクトルレジスタ11の任意の要素に格納することが出来る。
以上のように、ベクトルレジスタ11は、複数の要素を保持している。また、ベクトルレジスタ11は、演算処理部12に含まれる演算器群のうちの任意の演算器(例えば、演算処理部12が前段と後段の演算器群を含む場合、前段の演算器群のうちの任意の演算器)に対して要素を出力可能なよう構成されている。また、ベクトルレジスタ11は、後段の演算器群を構成する各演算器123から演算の結果を受け取ることが出来るよう構成されている。なお、どの演算器122のどのポートに出力するかを決定する出力先の制御は、後述するセレクタ15により行われる。
なお、本実施形態においては、ベクトルレジスタ11の一要素が1バイトであると定義する。しかしながら、ベクトルレジスタ11の一要素は1バイト以外であっても構わない。
演算処理部12は、ベクトルレジスタ11に格納された要素を用いて、演算処理を実行する。
図2は、演算処理部12の構成の一例を示している。図2を参照すると、演算処理部12は、複数のレジスタ121と、複数の演算器122と、複数の演算器123と、を有している。なお、上記構成のうち複数の演算器122は、前段の演算器群を構成している。また、上記構成のうち複数の演算器123は、後段の演算器群を構成している。
図2で示すように、ベクトルレジスタ11が保持する各要素は、リードレジスタであるレジスタ121を介して、前段の演算器群を構成する演算器122へと出力する。演算器122に対しては、リードレジスタであるレジスタ121から演算に用いる要素の供給が行われる。
前段の演算器群を構成する演算器122のそれぞれは、受信した要素を用いた演算を行う。演算器122には、例えば、乗算器1221、減算器1222、比較器、加算器、シフト器、などが含まれ得る。演算器122には、上記例示したものの一部のみが含まれても構わないし、上記例示したもの以外が含まれても構わない。
前段の演算器群を構成する演算器122のそれぞれは、後段の演算器群を構成する演算器123すべてと通信可能なよう接続されている。換言すると、図2で示すように、演算器122のそれぞれは、後段の演算器群を構成する演算器123すべてに対する入力パスを有する。このような構成により、演算器122のそれぞれは、当該演算器122による演算の結果を後段の演算器群のどのポートに対しても出力することが出来る。また、演算器122のそれぞれは、当該演算器122による演算の結果を、複数の演算器123に対して送信することが出来る。なお、どの演算器123のどのポートに出力するかを決定する出力先の制御は、後述するセレクタ15により行われる。
後段の演算器群を構成する演算器123のそれぞれは、演算器122による演算後のデータ同士の演算を行う。上述したように、演算器122のそれぞれは、当該演算器122による演算の結果を、複数の演算器123に対して送信することが出来る。そのため、後段の演算器群を構成する演算器123のそれぞれは、前段の演算器群を構成する演算器122による演算後のデータを任意に組み合わせて演算を行うことが出来る。演算器123には、例えば、減算器1231、加算器1232、乗算器1233、比較器1234、シフト器、などが含まれ得る。演算器123には、上記例示したものの一部のみが含まれても構わないし、上記例示したもの以外が含まれても構わない。
上述したように、後段の演算器群を構成する演算器123のそれぞれは、複数のベクトルレジスタ11それぞれと通信可能なよう接続されている。換言すると、演算器123のそれぞれは、複数のベクトルレジスタ11すべてに対する入力パスを有する。このような構成により、後段の演算器群を構成する各演算器123は、演算の結果を任意のベクトルレジスタ11の任意の要素に格納することが出来る。
以上が、演算処理部12の構成の一例である。なお、演算処理部12は、図2で例示した以外の構成を有していても構わない。例えば、ベクトルレジスタ11は、少なくとも一部の演算器123に対する入力パスを有しても構わない。また、演算処理部12は、3段以上な複数段の演算器群を有していても構わない。
変換部13は、演算処理部12で実行する命令に応じて、データ型の変換を行う。例えば、変換部13は、命令に応じて実行する演算の種類や演算対象などに応じて、1つの値をいくつの要素を用いて表現するかを示すデータ型の変換を行う。
具体的には、例えば、変換部13は、図3で示す1要素が1バイトである1バイト型を、二要素をまとめて1つの要素として扱う半精度型(図4参照)へと変換する。このような変換を行う場合、変換部13は、変換前に一要素を用いて表現されている値を、二要素を用いて表現することになる。また、変換部13は、図4で示す半精度型を、四要素をまとめて1つの要素として扱う単精度型(図5参照)へと変換する。また、変換部13は、図5で示す単精度型を、八要素をまとめて1つの要素として扱う倍精度型に変換する。このように、変換部13は、命令に応じて実行する演算の種類や演算対象などに応じて、1バイト型を、半精度型、単精度型、倍精度型、などのいずれかに変換することが出来る。
データ型判断部14は、演算処理部12において実行する命令に応じて、ベクトルレジスタ11が保持する各要素をどのようなデータ型で扱うか判断する。例えば、データ型判断部14は、命令に応じて実行する演算の種類や演算対象などに応じて、ベクトルレジスタ11が保持する各要素をどのようなデータ型で扱うか判断する。データ型判断部14が判断するデータ型には、例えば、1つの値をいくつの要素を用いて表現するかを示すためのデータ型と、多項式や分数など演算対象の種類に応じたデータ型と、などがある。データ型判断部14による判断結果に応じて、ベクトルレジスタ11の複数要素が1つの要素として扱われることになる。
図3から図12までは、データ型判断部14が判断するデータ型の一例を示している。具体的には、図3から図6までは、1つの値をいくつの要素を用いて表現するかを示すためのデータ型の一例を示しており、図7から図12までは、多項式や分数など演算対象の種類に応じたデータ型の一例を示している。
図3は、一要素が1バイトである1バイト型のデータ構造の一例を示している。データ構造が1バイト型である場合、最大ベクトル長は、例えば、256となる。1バイト型のデータ構造は、従来用いられているものと同じである。
図4は、二要素をまとめて1つの要素として扱い半精度を表現する半精度型のデータ構造の一例を示している。データ構造が半精度型である場合、二要素を用いて1つの値が表現されることになる。なお、データ構造が半精度型である場合、最大ベクトル長は、例えば、128になる。
図5は、四要素をまとめて1つの要素として扱い単精度を表現する単精度型のデータ構造の一例を示している。データ構造が単精度型である場合、前半から四要素ずつをまとめて1つの要素とする。つまり、データ構造が単精度型である場合、四要素を用いて1つの値が表現されることになる。なお、データ構造が単精度型である場合、最大ベクトル長は、例えば、64になる。
図6は、八要素をまとめて1つの要素として扱い倍精度を表現する倍精度型のデータ構造の一例を示している。データ構造が倍精度型である場合、前半から八要素ずつまとめて1つの要素とする。つまり、データ構造が倍精度型である場合、八要素を用いて1つの値が表現されることになる。なお、データ構造が倍精度型である場合、最大ベクトル長は、例えば、32になる。
以上が、1つの値をいくつの要素を用いて表現するかを示すためのデータ型の一例である。なお、上述したように、上述した各データ型は、演算処理部12で実行する命令に応じて、変換部13によりデータ構造の変換を行うことが出来るデータ型である。
図7は、二要素をまとめて1つの要素として扱い多項式(ax+b)を表現する多項式型のデータ構造の一例を示している。データ構造が多項式型である場合、例えば、前半から二要素ずつまとめて1つの要素とする。つまり、データ構造が多項式型である場合、二要素を用いて1つの多項式が表現されることになる。例えば、図7で示す場合、一要素が値aを表し、一要素が値bを表すことで、二要素を用いて1つの多項式を表現している。なお、データ構造が上記のような多項式型である場合、最大ベクトル長は、例えば、128になる。
なお、図7で示す多項式型のうちのaやbなどの値は、図7で示すような1バイト型ではなく半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。例えば、多項式型の各値を半精度型で表す場合、二要素を用いてaを表し二要素を用いてbを表す、つまり、四要素を用いて1つの多項式を表現することになる。
図8は、二要素をまとめて1つの要素として扱い分数(a/b)を表現する分数型のデータ構造の一例を示している。データ構造が分数型である場合、例えば、前半から二要素ずつまとめて1つの要素とする。つまり、データ構造が分数型である場合、二要素を用いて1つの多項式が表現されることになる。例えば、図8で示す場合、一要素が値aを表し、一要素が値bを表すことで、二要素を用いて1つの分数を表現している。なお、データ構造が上記のような分数型である場合、最大ベクトル長は、例えば、128になる。
なお、図8で示す分数型のうちのaやbなどの値は、多項式型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
図9は、二要素をまとめて1つの要素として扱い複素数(a+bi)を表現する複素数型のデータ構造の一例を示している。データ構造が複素数型である場合、例えば、前半から二要素ずつまとめて1つの要素とする。つまり、データ構造が複素数型である場合、二要素を用いて1つの複素数が表現されることになる。例えば、図9で示す場合、一要素が値aを表し、一要素が値bを表すことで、二要素を用いて1つの複素数を表現している。なお、データ構造が上記のような複素数型である場合、最大ベクトル長は、例えば、128になる。
なお、図9で示す分数型のうちのaやbなどの値は、多項式型や分数型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
図10は、四要素をまとめて1つの要素として扱い四元数(a+bi+cj+dk)を表現する四元数型のデータ構造の一例を示している。データ構造が四元数型である場合、例えば、前半から四要素ずつまとめて1つの要素とする。つまり、データ構造が四元数型である場合、四要素を用いて1つの四元数が表現されることになる。例えば、図10で示す場合、一要素が値aを表し、一要素が値bを表し、一要素が値cを表し、一要素が値dを表すことで、四要素を用いて1つの四元数を表現している。なお、データ構造が上記のような複素数型である場合、最大ベクトル長は、例えば、64になる。
なお、図10で示す四元数型のうちのa、b、c、dなどの値は、多項式型、分数型、複素数型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
図11は、四要素をまとめて1つの要素として扱い2×2行列を表現する2×2行列型のデータ構造の一例を示している。データ構造が2×2行列型である場合、例えば、前半から四要素ずつまとめて1つの要素とする。つまり、データ構造が2×2行列型である場合、四要素を用いて1つの2×2行列が表現されることになる。例えば、図11で示す場合、一要素が値aを表し、一要素が値bを表し、一要素が値cを表し、一要素が値cを表すことで、四要素を用いて1つの2×2行列を表現している。なお、データ構造が上記のような2×2行列型である場合、最大ベクトル長は、例えば、64になる。
なお、図11で示す2×2行列型のうちのa、b、c、dなどの値は、多項式型、分数型、複素数型、四元数型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
図12は、一六要素をまとめて1つの要素として扱い4×4行列を表現する4×4行列型のデータ構造の一例を示している。データ構造が4×4行列型である場合、例えば、前半から一六要素ずつまとめて1つの要素とする。つまり、データ構造が4×4行列型である場合、一六要素を用いて1つの4×4行列が表現されることになる。例えば、図12で示す場合、各一要素を用いて値a、値b、値c、値d、値e、値f、値g、値h、値i、値j、値k、値l、値m、値n、値o、値pをそれぞれを表すことで、一六要素を用いて1つの行列を表現している。なお、データ構造が上記のような行列型である場合、最大ベクトル長は、例えば、16になる。
なお、図12で示す行列型のうちのa、b、c、d、e、f、g、h、i、j、k、l、m、n、o、pなどの値は、多項式型、分数型、複素数型、四元数型、2×2行列型と同様に、半精度型、単精度型、倍精度型、などのデータ構造であっても構わない。
以上が、演算対象の種類に応じたデータ型の一例である。なお、演算対象の種類に応じたデータ型には、上記例示したもの以外を含めても構わない。例えば、データ型には、2×3行列型なども含めることが出来る。
データ型判断部14は、命令に応じて実行する演算の種類や演算対象などに応じて、ベクトルレジスタ11が保持する各要素を上述した各データ型のうちのいずれのデータ型で扱うか判断することになる。そして、データ型判断部14は、判断した結果をセレクタ15に出力する。
セレクタ15は、データ型判断部14による判断の結果や実行する命令の種類(例えば、命令により実行する演算の種類)に基づいて、ベクトルレジスタ11が保持する各要素の出力先や、演算器122や演算器123による演算の結果の出力先を決定する。つまり、セレクタ15は、ベクトルレジスタ11が記憶する要素の出力先を決定する出力先決定部として動作する。セレクタ15が決定した出力先にベクトルレジスタ11が保持する各要素を出力することで、演算を実行することになる。
例えば、セレクタ15は、ベクトルレジスタ11が保持する各要素を、前段の演算器群を構成する演算器122のうちのどの演算器122のどの入力ポートに入力するか決定する。つまり、セレクタ15は、データ型判断部14による判断の結果に基づいて、命令に応じた処理を演算処理部12が実行するよう、ベクトルレジスタ11が保持する各要素の出力先を決定する。セレクタ15による決定に応じて、ベクトルレジスタ11が保持する各要素は、決定されたポートへと入力されることになる。
また、セレクタ15は、データ型判断部14による判断の結果に基づいて、前段の演算器群を構成する演算器122のそれぞれによる演算の結果をどの演算器123のどのポートに出力するか決定する。つまり、セレクタ15は、データ型判断部14による判断の結果に基づいて、命令に応じた処理を演算処理部12が実行するよう、演算器122による演算の結果の出力先を決定する。セレクタ15による決定に応じて、演算器122による演算の結果は、決定されたポートへと入力されることになる。
また、セレクタ15は、データ型判断部14による判断の結果に基づいて、後段の演算器群を構成する演算器123のそれぞれによる演算の結果をどのベクトルレジスタ11のどの要素に格納するか決定する。
ここで、図13から図17を参照して、具体的な演算を行う際の処理の一例について説明する。これにより、セレクタ15により決定される出力先の制御の具体的な一例について説明する。
図13は、複素数同士の乗算を行う場合について例示している。具体的には、(a+bi)×(c+di)の演算を行う場合について例示している。図13を参照すると、複素数同士の乗算を行う場合、データ型判断部14は、ベクトルレジスタ11が保持する各要素を、二要素をまとめて1つの要素として扱い複素数を表現する複素数型のデータ構造として扱うと判断する。例えば、データ型判断部14は、ベクトルレジスタ11−1の一要素が値aを表現し、続く一要素が値bを表現することで、二要素をまとめて1つの複素数(a+bi)を表現していると判断する。また、データ型判断部14は、ベクトルレジスタ11−2の一要素が値cを表現し、続く一要素が値dを表現することで、二要素をまとめて1つの複素数(c+di)を表現していると判断する。
セレクタ15は、上記データ型判断部14による判断の結果と実行する命令の種類(この場合、複素数同士の乗算)に応じて、各要素の出力先となるポートを決定する。例えば、セレクタ15は、乗算器1221−1に対して値aを表現する要素と値cを表現する要素を出力すると決定する。また、セレクタ15は、乗算器1221−2に対して値bを表現する要素と値dを表現する要素を出力すると決定する。上記の結果、乗算器1221−1ではacが算出され、乗算器1221−2ではbcが算出される。また、乗算器1221−1、乗算器1221−2による演算の結果は、セレクタ15による決定に応じて、減算器1231に出力される。これにより、減算器1231では、ac−bdを算出する。同様に、セレクタ15が出力先を決定することにより、乗算器1221−3、乗算器1221−4、加算器1232により、ad+bcを算出する。その結果、ベクトルレジスタ11には、一要素としてac−bdが格納され、続く一要素としてad+bcが格納される。ここで、上述したように、図13で示す例の場合、データ型判断部14は、ベクトルレジスタ11が保持する各要素を、二要素をまとめて1つの要素として扱い複素数を表現する複素数型のデータ構造として扱うと判断している。従って、上記ベクトルレジスタ11が保持する二要素は、ac−bd+(ad+bc)iの複素数を表現していることになる。
以上のように、ベクトル長2の複素数同士の乗算では、4回の乗算と1回の加算と1回の減算を行っている。つまり、合計6回の演算を行っている。
図14は、2×2行列同士の乗算を行う場合について例示している。図14を参照すると、2×2行列同士の乗算を行う場合、データ型判断部14は、ベクトルレジスタ11が保持する各要素を、四要素をまとめて1つの要素として扱い2×2行列を表現する2×2行列型のデータ構造として扱うと判断する。例えば、データ型判断部14は、ベクトルレジスタ11−1の各要素が値a1、値b1、値c1、値d1を表現することで、四要素をまとめて1つの2×2行列を表現していると判断する。また、データ型判断部14は、ベクトルレジスタ11−2の各要素が値a2、値b2、値c2、値d2を表現することで、四要素をまとめて1つの2×2行列を表現していると判断する。
セレクタ15は、上記データ型判断部14による判断の結果と実行する命令の種類(この場合、2×2行列同士の乗算)に応じて、各要素の出力先となるポートを決定する。セレクタ15が出力先を決定することにより、乗算器1221−1、乗算器1221−2、加算器1232−1により、a1a2+b1c2を算出する。同様に、乗算器1221−3、乗算器1221−4、加算器1232−2により、a1b2+b1d2を算出する。また、乗算器1221−5、乗算器1221−6、加算器1232−3により、c1a2+d1c2を算出する。また、乗算器1221−7、乗算器1221−8、加算器1232−4により、c1b2+d1d2を算出する。その結果、ベクトルレジスタ11には、一要素としてa1a2+b1c2が格納され、続く一要素としてa1b2+b1d2が格納され、続く一要素としてc1a2+d1c2が格納され、続く一要素としてc1b2+d1d2が格納される。ここで、上述したように、図14で示す例の場合、データ型判断部14は、ベクトルレジスタ11が保持する各要素を、四要素をまとめて1つの要素として扱い2×2行列を表現する2×2行列型のデータ構造として扱うと判断している。従って、上記ベクトルレジスタ11が保持する四要素は、2×2行列同士の乗算結果を表現していることになる。
以上のように、ベクトル長4の2×2行列同士の乗算では、8回の乗算と4回の加算を行っている。つまり、合計12回の演算を行っている。
図15は、除算(a/b)を行う場合について例示している。除算を行う場合も、データ型判断部14による判断の結果に基づいて、二要素をまとめて1つの除算を表現していると判断する。例えば、図15で示す場合、二要素をまとめて1つの要素とし、前半の要素に被除数a、後半の要素に除数bが格納されている。そして、セレクタ15による出力先の決定に応じて、演算処理部12で演算が行われる。
図15では、ゴールドシュミット除算という、乗算のみで除算を行うことができるアルゴリズムを使用する場合について例示している。図15で示す動作を数回繰り返すことで、除算結果を得ることができる。なお、精度によって、図15で示す動作を繰り返す回数は変更される。
図16では、ソートを行う場合について例示している。図16では、バブルソートを用いる場合について例示している。バブルソートでは、図16中の1、2の操作を要素−1回繰り返すことで、ベクトルレジスタ11内のソートを行う。
なお、ソートを行う場合、データ型判断部14による判断の結果に基づいてソートを行うことが出来る。例えば、データ型判断部14が二要素をまとめて1つの複素数(c+di)を表現する複素数型と判断している場合、1つの複素数を表現していると判断される二要素を1つの要素とみなして、二要素で表現される各1つの要素ずつのソートを行うことが出来る。
図17は、半精度の乗算を行う場合について例示している。図17で示す場合、二要素を用いて1つの値が表現されることになる。例えば、図17で示す場合、データ型判断部14は、ベクトルレジスタ11−1が保持する二要素を用いて被乗数が表現されていると判断する。また、データ型判断部14は、ベクトルレジスタ11−2が保持する二要素を用いて乗数が表現されていると判断する。
セレクタ15は、上記データ型判断部14による判断の結果と実行する命令の種類(半精度の乗算)に応じて、各要素の出力先となるポートを決定する。半精度同士の乗算を行う場合、8ビットの乗算器12214つと、桁数の調整を行うシフト器と、演算結果を加算する加算器1232と、を用いることで演算結果を得ることが出来る。
なお、単精度や倍精度の乗算を行う場合も、半精度の場合と同様に、複数の乗算器と、シフト器と、加算器と、を組み合わせて演算を行うことで実現することが出来る。
上述したように、セレクタ15は、データ型判断部14による判断の結果や実行する命令の種類に基づいて、ベクトルレジスタ11が保持する各要素や演算器122や演算器123による演算の結果の出力先を決定する。
以上が、ベクトルプロセッサ1の構成の一例である。続いて、図18を参照して、ベクトルプロセッサ1が行う演算実行方法の一例について説明する。
ベクトルプロセッサ1は、演算に用いるベクトルデータを主記憶から取得して、ベクトルレジスタ11に格納する。これにより、ベクトルレジスタ11は、演算に用いるベクトルデータを表す複数の要素を保持する。
図18を参照すると、変換部13は、ベクトルレジスタ11が保持する要素を用いて実行する演算の種類などに応じて、データ構造の変換を行うか否か判断する(ステップS101)。データ構造の変換を行う場合(ステップS101、Yes)、変換部13は、1バイト型を、半精度型、単精度型、倍精度型、などのいずれかに変換することで、データ構造の変換を行う。一方、データ構造の変換を行わない場合(ステップS101、No)、変換部13は、上記データ構造の変換を行わない。
データ型判断部14は、演算処理部12において実行する命令に応じて、ベクトルレジスタ11が保持する各要素をどのようなデータ型で扱うか判断する(ステップS103)。データ型判断部14が判断するデータ型には、例えば、1つの値をいくつの要素を用いて表現するかを示すためのデータ型と、多項式や分数など演算対象の種類に応じたデータ型と、などがある。そして、データ型判断部14は、判断した結果をセレクタ15に出力する。
セレクタ15は、データ型判断部14による判断の結果や実行する命令の種類に基づいて、ベクトルレジスタ11が保持する各要素の出力先や、演算器122や演算器123による演算の結果の出力先を決定する(ステップS103)。
セレクタ15による決定に基づいて、ベクトルレジスタ11が保持する各要素は、演算処理部12に含まれる演算器122や演算器123に出力される。これにより、演算処理部12は、演算を実行する(ステップS104)。その後、演算処理部12は、演算した結果をベクトルレジスタ11に出力する。
以上が、ベクトルプロセッサ1が行う演算実行方法の一例である。
このように、本実施形態におけるベクトルプロセッサ1は、データ型判断部14とセレクタ15とを有している。このような構成により、セレクタ15は、データ型判断部14による判断の結果や実行する命令の種類に基づいて、ベクトルレジスタ11が保持する各要素の出力先などを決定することが出来る。その結果、ベクトルプロセッサ1は、複数の要素を1つの要素にまとめた結果に基づく演算を行うことが可能となる。
ここで、半精度、単精度、倍精度、行列、複素数、四元数、多項式などの乗算は、同じデータに対して演算を一度以上する。そのため、上記構成によると、B/F(Byte/Flop)値が小さい場合でも演算器を効率良く使うことが可能となり、性能を高めることが可能となる。
なお、図19は、ベクトル長4のベクトルレジスタ21を用いた通常の乗算の一例を示している。図19で示すように、通常の乗算の場合、それぞれ各要素で乗算を行うことが出来る。つまり、通常の乗算では、4つの乗算器22を用いて4回の演算を行うことができる。一方で、例えば上述したベクトル長4のベクトルレジスタ11で2×2行列を表現する2×2行列型の乗算の場合、8回の乗算と4回の加算を行って合計12回の演算を行うことができる(図14参照)。ここで、通常の乗算と2×2行列の乗算を比較すると、オペランドに使用する要素数は同じであるが、通常の乗算の演算回数は4回であるのに対して、2×2行列の乗算の演算回数は12回となる。つまり、2×2行列型の乗算では通常の乗算より3倍の演算をすることが出来ることが分かる。このように、ベクトルレジスタ11の要素にデータ型を定義すると、多様なデータ型を表現することが出来る。その結果、B/F値が小さい場合でも、演算器を効率良く使い、性能を高めることが可能となる。
[第2の実施形態]
次に、図20を参照して、本発明の第2の実施形態について説明する。第2の実施形態では、ベクトルプロセッサ3の構成の概要について説明する。
ベクトルプロセッサ3は、後述する出力先決定部33が決定した出力先に各要素を出力することで演算を実行する。図20は、ベクトルプロセッサ3の構成の一例を示している。図20を参照すると、ベクトルプロセッサ3は、一時記憶装置31と、データ型判断部32と、出力先決定部33と、を有している。なお、ベクトルプロセッサ3は、図示しない演算装置と記憶装置とを有している。ベクトルプロセッサ3は、図示しない記憶装置に格納されたプログラムを演算装置が実行することで、データ型判断部32と、出力先決定部33と、を実現する。なお。上記各処理部は、演算回路などにより実現されても構わない。
一時記憶装置31は、命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する。
データ型判断部32は、命令に応じて、一時記憶装置31が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断する。また、出力先決定部33は、データ型判断部32による判断の結果に基づいて、一時記憶装置31が記憶する要素の出力先を決定する。上述したように、ベクトルプロセッサ3は、出力先決定部33が決定した出力先に各要素を出力することで演算を実行する。
このように、本実施形態におけるベクトルプロセッサ3は、データ型判断部32と出力先決定部33と、を有している。このような構成により、出力先決定部33は、データ型判断部32による判断の結果に基づいて、一時記憶装置31が記憶する要素の出力先を決定することが出来る。その結果、ベクトルプロセッサ1は、複数の要素を1つの要素にまとめた結果に基づく演算を行うことが可能となる。これにより、演算器を効率良く使うことが可能となり、性能を高めることが可能となる。
また、上述したベクトルプロセッサ3は、当該ベクトルプロセッサ3に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置31を有するベクトルプロセッサに、命令に応じて、一時記憶装置31が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部32と、データ型判断部32による判断の結果に基づいて、一時記憶装置31が記憶する要素の出力先を決定する出力先決定部33と、を実現させ、出力先決定部33が決定した出力先に各要素を出力することで演算を実行する、プログラムである。
また、上述したベクトルプロセッサ3により実行される演算実行方法は、命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置31を有するベクトルプロセッサが、命令に応じて、一時記憶装置31が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、判断の結果に基づいて、一時記憶装置31が記憶する要素の出力先を決定し、決定した出力先に各要素を出力することで演算を実行する、という方法である。
上述した構成を有する、プログラム、又は、演算実行方法、の発明であっても、上記ベクトルプロセッサ3と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるベクトルプロセッサなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を有し、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
ベクトルプロセッサ。
(付記2)
付記1に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じてデータ型を判断することで、前記一時記憶装置が記憶する複数の要素を1つの要素として扱う
ベクトルプロセッサ。
(付記3)
付記1又は付記2に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、1つの値をいくつの要素を用いて表現するかを示すデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
(付記4)
付記1から付記3までのいずれか1項に記載のベクトルプロセッサであって、
前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
ベクトルプロセッサ。
(付記5)
付記1から付記4までのいずれか1項に記載のベクトルプロセッサであって、
前記出力先決定部は、前記データ型判断部による判断の結果と、前記命令の種類と、に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する
ベクトルプロセッサ。
(付記6)
付記1から付記5までのいずれか1項に記載のベクトルプロセッサであって、
前記一時記憶装置が記憶する各要素を用いて前記演算を実行する演算処理部を有し、
前記出力先決定部は、前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する各要素を前記演算処理部に含まれる演算器のうちのどの演算器のどのポートに出力するか決定することで、各要素の出力先を決定する
ベクトルプロセッサ。
(付記7)
付記6に記載のベクトルプロセッサであって、
前記演算処理部に含まれる前記演算器のそれぞれは、前記一時記憶装置と通信可能なよう接続されている
ベクトルプロセッサ。
(付記8)
付記1から付記7までのいずれか1項に記載のベクトルプロセッサであって、
前記一時記憶装置が保持する要素のデータ型のうちの、1つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
ベクトルプロセッサ。
(付記9)
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断し、
判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
決定した出力先に各要素を出力することで前記演算を実行する
演算実行方法。
(付記10)
命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
を実現させ、
前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行する
プログラム。
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
1 ベクトルプロセッサ
11 ベクトルレジスタ
12 演算処理部
121 レジスタ
122 演算器
1221 乗算器
1222 減算器
123 演算器
1231 減算器
1232 加算器
1233 乗算器
1234 比較器
13 変換部
14 データ型判断部
15 セレクタ
21 ベクトルレジスタ
22 乗算器
3 ベクトルプロセッサ
31 一時記憶装置
32 データ型判断部
33 出力先決定部

Claims (10)

  1. 命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
    前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
    前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
    を有し、
    前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行し、
    前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
    ベクトルプロセッサ。
  2. 請求項1に記載のベクトルプロセッサであって、
    前記データ型判断部は、前記命令に応じてデータ型を判断することで、前記一時記憶装置が記憶する複数の要素を1つの要素として扱う
    ベクトルプロセッサ。
  3. 請求項1又は2に記載のベクトルプロセッサであって、
    前記データ型判断部は、前記命令に応じて、1つの値をいくつの要素を用いて表現するかを示すデータ型のうちのどのデータ型で扱うか判断する
    ベクトルプロセッサ。
  4. 請求項1から請求項までのいずれか1項に記載のベクトルプロセッサであって、
    前記出力先決定部は、前記データ型判断部による判断の結果と、前記命令の種類と、に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する
    ベクトルプロセッサ。
  5. 請求項1から請求項までのいずれか1項に記載のベクトルプロセッサであって、
    前記一時記憶装置が記憶する各要素を用いて前記演算を実行する演算処理部を有し、
    前記出力先決定部は、前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する各要素を前記演算処理部に含まれる演算器のうちのどの演算器のどのポートに出力するか決定することで、各要素の出力先を決定する
    ベクトルプロセッサ。
  6. 請求項に記載のベクトルプロセッサであって、
    前記演算処理部に含まれる前記演算器のそれぞれは、前記一時記憶装置と通信可能なよう接続されている
    ベクトルプロセッサ。
  7. 請求項1から請求項までのいずれか1項に記載のベクトルプロセッサであって、
    前記一時記憶装置が保持する要素のデータ型のうちの、1つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
    ベクトルプロセッサ。
  8. 命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサが、
    前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断し、
    判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定し、
    決定した出力先に各要素を出力することで前記演算を実行する
    演算実行方法。
  9. 命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置を有するベクトルプロセッサに、
    前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
    前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
    を実現させ、
    前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行し、
    前記データ型判断部は、前記命令に応じて、演算対象の種類に応じたデータ型のうちのどのデータ型で扱うか判断する
    プログラム。
  10. 命令に応じた演算を実行する際に用いるデータを表す複数の要素を保持する一時記憶装置と、
    前記命令に応じて、前記一時記憶装置が保持する要素のそれぞれを、予め定められたデータ型のうちのどのデータ型で扱うか判断するデータ型判断部と、
    前記データ型判断部による判断の結果に基づいて、前記一時記憶装置が記憶する要素の出力先を決定する出力先決定部と、
    を有し、
    前記出力先決定部が決定した出力先に各要素を出力することで前記演算を実行し、
    前記一時記憶装置が保持する要素のデータ型のうちの、1つの値をいくつの要素を用いて表現するかを示すデータ型を変換する変換部を有する
    ベクトルプロセッサ。
JP2018041432A 2018-03-08 2018-03-08 ベクトルプロセッサ、演算実行方法、プログラム Active JP6604393B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018041432A JP6604393B2 (ja) 2018-03-08 2018-03-08 ベクトルプロセッサ、演算実行方法、プログラム
US16/292,554 US10877764B2 (en) 2018-03-08 2019-03-05 Vector processor, operation performing method, and non-transitory computer-readable recording medium for recording program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018041432A JP6604393B2 (ja) 2018-03-08 2018-03-08 ベクトルプロセッサ、演算実行方法、プログラム

Publications (2)

Publication Number Publication Date
JP2019159440A JP2019159440A (ja) 2019-09-19
JP6604393B2 true JP6604393B2 (ja) 2019-11-13

Family

ID=67843985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018041432A Active JP6604393B2 (ja) 2018-03-08 2018-03-08 ベクトルプロセッサ、演算実行方法、プログラム

Country Status (2)

Country Link
US (1) US10877764B2 (ja)
JP (1) JP6604393B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7323177B2 (ja) * 2019-12-17 2023-08-08 株式会社 システムスクエア 検査システム、検査装置、学習装置及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10312374A (ja) 1997-05-13 1998-11-24 Kofu Nippon Denki Kk ベクトル演算処理装置
JP2005275626A (ja) * 2004-03-23 2005-10-06 Fujitsu Ltd 演算種別と精度を選択可能な近似演算処理方法および近似演算処理装置
JP5309636B2 (ja) * 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8359455B2 (en) * 2008-12-09 2013-01-22 Shlomo Selim Rakib System and method for generating real addresses using a connection ID designating a buffer and an access pattern
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
US10095516B2 (en) * 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
US9594724B2 (en) * 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
JP6003744B2 (ja) * 2013-03-22 2016-10-05 富士通株式会社 演算処理装置及び演算処理方法
US10169014B2 (en) * 2014-12-19 2019-01-01 International Business Machines Corporation Compiler method for generating instructions for vector operations in a multi-endian instruction set
GB2540943B (en) * 2015-07-31 2018-04-11 Advanced Risc Mach Ltd Vector arithmetic instruction

Also Published As

Publication number Publication date
US20190278606A1 (en) 2019-09-12
US10877764B2 (en) 2020-12-29
JP2019159440A (ja) 2019-09-19

Similar Documents

Publication Publication Date Title
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
KR102492356B1 (ko) 데이터 처리장치에서의 산술 확대
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
JP5731937B2 (ja) ベクトル浮動小数点引数削減
JPH02196328A (ja) 浮動小数点演算装置
US10579338B2 (en) Apparatus and method for processing input operand values
KR20120030332A (ko) 임플리시트 혼합형 오퍼랜드들을 구비한 dsp엔진
KR20190119076A (ko) 데이터 처리장치에서의 곱셈-누적
TWI808259B (zh) 具有壓縮進位之數位電路
JP6604393B2 (ja) ベクトルプロセッサ、演算実行方法、プログラム
JP5794385B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20070198811A1 (en) Data-driven information processor performing operations between data sets included in data packet
WO2020161458A1 (en) Encoding special value in anchored-data element
JP5193358B2 (ja) 多項式データ処理演算
JP4482052B2 (ja) 演算装置および演算方法
CN115713104A (zh) 用于神经网络的数据处理电路、神经网络电路和处理器
CN202331425U (zh) 基于矢量运算的矢量浮点运算装置
JP2019219753A (ja) 半導体装置及びその制御方法
US10963245B2 (en) Anchored data element conversion
JP4613992B2 (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
JP7078129B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR20080052194A (ko) 재구성형 프로세서 연산 방법 및 장치
JP2011180966A (ja) 積和演算器
JP2002304288A (ja) データ演算処理装置及びデータ演算処理プログラム
JPH04239909A (ja) 演算処理方法および演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190403

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190917

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190930

R150 Certificate of patent or registration of utility model

Ref document number: 6604393

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150