Etienne Tremblay
Ordinateurs, Structure et Applications
GIF-1001
Université Laval, Hiver 2012
Introduction et Cours 1, Formats de
données.
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: sur rendez-vous avant ou après le cours, toujours disponible par email
[email protected], sauf 24h avant les examens
• Auxiliaires d’enseignement
Examens et Laboratoires
• 2 Examens (40% + 40%)
– Mardi, le 28 février 2012, 14h30 – Mardi, le 24 avril 2012, 14h30
• 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 2 ans (18 mois selon
certaines sources).
• 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 les développements technologiques récents, la loi de Moore durera encore
quelques années (au moins jusqu’à 2015!). À compter de cette date cependant, on estime que des effets
quantiques devraient rendre la loi caduque.
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.
23147 16
-23136 1446 16
11 -1440 90 16
6 -80 5 16
10 0 0
5
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ément (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
• 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 (débordement) 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 donne 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.
Fractions (2/2)
• Résumé de la norme sur 32 bits:
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF 0 1 8 9 31
The value V represented by the word may be determined as follows:
• If E=255 and F is nonzero, then V=NaN ("Not a number")
• If E=255 and F is zero and S is 1, then V=-Infinity
• If E=255 and F is zero and S is 0, then V=Infinity
• If 0<E<255 then V=(-1)**S * 2 ** (E-127) * (1.F) where "1.F" is intended to represent the binary number created by prefixing F with an implicit leading 1 and a binary point.
• If E=0 and F is nonzero, then V=(-1)**S * 2 ** (-126) * (0.F) These are
"unnormalized" values.
• If E=0 and F is zero and S is 1, then V=-0
• If E=0 and F is zero and S is 0, then V=0 Exemples:
0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2 0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5 1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5
• Quelques valeurs spéciales (-0, NaN, infini) peuvent être représentées en binaire d’après la norme.