(57)【特許請求の範囲】
【請求項１】
対数関数を級数演算項と前記級数演算項に対する係数項とに分解した場合における前記係数項に含まれる第１の係数の値を、前記第１の係数の値を算出する第１の命令のオペランドデータ中の第１のビット群の値に応じて記憶する第１の記憶部と、
前記級数演算項に含まれる第２の係数の値を、前記第２の係数の値を算出する第２の命令のオペランドデータ中の前記第１のビット群の値に応じて記憶する第２の記憶部と、
前記第１の命令の実行に基づいて、前記第１の記憶部から読み出される前記第１の係数の値を選択し、前記第２の命令の実行に基づいて、前記第２の記憶部から読み出される前記第２の係数の値を選択する選択部を有することを特徴とする演算処理装置。
【請求項２】
前記第１の記憶部は、前記第１の命令の浮動小数点形式のオペランドデータにおける仮数部の前記第１のビット群の値ｉ（ｉは自然数）にそれぞれ対応して、"ｌｏｇ（１＋ｉ／２＾ｎ）"（＾はべき乗、ｎは第１のビット群のビット数）の値を前記第１の係数の値として記憶し、
前記第２の記憶部は、前記第２の命令の浮動小数点形式のオペランドデータにおける仮数部の前記第１のビット群の値ｉにそれぞれ対応して、"１／（１＋ｉ／２＾ｎ）"の値を前記第２の係数の値として記憶することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記第１の記憶部は、前記第１のビット群の値ｉにそれぞれ対応して浮動小数点形式の前記第１の係数の符号部、指数部および仮数部の値を記憶し、前記第１の命令に基づいて、記憶している符号部、指数部および仮数部の値を出力し、
前記第２の記憶部は、前記第１のビット群の値ｉにそれぞれ対応して浮動小数点形式の前記第２の係数の符号部、指数部および仮数部の値を記憶し、前記第２の命令に基づいて、記憶している符号部、指数部および仮数部の値を出力することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記第１のビット群は、オペランドデータにおける仮数部の上位側のｎビットであることを特徴とする請求項２または請求項３記載の演算処理装置。
【請求項５】
前記演算処理装置はさらに、
前記級数演算項に含まれる第３の係数の値を、前記第３の係数の値を算出する第３の命令のオペランドデータ中の第２のビット群の値に応じて算出する係数算出部を有し、
前記選択部は、前記第３の命令の実行に基づいて、前記係数算出部が算出した前記第３の係数の値を選択することを特徴とする請求項１ないし請求項４のいずれか１項記載の演算処理装置。
【請求項６】
前記演算処理装置はさらに、
前記第１の記憶部と、前記第２の記憶部と、前記第１の記憶部および前記第２の記憶部に共通に設けられ、前記第１のビット群の値に応じて、前記第１の記憶部が記憶する前記第１の係数の値のいずれかと前記第２の記憶部が記憶する前記第２の係数の値のいずれかとを選択するデコーダとを含む計数記憶部を有することを特徴とする請求項１ないし請求項５のいずれか１項記載の演算処理装置。
【請求項７】
前記演算処理装置はさらに、積和演算を行う積和演算器を有し、
前記選択部は、前記積和演算器が演算命令を実行したことに基づいて、前記積和演算器から出力される演算結果を選択することを特徴とする請求項１ないし請求項６のいずれか１項記載の演算処理装置。
【請求項８】
演算処理装置の制御方法において、
前記演算処理装置が有する計数演算器が、対数関数を級数演算項と前記級数演算項に対する係数項とに分解した場合における前記係数項に含まれる第１の係数の値を、前記第１の係数の値を算出する第１の命令のオペランドデータ中の第１のビット群の値に応じて第１の記憶部から読み出すとともに、前記級数演算項に含まれる第２の係数の値を、前記第２の係数の値を算出する第２の命令のオペランドデータ中の前記第１のビット群の値に応じて第２の記憶部から読み出し、
前記演算処理装置が有する選択部が、前記第１の命令の実行に基づいて、前記第１の記憶部から読み出される前記第１の係数の値を選択し、前記第２の命令の実行に基づいて、前記第２の記憶部から読み出される前記第２の係数の値を選択することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
プロセッサ等の演算処理装置において、対数関数を複数の副関数に分解し、各副関数に対応する参照表をパイプラインの各段階において参照することで、対数関数の演算を実行する手法が提案されている（例えば、特許文献１参照）。また、演算処理装置において、指数関数をテーラー級数演算項とテーラー級数演算項に対する係数項とに分解して算出する場合に、テーブルを用いて係数を算出することで、指数関数の演算を実行する手法が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００８−５０２０３６号公報
【特許文献２】国際公開第２０１３／１４５２７６号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、対数関数を、有限の次数で与えられた精度に収束するテーラー級数の演算であるテーラー級数演算項とテーラー級数演算項に対する係数項とに分解することで、テーラー級数演算を用いて対数関数の演算を実行することが可能になる。これにより、テーラー級数演算をある有限な次数で打ち切った場合にも所定の精度が得られる。しかしながら、従来、係数の算出処理は、データ転送命令、ビット演算命令、シフト演算命令等の複数の命令を組み合わせて実行されるため、テーラー級数演算を用いた対数関数の演算は、演算処理装置の処理性能を低下させる要因になっていた。
【０００５】
１つの側面では、本件開示の演算処理装置および演算処理装置の制御方法は、級数演算を用いた対数関数の演算を従来に比べて高速に実行することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、演算処理装置は、対数関数を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第１の係数の値を、第１の係数の値を算出する第１の命令のオペランドデータ中の第１のビット群の値に応じて記憶する第１の記憶部と、級数演算項に含まれる第２の係数の値を、第２の係数の値を算出する第２の命令のオペランドデータ中の第１のビット群の値に応じて記憶する第２の記憶部と、第１の命令の実行に基づいて、第１の記憶部から読み出される第１の係数の値を選択し、第２の命令の実行に基づいて、第２の記憶部から読み出される第２の係数の値を選択する選択部を有する。
【０００７】
別の観点によれば、演算処理装置の制御方法は、演算処理装置が有する計数演算器が、対数関数を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第１の係数の値を、第１の係数の値を算出する第１の命令のオペランドデータ中の第１のビット群の値に応じて第１の記憶部から読み出すとともに、級数演算項に含まれる第２の係数の値を、第２の係数の値を算出する第２の命令のオペランドデータ中の第１のビット群の値に応じて第２の記憶部から読み出し、演算処理装置が有する選択部が、第１の命令の実行に基づいて、第１の記憶部から読み出される第１の係数の値を選択し、第２の命令の実行に基づいて、第２の記憶部から読み出される第２の係数の値を選択する。
【発明の効果】
【０００８】
本件開示の演算処理装置および演算処理装置の制御方法は、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。
【図面の簡単な説明】
【０００９】
【図１】演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。
【図２】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図３】ＩＥＥＥ７５４による倍精度浮動小数点数のデータ形式を示す図である。
【図４】図２に示すＴｌｏｇテーブルおよびＴｒテーブルの一例を示す図である。
【図５】式（４）および式（５）に示す係数の値を算出する命令の一例を示す図である。
【図６】図２に示す演算処理装置の動作の一例を示す図である。
【図７】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図８】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【図９】演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。
【００１１】
図１は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図１に示す演算処理装置１００は、第１の記憶部１、第２の記憶部２および選択部３を有する。図１に示す演算処理装置１００は、情報処理装置３００に搭載される。第１の記憶部１は、対数関数ｌｏｇ（ｘ）を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第１の係数の値を、第１の係数の値を算出する第１の命令ｆｌｏｇａｄのオペランドデータｘ中の第１のビット群の値に応じて記憶する。このため、演算処理装置１００では、データ転送命令、ビット演算命令、シフト演算命令等の複数の命令を実行することなく、第１の命令ｆｌｏｇａｄの実行により第１の記憶部１を参照することで、第１の係数を算出することができる。
【００１２】
第２の記憶部２は、級数演算項に含まれる第２の係数の値を、第２の係数の値を算出する第２の命令ｆｒａｄ１のオペランドデータｘ中の第１のビット群の値に応じて記憶する。このため、演算処理装置１００では、データ転送命令、ビット演算命令、シフト演算命令等の複数の命令を実行することなく、第２の命令ｆｒａｄ１の実行により第２の記憶部２を参照することで、第２の係数を算出することができる。選択部３は、第１の命令ｆｌｏｇａｄの実行に基づいて、第１の記憶部１から読み出される第１の係数の値を選択し、第２の命令ｆｒａｄ１の実行に基づいて、第２の記憶部２から読み出される第２の係数の値を選択する。
【００１３】
例えば、演算処理装置１００は、選択部３から出力される第２の係数を対数関数ｌｏｇ（１＋ｔ）の級数展開式に与え、級数演算項の値を算出する。演算処理装置１００は、算出した級数演算項の値と、選択部３から出力される第１の係数とに基づいて、対数関数ｌｏｇ（ｘ）の値を算出する。なお、級数演算項に対する係数項が定数項を含む場合、演算処理装置１００は、定数項の値を算出し、算出した定数項の値と、級数展開式を用いて算出した級数演算項の値と、選択部３から出力される第１の係数とに基づいて、対数関数ｌｏｇ（ｘ）の値を算出する。級数演算項の値の算出、定数項の値の算出および対数関数ｌｏｇ（ｘ）の値の算出は、図示しない浮動小数点演算器等により実行される。
【００１４】
以上、図１に示す実施形態では、第１の記憶部１および第２の記憶部２を参照することで、複数の命令を実行することなく、第１の係数および第２の係数を算出することができる。この結果、級数演算を用いた対数関数ｌｏｇ（ｘ）の演算を従来に比べて高速に実行することができる。
【００１５】
図２は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図２に示す演算処理装置１００Ａは、メインメモリ２００とともに情報処理装置３００Ａに搭載される。演算処理装置１００Ａは、データキャッシュ１２、リネーミングレジスタ１４、レジスタファイル１６、マルチプレクサ１８、２０、２２、倍精度の浮動小数点演算器２４、倍精度の係数演算器２６およびマルチプレクサ２８を有する。マルチプレクサ２８は、選択部の一例である。浮動小数点演算器２４は、浮動小数点積和演算器３０を有し、係数演算器２６は、Ｔｌｏｇテーブル３２およびＴｒテーブル３４を有する。Ｔｌｏｇテーブル３２は、第１の記憶部の一例であり、Ｔｒテーブル３４は、第２の記憶部の一例である。また、演算処理装置１００Ａは、命令キャッシュ３６、命令レジスタ３８、命令デコーダ４０およびリザベーションステーション４２を有する。
【００１６】
データキャッシュ１２は、メモリバスＭＢＵＳを介してメインメモリ２００に接続される。データキャッシュ１２は、メインメモリ２００に記憶されたデータのうちの一部を記憶するとともに、記憶しているデータをメインメモリ２００に書き戻す機能を有する。
【００１７】
リネーミングレジスタ１４は、浮動小数点演算器２４または係数演算器２６から出力される浮動小数点データ、またはデータキャッシュ１２から転送される浮動小数点データを一次的に保持する所定数のエントリを有する。リネーミングレジスタ１４の各エントリが保持する浮動小数点データは、リタイア時にレジスタファイル１６に転送される。リネーミングレジスタ１４を介して浮動小数点データ（オペランドデータ）をレジスタファイル１６に転送することで、アウト・オブ・オーダー実行により発生するデータの逆依存とデータの出力依存が解消される。
【００１８】
レジスタファイル１６は、浮動小数点演算器２４または係数演算器２６が処理する浮動小数点データであって、リネーミングレジスタ１４から転送される浮動小数点データを保持する所定数のエントリ（浮動小数点レジスタ）を有する。以下では、浮動小数点データは、単にデータとも称される。
【００１９】
マルチプレクサ１８、２０、２２の各々は、リネーミングレジスタ１４から出力されるデータ、レジスタファイル１６から出力されるデータ、またはバイパスされるデータのいずれかを選択して浮動小数点演算器２４に出力する。なお、マルチプレクサ２０を介して浮動小数点演算器２４に供給されるオペランドデータ中の６ビット［５１：４６］は、係数演算器２６にも出力される。バイパスデータは、データキャッシュ１２およびマルチプレクサ２８等から伝達される。マルチプレクサ１８、２０、２２により、レジスタファイル１６以外からデータをバイパスさせて演算に使用することが可能になり、命令を実行する命令パイプラインにおけるデータハザードを解消することが可能になる。
【００２０】
浮動小数点演算器２４は、演算処理装置１００Ａがフェッチする命令に基づいて演算を実行し、演算の実行結果をマルチプレクサ２８に出力する。例えば、浮動小数点積和演算器３０は、マルチプレクサ１８を介して供給されるソースデータｒｓ１とマルチプレクサ２０を介して供給されるソースデータｒｓ２との積に、マルチプレクサ２２を介して供給されるソースデータｒｓ３を加算する積和演算を実行する。
【００２１】
係数演算器２６は、対数関数の演算に使用される補助命令ｆｌｏｇａｄを演算処理装置１００Ａが実行する場合に動作し、ソースデータｒｓ２のビット［５１：４６］を用いてＴｌｏｇテーブル３２を参照し、６４ビットの浮動小数点データ［６３：０］を得る。ソースデータｒｓ２のビット［５１：４６］は、補助命令ｆｌｏｇａｄのオペランドデータの一部のビット群である。係数演算器２６は、Ｔｌｏｇテーブル３２から出力される浮動小数点データ［６３：０］をマルチプレクサ２８に出力する。Ｔｌｏｇテーブル３２から出力される浮動小数点データ［６３：０］は、対数関数ｌｏｇ（ｘ）をテーラー級数演算項とテーラー級数演算項に対する複数の係数項とに分解した場合における複数の係数項のいずれかに含まれる係数の値に使用される。対数関数ｌｏｇ（ｘ）をテーラー級数演算項とテーラー級数演算に対する複数の係数項とに分解した式は、後述する式（２）の６行目および７行目に示される。
【００２２】
また、係数演算器２６は、対数関数の演算に使用される補助命令ｆｒａｄ１を演算処理装置１００Ａが実行する場合に動作し、ソースデータｒｓ２のビット［５１：４６］を用いてＴｒテーブル３４を参照し、６４ビットの浮動小数点データ［６３：０］を得る。ソースデータｒｓ２のビット［５１：４６］は、補助命令ｆｒａｄ１のオペランドデータの一部のビット群である。係数演算器２６は、Ｔｒテーブル３４から出力される浮動小数点データ［６３：０］をマルチプレクサ２８に出力する。Ｔｒテーブル３４から出力される浮動小数点データ［６３：０］は、対数関数ｌｏｇ（ｘ）をテーラー級数演算項とテーラー級数演算項に対する複数の係数項とに分解した場合におけるテーラー級数演算項に含まれる複数の係数のいずれかの値に使用される。
【００２３】
このように、係数演算器２６は、対数関数ｌｏｇ（ｘ）をテーラー級数演算項とテーラー級数演算項に対する係数項とに分解した場合において、係数を求めるための係数算出処理を実行する。なお、補助命令ｆｌｏｇａｄ、ｆｒａｄ１は、演算処理装置１００Ａによる級数演算を用いた対数関数の演算を従来に比べて高速に実行するために設けられる。Ｔｌｏｇテーブル３２およびＴｒテーブル３４の例は、図４に示される。補助命令ｆｌｏｇａｄ、ｆｒａｄ１の例は、図５で説明される。
【００２４】
マルチプレクサ２８は、リザベーションステーション４２から出力される２ビットの選択信号ＳＥＬ［１：０］に従って、浮動小数点演算器２４の出力、Ｔｌｏｇテーブル３２の出力またはＴｒテーブル３４の出力のいずれかを選択して出力する。選択信号ＳＥＬが”１”に設定された場合、マルチプレクサ２８は、Ｔｌｏｇテーブル３２の出力を選択して出力する。選択信号ＳＥＬが”２”に設定された場合、マルチプレクサ２８は、Ｔｒテーブル３４の出力を選択して出力する。一方、選択信号ＳＥＬが”０”に設定された場合、マルチプレクサ２８は、浮動小数点演算器２４の出力を選択して出力する。なお、選択信号ＳＥＬは”３”に設定されない。
【００２５】
命令キャッシュ３６は、メモリバスＭＢＵＳを介してメインメモリ２００に接続される。命令キャッシュ３６は、メインメモリ２００に記憶された命令のうちの一部を記憶する。命令レジスタ３８は、命令キャッシュ３６からフェッチされた命令を順次保持する。命令デコーダ４０は、命令レジスタ３８が保持する命令を順次デコードする。なお、命令デコーダ４０は、演算命令およびデータ転送命令等をデコードする機能に加えて、補助命令ｆｌｏｇａｄ、ｆｒａｄ１をデコードする機能を有する。
【００２６】
リザベーションステーション４２は、命令デコーダ４０がデコードした命令を蓄積し、蓄積した命令の依存関係を判定する。そして、リザベーションステーション４２は、依存関係の判定結果に基づいて実行する命令を選択し、命令を実行するための制御情報を、リネーミングレジスタ１４、レジスタファイル１６、浮動小数点演算器２４および係数演算器２６等に出力する。リザベーションステーション４２が出力する制御情報は、レジスタの番号および選択信号ＳＥＬ等を含む。なお、選択信号ＳＥＬ［１：０］を生成するための情報は、命令デコーダ４０によって生成され、演算命令等に含まれるレジスタの番号などともに、命令の実行に使用する資源が使用可能になる命令ディスパッチ時に、リザベーションステーション４２に登録される。
【００２７】
なお、係数演算器２６は、ソースデータｒｓ１のビット［５１：４６］またはソースデータｒｓ３のビット［５１：４６］をＴｌｏｇテーブル３２またはＴｒテーブル３４に与えて、浮動小数点データ［６３：０］を得てもよい。
【００２８】
図３は、ＩＥＥＥ（The Institute of Electrical and Electronics Engineers）７５４（浮動小数点数演算標準）による倍精度浮動小数点数のデータ形式を示す。ＩＥＥＥ７５４による倍精度浮動小数点数のデータ形式では、浮動小数点数は、符号部ｓに格納される１ビットの値と、指数部ｅに格納される１１ビットの値と、仮数部ｆに格納される５２ビットの値とにより表現される。符号ｓは、”０”の場合に正を示し、”１”の場合に負を示す。指数ｅは、実際の値に１０２３が足されたバイアスされた値である。仮数ｆは、整数部分の”１”が省略された小数点以下の部分であり、正規化された１以上２未満の値である。ＩＥＥＥ７５４による倍精度浮動小数点数のデータ形式で表される値ｘは、式（１）で示される。
【００２９】
【数１】
0006497250.tif 000002
【００３０】
式（２）は、対数関数ｌｏｇ（ｘ）をテーラー級数演算項とテーラー級数演算項に対する係数項とに分解する例を示す。式（２）において、対数の底は”ｅ（ネイピア数）”である。
【００３１】
【数２】
0006497250.tif 000003
【００３２】
値ｘがＩＥＥＥ７５４による倍精度浮動小数点数のデータ形式で表される場合、ｌｏｇ（ｘ）は、式（２）の１行目により示される。ｌｏｇ（ｘ）において、真数ｘは常に正値であるため、式（１）の１行目は、式（２）の２行目に変形される。式（２）の３行目は、式（２）の２行目の対数を和の形式で表し、第１項の真数の指数部分を対数の定数倍として表したものである。
【００３３】
式（２）の４行目は、式（２）の３行目の第２項の分母と分子に”１＋ｆ［５１：４６］／２＾６”（符号＾はべき乗を示す）を乗じ、対数を和の形式で表したものである。”ｆ［５１：４６］”において、かぎ括弧内の数字は、仮数部ｆのビット番号を示す。ここで、”ｆ／２＾５２”は、式（３）により示されるため、式（２）の４行目の”ｆ／２＾５２”を式（３）の右辺で置き換えると、式（２）の５行目になる。さらに、式（２）の５行目の第３項を変形すると、式（２）の６行目になる。
【００３４】
【数３】
0006497250.tif 000004
【００３５】
式（２）の６行目の第３項において、”ｆ［４５：０］／２＾５２／（１＋ｆ［５１：４６］／２＾６）”を”ｔ”と置くと、式（２）の７行目になる。式（２）の７行目において、第３項は、テーラー級数演算項を示し、第１項および第２項は、テーラー級数演算に対する係数項を示す。第１項の”（ｅ−１０２３）・ｌｏｇ（２）”は、浮動小数点積和演算器３６により算出可能である。”ｌｏｇ（２）”の値は、メインメモリ２００等に予め格納されており、レジスタにロードすることで使用される。
【００３６】
６ビットのｆ［５１：４６］は、６４通りの値を取り得るため、式（２）の７行目の第２項の”ｌｏｇ（１＋ｆ［５１：４６］／２＾６）”は、６４通りの値を取り得る。同様に、式（２）の６行目の第３項の”１／（１＋ｆ［５１：４６］／２＾６）”は、６４通りの値を取り得る。”１／（１＋ｆ［５１：４６］／２＾６）”は、テーラー級数演算項に含まれる係数の１つである。そこで、演算処理装置１００Ａは、”ｌｏｇ（１＋ｆ［５１：４６］／２＾６）”をＴｌｏｇテーブル３２を参照することで算出し、”１／（１＋ｆ［５１：４６］／２＾６）”をＴｒテーブル３４を参照することで算出する。
【００３７】
係数”ｌｏｇ（１＋ｆ［５１：４６］／２＾６）”は、式（４）に示すように、Ｔｌｏｇテーブル３２の参照により値が算出される関数Ｔｌｏｇにより表され、関数Ｔｌｏｇは、補助命令ｆｌｏｇａｄを実行することで算出される。式（４）中の”ｉ”は、”０”から”６３”までの整数のいずれかであり、ビット値ｆ［５１：４６］を示す。演算処理装置１００Ａは、補助命令ｆｌｏｇａｄをフェッチしたことに基づいて仮数部ｆ［５１：４６］をＴｌｏｇテーブル３２に入力し、Ｔｌｏｇテーブル３２から出力される値を関数Ｔｌｏｇの値として算出する。
【００３８】
【数４】
0006497250.tif 000005
【００３９】
また、係数”１／（１＋ｆ［５１：４６］／２＾６）”は、式（５）に示すように、Ｔｒテーブル３４の参照により値が算出される関数Ｔｒ［ｉ］により表され、関数Ｔｒ［ｉ］は、補助命令ｆｒａｄ１を実行することで算出される。”ｉ”は、”０”から”６３”までの整数のいずれかであり、ビット値ｆ［５１：４６］を示す。演算処理装置１００Ａは、補助命令ｆｒａｄ１をフェッチしたことに基づいて仮数部ｆ［５１：４６］をＴｒテーブル３４に入力し、Ｔｒテーブル３４から読み出される値を関数Ｔｒの値として出力する。
【００４０】
【数５】
0006497250.tif 000006
【００４１】
式（５）より、式（２）中の「ｔ」（すなわち、”ｆ［４５：０］／２＾５２／（１＋ｆ［５１：４６］／２＾６０”）は、式（６）により示される。ここで、”ｆ［４５：０］”は、”０”から”２＾４６−１”の値を取り得るため、”ｆ［４５：０］／２＾５２”の最大値は、”１／２＾６”より小さくなる。また、”１／（１＋ｆ［５１：４６］／２＾６）”（すなわち、式（５）のＴｒ１［ｆ［５１：４６］］）は、０．５より大きく１以下の値を取り得るため、”１／（１＋ｆ［５１：４６］／２＾５２）”の最大値は”１”である。したがって、”ｔ”は”１／２＾６”より小さくなる。”ｔ＜＜１”であるため、式（２）の７行目の”ｌｏｇ（１＋ｔ）”は、有限の次数で所望の精度が得られ、テーラー級数演算で計算することが可能となる。例えば、３次の項まで用いてテーラー級数演算を実行する場合、”１／２＾１８”の精度を得ることが可能である。
【００４２】
【数６】
0006497250.tif 000007
【００４３】
式（７）は、対数関数”ｌｏｇ（１＋ｔ）”のテーラー級数展開を示す。
【００４４】
【数７】
0006497250.tif 000008
【００４５】
式（７）中の”ｎ”は、１以上の整数であり、演算に要求される精度に応じて設定される。式（７）中の”ｔ”は、式（２）の６行目の第３項において、”ｆ［４５：０］／２＾５２”を浮動小数点演算器２４により演算し、”１／（１＋ｆ［５１：４６］／２＾６）”をＴｒテーブル３４により算出することで求めることができる。求めた”ｔ”を用いて浮動小数点演算器２４により式（７）の演算を実行することで、”ｌｏｇ（１＋ｔ）”を求めることができる。
【００４６】
また、式（２）の７行目の第１項は浮動小数点演算器２４により算出することができる。なお、ｌｏｇ（２）の値は、演算を実行する前に定数としてレジスタ等に保持される。式（２）の７行目の第２項は、Ｔｌｏｇテーブル３２を参照することで算出される。そして、式（７）により求めた”ｌｏｇ（１＋ｔ）”を式（２）の７行目に代入することで、対数ｌｏｇ（ｘ）を求めることができる。なお、上述したように、”ｔ”は”１／２＾６”より小さくなるため、式（７）において、”ｎ”をある有限の次数で打ち切ったときにも、算出される対数関数ｌｏｂ（ｘ）の値は、十分な精度を有する。
【００４７】
以上をまとめると、式（２）の７行目の第１項の”（ｅ−１０２３）・ｌｏｇ（２）”は、浮動小数点演算器２４を用いて算出される。式（２）の７行目の第２項の”ｌｏｇ（１＋ｆ［５１：４６］／２＾６）”は、補助命令ｆｌｏｇａｄに基づいて、Ｔｌｏｇテーブル３２を参照することで算出される。式（２）の６行目の第３項の”ｆ［４５：０］／２＾５２”は、浮動小数点演算器２４を用いて算出される。式（２）の６行目の第３項の”１／（１＋ｆ［５１：４６］／２＾６）”は、補助命令ｆｒａｄ１に基づいて、Ｔｒテーブル３４を参照することで算出される。これにより、浮動小数点演算器２４を用いて、式（２）の７行目の第３項の”ｔ”が算出され、式（７）を用いて、”ｌｏｇ（１＋ｔ）”が算出される。そして、浮動小数点演算器２４を用いて、式（２）の７行目の各項が加算されることで、対数関数ｌｏｇ（ｘ）の値が算出される。以下では、補助命令ｆｌｏｇａｄおよび補助命令ｆｒａｄ１は、単に命令ｆｌｏｇａｄ、ｆｒａｄ１とも称される。
【００４８】
図４は、図２に示すＴｌｏｇテーブル３２およびＴｒテーブル３４の一例を示す。Ｔｌｏｇテーブル３２は、ＩＥＥＥ７５４による倍精度浮動小数点数のデータ形式にしたがって、式（４）に示す”ｌｏｇ（１＋ｆ［５１：４６］／２＾６）”の値が格納された６４個のエントリを有する。係数演算器２６は、マルチプレクサ２０を介して供給される値ｆ［５１：４６］をＴｌｏｇテーブル３２のデコーダに与える。Ｔｌｏｇテーブル３２は、デコーダで受けた値ｆ［５１：４６］により表されるビット値ｉ（０−６３のいずれか）に対応するエントリに格納された倍精度浮動小数点データ［６３：０］を読み出す。例えば、値ｆ［５１：４６］が”２”の場合、符号ｓ（＝０）と、指数部の値ｅ（＝ｅａ２）と、仮数部の値ｆ（＝ｆａ２）とが、Ｔｌｏｇテーブル３２から同時に出力される。そして、係数演算器２６は、Ｔｌｏｇテーブル３２から読み出した倍精度浮動小数点データ［６３：０］をマルチプレクサ２８に出力する。
【００４９】
Ｔｒテーブル３４は、ＩＥＥＥ７５４による倍精度浮動小数点数のデータ形式にしたがって、式（５）に示す「１／（１＋ｆ［５１：４６］／２＾６）」の値が格納された６４個のエントリを有する。係数演算器２６は、マルチプレクサ２０を介して供給される値ｆ［５１：４６］をＴｒテーブル３２のデコーダに与える。Ｔｒテーブル３４は、デコーダで受けた値ｆ［５１：４６］により表されるビット値ｉ（０−６３のいずれか）に対応するエントリに格納された倍精度浮動小数点データ［６３：０］を読み出す。
【００５０】
例えば、値ｆ［５１：４６］が”１”の場合、符号ｓ（＝０）と、指数部の値ｅ（＝ｅｂ１）と、仮数部の値ｆ（＝ｆｂ１）とが、Ｔｒテーブル３４から同時に出力される。そして、係数演算器２６は、Ｔｒテーブル３４から読み出した倍精度浮動小数点データ［６３：０］をマルチプレクサ２８に出力する。
【００５１】
Ｔｌｏｇテーブル３２およびＴｒテーブル３４に６４ビットの倍精度浮動小数点データを格納することで、例えば、符号ｓと、Ｔｌｏｇテーブル３２から出力される指数ｅ、仮数ｆとを連結することを省略することができる。また、Ｔｌｏｇテーブル３２およびＴｒテーブル３４は、共通の６ビットの値ｆ［５１：４６］に基づいて６４個のエントリのいずれかを選択する。すなわち、マルチプレクサ２０は、共通の６ビットのデータをＴｌｏｇテーブル３２とＴｒテーブル３４とに供給する。この結果、互いに異なる６ビットの値がＴｌｏｇテーブル３２とＴｒテーブル３４とに供給される場合に比べて、マルチプレクサ２０と係数演算器２６との間の配線の数を削減することができ、演算処理装置１００Ａのチップサイズの削減に寄与することができる。
【００５２】
なお、図４では、Ｔｌｏｇテーブル３２およびＴｒテーブル３４のそれぞれは、６ビットの値ｆ［５１：４６］に基づいて６４個のエントリのいずれかを選択する。しかしながら、Ｔｌｏｇテーブル３２およびＴｒテーブル３４のそれぞれは、ｎビット（ｎは２ビット以上の整数）の値ｆ［ｍ：ｍ−（ｎ−１）］（ｍはｎ＋１以上の整数）基づいて、２のｎ乗個のエントリのいずれかを選択してもよい。この場合、Ｔｌｏｇテーブル３２には、”ｌｏｇ（１＋ｉ／２＾ｎ）”（ｉは０以上２＾ｎ−１以下の自然数）の値が格納され、Ｔｒテーブル３４には、”１／（１＋ｉ／２＾ｎ）”の値が格納される。
【００５３】
例えば、”ｎ”、”ｍ”の値（Ｔｌｏｇテーブル３２およびＴｒテーブル３４の大きさ）は、テーブルのエントリ数を増加し、級数演算の項数を削減する場合に、図４に対して変更される。また、”ｎ”、”ｍ”の値は、単精度浮動小数点数または四倍精度浮動小数点数のデータ形式で表されるデータを用いてｌｏｇ（ｘ）を算出する場合に、図４に対して変更される。すなわち、図２に示す演算処理装置１００Ａは、単精度浮動小数点数または四倍精度浮動小数点数のデータ形式で表されるデータの演算を実行してもよい。
【００５４】
図５は、式（４）および式（５）に示す係数の値を算出する命令の一例を示す。図５は、アセンブリ言語により記述された命令を示す。図２に示す係数演算器２６を用いる場合、式（４）に示す係数の値は、１つの命令ｆｌｏｇａｄにより算出することができる。命令ｆｌｏｇａｄにおけるオペランドデータ”ｘ”は、式（２）に示すｌｏｇ（ｘ）の真数ｘ（倍精度浮動小数点データ）であり、所定のレジスタに格納される。命令ｆｌｏｇａｄの演算結果は、便宜的にＴｌｏｇと称するレジスタに格納される。
【００５５】
同様に、図２に示す係数演算器２６を用いる場合、式（５）に示す係数の値は、１つの命令ｆｒａｄ１により算出することができる。命令ｆｒａｄ１におけるオペランドデータ”ｘ”は、式（２）に示すｌｏｇ（ｘ）の真数（倍精度浮動小数点データ）であり、所定のレジスタに格納される。命令ｆｒａｄ１の演算結果は、便宜的にＴｒ１と称するレジスタに格納される。
【００５６】
一方、係数演算器２６を用いない場合、式（４）および式（５）にそれぞれ示す係数は、５つの命令を実行することで算出される。係数演算器２６を用いずに式（４）および式（５）に示す係数を算出する場合、図３に示すＴｌｏｇテーブル３２およびＴｒテーブル３４と同様の構成を有するＴｌｏｇテーブルおよびＴｒテーブルがメモリ空間上に割り当てられる。
【００５７】
係数演算器２６を用いずに式（４）に示す係数を求める場合、まず、浮動小数点数のストア命令ｓｔｄｆにより、式（２）に示すｌｏｇ（ｘ）の真数ｘ（倍精度浮動小数点レジスタに保持）が、［］で示される所定のメモリアドレスの記憶領域に格納される。次に、固定小数点のロード命令ｌｄｘにより、［］で示す所定のメモリアドレスに保持される真数ｘが、便宜的にＸｉと称する固定小数点レジスタにロードされる。
【００５８】
次に、固定小数点レジスタＸｉにロードされた真数ｘから倍精度浮動小数点数のデータ形式の仮数部ｆの最上位側の６ビット［５１：４６］を取り出すために、シフト命令ｓｒｌｘが実行される。シフト命令ｓｒｌｘでは、固定小数点レジスタＸｉに保持されたデータが下位側に４３ビットシフトされ（”４６−３”）、シフトにより得られた値が、便宜的にＴｌｏｇｅと称するレジスタに格納される。
【００５９】
シフト命令ｓｒｌｘは、メモリ空間上に割り当てられたＴｌｏｇテーブルの先頭アドレスからのオフセット値を算出するために実行される。Ｔｌｏｇテーブルの各エントリは、６４ビット（８バイト）の幅を有するため、オフセット値は８バイト置きの値を取る。このため、シフト命令ｓｒｌｘでは、８バイト分にアドレス値に相当する３ビットを４６ビットから引いたビット数”４６−３”がシフトされる。
【００６０】
次に、着目する６ビット（ビット８からビット３）以外のビット値をクリアするため、論理積命令ａｎｄが実行される。論理積命令ａｎｄでは、レジスタＴｌｏｇｅが保持する値と、１６進数の”３ｆ”を上位側に３ビットシフトした値（すなわち、１６進数で”１ｆ８”）との論理積が演算され、演算結果が、便宜的にＴｌｏｇｏと称するレジスタに格納される。レジスタＴｌｏｇｏに格納された値は、メモリ空間上に割り当てられたＴｌｏｇテーブルの先頭アドレスからのオフセット値を示す。そして、浮動小数点のロード命令ｌｄｄｆが実行され、メモリ空間上に割り当てられたＴｌｏｇテーブルのエントリのいずれかが保持する係数の値が、便宜的にＴｌｏｇと称する浮動小数点レジスタに格納される。ロード命令ｌｄｄｆでは、レジスタＴｌｏｇｏに格納されたオフセット値が、Ｔｌｏｇテーブルの先頭アドレスであるベースアドレス（便宜的にＴｌｏｇｂと称するレジスタに格納）に加えられ、読み出す係数の値を保持しているエントリのアドレスが算出される。
【００６１】
係数演算器２６を用いずに式（５）に示す係数を求める場合、使用するレジスタと、係数を読み出すテーブルが異なることを除き、係数演算器２６を用いずに式（４）に示す係数を求める場合と同様の命令が実行される。係数演算器２６を用いずに式（５）に示す係数を求める場合、メモリ空間上に割り当てられたＴｒテーブルが使用される。
【００６２】
図５に示すように、係数演算器２６を用いずに従来の命令を複数組み合わせて係数の値を算出する場合、論理演算およびシフト演算等の固定小数点演算器を使用した演算処理が実行される。このため、演算命令だけでなく、浮動小数点レジスタと固定小数点レジスタとの間でデータを転送するストア命令およびロード命令も実行される。対数関数の演算を実行するために複数の命令が実行されるため、演算処理装置１００Ａの処理性能の低下を招くおそれがある。これに対して、係数演算器２６を用いて係数を算出する場合、浮動小数点演算器２４を用いて係数を算出する場合に比べて、実行する命令数を４つ減らすことができる。この結果、対数関数の演算を実行するために演算処理装置１００Ａの処理性能が低下することを抑止することができる。
【００６３】
図６は、図２に示す演算処理装置１００Ａの動作の一例を示す。図６は、演算処理装置１００Ａが浮動小数点数の演算命令または係数の命令ｆｌｏｇａｄ、ｆｒａｄ１をフェッチした場合の動作を示す。
【００６４】
まず、ステップＳ１０において、演算処理装置１００Ａは、浮動小数点数の演算命令を実行する場合、動作をステップＳ１２に移行し、命令ｆｌｏｇａｄ、ｆｒａｄ１を実行する場合、動作をステップＳ１６に移行する。
【００６５】
ステップＳ１２において、浮動小数点演算器２４は、マルチプレクサ１８、２０、２２から受ける浮動小数点データに基づいて演算を実行し、演算結果をマルチプレクサ２８に出力する。次に、ステップＳ１４において、マルチプレクサ２８は、浮動小数点演算器２４の出力を選択し、浮動小数点演算器２４による演算結果を出力する。
【００６６】
一方、ステップＳ１６において、演算処理装置１００Ａは、命令ｆｌｏｇａｄを実行する場合、動作をステップＳ１８に移行し、命令ｆｒａｄ１を実行する場合、動作をステップＳ２２に移行する。
【００６７】
ステップＳ１８において、係数演算器２６は、マルチプレクサ２０から受ける浮動小数点データのうち仮数部ｆの上位ビット［５１：４６］をＴｌｏｇテーブル３２に与える。そして、係数演算器２６は、Ｔｌｏｇテーブル３２から式（４）に示す係数の値を示す浮動小数点データ［６３：０］を読み出し、読み出した値をマルチプレクサ２８に出力する。次に、ステップＳ２０において、マルチプレクサ２８は、Ｔｌｏｇテーブル３２の出力を選択し、係数演算器２６による係数の算出結果を出力する。
【００６８】
ステップＳ２２において、係数演算器２６は、マルチプレクサ２０から受ける浮動小数点データのうち仮数部ｆの上位ビット［５１：４６］をＴｒテーブル３４に与える。そして、係数演算器２６は、Ｔｒテーブル３４から式（５）に示す係数の値を示す浮動小数点データ［６３：０］を読み出し、読み出した値をマルチプレクサ２８に出力する。次に、ステップＳ２４において、マルチプレクサ２８は、Ｔｒテーブル３４の出力を選択し、係数演算器２６による係数の算出結果を出力する。
【００６９】
以上、図２から図６に示す実施形態においても、図１に示す実施形態と同様に、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。すなわち、式（４）に示す係数の値を、１つの命令ｆｌｏｇａｄを実行することで算出することができ、式（５）に示す係数の値を、１つの命令ｌｒａｄ１を実行することで算出することができる。この結果、対数関数の演算を従来に比べて少ない命令数で実行することができ、対数関数の演算を実行するために演算処理装置１００Ａの処理性能が低下することを抑止することができる。
【００７０】
さらに、図２から図６に示す実施形態では、Ｔｌｏｇテーブル３２およびＴｒテーブル３４に共通の６ビットの値ｆ［５１：４６］が、マルチプレクサ２０から係数演算器２６に供給される。このため、互いに異なる６ビットの値がＴｌｏｇテーブル３２とＴｒテーブル３４とに供給される場合に比べて、マルチプレクサ２０と係数演算器２６との間の配線の数を削減することができ、演算処理装置１００Ａのチップサイズの削減に寄与することができる。また、Ｔｌｏｇテーブル３２およびＴｒテーブル３４に倍精度浮動小数点データの６４ビット全てを格納することで、例えば、符号ｓと、Ｔｌｏｇテーブル３２から出力される指数ｅ、仮数ｆとを連結することを省略することができる。
【００７１】
図７は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図２に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００７２】
図７に示す演算処理装置１００Ｂは、メインメモリ２００とともに情報処理装置３００Ｂに搭載される。演算処理装置１００Ｂは、図２に示す係数演算器２６およびマルチプレクサ２８の代わりに、倍精度の係数演算器２６Ｂおよびマルチプレクサ２８Ｂを有する。また、演算処理装置１００Ｂは、比較器４４Ｂおよびマルチプレクサ４６Ｂを有する。演算処理装置１００Ｂにおいて、係数演算器２６Ｂ、マルチプレクサ２８Ｂ、比較器４４Ｂおよびマルチプレクサ４６Ｂを除く構成は、図２に示す演算処理装置１００Ａと同様である。
【００７３】
係数演算器２６Ｂは、図２に示す係数演算器２６にビット連結部４８Ｂを追加している。ビット連結部４８Ｂは、対数関数の演算に使用される補助命令ｆｒａｄ２を演算処理装置１００Ｂが実行する場合に係数演算器２６Ｂに供給されるビット［４５：０］にビット［６３：４６］を連結し、６４ビットの浮動小数点データを生成する。ここで、ビット連結部４８Ｂは、ビット［４５：０］に、ビット［６３］＝０、ビット［６２：５２］＝３ｆｆ（１６進数）およびビット［５１：４６］＝０を連結する。
【００７４】
比較器４４Ｂは、選択信号ＳＥＬが”３”の場合、図７におけるマルチプレクサ４６Ｂの右側の入力を選択する選択信号をマルチプレクサ４６Ｂに出力する。また、比較器４４Ｂは、選択信号ＳＥＬが”３”以外の場合、図７におけるマルチプレクサ４６Ｂの左側の入力を選択する選択信号をマルチプレクサ４６Ｂに出力する。マルチプレクサ４６Ｂは、選択信号ＳＥＬが”３”の場合、”１．０”、ビット連結部４８Ｂから出力されるビット値［６３：０］、および”−１．０”を、それぞれソースデータｒｓ１、ｒｓ２、ｒｓ３として浮動小数点演算器２４に出力する。ここで、”１．０”、ビット連結部４８Ｂから出力されるビット値［６３：０］、および”−１．０”は、倍精度浮動小数点データである。これにより、選択信号ＳＥＬが”３”の場合、浮動小数点演算器２４は、ビット連結部４８Ｂから出力されるビット値［６３：０］から”１．０”を減ずる演算を実行する。一方、マルチプレクサ４６Ｂは、選択信号ＳＥＬが”３”以外の場合、マルチプレクサ１８、２０、２２から出力されるデータを、それぞれソースデータｒｓ１、ｒｓ２、ｒｓ３として浮動小数点演算器２４に出力する。
【００７５】
選択信号ＳＥＬが”３”の場合、ビット連結部４８Ｂ、比較器４４Ｂ、マルチプレクサ４６Ｂおよび浮動小数点演算器２４は、式（６）に示す”ｆ［４５：０］／２＾５２”を算出するために機能する。倍精度浮動小数点データのうち、小数点以下のデータの一部である仮数の下位側の値ｆ［４５：０］を取り出す場合、符号ｓは”０”に設定され、指数部の値ｅは”０乗”を示す”３ｆｆ”に設定され、仮数の上位側の値ｆ［５１：４６］は”０”に設定される。さらに、倍精度浮動小数点データの仮数ｆは、整数部の暗黙の”１”が省かれているため、浮動小数点演算器２４は、ビット連結部４８Ｂからの浮動小数点データ［６３：０］に”１．０”を乗じた値から”１．０”を減じて、暗黙の”１”を取り除く。これにより、式（６）に示す”ｆ［４５：０］／２＾５２”により示される値が算出される。
【００７６】
ビット連結部４８Ｂ、比較器４４Ｂおよびマルチプレクサ４６Ｂを設けることで、式（６）に示す”ｆ［４５：０］／２＾５２”の値を１つの命令ｆｒａｄ２により算出することができる。命令ｆｒａｄ２のオペランドは、図５に示す命令ｆｒａｄ１のオペランドと同様に、”ｘ，Ｔｒ２”である。”ｘ”は、式（２）に示すｌｏｇ（ｘ）の真数ｘ（倍精度浮動小数点データ）であり、所定のレジスタに格納される。”Ｔｒ２”は、命令ｆｒａｄ２の演算結果が格納されるレジスタである。ビット連結部４８Ｂ、比較器４４Ｂ、マルチプレクサ４６Ｂおよび浮動小数点演算器２４は、式（６）に示す”ｆ［４５：０］／２＾５２”を、命令ｆｒａｄ２のオペランドデータｘ中のビット群［４５：０］の値に応じて算出する係数算出部の一例である。
【００７７】
これに対して、ビット連結部４８Ｂ、比較器４４Ｂおよびマルチプレクサ４６Ｂを設けない場合、”ｆ［４５：０］／２＾５２”は、論理積演算と論理和演算により算出される。この場合、”ｆ［４５：０］／２＾５２”は、図５に示す浮動小数点演算器２４および固定小数点演算器を用いる場合の命令と同様に、複数の命令を用いて算出される。
【００７８】
マルチプレクサ２８Ｂは、選択信号ＳＥＬに従って、浮動小数点演算器２４の出力、Ｔｌｏｇテーブル３２の出力またはＴｒテーブル３４の出力のいずれかを選択して出力する。選択信号ＳＥＬは、演算処理装置１００Ａが補助命令ｆｒａｄ２の実行を決定したことに基づいて、”３”に設定される。マルチプレクサ２８Ｂは、選択信号ＳＥＬが”０”または”３”の場合、浮動小数点演算器２４の出力を選択する。マルチプレクサ２８Ｂの動作は、選択信号ＳＥＬが”３”の場合に浮動小数点演算器２４の出力を選択することを除き、図２に示すマルチプレクサ２８の動作と同様である。
【００７９】
なお、比較器４４Ｂおよびマルチプレクサ４６Ｂを設ける代わりに、ビット連結部４８Ｂの出力に接続される倍精度浮動小数点データ用の減算器を設けてもよい。この場合、ビット連結部４８Ｂから出力される浮動小数点データ［６３：０］から”１．０”を減じて暗黙の”１”を取り除く演算は、減算器により実行される。そして、マルチプレクサ２８Ｂは、選択信号ＳＥＬが”３”の場合、減算器の出力を選択する。
【００８０】
以上、図７に示す実施形態においても、図１から図６に示す実施形態と同様に、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。さらに、図７に示す実施形態では、１つの命令ｆｒａｄ２に基づいて、ビット連結部４８Ｂ、比較器４４Ｂ、マルチプレクサ４６Ｂおよび浮動小数点演算器２４が、式（６）に示す”ｆ［４５：０］／２＾５２”を算出する。これにより、級数演算を用いた対数関数の演算をさらに高速に実行することができる。この結果、対数関数の演算を従来に比べて少ない命令数で実行することができ、対数関数の演算を実行するために演算処理装置１００Ｂの処理性能が低下することを抑止することができる。
【００８１】
図８は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図２に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００８２】
図８に示す演算処理装置１００Ｃは、メインメモリ２００とともに情報処理装置３００Ｃに搭載される。演算処理装置１００Ｃは、図２に示す係数演算器２６の代わりに、係数演算器２６Ｃを有する。演算処理装置１００Ｃにおいて、係数演算器２６Ｃを除く構成は、図２に示す演算処理装置１００Ａと同様である。
【００８３】
係数演算器２６Ｃは、係数テーブル５０Ｃを有する。係数テーブル５０Ｃは、図４に示すＴｌｏｇテーブル３２に格納された情報を含むＴｌｏｇ部５０１と、図４に示すＴｒテーブル３４に格納された情報を含むＴｒ部５０２と、Ｔｌｏｇ部５０１およびＴｒ部５０２に共通のデコーダ５０３とを有する。Ｔｌｏｇ部５０１は、第１の記憶部の一例であり、Ｔｒ部５０２は、第２の記憶部の一例である。係数テーブル５０Ｃは、計数記憶部の一例である。
【００８４】
デコーダ５０３は、マルチプレクサ２０からのビット群［５１：４６］の値に応じて、Ｔｌｏｇ部５０１に含まれる６４個のエントリのいずれかと、Ｔｒ部５０２に含まれる６４個のエントリのいずれかとを選択する。そして、係数テーブル５０Ｃは、Ｔｌｏｇ部５０１とＴｒ部５０２とのそれぞれから倍精度の浮動小数点データ［６３：０］を出力する。
【００８５】
図２では、係数演算器２６は、Ｔｌｏｇテーブル３２とＴｒテーブル３４とのそれぞれが、ビット群［５１：４６］をデコードするデコーダを有する。これに対して、係数テーブル５０Ｃは、Ｔｌｏｇ部５０１とＴｒ部５０２とに共通に、ビット群［５１：４６］をデコードするデコーダ５０３を有する。このため、係数テーブル５０Ｃの回路規模を、図２に示すＴｌｏｇテーブル３２とＴｒテーブル３４との回路規模に比べて小さくすることができる。
【００８６】
以上、図８に示す実施形態においても、図１から図７に示す実施形態と同様に、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。さらに、図８に示す実施形態では、係数テーブル５０Ｃの回路規模を、図２に示すＴｌｏｇテーブル３２とＴｒテーブル３４との回路規模に比べて小さくすることができる。なお、図７に示す係数演算器２６Ｂは、Ｔｌｏｇテーブル３２およびＴｒテーブル３４の代わりに、図８に示す係数テーブル５０Ｃを有してもよい。
【００８７】
図９は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図２に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００８８】
図９に示す演算処理装置１００Ｄは、メインメモリ２００とともに情報処理装置３００Ｄに搭載される。演算処理装置１００Ｄは、１つの命令に基づいて演算を同時に実行するＳＩＭＤ（Single Instruction Multiple Data）演算器ＳＣ（ＳＣ０、ＳＣ１）を有する。データキャッシュ１２、命令キャッシュ３６、命令レジスタ３８、命令デコーダ４０およびリザベーションステーション４２は、ＳＩＭＤ演算器ＳＣ０、ＳＣ１に共通に設けられる。各ＳＩＭＤ演算器ＳＣ０、ＳＣ１は、図２に示すリネーミングレジスタ１４、レジスタファイル１６、マルチプレクサ１８、２０、２２、浮動小数点演算器２４、係数演算器２６およびマルチプレクサ２８を有する。データキャッシュ１２は、ＳＩＭＤ演算器ＳＣ０、ＳＣ１の両方に接続され、リザベーションステーション４２から出力される制御情報（選択信号ＳＥＬ［１：０］を含む）は、ＳＩＭＤ演算器ＳＣ０、ＳＣ１の両方に供給される。
【００８９】
なお、演算処理装置１００Ｄは、４つのＳＩＭＤ演算器ＳＣまたは８つのＳＩＭＤ演算器ＳＣを有してもよい。また、各ＳＩＭＤ演算器ＳＣは、係数演算器２６およびマルチプレクサ２８の代わりに、図７に示す係数演算器２６Ｂおよびマルチプレクサ２８Ｂを有してもよい。この場合、演算処理装置１００Ｄは、図７に示す比較器４４Ｂおよびマルチプレクサ４６Ｂを有する。さらに、各ＳＩＭＤ演算器ＳＣは、係数演算器２６およびマルチプレクサ２８の代わりに、図８に示す係数演算器２６Ｃおよびマルチプレクサ２８Ｃを有してもよい。
【００９０】
以上、図９に示す実施形態においても、図１から図８に示す実施形態と同様の効果を得ることができる。
【００９１】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００９２】
１２…データキャッシュ；１４…リネーミングレジスタ；１６…レジスタファイル；１８、２０、２２…マルチプレクサ；２４…浮動小数点演算器；２６、２６Ｂ、２６Ｃ…係数演算器；２８、２８Ｂ、２８Ｃ…マルチプレクサ；３０…浮動小数点積和演算器；３２…Ｔｌｏｇテーブル；３４…Ｔｒテーブル；３６…命令キャッシュ；３８…命令レジスタ；４０…命令デコーダ；４２…リザベーションステーション；４４Ｂ…比較器；４６Ｂ…マルチプレクサ；４８Ｂ…ビット連結部；５０Ｃ…係数テーブル；１００Ａ、１００Ｂ、１００Ｃ、１００Ｄ…演算処理装置；２００…メインメモリ；３００Ａ、３００Ｂ、３００Ｃ、３００Ｄ…情報処理装置；５０１…Ｔｌｏｇ部；５０２…Ｔｒ部；５０３…デコーダ；ｆｌｏｇａｄ、ｆｒａｄ１…補助命令；ＳＣ０、ＳＣ１…ＳＩＭＤ演算器
【図１】
0006497250.tif 000009
【図２】
0006497250.tif 000010
【図３】
0006497250.tif 000011
【図４】
0006497250.tif 000012
【図５】
0006497250.tif 000013
【図６】
0006497250.tif 000014
【図７】
0006497250.tif 000015
【図８】
0006497250.tif 000016
【図９】
0006497250.tif 000017