Motorola 68881

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
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[modifier | modifier le code]

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

Formats de nombre[modifier | modifier le code]

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[modifier | modifier le code]

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[modifier | modifier le code]

68881[modifier | modifier le code]

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

68882[modifier | modifier le code]

  • 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