SE/30 Forever

< Back to home

Floating Point Unit (FPU)

Motorola 68882 floating point coprocessor

The SE/30 uses a Motorola 68882 Math coprocessor, or floating point unit (FPU), operating at 16 Megahertz (MHz). At the time, this feature was useful mostly for scientific and mathematical software.

This works in conjunction with the Motorola 68030 central processing unit (CPU) to perform floating point mathematical calculations. The CPU/FPU pair are designed such that both can run at the same time.

The FPU provides fast processing of complex mathematical functions (such as logarithmic or trigonometric calculations) often used in spreadsheets and high end graphics and statistics applications.

The Motorola 68882 mathematics coprocessor performs fast and highly accurate floating-point arithmetic in parallel with the CPU. After the general control logic decodes the address and asserts the device select to the FPU, the FPU communicates directly with the CPU without further intervention of the memory management unit or logic circuits. To a programmer, the FPU appears to extend the capabilities of the CPU, adding several instructions, data types, and registers to the features of the MC68030.

The 68882 implements in hardware the Institute of Electrical and Electronics Engineers Standard 754: IEEE Standard for Binary Floating-Point Arithmetic. This coprocessor also supports several functions not included in the IEEE standard, including trigonometric and transcendental functions . The MC68881 is used in the Macintosh II; the MC68882 is used in the other Macintosh II models and in the Macintosh SE/30. The MC68882 is a more efficient version of the MC68881; the MC68882 can run any program written to use the MC68881.

The 68882 was an improved version of the 68881, with better pipelining, and eventually available at higher clock speeds. Its instruction set is exactly the same. Motorola claimed in some marketing literature that it executes some instructions 40% faster than a 68881 at the same clock speed, though this did not reflect typical performance, as seen by its more modest improvement in the table below. The 68882 is pin compatible with the 68881 and can be used as a direct replacement in most systems. The most important software incompatibility is that the 68882 uses a larger FSAVE state frame, which affects UNIX and other preemptive multitasking OSes that had to be modified to allocate more space for it.

All FPU data transfers are performed by the main processor at the request of the FPU. Therefore, memory management, bus arbitration, and error handling behave as if the FPU instructions were executed by the main processor. Similarly, traps are handled by the main processor at the request of the FPU.[1]

Because the Standard Apple Numerics Environment (SANE~) package takes advantage of the FPU when it is available, the FPU automatically speeds up processing by 5 to 50 times for any program that uses the SANE routines. If you access the FPU directly by using MC68881/MC68882 instructions in your assembly-language programs or by using an MC68881/MC68882 compiler option, you can achieve a speed gain of from 40 to 700 times. However, a program written to use the FPU directly will not run on Macintosh models that don't have an FPU (classic Macintosh and Macintosh SE).[1]

Example of software that use the FPU

  • Spreadsheet applications, such as Microsoft Excel
  • Graphics/CAD applications, such as Adobe Photoshop
  • Statistics or mathematical applications, such as Mathematica and MATLab


  • 1. Guide to the Macintosh Family Hardware, Second Edition, Apple Computer, 1990.

Further reading

If you want an in-depth overview of the capabilities of the FPU supported by SANE (Standard Apple Numerics Environment), see Apple Numerics Manual, Second Edition, 1988.

The FPU is described in detail in the MC68881/MC68882 Floating-Point Coprocessor User's Manual from Motorola.