[i8087] De l'utilité du coprocesseur

Pour tout ce qui touche au PC d'IBM et ses nombreux descendants. Attention tout de même, au delà de quelques MHz la discussion devient vite hors sujet.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

[i8087] De l'utilité du coprocesseur

Message par fneck »

Un très long message sur un sujet hautement philosophique, le coprocesseur mathématique est connu et généralement apprécié par les collectionneurs pour augmenter la vitesse d'exécution du PC. Pourtant ce dernier n'augmente absolument pas directement ni la vitesse, ni la puissance de calcul de l'ordinateur, non, il est plus exact de dire qu'il augmente la vitesse d'exécution d'un logiciel particulier, si et seulement si celui-ci sait l'utiliser.

Le coprocesseur mathématique i8087 ou unité de calcul à virgule flottante, NPU (Numeric Processor Unit) ou FPU (Floating Point Unit) en anglais:
Image

Je ne rentre pas plus en détail sur l'histoire, l'architecture, le fonctionnement interne ou la liaison avec le processeur principal, pour ceci je vous propose simplement de lire certains liens :
- Wikipedia en français ou en anglais.
- Sur le site d'Intel un document d'une dizaine de page en anglais.
- Une FAQ sur les coprocesseurs mathémathiques de plus de 100 pages en anglais.

Ce que je souhaite aborder ici c'est son utilité, à savoir quels sont les logiciels qui l'utilisent réellement. Ce sujet est assez flou, certains sur internet ont déjà fait l'exercice, je vais d'ailleurs citer quelques liens, les résultats sont parfois interprétables voire discutables.

En fait, il faut retracer un peu l'histoire des processeurs Intel pour situer la position du i8087. celui-ci accompagne les processeurs i8088 et i8086 depuis la sortie de l'IBM PC en 1981 jusqu'à la fin de la commercialisation, difficile à situer précisément, je dirais qu'en France on a trouvé des compatibles XT jusqu'en 91 alors que le marché disposait déjà des ordinateurs à base de 80286, 80386 et 80486 (depuis respectivement 1984, 1987 et 1989). Le processeur 486 est un tournant pour l'utilisation des coprocesseurs mathématiques puisqu'à partir de cette génération ils sont intégrés au processeur.

Il faut aussi se rappeler que le coprocesseur coutait très très cher. J'ai un souvenir de 2000 ou 3000 francs autour de 1985 (point à vérifier) alors que le SMIC était de 600 francs brut à cette date [<- ERREUR, le SMIC est à environ 4000 francs en 1985]. En recherchant des informations, je suis tombé sur cet article publié dans Infoworld d'avril 1985 qui nous explique qu'en cette année les 8087 et 80287 seront disponibles à la vente directement. Avant pour s'en procurer un il fallait passer pas un revendeur IBM. Cet article nous dit aussi qu'une 50aine d'applications utilisent le coprocesseur mais ne les liste pas.

Pourquoi je parle de tout cela, simplement pour se resituer dans le contexte des premiers PC et comprendre que le coprocesseur n'était pas présent par défaut dans les ordinateurs. Et que pour l'ajouter il fallait avoir une bonne raison. Encore moins dans le milieu familial, parce que pour se payer un compatible PC il fallait déjà bien mettre la main au portefeuille, alors de là à ajouter un coprocesseur...

Et donc du coté des éditeurs, puisque pour utiliser le coprocesseur il faut générer un code adapté à ce dernier mais que le marché est quasiment inexistant, il est facile d'en déduire que très peu d'applications "généralistes" sont développées pour l'utiliser. A commencer par tous les jeux des années 80, à ma connaissance aucun de ces jeux n'est accéléré par l'utilisation d'un coprocesseur.

Un lien qui retrace ce travail de recherche déjà effectué : https://ctrl-alt-rees.com/2019-06-06-li ... r-fpu.html

On peut noter que dans la liste qu'il propose, on voit beaucoup de "Unverified", et pour d'autres, comme Microsoft Windows par exemple pour lequel je ne suis absolument pas convaincu de l'utilisation du coprocesseur. En suivant les liens au bas de sa page on trouve sur le forum VCFed quelques fils intéressants. En parcourant ceux-ci puis en suivant d'autre liens on retrouve des explications intéressante sur la difficulté de savoir si une application utilise ou non le coprocesseur. Et même sur la pertinence d'utiliser un calcul en virgule flottante par rapport à un calcul sur des entiers pour un jeu du style de Flight Simulator. Certains on même démontré que l'utilisation du coprocesseur sur une machine peu puissante pouvait réduire la vitesse d'exécution par rapport à un calcul sur des entiers.

La situation sera probablement différente à partir de 1990, alors que le 486 s'installe durablement avec son coprocesseur intégré, sa puissance énorme en comparaison du 8086, la baisse du prix de la mémoire et l'utilisation de la mémoire étendue. Le éditeurs peuvent maintenant trouver un intérêt à programmer en utilisant le code du coprocesseur. Un peu donc retrouver ici des logiciels utilisant le 8087 mais fonctionnant difficilement sur un 8087. Je pense enfin qu'on peut associer le 80287 à cet topic, sa situation n'est pas très différente.

A noter, concernant les langages de programmations, il faut bien différencier le fait que le programme nécessite et/ou utilise le coprocesseur ou soit capable de générer un code l'utilisant. Ce n'est pas pareil. On retrouve aussi tous les "benchmarks" qui l'utilisent, forcément c'est leur rôle. Je vous propose donc de compléter cette liste mais uniquement avec des informations les plus fiables possible.

La liste (à compléter) :
- Autocad (v1 en 1982 mais à vérifier si utilisation du 8087 dès celle-ci. Confirmé pour la v2.63 et NPU obligatoire à/c v9 en 1987)
- Borland Turbo Pascal 2 avec extension optionnelle Turbo-87 (1984)
- Eureka (1987)
- FoxBASE Plus v2 (1989)
- IBM Fortran (= Microsoft Fortran)
- Lotus 123 à partir de la version 2 (1985)
- Mathcad v2 (1986)
- VersaCAD (1983)

Outils de développement pouvant générer du code pour i8087 :
- Borland Turbo Basic (1987)
- Borland Turbo C (1987)
- Borland Turbo Pascal 2 (1984)
- Microsoft C
- Microsoft Macro Assembler MASM 3.0 (1984)
- Microsoft Quick Basic 4.5 (1988)
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par jvernet »

Autocad j'ai fait le test (avec la navette). Sur un 8086 avec 8087, la navette s'affiche en moins d'une minute, sans, elle va mettre une bonne dizaine de minutes.
QuickBASIC version 4.5 génère bien du code 8087 (essayer TORUS.BAS avec ou sans !!).

Tous les langages Turbo de Borland génèrent aussi du code x87, au moins à partir de Turbo Pascal 3, Turbo C 1.0.

Flight Simulator, avec ou sans, pas vu de différences.
J'utilise 86Box pour tester.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [i8087] De l'utilité du coprocesseur

Message par __sam__ »

D'après http://www.vcfed.org/forum/showthread.p ... ad95b8f2dc

Il y aurait:
* les programmes de CAO (AutoCAD, VersaCAD, GenericCAD)
* les tableurs (Lotus 1-2-3, Excel, Quattro, Wingz)
* les programmes d'info-graphie (Arts&Letters, Freedom of Press, Freelance)
* les programmes d'analyse numérique & statistiques (Matlab, Mathematica, TKSolver, SPSS/PC, Statgraphics)
* les bases de données (dBase IV, FoxBase, Paradox, Revelation)

Mais aussi
* des jeux (simcity, stuntcar racer, pub pool, scorched earth, flight simulator, falcon 3 flight simulator)
* des "utilitaires" (fractint)
* Quickbasic 4.5
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par 6502man »

Oui les compilateurs Borland turbo C il y à une option pour compiler pour des coprocesseurs mathématique et il y à aussi une option pour utiliser
les calculs en virgules flottantes ou non :roll:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Avatar de l’utilisateur
bubulemaster
Messages : 1082
Inscription : 01 juil. 2014 13:48
Localisation : Nantes

Re: [i8087] De l'utilité du coprocesseur

Message par bubulemaster »

fneck a écrit : 15 déc. 2020 12:18 Le processeur 486 est un tournant pour l'utilisation des coprocesseurs mathématiques puisqu'à partir de cette génération ils sont intégrés au processeur.
Alors oui techniquement parlant mais si le FPU était défectueux, les liaisons étaient coupées au laser et le processeur était vendu en tant que 486SX. C'est à partir du Pentium (586) que le FPU est livré et fonctionnel en standard.
Il y avait en plus (je viens de le découvrir), un coprocesseur 487 :o
Le 80286 et suivant sont des processeurs beaucoup trop évolués qui n'auraient jamais dû être inventés :-).
Vinted | Le bon coin | Ebay
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par fneck »

Pour Autocad, je n'ai pas trouvé à partir de quelle version le coprocesseur était supporté par contre j'ai trouvé dans cet extrait de bouquin qu'à partir de la version 9 (1987) celui-ci était obligatoire.

Dans la liste présentée par Sam on trouve beaucoup de choses, dont certaines qui semblent néanmoins peu fiables. Elle se rapproche beaucoup du blog que j'avais posté dans le premier message. Par exemple pour Flight Simulator, je suis certain que les deux premières versions ne supportent pas le coprocesseur, après je ne sais pas. Dans ce topic sur VCFed encore, Trixter qui semble assez bien maitriser le sujet dit "Microsoft Flight Simulator 1.x through 4.x do not use a math coprocessor". Donc en arrive à la version 5 de FS qui date de 1993 et qui ne tourne probablement plus sur un 8086.

Pareil pour Falcon 3, ce jeu date de 1991 et utilise bien coprocesseur pour un mode "high fidelity" mais nécessite a minima un 386 pour fonctionner, donc hors sujet pour notre 8087. Que ceux qui sont intéressés lisent les deux pages du topic sur le forum de VCFed, Trixer explique en page 2 pourquoi selon lui on trouve dans le code des jeux Ms-Dos la trace d'une bibliothèque 8087 lié à Microsoft C qui a servi à créer ces jeux. Je ne sais pas si c'est vrai mais ça se tient.

Bon j'ai pas encore vérifié pour chaque logiciel de cette liste mais je pense qu'on en revient souvent à ce que j'ai exposé dans le premier message, à savoir qu'on va trouver un support du coprocesseur à partir de la diffusion du 486. Je n'ai pas encore creuser pour les programmes de math cités mais on peut supposer qu'ils le supporte (à vérifier pour les dates).

Pour Borland Turbo C, dont la première version est, d'après Wikipedia, parue en 1987 je ne sais pas si c'est de celle-ci que tu parles Phil, ou d'une plus récente?

Enfin pour répondre à Bubulemaster, c'est vrai que le 486SX a existé mais c'est une particularité, une astuce commerciale pour Intel d'utiliser des processeurs à moitié défectueux. De mémoire je dirais que ce n'était pas de suite en parallèle de la sortie du 486 mais un peu après. Quand au 487, dans les fait ce n'était pas un coprocesseur mais un 486 DX complet, qui venait se substituer au SX la carte mère.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par jvernet »

Avec AutoCAD 2.63, dessiner Columbia pend 12 secondes avec 8087, 33 sans. Amstrad PC 2086/8Mhz
20201215-202623-762.png
20201215-202623-762.png (14.48 Kio) Consulté 8574 fois
Dernière modification par jvernet le 15 déc. 2020 21:56, modifié 1 fois.
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par fneck »

Merci Jérôme, j'ai ajouté l'information de version dans le premier message 8)
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par fneck »

J'ai ajouté VersaCAD à la liste, confirmé par le bouquin déjà évoqué sur les logiciels de CAO:

The early implementation of VersaCAD required an IBM-compatible PC with
128KB of main memory, two floppy disk drives, a monochrome monitor, a color
monitor, two RS-232 serial ports, a digitizer and a pen plotter. The monochrome monitor
was used for program messages and menus while the color monitor was used for
graphics. Since VersaCAD drawings were stored in a floating-point format, a math coprocessor was highly desirable.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: [i8087] De l'utilité du coprocesseur

Message par Zebulon »

Merci d'avoir créé ce sujet. J'étais allé cherché quelques infos quand Fleni en a installé un dans son PPC 640.

C'est certain que Turbo Pascal 3.0 est décliné en une version qui génère du code utilisant le 8087 c'est écrit dans le manuel, il y a trois versions:
- la TURBO (de base ou standard),
- la TURBO-BCD (Binary Coded Decimal),
- la TURBO-87 dont la description détaillée tient sur les deux pages suivantes.
Capture d’écran 2020-12-15 223033.png
Capture d’écran 2020-12-15 223033.png (64.27 Kio) Consulté 8552 fois
Capture d’écran 2020-12-15 223055.png
Capture d’écran 2020-12-15 223055.png (78.81 Kio) Consulté 8552 fois
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par fneck »

Merci Zebulon, j'ai ajouté Turbo Pascal 3 à la liste.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Avatar de l’utilisateur
wawa.voun
Messages : 526
Inscription : 20 avr. 2020 18:09
Localisation : Lautenbach-Zell yoooo

Re: [i8087] De l'utilité du coprocesseur

Message par wawa.voun »

Bonsoir,

Turbo-Basic était également capable de générer du code avec des instructions 8087.

Bonne soirée.
Philippe
Someday I'll get you, Red Baron !
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17424
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par fneck »

Ok pour la génération du code, mais je cherche avant tout à recenser les logiciels utilisant le coprocesseur, pour leur propre exécution.

Je viens de parcourir rapidement la documentation de Turbo C 1.0 (1987), c'est pareil, il peut générer du code 8087 mais je n'ai pas trouvé s'il l'utilise lui-même:

Turbo C runs on the IBM PC family of computers, including the XT and
AT, along with all true IBM compatibles. Turbo C requires DOS 2.0 or
higher and at least 384K of RAM; it will run on any 80-column monitor.
One floppy disk drive is all that's required, although we recommend two
floppy drives or a hard disk with one floppy drive.
It includes floating-point routines that let your programs make use of an
8087 (or 80287) math coprocessor chip, or will emulate the chip if it is not
available. The 8087 (or 80287) can significantly enhance performance of
your programs, but is not required.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
nouvelhermes
Messages : 401
Inscription : 22 juil. 2020 20:56

Re: [i8087] De l'utilité du coprocesseur

Message par nouvelhermes »

Tout dépend ce qu'on entend par "propre utilisation".

En effet Turbo C peut utiliser le 8087 en natif (il y a des LIB spécifiques pour cela).

Il était possible de tester des programmes compilés en mémoire, donc il pouvait l'utiliser pour tester ses programmes.

L'utilité du 8087 est de résoudre des opérations mathématiques via des instructions spéciales, et le compilateur en lui-même à ma connaissance n'effectue aucun calcul, par contre la RTL peut y faire appel.
jvernet
Messages : 2454
Inscription : 12 avr. 2007 10:59
Localisation : France 69
Contact :

Re: [i8087] De l'utilité du coprocesseur

Message par jvernet »

Turbo C, compilateur ou IDE n'utilise pas le 8087. Il produit juste du code 8087 si on le paramètre pour.

Pour tester, je vous suggère d'utiliser 86Box: une machine avec, une machine sans, la même image disque.
Répondre