Conservatoire national des arts et métiers
Architectures des systèmes informatiques
CHAPITRE 4
Plus grand svp ! Organisation et gestion de la mémoire
Année 2002-2003

4.0 PRÉSENTATION ET CONTENU

Ce chapitre traite de la gestion de la mémoire dite centrale ou principale des machines à un seul processeur.
Les caches ont été examinés dans le chapitre 3; les disques le seront dans le chapitre 6.
On trouvera successivement :

l'organisation des mémoires;
la pagination;
la segmentation;
la mémoire virtuelle;
un exemple détaillé de la gestion de la mémoire dans des microprocesseurs successifs.

4.1 ORGANISATION

On distinguera dans la suite :

Ces considérations seront reprises et détaillées dans le chapitre 18.

4.1.1 Mémoire électronique

Structure élémentaire

Les puces sont organisées en bits ou en mots :

L'organisation de la mémoire par bits nécessite alors : L'ensemble de ces puces et des circuits de commande constitue un banc de mémoire organisé en mots associé au registre d'adresse. Un banc d'octets peut ainsi contenir plusieurs jeux de 8 ou 9 puces dont les adresses sont consécutives. L'existence de ces jeux de puces ne change pas le fait qu'il n'y a qu'un seul banc logique.L'organisation de niveau supérieur, si elle existe, consiste à juxtaposer des bancs selon trois techniques principales. Ces deux méthodes d'entrelacement de bancs peuvent être combinées en tableau. 4.1.2. Les mémoires externes (disques ou disquettes)Ce paragraphe est un résumé du chapitre 6 inséré ici pour aider la compréhension du mécanisme de mémoire virtuelle.

Les mémoires externes ont pour unité d'accès physique le cylindre et la tête de lecture et écriture, soit une capacité élémentaire considérablement plus grande que l'octet. Le motif en est simple : il n'existe pas de moyen de repérer matériellement (comme par un adressage) des octets ou des mots sur une piste. Ceci n'a pas toujours été vrai, il a existé des disquettes sectorisées par trous avec 10 secteurs par piste.

La première solution consisterait à considérer une piste comme une unité élémentaire. Les tampons ou caches à la fois du contrôleur et dans la mémoire centrale sont réalisables à cette taille aujourd'hui. Ce n'était pas le cas il y a quelques années encore, à cause du prix de la mémoire. De plus cette organisation rend inutilisable la totalité d'une piste pour une seule erreur détectée.

Il est donc d'usage de faire un découpage logique de la piste en «secteurs». Il faut alors accompagner l'information d'un repérage. Une organisation en secteurs égaux à des mots nécessiterait des repères plus longs que le mot lui-même, la consommation d'espace serait jugée insupportable. Il y a donc nécessité de découper la piste en unités de taille intermédiaire. La taille utilisée pour un secteur est alors un compromis entre trois valeurs :

Si un cylindre et une tête correspondaient à un seul secteur, celui-ci serait à accès direct et sa gestion relèverait de techniques de bus externes comparables à celles des octets ou des mots. L'usage  en  veut autrement (bien que les capacités de mémoire centrale autorisent aujourd'hui cette pratique). Cette organisation se trouvera homologue de la pagination.La mémoire externe est qualifiée de «type bloc». Les organisations et les méthodes d'accès élémentaires à ces blocs ont des variantes comparables à celles des mémoires centrales : Au dessus de ces organisations de premier niveau, on utilise un «système de fichiers». Il s'agit d'une organisation qui prend en compte les contenus. On la trouvera homologue de la segmentation.On se reportera au chapitre 6 pour une présentation détaillée des disques, de leur structuration, des systèmes de fichiers, de leurs bus d'accès et l'organisation des disques avec redondance.

4.1.3. Gestion des mémoires

Nous considérons dans ce paragraphe la mémoire totale répartie en mémoire centrale et supports périphériques ou externes; le cas de l'antémémoire ou mémoire cache a déjà été vu.

La capacité d'adressage de la mémoire est déterminée par la longueur des quelques registres susceptibles de contenir les adresses. Mais il est toujours moins coûteux d'ajouter un bit à chacun que de doubler l'espace physique de mémoire centrale (compte tenu également du faible coût et de l'amovibilité des supports externes).

Pour être exécuté un programme doit résider en mémoire centrale, au moins pour la partie en cause à chaque instant. Comme la taille des programmes et des données associées n'a pas de limite assignable, on voudra toujours y exécuter des programmes qui n'y tiennent pas en totalité.

Perspective historique

Les tailles actuelles de mémoire sont impressionnantes si l'on se souvient que le grand calculateur scientifique IBM650 des années 50 avait 2000 mots de mémoire et que le DEC PDP8 avait un système en temps partagé dans une mémoire de 16 kmots. Le premier mini-ordinateur installé au CNAM, un Modular One acheté en 1971 eut 16 puis 24 kmots de 16 bits. Il fonctionnait en multiprogrammation interactive avec huit consoles télétypes pour les utilisateurs.

En ces temps, il était de la responsabilité de l'utilisateur d'écrire ses programmes de telle sorte qu'ils s'exécutent dans la mémoire disponible. Celle-ci était bien sûr toujours trop petite. Le programmeur utilisait la seule technique alors possible, dite du recouvrement (overlay). Pour cela il rédigeait son programme par morceaux autosuffisants qu'il faisait se succéder en mémoire pour exécution. L'idée est apparue en 1961 à l'université de Manchester que ces recouvrements pourraient être décidés par le système d'exploitation et non plus laissés à l'initiative du programmeur. De là est née ce que l'on nomme aujourd'hui la gestion de mémoire virtuelle.

Situation actuelle

Il est devenu habituel parce qu'économiquement rentable, de loger en mémoire plusieurs tâches ou programmes dans des modes de fonctionnement divers: multiprogrammation, multitâche ou multi-utilisateur. Chacune de ces tâches est exécutée tour à tour selon des règles d'alternance multiples. Dans ces conditions, l'adresse où sera logé un programme lors de son exécution n'est pas fixée.

Des tâches ou des données peuvent être d'usage commun, comme le sont notamment des parties du système d'exploitation, il faut donc régler les formes de coopération entre tâches et les questions de synchronisation qui en découlent.

Le même espace total de mémoire centrale se trouve ainsi partagé entre :

.des parties du système d'exploitation;
.des tâches et des données relatives à chacune d'elles;
.des processus utilisateurs complets ou partiels;

en sorte que l'on est contraint de gérer son allocation par morceaux, d'installer des protections réciproques et d'autoriser ou interdire explicitement les interactions entre les tâches ou les données.

Les méthodes les plus simples de gestion de la mémoire ont trait aux programmes eux-mêmes sous les formes d'éditions de liens après compilation et de chargement en mémoire pour exécution. Il s'agit principalement ici des translations d'adresses fixes ou dynamiques. C'est là qu'apparaît pour la première fois la distinction entre adresse logique et adresse physique.

4.1.4 Quelques problèmes à résoudre

Cette liste n'est pas exhaustive, elle contient des énoncés, spécifiques ou non, des questions évoquées ci-dessus :

4.1.5 Adresses virtuelles, logiques et physiques, mémoire réelle, virtuelleLa séparation claire entre ces trois sortes d'adresses est nécessaire à la compréhension des formes élaborées de gestion de la mémoire.

UNE ADRESSE PHYSIQUE est TOUJOURS une adresse de la mémoire câblée. Pour un item, c'est le numéro de la position à laquelle il se trouve, dans un banc de mémoire nécessairement présent, cette adresse apparaît sur le bus, elle est décodée lors des accès en lecture ou écriture dans le banc de mémoire. C'est donc l'adresse qui figure dans le registre d'adresse, dernier étage de l'unité de gestion de la mémoire qui alimente le bus. L'expression MÉMOIRE RÉELLE est réservée à la mémoire centrale effectivement installée, hors caches.

L'ADRESSE LINÉAIRE est une adresse qui fait référence à la capacité d'adressage du processeur, indépendamment de la mémoire centrale effectivement installée. Par exemple, si le registre d'adresse a 32 bits, l'adresse linéaire va de 0 à 4 Go, si 32 Mo sont implantés à partit de 0, l'adresse physique est limitée à 32 Mo. Il lui correspond une mémoire potentiellement adressable, câblée ou non câblée.

L'ADRESSE LOGIQUE est celle d'un item repéré par rapport au début du programme ou d'une zone de données. On donne au premier item l'adresse conventionnelle 0. Cette adresse logique est également celle qui est manipulée par l'unité centrale en tant qu'argument fourni par le programme. L'espace d'adressage ou espace des adresses logiques est l'ensemble des adresses logiques construites par l'exécution d'un programme. Réciproquement l'ensemble des adresses obtenues après conversion dans le registre d'adresse de mémoire est l'espace des adresses physiques.

L'expression MÉMOIRE VIRTUELLE a pour première acception (on verra l'autre plus loin) la mémoire adressable, celle qui correspond aux adresses linéaires. C'est la mémoire qui pourrait être atteinte, eu égard à la capacité physique de la machine. C'est la capacité induite par le registre d'adresses de mémoire. Le bus d'adresse peut être plus court. Cette mémoire virtuelle est celle qui correspond à la capacité d'adressage du processeur.

Si les adresses ont 20 bits, la mémoire virtuelle est de 1 Méga,
Si les adresses ont 32 bits, la mémoire virtuelle est de 4 Giga.

Si des dispositifs supplémentaires de concaténation de parties d'adresses sont installés, il s'agit de la capacité totale atteignable en théorie, par exemple 64 Téraoctets pour un Motorola 68020 ou un Intel 386.

L'ADRESSE VIRTUELLE existe si un dispositif de gestion de la mémoire virtuelle est installé. Sauf restrictions imposées par ce dispositif les adresses virtuelles sont les adresses linéaires du processeur. Pour un item, c'est sa position en mémoire virtuelle. Souvent, c'est celle d'un item de programme relatif à la mémoire virtuelle.

LA TRANSLATION DES ADRESSES

Lors du chargement du programme en mémoire centrale deux situations peuvent se présenter.

Un schéma simple de translation réalisée par une UGM est concrétisé par un registre de translation :L'avantage de telles pratiques est que, au prix d'un calcul additif réalisé au vol, en général câblé et donc rapide, le système pourra gérer l'espace de mémoire au mieux des besoins du moment.Les processeurs Intel de la série 80X86 ont 4 registres de ce type. Ce fonctionnement est intermédiaire entre l'adressage par base+déplacement et l'adressage indexé.

NOTE : Des programmes à adresses absolues peuvent néanmoins exister, comme les tâches de chargement initial, exécutées alors que la mémoire est encore vide. Il peut y avoir des données à adresses fixes comme la table des interruptions.

Les programmes à adresses logiques sont le cas le plus fréquent puisque moyennant la valeur de translation logique à physique, les translations seront faisables.Caractéristiques usuelles typiques des niveaux de mémoire.
NIVEAU
1
2
3
4
TYPE
TAILLE
TEMPS D'ACCÈS (ns)
BANDE PASSANTE (Mo/s)
PILOTE
REGISTRES
< 1Ko
10
800
compilateur
CACHE
<100 Ko
20
200
matériel
MÉMOIRE
<1 Go
100
100
matériel + système
DISQUE
>1 Go
10000000
10
système

La transformation des adresses est faite dans l'unité de gestion ad'hoc pour transformer les adresses virtuelles en adresses physiques.
 

4.1.6 Les moyens

La gestion de la mémoire et même la gestion des mémoires est une FONCTION GLOBALE de l'ensemble formé par :

Exemples tirés de matériels usuels :Sur un même compatible AT 386 ou suivant, une mémoire centrale installée de 4 Mo ou plus n'est pas gérée par MSDOS qui adresse au plus 640 Ko. Elle est utilisée mais non gérée par des utilitaires intégrés dans certains logiciels, comme le gestionnaire de mémoire Lotus Intel Microsoft par exemple. Elle est gérée par le produit standard Windows, bien que le système d'exploitation reste MSDOS pour Windows 3.1 et Windows 95. Par contre si Xenix ou Windows NT est installé, la mémoire est gérée sans artifice supplémentaire.

Il n'est pas simple de faire la part de chacun de ces moyens et d'isoler ce qui relève de la notion d'architecture. Ce qui suit empiétera ou débordera nécessairement sur des domaines voisins.

NOTE : Nous nous intéressons aux moyens architecturaux, à l'exclusion des moyens purement logiciels spécifiques des systèmes d'exploitation. Nous n'examinons pas les questions relatives à la multiprogrammation par exemple. Toutefois la limite entre moyens logiciels et moyens architecturaux n'est pas figée. Selon les processeurs, une même méthode utilisera plus ou moins de chacun. Ces moyens doivent être propres à résoudre les problèmes posés ci-dessus.

LA SUCCESSION DES MOYENS ET MATÉRIELS ASSOCIES

Des questions diverses se posent alors, qui relèvent des systèmes d'exploitation : définition de la taille des partitions, allocation des partitions, récupération dynamique des espaces libres, mise en place de procédures d'échanges totaux ou partiels (swapping), etc.Les moyens actuels proprement architecturaux sont connus sous les deux noms de PAGINATION et SEGMENTATION. Ils opèrent sur des entités distinctes. Ces deux techniques peuvent être mises en place seules ou ensemble.Un circuit ou un ensemble de circuits consacré à leur implantation est nommé unité de gestion de mémoire ou UGM (en anglo-saxon Memory Management Unit ou MMU). On décrit leurs principes de réalisation sur deux exemples dans le § 4.5 ci-après.
La PAGINATION découpe la mémoire qui est un CONTENANT.

La SEGMENTATION découpe les programmes qui sont un CONTENU.

Questionnaire

Conservatoire national des arts et métiers
Architectures des systèmes informatiques
CHAPITRE 4
Plus grand svp ! Organisation et gestion de la mémoire
Année 2002-2003