Motorola 68881

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 7 avril 2020 à 13:26 et modifiée en dernier par Yokodachi (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Motorola 68881
Motorola 68881

Le Motorola 68881 est un coprocesseur mathématique destiné à travailler en complément à la famille de microprocesseurs m68k de Motorola.

Le Motorola 68882 est une version améliorée du 68881, mais tout à fait compatible pour le reste.

Utilisation

Les 68881 et 68882 ont été utilisés comme coprocesseur optionnels dans beaucoup de modèles d'Atari, d'Amiga, de Macintosh.

Formats de nombre

Motorola 68881
Motorola 68881

Le Motorola 68881 connaît quatre formats de nombre :

Précision étendue, sur 12 octets
95 signe
94-80 exposant
79-64 toujours à zéro
63-0 mantisse


Précision double (IEEE), sur 8 octets
63 signe
62-52 exposant
51-0 mantisse


Précision simple (IEEE), sur 4 octets
31 signe
30-23 exposant
22-0 mantisse


Précision packed, sur 12 octets
95 signe de la mantisse
94 signe de l'exposant
93-92 00, ou NAN ou infini si 11
91-80 les trois chiffres décimaux les moins significatifs de l'exposant
79-76 le chiffre décimal le plus significatif de l'exposant mantisse
75-68 pas tenu en compte
67-64 le chiffre le plus significatif de la mantisse
63-0 mantisse

Registres de données et de contrôle

Ses 8 registres de données (de FP0 à FP7) ont une largeur de 10 octets (80 bits), bien que la taille d'un réel de précision étendue puisse s'étendre sur 12 octets.

Il possède en outre 3 registres de contrôle :

FPCR (Floating Point Control Register), 32 bits dont seuls les premiers sont utilisés
3-0 ? zéro
5-4 ROUND méthode d'arrondissement
00 : au plus proche
01 : zéro
10 : moins l'infini
11 : plus l'infini
7-6 PREC précision de l'arrondissement
00 : étendu
01 : simple
10 : double
11 : réservé
8 INEX1 sortie décimale inexacte
9 INEX2 opération inexacte
10 DZ division par zéro
11 UNFL underflow
12 OVFL overflow
13 OPERR erreur d'opérande
14 SNAN signal Not-A-Number
15 BSUN Branch/Set in UNorderd


FPSR (Floating Point Status Register), 32 bits divisé en 4 octets
7-0 exception accrue
2-0 toujours à zéro
3 INEX!INEX2!OVFL
4 DZ
5 UNFL & INEX2
6 OVFL
7 BSUN!SNAN!OPERR
15-8 statut des exceptions
8 INEX1 : sortie décimale inexacte
9 INEX2 : opération inexacte
10 DZ : division par zéro
11 UNFL : underflow
12 OVFL : overflow
13 OPERR : erreur d'opérande
14 SNAN : signal Not-A-Number
15 BSUN : Branch/Set in UNorderd
23 signe d'un quotient
22-17 quotient
24 NAN : Not A Number
25 I : infini
26 Z : zéro
27 N : négatif
31-28 zéro


FPIAR (Floating Point Instruction Address Register) est le registre d'adresse de l'instruction en cours.

Puissance

68881

  • 155,000 transistors par composant
  • 16MHz version procure 160 KFLOPS
  • 20MHz version procure 192 KFLOPS
  • 25MHz version procure 240 KFLOPS

68882

  • 176,000 transistors par composant
  • 25MHz version procure 360 KFLOPS
  • 33MHz version procure 475 KFLOPS
  • 40MHz version procure 576 KFLOPS
  • 50MHz version procure 720 KFLOPS