Ce chapitre traite de la gestion de la mémoire dite centrale ou principale des machines à un seul processeur. On trouvera successivement : l'organisation de la mémoire la mémoire la pagination la mémoire virtuelle ORGANISATION On distinguera dans la suite : · La structure élémentaire. · Une structure englobante, · Des techniques d'organisation et leurs moyens de gestion.
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 plus si on installe un contrôle de validité, · Le câblage en paralléle de ces puces. L'ensemble de ces puces et des circuits de commande constitue un banc de mémoire organisé en mots associé au registre d'adresse. 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). A 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. · 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. Les bancs fourniront les contenus successivement sur le bus sans attente entre eux. · 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.
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; pas de caches (Cf chapitre précédent). 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 Premiers ordinateurs avaient une mémoire centrale restreinte en taille, Prog. par « recouvrement » (Overlay). Situation actuelle On loge en mémoire plusieurs « tâches » 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. 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
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é. · si ce n'est pas le cas, il faut faire une TRANSLATION des adresses logiques en adresses physiques. Un schéma simple de translation réalisée par une UGM est concrétisé par un registre de translation : Les processeurs Intel de la série 80X86 ont 4 registres de ce type
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". 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. L'idée directrice est de séparer les deux notions d'espace d'adressage et d'emplacement en mémoire. · La segmentation est un découpage des tâches ou programmes. La PAGINATION découpe la mémoire qui est un CONTENANT. La SEGMENTATION découpe les programmes qui sont un CONTENU
PAGINATION La pagination est apparue en 1961 dans l'Atlas, ordinateur de Ferranti, con₤u en grande partie par l'université de Manchester. 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 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 : · de l'adresse basse, bits de poids faible, dite adresse dans la page, · de l'adresse haute, bits de poids fort, dite numéro de page. La pagination est une structure du support
Soit une adresse compléte, figurant en position d'argument dans une instruction. Si la pagination n'existe pas, deux cas se présentent : · ou bien le mot d'adresse spécifiée existe réellement en mémoire centrale et l'accés sera fait à partir du bus, · ou bien il y a défaut de mémoire car ce mot n'y existe pas. L'accés est alors au mieux refusé explicitement (défaut de mémoire), au pire est ignoré, entraînant alors une exécution erronée du programme. 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. Exemple inspiré du circuit NS 32032 : 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 : · l'adresse dans la page de 512 octets par le champ C de 9 bits, poids faibles, · l'adresse de la page, à prendre dans une table à 128 entrées, sélectionnée par le champ B de 7 bits, poids moyens, · l'adresse de la table de pages, à prendre dans une table des tables à 256 entrées, sélectionnée par le champ A de 8 bits, poids forts.
Si les 16 Mo sont câblés
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. 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.
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. 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 : · la demande est donc moins fréquente, · plus de temps peut ₨tre consacré à exécuter un algorithme Les protocoles · Remplacement aléatoire, il consiste à choisir au hasard la page à éliminer. Il n'est envisageable que si le nombre de pages en mémoire est grand. · Premier entré premier sorti FIFO, il consiste à choisir la page la plus anciennement chargée. Il faut que l'heure de chargement de la page soit conservée. Ce protocole est simple à concevoir. On s'aper₤oit vite que nombre de pages ont été chargées il y a longtemps car elles sont d'utilisation permanente comme les pages du systéme ou la page de menu principal d'une application.
La page la moins récemment utilisée LRU (least recently used), il consiste à choisir la page qui n'a pas été utilisée depuis le plus longtemps. On ne conserve pas l'heure de chargement mais l'heure de chaque utilisation. Il est indispensable d'avoir un circuit spécialisé pour entretenir la liste des heures associées aux numéros de pages ou encore la liste des pages accompagnées de leur heure. La page la moins fréquemment utilisée LFU(least frequently used), la méthode est voisine de la précédente à part le fait que l'on compte le nombre d'accés au lieu de changer une heure à chaque accés. La page qui n'a pas été récemment utilisée NRU (not recently used), la marque associée à chaque page est plus courte, un seul bit ici. Quand une page est chargée, ce bit est mis à zéro, il ne repassera à un que lors d'un accés nouveau. La recherche de la page à éliminer se raméne à l'une des pages dont le bit est à zéro. Ce systéme, dans son principe, supprime l'inégalité due à l'heure d'utilisation. 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.
En FIFO, les défauts apparaissent quand le couple programme-données utilise effectivement un espace grand par rapport à la mémoire réelle. En LRU, les défauts apparaissent quand le couple programme-données contient soit des boucles de programmes soit des tables de données de grande dimension. En LFU, une page qui a été beaucoup utilisée, par exemple pour une boucle, va rester en mémoire longtemps aprés la fin de la boucle. En NRU, une page dont l'utilisation est quasi périodique à fréquence faible sera presque toujours éliminée. La mémoire est toujours un espace. Il est normal d'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. Utilisée dans les PowerPC 601 (1993) et autres
SEGMENTATION La segmentation est apparue pour la premiére fois en 1965. Principe de la segmentation. Déjà Howard Aiken avait imaginé que 2 mémoires centrales distinctes, l'une pour les programmes, l'autre pour les données serait plus efficace qu'une seule. Si deux mémoires sont utiles, qu'en serait-il de plusieurs ou m₨me d'autant que l'on peut souhaiter ? Mais de quelle mémoire s'agit-il ? Aprés les réalisations à base de registre de base, on a constaté que : · Un programme est une chose, sa pile d'exécution une autre, et ses données en sont une troisiéme. Pourrait-on charger le programme, sa pile, ses données etc. dans des entités repérées par le systéme au lieu de laisser le programmeur gérer lui-m₨me l'espace qui lui est alloué ? · Les compilateurs gérent des volumes séparables par leurs contenus : le texte source, une ou plusieurs tables de symboles, les constantes, la pile des appels de procédures etc., autant de volumes que l'on ne doit pas mélanger. · Des programmes différents peuvent cohabiter en mémoire, on voudrait gérer séparément leurs espaces d'implantation en considérant pour des raisons de facilité et d'homogénéité que chacun est dans une mémoire qui commence à zéro
On voudrait donc que la mémoire de von Neumann unique contienne autant de zones commen₤ant par convention chacune à l'adresse 0. Pour cela, il suffira de repérer chaque zone par son adresse de début logée dans un registre spécialisé à fonction d'index. Les entités logées dans ces zones seront repérées par un déplacement à appliquer à partir de l'adresse de début. Ces entités sont nommées segments. Des moyens doivent rendre leur gestion uniforme et, pourquoi pas, apporter des ressources nouvelles telles que leur partage sélectif entre plusieurs processus tout en donnant à chacun des droits différents. Le programmeur et le systéme d'exploitation se référeront alors à des procédures uniformes dans toutes ses actions. Les moyens de cette gestion sont à la fois du câblage et du systéme d'exploitation. On créera une table de segments ou encore un jeu de tables de segments, autant qu'il y a de processus chargés ou pouvant l'₨tre sous le systéme. Ensuite, on vérifiera les adresses calculées par le filtre du registre de segment ou descripteur de segment, qui contiendra obligatoirement son adresse de début comme base.
Le numéro de segment occupe 6 bits. La taille maximale d'un segment étant de 64 K, le déplacement, adresse dans le segment a 16 bits. Les tailles de segments allant par incréments de 256 octets, l'adresse de début d'un segment sur 24 bits a ses 8 bits de poids faibles à zéro. Les huit bits de poids fort du déplacement sont ajoutés aux bits 8 à 15 de l'adresse de début de segment.
L'UGM re₤oit du Z8001, processeur du systéme Z8000, le n° de segment et le déplacement. Le n° de segment sélectionne un des 64 registres descripteurs qui contiennent les adresses et huit indicateurs : Ces attributs contiennent les renseignements suivants: RED écriture autorisée ou interdite, SYS attribution au systéme ou a un processus utilisateur, CPUI inhibition de l'UC pour des données non exécutables, EXC code exécutable uniquement, DMAI inhibition ou non du canal d'accés direct à la mémoire, DIRW segment déjà recopié, CHG segment modifié par écriture, REF segment présent ou absent dans la mémoire. La segmentation gére les contenus de l'espace de mémoire selon leur nature et chacun dans un espace de mémoire CONNEXE commen₤ant à 0
Protocoles d'allocation Les protocoles d'allocation de mémoire pour la segmentation seule. La présence quasi universelle de la pagination qui prend en charge cette allocation les a rendus inutiles. L'allocation d'un espace libre peut ₨tre faite selon trois procédures : · le premier ajustement (first fit), on prend le premier bloc, premier dans le parcours des disponibilités, suffisant pour contenir le segment dans la liste des emplacements libres, cette stratégie a été reconnue comme la meilleure par de nombreuses simulations, · le meilleur ajustement (best fit), on cherche l'emplacement disponible le plus petit qui puisse contenir le segment, · le pire ajustement (worst fit), on prend systématiquement le plus grand emplacement libre, on en réserve la quantité nécessaire et le reste est remis comme emplacement libre dans la liste. La libération d'un espace rendu inutilisé par la fin d'activité du processus est fait par la suppression d'une ligne dans la table. Note : la présence d'un ramasse miettes est indispensable pour déplacer les blocs occupés et rendre les blocs libres plus grands.
AVANTAGES, INCONVÉNIENTS Le premier aspect intéressant de la pagination est la possibilité pour le systéme de changer l'emplacement physique des pages, m₨me en cours d'exécution du processus. Ceci est fait par la simple mise à jour des tables, laissant bien sûr inchangée l'adresse inscrite dans le programme. Les avantages de la segmentation tiennent d'abord au groupement des informations en sous ensembles cohérents : programme, données, pile, entrées et sorties. Ils tiennent ensuite dans les formes normales de segmentation, que chaque segment est pour l'occupant un espace d'adressage commen₤ant à zéro. L'inconvénient de la segmentation seule est la fragmentation progressive de l'espace de mémoire. En effet les segments de tailles trés variables restitués en fin d'exécution par les processus qui les occupaient deviennent des trous et ne sont pas toujours réutilisables par d'autres processus. Il faut donc que le systéme contienne une tâche de compactage ou ramasse miettes, qui sera lancée sur un critére à définir et sera coûteuse en temps d'exécution. Un inconvénient de la pagination pure est de loger dans la m₨me page des items totalement différents comme une partie du programme et un morceau de pile. On peut m₨me voir une instruction à cheval sur deux pages. Comme de plus une référence à la mémoire n'est jamais assurée de trouver la page correspondante chargée, la pagination seule peut provoquer des baisses de performances par remplacements incessants de pages
Les paramétres courants Un premier bit: présence indique la présence ou l'absence de la page en mémoire. Il y en a un par entrée de la table des pages. Il est mis à jour par le systéme et utilisé par le câblage pour déterminer s'il y a lieu de charger ou non la page. Un deuxiéme bit: modifiée, est attaché à chaque entrée, pour signifier si la page a été modifiée ou non. Il sert à indiquer au systéme la liste des pages non modifiées qui n'ont pas à ₨tre réécrites sur disque. Un troisiéme bit: accédé indique au systéme si la page a fait l'objet d'un accés dans un intervalle de temps fixé au préalable. Il est périodiquement mis à 0 pour cela. Observations sur la taille des pages Dans un systéme paginé, la taille des pages peut avoir été choisie par le concepteur du matériel, mais elle peut aussi ₨tre un paramétre libre du systéme d'exploitation. Les tailles les plus courantes sont de 512 octets à 4 ko.
LA MÉMOIRE VIRTUELLE La mémoire virtuelle (MV) est un mécanisme de gestion de mémoire. Ce mécanisme est constitué de deux parties : · un dispositif câblé de base qui est soit une pagination, soit une segmentation, soit les deux simultanément, · des programmes de gestion inclus dans le systéme d'exploitation. C'est au titre de la premiére partie que la MV nous intéresse. Le pourquoi: Pourquoi installer une mémoire virtuelle? · Le premier motif est de bénéficier de la totalité de la mémoire adressable. Ainsi, on peut exécuter des programmes trop grands pour la mémoire physique disponible. La technique de la mémoire virtuelle automatise les recouvrements (overlay). · Simultanément, elle donne un bon moyen de faire du multi-tâches, du multi utilisateurs et plus encore. Par les moyens mis en œuvre pour elle, pagination, segmentation ou les deux, on : · partage la mémoire physique entre plusieurs processus, · unifie la fa₤on dont la mémoire est vue par les processus, · protége les zones de chaque processus les unes par rapport aux autres, de prendre en charge le relogement des programmes.
la mémoire câblée que l'on continue à nommer centrale est son cache Ce que c'est Les mémoires virtuelles utilisent la mémoire centrale comme un cache. La mémoire centrale est le cache d'une mémoire beaucoup plus vaste logée sur le disque. Un motif essentiel à cela, la capacité du disque est considérablement plus grande que celle de la mémoire centrale. Une partie du disque, visible par le systéme de fichiers comme un fichier, est gérée intérieurement par le systéme d'exploitation comme s'il s'agissait de la mémoire centrale. Seules les parties immédiatement indispensables à l'exécution par le processeur sont placées en mémoire centrale. La mémoire centrale est alors le cache de cette mémoire virtuelle . Faire un DIR en mode DOS sous W9x, regarder la taille du fichier win386.swp sous win9x avant aprés avoir enlever un programme résidant en mémoire. La mémoire virtuelle EST la mémoire principale la mémoire câblée que l'on continue à nommer centrale est son cache Caractéristiques usuelles de la mémoire virtuelle. Paramétre Valeur(s) Taille du bloc 4 ko à 64 ko Temps d'accés à la mémoire câblée en cas de réussite 40 à 100 cycles d'horloge Coût de l'échec en mémoire câblée : 700 000 à 6 000 000 de cycles en temps d'accés 350 000 à 4 000 000 de cycles en temps de transfert 350 000 à 2 000 000 de cycles Taux d'échec variable selon la taille de la mémoire câblée 0,00001% à 0,001%et le nombre de logiciels lancés.
Pourquoi ne pas installer une mémoire virtuelle. Il y a deux exceptions notables à l'utilisation générale de la mémoire virtuelle. Ce sont les machines utilisées pour le temps réel et les trés grands ordinateurs scientifiques Cray. · Le travail en temps réel s'accommode mal des incertitudes attachées aux accés aux disques. · Cray Research considére que le temps consommé en cas d'échec (ci-dessus) est trop grand. Le comment Mémoire virtuelle par pagination La mémoire est paginée. On veille à ce que la taille de la page soit en quelque fa₤on compatible avec la taille des unités du disque : secteurs et granules. Mémoire virtuelle par segmentation La mémoire est segmentée. Chaque segment a un descripteur, Chaque processus peut avoir plusieurs segments construits par la compilation. La segmentation fonctionne à l'ordinaire. Mémoire virtuelle mixte La limite imposée à la longueur des segments dans la mémoire virtuelle segmentée disparaît.
Alpha 21064 Possibilité d'indexer 32768 Go!!!, le cablage limte à 16 Go