Architecture et technologie des ordinateurs II Gianluca Tempesti EPFL-DI-LSL, INN 235 Tel: 693 2676 E-Mail: [email protected] Web: lslwww.epfl.ch/~tempesti/CoursUNIL.htm Bibliographie John P. Hayes, Computer Architecture and Organization, McGraw-Hill, 3rd ed., 1998. David A. Patterson and John L. Hennessy, Computer Architecture : A Quantitative Approach, Morgan Kaufmann, 2nd Ed., 1996. David A. Patterson and John L. Hennessy, Computer Organization and Design : The Hardware/Software Interface, Morgan Kaufmann, 2nd ed., 1997. David A. Patterson and John L. Hennessy, Architecture des ordinateurs: une approche quantitative, Thomson Publishing, 2ème ed., 1996. Programme détaillé Semaine Historique Prix vs. performance Niveaux de conception Semaine 1: Introduction 2: Arithmétique I Semaine Multiplication et division Unité de traitement Unité de contrôle Programmes Semaine 5: Instructions Virgule fixe et flottante Addition et soustraction 3: Arithmétique II Semaine 4: Contrôle Jeux d’instructions Décodage Séquencement Modes d’adressage Semaine 6: Processeurs Microprogrammation Types de processeur Programme détaillé Semaine Gestion des procédures Gestion des interruptions Semaine Semaine 11: Petite pause Semaine 12: Pipelining 9: Mémoires II 10: Périphériques Gestion du bus système Gestion des périphériques Fonctionnement Aléas des pipelines Prédiction de branchement Semaine 13: Parallélisme des instructions I Mémoire cache Mémoires associatives Semaine 8: Mémoires I RAM Mémoire virtuelle Semaine 7: Procédures Ordonnancement dynamique Lancement multiple Compilation Semaine 14: Parallélisme des instructions II Architectures avancées Historique I - Époque méchanique Blaise Pascal - 1642 - Addition et soustraction Retenue automatique, complément Gottfried Leibniz - 1671 - Multiplication et division Additions successives Charles Babbage 1823 Séquence d’instructions 1834 - Difference engine - addition - Analytical engine - toute opération Contrôle de séquence (programme), ALU et mémoire Historique II - Calcul Calcul : Z=f(X) Turing machine - 1936 Processor P H Read/Write Head Memory Tape T Instructions: read, write, move, halt Machine “universelle” Historique III - Deuxième guerre Ordinateurs éléctroméchaniques Konrad Zuse - Z3 (1941) - nombres binaires, flottants ??? - Colossus (1943/1970) - décodage Howard Aiken - Harvard Mark I (1944) Ordinateurs éléctroniques Mauchly Programmation manuelle, base 10 Wilkes - EDSAC (1949) Programme embarqué, base 2 Von & Eckert - ENIAC (1946) Neumann, Mauchly & Eckert - EDVAC (1951) Rapport Burks, Goldstine et Von Neumann (1946) Historique IV - Générations Dates Technologie Produits 1 1950-1959 Tubes à vide Ordinateurs électroniques 2 1960-1968 Transistors Ordinateurs commerciaux 3 1969-1977 Circuits intégrés Miniordinateurs 4 1977-???? VLSI PC et stations de travaille 5 ????-???? ???? ???? Historique V - Générations Date Produit Taille (ft3) Puissance (W) Add/sec Prix (1996) 1951 UNIVAC I 1000 124500 1900 $5M 1964 IBM S/360 60 10000 500K $4M 1965 PDP-8 8 500 330K $66K 1976 Cray-1 58 60000 166M $8.5M 1981 IBM PC 1 150 240K $4K 1991 HP9000 2 500 50M $8K 1996 PPro 200 2 500 400M $4.5K Performance Temps d’exécution et bande passante Performance = 1 Temps d’exécution Coups d’horloge et instructions Temps d’exécution (CPU) = # coups d’horloge pour le programme Fréquence d’horloge # coups d’horloge pour le programme = # instructions # coups d’horloge moyen par instruction Performance - Loi d’Amdahl Améliorations et accélération Accélération (speedup) = Temps d’exécution avant amélioration Temps d’exécution après amélioration La loi d’Amdahl Temps d’exécution après amélioration = Temps d’exécution concerné + Temps d’exécution non concerné Amélioration Performance - Mesures MIPS et FLOPS Fréquence d’horloge Performance de pointe (peak) Benchmarks Répartition des instructions Taille Localité SPEC des références (spatiale et/ou temporelle) Coûts Coût de fabrication Coût du circuit intégré = Coût de la puce + Coût du test + Coût de la mise en boîtier Rendement après le test final Coût d’une puce = Coût de la tranche (wafer) Puces par tranche x Rendement des puces Coût des composants = 25-30% du prix de vente Codage binaire Dans les systèmes numériques, toute information est codée en binaire TRANSITORS C C=0 A INVERSEUR C=0 B C A Vcc B OUT=0 IN=1 A C=1 B A A B C=1 B A B IN 0 1 OUT 1 0 GND Codage en base 2: N = pn2n + … + p222 + p121 + p020 par exemple: 10110 = 1x24 + 0x23 + 1x22 + 1x21 + 0x20 = 16 + 4 + 2 = 22 mais aussi: 10110 = add R1, R2 Logique combinatoire I Portes logiques INVERTER I I 1 0 O O 0 1 2-INPUT AND GATE A O B A B O 0 0 0 0 1 0 1 0 0 1 1 1 2-INPUT OR GATE A O B A B O 0 0 0 0 1 1 1 0 1 1 1 1 Algèbre booléenne Minimisation (tables de Karnaugh) 4-INPUT MULTIPLEXER A B O C D S0 S1 S0 S1 O 0 0 A 0 1 B 1 0 C 1 1 D Logique combinatoire III Unité arithmétique et logique (ALU) M S1 S0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 F A A•B A A+B A-1 A+B A-B A+1 logique A B M 2 arithmétique S F Logique séquentielle I Verrou (latch) 0 D Q D LD Q Q 1 D: entrée d’excitation LD: entrée de contrôle Q: sortie ou état du latch LD Q Bascule (flip-flop) maître D D Q LD Q CK esclave Q Q LD Q Q D D Q CK Q Logique séquentielle II Machine d’état 10/1 ƒ bascules état futur n état présent X1X2/Z a 0001 11/1 10/1 00/0 01/0 00/0 CK 11/1 d 1000 10/0 01/0 b 0010 11/0 11/0 10/0 01/1 c 0100 01/1 00/1 00/1 Logique séquentielle III Registre CK Q3 Q2 Q1 Q0 L D3 D2 D1 D0 Registre à décalage CK S0 S1 Q3 Q2 Q1 Q0 D3 D3 D2 D1 D0 D0 Pile (stack) Compteur CK DIR push pop Q3 Q2 Q1 Q0 CK sommet Niveau registre Unité d’information: mot (2N bits) Composants de base: multiplexeurs, décodeurs, additionneurs, ALUs, registres, registres à décalage, compteurs, etc. Pas de méthode formelle pour les optimisations et les simplifications. L’algèbre booléenne peut être adaptée, mais ne suffit pas (opérations numériques). Niveau processeur (CPU) Unités d’information: blocs d’instructions, blocs de données. Composants de base: mémoire cache, datapath, décodeur, bancs de registres, unité flottante. Cache Instructions Unité de Contrôle CPU Décodeur Unité de Traitement ALU Unité Flottante PC Registres Cache Données Niveau système Unités d’information: programme, structures de données. Composants de base: mémoire, CPU, I/O, bus système MÉMOIRE CPU IO IO IO ••••• BUS SYSTÈME I/Os “standard”: cartes SCSI et/ou IDE, clavier, souri, haut-parleurs, etc. La vitesse du bus système devient le facteur prédominant pour la performance d’un ordinateur. Von Neumann vs. Harvard Von Neumann MÉMOIRE CPU IO IO IO ••••• BUS SYSTÈME Harvard BUS INSTRUCTIONS MÉMOIRE DONNÉES MÉMOIRE INSTR CPU BUS DONNÉES IO IO IO • • • • • Hiérarchie des mémoires Architecture Von Neumann Mémoire non-volatile (disque dur) Architecture Mémoire cache (niveau 2) Mémoire cache (niveau 1) Mémoire volatile instructions Cache instructions (niveau 2) Cache instructions (niveau 1) Mémoire volatile données Cache données (niveau 2) Cache données (niveau 1) Registres CPU (niveau 0) Harvard Mémoire non-volatile (disque dur) Architecture Mémoire volatile (RAM) Registres CPU (niveau 0) Harvard “réelle” Mémoire non-volatile (disque dur) Mémoire volatile (RAM) Mémoire cache (niveau 2) Cache instructions (niveau 1) Cache données (niveau 1) Registres CPU (niveau 0)