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

Suite N°1...

4.2 PAGINATION
                       Un livre, un lutrin et des photocopies.

La première pagination était dans l'Atlas, ordinateur de Ferranti et de l'université de Manchester en 1961.

Principe de la pagination.

Une page est un ensemble connexe d'emplacements de mémoire. Les pages ont toutes la même dimension. La mémoire est entièrement paginée ou ne l'est pas tout. La pagination réalise un pavage régulier de la mémoire réelle et de la mémoire virtuelle s'il y a lieu.

Les pages sont créées par une gestion particulière de l'espace d'adressage. Elles n'impliquent pas de modification des bancs de mémoire. Elles ont une réalité logique et non physique. La création de pages est faite en séparant les adresses en deux champs jointifs, l'un contenant les bits de poids fort, l'autre contenant les bits de poids faible. Cette manipulation induit la notion de page sous la forme :

La pagination est de même nature que l'adressage base plus déplacement. L'usage diffère en ce que base + déplacement est une notion interne à un programme et donc visible dans la programmation en assembleur alors que la pagination relève du système d'exploitation ou d'un câblage ad'hoc et n'est pas visible par le programmeur.
La pagination est une structure du support.

Ainsi, pour un adressage total sur 32 bits soit 4 Go (adresses linéaires), si le champ d'adresse basse est de 12 bits, la page a pour taille 4 Ko. Il reste 20 bits en partie haute qui induisent 1 M pages. La pagination est un jeu d'adressage, elle s'applique à la mémoire virtuelle.

Soit une adresse complète, figurant en position d'argument dans une instruction. Que peut-il se passer ?

Si la pagination n'existe pas, deux cas se présentent :

Si la pagination existe et est gérée, l'adresse est émise non pas vers le bus mais vers l'unité de gestion de pagination qui va en faire la transformation comme indiqué sur l'exemple ci-après.Exemple inspiré du circuit NS 32032 :

Le processeur National Semiconductor 32032 date de 1985, il avait une capacité d'adressage de 24 bits soit 16 Mo, il était le premier de la série 32000 qui se poursuit. Les informations qui suivent NE SONT PAS UNE DESCRIPTION COMPLÈTE NI CONFORME du NS32032, elles s'en inspirent. Il applique la pagination de façon dépouillée sans mélange avec une segmentation. Elle utilise trois champs jointifs et non deux.

L'espace adressable total est pavé de pages de 512 octets, accessibles en deux étapes, l'une d'indirection, l'autre d'indexation. L'adressage fait appel à trois champs d'adresse :

Dans ce fonctionnement, on opère uniformément que la mémoire adressable soit implantée ou non. Nous examinerons successivement les opérations de détermination ou traduction d'adresses puis la gestion de la mémoire virtuelle correspondante.Détermination de l'adresse.

L'opération se fait par deux sélections successives :
- sélection de la table des pages : contenu d'adresse A dans la table des tables;
- sélection de la page, contenu de l'entrée B de la table des pages.

Le schéma ci-dessous présente les cheminements qui, à partir de l'adresse interne à un programme, déterminent l'adresse effective en mémoire.

A est l'adresse de début de la table des tables. Elle a 256 entrées, chaque entrée de 24 bits est l'adresse d'implantation de la table qui peut ainsi être logée en un emplacement quelconque en mémoire. Cet accès fonctionne en indirection.

B est le numéro de la page à l'intérieur de la table des pages dont la table des tables a donné l'adresse de début. La table des pages a 128 entrées, chaque entrée a une longueur de 15 bits. Elle est considérée comme les 15 bits de plus fort poids d'une adresse, elle pointe l'une quelconque des pages de la mémoire.

C est l'adresse dans la page, c'est un déplacement à concaténer avec les 15 bits précédents pour obtenir une adresse sur 24 bits.

Si les 16 Mo sont câblés, le fonctionnement est direct.

Le lecteur remarquera les nombres suivants et leur pertinence :

La page a 512 octets, taille normale d'un secteur de disque en vue du stockage.

L'adresse dans la table + l'adresse dans la page a 16 bits, correspondant à 64 ko, c'est à dire la taille de la mémoire des processeurs à 8 bits précédant cette génération. Un segment des Intel 8086 avait 64ko au plus.

Gestion de la mémoire virtuelle.

Si les 16 Mo ne sont pas câblés, il faut gérer les pages indépendamment de leur localisation physique, mémoire centrale ou externe. La mémoire externe doit contenir pour cela une zone d'au plus 16 Mo, image de la mémoire centrale totale possible, nécessairement gérée par le système d'exploitation. Un indicateur associé à chaque entrée de la table des tables (a) dit si toutes les pages de la table correspondante sont ou ne sont pas en mémoire câblée. Un indicateur de même nature attaché à chaque entrée de la table des pages (b) dit si la page est ou n'est pas en mémoire câblée. La gestion des emplacements peut ainsi être faite soit par blocs de 64 ko présents ou absents dans leur totalité de la mémoire, soit par page. Le bloc n'est pas nécessairement d'un seul tenant. Chaque page est autonome pour ce qui est de sa position dans la mémoire centrale. Si la page adressée est en mémoire centrale, l'adressage se poursuit. Si elle ne l'est pas, le dispositif de transfert est activé. Il demande au système d'exploitation une adresse de page libre, écrit son adresse réelle dans la table des pages, lit la page en cause dans la mémoire externe, charge la page et met à jour les tables.

On a fait ici l'hypothèse que la page de la table (b) était chargée et donc son bit de présence valait 1.

Le lecteur curieux trouvera la description détaillée du NS32532, successeur actuel de la même famille dans http://www.national.com.

REMARQUONS que l'adresse physique est une CONCATÉNATION de deux adresses.

La pagination est une technique utilisée pour implanter par morceaux un grand espace linéaire d'adresses dans un espace câblé disponible plus petit. On a parfois estimé que la baisse du coût de la mémoire centrale rendrait ce dispositif inutile. Néanmoins, comme il est toujours moins coûteux d'ajouter un bit à un registre d'adresse que de câbler une mémoire de taille double, la pagination conserve un avenir.

L'exemple ci-dessus a une complexité intermédiaire, il contient un étage de plus que la description de base sous la forme de pages et d'une seule table des pages. La réalisation peut être encore plus complexe quand le système d'exploitation crée des machines virtuelles à la demande. Chacune aura alors son dispositif propre de mémoire virtuelle.Ces manipulations de pages sont le fonctionnement courant de la mémoire.
Le chargement d'un nouveau programme consiste à lui allouer des pages virtuelles et ensuite réelles en quantité suffisante.
La pagination gère l'espace de mémoire
considérée comme CONNEXE de 0 jusqu'à sa taille maximale utile.
Elle est INDÉPENDANTE des contenus.

Protocoles de remplacement des pages

Quand la page nécessaire n'est pas en mémoire centrale, on dit qu'il y a défaut de page (miss) comme pour le défaut de ligne dans un cache. Un emplacement doit être trouvé pour l'y loger. Si tous sont occupés, il faut choisir celui qui sera libéré. Plusieurs algorithmes existent. Avant leurs énoncés, remarquons que cette question est la même que celle que l'on a vue pour le remplacement des éléments logés dans un cache.

Il n'y a pas de différence par rapport à ce que nous avons vu pour les caches. Le choix du protocole obéira à des critères différents parceque la page est beaucoup plus grande que la ligne de cache et donc :

Les protocoles Toutes ces méthodes ont des avantages et des inconvénients. Elles nécessitent une information supplémentaire : un drapeau signifiant que la page a été ou non modifiée.Si, après son chargement, la page a été modifiée, page de données et parfois page de programme, son emplacement n'est pas simplement libéré, la page doit être sauvegardée dans la zone correspondante du support externe. Cette opération ne doit pas être confondue avec la mise à jour d'un fichier. Ce fonctionnement a été vu dans la gestion des caches.

Chacun des protocoles a qualités et défauts. Les qualités sont un fonctionnement convenable en situation courante. Les défauts apparaissent dans des cas particuliers :

De très nombreuses variantes ou adaptations ont été imaginées dont la prise en compte du drapeau de modification. On choisit de préférence une page non modifiée, plutôt qu'un page à récrire pour libérer un emplacement.
Toutes les mémoires sont des espaces.
Il est normal d'y utiliser les mêmes protocoles
pour y faire de la place quand il n'y en a plus.

Autre dispositif utile, la table en un coup d'œil

Ce dispositif est connu sous le nom de TLB ou TLAB, translation look-aside buffer. On considère que les pages les plus récemment utilisées le seront à nouveau (la notion de localité). C'est un cache pour la table des pages. On y enregistre les entrées de la table des pages utilisées récemment. Le petit nombre d'entrées rend possible la technique associative.

Des configurations usuelles sont :
Machine Date Nombre d'entrées Type
MIPS R10000 1996 64 associatif
PowerPC 601 1993 Données: 256
Instructions: 4
associatif à deux blocs
HP PA7100 1993 120  associatif


 

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