JP2017027126A - 演算処理装置および演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP2017027126A
JP2017027126A JP2015141912A JP2015141912A JP2017027126A JP 2017027126 A JP2017027126 A JP 2017027126A JP 2015141912 A JP2015141912 A JP 2015141912A JP 2015141912 A JP2015141912 A JP 2015141912A JP 2017027126 A JP2017027126 A JP 2017027126A
Authority
JP
Japan
Prior art keywords
value
coefficient
instruction
storage unit
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.)
Granted
Application number
JP2015141912A
Other languages
English (en)
Other versions
JP6497250B2 (ja
Inventor
幹雄 本藤
Mikio Hondo
幹雄 本藤
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 JP2015141912A priority Critical patent/JP6497250B2/ja
Priority to US15/204,304 priority patent/US10037188B2/en
Priority to EP16179328.6A priority patent/EP3118737B1/en
Publication of JP2017027126A publication Critical patent/JP2017027126A/ja
Application granted granted Critical
Publication of JP6497250B2 publication Critical patent/JP6497250B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • 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/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/483Indexing scheme relating to group G06F7/483

Landscapes

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

Abstract

【課題】 級数演算を用いた対数関数の演算を従来に比べて高速に実行する。【解決手段】 演算処理装置は、対数関数を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第1の係数の値を、第1の係数の値を算出する第1の命令のオペランドデータ中の第1のビット群の値に応じて記憶する第1の記憶部と、級数演算項に含まれる第2の係数の値を、第2の係数の値を算出する第2の命令のオペランドデータ中の第1のビット群の値に応じて記憶する第2の記憶部と、第1の命令の実行に基づいて、第1の記憶部から読み出される第1の係数の値を選択し、第2の命令の実行に基づいて、第2の記憶部から読み出される第2の係数の値を選択する選択部を有する。【選択図】 図1

Description

本発明は、演算処理装置および演算処理装置の制御方法に関する。
プロセッサ等の演算処理装置において、対数関数を複数の副関数に分解し、各副関数に対応する参照表をパイプラインの各段階において参照することで、対数関数の演算を実行する手法が提案されている(例えば、特許文献1参照)。また、演算処理装置において、指数関数をテーラー級数演算項とテーラー級数演算項に対する係数項とに分解して算出する場合に、テーブルを用いて係数を算出することで、指数関数の演算を実行する手法が提案されている(例えば、特許文献2参照)。
特表2008−502036号公報 国際公開第2013/145276号
例えば、対数関数を、有限の次数で与えられた精度に収束するテーラー級数の演算であるテーラー級数演算項とテーラー級数演算項に対する係数項とに分解することで、テーラー級数演算を用いて対数関数の演算を実行することが可能になる。これにより、テーラー級数演算をある有限な次数で打ち切った場合にも所定の精度が得られる。しかしながら、従来、係数の算出処理は、データ転送命令、ビット演算命令、シフト演算命令等の複数の命令を組み合わせて実行されるため、テーラー級数演算を用いた対数関数の演算は、演算処理装置の処理性能を低下させる要因になっていた。
1つの側面では、本件開示の演算処理装置および演算処理装置の制御方法は、級数演算を用いた対数関数の演算を従来に比べて高速に実行することを目的とする。
一つの観点によれば、演算処理装置は、対数関数を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第1の係数の値を、第1の係数の値を算出する第1の命令のオペランドデータ中の第1のビット群の値に応じて記憶する第1の記憶部と、級数演算項に含まれる第2の係数の値を、第2の係数の値を算出する第2の命令のオペランドデータ中の第1のビット群の値に応じて記憶する第2の記憶部と、第1の命令の実行に基づいて、第1の記憶部から読み出される第1の係数の値を選択し、第2の命令の実行に基づいて、第2の記憶部から読み出される第2の係数の値を選択する選択部を有する。
別の観点によれば、演算処理装置の制御方法は、演算処理装置が有する計数演算器が、対数関数を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第1の係数の値を、第1の係数の値を算出する第1の命令のオペランドデータ中の第1のビット群の値に応じて第1の記憶部から読み出すとともに、級数演算項に含まれる第2の係数の値を、第2の係数の値を算出する第2の命令のオペランドデータ中の第1のビット群の値に応じて第2の記憶部から読み出し、演算処理装置が有する選択部が、第1の命令の実行に基づいて、第1の記憶部から読み出される第1の係数の値を選択し、第2の命令の実行に基づいて、第2の記憶部から読み出される第2の係数の値を選択する。
本件開示の演算処理装置および演算処理装置の制御方法は、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。
演算処理装置および演算処理装置の制御方法の一実施形態を示す図である。 演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。 IEEE754による倍精度浮動小数点数のデータ形式を示す図である。 図2に示すTlogテーブルおよびTrテーブルの一例を示す図である。 式(4)および式(5)に示す係数の値を算出する命令の一例を示す図である。 図2に示す演算処理装置の動作の一例を示す図である。 演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。 演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。 演算処理装置および演算処理装置の制御方法の別の実施形態を示す図である。
以下、図面を用いて実施形態を説明する。
図1は、演算処理装置および演算処理装置の制御方法の一実施形態を示す。図1に示す演算処理装置100は、第1の記憶部1、第2の記憶部2および選択部3を有する。図1に示す演算処理装置100は、情報処理装置300に搭載される。第1の記憶部1は、対数関数log(x)を級数演算項と級数演算項に対する係数項とに分解した場合における係数項に含まれる第1の係数の値を、第1の係数の値を算出する第1の命令flogadのオペランドデータx中の第1のビット群の値に応じて記憶する。このため、演算処理装置100では、データ転送命令、ビット演算命令、シフト演算命令等の複数の命令を実行することなく、第1の命令flogadの実行により第1の記憶部1を参照することで、第1の係数を算出することができる。
第2の記憶部2は、級数演算項に含まれる第2の係数の値を、第2の係数の値を算出する第2の命令frad1のオペランドデータx中の第1のビット群の値に応じて記憶する。このため、演算処理装置100では、データ転送命令、ビット演算命令、シフト演算命令等の複数の命令を実行することなく、第2の命令frad1の実行により第2の記憶部2を参照することで、第2の係数を算出することができる。選択部3は、第1の命令flogadの実行に基づいて、第1の記憶部1から読み出される第1の係数の値を選択し、第2の命令frad1の実行に基づいて、第2の記憶部2から読み出される第2の係数の値を選択する。
例えば、演算処理装置100は、選択部3から出力される第2の係数を対数関数log(1+t)の級数展開式に与え、級数演算項の値を算出する。演算処理装置100は、算出した級数演算項の値と、選択部3から出力される第1の係数とに基づいて、対数関数log(x)の値を算出する。なお、級数演算項に対する係数項が定数項を含む場合、演算処理装置100は、定数項の値を算出し、算出した定数項の値と、級数展開式を用いて算出した級数演算項の値と、選択部3から出力される第1の係数とに基づいて、対数関数log(x)の値を算出する。級数演算項の値の算出、定数項の値の算出および対数関数log(x)の値の算出は、図示しない浮動小数点演算器等により実行される。
以上、図1に示す実施形態では、第1の記憶部1および第2の記憶部2を参照することで、複数の命令を実行することなく、第1の係数および第2の係数を算出することができる。この結果、級数演算を用いた対数関数log(x)の演算を従来に比べて高速に実行することができる。
図2は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図2に示す演算処理装置100Aは、メインメモリ200とともに情報処理装置300Aに搭載される。演算処理装置100Aは、データキャッシュ12、リネーミングレジスタ14、レジスタファイル16、マルチプレクサ18、20、22、倍精度の浮動小数点演算器24、倍精度の係数演算器26およびマルチプレクサ28を有する。マルチプレクサ28は、選択部の一例である。浮動小数点演算器24は、浮動小数点積和演算器30を有し、係数演算器26は、Tlogテーブル32およびTrテーブル34を有する。Tlogテーブル32は、第1の記憶部の一例であり、Trテーブル34は、第2の記憶部の一例である。また、演算処理装置100Aは、命令キャッシュ36、命令レジスタ38、命令デコーダ40およびリザベーションステーション42を有する。
データキャッシュ12は、メモリバスMBUSを介してメインメモリ200に接続される。データキャッシュ12は、メインメモリ200に記憶されたデータのうちの一部を記憶するとともに、記憶しているデータをメインメモリ200に書き戻す機能を有する。
リネーミングレジスタ14は、浮動小数点演算器24または係数演算器26から出力される浮動小数点データ、またはデータキャッシュ12から転送される浮動小数点データを一次的に保持する所定数のエントリを有する。リネーミングレジスタ14の各エントリが保持する浮動小数点データは、リタイア時にレジスタファイル16に転送される。リネーミングレジスタ14を介して浮動小数点データ(オペランドデータ)をレジスタファイル16に転送することで、アウト・オブ・オーダー実行により発生するデータの逆依存とデータの出力依存が解消される。
レジスタファイル16は、浮動小数点演算器24または係数演算器26が処理する浮動小数点データであって、リネーミングレジスタ14から転送される浮動小数点データを保持する所定数のエントリ(浮動小数点レジスタ)を有する。以下では、浮動小数点データは、単にデータとも称される。
マルチプレクサ18、20、22の各々は、リネーミングレジスタ14から出力されるデータ、レジスタファイル16から出力されるデータ、またはバイパスされるデータのいずれかを選択して浮動小数点演算器24に出力する。なお、マルチプレクサ20を介して浮動小数点演算器24に供給されるオペランドデータ中の6ビット[51:46]は、係数演算器26にも出力される。バイパスデータは、データキャッシュ12およびマルチプレクサ28等から伝達される。マルチプレクサ18、20、22により、レジスタファイル16以外からデータをバイパスさせて演算に使用することが可能になり、命令を実行する命令パイプラインにおけるデータハザードを解消することが可能になる。
浮動小数点演算器24は、演算処理装置100Aがフェッチする命令に基づいて演算を実行し、演算の実行結果をマルチプレクサ28に出力する。例えば、浮動小数点積和演算器30は、マルチプレクサ18を介して供給されるソースデータrs1とマルチプレクサ20を介して供給されるソースデータrs2との積に、マルチプレクサ22を介して供給されるソースデータrs3を加算する積和演算を実行する。
係数演算器26は、対数関数の演算に使用される補助命令flogadを演算処理装置100Aが実行する場合に動作し、ソースデータrs2のビット[51:46]を用いてTlogテーブル32を参照し、64ビットの浮動小数点データ[63:0]を得る。ソースデータrs2のビット[51:46]は、補助命令flogadのオペランドデータの一部のビット群である。係数演算器26は、Tlogテーブル32から出力される浮動小数点データ[63:0]をマルチプレクサ28に出力する。Tlogテーブル32から出力される浮動小数点データ[63:0]は、対数関数log(x)をテーラー級数演算項とテーラー級数演算項に対する複数の係数項とに分解した場合における複数の係数項のいずれかに含まれる係数の値に使用される。対数関数log(x)をテーラー級数演算項とテーラー級数演算に対する複数の係数項とに分解した式は、後述する式(2)の6行目および7行目に示される。
また、係数演算器26は、対数関数の演算に使用される補助命令frad1を演算処理装置100Aが実行する場合に動作し、ソースデータrs2のビット[51:46]を用いてTrテーブル34を参照し、64ビットの浮動小数点データ[63:0]を得る。ソースデータrs2のビット[51:46]は、補助命令frad1のオペランドデータの一部のビット群である。係数演算器26は、Trテーブル34から出力される浮動小数点データ[63:0]をマルチプレクサ28に出力する。Trテーブル34から出力される浮動小数点データ[63:0]は、対数関数log(x)をテーラー級数演算項とテーラー級数演算項に対する複数の係数項とに分解した場合におけるテーラー級数演算項に含まれる複数の係数のいずれかの値に使用される。
このように、係数演算器26は、対数関数log(x)をテーラー級数演算項とテーラー級数演算項に対する係数項とに分解した場合において、係数を求めるための係数算出処理を実行する。なお、補助命令flogad、frad1は、演算処理装置100Aによる級数演算を用いた対数関数の演算を従来に比べて高速に実行するために設けられる。Tlogテーブル32およびTrテーブル34の例は、図4に示される。補助命令flogad、frad1の例は、図5で説明される。
マルチプレクサ28は、リザベーションステーション42から出力される2ビットの選択信号SEL[1:0]に従って、浮動小数点演算器24の出力、Tlogテーブル32の出力またはTrテーブル34の出力のいずれかを選択して出力する。選択信号SELが”1”に設定された場合、マルチプレクサ28は、Tlogテーブル32の出力を選択して出力する。選択信号SELが”2”に設定された場合、マルチプレクサ28は、Trテーブル34の出力を選択して出力する。一方、選択信号SELが”0”に設定された場合、マルチプレクサ28は、浮動小数点演算器24の出力を選択して出力する。なお、選択信号SELは”3”に設定されない。
命令キャッシュ36は、メモリバスMBUSを介してメインメモリ200に接続される。命令キャッシュ36は、メインメモリ200に記憶された命令のうちの一部を記憶する。命令レジスタ38は、命令キャッシュ36からフェッチされた命令を順次保持する。命令デコーダ40は、命令レジスタ38が保持する命令を順次デコードする。なお、命令デコーダ40は、演算命令およびデータ転送命令等をデコードする機能に加えて、補助命令flogad、frad1をデコードする機能を有する。
リザベーションステーション42は、命令デコーダ40がデコードした命令を蓄積し、蓄積した命令の依存関係を判定する。そして、リザベーションステーション42は、依存関係の判定結果に基づいて実行する命令を選択し、命令を実行するための制御情報を、リネーミングレジスタ14、レジスタファイル16、浮動小数点演算器24および係数演算器26等に出力する。リザベーションステーション42が出力する制御情報は、レジスタの番号および選択信号SEL等を含む。なお、選択信号SEL[1:0]を生成するための情報は、命令デコーダ40によって生成され、演算命令等に含まれるレジスタの番号などともに、命令の実行に使用する資源が使用可能になる命令ディスパッチ時に、リザベーションステーション42に登録される。
なお、係数演算器26は、ソースデータrs1のビット[51:46]またはソースデータrs3のビット[51:46]をTlogテーブル32またはTrテーブル34に与えて、浮動小数点データ[63:0]を得てもよい。
図3は、IEEE(The Institute of Electrical and Electronics Engineers)754(浮動小数点数演算標準)による倍精度浮動小数点数のデータ形式を示す。IEEE754による倍精度浮動小数点数のデータ形式では、浮動小数点数は、符号部sに格納される1ビットの値と、指数部eに格納される11ビットの値と、仮数部fに格納される52ビットの値とにより表現される。符号sは、”0”の場合に正を示し、”1”の場合に負を示す。指数eは、実際の値に1023が足されたバイアスされた値である。仮数fは、整数部分の”1”が省略された小数点以下の部分であり、正規化された1以上2未満の値である。IEEE754による倍精度浮動小数点数のデータ形式で表される値xは、式(1)で示される。
Figure 2017027126
式(2)は、対数関数log(x)をテーラー級数演算項とテーラー級数演算項に対する係数項とに分解する例を示す。式(2)において、対数の底は”e(ネイピア数)”である。
Figure 2017027126
値xがIEEE754による倍精度浮動小数点数のデータ形式で表される場合、log(x)は、式(2)の1行目により示される。log(x)において、真数xは常に正値であるため、式(1)の1行目は、式(2)の2行目に変形される。式(2)の3行目は、式(2)の2行目の対数を和の形式で表し、第1項の真数の指数部分を対数の定数倍として表したものである。
式(2)の4行目は、式(2)の3行目の第2項の分母と分子に”1+f[51:46]/2^6”(符号^はべき乗を示す)を乗じ、対数を和の形式で表したものである。”f[51:46]”において、かぎ括弧内の数字は、仮数部fのビット番号を示す。ここで、”f/2^52”は、式(3)により示されるため、式(2)の4行目の”f/2^52”を式(3)の右辺で置き換えると、式(2)の5行目になる。さらに、式(2)の5行目の第3項を変形すると、式(2)の6行目になる。
Figure 2017027126
式(2)の6行目の第3項において、”f[45:0]/2^52/(1+f[51:46]/2^6)”を”t”と置くと、式(2)の7行目になる。式(2)の7行目において、第3項は、テーラー級数演算項を示し、第1項および第2項は、テーラー級数演算に対する係数項を示す。第1項の”(e−1023)・log(2)”は、浮動小数点積和演算器36により算出可能である。”log(2)”の値は、メインメモリ200等に予め格納されており、レジスタにロードすることで使用される。
6ビットのf[51:46]は、64通りの値を取り得るため、式(2)の7行目の第2項の”log(1+f[51:46]/2^6)”は、64通りの値を取り得る。同様に、式(2)の6行目の第3項の”1/(1+f[51:46]/2^6)”は、64通りの値を取り得る。”1/(1+f[51:46]/2^6)”は、テーラー級数演算項に含まれる係数の1つである。そこで、演算処理装置100Aは、”log(1+f[51:46]/2^6)”をTlogテーブル32を参照することで算出し、”1/(1+f[51:46]/2^6)”をTrテーブル34を参照することで算出する。
係数”log(1+f[51:46]/2^6)”は、式(4)に示すように、Tlogテーブル32の参照により値が算出される関数Tlogにより表され、関数Tlogは、補助命令flogadを実行することで算出される。式(4)中の”i”は、”0”から”63”までの整数のいずれかであり、ビット値f[51:46]を示す。演算処理装置100Aは、補助命令flogadをフェッチしたことに基づいて仮数部f[51:46]をTlogテーブル32に入力し、Tlogテーブル32から出力される値を関数Tlogの値として算出する。
Figure 2017027126
また、係数”1/(1+f[51:46]/2^6)”は、式(5)に示すように、Trテーブル34の参照により値が算出される関数Tr[i]により表され、関数Tr[i]は、補助命令frad1を実行することで算出される。”i”は、”0”から”63”までの整数のいずれかであり、ビット値f[51:46]を示す。演算処理装置100Aは、補助命令frad1をフェッチしたことに基づいて仮数部f[51:46]をTrテーブル34に入力し、Trテーブル34から読み出される値を関数Trの値として出力する。
Figure 2017027126
式(5)より、式(2)中の「t」(すなわち、”f[45:0]/2^52/(1+f[51:46]/2^60”)は、式(6)により示される。ここで、”f[45:0]”は、”0”から”2^46−1”の値を取り得るため、”f[45:0]/2^52”の最大値は、”1/2^6”より小さくなる。また、”1/(1+f[51:46]/2^6)”(すなわち、式(5)のTr1[f[51:46]])は、0.5より大きく1以下の値を取り得るため、”1/(1+f[51:46]/2^52)”の最大値は”1”である。したがって、”t”は”1/2^6”より小さくなる。”t<<1”であるため、式(2)の7行目の”log(1+t)”は、有限の次数で所望の精度が得られ、テーラー級数演算で計算することが可能となる。例えば、3次の項まで用いてテーラー級数演算を実行する場合、”1/2^18”の精度を得ることが可能である。
Figure 2017027126
式(7)は、対数関数”log(1+t)”のテーラー級数展開を示す。
Figure 2017027126
式(7)中の”n”は、1以上の整数であり、演算に要求される精度に応じて設定される。式(7)中の”t”は、式(2)の6行目の第3項において、”f[45:0]/2^52”を浮動小数点演算器24により演算し、”1/(1+f[51:46]/2^6)”をTrテーブル34により算出することで求めることができる。求めた”t”を用いて浮動小数点演算器24により式(7)の演算を実行することで、”log(1+t)”を求めることができる。
また、式(2)の7行目の第1項は浮動小数点演算器24により算出することができる。なお、log(2)の値は、演算を実行する前に定数としてレジスタ等に保持される。式(2)の7行目の第2項は、Tlogテーブル32を参照することで算出される。そして、式(7)により求めた”log(1+t)”を式(2)の7行目に代入することで、対数log(x)を求めることができる。なお、上述したように、”t”は”1/2^6”より小さくなるため、式(7)において、”n”をある有限の次数で打ち切ったときにも、算出される対数関数lob(x)の値は、十分な精度を有する。
以上をまとめると、式(2)の7行目の第1項の”(e−1023)・log(2)”は、浮動小数点演算器24を用いて算出される。式(2)の7行目の第2項の”log(1+f[51:46]/2^6)”は、補助命令flogadに基づいて、Tlogテーブル32を参照することで算出される。式(2)の6行目の第3項の”f[45:0]/2^52”は、浮動小数点演算器24を用いて算出される。式(2)の6行目の第3項の”1/(1+f[51:46]/2^6)”は、補助命令frad1に基づいて、Trテーブル34を参照することで算出される。これにより、浮動小数点演算器24を用いて、式(2)の7行目の第3項の”t”が算出され、式(7)を用いて、”log(1+t)”が算出される。そして、浮動小数点演算器24を用いて、式(2)の7行目の各項が加算されることで、対数関数log(x)の値が算出される。以下では、補助命令flogadおよび補助命令frad1は、単に命令flogad、frad1とも称される。
図4は、図2に示すTlogテーブル32およびTrテーブル34の一例を示す。Tlogテーブル32は、IEEE754による倍精度浮動小数点数のデータ形式にしたがって、式(4)に示す”log(1+f[51:46]/2^6)”の値が格納された64個のエントリを有する。係数演算器26は、マルチプレクサ20を介して供給される値f[51:46]をTlogテーブル32のデコーダに与える。Tlogテーブル32は、デコーダで受けた値f[51:46]により表されるビット値i(0−63のいずれか)に対応するエントリに格納された倍精度浮動小数点データ[63:0]を読み出す。例えば、値f[51:46]が”2”の場合、符号s(=0)と、指数部の値e(=ea2)と、仮数部の値f(=fa2)とが、Tlogテーブル32から同時に出力される。そして、係数演算器26は、Tlogテーブル32から読み出した倍精度浮動小数点データ[63:0]をマルチプレクサ28に出力する。
Trテーブル34は、IEEE754による倍精度浮動小数点数のデータ形式にしたがって、式(5)に示す「1/(1+f[51:46]/2^6)」の値が格納された64個のエントリを有する。係数演算器26は、マルチプレクサ20を介して供給される値f[51:46]をTrテーブル32のデコーダに与える。Trテーブル34は、デコーダで受けた値f[51:46]により表されるビット値i(0−63のいずれか)に対応するエントリに格納された倍精度浮動小数点データ[63:0]を読み出す。
例えば、値f[51:46]が”1”の場合、符号s(=0)と、指数部の値e(=eb1)と、仮数部の値f(=fb1)とが、Trテーブル34から同時に出力される。そして、係数演算器26は、Trテーブル34から読み出した倍精度浮動小数点データ[63:0]をマルチプレクサ28に出力する。
Tlogテーブル32およびTrテーブル34に64ビットの倍精度浮動小数点データを格納することで、例えば、符号sと、Tlogテーブル32から出力される指数e、仮数fとを連結することを省略することができる。また、Tlogテーブル32およびTrテーブル34は、共通の6ビットの値f[51:46]に基づいて64個のエントリのいずれかを選択する。すなわち、マルチプレクサ20は、共通の6ビットのデータをTlogテーブル32とTrテーブル34とに供給する。この結果、互いに異なる6ビットの値がTlogテーブル32とTrテーブル34とに供給される場合に比べて、マルチプレクサ20と係数演算器26との間の配線の数を削減することができ、演算処理装置100Aのチップサイズの削減に寄与することができる。
なお、図4では、Tlogテーブル32およびTrテーブル34のそれぞれは、6ビットの値f[51:46]に基づいて64個のエントリのいずれかを選択する。しかしながら、Tlogテーブル32およびTrテーブル34のそれぞれは、nビット(nは2ビット以上の整数)の値f[m:m−(n−1)](mはn+1以上の整数)基づいて、2のn乗個のエントリのいずれかを選択してもよい。この場合、Tlogテーブル32には、”log(1+i/2^n)”(iは0以上2^n−1以下の自然数)の値が格納され、Trテーブル34には、”1/(1+i/2^n)”の値が格納される。
例えば、”n”、”m”の値(Tlogテーブル32およびTrテーブル34の大きさ)は、テーブルのエントリ数を増加し、級数演算の項数を削減する場合に、図4に対して変更される。また、”n”、”m”の値は、単精度浮動小数点数または四倍精度浮動小数点数のデータ形式で表されるデータを用いてlog(x)を算出する場合に、図4に対して変更される。すなわち、図2に示す演算処理装置100Aは、単精度浮動小数点数または四倍精度浮動小数点数のデータ形式で表されるデータの演算を実行してもよい。
図5は、式(4)および式(5)に示す係数の値を算出する命令の一例を示す。図5は、アセンブリ言語により記述された命令を示す。図2に示す係数演算器26を用いる場合、式(4)に示す係数の値は、1つの命令flogadにより算出することができる。命令flogadにおけるオペランドデータ”x”は、式(2)に示すlog(x)の真数x(倍精度浮動小数点データ)であり、所定のレジスタに格納される。命令flogadの演算結果は、便宜的にTlogと称するレジスタに格納される。
同様に、図2に示す係数演算器26を用いる場合、式(5)に示す係数の値は、1つの命令frad1により算出することができる。命令frad1におけるオペランドデータ”x”は、式(2)に示すlog(x)の真数(倍精度浮動小数点データ)であり、所定のレジスタに格納される。命令frad1の演算結果は、便宜的にTr1と称するレジスタに格納される。
一方、係数演算器26を用いない場合、式(4)および式(5)にそれぞれ示す係数は、5つの命令を実行することで算出される。係数演算器26を用いずに式(4)および式(5)に示す係数を算出する場合、図3に示すTlogテーブル32およびTrテーブル34と同様の構成を有するTlogテーブルおよびTrテーブルがメモリ空間上に割り当てられる。
係数演算器26を用いずに式(4)に示す係数を求める場合、まず、浮動小数点数のストア命令stdfにより、式(2)に示すlog(x)の真数x(倍精度浮動小数点レジスタに保持)が、[]で示される所定のメモリアドレスの記憶領域に格納される。次に、固定小数点のロード命令ldxにより、[]で示す所定のメモリアドレスに保持される真数xが、便宜的にXiと称する固定小数点レジスタにロードされる。
次に、固定小数点レジスタXiにロードされた真数xから倍精度浮動小数点数のデータ形式の仮数部fの最上位側の6ビット[51:46]を取り出すために、シフト命令srlxが実行される。シフト命令srlxでは、固定小数点レジスタXiに保持されたデータが下位側に43ビットシフトされ(”46−3”)、シフトにより得られた値が、便宜的にTlogeと称するレジスタに格納される。
シフト命令srlxは、メモリ空間上に割り当てられたTlogテーブルの先頭アドレスからのオフセット値を算出するために実行される。Tlogテーブルの各エントリは、64ビット(8バイト)の幅を有するため、オフセット値は8バイト置きの値を取る。このため、シフト命令srlxでは、8バイト分にアドレス値に相当する3ビットを46ビットから引いたビット数”46−3”がシフトされる。
次に、着目する6ビット(ビット8からビット3)以外のビット値をクリアするため、論理積命令andが実行される。論理積命令andでは、レジスタTlogeが保持する値と、16進数の”3f”を上位側に3ビットシフトした値(すなわち、16進数で”1f8”)との論理積が演算され、演算結果が、便宜的にTlogoと称するレジスタに格納される。レジスタTlogoに格納された値は、メモリ空間上に割り当てられたTlogテーブルの先頭アドレスからのオフセット値を示す。そして、浮動小数点のロード命令lddfが実行され、メモリ空間上に割り当てられたTlogテーブルのエントリのいずれかが保持する係数の値が、便宜的にTlogと称する浮動小数点レジスタに格納される。ロード命令lddfでは、レジスタTlogoに格納されたオフセット値が、Tlogテーブルの先頭アドレスであるベースアドレス(便宜的にTlogbと称するレジスタに格納)に加えられ、読み出す係数の値を保持しているエントリのアドレスが算出される。
係数演算器26を用いずに式(5)に示す係数を求める場合、使用するレジスタと、係数を読み出すテーブルが異なることを除き、係数演算器26を用いずに式(4)に示す係数を求める場合と同様の命令が実行される。係数演算器26を用いずに式(5)に示す係数を求める場合、メモリ空間上に割り当てられたTrテーブルが使用される。
図5に示すように、係数演算器26を用いずに従来の命令を複数組み合わせて係数の値を算出する場合、論理演算およびシフト演算等の固定小数点演算器を使用した演算処理が実行される。このため、演算命令だけでなく、浮動小数点レジスタと固定小数点レジスタとの間でデータを転送するストア命令およびロード命令も実行される。対数関数の演算を実行するために複数の命令が実行されるため、演算処理装置100Aの処理性能の低下を招くおそれがある。これに対して、係数演算器26を用いて係数を算出する場合、浮動小数点演算器24を用いて係数を算出する場合に比べて、実行する命令数を4つ減らすことができる。この結果、対数関数の演算を実行するために演算処理装置100Aの処理性能が低下することを抑止することができる。
図6は、図2に示す演算処理装置100Aの動作の一例を示す。図6は、演算処理装置100Aが浮動小数点数の演算命令または係数の命令flogad、frad1をフェッチした場合の動作を示す。
まず、ステップS10において、演算処理装置100Aは、浮動小数点数の演算命令を実行する場合、動作をステップS12に移行し、命令flogad、frad1を実行する場合、動作をステップS16に移行する。
ステップS12において、浮動小数点演算器24は、マルチプレクサ18、20、22から受ける浮動小数点データに基づいて演算を実行し、演算結果をマルチプレクサ28に出力する。次に、ステップS14において、マルチプレクサ28は、浮動小数点演算器24の出力を選択し、浮動小数点演算器24による演算結果を出力する。
一方、ステップS16において、演算処理装置100Aは、命令flogadを実行する場合、動作をステップS18に移行し、命令frad1を実行する場合、動作をステップS22に移行する。
ステップS18において、係数演算器26は、マルチプレクサ20から受ける浮動小数点データのうち仮数部fの上位ビット[51:46]をTlogテーブル32に与える。そして、係数演算器26は、Tlogテーブル32から式(4)に示す係数の値を示す浮動小数点データ[63:0]を読み出し、読み出した値をマルチプレクサ28に出力する。次に、ステップS20において、マルチプレクサ28は、Tlogテーブル32の出力を選択し、係数演算器26による係数の算出結果を出力する。
ステップS22において、係数演算器26は、マルチプレクサ20から受ける浮動小数点データのうち仮数部fの上位ビット[51:46]をTrテーブル34に与える。そして、係数演算器26は、Trテーブル34から式(5)に示す係数の値を示す浮動小数点データ[63:0]を読み出し、読み出した値をマルチプレクサ28に出力する。次に、ステップS24において、マルチプレクサ28は、Trテーブル34の出力を選択し、係数演算器26による係数の算出結果を出力する。
以上、図2から図6に示す実施形態においても、図1に示す実施形態と同様に、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。すなわち、式(4)に示す係数の値を、1つの命令flogadを実行することで算出することができ、式(5)に示す係数の値を、1つの命令lrad1を実行することで算出することができる。この結果、対数関数の演算を従来に比べて少ない命令数で実行することができ、対数関数の演算を実行するために演算処理装置100Aの処理性能が低下することを抑止することができる。
さらに、図2から図6に示す実施形態では、Tlogテーブル32およびTrテーブル34に共通の6ビットの値f[51:46]が、マルチプレクサ20から係数演算器26に供給される。このため、互いに異なる6ビットの値がTlogテーブル32とTrテーブル34とに供給される場合に比べて、マルチプレクサ20と係数演算器26との間の配線の数を削減することができ、演算処理装置100Aのチップサイズの削減に寄与することができる。また、Tlogテーブル32およびTrテーブル34に倍精度浮動小数点データの64ビット全てを格納することで、例えば、符号sと、Tlogテーブル32から出力される指数e、仮数fとを連結することを省略することができる。
図7は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図2に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図7に示す演算処理装置100Bは、メインメモリ200とともに情報処理装置300Bに搭載される。演算処理装置100Bは、図2に示す係数演算器26およびマルチプレクサ28の代わりに、倍精度の係数演算器26Bおよびマルチプレクサ28Bを有する。また、演算処理装置100Bは、比較器44Bおよびマルチプレクサ46Bを有する。演算処理装置100Bにおいて、係数演算器26B、マルチプレクサ28B、比較器44Bおよびマルチプレクサ46Bを除く構成は、図2に示す演算処理装置100Aと同様である。
係数演算器26Bは、図2に示す係数演算器26にビット連結部48Bを追加している。ビット連結部48Bは、対数関数の演算に使用される補助命令frad2を演算処理装置100Bが実行する場合に係数演算器26Bに供給されるビット[45:0]にビット[63:46]を連結し、64ビットの浮動小数点データを生成する。ここで、ビット連結部48Bは、ビット[45:0]に、ビット[63]=0、ビット[62:52]=3ff(16進数)およびビット[51:46]=0を連結する。
比較器44Bは、選択信号SELが”3”の場合、図7におけるマルチプレクサ46Bの右側の入力を選択する選択信号をマルチプレクサ46Bに出力する。また、比較器44Bは、選択信号SELが”3”以外の場合、図7におけるマルチプレクサ46Bの左側の入力を選択する選択信号をマルチプレクサ46Bに出力する。マルチプレクサ46Bは、選択信号SELが”3”の場合、”1.0”、ビット連結部48Bから出力されるビット値[63:0]、および”−1.0”を、それぞれソースデータrs1、rs2、rs3として浮動小数点演算器24に出力する。ここで、”1.0”、ビット連結部48Bから出力されるビット値[63:0]、および”−1.0”は、倍精度浮動小数点データである。これにより、選択信号SELが”3”の場合、浮動小数点演算器24は、ビット連結部48Bから出力されるビット値[63:0]から”1.0”を減ずる演算を実行する。一方、マルチプレクサ46Bは、選択信号SELが”3”以外の場合、マルチプレクサ18、20、22から出力されるデータを、それぞれソースデータrs1、rs2、rs3として浮動小数点演算器24に出力する。
選択信号SELが”3”の場合、ビット連結部48B、比較器44B、マルチプレクサ46Bおよび浮動小数点演算器24は、式(6)に示す”f[45:0]/2^52”を算出するために機能する。倍精度浮動小数点データのうち、小数点以下のデータの一部である仮数の下位側の値f[45:0]を取り出す場合、符号sは”0”に設定され、指数部の値eは”0乗”を示す”3ff”に設定され、仮数の上位側の値f[51:46]は”0”に設定される。さらに、倍精度浮動小数点データの仮数fは、整数部の暗黙の”1”が省かれているため、浮動小数点演算器24は、ビット連結部48Bからの浮動小数点データ[63:0]に”1.0”を乗じた値から”1.0”を減じて、暗黙の”1”を取り除く。これにより、式(6)に示す”f[45:0]/2^52”により示される値が算出される。
ビット連結部48B、比較器44Bおよびマルチプレクサ46Bを設けることで、式(6)に示す”f[45:0]/2^52”の値を1つの命令frad2により算出することができる。命令frad2のオペランドは、図5に示す命令frad1のオペランドと同様に、”x,Tr2”である。”x”は、式(2)に示すlog(x)の真数x(倍精度浮動小数点データ)であり、所定のレジスタに格納される。”Tr2”は、命令frad2の演算結果が格納されるレジスタである。ビット連結部48B、比較器44B、マルチプレクサ46Bおよび浮動小数点演算器24は、式(6)に示す”f[45:0]/2^52”を、命令frad2のオペランドデータx中のビット群[45:0]の値に応じて算出する係数算出部の一例である。
これに対して、ビット連結部48B、比較器44Bおよびマルチプレクサ46Bを設けない場合、”f[45:0]/2^52”は、論理積演算と論理和演算により算出される。この場合、”f[45:0]/2^52”は、図5に示す浮動小数点演算器24および固定小数点演算器を用いる場合の命令と同様に、複数の命令を用いて算出される。
マルチプレクサ28Bは、選択信号SELに従って、浮動小数点演算器24の出力、Tlogテーブル32の出力またはTrテーブル34の出力のいずれかを選択して出力する。選択信号SELは、演算処理装置100Aが補助命令frad2の実行を決定したことに基づいて、”3”に設定される。マルチプレクサ28Bは、選択信号SELが”0”または”3”の場合、浮動小数点演算器24の出力を選択する。マルチプレクサ28Bの動作は、選択信号SELが”3”の場合に浮動小数点演算器24の出力を選択することを除き、図2に示すマルチプレクサ28の動作と同様である。
なお、比較器44Bおよびマルチプレクサ46Bを設ける代わりに、ビット連結部48Bの出力に接続される倍精度浮動小数点データ用の減算器を設けてもよい。この場合、ビット連結部48Bから出力される浮動小数点データ[63:0]から”1.0”を減じて暗黙の”1”を取り除く演算は、減算器により実行される。そして、マルチプレクサ28Bは、選択信号SELが”3”の場合、減算器の出力を選択する。
以上、図7に示す実施形態においても、図1から図6に示す実施形態と同様に、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。さらに、図7に示す実施形態では、1つの命令frad2に基づいて、ビット連結部48B、比較器44B、マルチプレクサ46Bおよび浮動小数点演算器24が、式(6)に示す”f[45:0]/2^52”を算出する。これにより、級数演算を用いた対数関数の演算をさらに高速に実行することができる。この結果、対数関数の演算を従来に比べて少ない命令数で実行することができ、対数関数の演算を実行するために演算処理装置100Bの処理性能が低下することを抑止することができる。
図8は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図2に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図8に示す演算処理装置100Cは、メインメモリ200とともに情報処理装置300Cに搭載される。演算処理装置100Cは、図2に示す係数演算器26の代わりに、係数演算器26Cを有する。演算処理装置100Cにおいて、係数演算器26Cを除く構成は、図2に示す演算処理装置100Aと同様である。
係数演算器26Cは、係数テーブル50Cを有する。係数テーブル50Cは、図4に示すTlogテーブル32に格納された情報を含むTlog部501と、図4に示すTrテーブル34に格納された情報を含むTr部502と、Tlog部501およびTr部502に共通のデコーダ503とを有する。Tlog部501は、第1の記憶部の一例であり、Tr部502は、第2の記憶部の一例である。係数テーブル50Cは、計数記憶部の一例である。
デコーダ503は、マルチプレクサ20からのビット群[51:46]の値に応じて、Tlog部501に含まれる64個のエントリのいずれかと、Tr部502に含まれる64個のエントリのいずれかとを選択する。そして、係数テーブル50Cは、Tlog部501とTr部502とのそれぞれから倍精度の浮動小数点データ[63:0]を出力する。
図2では、係数演算器26は、Tlogテーブル32とTrテーブル34とのそれぞれが、ビット群[51:46]をデコードするデコーダを有する。これに対して、係数テーブル50Cは、Tlog部501とTr部502とに共通に、ビット群[51:46]をデコードするデコーダ503を有する。このため、係数テーブル50Cの回路規模を、図2に示すTlogテーブル32とTrテーブル34との回路規模に比べて小さくすることができる。
以上、図8に示す実施形態においても、図1から図7に示す実施形態と同様に、級数演算を用いた対数関数の演算を従来に比べて高速に実行することができる。さらに、図8に示す実施形態では、係数テーブル50Cの回路規模を、図2に示すTlogテーブル32とTrテーブル34との回路規模に比べて小さくすることができる。なお、図7に示す係数演算器26Bは、Tlogテーブル32およびTrテーブル34の代わりに、図8に示す係数テーブル50Cを有してもよい。
図9は、演算処理装置および演算処理装置の制御方法の別の実施形態を示す。図2に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図9に示す演算処理装置100Dは、メインメモリ200とともに情報処理装置300Dに搭載される。演算処理装置100Dは、1つの命令に基づいて演算を同時に実行するSIMD(Single Instruction Multiple Data)演算器SC(SC0、SC1)を有する。データキャッシュ12、命令キャッシュ36、命令レジスタ38、命令デコーダ40およびリザベーションステーション42は、SIMD演算器SC0、SC1に共通に設けられる。各SIMD演算器SC0、SC1は、図2に示すリネーミングレジスタ14、レジスタファイル16、マルチプレクサ18、20、22、浮動小数点演算器24、係数演算器26およびマルチプレクサ28を有する。データキャッシュ12は、SIMD演算器SC0、SC1の両方に接続され、リザベーションステーション42から出力される制御情報(選択信号SEL[1:0]を含む)は、SIMD演算器SC0、SC1の両方に供給される。
なお、演算処理装置100Dは、4つのSIMD演算器SCまたは8つのSIMD演算器SCを有してもよい。また、各SIMD演算器SCは、係数演算器26およびマルチプレクサ28の代わりに、図7に示す係数演算器26Bおよびマルチプレクサ28Bを有してもよい。この場合、演算処理装置100Dは、図7に示す比較器44Bおよびマルチプレクサ46Bを有する。さらに、各SIMD演算器SCは、係数演算器26およびマルチプレクサ28の代わりに、図8に示す係数演算器26Cおよびマルチプレクサ28Cを有してもよい。
以上、図9に示す実施形態においても、図1から図8に示す実施形態と同様の効果を得ることができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
12…データキャッシュ;14…リネーミングレジスタ;16…レジスタファイル;18、20、22…マルチプレクサ;24…浮動小数点演算器;26、26B、26C…係数演算器;28、28B、28C…マルチプレクサ;30…浮動小数点積和演算器;32…Tlogテーブル;34…Trテーブル;36…命令キャッシュ;38…命令レジスタ;40…命令デコーダ;42…リザベーションステーション;44B…比較器;46B…マルチプレクサ;48B…ビット連結部;50C…係数テーブル;100A、100B、100C、100D…演算処理装置;200…メインメモリ;300A、300B、300C、300D…情報処理装置;501…Tlog部;502…Tr部;503…デコーダ;flogad、frad1…補助命令;SC0、SC1…SIMD演算器

Claims (8)

  1. 対数関数を級数演算項と前記級数演算項に対する係数項とに分解した場合における前記係数項に含まれる第1の係数の値を、前記第1の係数の値を算出する第1の命令のオペランドデータ中の第1のビット群の値に応じて記憶する第1の記憶部と、
    前記級数演算項に含まれる第2の係数の値を、前記第2の係数の値を算出する第2の命令のオペランドデータ中の前記第1のビット群の値に応じて記憶する第2の記憶部と、
    前記第1の命令の実行に基づいて、前記第1の記憶部から読み出される前記第1の係数の値を選択し、前記第2の命令の実行に基づいて、前記第2の記憶部から読み出される前記第2の係数の値を選択する選択部を有することを特徴とする演算処理装置。
  2. 前記第1の記憶部は、前記第1の命令の浮動小数点形式のオペランドデータにおける仮数部の前記第1のビット群の値i(iは自然数)にそれぞれ対応して、”log(1+i/2^n)”(^はべき乗、nは第1のビット群のビット数)の値を前記第1の係数の値として記憶し、
    前記第2の記憶部は、前記第2の命令の浮動小数点形式のオペランドデータにおける仮数部の前記第1のビット群の値iにそれぞれ対応して、”1/(1+i/2^n)”の値を前記第2の係数の値として記憶することを特徴とする請求項1記載の演算処理装置。
  3. 前記第1の記憶部は、前記第1のビット群の値iにそれぞれ対応して浮動小数点形式の前記第1の係数の符号部、指数部および仮数部の値を記憶し、前記第1の命令に基づいて、記憶している符号部、指数部および仮数部の値を出力し、
    前記第2の記憶部は、前記第1のビット群の値iにそれぞれ対応して浮動小数点形式の前記第2の係数の符号部、指数部および仮数部の値を記憶し、前記第2の命令に基づいて、記憶している符号部、指数部および仮数部の値を出力することを特徴とする請求項2記載の演算処理装置。
  4. 前記第1のビット群は、前記入力データにおける仮数部の上位側のnビットであることを特徴とする請求項2または請求項3記載の演算処理装置。
  5. 前記演算処理装置はさらに、
    前記級数演算項に含まれる第3の係数の値を、前記第3の係数の値を算出する第3の命令のオペランドデータ中の第2のビット群の値に応じて算出する係数算出部を有し、
    前記選択部は、前記第3の命令の実行に基づいて、前記係数算出部が算出した前記第3の係数の値を選択することを特徴とする請求項1ないし請求項4のいずれか1項記載の演算処理装置。
  6. 前記演算処理装置はさらに、
    前記第1の記憶部と、前記第2の記憶部と、前記第1の記憶部および前記第2の記憶部に共通に設けられ、前記第1のビット群の値に応じて、前記第1の記憶部が記憶する前記第1の係数の値のいずれかと前記第2の記憶部が記憶する前記第2の係数の値のいずれかとを選択するデコーダとを含む計数記憶部を有することを特徴とする請求項1ないし請求項5のいずれか1項記載の演算処理装置。
  7. 前記演算処理装置はさらに、積和演算を行う積和演算器を有し、
    前記選択部は、前記積和演算器が前記演算命令を実行したことに基づいて、前記積和演算器から出力される演算結果を選択することを特徴とする請求項1ないし請求項6のいずれか1項記載の演算処理装置。
  8. 演算処理装置の制御方法において、
    前記演算処理装置が有する計数演算器が、対数関数を級数演算項と前記級数演算項に対する係数項とに分解した場合における前記係数項に含まれる第1の係数の値を、前記第1の係数の値を算出する第1の命令のオペランドデータ中の第1のビット群の値に応じて第1の記憶部から読み出すとともに、前記級数演算項に含まれる第2の係数の値を、前記第2の係数の値を算出する第2の命令のオペランドデータ中の前記第1のビット群の値に応じて第2の記憶部から読み出し、
    前記演算処理装置が有する選択部が、前記第1の命令の実行に基づいて、前記第1の記憶部から読み出される前記第1の係数の値を選択し、前記第2の命令の実行に基づいて、前記第2の記憶部から読み出される前記第2の係数の値を選択することを特徴とする演算処理装置の制御方法。
JP2015141912A 2015-07-16 2015-07-16 演算処理装置および演算処理装置の制御方法 Active JP6497250B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015141912A JP6497250B2 (ja) 2015-07-16 2015-07-16 演算処理装置および演算処理装置の制御方法
US15/204,304 US10037188B2 (en) 2015-07-16 2016-07-07 Arithmetic processing device and method of controlling arithmetic processing device
EP16179328.6A EP3118737B1 (en) 2015-07-16 2016-07-13 Arithmetic processing device and method of controlling arithmetic processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015141912A JP6497250B2 (ja) 2015-07-16 2015-07-16 演算処理装置および演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2017027126A true JP2017027126A (ja) 2017-02-02
JP6497250B2 JP6497250B2 (ja) 2019-04-10

Family

ID=56609665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015141912A Active JP6497250B2 (ja) 2015-07-16 2015-07-16 演算処理装置および演算処理装置の制御方法

Country Status (3)

Country Link
US (1) US10037188B2 (ja)
EP (1) EP3118737B1 (ja)
JP (1) JP6497250B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595147B (zh) * 2018-01-02 2021-03-23 上海兆芯集成电路有限公司 具有级数运算执行电路的微处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010532A1 (en) * 2002-07-09 2004-01-15 Silicon Integrated Systems Corp. Apparatus and method for computing a logarithm of a floating-point number
US20070061389A1 (en) * 2005-09-09 2007-03-15 Via Technologies, Inc. Logarithm processing systems and methods

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604691A (en) 1995-01-31 1997-02-18 Motorola, Inc. Logarithm/inverse-logarithm converter utilizing a truncated Taylor series and method of use thereof
US6772181B1 (en) * 1999-10-29 2004-08-03 Pentomics, Inc. Apparatus and method for trigonometric interpolation
US6877020B1 (en) * 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
JP4199100B2 (ja) * 2003-12-12 2008-12-17 富士通株式会社 関数演算方法及び関数演算回路
US7711764B2 (en) 2004-06-04 2010-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Pipelined real or complex ALU
US7814137B1 (en) * 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
EP2833258B1 (en) 2012-03-30 2016-09-14 Fujitsu Limited Arithmetic processing unit and method for controlling arithmetic processing unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010532A1 (en) * 2002-07-09 2004-01-15 Silicon Integrated Systems Corp. Apparatus and method for computing a logarithm of a floating-point number
US20070061389A1 (en) * 2005-09-09 2007-03-15 Via Technologies, Inc. Logarithm processing systems and methods

Also Published As

Publication number Publication date
EP3118737B1 (en) 2017-12-13
US20170017466A1 (en) 2017-01-19
JP6497250B2 (ja) 2019-04-10
EP3118737A1 (en) 2017-01-18
US10037188B2 (en) 2018-07-31

Similar Documents

Publication Publication Date Title
KR102447636B1 (ko) 부동 소수점 수를 누산하기 위한 산술 연산을 수행하는 장치 및 방법
US7949696B2 (en) Floating-point number arithmetic circuit for handling immediate values
US7236995B2 (en) Data processing apparatus and method for converting a number between fixed-point and floating-point representations
KR100239029B1 (ko) 가산기와 함께 사용하기 위한 결과 정규화기 및 결과 정규화 방법과 그를 포함하는 데이터 프로세서
US9608662B2 (en) Apparatus and method for converting floating-point operand into a value having a different format
US20080270496A1 (en) Composition/decomposition of decimal floating point data
JP2018500635A (ja) プログラム可能な有効度データを使用するデータ処理装置および方法
TW201617929A (zh) 融合複合算術運算之區分
US6463525B1 (en) Merging single precision floating point operands
JP2012084142A (ja) 融合型積和演算機能ユニット
US20120059866A1 (en) Method and apparatus for performing floating-point division
Boersma et al. The POWER7 binary floating-point unit
US9477442B2 (en) Processor and control method of processor
JP6497250B2 (ja) 演算処理装置および演算処理装置の制御方法
US10310809B2 (en) Apparatus and method for supporting a conversion instruction
US20090164544A1 (en) Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware
US10838718B2 (en) Processing device, arithmetic unit, and control method of processing device
US9959092B2 (en) Accumulation of floating-point values
JP6886927B2 (ja) 浮動小数点値の処理のための装置及び方法
US8041927B2 (en) Processor apparatus and method of processing multiple data by single instructions
US20120191955A1 (en) Method and system for floating point acceleration on fixed point digital signal processors
US8185723B2 (en) Method and apparatus to extract integer and fractional components from floating-point data
US7237000B2 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
US20130132452A1 (en) Method and Apparatus for Fast Computation of Integral and Fractional Parts of a High Precision Floating Point Multiplication Using Integer Arithmetic

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170803

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170804

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181119

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190225

R150 Certificate of patent or registration of utility model

Ref document number: 6497250

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150