Coprocessor
Encyclopedia
A coprocessor is a computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...

 processor used to supplement the functions of the primary processor (the CPU). Operations performed by the coprocessor may be floating point
Floating point
In computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16...

 arithmetic, graphics
Graphics
Graphics are visual presentations on some surface, such as a wall, canvas, computer screen, paper, or stone to brand, inform, illustrate, or entertain. Examples are photographs, drawings, Line Art, graphs, diagrams, typography, numbers, symbols, geometric designs, maps, engineering drawings,or...

, signal processing
Signal processing
Signal processing is an area of systems engineering, electrical engineering and applied mathematics that deals with operations on or analysis of signals, in either discrete or continuous time...

, string processing, or encryption
Encryption
In cryptography, encryption is the process of transforming information using an algorithm to make it unreadable to anyone except those possessing special knowledge, usually referred to as a key. The result of the process is encrypted information...

. 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.

Functions

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.

History

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
Computer-aided design
Computer-aided design , also known as computer-aided design and drafting , is the use of computer technology for the process of design and design-documentation. Computer Aided Drafting describes the process of drafting with a computer...

 (CAD) software and scientific and engineering calculations. Some floating-point units, such as the AMD 9511, Intel I8231 and Weitek
Weitek
Weitek Corporation was a chip-design company that originally concentrated on floating point units for a number of commercial CPU designs. During the early to mid-1980s, Weitek designs could be found powering a number of high-end designs and parallel processing supercomputers...

 FPUs were treated as peripheral devices, while others such as the Intel 8087
Intel 8087
The Intel 8087, announced in 1980, was the first floating-point coprocessor for the 8086 line of microprocessors. It had 45,000 transistors and was manufactured as a 3 μm depletion load HMOS circuit. The 8087 was built to be paired with the Intel 8088 or 8086 microprocessors...

, Motorola 68881
Motorola 68881
The Motorola 68881 and Motorola 68882 were floating-point coprocessor chips that were used in some computer systems in conjunction with the 68020 or 68030 CPUs. The addition of one of these chips added substantial cost to the computer, but added a floating point unit that could rapidly perform...

 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
Atari 8-bit family
The Atari 8-bit family is a series of 8-bit home computers manufactured from 1979 to 1992. All are based on the MOS Technology 6502 CPU and were the first home computers designed with custom coprocessor chips...

, the Texas Instruments TI-99/4A
Texas Instruments TI-99/4A
The Texas Instruments TI-99/4A was an early home computer, released in June 1981, originally at a price of USD $525. It was an enhanced version of the less-successful—and quite rare—TI-99/4 model, which was released in late 1979 at a price of $1,150...

 and MSX
MSX
MSX was the name of a standardized home computer architecture in the 1980s conceived by Kazuhiko Nishi, then Vice-president at Microsoft Japan and Director at ASCII Corporation...

 home-computers, which were called "Video Display Controller
Video Display Controller
A Video Display Controller or VDC is an integrated circuit which is the main component in a video signal generator, a device responsible for the production of a TV video signal in a computing or game system...

s". The graphics processor chip in the Commodore Amiga
Amiga
The Amiga is a family of personal computers that was sold by Commodore in the 1980s and 1990s. The first model was launched in 1985 as a high-end home computer and became popular for its graphical, audio and multi-tasking abilities...

 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.

Intel coprocessors

The original IBM PC
IBM PC
The IBM Personal Computer, commonly known as the IBM PC, is the original version and progenitor of the IBM PC compatible hardware platform. It is IBM model number 5150, and was introduced on August 12, 1981...

 included a socket for the Intel 8087
Intel 8087
The Intel 8087, announced in 1980, was the first floating-point coprocessor for the 8086 line of microprocessors. It had 45,000 transistors and was manufactured as a 3 μm depletion load HMOS circuit. The 8087 was built to be paired with the Intel 8088 or 8086 microprocessors...

 floating-point coprocessor (aka FPU
Floating point unit
A floating-point unit is a part of a computer system specially designed to carry out operations on floating point numbers. Typical operations are addition, subtraction, multiplication, division, and square root...

) 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
Machine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...

 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
Intel 8089
The Intel 8089 input/output coprocessor was available for use with the 8086/8088 central processor. 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.Because IBM didn't use it...

 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
Weitek
Weitek Corporation was a chip-design company that originally concentrated on floating point units for a number of commercial CPU designs. During the early to mid-1980s, Weitek designs could be found powering a number of high-end designs and parallel processing supercomputers...

. The Intel 80386
Intel 80386
The Intel 80386, also known as the i386, or just 386, was a 32-bit microprocessor introduced by Intel in 1985. The first versions had 275,000 transistors and were used as the central processing unit of many workstations and high-end personal computers of the time...

 microprocessor
Microprocessor
A microprocessor incorporates the functions of a computer's central processing unit on a single integrated circuit, or at most a few integrated circuits. It is a multipurpose, programmable device that accepts digital data as input, processes it according to instructions stored in its memory, and...

 used an optional "math" coprocessor (the 80387) to perform floating point operations directly in hardware
Computer hardware
Personal computer hardware are component devices which are typically installed into or peripheral to a computer case to create a personal computer upon which system software is installed including a firmware interface such as a BIOS and an operating system which supports application software that...

.

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.

Motorola coprocessors

The Motorola 68000
Motorola 68000
The Motorola 68000 is a 16/32-bit CISC microprocessor core designed and marketed by Freescale Semiconductor...

 family had the 68881/68882
Motorola 68881
The Motorola 68881 and Motorola 68882 were floating-point coprocessor chips that were used in some computer systems in conjunction with the 68020 or 68030 CPUs. The addition of one of these chips added substantial cost to the computer, but added a floating point unit that could rapidly perform...

 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

, dedicated Graphics Processing Units (GPUs) in the form of graphics cards are commonplace. Certain models of sound card
Sound card
A sound card is an internal computer expansion card that facilitates the input and output of audio signals to and from a computer under control of computer programs. The term sound card is also applied to external audio interfaces that use software to generate sound, as opposed to using hardware...

s have been fitted with dedicated processors providing digital multichannel mixing and real-time DSP effects as early as 1990 to 1994 (the Gravis Ultrasound
Gravis Ultrasound
Gravis UltraSound or GUS is a sound card for the IBM PC compatible system platform, made by Canada-based Advanced Gravis Computer Technology Ltd...

 and Sound Blaster AWE32
Sound Blaster AWE32
Sound Blaster AWE32 is an ISA sound card from Creative Technology. It is an expansion board for PCs. The Sound Blaster AWE32, introduced in March 1994, was a near full-length ISA sound card, measuring 14 inches in length, due to the number of features included.-MIDI capability:The Sound Blaster...

 being typical examples), while the Sound Blaster Audigy
Sound Blaster Audigy
Sound Blaster Audigy is a product line of sound cards from Creative Technology. The flagship model of the Audigy family used the EMU10K2 audio DSP, an improved version of the SB-Live's EMU10K1, while the value/SE editions were built with a less-expensive audio controller...

 and the Sound Blaster X-Fi
Sound Blaster X-Fi
Sound Blaster X-Fi is a lineup of sound cards in Creative Labs' Sound Blaster series.-History:The series was launched in August 2005 as a lineup of PCI sound cards, served as the introduction for their X-Fi audio processing chip, with models ranging from XtremeMusic , to Platinum, Fatal1ty FPS, and...

 are more recent examples.

In 2006, AGEIA
AGEIA
Ageia, founded in 2002, was a fabless semiconductor company. Ageia invented PhysX – a Physics Processing Unit chip capable of performing game physics calculations much faster than general purpose CPUs; they also licensed out the PhysX SDK , a large physics middleware library for game...

 announced an add-in card for computers that it calls PhysX
PhysX
PhysX is a proprietary realtime physics engine middleware SDK developed by Ageia with the purchase of ETH Zurich spin-off NovodeX in 2004...

. 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
CUDA
CUDA or Compute Unified Device Architecture is a parallel computing architecture developed by Nvidia. CUDA is the computing engine in Nvidia graphics processing units that is accessible to software developers through variants of industry standard programming languages...

 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.

The SpursEngine
SpursEngine
SpursEngine is a microprocessor from Toshiba built as a media oriented coprocessor, designed for 3D- and video processing in consumer electronics such as set-top boxes and computers. The SpursEngine processor is also known as the Quad Core HD processor...

 is a media-oriented add-in card with a coprocessor based on the Cell
Cell (microprocessor)
Cell is a microprocessor architecture jointly developed by Sony, Sony Computer Entertainment, Toshiba, and IBM, an alliance known as "STI". The architectural design and first implementation were carried out at the STI Design Center in Austin, Texas over a four-year period beginning March 2001 on a...

 microarchitecture.

In 2008 Khronos group released the OpenCL
OpenCL
OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors. OpenCL includes a language for writing kernels , plus APIs that are used to define and then control the platforms...

 with the aim to support general purpose CPUs and both ATI/AMD and Nvidia GPUs, with a single common language.

Other coprocessors

  • The MIPS
    MIPS architecture
    MIPS is a reduced instruction set computer instruction set architecture developed by MIPS Technologies . The early MIPS architectures were 32-bit, and later versions were 64-bit...

     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 server
    Server (computing)
    In the context of client-server architecture, a server is a computer program running to serve the requests of other programs, the "clients". Thus, the "server" performs some computational task on behalf of "clients"...

    s.
  • Some multi-core
    Multi-core (computing)
    A multi-core processor is a single computing component with two or more independent actual processors , which are the units that read and execute program instructions...

     chips can be programmed so that one of their processors is the primary processor, and the other processors are supporting coprocessors.

See also

  • Floating point
    Floating point
    In computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16...

  • IEEE 754-2008 Standard for Floating-Point Arithmetic
  • Multiprocessing
    Multiprocessing
    Multiprocessing is the use of two or more central processing units within a single computer system. The term also refers to the ability of a system to support more than one processor and/or the ability to allocate tasks between them...

    , the use of two or more CPUs within a single computer system
  • Torrenza
    Torrenza
    Torrenza was an initiative announced by Advanced Micro Devices in 2006 to improve support for the integration of specialized coprocessors in systems based on AMD Opteron microprocessors...

    , an initiative to implement coprocessor support for AMD processors
  • Hybrid-core computing
    Hybrid-core computing
    Hybrid-core computing is the technique of extending a commodity instruction set architecture with application-specific instructions to accelerate application performance...

    , extending a commodity instruction set architecture with application-specific instructions
  • OpenCL
    OpenCL
    OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors. OpenCL includes a language for writing kernels , plus APIs that are used to define and then control the platforms...

     framework for writing programs that execute across heterogeneous platforms
  • Asymmetric multiprocessing
    Asymmetric multiprocessing
    Asymmetric multiprocessing, or AMP, was a software stopgap for handling multiple CPUs before symmetric multiprocessing, or SMP, was available.Multiprocessing is the use of more than one CPU in a computer system...

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK