Ordinateurs, Structure et Applications GIF-1001 Introduction et Cours 1, Formats de données. Etienne Tremblay Université Laval, Hiver 2010
Contenu du cours Matériel et fonctionnement général d’un ordinateur Avec données et formats de données Avec intro à l’architecture interne d’un microprocesseur Assembleur Systèmes d’exploitations en général Ports externes Architectures parallèles
Matériel du cours et Ressources Notes de cours (Acétates) Livres (Irv Englander ou William Stallings) Notes de cours additionnelles Autres livres Internet!!! Disponibilités: au bureau PLT-1114f mercredi de 15h30 à 16h30, toujours disponible par email trembl17@gel.ulaval.ca, sauf 24h avant les examens Dépanneurs
Examens et Laboratoires Mercredi, le 10 mars 2007 Mercredi, le 28 avril 2007 Laboratoires (20%) Laboratoire sur les microprocesseurs et la mémoire Laboratoires d’assembleur Laboratoire de fin de session
Historique des ordis L’abaque (500 b.c.), Grecques et romains, pour des calculs « simples » Prototype de calculatrice (1642), Blaise Pascal, invention jamais réalisée Cartes perforées (1801), Joseph Marie Jacquard, industrie du textile Analytical engine (1833+), Charles Babbage, contiens tous les éléments d’un ordi ABC (1939), Atanasoff-Berry, totalement électronique et digital (tubes sous vide), recherches en physique. Mark I (1944), Howard H. Aiken, avec des relais ENIAC (1946), Electronic Numerical Integrator And Computer, Mauchly et Eckert, premier ordinateur reconnu, calcul de balistique. 1945: Architecture Von Neumann (Structure générale d’un ordinateur valide encore aujourd’hui). EDVAC et IAS (1951, 1952), Ordinateurs avec tubes sous vides basés sur l’architecture de Von Neumann 1958-1971 Plusieurs ordinateurs avec des circuits à transistors (sans tubes sous vides) voient le jour. 1962: Une sonde de la Nasa, Mariner I, s’écrase en raison d’une erreur de programmation, 10.000.000$ (U.S.) à l’eau. 1971: premier microprocesseur (4004 d’Intel) 1973: Micral en France avec 8008 d’Intel, premier ordinateur avec microprocesseur. 1974: Le 8080 est le premier microprocesseur tout usage apparaît. 1971-Aujourd’hui. Le nombre d’ordinateurs apparus est trop grand pour être listé ici. L’évolution des ordinateurs a suivi la loi de Moore.
La loi de Moore Gordon Moore, co-fondateur d’Intel, a établi, en 1965, que le nombre de transistors par pouce carré double à tous les 18 mois. L’énoncé de la loi de Moore peut être interprété de diverses façons. Toutefois, il est certain que la puissance des ordinateurs évolue sur une échelle logarithmique en fonction du temps. Certaines composantes comme les disques durs ont suivi des lois analogues à la loi de Moore pendant un temps. Selon IBM et selon les développement technologiques récents, la loi de Moore durera encore quelques années (au moins jusqu’à 2012!) Figure tirée de Wikipedia
Les formats de données Toutes les données d’un ordinateur sont exprimées par des bits valant 0 ou 1. 8 bits forment un byte (octet ou char) pouvant représenter 2^8 = 256 valeurs. 1 Kilobyte (1 ko) est 1024 bytes ou, encore, 8192 bits. 1 MegaByte est 1024 Ko… Les mots « short, integer et long » expriment une valeur entière contenue sur un nombre croissant de bytes (1,2,4 ou 2,4,8 ou …). Comment sont exprimés les entiers, les entiers signés et les fractions?
Nombres entiers positifs et bases Un « unsigned char » est un byte valant de 0 à 255d. En binaire 255d vaut 11111111b et FFh Pour obtenir la représentation d’un nombre dans une base précise, il faut diviser par la valeur de la base. La multiplication peut être utilisée pour convertir en base 10. Exemple: convertir 23147d en base 16. Le résultat est 5A6B.
Nombre entiers négatifs Représentation signe et magnitude: Le premier bit est le signe (0 pour positif), le reste est la magnitude (ex: 11011101b vaut -93) Représentation complément 2 Le premier bit vaut –(2^nombre de bits), le reste est additionné comme une valeur positive (ex: 11011101b vaut -128+64+16+8+4+1 = -35). Autre façon de le voir: pour changer le signe d’un nombre, il faut en faire le compléement (inverser tous ses bits) et ajouter 1 (d’où le nom complément 2). (ex: 35 est 00100011b, si on fait le complément + 1, on obtient 11011100 + 1 = 11011101b, ce qui est bien -35)
Add, Sub, Carry et Overflow La soustraction d’un nombre positif est similaire à l’addition d’un nombre négatif. L’addition avec la représentation signe et magnitude est complexe, car l’opération à effectuer dépend du signe. L’addition en complément 2 s’effectue toujours de la même manière: comme une addition traditionnelle. Il s’agit de la même chose pour les soustractions. La condition Carry est rencontrée lorsqu’une retenue (carry) existe à la fin de l’opération d’addition. Ce drapeau indique également un emprunt (borrow) lors d’une soustraction. La condition Overflow est rencontrée lorsque l’addition de deux nombres produit un nombre trop grand pour être représenté. En complément 2, cela se produit lorsque l’addition de 2 nombres de même signe donnent un nombre de signe opposé.
Fractions (1/2) La norme IEEE 754 a été adoptée universellement pour les fractions sur 32bits (4 bytes) et 64 bits. Chaque fraction est représentée, en binaire par un signe, un exposant et une mantisse. Un bit dit si le nombre est positif ou négatif Quelques bits donnent l’exposant du nombre. Ils disent sont ordre de grandeur. Les autres bits, la mantisse, détaillent le nombre. La mantisse détermine la précision de la valeur représentée. Sur 32 bits, la plupart des nombres sont représentés ainsi: Valeur = (-1)signe *2exposant - 127*1.mantisse Exposant est sur 8 bits, non-signé (donc de 0 à 255) Mantisse est sur 23 bits. Le premier bit vaut 2-1, le deuxième bit vaut 2-2 et le dernier bit vaut 2-23. On peut comparer la représentation binaire des fractions à la notation exponentielle en décimal. En décimal, le nombre -0.349E3 (-349d) à un signe de -1, un exposant de 3 et une mantisse de 349. * Tiré de http://www.psc.edu/general/software/packages/ieee/ieee.html
Fractions (2/2) Résumé de la norme sur 32 bits: Quelques valeurs spéciales (-0, NaN, infini) peuvent être représentées en binaire d’après la norme. * Tiré de http://www.psc.edu/general/software/packages/ieee/ieee.html
ASCII, UNICODE et Chaîne de char ASCII = American Standard Code for Information Interchange L’ASCII est une table reliant un caractère d’imprimerie à une valeur de 0 à FF. L’Unicode est une table reliant un caractère d’imprimerie à une valeur entre 0 et FFFF La table ASCII a été créée par un américain La chaîne de caractère la plus élémentaire est un tableau de bytes.
BIG/LITTLE ENDIAN La taille minimum d’une donnée stockée sur un disque est habituellement 1 byte. Les données ayant plusieurs bytes (integer, long, float) peuvent être emmagasinée de 2 façons: Little endian: le byte le moins significatif est placé à la plus petite adresse dans la mémoire Big endian: le byte le moins significatif est placé à la plus haute adresse dans la mémoire
Références et exercices Irv Englander: Histoire des ordinateurs (Section 1.6), Formats de données (Chap.3 et 4.2) William Stallings: Chapitre 9 Exercices Irv Englander: Chapitre 3