CM1 Introduction à l’architecture des ordinateurs Olivier Marchetti (CM-TD-TP) Laurent Lambert (TD-TP) Laboratoire d’informatique de Paris 6 – Pôle SoC – UPMC Année 2016-2017 Monde binaire ? Architecture ? Un autre regard sur l’informatique Jusqu’à présent, que savons-nous de l’informatique ? Programmation Algorithmique Moyens linguistiques adaptés pour exprimer/organiser et automatiser des calculs, des algorithmes, des traitements... Cadre précis et rigoureux pour décrire des processus automatiques fiables (démonstration) et efficaces (complexité). Ne manque-t-il pas quelque chose ? Architecture des ordinateurs Ensemble de concepts, de principes et de techniques décrivant/régissant : I l’élaboration de dispositifs physiques fiables et rapides, I l’organisation matérielle d’un ordinateur, I le fonctionnement matériel/logiciel et leurs interactions. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 2 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Plan 1 Des zéros et des uns pour calculer La représentation de l’information Le calcul sur de l’information binaire 2 Description générale d’un ordinateur Concepts de base au coeur de l’architecture Vue d’ensemble d’un ordinateur La mémoire vive – RAM Description générale d’un CPU Programmer un ordinateur 3 Un autre regard sur l’informatique Réflexion sur la correction des ordinateurs Un peu d’histoire Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 3 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires 1 Des zéros et des uns pour calculer La représentation de l’information Le calcul sur de l’information binaire 2 Description générale d’un ordinateur Concepts de base au coeur de l’architecture Vue d’ensemble d’un ordinateur La mémoire vive – RAM Description générale d’un CPU Programmer un ordinateur 3 Un autre regard sur l’informatique Réflexion sur la correction des ordinateurs Un peu d’histoire Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 4 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Question du jour : qu’est-ce qu’un ordinateur ? Défintion d’un dictionnaire (www.cnrtl.fr/definition) subst. masc. : machine algorithmique composée d’un assemblage de matériels correspondant à des fonctions spécifiques, capable de recevoir de l’information, dotée de mémoires à grande capacité et de moyens de traitement à grande vitesse, pouvant restituer tout ou partie des éléments traités, ayant la possibilité de résoudre des problèmes mathématiques et logiques complexes, et nécessitant pour son fonctionnement la mise en oeuvre et l’exploitation automatique d’un ensemble de programmes enregistrés. Quelques remarques : I Que signifie algorithmique ? cf. AlgoElem. I Que signifie information ? I Que signifie résoudre un problème mathématique ? cf. AlgoElem & AlgoAvancée. I Que signifie programme enregistré ? Définition : seconde tentative Un ordinateur est une machine capable : 1 de lire toute séquence d’instructions écrites dans un langage préalablement défini, 2 d’exécuter de façon cohérente ces instructions, c’est-à-dire d’activer automatiquement tous les procédés calculatoires physiques nécessaires. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 5 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Le monde numérique Écriture Symboles et conventions d’encodage permettent de réprésenter les choses du monde sensible. I I I Concepts : l’écriture cunéiforme, les hiéroglyphes... Sons : alphabet, notes de musique... Concepts numériques : représentation unaire, chiffres romains, système positionnel. Représentation des nombres – système positionnel On utilise une base b donnée (donc b symboles en tout). La valeur d’un chiffre dépend de sa position dans l’écriture du nombre (et de sa base) : x = (an−1 an−2 . . . a1 a0 )b = an−1 · b n−1 + an−2 · b n−2 + · · · + a1 · b 1 + a0 · b 0 I I I En base 10, ai ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. En base 2, ai ∈ {0, 1}. En base 16, ai ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C , D, E , F }. Observations I Le zéro : essentiel et néanmoins dangeureux pour les calculs. I Deux symboles pour représenter/manipuler efficacement l’information. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 6 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Le langage primordial des ordinateurs : le langage binaire Un ordinateur électronique ne manipule que de l’information représentée sous forme binaire (magnétique (mémoires), électrique (portes)). I Le bit (pour binary digit) est l’unité d’information. I Un groupe de huit bits forme un octet (UK/US, byte). D’une certaine façon, tout est nombre ; mieux, tout est symbole ! Conventions de codage sur machine I Caractères : 7 bits (codage ASCII). I Les entiers : 4 octets (en complément à deux). I Les flottants (approximations de réels) : 4 ou 8 octets. Remarques I Les conventions ne valent que pour ceux qui les respectent ! I Matériel et logiciel peuvent très bien s’affranchir partiellement ou totalement de ces conventions (ex : l’implémentation matérielle pour le calcul des flottants). Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 7 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Convention de codage : les caractères Conventions Plusieurs conventions existent : I Code ASCII (7 bits) : alphabet latin, ponctuation, chiffre, symbole. I Code ISO-LATIN (8 bits) : idem + caractères accentués. I Code UTF-16 (16 bits) : presque tous les symboles d’écriture de l’humanité. 0 1 2 3 4 5 6 7 8 9 A B BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 0 NUL SOH STX ETX EOT ENQ ACK BEL C D E F ! " # $ % & ' ( ) * + , - . 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { | } ˜ DEL 2 / Figure: Table d’encodage ASCII. Exemple : le caractère 'A' est encodé par 65 (4 × 16 + 1), ou encore (41)16 . Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 8 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Convention de codage : les entiers (1/2) Plusieurs conventions pour encoder les entiers en binaire. Représentation signe - module Complément à un I Module encodé en binaire. I Module encodé en binaire. I Signe : codé sur le bit de poids fort (1 si négatif). I Signe : module complémenté bit-à-bit si négatif. (48)10 (−91)10 = = (00110000)2 (11011011)2 (48)10 (−48)10 = = (00110000)2 (11001111)2 Avantages vs. inconvénients √ Ensemble de valeurs encodables symétrique et facile à lire. X Peu pratique pour les opérations élémentaires (test du signe). X Deux zéros ⇒ danger ! +0 = (00000000)2 et −0 = (10000000)2 , −0 = (11111111)2 Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 9 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Convention de codage : les entiers – compléments à 2 (2/2) Ici, le bit de poids fort toujours interprété comme négatif : (an−1 an−2 . . . a1 a0 )2n = −an−1 · 2n−1 + an−2 · 2n−2 + · · · + a1 · 21 + a0 · 20 Complément à 2 I I Module encodé en binaire ou en binaire complémenté. Signe codé sur le bit de poids fort avec : • an−1 = 0 si l’entier représenté est positif. • an−1 = 1 si l’entier représenté est négatif, ajouter 1 au module. (48)10 = (00110000)2n (−48)10 = −−→ 00110000 (1101̌0000)2n Pour la négation, complémenter les bits du module sauf à partir du dernier 1. Avantages vs. inconvénients √ Notation non redondante (un seul zéro). √ Addition ∼ soustraction. X Intervalle de représentation non-symétrique. X Moins intuitif. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 10 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Convention de codage : les réels Comment réprésenter un nombre tel que π = 3.1415 . . . ? 3.1415 . . . = 10−1 × 31.415 . . . = 10−2 × 314.15 . . . = . . . Problème : ces écritures sont redondantes. Notation scientifique normalisée dans une base b Pour tout x ∈ R, on écrit x = ±a0 , a1 a2 . . . ai . . . E ± e0 . . . ek Ce nombre peut s’écrire x = · be · m avec I ∈ {−1, 1} codant le signe. I m = a0 , a1 a2 . . . ai . . . ∈ [1, b[ codant la mantisse (i.e. a0 6= 0). I e = e0 . . . ek ∈ Z codant l’exposant. Exemple à 5 chiffres significatifs (en base 10) : π = 3.1415 × 100 , Olivier Marchetti NA = 6.0221 × 1023 . CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 11 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Convention de codage : les flottants IEEE (simple précision) Signe Exposant (8 bits) Partie fractionnaire (23 bits) 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 30 23 22 0 Indexation des bits I Le bit de signe vaut 1 si le nombre est négatif, 0 sinon. I L’exposant est une représentation binaire biaisée, i.e. il faut retrancher B = 27 − 1 = 127. Exposants réservés : 00000000 (nombre dénormalisé) et 11111111 (NaN, not a number, division par zéro). I La mantisse code la partie fractionnaire (avec implicitement a0 = 1). Ici : e m = = = (−1)Signe soit 1 P7 i − B soit − 3 i=0 bi · 2 P −i = 1 + 1(a0 =1) + 23 i=1 a23−i · 2 1 22 = 1, 25 =⇒ =⇒ =⇒ =⇒ x x x x = 1 · be · m = 1 · 2−3 · m = 1 · 2−3 · 1, 25 = (0, 15625)10 Les réels n’existe pas dans un ordinateur L’ensemble des flottants F est fini, discret et ne comporte que : I des réprésentations correctes de certains éléments de Q ; I des approximations d’éléments de R. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 12 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Machines dédiées vs. universelles Machine dédiée I Absence d’une véritable distinction entre le programme et la réalisation matérielle de la machine. I Programme et machine sont consubstantiels. I Impossible de modifier le comportement de la machine sans la modifier physiquement. Notion de machine universelle Dans une machine universelle, il existe une distinction fondamentale entre : I la réalisation effective de la machine ; I le programme et les données. Une machine universelle est une machine permettant de programme chargé, quel qu’il soit. Olivier Marchetti contrôler tout CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 13 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Deux façons de calculer Calcul analogique Le calcul analogique manipule des quantités physiques englobant le continu (courant électrique, hydraulique...). Avantages & inconvénients : √ Approximation intéressante du continu. √ Repose sur des technologies existantes. X Difficulté de contrôler l’exécution. Fiabilité ? X Comment implémenter toutes opérations ? machine universelle ? les Figure: Ordinateur analogique à eau – URSS. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 14 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Deux façons de calculer Calcul numérique Le calcul numérique manipule des quantités discrètes qui ne sont que des représentations symboliques (impulsion électrique, propriété magnétique). Avantages & inconvénients : √ Permet d’implémenter facilement toutes les opérations sur les entiers, la logique. √ Fiable et miniaturisable. X Haute-technologie, très chers. Figure: Transitors – inventés aux EU. La simplicité conceptuelle du calcul numérique et l’invention du transitor auront grandement contribué à son succès. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 15 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Représentation binaire & calcul Simplicité des tables arithmétiques associées à la réprésentation binaire : x 0 0 1 1 y 0 1 0 1 + 0 1 1 0→r x 0 0 1 1 y 0 1 0 1 × 0 0 0 1 Facilement implémentables avec les portes suivantes : NOT x 0 1 ¬x 1 0 Olivier Marchetti AND x 0 0 1 1 y 0 1 0 1 x ∧y 0 0 0 1 OR x 0 0 1 1 XOR y 0 1 0 1 x ∨y 0 1 1 1 CM1 – Introduction à l’architecture des ordinateurs x 0 0 1 1 y 0 1 0 1 Année 2016-2017 x ⊕y 0 1 1 0 16 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Les circuits : combinatoires vs. séquentiels Circuit combinatoire A I Formé d’éléments combinatoires. I Ces derniers sont reliés par des fils. I Structure acyclique. A XNOR B B période d’horloge Horloge front montant I Synchronisation des éléments mémoires. Olivier Marchetti calcul Etat =⇒ les registres définissent un état du circuit. =⇒ prévoir un cycle d’horloge suffisant pour la logique combinatoire. calcul Etat Formé d’éléments combinatoires et de registres. Etat t n−1 Circuit séquentiel t t n+1 Signal quasi-périodique. tn I I front descendant t n−1 tn t n+1 CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 t 17 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Circuit combinatoires et logiques (1/3) Comment construire un circuit qui réalise une certaine fonction ? Exemple : l’additionneur un bit I En entrée : x y • deux bits x et y à additionner, • un bit ret entrée pour l’éventuelle rete- nue à considérer. I ret_sortie En sortie : • un bit som res pour le résultat de x + y, • un bit ret sortie pour l’éventuelle rete- ? ret_entrée som_res nue à propager. Portes logiques élémentaires ⇐⇒ expression logique de la fonction Table de vérité Dresser la table de vérité des sorties de l’additionneur en fonction de ses entrées. Olivier Marchetti 0 1 2 3 4 5 6 7 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 ret entrée 0 1 0 1 0 1 0 1 CM1 – Introduction à l’architecture des ordinateurs ret sortie 0 0 0 1 0 1 1 1 Année 2016-2017 som res 0 1 1 0 1 0 0 1 18 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Circuit combinatoires et logiques (2/3) Comment passer de la table de vérité à l’expression logique ? Méthodologie (brutale) Voir chaque entrée comme un littéral logique x. I • x est associé à la valeur 1. • x̄ est associé à la valeur 0. Pour chaque fonction du circuit, I • Pour chaque valeur de sortie non-nulle, Former le produit logique des littéraux non-nuls ⇒ minterme. Retourner l’expression disjonctive de ces mintermes. I Exemple : I 0 1 2 3 4 5 6 7 x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 Olivier Marchetti ret entrée 0 1 0 1 0 1 0 1 ret sortie 0 0 0 1 0 1 1 1 som res 0 1 1 0 1 0 0 1 Mintermes pour la retenue de sortie : x̄yre , x ȳ re , xy r¯e , xyre I Forme normale disjonctive : (x̄yre ) + (x ȳ re ) + (xy r¯e ) + (xyre ) CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 19 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique L’information ? Circuits combinatoires Circuit combinatoires et logiques (3/3) Comment passer de l’expression logique au circuit ? En traduisant l’expression logique en porte et en fils... x I Les entrées x I Les mintermes I La fonction désirée x Remarques I Complétude des opérateurs logiques OR, AND et NOT. =⇒ toute fonction booléenne admet un circuit combinatoire. I Critères d’optimalité d’un circuit : profondeur & espace. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 20 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur 1 Des zéros et des uns pour calculer La représentation de l’information Le calcul sur de l’information binaire 2 Description générale d’un ordinateur Concepts de base au coeur de l’architecture Vue d’ensemble d’un ordinateur La mémoire vive – RAM Description générale d’un CPU Programmer un ordinateur 3 Un autre regard sur l’informatique Réflexion sur la correction des ordinateurs Un peu d’histoire Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 21 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Abstractions d’un ordinateur : un vue hiérarchique Machine virtuelle 6 Programmes applicatifs 5 Langage de programmation Une abstraction donnée constitue une machine virtuelle. Ses instructions sont implémentées : I par compilation (i.e. une traduction in extenso) par interprétation pas-à-pas (JVM) des instructions d’une autre machine virtuelle de niveau inférieur. I 4 Langage assembleur 3 SE −Noyau Logique numérique Langage machine Vocabulaire propre de la machine. On parle de jeu d’instructions de l’architecture. 2 Langage machine Abstraction des circuits électroniques. On utilise des portes pour la réaliser. 1 (Microprogramme) Microprogramme SE - Noyau Premier niveau de langage sur une machine : séquence d’étapes pour réaliser une instruction du langage machine. Ensemble de fonctionnalités dédiées à la gestion et l’allocation des ressources matériels et logiciels de l’ordinateur. 0 Logique numérique Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 22 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Un exemple familier : la programmation en C (1/2) Pour écrire un programme C : 1 Utiliser un éditeur de texte (emacs, gedit, vi...). 2 Le compiler avec un programme tel que gcc. lib .c cpp .i .s cc1 as .o ld a.out .h 3 L’exécuter via le terminal, et donc le SE (GNU-Linux, of course !). Deux choses importantes dans ce processus : Abstraction Traduction C’est une description adaptée du fonctionnement de l’ordinateur : Permet de passer d’un niveau d’abstraction à un autre : I le langage C est largement indépendant de l’architecture, I sur le plan matériel ou logiciel, I à certaines échelles (électron, données, instructions, programmes). Olivier Marchetti I le langage assembleur repose le jeu d’instructions machine, I le code objet est destiné aux circuits. CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 23 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Un exemple familier : la programmation en C (2/2) Programmation : compilation vs. interprétation La compilation améliore l’efficacité d’un programme par une analyse poussée de son code. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 24 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Programme enregistré Dans un ordinateur : I les circuits de la machine ne réalisent qu’un petit nombre d’opérations, I programmes et données sont dématérialisés, =⇒ la donnée programme est une description de machine. I tout est adressé, =⇒ le programme lui-même ! @instruction i + 1 Description instruction i − 1 @instruction i Description instruction i @instruction i −1 Description instruction i + 1 @ @instructon i = @instruction i − 1 + t(i − 1) taille t(i) de l’instruction i fonctionnement séquentiel ≈ programme planaire Remarque Pour un ordinateur, la taille des instructions est fixe (MIPS) ou variable (x86). Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 25 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Le cycle chercher, décoder, exécuter Qu’est-ce qui distingue un ordinateur d’un calculateur ? PC (compteur programme) est l’adresse de la prochaine instruction à exécuter. Remarques I Un ordinateur est purement séquentiel (instruction après instruction). I La partie contrôle implémente physiquement cet algorithme (cf. CM5&6). Registres et ALU permettent la gestion cohérente des données et calculs : I • du programme exécuté ; • du fonctionnement de l’ordinateur. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 26 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Architecture de von Neumann Mémoire Stockage Périphérique Principale Secondaire Entrée/Sortie CPU BUS Tous les ordinteurs électroniques possèdent : I un CPU (Central Processing Unit), un ensemble de circuits guidant et effectuant les traitements de la machine ; I un bus, pour l’acheminement des données entres les différentes entités ; I une mémoire centrale, stockant de façon temporaire les programmes et leurs données en vue de leur exécution ; I une mémoire secondaire, stockant de façon permanente les données d’un ordinateur ; I des périphériques d’entrées/sorties, permettant de connecter d’autres dispositifs (e.g. écran, souris, modem, imprimante...). Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 27 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Description générale de la mémoire (1/2) La mémoire RAM (Random Access Memory ) assure : 1 le stockage temporaire des données (programme compris), 2 l’accès en temps constant (borné) à ces informations. | mot | 2 −1 | mot | 2 −2 00011110 11000101 En mémoire RAM, les données sont organisées : 1 en octets (unité d’informations de la mémoire), 2 en mots de taille fixe, i.e. une puissance de 2 d’octets (exemples : mots 16, 32, 64 bits). Les données sont adressées par un entier allant de 0 à 2|mot| − 1 ∗ . L’adresse d’un mot est l’adresse de son premier octet. 2 1 0 01001100 11100000 00101101 @ Données ∗ Un octet est la quantité minimale de stockage qui a sa propre adresse. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 28 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Description générale de la mémoire (2/2) Comment l’ordinateur fait-il pour accéder en temps constant à toute information de la RAM ? SRAM vs. DRAM On distingue deux types de mémoire RAM : I static : très rapide, mais très chère (cache L1, L2, L3). I dynamic : assez rapide, peu chère (RAM principale). Organisation d’une DRAM La RAM est organisée en banques : I chaque banque est une matrice (carrée), I chaque ligne stocke plusieurs mots mémoire, I pour une adresse donnée, la RAM recompose la donnée morcellée dans ses banques. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 29 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Le processeur (UK/US : CPU – Central Processing Unit) Les registres U nité de Registres C ontrole Eléments mémoire du CPU (sur 32 ou 64 bits en général) I U A L peu nombreux mais très rapides. nité rithmétique & Mémoire ogique L’Unité Arithmétique et Logique (ALU) Circuits réalisant des opérations : I arithmétiques (entiers et flottants), I logiques (AND, OR, XOR...), I comparaisons (telles que 6, ==, >...). L’Unité de Contrôle (UC) Figure: Intérieur du boı̂tier d’un 486 de STMicroelectronics. Olivier Marchetti Circuits coordonnant l’activité de l’ALU, des registres et des interactions avec la mémoire. CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 30 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Les registres : éléments mémoire du CPU Gérer l’état du programme... ou se répérer dans le temps I L’adresse de l’instruction suivante : registre PC (UK/US : Prog. Counter ). I L’adresse de retour et la valeur de retour (appel) : 1 registre chacun. I L’état de la pile : 2 registres. Gérer les données... ou se réperer dans l’espace I Adresse des données du programme : 1 registre. I Opérandes (num. registre, adresse, données) : 10–20 registres généraux . Autres éléments mémoire du CPU modernes : les caches √ Capacité de stockage de quelques Mo. √ Vitesse : registres > caches > mém. principale. X Occupe près de la moitié de la surface de la puce. =⇒ très chers. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 31 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Les registres : au coeur du calcul X Plus aucun type =⇒ organiser en mémoire les données. X Plus aucune variable =⇒ quelques registres et de la mémoire (chaise musicale). X Plus aucune structure de contrôle ou structure de données =⇒ les réinventer en jouant avec des étiquettes assembleurs. Remarque Les programmes haut-niveau Olivier Marchetti s’aplanissent . CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 32 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Les registres : accés aux données Comment l’instruction courante manipule-t-elle les données présentes en RAM ? Adressage relatif I accès tableaux, structures... celle contenue par CP. √ 11000101 Instruction courante Adr. abs. sauts d’instructions. Adressage absolu Les opérandes de l’instruction courante se situent dans le CPU : I dans l’instruction même (une constante) – adressage immédiat, I dans d’autres registres – adressage par registre. Olivier Marchetti 2 −1 | mot | 2 −2 Instructions Val. déc. Banc registres √ | mot | 00011110 Val. déc. S’effectue entre une valeur de décalage et une adresse de base : I celle d’une zone mémoire donnée, tab[i] tab[0] Ins. Courante CPU CM1 – Introduction à l’architecture des ordinateurs 01001100 11100000 00101101 2 1 0 Données @ RAM Année 2016-2017 33 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur CPU & RAM : organisation et fonctionnement (1/3) Segments mémoire La mémoire est organisée en segments : I le segment texte contient les instructions du programme, I le segment des données (données statiques et dynamiques). Mem. Mémoire du programme Comment l’ordinateur fait-il pour distinguer en mémoire le programme de ses données ? dispo. Tas données stat. Programme Seg. données Seg. texte Figure: Un implémentation possible de la mémoire pour un programme. Remarques I Le SE gère la ressource mémoire. I Pour se répérer dans la RAM, le CPU utilise des registres dédiés à cet effet. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 34 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur CPU & RAM : organisation & fonctionnement (2/3) Comment l’ordinateur exécute-t-il de gros programmes avec si peu de registres ? −→ impossible à la main, −→ très difficile pour un compilateur. Segment mémoire pile CPU&RAM gèrent une pile permettant : I de décharger les registres, I de charger ces mêmes registres par d’autres données, I de restituer l’état antérieur des registres. Pile Mémoire du programme Optimisation de l’usage des registres : X utile mais limitée car Seg. pile Mem. dispo. Tas données stat. Programme Seg. données Seg. texte Figure: Un implémentation possible de la pile d’un programme. Remarques √ Permet la récursivité. √ Facile à implémenter (système et compilateur). Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 35 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Programmer un ordinateur : le jeu d’instructions Jeu d’instructions (UK/US : ISA – Instruction Set Architecture) C’est son vocabulaire. Il contient généralement des instructions pour : 1 déplacer les données entre la mémoire et les registres, 2 effectuer des calculs arithmétiques et logiques (ALU du CPU), 3 réaliser des branchements sur le programme. Langage Assembleur Notation symbolique du langage de la machine telle que : I I les codes opérations de la machine sont désignés par des mnémoniques adaptés (ADD, LW,...), les adresses mémoires sont nommées, • numéros de registres, • étiquettes du programmeur. Syntaxe assembleur <opération> <opérande(s)> # commentaire Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 36 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Concepts architecture ? Généralités ? RAM ? CPU ? Assembleur Programmer un ordinateur : format d’une instruction Un ordinateur exécutant un programme doit : I lire un mot mémoire à une adresse donnée, I décoder l’instruction et charger éventuellement des données, I l’exécuter. Décodage et format d’une instruction Code opération c(1) [champs 2] [champs n] c(2) c(n) c(i) = taille du champs i (en bits) I I Code opération : identifiant d’une action réalisée par le matériel (addition, comparaison,...). Autres champs : descripteurs d’opérandes. Ils peuvent désigner : • des adresses (généralement des noms de registres), • un nombre opérande de l’opération. • une option de l’opération (addition particulière...). Des catégories de formats d’instructions Calculs mathématiques, Manipulation de donnée, Contrôle Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 37 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire 1 Des zéros et des uns pour calculer La représentation de l’information Le calcul sur de l’information binaire 2 Description générale d’un ordinateur Concepts de base au coeur de l’architecture Vue d’ensemble d’un ordinateur La mémoire vive – RAM Description générale d’un CPU Programmer un ordinateur 3 Un autre regard sur l’informatique Réflexion sur la correction des ordinateurs Un peu d’histoire Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 38 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Problème sur les entiers des ordinateurs Comment calculer les coefficients de (a + b)n ? =⇒ en calculant les Cnk pour k ∈ {1, . . . , n} avec la formule √ √ √ √ √ √ √ √ √ √ √ √ √ X X X 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 5 6 7 8 9 10 11 12 4 0 1 1 3 6 10 15 21 28 36 45 55 66 24 1 -4 1 4 10 20 35 56 84 120 165 220 88 5 -1 1 5 15 35 70 126 210 330 495 221 14 2 1 6 21 56 126 252 462 792 399 29 4 1 7 28 84 210 462 924 532 44 7 1 8 36 120 330 792 532 50 9 1 9 45 165 495 399 44 9 1 10 55 220 221 29 7 1 11 66 88 14 4 1 12 24 5 2 n! . k!(n−k)! 1 4 1 -1 1 0 -4 1 1 1 En effet, pour la première valeur érronée 12 ! 13 ! Valeur exacte 479001600 6227020800 Valeur du programme (int 32 bits) 479001600 1932053504 Or le plus grand entier signé codé sur 32 bits vaut 231 − 1 < 13!. L’ordinateur effectue un dépassement de capacité. Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 39 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Problème sur les flottants des ordinateurs Calculons I I Pn 1 i=1 n ∈ Θ(ln(n)) avec la suite xn+1 = xn + n1 . n valeur avec float vs. valeur avec double 101 2.9289684̌2956542968750 6= 2.9289682̌5396825377652 102 5.1873779̌2968750000000 6= 5.1873775̌1763962062768 103 7.485478̌40118408203125 6= 7.485470̌86055034327501 104 9.78761̌291503906250000 6= 9.78760̌603604434464842 105 12.0908̌5083007812500000 6= 12.0901̌4612986328174316 106 14.35̌735797882080078125 6= 14.39̌272672286478105264 107 15̌.40368270874023437500 6= 16̌.69531136585671049488 108 15̌.40368270874023437500 6= 18̌.99789641384770177979 Préférer la double précision flottante. Ordre de grandeur conservé... X valeur constante au delà de n = 107 ... or limn→+∞ ln(n) = +∞. float vs. double... au final, qui dit vrai ? X Les opérations arithmétiques sur F ne sont pas des lois internes. X L’ordinateur effectue des arrondis. X Lorsque les ordres de grandeurs des opérandes d’une opérations sont distincts, il s’ajoute des phénomènes d’absorption voire de cancellation . Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 40 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire L’algorithmique à la rescousse des ordinateurs Comment calculer √ 2 malgré les flottants ? L’algorithme babylonien (1800-1600 av. J.C.) Approximation des babyloniens : 1+ 24 60 + 51 602 + Procédure algorithmique pour 1 a xn+1 = 2 xn + xn , x0 ∈ R+ 10 603 √ a: En utilisant des double, nous avons : Approximation de Itération √ 2 Nb de ch. sig. corrects 1 1̌.5000000000000000000000000000000000000000000000000000 1 2 1.416̌6666666666667406815349750104360282421112060546875 3 3 1.414215̌6862745098866440685014822520315647125244140625 6 4 1.414213562374̌6898698271934335934929549694061279296875 12 5 1.4142135623730951̌454746218587388284504413604736328125 Précision max. atteinte Convergence quadratique de {xn }... peu importent les arrondis machine ! Algorithmique numérique Discipline à la frontière des mathématiques et de l’informatique : √ traitant des problèmes de calculs numériques sur machine. X n’étant plus enseignée en EISE depuis 2013... Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 41 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Moralité Doit-on faire confiance aux machines et/ou aux concepteurs/programmeurs ? Ni les unes, ni les autres ! X Une machine n’a pas d’autre intelligence que celle que son concepteur lui a donnée. ⇒ Architecture boguée e.g. Pentium. X Concepteurs/programmeurs sont humains : ⇒ impossibilité de tout prévoir (espace d’états gigantesque), ⇒ erreur humaine. X Les machines calculent avec des quantités limitées de mémoire. ⇒ Mettre en doute ces calculs ! Par contre... la Science informatique, oui ! √ Existence de méthodes formelles pour certifier des propriétés matérielles/logicielles. √ Compilateurs spéciaux. √ Analyseurs statiques de codes. √ Preuves de programmes. ... Olivier Marchetti CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 42 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Concepts Histoire : des orgines à 1930 −3000 − Ecriture 485 − Zéro, Syst. pos. 0 1673 − G.W. Leibniz 1600 1854 − G. Boole 1830 1930 Histoire −5000 −3000 − Etat 1517 − M. Luther proteste... 0 1760 − 1ere rév. industrielle 1600 1850 − 2eme rév. industrielle 1830 1930 Techniques −5000 −3000 − caillou Olivier Marchetti 1439 − Imprimerie 1745 − Métier Jacquard CM1 – Introduction à l’architecture des ordinateurs 1837 − Machine de Babbage Année 2016-2017 43 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Concepts Histoire : de 1930 à 1970 1936 − A.Turing 1946 − J. von Neumann 1940 1951 − G. Hopper 1950 1969 − H. Curry 1960 1970 Histoire 1930 1933 − A. Hitler 1945 − Bombe A 1940 1962 − Cuba 1957 − Sputnik 1950 1960 1970 Techniques 1930 1936 − Z1 (Zuse) Olivier Marchetti 1945 − BRL ENIAC 1955 − MIT TX0 CM1 – Introduction à l’architecture des ordinateurs 1961 − Burroughs B5000 Année 2016-2017 44 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Concepts Histoire : de 1970 à nos jours 1972 − R. Karp 1984 − Coq (Assist. de preuve) 1980 1993 − P. Shor 1990 2004 − Google Print 2000 2010 Histoire 1970 1975 − Fin de la guerre du VN 1984 − USA vs. ATT 1980 1991 − Fin de l’URSS 1990 2001 − Guerre au terrorisme 2000 2010 Techniques 1970 1972 − Intel 8008 Olivier Marchetti 1981 − IBM PC 1990 − Internet CM1 – Introduction à l’architecture des ordinateurs 2006 − RFID Passeport Année 2016-2017 45 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Rendre à César ce qui appartient à César (1/3) Références bibliographiques utilisées Organisation et conception des ordinateurs , J. Hennessy & D. Patterson, Dunod. Concepts fondamentaux de l’informatique , A. Aho & J. Ullman, Dunod. Introduction à l’algorithmique , T. Cormen et al., Dunod. Leçons sur l’informatique , R. Feynman, Odile Jacob. en.wikipedia.org et diverses ressources... I I I I I Images utilisées I Les images du transparent 1 sont dues à Vinod Pangracious (doctorant au LIP6). I Image de gauche du transparent 12 : Sujet : Auteur : Licence : Machine à coudre Singer. Singer Manufacturing Company. Domaine public. I Image au centre du transparent 12 : Sujet : Auteur : Licence : I Image de droite du transparent 12 : Sujet : Auteurs : Licence : Olivier Marchetti Orgue de barbarie. Roman Bonnefoy. Creative Commons AttributionShare Alike 3.0 Unported. CM1 – Introduction à l’architecture des ordinateurs Caisse enregistreuse. Roger Rössing & Renate Rössing. Creative Commons AttributionShare Alike 3.0 Germany Année 2016-2017 46 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Rendre à César ce qui appartient à César (2/3) Images utilisées I Image de droite du transparent 14 : Sujet : Auteurs : Licence : Transitors. Daniel Ryde. Creative Commons AttributionShare Alike 3.0 Unported I Image du bas transparent 23 : Sujet : Auteur : Licence : ST 486 DX2-80. yellowcloud, http ://www.flickr.com/ people/63794141@N00 Creative Commons Attribution 2.0 Generic. Schéma RAM. Steve Mann. Creative Commons AttributionShare Alike 3.0 Unported. I 1re image du transparent 42 : Sujet : Auteur : Licence : Olivier Marchetti Sujet : Auteur : Licence : Bulle-enveloppe et ses jetons de comptabilité. Terre cuite, période d’Uruk. Provenance : tell de l’Acropole à Suse. Marie-Lan Nguyen. Creative Commons Attribution 2.5 Generic. Théorème des 4-couleurs. Dbenbenn. Creative Commons AttributionShare Alike 3.0 Unported. I 3e image du transparent 44 : Sujet : Auteur : Licence : Peter Shor. Peter Shor. Creative Commons ShareAlike 1.0 I 5e image du transparent 44 : Sujet : I Image du transparent 28 : Sujet : Auteur : Licence : I 2e image du transparent 44 : Auteur : Licence : Jane Rose Kasmir devant le pentagone (21 octobre 1967). Marc Riboud. Copyright – avec l’aimable permission de l’auteur. I 7e image du transparent 44 : Sujet : Auteur : Licence : CM1 – Introduction à l’architecture des ordinateurs Yeltsine lors du coup d’état d’août 1991. www.kremlin.ru Creative Commons Attribution 3.0 Unported Année 2016-2017 47 / 48 Monde binaire ? Architecture ? Un autre regard sur l’informatique Correction du calcul ? Histoire Rendre à César ce qui appartient à César (3/3) Images utilisées I 8e image du transparent 44 : Sujet : Auteur : Championnat du monde de lancer de chaussures. Muntadhar al-Zaidi en action. I 9e image du transparent 44 : Sujet : Auteur : Licence : Intel 8008. Konstantin Lanzet. Creative Commons AttributionShare Alike 3.0 Unported. I 10e image du transparent 44 : Sujet : Auteur : Licence : IBM PC. Bundesarchiv, B 145 BildF077869-0042 / Engelbert Reineke / CC-BY-SA. Creative Commons AttributionShare Alike 3.0 Germany. I 12e image du transparent 44 : Sujet : Auteur : Licence : Olivier Marchetti EPC RFID. SMARTCODE Corporation Creative Commons AttributionShare Alike 3.0 Unported La très grande majorité des autres images sont issues du domaine public, à quelques exceptions près... Bien entendu, je ne suis absolument pas l’auteur des photographies présentées ici. La partie historique est sans aucun doute à mes yeux la plus intéressante. Les relations entre sciences, société et défense sont passionnantes et souvent peu avouables. Aussi, j’invite chaleureusement tout lecteur attaché à l’honnêteté intellectuelle à se documenter sur ces sujets afin de ne plus croire, répéter, ou cautionner cette affligeante antienne sur la prétendue neutralité de la science. Bref, les ordinateurs n’ont pas poussé sur d’improbables ordinatiers, mais plutôt émergé des sillages des bombardiers d’Hiroshima et de Nagasaki. CM1 – Introduction à l’architecture des ordinateurs Année 2016-2017 48 / 48