Micro Systèmes n°98 juin 1989
Micro Systèmes n°98 juin 1989
  • Prix facial : 30 F

  • Parution : n°98 de juin 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 188

  • Taille du fichier PDF : 153 Mo

  • Dans ce numéro : choisir... logiciels intégrés.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 142 - 143  |  Aller à la page   OK
Pages suivantes >
142 143
FENETRE SUR fonction de certains des bits du registre de contrôle. Alors que le 8087 et le 80287 peuvent traiter les infinis selon deux modes (+ co et - co distincts ou non) selon l'état du bit 12 du registre de contrôle, le 80387 ne permet d'utiliser que le mode dans lequel les deux infinis sont égaux, ceci afin de suivre la norme IEEE. Nous verrons plus loin les différences au niveau des instructions disponibles. Les échanges microprocesseur-coprocesseur Du point de vue logiciel, on dispose donc du jeu d'instructions du microprocesseur mais aussi de celui du coprocesseur. Lors de l'exécution d'un programme, les deux circuits décodent chaque instruction, et le coprocesseur ignore les instructions qui ne lui sont pas destinées. Les instructions du coprocesseur commencent toutes par le code ESCAPE. Chaque fois que le microprocesseur rencontre ce code, il vérifie ou attend la disponibilité du coprocesseur : ceci se fait matériellement par la ligne BUSY. Ensuite, le fonctionnement dépend du coprocesseur : pour le 8087, c'est le microprocesseur qui fait des lectures mémoire pour les instructions qui utilisent des transferts de données. Avec le 80287 et le 80387, qui sont beaucoup plus puissants, il existe un canal de données spécialement destiné à ces transferts (un peu comme les canaux DMA utilisés lors des transferts disque dur ou disquette avec la mémoire). Pour la programmation, il faut retenir que toutes les instructions du coprocesseur qui effectuent des transferts avec la mémoire doivent être suivies d'une instruction WAIT destinée à la synchronisation des circuits. De plus, le travail est énormément simplifié par les assembleurs qui s'occupent d'insérer ces instructions là où c'est nécessaire. Les instructions peuvent être regroupées en six familles bien distinctes. Tout d'abord les transferts avec la mémoire : ils sont destinés à l'empilage et au dépilage des données dans la pile des registres de calcul du coprocesseur. Tous les formats de données peuvent être manipulés, du mot entier jusqu'au réel long. Les instructions arithmétiques sont tout ce qu'il y a de plus classique : addition, soustraction, multiplication, division, mais aussi racine carrée, arrondi, valeur absolue... Viennent ensuite les instructions de comparaison qui positionnent les bits Co à C3 du registre d'état du coproces- 142 — MICRO-SYSTEMES LE COMPLEMENT A DEUX Cette forme de codage des nombres entiers positifs et négatifs est apparue dès l'avènement des premiers microprocesseurs. Prenons par exemple le cas d'un microprocesseur disposant de registres internes de 8 bits. Il est possible de stocker dans ces registres une valeur entière allant de 0 à 255 (2 puissance 8 = 256 valeurs différentes). Pour la mémoire, ce sont toujours des octets (cases élémentaires de la mémoire) de 8 bits. les quelques opérations de base du microprocesseur nous permettent de faire par exemple des additions et des soustractions sur ces nombres. Malheureusement, ce ne sont pas les seuls nombres entiers positifs ou négatifs qui existent ! Conclusion : il faut trouver un système qui nous permette d'une part de stocker des nombres plus grands et, d'autre part, de faire des opérations sur ces nombres. On prend donc naturellement 2 octets pour faire le rangement et on utilise la technique du poids fort, poids faible, ce qui revient à décomposer le nombre dans la base 256. Pour le nombre 1989 par exemple, la décomposition donne 7 comme poids fort et 197 comme poids faible ce qui signifie que 1989 = 7 x 256 + 197. On obtient en fait ces deux valeurs très simplement : on divise 1989 par 256 et on prend la partie entière, ce qui donne 7 le poids faible est alors égal à 1989 - 7x 256, ce qui donne bien 197 Avec deux octets, il est alors possible de représenter 2 puissance 16 (16 536) valeurs différentes, soit les nombres entiers allant de 0 à 16 535. la technique précédente est idéale car on est sûr que le poids faible et le poids fort ne dépasseront pas 256 et pourront donc être stockés chacun dans un octet. Pour l'addition, il suffit d'ajouter les poids faibles qui peuvent donner une retenue dont il faudra tenir compte en additionnant les poids forts entre eux exactement de la même façon que lorsque l'on effectue une addition dans notre base de tous les jours (la base 10 pour ceux qui ne seraient pas encore au courant). Cependant, on n'a toujours pas réglé le problème des nombres négatifs. Il va falloir impérativement réserver un des 8 bits dans le cas d'une représentation sur un octet, ou des 16 avec la représentation sur deux octets pour le signe. Les 7 ou les 15 bits restants servent alors à représenter uniquement la valeur absolue du nombre. C'est là que les problèmes surgissent : comment, lors d'une addition ou d'une soustraction de nombres ainsi signés, tenir compte du bit de signe ? Une solution compliquée consisterait à isoler les signes, à faire des comparaisons... ce qui donnerait des temps de calcul importants pour de malheureuses petites opérations. On a donc été amené à rechercher un représentation des nombres entiers signés qui permette de faire des opérations sans se préoccuper des signes. On aboutit à la représentation en complément à 2. Nous prendons l'exemple d'un octet car le principe est exactement le même pour des nombres de bits quelconques. Un bit de signe est toujours réservé (0 pour les positifs et 1 pour les négatifs), qui est toujours le bit de poids le plus fort : un nombre se présente donc comme suit (en représentation binaire) : 0... pour les positifs, 1... pour les négatifs. les 7 vont servir à coder la valeur absolue. Les positifs sont alors codés normalement : 6 se code par exemple 0 0000110, et on a donc la valeur 6 pour représenter le nombre 6. Pour avoir la représentation d'un nombre négatif, on prend la représentation de sa valeur absolue qui est un nombre positif, on inverse tous les bits et on ajoute 1. Le nombre négatif - 6 donne tout d'abord 0 0000110, et en inversant tous les bits, on obtient 1 1111001. finalement, l'addition de I donne comme représentation de - 6 en complément à 2 : 1 1111010, ce qui donne la valeur 250. On remarque que le bit de poids fort est bien à 1, ce qui signifie que c'est bien une représentation de nombre négatif. Avec un octet, on représente alors tous les nombres entiers allant de - 128 à + 127 (toujours 256 valeurs différentes). les valeurs de 0 à 127 représentent les nombres positifs, et les valeurs de 128 à 255 les nombres négatifs. On a alors montré mathématiquement que cette représentation permettait de se passer de la gestion du signe pour faire des opérations ; ce que nous pouvons vérifier sur un exemple : + 4 = 0 0000100 - 6 = 1 1111010 1 1111110 on additionne bit à bit (même les signes). On obtient un nombre négatif puisque le bit de signe est à 1. Pour connaître sa valeur, on inverse tous les bits, ce qui donne 0 0000001 et on ajoute 1 : 0 0000010, ce qui vaut 2 : le résultat est donc - 2 (4 - 6 = - 21. Juin 1989
Avec la structure en pile des registres de calcul, le fonctionnement des instructions suivant le principe de la notation polonaise inversée (calculatrices Hewlett Packard) s'imposait. Ainsi, pour faire I + 2, il faut charger et empiler 1, charger 2 et enfin demander l'opération +. Transferts avec la mémoire FB1D : charge et empile un DCB FBSTP : sauvegarde et dépile un DCB FlID : charge et empile un entier F1ST : sauvegarde un entier F1STP : sauvegarde et dépile un entier FID : charge et empile un réel FST : sauvegarde un réel FSTP : sauvegarde et dépile un réel FXCH : échange de registres Instructions arithmétiques FADD : ajoute 2 réels FADDP : ajoute 2 réels et dépile FIADD : ajoute 2 entiers FSUB : soustrait 2 réels FSUBP : soustrait 2 réels et dépile FISUB : soustrait 2 entiers FSUBR : soustrait 2 réels inversés FSUBRP : soustrait 2 réels inversés et dépile FISUBR : soustrait 2 entiers inversés FMU1 : multiplie ? réels LE JEU D'INSTRUCTIONS DU 80287 FMUIP : multiplie 2 réels et dépile FIMU1 : multiplie 2 entiers FDIV : divise 2 réels FD1VP : divise 2 réels et dépile FIDIV : divise 2 entiers FDIVR : divise 2 réels inversés FD1VRP : divise 2 réels inversés et dépile FIDIVR : divise 2 entiers inversés FSQRT : racine carrée FSCA1E : multiplication par une puissance de 2 FPREM : reste d'une division FRNDINT : arrondi à un entier FXTRACT : extraction de la mantisse et de l'exposant FABS : valeur absolue FCHS : changement de signe Instructions de comparaison FCOM : compare 2 réels FCOMP : compare 2 réels et dépile FCOMPP : compare 2 réels et dépile 2 fois F1COM : compare 2 entiers FICOMP : compare 2 entiers et dépile FTST : test > 0, <0 et = 0 FXAM : test nombre normalisé, infini... Instructions transcendantes F2XM 1 2 puissanceX, moins 1 FYI2X : Y multiplié par (log x au carré) FYI2XP 1 : Y multiplié par (log lx + 1) au carré) FPTAN : tangente FPATAN : arctangente Chargement de constantes F1DZ : charge et empile 0 FID I : charge et empile I FIDP 1 ; charge et empile PI FIDI2T : charge et empile log(10) au carré FID12E : charge et empile log(e) au carré FIDIG2 : charge et empile log(2) FIDIN2 : charge et empile In(2) Instructions de contrôle FIDCW : charge et empile le mot de contrôle FSTCW : sauve le mot de contrôle FSTSW : sauve le mot d'état FSAVE : sauve l'état complet du coprocesseur FRSTOR : restaure l'état complet du coprocesseur F1DENV : charge l'environnement FSTENV : sauve l'environnement FWA1T : synchronisation FINIT : initialisation FENI : autorise les interruptions FDISI : inhibe les interruptions FCIEX : initialise les interruptions FDECSTP : décrémente le pointeur de pile FFREE : libère un registre FNOP : opération qui ne fait rien ! seur. Tous les formats peuvent être comparés, mais seulement entre eux (un réel par rapport à un réel par exemple). Pour terminer avec les instructions de calcul proprement dit, les fonctions transcendantales qui permettent d'obtenir les fameux sinus, cosinus, tangente, logarithme, instructions de chargement de constantes... sont aussi disponibles et peuvent s'avérer très utiles. Y figure bien sûr le nombre PI. Le jeu d'instructions des coprocesseurs Enfin, les instructions de contrôle permettent de manipuler les registres de contrôle et d'état du coprocesseur, de gérer les interruptions, la pile des registres de calcul... A titre d'exemple, WAIT, destinée à la synchronisa- Juin 1989 tion des circuits, est une instruction de contrôle. Actuellement, trois grandes technologies dominent le marché du microprocesseur : CISC (Complex Instruction Set Computer), RISC (Reduce Instruction Set Computer) et TRANS- PUTEURS. Dans les trois cas, on remarque que le jeu d'instructions du microprocesseur ne permet pas de manipuler les données numériques de façon aisée, même pour les microprocesseurs CISC dont la puissance repose pourtant sur un jeu d'instructions très complet. Deux possibilités s'offrent alors pour faire du calcul : écrire ou utiliser des fonctions de base, utilisant des algorithmes complexes, ou adjoindre un coprocesseur arithmétique au microprocesseur. Si l'avantage de la première solution est d'être assez économique, son principal inconvénient réside dans des temps de calcul importants qui ralentissent considérablement les applications utilisant les fonctions mathématiques. Pour des coûts encore un peu importants (8087 : 1 500 F ; 80287 1 500 F à 2 500 F ; 80387 : 4 000 F à 5 500 F suivant la vitesse de l'horloge), on peut choisir d'utiliser un coprocesseur, ce qui se traduira par des gains de temps pour les calculs d'un facteur de l'ordre de 100. De plus, la plupart des langages de programmation facilitant énormément la gestion de ce type de composants, nous vous conseillons de faire cet investissement qui vous fera gagner un temps précieux si vous utilisez des applications pour lesquelles les calculs sont un goulot d'étranglement. Dominique Chabaud M ICRO-SYSTEM ES - 143



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 98 juin 1989 Page 1Micro Systèmes numéro 98 juin 1989 Page 2-3Micro Systèmes numéro 98 juin 1989 Page 4-5Micro Systèmes numéro 98 juin 1989 Page 6-7Micro Systèmes numéro 98 juin 1989 Page 8-9Micro Systèmes numéro 98 juin 1989 Page 10-11Micro Systèmes numéro 98 juin 1989 Page 12-13Micro Systèmes numéro 98 juin 1989 Page 14-15Micro Systèmes numéro 98 juin 1989 Page 16-17Micro Systèmes numéro 98 juin 1989 Page 18-19Micro Systèmes numéro 98 juin 1989 Page 20-21Micro Systèmes numéro 98 juin 1989 Page 22-23Micro Systèmes numéro 98 juin 1989 Page 24-25Micro Systèmes numéro 98 juin 1989 Page 26-27Micro Systèmes numéro 98 juin 1989 Page 28-29Micro Systèmes numéro 98 juin 1989 Page 30-31Micro Systèmes numéro 98 juin 1989 Page 32-33Micro Systèmes numéro 98 juin 1989 Page 34-35Micro Systèmes numéro 98 juin 1989 Page 36-37Micro Systèmes numéro 98 juin 1989 Page 38-39Micro Systèmes numéro 98 juin 1989 Page 40-41Micro Systèmes numéro 98 juin 1989 Page 42-43Micro Systèmes numéro 98 juin 1989 Page 44-45Micro Systèmes numéro 98 juin 1989 Page 46-47Micro Systèmes numéro 98 juin 1989 Page 48-49Micro Systèmes numéro 98 juin 1989 Page 50-51Micro Systèmes numéro 98 juin 1989 Page 52-53Micro Systèmes numéro 98 juin 1989 Page 54-55Micro Systèmes numéro 98 juin 1989 Page 56-57Micro Systèmes numéro 98 juin 1989 Page 58-59Micro Systèmes numéro 98 juin 1989 Page 60-61Micro Systèmes numéro 98 juin 1989 Page 62-63Micro Systèmes numéro 98 juin 1989 Page 64-65Micro Systèmes numéro 98 juin 1989 Page 66-67Micro Systèmes numéro 98 juin 1989 Page 68-69Micro Systèmes numéro 98 juin 1989 Page 70-71Micro Systèmes numéro 98 juin 1989 Page 72-73Micro Systèmes numéro 98 juin 1989 Page 74-75Micro Systèmes numéro 98 juin 1989 Page 76-77Micro Systèmes numéro 98 juin 1989 Page 78-79Micro Systèmes numéro 98 juin 1989 Page 80-81Micro Systèmes numéro 98 juin 1989 Page 82-83Micro Systèmes numéro 98 juin 1989 Page 84-85Micro Systèmes numéro 98 juin 1989 Page 86-87Micro Systèmes numéro 98 juin 1989 Page 88-89Micro Systèmes numéro 98 juin 1989 Page 90-91Micro Systèmes numéro 98 juin 1989 Page 92-93Micro Systèmes numéro 98 juin 1989 Page 94-95Micro Systèmes numéro 98 juin 1989 Page 96-97Micro Systèmes numéro 98 juin 1989 Page 98-99Micro Systèmes numéro 98 juin 1989 Page 100-101Micro Systèmes numéro 98 juin 1989 Page 102-103Micro Systèmes numéro 98 juin 1989 Page 104-105Micro Systèmes numéro 98 juin 1989 Page 106-107Micro Systèmes numéro 98 juin 1989 Page 108-109Micro Systèmes numéro 98 juin 1989 Page 110-111Micro Systèmes numéro 98 juin 1989 Page 112-113Micro Systèmes numéro 98 juin 1989 Page 114-115Micro Systèmes numéro 98 juin 1989 Page 116-117Micro Systèmes numéro 98 juin 1989 Page 118-119Micro Systèmes numéro 98 juin 1989 Page 120-121Micro Systèmes numéro 98 juin 1989 Page 122-123Micro Systèmes numéro 98 juin 1989 Page 124-125Micro Systèmes numéro 98 juin 1989 Page 126-127Micro Systèmes numéro 98 juin 1989 Page 128-129Micro Systèmes numéro 98 juin 1989 Page 130-131Micro Systèmes numéro 98 juin 1989 Page 132-133Micro Systèmes numéro 98 juin 1989 Page 134-135Micro Systèmes numéro 98 juin 1989 Page 136-137Micro Systèmes numéro 98 juin 1989 Page 138-139Micro Systèmes numéro 98 juin 1989 Page 140-141Micro Systèmes numéro 98 juin 1989 Page 142-143Micro Systèmes numéro 98 juin 1989 Page 144-145Micro Systèmes numéro 98 juin 1989 Page 146-147Micro Systèmes numéro 98 juin 1989 Page 148-149Micro Systèmes numéro 98 juin 1989 Page 150-151Micro Systèmes numéro 98 juin 1989 Page 152-153Micro Systèmes numéro 98 juin 1989 Page 154-155Micro Systèmes numéro 98 juin 1989 Page 156-157Micro Systèmes numéro 98 juin 1989 Page 158-159Micro Systèmes numéro 98 juin 1989 Page 160-161Micro Systèmes numéro 98 juin 1989 Page 162-163Micro Systèmes numéro 98 juin 1989 Page 164-165Micro Systèmes numéro 98 juin 1989 Page 166-167Micro Systèmes numéro 98 juin 1989 Page 168-169Micro Systèmes numéro 98 juin 1989 Page 170-171Micro Systèmes numéro 98 juin 1989 Page 172-173Micro Systèmes numéro 98 juin 1989 Page 174-175Micro Systèmes numéro 98 juin 1989 Page 176-177Micro Systèmes numéro 98 juin 1989 Page 178-179Micro Systèmes numéro 98 juin 1989 Page 180-181Micro Systèmes numéro 98 juin 1989 Page 182-183Micro Systèmes numéro 98 juin 1989 Page 184-185Micro Systèmes numéro 98 juin 1989 Page 186-187Micro Systèmes numéro 98 juin 1989 Page 188