A coprocessor is a computer processor used to supplement the functions of the primary processor (the CPU). Operations performed by the coprocessor may be floating point arithmetic, graphics, signal processing, string processing, or encryption. By offloading processor-intensive tasks from the main processor, coprocessors can accelerate system performance. Coprocessors allow a line of computers to be customized, so that customers who do not need the extra performance need not pay for it.
Coprocessors were first seen on mainframe computers, where they added additional "optional" functionality such as floating point math support. A more common use was to control input/output channels, although in this role they were more often referred to as channel controllers.
Another form of co-processor that became common during this era were the simple Video Display coprocessors, as used in the Atari 8-bit family, the Texas Instruments TI-99/4A and MSX home-computers, which were called "Video Display Controllers". The graphics processor chip in the Commodore Amiga series was known as the "Copper".
As microprocessors developed, the cost of integrating the floating point arithmetic functions into the processor declined. High processor speeds also made a closely-integrated coprocessor difficult to implement. Mathematics co-processors are now uncommon in desktop computers. The demand for a dedicated graphics co-processor has grown, however, particularly due to an increasing demand for realistic 3D graphics in computer games.
The 8087 was tightly integrated with the 8088 and responded to floating-point machine code operation codes inserted in the 8088 instruction stream. An 8088 processor without an 8087 would interpret these instructions as an internal interrupt, which could be directed to trap an error or to trigger emulation of the 8087 instructions in software.
Another coprocessor for the 8086/8088 central processor was the 8089 input/output coprocessor. It used the same programming technique as 8087 for input/output operations, such as transfer of data from memory to a peripheral device, and so reducing the load on the CPU. But IBM didn't use it in IBM PC design and Intel stopped development of this type of coprocessor.
During the era of 8- and 16-bit desktop computers another common source of floating-point coprocessors was Weitek. The Intel 80386 microprocessor used an optional "math" coprocessor (the 80387) to perform floating point operations directly in hardware.
The Intel 80486DX processor included floating-point hardware on the chip. Intel released a cost-reduced processor, the 80486SX, that had no FP hardware, and also sold an 80487SX co-processor that essentially disabled the main processor when installed, since the 80487SX was a complete 80486DX with a different set of pin connections. While consumers may have resented paying for a processor that was essentially wasted when the upgrade was installed, this marketing strategy did allow increased volume of sales of 80486 family processors, thereby accelerating the eventual price reductions.
Intel processors later than the 80486 integrated floating-point hardware on the main processor chip; the advances in integration eliminated the cost advantage of selling the floating point processor as an optional element. It would be very difficult to adapt circuit-board techniques adequate at 75 MHz processor speed to meet the time-delay, power consumption, and radio-frequency interference standards required at gigahertz-range clock speeds. These on-chip floating point processors are still referred to as coprocessors because they operate in parallel with the main CPU.
In 2006, AGEIA announced an add-in card for computers that it calls PhysX. PhysX is designed to perform complex physics computations so that the CPU and GPU do not have to perform these time consuming calculations. It is designed to work with video games, although other mathematical uses could theoretically be developed for it. In 2008 nvidia purchased the PhysX card and began to phase out the card line; the functionality was added through software. Consequently, it can be said that in the future role of math or physics add-in cards will remain a niche.
In 2006, BigFoot Systems unveiled a PCI add-in card they christened the KillerNIC which ran its own special Linux kernel on a FreeScale PowerQUICC running at 400 MHz, calling the FreeScale chip a Network Processing Unit or NPU. Tests have shown it indeed does take an appreciable load off the processor which would otherwise have to run the XP or Vista Network Stack. However its high price tag has kept it out of reach for all but the most performance-minded users.
The SpursEngine is a media-oriented add-in card with a coprocessor based on the Cell microarchitecture.