Les mémoires - Academie pro
Transcription
Les mémoires - Academie pro
Chapitre 4 : Les mémoires 1. Introduction: Nous savons que dans un ordinateur toutes les informations : valeur numérique, instruction, adresse, symbole (chiffre, lettre,... etc.) sont manipulées sous une forme binaire. Ces informations doivent en général être conservées pendant un certain temps pour permettre leur exploitation. Ce rôle est dévolu aux mémoires chargées de conserver programmes, données provenant de l’extérieur, résultats intermédiaires, données à transférer à l’extérieur, etc. On peut classer la mémoire en deux catégories principales. La mémoire de masse est constitué par des supports le plus souvent magnétiques (disquettes, disques durs, bandes, etc.). Les données et les programmes peuvent y être stockés de façon prolongée. Ils ne s’effacent pas lorsque l’on coupe l’alimentation. En revanche, ce type de support est assez lent. Lorsque l’ordinateur est en fonctionnement, les données et les programmes dont il a besoin sont copies en mémoire centrale. Lorsque l’on parle de mémoire sans plus de précision, c’est généralement de ce type de mémoire qu’il s’agit. Les mémoires à lecture et écriture ou mémoires vives permettent d’enregistrer une information, de la conserver et de la restituer et sont à accès aléatoire (RA.M : Random Acces Memory) c'est-à-dire que le temps d’accès à l’information est indépendant de sa place en mémoire Cette appellation, d’origine historique, est toujours synonyme de mémoire vive. Bien que très répandue cette appellation n’est plus suffisante car tous les circuits à semi-conducteur sont aujourd'hui à accès aléatoire. L’accès séquentiel ne porte plus que sur les mémoires magnétiques (disques ou bandes). Par contre, une mémoire vive est volatile : la conservation de son contenu nécessite la permanence de son alimentation électrique. 2. Hiérarchie des mémoires : Les différents éléments de la mémoire d’un ordinateur sont ordonnés en fonction des critères: temps d’accès, capacité et coût par bit. Les différents mémoires situées dans l’unité centrale de traitement sont: Les registres: accessibles immédiatement par le processeur, ils sont caractérisés par une grande vitesse et servent principalement au stockage des opérandes et des résultats intermédiaires. La mémoire cache ou l’antémémoire: rapide, de faible capacité par rapport à la mémoire centrale, utilisée comme mémoire tampon entre le CPU et la mémoire centrale. Elle permet au CPU de faire moins d'accès à la mémoire centrale et ainsi gagner du temps. La mémoire centrale: c'est l'organe principal de rangement des informations utilisées par le CPU. Pour exécuter un programme, il faut le charger en mémoire centrale. Cette mémoire est une mémoire à semi-conducteur, mais son temps d'accès est beaucoup plus grand que celui des registres et du cache. La mémoire d'appui: sert de mémoire intermédiaire entre la mémoire centrale et les mémoires auxiliaires. Elle est présente dans les ordinateurs les plus évolués et permet d'augmenter la vitesse d'échange des informations entre ces deux niveaux. 1 la mémoire auxiliaire: c'est une mémoire périphérique de grande capacité et de coût relativement faible utilisée pour le stockage permanent des informations, et utilisent pour cela des supports magnétiques ou optiques. La figure 1 suivante montre une comparaison des différentes catégories de mémoires dans un ordinateur, plus on s’éloigne du CPU vers les mémoires auxiliaires, on constate que le temps d’accès et la capacité des mémoires augmentent, mais que le coût par bit diminue. capacité Avantages Inconvénients Rapidité Accès direct Faible taille Volatile Faible capacité Chère (prix/bit) Avantages Inconvénients Peu chère Lenteur Non volatile Volumineuse Grande capacité Figure 1 : Hiérarchie des mémoires -- Avantages et inconvénients 3. Caractéristiques de la mémoire Capacité: Dite aussi taille de la mémoire, elle correspond au nombre d’informations qu’elle peut contenir. Elle est généralement exprimée en bits ou en nombre de mots mémoire. La table suivante résume les préfixes utilisés pour exprimer les capacités des mémoires : Symbole Préfixe Capacité 1o Octet 2 3 = 8 bits 1k Kilo 2 10 = 1024 1M Méga 2 20 = 1048576 1G Giga 2 30 = 1073741824 1T Tera 2 40 = 1099511627776 Table 1: Les unités de mesure de la capacité. Temps d’accès: C’est le temps qui sépare le début de l’opération d’accès et sa terminaison. Dans la pratique et pour plusieurs types de mémoire, le temps que demande une opération de lecture peut être différent de celui d’une opération d’écriture. Dans ce cas nous comptons le temps le plus long. Cycle mémoire: C’est le temps minimal se coulant entre deux accès successifs à la mémoire. Théoriquement, le cycle mémoire est égal au temps d’accès. Mais 2 pratiquement le premier est plus long que le deuxième, car le bon fonctionnement de la mémoire nécessite quelques opérations de maintient et de stabilisation des signaux dans le circuit (ex: synchronisation). Débit: C’est le nombre d’informations (exprimé en bits) lues ou écrites par seconde. Le débit est appelé aussi bande passante. Il est exprimé en fonction du cycle mémoire (CM) et la taille du mot mémoire (TMM) selon la formule suivante : D TMM CM Volatilité: Elle caractérise la permanence des informations dans la mémoire centrale. Une mémoire volatile perd son contenant lorsqu’on coupe le courant. Celle ci a donc besoin d’un apport constant d’énergie électrique pour conserver ses informations. La mémoire à base de transistors est volatile. On peut réaliser des mémoires non volatiles avec les transistors moyennant un générateur de courant électrique (batterie). Tel est le cas pour la mémoire CMOS qui contient les paramètres de configuration de l’ordinateur. Il y a une autre catégorie de mémoire, à base de résistances électriques, qui constitue une mémoire permanente. C’est le cas de la mémoire centrale qui contient le bios. 4. Organisation des mémoires 4.1. Définitions Le bit : C’est le plus petit élément d’information que l’on peut stocker dans une mémoire, il constitue l’unité de base de l’information. Il est souvent appelé point mémoire : il mémorise un bit d’information; L’octet, ou byte (en anglais), correspond à un groupement de 8 bits; La cellule mémoire (case) : C’est la plus petite quantité d’information adressable. Ces dernières années, la plupart des fabricants se sont mis d’accord sur une cellule de 8 bits, c’est à dire octet. Les octets sont eux-mêmes regroupés en mots. Le mot (Word) : C’est un groupement de bits constituant une unité d’information adressable en mémoire centrale (ex : 8, 12, 16, 24, 32, 36, 48, 60, 64, bits, ...), c'est à dire que toute opération de lecture ou d'écriture porte sur un mot mémoire. 4.2. Organisation interne Une mémoire est formée d'un certain nombre de cellules, ou cases, contenant chacune une information. Chaque cellule a un numéro qui permet de la référencer et de la localiser. Ce numéro est son adresse. Avec une adresse de n bits il est possible de référencer directement au plus 2n cellules. La capacité d'une mémoire est le nombre total de cellules qu'elle contient. Elle s'exprime en nombre de bits, d'octets (bytes) ou de mots (words). Compte tenu de l'adressage binaire, les capacités des mémoires s'expriment en puissances de deux ou en multiples de 210 = 1024. La table 1 vu précédemment explicite les unités utilisées. Remarque: Un ordinateur à mots de 16 bits a 2 octets par mot. Un ordinateur à mots de 32 bits a 4 octets par mot. 3 4.3. Organisation externe (Connexions aux bus) Les mémoires sont connectées à un bus adresses de n bits, un bus données de p bits et des lignes de commandes (figure.2). Pour pouvoir communiquer avec le microprocesseur, on va relier leurs bus ensembles. Pour cela, il est nécessaire d'avoir adéquation entre le nombre de bits des bus de données et d'adresses de la mémoire et du microprocesseur. Figure 2: Organisation externe de la mémoire Sur la figure 2 apparaît une broche de validation. Elle permet de sélectionner un boîtier mémoire parmi plusieurs, d'où son appellation : "chip select" Dans le cas général, il existe plusieurs boîtiers mémoire sur la carte, tous branchés sur le même bus données. Dans ce cas, il est nécessaire de construire un signal qui permettra à un seul boîtier d'accéder au bus données. Ce signal est appelé CS (chip select) sélection de boîtier ou CE (chip enable) validation de boîtier. Il faut créer autant de CS qu'il y a de boîtiers. 4.4. Comportement temporel Sur chaque mémoire, on trouve les broches suivantes : RD, RW et CS. C'est le microprocesseur qui gère ces signaux de la manière suivante : Chronogramme de lecture/écriture. Le microprocesseur positionne son bus adresses sur la case mémoire qu'il veut lire ou écrire. Les validations de boîtier CSi sont alors réalisées. Le microprocesseur positionne alors sa broche lecture RD ou écriture WR pour indiquer à la mémoire le moment où elle doit mettre l'information sur le bus de données. Le temps que met la mémoire pour le faire s'appelle le temps d'accès de la mémoire. Tous les signaux sont séquencés par une horloge. Le microprocesseur n'agit que sur les fronts d'horloge. 4 5. Technologie Nous allons nous intéresser aux mémoires les plus utilisées dans un microordinateur, les mémoires à accès aléatoire. Dans celles-ci, en connaissant l'adresse de la ou des cases mémoire, on peut accéder directement à l'information. On distingue deux types principaux de mémoires à accès aléatoire : les mémoires vives et les mémoires mortes. 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. Le contenu des mémoires mortes est écrit par le fabricant ou par l'utilisateur. 5.1. Les mémoires vives Les mémoires vives les plus utilisées actuellement sont les mémoires RAM (Random Acces Memory : mémoire à accès aléatoire). Il existe deux grandes familles de mémoires RAM: Les RAM statiques : Un bit mémoire d'une RAM statique (SRAM : static RAM) est composé d'une bascule. Tant que le circuit est alimenté, l'information est sauvegardée. Chaque bascule contient 6 transistors. Les RAM dynamiques : Une RAM dynamique stocke un bit d'information sous la forme d'une charge. Elle utilise pour cela l'effet capacitif de certaines fonctions des semi-conducteurs (condensateur et transistor en technologie MOS). Cependant, la charge stockée dans le condensateur élémentaire fuit et au bout de quelques millisecondes, elle est presque entièrement perdue. Pour préserver cette information, il faut la rafraîchir toutes les 2 ms. Avantage: Une Cellule mémoire d'une RAM dynamique occupe 4 fois moins de place que celle d'une RAM statique. Inconvénients: il faut réaliser une logique de rafraîchissement sur la carte et le rafraîchissement retarde les accès à la mémoire (1 à 5%). Les différents types de mémoires dynamiques: On distingue deux générations de mémoires dynamiques, la première génération est dite mémoires asynchrone composée par la mémoire FPM et EDO (processeur 386, 486 et pentium d’Intel). La seconde génération est dite mémoires synchrones, composée par la SDRAM, RAMBUS (ou DR-SDRAM), VC-SDRAM(ou VCM), DDR-SDPM... C’est la façon dont communiquent le processeur et la mémoire qui détermine si la mémoire est synchrone ou asynchrone. Les mémoires asynchrones Quand le processeur fait un accès à ce type de mémoires (écriture ou lecture), il doit attendre que celle ci ait terminé son travail, pour faire un autre accès. La mémoire asynchrone génère des Wait-States (temps d’attente), la raison est que le processeur ne sait pas quand l’information sera disponible par la mémoire pour être sur de l’avoir, il n’a comme solution que d’attendre que la mémoire la lui transmette. S’il ne le faisait pas, il pourrait la manquer et cela provoquerait des erreurs. Parmi les mémoires asynchrones les plus commercialisées, on trouve: 5 FPM (Fast Page Mode) : c’est une amélioration du mode de fonctionnement des anciennes DRAM, permettant d’accéder à toute une rangée de cellules qui forme une page , ainsi, si la prochaine adresse mémoire recherchée concerne la même page, le contrôleur mémoire n’a pas besoin de répéter la phase de recherche de cette rangée mais uniquement à indiquer la valeur de la colonne. EDO (Extended Data Out) : dite aussi HPM DRAM (Hyper Page Mode DRAM) est en fait composée de la même manière que la traditionnelle DRAM mais on a ajouté aux entrées des rangées de bascules qui autorisent le chargement d’une nouvelle adresse en mémoire sans avoir à attendre le signal de validation de la lecture. La période d’attente entre deux lectures (wait-states) est ainsi minimisée et on peut donc faire fonctionner à une fréquence de 50 MHZ contre 25 MHZ pour la DRAM traditionnelle. Ce type de mémoires offre un temps d’accès allant de 45 à 70 ns. BEDO (Burst EDO) : ce type de mémoire non standardisé permet d’atteindre 66 MHZ, mais ce mode n’était supporté que par peu de chipsets et a quasiment disparu bien qu’elles ont apporté des solutions techniques intéressantes et proches de celles des SDRAM. Les mémoires synchrones Lorsque le processeur fait un accès à la mémoire, il peut continuer à travailler en attendant la réponse, par exemple faire un autre accès. Ce type de mémoire ne génère pas de wait-states. Pour synchroniser la mémoire, on utilise deux composants qu’on place entre la mémoire et le processeur. La mémoire est reliée à une horloge, celle ci cadence donc les échanges entre la mémoire et le processeur. Grâce à cette horloge, le processeur sait quand l’information sera disponible car la cadence de sortie des informations, en provenance de la mémoire est régulière. La mémoire et le processeur Sont reliés à un buffer qui stocke les demandes d’accès à la mémoire provenant du microprocesseur. C’est grâce à l’utilisation conjointe d’un buffer et d’une horloge que le processeur n’a pas à attendre que la mémoire ait terminé son travail pour continuer à travailler. Parmi les mémoires synchrones on distingue : SDRAM (Synchronous DRAM) : en très forte évolution, échange ses données avec le processeur en se synchronisant avec ce dernier ce qui permet d’éviter les états d’attente, cette technologie de mémoire est en train de connaître une importante progression du fait des temps d’accès autorisés de l’ordre de 10 à 12 ns, allant de paire avec une baisse non négligeable des coûts. RDRAM : c’est une DRAM de conception originale développée par la société RAMBUS qui nécessite toutefois des contrôleurs mémoires spécifiques lui permettant d’être environ 10 fois plus rapide qu'une DRAM classique. Cependant, du fait de l’usage de contrôleurs spécifiques, son emploi est limité actuellement â des ordinateurs de jeu ou quelques cartes graphiques. SGRAM: Synchronous Graphics RAM est une extension de la SDRAM également destinée à équiper les cartes graphiques. Elle permet d’accéder aux données aussi bien par bloc qu’individuellement ce qui réduit le nombre d’accès en lecture écriture et améliore les performances. La mémoire d’une carte 6 graphique doit contenir 2 types d’information au moins : une copie de l’affichage écran, gérée par le RAMDAC et des données tel que les textures gérées par le processeur graphique. La particularité de la SGRAM est de permettre son accès simultanément au RAMDAC et au processeur graphique. DDR SDRAM: Samsung, Nec et Toshiba se sont associés pour mettre au point un nouveau standard dit DDR (Double Data Rate) qui doublerait le taux de transfert des actuelles SDRAM. La SDRAM deviendrait donc DDR SDRAM ou SDRAM II et offrirait des taux de transfert atteignant 1,03 GO/s. elle est en effet capable de lire les données aussi bien sur le front montant que sur le front descendant du signal d’horloge. Ce qui permet de doubler son taux de transfert. 5.2. Les mémoires caches : La mémoire cache (réalisé en SRAM: plus rapide et plus petite taille ) ou antémémoire est une mémoire rapide de faible capacité ( par rapport à la mémoire centrale ) utilisée comme mémoire tampon entre le CPU et la mémoire centrale. Cette mémoire permet au CPU de faire moins d’accès à la mémoire centrale et ainsi de gagner du temps. Le principe de l’antémémoire apporte une solution au problème de la trop grande différence de vitesse entre le CPU et la mémoire centrale. La solution consiste à insérer entre les deux une mémoire très rapide mais pas très grande qui va contenir les informations (instructions, données) dont a besoin le CPU. L’antémémoire est une mémoire associative, ce qui signifie que les informations ne sont pas accessibles par une adresse, ce qui est le cas dans la mémoire centrale, mais sont adressables par le contenu. Chaque case d’une mémoire associative comprend deux champs correspondant à la clé et à l’information associée à cette clé. Dans le cas de l’antémémoire, la clé est constituée par l’adresse en mémoire centrale de l’instruction ou la donnée cherchée et l’information associée est constituée de l’instruction ou la donnée elle-même. Il faut noter que la recherche par clé dans la mémoire associative ne s’effectue pas de manière séquentielle, mais en parallèle sur toutes les cases de la mémoire associative. En un seul accès, on sait si l’instruction cherchée se trouve ou non dans l’antémémoire. La mémoire cache doit être suffisamment petite pour que son coût soit proche de celui d’une mémoire principale, et que le temps d’accès soit le plus intéressant possible, et suffisamment grand pour ne pas avoir à trop accéder à la mémoire principale. Des études ont montré que les plus efficaces ont une taille inférieure à 512K mots, mais leur performance dépend beaucoup de la nature des applications traitées par la machine. La mémoire cache de premier niveau Le processeur, lorsqu’il fait tourner une application, ne peut traiter qu’une portion limitée de code à la fois et de ce fait n’a certainement pas besoin de tout ce qui est présent en mémoire vive. D’autre part, lorsqu’il traite une portion de code, il y a de fortes chances pour que la fraction de code dont il ait besoin juste après soit très voisine de celle qu’il est en train de traiter. Aussi le processeur dispose-t-il en son sein d’une mémoire de faible capacité (de l’ordre de quelques Ko: 8 Ko pour un 486, 16 Ko pour un Pentium, 32 Ko pour un pentium MMX) mais d’accès ultra rapide: de l’ordre de la nanoseconde contre 30 à 80 nanosecondes pour la mémoire vive. 7 Cette mémoire, appelée la mémoire cache de premier niveau, stocke en son sein les portions de code qui ont la plus forte probabilité d’être demandées par le processeur au prochain appel de données. D’autre part, il est composé de deux parties de taille égale, l’une stocke les instructions des programmes, l’autre les données des programmes. Les autres niveaux de la mémoire cache ne font pas cette distinction. La mémoire cache de second niveau Elle est placée entre la mémoire cache de premier niveau et la mémoire vive et fonctionne sur le même principe que la mémoire cache de premier niveau, si ce n’est qu’elle est de capacité plus importante (256 Ko ou 512 Ko voir 1Mo) et d’accès moins rapide (de l’ordre de 6 nanosecondes). Ce cache a subit de nombreuses évolutions, et se retrouve aujourd'hui intégré dans le microprocesseur (sur la carte processeur). Toutefois, s’il est intégré, il n’est pas imbriqué comme le cache L1. Cela veut dire que changer la taille du cache L1 implique souvent une modification de l’architecture du processeur, ce n’est pas le cas du cache L2. Ceci permet de proposer des micro-processeurs disposant de différentes tailles de cache L2. La mémoire cache de niveau 3 Si ce type de cache est aujourd’hui courant sur des machines haut de gamme (SUN, HP, IBM, ALPHA...), dans le monde des PC, il n’a existé qu'un seul exemple de microprocesseur utilisant une mémoire cache de niveau 3. Il s’agit du K6 et l’athlon de la société AMD. Jusqu’à présent, ce type de cache a toujours été composé de mémoire SRAM et implanté sur la carte mère. Sa taille varie de 1 à 8 MO (valeur généralement constatée, mais il n’y a pas de limitation technique). Figure 3: Les trois niveaux de cache (L:Level) CPU 486 DX4 Pentium Pentium Pro Pentium II Pentium III Vitesse du processeur 100 Mhz 233 Mhz 200 Mhz 300 Mhz 400 Mhz Vitesse du cache L1 100 Mhz 233 Mhz 200 Mhz 300 Mhz 400 Mhz Vitesse du cache L2 33 Mhz 66 Mhz 200 Mhz 150 Mhz 200 Mhz Vitesse carte mère 33 Mhz 66 Mhz 66 Mhz 66 Mhz 100 Mhz Vitesse mémoire vive 16 Mhz 16 Mhz 16 Mhz 16 Mhz 100 Mhz Table 2: vitesse des mémoires cache L1 et L2 par rapport aux autres composants 5.3. Les mémoires mortes Il s’agit des mémoires qui gardent en permanence des données ou dont les données sont très rarement modifiées. Dans un contexte d’utilisation normale, les données 8 inscrites dans une mémoire morte sont inaltérables, elles peuvent seulement être lues. Dans certains types de mémoires Mortes, les données sont introduites durant le procédé de fabrication, dans d’autres cas, les données peuvent être introduites électriquement. On donne le nom de Programmation ou de Grillage au processus d’introduction des données dans une mémoire morte. ROM (Read Only Memory): circuit intégré dont le contenu est déterminé une fois pour toute au moment de la fabrication. Le coût relativement élevé de leur fabrication impose une fabrication en grandes séries, ce qui complique la mise à jour de leur contenu. Ces mémoires sont utilisées pour stocker les parties bas-niveau du système d'exploitation de l'ordinateur (BIOS du PC par exemple). Avantages : Non volatile Coût faible par grandes quantités (> 1000) Mémoire très rapide Inconvénients : Écriture impossible Modification impossible (toute erreur est fatale). Délai de fabrication: 3 à 6 semaines Obligation de grandes quantités PROM (Programmable ROM): Alors que la mémoire ROM est enregistrée de manière irréversible lors de sa fabrication, la mémoire PROM est configurée par l'utilisateur en utilisant un programmateur de PROM, utilisé pour enregistrer son contenu. Le circuit PROM ne peut plus être modifié par la suite. Avantages : Non volatile et vitesse élevée comme pour les ROM Programmation en quelques minutes Coût relativement faible Compatibilité du brochage avec les ROM Inconvénients : Écriture impossible Modification impossible (toute erreur est fatale). EPROM (Erasable PROM) : Les mémoires EPROM sont des PROM reconfigurables : il est possible de les effacer pour les reprogrammer. L'effacement se produit en exposant le boitier à un fort rayonnement ultraviolet. Pour cela, le boitier est percé d'une fenêtre transparente permettant l'exposition du circuit intégré. Avantages : Reprogrammable et non Volatile Inconvénients : Coût plus élevé Plus lente Ecriture Impossible 9 EEPROM (Electricaly Erasable PROM): Même principe qu'une EPROM, mais l'effacement se fait à l'aide de signaux électriques, ce qui est plus rapide et pratique. Avantages : Comportement d'une RAM non Volatile Inconvénients : Coût très élevé Très lente FLASH EPROM : Les mémoires FLASH sont similaires aux mémoires EEPROM, mais l'effacement peut se faire sélectivement par blocs et ne nécessite pas le démontage du circuit. Le temps d'écriture d'un bloc de mémoire FLASH est beaucoup plus grand que celui d'écriture d'une mémoire RAM, mais du même ordre que celui d'un disque dur. L'accès en lecture à une EEPROM est à peu près aussi rapide qu'a une DRAM. On utilise donc parfois des cartes de mémoire FLASH comme mémoire secondaires, par exemple pour les ordinateurs portables. 11