JP4755129B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

演算処理装置及び演算処理装置の制御方法 Download PDF

Info

Publication number
JP4755129B2
JP4755129B2 JP2007069614A JP2007069614A JP4755129B2 JP 4755129 B2 JP4755129 B2 JP 4755129B2 JP 2007069614 A JP2007069614 A JP 2007069614A JP 2007069614 A JP2007069614 A JP 2007069614A JP 4755129 B2 JP4755129 B2 JP 4755129B2
Authority
JP
Japan
Prior art keywords
register
product
taylor series
information
arithmetic processing
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
JP2007069614A
Other languages
English (en)
Other versions
JP2008234076A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2007069614A priority Critical patent/JP4755129B2/ja
Priority to US12/047,782 priority patent/US8655935B2/en
Publication of JP2008234076A publication Critical patent/JP2008234076A/ja
Application granted granted Critical
Publication of JP4755129B2 publication Critical patent/JP4755129B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/548Trigonometric functions; Co-ordinate transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Description

本発明は、浮動小数点積和演算を行う演算処理装置に係り、特にテーラー級数演算に好適な演算処理装置に関する。
数学関数f(x)は、下記の式(1)のように、テーラー級数演算で表現することができる。したがって、任意の値xにおける数学関数f(x)の値は、式(1)のテーラー級数演算を行うことで求めることができる。
ここで、前記式(1)で表されるテーラー級数演算の係数データ
は、数学関数f(x)の種類やテーラー級数の次数に応じて変わってくる。このため、従来の演算処理装置は、前記テーラー級数の係数データを、当該数学関数f(x)や次数と関連付けてメモリ(メインメモリ)内にテーブル形式で格納するようにしていた。そして、数学関数f(x)の値を、テーラー級数演算により算出する場合には、前記メモリから必要となる係数データを読み出すようにしていた。
従来の演算処理装置は、上述したように、数学関数のテーラー級数演算に必要な係数データをメモリに格納している。このため、従来の演算処理装置は、テーラー級数演算処理を実行する場合、浮動小数点ロード演算命令を実行して、係数データを前記メモリからレジスタにロードし、その後、浮動小数点積和演算命令を実行して、該レジスタにロードされた係数データを用いてテーラー級数演算を行っている。
図8は、従来のテーラー級数演算機能を備えた演算処理装置のシステム構成を示す図である。
図8に示す従来の演算処理装置2000は、図8の左側に示す浮動小数点積和演算命令2010を実行することで、数学関数のテーラー級数演算を行っていた。浮動小数点積和演算命令2010は、5つのフィールド2011〜2015で構成されている。フィールド2011には「命令種別コード(浮動小数点積和演算命令コード)」が設定され、フィールド2012には「積和演算の積演算の一方の入力レジスタ番号」が設定され、フィールド2013には「積和演算の積演算の他方の入力レジスタ番号」が設定される。また、フィールド2014には「積和演算の和演算の入力レジスタ番号」が設定され、フィールド2015には「積和演算の演算結果の出力レジスタ番号」が設定される。レジスタ番号は、各レジスタに一意的に割り当てられた番号である。
浮動小数点積和演算命令2010がデコードされると、フィールド2012に設定されているレジスタ番号r1のレジスタ(以後、レジスタr1と記載)の値(データyとする
)がレジスタ2020から読み出され、そのデータyがマルチプレクサ2031を介して浮動小数点積和演算器2040に入力する。また、フィールド2013に設定されたレジスタ番号r2のレジスタ(以後、レジスタr2と記載)の値(データzとする)がレジスタ2020から読み出され、そのデータzがマルチプレクサ2032を介して浮動小数点積和演算器2040に入力する。さらに、フィールド2014に設定されたレジスタ番号r3のレジスタ(以後、レジスタr3と記載)の値(データaiとする)がレジスタ2020から読み出され、そのデータaiがマルチプレクサ2033を介して浮動小数点積和演算器2040に入力する。
浮動小数点積和演算器2040は、上記3個のデータy、z、aiが入力されると、(y×z+ai)の浮動小数点積和演算を行い、その演算結果を、フィールド2015に設定されたレジスタ番号w1のレジスタ(以後、レジスタw1と記載)に、マルチプレクサ2034を介して書き込む。
演算処理装置2000は、テーラー級数演算用プログラムの浮動小数点積和演算命令2010がフェッチされる毎に、上記浮動小数点積和演算命令2010を繰り返し実行して、数学関数のテーラー級数演算を行い、数学関数f(x)の値を算出する。
上述したように、従来の演算処理装置2000は、数学関数のテーラー級数の係数データをメインメモリに格納しているため、浮動小数点ロード演算命令と浮動小数点積和演算命令を用いて、テーラー級数積和演算を実行していた。このため、テーラー級数の係数データをメインメモリからキャッシュに転送する処理に伴うオーバーヘッドが生じていた。また、上記浮動小数点ロード演算命令の実行が必要なため、ロード/ストア・パイプラインのスループットの圧迫や、命令パイプラインの命令発行ステージのスループットの圧迫などが発生し、これらが、テーラー級数演算の処理性能を低下させる要因となっていた。
本発明の目的は、浮動小数点ロード演算命令を用いることなく、テーラー級数演算を高速に実行できる演算処理装置を実現することである。
本発明の演算処理装置の第1態様は、オペランドのデータを格納するレジスタ手段と、該レジスタ手段に格納されたオペランドのデータを読み出すレジスタデータ読み出し手段と、数学関数のテーラー級数演算の係数データを格納する係数テーブルの選択信号を記憶する係数テーブルセット記憶手段と、前記数学関数のテーラー級数の次数情報と前記係数テーブルの識別情報を用いて、前記係数テーブルセット記憶手段から、前記数学関数のテーラー級数の係数データを読み出す係数データ読み出し手段と、該係数データ読み出し手段により読み出された前記係数データと前記レジスタ手段から読み出されたデータもしくはバイパスデータを用いて、前記数学関数のテーラー級数演算を実行する浮動小数点積和演算器とを備える。
本発明の演算処理装置の第1態様によれば、数学関数のテーラー級数演算で必要な係数データを、係数テーブルセット記憶手段から直接読み出して、浮動小数点積和演算器に供給する。このため、浮動小数点積和演算器がテーラー級数演算を実行する際に、従来の演算処理装置で発生していた、前記係数データのメインメモリからキャッシュへの転送に伴うオーバーヘッド、前記係数データのメインメモリからレジスタへのロードに伴うロード/ストア・パイプラインの圧迫、及び前記係数データのロード命令の発行による命令パイプラインの命令発行ステージの圧迫が解消される。
本発明の演算処理装置の第2態様は、上記演算処理装置の第1態様において、前記係数テーブルは、偶関数である数学関数については偶数の次数の係数データのみを格納し、奇関数である数学関数については奇数の次数の係数データのみを格納する。
本発明の演算処理装置の第2態様によれば、偶関数と奇関数について、係数データが、効率良く、配置・格納された係数テーブルを構築できる。
本発明の演算処理装置の第3態様は、上記演算処理装置の第2態様において、前記奇関数は正弦関数(sin(x))であり、前記偶関数は余弦関数(cos(x))であり、前記係数テーブルセット記憶手段は、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを備える。
本発明の演算処理装置の第3態様によれば、係数テーブルセット記憶手段に、正弦関数の係数テーブルと余弦関数の係数テーブルを、効率良く格納できる。
本発明の演算処理装置の第4態様は、前記正弦関数または前記余弦関数をテーラー級数演算で演算する際、それらの数学関数の入力引数xの値の範囲に応じて、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを使い分ける。
本発明の演算処理装置の第4態様によれば、正弦関数と余弦関数のテーラー級数演算を実行する際、入力引数xの値の範囲に応じて、両関数の係数テーブルを使い分けることができる。
本発明の演算処理装置の第5態様は、前記正弦関数または前記余弦関数の入力引数xが−π/4〜+π/4の範囲外である場合には、前記正弦関数または前記余弦関数の入力引数xが−π/4〜+π/4の範囲内となるような入力引数変換を行い、該入力引数変換により得られる正弦関数または余弦関数の係数テーブルの係数データを用いてテーラー級数演算を実行する。
本発明の第5態様によれば、正弦関数と余弦関数のテーラー級数演算を、高次で収束する入力引数を用いて実行することができる。
本発明の演算処理装置の第6態様は、前記演算処理装置の第1態様において、さらに、前記係数データ読み出し手段により読み出された前記係数テーブルセット記憶手段内の係数データと、前記レジスタデータ読み出し手段により読み出された前記レジスタ手段に格納されたデータもしくはバイパスデータを入力し、浮動小数点演算命令の種別を示す命令種別コードに応じて、前記2つの入力データの内、いずれか一方の入力データを前記浮動小数点積和演算器に選択出力する選択出力手段を備え、該選択出力手段は、前記命令種別コードがテーラー級数積和演算命令を示している場合には、前記係数データを前記浮動小数点積和演算器に出力する。
本発明の演算処理装置の第6態様によれば、テーラー級数積和演算命令で必要とする係数データとその他の命令で必要とするデータを、命令種別コードを用いて、選択出力手段により、浮動小数点積和演算器に切り替え出力できる。
本発明の演算処理装置の第7態様は、前記第1または第6態様の演算処理装置において、さらに、テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第1の情報を設定するフィールドと、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第3の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第4の情報を設定するフィールドと、テーラー級数の次数を指定する第5の情報を設定するフィールドから成るテーラー級数積和
演算命令を備え、該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
本発明の演算処理装置の第7態様によれば、浮動小数点積和演算器は、テーラー級数積和演算命令のみを実行して、テーラー級数演算を実行できる。また、テーラー級数演算で使用する係数データを格納している係数テーブルを、レジスタ間接指定により指定できるので、係数テーブルの指定を柔軟に行える。
本発明の演算処理装置の第8態様は、前記演算処理装置の第1または第6態様の演算処理装置において、さらに、テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第1の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第3の情報を設定するフィールドと、テーラー級数の次数を指定する第4の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、前記第2の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
本発明の第8態様の演算処理装置によれば、テーラー級数積和演算命令のフィールドに設定された前記第2の情報で指定されるレジスタの一部のビットを、テーラー級数演算で使用する係数テーブルの指定情報として利用する。このため、テーラー級数積和演算命令のフィールド数を、前記第7態様の演算処理装置よりも削減できる。
本発明の演算処理装置の第9態様は、前記演算処理装置の第1または第6態様の記載の演算処理装置において、さらに、テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第1の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第3の情報を設定するフィールドと、テーラー級数の次数を指定する第4の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、前記第1の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
本発明の第9態様の演算処理装置によれば、前記第1の情報で指定されるレジスタの一部のビットを利用することにより、前記演算処理装置の第8態様と同様の作用・効果が得られる。
本発明の演算処理装置の第10態様は、前記演算処理装置の第9態様において、前記指定されるレジスタのデータの一部のビットは、符号ビットである。
本発明の演算処理装置の第10態様によれば、浮動小数点積和演算の積演算で使用され
る2つの被演算値のいずれか一方の符号ビットを、係数テーブルの指定情報として利用する。このため、テーラー級数積和演算命令のフィールド数を少なくできる。
本発明の演算処理装置の第11態様は、前記演算処理装置の第10態様において、さらに、前記指定されるレジスタのデータの符号ビットを所定の値に設定し、該設定後のレジスタのデータを前記浮動小数点積和演算器に出力する符号ビット設定手段を備える。
本発明の演算処理装置の第11態様によれば、前記指定されるレジスタのデータの符号ビットを所定の値に設定し、その後、該レジスタのデータを前記浮動小数点積和演算器に入力させる。したがって、前記指定されるレジスタに設定されているデータの符号ビットが、該符号ビットを係数テーブルの指定情報に用いるために本来の値と異なるように設定されていたとしても、浮動小数点積和演算器においてはテーラー級数演算を正しく実行できる。
本発明の演算処理装置の第12態様は、前記演算処理装置の第11において、前記符号ビット設定手段は、前記命令種別コードとレジスタのデータの符号ビットを入力し、前記命令種別コードがテーラー級数積和演算命令であるときにのみ、前記所定の値のビットを出力するアンドゲート手段と、前記レジスタのデータの符号ビットを、前記アンドゲート手段の出力するビットに置き換える符号ビット置き換え手段とを備える。
本発明の演算処理装置の第12態様によれば、テーラー級数積和演算命令が実行されるときにのみ、前記指定されるレジスタのデータの符号ビットを所定の値に設定する。テーラー級数積和演算命令以外の命令が実行されるときには、前記アンドゲート手段に入力されるレジスタのデータの符号ビットは変換されることなく、そのまま、前記アンドゲート手段から出力される。したがって、テーラー級数積和演算命令のオペランドデータ(前記指定されるレジスタのデータ)と、該テーラー級数積和演算命令以外の命令のオペランドデータを、同一の信号線を介して、前記レジスタ番号手段から前記浮動小数点積和演算器に供給することができる。
本発明の演算処理装置の第13態様は、前記演算処理装置の第8または第9態様において、前記指定されるレジスタのデータの一部のビットは仮数部の下位ビットである。
本発明の演算処理装置の第13態様によれば、係数テーブルの指定情報とし、前記指定されるレジスタのデータの仮数部の下位ビットを使用する。このため、浮動小数点積和演算器の積演算で使用される該レジスタのデータの精度は多少犠牲になるが、該レジスタのデータの仮数部の下位ビットを、係数テーブルの指定情報として利用できる。
本発明の第14態様によれば、前記演算処理装置の第7または8態様において、さらに、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する前記演算処理装置の第7または第8態様の第1の情報を設定するフィールドを省略し、代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する前記演算処理装置の第7または第8態様の第3の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指定する情報に用い、該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
本発明の演算処理装置の第14態様によれば、前記浮動小数点積和演算の演算結果を出力すべきレジスタを格納するレジスタを指定する情報に用いるので、テーラー級数積和演算命令のフィールド数を少なくできる。
本発明の演算処理装置の第15態様は、前記演算処理装置の第7または第9態様の演算処理装置において、さらに、浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタの番号を指定する前記演算処理装置の第7または第9態様の第2の情報を設定するフィールドを省略し、代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する前記演算処理装置の第7または第9態様の第3の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する情報に用い、該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
本発明の演算処理装置の第15態様によれば、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する第1の情報を、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する情報に用いるので、テーラー級数積和演算命令のフィールド数を少なくできる。
本発明の演算処理装置の第16態様は、前記演算処理装置の第1乃至15態様のいずれか1態様の演算処理装置において、前記係数テーブルセット記憶手段は、データ読み出し専用のメモリである。
本発明の演算処理装置の第16態様によれば、係数テーブルセット記憶手段に格納されている係数テーブルの係数データの不正な書き換えを防止できる。
本発明の演算処理装置の第17態様は、前記演算処理装置の第1乃至15態様のいずれか1態様の演算処理装置において、前記係数テーブルセット記憶手段は、データの書き換えが可能なメモリである。
本発明の演算処理装置の第17態様によれば、前記係数テーブルセット記憶手段に格納されている係数テーブルの係数データの書き換えが可能となる。
本発明の演算処理装置の第18態様は、前記演算処理装置の第17態様において、さらに、係数テーブルを指定する係数テーブル指定情報と、テーラー級数の次数を指定する次数指定情報により、前記係数テーブルセット記憶手段内の係数データの設定位置を指定することを特徴とする。
本発明の演算処理装置の第18態様によれば、前記係数テーブルセット記憶手段内の係数テーブルについて、係数データの設定位置を指定できる。
本発明の演算処理装置の第19態様は、上記演算処理装置の第18態様の演算処理装置において、さらに、前記係数テーブルセット記憶手段内の前記設定位置に、係数データを設定する係数テーブルセット更新手段を備える。
本発明の演算処理装置の第19態様によれば、前記係数テーブルセット更新手段を用いて、前記指定された係数テーブルの指定された位置に係数データを設定する。したがって、係数データを、前記係数テーブルセット記憶手段内の指定した係数テーブルの指定した位置に設定できる。
本発明の演算処理装置の第20態様は、前記演算処理装置の第19態様において、前記係数テーブルのデータ更新を指示する命令種別コードを設定するフィールドと、積和演算の積演算の一方の被演算値を格納するレジスタを指定する第1の情報を設定するフィールドと、積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第
3の情報を設定するフィールドと、テーラー級数の次数情報を指定する第4の情報を設定するフィールドをから成る係数テーブルセット更新命令を備え、前記係数テーブルセット更新手段は、前記係数テーブルセット更新命令のデコード結果に応じて、前記第1の情報で指定される第1のレジスタの値と前記第2の情報で指定される第2のレジスタの値の積演算を前記浮動小数点積和演算器に実行させ、その積演算結果を、前記第3の情報で指定される第3のレジスタの値によって指定される係数テーブルの、前記第4の情報によって指定される次数の係数データの格納領域に書き込むことを特徴とする。
本発明の演算処理装置の第20態様によれば、前記係数テーブルセット更新命令を実行して、浮動小数点積和演算器により設定用の係数データを生成する。そして、その係数データを、前記係数テーブルセット更新命令によって指定される係数テーブルの係数データの格納領域に書き込む。したがって、前記係数テーブルセット更新命令の実行により、係数テーブルセット記憶手段内に格納されている係数テーブルの係数データを更新できる。また、係数テーブルセット記憶手段内に、新規な係数テーブルを作成することもできる。
本発明によれば、数学関数のテーラー級数演算の係数データを格納する専用の記憶手段を備え、浮動小数点ロード命令を実行することなく、数学関数のテーラー級数演算を指示する命令のみを実行するだけで、前記記憶手段から係数データを読み出して、テーラー級数演算を実行する。したがって、従来の演算処理装置のように、テーラー級数の係数データをメインメモリからキャッシュに転送する処理に伴うオーバーヘッドや、ロード/ストア・パイプラインのスループットの圧迫や、命令パイプラインの命令発行ステージのスループットの圧迫などが発生しないので、数学関数のテーラー級数演算を高速に実行できる。
以下、図面を参照しながら、本発明の実施形態について説明する。
[本発明の概要]
本発明の演算処理装置は、任意の数学関数のテーラー級数演算の係数データを格納する係数テーブルを各数学関数毎に用意し、それら複数の係数テーブルのセットである係数テーブルセットを、専用のメモリ(ROMまたはRAMなど)に格納する。そして、テーラー級数演算で必要となる係数データを、直接、前記係数テーブルから読み出して浮動小数点積和演算器に供給し、該浮動小数点積和演算器によりテーラー級数演算を実行する。
このように、本発明の演算処理装置は、テーラー級数演算の係数データを、係数テーブルセットから、直接、浮動小数点積和演算器に供給する構成となっている。このため、従来の演算処理装置のように、テーラー級数演算の係数データをメインメモリからキャッシュへ転送する処理が不要となる。また、浮動小数点ロード命令も不要になるため、テーラー級数演算の係数データのメモリからレジスタへのロードに伴うロード/ストア・パイプラインの圧迫、命令パイプラインにおける命令発行ステージのスループットの圧迫が解消される。
[第1の実施形態]
図1は、本発明の第1の実施形態である演算処理装置のシステム構成を示すブロック図である。
図1に示す本実施形態である演算処理装置1において、図面中央の縦方向の破線の右側部分は、従来の演算処理装置と同様な構成となっている。演算処理装置1の構成的特徴は、図1において前記破線の左側に示すように、係数テーブルセット10を備えていることである。この係数テーブルセット10には、複数の数学関数の係数テーブルが格納されて
いる。また、さらに、前記係数テーブルセット10内の係数データを選択するための情報として、「テーラー級数の次数番号21(以下、次数番号21と記載する場合もある)」、「係数テーブルのセット番号22(以下、セット番号22と記載する場合もある)」及び「命令種別コード23」を用いることである。
前記次数番号21は、前記式(1)の次数nに対応するパラメータである。前記セット番号22は、係数テーブルセット10内の複数の係数テーブルの中から、一つの係数テーブルを選択するためのパラメータである。本実施形態の各係数テーブルには一意のセット番号が割り当てられており、該セット番号により個々の係数テーブルを特定できるようになっている。前記命令種別コード23は、命令の種別を示す操作コード(operation code)である。
係数テーブルセット10は、数学関数のテーラー級数演算の係数データを格納している係数テーブルのセットである。この係数テーブルセット10は、例えば、ROM(Read Only Memory)またはRAM(Random Access Memory)などの半導体メモリに実装される。
係数テーブルセット10の各列には、各数学関数の係数テーブルが格納されている。係数テーブルの列は、各係数テーブルに割り当てられたセット番号によって指定する。係数テーブルの各行には、各数学関数のテーラー級数演算の係数データが格納されている。係数テーブルの行番号は次数番号21に対応しており、係数テーブルの各行は次数番号21で指定される。
ある数学関数について、前記係数テーブルセット10から目的の係数データを取得するためには、まず、前記次数番号21により係数テーブルセット10を選択する。これにより、係数テーブルセット10から、係数テーブルセット10の前記次数番号21に対応する行のデータが読み出され、その行データがマルチプレクサ26に入力する。この行データには、全ての係数テーブルの前記次数番号21に対応する係数データが含まれている。マルチプレクサ32には、前記セット番号22が選択信号として入力する。マルチプレクサ32は、前記行データに含まれている係数データの中から、前記セット番号22に対応する列の係数データを選択出力する。
このように、次数番号21は係数テーブルセット10の行アドレス、セット番号22は係数テーブルセット10の列アドレスとなっており、係数テーブルセット10に次数番号21とセット番号22を入力することにより、係数テーブルセット10の前記行アドレと前記列アドレスで決定されるアドレスの領域に格納されている係数データを読み出すことができる。セット番号22は数学関数の係数テーブルに対応しており、次数番号21はテーラー級数演算の係数データの次数に対応しているので、前記係数テーブルセット10から読み出される係数データは、前記数学関数のテーラー級数演算の前記次数番号21に対応する次数の係数データである。
マルチプレクサ27には、前記係数データ以外にも、マルチプレクサ1041により選択されたオペランドデータが入力する。マルチプレクサ1041は、レジスタファイル1031から出力されるレジスタデータ、リネーミングレジスタ(リネームレジスタ)1032から出力されるデータ及びバイパスデータ1033の3種類のオペランドデータを入力し、それら3種類のオペランドデータの中のいずれか一つのオペランドデータを選択して、マルチプレクサ27に出力する。
命令種別コード23は、該マルチプレクサ27に選択信号として入力する。マルチプレクサ27は、命令種別コード23に従って、前記マルチプレクサ27の出力(前記係数データ)または前記マルチプレクサ1041の出力(前記オペランドデータ)のいずれか一
方を、浮動小数点積和演算器1050に出力する。本実施形態では、命令種別コード23がテーラー級数積和演算命令である場合には、マルチプレクサ27は、前記係数データを浮動小数点積和演算器1050に選択出力する。
図1でマルチプレクサ1041の下方に描かれているマルチプレクサ1042、1043は、前記マルチプレクサ1041と同様に、前記3種類のオペランドデータを入力し、選択したオペランドデータを浮動小数点積和演算器1050に出力する。
浮動小数点積和演算器1050は、マルチプレクサ27から入力される係数データと、マルチプレクサ1042から入力されるオペランドデータ(第1オペランドデータ)及びマルチプレクサ1043から入力されるオペランドデータ(第2オペランドデータ)を用いて積和演算を行うことによって、テーラー級数演算を実行する。
本実施形態の演算処理装置1は、従来構成として、メモリ(メインメモリ)1010、キャッシュ1020、レジスタファイル1031、リネーミングレジスタ1032、バイパスデータ1033、マルチプレクサ1041〜1043及び浮動小数点積和演算器1050を備えている。
レジスタファイル1031は、浮動小数点積和演算器1050が演算を実行するときに使用する全てのレジスタを備えている。リネーミングレジスタ1032は、オペランドデータの逆依存と出力依存を解消するために設けられている。バイパスデータ1033は、演算処理装置1の命令パイプラインにおいてデータハザードを解消するためのバイパシング(bypassing)で使用されるデータ(演算結果データ)である。リネーミングレジスタ1032のエントリに格納されているレジスタ値は、リタイア(retire)時にレジスタファイル1031に移される。
本実施形態の演算処理装置1がテーラー級数演算を実行する際には、係数テーブルセット10に格納されている係数データ、レジスタファイル1031及びリネーミングレジスタ1032に格納されているレジスタのデータもしくはバイパスデータが浮動小数点積和演算器1050に供給され、浮動小数点積和演算器1050がそれらのデータを用いて積和演算を行う。
{係数テーブルセット10の構成例}
図2は、図1の演算処理装置1が、sin(x)とcos(x)の2つの数学関数を取り扱う場合における、テーラー級数演算の係数テーブルセット10の具体的な配置構成例を示す図である。
図2に示す係数テーブルセット10は2列で構成され、1列目にsin(x)の係数テーブル11を、2列目にcos(x)の係数テーブル12を格納している。1列目のsin(x)の係数テーブル11にはセット番号として“0”が、2列目のcos(x)の係数テーブル12にはセット番号として“1”が割り当てられている。係数テーブルセット10は10行(10個のエントリ)から構成されており、各行にsin(x)とcos(x)の係数データを格納している。
sin(x)のテーラー級数は奇数の次数のみ係数データを持っており、cos(x)のテーラー級数は偶数の次数の係数データのみを持っている。このため、sin(x)の係数テーブル11は、第0、第2、・・・第7行のそれぞれに、1次、3次、・・・・15次の係数データを格納している。また、cos(x)の係数テーブル12は、第0、第2、・・・第7行のそれぞれに、0次、2次、・・・14次の係数データを格納している。
係数テーブルセット10の入力信号であるテーラー級数の次数番号21は、係数テーブルセット10の行番号と一致している。しかしながら、係数テーブルセット10においては、テーラー級数の次数番号21とそのテーラー級数の次数番号21が示す行に格納されている係数データの次数番号は一致していない。このように、係数テーブルセット10の入力信号であるテーラー級数の次数番号21は、必ずしも、数学関数の係数データの次数番号に一致しなくてもよいことに注意する必要がある。
これは、sin(x)のような奇関数やcos(x)のような偶関数の場合、それぞれのテーラー級数は、奇数の次数のみの係数データと偶数の次数のみの係数データを持つという特徴があるためである。
本例の係数テーブルセット10(の係数テーブル11、12)は、係数データを持たない次数については、領域を省略し、係数データの配置を効率的にして、係数テーブルセット10の記憶容量を削減している。
係数テーブルセット10を上記のように構成したため、係数テーブルセット10(の係数テーブル11)からsin(x)のテーラー級数の1次の係数データを読み出す場合には、テーラー級数の次数番号21に“0”を設定する必要がある。また、係数テーブルセット10(の係数テーブル12)からcos(x)のテーラー級数の2次の係数データを読み出す場合には、テーラー級数の次数番号21に“1”を設定する必要がある。係数テーブルセット10から他の係数データを読み出す場合も、同様にして、テーラー級数の次数番号21を設定する。
本例では、係数テーブルセット10に次数番号21を入力し、係数テーブルセット10から該次数番号に一致する行番号の行データを読み出し、その行データをマルチプレクサ27に入力させる。そして、マルチプレクサ27に前記セット番号22を選択信号として加える。セット番号22は、sin(x)の場合は“0”、cos(x)の場合は“1”に設定されている。この選択信号がマルチプレクサ27に入力すると、マルチプレクサ27から、セット番号22で指定される係数データが選択出力され、それが浮動小数点積和演算器1050に入力する。浮動小数点積和演算器1050は、その入力される係数データを用いて積和演算を行い、sin(x)またはcos(x)のテーラー級数演算を実行する。
[第2の実施形態]
図3は、本発明の第2実施形態である演算処理装置の主要部の構成を示す図である。尚、図3のマルチプレクサ2033と浮動小数点積和演算器1050を接続している破線は、浮動小数点積和演算器1050が従来の浮動小数点積和演算を実行する場合に使用するオペランドデータの信号線を示す。これは、以後に述べる実施形態の図面についても同様である。
本実施形態の演算処理装置2は、図3の左側に示す新規な命令(テーラー級数積和演算命令)30を導入し、この命令30を実行可能である。
図3に示すテーラー級数積和演算命令30は、6つのフィールド31〜36から構成されている。命令種別コード設定フィールド31にはテーラー級数積和演算命令コードが設定される。
図3のテーラー級数積和演算命令30と図8の浮動小数点積和演算命令2010のフィールドを比較すれば分かるように、テーラー級数積和演算命令30のフィールド32、33、34には、それぞれ、前記浮動小数点積和演算命令2010のフィールド2012、
2013、2015と同様なオペランドデータが設定される。すなわち、フィールド32には「積和演算の積演算の一方の入力レジスタ番号(r1)」が、フィールド33には「積和演算の積演算の他方の入力レジスタ番号(r2)」が、フィールド34には「積和演算の積演算の出力レジスタ番号(w1)」が設定される。
テーラー級数積和演算命令30のフィールド35には「係数テーブルのセット番号を収めた(格納した)レジスタ番号(r3)」が設定される。また、テーラー級数積和演算命令30のフィールド36には「テーラー級数の次数番号」を設定する。
尚、上記テーラー級数積和演算命令30の定義は、あくまでも、テーラー級数積和演算命令30で必要となる命令種別コードとオペランドを示したものであり、実際のプログラミング命令(例えば、アセンブラ命令など)におけるオペランドの記述順序を規定するものではないことに注意する必要がある。したがって、プログラミング命令のオペランド記述順序は、図3に示すフィールド32〜36の表記順序に従う必要はない。これは、本実施形態以外の実施形態でも同様である。
このように、テーラー級数積和演算命令30のオペランド・フィールドは、従来の演算処理装置の命令セットが備えていた浮動小数点積和演算命令2010から、積和演算の入力レジスタ番号2014を設定するフィールドを削除し、代わりに、「係数テーブルの次数番号(r3)」と「テーラー級数の次数番号」を設定するフィールドを追加した構成となっている。
以後の説明では、説明の便宜上、テーラー級数積和演算命令30のフィールド32〜36に設定されるパラメータを、積和演算の積演算の一方の入力レジスタ番号32、積和演算の積演算の他方の入力レジスタ番号33、積和演算の演算結果の出力レジスタ番号34、係数テーブルのセット番号を収めたレジスタ番号35、テーラー級数の次数番号36と表現する場合もある。これは、他の実施形態においても同様である。
尚、本実施形態のテーラー級数の次数番号36は、図1のテーラー級数の次数番号21と同じものである。また、図3に示すレジスタ40は、図1のレジスタファイル1031、リネーミングレジスタ1032及びバイパスデータ1033を包含するものである。これは、以後に述べる実施形態についても同様である。
テーラー級数積和演算命令30による係数テーブルによるセット番号指定は、直接指定方式ではなく、係数テーブルのセット番号を収めたレジスタ番号35を用いたレジスタ間接指定方式となっている。この理由は、同一の数学関数f(x)であっても、入力引数xの値に依存して、指定する係数テーブルのセット番号が変わるためである。
これについて、sin関数を例に、詳しく説明する。
sin関数は、周期性のある関数(周期が2πの関数)であるので、{−π/4+2nπ〜+7π/4+2nπ}の区間を、下記1.〜4.に示すように4つの領域に分けて、計算式を構成することができる。
1. x = −π/4+2nπ〜+π/4+2nπ sin(x) = sin(x−2nπ)
2. x = +π/4+2nπ〜+3π/4+2nπ sin(x) = cos(x−π/2−2nπ)
3. x = +3π/4+2nπ〜+5π/4+2nπ sin(x) = −sin(x−π−2nπ)
4. x = +5π/4+2nπ〜+7π/4+2nπ sin(x) = −cos(x−3π/2−2nπ)
ここで、計算式を領域ごとに構成しているのは、テーラー級数演算に用いる引数は、高次で収束する必要があるためである。例えば、x = +π/4+2nπ〜+3π/4+2nπの領域の計算式cos(x−π/2-2nπ)の入力引数y = x−π/2−2nπは、下記5.の値の範囲を満
たしており、cos(y)(=sin(x))は引数yの高次で収束することがわかる。
5. y=−π/4〜+π/4
その他の領域についても、sin(x)(=±sin(y), ±cos(y))の入力引数x(y)は、−π/4〜+π/4の値の範囲を満たすので、sin(x)は高次で収束することが示される。
上記1.〜4.に示すように、同一のsin関数(=sin(x))であっても、入力引数xの値の範囲によって、用いるべき計算式(関数)が異なるため、下記6.〜9.に示すように、テーラー級数演算で用いるべき係数テーブルのセットも異なってくる。
6. x = -π/4+2nπ〜+π/4+2nπ sin(x)のテーラー級数演算の係数テーブル
7. x = +π/4+2nπ〜+3π/4+2nπ cos(x)のテーラー級数演算の係数テーブル
8. x = +3π/4+2nπ〜+5π/4+2nπ sin(x)のテーラー級数演算の係数テーブル
9. x = +5π/4+2nπ〜+7π/4+2nπ cos(x)のテーラー級数演算の係数テーブル
以上により、テーラー級数積和演算命令30において、係数テーブルのセット番号が、レジスタ間接指定であることの必要性が示された。
本実施形態は、係数テーブルのセット番号を、レジスタ間接指定にすることで、任意の入力引数の値に対して、条件分岐命令を用いずに、同一命令の命令列で、数学関数のテーラー級数演算を表現できるので、ソフトウエア・パイプライニングや、SIMD(Single
Instruction stream-Multiple Data stream)化を適用することが可能になる。
次に、上記で定義されたテーラー級数積和演算命令30の具体的な使用例を、sin関数を例に示す。
sin(x)の入力引数判定により、x = -π/4+2nπ〜+π/4++2nπの範囲であることが判明したとすると、sin(x)は、入力引数変換を経て、下記のようなテーラー級数演算で表現される。
ここで、a n は、図2のセット番号0の係数テーブル11(sin(x)のテーラー級数演算の係数テーブル)の次数番号nの係数データに対応する。
テーラー級数演算をsin(y)のテーラー級数の15次まで求めることにすると、
上記sin(y)のテーラー級数演算は、下記の複数の積和演算を、順次、実行することで行
うことができる。
したがって、下記11.〜15.に示すように、図2のテーラー級数積和演算命令30の各指定フィールド32〜36に、「レジスタ番号」もしくは「値」を設定し、上記zを求める積和演算を、複数回、逐次実行すると、sin(y)の値を算出することができる。
11. 積和演算の積演算の一方の入力レジスタ番号32:zを収めたレジスタ番号
12. 積和演算の積演算の他方の入力レジスタ番号33:0またはy2 を格納しているレジスタ番号
13. 積和演算の演算結果の出力レジスタ番号34:zを収めたレジスタ番号
14. 係数テーブルのセット番号を収めたレジスタ番号セット番号35:0を収めたレジスタ番号
15. テーラー級数の次数番号36:0〜7の値
入力引数xの範囲が{x = -π/4+2nπ〜+π/4+2nπ}以外のケースについても、同様に、入力引数判定、入力引数変換を経て、テーラー級数演算で表現することができる。
下記に、テーラー級数積和演算命令(ftrimaddd)を用いて、前記sin(y)のテーラー級数演算を実行する場合の、具体的なアセンブラ命令列を示す。
この例では、前記テーラー級数積和演算命令30のアセンブラ命令を、以下のように定義する。尚、ftrimaaddは、前記テーラー級数積和演算命令30の命令種別コード31のアセンブラ命令における表記である。また、このアセンブラ命令のオペランド・フィールド(< >部分)は、図2のテーラー級数積和演算命令30のオペランド・フィールドと一部順序が異なっている。
ftrimaddd <積和演算の積演算の一方の入力レジスタ番号>,
<積和演算の積演算の他方の入力レジスタ番号>,
<係数テープルのセット番号を収めたレジスタ番号>,
<テーラー級数の次数番号>,
<積和演算の演算結果の出力レジスタ番号>
本例では、積和演算の積演算の一方の入力レジスタ番号32を“8”、積和演算の積演算の他方の入力レジスタ番号33を“0”もしくは“2”、係数テーブルのセット番号を
収めたレジスタ番号35を“6”、積和演算の演算結果の出力レジスタ番号34を“8”に設定する。そして、レジスタ番号iを%fiで表記する。
これにより、アセンブラ命令ftrimaddddでは、積和演算の積演算の一方の入力レジスタ番号32は%f8、積和演算の積演算の他方の入力レジスタ番号33は%f0もしくは%f2、係数テーブルのセット番号を収めたレジスタ番号35は%f4、積和演算の積演算の他方の入力レジスタ番号33は%f6と表記される。
ここで、%f0=0、%f2=y2、 %f4=0、 %f6=0、%f8=zに設定する。すなわち、レジスタ番号0(%f0)のレジスタr0には“0”、レジスタ番号2(%f2)のレジスタr2には“y2”、レジスタ番号%f4のレジスタr4には“y”、レジスタ番号6(%f6)のレジスタr6には“0”が設定され、レジスタ番号8(%f8)のレジスタフr8の値を“z”とする。
この場合、sin(x)(=sin(y))の値 を、15次までのテーラー級数演算で求めるアセンブラ命令列は、
ftrimaddd %f8, %f0, %f6, 7, %f8
ftrimaddd %f8, %f2, %f6, 6, %f8
ftrimaddd %f8, %f2, %f6, 5, %f8
ftrimaddd %f8, %f2, %f6, 4, %f8
ftrimaddd %f8, %f2, %f6, 3, %f8
ftrimaddd %f8, %f2, %f6, 2, %f8
ftrimaddd %f8, %f2, %f6, 1, %f8
ftrimaddd %f8, %f2, %f6, 0, %f8
fmuld %f8, %f4, %f8
となる。
ここで、fmuldは、z=z・yの積演算を実行するアセンブラ命令である。
[第3の実施形態]
図4は、本発明の第3実施形態である演算処理装置の主要部の構成を示すブロック図である。
本実施形態の演算処理装置3は、図4の左側に示すテーラー級数積和演算命令50を命令セットに含んでいる。このテーラー級数積和演算命令50は、5つのフィールド51〜55から構成されている。フィールド51は命令種別コードの設定フィールドであり、このフィールド51には「テーラー級数積和演算命令コード」を設定する。フィールド52には「積和演算の積演算の他方の入力レジスタ番号」を、フィールド53には「積和演算の積演算の他方の入力レジスタ番号」を、フィールド54には「積和演算の演算結果の出力レジスタ番号」を設定する。また、フィールド55には「テーラー級数の次数番号」を設定する。
このように、本実施形態のテーラー級数積和演算命令50は、図3に示す第2実施形態のテーラー級数積和演算命令30から「係数テーブルのセット番号を収めたレジスタ番号」の設定フィールド35を削除した構成となっている。
本実施形態は、係数テーブルのセット番号を格納したレジスタr2の値の符号ビット(図4の例では、第63ビット)を、係数テーブルのセット番号として利用し、この符号ビットを、マルチプレクサ26に選択信号として入力させる。本実施形態の演算処理装置3のレジスタは64ビット構成なので、この符号ビットは、図4では[63]と表記されている。
演算処理装置3においては、マルチプレクサ2033と浮動小数点積和演算器1050との間に、アンドゲート61が設けられている。このアンドゲート61の一方の入力端子61aには前記レジスタr2の符号ビット([63])が入力し、他方の入力端子61bにはテーラー級数積和演算命令50の命令種別コード(テーラー級数積和演算命令コード)51が入力する。
本実施形態においては、テーラー級数積和演算命令コード51は“1”に設定される。一方、図8に示す浮動小数点積和演算命令2010の命令種別コード2011は“0”に設定される。アンドゲート61の入力端子61bは負論理入力なので、テーラー級数積和演算命令50実行中は、アンドゲート61の出力は、常に“0”となる。一方、前記浮動小数点積和演算命令2010実行中は、アンドゲート61は、入力端子61aに入力するレジスタr2の第63ビット([63])の値を、そのまま、出力する。
アンドゲート61の出力は、マルチプレクサ2032の出力(レジスタr2の値)を浮動小数点積和演算器1050に入力させる信号線65上で、レジスタr2の第63ビット(符号ビット)との論理積がとられ、その論理積の結果が上記信号線65を介して浮動小数点積和演算器1050に入力する。
したがって、演算処理装置3がテーラー級数積和演算命令50を実行するときには、アンドゲート61の作用により、浮動小数点積和演算器1050に入力されるレジスタr2の値の符号ビットは強制的に“0”(正)にセットされる。
アンドゲート61は、テーラー級数積和演算命令50を実行する際に、レジスタr2の符号ビットを係数テーブルのセット番号として利用するために設けられたものである。
このアンドゲート61を設けた理由を、より詳しく説明する。
sin(x) とcos(x)のケースを例に考えると、前記第2の実施形態で証明されたように、テーラー級数積和演算命令50の積和演算の積演算の他方の入力データは、0またはyを値としてとるので、必ず値が正となることが分かっている。このため、積和演算の積演算の他方の入力データの符号ビットに、係数テーブルのセット番号を設定しても、元のデータの情報を失わずに、テーラー級数演算を実行することが可能である。換言すれば、sin(x)とcos(x)の場合は、テーラー級数積和演算命令50の積和演算の積演算の他方の入力レジスタの値は、常に正であることが分かっているので、その値の符号ビットをセット番号に使用しても、その値が浮動小数点積和演算器1050に入力される前に、その値の符号ビットを元に戻せば、浮動小数点積和演算器1050においてテーラー級数演算は正しく実行される。
本実施形態のテーラー級数積和演算命令50の具体的な使用例を、sin関数を取り上げて説明する。
sin(x)の入力引数判定により、x = +π/4+2nπ〜+3π/4++2nπの範囲であることが判明したとすると、sin(x)は、入力引数変換を経て、下記のようなテーラー級数演算で表現される。
ここで、bnは、図2のセット番号が“1”の係数テーブル12(cos(x)のテーラー級数演算の係数テーブル)に対応する。
テーラー級数演算をcos(y)のテーラー級数の14次まで求めることにすると、
と表現することができる。
したがって、下記1.〜4.に示すように、テーラー級数積和演算命令50の各指定フィールド52〜55に、「レジスタ番号」及び「テーラー級数の次数番号」を設定し、上記zを求める積和演算を、複数回、逐次実行すると、sin(x)(=cos(y))の値を算出することができる。
1.積和演算の積演算の一方の入力レジスタ番号52:zを収めたレジスタ番号
2.積和演算の積演算の他方の入力レジスタ番号53:“−0”または“−y2 ”を格納しているレジスタ番号
3.積和演算の演算結果の出力レジスタ番号54:zを収めたレジスタ番号
4.テーラー級数の次数番号56:0〜7の値
入力引数xの範囲が +π/4+2nπ〜+3π/4+2nπ以外のケースについても、同様に、入力引数判定、入力引数変換を経て、テーラー級数演算で表現することができる。
ここで、上記2.において、積和演算の積演算の他方の入力レジスタ番号53に“−0”または“−y2 ”を設定するようにしているのは、上述したように、sin(x)の入力引数x が +π/4+2nπ〜+3π/4++2nπの範囲である場合、図2に示すセット番号が“1”の係数テーブル12に格納されている係数を用いてテーラー級数演算を行いながら、sin(x) の値を求めるためである。これは、sin(x)の入力引数xが、x = +5π/4+2nπ〜+7π/4++2nπの範囲の場合も同様である。
次に、テーラー級数積和演算命令50を用いて、sin(x) (=cos(y))のテーラー級数演算を実行する場合の具体的なアセンブラ命令列について説明する。
前記テーラー級数積和演算命令50のアセンブラ命令の表記を、前記第2の実施形態と同様に、下記のように定義する。ftrimaddはテーラー級数積和演算命令50のアセンブラ命令表記、< >内はアセンブラ命令ftrimaddのオペランドである。
ftrimadd <積和演算の積演算の一方の入力レジスタ番号>
<積和演算の積演算の他方の入力レジスタ番号>
<テーラー級数の次数番号>
<積和演算の演算結果の出力レジスタ番号>
ここで、積和演算の積演算の一方の入力レジスタ番号32を“6”、積和演算の積演算の他方の入力レジスタ番号33を“0”もしくは“2”、積和演算の演算結果の出力レジスタ番号34を“6”に設定する。そして、レジスタ番号iを%fiで表記し、%f0=−0、%f2=−y2、%f4=1、%f6=zであるとする。
すなわち、レジスタ番号0(%f0)のレジスタには“−0”、レジスタ番号2(%f2)のレジスタには“−y2”、レジスタ番号4(%f4)のレジスタには“1”が設定されており、レジスタ番号6(%f6)のレジスタの値を“z”とする。
この場合、sin(x)(=cos(y))の値を、14次までのテーラー級数演算で求めるアセンブラ命令列の記述は下記のようになる
ftrimaddd %f6, %f0, 7, %f6
ftrimaddd %f6, %f2, 6, %f6
ftrimaddd %f6, %f2, 5, %f6
ftrimaddd %f6, %f2, 4, %f6
ftrimaddd %f6, %f2,3, %f6
ftrimaddd %f6, %f2,2, %f6
ftrimaddd %f6, %f2,1, %f6
ftrimaddd %f6, %f2,0, %f6
fmuld %f6, %f4, %f6
fmuldは、z=z・1の積演算を実行するアセンブラ命令である。
演算処理装置3が、上記アセンブラ命令列を実行するときの動作を説明する。係数テーブルセット10が図2に示すような構成となっている場合、sin(x) の入力引数xが、−π/4+2nπ〜+π/4+2nπもしくは+3π/4+2nπ〜+5π/4+2nπの場合は、セット番号22が“0”の係数テーブル11を用いるので、レジスタr2の符号ビット([63])を、そのまま、係数テーブルのセット番号として使用できる。
これに対し、sin(x) の入力引数xが、+π/4+2nπ〜+π3/4+2nπもしくは+5π/4+2nπ〜+7π/4+2nπ場合は、セット番号22が“1”の係数テーブル12を用いるので、レジスタr2の符号ビットは、常に、“1”(負)に設定しておく必要がある。しかしながら、上述したようにsin(x)の値算出に用いるテーラー級数積和演算命令50の「積和演算の積演算の他方の入力レジスタ」(本実施形態の場合はレジスタr2)の値は“0”または“y”である。この問題を解決するため、積和演算の積演算の他方の入力レジスタr2には、“−0”、“−y2 ”を設定する。
レジスタr2に設定された“−0”、“−y2 ”の値は、前述したアンドゲート61の作用により、浮動小数点積和演算器1050に入力される前に、“0”と“y2 ”に変換される。これにより、浮動小数点積和演算器1050は、sin(x)(=cos(y))のテーラー級数演算を正しく実行できる。
sin(x) 、cos(x)以外のケースでは、入力データの精度を多少犠牲にして、「積和演算の積演算の他方の入力データ」の仮数部の下位ビットを、係数テーブルのセット番号に利用することで、sin(x) 、cos(x)と同様にして、積和演算の積演算の他方の入力レジスタの値により、係数テーブルのセット番号を正しく指示することが可能になる。
本実施形態では、積和演算の積演算の他方の入力レジスタの一部のビットを、係数テーブルのセット番号の指定に利用するようにしているが、積和演算の積演算の一方の入力レジスタの一部のビットを、係数テーブルのセット番号の指定に用いるようにしてもよい。
[第4の実施形態]
図5は、本発明の第4実施形態である演算処理装置の主要部の構成を示す図である。図5において、図3の構成要素と同じ構成要素には同じ符号を付与している。
第2の実施形態で説明されているように、テーラー級数演算を実行する場合、「積和演算の積演算の一方の入力レジスタ番号」と「積和演算の演算結果の出力レジスタ番号」は、同一のレジスタ番号を示す。
本実施形態の演算処理装置4は、この点に着目し、図3に示すテーラー級数積和演算命令30から「積和演算の積演算の一方の入力レジスタ番号」のフィールド32を省略し、代わりに、「積和演算の演算結果の出力レジスタ番号」のフィールド33を、「積和演算の積演算の一方の入力レジスタ番号」を指定するフィールドとしても使用する。
図5の左側に、本実施形態の演算処理装置4が備えるテーラー級数積和演算命令70を示す。
本実施形態のテーラー級数積和演算命令70は、5つのフィールド71〜75から構成される。フィールド71には「命令種別コード(テーラー級数積和演算命令コート゛)が、フィールド72には「積和演算の積演算の他方の入力レジスタ番号」が、フィールド73には「積和演算の演算結果の出力レジスタ番号」が設定される。また、フィールド74には「係数テーブルのセット番号を収めたレジスタ番号」が、フィールド75には「テーラー級数の次数番号」が設定される。
本実施形態のテーラー級数積和演算命令70は、フィールド73に設定される「積和演算の演算結果の出力レジスタ番号(w1)」を、「積和演算の積演算の一方の入力レジスタ番号(r1)」に兼用している。これにより、テーラー級数積和演算命令のレジスタ指
定フィールドを削減できるという効果が得られる。
本実施形態の動作は、テーラー級数積和演算命令70のフィールド73に設定される「積和演算の演算結果の出力レジスタ番号」が、レジスタ40から、積和演算の積演算の一方の値を格納している入力レジスタr1を読み出すために用いられる以外は、前述した第3の実施形態と同様である。
尚、本実施形態では、「積和演算の演算結果の出力レジスタ番号(w1)」を「積和演算の積演算の一方の入力レジスタ番号(r1)」に兼用しているが、これとは、逆に、テーラー級数積和演算命令に、「積和演算の積演算の一方の入力レジスタ番号」を設定するフィールドを設け、「積和演算の演算結果の出力レジスタ番号(w1)」は省略するようにして、「積和演算の積演算の一方の入力レジスタ番号(r1)」を「積和演算の演算結果の出力レジスタ番号(w1)」に兼用するようにしてもよい。このような演算処理装置は、図5の構成とほぼ同様な構成で実現できる。すなわち、テーラー級数積和演算命令70において、「積和演算の演算結果の出力レジスタ番号(w1)」の設定フィールド73の代わりに、「積和演算の積演算の一方の入力レジスタ番号(r1)」の設定フィールドを設ける。そして、レジスタ番号r1を、レジスタ40にレジスタ番号w1として入力させるようにすればよい。
[第5の実施形態]
図6は、本発明の第5実施形態である演算処理装置のシステム構成を示すブロック図である。図6において、図1と同じ構成要素には同一の符号を付与している。
本実施形態の演算処理装置5と前記第1の実施形態の演算処理装置1との構成上の差異は、係数テーブルセット90がRAM(Random Access Memory)に実装されていることである。前記第1の実施形態の演算処理装置1においては、係数テーブルセット10はROMに実装されている。
本実施形態の演算処理装置5が第1の実施形態の演算処理装置1より優れている点は、係数テーブルセット90の内容を書き換えできることである。このため、本実施形態の演算処理装置5においては、係数テーブルの値の更新、係数テーブルの入れ替え、係数テーブルの追加などが可能である。
[第6の実施形態]
図7は、本発明の第6の実施形態である演算処理装置の主要部を示す図である。図7において、図3及び図6の構成要素と同一の構成要素には同じ符号を付与している。
図7の左側に、本実施形態の演算処理装置6が備える係数テーブルセット更新命令100の形式を示す。
係数テーブルセット更新命令100は、浮動小数点積和演算器1050に積演算を実行させ、その演算結果を、係数テーブルセット内の指定された係数テーブルの指定されたテーラー級数の次数番号の記憶領域に書き込ませる命令である。演算処理装置6は、この係数テーブルセット更新命令100を実行して、係数テーブルセット90の係数データを更新する。
係数テーブルセット更新命令100の実行においては、積演算のみが行われるため、浮動小数点積和演算器1050の和算用の入力データは“0”に固定される。浮動小数点積和演算器1050が係数テーブルセット更新命令100を実行する際に使用する積演算の2つの被演算データは、レジスタr1の値とレジスタr2の値である。この2つの被演算データは、係数テーブルセット更新命令100によって指定される。
前記係数テーブルセット更新命令100は、5つのフィールド101〜105から構成される。フィールド101には、命令種別コードとして、「係数テーブル更新命令コート゛」を設定する。フィールド102には、「積和演算の積演算の一方の入力レジスタ番号」(本実施形態では、レジスタr1のレジスタ番号)を設定する。フィールド103には、「積和演算の積演算の他方の入力レジスタ番号」(本実施形態では、レジスタ番号r2のレジスタ番号)を設定する。フィールド104には、「係数テーブルのセット番号を収めたレジスタ番号」(本実施形態では、レジスタr3のレジスタ番号)を設定する。そして、フィールド105には、「テーラー級数の次数番号」を設定する。
上記「積和演算の積演算の一方の入力レジスタ番号」と上記「積和演算の積演算の他方の入力レジスタ番号」は、浮動小数点積和演算器1050が積和演算の積演算で使用する一方の被演算データが格納されたレジスタ(第1のレジスタr1)と他方の被演算データが格納されたレジスタ(第2のレジスタr2)のそれぞれのレジスタ番号である。また、上記「係数テーブルのセット番号を収めたレジスタ番号」は、データを更新する係数テーブル(データ更新対象の係数テーブル)を指定する情報を格納しているレジスタ(第3のレジスタr3)のレジスタ番号である。「テーラー級数の次数番号」は、更新対象のデータのテーラー級数の次数を指定する情報である。
本実施形態では、前述のように、テーラー級数の係数の次数が、係数テーブルの行番号に対応するように構成されているので、前記データ更新対象の係数テーブルと前記更新対象データのテーラー級数の次数により、係数テーブルセット(RAM)90内での前記更新対象データのアドレスが決定される。すなわち、前記レジスタr3の値と前記テーラー級数の次数番号21により、前記更新対象データの前記係数テーブルセット(RAM)90内での格納アドレスを知ることができる。
前記係数テーブルセット更新命令100がデコードされると、前記レジスタr1の値、前記レジスタr2の値及び前記レジスタr3の値がレジスタ40から読み出される。レジスタr1の値とレジスタr2の値は、それぞれ、マルチプレクサ2031とマルチプレクサ2031を介して、浮動小数点積和演算器1050にオペランドデータとして入力する。浮動小数点積和演算器1050は、前記レジスタr1の値と前記レジスタr2の値を積演算し、その積演算結果をマルチプレクサ93に出力する。
前記レジスタr3の値は、マルチプレクサ1023を介して、マルチプレクサ93に選択信号(前記係数テーブルセット(RAM)90の列アドレス信号)として入力する。前記係数テーブルセット(RAM)90には、前記テーラー級数の次数番号105が行アドレス信号として入力する。浮動小数点積和演算器1050の前記積演算結果は、前記マルチプレクサ93から選択出力され、前記係数テーブルセット(RAM)90の前記行アドレス信号と前記列アドレス信号によって決定されるアドレスに書き込まれる。これにより、係数テーブルセット更新命令100によって指定された係数テーブルの係数データが更新される。
本実施形態は、このように、係数テーブルセット90の任意のアドレスに係数データを書き込むことができる。したがって、本実施形態は、係数テーブルセット90に格納されている係数テーブルの係数データの更新、該係数テーブルの入れ替えなどが可能である。
また、本実施形態においては、演算処理装置6が係数テーブルセット更新命令100を実行することにより、係数テーブルセット90に新たな係数テーブルを追加することも可能である。
本実施形態では、係数テーブルセット(RAM)90の更新データを、レジスタ40に格納されている2つのデータを浮動小数点積和演算器1050により積演算することにより求めているが、該更新データを、係数テーブルセット更新命令のフィールドに、即値(immediate)として設定できるような構成にしてもよい。
また、本実施形態の演算処理装置6がテーラー級数演算を行う際に実行するテーラー級数積和演算命令には、前記第2〜4実施形態の各実施形態のテーラー級数積和演算命令を使用できる。
本発明は、上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々に変形して実施することができる。
(付記1)
オペランドのデータを格納するレジスタ手段と、
該レジスタ手段に格納されたオペランドのデータを読み出すレジスタデータ読み出し手段と、
数学関数のテーラー級数演算の係数データを格納する係数テーブルを記憶する係数テーブルセット記憶手段と、
前記数学関数のテーラー級数の次数情報と前記係数テーブルの識別情報を用いて、前記係数テーブルセット記憶手段から、前記数学関数のテーラー級数の係数データを読み出す係数データ読み出し手段と、
該係数データ読み出し手段により読み出された前記係数データと前記レジスタ手段から読み出されたデータもしくはバイパスデータを用いて、前記数学関数のテーラー級数演算を実行する浮動小数点積和演算器と、
を備えることを特徴とする演算処理装置。
(付記2)
付記1記載の演算処理装置であって、
前記係数テーブルは、偶関数である数学関数については偶数の次数の係数データのみを格納し、奇関数である数学関数については奇数の次数の係数データのみを格納することを特徴とする。
(付記3)
付記2記載の演算処理装置であって、
前記奇関数は正弦関数(sin(x))であり、前記偶関数は余弦関数(cos(x))であり、
前記係数テーブルセット記憶手段は、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを備えることを特徴とする。
(付記4)
付記3記載の演算処理装置であって、
前記正弦関数または前記余弦関数をテーラー級数演算で演算する際、それらの数学関数の入力引数xの値の範囲に応じて、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを使い分けることを特徴とする。
(付記5)
付記4記載の演算処理装置であって、
前記正弦関数または前記余弦関数の入力引数xが−π/4〜+π/4の範囲外である場合には、前記正弦関数または前記余弦関数の入力引数xが−π/4〜+π/4の範囲内となるような入力引数変換を行い、該入力引数変換により得られる正弦関数または余弦関数の係数テーブルの係数データを用いてテーラー級数演算を実行することを特徴とする。
(付記6)
付記1記載の演算処理装置であって、さらに、
前記係数データ読み出し手段により読み出された前記係数テーブルセット記憶手段内の係数データと、前記レジスタデータ読み出し手段により読み出された前記レジスタ手段に
格納されたデータもしくはバイパスデータを入力し、浮動小数点演算命令の種別を示す命令種別コードに応じて、前記2つの入力データの内、いずれか一方の入力データを前記浮動小数点積和演算器に選択出力する選択出力手段を備え、
該選択出力手段は、前記命令種別コードがテーラー級数積和演算命令を示している場合には、前記係数データを前記浮動小数点積和演算器に出力することを特徴とする。
(付記7)
付記1または6記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第1の情報を設定するフィールドと、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、
前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第3の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第4の情報を設定するフィールドと、テーラー級数の次数を指定する第5の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
(付記8)
付記1または6記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第1の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第3の情報を設定するフィールドと、テーラー級数の次数を指定する第4の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
前記第2の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
(付記9)
付記1または6記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第1の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第3の情報を設定するフィールドと、テーラー級数の次数を指定する第4の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
前記第1の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
(付記10)
付記8または9記載の演算処理装置であって、
前記指定されるレジスタのデータの一部のビットは、符号ビットであることを特徴とする。
(付記11)
付記10記載の演算処理装置であって、さらに、
前記指定されるレジスタのデータの符号ビットを所定の値に設定し、該設定後のレジスタのデータを前記浮動小数点積和演算器に出力する符号ビット設定手段を備えることを特徴とする。
(付記12)
付記11記載の演算処理装置であって、
前記符号ビット設定手段は、
前記命令種別コードと前記指定されるレジスタのデータの符号ビットを入力し、前記命令種別コードがテーラー級数積和演算命令であるときにのみ、前記所定の値を出力するアンドゲート手段と、
前記指定されるレジスタのデータの符号ビットを、前記アンドゲート手段の出力するビットに置き換える符号ビット置き換え手段と、
を備えることを特徴とする。
(付記13)
付記8または9記載の演算処理装置であって、
前記指定されるレジスタのデータの一部のビットは仮数部の下位ビットであることを特徴とする。
(付記14)
付記7、8記載の演算処理装置であって、さらに、
浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する付記7、8記載の第1の情報を設定するフィールドを省略し、
代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する付記7、8記載の第3の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指定する情報に用い、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
(付記15)
付記7、9記載の演算処理装置であって、さらに、
浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタの番号を指定する付記7、9記載の第2の情報を設定するフィールドを省略し、
代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する付記7、9記載の第3の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する情報に用い、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
(付記16)
付記1乃至15のいずれか1項に記載の演算処理装置であって、
前記係数テーブルセット記憶手段は、データ読み出し専用のメモリであることを特徴とする。
(付記17)
付記1乃至15のいずれか1項に記載の演算処理装置であって、
前記係数テーブルセット記憶手段は、データの書き換えが可能なメモリであることを特
徴とする。
(付記18)
付記17記載の演算処理装置であって、さらに、
係数テーブルを指定する係数テーブル指定情報と、テーラー級数の次数を指定する次数指定情報により、前記係数テーブルセット記憶手段内のデータの設定位置を指定次数指定することを特徴とする。
(付記19)
付記18記載の演算処理装置であって、さらに、
前記係数テーブルセット記憶手段内の前記設定位置に、係数データを設定する係数テーブルセット更新手段を備えることを特徴とする。
(付記20)
付記19記載の演算処理装置であって、さらに、
前記係数テーブルのデータ更新を指示する命令種別コードを設定するフィールドと、積和演算の積演算の一方の被演算値を格納するレジスタを指定する第1の情報を設定するフィールドと、積和演算の積演算の他方の被演算値を格納するレジスタを指定する第2の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第3の情報を設定するフィールドと、テーラー級数の次数情報を指定する第4の情報を設定するフィールドから成る係数テーブルセット更新命令を備え、
前記係数テーブルセット更新手段は、前記係数テーブルセット更新命令のデコード結果に応じて、前記第1の情報で指定される第1のレジスタの値と前記第2の情報で指定される第2のレジスタの値の積演算を前記浮動小数点積和演算器に実行させ、その積演算結果を、前記第3の情報で指定されるレジスタの値によって指定される係数テーブルの、前記第4の情報によって指定される次数の係数データの格納領域に書き込むことを特徴とする。
本発明の第1の実施形態である演算処理装置のシステム構成を示すブロック図である。 係数テーブルセットの構成例を示す図である。 本発明の第2実施形態である演算処理装置の主要部の構成を示す図である。 本発明の第3実施形態である演算処理装置の主要部の構成を示すブロック図である。 図5は、本発明の第4実施形態である演算処理装置の主要部の構成を示す図である。 本発明の第6実施形態である演算処理装置のシステム構成を示すブロック図である。 本発明の第7の実施形態である演算処理装置の主要部を示す図である。 従来のテーラー級数演算機能を備えた演算処理装置のシステム構成を示す図である。
符号の説明
1 第1の実施形態の演算処理装置
10 係数テーブルセット(ROM)
11 sin(x) の係数テーブル
12 cos(x)の係数テーブル
21 テーラー級数の次数番号
22 係数テーブルのセット番号
23 命令種別コード
26、27 マルチプレクサ
2 第2の実施形態の演算処理装置
30 第2の実施形態のテーラー級数積和演算命令
31 命令種別コード(テーラー級数積和演算命令コート゛)の設定フィールド
32 積和演算の積演算の一方の入力レジスタ番号の設定フィールド
33 積和演算の積演算の他方の入力レジスタ番号の設定フィールド
34 積和演算の演算結果の出力レジスタ番号の設定フィールド
35 係数テーブルのセット番号を収めたレジスタ番号の設定フィールド
36 テーラー級数の次数番号の設定フィールド
40 レジスタ
2031〜2034 マルチプレクサ
3 第3の実施形態の演算処理装置
50 第3の実施形態のテーラー級数積和演算命令
51 命令種別コード(テーラー級数積和演算命令コート゛)の設定フィールド
52 積和演算の積演算の一方の入力レジスタ番号の設定フィールド
53 積和演算の積演算の他方の入力レジスタ番号の設定フィールド
54 積和演算の演算結果の出力レジスタ番号の設定フィールド
55 テーラー級数の次数番号の設定フィールド
61 アンドゲート
61a アンドゲート61の一方の入力端子
61b アンドゲート61の他方の入力端子
65 レジスタr2のデータが流れる信号線
4 第4の実施形態の演算処理装置
70 第4の実施形態のテーラー級数積和演算命令
71 命令種別コード(テーラー級数積和演算命令コート゛)の設定フィールド
72 積和演算の積演算の他方の入力レジスタ番号の設定フィールド
73 積和演算の演算結果の出力レジスタ番号の設定フィールド
74 係数テーブルのセット番号を収めたレジスタ番号の設定フィールド
75 テーラー級数の次数番号の設定フィールド
5 本発明の第5実施形態の演算処理装置
90 係数テーブルセット(RAM)
91 マルチプレクサ
6 本発明の第6実施形態の演算処理装置
93 マルチプレクサ
100 係数テーブルセット更新命令
101 命令種別コード(係数テーブル更新命令コード)の設定フィールド
102 積和演算の積演算の一方の入力レジスタ番号の設定フィールド
103 積和演算の積演算の他方の入力レジスタ番号の設定フィールド
104 係数テーブルのセット番号を収めたレジスタ番号の設定フィールド
105 テーラー級数の次数番号の設定フィールド
r1、r2、r2、W11 レジスタ番号

Claims (15)

  1. 積和演算の乗数である第1のオペランドと被乗数である第2のオペランドと加算数である第3のオペランドを保持するレジスタと、
    前記レジスタに保持された第1乃至第3のオペランドを読出すオペランド読出部と、
    テーラー級数の各項の係数を表す係数データを格納する係数テーブルを関数毎に記憶するテーブル記憶部と、
    前記テーラー級数の各項の次数を表す次数情報と演算対象である関数に対応した係数テーブルを識別する識別情報を用いて、前記テーブル記憶部から係数データを読出す係数データ読出部と、
    入力した演算命令の種別を示す命令種別コードが前記テーラー級数の積和演算を行うテーラー級数積和演算命令を示している場合には、前記テーブル記憶部から読み出された係数データと前記レジスタから読み出された第1及び第2のオペランドを出力するとともに、前記命令種別コードが前記テーラー級数積和演算命令以外の積和演算命令を示している場合には、前記レジスタから読み出された第1乃至第3のオペランドを出力する選択部と、
    前記命令種別コードが前記テーラー級数積和演算命令を示している場合には、前記テーブル記憶部から読み出された係数データと前記レジスタから読み出された第1及び第2のオペランドを用いて前記関数のテーラー級数演算を実行し、前記命令種別コードが前記テーラー級数積和演算命令以外の積和演算命令を示している場合には、前記レジスタから読み出された第1乃至第3のオペランドを用いて、前記テーラー級数積和演算命令以外の積和演算命令を実行する演算器を有することを特徴とする演算処理装置。
  2. 前記演算処理装置において、
    前記係数テーブルは、偶関数である数学関数については偶数の次数の係数データのみを格納し、奇関数である数学関数については奇数の次数の係数データのみを格納することを特徴とする請求項1記載の演算処理装置。
  3. 前記演算処理装置において、
    前記奇関数は正弦関数sin(x)であり(xは引数)、前記偶関数は余弦関数cos(x)であり、
    前記テーブル記憶部は、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを有することを特徴とする請求項2記載の演算処理装置。
  4. 前記演算処理装置において
    前記係数データ読出部は、
    前記正弦関数又は前記余弦関数をテーラー級数演算で演算する場合、引数xの値が取り得る範囲に応じて、関数に対応する係数テーブルから係数データを読出すことを特徴とする請求項3記載の演算処理装置。
  5. 前記演算処理装置はさらに
    前記正弦関数又は前記余弦関数の引数xが−π/4〜+π/4(πは円周率)の範囲外である場合には、前記正弦関数又は前記余弦関数の引数xが−π/4〜+π/4の範囲内となるように前記引数xから所定値を加減算した引数yを新たな引数とする引数の変換を行う変換部を有し、
    前記演算部は、前記新たな引数の変換により得られた関数に対応する係数テーブルの係数データを用いて前記関数のテーラー級数演算を実行することを特徴とする請求項4記載の演算処理装置。
  6. 前記演算処理装置において
    前記テーラー級数積和演算命令は、前記テーラー級数積和演算命令を示す命令種別コードを含むフィールドと、前記第1のオペランドを保持するレジスタを指定する第1の情報を含むフィールドと、前記第2のオペランドを保持するレジスタを指定する第2の情報を含むフィールドと、前記テーラー級数積和演算命令の演算結果を出力するレジスタを指定する第3の情報を含むフィールドと、前記係数テーブルの識別情報を保持するレジスタを指定する第4の情報を含むフィールドと、テーラー級数の次数を指定する第5の情報を含むフィールドを有し、
    前記テーラー級数積和演算命令のデコード結果に応じて、前記テーブル記憶部から読み出された係数データを前記演算器に供給することを特徴とする請求項1記載の演算処理装置。
  7. 前記演算処理装置において、
    前記テーラー級数積和演算命令は、前記テーラー級数積和演算命令を示す命令種別コードを含むフィールドと、前記第1のオペランドを保持するレジスタを指定する第1の情報を含むフィールドと、前記第2のオペランドを保持するレジスタを指定する第2の情報を含むフィールドと、前記テーラー級数積和演算命令の演算結果を出力するレジスタを指定する第3の情報を含むフィールドと、テーラー級数の次数を指定する第4の情報を含むフィールドを有し、
    前記第1の情報又は前記第2の情報で指定されるレジスタが保持するオペランドの一部の情報を、前記係数テーブルの識別情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記テーブル記憶部から読み出された係数データを前記演算器に供給することを特徴とする請求項1記載の演算処理装置。
  8. 前記演算処理装置において、
    前記第1の情報又は前記第2の情報で指定されるレジスタが保持するオペランドの一部の情報は、前記オペランドの符号ビットであることを特徴とする請求項7記載の演算処理装置。
  9. 前記演算処理装置はさらに、
    前記第1の情報又は前記第2の情報で指定されるレジスタが保持するオペランドの符号ビットを所定の値に設定したオペランドを前記演算器に出力する符号ビット設定部を有することを特徴とする請求項8記載の演算処理装置。
  10. 前記演算処理装置において、
    前記符号ビット設定部は、
    前記命令種別コードと前記第1の情報又は前記第2の情報で指定されるレジスタが保持するオペランドの符号ビットを入力する論理積回路と、
    前記命令種別コードと前記第1の情報又は前記第2の情報で指定されるレジスタが出力するオペランドの符号ビットを、前記論理積回路が出力する値に置き換える符号ビット置換部を有することを特徴とする請求項9記載の演算処理装置。
  11. 前記演算処理装置において、
    前記第1の情報又は前記第2の情報で指定されるレジスタが保持するオペランドの一部の情報は、仮数部に含まれるいずれかのビットであることを特徴とする請求項7記載の演算処理装置。
  12. 前記演算処理装置において、
    前記テーラー級数積和演算命令は、前記テーラー級数積和演算命令を示す命令種別コードを含むフィールドと、前記第2のオペランドを保持するレジスタを指定する第1の情報を含むフィールドと、前記テーラー級数積和演算命令の演算結果を出力するレジスタを指定する第2の情報を含むフィールドと、前記係数テーブルの識別情報を保持するレジスタを指定する第3の情報を含むフィールドと、テーラー級数の次数を指定する第4の情報を含むフィールドを有し、
    前記第2の情報を含むフィールドを、前記積和演算の積演算の一方のオペランドを保持するレジスタを指定する情報に用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記テーブル記憶部から読み出された係数データ又は前記レジスタから読み出されたオペランドを前記演算器に供給することを特徴とする請求項1記載の演算処理装置。
  13. 前記演算処理装置はさらに、
    前記係数テーブルが格納する係数データを更新する係数テーブル更新部を有することを特徴とする請求項1記載の演算処理装置。
  14. 前記演算処理装置において、
    前記テーラー級数積和演算命令は、前記テーラー級数積和演算命令の実行及び前記係数テーブルのデータ更新を指示する命令種別コードを含むフィールドと、前記第1のオペランドを保持するレジスタを指定する第1の情報を含むフィールドと、前記第2のオペランドを保持するレジスタを指定する第2の情報を含むフィールドと、前記係数テーブルの識別情報を保持するレジスタを指定する第3の情報を含むフィールドと、テーラー級数の次数を指定する第4の情報を含むフィールドを有し、
    前記係数テーブル更新部は、前記第3の情報で指定されるレジスタの値によって指定される係数テーブルが保持する係数データのうち、前記第4の情報で指定される次数の係数データを、前記命令種別コードのデコード結果に応じて、前記第1の情報で指定される第1のレジスタの値と前記第2の情報で指定される第2のレジスタの値の積演算の積演算結果で更新することを特徴とする請求項13記載の演算処理装置。
  15. 積和演算の乗数である第1のオペランドと被乗数である第2のオペランドと加算数である第3のオペランドを保持するレジスタと、テーラー級数の各項の係数を表す係数データを格納する係数テーブルを関数毎に記憶するテーブル記憶部を有する演算処理装置の制御方法において、
    前記レジスタに保持された第1乃至第3のオペランドを読出し、
    前記テーラー級数の各項の次数を表す次数情報と演算対象である関数に対応した係数テーブルを識別する識別情報を用いて、前記テーブル記憶部から係数データを読出し、
    入力した演算命令の種別を示す命令種別コードが前記テーラー級数の積和演算を行うテーラー級数積和演算命令を示している場合には、前記テーブル記憶部から読み出された係数データと前記レジスタから読み出された第1及び第2のオペランドを出力するとともに、前記命令種別コードが前記テーラー級数積和演算命令以外の積和演算命令を示している場合には、前記レジスタから読み出された第1乃至第3のオペランドを出力し、
    前記命令種別コードが前記テーラー級数積和演算命令を示している場合には、前記テーブル記憶部から読み出された係数データと前記レジスタから読み出された第1及び第2のオペランドを用いて前記関数のテーラー級数演算を実行し、前記命令種別コードが前記テーラー級数積和演算命令以外の積和演算命令を示している場合には、前記レジスタから読み出された第1乃至第3のオペランドを用いて、前記テーラー級数積和演算命令以外の積和演算命令を実行することを特徴とする演算処理装置の制御方法。
JP2007069614A 2007-03-16 2007-03-16 演算処理装置及び演算処理装置の制御方法 Active JP4755129B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007069614A JP4755129B2 (ja) 2007-03-16 2007-03-16 演算処理装置及び演算処理装置の制御方法
US12/047,782 US8655935B2 (en) 2007-03-16 2008-03-13 Processing apparatus and control method performing taylor series operation associated with executing floating point instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007069614A JP4755129B2 (ja) 2007-03-16 2007-03-16 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2008234076A JP2008234076A (ja) 2008-10-02
JP4755129B2 true JP4755129B2 (ja) 2011-08-24

Family

ID=39763743

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007069614A Active JP4755129B2 (ja) 2007-03-16 2007-03-16 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US8655935B2 (ja)
JP (1) JP4755129B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5304483B2 (ja) 2009-06-30 2013-10-02 富士通株式会社 演算処理装置
US9015217B2 (en) * 2012-03-30 2015-04-21 Apple Inc. Transcendental and non-linear components using series expansion
CN104169866B (zh) * 2012-03-30 2017-08-29 富士通株式会社 运算处理装置以及运算处理装置的控制方法
US9606796B2 (en) * 2013-10-30 2017-03-28 Texas Instruments Incorporated Computer and methods for solving math functions
JP6933810B2 (ja) 2018-01-24 2021-09-08 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN108388446A (zh) 2018-02-05 2018-08-10 上海寒武纪信息科技有限公司 运算模块以及方法
WO2023120403A1 (ja) * 2021-12-23 2023-06-29 国立大学法人奈良先端科学技術大学院大学 Cgraによる疎行列計算とマージソートに関する演算ユニット

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034603A (ja) * 1999-07-22 2001-02-09 Matsushita Electric Ind Co Ltd 積和演算処理装置
JP2005174077A (ja) * 2003-12-12 2005-06-30 Fujitsu Ltd 関数演算方法及び関数演算回路
JP2005338929A (ja) * 2004-05-24 2005-12-08 Renesas Technology Corp 半導体装置
JP2006005915A (ja) * 2004-05-18 2006-01-05 Rohm Co Ltd 三角関数波生成回路、およびそれを用いたdtmf信号生成回路、音信号生成回路、ならびに通信装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5042001A (en) * 1989-10-02 1991-08-20 Cyrix Corporation Method and apparatus for performing mathematical functions using polynomial approximation and a rectangular aspect ratio multiplier
JPH1055343A (ja) * 1996-08-13 1998-02-24 Fuji Xerox Co Ltd 演算装置及び演算システム
JP3790307B2 (ja) * 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US5963460A (en) * 1996-12-17 1999-10-05 Metaflow Technologies, Inc. Apparatus for computing transcendental functions quickly
US7509363B2 (en) * 2001-07-30 2009-03-24 Ati Technologies Ulc Method and system for approximating sine and cosine functions
US7117238B1 (en) * 2002-09-19 2006-10-03 Nvidia Corporation Method and system for performing pipelined reciprocal and reciprocal square root operations

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001034603A (ja) * 1999-07-22 2001-02-09 Matsushita Electric Ind Co Ltd 積和演算処理装置
JP2005174077A (ja) * 2003-12-12 2005-06-30 Fujitsu Ltd 関数演算方法及び関数演算回路
JP2006005915A (ja) * 2004-05-18 2006-01-05 Rohm Co Ltd 三角関数波生成回路、およびそれを用いたdtmf信号生成回路、音信号生成回路、ならびに通信装置
JP2005338929A (ja) * 2004-05-24 2005-12-08 Renesas Technology Corp 半導体装置

Also Published As

Publication number Publication date
JP2008234076A (ja) 2008-10-02
US8655935B2 (en) 2014-02-18
US20080228846A1 (en) 2008-09-18

Similar Documents

Publication Publication Date Title
US9916130B2 (en) Apparatus and method for vector processing
US10216479B2 (en) Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
JP4755129B2 (ja) 演算処理装置及び演算処理装置の制御方法
US11188330B2 (en) Vector multiply-add instruction
US7236995B2 (en) Data processing apparatus and method for converting a number between fixed-point and floating-point representations
US7996662B2 (en) Floating point status/control register encodings for speculative register field
US10489153B2 (en) Stochastic rounding floating-point add instruction using entropy from a register
US7565513B2 (en) Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations
US6295597B1 (en) Apparatus and method for improved vector processing to support extended-length integer arithmetic
JPH0863353A (ja) 掛け算累算命令を使用したデータ処理
JP6933810B2 (ja) 演算処理装置および演算処理装置の制御方法
WO2018138469A1 (en) An apparatus and method for processing input operand values
US9703626B2 (en) Recycling error bits in floating point units
US20060184594A1 (en) Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation
US20060184602A1 (en) Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value
US10445066B2 (en) Stochastic rounding floating-point multiply instruction using entropy from a register
US20100115232A1 (en) Large integer support in vector operations
US8604946B2 (en) Data processing device and data processing method
US20080209185A1 (en) Processor with reconfigurable floating point unit
JP2021507348A (ja) ベクトル・キャリー付き加算命令
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
JP2001092633A (ja) 複数の結果を出力する命令を有する演算装置
Smith et al. 64 Bits
JP3547316B2 (ja) プロセッサ
JP2011145886A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110301

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110426

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

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

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

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4755129

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150