FPU(Floating-Point-number-processing-Unit、浮動小数点演算装置)とは、浮動小数点演算を専門に行う処理装置のこと。単独では動作せず、主装置であるCPUから利用されるため、コプロセッサ(co-processor, 副処理装置)と呼ばれる。また、AMDではAm9511をAPU (Arithmetic Processing Unit) と呼んだ。
インテル社のIntel 8087等、一部で実数演算など浮動小数点以外の演算を行えるものもあるため、インテル社ではNDP(Numeric data processor, 数値演算コプロセッサ)と呼んでいる。NPX(Numeric Processor eXtension)という表記もある。
Apple II用などは完全に周辺機器扱いだったが、8087の頃からCPUの拡張装置とでも呼ぶべき存在になった。
インテル社のx86系アーキテクチャではIntel 80387(Intel 80386用)が最後となり、Intel 486からはCPU自身に浮動小数点演算機能が内蔵されている。同様に、モトローラ社のMC68000系でもMC68040以降のCPUには浮動小数点演算機能を内蔵している。
CPUは浮動小数演算命令を検知するとFPUに制御をわたし、自身は動作を停めてFPUからの指示に従ってアドレスバスとデータバスの制御のみを行なうようになる。制御を渡されたFPUはをCPUに指示して後続する命令の一部とデータを読み書きし、浮動小数演算を行なう。演算後CPUに制御を戻し、CPUは浮動小数演算命令の後ろにある次の命令から実行を再開する。特に8087ではデコーダを独立して内蔵しており、真の意味でコプロセッサだったが、80287以降はCPUのデコード結果を専用I/Oポートを介し引き渡す方式を採っていた。 原理からして、パイプライン動作するCPUではこの方式は実現しにくい。 モトローラ社のMC68881やMC68882を同社MC68020またはMC68030と組み合わせる場合、専用に用意された制御線を使用して接続すれば、ソフトウェアの変更は必要なく、プログラマからは単純にCPUの機能が拡張されたように扱える。MC68020の場合、厳密にはコプロセッサの存在を示すフラグが立つ。
Floating Point Unit | Floating point unit | FPU | Unité de calcul en virgule flottante | FPU | FPU | 부동 소수점 장치 | Floating Point Unit | Koprocesor | Matematický koprocesor | Flyttalsprocessor | 浮点运算器