ふどうしょうすうてん‐えんざん〔フドウセウスウテン‐〕【浮動小数点演算】
浮動小数点数
(浮動小数点演算 から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/11 17:25 UTC 版)
浮動小数点数(ふどうしょうすうてんすう、英: floating-point number)は、実数をコンピュータで処理(演算や記憶、通信)するために有限桁の小数で近似値として扱う方式であり[1]、コンピュータの数値表現として広く用いられている。多くの場合、符号部、固定長の指数部、固定長の仮数部、の3つの部分を組み合わせて、数値を表現する。
- 1 浮動小数点数とは
- 2 浮動小数点数の概要
浮動小数点演算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/19 08:15 UTC 版)
R4000は IEEE 754-1985 準拠のFPUを同じチップ上に搭載しており、その部分を R4010 と呼ぶこともある。FPUはCP1のコプロセッサとして動作する(MIPS ISA ではCP0からCP3まで4つのコプロセッサを利用できるよう定義している)。CPUのステータスレジスタのFRビットの設定により、FPUの32ビットモードと64ビットモードを切り替えることができる。32ビットモードでは32本の浮動小数点レジスタはそれぞれ32ビット幅となり、32個の単精度浮動小数点数を格納するか、2本のレジスタを1組として16個の倍精度浮動小数点数を格納する。 FPUはデータやリソースの依存関係がなければALUと同時に動作可能で、依存関係があればストールが発生する。FPUには3つのサブユニットがあり、それぞれ加算器、乗算器、除算器である。乗算器と除算器は加算器と並行に命令を実行できるが、乗算も除算も最終段で加算器を使用するため、並行実行にも制限がある。したがってFPUでは最大3個の命令(加算、乗算、除算)を並行実行でき、1サイクルに1命令を実行に移すことができる。 加算器と乗算器はパイプライン化されている。乗算器は4段のパイプラインになっており、性能向上のため dynamic logic を使ってマイクロプロセッサのクロックの2倍の周波数で駆動される。除算には23サイクル(単精度)または36サイクル(倍精度)かかり、平方根の計算にはそれぞれ54サイクルまたは112サイクルのレイテンシが生じる。除算と平方根計算には、SRT除算アルゴリズムを使っている。
※この「浮動小数点演算」の解説は、「R4000」の解説の一部です。
「浮動小数点演算」を含む「R4000」の記事については、「R4000」の概要を参照ください。
浮動小数点演算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/18 09:34 UTC 版)
単精度浮動小数点演算に関してはCPUをはるかに上回る理論演算性能とスケーラビリティを持つGPUだが、倍精度浮動小数点演算に関しては様相が異なる。もともとGPUが扱う多くの画像演算(特にリアルタイム3Dグラフィックス)では、整数演算や単精度の浮動小数点演算で足りてしまうために浮動小数点演算器は仮数部が24ビット程度とそれほど広くなく、単精度の演算器で倍精度の浮動小数点演算を行なうには、分割して幾度も演算器を使う必要があり、性能を大きく落とす要因となる。なお倍精度対応が必須とされる科学技術計算分野を含めたHPC向けに設計された製品では、倍精度専用の演算器を搭載・有効化しているものもある。 AMDは2006年に自社のGPU「R580」をベースとした、単精度浮動小数点演算対応のストリームプロセッシング向け製品「AMD Stream Processor」(第1世代AMD FireStream)を発表、続いて2007年にR6xxコアを使用した業界初の倍精度浮動小数点演算対応HPC向けGPUである「AMD FireStream 9170」(第2世代AMD FireStream)を発売した(ただし倍精度の理論演算性能は単精度の場合の1/5となる)。また2008年に発売されたRADEON HD 4850は1チップでは世界初の1TFLOPS(単精度)を達成し、このRADEON HD 4850にも使用されたR7xxコアを使用して低価格かつ高性能を売りに、HPC分野向けに第3世代AMD FireStreamを発売することになった。2010年には、さらに高性能化した第4世代AMD FireStreamを発売している。2014年に発売されたAMD FirePro S9100/S9150では倍精度演算性能が強化され、倍精度の理論演算性能は単精度の場合の1/2になっている 。 NVIDIAも、自社のGPU「G80」をベースとした、単精度浮動小数点演算対応のHPC向け製品「Tesla C870」を2007年に投入、さらに2008年に発売された NVIDIA Tesla C1060 で倍精度に対応したが、単精度933GFLOPSに比べて倍精度は1/12の78GFLOPSとなっており、倍精度演算性能が極端に低かった。2010年に発売された Fermi 世代の Tesla 20 シリーズ では倍精度演算性能が強化され、倍精度の理論演算性能は単精度の場合の1/2になったが、2012年に発売されたKepler世代のTesla K20シリーズ 、2013年に発表されたK40、2014年に発表されたK80 では倍精度の理論演算性能は単精度の場合の1/3となっている。 2015年現在でも、GPUにおける倍精度演算に関してはHPC向けを除き、省電力性能やゲーミング性能を重視・維持するために必要最低限の性能しか用意されないことが多い。また倍精度専用の演算ユニットでは単精度の演算を行なうことはできないため、単精度を優先するか、それとも倍精度を優先するかはチップ設計段階におけるトレードオフとなる。実際、NVIDIAのMaxwellアーキテクチャのGPUでは前世代に存在した倍精度演算器が省略され、単精度演算器を使って倍精度演算を行なうため、倍精度演算のピーク性能は単精度演算の1/32となる。総合的には、依然としてGPUは倍精度の浮動小数点演算が不得意であると言える。
※この「浮動小数点演算」の解説は、「GPGPU」の解説の一部です。
「浮動小数点演算」を含む「GPGPU」の記事については、「GPGPU」の概要を参照ください。
浮動小数点演算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/05/06 00:40 UTC 版)
「TAC (コンピュータ)」の記事における「浮動小数点演算」の解説
78ビット処理。桁が欠けないことと、二倍精度の演算処理が作りやすいことが長所で、当時は世界的に見ても大胆な機能。発案は(村田の記憶によると)雨宮らしい。真空管の本数が多いのはこのためであるが、真空管処理は大変だったという。
※この「浮動小数点演算」の解説は、「TAC (コンピュータ)」の解説の一部です。
「浮動小数点演算」を含む「TAC (コンピュータ)」の記事については、「TAC (コンピュータ)」の概要を参照ください。
浮動小数点演算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/07/14 08:30 UTC 版)
「キーワード (Java)」の記事における「浮動小数点演算」の解説
その他のキーワードとして、浮動小数点演算の移植性を高めるstrictfpがある。浮動小数点の演算では一般に全く同じ結果は期待できないものではあるが、x87などハードウェアによっては、途中の値においてより高い精度や、より広い値の範囲で演算が行われるために、最終結果が他のプラットフォームと一致しない場合があり、特にIEEE 754を前提として予想される結果から外れることが問題である。 strictfpを指定すると、途中結果についても全てIEEE 754の倍精度を強制し、相異なるプラットフォーム同士の間でも演算結果が一致することを保証するとされている(仕様では FP-strict という用語を使っている)。Java VMの実装で、これを正しく実現するには、x86系CPUを使った計算機の場合、x87を避けてSSE2で計算するか、それができない場合は特殊なテクニックが必要である。 なお、同様に移植性のある結果を保証するStrictMathというクラスがあるが、そちらはFDLIBMというSun製のライブラリと同じ結果を保証するとされている。
※この「浮動小数点演算」の解説は、「キーワード (Java)」の解説の一部です。
「浮動小数点演算」を含む「キーワード (Java)」の記事については、「キーワード (Java)」の概要を参照ください。
浮動小数点演算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/24 15:35 UTC 版)
「Javaに対する批判」の記事における「浮動小数点演算」の解説
Javaの浮動小数点演算は主にIEEE 754(二進化浮動小数点数演算標準)をベースとしているが、例えばIEEE 754に必須とされる例外フラグや方向指定の丸めなどの、いくつかの機能については"strictfp"修飾子を指定した場合でもサポートされない。Javaの仕様として知られているものはJava自体の問題ではないが、浮動小数点数演算を行う上で避けて通れない問題である。
※この「浮動小数点演算」の解説は、「Javaに対する批判」の解説の一部です。
「浮動小数点演算」を含む「Javaに対する批判」の記事については、「Javaに対する批判」の概要を参照ください。
- 浮動小数点演算のページへのリンク