(57)【要約】【課題】数学関数の値を求めるテーラー級数演算処理を、従来よりも高速に実行可能な演算処理装置を提供する。【解決手段】任意の数学関数のテーラー級数演算の係数データを格納する係数テーブルのセットを、専用のメモリである係数テーブルセット１０に記憶する。ある数学関数の値をテーラー級数演算で求める際には、テーラー級数の次数番号２１、係数テーブルのセット番号２２を用いて、係数テーブルセット１０から所望の係数データを取得し、それを、マルチプレクサ２７を介して浮動小数点積和演算器１０５０に供給する。浮動小数点積和演算器１０５０は、該係数データを用いて積和演算を実行し、任意の数学関数の値をテーラー級数演算により求める。【選択図】図１
2008234076.tif 000002
【特許請求の範囲】
【請求項１】
オペランドのデータを格納するレジスタ手段と、
該レジスタ手段に格納されたオペランドのデータを読み出すレジスタデータ読み出し手段と、
数学関数のテーラー級数演算の係数データを格納する係数テーブルを記憶する係数テーブルセット記憶手段と、
前記数学関数のテーラー級数の次数情報と前記係数テーブルの識別情報を用いて、前記係数テーブルセット記憶手段から、前記数学関数のテーラー級数の係数データを読み出す係数データ読み出し手段と、
該係数データ読み出し手段により読み出された前記係数データと前記レジスタ手段から読み出されたデータもしくはバイパスデータを用いて、前記数学関数のテーラー級数演算を実行する浮動小数点積和演算器と、
を備えることを特徴とする演算処理装置。
【請求項２】
請求項１記載の演算処理装置であって、
前記係数テーブルは、偶関数である数学関数については偶数の次数の係数データのみを格納し、奇関数である数学関数については奇数の次数の係数データのみを格納することを特徴とする。
【請求項３】
請求項２記載の演算処理装置であって、
前記奇関数は正弦関数（ｓｉｎ（ｘ））であり、前記偶関数は余弦関数（ｃｏｓ（ｘ））であり、
前記係数テーブルセット記憶手段は、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを備えることを特徴とする。
【請求項４】
請求項３記載の演算処理装置であって、
前記正弦関数または前記余弦関数をテーラー級数演算で演算する際、それら数学関数の入力引数ｘの値の範囲に応じて、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを使い分けることを特徴とする。
【請求項５】
請求項４記載の演算処理装置であって、
前記正弦関数または前記余弦関数の入力引数ｘが−π／４〜＋π／４の範囲外である場合には、前記正弦関数または前記余弦関数の入力引数ｘが−π／４〜＋π／４の範囲内となるような入力引数変換を行い、該入力引数変換により得られる正弦関数または余弦関数の係数テーブルの係数データを用いてテーラー級数演算を実行することを特徴とする。
【請求項６】
請求項１記載の演算処理装置であって、さらに、
前記係数データ読み出し手段により読み出された前記係数テーブルセット記憶手段内の係数データと、前記レジスタデータ読み出し手段により読み出された前記レジスタ手段に格納されたデータもしくはバイパスデータを入力し、浮動小数点演算命令の種別を示す命令種別コードに応じて、前記２つの入力データの内、いずれか一方の入力データを前記浮動小数点積和演算器に選択出力する選択出力手段を備え、
該選択出力手段は、前記命令種別コードがテーラー級数積和演算命令を示している場合には、前記係数データを前記浮動小数点積和演算器に出力することを特徴とする。
【請求項７】
請求項１または６記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを
指定する第２の情報を設定するフィールドと、
前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第４の情報を設定するフィールドと、テーラー級数の次数を指定する第５の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
【請求項８】
請求項１または６記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数を指定する第４の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
前記第２の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
【請求項９】
請求項１または６記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数を指定する第４の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
前記第１の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
【請求項１０】
請求項８または９記載の演算処理装置であって、
前記指定されるレジスタのデータの一部のビットは、符号ビットであることを特徴とする。
【請求項１１】
請求項１０記載の演算処理装置であって、さらに、
前記指定されるレジスタのデータの符号ビットを所定の値に設定し、該設定後のレジスタのデータを前記浮動小数点積和演算器に出力する符号ビット設定手段を備えることを特徴とする。
【請求項１２】
請求項１１記載の演算処理装置であって、
前記符号ビット設定手段は、
前記命令種別コードと前記指定されるレジスタのデータの符号ビットを入力し、前記命令種別コードがテーラー級数積和演算命令であるときにのみ、前記所定の値を出力するアンドゲート手段と、
前記指定されるレジスタのデータの符号ビットを、前記アンドゲート手段の出力するビットに置き換える符号ビット置き換え手段と、
を備えることを特徴とする。
【請求項１３】
請求項８または９記載の演算処理装置であって、
前記指定されるレジスタのデータの一部のビットは仮数部の下位ビットであることを特徴とする。
【請求項１４】
請求項７、８記載の演算処理装置であって、さらに、
浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する請求項７、８記載の第１の情報を設定するフィールドを省略し、
代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する請求項７、８記載の第３の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指定する情報に用い、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
【請求項１５】
請求項７、９記載の演算処理装置であって、さらに、
浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタの番号を指定する請求項７、９記載の第２の情報を設定するフィールドを省略し、
代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する請求項７、９記載の第３の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する情報に用い、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
【請求項１６】
請求項１乃至１５のいずれか１項に記載の演算処理装置であって、
前記係数テーブルセット記憶手段は、データ読み出し専用のメモリであることを特徴とする。
【請求項１７】
請求項１乃至１５のいずれか１項に記載の演算処理装置であって、
前記係数テーブルセット記憶手段は、データの書き換えが可能なメモリであることを特徴とする。
【請求項１８】
請求項１７記載の演算処理装置であって、さらに、
係数テーブルを指定する係数テーブル指定情報と、テーラー級数の次数を指定する次数指定情報により、前記係数テーブルセット記憶手段内の係数データの設定位置を指定することを特徴とする。
【請求項１９】
請求項１８記載の演算処理装置であって、さらに、
前記係数テーブルセット記憶手段内の前記設定位置に、係数データを設定する係数テーブルセット更新手段を備えることを特徴とする。
【請求項２０】
請求項１９記載の演算処理装置であって、さらに、
前記係数テーブルのデータ更新を指示する命令種別コードを設定するフィールドと、積和演算の積演算の一方の被演算値を格納するレジスタを指定する第１の情報を設定するフィールドと、積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数情報を指定する第４の情報を設定するフィールドから成る係数テーブルセット更新命令を備え、
前記係数テーブルセット更新手段は、前記係数テーブルセット更新命令のデコード結果に応じて、前記第１の情報で指定される第１のレジスタの値と前記第２の情報で指定される第２のレジスタの値の積演算を前記浮動小数点積和演算器に実行させ、その積演算結果を、前記第３の情報で指定されるレジスタの値によって指定される係数テーブルの、前記第４の情報によって指定される次数の係数データの格納領域に書き込むことを特徴とする。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点積和演算を行う演算処理装置に係り、特にテーラー級数演算に好適な演算処理装置に関する。
【背景技術】
【０００２】
数学関数ｆ（ｘ）は、下記の式（１）のように、テーラー級数演算で表現することができる。したがって、任意の値ｘにおける数学関数ｆ（ｘ）の値は、式（１）のテーラー級数演算を行うことで求めることができる。
【０００３】
【数１】
2008234076.tif 000003
ここで、前記式（１）で表されるテーラー級数演算の係数データ
【０００４】
【数２】
2008234076.tif 000004
は、数学関数ｆ（ｘ）の種類やテーラー級数の次数に応じて変わってくる。このため、従来の演算処理装置は、前記テーラー級数の係数データを、当該数学関数ｆ（ｘ）や次数と関連付けてメモリ（メインメモリ）内にテーブル形式で格納するようにしていた。そして、数学関数ｆ（ｘ）の値を、テーラー級数演算により算出する場合には、前記メモリから必要となる係数データを読み出すようにしていた。
【０００５】
従来の演算処理装置は、上述したように、数学関数のテーラー級数演算に必要な係数データをメモリに格納している。このため、従来の演算処理装置は、テーラー級数演算処理を実行する場合、浮動小数点ロード演算命令を実行して、係数データを前記メモリからレジスタにロードし、その後、浮動小数点積和演算命令を実行して、該レジスタにロードされた係数データを用いてテーラー級数演算を行っている。
【０００６】
図８は、従来のテーラー級数演算機能を備えた演算処理装置のシステム構成を示す図である。
図８に示す従来の演算処理装置２０００は、図８の左側に示す浮動小数点積和演算命令２０１０を実行することで、数学関数のテーラー級数演算を行っていた。浮動小数点積和演算命令２０１０は、５つのフィールド２０１１〜２０１５で構成されている。フィールド２０１１には「命令種別コード（浮動小数点積和演算命令コード）」が設定され、フィールド２０１２には「積和演算の積演算の一方の入力レジスタ番号」が設定され、フィールド２０１３には「積和演算の積演算の他方の入力レジスタ番号」が設定される。また、フィールド２０１４には「積和演算の和演算の入力レジスタ番号」が設定され、フィールド２０１５には「積和演算の演算結果の出力レジスタ番号」が設定される。レジスタ番号は、各レジスタに一意的に割り当てられた番号である。
【０００７】
浮動小数点積和演算命令２０１０がデコードされると、フィールド２０１２に設定されているレジスタ番号ｒ１のレジスタ（以後、レジスタｒ１と記載）の値（データｙとする
）がレジスタ２０２０から読み出され、そのデータｙがマルチプレクサ２０３１を介して浮動小数点積和演算器２０４０に入力する。また、フィールド２０１３に設定されたレジスタ番号ｒ２のレジスタ（以後、レジスタｒ２と記載）の値（データｚとする）がレジスタ２０２０から読み出され、そのデータｚがマルチプレクサ２０３２を介して浮動小数点積和演算器２０４０に入力する。さらに、フィールド２０１４に設定されたレジスタ番号ｒ３のレジスタ（以後、レジスタｒ３と記載）の値（データａｉとする）がレジスタ２０２０から読み出され、そのデータａｉがマルチプレクサ２０３３を介して浮動小数点積和演算器２０４０に入力する。
【０００８】
浮動小数点積和演算器２０４０は、上記３個のデータｙ、ｚ、ａｉが入力されると、（ｙ×ｚ＋ａｉ）の浮動小数点積和演算を行い、その演算結果を、フィールド２０１５に設定されたレジスタ番号ｗ１のレジスタ（以後、レジスタｗ１と記載）に、マルチプレクサ２０３４を介して書き込む。
【０００９】
演算処理装置２０００は、テーラー級数演算用プログラムの浮動小数点積和演算命令２０１０がフェッチされる毎に、上記浮動小数点積和演算命令２０１０を繰り返し実行して、数学関数のテーラー級数演算を行い、数学関数ｆ（ｘ）の値を算出する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述したように、従来の演算処理装置２０００は、数学関数のテーラー級数の係数データをメインメモリに格納しているため、浮動小数点ロード演算命令と浮動小数点積和演算命令を用いて、テーラー級数積和演算を実行していた。このため、テーラー級数の係数データをメインメモリからキャッシュに転送する処理に伴うオーバーヘッドが生じていた。また、上記浮動小数点ロード演算命令の実行が必要なため、ロード／ストア・パイプラインのスループットの圧迫や、命令パイプラインの命令発行ステージのスループットの圧迫などが発生し、これらが、テーラー級数演算の処理性能を低下させる要因となっていた。
【００１１】
本発明の目的は、浮動小数点ロード演算命令を用いることなく、テーラー級数演算を高速に実行できる演算処理装置を実現することである。
【課題を解決するための手段】
【００１２】
本発明の演算処理装置の第１態様は、オペランドのデータを格納するレジスタ手段と、該レジスタ手段に格納されたオペランドのデータを読み出すレジスタデータ読み出し手段と、数学関数のテーラー級数演算の係数データを格納する係数テーブルの選択信号を記憶する係数テーブルセット記憶手段と、前記数学関数のテーラー級数の次数情報と前記係数テーブルの識別情報を用いて、前記係数テーブルセット記憶手段から、前記数学関数のテーラー級数の係数データを読み出す係数データ読み出し手段と、該係数データ読み出し手段により読み出された前記係数データと前記レジスタ手段から読み出されたデータもしくはバイパスデータを用いて、前記数学関数のテーラー級数演算を実行する浮動小数点積和演算器とを備える。
【００１３】
本発明の演算処理装置の第１態様によれば、数学関数のテーラー級数演算で必要な係数データを、係数テーブルセット記憶手段から直接読み出して、浮動小数点積和演算器に供給する。このため、浮動小数点積和演算器がテーラー級数演算を実行する際に、従来の演算処理装置で発生していた、前記係数データのメインメモリからキャッシュへの転送に伴うオーバーヘッド、前記係数データのメインメモリからレジスタへのロードに伴うロード／ストア・パイプラインの圧迫、及び前記係数データのロード命令の発行による命令パイプラインの命令発行ステージの圧迫が解消される。
【００１４】
本発明の演算処理装置の第２態様は、上記演算処理装置の第１態様において、前記係数テーブルは、偶関数である数学関数については偶数の次数の係数データのみを格納し、奇関数である数学関数については奇数の次数の係数データのみを格納する。
【００１５】
本発明の演算処理装置の第２態様によれば、偶関数と奇関数について、係数データが、効率良く、配置・格納された係数テーブルを構築できる。
本発明の演算処理装置の第３態様は、上記演算処理装置の第２態様において、前記奇関数は正弦関数（ｓｉｎ（ｘ））であり、前記偶関数は余弦関数（ｃｏｓ（ｘ））であり、前記係数テーブルセット記憶手段は、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを備える。
【００１６】
本発明の演算処理装置の第３態様によれば、係数テーブルセット記憶手段に、正弦関数の係数テーブルと余弦関数の係数テーブルを、効率良く格納できる。
本発明の演算処理装置の第４態様は、前記正弦関数または前記余弦関数をテーラー級数演算で演算する際、それらの数学関数の入力引数ｘの値の範囲に応じて、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを使い分ける。
【００１７】
本発明の演算処理装置の第４態様によれば、正弦関数と余弦関数のテーラー級数演算を実行する際、入力引数ｘの値の範囲に応じて、両関数の係数テーブルを使い分けることができる。
【００１８】
本発明の演算処理装置の第５態様は、前記正弦関数または前記余弦関数の入力引数ｘが−π／４〜＋π／４の範囲外である場合には、前記正弦関数または前記余弦関数の入力引数ｘが−π／４〜＋π／４の範囲内となるような入力引数変換を行い、該入力引数変換により得られる正弦関数または余弦関数の係数テーブルの係数データを用いてテーラー級数演算を実行する。
【００１９】
本発明の第５態様によれば、正弦関数と余弦関数のテーラー級数演算を、高次で収束する入力引数を用いて実行することができる。
本発明の演算処理装置の第６態様は、前記演算処理装置の第１態様において、さらに、前記係数データ読み出し手段により読み出された前記係数テーブルセット記憶手段内の係数データと、前記レジスタデータ読み出し手段により読み出された前記レジスタ手段に格納されたデータもしくはバイパスデータを入力し、浮動小数点演算命令の種別を示す命令種別コードに応じて、前記２つの入力データの内、いずれか一方の入力データを前記浮動小数点積和演算器に選択出力する選択出力手段を備え、該選択出力手段は、前記命令種別コードがテーラー級数積和演算命令を示している場合には、前記係数データを前記浮動小数点積和演算器に出力する。
【００２０】
本発明の演算処理装置の第６態様によれば、テーラー級数積和演算命令で必要とする係数データとその他の命令で必要とするデータを、命令種別コードを用いて、選択出力手段により、浮動小数点積和演算器に切り替え出力できる。
【００２１】
本発明の演算処理装置の第７態様は、前記第１または第６態様の演算処理装置において、さらに、テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第４の情報を設定するフィールドと、テーラー級数の次数を指定する第５の情報を設定するフィールドから成るテーラー級数積和
演算命令を備え、該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
【００２２】
本発明の演算処理装置の第７態様によれば、浮動小数点積和演算器は、テーラー級数積和演算命令のみを実行して、テーラー級数演算を実行できる。また、テーラー級数演算で使用する係数データを格納している係数テーブルを、レジスタ間接指定により指定できるので、係数テーブルの指定を柔軟に行える。
【００２３】
本発明の演算処理装置の第８態様は、前記演算処理装置の第１または第６態様の演算処理装置において、さらに、テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数を指定する第４の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、前記第２の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
【００２４】
本発明の第８態様の演算処理装置によれば、テーラー級数積和演算命令のフィールドに設定された前記第２の情報で指定されるレジスタの一部のビットを、テーラー級数演算で使用する係数テーブルの指定情報として利用する。このため、テーラー級数積和演算命令のフィールド数を、前記第７態様の演算処理装置よりも削減できる。
【００２５】
本発明の演算処理装置の第９態様は、前記演算処理装置の第１または第６態様の記載の演算処理装置において、さらに、テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数を指定する第４の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、前記第１の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
【００２６】
本発明の第９態様の演算処理装置によれば、前記第１の情報で指定されるレジスタの一部のビットを利用することにより、前記演算処理装置の第８態様と同様の作用・効果が得られる。
【００２７】
本発明の演算処理装置の第１０態様は、前記演算処理装置の第９態様において、前記指定されるレジスタのデータの一部のビットは、符号ビットである。
本発明の演算処理装置の第１０態様によれば、浮動小数点積和演算の積演算で使用され
る２つの被演算値のいずれか一方の符号ビットを、係数テーブルの指定情報として利用する。このため、テーラー級数積和演算命令のフィールド数を少なくできる。
【００２８】
本発明の演算処理装置の第１１態様は、前記演算処理装置の第１０態様において、さらに、前記指定されるレジスタのデータの符号ビットを所定の値に設定し、該設定後のレジスタのデータを前記浮動小数点積和演算器に出力する符号ビット設定手段を備える。
【００２９】
本発明の演算処理装置の第１１態様によれば、前記指定されるレジスタのデータの符号ビットを所定の値に設定し、その後、該レジスタのデータを前記浮動小数点積和演算器に入力させる。したがって、前記指定されるレジスタに設定されているデータの符号ビットが、該符号ビットを係数テーブルの指定情報に用いるために本来の値と異なるように設定されていたとしても、浮動小数点積和演算器においてはテーラー級数演算を正しく実行できる。
【００３０】
本発明の演算処理装置の第１２態様は、前記演算処理装置の第１１において、前記符号ビット設定手段は、前記命令種別コードとレジスタのデータの符号ビットを入力し、前記命令種別コードがテーラー級数積和演算命令であるときにのみ、前記所定の値のビットを出力するアンドゲート手段と、前記レジスタのデータの符号ビットを、前記アンドゲート手段の出力するビットに置き換える符号ビット置き換え手段とを備える。
【００３１】
本発明の演算処理装置の第１２態様によれば、テーラー級数積和演算命令が実行されるときにのみ、前記指定されるレジスタのデータの符号ビットを所定の値に設定する。テーラー級数積和演算命令以外の命令が実行されるときには、前記アンドゲート手段に入力されるレジスタのデータの符号ビットは変換されることなく、そのまま、前記アンドゲート手段から出力される。したがって、テーラー級数積和演算命令のオペランドデータ（前記指定されるレジスタのデータ）と、該テーラー級数積和演算命令以外の命令のオペランドデータを、同一の信号線を介して、前記レジスタ番号手段から前記浮動小数点積和演算器に供給することができる。
【００３２】
本発明の演算処理装置の第１３態様は、前記演算処理装置の第８または第９態様において、前記指定されるレジスタのデータの一部のビットは仮数部の下位ビットである。
本発明の演算処理装置の第１３態様によれば、係数テーブルの指定情報とし、前記指定されるレジスタのデータの仮数部の下位ビットを使用する。このため、浮動小数点積和演算器の積演算で使用される該レジスタのデータの精度は多少犠牲になるが、該レジスタのデータの仮数部の下位ビットを、係数テーブルの指定情報として利用できる。
【００３３】
本発明の第１４態様によれば、前記演算処理装置の第７または８態様において、さらに、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する前記演算処理装置の第７または第８態様の第１の情報を設定するフィールドを省略し、代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する前記演算処理装置の第７または第８態様の第３の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指定する情報に用い、該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
【００３４】
本発明の演算処理装置の第１４態様によれば、前記浮動小数点積和演算の演算結果を出力すべきレジスタを格納するレジスタを指定する情報に用いるので、テーラー級数積和演算命令のフィールド数を少なくできる。
【００３５】
本発明の演算処理装置の第１５態様は、前記演算処理装置の第７または第９態様の演算処理装置において、さらに、浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタの番号を指定する前記演算処理装置の第７または第９態様の第２の情報を設定するフィールドを省略し、代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する前記演算処理装置の第７または第９態様の第３の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する情報に用い、該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給する。
【００３６】
本発明の演算処理装置の第１５態様によれば、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する第１の情報を、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する情報に用いるので、テーラー級数積和演算命令のフィールド数を少なくできる。
【００３７】
本発明の演算処理装置の第１６態様は、前記演算処理装置の第１乃至１５態様のいずれか１態様の演算処理装置において、前記係数テーブルセット記憶手段は、データ読み出し専用のメモリである。
【００３８】
本発明の演算処理装置の第１６態様によれば、係数テーブルセット記憶手段に格納されている係数テーブルの係数データの不正な書き換えを防止できる。
本発明の演算処理装置の第１７態様は、前記演算処理装置の第１乃至１５態様のいずれか１態様の演算処理装置において、前記係数テーブルセット記憶手段は、データの書き換えが可能なメモリである。
【００３９】
本発明の演算処理装置の第１７態様によれば、前記係数テーブルセット記憶手段に格納されている係数テーブルの係数データの書き換えが可能となる。
本発明の演算処理装置の第１８態様は、前記演算処理装置の第１７態様において、さらに、係数テーブルを指定する係数テーブル指定情報と、テーラー級数の次数を指定する次数指定情報により、前記係数テーブルセット記憶手段内の係数データの設定位置を指定することを特徴とする。
【００４０】
本発明の演算処理装置の第１８態様によれば、前記係数テーブルセット記憶手段内の係数テーブルについて、係数データの設定位置を指定できる。
本発明の演算処理装置の第１９態様は、上記演算処理装置の第１８態様の演算処理装置において、さらに、前記係数テーブルセット記憶手段内の前記設定位置に、係数データを設定する係数テーブルセット更新手段を備える。
【００４１】
本発明の演算処理装置の第１９態様によれば、前記係数テーブルセット更新手段を用いて、前記指定された係数テーブルの指定された位置に係数データを設定する。したがって、係数データを、前記係数テーブルセット記憶手段内の指定した係数テーブルの指定した位置に設定できる。
【００４２】
本発明の演算処理装置の第２０態様は、前記演算処理装置の第１９態様において、前記係数テーブルのデータ更新を指示する命令種別コードを設定するフィールドと、積和演算の積演算の一方の被演算値を格納するレジスタを指定する第１の情報を設定するフィールドと、積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第
３の情報を設定するフィールドと、テーラー級数の次数情報を指定する第４の情報を設定するフィールドをから成る係数テーブルセット更新命令を備え、前記係数テーブルセット更新手段は、前記係数テーブルセット更新命令のデコード結果に応じて、前記第１の情報で指定される第１のレジスタの値と前記第２の情報で指定される第２のレジスタの値の積演算を前記浮動小数点積和演算器に実行させ、その積演算結果を、前記第３の情報で指定される第３のレジスタの値によって指定される係数テーブルの、前記第４の情報によって指定される次数の係数データの格納領域に書き込むことを特徴とする。
【００４３】
本発明の演算処理装置の第２０態様によれば、前記係数テーブルセット更新命令を実行して、浮動小数点積和演算器により設定用の係数データを生成する。そして、その係数データを、前記係数テーブルセット更新命令によって指定される係数テーブルの係数データの格納領域に書き込む。したがって、前記係数テーブルセット更新命令の実行により、係数テーブルセット記憶手段内に格納されている係数テーブルの係数データを更新できる。また、係数テーブルセット記憶手段内に、新規な係数テーブルを作成することもできる。
【発明の効果】
【００４４】
本発明によれば、数学関数のテーラー級数演算の係数データを格納する専用の記憶手段を備え、浮動小数点ロード命令を実行することなく、数学関数のテーラー級数演算を指示する命令のみを実行するだけで、前記記憶手段から係数データを読み出して、テーラー級数演算を実行する。したがって、従来の演算処理装置のように、テーラー級数の係数データをメインメモリからキャッシュに転送する処理に伴うオーバーヘッドや、ロード／ストア・パイプラインのスループットの圧迫や、命令パイプラインの命令発行ステージのスループットの圧迫などが発生しないので、数学関数のテーラー級数演算を高速に実行できる。
【発明を実施するための最良の形態】
【００４５】
以下、図面を参照しながら、本発明の実施形態について説明する。
［本発明の概要］
本発明の演算処理装置は、任意の数学関数のテーラー級数演算の係数データを格納する係数テーブルを各数学関数毎に用意し、それら複数の係数テーブルのセットである係数テーブルセットを、専用のメモリ（ＲＯＭまたはＲＡＭなど）に格納する。そして、テーラー級数演算で必要となる係数データを、直接、前記係数テーブルから読み出して浮動小数点積和演算器に供給し、該浮動小数点積和演算器によりテーラー級数演算を実行する。
【００４６】
このように、本発明の演算処理装置は、テーラー級数演算の係数データを、係数テーブルセットから、直接、浮動小数点積和演算器に供給する構成となっている。このため、従来の演算処理装置のように、テーラー級数演算の係数データをメインメモリからキャッシュへ転送する処理が不要となる。また、浮動小数点ロード命令も不要になるため、テーラー級数演算の係数データのメモリからレジスタへのロードに伴うロード／ストア・パイプラインの圧迫、命令パイプラインにおける命令発行ステージのスループットの圧迫が解消される。
【００４７】
［第１の実施形態］
図１は、本発明の第１の実施形態である演算処理装置のシステム構成を示すブロック図である。
【００４８】
図１に示す本実施形態である演算処理装置１において、図面中央の縦方向の破線の右側部分は、従来の演算処理装置と同様な構成となっている。演算処理装置１の構成的特徴は、図１において前記破線の左側に示すように、係数テーブルセット１０を備えていることである。この係数テーブルセット１０には、複数の数学関数の係数テーブルが格納されて
いる。また、さらに、前記係数テーブルセット１０内の係数データを選択するための情報として、「テーラー級数の次数番号２１（以下、次数番号２１と記載する場合もある）」、「係数テーブルのセット番号２２（以下、セット番号２２と記載する場合もある）」及び「命令種別コード２３」を用いることである。
【００４９】
前記次数番号２１は、前記式（１）の次数ｎに対応するパラメータである。前記セット番号２２は、係数テーブルセット１０内の複数の係数テーブルの中から、一つの係数テーブルを選択するためのパラメータである。本実施形態の各係数テーブルには一意のセット番号が割り当てられており、該セット番号により個々の係数テーブルを特定できるようになっている。前記命令種別コード２３は、命令の種別を示す操作コード(operation code)である。
【００５０】
係数テーブルセット１０は、数学関数のテーラー級数演算の係数データを格納している係数テーブルのセットである。この係数テーブルセット１０は、例えば、ＲＯＭ（Read Only Memory）またはＲＡＭ（Random Access Memory)などの半導体メモリに実装される。
【００５１】
係数テーブルセット１０の各列には、各数学関数の係数テーブルが格納されている。係数テーブルの列は、各係数テーブルに割り当てられたセット番号によって指定する。係数テーブルの各行には、各数学関数のテーラー級数演算の係数データが格納されている。係数テーブルの行番号は次数番号２１に対応しており、係数テーブルの各行は次数番号２１で指定される。
【００５２】
ある数学関数について、前記係数テーブルセット１０から目的の係数データを取得するためには、まず、前記次数番号２１により係数テーブルセット１０を選択する。これにより、係数テーブルセット１０から、係数テーブルセット１０の前記次数番号２１に対応する行のデータが読み出され、その行データがマルチプレクサ２６に入力する。この行データには、全ての係数テーブルの前記次数番号２１に対応する係数データが含まれている。マルチプレクサ３２には、前記セット番号２２が選択信号として入力する。マルチプレクサ３２は、前記行データに含まれている係数データの中から、前記セット番号２２に対応する列の係数データを選択出力する。
【００５３】
このように、次数番号２１は係数テーブルセット１０の行アドレス、セット番号２２は係数テーブルセット１０の列アドレスとなっており、係数テーブルセット１０に次数番号２１とセット番号２２を入力することにより、係数テーブルセット１０の前記行アドレと前記列アドレスで決定されるアドレスの領域に格納されている係数データを読み出すことができる。セット番号２２は数学関数の係数テーブルに対応しており、次数番号２１はテーラー級数演算の係数データの次数に対応しているので、前記係数テーブルセット１０から読み出される係数データは、前記数学関数のテーラー級数演算の前記次数番号２１に対応する次数の係数データである。
【００５４】
マルチプレクサ２７には、前記係数データ以外にも、マルチプレクサ１０４１により選択されたオペランドデータが入力する。マルチプレクサ１０４１は、レジスタファイル１０３１から出力されるレジスタデータ、リネーミングレジスタ（リネームレジスタ）１０３２から出力されるデータ及びバイパスデータ１０３３の３種類のオペランドデータを入力し、それら３種類のオペランドデータの中のいずれか一つのオペランドデータを選択して、マルチプレクサ２７に出力する。
【００５５】
命令種別コード２３は、該マルチプレクサ２７に選択信号として入力する。マルチプレクサ２７は、命令種別コード２３に従って、前記マルチプレクサ２７の出力（前記係数データ）または前記マルチプレクサ１０４１の出力（前記オペランドデータ）のいずれか一
方を、浮動小数点積和演算器１０５０に出力する。本実施形態では、命令種別コード２３がテーラー級数積和演算命令である場合には、マルチプレクサ２７は、前記係数データを浮動小数点積和演算器１０５０に選択出力する。
【００５６】
図１でマルチプレクサ１０４１の下方に描かれているマルチプレクサ１０４２、１０４３は、前記マルチプレクサ１０４１と同様に、前記３種類のオペランドデータを入力し、選択したオペランドデータを浮動小数点積和演算器１０５０に出力する。
【００５７】
浮動小数点積和演算器１０５０は、マルチプレクサ２７から入力される係数データと、マルチプレクサ１０４２から入力されるオペランドデータ（第１オペランドデータ）及びマルチプレクサ１０４３から入力されるオペランドデータ（第２オペランドデータ）を用いて積和演算を行うことによって、テーラー級数演算を実行する。
【００５８】
本実施形態の演算処理装置１は、従来構成として、メモリ（メインメモリ）１０１０、キャッシュ１０２０、レジスタファイル１０３１、リネーミングレジスタ１０３２、バイパスデータ１０３３、マルチプレクサ１０４１〜１０４３及び浮動小数点積和演算器１０５０を備えている。
【００５９】
レジスタファイル１０３１は、浮動小数点積和演算器１０５０が演算を実行するときに使用する全てのレジスタを備えている。リネーミングレジスタ１０３２は、オペランドデータの逆依存と出力依存を解消するために設けられている。バイパスデータ１０３３は、演算処理装置１の命令パイプラインにおいてデータハザードを解消するためのバイパシング(bypassing)で使用されるデータ（演算結果データ）である。リネーミングレジスタ１０３２のエントリに格納されているレジスタ値は、リタイア(retire)時にレジスタファイル１０３１に移される。
【００６０】
本実施形態の演算処理装置１がテーラー級数演算を実行する際には、係数テーブルセット１０に格納されている係数データ、レジスタファイル１０３１及びリネーミングレジスタ１０３２に格納されているレジスタのデータもしくはバイパスデータが浮動小数点積和演算器１０５０に供給され、浮動小数点積和演算器１０５０がそれらのデータを用いて積和演算を行う。
【００６１】
｛係数テーブルセット１０の構成例｝
図２は、図１の演算処理装置１が、ｓｉｎ（ｘ）とｃｏｓ（ｘ）の２つの数学関数を取り扱う場合における、テーラー級数演算の係数テーブルセット１０の具体的な配置構成例を示す図である。
【００６２】
図２に示す係数テーブルセット１０は２列で構成され、１列目にｓｉｎ（ｘ）の係数テーブル１１を、２列目にｃｏｓ（ｘ）の係数テーブル１２を格納している。１列目のｓｉｎ（ｘ）の係数テーブル１１にはセット番号として“０”が、２列目のｃｏｓ（ｘ）の係数テーブル１２にはセット番号として“１”が割り当てられている。係数テーブルセット１０は１０行（１０個のエントリ）から構成されており、各行にｓｉｎ（ｘ）とｃｏｓ（ｘ）の係数データを格納している。
【００６３】
ｓｉｎ（ｘ）のテーラー級数は奇数の次数のみ係数データを持っており、ｃｏｓ（ｘ）のテーラー級数は偶数の次数の係数データのみを持っている。このため、ｓｉｎ（ｘ）の係数テーブル１１は、第０、第２、・・・第７行のそれぞれに、１次、３次、・・・・１５次の係数データを格納している。また、ｃｏｓ（ｘ）の係数テーブル１２は、第０、第２、・・・第７行のそれぞれに、０次、２次、・・・１４次の係数データを格納している。
【００６４】
係数テーブルセット１０の入力信号であるテーラー級数の次数番号２１は、係数テーブルセット１０の行番号と一致している。しかしながら、係数テーブルセット１０においては、テーラー級数の次数番号２１とそのテーラー級数の次数番号２１が示す行に格納されている係数データの次数番号は一致していない。このように、係数テーブルセット１０の入力信号であるテーラー級数の次数番号２１は、必ずしも、数学関数の係数データの次数番号に一致しなくてもよいことに注意する必要がある。
【００６５】
これは、ｓｉｎ（ｘ）のような奇関数やｃｏｓ（ｘ）のような偶関数の場合、それぞれのテーラー級数は、奇数の次数のみの係数データと偶数の次数のみの係数データを持つという特徴があるためである。  
【００６６】
本例の係数テーブルセット１０（の係数テーブル１１、１２）は、係数データを持たない次数については、領域を省略し、係数データの配置を効率的にして、係数テーブルセット１０の記憶容量を削減している。
【００６７】
係数テーブルセット１０を上記のように構成したため、係数テーブルセット１０（の係数テーブル１１）からｓｉｎ（ｘ）のテーラー級数の１次の係数データを読み出す場合には、テーラー級数の次数番号２１に“０”を設定する必要がある。また、係数テーブルセット１０（の係数テーブル１２）からｃｏｓ（ｘ）のテーラー級数の２次の係数データを読み出す場合には、テーラー級数の次数番号２１に“１”を設定する必要がある。係数テーブルセット１０から他の係数データを読み出す場合も、同様にして、テーラー級数の次数番号２１を設定する。
【００６８】
本例では、係数テーブルセット１０に次数番号２１を入力し、係数テーブルセット１０から該次数番号に一致する行番号の行データを読み出し、その行データをマルチプレクサ２７に入力させる。そして、マルチプレクサ２７に前記セット番号２２を選択信号として加える。セット番号２２は、ｓｉｎ（ｘ）の場合は“０”、ｃｏｓ（ｘ）の場合は“１”に設定されている。この選択信号がマルチプレクサ２７に入力すると、マルチプレクサ２７から、セット番号２２で指定される係数データが選択出力され、それが浮動小数点積和演算器１０５０に入力する。浮動小数点積和演算器１０５０は、その入力される係数データを用いて積和演算を行い、ｓｉｎ（ｘ）またはｃｏｓ（ｘ）のテーラー級数演算を実行する。
【００６９】
［第２の実施形態］
図３は、本発明の第２実施形態である演算処理装置の主要部の構成を示す図である。尚、図３のマルチプレクサ２０３３と浮動小数点積和演算器１０５０を接続している破線は、浮動小数点積和演算器１０５０が従来の浮動小数点積和演算を実行する場合に使用するオペランドデータの信号線を示す。これは、以後に述べる実施形態の図面についても同様である。
【００７０】
本実施形態の演算処理装置２は、図３の左側に示す新規な命令（テーラー級数積和演算命令）３０を導入し、この命令３０を実行可能である。
図３に示すテーラー級数積和演算命令３０は、６つのフィールド３１〜３６から構成されている。命令種別コード設定フィールド３１にはテーラー級数積和演算命令コードが設定される。
【００７１】
図３のテーラー級数積和演算命令３０と図８の浮動小数点積和演算命令２０１０のフィールドを比較すれば分かるように、テーラー級数積和演算命令３０のフィールド３２、３３、３４には、それぞれ、前記浮動小数点積和演算命令２０１０のフィールド２０１２、
２０１３、２０１５と同様なオペランドデータが設定される。すなわち、フィールド３２には「積和演算の積演算の一方の入力レジスタ番号（ｒ１）」が、フィールド３３には「積和演算の積演算の他方の入力レジスタ番号（ｒ２）」が、フィールド３４には「積和演算の積演算の出力レジスタ番号（ｗ１）」が設定される。
【００７２】
テーラー級数積和演算命令３０のフィールド３５には「係数テーブルのセット番号を収めた（格納した）レジスタ番号（ｒ３）」が設定される。また、テーラー級数積和演算命令３０のフィールド３６には「テーラー級数の次数番号」を設定する。
【００７３】
尚、上記テーラー級数積和演算命令３０の定義は、あくまでも、テーラー級数積和演算命令３０で必要となる命令種別コードとオペランドを示したものであり、実際のプログラミング命令（例えば、アセンブラ命令など）におけるオペランドの記述順序を規定するものではないことに注意する必要がある。したがって、プログラミング命令のオペランド記述順序は、図３に示すフィールド３２〜３６の表記順序に従う必要はない。これは、本実施形態以外の実施形態でも同様である。
【００７４】
このように、テーラー級数積和演算命令３０のオペランド・フィールドは、従来の演算処理装置の命令セットが備えていた浮動小数点積和演算命令２０１０から、積和演算の入力レジスタ番号２０１４を設定するフィールドを削除し、代わりに、「係数テーブルの次数番号（ｒ３）」と「テーラー級数の次数番号」を設定するフィールドを追加した構成となっている。
【００７５】
以後の説明では、説明の便宜上、テーラー級数積和演算命令３０のフィールド３２〜３６に設定されるパラメータを、積和演算の積演算の一方の入力レジスタ番号３２、積和演算の積演算の他方の入力レジスタ番号３３、積和演算の演算結果の出力レジスタ番号３４、係数テーブルのセット番号を収めたレジスタ番号３５、テーラー級数の次数番号３６と表現する場合もある。これは、他の実施形態においても同様である。
【００７６】
尚、本実施形態のテーラー級数の次数番号３６は、図１のテーラー級数の次数番号２１と同じものである。また、図３に示すレジスタ４０は、図１のレジスタファイル１０３１、リネーミングレジスタ１０３２及びバイパスデータ１０３３を包含するものである。これは、以後に述べる実施形態についても同様である。
【００７７】
テーラー級数積和演算命令３０による係数テーブルによるセット番号指定は、直接指定方式ではなく、係数テーブルのセット番号を収めたレジスタ番号３５を用いたレジスタ間接指定方式となっている。この理由は、同一の数学関数ｆ（ｘ）であっても、入力引数ｘの値に依存して、指定する係数テーブルのセット番号が変わるためである。
【００７８】
これについて、sin関数を例に、詳しく説明する。
sin関数は、周期性のある関数（周期が２πの関数）であるので、｛−π/4＋2nπ〜+7π/4＋2nπ｝の区間を、下記１．〜４．に示すように４つの領域に分けて、計算式を構成することができる。
【００７９】
１．  x = −π/4＋2nπ〜+π/4＋2nπ     sin(x) = sin(x−2nπ)
２．  x = ＋π/4＋2nπ〜+3π/4＋2nπ    sin(x) = cos(x−π/2−2nπ)
３．  x = ＋3π/4＋2nπ〜+5π/4＋2nπ   sin(x) = −sin(x−π−2nπ)
４．  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 = ｘ−π/2−2nπは、下記５．の値の範囲を満
たしており、cos(y)(=sin(x))は引数ｙの高次で収束することがわかる。
５．  ｙ=−π/4〜＋π/4
その他の領域についても、sin(x)（＝±sin(y), ±cos(y)）の入力引数ｘ（ｙ）は、−π/4〜＋π/4の値の範囲を満たすので、sin(x)は高次で収束することが示される。
【００８１】
上記１．〜４．に示すように、同一のsin関数（＝sin(x)）であっても、入力引数ｘの値の範囲によって、用いるべき計算式（関数）が異なるため、下記６．〜９．に示すように、テーラー級数演算で用いるべき係数テーブルのセットも異なってくる。
【００８２】
６．  x = -π/4+2nπ〜+π/4+2nπ  sin(x)のテーラー級数演算の係数テーブル
７．  x = +π/4+2nπ〜+3π/4+2nπ  cos(x)のテーラー級数演算の係数テーブル
８．  x = +3π/4+2nπ〜+5π/4+2nπ  sin(x)のテーラー級数演算の係数テーブル
９．  x = +5π/4+2nπ〜+7π/4+2nπ  cos(x)のテーラー級数演算の係数テーブル
以上により、テーラー級数積和演算命令３０において、係数テーブルのセット番号が、レジスタ間接指定であることの必要性が示された。
【００８３】
本実施形態は、係数テーブルのセット番号を、レジスタ間接指定にすることで、任意の入力引数の値に対して、条件分岐命令を用いずに、同一命令の命令列で、数学関数のテーラー級数演算を表現できるので、ソフトウエア・パイプライニングや、ＳＩＭＤ（Single
Instruction stream-Multiple Data stream）化を適用することが可能になる。
【００８４】
次に、上記で定義されたテーラー級数積和演算命令３０の具体的な使用例を、sin関数を例に示す。
sin(x)の入力引数判定により、x = -π/4＋2nπ〜+π/4+＋2nπの範囲であることが判明したとすると、sin(x)は、入力引数変換を経て、下記のようなテーラー級数演算で表現される。
【００８５】
【数３】
2008234076.tif 000005
ここで、は、図２のセット番号０の係数テーブル１１（sin(x)のテーラー級数演算の係数テーブル）の次数番号ｎの係数データに対応する。
【００８６】
テーラー級数演算をsin(y)のテーラー級数の１５次まで求めることにすると、
【００８７】
【数４】
2008234076.tif 000006
上記sin(y)のテーラー級数演算は、下記の複数の積和演算を、順次、実行することで行
うことができる。
【００８８】
【数５】
2008234076.tif 000007
したがって、下記１１．〜１５．に示すように、図２のテーラー級数積和演算命令３０の各指定フィールド３２〜３６に、「レジスタ番号」もしくは「値」を設定し、上記ｚを求める積和演算を、複数回、逐次実行すると、sin(y)の値を算出することができる。
【００８９】
11.  積和演算の積演算の一方の入力レジスタ番号３２：ｚを収めたレジスタ番号
12.  積和演算の積演算の他方の入力レジスタ番号３３：０またはｙ2 を格納しているレジスタ番号
13.  積和演算の演算結果の出力レジスタ番号３４：ｚを収めたレジスタ番号
14.  係数テーブルのセット番号を収めたレジスタ番号セット番号３５：０を収めたレジスタ番号
15.  テーラー級数の次数番号３６：0〜7の値
入力引数ｘの範囲が｛x = -π/4+2nπ〜+π/4+2nπ｝以外のケースについても、同様に、入力引数判定、入力引数変換を経て、テーラー級数演算で表現することができる。
【００９０】
下記に、テーラー級数積和演算命令(ftrimaddd)を用いて、前記sin(y)のテーラー級数演算を実行する場合の、具体的なアセンブラ命令列を示す。
この例では、前記テーラー級数積和演算命令３０のアセンブラ命令を、以下のように定義する。尚、ftrimaaddは、前記テーラー級数積和演算命令３０の命令種別コード３１のアセンブラ命令における表記である。また、このアセンブラ命令のオペランド・フィールド（＜  ＞部分）は、図２のテーラー級数積和演算命令３０のオペランド・フィールドと一部順序が異なっている。
【００９１】
ftrimaddd <積和演算の積演算の一方の入力レジスタ番号>,
<積和演算の積演算の他方の入力レジスタ番号>,
<係数テープルのセット番号を収めたレジスタ番号>,
<テーラー級数の次数番号>,
<積和演算の演算結果の出力レジスタ番号>
本例では、積和演算の積演算の一方の入力レジスタ番号３２を“８”、積和演算の積演算の他方の入力レジスタ番号３３を“０”もしくは“２”、係数テーブルのセット番号を
収めたレジスタ番号３５を“６”、積和演算の演算結果の出力レジスタ番号３４を“８”に設定する。そして、レジスタ番号ｉを%fiで表記する。
【００９２】
これにより、アセンブラ命令ftrimaddddでは、積和演算の積演算の一方の入力レジスタ番号３２は%f8、積和演算の積演算の他方の入力レジスタ番号３３は%f０もしくは％f2、係数テーブルのセット番号を収めたレジスタ番号３５は%f4、積和演算の積演算の他方の入力レジスタ番号３３は%f6と表記される。
【００９３】
ここで、%f0=0、%f2=y2、 %f4=0、 %f6=0、%f8=zに設定する。すなわち、レジスタ番号０（%f0）のレジスタｒ０には“０”、レジスタ番号２（%f2）のレジスタｒ２には“y2”、レジスタ番号%f4のレジスタｒ４には“y”、レジスタ番号６（%f6）のレジスタｒ６には“０”が設定され、レジスタ番号８（%f8）のレジスタフｒ８の値を“ｚ”とする。
【００９４】
この場合、sin(x)（＝sin(y)）の値 を、１５次までのテーラー級数演算で求めるアセンブラ命令列は、
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の積演算を実行するアセンブラ命令である。
【００９５】
［第３の実施形態］
図４は、本発明の第３実施形態である演算処理装置の主要部の構成を示すブロック図である。
【００９６】
本実施形態の演算処理装置３は、図４の左側に示すテーラー級数積和演算命令５０を命令セットに含んでいる。このテーラー級数積和演算命令５０は、５つのフィールド５１〜５５から構成されている。フィールド５１は命令種別コードの設定フィールドであり、このフィールド５１には「テーラー級数積和演算命令コード」を設定する。フィールド５２には「積和演算の積演算の他方の入力レジスタ番号」を、フィールド５３には「積和演算の積演算の他方の入力レジスタ番号」を、フィールド５４には「積和演算の演算結果の出力レジスタ番号」を設定する。また、フィールド５５には「テーラー級数の次数番号」を設定する。
【００９７】
このように、本実施形態のテーラー級数積和演算命令５０は、図３に示す第２実施形態のテーラー級数積和演算命令３０から「係数テーブルのセット番号を収めたレジスタ番号」の設定フィールド３５を削除した構成となっている。
【００９８】
本実施形態は、係数テーブルのセット番号を格納したレジスタｒ２の値の符号ビット（図４の例では、第６３ビット）を、係数テーブルのセット番号として利用し、この符号ビットを、マルチプレクサ２６に選択信号として入力させる。本実施形態の演算処理装置３のレジスタは６４ビット構成なので、この符号ビットは、図４では［６３］と表記されている。
【００９９】
演算処理装置３においては、マルチプレクサ２０３３と浮動小数点積和演算器１０５０との間に、アンドゲート６１が設けられている。このアンドゲート６１の一方の入力端子６１ａには前記レジスタｒ２の符号ビット（［６３］）が入力し、他方の入力端子６１ｂにはテーラー級数積和演算命令５０の命令種別コード（テーラー級数積和演算命令コード）５１が入力する。
【０１００】
本実施形態においては、テーラー級数積和演算命令コード５１は“１”に設定される。一方、図８に示す浮動小数点積和演算命令２０１０の命令種別コード２０１１は“０”に設定される。アンドゲート６１の入力端子６１ｂは負論理入力なので、テーラー級数積和演算命令５０実行中は、アンドゲート６１の出力は、常に“０”となる。一方、前記浮動小数点積和演算命令２０１０実行中は、アンドゲート６１は、入力端子６１ａに入力するレジスタｒ２の第６３ビット（［６３］）の値を、そのまま、出力する。
【０１０１】
アンドゲート６１の出力は、マルチプレクサ２０３２の出力（レジスタｒ２の値）を浮動小数点積和演算器１０５０に入力させる信号線６５上で、レジスタｒ２の第６３ビット（符号ビット）との論理積がとられ、その論理積の結果が上記信号線６５を介して浮動小数点積和演算器１０５０に入力する。
【０１０２】
したがって、演算処理装置３がテーラー級数積和演算命令５０を実行するときには、アンドゲート６１の作用により、浮動小数点積和演算器１０５０に入力されるレジスタｒ２の値の符号ビットは強制的に“０”（正）にセットされる。
【０１０３】
アンドゲート６１は、テーラー級数積和演算命令５０を実行する際に、レジスタｒ２の符号ビットを係数テーブルのセット番号として利用するために設けられたものである。
このアンドゲート６１を設けた理由を、より詳しく説明する。
【０１０４】
sin(x) とcos(x)のケースを例に考えると、前記第２の実施形態で証明されたように、テーラー級数積和演算命令５０の積和演算の積演算の他方の入力データは、０またはｙ２を値としてとるので、必ず値が正となることが分かっている。このため、積和演算の積演算の他方の入力データの符号ビットに、係数テーブルのセット番号を設定しても、元のデータの情報を失わずに、テーラー級数演算を実行することが可能である。換言すれば、sin(x)とcos(x)の場合は、テーラー級数積和演算命令５０の積和演算の積演算の他方の入力レジスタの値は、常に正であることが分かっているので、その値の符号ビットをセット番号に使用しても、その値が浮動小数点積和演算器１０５０に入力される前に、その値の符号ビットを元に戻せば、浮動小数点積和演算器１０５０においてテーラー級数演算は正しく実行される。
【０１０５】
本実施形態のテーラー級数積和演算命令５０の具体的な使用例を、sin関数を取り上げて説明する。
sin(x)の入力引数判定により、x = ＋π/4＋2nπ〜+３π/4+＋2nπの範囲であることが判明したとすると、sin(x)は、入力引数変換を経て、下記のようなテーラー級数演算で表現される。
【０１０６】
【数６】
2008234076.tif 000008
ここで、bnは、図２のセット番号が“１”の係数テーブル１２（cos(x)のテーラー級数演算の係数テーブル）に対応する。
【０１０７】
テーラー級数演算をcos(y)のテーラー級数の１４次まで求めることにすると、
【０１０８】
【数７】
2008234076.tif 000009
【０１０９】
【数８】
2008234076.tif 000010
と表現することができる。
【０１１０】
したがって、下記１．〜４．に示すように、テーラー級数積和演算命令５０の各指定フィールド５２〜５５に、「レジスタ番号」及び「テーラー級数の次数番号」を設定し、上記ｚを求める積和演算を、複数回、逐次実行すると、sin(x)(=cos(y))の値を算出することができる。
【０１１１】
１．積和演算の積演算の一方の入力レジスタ番号５２：ｚを収めたレジスタ番号
２．積和演算の積演算の他方の入力レジスタ番号５３：“−０”または“−ｙ2 ”を格納しているレジスタ番号
３．積和演算の演算結果の出力レジスタ番号５４：ｚを収めたレジスタ番号
４．テーラー級数の次数番号５６：０〜７の値
入力引数ｘの範囲が ＋π/4+2nπ〜+３π/4+2nπ以外のケースについても、同様に、入力引数判定、入力引数変換を経て、テーラー級数演算で表現することができる。
【０１１２】
ここで、上記２．において、積和演算の積演算の他方の入力レジスタ番号５３に“−０”または“−ｙ2 ”を設定するようにしているのは、上述したように、sin(x)の入力引数x が ＋π/4＋2nπ〜+３π/4+＋2nπの範囲である場合、図２に示すセット番号が“１”の係数テーブル１２に格納されている係数を用いてテーラー級数演算を行いながら、sin(x) の値を求めるためである。これは、sin(x)の入力引数ｘが、x = ＋5π/4＋2nπ〜+7π/4+＋2nπの範囲の場合も同様である。
【０１１３】
次に、テーラー級数積和演算命令５０を用いて、sin(x) （＝cos(y)）のテーラー級数演算を実行する場合の具体的なアセンブラ命令列について説明する。
前記テーラー級数積和演算命令５０のアセンブラ命令の表記を、前記第２の実施形態と同様に、下記のように定義する。ftrimaddはテーラー級数積和演算命令５０のアセンブラ命令表記、＜  ＞内はアセンブラ命令ftrimaddのオペランドである。
【０１１４】
ftrimadd  ＜積和演算の積演算の一方の入力レジスタ番号＞
＜積和演算の積演算の他方の入力レジスタ番号＞
＜テーラー級数の次数番号＞
＜積和演算の演算結果の出力レジスタ番号＞
ここで、積和演算の積演算の一方の入力レジスタ番号３２を“６”、積和演算の積演算の他方の入力レジスタ番号３３を“０”もしくは“２”、積和演算の演算結果の出力レジスタ番号３４を“６”に設定する。そして、レジスタ番号ｉを%fiで表記し、%f0=−0、%f2=−y2、%f4=１、%f6=zであるとする。
【０１１５】
すなわち、レジスタ番号０（%f0）のレジスタには“−０”、レジスタ番号２（%f2）のレジスタには“−y2”、レジスタ番号４（%f4）のレジスタには“１”が設定されており、レジスタ番号６(%f6)のレジスタの値を“ｚ”とする。
【０１１６】
この場合、sin(x)(=cos(y))の値を、１４次までのテーラー級数演算で求めるアセンブラ命令列の記述は下記のようになる
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の積演算を実行するアセンブラ命令である。
【０１１７】
演算処理装置３が、上記アセンブラ命令列を実行するときの動作を説明する。係数テーブルセット１０が図２に示すような構成となっている場合、sin(x) の入力引数xが、−π/4+2nπ〜＋π/4＋2nπもしくは＋3π/4+2nπ〜＋5π/4＋2nπの場合は、セット番号２２が“０”の係数テーブル１１を用いるので、レジスタｒ２の符号ビット（［６３］）を、そのまま、係数テーブルのセット番号として使用できる。
【０１１８】
これに対し、sin(x) の入力引数xが、＋π/4+2nπ〜＋π3/4＋2nπもしくは＋5π/4+2nπ〜＋7π/4＋2nπ場合は、セット番号２２が“１”の係数テーブル１２を用いるので、レジスタｒ２の符号ビットは、常に、“１”（負）に設定しておく必要がある。しかしながら、上述したようにsin(x)の値算出に用いるテーラー級数積和演算命令５０の「積和演算の積演算の他方の入力レジスタ」（本実施形態の場合はレジスタｒ２）の値は“０”または“ｙ２”である。この問題を解決するため、積和演算の積演算の他方の入力レジスタｒ２には、“−０”、“−ｙ2 ”を設定する。
【０１１９】
レジスタｒ２に設定された“−０”、“−ｙ2 ”の値は、前述したアンドゲート６１の作用により、浮動小数点積和演算器１０５０に入力される前に、“０”と“ｙ2 ”に変換される。これにより、浮動小数点積和演算器１０５０は、sin(x)（＝cos(y)）のテーラー級数演算を正しく実行できる。
【０１２０】
sin(x) 、cos(x)以外のケースでは、入力データの精度を多少犠牲にして、「積和演算の積演算の他方の入力データ」の仮数部の下位数ビットを、係数テーブルのセット番号に利用することで、sin(x) 、cos(x)と同様にして、積和演算の積演算の他方の入力レジスタの値により、係数テーブルのセット番号を正しく指示することが可能になる。
【０１２１】
本実施形態では、積和演算の積演算の他方の入力レジスタの一部のビットを、係数テーブルのセット番号の指定に利用するようにしているが、積和演算の積演算の一方の入力レジスタの一部のビットを、係数テーブルのセット番号の指定に用いるようにしてもよい。
【０１２２】
［第４の実施形態］
図５は、本発明の第４実施形態である演算処理装置の主要部の構成を示す図である。図５において、図３の構成要素と同じ構成要素には同じ符号を付与している。
【０１２３】
第２の実施形態で説明されているように、テーラー級数演算を実行する場合、「積和演算の積演算の一方の入力レジスタ番号」と「積和演算の演算結果の出力レジスタ番号」は、同一のレジスタ番号を示す。
【０１２４】
本実施形態の演算処理装置４は、この点に着目し、図３に示すテーラー級数積和演算命令３０から「積和演算の積演算の一方の入力レジスタ番号」のフィールド３２を省略し、代わりに、「積和演算の演算結果の出力レジスタ番号」のフィールド３３を、「積和演算の積演算の一方の入力レジスタ番号」を指定するフィールドとしても使用する。
【０１２５】
図５の左側に、本実施形態の演算処理装置４が備えるテーラー級数積和演算命令７０を示す。
本実施形態のテーラー級数積和演算命令７０は、５つのフィールド７１〜７５から構成される。フィールド７１には「命令種別コード（テーラー級数積和演算命令コート゛）が、フィールド７２には「積和演算の積演算の他方の入力レジスタ番号」が、フィールド７３には「積和演算の演算結果の出力レジスタ番号」が設定される。また、フィールド７４には「係数テーブルのセット番号を収めたレジスタ番号」が、フィールド７５には「テーラー級数の次数番号」が設定される。
【０１２６】
本実施形態のテーラー級数積和演算命令７０は、フィールド７３に設定される「積和演算の演算結果の出力レジスタ番号（ｗ１）」を、「積和演算の積演算の一方の入力レジスタ番号（ｒ１）」に兼用している。これにより、テーラー級数積和演算命令のレジスタ指
定フィールドを削減できるという効果が得られる。
【０１２７】
本実施形態の動作は、テーラー級数積和演算命令７０のフィールド７３に設定される「積和演算の演算結果の出力レジスタ番号」が、レジスタ４０から、積和演算の積演算の一方の値を格納している入力レジスタｒ１を読み出すために用いられる以外は、前述した第３の実施形態と同様である。
【０１２８】
尚、本実施形態では、「積和演算の演算結果の出力レジスタ番号（ｗ１）」を「積和演算の積演算の一方の入力レジスタ番号（ｒ１）」に兼用しているが、これとは、逆に、テーラー級数積和演算命令に、「積和演算の積演算の一方の入力レジスタ番号」を設定するフィールドを設け、「積和演算の演算結果の出力レジスタ番号（Ｗ１）」は省略するようにして、「積和演算の積演算の一方の入力レジスタ番号（ｒ１）」を「積和演算の演算結果の出力レジスタ番号（ｗ１）」に兼用するようにしてもよい。このような演算処理装置は、図５の構成とほぼ同様な構成で実現できる。すなわち、テーラー級数積和演算命令７０において、「積和演算の演算結果の出力レジスタ番号（ｗ１）」の設定フィールド７３の代わりに、「積和演算の積演算の一方の入力レジスタ番号（ｒ１）」の設定フィールドを設ける。そして、レジスタ番号ｒ１を、レジスタ４０にレジスタ番号ｗ１として入力させるようにすればよい。
【０１２９】
［第５の実施形態］
図６は、本発明の第５実施形態である演算処理装置のシステム構成を示すブロック図である。図６において、図１と同じ構成要素には同一の符号を付与している。
【０１３０】
本実施形態の演算処理装置５と前記第１の実施形態の演算処理装置１との構成上の差異は、係数テーブルセット９０がＲＡＭ(Random Access Memory)に実装されていることである。前記第１の実施形態の演算処理装置１においては、係数テーブルセット１０はＲＯＭに実装されている。
【０１３１】
本実施形態の演算処理装置５が第１の実施形態の演算処理装置１より優れている点は、係数テーブルセット９０の内容を書き換えできることである。このため、本実施形態の演算処理装置５においては、係数テーブルの値の更新、係数テーブルの入れ替え、係数テーブルの追加などが可能である。
【０１３２】
［第６の実施形態］
図７は、本発明の第６の実施形態である演算処理装置の主要部を示す図である。図７において、図３及び図６の構成要素と同一の構成要素には同じ符号を付与している。
【０１３３】
図７の左側に、本実施形態の演算処理装置６が備える係数テーブルセット更新命令１００の形式を示す。
係数テーブルセット更新命令１００は、浮動小数点積和演算器１０５０に積演算を実行させ、その演算結果を、係数テーブルセット内の指定された係数テーブルの指定されたテーラー級数の次数番号の記憶領域に書き込ませる命令である。演算処理装置６は、この係数テーブルセット更新命令１００を実行して、係数テーブルセット９０の係数データを更新する。
【０１３４】
係数テーブルセット更新命令１００の実行においては、積演算のみが行われるため、浮動小数点積和演算器１０５０の和算用の入力データは“０”に固定される。浮動小数点積和演算器１０５０が係数テーブルセット更新命令１００を実行する際に使用する積演算の２つの被演算データは、レジスタｒ１の値とレジスタｒ２の値である。この２つの被演算データは、係数テーブルセット更新命令１００によって指定される。
【０１３５】
前記係数テーブルセット更新命令１００は、５つのフィールド１０１〜１０５から構成される。フィールド１０１には、命令種別コードとして、「係数テーブル更新命令コート゛」を設定する。フィールド１０２には、「積和演算の積演算の一方の入力レジスタ番号」（本実施形態では、レジスタｒ１のレジスタ番号）を設定する。フィールド１０３には、「積和演算の積演算の他方の入力レジスタ番号」（本実施形態では、レジスタ番号ｒ２のレジスタ番号）を設定する。フィールド１０４には、「係数テーブルのセット番号を収めたレジスタ番号」（本実施形態では、レジスタｒ３のレジスタ番号）を設定する。そして、フィールド１０５には、「テーラー級数の次数番号」を設定する。
【０１３６】
上記「積和演算の積演算の一方の入力レジスタ番号」と上記「積和演算の積演算の他方の入力レジスタ番号」は、浮動小数点積和演算器１０５０が積和演算の積演算で使用する一方の被演算データが格納されたレジスタ（第１のレジスタｒ１）と他方の被演算データが格納されたレジスタ（第２のレジスタｒ２）のそれぞれのレジスタ番号である。また、上記「係数テーブルのセット番号を収めたレジスタ番号」は、データを更新する係数テーブル（データ更新対象の係数テーブル）を指定する情報を格納しているレジスタ（第３のレジスタｒ３）のレジスタ番号である。「テーラー級数の次数番号」は、更新対象のデータのテーラー級数の次数を指定する情報である。
【０１３７】
本実施形態では、前述のように、テーラー級数の係数の次数が、係数テーブルの行番号に対応するように構成されているので、前記データ更新対象の係数テーブルと前記更新対象データのテーラー級数の次数により、係数テーブルセット（RAM）９０内での前記更新対象データのアドレスが決定される。すなわち、前記レジスタｒ３の値と前記テーラー級数の次数番号２１により、前記更新対象データの前記係数テーブルセット（RAM）９０内での格納アドレスを知ることができる。
【０１３８】
前記係数テーブルセット更新命令１００がデコードされると、前記レジスタｒ１の値、前記レジスタｒ２の値及び前記レジスタｒ３の値がレジスタ４０から読み出される。レジスタｒ１の値とレジスタｒ２の値は、それぞれ、マルチプレクサ２０３１とマルチプレクサ２０３１を介して、浮動小数点積和演算器１０５０にオペランドデータとして入力する。浮動小数点積和演算器１０５０は、前記レジスタｒ１の値と前記レジスタｒ２の値を積演算し、その積演算結果をマルチプレクサ９３に出力する。
【０１３９】
前記レジスタｒ３の値は、マルチプレクサ１０２３を介して、マルチプレクサ９３に選択信号（前記係数テーブルセット（ＲＡＭ）９０の列アドレス信号）として入力する。前記係数テーブルセット（ＲＡＭ）９０には、前記テーラー級数の次数番号１０５が行アドレス信号として入力する。浮動小数点積和演算器１０５０の前記積演算結果は、前記マルチプレクサ９３から選択出力され、前記係数テーブルセット（ＲＡＭ）９０の前記行アドレス信号と前記列アドレス信号によって決定されるアドレスに書き込まれる。これにより、係数テーブルセット更新命令１００によって指定された係数テーブルの係数データが更新される。
【０１４０】
本実施形態は、このように、係数テーブルセット９０の任意のアドレスに係数データを書き込むことができる。したがって、本実施形態は、係数テーブルセット９０に格納されている係数テーブルの係数データの更新、該係数テーブルの入れ替えなどが可能である。
【０１４１】
また、本実施形態においては、演算処理装置６が係数テーブルセット更新命令１００を実行することにより、係数テーブルセット９０に新たな係数テーブルを追加することも可能である。
【０１４２】
本実施形態では、係数テーブルセット（ＲＡＭ）９０の更新データを、レジスタ４０に格納されている２つのデータを浮動小数点積和演算器１０５０により積演算することにより求めているが、該更新データを、係数テーブルセット更新命令のフィールドに、即値(immediate)として設定できるような構成にしてもよい。
【０１４３】
また、本実施形態の演算処理装置６がテーラー級数演算を行う際に実行するテーラー級数積和演算命令には、前記第２〜４実施形態の各実施形態のテーラー級数積和演算命令を使用できる。
本発明は、上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々に変形して実施することができる。
【０１４４】
（付記１）
オペランドのデータを格納するレジスタ手段と、
該レジスタ手段に格納されたオペランドのデータを読み出すレジスタデータ読み出し手段と、
数学関数のテーラー級数演算の係数データを格納する係数テーブルを記憶する係数テーブルセット記憶手段と、
前記数学関数のテーラー級数の次数情報と前記係数テーブルの識別情報を用いて、前記係数テーブルセット記憶手段から、前記数学関数のテーラー級数の係数データを読み出す係数データ読み出し手段と、
該係数データ読み出し手段により読み出された前記係数データと前記レジスタ手段から読み出されたデータもしくはバイパスデータを用いて、前記数学関数のテーラー級数演算を実行する浮動小数点積和演算器と、
を備えることを特徴とする演算処理装置。
（付記２）
付記１記載の演算処理装置であって、
前記係数テーブルは、偶関数である数学関数については偶数の次数の係数データのみを格納し、奇関数である数学関数については奇数の次数の係数データのみを格納することを特徴とする。
（付記３）
付記２記載の演算処理装置であって、
前記奇関数は正弦関数（ｓｉｎ（ｘ））であり、前記偶関数は余弦関数（ｃｏｓ（ｘ））であり、
前記係数テーブルセット記憶手段は、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを備えることを特徴とする。
（付記４）
付記３記載の演算処理装置であって、
前記正弦関数または前記余弦関数をテーラー級数演算で演算する際、それらの数学関数の入力引数ｘの値の範囲に応じて、前記正弦関数の係数テーブルと前記余弦関数の係数テーブルを使い分けることを特徴とする。
（付記５）
付記４記載の演算処理装置であって、
前記正弦関数または前記余弦関数の入力引数ｘが−π／４〜＋π／４の範囲外である場合には、前記正弦関数または前記余弦関数の入力引数ｘが−π／４〜＋π／４の範囲内となるような入力引数変換を行い、該入力引数変換により得られる正弦関数または余弦関数の係数テーブルの係数データを用いてテーラー級数演算を実行することを特徴とする。
（付記６）
付記１記載の演算処理装置であって、さらに、
前記係数データ読み出し手段により読み出された前記係数テーブルセット記憶手段内の係数データと、前記レジスタデータ読み出し手段により読み出された前記レジスタ手段に
格納されたデータもしくはバイパスデータを入力し、浮動小数点演算命令の種別を示す命令種別コードに応じて、前記２つの入力データの内、いずれか一方の入力データを前記浮動小数点積和演算器に選択出力する選択出力手段を備え、
該選択出力手段は、前記命令種別コードがテーラー級数積和演算命令を示している場合には、前記係数データを前記浮動小数点積和演算器に出力することを特徴とする。
（付記７）
付記１または６記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、
前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第４の情報を設定するフィールドと、テーラー級数の次数を指定する第５の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
（付記８）
付記１または６記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数を指定する第４の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
前記第２の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
（付記９）
付記１または６記載の演算処理装置であって、さらに、
テーラー級数積和演算命令を示す命令種別コードを設定するフィールドと、浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指示する第１の情報を設定するフィールドと、前記浮動小数点積和演算の積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記浮動小数点積和演算の演算結果を出力すべきレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数を指定する第４の情報を設定するフィールドから成るテーラー級数積和演算命令を備え、
前記第１の情報で指定されるレジスタのデータの一部のビットを、前記係数テーブルの識別情報を指定する情報として用い、前記テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
（付記１０）
付記８または９記載の演算処理装置であって、
前記指定されるレジスタのデータの一部のビットは、符号ビットであることを特徴とする。
（付記１１）
付記１０記載の演算処理装置であって、さらに、
前記指定されるレジスタのデータの符号ビットを所定の値に設定し、該設定後のレジスタのデータを前記浮動小数点積和演算器に出力する符号ビット設定手段を備えることを特徴とする。
（付記１２）
付記１１記載の演算処理装置であって、
前記符号ビット設定手段は、
前記命令種別コードと前記指定されるレジスタのデータの符号ビットを入力し、前記命令種別コードがテーラー級数積和演算命令であるときにのみ、前記所定の値を出力するアンドゲート手段と、
前記指定されるレジスタのデータの符号ビットを、前記アンドゲート手段の出力するビットに置き換える符号ビット置き換え手段と、
を備えることを特徴とする。
（付記１３）
付記８または９記載の演算処理装置であって、
前記指定されるレジスタのデータの一部のビットは仮数部の下位ビットであることを特徴とする。
（付記１４）
付記７、８記載の演算処理装置であって、さらに、
浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタの番号を指定する付記７、８記載の第１の情報を設定するフィールドを省略し、
代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する付記７、８記載の第３の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の一方の被演算値を格納するレジスタを指定する情報に用い、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
（付記１５）
付記７、９記載の演算処理装置であって、さらに、
浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタの番号を指定する付記７、９記載の第２の情報を設定するフィールドを省略し、
代わりに、浮動小数点積和演算の演算結果を出力すべきレジスタを指定する付記７、９記載の第３の情報を設定するフィールドを、前記浮動小数点積和演算の積演算の他方の被演算値を格納するレジスタを指定する情報に用い、
該テーラー級数積和演算命令のデコード結果に応じて、前記レジスタデータ読み出し手段と前記係数データ読み出し手段により、前記レジスタ手段と前記係数テーブルセット記憶手段から、前記浮動小数点積和演算器がテーラー級数演算を実行する際に必要なデータを読み出し、該データを前記浮動小数点積和演算器に供給することを特徴とする。
（付記１６）
付記１乃至１５のいずれか１項に記載の演算処理装置であって、
前記係数テーブルセット記憶手段は、データ読み出し専用のメモリであることを特徴とする。
（付記１７）
付記１乃至１５のいずれか１項に記載の演算処理装置であって、
前記係数テーブルセット記憶手段は、データの書き換えが可能なメモリであることを特
徴とする。
（付記１８）
付記１７記載の演算処理装置であって、さらに、
係数テーブルを指定する係数テーブル指定情報と、テーラー級数の次数を指定する次数指定情報により、前記係数テーブルセット記憶手段内のデータの設定位置を指定次数指定することを特徴とする。
（付記１９）
付記１８記載の演算処理装置であって、さらに、
前記係数テーブルセット記憶手段内の前記設定位置に、係数データを設定する係数テーブルセット更新手段を備えることを特徴とする。
（付記２０）
付記１９記載の演算処理装置であって、さらに、
前記係数テーブルのデータ更新を指示する命令種別コードを設定するフィールドと、積和演算の積演算の一方の被演算値を格納するレジスタを指定する第１の情報を設定するフィールドと、積和演算の積演算の他方の被演算値を格納するレジスタを指定する第２の情報を設定するフィールドと、前記係数テーブルの識別情報を格納しているレジスタを指定する第３の情報を設定するフィールドと、テーラー級数の次数情報を指定する第４の情報を設定するフィールドから成る係数テーブルセット更新命令を備え、
前記係数テーブルセット更新手段は、前記係数テーブルセット更新命令のデコード結果に応じて、前記第１の情報で指定される第１のレジスタの値と前記第２の情報で指定される第２のレジスタの値の積演算を前記浮動小数点積和演算器に実行させ、その積演算結果を、前記第３の情報で指定されるレジスタの値によって指定される係数テーブルの、前記第４の情報によって指定される次数の係数データの格納領域に書き込むことを特徴とする。
【図面の簡単な説明】
【０１４５】
【図１】本発明の第１の実施形態である演算処理装置のシステム構成を示すブロック図である。
【図２】係数テーブルセットの構成例を示す図である。
【図３】本発明の第２実施形態である演算処理装置の主要部の構成を示す図である。
【図４】本発明の第３実施形態である演算処理装置の主要部の構成を示すブロック図である。
【図５】図５は、本発明の第４実施形態である演算処理装置の主要部の構成を示す図である。
【図６】本発明の第６実施形態である演算処理装置のシステム構成を示すブロック図である。
【図７】本発明の第７の実施形態である演算処理装置の主要部を示す図である。
【図８】従来のテーラー級数演算機能を備えた演算処理装置のシステム構成を示す図である。
【符号の説明】
【０１４６】
１      第１の実施形態の演算処理装置  
１０      係数テーブルセット（ＲＯＭ）
１１      sin(x) の係数テーブル
１２      cos(x)の係数テーブル
２１      テーラー級数の次数番号
２２      係数テーブルのセット番号
２３      命令種別コード
２６、２７      マルチプレクサ
２      第２の実施形態の演算処理装置
３０      第２の実施形態のテーラー級数積和演算命令
３１      命令種別コード（テーラー級数積和演算命令コート゛）の設定フィールド
３２      積和演算の積演算の一方の入力レジスタ番号の設定フィールド
３３      積和演算の積演算の他方の入力レジスタ番号の設定フィールド
３４      積和演算の演算結果の出力レジスタ番号の設定フィールド
３５      係数テーブルのセット番号を収めたレジスタ番号の設定フィールド
３６      テーラー級数の次数番号の設定フィールド
４０      レジスタ
２０３１〜２０３４      マルチプレクサ
３      第３の実施形態の演算処理装置
５０      第３の実施形態のテーラー級数積和演算命令
５１      命令種別コード（テーラー級数積和演算命令コート゛）の設定フィールド
５２      積和演算の積演算の一方の入力レジスタ番号の設定フィールド
５３      積和演算の積演算の他方の入力レジスタ番号の設定フィールド
５４      積和演算の演算結果の出力レジスタ番号の設定フィールド
５５      テーラー級数の次数番号の設定フィールド
６１      アンドゲート
６１ａ      アンドゲート６１の一方の入力端子
６１ｂ      アンドゲート６１の他方の入力端子
６５      レジスタｒ２のデータが流れる信号線
４      第４の実施形態の演算処理装置
７０      第４の実施形態のテーラー級数積和演算命令
７１      命令種別コード（テーラー級数積和演算命令コート゛）の設定フィールド
７２      積和演算の積演算の他方の入力レジスタ番号の設定フィールド
７３      積和演算の演算結果の出力レジスタ番号の設定フィールド
７４      係数テーブルのセット番号を収めたレジスタ番号の設定フィールド
７５      テーラー級数の次数番号の設定フィールド
５      本発明の第５実施形態の演算処理装置
９０      係数テーブルセット（ＲＡＭ）
９１      マルチプレクサ
６      本発明の第６実施形態の演算処理装置
９３      マルチプレクサ
１００      係数テーブルセット更新命令
１０１      命令種別コード（係数テーブル更新命令コード）の設定フィールド
１０２      積和演算の積演算の一方の入力レジスタ番号の設定フィールド
１０３      積和演算の積演算の他方の入力レジスタ番号の設定フィールド
１０４      係数テーブルのセット番号を収めたレジスタ番号の設定フィールド
１０５      テーラー級数の次数番号の設定フィールド
ｒ１、ｒ２、ｒ２、Ｗ１1      レジスタ番号
【図１】
2008234076.tif 000011
【図２】
2008234076.tif 000012
【図３】
2008234076.tif 000013
【図４】
2008234076.tif 000014
【図５】
2008234076.tif 000015
【図６】
2008234076.tif 000016
【図７】
2008234076.tif 000017
【図８】
2008234076.tif 000018