JP4613992B2 - Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ - Google Patents

Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ Download PDF

Info

Publication number
JP4613992B2
JP4613992B2 JP2008215137A JP2008215137A JP4613992B2 JP 4613992 B2 JP4613992 B2 JP 4613992B2 JP 2008215137 A JP2008215137 A JP 2008215137A JP 2008215137 A JP2008215137 A JP 2008215137A JP 4613992 B2 JP4613992 B2 JP 4613992B2
Authority
JP
Japan
Prior art keywords
value
register
register group
input
unit
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.)
Expired - Fee Related
Application number
JP2008215137A
Other languages
English (en)
Other versions
JP2010049611A (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 JP2008215137A priority Critical patent/JP4613992B2/ja
Priority to US12/385,406 priority patent/US8041927B2/en
Publication of JP2010049611A publication Critical patent/JP2010049611A/ja
Application granted granted Critical
Publication of JP4613992B2 publication Critical patent/JP4613992B2/ja
Expired - Fee Related 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

本発明は、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD(Single Instruction Multiple Data))方法の演算で計算誤差を求めるSIMD演算器、SIMD演算器の演算方法、演算処理装置及びコンパイラに関する。
ハードウェアの倍精度演算器を利用した高精度演算方法として、Double-Double形式の演算がある。Double-double形式とは倍精度形式64ビットを2ワード使用した浮動小数点形式の演算である。hi(MSB側)、lo(LSB側)として2つのワードを用いた106ビットの精度で演算が可能である。
Double-double形式の加算:(c.hi,c.lo)=(a.hi,a.lo)+(b.hi,b.lo)
ここで、下記のようにおく。fl(op(A))は、op(A)を正規化した結果、err(op(A))は、op(A)の演算誤差を示す。
a.hi+b.hi=fl(a.hi+b.hi)+err(a.hi+b.hi)=fl.hi+err.hi
a.lo+b.lo=fl(a.lo+b.lo)+err(a.lo+b.lo)=fl.lo+err.lo
この形式で加算をするためには、倍精度加算結果の計算誤差を算出する必要がある。この方法として、Dekkerの方法と、Knuthの方法が知られている(非特許文献1)。
Knuthの方法は下記の6命令からなる。a、bの2つの入力から計算誤差yが求まる。+は加算、−は減算を示す。
x←a+b
virtual←x−a
virtual←x−bvirtual
roundoff←b−bvirtual
roundoff←a−avirtual
y←aroundoff+broundoff
しかしながら、Knuthの方法では計算誤差算出に必要な演算数が多いという問題点がある。
これに対し、Dekkerの方法であると、下記の3命令で演算することができる。
x←a+b
virtual←x−a
y←b−bvirtual
ここで、Dekkerの方法では、|a|>|b|が前提となっている。
このように、Dekkerの方法は、Knuthの方法と比べると計算誤差算出に必要な演算数が少ないというメリットがある。
ところで、関連する技術として特許文献1には、複数のデータを処理するための複数のプロセッサエレメント(PE)を有するSIMD型マイクロプロセッサが開示されている。特許文献1にかかるSIMD型マイクロプロセッサの各PEは、各々が複数の比較手段と、各比較手段にそれぞれ接続される複数の演算レジスタを有し、前記比較手段においては、前記演算レジスタの値と単一の即値との比較が行われ、各々の比較結果の論理演算結果を各PEの演算の実行、非実行を制御する条件レジスタに格納するものである。これにより、簡単な構成でかつ高速にパターンマッチングを行うことができる。
同様に、関連する技術として特許文献2には、SIMD型の並列データ処理装置における基本演算要素が開示されている。
Jonathan Richard Shewchuk, "Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates", School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 特開2004−192405号公報 特公平07−060430号公報
しかしながら、非特許文献1にかかるDekkerの方法では、倍精度加算する2変数の絶対値の大小が演算前に自明である必要がある。従って、Dekkerの方法では、大小比較を行い、その結果を元に動作を決定する(条件判定する)ため、CPU(Central Processing Unit)の命令パイプラインをストール(停止)させる可能性がある。また、ベクトル演算のようにSIMDで実行される倍精度加算においては、SIMDの2つの入力レジスタセット毎に大小関係の一致をとる必要があるため、Dekkerの方法では演算することができないという問題点がある。
また、特許文献1及び2は、SIMD型プロセッサの一般的な技術が開示されているが、倍精度加算する2変数の絶対値の大小の判定については、何ら示唆されていない。
本発明は、このような問題点を解決するためになされたものであり、Dekkerの方法をSIMD方式の演算において高速に実行することを可能とするSIMD演算器、SIMD演算器の演算方法、演算処理装置及びコンパイラを提供することを目的とする。
本発明にかかる演算器は、複数の演算を単一の命令(SIMD)で実行する演算器であって、複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、前記第1のレジスタ群及び前記第2のレジスタ群から入力される2つの入力値をSIMD方式に基づいて演算する演算手段とを有し、前記演算手段は、前記2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する第1の演算手段と、前記2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する第2の演算手段と、前記第1の値及び前記第2の値を使用した加減算を実行する第3の演算手段と、を有する。
本発明にかかる演算処理装置は、加算誤差を使用するプログラムをコンパイルするコンパイラと、前記コンパイラからの複数の命令を格納する記憶手段と、前記記憶手段から読み出した命令に基づき、複数の演算を単一の命令(SIMD)で実行する演算器とを有し、前記演算器は、複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、前記第1のレジスタ群及び前記第2のレジスタ群から入力される2つの入力値をSIMD方式に基づいて演算する演算手段とを有し、前記演算手段は、前記2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する第1の演算手段と、前記2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する第2の演算手段と、前記第1の値及び前記第2の値を使用した加減算を実行する第3の演算手段と、を有する。
本発明にかかる演算方法は、複数の演算を単一の命令(SIMD)で実行する演算器の演算方法であって、複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が大きい値又は等しい値を第1の値として複数のレジスタからなる第3のレジスタ群へ格納する第1のステップと、前記第1のレジスタ群及び前記第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が小さい値又は等しい値を第2の値として第1のレジスタ群へ格納する第2のステップと、前記第3のレジスタ群に格納された第1の値及び前記第1のレジスタ群に格納された第2の値を使用して演算を実行する第3のステップと、を含む。
本発明にかかるコンパイラは、複数の演算を単一の命令(SIMD)で実行する演算器の命令列を生成するコンパイラであって、複数のレジスタからなる第1のレジスタ群、第2のレジスタ群及び第3のレジスタ群を有するSIMD用レジスタの前記第1のレジスタ群及び前記第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が大きい値又は等しい値を第1の値として前記第3のレジスタ群に格納させる第1の命令と、前記第1のレジスタ群及び前記第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が小さい値又は等しい値を第2の値として前記第1のレジスタ群に格納させる第2の命令と、前記第1の値及び第2の値を使用して前記演算手段により演算を実行させる第3の命令と、を生成する。
本発明によれば、Dekkerの方法をSIMD方式の演算において高速に実行することを可能とするSIMD演算器、SIMD演算器の演算方法、演算処理装置及びコンパイラを提供することができる。
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。この実施の形態は、本発明を、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD)方法の演算で計算誤差を求める演算処理装置に適用したものである。本実施の形態においては、IEEE754浮動小数点形式の加算をするときに生じる加算誤差算出を、SIMD命令実行部で関連技術にかかる方式より少ない実行ステップ数で行うためのものである。
発明の実施の形態1.
図1は、本発明の実施の形態にかかる演算処理装置を示す図である。図1に示すように、加算誤差を使用するプログラム1をコンパイルするコンパイラ(翻訳装置)2と、コンパイラ2からの複数の命令を格納する主記憶部4と、主記憶部4から読み出した命令に基づき、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD)方法の演算で計算誤差を求めるSIMD演算手段としてのSIMD命令実行部6とを有する。
SIMD命令実行部6は、SIMD用レジスタ170と、演算部180とを備える。SIMD用レジスタ170は、複数のレジスタからなる第1のレジスタ群171及び第2のレジスタ群172を有する。また、演算部180は、第1の演算部181と、第2の演算部182と、第3の演算部183とを有する。
演算部180は、第1のレジスタ群171及び第2のレジスタ群172から入力される2つの入力値をSIMD方式に基づいて演算する。その際、第1の演算部181は、2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する。また、第2の演算部182は、2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する。そして、第3の演算部183は、第1の値及び第2の値を使用した加減算を実行する。
本発明の実施の形態にかかる演算処理装置においては、加算誤差を使用するプログラム(プログラムコード)1が、コンパイラ2に入力され、実行可能な命令形式に変換される。この変換結果が主記憶部4に格納される。主記憶部4は、SIMD命令実行部6の指示に応じて、命令を送出する。SIMD命令実行部6は、必要あれば、主記憶部4に入力データを要求した後、命令に従って、SIMD方式で、比較や加減算処理を実行する。SIMD命令実行部6は、必要あれば、適宜、主記憶部4に、演算結果を出力する。
本実施の形態においては、第1の演算部181が第1のレジスタ群171及び第2のレジスタ群172のレジスタ値の絶対値の大小関係を判定し、入力データの絶対値の大きい値又は等しい値を、第1のレジスタ群171に出力する。同様に、第2の演算部182が第1のレジスタ群171及び第2のレジスタ群172のレジスタ値の絶対値の大小関係を判定し、入力データの絶対値の小さい値又は等しい値を、第2のレジスタ群172に出力する。このように大小関係が特定された第1のレジスタ群171の値と第2のレジスタ群172の値を使用すれば、SIMD方式の演算において上述したDekkerの方法により、倍精度加算結果の計算誤差を高速に算出することができる。
発明の実施の形態2.
次に、本発明の第2の実施の形態について説明する。図2は、本発明の実施の形態にかかる演算処理装置10の構成を示すブロック図である。図2に示すように、演算処理装置10は、プログラム1が入力される翻訳装置(コンパイラ)2と、演算装置3と、主記憶部4とを有する。演算装置3は、命令判定部5と、複数の演算を一の命令で実行するシングル命令マルチデータ(SIMD)方法の演算で計算誤差を求めるSIMD演算器として機能するSIMD命令実行部6とを有する。
このように構成された演算処理装置10においては、加算誤差を使用するプログラム1が、プログラムの入力により翻訳装置2に入力され、実行可能な命令形式に変換される。この変換結果が、命令の格納S1により、主記憶部4に格納される。主記憶部4は、演算装置3の指示に応じて、演算装置3の命令判定部5に、命令の入力S2を送出する。命令判定部5は、命令の入力S2に応じ、SIMD命令実行部6に、命令実行制御S3を送出する。
SIMD命令実行部6は、必要あれば、主記憶部4に入力データ要求をし、演算データ入力S4を主記憶部4から受信した後、命令実行制御S3によって指示された命令を実行する。SIMD命令実行部6は、必要あれば、適宜、主記憶部4に、演算結果出力S5を送出する。
図3は、SIMD命令実行部6の詳細を示す図である。図3に示すように、SIMD命令実行部6は、レジスタ入力部クロスバ16、SIMD用レジスタ17、レジスタ出力部クロスバ11、演算部18、命令制御部30を有する。
また、SIMD命令実行部6が実行する命令について予め説明する。下記はその命令列を示す。
VFCRG V2,V0,V1 :V2(i)←{V0(i),V1(i)}
VFCRL V0,V0,V1 :V0(i)←{V0(i),V1(i)}
VFAD V1,V0,V2 :V1(i)←V0(i)+V2(i)
VFSB V2,V1,V2 :V2(i)←V1(i)−V2(i)
VFSB V2,V0,V2 :V2(i)←V0(i)−V2(i)
まず、VFCRGでは、2つのデータ(V0(i)、V1(i))の絶対値の大小関係を調べ、絶対値の大きい値又は等しい値をV2(i)に出力する。このとき、2つのデータ(V0、V1)の絶対値が等しい場合には、V0(i)の値をV2(i)に出力する。次に、VFCRLでは、2つのデータ(V0(i)、V1(i))の絶対値の大小関係を調べ、絶対値の小さい値又は等しい値をV0(i)に出力する。このとき、2つのデータ(V0、V1)の絶対値が等しい場合には、V1(i)の値をV0(i)に出力する。そして、VFADでは、V0(i)とV2(i)を加算する。次に、VFSBで、前述の加算結果V1(i)からV2(i)を減算する。最後に、V0(i)から前述の減算結果V2(i)を減算する。この5命令により、加算誤差を求めるものである。次に、この演算を行う各ブロックについて詳細に説明する。
SIMD用レジスタ17は、複数のレジスタ(レジスタ番号0、1、・・・、N−2、N−1)を有する第1のレジスタ群171、第2のレジスタ群172及び第3のレジスタ群173を有する。第1のレジスタ群171、第2のレジスタ群172及び第3のレジスタ群173には、それぞれ、レジスタ番号iに対応する任意の演算対象値であるV0(i)、V1(i)及びV2(i)が格納される。尚、SIMD用レジスタ17は、本実施の形態においては、SIMD演算に使用するが、レジスタとして他の用途で使用することも可能である。
レジスタ出力部クロスバ11は、SIMD用レジスタ17からのデータを演算部18に出力する。レジスタ入力部クロスバ16は、演算部18による演算結果をSIMD用レジスタ17に入力する。
尚、レジスタ入力部クロスバ16及びレジスタ出力部クロスバ11は、クロスバスイッチにより実現される。すなわち、縦方向に並行した複数の通信路と横方向の同様な通信路の交点にスイッチを設け、これらのスイッチ群を制御することで、対向する通信路との専有経路を動的に構築する構造を有する。
演算部18は、第1の演算手段として機能するVFCRG(Vector Floating Compare to Return Greater values)演算実行部12、第2の演算手段として機能するVFCRL(Vector Floating Compare to Return Less values)演算実行部13、第3の演算手段として機能する浮動小数点加算器14を有し、SIMD方式の演算を実行する。このSIMD命令実行部6は、IEEE754(IEEE二進化浮動小数点数演算標準)規格で定義される浮動小数点演算を行うものであって、倍精度加算結果の計算誤差を算出するものである。
VFCRG演算実行部12は、第1のレジスタ群171及び第2のレジスタ群172から入力される2つの入力の絶対値を比較し、絶対値の大きい又は等しい方を第1の値V2(i)として出力する。このとき、VFCRG演算実行部12は、絶対値の大きさが判断された結果であるV2(i)を、レジスタ入力部クロスバ16へ出力する。尚、2つの入力の絶対値が等しい場合、VFCRG演算実行部12は、第1のレジスタ群171から入力される値を第1の値V2(i)として出力する。
VFCRL演算実行部13は、第1のレジスタ群171及び第2のレジスタ群172から入力される2つの入力の絶対値を比較し、絶対値の大きい又は等しい方を第2の値V0(i)として出力する。このとき、VFCRL演算実行部13は、絶対値の大きさが判断された結果であるV0(i)を、レジスタ入力部クロスバ16へ出力する。尚、2つの入力の絶対値が等しい場合、VFCRL演算実行部13は、第2のレジスタ群172から入力される値を第2の値V0(i)として出力する。
浮動小数点加算器14は、V0(i)、V1(i)及びV2(i)を使用して加減算をする。すなわち、上述のVFAD及びVFSBの演算を実行する。具体的には、V0(i)とV2(i)を加算し、当該加算結果V1(i)からV2(i)を減算し、V0(i)から当該減算結果V2(i)を減算する。
命令制御部30は、VFCRG演算実行部12の演算結果V2(i)を第3のレジスタ群173に入力し、VFCRL演算実行部13の演算結果V0(i)を第1のレジスタ群171に入力するようレジスタ入力部クロスバ16を制御する。また、命令制御部30は、浮動小数点加算器14の加減算結果V1(i)及びV2(i)を第2のレジスタ群172及び第3のレジスタ群173に入力するようレジスタ入力部クロスバ16を制御する。
また、命令制御部30は、第1のレジスタ群171及び第2のレジスタ群172からの出力をVFCRG演算実行部12及びVFCRL演算実行部13に入力するようレジスタ出力部クロスバ11を制御する。さらに、命令制御部30は、第1のレジスタ群171、第2のレジスタ群172及び第3のレジスタ群173からの出力を浮動小数点加算器14に入力するようレジスタ出力部クロスバ11を制御する。
このため、図2に戻って、コンパイラ2は、第1のレジスタ群171及び第2のレジスタ群172から出力される2つのデータを演算部18に入力し、絶対値を比較させ、絶対値が大きい値又は等しい値である第1の値V2(i)を第3のレジスタ群173に格納させる第1の命令と、第1のレジスタ群171及び第2のレジスタ群172から出力される2つのデータを演算部18に入力し、絶対値を比較させ、絶対値が小さい値又は等しい値である第2の値V0(i)を第1のレジスタ群171に格納させる第2の命令と、第3のレジスタ群173からの第1の値V2(i)と第1のレジスタ群171からの第2の値V0(i)を演算部18に入力し、加算させ、当該加算結果V1(i)を第2のレジスタ群172に格納させる第3の命令と、第2のレジスタ群172からの当該加算結果V1(i)から第3のレジスタ群173からの第1の値V2(i)を減算させ、当該減算結果V2(i)を第3のレジスタ群173に格納させる第4の命令と、第1のレジスタ群171からの第2の値V0(i)から第3のレジスタ群173からの当該減算結果V2(i)を減算させる第5の命令とを生成する。これらの命令S1は、主記憶部4に格納され、命令の入力S2により命令判定部5に入力され、命令実行制御S3によりSIMD命令実行部6の命令制御部30に入力される。
次に、SIMD命令実行部6の動作について説明する。図4は、本発明の実施の形態にかかるSIMD命令実行部6の動作を示すフローチャート図である。まず、SIMD命令実行部6の命令制御部30は、命令実行制御S3を受信すると、SIMD用レジスタ17にレジスタ制御S17を送出し、レジスタ出力部クロスバ11に出力部クロスバ制御S18を送出し、レジスタ入力部クロスバ16に入力部クロスバ制御S19を送出し、演算部18に演算部制御S16を送出する。
そして、SIMD用レジスタ17は、レジスタ制御S17を受信すると、V0、V1及びV2の各レジスタセットから、指定されたレジスタセットの0番のレジスタに格納されている値をV0出力S13、V1出力S14及びV2出力S15に送出する。例えば、V0出力S13にV0の0番のレジスタを出力し、V1出力S14にV1の0番のレジスタを出力する等である。以降、SIMD用レジスタ17は、1サイクル毎に、1番からN−1番までのレジスタの値を出力する。ここでは、SIMD用レジスタ17は、レジスタ制御S17を受信し、第1のレジスタ群171から0番のレジスタに格納された値をV0出力S13へ出力し、第2のレジスタ群172から0番のレジスタに格納された値をV1出力S14へ出力する(ステップSP1)。
その後、レジスタ出力部クロスバ11は、演算部18への入力を切り替える。レジスタ出力部クロスバ11は、命令実行制御S3を受信した命令制御部30が出力した出力部クロスバ制御S18を受信すると、出力部クロスバ制御S18によってレジスタセット番号を判定し、V0出力S13をVFCRG入力S6aに、V1出力S14をVFCRG入力S7aに送出する。
VFCRG演算実行部12は、VFCRG入力S6a及びVFCRG入力S7aを受信すると、すなわち、V0(i)及びV1(i)を入力すると、VFCRG演算を実行し、V2(i)となるVFCRG出力S10を出力する(ステップSP2)。ここで、VFCRG出力S10は、64ビットデータである。そして、VFCRG出力S10は、レジスタ入力部クロスバ16へ入力される。
レジスタ入力部クロスバ16は、SIMD用レジスタ17への入力を切り替える。レジスタ入力部クロスバ16は、命令実行制御S3を受信した命令制御部30が出力した入力部クロスバ制御S19を受信すると、入力部クロスバ制御S19から入力先がV2入力S23であると判定する。そして、レジスタ入力部クロスバ16は、VFCRG出力S10を受信すると、SIMD用レジスタ17への入力を切り替えて、V2入力S23へVFCRG出力S10の64ビットデータを出力する。
SIMD用レジスタ17は、V2入力S23の入力を、VFCRG演算の入力となった番号と同じ番号のレジスタセットV2のレジスタに格納する。すなわち、SIMD用レジスタ17は、V2(i)として第3のレジスタ群173へ格納する(ステップSP3)。例えば、SIMD用レジスタ17は、最初に受信したV2入力S23をV2の0番のレジスタに格納し、次に受信したV2入力S23をV2の1番に格納する。つまり、SIMD用レジスタ17は、V2入力S23を受信する毎に格納先レジスタ番号を+1し、V2入力S23を第3のレジスタ群173のN個のレジスタに格納する。
続いて、SIMD用レジスタ17は、レジスタ制御S17を受信すると、ステップSP1と同様に、第1のレジスタ群171から0番のレジスタに格納された値をV0出力S13へ出力し、第2のレジスタ群172から0番のレジスタに格納された値をV1出力S14へ出力する。
そして、レジスタ出力部クロスバ11は、V0出力S13をVFCRL入力S6bに、V1出力S14をVFCRL入力S7bに送出する。VFCRL演算実行部13は、VFCRL入力S6b及びVFCRL入力S7bを受信すると、すなわち、V0(i)及びV1(i)を入力すると、VFCRL演算を実行し、V0(i)となるVFCRL出力S11を出力する(ステップSP4)。ここで、VFCRL出力S11は、64ビットデータである。
そして、レジスタ入力部クロスバ16は、VFCRL出力S11を受信すると、SIMD用レジスタ17への入力を切り替えて、V0入力S21へVFCRL出力S11の64ビットデータを出力する。その後、SIMD用レジスタ17は、V0入力S21の入力を、VFCRL演算の入力となった番号と同じ番号のレジスタセットV0のレジスタに格納する。すなわち、SIMD用レジスタ17は、V0(i)として第1のレジスタ群171へ格納する(ステップSP5)。
この後は、命令に従って、浮動小数点加算器14は、演算部制御S16に応じて加算及び減算を行う。まず、レジスタ出力部クロスバ11は、SIMD用レジスタ17のV0出力S13を加算器入力S8へ、V2出力S15を加算器入力S9へ入力する。そして、浮動小数点加算器14は、V0(i)である加算器入力S8とV2(i)である加算器入力S9との加算を実行し、V1(i)となる加算器出力S12を出力する(ステップSP6)。ここで、加算器出力S12は、64ビットデータである。その後、レジスタ入力部クロスバ16は、加算器出力S12を受信すると、SIMD用レジスタ17への入力を切り替えて、V1入力S22へ加算器出力S12の64ビットデータを出力する。その後、SIMD用レジスタ17は、V1入力S22の入力を、V1(i)として第2のレジスタ群172へ格納する(ステップSP7)。
次に、レジスタ出力部クロスバ11は、SIMD用レジスタ17のV1出力S14を加算器入力S8へ、V2出力S15を加算器入力S9へ入力する。そして、浮動小数点加算器14は、V1(i)である加算器入力S8からV2(i)である加算器入力S9の減算を実行し、V2(i)となる加算器出力S12を出力する(ステップSP8)。その後、レジスタ入力部クロスバ16は、加算器出力S12を受信すると、SIMD用レジスタ17への入力を切り替えて、V2入力S23へ加算器出力S12の64ビットデータを出力する。その後、SIMD用レジスタ17は、V2入力S23の入力を、V2(i)として第3のレジスタ群173へ格納する(ステップSP9)。
そして、レジスタ出力部クロスバ11は、SIMD用レジスタ17のV0出力S13を加算器入力S8へ、V2出力S15を加算器入力S9へ入力する。そして、浮動小数点加算器14は、V0(i)である加算器入力S8からV2(i)である加算器入力S9の減算を実行し、V2(i)となる加算器出力S12を出力する(ステップSP10)。その後、レジスタ入力部クロスバ16は、加算器出力S12を受信すると、SIMD用レジスタ17への入力を切り替えて、V2入力S23へ加算器出力S12の64ビットデータを出力する。その後、SIMD用レジスタ17は、V2入力S23の入力を、V2(i)として第3のレジスタ群173へ格納する(ステップSP11)。
このようにして、加算誤差が得られる。加算誤差は、第3のレジスタ群173に格納されるため、必要な場合に読み出すようにしてもよい。
次に、VFCRG演算実行部12について更に詳細に説明する。図5は、VFCRG演算実行部12の構成を示すブロック図である。VFCRG演算実行部12は、VFCRG入力S6a及びVFCRG入力S7aが入力され、VFCRG入力S6a及びVFCRG入力S7aの内、絶対値が大きい値又は等しい値をVFCRG出力S10へ出力する。VFCRG演算実行部12は、VFCRG入力S6a及びVFCRG入力S7aが入力されるバッファ41及びバッファ42と、インバータ43と、比較手段として機能する加算器44と、選択手段として機能するセレクタ45とを有する。
バッファ41及び42は、符号ビット、指数部及び仮数部からなる64ビットのデータの格納するものである。
インバータ43は、入力される63ビットのデータの全ビットの反転を行い、加算器44へ出力する全ビット反転部である。
加算器44は、3入力の63ビット幅加算器で、2つの63ビットデータと、桁上がりを表わすフラグ値である+1を入力し、2つの63ビットデータを加算する。つまり、加算器44は、一方が反転したデータを加算することで、減算を行うことができる。また、加算器44は、加算及び減算の結果である演算結果に応じて、桁上がり信号を出力する。加算器44は、例えば、演算結果がマイナスであれば0、プラス又は0であれば1を出力する比較手段として機能する。尚、演算結果が0の場合は、0を出力するようにしても構わない。
セレクタ45は、2つの64ビットデータ及び桁上がり信号を入力し、桁上がり信号の値に応じて、当該2つの64ビットデータのいずれかをVFCRG出力S10へ出力する選択手段として機能する。
次に、VFCRG演算実行部12の動作について説明する。VFCRG演算実行部12は、VFCRG入力S6aを受信すると、バッファ41に格納し、符号ビットを除いて63ビットデータS32を加算器44へ入力する。また、VFCRG演算実行部12は、VFCRG入力S7aを受信すると、バッファ42に格納し、符号ビットを除いて63ビットデータS34をインバータ43へ入力する。そして、インバータ43は、63ビットデータS34の全ビットを反転し、反転63ビットデータS35として加算器44へ入力する。
加算器44は、バッファ41から63ビットデータS32及びバッファ42からインバータ43を経由した反転63ビットデータS35を入力し、63ビットデータS32及び反転63ビットデータS35を加算する演算を行う。そして、加算器44は、演算結果に応じて、bit63の桁上がり信号S36を出力する。
セレクタ45は、バッファ41から64ビットデータS31、バッファ42から64ビットデータS33及び加算器44から桁上がり信号S36を入力する。そして、セレクタ45は、桁上がり信号S36がマイナス(0)の場合(S6aの絶対値<S7aの絶対値)、64ビットデータS33をVFCRG出力S10へ出力する。これにより、VFCRG入力S7a、つまり、V1(i)の方が絶対値が大きい場合に、VFCRG演算実行部12は、V1(i)を選択して出力することができる。
また、セレクタ45は、桁上がり信号S36がプラス(1)の場合(S6aの絶対値≧S7aの絶対値)、64ビットデータS31をVFCRG出力S10へ出力する。これにより、VFCRG入力S6a、つまり、V0(i)の方が絶対値が大きい場合に、VFCRG演算実行部12は、V0(i)を選択して出力することができる。また、VFCRG入力S6aとVFCRG入力S7aとが等しい値、つまり、V0(i)とV1(i)とが等しい値である場合、VFCRG演算実行部12は、V0(i)を選択して出力することができる。
続いて、VFCRL演算実行部13について説明する。図6は、VFCRL演算実行部13の構成を示すブロック図である。尚、図6において、図5と同様の構成について同符号を付けており、詳細な説明は省略する。
VFCRL演算実行部13は、VFCRL入力S6b及びVFCRL入力S7bが入力され、VFCRL入力S6b及びVFCRL入力S7bの内、絶対値が小さい値又は等しい値をVFCRL出力S11へ出力する。VFCRL演算実行部13は、VFCRG演算実行部12に比べ、加算器44とセレクタ45との間にインバータ46が追加されたものである。
インバータ46は、加算器44から入力される1ビットのデータである桁上がり信号S36のビットの反転を行い、変換後桁上がり信号S37としてセレクタ45へ出力するビット反転部である。
そのため、桁上がり信号S36がマイナス(0)の場合(S6bの絶対値<S7bの絶対値)、インバータ46は、変換後桁上がり信号S37をプラス(1)としてセレクタ45へ出力する。そして、セレクタ45は、プラス(1)である変換後桁上がり信号S37を入力し、64ビットデータS31をVFCRL出力S11へ出力する。これにより、VFCRL入力S6b、つまり、V0(i)の方が絶対値が小さい場合に、VFCRL演算実行部13は、V0(i)を選択して出力することができる。
また、桁上がり信号S36がプラス(1)の場合(S6bの絶対値≧S7bの絶対値)、インバータ46は、変換後桁上がり信号S37をマイナス(0)としてセレクタ45へ出力する。そして、セレクタ45は、マイナス(0)である変換後桁上がり信号S37を入力し、64ビットデータS33をVFCRL出力S11へ出力する。これにより、VFCRL入力S7b、つまり、V1(i)の方が絶対値が小さい場合に、VFCRL演算実行部13は、V1(i)を選択して出力することができる。また、VFCRL入力S6bとVFCRL入力S7bとが等しい値、つまり、V0(i)とV1(i)とが等しい値である場合、VFCRL演算実行部13は、V1(i)を選択して出力することができる。
上述したVFCRG演算実行部12及びVFCRL演算実行部13の動作により、浮動小数点データとしたときのVFCRG出力S10及びVFCRL出力S11の関係は、S10の絶対値≧S11の絶対値となる。これにより、絶対値の大小判定が行われたこととなる。そして、この後、浮動小数点加算器14により加減算を継続することができる。そのため、本発明の実施の形態により、Dekkerの方法をSIMD方式の演算において高速に実行することができる。
その他の発明の実施の形態.
尚、上述した本発明の実施の形態1及び2では、IEEE754浮動小数点データ形式の倍精度形式(バイナリ64)を前提として記述しているので、扱うデータ幅を64ビットとしているが、このデータ幅に依存するものではない。単精度形式(バイナリ32)等々、他の形式でも実現できることは勿論である。
尚、本発明の実施の形態2において、VFCRG演算実行部12及びVFCRL演算実行部13は、それぞれ別々の演算実行部としているが、これに限定されない。つまり、VFCRG演算実行部12及びVFCRL演算実行部13は、一つの演算実行部によりVFCRG演算及びVFCRL演算を選択的に実行可能なVFCR演算実行部として実現しても構わない。例えば、図7に、VFCR演算実行部の一例をブロック図により示す。尚、図7において、図5及び図6と同様の構成について同符号を付けており、詳細な説明は省略する。
図7に示すVFCR演算実行部15は、VFCRG演算実行部12に比べ、加算器44とセレクタ45との間に排他的論理和47が追加されたものである。そして、排他的論理和47は、加算器44から入力される桁上がり信号S36及び命令制御部30から入力されるVFCR制御S39について排他的論理和演算を行い、変換後桁上がり信号S38をセレクタ45へ出力する。
つまり、VFCR演算実行部15は、第1のレジスタ群171及び第2のレジスタ群172から入力される2つの入力VFCR入力S6であるV0(i)及びVFCR入力S7であるV1(i)の絶対値を比較し、比較結果である桁上がり信号S36に基づき、V0(i)及びV1(i)のいずれかを絶対値の大きい値又は小さい値として出力する。そして、VFCR演算実行部15は、図3の命令制御部30から入力される指示であるVFCR制御S39に応じて、桁上がり信号S36を変換せずに出力するか若しくは反対の値に変換して出力する処理手段である排他的論理和47をさらに有し、当該処理手段により出力された比較結果である変換後桁上がり信号S38に基づき、V0(i)及びV1(i)のいずれかを絶対値の大きい値又は小さい値として出力するものである。
ここで、VFCR制御S39は、図3の命令制御部30から入力される演算部制御S16に含まれ、絶対値の大きい値又は小さい値のいずれかを出力するかを指示する1ビットのデータである。そのため、排他的論理和47は、VFCR制御S39が"0"の場合、桁上がり信号S36の値を変換せずに変換後桁上がり信号S38として出力する。また、排他的論理和47は、VFCR制御S39が"1"の場合、桁上がり信号S36の値を反対の値に変換して、変換後桁上がり信号S38として出力する。
これにより、VFCR演算実行部15は、VFCRG演算及びVFCRL演算をVFCR制御S39により選択的に実行することができる。そのため、演算部18は、VFCRG演算実行部12及びVFCRL演算実行部13という2つの演算手段をVFCR演算実行部15の1つの演算手段で実現することができ、演算部18の規模を抑えることができる。
また、本発明の実施の形態2において、VFCRG演算実行部12及びVFCRL演算実行部13は、浮動小数点加算器14と別に記述しているが、浮動小数点加算器14が有する加算器を利用することで、VFCRG演算実行部12及びVFCRL演算実行部13を浮動小数点加算器14の機能の一部として実装されることも可能である。その際、命令制御部30からの演算部制御S16により演算部18の演算処理を切り替えてもよい。また、VFCRG演算実行部12及びVFCRL演算実行部13は、固定小数点加算器、ALU(Arithmetic and Logic Unit)など64ビットの加算器を有する演算器の機能の一部として実装されることも可能である。
さらに、本発明の実施の形態1及び2では、1つの演算器で、N個のデータを処理するSIMD命令実行部が記述されているが、演算器数をM個に増やした実装も可能である。
尚、本発明の実施の形態1において、第1の演算部181及び第2の演算部182の処理順序は、限定しない。同様に、本発明の実施の形態2において、VFCRG演算実行部12及びVFCRL演算実行部13の処理順序は、上述した順番と逆であっても構わない。
また、本発明の実施の形態1において、第1の演算部181及び第2の演算部182は、それぞれ等しい値の場合も出力することで、2つの入力値の絶対値の大小を確実に振り分けることができる。これは、本発明の実施の形態2において、VFCRG演算実行部12及びVFCRL演算実行部13においても同様である。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
例えば、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、CPUにコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の伝送媒体を介して伝送することにより提供することも可能である。
本発明の実施の形態にかかる演算処理装置を示す図である。 本発明の実施の形態にかかる演算処理装置を示す図である。 本発明の実施の形態にかかるSIMD命令実行部の詳細を示す図である。 本発明の実施の形態にかかるSIMD命令実行部の動作を示すフローチャートである。 本発明の実施の形態にかかるVFCRG演算実行部を示すブロック図である。 本発明の実施の形態にかかるVFCRL演算実行部を示すブロック図である。 本発明の実施の形態にかかるVFCR演算実行部を示すブロック図である。
符号の説明
1 プログラム
2 コンパイラ
3 演算装置
4 主記憶部
5 命令判定部
6 SIMD命令実行部
10 演算処理装置
11 レジスタ出力部クロスバ
12 VFCRG演算実行部
13 VFCRL演算実行部
14 浮動小数点加算器
15 VFCR演算実行部
16 レジスタ入力部クロスバ
17 SIMD用レジスタ
18 演算部
30 命令制御部
41 バッファ
42 バッファ
43 インバータ
44 加算器
45 セレクタ
46 インバータ
47 排他的論理和
170 SIMD用レジスタ
171 第1のレジスタ群
172 第2のレジスタ群
173 第3のレジスタ群
174 第4のレジスタ群
180 演算部
181 第1の演算部
182 第2の演算部
183 第3の演算部
S1 命令の格納
S2 命令の入力
S3 命令実行制御
S4 演算データ入力
S5 演算結果出力
S6 VFCR入力
S7 VFCR入力
S6a VFCRG入力
S7a VFCRG入力
S6b VFCRL入力
S7b VFCRL入力
S8 加算器入力
S9 加算器入力
S10 VFCRG出力
S11 VFCRL出力
S12 加算器出力
S13 V0出力
S14 V1出力
S15 V2出力
S16 演算部制御
S17 レジスタ制御
S18 出力部クロスバ制御
S19 入力部クロスバ制御
S21 V0入力
S22 V1入力
S23 V2入力
S31 64ビットデータ
S32 63ビットデータ
S33 64ビットデータ
S34 63ビットデータ
S35 反転63ビットデータ
S36 桁上がり信号
S37 変換後桁上がり信号
S38 変換後桁上がり信号
S39 VFCR制御

Claims (18)

  1. 複数の演算を単一の命令(SIMD)で実行する演算器であって、
    複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、
    前記第1のレジスタ群及び前記第2のレジスタ群から入力される2つの入力値をSIMD方式に基づいて演算する演算手段とを有し、
    前記演算手段は、
    前記2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する第1の演算手段と、
    前記2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する第2の演算手段と、
    前記第1の値及び前記第2の値を使用した加減算を実行する第3の演算手段と、を有する演算器。
  2. 前記第1及び第2の演算手段による演算結果を前記SIMD用レジスタに入力するレジスタ用入力手段と、
    前記レジスタ用入力手段を制御する命令制御手段とを有し、
    前記SIMD用レジスタは、複数のレジスタからなる第3のレジスタ群をさらに有し、
    前記命令制御手段は、前記第1の値を前記第3のレジスタ群に入力し、前記第2の値を前記第1のレジスタ群に入力するよう前記レジスタ用入力手段を制御する
    ことを特徴とする請求項1記載の演算器。
  3. 前記SIMD用レジスタからのデータを前記第1乃至第3の演算手段に出力するレジスタ用出力手段を有し、
    前記命令制御手段は、前記第3の演算手段の加減算結果を前記第3のレジスタ群に入力するよう前記レジスタ用入力手段を制御し、前記第1乃至第3のレジスタ群からの出力を前記第1乃至第3の演算手段のいずれかに入力するよう前記レジスタ用出力手段を制御する
    ことを特徴とする請求項2記載の演算器。
  4. IEEE754規格で定義される浮動小数点演算を行うものであって、前記第1及び第2のレジスタ群に格納される値は、符号ビット、指数部及び仮数部からなり、
    前記第1及び第2のレジスタ群から入力される2つの入力の符号ビットを除き指数部及び仮数部を比較する比較手段と、
    前記比較手段の比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する選択手段と
    を有することを特徴とする請求項1乃至3のいずれか1項記載の演算器。
  5. 前記命令制御手段からの指示に応じて、前記比較手段の比較結果を変換せずに出力するか若しくは反対の値に変換して出力する処理手段をさらに有し、
    前記選択手段は、前記処理手段により出力された前記比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する
    ことを特徴とする請求項2又は3に従属する請求項4記載の演算器。
  6. 前記第3の演算手段は、前記第1の値と前記第2の値を加算し、当該加算結果から前記第1の値を減算し、前記第2の値から当該減算結果を減算する
    ことを特徴とする請求項1乃至5のいずれか1項記載の演算器。
  7. 倍精度加算結果の計算誤差を算出するものである
    ことを特徴とする請求項1乃至6のいずれか1項記載の演算器。
  8. 加算誤差を使用するプログラムをコンパイルするコンパイラと、
    前記コンパイラからの複数の命令を格納する記憶手段と、
    前記記憶手段から読み出した命令に基づき、複数の演算を単一の命令(SIMD)で実行する演算器とを有し、
    前記演算器は、
    複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群を有するSIMD用レジスタと、
    前記第1のレジスタ群及び前記第2のレジスタ群から入力される2つの入力値をSIMD方式に基づいて演算する演算手段とを有し、
    前記演算手段は、
    前記2つの入力値の絶対値を比較し、絶対値の大きい値又は等しい値を第1の値として出力する第1の演算手段と、
    前記2つの入力値の絶対値を比較し、絶対値の小さい値又は等しい値を第2の値として出力する第2の演算手段と、
    前記第1の値及び前記第2の値を使用した加減算を実行する第3の演算手段と、を有する演算処理装置。
  9. 前記演算器は、
    前記第1及び第2の演算手段による演算結果を前記SIMD用レジスタに入力するレジスタ用入力手段と、
    前記レジスタ用入力手段を制御する命令制御手段とを有し、
    前記SIMD用レジスタは、複数のレジスタからなる第3のレジスタ群をさらに有し、
    前記命令制御手段は、前記第1の値を前記第3のレジスタ群に入力し、前記第2の値を前記第1のレジスタ群に入力するよう前記レジスタ用入力手段を制御する
    ことを特徴とする請求項8記載の演算処理装置。
  10. 前記コンパイラは、前記2つの入力値の絶対値を比較させ、絶対値の大きい値又は等しい値を前記第1の値として前記第3のレジスタ群に格納させる第1の命令と、前記2つの入力値の絶対値を比較させ、絶対値の小さい値又は等しい値を前記第2の値として前記第1のレジスタ群に格納させる第2の命令と、前記第1の値及び第2の値を使用して前記演算手段により演算を実行させる第3の命令とを生成し、前記記憶手段へ格納し、
    前記演算器は、命令判定手段を有し、前記記憶手段から読み出した前記第1乃至第3の命令を前記命令制御手段に入力する
    ことを特徴とする請求項9記載の演算処理装置。
  11. 前記演算器は、前記SIMD用レジスタからのデータを前記第1乃至第3の演算手段に出力するレジスタ用出力手段を有し、
    前記命令制御手段は、前記第3の演算手段の加減算結果を前記第3のレジスタ群に入力するよう前記レジスタ用入力手段を制御し、前記第1乃至第3のレジスタ群からの出力を前記第1乃至第3の演算手段のいずれかに入力するよう前記レジスタ用出力手段を制御する
    ことを特徴とする請求項9記載の演算処理装置。
  12. 前記演算器は、
    IEEE754規格で定義される浮動小数点演算を行うものであって、前記第1及び第2のレジスタ群に格納される値は、符号ビット、指数部及び仮数部からなり、
    前記第1及び第2のレジスタ群から入力される2つの入力の符号ビットを除き指数部及び仮数部を比較する比較手段と、
    前記比較手段の比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する選択手段と
    を有することを特徴とする請求項7乃至10のいずれか1項記載の演算処理装置。
  13. 前記演算器は、
    前記命令制御手段からの指示に応じて、前記比較手段の比較結果を変換せずに出力するか若しくは反対の値に変換して出力する処理手段をさらに有し、
    前記選択手段は、前記処理手段により出力された前記比較結果に基づき、前記2つの入力値のいずれかを前記第1の値又は前記第2の値として出力する
    ことを特徴とする請求項9乃至11のいずれか1項に従属する請求項12記載の演算処理装置
  14. 倍精度加算結果の計算誤差を算出するものである
    ことを特徴とする請求項7乃至13のいずれか1項記載の演算処理装置。
  15. 複数の演算を単一の命令(SIMD)で実行する演算器の演算方法であって、
    複数のレジスタからなる第1のレジスタ群及び第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が大きい値又は等しい値を第1の値として複数のレジスタからなる第3のレジスタ群へ格納する第1のステップと、
    前記第1のレジスタ群及び前記第2のレジスタ群からの2つの入力の絶対値を比較し、絶対値が小さい値又は等しい値を第2の値として第1のレジスタ群へ格納する第2のステップと、
    前記第3のレジスタ群に格納された第1の値及び前記第1のレジスタ群に格納された第2の値を使用して演算を実行する第3のステップと、を含む演算方法。
  16. 前記第3のステップは、前記第3のレジスタ群からの前記第1の値と前記第1のレジスタ群からの前記第2の値を加算し、当該加算結果を前記第2のレジスタ群に格納し、
    前記第2のレジスタ群からの当該加算結果から前記第3のレジスタ群からの前記第1の値を減算し、当該減算結果を前記第3のレジスタ群に格納する第4のステップと、
    前記第1のレジスタ群からの前記第2の値から前記第3のレジスタ群からの当該減算結果を減算する第5のステップと、
    をさらに含むことを特徴とする請求項15記載の演算方法。
  17. 複数の演算を単一の命令(SIMD)で実行する演算器の命令列を生成するコンパイラであって、
    複数のレジスタからなる第1のレジスタ群、第2のレジスタ群及び第3のレジスタ群を有するSIMD用レジスタの前記第1のレジスタ群及び前記第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が大きい値又は等しい値を第1の値として前記第3のレジスタ群に格納させる第1の命令と、
    前記第1のレジスタ群及び前記第2のレジスタ群から出力される2つのデータを演算手段に入力し、絶対値を比較させ、絶対値が小さい値又は等しい値を第2の値として前記第1のレジスタ群に格納させる第2の命令と、
    前記第1の値及び第2の値を使用して前記演算手段により演算を実行させる第3の命令と、を生成するコンパイラ。
  18. 前記第3の命令は、前記第3のレジスタ群からの前記第1の値と前記第1のレジスタ群からの前記第2の値を前記演算手段に入力し、加算させ、当該加算結果を前記第2のレジスタ群に格納させ、
    前記第2のレジスタ群からの当該加算結果から前記第3のレジスタ群からの前記第1の値を減算させ、当該減算結果を前記第3のレジスタ群に格納させる第4の命令と、
    前記第1のレジスタ群からの前記第2の値から前記第3のレジスタ群からの当該減算結果を減算させる第5の命令とを更に生成する
    ことを特徴とする請求項17記載のコンパイラ。
JP2008215137A 2008-04-16 2008-08-25 Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ Expired - Fee Related JP4613992B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008215137A JP4613992B2 (ja) 2008-08-25 2008-08-25 Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
US12/385,406 US8041927B2 (en) 2008-04-16 2009-04-07 Processor apparatus and method of processing multiple data by single instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008215137A JP4613992B2 (ja) 2008-08-25 2008-08-25 Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ

Publications (2)

Publication Number Publication Date
JP2010049611A JP2010049611A (ja) 2010-03-04
JP4613992B2 true JP4613992B2 (ja) 2011-01-19

Family

ID=42066618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008215137A Expired - Fee Related JP4613992B2 (ja) 2008-04-16 2008-08-25 Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ

Country Status (1)

Country Link
JP (1) JP4613992B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6964744B2 (ja) * 2019-05-07 2021-11-10 株式会社ユニバーサルエンターテインメント 遊技機
JP6743259B2 (ja) * 2019-09-05 2020-08-19 株式会社ユニバーサルエンターテインメント 遊技機

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202530A (ja) * 1995-01-24 1996-08-09 Hitachi Ltd 正規化前丸め手段を有する浮動小数点加減算処理装置及び方法
JP2009258980A (ja) * 2008-04-16 2009-11-05 Nec Corp Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202530A (ja) * 1995-01-24 1996-08-09 Hitachi Ltd 正規化前丸め手段を有する浮動小数点加減算処理装置及び方法
JP2009258980A (ja) * 2008-04-16 2009-11-05 Nec Corp Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ

Also Published As

Publication number Publication date
JP2010049611A (ja) 2010-03-04

Similar Documents

Publication Publication Date Title
US9916130B2 (en) Apparatus and method for vector processing
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
US7949696B2 (en) Floating-point number arithmetic circuit for handling immediate values
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
US8626813B1 (en) Dual-path fused floating-point two-term dot product unit
US20130246496A1 (en) Floating-point vector normalisation
JP4388980B2 (ja) 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法
JP7115211B2 (ja) 演算処理装置および演算処理装置の制御方法
JP4476210B2 (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
JP4601544B2 (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
JPWO2007094047A1 (ja) 演算装置および演算方法
JPH09212337A (ja) 浮動小数点演算処理装置
US6912559B1 (en) System and method for improving the accuracy of reciprocal square root operations performed by a floating-point unit
JP4613992B2 (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
GB2549153B (en) Apparatus and method for supporting a conversion instruction
US10459688B1 (en) Encoding special value in anchored-data element
US8041927B2 (en) Processor apparatus and method of processing multiple data by single instructions
JP4502040B2 (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
US10963245B2 (en) Anchored data element conversion
US20200133633A1 (en) Arithmetic processing apparatus and controlling method therefor
KR20240102915A (ko) 부동소수점 연산 방법 및 연산 장치
JP5376659B2 (ja) 積和演算装置及び積和演算装置の制御方法
Kehtarnavaz et al. Fixed-Point vs. Floating-Point
JPH0293728A (ja) 演算処理装置
JP2003058362A (ja) データ演算処理装置及びデータ演算処理プログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100901

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: 20100921

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101004

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees