Intel 8087 is a numeric co-processor for Intel 8086, 8088, 80186 and 80188 processors. The 8087 has 8 80-bit general registers implemented as a stack. All floating point operations are performed with data from the stack (usually the data at the top of the stack) and data from external memory. Effective address calculation for external memory accesses is performed by the main processor. Both the main processor and the 8087 decode floating-point instructions (they all start from ESCAPE bit pattern). If the decoded instruction references the memory then the main processor calculates memory effective address and performs "dummy read" of memory. The Intel 8087 captures the memory address and, possibly, data, and uses the captured address to read more data or write data to memory. After that the main processor may continue to execute integer instructions without waiting until the 8087 completes execution of the FP instruction. To synchronize execution of multiple FP instructions the main processor used WAIT (FWAIT) instruction to wait until the co-processor becomes available. Because the integer instructions and floating-point instructions could be executed in parallel, it was common to see integer and FP instructions intermixed in x86 programs.
Intel 8087 co-processor supports integer, BCD, single and double precision floating-point numbers, as well as extended precision (80-bit) floating-point numbers. When the 8087 loads data from memory it always converts it internally to extended-precision number, and all further calculations are performed with this number. This is why switching from double to single-precision number or from 64-bit integer to 32-bit or 16-bit integer numbers doesn't provide any significant performance boost.
Intel was not the only manufacturer of this co-processor. AMD and Cyrix Corporation both produced 8087 co-processors. Soviet Union produced clones of 8087 FPU. There are 8087 co-processors stamped "IBM", but it seems that IBM Corporation didn't manufacture the chips and only re-branded Intel chips.
0 comments:
Post a Comment