Coprocessor

From Wikipedia, the free encyclopedia

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.

Coprocessors also became common in desktop computers throughout the 1980s and into the early 1990s due to CPU design limitations and cost considerations. The math co-processor was a common addition to high-end computers like the Mac II and most workstations that required the capability to do floating-point arithmetic, but until the early 1990s the demand for such capabilities and cost was minimal. Another form of co-processor that became common during this era was the graphics co-processor, used in the Atari 8-bit family and Commodore Amiga. The graphics processor chip in the Commodore series was known as the "Copper."

Eventually, the cost of the the math co-processor was low enough so that general-purpose microprocessors included the math co-processor functions integrated into the primary CPU, eliminating the separate component. The demand for a dedicated graphics co-processor has grown, however, particularly due to an increasing demand for realistic 3D graphics in computer games; this dedicated processor removes a considerable computational load from the primary CPU, and increases performance in graphic-intensive applications. As of 2002, graphics cards with dedicated Graphics Processing Units (GPUs) are commonplace. Modern (2005) soundcards are now being fitted with more powerful processors with more multimedia extensions to further offload computer time from the host processor. An example might be the Sound Blaster X-Fi. In 2006, AGEIA announced an add-in card for computers that it calls PhysX. PhysX functions almost like a math co-processor, in that it is designed to perform complex physics computations so that the CPU and GPU do not have perform these consuming calculations. It is designed to work with video games, although other mathematical uses could theoretically be developed for it.

A coprocessor may not be a general-purpose processor in its own right. Some coprocessors cannot fetch instructions from memory, execute program flow control instructions, do input/output operations, manage memory, and so on. These processors require the host main processor to fetch the coprocessor instructions and handle all other operations aside from the coprocessor functions. In some architectures the coprocessor is a more general-purpose computer, but carries out only a limited range of functions under the close control of a supervisory processor. Note the difference to the term multiprocessor, which refers to a computer with more than one general-purpose CPU.

[edit] Intel coprocessors

The original IBM PC included a socket for the Intel 8087 floating point coprocessor (aka FPU) which was a popular option for people using the PC for CAD or mathematics-intensive calculations. In that architecture, the coprocessor sped up floating-point arithmetic on the order of fifty-fold. Users that only used the PC for word processing, for example, saved the high cost of the coprocessor, which would not have accelerated performance of text manipulation operations.

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.

See also: X87

[edit] Motorola coprocessors

The Motorola 68000 family had the 68881/68882 coprocessors which provided similar floating-point speed acceleration as for the Intel processors. Computers using the 68000 family but not equipped with the hardware floating point processor could trap and emulate the floating-point instructions in software, which, although slower, allowed one binary version of the program to be distributed for both cases.

[edit] Other coprocessors

  • Using FPGA (field-programmable gate arrays), custom coprocessors can be created for acceleration of particular processing tasks such as digital signal processing.
  • Sometimes an entire computer is made out of coprocessors instead of a single CPU. This is the case for the Nintendo 64 video game console, for example, as well as the PlayStation 2 whose Emotion Engine is equipped with two vector units.