Architecture des ordinateurs PDF
Document Details
Uploaded by Deleted User
École Supérieure en Informatique de Sidi Bel Abbès
A. Rahmoun, Prof.
Tags
Summary
This document is a course or lecture on computer architecture. It examines the fundamental concepts of von Neumann architecture, computer memory, different memory types (RAM, ROM), and microprocessors. It looks at the topics in detail.
Full Transcript
A. Ra hm Ec ou ole n; Pro Su f....
A. Ra hm Ec ou ole n; Pro Su f. Sid pé iB rie el- ure Ab d 'In bè for s ma tiqu e Architecture des ordinateurs 1 GENERALITES 5 1.1 INTRODUCTION 5 1.2 QU’ENTEND-T-ON PAR ARCHITECTURE ? 5 1.3 QU’EST CE QU’UN MICROPROCESSEUR ? 5 1.4 RAPPELS 6 1.5 OU TROUVE-T-ON DES SYSTEMES A MICROPROCESSEUR ? 6 2 ARCHITECTURE DE BASE 7 2.1 MODELE DE VON NEUMANN 7 2.2 L’UNITE CENTRALE 7 2.3 LA MEMOIRE PRINCIPALE 7 2.4 LES INTERFACES D’ENTREES/SORTIES 8 2.5 LES BUS 8 2.6 DECODAGE D’ADRESSES 8 3 LES MEMOIRES 9 3.1 ORGANISATION D’UNE MEMOIRE 9 3.2 CARACTERISTIQUES D’UNE MEMOIRE 10 3.3 DIFFERENTS TYPES DE MEMOIRE 11 3.3.1 LES MEMOIRES VIVES (RAM) 11 3.3.1.1 Les RAM statiques 11 3.3.1.2 Les RAM dynamiques 11 3.3.1.3 Conclusions 12 3.3.2 LES MEMOIRES MORTES (ROM) 12 3.3.2.1 LA ROM 13 3.3.2.2 La PROM 13 3.3.2.3 L’EPROM ou UV-EPROM 14 3.3.2.4 L’EEPROM 14 3.3.2.5 La FLASH EPROM 15 3.4 CRITERES DE CHOIX D’UNE MEMOIRE 16 3.5 NOTION DE HIERARCHIE MEMOIRE 16 4 LE MICROPROCESSEUR 18 4.1 ARCHITECTURE DE BASE D’UN MICROPROCESSEUR 18 4.1.1 L’UNITE DE COMMANDE 18 4.1.2 L’UNITE DE TRAITEMENT 19 4.1.3 SCHEMA FONCTIONNEL 19 4.2 CYCLE D’EXECUTION D’UNE INSTRUCTION 20 4.3 JEU D’INSTRUCTIONS 22 4.3.1 DEFINITION 22 4.3.2 TYPE D’INSTRUCTIONS 22 4.3.3 CODAGE 22 4.3.4 MODE D’ADRESSAGE 22 4.3.5 TEMPS D’EXECUTION 22 4.4 LANGAGE DE PROGRAMMATION 23 4.5 PERFORMANCES D’UN MICROPROCESSEUR 23 4.6 NOTION D’ARCHITECTURE RISC ET CISC 24 4.6.1 L’ARCHITECTURE CISC 24 2 4.6.1.1 Pourquoi 24 4.6.1.2 Comment 24 4.6.2 L’ARCHITECTURE RISC 24 4.6.2.1 Pourquoi 24 4.6.2.2 Comment 24 4.6.3 COMPARAISON 25 4.7 AMELIORATIONS DE L’ARCHITECTURE DE BASE 25 4.7.1 ARCHITECTURE PIPELINE 25 4.7.1.1 Principe 25 4.7.1.2 Gain de performance 26 4.7.1.3 Problèmes 27 4.7.2 NOTION DE CACHE MEMOIRE 27 4.7.2.1 Problème posé 27 4.7.2.2 Principe 28 4.7.3 ARCHITECTURE SUPERSCALAIRE 29 4.7.4 ARCHITECTURE PIPELINE ET SUPERSCALAIRE 29 4.8 PROCESSEURS SPECIAUX 30 4.8.1 LE MICROCONTROLEUR 30 4.8.2 LE PROCESSEUR DE SIGNAL 30 4.9 EXEMPLES 30 4.9.1 AMD ATHLON : 30 4.9.2 INTEL PENTIUM III 31 5 LES ECHANGES DE DONNEES 33 5.1 L’INTERFACE D’ENTREE/SORTIE 33 5.1.1 ROLE 33 5.1.2 CONSTITUTION 33 5.2 TECHNIQUES D’ECHANGE DE DONNEES 34 5.2.1 ECHANGE PROGRAMME 34 5.2.1.1 Scrutation 34 5.2.1.2 Interruption 34 5.2.2 ECHANGE DIRECT AVEC LA MEMOIRE 35 5.3 TYPES DE LIAISONS 36 5.3.1 LIAISON PARALLELE 36 5.3.2 LIAISON SERIE 36 5.4 NOTION DE RESEAU 38 5.4.1 INTRODUCTION 38 5.4.2 LE MODELE OSI 39 5.4.3 CLASSIFICATION DES RESEAUX 40 5.4.4 TOPOLOGIE DES RESEAUX 41 6 UN EXEMPLE - LE PC 43 6.1 L’UNITE CENTRALE 43 6.1.1 LA CARTE MERE 43 6.1.2 LE MICROPROCESSEUR 46 6.1.3 LA MEMOIRE 48 6.1.4 LA CARTE VIDEO 49 6.1.4.1 Le GPU 50 6.1.4.2 La mémoire vidéo 50 6.1.4.3 Le RAMDAC 50 6.1.4.4 Les entrées/sorties vidéo 51 6.1.5 LES PERIPHERIQUES INTERNES DE STOCKAGE 51 6.1.5.1 Le disque dur 51 6.1.5.2 Les disques optiques 52 3 Chapitre 1 Généralités 1 1.1 Introduction L'informatique, contraction d'information et automatique, est la science du traitement de l'information. Apparue au milieu du 20ème siècle, elle a connu une évolution extrêmement rapide. A sa motivation initiale qui était de faciliter et d'accélérer le calcul, se sont ajoutées de nombreuses fonctionnalités, comme l'automatisation, le contrôle et la commande de processus, la communication ou le partage de l'information. Le cours d’architecture des systèmes à microprocesseurs expose les principes de base du traitement programmé de l’information. La mise en œuvre de ces systèmes s’appuie sur deux modes de réalisation distincts, le matériel et le logiciel. Le matériel (hardware) correspond à l’aspect concret du système : unité centrale, mémoire, organes d’entrées-sorties, etc… Le logiciel (software) correspond à un ensemble d’instructions , appelé programme, qui sont contenues dans les différentes mémoires du système et qui définissent les actions effectuées par le matériel. 1.2 Qu’entend-t-on par architecture ? L'architecture d'un système à microprocesseur représente l’organisation de ses différentes unités et de leurs interconnexions. Le choix d'une architecture est toujours le résultat d'un compromis : - entre performances et coûts - entre efficacité et facilité de construction - entre performances d'ensemble et facilité de programmation - etc … 5 1.3 Qu’est ce qu’un microprocesseur ? Un microprocesseur est un circuit intégré complexe. Il résulte de l’intégration sur une puce de fonctions logiques combinatoires (logiques et/ou arithmétique) et séquentielles (registres, compteur, etc…). Il est capable d'interpréter et d'exécuter les instructions d'un programme. Son domaine d’utilisation est donc presque illimité. Le concept de microprocesseur a été créé par la Société Intel. Cette Société, créée en 1968, était spécialisée dans la conception et la fabrication de puces mémoire. À la demande de deux de ses clients — fabricants de calculatrices et de terminaux — Intel étudia une unité de calcul implémentée sur une seule puce. Ceci donna naissance, en 1971, au premier microprocesseur, le 4004, qui était une unité de calcul 4 bits fonctionnant à 108 kHz. Il résultait de l’intégration d’environ 2300 transistors. Remarques : La réalisation de circuits intégrés de plus en plus complexe a été rendue possible par l’apparition du transistor en 1947. Il a fallu attendre 1958 pour voir apparaître le 1ier circuit intégré réalisé par Texas Instrument. 1.4 Rappels Les informations traitées par un microprocesseur sont de différents types (nombres, instructions, images, vidéo, etc…) mais elles sont toujours représentées sous un format binaire. Seul le codage changera suivant les différents types de données à traiter. Elles sont représentées physiquement par 2 niveaux de tensions différents. En binaire, une information élémentaire est appelé bit et ne peut prendre que deux valeurs différentes : 0 ou 1. Une information plus complexe sera codée sur plusieurs bit. On appelle cet ensemble un mot. Un mot de 8 bits est appelé un octet. Représentation d’un nombre entier en binaire : Les nombres sont exprimés par des chiffres pouvant prendre deux valeurs 0 ou 1. A chaque chiffre est affecté un poids exprimé en puissance de 2. Ex : ( 101 )2 1x 2² + 0x21 + 1x20 = ( 5 )10 Représentation d’un nombre entier en hexadécimal : Lorsqu’une donnée est représentée sur plus de 4 bits, on préfère souvent l’exprimer en hexadécimal. Les nombres sont exprimés par des chiffres et des lettres pouvant prendre 16 valeurs : 0123456789ABCDEF A chaque chiffre est affecté un poids exprimé en puissance de 16. Ex : ( 9A )16 9x161 + Ax160 = 9x161 + 10x160 = ( 154 )10 Attention !! : 1 kilobit = 210 bit = 1024 bit 1 mégabit = 210 kbit = 1024 kbit 1 gigabit = 210 Mbit = 1024 Mbit 6 1.5 Où trouve-t-on des systèmes à microprocesseur ? Les applications des systèmes à microprocesseurs sont multiples et variées : - Ordinateur, PDA - console de jeux - calculatrice - télévision - téléphone portable - distributeur automatique d’argent - robotique - lecteur carte à puce, code barre - automobile - instrumentation - etc… Chapitre 2 Architecture de base 2 2.1 Modèle de von Neumann Pour traiter une information, un microprocesseur seul ne suffit pas, il faut l’insérer au sein d’un système minimum de traitement programmé de l’information. John Von Neumann est à l'origine d'un modèle de machine universelle de traitement programmé de l’information (1946). Cette architecture sert de base à la plupart des systèmes à microprocesseur actuel. Elle est composé des éléments suivants : une unité centrale une mémoire principale des interfaces d’entrées/sorties Lesdifférents organes du système sont reliés par des voies de communication appelées bus. Unité centrale Mémoire Interface E/S Principale bus 7 2.2 L’unité centrale Elle est composée par le microprocesseur qui est chargé d’interpréter et d’exécuter les instructions d’un programme, de lire ou de sauvegarder les résultats dans la mémoire et de communiquer avec les unités d’échange. Toutes les activités du microprocesseur sont cadencées par une horloge. On caractérise le microprocesseur par : – sa fréquence d’horloge : en MHz ou GHz – le nombre d’instructions par secondes qu’il est capable d’exécuter : en MIPS – la taille des données qu’il est capable de traiter : en bits 2.3 La mémoire principale Elle contient les instructions du ou des programmes en cours d’exécution et les données associées à ce programme. Physiquement, elle se décompose souvent en : – une mémoire morte ( ROM = Read Only Memory ) chargée de stocker le programme. C’est une mémoire à lecture seule. – une mémoire vive ( RAM = Random Access Memory ) chargée de stocker les données intermédiaires ou les résultats de calculs. On peut lire ou écrire des données dedans, ces données sont perdues à la mise hors tension. Remarque : Les disques durs, disquettes, CDROM, etc… sont des périphériques de stockage et sont considérés comme des mémoires secondaires. 2.4 Les interfaces d’entrées/sorties Elles permettent d’assurer la communication entre le microprocesseur et les périphériques. ( capteur, clavier, moniteur ou afficheur, imprimante, modem, etc…). 2.5 Les bus Un bus est un ensemble de fils qui assure la transmission du même type d’information. On retrouve trois types de bus véhiculant des informations en parallèle dans un système de traitement programmé de l’information : - un bus de données : bidirectionnel qui assure le transfert des informations entre le microprocesseur et son environnement, et inversement. Son nombre de lignes est égal à la capacité de traitement du microprocesseur. - un bus d'adresses: unidirectionnel qui permet la sélection des informations à traiter dans un espace mémoire (ou espace adressable) qui peut avoir 2n emplacements, avec n = nombre de conducteurs du bus d'adresses. - un bus de commande: constitué par quelques conducteurs qui assurent la synchronisation des flux d'informations sur les bus des données et des adresses. 2.6 Décodage d’adresses La multiplication des périphériques autour du microprocesseur oblige la présence d’un décodeur d’adresse chargé d’aiguiller les données présentes sur le bus de données. En effet, le microprocesseur peut communiquer avec les différentes mémoires et les différents boîtier d’interface. Ceux-ci sont tous reliés sur le même bus de données et afin d’éviter des conflits, un seul composant doit être sélectionné à la fois. Lorsqu’on réalise un système microprogrammé, on attribue donc à chaque périphérique une zone d’adresse et une fonction « décodage d’adresse » est donc nécessaire afin de fournir les signaux de sélection de chacun des composants. 8 Décodeur d’adresses Bus d’adresses Bus de commande Unité centrale Mémoire Interface E/S Principale Bus de données Remarque : lorsqu’un composant n’est pas sélectionné, ses sorties sont mises à l’état « haute impédance » afin de ne pas perturber les données circulant sur le bus. ( elle présente une impédance de sortie très élevée = circuit ouvert ). Chapitre 3 Les mémoires 3 Une mémoire est un circuit à semi-conducteur permettant d’enregistrer, de conserver et de restituer des informations (instructions et variables). C’est cette capacité de mémorisation qui explique la polyvalence des systèmes numériques et leur adaptabilité à de nombreuses situations. Les informations peuvent être écrites ou lues. Il y a écriture lorsqu'on enregistre des informations en mémoire, lecture lorsqu'on récupère des informations précédemment Les différents éléments de la mémoire d’un ordinateur sont ordonnés en fonction des critères suivants : Temps d’accès; capacité; et cout par bit. 3.1 Organisation d’une mémoire Une mémoire peut être représentée comme une armoire de rangement constituée de différents tiroirs. Chaque tiroir représente alors une case mémoire qui peut contenir un seul élément : des données. Le nombre de cases mémoires pouvant être très élevé, il est alors nécessaire de pouvoir les identifier par un numéro. Ce numéro est appelé adresse. Chaque donnée devient alors accessible grâce à son adresse Adresse Case mémoire 7 = 111 6 = 110 5 = 101 4 = 100 3 = 011 2 = 010 1 = 001 0 = 000 0001 1010 9 Avec une adresse de n bits il est possible de référencer au plus 2n cases mémoire. Chaque case est remplie par un mot de données (sa longueur m est toujours une puissance de 2). Le nombre de fils d’adresses d’un boîtier mémoire définit donc le nombre de cases mémoire que comprend le boîtier. Le nombre de fils de données définit la taille des données que l’on peut sauvegarder dans chaque case mémoire. En plus du bus d’adresses et du bus de données, un boîtier mémoire comprend une entrée de commande qui permet de définir le type d’action que l’on effectue avec la mémoire (lecture/écriture) et une entrée de sélection qui permet de mettre les entrées/sorties du boîtier en haute impédance. On peut donc schématiser un circuit mémoire par la figure suivante où l’on peut distinguer : Adresses (n bits) Mémoire Données (m bits) R/W CS les entrées d’adresses les entrées de données les sorties de données les entrées de commandes : - une entrée de sélection de lecture ou d’écriture. ( R/W ) - une entrée de sélection du circuit. ( CS ) Une opération de lecture ou d’écriture de la mémoire suit toujours le même cycle : 1. sélection de l’adresse 2. choix de l’opération à effectuer ( R/W ) 3. sélection de la mémoire ( CS = 0 ) 4. lecture ou écriture la donnée Remarque : Les entrées et sorties de données sont très souvent regroupées sur des bornes bidirectionnelles. 3.2 Caractéristiques d’une mémoire La capacité : c’est le nombre total de bits que contient la mémoire. Elle s’exprime aussi souvent en octet. Le format des données : c’est le nombre de bits que l’on peut mémoriser par case mémoire. On dit aussi que c’est la largeur du mot mémorisable. Le temps d’accès : c’est le temps qui s'écoule entre l'instant où a été lancée une opération de lecture/écriture en mémoire et l'instant où la première information est disponible sur le bus de données. Le temps de cycle : il représente l'intervalle minimum qui doit séparer deux demandes successives de lecture ou d'écriture. Le débit : c’est le nombre maximum d'informations lues ou écrites par seconde. Volatilité : elle caractérise la permanence des informations dans la mémoire. L'information stockée est volatile si elle risque d'être altérée par un défaut d'alimentation électrique et non volatile dans le cas contraire. Exemple : Chronogramme d’un cycle de lecture BUS @ @x R/ W Données accessibles CS BUS D Dx Taccès Tcycle Remarque : Les mémoires utilisées pour réaliser la mémoire principale d’un système à microprocesseur sont des mémoires à semi-conducteur. On a vu que dans ce type de mémoire, on accède directement à n'importe quelle information dont on connaît l'adresse et que le temps mis pour obtenir cette information ne dépend pas de l'adresse. On dira que l'accès à une telle mémoire est aléatoire ou direct. A l'inverse, pour accéder à une information sur bande magnétique, il faut dérouler la bande en repérant tous les enregistrements jusqu'à ce que l'on trouve celui que l'on désire. On dit alors que l'accès à l'information est séquentiel. Le temps d'accès est variable selon la position de l'information recherchée. L'accès peut encore être semi-séquentiel : combinaison des accès direct et séquentiel. Pour un disque magnétique par exemple l'accès à la piste est direct, puis l'accès au secteur est séquentiel. Types d’accès ° Accès séquentiel (e.g. bande magnétique) : le plus lent de tous ° Accès direct ou aléatoire (e.g. mémoire centrale, registres) : chaque information a une adresse. ° Accès semi-séquentiel (e.g. disques) ° Accès par le contenu ou associatif (e.g. mémoire cache) 3.3 Différents types de mémoire 3.3.1 Les mémoires vives (RAM) Une mémoire vive sert au stockage temporaire de données. Elle doit avoir un temps de cycle très court pour ne pas ralentir le microprocesseur. Les mémoires vives sont en général volatiles : elles perdent leurs informations en cas de coupure d'alimentation. Certaines d'entre elles, ayant une faible consommation, peuvent être rendues non volatiles par l'adjonction d'une batterie. Il existe deux grandes familles de mémoires RAM (Random Acces Memory : mémoire à accès aléatoire) : Les RAM statiques Les RAM dynamiques 3.3.1.1 Les RAM statiques Le bit mémoire d'une RAM statique (SRAM) est composé d'une bascule. Chaque bascule contient entre 4 et 6 transistors. @7 @6 @5 @4 @3 @2 @1 @0 D7 D5 D3 D1 D6 D4 D2 D0 11 3.3.1.2 Les RAM dynamiques Dans les RAM dynamiques (DRAM), l'information est mémorisée sous la forme d'une charge électrique stockée dans un condensateur (capacité grille substrat d'un transistor MOS). @7 @6 @5 @4 @3 @2 @1 @0 D7 D5 D3 D1 D6 D4 D2 D0 Avantages : Cette technique permet une plus grande densité d'intégration, car un point mémoire nécessite environ quatre fois moins de transistors que dans une mémoire statique. Sa consommation s’en retrouve donc aussi très réduite. Inconvénients : La présence de courants de fuite dans le condensateur contribue à sa décharge. Ainsi, l’information est perdue si on ne la régénère pas périodiquement (charge du condensateur). Les RAM dynamiques doivent donc être rafraîchies régulièrement pour entretenir la mémorisation : il s'agit de lire l'information et de la recharger. Ce rafraîchissement indispensable a plusieurs conséquences : - il complique la gestion des mémoires dynamiques car il faut tenir compte des actions de rafraîchissement qui sont prioritaires. - la durée de ces actions augmente le temps d'accès aux informations. D’autre part, la lecture de l’information est destructive. En effet, elle se fait par décharge de la capacité du point mémoire lorsque celle- ci est chargée. Donc toute lecture doit être suivie d’une réécriture. 3.3.1.3 Conclusions En général les mémoires dynamiques, qui offrent une plus grande densité d'information et un coût par bit plus faible, sont utilisées pour la mémoire centrale, alors que les mémoires statiques, plus rapides, sont utilisées lorsque le facteur vitesse est critique, notamment pour des mémoires de petite taille comme les caches et les registres. Voici un historique de quelques DRAM qui ont ou sont utilisées dans les PC : La DRAM FPM (Fast Page Mode, 1987) : Elle permet d'accéder plus rapidement à des données en introduisant la notion de page mémoire. (33 à 50 Mhz) La DRAM EDO (Extended Data Out, 1995) : Les composants de cette mémoire permettent de conserver plus longtemps l'information, on peut donc ainsi espacer les cycles de rafraîchissement. Elle apporte aussi la possibilité d’anticiper sur le prochain cycle mémoire. (33 à 50 Mhz) La DRAM BEDO (Bursted EDO) : On n'adresse plus chaque unité de mémoire individuellement lorsqu'il faut y lire ou y écrire des données. On se contente de transmettre l'adresse de départ du processus de lecture/écriture et la longueur du bloc de données ( Burst ). Ce procédé permet de gagner beaucoup de temps, notamment avec les grands paquets de données tels qu'on en manipule avec les applications modernes. (66 Mhz) La Synchronous DRAM (SDRAM, 1997) : La mémoire SDRAM a pour particularité de se synchroniser sur une horloge. Les mémoires FPM, EDO étaient des mémoires asynchrones et elle induisaient des temps d'attentes lors de la synchronisation. Elle se compose en interne de deux bancs de mémoire et des données peuvent être lues alternativement sur l'un puis sur l'autre de ces bancs grâce à un procédé d'entrelacement spécial. Le protocole d'attente devient donc tout à fait inutile. Cela lui permet de supporter des fréquences plus élevées qu’avant (100 Mhz). La DDR-I ou DDR-SDRAM (Double Data Rate Synchronous DRAM, 2000) : La DDR-SDRAM permet de recevoir ou d'envoyer des données lors du front montant et du front descendant de l’horloge. (133 à 200 MHz) 3.3.2 Les mémoires mortes (ROM) Pour certaines applications, il est nécessaire de pouvoir conserver des informations de façon permanente même lorsque l'alimentation électrique est interrompue. On utilise alors des mémoires mortes ou mémoires à lecture seule (ROM : Read Only Memory). Ces mémoires sont non volatiles. Ces mémoires, contrairement aux RAM, ne peuvent être que lue. L’inscription en mémoire des données restent possible mais est appelée programmation. Suivant le type de ROM, la méthode de programmation changera. Il existe donc plusieurs types de ROM : ROM PROM EPROM EEPROM FLASH EPROM. 3.3.2.1 LA ROM Elle est programmée par le fabricant et son contenu ne peut plus être ni modifié., ni effacé par l'utilisateur. +V Structure : Cette mémoire est composée adresse d'une matrice dont la programmation s’effectue en reliant les lignes aux colonnes par des diodes. L'adresse permet de sélectionner une ligne de la matrice et les données sont alors reçues sur les colonnes (le nombre de colonnes fixant la taille des mots mémoire). 1 0 0 0 Programmation : données L'utilisateur doit fournir au constructeur un masque indiquant les emplacements des diode dans matrice. Avantages : f Densité élevée f Non volatile f Mémoire rapide Inconvénients : f Écriture impossible f Modification impossible (toute erreur est fatale). f Délai de fabrication ( 3 à 6 semaines) f Obligation de grandes quantités en raison du coût élevé qu'entraîne la production du masque et le processus de fabrication. 3.3.2.2 La PROM C’est une ROM qui peut être programmée une seule fois par l'utilisateur (Programmable ROM). La programmation est réalisée à partir d’un programmateur spécifique. 13 3.3.2.2 La PROM C’est une ROM qui peut être programmée une seule fois par l'utilisateur (Programmable ROM). La programmation est réalisée à partir d’un programmateur spécifique. Structure : Les liaisons à diodes de la ROM sont remplacées par des fusibles pouvant être détruits ou des jonctions pouvant être court-circuitées. Programmation : Les PROM à fusible sont livrées avec toutes les lignes connectées aux colonnes (0 en chaque point mémoire). Le processus de programmation consiste donc à programmer les emplacements des ‘’1’’ en générant des impulsions de courants par l’intermédiaire du programmateur ; les fusibles situés aux points mémoires sélectionnés se retrouvant donc détruits. Le principe est identique dans les PROM à jonctions sauf que les lignes et les colonnes sont déconnectées (1 en chaque point mémoire). Le processus de programmation consiste donc à programmer les emplacements des ‘’0’’ en générant des impulsions de courants par l’intermédiaire du programmateur ; les jonctions situées aux points mémoires sélectionnés se retrouvant court-circuitées par effet d’avalanche. Avantages : f idem ROM f Claquage en quelques minutes f Coût relativement faible Inconvénients : Modification impossible (toute erreur est fatale). 3.3.2.3 L’EPROM ou UV-EPROM Pour faciliter la mise au point d'un programme ou tout simplement permettre une erreur de programmation, il est intéressant de pouvoir reprogrammer une PROM. La technique de claquage utilisée dans celles-ci ne le permet évidemment pas. L'EPROM (Erasable Programmable ROM) est une PROM qui peut être effacée. Structure Dans une EPROM, le point mémoire est S G D réalisé à partir d’un transistor FAMOS (Floating gate Avalanche injection Metal Oxyde Silicium). Ce transistor MOS a été introduit par Intel en N N 1971 et a la particularité de posséder une grille P flottante. Grille flottante canal Programmation La programmation consiste à piéger des charges dans la grille flottante. Pour cela, il faut tout d’abord appliquer une très forte tension entre Grille et Source. Si l’on applique ensuite une tension entre D et S, la canal devient conducteur. Mais comme la tension Grille-Source est très importante, les électrons sont déviés du canal vers la grille flottante et capturés par celle-ci. Cette charge se maintient une dizaine d'années en condition normale. L’exposition d’une vingtaine de minutes à un rayonnement ultra-violet permet d’annuler la charge stockée dans la grille flottante. Cet effacement est reproductible plus d’un millier de fois. Les boîtiers des EPROM se caractérise donc par la présence d’une petite fenêtre transparente en quartz qui assure le passage des UV. Afin d’éviter toute perte accidentelle de l’information, il faut obturer la fenêtre d’effacement lors de l’utilisation. 14 Avantages : f Reprogrammable et non Volatile Inconvénients : f Impossible de sélectionner une seule cellule à effacer f Impossible d’effacer la mémoire in-situ. f l’écriture est beaucoup plus lente que sur une RAM. (environ 1000x) 3.3.2.4 L’EEPROM L’EEPROM (Electically EPROM) est une mémoire programmable et effaçable électriquement. Elle répond ainsi à l’inconvénient principal de l’EPROM et peut être programmée in situ. Structure Dans une EEPROM, le point mémoire est réalisé à partir d’un transistor SAMOS reprenant le même principe que le FAMOS sauf que l’épaisseur entre les deux grilles est beaucoup plus faible. Programmation Une forte tension électrique appliquée entre grille et source conduit à la programmation de la mémoire. Une forte tension inverse provoquera la libération des électrons et donc l’effacement de la mémoire. Avantages : f Comportement d'une RAM non Volatile. f Programmation et effacement mot par mot possible. Inconvénients : Très lente pour une utilisation en RAM. · Coût de réalisation. 3.3.2.5 La FLASH EPROM La mémoire Flash s'apparente à la technologie de l’EEPROM. Elle est programmable et effaçable électriquement comme les EEPROM. Structure Il existe deux technologie différentes qui se différencient par l’organisation de leurs réseaux Architecture NOR mémoire : l’architecture NOR et NAND. L’architecture @7 @6 NOR propose un assemblage des cellules @5 élémentaires de mémorisation en parallèle avec les @4 @3 lignes de sélection comme dans une EEPROM @2 @1 classique. L’architecture NAND propose un assemblage @0 en série de ces mêmes cellules avec les lignes de sélection. D’un point de vue pratique, la différence D7 D5 D3 D1 D6 D4 D2 D0 majeure entre NOR et NAND tient à leurs interfaces. Alors qu’une NOR dispose de bus d’adresses et de données dédiés, la NAND est dotée d’une interface d’E/S indirecte.. Par contre, la structure NAND autorise une implantation plus dense grâce à une taille de cellule approximativement 40 % plus petite que la structure NOR. Programmation Architecture NAND Si NOR et NAND exploitent toutes deux le même principe de stockage de charges dans la grille flottante d’un @0 à n transistor, l’organisation de leur réseau @0 @n mémoire n’offre pas la même souplesse d’utilisation. Les Flash NOR autorise un adressage aléatoire qui permet de la programmer octet par octet alors que la Flash NAND autorise un accès séquentiel aux données et permettra seulement une programmation par secteur comme sur un disque dur. Avantages Flash NOR : f Comportement d'une RAM non Volatile. f Programmation et effacement mot par mot possible. f Temps d’accès faible. 15 Avantages Flash NAND : f Comportement d'une RAM non Volatile. f Forte densité d’intégration ¨ coût réduit. f Rapidité de l’écriture/lecture par paquet f Consommation réduite. Inconvénients Flash NOR : Lenteur de l’écriture/lecture par paquet. coût. Flash NAND : f Ecriture/lecture par octet impossible. f Interface E/S indirecte La Flash EPROM a connu un essor très important ces dernières années avec le boom de la téléphonie portable et des appareils multimédia (PDA, appareil photo numérique, lecteur MP3, etc...). Les principaux critères à retenir sont : f capacité f vitesse f consommation f coût 3.5 Notion de hiérarchie mémoire Une mémoire idéale serait une mémoire de grande capacité, capable de stocker un maximum d’informations et possédant un temps d’accès très faible afin de pouvoir travailler rapidement sur ces informations. Mais il se trouve que les mémoires de grande capacité sont souvent très lente et que les mémoire rapides sont très chères. Et pourtant, la vitesse d’accès à la mémoire conditionne dans une large mesure les performances d’un système. En effet, c’est là que se trouve le goulot d’étranglement entre un microprocesseur capable de traiter des informations très rapidement et une mémoire beaucoup plus lente (ex : processeur actuel à 3Ghz et mémoire à 400MHz). Or, on n’a jamais besoin de toutes les informations au même moment. Afin d’obtenir le meilleur compromis coût-performance, on définie donc une hiérarchie mémoire. On utilise des mémoires de faible capacité mais très rapide pour stocker les informations dont le microprocesseur se sert le plus et on utilise des mémoires de capacité importante mais beaucoup plus lente pour stocker les informations dont le microprocesseur se sert le moins. Ainsi, plus on s’éloigne du microprocesseur et plus la capacité et le temps d’accès des mémoire vont augmenter. 16 + 1 ns < 400 o Registre 8 ko à 4 Mo suivant les 5 ns niveaux Mémoire cache capacité vitesse 10 ns Jusqu’à 1 Go Mémoire principale 2 à 8 Mo Mémoire d’appui 5 ms 200 Go Mémoire de masse + Les registres sont les éléments de mémoire les plus rapides. Ils sont situés au niveau du processeur et servent au stockage des opérandes et des résultats intermédiaires. La mémoire cache est une mémoire rapide de faible capacité destinée à accélérer l’accès à la mémoire centrale en stockant les données les plus utilisées. La mémoire principale est l’organe principal de rangement des informations. Elle contient les programmes (instructions et données) et est plus lente que les deux mémoires précédentes. La mémoire d’appui sert de mémoire intermédiaire entre la mémoire centrale et les mémoires de masse. Elle joue le même rôle que la mémoire cache. La mémoire de masse est une mémoire périphérique de grande capacité utilisée pour le stockage permanent ou la sauvegarde des informations. Elle utilise pour cela des supports magnétiques (disque dur, ZIP) ou optiques (CDROM, DVDROM). 17 Les mémoires à accès séquentiel La notion d'adresse n'existe pas. Mots écrits et lus à des emplacements fixes sans possibilité d'accéder aux mots intermédiaires. Deux types de mémoires séquentielles: FIFO et LIFO Les mémoires FIFO (First In First Out) Applications: Boites aux lettres entre processeurs, ou bien Tampons (exemple:dans un clavier) Mémoires FIFO Les mémoires FIFO (First In - First Out) sont un type particulier de mémoires RAM, où les mots ne sont pas adressables: les mots sont lus dans le même ordre dans lequel ils sont écrits (le premier écrit est le premier lu) Une FIFO 4x8, par exemple, peut être vue comme un ensemble de 8 registres à décalage, de 4 bits chacun registre à décalage 27 Mémoires LIFO Les mémoires LIFO (Last In - First Out), appelées également pile (stack), sont un autre type de mémoire non adressable, avec deux opérations possibles: push: équivalent à l'écriture, met une information au sommet de la pile, en poussant vers le bas les informations déjà présentes dans la pile. L'information tout en bas de la pile sera perdue pop: équivalent à la lecture, prend l'information qui se trouve au sommet de la pile, en poussant tout le contenu de la pile vers le sommet. L'information lue sera enlevée de la pile 28 Une pile 4x8, par exemple, peut être vue comme un ensemble de 8 registres à décalage, de 4 bits chacun. Mais contrairement aux FIFO, les registres à décalage sont bidirectionnels et on accède seulement au registre en haut (le sommet de la pile) registre à décalage bidirectionnel 29 Les ordinateurs utilisent couramment des piles pour le stockage de l'information. Dans ces cas, la pile n'est pas implémentée à l'aide des registres, mais utilise une partie de la mémoire RAM de l'ordinateur Dans les piles à RAM, l'information ne bouge pas, n'est pas décalée vers le bas de la pile, mais ce qui bouge est le sommet de la pile, indiqué par un pointeur: le stack pointer (SP) Par convention arbitraire, lors d'un push le stack pointer est décrémenté (le sommet de la pile est déplacé vers les adresses basses de la mémoire), tandis que lors d'un pop le stack pointer est incrémenté (le sommet de la pile est déplacé vers les adresses hautes de la mémoire) 30 Exemple: supposons que la pile d'un ordinateur se trouve initialement dans l'état montré à droite, à l'intérieur de sa mémoire RAM 64Kx8 31 La mémoire cache La mémoire cache (on dit aussi le cache) est une variété de mémoire plus rapide que la mémoire centrale (un peu moins rapide que les registres). La particularité technique actuelle de la mémoire cache est que plus sa taille est grande plus son débit a tendance à ralentir. La caractéristique fonctionnelle du cache est de servir à stocker des instructions et des données provenant de la mémoire centrale et qui ont déjà été utilisées les plus récemment par le processeur central. Actuellement le cache des micro-processeurs récents du marché est composé de deux niveaux de mémoires de type SRAM la plus rapide (type de mémoire RAM statique semblable à celle des registres) : le cache de niveau un est noté L1, le cache de niveau deux est noté L2. Le principe est le suivant : Le cache L1 est formé de deux blocs séparés, l'un servant au stockage des données, l'autre servant au stockage des instructions. Si un étage du processeur cherche une donnée, elle va être d'abord recherchée dans le cache de donnée L1 et rapatriée dans un registre adéquat, si la donnée n'est pas présente dans le cache L1, elle sera recherchée dans le cache L2. Si la donnée est présente dans L2, elle est alors rapatriée dans un registre adéquat et recopiée dans le bloc de donnée du cache L1. Il en va de même lorsque la donnée n'est pas présente dans le cache L2, elle est alors rapatriée depuis la mémoire centrale dans le registre adéquat et recopiée dans le cache L2. Généralement la mémoire cache de niveau L1 et celle de niveau L2 sont regroupées dans la même puce que le processeur (cache interne). Nous figurons ci-dessous le facteur d'échelle relatif entre les différents composants mémoires du processeur et de la mémoire centrale (il s'agit d'un coefficient de multiplication des temps d'accès à une information selon la nature de la mémoire qui la contient). Les registres, mémoires les plus rapides se voient affecter la valeur de référence 1 : L'accès par le processeur à une information située dans la DDR SDRAM de la mémoire centrale est 100 fois plus lente qu'un accès à une information contenue dans un registre. Par exemple, le processeur AMD 64 bits Optéron travaille avec un cache interne L1 de 64 Ko constitué de mémoires associatives (type ECC pour le bloc L1 de données et type parité pour le bloc L1 d'instructions), le cache L2 de l'Optéron a une taille de 1 Mo constitué de mémoires 64 bits associatives de type ECC, enfin le contrôleur de mémoire accepte de la DDR SDRAM 128 bits jusqu'à 200 Mhz en qualité ECC. L'accès par le processeur à une information située dans la DDR SDRAM de la mémoire centrale est 100 fois plus lente qu'un accès à une information contenue dans un registre. Par exemple, le processeur AMD 64 bits Optéron travaille avec un cache interne L1 de 64 Ko constitué de mémoires associatives (type ECC pour le bloc L1 de données et type parité pour le bloc L1 d'instructions), le cache L2 de l'Optéron a une taille de 1 Mo constitué de mémoires 64 bits associatives de type ECC, enfin le contrôleur de mémoire accepte de la DDR SDRAM 128 bits jusqu'à 200 Mhz en qualité ECC. Définition de mémoire ECC (mémoire à code correcteur d'erreur) Une mémoire ECC est une mémoire contenant des bits supplémentaires servant à détecter et à corriger une éventuelle erreur ou altération de l'information qu'elle contient (par exemple lors d'un transfert). La technique la plus simple est celle du bit de parité (Parity check code), selon cette technique l'information est codée sur n bits et la mémoire contient un n+1 ème bit qui indique si le nombre de bits codant l'information contenue dans les n bits est pair (bit=0)ou impair(bit=1). C'est un code détecteur d'erreur. Exemple d'une mémoire à 4 bits plus bit de parité (le bit de poids faible contient la parité) : Information 10010 à bit de parité = 0 , car il y a deux bits égaux à 1 (nombre pair) Information 11110 à bit de parité = 0 , car il y a quatre bits égaux à 1 (nombre pair) Information 11011 à bit de parité = 1 , car il y a trois bits égaux à 1 (nombre impair) Une altération de deux bits (ou d'un nombre pair de bits) ne modifiant pas la parité du décompte ne sera donc pas décelée par ce code : Supposons que l'information 10010 soit altérée en 01100 ( le bit de parité ne change pas car le nombre de 1 de l'information altérée est toujours pair, il y en a toujours 2 ! ). Ce code est simple peu coûteux, il est en fait un cas particulier simple de codage linéaire systématique inventés par les spécialistes du domaine. Mémoire ECC générale Les mathématiciens mis à contribution à travers la théorie des groupes et des espaces vectoriels fournissent des modèles de codes détecteur et correcteur d'erreurs appelés codes linéaire cycliques, les codes de Hamming sont les plus utilisés. Pour un tel code permettant de corriger d'éventuelles erreur de transmission, il faut ajouter aux n bits de l'information utile, un certain nombre de bits supplémentaires représentant un polynôme servant à corriger les n bits utiles. Pour une mémoire ECC de 64 bits utiles, 7 supplémentaires sont nécessaires pour le polynôme de correction, pour une mémoire de 128 bits utiles, 8 bits sont nécessaires. Vous remarquez que l'Optéron d'AMD utilise de la mémoire ECC pour le cache L1 de données et de la mémoire à parité pour le cache instruction. En effet, si un code d'instruction est altéré, l'étage de décodage du processeur fera la vérification en bloquant l'instruction inexistante, la protection apportée par la parité est suffisante; en revanche si c'est une donnée qui est altérée dans le cache L1 de données, le polynôme de correction aidera alors à restaurer l'information initiale. Mémoire associative C'est un genre de mémoire construit de telle façon que la recherche d'une information s'effectue non pas à travers une adresse de cellule, la mémoire renvoyant alors le contenu de la cellule, mais plutôt en donnant un "contenu" à rechercher dans la mémoire et celle-ci renvoie l'adresse de la cellule. Notation graphiques utilisées : Une mémoire cache est une mémoire associative, ainsi elle permet d'adresser directement dans la mémoire centrale qui n'est pas associative. On peut considérer une mémoire cache comme une sorte de table de recherche contenant des morceaux de la mémoire centrale. La mémoire centrale est divisée en blocs de n mots, et la mémoire cache contient quelques un de ces blocs qui ont été chargés précédemment. Mécanisme synthétique de lecture-écriture avec cache : Le processeur fournit l'adresse d'un mot à lire : 1°) Si ce mot est présent dans le cache, il se trouve dans un bloc déjà copié à partir de son original dans le MC (mémoire centrale), il est alors envoyé au processeur : 2°) Si ce mot n'est pas présent dans le cache, l'adresse porte alors sur un mot situé dans un bloc présent dans la MC (mémoire centrale). Dans cette éventualité le bloc de la MC dans lequel se trouve le mot, se trouve recopié dans le cache et en même temps le mot est envoyé au processeur : Pour l'écriture l'opération est semblable, selon que le mot est déjà dans le cache ou non. Lorsque le mot est présent dans le cache et qu'il est modifié par une écriture il est modifié dans le bloc du cache et modifié aussi dans la MC : Ce fonctionnement montre qu'il est donc nécessaire que la mémoire cache soit liée par une correspondance entre un mot situé dans elle- même et sa place dans la MC. Le fait que la mémoire cache soit constituée de mémoires associatives, permet à la mémoire cache lorsqu'un mot est sélectionné de fournir l'adresse MC de ce mot et donc de pouvoir le modifier. La Mémoire Cache (Organisation du cache ) Purement associatif; Placement Direct; Associatif par bloc. Purement associatif; (Fully Associative): Un bloc peut être placé n'importe où dans le cache Cache à placement direct (Direct mapped): Chaque bloc a un emplacement unique où il peut être rangé dans le cache. Calcul de l’emplacement: (Numéro de la ligne)= (Adresse du Bloc) MOD (Nombre de lignes dans le cache L0 B0 Li Bi Cache associatif par ensemble (Set associative): Les lignes sont groupées en ensembles; Au lieu d´affecter un bloc MC à une seule ligne de cache, il est d’abord affecté à un ensemble. Le bloc peut ensuite être placé dans n’importe quelle ligne de l’ensemble correspondant; Calcul de l’emplacement: (Numéro de l’ensemble) (Adresse du Bloc) MOD (Nombre d’ensembles) Tendance actuelle: La tendance est à la division du cache (ex. Pentium 4 et PowerPC); Le cache unique provoque de la contention pour le cache entre les unités de recherche/décodage et d'exécution des instructions: (lors du recouvrement entre les étapes d’exécution d’une instruction: pipeline) La structure de cache séparé permet de régler cette difficulté Si l'unité d'exécution effectue un accès mémoire sur une donnée, et qu’au même moment le processeur génère une commande de lecture d’une instruction, cette requête sera temporairement bloquée dans le cas d’un cache unique (pour permettre de compléter d’abord l'instruction en cours d'exécution). Exemple d’Organisation du cache Correspondance directe: Le bloc 12 Associatif par ensemble: peut aller seulement dans la ligne 4 Le bloc 12 peut aller n'importe où Traitement associatif: Le bloc 12 (12 modulo 8) =4 dans l’ensemble 0 (12 modulo 4)=0 peut aller n'importe où 0 1 2 3 4 5 6 7 0 1 2 3 4 5 67 0 1 2 3 4 5 6 7 Ens 0 Ens 1 Ens 3 Ens 2 18 30 10 12 28 14 19 20 16 11 13 24 22 15 17 29 26 21 23 8 0 25 27 2 4 9 6 1 3 5 7 31 Avantages du cache purement associatif : Assure un remplissage maximal de la mémoire cache. Il y a plus de souplesse pour déterminer l'adresse de la ligne à remplacer lors du chargement d'un bloc depuis la mémoire centrale vers la mémoire cache. Inconvénients du cache purement associatif Le microprocesseur doit faire une recherche sur toutes les lignes de cache pour savoir si l´information qu´il cherche est dans la mémoire cache. Cette méthode est donc à écarter dès que la mémoire cache doit avoir une grande taille (grand nombre de lignes), ou qu´elle doit travailler à très grande vitesse. Avantages du placement direct : La recherche d’une information en cache est très rapide (accès direct à la ligne réservée). C'est une technique simple et peu coûteuse. Inconvénients du placement direct : On ne peut pas avoir en même temps en cache deux blocs MC qui doivent occuper la même ligne. Si un programme référence de manière répétée des mots situés dans deux blocs différents de la MC qui doivent occuper la même ligne en cache, les blocs vont continuellement s'écraser mutuellement et le pourcentage de réussite dans le cache sera bas. Avantages du cache associatif par ensemble : Cette méthode est une évolution de la méthode de placement direct. Au lieu d´affecter une seule ligne de mémoire cache à une zone, on va en affecter plusieurs: Plus souple que le placement direct; La recherche parallèle d’un mot ne se fait que parmi les lignes de l’ensemble réservé au bloc correspondant: Plus rapide que le cache purement associatif. Mémoire cache La mémoire centrale étant lente par rapport à la vitesse d’horloge des processeurs actuels, on utilise une mémoire cache ou antémémoire de capacité plus faible et faite de mémoire statique entre le processeur et la mémoire centrale. On y place les données les plus récemment utilisées. Elle contient donc une petite partie de la mémoire centrale. Lors d’un accès mémoire, le système de gestion de mémoire cache doit déterminer si l’information désirée se trouve dans le cache. Si elle s’y trouve, on n’a pas besoin d’aller en mémoire centrale et on obtient l’information à la vitesse du cache, ~ 5 ns. Si elle ne s’y trouve pas, on la copie de la mémoire centrale vers le cache, de sorte qu’elle s’y trouvera la prochaine fois. La mémoire cache est basée sur le principe de localité: 1. Localité temporelle: si un objet a été référencé, il sera référencé de nouveau bientôt (exemple : boucle). 2. Localité spatiale: si un objet a été référencé, des objets proches seront également référencés (exemple : tableau). La mémoire cache est une mémoire associative, dans le sens qu’on doit déterminer si le contenu d’une adresse s’y trouve avant de pouvoir le lire. Il faut s’assurer que l ’information recherchée s’y trouve le plus souvent possible pour réduire les accès à la mémoire centrale. Mémoire cache Un cache est donc inutile et même nuisible pour un programme qui n’aurait aucune boucle, ou qui n’utiliserait jamais de données contigües. Les processeurs modernes ont deux caches internes (L1): ° un pour les instructions, ° un pour les données, On utilise aussi habituellement un cache externe d ’une capacité beaucoup plus grande (L2). Pentium : cache interne : instructions : 16 Ko données :16 Ko cache externe : 512 Ko Mémoire cache L’unité d’information qui peut être présente ou non dans le cache est appelée un bloc, qui constitue une ligne (ou rangée) du cache. Les blocs ont généralement entre 4 et 128 octets et sont tous de même taille dans un cache donné. À chaque bloc on associe une étiquette. La valeur de cette étiquette permet de décider si un bloc donné est effectivement dans le cache ou non. L’adresse fournie par le processeur peut être scindée en deux parties : le no de bloc 25 à 30 bits et l’adresse dans le bloc. 2 à 7 bits Adresse no. de bloc dans le bloc Adresse de 32 bits 17 Mémoire cache Cache associatif Le numéro de bloc est utilisé comme étiquette 000000100000110000100000000000 00 Comparateurs 00 01 10 11 de 30 bits Étiquette V Données succès Bus de données 1. Quand une donnée est placée dans le cache, le numéro de bloc de l’adresse fournie par le processeur est placé dans le champ étiquette de la rangée où la donnée est placée. 2. À chaque accès mémoire, les comparateurs comparent simul-tanément le no. de bloc de l’adresse demandée avec toutes les étiquettes se trouvant dans le cache. Si l’une de ces étiquettes est égale au numéro de bloc, c’est que la donnée correspon-dante se trouve dans le cache. L’accès s ’effectue alors dans le cache au lieu de la mémoire centrale, donc 2 à 5 fois plus rapidement. 3. Si aucune étiquette n’est égale au no. de bloc, c’est que la donnée n’est pas dans le cache. On retourne à 1. EX: Traitement associatif: Le bloc 12 peut aller n'importe où 0 1 2 3 4 5 6 7 Mémoire cache Cache associatif Politiques de remplacement de rangées L’algorithme de remplacement utilisé quand il faut remplacer un bloc et que tous les blocs du cache sont valides (V = 1) peut être : 1. L’algorithme du plus ancien LRU (Least Recently Used), c’est-à-dire qu’on remplace le bloc qui a été utilisé le moins récemment. 2. L’algorithme FIFO (First-In First Out), c’est-à-dire qu’on remplace les blocs dans le même ordre qu’o n l e s a introduits. 3. LFU (Least Frequently Used), c’est-à-dire quon remplace le bloc qui a été utilisé le moins souvent. 4. Le hasard (Random). 19 Mémoire cache Cache à accès direct Étiquette index 00000010000011000010 0000000100 00 00 01 10 11 000 Étiquette V Données Comparateur 20 bits 004 3FF succès Bus de données Cache à accès direct Le cache purement associatif est très coûteux en raison du nombre élevé de comparateurs. Chaque comparateur nécessite autant de portes XOR qu’il y a de bits dans l’étiquette et il y a autant de comparateurs que de rangées dans le cache. Dans le cache à accès direct, le champ no. de bloc de l ’adresse est scindé en deux parties : l’étiquette et l’index. L’étiquette et les données correspondantes sont toujours enregistrées dans la rangée donnée par le champ index. Ainsi, on n’a besoin que d’un seul comparateur dont le nombre de bits est égal au nombre de bits dans le champ étiquette. Étiquette Index Adresse dans le bloc EX: Correspondance directe: Le bloc 12 peut aller seulement dans la ligne 4 (12 modulo 8) =4 0 1 2 3 4 5 67 20 Mémoire cache Cache associatif par ensemble de blocs Le cache associatif par ensemble de blocs est un compromis entre le cache purement associatif et le cache à accès direct. On a 2 ou 4 blocs de données. D’un ensemble à l ’autre, le cache est associatif. Cependant, les blocs (rangées) sont gérés comme dans le cache à correspondance direct. La performance de ce type de cache pratiquement équivalente à celle du cache purement associatif, à un prix beaucoup moindre. En pratique, on n ’a aucun avantage à dépasser 4 ensembles. Cache associatif par ensemble de blocs Étiquette Index 0000000001000000100000 01000010 00 Étiquette Données Étiquette Données Étiquette Données Étiquette Données 00000000 00000001 11111111 comparateur comparateur comparateur comparateur de 22 bits de 22 bits de 22 bits de 22 bits succès Ens 0 Ens 1 Ens 3 Ens 2 21 Mémoire cache Politiques d’écriture dans un cache Écriture simultanée (write-through) : Lors d’une écriture, l’information est écrite simultanément dans le cache et en mémoire centrale. Toute écriture prend le même temps qu’un échec de cache, donc perte d’efficacité. Récriture (write-back) : Lors d’une écriture, l’information n’est écrite que dans le cache. Ce n’est que lors d’un remplacement de la rangée du cache où elle se trouve que l’information est transcrite en mémoire centrale. L’écriture est aussi rapide que la lecture tant qu’un bloc est dans le cache. Cependant les données en mémoire centrale sont inconsistantes avec celles du cache tant que les données modifiées n’y ont pas été recopiées. Performance Le taux de succès est le rapport entre le nombre d’accès mémoire pour lesquels le bloc est présent dans le cache et le nombre total d’accès. Le taux d’échec est : Taux d’échec = 1 - taux de succès. Le temps associé au succès est le temps d’accès à un bloc du cache, et comprend le temps nécessaire pour déterminer si le bloc est présent ou non. Le temps de traitement de l’échec est le temps de remplacement d’un bloc du cache par le bloc correspondant de la mémoire principale. Performance Succès du cache : 3 ns Échec du cache Accès cache conduisant à l’échec : 3 ns Lecture d’un bloc en mémoire centrale. Par exemple, 32 octets en 4 accès de 64 bits ( 8 octets) à 33 ns / accès = 132 ns. Temps total : 132 + 3 = 135 ns. Soit P la probabilité d’un succès. Le temps d’accès moyen sera T = P x 3.3 + (1 - P) x 135 Le temps d’un accès mémoire normal étant 33 ns, on veut que P soit tel que T < 33 ns. On calcule que le taux de succès P doit être supérieur à 77% pour le cache soit utile. 22 Mémoire cache Performance 100% Associatif par 95 % ensembles de 4 Associatif par P 90 % ensembles de 2 85 % Correspon- dance directe 80% 1K 2K 4K 8K 16K 32K 64K 128K Capacité du cache 23 Différents types de défauts de cache : Si le cache est vide (cache à froid): défaut forcé ou défaut à froid. Ces défauts ne se produisent plus lorsque le cache t en état stable (chauffé par des accès mémoire répétés). Les politiques restrictives de placement (organisation directe par exemple) conduisent aux défauts conflictuels : les données qui doivent être placées sur le même bloc de cache ne peuvent être simultanément en cache. Lorsqu’une boucle accède à un certain ensemble de blocs du cache (ensemble de travail de la boucle), et que cet ensemble de travail dépasse la taille du cache, des défauts de capacité se produisent. Remplacement d'une ligne en cache: - Aléatoire: le numéro de la ligne à remplacer est généré aléatoirement; - LRU (Least Recently Used): la ligne qui n’a pas été utilisée depuis le plus longtemps est choisie pour être remplacée Avantage du remplacement aléatoire: Cette technique est très simple et facile à mettre en oeuvre. Inconvénient du remplacement aléatoire: Elle ne respecte pas la localité temporelle: On peut remplacer une page dont on aura bientôt besoin. Avantage du remplacement LRU: Le LRU réduit la chance d'éliminer une donnée qui pourrait s'avérer rapidement nécessaire (localité temporelle). Inconvénient du remplacement LRU: La logique LRU doit maintenir l'instant où la donnée a été référencée la dernière fois: Son exécution devient complexe à mesure que la taille du cache augmente. Comparaison entre LRU et aléatoire: Il n'y a pas beaucoup de différences dans le taux de succès cache entre le LRU et la technique de remplacement aléatoire lorsque la taille du cache est grande: 32 sd La technique aléatoire devient plus intéressante du fait de son implémentation plus simple quand le nombre de lignes augmente. Niveaux de cache: L’augmentation du taux d’intégration a rendu possible le cache interne. Le cache interne réduit l'activité du processeur sur le bus externe il accélère les temps d'exécution et améliore la performance globale du système. Lorsque les informations recherchées sont trouvées sur le cache interne, l'accès au bus est éliminé, rendant le bus libre et permettant d'autres transferts. Un accès au cache interne est plus rapide qu'un accès au cache externe car la taille du chemin de données est réduite par rapport aux tailles des bus. Niveau L1: C’est un cache interne au processeur; Il est réalisé en technologie SRAM, rapide; Il est généralement de petite taille. Niveau L2: C’est un cache interne au processeur; Il est réalisé en technologie DRAM, moins rapide; Cependant, le processeur n’utilise que le chemin de données interne et n’a pas besoin d’utiliser le bus système externe pour communiquer avec le cache L2, donc les échanges sont rapides; Il est de plus grande taille que L1. Niveau L3: Le niveau L3 de cache est externe: il est situé sur la carte mère. Le cache L3 est en technologie SRAM plus rapide que la MC; De nombreuses machines n'utilisent pas le bus système comme chemin pour transférer les informations entre le cache L3 et le processeur, mais utilisent un chemin de données séparé, afin de réduire la charge du bus système. Avantages d'utiliser un cache unique: Pour une taille donnée, un cache unique a un plus haut taux de réussite que le cache séparé: Il équilibre automatiquement la charge entre les données et les instructions. La conception d’un cache unique est simplifiée. The principle of locality… Levels in a typical memory hierarchy …says that most programs don’t access all code or data uniformly ¾ e.g. in a loop, small subset of instructions might be executed over and over again… ¾ …& a block of memory addresses might be accessed sequentially… This has led to “memory hierarchies” Some important things to note: ¾ Fast memory is expensive ¾ Levels of memory usually smaller/faster than previous ¾ Levels of memory usually “subset” one another ¾ All the stuff in a higher level is in some level below it CS 135 CS 135 Memory Hierarchies The Full Memory Hierarchy “always reuse a good idea” Key Principles Capacity Access Time Upper Level Staging Cost Xfer Unit faster ¾ Locality – most programs do not access code or data CPU Registers uniformly 100s Bytes Registers