Les processeurs
Avant-propos processeur : élément fondamental en informatique
Histoire Architecture de Von Neumann
Histoire – I 1949 : EDVAC utilisations de relais électromagnétiques ou de tubes à vide années 50/60 : apparition des transistors => circuits plus fiables et plus compacts apparition du circuit imprimé intégration de portes NOR dans des circuits intégrés
Histoire – II L'intégration se développe : SSI (small scale integration) petite : inférieur à 12 ; MSI (medium scale integration) moyenne : 12 à 99 ; LSI (large scale integration) grande : 100 à ; VLSI (very large scale integration) très grande : à ; ULSI (ultra large scale integration) ultra grande : et plus. distinction plus très pertinente : intégration exponentielle
Histoire – III 1964 : IBM System 360 – utilisation des microcodes DEC : PDP8 PDP11 (LSI) : 4 circuits seulement 1970 : premier microprocesseur intégré : Intel : Intel 8080 fabrication ULSI sur un seule circuit
Histoire – IV Loi de Moore (Gordon Moore - Fairchild Semi Conductors – fondateur d'Intel) le nombre de transistor dans un processeur double tous les 18 mois Loi de Rock : le coût d'une usine de fabrication de processeurs double tous les 4 ans (Arizona 2004 : 2 milliards $) The Wall : limite physique : pas possible de fabriquer des transistors CMOS de moins de 20 nm....
Composition d'un processeur Les parties essentielles dun processeur sont : lUnité Arithmétique et Logique (UAL, Arithmetic and Logical Unit - ALU), qui prend en charge les calculs arithmétiques élémentaires et les tests ; l'unité de contrôle (Control Unit);
Les registres - I les registres, qui sont des mémoires de petite taille (quelques octets), très rapides que dont l'UAL manipule le contenu à chaque cycle de lhorloge. Un certain nombre de registres sont communs à la plupart des processeurs : compteur ordinal (Program Counter ou PC) : ce registre contient ladresse mémoire de linstruction en cours dexécution ;
Les registres - II accumulateur : ce registre est utilisé pour stocker les données en cours de traitement par lUAL ; registre dadresses : il contient toujours ladresse de la prochaine information à lire par lUAL, soit la suite de linstruction en cours, soit la prochaine instruction ; registre dinstructions : il contient linstruction en cours de traitement ;
Les registres - III registre détat : il sert à stocker le contexte du processeur, il est constitué de drapeaux (flags) servant à stocker des informations concernant le résultat de la dernière instruction exécutée ; pointeurs de pile : ce type de registre, dont le nombre varie en fonction du type de processeur, contient ladresse du sommet de la pile (ou des piles) ; registres généraux : ces registres sont disponibles pour les calculs ;
Processeur – Constitution le séquenceur, qui permet de synchroniser les différents éléments du processeur. En particulier, il initialise les registres lors du démarrage de la machine et il gère les interruptions ; il émet les micro-commandes lhorloge qui synchronise toutes les actions de lunité centrale.
Processeur – Constitution l'unité dentrée-sortie, qui prend en charge la communication avec la mémoire de lordinateur ou la transmission des ordres destinés à piloter ses processeurs spécialisés, permettant au processeur daccéder aux périphériques de lordinateur.
Processeur – Constitution -suite Les processeurs actuels intègrent également des éléments plus complexes : plusieurs UAL, ce qui permet de traiter plusieurs instructions en même temps. L'architecture superscalaire, en particulier, permet de disposer des UAL en parallèle, chaque UAL pouvant exécuter une instruction indépendamment de l'autre ; l'architecture superpipeline permet de découper temporellement les traitements à effectuer. Cest une technique qui vient des gros systèmes ;
Processeur – Constitution une unité de prédiction de saut, qui permet au processeur danticiper un saut dans le déroulement dun programme, permettant déviter dattendre la valeur définitive dadresse du saut. permet de mieux remplir le pipeline ; une unité de calcul en virgule flottante (en anglais Floating Point Unit - FPU), qui permet daccélérer les calculs sur des nombres réels codés en virgule flottante ;
Processeur – Constitution la mémoire cache, qui permet daccélérer les traitements, en diminuant les temps d'accès à la mémoire. Ces mémoires tampons sont en effet beaucoup plus rapides que la RAM et ralentissent moins le CPU. Le cache instructions reçoit les prochaines instructions à exécuter, le cache données manipule les données. Parfois, un seul cache unifié est utilisé pour le code et les données. Plusieurs niveaux de caches peuvent coexister, on les désigne souvent sous les noms de L1, L2 ou L3. Dans les processeurs évolués, des unités spéciales du processeur sont dévolues à la recherche, par des moyens statistiques et/ou prédictifs, des prochains accès en mémoire centrale.
Processeur - caractéristiques Un processeur est caractérisé par : la largeur de ses registres internes de manipulation de données (8, 16, 32, 64, 128 bits) ; la cadence de son horloge exprimée en MHz ou GHz le nombre de noyaux de calcul (core) ; son jeu d'instructions (ISA en anglais, Instructions Set Architecture) dépendant de la famille (CISC, RISC, etc) ; sa finesse de gravure exprimée en nm (nanomètres) et sa microarchitecture.
Unité Arithmétique et logique effectue les calculs
Unité de contrôle gére le fonctionnement des différents organes
Fonctionnement du processeur cycle de base FETCH (Recherche de l'instruction) ; le CO est ensuite incrémenté de la taille (fixe ou non) de l'intruction DECODE (Décodage de l'instruction : opérations et opérandes) ; EXECUTE (Exécution des opérations) ; WRITEBACK (Ecriture du résultat en mémoire).
Mémoire centrale Unité de traitement Cases mémoire Décodeur dadresse Registre mot Séquenceur Décodeur Code opération Zone adresse Registre instruction Bus commandes Horloge UAL Registre détat Accumulateur Compteur ordinal Bus dadresses Bus de données Adresses basses FFFD FFFE FFFF Adresses hautes Autres registres Registre dadresse mémoire
22 Fonctionnement de lunité centrale Exemple dune suite dinstructions Le programme en langage dassemblage (proc. 6809) réalisant une telle suite dinstructions sera : Code machine générés par le programme assembleur –S–STA $F820B7 F8 20 Range à ladresse F820 le contenu du registre A –A–ADDA $F810 BB F8 10 Ajoute le contenu de ladresse F810 à celui du registre A – L– LDA $F800B6 F8 00 Charge le contenu de ladresse F800 dans le registre A
Unité de gestion mémoire circuit intégré faisant partie intégrante depuis quelques années (80386) assure : La translation d'adresses logiques en adresses linéaires par l'unité de segmentation (Segmentation) La translation d'adresse linéaire en adresses physiques par l'unité de pagination (Pagination) La protection mémoire et lève une interruption en cas de problème => arrêt programme fautif Le contrôle de tampon L'arbitrage du bus
Pagination mémoire utilisation de pages (4 Ko) chargées ou déchargées à la demande par un dispositif matériel (MMU) et/ou logiciel (SE) permet d'obtenir un grand espace de pages sans disposer de la mémoire physique correspondante.
Segmentation mémoire segmentation : mécanisme utilisé par l'unité de segmentation de la MMU, qui divise la mémoire physique (dans le cas de la segmentation pure) ou la mémoire virtuelle (dans le cas de la segmentation avec pagination) en segments caractérisés par leur adresse de début et leur taille (décalage ou offset). elle permet la séparation des données et du programme (entre autres segments) dans des espaces logiquement indépendants facilitant alors la programmation, l'édition de liens et le partage interprocessus. La segmentation permet également d'offrir une plus grande protection grâce au niveau de privilège de chaque segment
Mémoire virtuelle utilisée sur tous mes processeurs modernes. permet d'exécuter des programmes de taille supérieure à celle de la mémoire physique en utilisant le stockage disque gérée par la MMU utilisation de pages (souvent 4 ko) échangées à la demande par le système table des pages : corresp adr virtuelles adr phy
Mémoire virtuelle - II Ex : adr virtuelles sur 32 bits, (4 Go adressables) taille page : 4 Ko. déplacement : 12 bits de poids faible, numéro de page : 20 bits de poids fort. elle permet : d'augmenter le taux de multiprogrammation de mettre en place des mécanismes de protection de la mémoire de partager la mémoire entre processus
Processeurs 32 bits adressage : 4 Go premier processeur : Intel 80386
Processeurs 64 bits disposent de registres de 64 bits peuvent adresser 2 64 octets (2 hexaoctets) intéressant pour les serveurs et applications nécessitant beaucoup de calculs
Organisation du mot processeur Big-Endian : poids fort en tête Motorola 68xxx Sparc (Sun) processeur Little-Endian : poids faible en tête X86 processeur Bi-Endian : on peut choisir le mode
Codage entier: complément à deux réels : nombre flottants 32, 64 ou 80 bits traités par le FPU
Modes d'adressage Adressage implicite – concerne un registre (accu ou la pile) Adressage registre ou inhérent : un processeur dispose d'un certain nombre de registres de travail. De nombreuses instructions y font référence ; vu leur nombre peu élevé (8, par exemple), il suffit d'un petit nombre de bits pour spécifier le registre désiré (3 dans notre cas). On parle dans ce cas d'adressage registre ou inhérent.
Modes d'adressage - II Adressage direct : on donne l'adresse de la donnée en mémoire (RAM, ROM ou port d'E/S ). Adressage immédiat : la donnée suit tout simplement l'instruction.
Modes d'adressage - III Adressage indirect à registre : ce mode d'adressage, l'adresse de la donnée se trouve dsans un registre spécial du processeur (du même nombre de bits que son bus d'adresses), le pointeur de données. L'avantage, par rapport à l'adressage direct, est que l'adresse peut être manipulée commodément, par exemple pour accéder à une suite de données consécutives en mémoire tableau
Modes d'adressage - IV Adressage indexé :Ce mode est assez semblable à l'adressage indirect à registre. utilise un registre spécial appelé « registre d'index ». Deux registres d'index sont particulièrement bienvenus lorsqu'il s'agit de déplacer un bloc de données dans la mémoire RAM.
Parallélisme - I processeur sub-scalaire : une instruction. à la fois pipeline et architecture superscalaire
Parallélisme – II Pipeline superscalaire simple.
Parallélisme - III parallélisme au niveau des threads (processus légers) plusieurs coeurs plusieurs processeurs SMP : Symétrical Multi Processing NUMA : Non Uniform Memory Architecture
Histoire
Intel données 4bits/bus 4 bits 2300 transistors puissance: ?
Intel 8080/ données 8 bits / 8bits bus 6000 transistors 2 Mhz 0,64 MIPS (Million d'instr./seconde) adressage 64 Ko
Zilog Z80 compatible avec les 8080/8085 très répandu à l'époque depuis utilisé uniquement sur les systèmes embarqués et les divers contrôleurs
Intel 8086/ données 16 bits / 16 bits bus transistors gravé en 3 µm 8 Mhz de 0,33 à 0,75 MIPS (Million d'instr./seconde) adressage 1 Mo utilisé sur l'IBM PC (8088 à 4,77 Mhz)
Intel données 16 bits bus 16 bits, 16 Mo adressables transistors gravé à 1,5 µm de 6 à 20 Mhz 1 MIPS dispose d'une MMU (Memory Managment Unit) mode réel et mode protégé => utilisables sur les SE multitâches (XENIX,...)
Intel (i386) 1985 données 32 bits/ bus 32 bits => adressage 4 Go transistors gravés en 1,5 µm 25 Mhz – 5 MIPS unité de pagination (gestion mémoire virtuelle) et MMU mode réel et mode protégé pour le multi-tâches
Intel données 32 bits/ bus 32 bits => adressage 4 Go 1,2 million de transistors gravés en 1 µm de 25 à 75 Mhz Mhz – 20 MIPS unité de calcul flottant (FPU) pour les nombres réels 486DX2 : fréq. proc = fréq. bus x 2, DX4 (x3)
Intel Pentium données 32 bits/ bus 64 bits 3 millions de trans. gravés en 0,8 µm puis 0,6 µm de 50 à 233 Mhz Mhz – 100 MIPS alimentation de 5V à 1,8 V une mémoire cache dinstructions et une de données de 8 Kio ; architecture superscalaire : deux UAL permettent daccomplir plus dune instruction par cycle ; 2 pipelines jeu d'instructions MMX : multimédia
Intel Pentium II données 32 bits/ bus 64 bits 7,5 millions de trans. gravés en 0,35 µm de 233 à 450 Mhz – 300 MIPS slot 1
Intel Pentium III données 32 bits/ bus 64 bits 9,5 millions de trans. gravés en 0,25 µm puis 0,13 µm de 450 Mhz à 1,4 Ghz – 510 MIPS cache L2 : 256 ou 512 Mo nouvelles instructions multimédia (SSE) version Xeon pour serveurs (taille cache supérieure)
Intel Pentium IV données 32 bits/ bus 64 bits de 42 à 125 millions de trans. gravés en 0,130 µm ou 0,090 µm de 1,3 à 3,8 Ghz – de 1700 à 9000 MIPS cache L2 : 256 ou 512 Mo architecture de pipeline très complexe: 31 niveaux. fort dégagement de chaleur : TDP 115 W) Pentium D : premier double coeur Pentium M : proc. pour mobiles
Intel Core 2 Duo données 64 bits/ bus 64 bits 291 millions de trans. gravés en 65 nm 2,4 Ghz – MIPS cache L1: 64 Ko, L2 : 4 Mo version XEON et mobiles
Intel Quad Core données 64 bits/ bus 64 bits 2 x 291 millions de trans. gravés en 0,130 µm ou 0,065 µm 3 Ghz – 2 x MIPS ? cache L1: 64 Ko, L2 : 4 Mo Pentium D : premier double coeur Pentium M : proc. pour mobiles
Intel Core i7 Novembre Architecture Nehalem 2 à 8 cores – 780 millions de transistors 2,6 à 3,2 Ghz GPU sur le même socket, en deux dies (selon versions) retour de l'Hyperthreading ( SMT deux voies) contrôleur mémoire DDR3 intégré QuickPath interconnect ou CSI, pendant de l'hypertransport d'AMD apparition d'un cache L3 partagé de 8Mo ; les L2 (256 Ko)ne seront pas partagés – L1 : 2x32Ko Gravure en 45 puis 32nm
AMD Actuellement processeurs 64 bits Athlon 64X2 Phenom (600 millions de transistors) Optéron pour les serveurs En retrait par rapport à Intel en terme de performances
Les autres familles x86, développée principalement par les compagnies Intel, AMD (Athlon), VIA PowerPC d'IBM /Motorola (anciens MACs, serveurs IBM et PS/3) de Motorola équipaient jusqu'en 2006 les micro-ordinateurs Macintosh. utilisés dans les serveurs de la série p d'IBM et dans divers systèmes embarqués (MOS Technology ) de l'Apple II.
Les autres familles - II Le microprocesseur Zilog Z80. très utilisé dans les années 1980 dans la conception des premiers micro-ordinateurs personnels 8-bits comme le Radio Shack TRS-80, les Sinclair ZX80, ZX81, ZX Spectrum, le standard MSX, les Amstrad CPC et plus tard dans les systèmes embarqués. La famille Motorola. La famille de Motorola animait les anciens Macintosh, les Megadrive, les Atari ST et les Commodore Amiga. Leurs dérivés (Dragonball, ColdFire) sont toujours utilisés dans des systèmes embarqués.
Les autres familles - III Parmi les familles moins connues du grand public : La famille Sparc anime la plus grande partie des serveurs et stations de travail de Sun Microsystems. La famille PA-RISC de HP et VLSI Technology, anciens serveurs et stations de travail HP, La famille IA-64 de HP et Intel, apporte l'architecture 64 bits aux serveurs et stations de travail de HP La famille MIPS anime les stations de travail de Silicon Graphics, des consoles de jeux comme les routeurs Cisco.
Les autres familles - IV La famille StrongARM est de nos jours utilisée uniquement dans les systèmes embarqués, dont de nombreux PDA et Smartphones, elle a précédemment été utilisée par Acorn pour ses Archimedes et RiscPC. La famille DEC Alpha animait les ordinateurs DEC, repris par Compaq puis par HP qui l'a définitivement arrêtée.
Architecture CISC Complex Instruction Set Computer (Processeur à jeu d'instruction complexe) jeu d'instruction très élaboré nombreux modes d'adressage famille X86 Complexe (700 Mtr. Pour Intel Core) I7 code « dense » cher à fabriquer, investissement lourds (10 milliards $) utilise de plus en plus les « recettes » du RISC
Architecture RISC Reduced Instruction Set Computer (Processeur à jeu d'instruction réduit) jeu d'intruction réduit => décodage très rapide unité de contrôle très simple et processeur très simple très compact basse consommation investissement limité => adapté aux petites séries utilisation de pipeline
Architecture RISC - II nombre de modes d'adressages limités instructions peu « puissantes » pb de la compatibilité Ex: Sparc (Sun), Mips (routeurs Cisco, PS/2), Power (IBM PS/3), PA-RISC (HP), ARM... Utilisés sur les Ipod, Iphones, Nintendo DS, PDA Palm, Xbox-360 Les frontières entre RISC et CISC sont devenues poreuses => de nombreuses idées RISC on été mises en oeuvre en architecture CISC
Dissipation thermique Puissance dissipée : P = k x V 2 x f V : diff. de potentiel, f : fréquence, k : coefficient Puissance dissipée = > 130 W utilisation de ventilrad (radiateur + ventilateur) refroidissement liquide
Surfréquençage - Overclocking consiste à augmenter la fréquence de fonctionnement d'un processeur permet d'augmenter (un peu) les performances d'un processeur au prix d'une plus grande consommation électrique et d'une plus grande dissipation thermique On peut overclocker de 2 façons : – en jouant sur la fréq. externe, par exemple 66 MHz, portée à 75, 83, 100 MHz et plus s en augmentant le multiplicateur de fréq. interne par rapport à la fréq. externe : 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5,... il importe d'adapter le système de refroidissement stabilité et fiabilité du système peuvent être affectées
Architecture multi-thread Plusieurs processeurs logiques sur un processeur physique Amélioration des performances (entre 10 et 30%) pour un surcoût limité en matériel
Processeurs multi-coeurs plusieurs processeurs sur un même support Permet d'augmenter la puissance sans augmenter le fréquence Pas adapté à toutes les applications Multi-programmation => nécessité de bibliothèques spécifiques pour le calcul parallèle (MPI, PVM...)
Les performances : évaluation MIPS: millions d'instructions/seconde. plutôt déprécié FLOPS : Floating Operation/Sec (TeraFlops) SPEC SPECInt : pour les nombres entiers SPECFP : pour les flottants
Virtualisation dispositifs matériels pour améliorer les performances de la virtualisation (AMD-V et Intel VT) ring 0 : mode privilégié (noyau) Windows, Linux ring 3 : mode utilisateur – pas de privilèges ring 1 : pour la virtualisation
Les nouvelles tendances muti-core pour remédier aux problèmes posés par l'augmentation de la fréquence basse consommation : jusqu'à 30 W ou en dessous fréquence variable utilisation d'un seul coeur Consommation des datacenters : 1 % de l'énergie mondiale consommée l'est par Google !
Intel Atom Exemple de nouveau processeur basse consommation TDP (Thermic Dissipation power) : 2 W pour la série N Compact : 25 mm 2 – gravé en 45 nm 47 millions de transistors - 1,1 V Fréquence : de 0,8 Ghz à 2 Ghz Cache L2 512 Ko
Intel Atom - suite Utilisé sur les netbooks, smartphone, ultraportables et les Asus EEEbox (20 W de consommation) Compatibles X86 Version double coeur prévue Perspectives : System On a Chip (SOC) ou système intégré comportant contrôleur graphique et contrôleur mémoire DDR2 Gravure en 32 nm
Intel 48 coeurs Single Chip Cloud Computer - 12/ nm 1,3 milliard de transistors 24 unité de 2 coeurs Chacun communique avec les autres coeurs par TCP/IP Réseau maillé (Mesh) Consommation 25/125W
Intel 48 coeurs Single Chip Cloud Computer - 12/ nm 1,3 milliard de transistors 24 unité de 2 coeurs Chacun communique avec les autres coeurs par TCP/IP Réseau maillé (Mesh) Consommation 25/125W