Les
Intel 8087
furent les premiers
coprocesseurs mathematiques
concus par
Intel
en
1980
pour les machines 16 bits (le
8231
est plus ancien, mais concu pour le processeur 8 bit
Intel 8080
).
Il etait concu pour etre utilise avec les
microprocesseurs
Intel 8088
et
8086
. Le but du 8087, le premier de la famille
x87
, etait d'accelerer des calculs pour des applications demandant un traitement avec des nombres a virgule flottante. Les performances d'execution augmenterent de 20 % a 500 % selon les applications. Le 8087 pouvait atteindre la performance de 50 k
FLOP
/s, dependant de l'operation demandee.
Ce coprocesseur introduit environ 60 nouvelles instructions disponibles pour le programmeur, dont les mnemoniques commencent tous par la lettre F pour les differencier des instructions arithmetiques sur les
entiers
disponibles nativement sur les 8086/88. Par exemple, pour les additions et multiplications, realisees par les instructions 8086/88 ADD et MUL qui portent sur des entiers, le 8087 ajoute les instructions FADD et FMUL, portant sur des nombres en virgule flottante. Dans le code machine binaire, toutes ces instructions commencaient par la suite de bits 11011, ce qui fait 27 en decimal, le code ASCII de la touche ESCAPE : on parle parfois d'
escape opcodes
.
Les 8087 (et, en fait, toute la famille des x87) ne fournissent pas un ensemble lineaire de
registres
tels que les registres AX/BX/CX/DX des processeurs 8086/88 et
80286
. Les registres de travail des x87 sont structures sous une certaine forme de
pile
(cependant elle n'est pas exactement comme une
structure de donnees
typique de pile) s'etendant de ST0 a ST7. Les instructions en virgule flottante des coprocesseurs x87 operent des push et des pop de valeurs sur cette pile.
Quand Intel concut le 8087, il souhaita standardiser en partie ses specifications. Intel integra donc le groupe de travail de la future norme
IEEE 754
portant sur la representation des nombres en virgule flottante. Le 8087 est donc historiquement tres important car ses specifications servirent de base a ce qui devint la norme IEEE 754 en 1985. Cependant le 8087 est sorti en 1980, a une epoque ou le standard IEEE 754 n'en etait qu'au stade de brouillon. Il n'implemente donc pas le standard IEEE 754 dans tous ses details. La premiere unite de calcul en virgule flottante IEEE 754 est l'Intel
80387
.
Les 8087 fournissaient deux representations pour les nombres virgule flottante, sur 32 et 64
bits
, ainsi qu'un support interne etendu aux donnees 80 bits pour ameliorer la precision sur de gros calculs grands et complexes. Independamment de ceci, les 8087 offraient un format 80 bits a 17 chiffres en
decimal code en binaire
et un
format de donnees
16, 32 et 64 bits dans les entiers.
Le 8087 differait des coprocesseurs Intel suivants par le fait qu'il etait directement connecte aux bus d'adresses et de donnees. Le 8088/86 cherchait une instruction qui commencait avec la sequence '11011' et laissait le controle au coprocesseur. Le coprocesseur rendait la main une fois que la sequence d'instruction du coprocesseur prenait fin. Les coprocesseurs suivants d'Intel ne se connectaient pas de la meme facon aux bus, mais leurs instructions etaient delivrees par le processeur principal.
Les 8087, annonces en
1980
, ont ete remplaces par les
80287
et
80387
. Les generations suivantes de processeurs
Intel x86
, a partir du
80486
, n'utilisent plus de coprocesseur separe pour le calcul en virgule flottante, mais l'incluent directement sur leur
die
, a l'exception notable du
80486SX
qui etait un 80486DX modifie ou l'unite de calcul en virgule flottante, testee defectueuse, avait ete desactivee. Le 80487 etait en fait un 80486DX complet avec une broche supplementaire. Quand il etait installe, il desactivait le 80486SX. Le 80486DX, Pentium, et processeurs suivants incluent directement en leur cœur les fonctionnalites de calculs en virgule flottante.