LES MEMOIRES
La mémoire constitue une zone de stockage temporaire pour les programmes et les données. Elle se situe sur la carte mère de l’ordinateur ou sur une carte mémoire supplémentaire. Tous les programmes doivent être chargés en mémoire pour pouvoir être exécutés.
La mémoire vive
Une partie de la mémoire est accessible en lecture ou en écriture, mais son contenu est volatile (c’est à dire qu’il est perdu dès que la machine est mise hors tension) : elle est appelée RAM (Random Access Memory), et contient des données ou des programmes (ensemble d’instructions) particuliers, éventuellement développés par I’utilisateur.
Il existe deux technologies de fabrication de RAM : les RAM statiques et les RAM dynamiques :
- Dans une RAM statique, il faut 4 transistors pour mémoriser un bit.
Les RAM statiques permettent un accès très rapide en lecture/écriture mais elles ne permettent pas une intégration aussi importante que les RAM dynamiques. Elles sont aussi beaucoup plus chères. - Dans une RAM dynamique, il ne faut qu’un seul transistor (et un condensateur) pour mémoriser un bit.
Les RAM dynamiques permettent une très forte intégration : 4 Mbits sur une seule puce.
Cependant elles nécessitent d’être lues en permanence pour conserver leurs informations (opération appelée rafraîchissement). Elles sont lentes en accès lecture/écriture mais bien meilleur marché que les RAM statiques.
C’est ce type de mémoire qui est utilisé dans les micro-ordinateurs compatibles P.C.
Ces mémoires peuvent se présenter sous divers aspects :
Pour des raisons économiques, on utilise des RAM dont le temps d’accès est de l’ordre de 70 ns. Lorsque la fréquence de travail du processeur s’accroît, le temps imparti à une lecture ou une écriture en mémoire diminue et parfois, ne suffit plus.
Par exemple, à une fréquence de 50 Mhz correspond une période de 20 ns (inverse de la fréquence). En principe, c’est pendant ce laps de temps que la mémoire sollicitée doit répondre à l’ordre reçu. Si son temps d’accès est de 70 ns, c’est matériellement impossible.
Pour que le processeur ait le temps de lire une information dans une telle mémoire, il devra y consacrer quatre périodes d’horloge, soit 80 ns au total.
Ces périodes d’horloge supplémentaires destinées aux mémoires sont appelées des « temps d’attente », ou des « Wait States ». Pendant qu’ils s’écoulent, le processeur ne fait rien d’autre.
Le Contrôleur d’Accès Direct Mémoire DMA
Le circuit DMA (Direct Memory Access) est capable d’écrire ou de lire des données directement en RAM sans passer par le processeur. Cette caractéristique est surtout intéressante pour 1’entrée/sortie de données issues de périphériques lents, tels qu’un lecteur de disquettes.
Ce circuit a également pour rôle d’entretenir un niveau électrique adéquat pour les données contenues dans la RAM (« rafraîchissement des RAM dynamiques»).
La mémoire morte
Une partie de la mémoire n’est accessible qu’en lecture et conserve ses données de façon permanente; elle est désignée par le terme ROM (Read Only Memory). En fait, le sigle ROM désigne toute une famille de produit :
- PROM ! Mémoire morte programmable par l’utilisateur. Le fabricant de micros y stockera le BIOS de ses machines. Son contenu ne peut plus être modifié.
- EPROM : La programmation s’effectue électriquement et il est alors possible d’effacer le contenu par ultraviolet et de reprogrammer le circuit.
- Mémoire Flash : Mémoire ROM programmable et effaçable électriquement, très rapidement.
La tendance actuelle consiste à enregistrer le BIOS sur des mémoires Flash, ce qui permet la mise à jour éventuelle de ce BIOS en local par l’utilisateur, à partir d’une disquette.
ORGANISATION FONCTIONNELLE DES MEMOIRES CENTRALES
Les catégories de mémoire
Le système d’exploitation DOS jusqu’à sa version 6 ne sait gérer que 640 Ko de mémoire destinée aux programmes utilisateurs.
Ces 640 Ko s’inscrivent dans une mémoire globale de 1 Mo, mais le DOS se réserve l’usage des 386 Ko couvrant la zone située entre les premiers 640 Ko et le 1 Mo.
Les programmes se sont développés et sont devenus gourmands en mémoire (Windows en donne l’exemple).
Pour plus de commodité et selon le mode de fonctionnement, on a été amené à créer et à définir plusieurs catégories de mémoire centrale:
- La mémoire conventionnelle
- La mémoire supérieure
- La mémoire paginée (Expanded Memory)
- La mémoire étendue (Extended Memory)
- La mémoire cache
La mémoire conventionnelle
C’est la mémoire adressée et imposée par les microprocesseurs des PC équipés de 8088. Les compatibles PC possèdent en général 640 Ko, C’est la quantité maximum de mémoire que peut gérer MS-DOS.
Par défaut (c’est à dire sans installation de logiciels gestionnaires de mémoire particulier), DOS utilise une partie de la mémoire conventionnelle et les logiciels gestionnaires de périphériques (drivers) en occupent une autre partie.
La quantité de mémoire conventionnelle restante est disponible pour les autres programmes.
La mémoire supérieure
La mémoire système occupe les 384 Koctets compris entre les 640 Koctets et 1 Moctet (1024 Koctets) ; elle ne peut être exploitée par des programmes pour qu’ils y stockent des données.
Par contre, cette mémoire abrite le BIOS. La mémoire écran et les logiciels de gestion des extensions possibles (carte de réseau, contrôleur de disque dur, dont les drivers sont installés par des commandes particulières du DOS). Normalement, seules des portions de cette zone sont occupées, séparées par des espaces libres.
Ces 384 Ko sont appelés la zone UMA (Upper Memory Area). Cette zone peut contenir des UMB (Upper Memory Block), blocs libres de mémoire supérieure.
La mémoire paginée
Comme nous l’avons vu dans le paragraphe précédent, le 8088 (et le 8086) ne peuvent adresser que 1 Mo : 640 Ko sont disponibles pour les applications, les 384 Ko restants sont réservés pour le système.
Comme les applications sont de plus en plus exigeantes en capacité de mémoire, les constructeurs ont été confrontés au problème de concevoir des extensions de mémoire au-delà de ce que peut reconnaître le microprocesseur. Créer une extension mémoire n’est pas un problème technologique. Le problème réside dans le moyen de communiquer les informations mémorisées dans l’extension au microprocesseur.
La mémoire paginée (ou expansée) offre une solution pour ajouter de la mémoire au-delà des 640 Koctets de mémoire conventionnelle.
La mémoire paginée est physiquement installée sur une carte de mémoire particulière et nécessite un logiciel de gestion adapté. Les programmes qui utilisent la mémoire paginée n’ont pas directement accès aux informations qui y sont stockées.
La mémoire paginée est divisée en segments de 16 Koctets appelés pages. Lorsqu’un programme doit accéder à des données situées en mémoire paginée, le gestionnaire de mémoire paginée mappe ( copie ) la page demandée dans une zone ( appelée segment de cadre ), qui se situe dans l’espace mémoire adressable en mode réel par le processeur. Le programme accède alors aux données souhaitées dans le segment de cadre. Celui-ci fait partie de la zone de mémoire supérieure (voir bloc n° 13 dans la cartographie mémoire des PC).
Le logiciel EMM386.EXE, fourni avec DOS 5.0, permet d’utiliser la mémoire étendue comme de la mémoire paginée sur les systèmes équipés d’un processeur 80 386 ou supérieur; ceci autorise le fonctionnement, sur des machines ne disposant que de mémoire étendue, de certains programmes conçus initialement pour fonctionner avec de la mémoire paginée.
Pour cela, il faut que le gestionnaire de mémoire étendue HIMEM.SYS soit actif. Le driver EMM386.EXE permet, en outre, de rendre disponible certains blocs de mémoire supérieure pour y loger des drivers ou programmes résidents ( à l’aide des commandes DEVICEHIGH ou LOADHIGH ), ce qui libère de la mémoire conventionnelle.
La mémoire étendue
C’est une mémoire supplémentaire, allant au delà du premier Mo, mais elle est adressée directement par les processeurs 286, 386, 486 et Pentium. Pour cela, ces processeurs doivent fonctionner en « mode « protégé ».
En effet, les microprocesseurs de la famille Intel peuvent fonctionner :
en mode réel Mode de base des 8086 et 8088. L’adressage porte sur un espace de 1 Mo (il est assuré sur 20 bits).
en mode protégé Ce mode n’intervient qu’avec les 286 et la suite.
L’adressage est considérablement étendu.
Avec le 286, l’adressage s’effectue sur 24 bits et couvre un espace de 224, soit 16 Mo.
Avec les 386 DX et les 486, l’adressage passe à 32 bits couvrant un espace de 4 Go.
Pour entrer dans ce mode, il faut « commuter » le processeur dans ce nouveau mode.
en mode virtuel C’est un sous-produit du mode protégé. Il permet l’exécution de programmes conçus pour le mode réel.
Il ne s’applique qu’à partir du 386. Chaque programme se voit attribuer un espace de 1 Mo comme en mode réel, mais dans l’espace du mode protégé.
D’une façon générale, les programmes qui utilisent la mémoire conventionnelle ne reconnaissent pas les adresses qui identifient les emplacements de la mémoire étendue; ils ne reconnaissent que les adresses des 640 Koctets.
Les programmes ont besoin d’instructions spéciales pour accéder aux adresses de la mémoire étendue.
Pour utiliser la mémoire étendue, il faut utiliser le logiciel gestionnaire de mémoire HIMEM.SYS fourni à partir de la version 5.0 de MS-DOS.
La mémoire cache
Sur les machines à base de 386, il a été nécessaire de trouver un compromis entre un faible coût de la mémoire et une rapidité suffisante pour ne pas dégrader les performances du processeur. Pour cela il a été utilisé de la mémoire dynamique (peu coûteuse mais lente) pour la mémoire principale de quelques Mo et une mémoire statique (coûteuse mais rapide) appelée mémoire cache de quelques dizaines de Ko qui est disposé entre le processeur et la mémoire dynamique.
Toutes les informations accessibles par le processeur (code, données) résident en mémoire principale. Seules les informations susceptibles d’être utilisées à un instant donné sont présentes (dupliquées) dans le cache à ce moment. Le but est de faire « apparaître » l’ensemble de la mémoire comme ayant les performances de la mémoire cache.
La mise en oeuvre d’un cache est rendue possible, par le principe de localité qui peut être énoncé ainsi : lors de l’exécution d’un programme, tout accès à la mémoire est (presque) toujours effectué à une adresse précédemment accédée et sur des périodes courtes, les accès sont réalisés séquentiellement sur des blocs de taille limitée. Effectivement, dans un programme, le code est composé de boucles séquentielles et les données sont généralement structurées (blocs, tableaux,…).
Lors d’une lecture mémoire, si l’information réside dans le cache (cache hit), elle est accédée rapidement sans pénalisation. Dans le cas contraire (cache miss), l’accès est fait en RAM dynamique donc plus lentement. Dans ce dernier cas, au cours de la même opération, la donnée est mémorisée dans le cache en vue d’une utilisation ultérieure.
Quand le cache est « plein » et qu’il est nécessaire d’y stocker une nouvelle information, un remplacement doit être réalisé en fonction d’une stratégie donnée.
Bien entendu, le cache est un mécanisme purement matériel qui sera donc transparent pour le logiciel.
Pour les microprocesseurs Intel 80 386, un circuit électronique externe permet de gérer les échanges d’informations entre la mémoire RAM et la mémoire cache.
Les nouveaux processeurs Intel (i486 et Pentium) sont équipés en interne du contrôleur de mémoire cache et de 64 Ko. Ils permettent d’adresser jusqu’à 256 Ko de mémoire cache en externe.
La mémoire virtuelle
C’est un espace disque qui simule la mémoire centrale. Celle-ci étant insuffisante, on la prolonge sur le disque. Cette méthode offre l’avantage de disposer d’une mémoire centrale apparemment considérable mais présente l’inconvénient que des données s’échangent en permanence entre la mémoire centrale et le disque, d’où un fort ralentissement du fonctionnement des programmes.
Ce concept est appliqué par Windows lorsqu’on travaille en mode 386 étendu.
La commande MEM / C [/P] classe les programmes chargés en mémoire, selon leur localisation; cette commande affiche la taille de chaque programme, un résumé de l’occupation mémoire et la liste des blocs disponibles.
Cartographie mémoire d’un P.C.
Cartographie mémoire d’un XT 8086
N° de bloc |
Adresses |
Contenu |
15 |
F000:0000 – F000:FFFF |
ROM contenant le BIOS |
14 |
E000:0000 – E000:FFFF |
disponible pour ROM |
13 |
D000:0000 – D000:FFFF |
disponible pour ROM |
12 |
C000:0000 – C000:FFFF |
ROM BIOS supplémentaire |
11 |
B000:0000 – B000:FFFF |
RAM vidéo (mode texte ou graphique basse résolution) |
10 |
A000:0000 – A000:FFFF |
RAM vidéo supplémentaire (cartes EGA/VGA) |
9 |
9000:0000 – 9000:FFFF |
RAM de 576 Koctets à 640 Koctets |
8 |
8000:0000 – 8000:FFFF |
RAM de 512 Koctets à 576 Koctets |
7 |
7000:0000 – 7000:FFFF |
RAM de 448 Koctets à 512 Koctets |
6 |
6000:0000 – 6000:FFFF |
RAM de 384 Koctets à 448 Koctets |
5 |
5000:0000 – 5000:FFFF |
RAM de 320 Koctets à 384 Koctets |
4 |
4000:0000 – 4000:FFFF |
RAM de 256 Koctets à 320 Koctets |
3 |
3000:0000 – 3000:FFFF |
RAM de 192 Koctets à 256 Koctets |
2 |
2000:0000 – 2000:FFFF |
RAM de 128 Koctets à 192 Koctets |
1 |
1000:0000 – 1000:FFFF |
RAM de 64 Koctets à 128 Koctets |
0 |
0000:0000 – 0000:FFFF |
RAM de 0 Koctets à 64 Koctets, table de vecteurs de l’unité centrale, variables DOS et BIOS, noyau DOS |
Un 8086 peut gérer 1 Mo de mémoire; l’emplacement mémoire est subdivisé en 4 zones :
Une zone ROM de 64 Ko pour le logiciel de base BIOS, située entre F0000 et FFFFF quels que soient les modèles de P.C.,
Une zone RAM de 640 Ko, située entre 00000 et 9FFFF quels que soient les modèles de P.C.,
Une zone RAM de 128 Ko, située entre A0000 et BFFFF quels que soient les modèles de P.C., qui gère les données affichées sur l’écran vidéo et qui, suivant la complexité de l’image désirée, occupe effectivement de 4 Ko (en mode monochrome) à 128 Ko (en mode VGA couleur).
Les zones les plus utilisées sont de B0000 à B0FFF en texte monochrome, et de B8000 à BBFFF en couleur CGA,
Une zone disponible entre C0000 et EFFFF, qui peut contenir de la ROM supplémentaire permettant de gérer certains périphériques.
Cartographie mémoire d’un AT 80 286
N° de bloc |
Adresses |
Contenu |
21 |
15000:0000 – 15000:FFFF |
RAM étendue |
20 |
14000:0000 – 14000:FFFF |
RAM étendue |
19 |
13000:0000 – 13000:FFFF |
RAM étendue |
18 |
12000:0000 – 12000:FFFF |
RAM étendue |
17 |
11000:0000 – 11000:FFFF |
RAM étendue |
16 |
0F000:0000 – 10000:FFFF |
RAM étendue |
15 |
0F000:0000 – 0F000:FFFF |
ROM contenant le BIOS |
14 |
0E000:0000 – 0E000:FFFF |
disponible pour ROM |
13 |
0D000:0000 – 0D000:FFFF |
disponible pour ROM |
12 |
0C000:0000 – 0C000:FFFF |
ROM BIOS supplémentaire |
11 |
0B000:0000 – 0B000:FFFF |
RAM vidéo (mode texte ou graphique basse résolution) |
10 |
0A000:0000 – 0A000:FFFF |
RAM vidéo supplémentaire (cartes EGA/VGA) |
9 |
09000:0000 – 09000:FFFF |
RAM de 576 Koctets à 640 Koctets |
8 |
08000:0000 – 08000:FFFF |
RAM de 512 Koctets à 576 Koctets |
7 |
07000:0000 – 07000:FFFF |
RAM de 448 Koctets à 512 Koctets |
6 |
06000:0000 – 06000:FFFF |
RAM de 384 Koctets à 448 Koctets |
5 |
05000:0000 – 05000:FFFF |
RAM de 320 Koctets à 384 Koctets |
4 |
04000:0000 – 04000:FFFF |
RAM de 256 Koctets à 320 Koctets |
3 |
03000:0000 – 03000:FFFF |
RAM de 192 Koctets à 256 Koctets |
2 |
02000:0000 – 02000:FFFF |
RAM de 128 Koctets à 192 Koctets |
1 |
01000:0000 – 01000:FFFF |
RAM de 64 Koctets à 128 Koctets |
0 |
00000:0000 – 00000:FFFF |
RAM de 0 Koctets à 64 Koctets, table de vecteurs de l’unité centrale, variables DOS et BIOS, noyau DOS |
La cartographie mémoire de l’AT 80 286 est similaire à celle du XT pour le premier Méga octets. La zone située au-delà est appelée RAM étendue.
Cartographie mémoire des PC 386 et 486
Elle est similaire à celle du PC AT pour le premier Méga octet; seule la mémoire étendue peut atteindre des valeurs nettement plus élevées (jusqu’à 16 Mo).
ORGANISATION de la MEMOIRE
en FONCTION du PROCESSEUR