CPUとFPUとMPU

CPUとFPUとMPUの違いを教えてください。


CPUというのは,中央演算処理装置(Central Processing UNIT)の略で,広い意味で計算機の演算処理装置を指す言葉です。メインフレームなどでも,CPUという言葉は使われているようです。一方,MPU(Micro Processing UNIT。いわゆるマイクロプロセッサ)というのは,モトローラが自社のM68Kや6800/09などを呼ぶときに使っていた言葉で,1チップ化されたCPUのことを指します。したがって,メインフレームなどでは「マイクロ」ではないので,CPUのことをMPUとは呼ばないと思われます。
 FPU(Floating-point Processing UNIT)というのは,CPUの中で,浮動小数点演算を担当する部分を指す言葉です。昔は,FPUまで1チップに収めるのが,技術的にもコスト的にも難しかったので,CPUに外付けする形になっていました。インテル8086に対する8087,80386に対する80387,モトローラだと68000や68020に対して68881というチップがFPUでした。最近のCPUは,ほとんどがFPUを1チップ内に収めています。
 ちなみに,x87は古めかしいスタックアーキテクチャで設計されているので,ほかのプロセッサのFPUと比べると速度面で劣ります。Pentium以降,FPU命令も同時発行できるといいますが,実はスタックの底から値を持ち上げる命令と演算が同時発行できるだけです。これでパフォーマンスはかなり改善されるものの,やはりほかのプロセッサのFPUと比べると見劣りします。
 FPUのように昔は外付けで,今は内蔵されているものとして,MMU(Memory Management UNIT。メモリ管理装置)があります。MMUは,プログラムから見える論理アドレス空間と,アドレスバスに出力される物理アドレス空間の間に仕掛けを作って,仮想記憶などを実現する仕組みのことです。6809にはMMUがありましたし,Z80にはMMUは用意されていなかったものの,MSX2やMZ-2500には,MMUと呼んで差し支えない程度のメモリ管理装置がありました。
 インテルは8086,80286でセグメント,80386以降ではセグメント+ページのMMUを内蔵させていますし,モトローラは68030以降,MMUを内蔵させています。
(米田 聡)