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.
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.
Coprocessors for floating-point arithmetic became common in desktop computers throughout the 1980s and into the early 1990s. Early 8-bit and 16-bit processors used software to carry out floating-point arithmetic operations. Where a hardware math co-processor was supported by the computer hardware and software, floating-point calculations could be carried out many times faster. Math co-processors were popular purchases for users of computer-aided design (CAD) software and scientific and engineering calculations. Some floating-point units, such as the AMD 9511, Intel I8231 and Weitek FPUs were treated as peripheral devices, while others such as the Intel 8087, Motorola 68881 and National 32081 were more closely integrated with the CPU.
Another form of co-processor was a Video Display coprocessor, 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. Separately packaged 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 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 fiftyfold. 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 8086/8088 and responded to floating-point machine code operation codes inserted in the 8088 instruction stream. An 8088 processor without an 8087 could not interpret these instructions, requiring separate versions of programs for FPU and non-FPU systems, or at least a test at run time to detect the FPU and select appropriate mathematical library functions.
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 floating point 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.
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.
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. The 68451 memory-management coprocessor was designed to work with the 68020 processor. 
Modern PC coprocessors
As of 2002[update], dedicated Graphics Processing Units (GPUs) in the form of graphics cards are commonplace. Certain models of sound cards have been fitted with dedicated processors providing digital multichannel mixing and real-time DSP effects as early as 1990 to 1994 (the Gravis Ultrasound and Sound Blaster AWE32 being typical examples), while the Sound Blaster Audigy and the Sound Blaster X-Fi are more recent examples.
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 allowing the GPU to render PhysX on cores normally used for graphics processing the same way CUDA works. 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.
In 2008 Khronos group released the OpenCL with the aim to support general purpose CPUs and both ATI/AMD and Nvidia GPUs, with a single common language.
- The MIPS architecture supports up to four coprocessor units, used for memory management, floating-point arithmetic, and two undefined coprocessors for other tasks such as graphics accelerators. 
- Using FPGA (field-programmable gate arrays), custom coprocessors can be created for acceleration of particular processing tasks such as digital signal processing.
- TLS/SSL accelerators, used on servers.
- Some multi-core chips can be programmed so that one of their processors is the primary processor, and the other processors are supporting coprocessors.
- Floating point
- IEEE 754-2008 Standard for Floating-Point Arithmetic
- Multiprocessing, the use of two or more CPUs within a single computer system
- Torrenza, an initiative to implement coprocessor support for AMD processors
- Hybrid-core computing, extending a commodity instruction set architecture with application-specific instructions
- OpenCL framework for writing programs that execute across heterogeneous platforms
- Asymmetric multiprocessing
- ^ Scott Mueller, Upgrading and repairing PCs 15th edition, Que Publishing, 2003 ISBN 0789729741, pages 108-110
- ^ William Ford, William R. Topp Assembly language and systems programming for the M68000 family Jones & Bartlett Learning, 1992 ISBN 0763703575 page 892 and ff.
- ^ Erin Farquhar, Philip Bunce, The MIPS programmer's handbook,Morgan Kaufmann, 1994 ISBN 1558602976, Appendix A3 page 330
Wikimedia Foundation. 2010.
Look at other dictionaries:
coprocessor — [kō΄präs′əs ər] n. Comput. an auxiliary processing unit designated for a particular operation, as one for making mathematical computations * * * co·proc·es·sor (kōʹprŏs ĕs ər) n. A microprocessor that performs specialized functions that the… … Universalium
coprocessor — [kō΄präs′əs ər] n. Comput. an auxiliary processing unit designated for a particular operation, as one for making mathematical computations … English World dictionary
coprocessor — A secondary processor used to speed up operations by taking over a specific part of the main processor swork. The most common type of coprocessor is the math, or floating point, coprocessor, which is designed to manage arithmetic calculations… … Dictionary of networking
coprocessor — koprocesorius statusas T sritis informatika apibrėžtis ↑Procesorius, padedantis kompiuterio ↑centriniam procesoriui atlikti kai kuriuos veiksmus arba pats juos atliekantis. Tokiems veiksmams jis būna specialiai pritaikytas ir juos atlieka… … Enciklopedinis kompiuterijos žodynas
coprocessor — noun Date: 1980 an extra processor in a computer that is designed to perform specialized tasks (as mathematical calculations) … New Collegiate Dictionary
coprocessor — noun An additional microprocessor used to supplement the functionality of the central processing unit, performing tasks such as floating point arithmetic (floating point unit) or graphics calculations (graphics processing unit) … Wiktionary
coprocessor — n. auxiliary processor (Computers) … English contemporary dictionary
coprocessor — noun Computing a microprocessor designed to supplement the capabilities of the primary processor … English new terms dictionary
coprocessor — co·processor … English syllables
coprocessor — ¦kōˌ noun Etymology: co + processor : an extra processor in a computer that is designed to perform specialized tasks (as input/output functions or mathematical calculations) … Useful english dictionary