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
:
-
la structure élémentaire;
-
une structure englobante;
-
des techniques d'organisation et
leurs moyens de gestion.
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 :
-
dans l'organisation par mots, cas
général des mémoires mortes, la puce contient des
mots;
-
dans l'organisation par bits, cas
général des mémoires RAM, la puce contient des bits.
L'organisation de la mémoire
par bits nécessite alors :
-
la mise en place de N puces (8,
16, 32 ou plus), et en sus ce qui est nécessaire si l'on installe
un contrôle de validité;
-
le câblage en parallèle
de ces puces de telle sorte que la même adresse fournie à
chacune provoque le mouvement du bit correspondant en entrée ou
en sortie.
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.
-
Adressage concurrent
(concurrent adress). À chaque banc est associé un registre
de données, le registre d'adresse est commun à tous les bancs.
En un seul cycle, la fourniture de l'adresse en vue d'une lecture provoque
la lecture simultanée des bancs de mémoire qui envoient chacun
leur mot correspondant dans un registre de taille suffisante pour les contenir
tous. Ce sera au processus exploitant de lire et exploiter ces contenus.
On lit et écrit ainsi N mots dans N bancs en un cycle. Ce procédé
est utilisé par les processeurs spéciaux de gestion de tableaux.
-
Adressage «simultané»
(simultaneous adress). Chaque banc possède son registre d'adresse
propre. Le choix entre les bancs est fait par des bits de poids fort de
l'adresse complète. Il est alors possible de donner plusieurs adresses
en un temps très court. Les bancs fourniront les contenus successivement
sur le bus sans attente entre eux.
Ces deux méthodes d'entrelacement
de bancs peuvent être combinées en tableau.
-
Adressage en rafale
(burst). Au prix d'une logique d'accès supplémentaire, la
demande de lecture est faite sous la forme de l'adresse et du nombre d'octets
ou de mots. Le contrôleur de la mémoire incrémente
lui-même les adresses dans la limite de la borne fournie sans autre
demande du processeur. Les extractions sont accélérées
par l'économie de présentation des adresses autre que la
première sur le bus.
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 :
-
la taille du secteur;
-
la taille de son repère,
nommé en-tête;
-
la taille du tampon en mémoire
centrale qui le recevra.
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 :
-
entrelacement, les secteurs logiques
successifs sont physiquement disjoints pour que la lecture et l'écriture,
techniquement possible en un tour du support, corresponde au débit
maximum de données;
-
accès avec tampons, en un
ou plusieurs tours du support, tous les secteurs sous une même tête
sont lus et stockés en dans une mémoire tampon ou cache.
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 :
-
allocation de l'espace de mémoire
centrale à une tâche et pourquoi pas aux différentes
composantes d'une même tâche en présence d'autres tâches;
-
protection réciproque de
ces tâches en termes d'autorisations et interdictions d'accès
à des sous ensembles de la mémoire;
-
fourniture d'espaces communs tels
que ceux des bibliothèques de sous-programmes;
-
découpage d'une tâche
en morceaux de taille compatible avec l'espace disponible en mémoire
centrale;
-
translation des adresses de référence
à la mémoire d'un programme lors de son implantation partielle
ou totale en mémoire centrale à une adresse connue au chargement
seulement.
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.
-
Le programme ne contient que des
adresses physiques et son adresse de début est la même que
celle où son premier mot est implanté. Le programme est alors
directement exécutable si bien sur son emplacement est libre.
-
Si ce n'est pas le cas, il faut
faire une TRANSLATION des adresses logiques en adresses physiques. Cette
translation peut être faite en une fois lors du chargement du programme
si celui-ci tient entier dans la mémoire qui lui est allouée,
sinon elle le sera à chaque accès à la mémoire.
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 :
-
le matériel support de mémoire
mis en place;
-
les moyens architecturaux, câblés
ou micro programmés;
-
les moyens logiciels relevant du
système d'exploitation actif;
-
de moyens additionnels existant
parfois sous la forme de programmes dits utilitaires.
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
-
Situation initiale. La machine
n'a aucun matériel spécifique. Un seul utilisateur avec un
seul programme est possible puisque deux programmes seraient sans protection
réciproque. L'exécution est la plus rapide pourvu que la
translation des adresses ait été faite au chargement. Les
microprocesseurs à 8 bits et leurs systèmes comme CPM80 fonctionnaient
ainsi.
-
Séparation avec un seul
registre. Un registre unique est utilisé à chaque calcul
d'adresse. Il contient une adresse limite qui sépare l'espace de
mémoire en deux parties. Chaque adresse calculée du processus
utilisateur est comparée au contenu du registre. Si elle est du
bon côté, le processus continue, sinon il est arrêté.
La comparaison, même câblée, prend du temps.
-
Registre de base. La solution
précédente de protection entre une zone de l'utilisateur
et une zone du système aboutit à une consommation de temps.
Autant l'utiliser pour faire au vol la translation des adresses. Chaque
adresse calculée est ajoutée au contenu du registre de base.
Des exceptions doivent être gérées, notamment l'adressage
relatif au compteur ordinal.
-
Séparation avec deux registres
ou un registre de base et un registre de séparation. Les techniques
précédentes n'autorisaient les protections qu'entre un processus
et le système d'exploitation. Au prix d'une comparaison supplémentaire
nécessitant un deuxième registre on peut limiter la capacité
d'adressage du processus en adresses hautes et en adresses basses. Le deuxième
registre contient soit la deuxième limite du processus, soit la
taille autorisée, ce qui est plus opportun. Les deux comparaisons
comme l'addition au registre de base peuvent être faites simultanément.
La voie de la multiprogrammation est ouverte.
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.
-
La pagination
est un découpage de l'espace physique
de la mémoire virtuelle et de la mémoire réelle qu'elle
contient, induite par la capacité d'adressage, indépendamment
de la mémoire effectivement câblée. Elle est issue
de l'imagination d'un groupe d'universitaires de Manchester lors de la
conception de l'Atlas de Ferranti en 1960-61. Leur idée directrice
était de séparer les deux notions d'espace d'adressage et
d'emplacement en mémoire. À ce titre, la pagination est une
structure de support de troisième niveau (cf. annexe asi1801).
Les correspondants sont : le bloc dans un cache, le secteur ou le granule
sur un disque, la trame sur un réseau.
-
La segmentation
est un découpage des tâches
ou programmes, elle est issue des travaux relatifs au système d'exploitation
MULTICS
dans les années 1964-65.
ATTENTION : la segmentation peut induire elle aussi une mémoire
virtuelle. Ce point sera examiné plus loin. À ce titre,
la segmentation est une structure de contenu de troisième niveau
(cf. annexe asi0012).
Le correspondant est le fichier sur disque, le message ou le fichier transmis
sur un réseau.
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

