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 : 140 - 141  |  Aller à la page   OK
Pages suivantes >
140 141
FENETRE SUR microprocesseur à ce jour ne possède une instruction qui permette de calculer directement un sinus ou un cosinus. Aussi a-t-il fallu mettre au point des normes afin de représenter les données numériques entières et réelles ainsi que des algorithmes numériques permettant de calculer des fonctions complexes à l'aide des opérations de base (addition, soustraction, décalage...) disponibles sur l'ensemble des microprocesseurs. La représentation en virgule flottante est le fruit de ces recherches et correspond à la norme de l'IEEE (numéro 754). Pour l'approximation des fonctions à l'aide des instructions élémentaires, il existe plusieurs méthodes. Sur les calculatrices de poche, qui contiennent elles aussi un microprocesseur, on fait appel aux algorithmes de Cordic, alors que sur les ordinateurs il semble que la méthode la plus utilisée soit l'interpolation polynomiale (les polynômes de Tchébitchev par exemple). Dans les deux cas, on est de toute façon amené à faire un nombre important d'additions, de soustractions, de décalages, et de toute autre sorte d'opérations de base disponibles sur l'ensemble des microprocesseurs. Une utilisation répandue pour un fonctionnement « multi-ordinateur » L'inconvénient de ces méthodes de calcul est leur extrême lenteur. En effet, il faut un grand nombre d'opérations de base avant d'obtenir un résultat conforme à la précision demandée. Un des meilleurs tests de vitesse d'un ordinateur consiste à lui faire exécuter un grand nombre d'opérations mathématiques comme des calculs de sinus, cosinus... car ce sont les opérations qui prennent le plus de temps. Cet inconvénient est la raison d'être des coprocesseurs le calcul d'une fonction ne se fait plus par l'exécution d'un programme, mais c'est un circuit électronique qui fait le travail. La fonction est alors dite « câblée ». Le temps de calcul est simplement lié à la vitesse de circulation des électrons dans les composants. Les gains de vitesse ainsi obtenus atteignent réellement un facteur 100. L'utilisation de ces composants est très répandue dans les domaines tels que la CAO, la modélisation numérique sur ordinateur... qui sont gourmands en calcul. Pour le développeur, le coprocesseur apparaît juste comme une extension du microprocesseur : des registres et des instructions sup- 140 - MICRO-SYSTEMES LA REPRESENTATION DES NOMBRES les données numériques que l'on utilise en informatique peuvent revêtir plusieurs formes. la plus simple reste le nombre entier, la plus complexe le nombre réel, chacune étant adaptée à un besoin spécifique. les mémoires de nos ordinateurs sont constituées d'un grand nombre de cases appelées octets, composé chacun de 8 bits (un bit peut prendre la valeur 0 ou 1 et correspond à un état électrique 0 V ou 5 V). Il n'est possible de stocker dans ces octets que des nombres allant de 00000000 à 11111111 en base 2 (on retrouve les 8 bits d'un octet), ou encore de 0 à 255 en décimal, soit 256 valeurs différentes. On voit donc qu'il a été nécessaire de définir des normes de codage pouvant permettre de représenter, stocker et traiter des nombres entiers plus grands, des nombres négatifs, des nombres réels... codés sur un certain nombre d'octets consécutifs. Quel que soit le codage que l'on va adopter, il va falloir s'imposer une limite en nombre de bits pour chaque nombre que l'on voudra traiter. Par exemple, se fixer une taille de 5 octets (soit 40 bits) pour les réels, ce qui va inévitablement entraîner des limitations sur la grandeur des nombres pouvant être représentés avec le type de codage adopté ainsi que des discontinuités sur l'intervalle définit par le plus petit et le plus grand nombre représentable (deux nombres différents mais proches peuvent avoir la même représentation dans un système de codage, ce qui correspond à une précision). Les microprocesseurs et les coprocesseurs arithmétiques proposent plusieurs codages possibles correspondant à des normes en vigueur (définies par le comité de normalisation IEEE). Il ne restera plus qu'à choisir la représentation qui nous convient le mieux pour le problème que l'on souhaite résoudre. la famille Intel utilise sept formats de données numériques différents. Le premier format disponible est le mot entier qui est stocké sur 2 octets soit 16 bits. 1 bit de signe étant réservé, il est donc possible de représenter sur les 15 bits restants les nombres entiers compris entre - 32768 et 32767 (2 puissance 15 = 327681. Le codage du nombre proprement dit est fait en complément à deux. Pour des nombres entiers plus grands, on dispose de deux autres formats : l'entier court et l'entier long, utilisant respectivement 4 et 8 octets (32 et 64 bits). la technique du complément à deux est encore en vigueur, ce qui permet de représenter les nombres entiers allant d'environ - 2 x 10 puissance 9 à 2 x 10 puissance 9 pour l'entier court et de - 9 x 10 puissance 18 à 9 x 10 puissance 18 pour l'entier long. Un format un peu particulier, le BCD compacté (Décimal Codé Binaire), est aussi disponible car il correspond à la norme Cobol qui est encore assez répandue. Ce format utilise 10 octets, soit 80 bits : 1 bit de signe, 18 digits décimaux codés sur 4 bits chacun, il reste donc 7 bits qui sont en fait inutilisés pour répondre exactement à la norme Cobol. On peut alors représenter tous les nombres entiers de 0 à +/- 9999...9999 (18 chiffres « 9 » I. Viennent enfin les formats permettant de représenter les nombres réels le réel court (4 octets soit 32 bits) et le réel long (8 octets soit 64 bits). le codage utilisé correspond à la norme la plus répandue par la représentation des nombres réels sur ordinateur : la virgule flottante qui est le résultat de nombreuses années de recherche de l'IEEE (projet 10.0 Task P754, A standard for Binary Floating-Point Aritmetic). En fait, sous ce terme ambigu se trouve quelque chose de très simple : avant d'être codés, les nombres sont tout d'abord écrits sous forme normalisée binaire scientifique : +/- 1,mmmmm...mmmmm x 2 puissance eee...eee (mmmmm...mmmmm est appelée la mantisse et plémentaires. De plus, avec les compilateurs de langage les plus récents (Pascal et C), on se contente d'utiliser les fonctions disponibles sur les coprocesseurs et, lors de la compilation, un module d'émulation logicielle peut être inclus à votre programme principal. Lors de l'exécution de celui-ci, un test de démarrage détermine si le coprocesseur est présent ou non. S'il est présent, les fonctions vont être traitées par le coprocesseur ; dans le cas contraire, les appels sont détournés sur le module d'émulation logicielle. Pour des besoins très spécifiques, il est également possible, grâce au compilateur, de générer un programme qui ne fonctionnera que sur un ordinateur disposant d'un coprocesseur ; le code final sera alors plus compact car le module d'émulation n'aura pas été inclus. Il faut rappeler le fait que chaque microprocesseur possède son coprocesseur propre : pour la famille Intel 8086, 80286 et 80386, les coprocesseurs correspondants sont les 8087, 80287 et 80387 respectivement. Du point de vue nombre et taille Juin 1989
eee... eee l'exposant). Regardons sur un exemple ce que cela donne : soit à écrire 131,829 en notation binaire scientifique, on écrit la partie entière du nombre, 131, en binaire, ce qui donne 10000011 (les bits 7, 1 et 0 sont à 1, ce qui signifie que 131 = 2 puissance 7+ 2ppuissance 1 + 2 puissance 0 = 128 + 2 + 1). Il faut ensuite faire de même avec la partie décimale en écrivant 0,829 en somme de puissance négative de 2 : 2 puissance - 1 = 0,5 2 puissance - 2 = 0,250 2 puissance - 3 = 0,125 2 puissance - 4 = 0,0625 2 puissance - 5 = 0,03125 2 puissance - 6 = 0,015625 2 puissance - 7 = 0,0078125... ce qui donne 0,829= 2 puissance -1 + 2 puissance - 2 + 2 puissance - 4 + 2 puissance - 6... et en écriture binaire : 0,829 = 0,110101... (les 1 en position 1, 2, 4 et 6). On rassemble alors les deux valeurs binaires pour obtenir 131,829 = 10000011, 110101... et on normalise en mettant la virgule après le premier 1, ce qui revient à multiplier un certain nombre de fois par 2 puisqu'on est en binaire : 131,829 = + 1,0000011110101... x 2 puissance 7 et en écrivant zen binaire : 131,829 = + 1,0000011110101... x 2 puissance 00000111 ce qui est facilement stockable en mémoire : la mantisse est séparée en blocs de 8 bits de façon à former des octets. De même, l'exposant peut être stocké sur un octet ou plus, mais il est auparavant décalé d'une constante qui dépend du nombre de bits utilisés pour son stockage, ceci afin de faciliter les calculs. la précision obtenue dépend donc du nombre de bits que l'on va réserver pour coder la mantisse, alors que le plus grand nombre représentable dépendra du nombre de bits réservés pour l'exposant le format réel court utilise 1 bit pour le signe, 23 pour la mantisse et 8 pour l'exposant. Pour les réels longs, la mantisse passe à 52 bits et l'exposant à 11 bits. Globalement, on retrouve les 32 bits et les 64 bits annoncés un peu plus haut pour ces deux formats. Une remarque importante concernant ces deux formats : le 1 qui se trouve avant la virgule n'apparaît pas dans le codage final car on sait que ce 1 est toujours là. Les nombres pouvant être représentés atteignent la valeur +/- 3,39 x 10 puissance +/- 3- pour les réels courts et +/- 1,80 x 10 puissance +/- 308 pour les réels longs. La famille Intel dispose d'un dernier format, le réel temporaire, dans lequel sont convertis tous les autres formats avant toute opération, et qui dispose d'une plus grande précision afin d'éviter que les erreurs de calculs successives n'altèrent le résultat final. Dans ce format, la mantisse atteint 64 bits et l'exposant 15 bits, ce qui donne une longueur totale de 80 bits. On obtient alors l'échelle extraordinaire de +/-1,19 x 10 puissance +/- 4932. Pour comparaison, le nombre de particules contenues dans l'univers observable est estimé à 10 puissance 80 ! des registres des coprocesseurs, c'est la même chose pour les trois générations, les plus grosses différences se situant au niveau de la protection de la mémoire (mode réel et protégé) et du traitement des exceptions. De plus, le 80387 permet d'une part de gérer des nombres dénormalisés, et d'autre part de ne pas être obligé de gérer la synchronisation avec le 80386 alors qu'il fallait le faire avec le 8087 et le 80287. Pour la famille Motorola 68000, 68020 et 68030, les coprocesseurs associés portent les numéros 68880, 68881 et Juin 1989 68882 respectivement. Il existe très peu de différences avec les coprocesseurs d'Intel, que ce soit au niveau des registres internes ou même au niveau des instructions. Ceci est en partie du à la normalisation du comité de l'IEEE. On peut toutefois noter un fait important. Un microprocesseur d'une génération donnée fonctionne bien sûr de façon optimale avec le coprocesseur de la même génération mais, pour des raisons de compatibilité, il est aussi possible de lui adjoindre un coprocesseur de génération anté- rieure : par exemple, le coprocesseur le mieux adapté au 80286 est le 80287 mais on peut aussi utiliser un 8087 correspondant à la génération 8086/8088. Cela se fera bien entendu au détriment du temps de calcul et des transferts de données entre le coprocesseur et la mémoire. L'architecture interne des coprocesseurs 8087, 80287 et 80387 Nous allons décrire à présent le 8087, et nous signalerons les différences avec le 80287 et le 80387. Le 8087 est constitué comme nous l'avons vu d'un ensemble de registres internes qui peuvent être classés par fonctions : - huit registres de calcul de 80 bits chacun, organisés en pile, c'est-à-dire qu'à un instant donné un pointeur donne accès à un seul des registres. Pour accéder à un autre registre, il faut modifier la valeur du pointeur. Cette taille de 80 bits correspond bien à la taille maximale des données pouvant être traitées ; - un registre d'état de 16 bits indique l'état. du ; coprocesseur : instruction en cours, débordement, opérations invali- d- un registre de contrôle de 16 bits permet de déterminer le fonctionnement du coprocesseur : gestion des infinis, nombre de bits de la mantisse, autorisation des exceptions... ; - un registre d'étiquettes (TAGs) sur 16 bits qui donne l'état des huit registres de calcul, ce qui permet d'avoir directement l'état d'un des registres sans avoir à modifier le pointeur de pile des registres ; - un pointeur d'exception qui permet de retrouver l'opération et la donnée ayant déclenché une exception (débordement, division par 0...). Ce pointeur est constitué d'un registre de 20 bits contenant l'adresse physique de l'instruction qui a produit l'exception, d'un registre de 11 bits qui contient le code de l'opération et enfin d'un registre de 20 bits contenant l'adresse physique de la donnée en mémoire. La différence avec le 80287 et le 80387 se situe au niveau du pointeur d'exception. Sur le 80287, on dispose d'un groupe de sept registres de 16 bits organisés différemment suivant que le microprocesseur fonctionne en mode réel ou en mode protégé. Pour le 80387, il y a quatre registres de 32 bits chacun qui permettent de traiter les exceptions. Quelques autres petits détails interviennent entre le 80387 et les générations précédentes sur la MICRO-SYSTEMES - 141



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