MC68040

MC68040(エムシー 68040)は，1990年にモトローラ（現NXPセミコンダクターズ）が開発したM68000ファミリのマイクロプロセッサで、2016年現在はロチェスターエレクトロニクスが製造している。
仕様通りには完成できなかったため、ベータ版であることを示す「XC」を冠したまま、XC68040として量産出荷されていた。ただし、画像のように1990年代半ば以降の製造のものにMC68040と刻印されたものが見られる。仕様通りに完成されたのか、それとも仕様自体が変更されたのかは不明である。
MC68030の後継であり、その系統はMC68060に受け継がれた(68050はプロジェクトが断念され、出荷されなかった。68050は68020に対する68030のようにダイサイズを小さくしてキャッシュを増やす予定だった)。
概要.
68040はM68000ファミリで初めてFPU(浮動小数点演算ユニット)をチップに内蔵した。これによりこれまで外付けの必要があった全ての機能が内蔵されたことになる(FPUとMMU(68030の時点で内蔵))。また、CISCプロセッサでありながらも内部ハーバード・アーキテクチャを採用し、メモリユニットは命令メモリユニットとデータメモリユニットに分離されており、命令メモリユニットに命令キャッシュ（4Kバイト）と命令MMU、キャッシュ / スヌープ・コントローラ、かつデータメモリユニットにデータキャッシュ（4Kバイト）とデータMMU、キャッシュ / スヌープ・コントローラを搭載している。命令パイプラインは6ステージになっている。
68040では、120万トランジスタを集積している。演算性能では平均20MIPSを越す性能を有することから、MC68030の同一クロックと比較して平均2.5から3倍程度高速である。さらに68040の内蔵FPUは、ピーク性能で8MFLOPS、平均で3.5MFLOPS程度の性能があり、MC68882 FPUの同一クロックと比較して平均4から6倍程度高速である。
68040は設計の早い段階でトランジスタ数が限界に達することが判明していた。68030でCPUに内蔵されたMMUは、内蔵することによってトランジスタを少なく抑えることができたのに対し、FPUはそうならなかったためである。モトローラのMC68882 FPUは非常に高性能なユニットであることで知られていて、モトローラはリスクを避けるためにフル機能の"RC"版ではなく"LC"版を搭載することにした。結果として、68040の内蔵FPUは68881や68882で使用可能だったIEEEの超越関数を使えなくしてしまった (超越関数はフラクタル生成ソフトウェアなどで使われていた)。このため、68040のFPUにおいて超越関数はモトローラの提供する浮動小数点サポートパッケージ(FPSP)でエミュレートするようになっている。ただし、これは未実装命令を実行しようとしたときに例外が発生し、その例外ハンドラ内でエミュレートするものであるため、頻繁に使用すると性能が劇的に低下するという問題があった。
68040では熱が大きな問題となった。同一クロック周波数では68030の倍以上の性能を誇ったが、大きなダイサイズと大きなキャッシュのために消費電力が大きくなってしまった。
このために40MHzまでしかクロック周波数を上げられなかった。
25MHz低発熱版の68040HRC25を除き、25MHzでもヒートシンクが必要。
68040はi486とほぼ同等の機能を持っていたために両者はしばしば比較されるが、同一クロック周波数で比較した場合はi486の性能を上回っていた。しかし、熱問題が表面化しなかった（i486DX 33MHzでもヒートシンクは不要だった）i486は50MHz版、内部クロックを2倍、3倍と大きく引き上げることに成功しており (i486 DX2/DX4)、最終的に100MHzまでクロック周波数を向上させたi486に68040は対抗できなかった。
なお、Macintoshのカタログ等で33MHzの68040が33/66MHzと表現されることがあったが、これは68040が通常のクロック (BCLK) と倍速クロック (PCLK) の2系統のクロックの供給を必要とするためである。倍速クロックは特殊なタイミングエッジで動作するロジックのために使用されており、i486 DX2のようにプロセッサ内部が倍速クロックで動作しているわけではない。