Architecture des Systèmes Programmés (6 conférences) Architectures CISC et VLIW : J.Weiss 4 conférences Microprocesseurs 8, 16 et 32 bits d’usage général (8080, ..., Pentium 4) Microcontrôleurs 8 et 16 bits (68hc11, 8051 et PIC) Nouvelles architectures (Itanium, IA64 et TransMeta) Processeurs graphiques (GPU) Mémoires Architectures RISC et DSP : P. Leray 2 conférences Processeurs RISC (PowerPC, Alpha, ...) DSP (TMS320, 56000, ...) Bus de communications septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 1 Architectures ZISC : Zero Instruction Set Computer Autrement dit : Processeur Câblé (et donc PAS programmé) CISC : Complex Instruction Set Computer Processeur possédant un jeu d’instructions fourni de longueur et de temps d’exécution variables. VLIW : Very Long Instruction Word Processeur possédant un jeu d’instructions encore plus fourni que le cas du CISC (longueur et temps d’exécution variables). RISC : Reduced Instruction Set Computer Processeur possédant un jeu d’instructions réduit de longueur et de temps d’exécution fixes septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 1 2 Microprocesseurs d’usage général à architecture CISC Architecture de base des microprocesseurs Historique de l’informatique et des Microprocesseurs ALU, Registres Composants périphériques Microprocesseurs et Microcontrôleurs 8 bits Microprocesseurs 16 bits Gestion de mémoire virtuelle, caches Microprocesseurs 32 bits 1ère Génération : 80386, 68020 2ème Génération : Pentium 3ème Génération : Pentium Pro, Pentium II 4ème Génération : Pentium 4, TransMeta Microprocesseurs 64 bits septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 3 50 ans d’histoire de l’industrie informatique Invention du ENIAC : 1er ordinateur circuit intégré 1er Ordinateur IBM (Kilby et Noyce) 1947 1955 1958-59 1948 1957 Mise au point du transistor Fondation de Fairchild SC septembre 09 Fondation d’Intel Fondation de Microsoft 1968 1963 1975 1971 Mini-ordinateur 1er µP DEC 1ère EPROM Intel IBM-PC 486 1981 1989 1977 1985 Apple II 386 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 2 Pentium II 1997 1993 Pentium 2000 Pentium 4 4 État de l’informatique en 1968 1948 : 1er ordinateur : ENIAC (30 tonnes 85 m3) (Electronic Numerical Integrator And Computer) 1968 : 30.000 ordinateurs dans le monde : Mainframes (plusieurs pièces) Mini-ordinateurs (taille d’un réfrigérateur) Programmation : Cartes et bandes perforées septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 5 Historique des Microprocesseurs CISC 2,3 kT 1,2 MT 5,5 MT 42 MT 580 MT 1900 MT 1960 1964 1968 1971 1972 1973 1975 1976 1978 1979 1982 1983 1984 1987 1989 1993 1995 1997 2000 2007 2008 septembre 09 8 bits 8 bits 8 bits 16 bits 16 bits 16 bits 16 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 32 bits 64 bits Premiers CI SSI MSI LSI 1ère G. 2ème G. 3ème G. 1ère G. 1ère G. 1ère G. 2ème G. 1ère G. 1ère G. 1ère G. 2ème G. 3ème G. 3ème G. 3ème G. 4ème G. 4ème G. 2ème G. AND, OR Registres DRAM 1 kbits, µP 4 bits (4004 d’Intel) 8008 (Intel) 8080 (Intel), 6800 (Motorola) 8085 (Intel), 6809 (Motorola), Z80 (Zilog) TMS 9900 (Texas Instruments) 8086 (Intel) IBM-PC/XT 68000 (Motorola) MAC 80286 (Intel) IBM-PC/AT 32032 (National) 80386 (Intel), 68020 (Motorola) 68030 (Motorola) SUN3 80486 (Intel) Pentium (Intel) PentiumPro (Intel) Pentium II (Intel) Pentium 4 (Intel) Core 2 Quad (Intel) Itanium 2 dual core (Intel) Microprocesseurs d’usage général : Introduction ; J. Weiss Page 3 6 Création d’Intel : les «Fairchildren» Bob Noyce : Fondateur Invention du circuit intégré en 1959 Fondateur et ex dirigeant de Fairchild Semiconductor Gordon Moore : Fondateur Invention du circuit intégré en 1959 Fondateur et ex responsable R&D de Fairchild Semiconductor Andy Grove : N°4 d’Intel Docteur en Chimie Ex responsable de fabrication de Fairchild Semiconductor septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Les débuts d’Intel 7 2300 T 1969 : mémoires SRAM 64 bits (bipolaire) 1970 : conception du premier microprocesseur : 4004 pour Busicom (Japon) : Technologie MOS 10 µm 3,17*4,23 mm² 1971 : Commercialisation du premier microprocesseur : 4004 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 4 8 Succès d’un produit Le succès d’un produit est lié à : Diffusion : Microinformatique (x86) Marchés militaires (Z80.000) Marchés captifs (Rockwell, Comodore) Prix : existence de 2ndes Sources Environnement : existence de périphériques de systèmes de développement Arrivée sur le marché Notion de «famille» : x86, 680x0 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 9 Technologie des microprocesseurs Loi de Moore Pentium 4 Nombre de transistors 100 M Pentium II 10 M Pentium 486 1M 386 286 100 k 10 k 8086 4004 1k 1970 8080 1975 1980 1985 1990 1995 2000 Temps septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 5 10 Technologie des microprocesseurs Loi de Moore septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 11 Technologies Silicium Evolutions de la Puissance consommée Puissance (Watts) 100000 10000 1000 100 Dual-Core Pentium® 286 486 8086 386 8085 8080 8008 1 4004 10 0.1 1971 1974 1978 1985 1992 2000 2004 2008 Année septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 6 12 Technologie des ordinateurs Loi de Machrone La machine dont on a besoin coûte toujours $5.000 1983 : IBM-PC/XT : ~2.000 € 1987 : IBM-PC/AT : ~ 2.000 € 1991 : IBM-PC/486 : ~ 2.000 € 1997 : IBM-PC/PII : ~ 2.000 € 2001 : IBM-PC/PIII : ~ 2.000 € 2008 : PC Quad-Core : ~ 2.000 € septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 13 Marché des microprocesseurs 4 bits Calculatrices Jeux vidéo µsystèmes 8 bits Systèmes programmés Microcontrôleurs (carte à puce) 16 bits Systèmes embarqués (ABS, Injection) 32 bits Micro-ordinateurs 64 bits Stations de travail, PlayStation septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 7 14 Marché des processeurs septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 15 Système programmé CPU Unité de commande Registres bus de bus Unité d’entrée d’entrée ALU sortie Unité de sortie bus de données bus d’adresses Mémoire septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 8 16 Système programmé Constitution Cœur Processeur Elément central du système, il constitue les cœur et est défini par son jeu d'instructions et ses registres Poumons Mémoire Mémoire centrale, en liaison avec le processeur, elle stocke les programmes et les données Membres Périphériques et coupleurs Permettent au système de communiquer avec l'extérieur Artères Bus Pour la communication entre les différents éléments du système pour les adresses, les données et les signaux de contrôle septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 17 Éléments de base d’un processeur Partie Opérative ALU : Opérateur arithmétique et logique Cœur du processeur, il est associé à un décaleur Registres «Données» A : Accumulateur Stocke les données intermédiaires B, C, ... : Registres Éléments de stockage à adressage implicite Registres «Adresses» PC : Compteur Ordinal Sert à pointer sur la prochaine instruction SP : Pointeur de Pile Sert à pointer sur le sommet de la pile IX : Registre d’index Sert à indexer un segment mémoire septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 9 18 Mono-Bus Bus de données Z C B Status Accumulateur ALU Registres internes septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 19 Double-bus Bus de données (entrée) Z C B Status Accumulateur ALU Bus de données (sortie) septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 10 20 Triple-bus Bus de données (entrées 1 & 2)) C B A Status Z ALU Bus de données (sortie) septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 21 Architecture d’µP 8 bits 8 Registres 16 bits (adresses) bus de données Accumulateur PC SP N H V Z C IX 16 ALU Décaleur bus d’adresses Registres 8 bits (données) septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 11 22 Fonctionnement séquencé Microprocesseur Mémoire Code opératoire Décodage Opérandes Exécution Résultat septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 23 Accélération Performances d’un processeur Temps par tâche = I.C.T I = nombre d'instructions/tâche. C = nombre de cycles/instructions. T = temps de cycle. AMÉLIORATION DES PERFORMANCES Paramètre I Augmenter le jeu d’instructions du µP ; instructions de + en + complexes Architectures CISC et VLIW Paramètre C Nécessite le traitement simultané de plusieurs instructions - structures pipeline, - structures parallèles, superscalaires Paramètre T Amélioration de la technologie, réduction de la durée des opérations élémentaires - structures Super-Pipeline septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 12 24 Architecture des Processeurs (Super-Scalaire) Dans la recherche de performances de calcul maximales, il peut être intéressant d’intégrer plusieurs unités (N) arithmétiques en parallèle ; ainsi, sous réserve de non-dépendance des données et des ressources, on peut envisager d’exécuter N instructions simultanément. Registres Registres Scalaire Super-Scalaire C’est au début des années 1990 que la technologie a permis l’intégration de structures superscalaires ; les processeurs actuels comptent de 3 à 4 unités de calcul entier et de 1 à 2 unités de calcul flottant fonctionnant en parallèle septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 25 Accélération Séquencement des instructions • Exécution séquentielle Fetch Décod Mem 1 instruction/4 cycles Exec Fetch Décod Mem Exec • Exécution « pipelined » Fetch Décod Mem Exec Fetch Décod Mem Exec Fetch Décod Mem Exec Fetch Décod Mem 1 instruction/cycle Exec Exemple : Intel Pentium 4 : 20 niveaux de pipeline septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 13 26 Séquencement des instructions (Pipeline - Super-Pipeline) Le séquencement pipeline permet, dans un cas idéal, d’obtenir l’exécution d’une instruction/cycle mais il peut être intéressant de découper certaines phases pour pouvoir augmenter les fréquences d’horloge ; on parlera alors de structures Super-Pipeline. 5 ns 5 ns Registre Registre Registre Tampon Registre 10 ns H H H H H Opérateur arithmétique combinatoire Opérateur arithmétique pipeline Fmax = 100 MHz Fmax = 200 MHz Exemple : le Pentium 4 possède 20 niveaux de pipeline, ce qui permet d’obtenir une fréquence d’horloge supérieure à 3 GHz. septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 27 Pipeline Analyse de conflits dans le pipeline Instructions load/store : - I : Lecture et décodage de l'instruction (Fetch), - E : Exécution de l'instruction; calcul de l'adresse mémoire - T : Transfert de la donnée. Instructions registre-registre: - I : Lecture et décodage de l'instruction (Fetch), - E : Exécution de l'instruction; opération arithmétique ou logique entre registres, - W : Mise à jour des registres internes - rangement du résultat. Instructions de branchement : - I : Lecture et décodage de l'instruction (Fetch), - E : Exécution de l'instruction; mise à jour de l'adresse de l'instruction suivante, Load A M Load B M Add A+ B C Store M I E T I E T Exécution séquentielle I E W C I BranchX E T I E temps 14 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 14 28 Pipeline Conflits de ressources Accès simultanés à une même ressource, par exemple la mémoire. Load A M Load B M I Add C A+ B Store M C Branch X E T I E T I w ait w a it Phases d’attente (Wait) E W I E T I E temps 8 Load A M I Load B M Add C A+B Store M C E T I wait E T I wait E W I Branch X E T I Séparation des mémoires programme et données E temps (architecture Havard) 8 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 29 Pipeline Dépendances de données Load A M Load B M Add C A+B I E T I E I T E W Insertion d’une instruction NOP Load A M Load B M I E T I E T I E NOP Add C A+B Store M C Branch X I E W I E T I E temps 7 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 15 30 Pipeline Conflits de contrôle Liés aux instructions de branchement : l’adresse de l’instruction n’est connue qu’à la fin de la phase d’exécution de l’instruction de branchement Load A M Load B M I Add C A+ B Store M C NOP Insertion d’une instruction NOP E T I E T I E I E W I Branch X NOP E T I E I E X : Instruction suivante I 7 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss E temps 31 Prédiction de Branchement Les techniques d’accélération des traitements (pipeline, superscalaire, utilisation des caches) ne fonctionnent bien que pour des exécutions séquentielles des instructions ; en cas de branchement (conditionnel, boucle, interruption), il faut « remettre les pendules à l’heure » (vidage des pipeline, mise à jour des caches, …), ce qui peut être très long ! Ainsi, pour profiter de ces structures accélératrices, il faut être capable de prédire le déroulement du programme, ce qui n’est pas chose aisée. Techniques de Prédiction de Branchement : Statique : Aucune prédiction (ex. 80486) : 40 % de succès On prend tout : 60 % de succès Prédiction rétrograde (ex. PA RISC) : 65 % de succès Le compilateur positionne un bit (ex. RIDGE) : 75 % de succès Dynamique : même comportement (ex. AMD-K5) : 80 % de succès Branch History Table (ex. PPC-604, Pentium) : > 85 % de succès septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 16 32 Mise en œuvre des structures accélératrices Pour profiter pleinement des structures superscalaires et pipeline, c’est à dire sans temps d’attente (Wait ou NOP), l’idéal est d’ordonner correctement les instructions (Instruction Scheduling) ; ceci peut être fait par : Le logiciel : un compilateur performant devrait être capable d’optimiser l’agencement des instructions en fonction des ressources matérielles ; ceci n’est hélas pas toujours possible (variétés de processeurs et d ’environnements, système d’exploitation, …) Le matériel : sur la puce, un système de contrôle peut réorganiser les instructions en fonction des disponibilités du moment (exécution dans le désordre ou Out-Of-Order) ; le principe est efficace mais ne peut fonctionner que sur un faible nombre d’instructions. septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 33 Organigramme simplifié Reset Mise en route Initialisation Arrêt Halt ? oui Halt non Accès direct à la mémoire DMA ? NMI ? Interruption masquable INT ? oui non non non septembre 09 DMA non Interruption non masquable Traitement de l’instruction oui oui Accepté ? oui Fetch Sauvegarde Execute Saut Microprocesseurs d’usage général : Introduction ; J. Weiss Page 17 34 Fonctionnement sous interruption Principe Principe : dérouter un programme à la demande d’un organe périphérique Programme principal INT 1 ppppppp 2 ppppppp Routine d’interruption 3 ppppppp Sauvegarde du contexte 4 ppppppp 1 iiiiiiiii 5 ppppppp 2 iiiiiiiii 6 ppppppp 3 iiiiiiiii 7 ppppppp 4 iiiiiiiii 8 ppppppp 5 iiiiiiiii 9 ppppppp 6 iiiiiiiii 10 ppppppp 11 ppppppp 12 ppppppp 13 ppppppp septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss 35 Hiérarchisation des interruptions S/P IT 1 S/P IT 3 Programme principal S/P IT 2 It1 It2 It3 septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 18 36 Interruptions : Réentrance S/P IT 1 SP Programme principal I=0 I=0 It1 I=3 CALL SP CALL SP I=10! septembre 09 I=10 Microprocesseurs d’usage général : Introduction ; J. Weiss 37 Fonctionnement sous interruption Contexte En cas de demande d’interruption : Doit-on en tenir compte ? ........notion de masquage Qui l’a provoquée ? .................identification (N° de ligne ou vecteur) Qui est prioritaire en cas de demande multiple? Que doit-on sauvegarder ? 2 types d’interruption : • Matérielle • Logicielle septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 19 38 Fonctionnement sous interruption Modes NMI (Non Maskable Interrupt): Sauvegarde du contexte et saut à une adresse fixe INT(Maskable Interrupt) : plusieurs modes : Mode 1 : comparable à NMI Mode 2 : sauvegarde du contexte et attente de l’adresse de saut sur le bus de données Mode 3 : sauvegarde du contexte et attente d’un vecteur sur le bus de données permettant de définir l’adresse de saut septembre 09 Microprocesseurs d’usage général : Introduction ; J. Weiss Page 20 39