FPU
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2011年12月) |
FPU(Floating Point Unit、浮動小数点(演算処理)装置)とは、浮動小数点演算を専門に行う処理装置のこと。[1]コンピュータの周辺機器のようなアーキテクチャのものもあれば、主プロセッサと一体化したコプロセッサのようなアーキテクチャのものもある。
AMDではAm9511をAPU (Arithmetic Processing Unit) と呼んでおり(2011年以降はAPUをAccelerated Processing Unitの略称として使用)、インテルではx87をNDP(Numeric data processor, 数値演算コプロセッサ)、またその命令についてNPX(Numeric Processor eXtension)とも呼んでいる。
マイクロプロセッサにおいては、Apple IIの頃は完全に周辺機器のようなアーキテクチャだったが、8087の頃には命令の一体化など、CPUの拡張装置のようなアーキテクチャになった。
1990年代中盤以降の高性能プロセッサではFPUはプロセッサ内部のサブユニットとなっている。[1]インテルのx86系CPUでは独立ユニットのFPUは387(386用)が最後となり、486からは同一のチップ内に内蔵された(486の初期には、FPUを内蔵しない廉価版と、事実上はオーバードライブプロセッサであった487もあった)。同様に、モトローラの68000系でもMC68040以降はチップ内に内蔵している。プロセッサに内蔵されたFPUはスーパースカラーで他ユニットと並列動作させることができるなど様々なメリットがあるため、現在ではFPUを単体で用いることは珍しくなっている。
接続の形式
I/Oプロセッサ形式
FPUをI/Oポートに接続して、通常の周辺機器と同様にI/Oポートを介してデータのやり取りを行なう形式。たとえばAm9511はこの形式で設計されている。FPUは周辺機器として扱われるので、CPUと同じメーカのFPUを使わなくてもよく、8ビットCPUの時代には、コストのかかるAm9511などの代わりに別メーカの電卓用CPUをI/Oポートに接続して使うことがホビイストの間で実験的に行なわれた。
また、対応機種として設計されていない組み合わせ、たとえばモトローラのMC68881(MC68020/MC68030用FPU)や、インテルの287(286用FPU)を、MC68000やMC68010に接続する場合は、データの入出力をプログラム上で明示的に行わなくてはならない。そのマシンに対応した数値演算ライブラリを使用すれば、アプリケーションソフトウェアのプログラミングにおいては、FPUを使用することを意識する必要は無いが、I/Oポートを介してデータをやり取りするため直接接続されている場合に比べて、大きなオーバヘッドが生ずる。逆に利点としては、主プロセッサと、副プロセッサの動作速度を個別に設定できるなど、自由度が高い点がある。
2018年現在では、Graphics Processing Unit及びそれをベースにしたプロセッサを用い、暗号通貨や各種演算処理に用いられる事が増え、グラフィックボードが品薄になる程の需要が生じている。
コプロセッサ方式
CPUとFPUがアドレスバスとデータバスを共有し、協調して動作する方式。ユーザから見るとCPUの命令が拡張されたように見える。 8087ではデコーダを独立して内蔵しており、真の意味でコプロセッサだったが、287以降はCPUのデコード結果を専用I/Oポートを介し引き渡す方式を採った。8086/87では次の浮動小数点命令を実行する前に、直前の(8087の)命令が終わるまで待つための(8086の) wait 命令が必要[2]だったが、286/287からは必要なくなっている。
モトローラのMC68881やMC68882を同社MC68020またはMC68030と組み合わせる場合、専用に用意された制御線を使用して接続すれば、ソフトウェアの変更は必要なく、プログラマからは単純にCPUの機能が拡張されたように扱える。MC68020の場合、厳密にはコプロセッサの存在を示すフラグが立つ。
乗っ取り形
コプロセッサ方式の発展形。コプロセッサが実際にはCPUとしての全機能を持っており、制御は完全にコプロセッサ側に渡してしまい、既存のCPUは停止させてしまう。
487がこれで、要するにFPUというのは名前だけで、実態はオーバードライブプロセッサである。
脚注・出典
- ^ a b “FPUとは - IT用語辞典”. IT用語辞典 e-Words. 2024年2月5日閲覧。
- ^ 浅野泰之、壁谷正洋、金磯善博、桑野雅彦「第5章 8087(数値演算プロセッサ)」『PC-9801システム解析(下)』アスキー、1983年12月1日、156頁。ISBN 4-87148-715-6。
関連項目
浮動小数点演算ユニット
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/28 10:14 UTC 版)
「Alpha 21064」の記事における「浮動小数点演算ユニット」の解説
浮動小数点演算ユニットは浮動小数点数レジスタファイル (FRF) と F-box で構成される。FRFには32本の64ビットレジスタがあり、リードポートが3つ、ライトポートが2つある。F-box には浮動小数点演算用パイプラインとパイプライン化されていない除算ユニットがある。除算ユニットは1サイクルに1ビット結果を出力する。 第4ステージでは、浮動小数点数レジスタファイルからデータを読み込むと、それを仮数部、指数部、符号にフォーマットする。加算命令の場合、まず加算器で指数部の差分を計算し、結果を正規化するために仮数部の桁あわせを行う準備をする。 第5および第6ステージで、加減算の場合は正規化のためのシフトを行いスティッキービットの計算を行う。乗算はパイプライン化され2ウェイ・インターリーブされた配列を使い、基数8のブースの乗算アルゴリズムを使用する。第8ステージで最後の加算を行い、並行して丸めを実施する。第10ステージで結果をFRFに書き込む。 このパイプラインで実行される命令のレイテンシは6サイクルとなる。単精度(32ビット)と倍精度(64ビット)の除算はパイプライン化されていない除算ユニットを使用し、レイテンシはそれぞれ31サイクルと61サイクルである。
※この「浮動小数点演算ユニット」の解説は、「Alpha 21064」の解説の一部です。
「浮動小数点演算ユニット」を含む「Alpha 21064」の記事については、「Alpha 21064」の概要を参照ください。
- 浮動小数点演算ユニットのページへのリンク