Share on Facebook Share on Twitter Email
Answers.com

X87

 

x87 is a math-related instruction subset of the x86 architecture of processors. It is so called because initially such instructions were processed by an external coprocessor chip with a number ending in 87. Like other extensions to the basic processor instruction set, these instructions are not strictly needed to construct working programs, but provide hardware implementation of common mathematical tasks, allowing these tasks to be performed much faster. For example, the x87 instruction set includes instructions to calculate the sine or cosine of a value.

All Intel and AMD processors since the 80486DX have had these instructions built into the main CPU. The term "x87" is still used to refer to that part of the instruction set that performs conventional floating point operations; compilers may use these instructions to make code that operates faster than if it used library calls to perform floating-point operations.

The x87 instructions are compatible with the IEEE-754 standard for floating-point. However, x87 does not perform operations according to strict IEEE-754 formats, since it uses wide registers internally. A given sequence of arithmetic operations may thus behave differently on a x87 and a processor implementing strict IEEE-754 formats.[1]

The x87 does not organise its registers as a register array, as most computer architectures do, but as a register stack, meaning that only the top two registers are available for operations, and that accessing the other registers requires stack-manipulation operations. While convenient for human programmers, this organisation makes it difficult for compilers to schedule x87 code effectively.

Starting from the Pentium III, the SSE unit implements single-precision, then in later versions double-precision, IEEE-754 formats. Since the introduction of SSE2, the x87 unit is largely deprecated[citation needed] in the 64-bit x86-64 architecture and associated 64-bit implementations of operating systems such as Microsoft Windows, Mac OS X, Solaris, FreeBSD, and Linux, though it is still well supported for full compatibility with older applications.

Contents

8087

The 8087 was the first math coprocessor for 16 bit processors designed by Intel (the I8231 was older but designed for the 8 bit Intel 8080); it was built to be paired with the Intel 8088 and 8086 microprocessors.

80287

6 MHz version of the Intel 80287

The 80287 (i287) was the math coprocessor for the Intel 80286 series of microprocessors. Intel (and its competitors) later introduced an 80287XL, which was actually an 80387SX with a 287 pinout. The 80287XL contained an internal 3/2 multiplier so that motherboards which ran the coprocessor at 2/3 CPU speed could instead run the FPU at the same speed of the CPU.

The 80287 and 80287XL also worked with the 80386 microprocessor, and was initially the only coprocessor available for the 80386 until the introduction of the 80387 in 1987. Finally, it was also able to work with the Cyrix Cx486SLC. However for both of these chips the 80387 was strongly preferred for performance reasons and the greater capability of the instruction set.

Models

  • i80287-3 (6MHz)
  • i80287-6 (6MHz)
  • i80287-8 (8MHz)
  • i80287-10 (10MHz)
  • i80287-12 (12.5MHz)
  • i80287XL (12.5MHz, 387SX core)
  • i80287XLT (12.5MHz, laptop version)

80387

The 80387 (387 or i387) was the first Intel coprocessor to be fully compliant with the IEEE 754 standard. Released in 1987, a full two years after the 386 chip, the i387 included much improved speed over Intel's previous 8087/80287 coprocessors, and improved the characteristics of trigonometric functions. (The 80287 limited the argument range to plus or minus 45 degrees.)

Without a coprocessor, the 386 normally performed floating-point arithmetic through (slow) software routines, implemented at runtime through a software exception-handler. When a math coprocessor is paired with the 386, the coprocessor performs the floating point arithmetic in hardware, returning results much faster than an (emulated) software library call.

The i387 was compatible only with the standard i386 chip, which had a 32-bit processor bus. The later cost-reduced i386SX, which had a narrower 16-bit data bus, could not interface with the i387's 32-bit bus. The i386SX required its own coprocessor, the Intel 80387SX, which was compatible with the SX's narrower 16-bit data-bus.

80487

The i487 is a floating point unit coprocessor for Intel i486SX machines. It was essentially a full-blown i486DX chip. When installed into an i486SX system, the i487 disabled the main CPU and took over all CPU operations. In theory the computer would be able to operate if the original i486SX CPU was removed, although in practice a pin on the i487 prevented this.

NexGen Nx587

NexGen – the only member

References

  1. ^ David Monniaux, The pitfalls of verifying floating-point computations, to appear in ACM TOPLAS
  • Intel Corp., IA-32 Intel Architecture Software Developer's Manual Volume 1: Basic Architecture, order number 253665-017

See also

External links


Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
 
 
Learn More
Technical Floating Point
Control register
Intel 80387

Help us answer these
Answer to 7x-7 equals -x-87?

Post a question - any question - to the WikiAnswers community:

 

Copyrights:

Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "X87" Read more