Architecture des ordinateurs Première année ingénieur Mehrez ESSAFI [email protected] Année Universitaire 2018-2019 « Computer is everywhere » © Mehrez Essafi AU 2018-2019 2 Positionnement Electronique Mathématiques Traitement Communication Fonctions logiques Codage Technologies Systèmes Périphériques Connectiques Standards OS Algorithmique Modèles de programmation © Mehrez Essafi AU 2018-2019 3 Objectifs du cours • Exposer le principe de fonctionnement des ordinateurs et comment exécute le processeur les programmes en interaction avec les autres composantes du système • Comprendre à bas niveau, l’organisation de ces machines et l‘impact de ses composants sur les performances. • Développer les aptitudes requises pour la programmation en assembleur. © Mehrez Essafi AU 2018-2019 4 Plan du cours • Historique • Représentation des données • Architecture de base d’un ordinateur • Amélioration des performances • Les architecteurs multi-processeurs © Mehrez Essafi AU 2018-2019 5 Historique Naissance du traitement automatique de l’information © Mehrez Essafi AU 2018-2019 6 Définitions • Ordinateur : une machine de traitement de l’information. Il est capable d’acquérir de l’information, de la stocker, de la transformer en effectuant des traitements quelconques, puis de la restituer sous une autre forme. • Informatique = information et automatique. • Information : ensemble de données. Il y a différents types d’informations : textes, nombres, sons, images, etc., mais aussi les instructions composant un programme. © Mehrez Essafi AU 2018-2019 7 Le calcul par tables (logarithmes, trigonométrie, …) Problème des erreurs (calcul et saisie) © Mehrez Essafi AU 2018-2019 8 Histoire : Epoque mécanique • 500 av. J.C : Premiers outils mécanique de calcul : l’abaque et le boulier. • 1580 : John NAPIER (Neper) invente les logarithmes • 1642 : Pascal met au point la Pascaline (additions et soustractions). L’abaque © Mehrez Essafi La pascaline AU 2018-2019 9 Histoire : Epoque mécanique • 1673 : Gottfried Wilhelm Von Leibniz améliore la Pascaline (multiplier et diviser). • 1679 : Francis Bacon invente la base du langage binaire • 1725 : La première machine programmable fût inventée : métier à tisser (à un ruban troué puis à cartes perforées). Métier à tisser Leibniz © Mehrez Essafi AU 2018-2019 10 Histoire : Epoque mécanique • 1820: Arith-méto-mètre de Thomas de Colmar : première machine à calculer Colmar © Mehrez Essafi AU 2018-2019 11 Histoire : Epoque mécanique • 1832 : La Machine à différences Charles Babbage 1791-1871 Le principe : Nème différence d’un polynôme de degré N est constante. Exemple la suite des cubes : 0 - 1 - 8 - 27 - 64 - 125 - 216 - 343 les différences sont 1 - 7 - 19 - 37 - 61 - 91 - 127 puis 6 - 12 -18 - 24 - 30 - 36 puis 6 - 6 - 6 - 6 – 6 calculer les valeurs de n’importe quel polynôme de n’importe quelle fonction (grâce aux développements limités) uniquement avec des additions, opérations faciles à mécaniser. © Mehrez Essafi AU 2018-2019 12 La machine analytique 1833 : "The engine eating its own tail" 1834 - 36 : – Séparation entre le "store" (magasin des nombres) et le "mill" (moulin, pour le calcul) – La circulation de l'information et la répétition des calculs est contrôlée par des "barrels" (cylindres à picot) – Contrôle de l'exécution (programme) par des cartes perforées (Jacquard) © Mehrez Essafi AU 2018-2019 13 La machine analytique 1838 Design général finalisé © Mehrez Essafi AU 2018-2019 14 Machine Analytique de Charles Babbage, Exposée au « Science Museum » de Londres © Mehrez Essafi AU 2018-2019 15 Premier programme au monde • Résolution d'un système d'équations du premier degré à 2 inconnues © Mehrez Essafi AU 2018-2019 16 Cartes de variables et d'opérations l'activité de la machine est cadencée par l'unité de contrôle © Mehrez Essafi AU 2018-2019 17 Cycle d'exécution 1) le prisme porteur de carte pousse des biellettes pour sélectionner le(s) cylindre(s) concerné(s) par l'opération (les cartes de variables agissent directement) 2) En tournant sur lui-même, le cylindre provoque (par ses picots) le déplacement de biellettes qui dirigent les échanges entres les axes verticaux (du magasin et/ou du moulin) 3) la rotation du cylindre est autocontrôlée, sauf si le levier de retenue a été levé par le moulin. Le cylindre peut revenir en arrière (traitement itératif). 4) Quand le tour est terminé, la carte suivante est lue Unité : temps du déplacement pour une valeur sur une roue (0.16 s. env.) 15 u. pour un transfert mémoire/mémoire 20 u. (3 s.) pour une addition avec report retenue 4 min pour une multiplication (au pire) © Mehrez Essafi AU 2018-2019 18 Jeu d'instructions • L'association cartes/cylindres permet de faire exécuter à la machine toutes sortes d'instructions - dans les limites du nombre de picots/tour de cylindre (80?) - à partir des capacités élémentaires du moulin • C'est toujours une question essentielle pour le concepteur d'ordinateur © Mehrez Essafi AU 2018-2019 19 Babbage voulais faire un "calculateur universel", mais • Sa machine est inadaptée au calcul symbolique, comme le traitement du texte. Elle entrerait aujourd'hui dans la gamme des machines "scientifiques", dédiées au calcul intensif • Il ne savait pas ce qu'est un nombre calculable (ou non calculable) • Le jeu d'instructions de Babagge est assez complexe, et nulle part décrit complètement. Un émulateur (applet Java) écrit par J. Walker : http://www.fourmilab.ch/babbage/ © Mehrez Essafi AU 2018-2019 20 Codage des instructions • Il y a 16 instructions différentes : 20 trous pour les différencier • Les nombres sont sur 40 chiffres et un signe : 41 trous pour coder une valeur • Si on veut attribuer la même taille de carte aux différents types Il faut coder les numéros de cases sur 20 trous Soit on permet une machine à 10^20 cases, soit on reste avec 1000 cases et on gaspille 76% des trous pour les cartes du premier type => carte de 2 + 60 = 62 trous de long et 10 (ou 9) de large © Mehrez Essafi AU 2018-2019 21 Carte IBM 80 colonnes © Mehrez Essafi AU 2018-2019 22 Histoire – Epoque électromécanique • 1890: Hollerith construisit une machine électromécanique pour faciliter les opérations de recensement (essentiellement des tris et des comptages). • 1904 : Invention du premier tube à vide, la diode par John Fleming. tube à vide Hollerith © Mehrez Essafi AU 2018-2019 23 Histoire – Epoque électromécanique • 1937 : George Stibitz crée le premier circuit binaire, un additionneur (Model K) • 1937 : Alan M. Turing publie un document sur les nombres calculables. • 1938 : Claude Shannon fait le lien entre les circuits électriques et l’algèbre Booléenne. Il définit le chiffre binaire : bit (BInary digiT). © Mehrez Essafi AU 2018-2019 24 Histoire – Epoque électromécanique • 1941 : Konrad Zuse, met au point le Z3, le premier calculateur avec programme enregistré , il pouvait stocker 64 nombres de 22 bits et réaliser 4 additions par seconde et une multiplication en 4 secondes. Konrad Zuse, Z1 © Mehrez Essafi AU 2018-2019 25 Les projets militaires 1945 © Mehrez Essafi AU 2018-2019 26 Les projets militaires © Mehrez Essafi AU 2018-2019 27 L’arrivée de l’électronique © Mehrez Essafi AU 2018-2019 28 Performance machine • • • • • • • Cadencé par une horloge à 0.1 MHz Addition : 0.2 ms Multiplication : 3 ms Division : 30 ms 20 cases mémoires de 10 chiffres 18000 tubes 70000 résistances, 10000 condensateurs, 6000 interupteurs • Consommation de 140 KW • 35 m de long, 3 m de haut, 12 cm de profondeur, 30 tonnes © Mehrez Essafi AU 2018-2019 29 EDVAC : von Neuman (et al.) • Juin 1945 : "First draft of a report on the EDVAC" par John von Neuman • 1946 : "Preliminary discussion of the logical design of an electronic computing instrument" par Burks, Goldstine et von Neuman • Une machine binaire (calculs et mémorisation) • • 4000 cases de 40 bits (2^40 = 10^12 bits) Horloge de base 1MHz • Le programme est conservé dans la même mémoire que les données : il devient lui aussi susceptible de modifications définition de l'ordinateur : calculateur automatique à programme enregistré © Mehrez Essafi AU 2018-2019 30 Machine de von Neuman 1952 Von Neumann with the first Institute computer © Mehrez Essafi AU 2018-2019 31 Le temps partagé (time sharing) : MIT, 1959-1964 © Mehrez Essafi AU 2018-2019 32 Douglas Engelbart : augmenting human intellect"(1963) © Mehrez Essafi AU 2018-2019 33 L'ordinateur de bureau Alto 1973 Laboratoire d'informatique du XEROX PARC B. LAMPSON, Ch. THACKER, R. TAYLOR • OS temps partagé + interface graphique multi-fenêtres • Ecran N&B 606 x 808 pixels (80 ppi) • Clavier séparé, reconfigurable, mesure de force et durée • Souris 3 boutons • 2 disques durs de 3 Mo pour le stockage local • Ethernet • Imprimante laser © Mehrez Essafi AU 2018-2019 34 Représentation des données Le chiffre binaire • Toute information traitée par un ordinateur, quelque soit son types (texte, nombres, etc.) est représentée et manipulée sous forme binaire (0 ou 1). • L’unité d’information est le chiffre binaire (0 ou 1), appelé bit (binary digit). • Le codage : établir une correspondance entre la représentation externe (habituelle) de l’information et sa représentation interne dans la machine, qui est une suite de bits. • La représentation binaire est simple, facile à réaliser techniquement à l’aide de bistables (système à deux états réalisés à l’aide de transistors). • Les opérations arithmétiques de base sont faciles à exprimer en base 2. © Mehrez Essafi AU 2018-2019 36 Changements de bases • Habituellement, on utilise la base 10 • En base b, on utilise b chiffres. • Notons ai la suite des chiffres utilisés pour écrire un nombre x = an an-1…a1a0 • a0 est le chiffre des unités. – En décimal, b = 10, ai {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} – En binaire, b = 2, ai {0, 1} 2 chiffres binaires, ou bits ; • – En hexadécimal, b = 16, ai {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} (on utilise les 6 premières lettres comme des chiffres). © Mehrez Essafi AU 2018-2019 37 Représentation des nombres entiers • En base 10, le nombre 1996 = 1*103 + 9*102 + 9*101 + 6*100 • Dans le cas général, en base b, le nombre représenté par une suite de chiffres anan-1…a1a0 est donné par : a0 est le chiffre de poids faible, et an le chiffre de poids fort. • Exemple en base 2 : (101)2 = 1*22 + 0*21 + 1*20 = 4 + 0 + 1 = 5 • La notation ( )b indique que le nombre est écrit en base b. © Mehrez Essafi AU 2018-2019 38 Représentation des nombres fractionnaires • Les nombres qui comportent des chiffres après la virgule. (12,346)10= 1*101 + 2*100 + 3*10-1 + 4*10-2 + 6*10-3 (anan-1…a1a0,a-1a-2…a-p)b= anbn+an-1bn-1+…+a0b0+a-1b-1+…+a-pb-p © Mehrez Essafi AU 2018-2019 39 Passage d’une base quelconque à la base 10 Exemple en hexadécimal : (AB)16=10*161 + 11*160 = 160 + 11 =(171)10 © Mehrez Essafi AU 2018-2019 40 Passage de la base 10 vers une base quelconque • Nombres entiers Par divisions successives. Divise le nombre par la base, puis le quotient obtenu par la base, et ainsi de suite jusqu’a obtention d’un quotient nul. La suite des restes obtenus correspond aux chiffres dans la base visée, a0a1…an. © Mehrez Essafi AU 2018-2019 41 Passage de la base 10 vers une base quelconque • Nombres fractionnaires Multiplier la partie fractionnaire par la base en répétant l’opération sur la partie fractionnaire du produit jusqu’a ce qu’elle soit nulle (ou que la précision voulue soit atteinte). Pour la partie entière, procéder par divisions comme pour un entier. © Mehrez Essafi AU 2018-2019 42 Cas des bases 2, 8 et 16 • Ces bases correspondent à des puissances de 2 (21; 23 et 24), d’où des passages de l’une à l’autre très simples. • Les bases 8 et 16 sont très utilisées en informatique, elles permettent de représenter rapidement et de manière compacte des configurations binaires. • La base 8 est appelée notation octale, et la base 16 notation hexadécimale. © Mehrez Essafi AU 2018-2019 43 Opérations arithmétiques Les opérations arithmétiques s’effectuent en base quelconque b avec les mêmes méthodes qu’en base 10. Une retenue ou un report apparait lorsque l’on atteint ou dépasse la valeur b de la base. © Mehrez Essafi AU 2018-2019 44 Codification des nombres entiers • Problème – un nombre mathématique peut prendre des valeurs arbitrairement grandes, tandis que le codage dans l’ordinateur doit s’effectuer sur un nombre de bits fixé. • Entiers naturels – Les entiers naturels (positifs ou nuls) sont codés sur un nombre d’octets fixé (un octet est un groupe de 8 bits). On rencontre habituellement des codages sur 1, 2 ou 4 octets, plus rarement sur 64 bits – Un codage sur n bits permet de représenter tous les nombres naturels compris entre 0 et 2n-1. Par exemple sur 1 octet, on pourra coder les nombres de 0 à 255 = 28-1. © Mehrez Essafi AU 2018-2019 45 Codification des nombres entiers • Entiers relatifs – Il faut coder le signe du nombre. Utiliser le codage en complément à deux, qui permet d’effectuer ensuite les opérations arithmétiques entre nombres relatifs de la même façon qu’entre nombres naturels • Entiers positifs ou nuls : Représenter le nombre en base 2 et ranger les bits comme pour les entiers naturels. Cependant, la cellule de poids fort est toujours à 0 : on utilise donc n-1 bits. – Le plus grand entier positif représentable sur n bits en relatif est donc 2n-1-1. © Mehrez Essafi AU 2018-2019 46 Codification des nombres entiers – Entiers négatifs : Soit x un entier positif ou nul représenté en base 2 sur n-1 bits et soit On constate facilement que Or sur n bits, 2n-1 est représenté par n-1 zéros, donc on à x + y = 0 modulo 2n-1, ou encore y = -x. y peut être considéré comme l’opposé de x. La représentation de -x est obtenue par complémentation à 2n-1 de x. On dit complément à deux. © Mehrez Essafi AU 2018-2019 47 Représentation des caractères Les caractères, appelés symboles alphanumériques, incluent : – les lettres • majuscules • minuscules – les symboles de ponctuation (& ~ , . ; # " - etc...), – les chiffres Un texte, ou chaîne de caractères, sera représenté comme une suite de caractères. Le codage des caractères est fait par une table de correspondance indiquant la configuration binaire représentant chaque caractère. Les deux codes les plus connus sont : – l’EBCDIC (en voie de disparition) – le code ASCII (American Standard Code for Information Interchange) © Mehrez Essafi AU 2018-2019 48 Représentation des nombres réels (norme IEEE) Soit le nombre (3,25)10 = (11,01)2 Normaliser la représentation en base 2 1,…* 2n (11,01)2 = 1,101*21 La représentation IEEE code (sur 32 bits) séparément : – le signe du nombre (ici +) – l’exposant n (ici 1) – la mantisse (la suite de bits après la virgule) Le codage a la forme : seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm – s=0 + – s=1 - © Mehrez Essafi AU 2018-2019 49 Représentation des nombres réels (norme IEEE) • Les exposants 00000000 et 11111111 sont interdits : – 00000000 que le nombre est dé-normalisé – 11111111 indique Not A Number, sert a signaler des erreurs de calculs, eg. division par 0). • Le plus petit exposant est ? • Le plus grand exposant est ? © Mehrez Essafi AU 2018-2019 50