Coprocesseur “flottant” ta mère

Du 8087 au Cray-1

6 minute de lecture
Par Stéphane
Coprocesseur “flottant” ta mère

Un processeur ou micro-processeur est souvent entouré de circuits complémentaires destinés à le relever de tâches pour lesquelles il n’est pas optimisé. Le plus commun des coprocesseurs est celui qui prend en charge les calcul sur des nombres à virgule laissant au processeur principal les calculs sur les nombres entiers. Les processeurs calculant sur des nombres à virgule flottante — floating point en anglais — sont baptisés FPU pour Floating Point Unit, par opposition au processeur central, le CPU, Central Processeur Unit.

Il existe des coprocesseurs pour prendre en charge :

  • le graphisme (grâce à la GPU (Graphics Processing Unit) de la carte graphique);
  • la cryptographie ;
  • le traitement du signal (DSP, Digital Signal Processing);
  • la gestion de la mémoire (MMU, Memory Management Unit);
  • l’interface avec le réseau local;
  • etc.

Le premier

Coprocesseur arithmétique, l’Intel 80287, 1990.

Le plus connu du grand public est peut être l’Intel 8087 (1980) car un support prévu pour lui était présent sur la carte mère de l’IBM PC (1981). Le 80286 avait comme companion le 80287, et ainsi de suite.

Les 8086/186/286/386/486 ont connu un tel succès que de nombreux processeurs compatibles sont apparus, et bien sur des co-processeurs. En voici quelques instances :

  • Cyrix FasMath 83D87 et suivants ;
  • IIT 2C87 et 3C87 ;
  • ULSI 387 ;
  • Chips&Technologies SuperMATH 38700DX ;
  • etc.

On remarque l’originalité des numéros de modèles : depuis le 8087 presque tous les coprocesseurs arithmétiques plus ou moins compatibles ont des références se terminant par 87 !

Weitek et al.

La société Weitek crée par des transfuges d’Intel se spécialise dans la conception de coprocesseurs arithmétiques de 1981 à 1996 l’année de sa disparition. Plusieurs modèles seront au catalogue, chacun compatibles avec les processeurs de leur époque, les Intel, Motorola, et les Sparc. Un autre exemple notable est son utilisation dans le super ordinateur Connection Machine CM-2 (2048 coprocesseurs par machine).

Chez Motorola, la gamme des 68000 (1979) était épaulée par le 68881 ou 68882.

National Semiconductor avait ses NS32016/32 (1982–92) et suivants, avec leurs FPUs : NS16081/32081, NS32381/580/181. Texas Instrument fabriquera des puces compatibles dans la gamme TI32000.

AMD, dès 1979-1980, avait développé les circuits Am9511 et Am9512 pour microprocesseurs 8 bits. À partir de 1988 et jusqu’à 1995 la gamme des Am29000, avait comme partenaire FPU l’Am29027, ainsi que les Am29300.

Un coprocesseur Am29027 à coté du processeur Am29000. Les petits boîtiers dorés sont de la mémoire.

La gamme des PDP-11 de DEC (Digital Equipment Corp.) basé sur des microprocesseurs pouvaient se voir ajouter le chip FP11-F.

Vers la fin des années 1980 les premiers processeurs à jeu d’instruction réduit (RISC) voient le jour : MIPS et Sparc. Et ceux ci sont encore accompagné de leur FPU :

  • Le R3010 pour le MIPS R3000 ;
  • Le MB86910 pour le Sparc V7 (MB86900) ;

L’amélioration des processeurs RISC a mis fin à la production des FPU car celle-ci était dorénavant intégrée sur le chip du processeur.

Mais quid des ordinateurs qui ne sont pas basés sur des microprocesseurs ?

Les mainframes, ordinateurs centraux, n’ont pas besoin de coprocesseur arithmétique, car ils sont tous doté d’une voire plusieurs unités de calcul flottant, c’est justement ce qui fait leur spécificité, et leur prix.

Sur un mini type VAX-11/780 la FPU FP780 occupe 5 cartes, tandis qu’elle occupe qu’une pour les plus petits modèles, comme le VAX-11/750. Même les PDP-11 pouvait se voir adjoindre une FPU, comme la FPP-11F (une carte). Pour le PDP-12, il en fallait des centaines.

Certains modèles pouvaient accepter, en option, des coprocesseurs pour offrir la possibilité de calcul vectoriel, concurrençant ainsi les super-ordinateurs.

Les premiers Cray

L’opposé de vectoriel est scalaire. C’est à dire les calculs usuels sur des variables, par exemple si vous voulez calculer la circonférence l d’un cercle de rayon r, la formule est l = 2 × pi × r avec (pi = 3,1415… évidement) et où r et l sont des valeurs discrètes, des nombres à virgule.
Le calcul vectoriel est identique, mais les variable comme l ou r sont des tableaux de nombre (par exemple 1000 nombres), appelés vecteurs, dénommés Vj, Vk et Vi sur l’illustration issue de la brochure du Cray-1, un super ordinateur vectoriel :

À g. 2 vecteurs et une opération donnant un nouveau vecteur, à d. un scalaire et un vecteur produisant un nouveau vecteur.

Si on regarde attentivement l’architecture complète d’un système basé sur le Cray-1, on constate que cette machine est principalement le coprocesseur (vectoriel) d’un ordinateur frontal. Cela est notable sur la description du système complet, à droite dans l’illustration ci dessous.

Le Cray-1 est supervisé par son unité de contrôle, (MCU, Maintenance Control Unit), tandis que les utilisateur lui soumette des tâche à accomplir via l’ordinateur frontal (à droite).
Sur la photo on discerne le Cray au fond à droite, en forme de C, derrière une personne dont l’ordinateur qui est placé en dessous du dérouleur de bandes magnétique est probablement un Data General SuperNova. Au premier plan. la console de l’ordinateur frontal, un IBM 370.

10 Transputers sur une carte.

Les transputers

Dans les années 1980, fabriqués par Inmos (UK) avaient le vent en poupe. Ces processeurs simples et rapides, capable de communiquer entre eux à haute vitesse, étaient conçus pour être agrégés pour former une machine parallèle (dans laquelle plusieurs calculs se déroulent simultanément et indépendamment les uns des autres). Des cartes truffées de Transputers destinées à être insérées dans une station de travail augmentaient leur vitesse de calcul de façon significative. Encore fallait il programmer correctement pour que les calculs soient sous traitées par la carte.

Aujourd’hui

Enfin, puisque nous sommes au XXIème siècle, l’ère du smartphone, les téléphone Apple 5S ou 6S sont équipés d’un coprocesseur de mouvement baptisé M7 et M8 respectivement. Son rôle est de collecter les valeurs retournées par accéléromètre, le gyroscope et la boussole intégrés dans le téléphone, et cela sans que le processeur principale soit actif. Les données peuvent aussi provenir d’un bracelet connecté par exemple. Dans tous les cas la consommation électrique est diminuée, et l’autonomie augmentée !

Le cycle

L’intégration des coprocesseurs dans le processeur se fait selon ce cycle :

  1. Un ordinateur spécialisé est construit pour effectuer une tâche particulière (par exemple un processeur vectoriel).
  2. Les années passent, la miniaturisation aidant, ce qui était un ordinateur tient sur une puce, le coprocesseur.
  3. La densité des puces augmentant, le coprocesseur est intégré au processeur central.
  4. De nouveaux paradigmes sont découverts ou inventé, et on repart à l’étape 1.

Exemples

Les APU (Accelerated Processing Unit) AMD regroupe le CPU et la GPU.

3 circuits en 1 : les APU d’AMD.

Ce qui était un supercalculateur vers 1985 est moins puissant qu’un iPhone récent.

L’iPhone 7 est beaucoup plus puissant et consomme bien moins qu’un Cray-2 !

Le nouveaux “coprocesseurs” de demain sont les ordinateurs quantiques d’aujourd’hui.

L’ordinateur quantique de Google, première vente début 2017.