Coprocessor
A coprocessor is a
Functionality
Coprocessors vary in their degree of autonomy. Some (such as
capable of both modes of operation.History
To make the best use of mainframe computer processor time, input/output tasks were delegated to separate systems called Channel I/O. The mainframe would not require any I/O processing at all, instead would just set parameters for an input or output operation and then signal the channel processor to carry out the whole of the operation. By dedicating relatively simple sub-processors to handle time-consuming I/O formatting and processing, overall system performance was improved.
Coprocessors for floating-point arithmetic first appeared in
Another form of coprocessor was a video display coprocessor, as used in the
manipulation in memory.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 coprocessors are now uncommon in desktop computers. The demand for a
Intel
The original
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 did not use it in IBM PC design and Intel stopped development of this type of coprocessor.
The
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.
During the era of 8- and 16-bit desktop computers another common source of floating-point coprocessors was Weitek. These coprocessors had a different instruction set from the Intel coprocessors, and used a different socket, which not all motherboards supported. The Weitek processors did not provide transcendental mathematics functions (for example, trigonometric functions) like the Intel x87 family, and required specific software libraries to support their functions.[2]
Motorola
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.[3]
Modern coprocessors
As of 2001[update], dedicated Graphics Processing Units (
In 2006,
In 2006, BigFoot Systems unveiled a PCI add-in card they christened the KillerNIC which ran its own special Linux kernel on a FreeScale
The
In 2008, Khronos Group released the OpenCL with the aim to support general-purpose CPUs, ATI/AMD and Nvidia GPUs (and other accelerators) with a single common language for compute kernels.
In 2010s, some mobile computation devices had implemented the
In 2012,
As of 2016[update], various companies are developing coprocessors aimed at accelerating
Other coprocessors
- 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.[5]
- Using ARMcores with FPGA on a single die).
- TLS/SSL accelerators, used on servers; such accelerators used to be cards, but in modern times are instructions for crypto in mainstream CPUs.
- Some multi-corechips can be programmed so that one of their processors is the primary processor, and the other processors are supporting coprocessors.
- China's Matrix 2000 128 core PCI-e coprocessor is a proprietary accelerator that requires a CPU to run it, and has been employed in an upgrade of the 17,792 node Tianhe-2 supercomputer (2 Intel Knights Bridge+ 2 Matrix 2000 each), now dubbed 2A, roughly doubling its speed at 95 petaflops, exceeding the world's fastest supercomputer.[6]
- A range of coprocessors were available for Acorn BBC Micro computers. Rather than special-purpose graphics or arithmetic devices, these were general-purpose CPUs (such as 8086, Zilog Z80, or 6502) to which particular types of task were assigned by the operating system, off-loading them from the computer's main CPU and resulting in acceleration. In addition, a BBC Micro fitted with a coprocessor was able to run machine code software designed for other systems, such as CP/M and DOS which are written for 8086 processors.
Trends
Over time CPUs have tended to grow to absorb the functionality of the most popular coprocessors. FPUs are now considered an integral part of a processors' main pipeline; SIMD units gave multimedia its acceleration, taking over the role of various DSP accelerator cards; and even GPUs have become integrated on CPU dies. Nonetheless, specialized units remain popular away from desktop machines, and for additional power, and allow continued evolution independently of the main processor product lines.
See also
- Multiprocessing, the use of two or more CPUs within a single computer system
- Torrenza, an initiative to implement coprocessor support for AMD processors
- OpenCL framework for writing programs that execute across heterogeneous platforms
- Asymmetric multiprocessing
- AI accelerator
References
- ISBN 0-7897-2974-1, pages 108–110
- ISBN 0-88022-856-3, pp. 412-413
- ^ William Ford, William R. Topp
Assembly language and systems programming for the M68000 family Jones & Bartlett Learning, 1992 ISBN 0-7637-0357-5page 892 and ff.
- ^ "Intel Delivers New Architecture for Discovery with Intel® Xeon Phi™ Coprocessors". Newsroom.intel.com. 2012-11-12. Archived from the original on 2013-06-03. Retrieved 2013-06-16.
- ISBN 1-55860-297-6, appendix A3 page 330
- ^ "China's Tianhe-2A will Use Proprietary Accelerator and Boast 95 Petaflops Peak". hpcwire.com. 25 September 2017. Archived from the original on 1 December 2020. Retrieved 7 April 2018.