Le modèle de machine de Von Neumann Architecture des ordinateurs 14 - L’unité centrale Philippe Darche IUT Paris Descartes Année 2009-2010 Appelée de manière raccourcie « architecture Von Neumann » D’après un rapport célèbre [Von Neumann 45] (disponible sur le serveur de l’IUT) Une abstraction (i.e. un modèle théorique) Pour juste donner les détails nécessaires à la programmation A ne pas confondre avec le modèle de calcul Philippe Darche Modélisation de la machine de Von Neumann 2 IUT Paris Descartes Modélisation de la machine de Von Neumann Cinq éléments dans le rapport de [von Neumann 45] Central Arithmetic Unité Arithmétique et Logique (UAL) Central Control Unité de Contrôle (UCo) Memory les différentes formes de mémoire mémoire centrale registres Input interface et périphérique d’entrée Output interface et périphérique de sortie E/S non représentées Philippe Darche 3 IUT Paris Descartes Philippe Darche 4 IUT Paris Descartes 1 Caractéristiques de ce modèle Un microprocesseur actuel Instructions et données dans la même mémoire Xeon 7400 (6 cœurs) par opposition à l’architecture Harvard Exécution séquentielle des instructions Philippe Darche 5 IUT Paris Descartes Une unité centrale du début Philippe Darche 6 IUT Paris Descartes Définition du MPU Le microprocesseur = version intégrée de l’unité centrale des années 50-70 CPU (Central Processing Unit) Un exemple : L’EDVAC Appellation à ne pas confondre avec le sens actuel (i.e. le micro-ordinateur) MPU = MicroProcessor Unit intégration de : UCo + UT mémoire cache contrôleur de mémoire vive dynamique ou DRAM (2009) mémoire vive dynamique (prochainement) il ne reste plus que les contrôleurs d’E/S à intégrer c’est déjà fait avec le micro-contrôleur ! Philippe Darche 7 IUT Paris Descartes Philippe Darche 8 IUT Paris Descartes 2 Définition du MPU Modélisation d’un microprocesseur Composant programmable Classification par application à usage général (General Purpose Processor ou GPP) microprocesseur à usage général micro-contrôleur (MCU pour MicroController Unit) intégration du CPU + mémoire + contrôleurs d’E/S Spécialisé (Application-Specific Processor pour ASP ou SPP pour Special Purpose Processor) traitement numérique du signal DSP (Digital Signal Processor) ASIP pour Application-Specific Instruction set Processor Philippe Darche 9 IUT Paris Descartes Philippe Darche 10 IUT Paris Descartes Une micro-architecture simple à bus de donnée unique Définitions de base Chemin de donnée (data path) ensemble des composants traversés par les données UAL (Unité Arithmétique et Logique) et FPU (Floating-Point Unit) bus de donnée (data bus) Chemin d’instruction (instruction path) ensemble des composants traversés par les instructions UCo bus d’instruction (instruction bus) Microarchitecture = détails internes Philippe Darche 11 IUT Paris Descartes Philippe Darche 12 IUT Paris Descartes 3 Calcul des drapeaux L’Unité arithmétique et logique UAL ou ALU (Arithmetic and Logic Unit) Calcul de fonctions unaires et binaires arithmétiques : + et – (originellement) puis * et ÷ aujourd’hui logiques ET, OU, NON et XOR comparaisons : >, ≥, <, ≤ et = décalages et rotations gauche et droite arithmétiques et logiques Schéma de base ACC = ACC + opérande Résultat avec positionnement éventuel des indicateurs voir transparent « cycle d’exécution de bas » Philippe Darche 13 IUT Paris Descartes Les registres utilisés par l’UAL Philippe Darche 14 IUT Paris Descartes Etats des indicateurs du registre d’état (1/2) Le registre d'état ou des indicateurs ou des drapeaux (flags) Etat temporaire (code condition) jusqu'à la prochaine instruction risquant de modifier l'indicateur concerné renseignement sur la validité du résultat : CCR (Code Condition Register) une partie seulement résultat nul, négatif, dépassement de format ou de capacité, etc. Divers registres le ou les accumulateurs etc. Philippe Darche 15 IUT Paris Descartes Philippe Darche 16 IUT Paris Descartes 4 Le registre d'état du 8086 OF DF IF TF SF ZF L’Unité de Contrôle AF PF D15 UCo Organise l'exécution des instructions au rythme d’un signal d’horloge Clk CF D0 OF (Overflow Flag) : indicateur de dépassement SF (Sign Flag) : indicateur de signe ZF (Zero Flag) : indicateur de zéro AF (Half carry Flag) : indicateur de demi-retenue PF (Parity Flag) : indicateur de parité CF (Carry Flag) : indicateur de retenue Philippe Darche 17 IUT Paris Descartes Les registres utilisés par l’UCo génération des signaux de synchronisation internes ou externes (bus de contrôle) du CPU Philippe Darche Etat permanent PC (Program Counter) ou IP (Instruction Pointer) contrôle de l’UC modification du comportement de certaines instructions Le Registre d'Instruction (RI) Le registre d'état ou des indicateurs manipulation des caractères modification du comportement du processeur une partie seulement mode pas à pas Les registres d'index (IX) Le pointeur de pile (SP) 19 IUT Paris Descartes Etats des indicateurs du registre d’état (2/2) Le Compteur Ordinal (CO) Philippe Darche 18 masquage des interruptions ⇒ IUT Paris Descartes Concerne l’UCo Philippe Darche 20 IUT Paris Descartes 5 Le registre d'état du 8086 (suite) OF DF IF TF SF ZF D15 AF Architecture de jeu d'instructions PF En anglais, Instruction Set Architecture (ISA) Couche d’abstraction CF D0 indique comment programmer le CPU (au-dessus) indique les fonctionnalités à implémenter (en-dessous) DF (Direction Flag) : indicateur de direction IF (Interrupt Enable Flag) : masque d'interruption TF (Single Step Flag) : indicateur de trappe Définit l’interface entre le matériel et le logiciel spécification fonctionnelle jeu d’instructions et l’encodage des instructions langage d’assemblage détails des registres manipulables et de l’organisation mémoire = ≠ Philippe Darche 21 IUT Paris Descartes Vue en couches Vue logique visible par le programmeur de bas niveau Microarchitecture (= détails internes) Philippe Darche 22 IUT Paris Descartes Microarchitecture Implémentation d’une ISA Utilisation d’une UCo et d’une UT Notion de chemin (path) ensemble des composants ou sous-ensembles traversés par un type de d’information chemin de données (data path) chemin d’adresse (address path) Philippe Darche 23 IUT Paris Descartes Philippe Darche 24 IUT Paris Descartes 6 Instructions Couches d’abstraction Jeu d'instructions = {instructions exécutables par le processeur} Familles d'instructions transfert de données arithmétique logique transfert de contrôle E/S Philippe Darche 25 IUT Paris Descartes Quelques exemples chez Intel Philippe Darche 26 Cycle d’exécution de base Transfert de données : mov Arithmétiques Recherche (cycle fetch) add, inc, sub, dec, mul, div shl, shr, sal, sar, rol, ror, rcl, rcr Décodage (cycle decode) Exécution Logiques : not, and, or, xor Transfert de contrôle Exécution (cycle execute) jmp je, jz, jne, jze, js, jse, jl, jle, jnle, jae, jnb, ja, jae, etc. jo, jno loop positionnement éventuel des indicateurs E/S : in, out Philippe Darche IUT Paris Descartes 27 IUT Paris Descartes Philippe Darche 28 IUT Paris Descartes 7 Le cycle recherche-décode-exécute Schéma d'exécution de base Instruction recherche du code opération stockage dans un registre inaccessible le registre d'instruction (IR pour Instruction Register) décodage du code machine Données du calcul recherche éventuelle de l'opérande stockage dans un accumulateur ou traitement direct Philippe Darche 29 IUT Paris Descartes Philippe Darche 30 IUT Paris Descartes Cycle d’exécution détaillé avec accès mémoire pour l’opérande Schéma d'exécution de base opérations internes Résultat de l'exécution accès mémoire début stockage dans un registre appelé accumulateur ou rangement en mémoire recherche instruction décodage instruction // incrémentation CO calcul adresse opérande(s) recherche opérande exécution instruction avec positionnement éventuel des indicateurs calcul adresse opérande stockage opérande Philippe Darche 31 IUT Paris Descartes Philippe Darche 32 IUT Paris Descartes 8 Instructions en langage d’assemblage Utilisation d'un mnémonique plus lisible plutôt qu'un code opération Exemple d’une instruction et son codage NOP (No Operation) pas d’opérande fonction : ne rien faire ! abréviation d’instruction utilisation pour retarder le CPU tester le bus d’adresse Exemples : NOP; ne rien faire MOV ax,[y]; ax ← (y) SUB ax,[y]; ax ← (ax) - (y) Outil de traduction : l'assembleur Philippe Darche 33 IUT Paris Descartes Remarque : une addition se fait en plusieurs temps M3 = M1 + M2 Philippe Darche 34 Exemple d’une instruction et son codage ADD (ADDition) MOV ax,[M1] ADD ax,[M2] MOV [M3],ax syntaxe assembleur deux opérandes (opérateur binaires) fonction : addition de deux entiers opération ACC Philippe Darche IUT Paris Descartes 35 IUT Paris Descartes Philippe Darche ACC + [M] 36 IUT Paris Descartes 9 Contrôle micro-programmé Micro-instructions A chaque instruction (externe) correspond une suite de micro-instructions (= micro-programme) Un tronc commun et une partie spécifique à chaque instruction Philippe Darche 37 IUT Paris Descartes Tronc commun à toute instruction Cycle recherche (fetch), appelée aussi « phase d’appel » lire l’instruction à l’adresse contenue dans PC ranger le code instruction dans RI incrémenter PC 39 38 IUT Paris Descartes Partie spécifique à chaque instruction Phase d’exécution recherche des opérandes exécuter effectivement l’opération suivant RI Exemple LDA $100 (LoaD Accumulator, chargement de l’accumulateur) T3 : MAR PC; RAD PC + 1 T4 : MDR M[MAR]; PC RAD T0 : MAR PC; RAD PC + 1 T1 : MDR M[MAR]; PC RAD T2 : IR MDR Philippe Darche Philippe Darche T5 : MAR MDR T6 : MDR M[MAR] T7 : ACC MDR IUT Paris Descartes Philippe Darche 40 IUT Paris Descartes 10 Partie spécifique à chaque instruction Exemple Partie spécifique à chaque instruction Exemple STA $100 (Store Accumulator, déchargement de l’accumulateur) T3 : MAR PC; RAD PC + 1 T4 : MDR M[MAR]; PC RAD ADDA $100 (ADD Accumulator, addition avec l’accumulateur) T3 : MAR PC; RAD PC + 1 T4 : MDR M[MAR]; PC RAD T5 : MAR MDR T6 : MDR ACC T7 : M[MAR] MDR Philippe Darche T5 : MAR T6 : MDR T7 : ACC 41 IUT Paris Descartes Philippe Darche MDR M[MAR] ACC + MDR 42 IUT Paris Descartes Une micro-architecture simple à deux bus de donnée Types de micro-architecture Machine à trois adresses deux pour les opérandes sources et une pour le résultat Machine à deux adresses une adresse pour une opérande source et une pour le résultat Machine à une adresse machine à accumulateur l’accumulateur pour une opérande sources et le résultat Machine à zéro adresse Machine à pile opérandes sources et résultat dans la pile Philippe Darche 43 IUT Paris Descartes Philippe Darche 44 IUT Paris Descartes 11 Une micro-architecture simple à trois bus de donnée Formats possibles d'une instruction Plusieurs champs : le champ instruction éventuellement, un ou plusieurs champs opérande(s) code op. code op. réf. opérande code op. réf. opérande réf. opérande code op. réf. opérande réf. opérande réf. opérande Philippe Darche 45 IUT Paris Descartes Instruction la taille et organisation mémoire la structure du bus Implications du nombre sur : une plus grande richesse du jeu d’instruction d’où l’appellation CISC (Complex Instruction Set Computer) mais augmentation de la taille (i.e. surface) de la partie contrôle Des solutions : le microprocesseur RISC (Reduced-Instruction-Set Computer) le microprocesseur CRISC (Complex-Reduced Instructions Set Computer) Philippe Darche 46 IUT Paris Descartes Autre classement (structure matérielle) Implications du format sur : ☺ Philippe Darche 47 IUT Paris Descartes CISC (Complex Instruction Set Computer) RISC (Reduced-Instruction-Set Computer) La synthèse : CRISC (Complex-Reduced Instructions Set Computer) VLIW (Very Long Instruction Word) Superscalaire Philippe Darche 48 IUT Paris Descartes 12 Conclusion (2010) Une puce moderne L’intégration continue plus de cœurs (4 à 64) les niveaux de cache (L1, L2 et maintenant L3) le contrôleur de DRAM bientôt la DRAM ? Philippe Darche 49 IUT Paris Descartes Philippe Darche 50 IUT Paris Descartes 13