Plan du cours 1 Histoire de l’ordinateur 2 Présentation générale 3 Représentation interne des informations 4 Encodage de l’information 5 Circuits logiques 6 Composants électroniques 7 Mémoires 8 Unité centrale de traitement 9 Superordinateurs et microprocesseurs 10 Entrées / sorties 11 Assembleur 12 Introduction au langage MIPS Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 169 / 262 Schéma général de l’ordinateur L’unité centrale de traitement dans l’architecture de Von Principe de fonctionnement Neumann unités d’entrée/sortie unité de contrôle ou ou unité de commande registres L’unité centrale de traitement ou central est nnéesprocesseur depuis un périphérique dans(CPU) la l’élément moteur de l’ordinateur qui interprète et exécute les instructions s du programme de la mémoire du programme. . . . unité centrale de traitement Cerveau et coeur de truction et⇒ passage à l’UAL pour mémoire centrale unité arithmétique et logique ou ou principale unité de traitement ou unité de calcul l’ordinateur ! Se compose avec éventuellement appel à lade 2 unités séparées e. Intimement associé à la mémoire Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 170 / 262 Unité centrale de traitement (CPU) Unité de commande Dirige le fonctionnement des autres unités : UAL, mémoire, E/S Prends les instructions en mémoire, les décode et les passe à l’UAL en fonction des cycles horloges. Unité Arithmétique et Logique (UAL) Réalise effectivement les opérations arithmétiques (+,-,*,/) et logiques (NOT, AND, OR, XOR). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 171 / 262 Interconnexion des unités d’un ordinateur Bus Système de câblage transportant des signaux électriques qui interconnecte les unités de l’ordinateur. Transmet des signaux correspondant à trois type d’information : adresses, données et commandes. Architectures à bus unique (e.g., microordinateur) Architectures à bus spécialisés Au maximum 2 unités peuvent utiliser un bus en même temps (⇒ attente) Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 172 / 262 Unité de commande Unité de commande Ensemble des dispositifs coordonnant le fonctionnement de l’ordinateur afin de lui faire exécuter la suite d’opérations spécifiées dans les instructions du programme Compteur ordinal (CO) : registre contenant l’adresse en mémoire où est stocker l’instruction à chercher ; Registre d’instruction (RI) : reçoit l’instruction (opération + opérande) qui doit être exécutée ; Décodeur : détermine qu’elle opération doit être effectuée, parmi toutes les opérations possibles ; Séquenceur : génère les signaux de commande Horloge : émet des impulsions électroniques régulières, synchronisant ainsi toutes les actions du CPU. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 173 / 262 Schéma général du fonctionnement du CPU Mémoire centrale Dispositif de sélection d’adresse Bus adresse opérande RA RM CO RI résultats Unité de commande Horloge Décodeur Séquenceur de commandes Registre d’état opérandes Unité arithmétique et logique Unité de calcul opérandes Registres résultats Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 174 / 262 Cycle de recherche d’une instruction 1 Transfert de l’adresse de la nouvelle instruction du CO→RA. 2 Impulsion en lecture générée par l’unité de contrôle ⇒ transfert de l’instruction dans le RM. RA Mémoire centrale RM 2 3 1 3 4 5 Transfert de l’instruction (= code opération + adresse opérande) du RM→RI. Code opération → décodeur (détermine le type d’opération) → séquenceur Adresse opérande → RA CO RI 4 5 Décodeur 4 Horloge Séquenceur CO :=CO+1 Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 175 / 262 Cycle d’exécution d’une instruction L’opération spécifiée durant le cycle de recherche est ensuite effectuée par l’UAL. La séquence exacte des actions coordonnées par le séquenceur dépendra de l’opération : 1 2 Le séquenceur envoie les signaux de commande pour lire l’opérande à l’adresse déjà stockée dans le RA, et le stocke dans le RM. Transfert du contenu du RM → UAL. Pour certaines opérations : I I I 3 RM → ACC (avant l’exécution de l’opération) ACC → RM (après exécution, mémorisation du résultat) RM → CO (instruction de branchement) RA Mémoire centrale Unité de commande RM UAL 1 Séquenceur 2 ACC 3 exécution de l’opération sous contrôle du séquenceur. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 176 / 262 Séquenceur Génère les signaux de commande nécessaires pour actionner et contrôler les unités participant à l’exécution d’une instruction donnée. Tiens compte des temps de réponse des circuits sollicités Peut être réalisé de 2 façons : câblé ou microprogrammé Séquenceur câblé Circuit séquentiel complexe qui fait correspondre à chaque instruction exécutable un sous-circuit capable de commander son déroulement. Le sous-circuit approprié est activé par un signal provenant du décodeur. Séquenceur micro-programmé Suite de microinstructions (pour chaque opération correspond un microprogramme) stockées dans une mémoire de microprogrammation (très rapide et séquentielle e.g., ROM ou EEPROM). Code opération → adresse de la 1ère microinstruction ; Ce microprogramme génère une suite de signaux de commande équivalents à celle produite par un séquenceur câblé. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 177 / 262 Séquenceur câblé ou microprogrammé code op @ mapping ROM CO micro décodeur Mémoire de micro−programmation MEM séquenceur cablé micro−instruction 0 1 0 1 1 0 1 0 signaux UAL Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 178 / 262 Séquenceur câblé vs. microprogrammé Micro-programmé ⇒ souplesse et simplicité de conception. Micro-programmé ⇒ un peu plus lent qu’un séquenceur câblé. La plupart des processeurs moderne utilisent la micro-programmation. Normalement le niveau de micro-programmation n’est pas accessible au programmeur. Changer les microprogrammes ⇒ machines à architecture reconfigurable. Il peut exister également un niveau de nano-programmation. Toujours possible de remplacer un circuit logique par un microprogramme. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 179 / 262 Exemple d’équivalence entre circuits logiques et microprogrammes Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 180 / 262 Niveaux de programmation Langage Ensemble d’instructions et de règles syntaxiques permettant l’écriture de code source (i.e., programme). Le programmeur a le choix entre différents langages (assembleur, Ada, Java, C, etc.) ; La machine ne comprends que le langage machine ! ⇒ Traduire le code source → code machine ⇒ Utilisation de programme traducteur : assembleur, compilateur et interpréteur. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 181 / 262 Structure des instructions niveau machine Les ordinateurs sont capables de faire un certain nombre d’opérations simples. Par exemples : additionner 2 nombres ; tester le signe d’une valeur numérique ; copier le contenu d’un registre à un autre ; stocker en mémoire un résultat : Instruction Une instruction doit fournir au CPU toutes les informations pour déclencher une opération : Code opération ; Adresses : opérande(s) + résultat + instruction suivante. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 182 / 262 Comment optimiser les instructions ? En économisant des champs adresses ! On peut se passer de l’adresse de l’instruction suivante si le CO est incrémenté à chaque étape (i.e., exécution séquentielle seulement) ; On peut se passer de l’adresse du résultat si l’on admet qu’il peut être mémorisé à la place de l’opérande ; On peut aussi se passer d’une 2ième adresse opérande si on utilise lors de l’instruction précédente un registre spécial i.e., accumulateur (ACC) pour stocker le résultat de l’opération précédente ; On peut se passer de toutes les adresses si on utilise une pile LIFO (Last In First Out). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 183 / 262 Exemple de programmation avec une adresse A = B × (C + D × E − F /G ) 1. 2. 3. 4. 5. 6. 7. 8. 9. LOAD DIV STA LOAD MPY ADD SUB MPY STA F G T1 D E C T1 B A Clement Jonquet (Polytech’ Montpellier) (LOAD=charger dans l’accumulateur) (DIV=diviser le contenu de l’accumulateur) (STA=ranger le contenu de l’accumulateur) (MPY=multiplier le contenu de l’accumulateur) (ADD=ajouter le contenu de l’accumulateur) (SUB=soustraire du contenu de l’accumulateur) Architecture des ordinateurs IG3 2011-2012 184 / 262 Exemple de programmation avec une pile 2 instructions seulement ont une adresse : LOAD = empiler le contenu de l’adresse dans la pile, STA = dépiler et stocker dans l’adresse. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. LOAD LOAD LOAD LOAD MPY ADD LOAD LOAD DIV SUB MPY STA B C D E F G A Clement Jonquet (Polytech’ Montpellier) PILE={B} PILE={B ;C} PILE={B ;C ;D} PILE={B ;C ;D ;E} PILE={B ;C ;D*E} PILE={B ;C+(D*E)} PILE={B ;C+(D*E) ;F} PILE={B ;C+(D*E) ;F ;G} PILE={B ;C+(D*E) ;F/G} PILE={B ;C+(D*E)-(F/G)} PILE={B*(C+(D*E)-(F/G))} PILE={} Architecture des ordinateurs IG3 2011-2012 185 / 262 Jeu d’instructions (1/2) Le nombre d’instructions d’une machine varie typiquement entre 50 et 250. 2 écoles s’affrontent. Architectures RISC (Reduced Instruction Set Computer) Préconisent un petit nombre d’instructions élémentaires dans un format fixe, faciles à réaliser dans le matériel et d’exécution rapide (i.e., une instruction par cycle machine). séquenceur câblé ; limiter les accès mémoires ; très bon compilateur. Architectures CISC (Complex Instruction Set Computer) Jeux d’instructions très riches de taille variable avec des instruction composées (e.g., racine carré, multiplication de flottants en double précision) séquenceur microprogramme ; Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 186 / 262 Jeu d’instructions (2/2) Transfert de données : mémoire → registre ou registre → registre (LOAD, MOV, STA, etc.) ; Opérations arithmétiques (4 opérations en virgule fixe ou flottante et en simple ou multiple précision) ; Opérations logiques (AND, OR, NOT, XOR, etc.) ; Contrôle de séquence (branchements impératifs et conditionnels, boucles, appel de procédure, etc) ; Entrées/sorties (READ, WRITE, PRINT, etc.) ; Manipulations diverses (décalages, conversion de format, incrementation de registre, etc.). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 187 / 262 Registres du CPU (1/2) Nous avons déjà mentionné : Compteur Ordinal (CO) - adresse de la prochaine exécution log2 (nbre de mot) ; Registre Instruction (RI) - instruction en cours d’exécution - taille d’un mot ; Accumulateur (ACC) - contient un des opérandes avant l’exécution et le résultat après - 2 × taille d’un mot ; Existe également : Registres généraux (ou banalisés) - informations fréquemment utilisées, résultats intermédiaires ; Registres d’indices (XR) - addition d’un indice pour obtenir une adresse (i.e., adressage indexé). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 188 / 262 Registres du CPU (2/2) Registres de base - addition d’une adresse de référence pour obtenir une adresse ; Registre d’état (PSW) - indique l’état d’une condition particulière dans le CPU (drapeaux) e.g., retenue, dépassement, etc ; Pointeur de pile (SP) - simule une pile en mémoire centrale (indique l’adresse correspondant au sommet de la pile) ; Registres spécialisés - spécialisés pour une opération particulière e.g., décalage, opérations arithmétiques sur des flottants ; Registres banalisés - utilisés pour diverses opérations telles que le stockage de résultats intermédiaires (variables). Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 189 / 262 Adressage des opérandes Il existe plusieurs méthodes pour adresser les opérandes (indiquer dans l’instruction elle mémé) : Direct - Le champ adresse contient l’adresse effective ; Indirect - Le champ adresse contient l’adresse où se trouve l’adresse effective ; Immédiat - Le champ adresse contient l’opérande ; Implicite - Le code opération indique où se trouve l’opérande Indexé - Adresse effective = contenu du champ adresse + contenu du registre d’index ; Basé - Adresse effective = contenu du registre de base + contenu du champ adresse ; Relatif - Adresse effective = contenu du CO + contenu du champ adresse ; Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 190 / 262 Exemples d’adressage des opérandes État des registres et des mémoires adresse 100 101 102 103 contenu a b c d adresse 200 201 300 301 contenu 300 302 alpha beta adresse 302 XR1 B1 B2 contenu gamma 1 100 200 Effet de différentes conditions d’adressage LOAD LOAD LOAD LOAD LOAD LOAD LOAD LOAD Clement Jonquet (Polytech’ Montpellier) 100 100,IMM 200,I 200,XR1 200,XR1,I 200,I,XR1 3,B1 1,B2 Architecture des ordinateurs a 100 alpha 302 gamma beta d 302 IG3 2011-2012 191 / 262 Unité arithmétique et logique Unité arithmétique et logique Dispositif chargé de toutes les opérations élémentaires de traitement de données. Totalement asservie à l’unité de contrôle qui déclenche et synchronise les opérations menées. L’UAL est capable d’effectuer une grande variété d’opérations arithmétiques et logiques : Opérations sur un registre ; Opérations sur un ou plusieurs opérandes ; Opérations en virgule flottante en simple et double précision. Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 192 / 262 Réalisation d’une UAL 32 bits Nous allons réaliser une UAL 32 bits capables d’effectuer les opérations élémentaires (nombre entier seulement). 1 Faire une UAL 1 bit pour AND, OR et l’addition ; 2 Ajouter les opérations de soustraction et de test d’infériorité et d’égalité ; 3 Faire une UAL 32 bits à partir des UALs 1 bit ; Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 193 / 262 UAL 1 bit, étape 1 : opérations OR et AND Regroupement en un seul circuit ⇒ Multiplexeur pour le choix de l’opération opération a 0 Résultat b Clement Jonquet (Polytech’ Montpellier) 1 Architecture des ordinateurs IG3 2011-2012 194 / 262 UAL 1 bit, étape 2 : ajout de l’addition Circuit additionneur complet pour l’addition avec retenue ; Re opération a 0 1 b + Résultat 2 Rs Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 195 / 262 UAL 32 bits : connexion de 32 UALs 1 bit Re a0 b0 a1 opération Re Résultat0 UAL1 bit Rs Re Résultat1 UAL1 bit b1 Rs .. . a 31 b 31 Clement Jonquet (Polytech’ Montpellier) .. . Re UAL1 bit Résultat31 Rs Architecture des ordinateurs IG3 2011-2012 196 / 262 UAL 1 bit, étape 3 : ajout de la soustraction En complément à 2, soustraire = ajouter l’opposé ⇒ inverseur ; Ajout d’un inverseur sur le bit d’entrée b ; Ajout d’un sélecteur Binverse permettant de choisir entre b et b. L’entrée Re sera positionnée à 1 pour ajouter 1. Binverse Re opération a 0 1 b 0 + Résultat 2 1 inférieur 3 Rs Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 197 / 262 UAL 1 bit, étape 4 : test d’infériorité et d’égalité x < y ⇔ x − y < 0, et x = y ⇔ x − y = 0, Tester le signe en complément à 2 ⇒ Utiliser le bit de poids fort ; ⇒ UAL 1 bit spéciale pour le bit de poids fort (slide suivant). Binverse Re opération a 0 1 b 0 + Résultat 2 1 inférieur 3 Rs Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 198 / 262 UAL 1 bit, étape 5 : UAL spéciale bit de poids fort Dans notre UAL 32 bits, pour le bit de poids fort : Déroutement de la sortie de l’additionneur ; Ajout du test de débordement (non détaillé). Binverse Re opération a 0 1 b 0 + Résultat 2 1 inférieur 3 Positionner détection de dépassement Débordement Rs Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 199 / 262 UAL 32 bits finale opération Bopposé a0 b0 Re Résultat0 UAL1 bit Rs a1 b1 UAL1 bit 0 Rs Re .. . .. . a 31 b 31 0 Re UAL1 bit Résultat1 Zéro .. . Résultat31 Débordement Rs Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 200 / 262 Symbole de l’UAL 32 bits Opération UAL a UAL Zéro Résultat Débordement b Rs Clement Jonquet (Polytech’ Montpellier) Architecture des ordinateurs IG3 2011-2012 201 / 262