Math Coprocessors
Until the arrival of the Intel 80486 microprocessor in 1989, PC CPUs only contained integer calculation instructions. Floating-point calculations had to be done in software, which was much slower.
To address this shortfall, Intel designed a separate math coprocessor, also commonly called a Floating Point Unit (FPU). Before very long, competing chip designers came out with their own versions of Intel's FPUs that were fully pin- and instruction-compatible.
However, unlike with their CPU range, Intel had little choice in the manufacturing and sale of FPUs by third parties from companies including IIT, ULSI, Cyrix, Chips & Technologies and Weitek. This was because the 8087 brought in an IEEE standard for handling floating-point arithmetic, and these third parties made sure theirs were in compliance with this. They continued to produce these well into the 486 era.
The design of Intel's CPUs meant that they did not come with floating-point instructions built-in, so with the arrival of FPUs, software had to detect an FPU and make use of the special additional instructions they provided. If the CPUs had been designed to offload floating-point math from 'day 1' to a coprocessor if one was installed, they would have been much more useful. For this reason, the real-world value of purchasing an FPU was actually rather limited. AutoCAD and other complex design and math tools made great use of the vastly superior performance an FPU could provide, but beyond that, very little PC software used them (and only a handful of games).
The table below shows the various math coprocessors that were available to DOS PC owners:
Microprocessor | Supporting Math Coprocessor |
---|---|
Intel 8088/8086 | Intel 8087 |
Intel 80286 | Intel 80287 IIT/ULSI 2C87 AMD 80C287 |
Intel 80386SX | Intel 80387SX Cyrix CX-83S87, IIT 3C87SX ULSI SX/SLC |
Intel 80386DX | Intel 80387DX Chips & Technologies Super MATH Cyrix 387DX Cyrix CX-83D87 FasMath IIT/ULSI 3C87 Intel RapidCAD LC 4C87DX Green Math Xtend 83S87 Weitek 3167 (not pin-compatible) |
Intel 80486SX | |
Cyrix Cx486DLC | Cyrix 487DLC IIT XC87SLC IIT 4C87DLC IIT XC87DLC Weitek 4167 (not pin-compatible) |
The Weitek chips are not specified in the list below, as there was little support for them. They were not pin-compatible with their Intel counterparts, so a special motherboard design needed to be implemented. Their first, the 3167 for 386DX CPUs was a poor performer, but the 4167 for 486DX systems was the fastest you could get.
Digilogue Collection has a YT video where he runs performance tests on four of the 386-era math coprocessors. For real-world testing, he ran the VistaPro graphics rendering program and Quake. For synthetic testing, he ran three programs: LinPack, LLL (Livermore Labs), and the Whetstone benchmark.
Intel 8087
The original Intel 8087 was the only coprocessor available for 8088- and 8086-based PCs. In fact it arrived 2 years before the IBM 5150 even went on the market, but up to that time, initial take-up of the chip had been very low. It came in three versions: 8087-5 (5 MHz), 8087-2 (8 MHz) and 8087-1 (10 MHz).
The 10 MHz version could also work alongside the Intel 80186 and 80188 CPU.
8087 was able to support integer, BCD (Binary Coded Decimal), single-, and double-precision floating point numbers, with 60 new instructions in all. When installed in a PC, it implicitly converted any numbers to extended precision (80-bit) floating-point numbers and worked on them from that number.
The Intel 8087 was also manufactured by authorized chip fabricators, including AMD and Cyrix.
The Intel 8087-1 retail box
Intel 80287
The Intel 80287 could work alongside an 80286 CPU to provide floating point operations. One advantage to the 80287 over the 8087 was its ability to run asynchronously from the main CPU - this means the clock speed the coprocessor runs at can be different to the CPU.
Available in 5 MHz, 6 MHz, 8 MHz, 10 MHz and 12 MHz versions.Other fabricators such as AMD, IIT and Cyrix produced 80287 coprocessors with 16 and 20 MHz clock speeds. Cyrix first coined the term 'FasMath' with their 80287 chip.
Later variants of the 80287 were the 80287XL and 80287XLT. The 80287XL was actually an '80387SX (with 387 micro-architecture) but in a 80287 DIP package for use on fast 80286 and 80386DX motherboards. These had an internal 3/2 clock multiplier to allow the coprocessor to run not at the default 2/3rd speed of the CPU, but at the same speed. It basically took the incoming clock signal from the mainboard's crystal oscillator for the FPU and multiplied it by 1.5x.
The 80287XLT was a low-power version of the 80287XL designed for use on laptop computers. Another variant that had 387 performance was the 80C287 which was built on Intel's later CMOS manufacturing process.
The Intel 287XLT retail box
All these later 80287 coprocessors filled the gap for the early 386 market from 1985 before the arrival of the 80387 math coprocessors in 1987.
IIT/ULSI 2C87
The IIT 2C87 was a clone of the Intel 80287 introduced in 1989. It contained the full 387 instruction set.
The 2C87, also sold and branded by ULSI, was available in these versions: 8, 10, 12, 16, 20 and 25 MHz. Performance-wise, the 2C87 is about the same as an Intel 80287XL clock for clock. The 2C87 initially sold for between $299 (10 MHz) and $379 (20 MHz).
The IIT-2C87 and the IIT-3C87, both CMOS devices, are plug and code compatible with the Intel 80287 and 80387 respectively. Since they require fewer clock cycles to perform the same operations, the IIT-2C87 is almost 200 percent faster, and the IIT-3C87 is 50 percent faster than the competition, according to the company.
In addition, the IIT-2C87 includes extra functions from the 80387 instruction set, such as IEEE COMPARE, IEEE REMAINDER, and a larger range for transcendental functions. It can operate at clock speeds of 10 or 20 MHz; the IIT-3C87 comes in 16-, 20- and 25-MHz versions. " PC Magazine, August 1989
AMD 80C287
AMD also produced a clone of the Intel 80287 in 1990 called the 80C287. Unlike some other '287 clones', this did not contain a 387 instruction set, so was only compatible with 80286 CPU systems.
The 802C87 was available in 10 and 12 MHz versions.
The AMD 80C287 retail box
Intel 80387
The original math coprocessor for 80386DX CPUs. Performance benchmarks indicate this is between 10% and 25% slower than the competing 386DX-compatible coprocessors from Cyrix, ULSI and IIT.
The 80387DX could happily run beside any 386DX from the original 16 MHz up to 33 MHz.
Intel's own 80387-33 cost $994 in 1989.
The Intel 387DX retail box
Cyrix 387DX
The 387DX was Cyrix' first coprocessor for 80386 systems. It was pin-compatible with the Intel 80387 math coprocessor, and was soon replaced with the more advanced CX-83D87.
It was released in 25 MHz, 33 and 40 MHz versions.
Cyrix FasMath CX-83S87
The CX-83S87 was designed to complement 386SX-based systems and was available in 16, 20, 25, and 33 MHz variants. Like its big brother, CX-83D87, these were the fastest co-processors you could buy for 386 systems. Any CX-83S87s
manufactured after 1991 got the 387+ internals.
The CX-83S87 is designed to be used alongside the Cx486SLC CPU.
Cyrix FasMath CX-83D87 / 387DX+
The CX-83D87 (called 387DX+ in Europe) and branded FasMath, was introduced in 1989. It is the fastest 387-compatible coprocessor, available in 25, 33, and 40 MHz variants, and provides up to 50% better performance than the Intel 387 clock for clock.
The 83D87 also offers the most accurate transcendental functions of all coprocessors - iIt is the 387 clone with the highest degree of compatibility to the Intel 387.
Unlike the Intel 387, the 83D87 (and all other 387-compatible chips as well) does not support asynchronous operation of CPU and coprocessor.
To reduce power consumption the 83D87 features advanced power saving features. Those portions of the
coprocessor that are not needed are automatically shut down. If no coprocessor instructions are being executed, all parts except the bus interface unit are shut down.
Benchmark tests have shown that FasMath chips with a grey top run slightly faster than those with a black top, and also faster than the DLC versions of this chip.
At launch, these Cyrix math coprocessors cost from $647 for the 20 MHz version up to $994 for a 33 MHz version.
IIT 3C87SX
The 3C87SX math coprocessor from IIT was designed to sit alongside a 386SX CPU, and came in 16, 20, 25, 33 and 40 MHz versions.
They cost $439 for a 16 MHz version up to $779 for a 33 MHz version.
IIT/ULSI 3C87
The 3C87 math coprocessor from IIT was designed to sit alongside a 386DX CPU, and came in 20, 25, 33 and 40 MHz versions. Performance-wise, the 3C87 is faster than the Intel 80387DX coprocessor.
The 3C87 initially sold for between $499 (16 MHz) and $799 (25 MHz) at launch in August 1989.
DOS Days contributor sarumyan, added this: "All IIT coprocessors have improvements compared to Intel coprocessors, for example "The IIT chip 3C87 was introduced in 1989, about the same time as the Cyrix 83D87. Both coprocessors are faster than Intel's 387DX coprocessor. The IIT 3C87 also provides extra functions not available on any other 387 chip. It has 24 user-accessible floating-point registers organized into three register banks. Three additional instructions (FSBP0, FSBP1, FSBP2) allow switching from one bank to another. The register bank's main purpose is to aid the fourth additional instruction the 3C87 has (F4X4), which does a full multiply of a 4x4 matrix by a 4x1 vector, an operation common in 3D-graphics applications. There are very few applications that make use of it when an IIT coprocessor is detected at run time (among them Silver Screen and Fast-CAD 3-D).
The 3C87 is implemented in an advanced CMOS process and has low power requirements, typically about 600 mW. Like the 387 'clones' from Cyrix and ULSI, the 3C87 does not support asynchronous operation of the CPU and the coprocessor, but always runs at the full speed of the CPU. It is available in 16, 20, 25, 33, and 40 MHz versions."
IIT XC87SLC
The IIT DLC/SLC are the coporocessors for 386/486 hybrid processors like the Cyrix Cx486 DLC/SLC or Texas Instruments TX486DLC. They can also be used interchangeably with the IIT 3C87SX as normal 386 FPUs. They came in a 33 MHz clock speed only.
Cyrix 487DLC
Because the Cyrix Cx486SLC/DLC CPUs didn't come with an internal FPU (floating-point unit), motherboards that supported these Cyrix CPUs sometimes also provided a Cyrix math coprocessor socket. These were designed to accommodate the 487DLC coprocessor. These came in 33 and 40 MHz variants.
IIT 4C87DLC
The 4C87DLC math coprocessor from IIT was designed to sit alongside a Cyrix Cx486DLC or Texas Instruments TX486DLC CPU (not Intel's 80486DX), and came in 33 and 40 MHz versions. This coprocessor, like the 3C87 before it, came with a number of improvements designed to best work with the Cyrix/TI 486DLC CPUs.
IIT XC87DLC
The XC87DLC math coprocessor from IIT was designed to sit alongside a Cyrix Cx486DLC or Texas Instruments TX486DLC CPU, and came in 33 MHz version only.