ARCHIVED: What are math coprocessors?

This content has been archived, and is no longer maintained by Indiana University. Information here may no longer be accurate, and links may no longer be available or reliable.

The following information comes from the Usenet:

  Article 18096 of comp.sys.ibm.pc.hardware:
  Xref: usenet.ucs.indiana.edu comp.sys.intel:1907
  comp.sys.ibm.pc.hardware:18096
  Path:
  usenet.ucs.indiana.edu!sol.ctr.columbia.edu!ira.uka.de!uka!uka!news
  From: S_JUFFA@IRAV1.ira.uka.de (|S| Norbert Juffa)
  Newsgroups: comp.sys.intel,comp.sys.ibm.pc.hardware
  Date: 13 Jan 1993 19:31:19 GMT
  Organization: University of Karlsruhe, FRG

A math coprocessor in the traditional sense is a chip or part of a chip that specializes in doing math, extending the capabilities of a CPU in a transparent manner. It is a piece of hardware that attaches to the motherboard or is part of the CPU.

The 80x87 family of math coprocessors (also known as MCPs [Math CoProcessors], NDPs [Numerical Data Processors], NPXs [Numerical Processor eXtensions], or FPUs [Floating-Point Units], or "math chips") are typical examples of such coprocessors. The 80x86 CPUs, with the exception of the 80486 (which has a built-in FPU) can only handle 8, 16, or 32 bit integers as their basic data types. However, many PC-based applications require the use of not only integers, but floating-point numbers. The use of floating-point numbers enables a binary representation of not only integers, but also fractional values over a wide range. A common application of floating-point numbers is in scientific applications, where very small (e.g., Planck's constant) and very large numbers (e.g., speed of light) must be accurately expressed. But floating-point numbers are also useful for business applications such as computing interest, and in the geometric calculations inherent in CAD/CAM processing.

Because the instruction sets of all 80x86 CPUs directly support only integers and calculations upon integers, floating-point numbers and operations on them must be programmed indirectly by using series of CPU integer instructions. This means that computations when floating-point numbers are used are far slower than normal, integer calculations. And this is where the 80x87 coprocessors come in: adding an 80x87 to an 80x86-based system augments the CPU architecture with eight floating-point registers, five additional data types and over 70 additional instructions, all designed to deal directly with floating-point numbers as a basic data type. This removes the 'penalty' for floating-point computations, and greatly increases overall system performance for applications which depend heavily on these calculations.

In addition to being able to quickly execute load/store operations on floating-point numbers, the 80x87 coprocessors can directly perform all the basic arithmetic operations on them. Besides "knowing" how to add, subtract, multiply and divide floating-point numbers, they can also operate on them to perform comparisons, square roots, transcendental functions (such as logarithms and sine/cosine/tangent), and compute their absolute value and remainder.

Floating-point arithmetic has been standardized. The relevant standard is the "IEEE-754 Standard for Binary Floating-Point Arithmetic" [10,11]. The standard specifies numeric formats, value sets and how the basic arithmetic (+,-,*,/,sqrt, remainder) has to work.

If you have questions about using statistical and mathematical software at Indiana University, contact the UITS Research Applications and Deep Learning team.

This is document aank in the Knowledge Base.
Last modified on 2018-01-18 08:55:58.