El 8087 era un circuit integrat avançat, empenyent els límits de la tecnologia de fabricació de l'època. Les operacions bàsiques del 8087, com ara la suma i la resta, poden trigar més de 100 cicles de màquina a executar-se i algunes instruccions superen els 1000 cicles. El xip no té un multiplicador de maquinari i implementa càlculs mitjançant l'algorisme CORDIC.[3] Les vendes del 8087 van rebre un augment significatiu quan es va incloure un sòcol de coprocessador a la placa base d'IBM PC de 1981. El desenvolupament del 8087 va donar lloc a l'estàndard IEEE 754-1985 per a l'aritmètica de coma flotant. Més tard hi va haver coprocessadors x87 per als processadors 80186, 80286, 80386 i 80386SX. A partir del 80486, els posteriors processadors Intel x86 no utilitzaven un coprocessador de coma flotant separat; Les funcions de coma flotant es van integrar amb el processador.
Disseny i desenvolupament
Intel havia fabricat anteriorment la unitat de processament aritmètica8231 i el processador de coma flotant8232. Aquests van ser dissenyats per utilitzar-los amb processadors 8080 o similars i utilitzaven un bus de dades de 8 bits. Estaven connectats a un sistema host mitjançant E/S programada o un controlador DMA.
El 8087 va ser concebut inicialment per Bill Pohlman, el gerent d'enginyeria d'Intel que va supervisar el desenvolupament del xip 8086. Bill va prendre mesures per assegurar-se que el xip 8086 podria suportar un xip matemàtic que encara no s'ha desenvolupat.
Els codis d'operació del coprocessador es codifiquen en 6 bits a través de 2 bytes, començant per la seqüència d'escapada:
┌───────────┬───────────┐
│ 1101 1xxx.. │ mmxx xrrr....│
└───────────┴───────────┘
Els tres primers bits "x" són els tres primers bits del codi operatiu de coma flotant. A continuació, dos "m" bits, després la darrera meitat tres bits del codi d'operació de coma flotant, seguit de tres bits "r". Els bits "m" i "r" especifiquen la informació del mode d'adreçament.[4]
Els programes d'aplicació s'havien d'escriure per fer ús de les instruccions especials de coma flotant. En temps d'execució, el programari podria detectar el coprocessador i utilitzar-lo per a operacions de coma flotant. Quan no es detectava, s'havien de calcular funcions similars de coma flotant al programari, o es podia emular tot el coprocessador al programari per a una compatibilitat numèrica més precisa.
Registres
La família x87 no utilitza un conjunt de registres directament adreçable com els registres principals dels processadors x86; en canvi, els registres x87 formen una estructura de pila profunda de vuit nivells [5] que va de st0 a st7, on st0 és la part superior. Les instruccions x87 funcionen pressionant, calculant i mostrant valors en aquesta pila. Tanmateix, les operacions diàdiques com FADD, FMUL, FCMP, etc. poden utilitzar implícitament els st0 i st1 més alts o poden utilitzar st0 juntament amb un operand o registre de memòria explícit ; Així, el registre st0 es pot utilitzar com a acumulador (és a dir, com a destinació combinada i operand esquerre) i també es pot intercanviar amb qualsevol dels vuit registres de pila utilitzant una instrucció anomenada FXCH st X (codis D9C8–D9CFh). Això fa que la pila x87 es pugui utilitzar com a set registres adreçables lliurement més un acumulador. Això és especialment aplicable als processadors x86 superescalars (Pentium de 1993 i posteriors), on aquestes instruccions d'intercanvi s'optimitzen fins a una penalització de rellotge zero.
Referències
↑ 1,01,1«8087» (en anglès). Coprocessor Dot Info. Arxivat de l'original el 30 setembre 2011. [Consulta: 1r desembre 2011].
↑ 2,02,1«Intel FPU» (en anglès). cpu-collection.de. [Consulta: 1r desembre 2011].