La mémoire. B. Dupouy SIP 2002-2003



Documents pareils
Gestion de la mémoire

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Partie 7 : Gestion de la mémoire

GESTION DE LA MEMOIRE

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

Architecture des ordinateurs

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

Structure fonctionnelle d un SGBD

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Conventions d écriture et outils de mise au point

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Généralités sur le Langage Java et éléments syntaxiques.

SGM. Master S.T.S. mention informatique, première année. Isabelle Puaut. Septembre Université de Rennes I - IRISA

Systemes d'exploitation des ordinateurs

La mémoire. Un ordinateur. L'octet. Le bit

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chapitre 2. Classes et objets

LA mémoire principale est le lieu où se trouvent les programmes et les

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

A -Systèmes de fichiers 1 - FAT vs NTFS

Programmation C. Apprendre à développer des programmes simples dans le langage C

Logiciel de base. Première année ENSIMAG

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Cours Informatique 1. Monsieur SADOUNI Salheddine

UE Programmation Impérative Licence 2ème Année

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Chapitre 4 : Les mémoires

Conception de circuits numériques et architecture des ordinateurs

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

1. Systèmes d entrée/sortie 2. Systèmes de fichiers 3. Structure de mémoire de masse (disques)

Cours d initiation à la programmation en C++ Johann Cuenin

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

La technologie Java Card TM

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

LE DISQUE DUR : IDE (Integrated Device Electronique) : La nouvelle référence.

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Informatique Générale

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Initiation. àl algorithmique et à la programmation. en C

Architecture des ordinateurs

Structure et fonctionnement d'un ordinateur : hardware

Cours 1 : Qu est-ce que la programmation?

Cours 3 : L'ordinateur

Notion de base de données

Gestion répartie de données - 1

SYSTÈME DE GESTION DE FICHIERS

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 1 : Introduction aux bases de données

LES SYSTÈMES DE FICHIERS

Initiation à JAVA et à la programmation objet.

Optimisations des SGBDR. Étude de cas : MySQL

Codage d information. Codage d information : -Définition-

Présentation du module Base de données spatio-temporelles

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Ebauche Rapport finale

CHAPITRE 4 LA MÉMOIRE DE L'ORDINATEUR

Programmation système I Les entrées/sorties

Une version javascript sera disponible directement dans le cours prochainement.

SYS MEM. Gestion de la mémoire. Table des matières. IUT - Département Informatique. ASR2-Système. 1.1 Motivation

Exécution des instructions machine

Le prototype de la fonction main()

la virtualisation pour quoi faire?

Programmation impérative

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Traitement numérique de l'image. Raphaël Isdant

Bases de programmation. Cours 5. Structurer les données

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

IV- Comment fonctionne un ordinateur?

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Introduction aux SGBDR

La carte à puce. Jean-Philippe Babau

Conception de circuits numériques et architecture des ordinateurs

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Chap III : Les tableaux

Cours 1: Java et les objets

Introduction à la Programmation Parallèle: MPI

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Introduction au langage C

Une introduction à Java

Cours de Programmation Impérative: Zones de mémoires et pointeurs

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

LES TYPES DE DONNÉES DU LANGAGE PASCAL

<Insert Picture Here> Solaris pour la base de donnés Oracle

Plan du cours. Historique du langage Nouveautés de Java 7

Le Network File System de Sun (NFS)

Manuel d'installation

Arguments d un programme

La JVM. La machine virtuelle Java. La JVM. La JVM

Cours Programmation Système

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

Transcription:

La mémoire B. Dupouy SIP 2002-2003 21/01/03 ENST Dép. INFRES 1

Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle 4. Hiérarchie de mémoires. Annexe. La pile : utilisation des arguments passés à main 21/01/03 ENST Dép. INFRES 2

Définitions - Mémoire : juxtaposition de cellules ou mots-mémoire ou casesmémoire à m bits (Binary digit). Chaque cellule peut coder 2 m informations différentes. - Octet (byte) : cellule à huit bits. (1 Kilo-octet = 2 10 octets, 1 Mega-octet = 2 20 octets). - Mot : cellule à 16, 32, 64 bits. - Temps d'accès à la mémoire (principale) : 20 à 100 ns. - Tailles les plus courantes : 16 à 128 Mo. Généralités : Sur une machine classique, rien ne distingue, en mémoire, une instruction d'une donnée (architecture Von Neumann). protections logicielles : - données accessibles en lecture/écriture - programme accessible en lecture seule Evolution : -Sur les machines dotées des processeurs les plus récents, ce type d'architecture est remis en cause. En effet, ces processeurs sont équipés de mémoire appelées caches et ces caches sont souvent distincts pour les données et les instructions. -Sur certains calculateurs spécialisés (systèmes embarqués, processeurs de traitement du signal,...) les programmes et les données sont rangés dans des mémoires différentes : programme en ROM (read only memory), données en RAM. Pourquoi la mémoire? Le processeur va chercher les informations dont il a besoin, c'est à dire les instructions et les données, dans la mémoire. Il ne va jamais les chercher sur le disque! Ce dernier sert de support d'archivage aux informations, en effet la mémoire s'efface lorsque on coupe l'alimentation électrique de la machine. 21/01/03 ENST Dép. INFRES 3

La mémoire, ressource du S.E La mémoire est composée d'un assemblage de cellules repérées par leur numéro, ou adresse. Gestionnaire de mémoire : gère l'allocation de l'espace mémoire au système et aux différents processus en cours d'exécution. Numéro (adresse) 0 Mémoire (cellules de m bits) 1 Adresse n bits Données m bits n 2-1 Commande (lecture/écriture) n = largeur du bus d'adresse Processeur Mémoire m = largeur du bus de données Programmes et données Bus Donnéés Adresses Commandes 21/01/03 ENST Dép. INFRES 4

Adresse d'une information : Chaque information est repérée par son adresse, c'est à dire le numéro de son premier octet. Cet adressage en termes d'octets permet d'adresser, de repérer, en mémoire tous types d'information, quelque soit leur taille. On peut ainsi adresser un simple octet (un char en langage C), un mot sur deux octets (un short en langage C), etc. Types de base en C En langage C, la coutume sur Sun, par exemple, est la suivante : [unsigned] char [unsigned]short [unsigned]int [unsigned]long 8 bits 16 bits un mot machine (32 ou 16 bits!) 32 bits Voici la règle : 1 sizeof (char) sizeof (short) sizeof (int) sizeof (long) et en C ansi : sizeof (short) 16 bits 21/01/03 ENST Dép. INFRES 5

Adressage de la mémoire les cellules mémoire sont repérées par leur adresse en termes d'octets. Ceci permet d'adresser différents types de données, en langage C : char, int, long Exemple d'implantation de variables sur une machine à mots de 4 octets (les données sont implantées à partir de l'adresse 2) : void main (void) { /* j sur 4 octets -> adresse = 2 */ int j; /* k sur 2 octets -> adresse = 6 */ short k; /* c sur 1 octet -> adresse = 8 */ char c; } Adresses d'octet 0 1 2 3 4 5 6 7 8 9 10 11 12 j k c La règle : 1 sizeof (char) sizeof (short) sizeof (int) sizeof (long)... et en C ansi : sizeof (short) 16 bits 21/01/03 ENST Dép. INFRES 6

Les adresses des données sont alignées sur le mot mémoire. Conséquence de l'alignement : la taille d'un tableau de structure, par exemple, n'est pas la même d'une machine à l'autre : struct { int Tab [4]; char c; } Buf [3] ; sizeof (Buf ) =? Plus simplement, mais dans le même ordre d'idées, pour allouer de la mémoire pour un tableau de 6 int : Ne pas écrire : int * Ptr; Ptr = (int *) malloc (6 * 4); Mais écrire : int * Ptr; Ptr = (int *) malloc (6 * sizeof int); un int peut être implanté sur 2 ou 4 octets, suivant les machines... Pour allouer de la mémoire pour une structure du type de celle décrite ci-dessus, il est impératif d'utiliser sizeof, en effet la taille de cette structure ne sera sans doute jamais 5! 21/01/03 ENST Dép. INFRES 7

Mémoire : alignement Conséquence de l'accès 32 bits : allocation mémoire d'un tableau de structures sur une machine alignant sur 32 bits (le tableau est implanté à partir de l'adresse 0x100 : 0 1 2 3 struct S { char c; int i; } struct S Tab [10]; 0x100 0x104 0x108 0x10c c c i i Tab[0] Tab[1] c i Tab[2] c i Tab[10] Ici, sizeof S renvoie la valeur 8 et non pas 5! 21/01/03 ENST Dép. INFRES 8

La partie du système d'exploitation qui s'occupe de gérer la mémoire s'attache à atteindre les objectifs suivants : protection : dans un système multiutilisateur, plusieurs processus, appartenant à des utilisateurs différents, vont se trouver simultanément en mémoire. Il faut éviter que l'un aille modifier, ou détruire, les informations appartenant à un autre. réallocation : chaque processus voit son propre espace d'adressage, numéroté à partir de l'adresse 0. Cet espace est physiquement implanté à partir d'une adresse quelconque. partage : permettre d'écrire dans la même zone de données, d'exécuter le même code. organisation logique et physique : comme on le verra, à un instant donné, seule une partie du programme et des données peut se trouver en mémoire si la taille de cette dernière est trop faible pour abriter l'ensemble de l'application. 21/01/03 ENST Dép. INFRES 9

Gestion de la mémoire : objectifs réallocation : les adresses des informations peuvent être différentes de leur adresses absolues (par exemple relatives à un registre), protection : un processus ne peut accéder à la zone mémoire d'un autre, partage : plusieurs processus peuvent partager une zone mémoire commune, organisation logique (partitions, pagination etmémoire virtuelle) organisation physique : plusieurs niveaux de mémoire (RAM, ROM, flash, ). 21/01/03 ENST Dép. INFRES 10

21/01/03 ENST Dép. INFRES 11

Gestion de la mémoire 1. Qu'est-ce que la mémoire? - Définitions, exemples + 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle 4. Hiérarchie de mémoires Annexe. La pile : utilisation des arguments passés à main 21/01/03 ENST Dép. INFRES 12

Problèmes liés à la gestion de la mémoire en partitions : Fragmentation interne : -Un processus n'utilise pas la totalité de la partition. Fragmentation externe : -Certaines partitions ne sont pas utilisées, car trop petites pour tous les travaux éligibles. Comment choisir a priori la taille des partitions? 21/01/03 ENST Dép. INFRES 13

Allocation contiguë : les partitions L'espace mémoire est alloué dynamiquement, de façon contiguë, lors de l'implantation des processus en mémoire : on ne sait pas découper l'espace d'adressage d'un programme en plusieurs parties disjointes. Système Système Système Système Système 120 120 120 120 120 20 20 20 20 80 80 80 Job1 : 120 Ko Job2 : 20 Ko Job3 : 80 Ko fin Job1 fin Job3 Job4 : 125 Ko? Job5 : 70 Ko? Sur l'exemple Job5 peut être implanté à deux adresses différentes (laquelle choisir?), mais on ne peut pas charger Job4 qui demande un espace mémoire de 125 Ko. 21/01/03 ENST Dép. INFRES 14

Si plusieurs partitions sont susceptibles de recevoir un processus, laquelle choisir : - First fit : on range le processus dans la première partition libre et suffisamment grande trouvée, - Best Fit : on va chercher la partition dont la taille approche au mieux celle du processus à charger en mémoire. - Worst Fit : on met le processus dans la plus grande partition libre. 21/01/03 ENST Dép. INFRES 15

Politiques de placement des partitions Si plusieurs zones libres sont susceptibles d'accueillir le processus à charger, plusieurs politiques de placement sont possibles : - First Fit : on place le processus dans la première partition dont la taille est suffisante - Best Fit : on place le processus dans la partition dont la taille est la plus proche de la sienne. - Worst Fit : on place le processus dans la partition dont la taille est la plus grande. Best Fit va conduire à la création de nombreux blocs minuscules nonréutilisables, on utilise généralement Worst Fit en classant les blocs par ordre de tailles décroissantes, un parcours First Fit sur la table ainsi classée donnera un placement Worst Fit. Dans le cas où il n'existe aucun bloc libre assez grand, on peut faire du garbage collecting ou ramasse-miettes (cf. plus loin). 21/01/03 ENST Dép. INFRES 16

Le garbage collecting est appelé ramasse miettes en français. Il est utilisé par de nombreuses logiciels pour gérer leur propre espace mémoire (Lisp, Java...). Il est utilisé pour gérer l'espace disque. 21/01/03 ENST Dép. INFRES 17

Gestion de la fragmentation : le ramasse-miettes (garbage collecting) 0 SE 0 SE 40 K Job 5 40 K Job 5 90 K 100 K 10 K Job 4 gc 90 K Job 4 170 K 200 K 230 K 256 K 30 K Job 3 26 K 160 K 190 K 256 K Job 3 66 K Coût de l'opération? On peut également faire du compactage (regroupement des seuls trous voisins) 21/01/03 ENST Dép. INFRES 18

Limites de l'allocation contigüe. Knuth a démontré que, quelle que soit la stratégie adoptée, on n'arrive jamais à recouvrir parfaitement l'espace libre par des blocs occupés. Sa démonsration montre que la proportion de blocs libres (trous) sera d'un tiers par rapport au nombre de blocs occupés. Il répartit les blocs occupés en trois catégories : - ceux qui ont deux voisins libres - ceux qui ont deux voisins occupés - ceux qui ont un voisin de chaque nature 21/01/03 ENST Dép. INFRES 19

Règle des 50% de Knuth (1) Soit : - N : nombre de blocs occupés - M : nombre de blocs libres, Les différents types de blocs occupés : : A B C B Si : - Type a : blocs adjacent à deux blocs libres - Type b : blocs adjacent à un bloc occupé et un libre, - Type c: blocs adjacent à deux blocs occupés - Na : nombre de blocs de type a - Nb : nombre de blocs de type b, - Nc : nombre de blocs de type c Alors : N = Na + Nb + Nc et : M = Na + Nb/2 + e/2 ( e> 0 ou < 0 selon les bords) 21/01/03 ENST Dép. INFRES 20

21/01/03 ENST Dép. INFRES 21

Règle des 50% de Knuth (2) On note : - p : proba (on ne trouve pas de trou de bonne taille), - 1-p : proba (on trouve un trou de bonne taille). On a : - proba (M augmente de 1) = proba (on libère un bloc "c") = Nc/N - proba (M baisse de 1) = proba(on trouve un trou de bonne taille) + proba (on libère un bloc "a") = 1-p+Na/N A l'équilibre : proba (M augmente de 1) = proba (M baisse de 1) donc : - Nc/N = Na/N+1-p - puisque N-2M Nc-Na on a M = N/2 * p - si p 1 alors M N/2 ou encore N = 2 * M Conclusion : à l'équilibre, un bloc sur trois est libre, c'est à dire inoccupé! 21/01/03 ENST Dép. INFRES 22

21/01/03 ENST Dép. INFRES 23

Gestion de la mémoire 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contigüe en mémoire - Partitions de taille fixe, de taille variable + 3. Pagination et mémoire virtuelle 4. Hiérarchie de mémoires Annexe. La pile : utilisation des arguments passés à main 21/01/03 ENST Dép. INFRES 24

Le problème des partitions est la fragmentation car les programmes ont besoin d'espace contigü. La pagination permet d'utiliser des espaces non contigus. Comme on le voit sur le schéma, des pages qui se succédent dans l'espace vu par l'utilisateur peuvent être implantées sur des pages mémoires non contigües. Les pages sont chargées en mémoire là où il y a de la place. La table de pages mémorise le placement de chaque page logique en mémoire physique. La table de pages (TP) est un tableau tel que TP[i] donne le numéro de page physiaue (l'adresse en mémoire) où a été chargée la page i. Exemple : Si les pages 0,1 et 2 d'un processus sont chargées sur les pages mémoire 24, 78 et 100 on aura : TP [0] = 24, TP [1] = 78 et TP [3] = 100. 21/01/03 ENST Dép. INFRES 25

Pagination L'espace d adressage est divisé en pages, la mémoire centrale est divisée en blocs. (taille de la page = taille du bloc). Table des pages : elle fait correspondre une page logique à un bloc physique. Espace d'adressage vu par le processus Mémoire physique principale (pages actives) page 0 page 1 page 2 Table de correspondance (Table de pages) chargement / déchargement / remplacement page n mémoire physique secondaire (pages inactives) Sur l'exemple ci-dessus, seules 3 pages parmi 6 sont chargées en mémoire. 21/01/03 ENST Dép. INFRES 26

Quand l'espace d'adressage de l'application est supérieur à la taille de la mémoire physique, on parle d'adressage virtuel. On donne l'illusion à l'utilisateur qu'il dispose d'un espace d'adressage illimité (en fait limité à la taille du disque sur lequel est rangée l'application). 21/01/03 ENST Dép. INFRES 27

Mémoire virtuelle Soit M la taille de la mémoire disponible sur la machine. Soit T la taille de l'application. Si T < M, on parle de pagination, Si T > M, on parle de mémoire virtuelle, deux cas possibles : M est la taille de la mémoire libre à cet instant, M est la taille de totale de la mémoire (application plus grande que la mémoire physique!) 21/01/03 ENST Dép. INFRES 28

Passage de l'adresse virtuelle à l'adresse physique : - l'adresse d'une information est divisée en deux champs : numéro de page virtuelle et déplacement dans cette page (ici appellés p et w) - le contenu de l'entrée p de la table de pages (appeléée TP) donne le numéro de page physique p' où est chargée p. Dans cette entrée, c'est à dire dans TP[p] figurent également les droits d'accès à la page en lecture, écriture et destruction, ainsi que des indications nécessaires à la pagination. Ces indications sont données par des bits, citons le bit V (valid) qui indique si p' est bien un numéro de page en mémoire, le bit M (modified ou dirty bit) qui indique si la page a été modifiée. - pour trouver l'information cherchée on concatène la partie déplacement dans la page au numéro de page physique trouvé. Lorqu'on ne trouve pas la page que l'on cherche en mémoire, on parle de défaut de page (page fault, en anglais). 21/01/03 ENST Dép. INFRES 29

Correspondance entre adresse virtuelle et adresse physique Adresse programme (virtuelle) p w Num. Octet Entrée num. p p' Table des pages p'+w adresse réelle Bloc physique p' Exemple : les adresses virtuelles et physique sont sur 32 bits, les pages font 1K octets. La page virtuelle 4 est implantée sur la page physique 9. Voici les 3 étapes pour passer de l'adresse virtuelle à l'adresse en mémoire : 31 9 0 0... 0100 0...10 Adresse virtuelle 1 31 2 0... 01001 Adresse en mémoire physique 3 9 0 0...10 0 1 2 3 4 5 01001 21/01/03 ENST Dép. INFRES 30

En allocation par partition les stratégies sont des stratégies de placement, ici on utilise des stratégies de REMPLACEMENT, les tailles de toutes les partitions (ici des pages) étant égales. Les principales stratégies sont les suivantes : Moins Récemment Utilisée (MRU) / Least Recently Used (LRU) : On suppose que le futur ressemblera au passé. Implique que l'on conserve une trace des dates d'accès aux pages. Moins Fréquemment Utilisée (MFU) / Least Frequently Used (LFU) : On suppose que le futur ressemblera au passé. Implique que l'on conserve une trace du nombre d'accès aux pages. Problème des pages récemment chargées. La Plus Ancienne / First In First Out (FIFO) : Implique que l'on conserve une trace de l'ordre de chargement. 21/01/03 ENST Dép. INFRES 31

Stratégies de remplacement Stratégies de remplacement (indiquent quelle page doit être remplacée) : - Moins Récemment Utilisée (MRU) / Least Recently Used (LRU) - Moins Fréquemment Utilisée (MFU) / Least Frequently Used (LFU) - La Plus Ancienne / First In First Out (FIFO) : 21/01/03 ENST Dép. INFRES 32

21/01/03 ENST Dép. INFRES 33

Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle 4. Hiérarchie de mémoires. Annexe. La pile : utilisation des arguments passés à main 21/01/03 ENST Dép. INFRES 34

21/01/03 ENST Dép. INFRES 35

Introduction Ce que souhaitent les utilisateurs : - Un espace mémoire de capacité infinie, - un temps d accès aux informations rangées en mémoire très court (pour les données comme pour les instructions), c'est à dire : Temps d'accès à la mémoire = temps de cycle processeur Temps d'accès : - Bande passante (bounded by money), - Latence (bounded by?) Mots clés : principe de localité, hit et miss, gestion d'une hiérarchie 21/01/03 ENST Dép. INFRES 36

21/01/03 ENST Dép. INFRES 37

Principe de localité Les accès mémoire peuvent présenter deux types de propriétés intéressantes pour la mise en place d une hiérarchie : - localité temporelle : une adresse qui vient d'être référencée le sera sans doute à nouveau dans un futur proche, - localité dans l'espace : si une adresse vient d'être référencée, ses voisines le seront également dans un futur proche. Working set (espace de travail) de fenêtre D au temps t, ou W (t, D) : ensemble des adresses référencées entre t et t+d 21/01/03 ENST Dép. INFRES 38

21/01/03 ENST Dép. INFRES 39

Exemple de localité Localité temporelle (ici, sur les instructions) : for (i=0; i <DIM; i++) S = S + Tab[i]; Localité spatiale (ici, sur les données) : for (i=0; i <DIM; i++) Buff[i] = Tab[i]; Attention au parcours des tableaux : for (i=0; i <DIM; i++) Tab[i][j] = 0; rangement ligne / colonne ou colonne / ligne principe de localité respecté ou non. 21/01/03 ENST Dép. INFRES 40

Sur les machines récentes un accès à la mémoire ne veut pas forcément dire un accès à la mémoire RAM, comme on pourrait le croire. Les processeurs étant de plus en plus rapides, les mémoires leur semblent de plus en plus lentes, pour la simple raison que les performances de ces dernières progressent beaucoup plus lentement que les leurs. Pour pallier ce défaut, les constructeurs implantent de la mémoire sur les "chips" c'est à dire sur les processeurs eux-mêmes. Ces mémoires sont appelées "caches". Elles contiennent un sous-ensemble de la mémoire RAM. Ces caches s'appelent "on chip caches", primary caches ou caches primaires. Il existe également des caches secondaires, qui ne sont pas sur le processeur lui-même, mais auxquels on fait accès par un bus dédié, plus rapide que celui permettant les accès à la mémoire classique. 21/01/03 ENST Dép. INFRES 41

Hiérarchie (1) Du plus rapide et plus petit (niveaux bas) au plus lent et plus volumineux (niveaux hauts) : Disque (giga octets) Mémoire RAM (méga octets) Cache matériel secondaire (kilo ou méga octets) Sur le chip Cache matériel primaire (dizaines de kilo octets) Registres Quand la capacité décroît, le coût du bit augmente. Hiérarchie logicielle / matérielle 21/01/03 ENST Dép. INFRES 42

21/01/03 ENST Dép. INFRES 43

Hiérarchie (2) Objectifs de la gestion de la hiérarchie de mémoires : - les niveaux bas (rapides) gèrent la majorité des références mémoire, ils gardent les adresses les plus récemment utilisées (localité temporelle). - utiliser la localité spatiale pour les transferts entre niveaux, qui sont faits par blocs. Les performances dépendent : - de la structure et du fonctionnemment de la hiérarchie - des propriétés de localité du PROGRAMME. 21/01/03 ENST Dép. INFRES 44

21/01/03 ENST Dép. INFRES 45

hit et miss Soit une hiérarchie à deux niveaux M 1 et M 2 tels que: Taille Temps d'accès Coût/bit M 1 S 1 T 1 C 1 M 2 S 2, avec (S 1 < S 2) T 2, (T 1 < T 2) C 2, avec (C 1 > C 2) Définitions : hit référence mémoire satisfaite par M 1 miss référence mémoire effectuée par M 2 hit ratio (h) miss ratio (1-h) Nbre de hits / Nbre total de références Nbre de misses / Nbre total de références T 1 (T 2 ) = temps pour satisfaire un hit (miss). 21/01/03 ENST Dép. INFRES 46

21/01/03 ENST Dép. INFRES 47

Performances Temps d'accès moyen à la mémoire : T m = h T 1 + (1-h) T 2 Accélération S (speedup) dûe à M 1 : S = S = T 2 T m = 1 1- h (1- T 1 T 2 ) T 2 h T 1 + (1-h) T 2 = 1 1+ h ( T 1 T 2-1 ) Or : T 1 T 2 < 1 si h = 1 2, l'accélération est au plus de 2... si T 2 T 1 = 10, un baisse de 1% sur un hit ratio voisin de 1 se traduit par une augmentation 10% du temps d'accès moyen. 21/01/03 ENST Dép. INFRES 48

21/01/03 ENST Dép. INFRES 49

Gestion de la hiérarchie Soit une hiérarchie à 2 niveaux : M 1 et M 2. - quand charger un bloc de M 2 dans M 1? - où placer le bloc dans M 1? - comment trouver une adresse dans M 1? - quand M 1 est plein, quel bloc remettre dans M 2? - que faire en cas d'écriture? Réponses : - lecture anticipée (read ahead) ou non, - cache purement associatif ou non - algorithme LRU, - écriture immédiate ou différée (write back, write through), 21/01/03 ENST Dép. INFRES 50

21/01/03 ENST Dép. INFRES 51

Problèmes de gestion cohérence entre la copie dans le niveau inférieur et l'élément original : - commande sync de Unix - gestion write back ou write through des caches matériels, copies mutiples d'un élément et écriture dans une de ces copies (caches sur les machines multiprocesseur, caches de nfs) : - propagation des copies - invalidation des copies 21/01/03 ENST Dép. INFRES 52

21/01/03 ENST Dép. INFRES 53

Gestion de la mémoire + 1. Qu'est-ce que la mémoire? - Définitions, exemples 2. Allocation contiguë en mémoire - Partitions de taille fixe, de taille variable 3. Pagination et mémoire virtuelle 4. Hiérarchie de mémoires. Annexe. La pile : utilisation des arguments passés à main 21/01/03 ENST Dép. INFRES 54

21/01/03 ENST Dép. INFRES 55

La pile : utilisation des arguments passés à main Soit le programme : void main (int argc, char *argv[], char * arge []) { short i; printf (" adresse de argc : 0x%x, argc : %d \n", &argc, argc ); printf (" adresse de argv : 0x%x, argv : %x \n", &argv, argv ); printf (" adresse de arge : 0x%x, arge : %x \n", &arge, arge ); for ( i=0 ; argv [i]!= 0; i++) printf (" argv [%d] (0x%x) : %s \n", i, argv [i], argv [i]); for ( i=0 ; i < 3 ; i++) printf (" arge [%d] (0x%x) : %s \n", i, arge [i], arge [i]); } Après compilation et envoi de la commande a.out, voici les résultats : adresse de argc : 0xeffff6e4, argc : 1 adresse de argv : 0xeffff6e8, argv : effff704 adresse de arge : 0xeffff6ec, arge : effff70c argv [0] (0xeffff814) :./a.out arge [0] (0xeffff81c) : ARCH=sparc-sun-solaris2.4 arge [1] (0xeffff836) : DISPLAY=:0.0 arge [2] (0xeffff843) : EDITOR=emacs 21/01/03 ENST Dép. INFRES 56

La pile : main Structure de la pile lors de l'appel à main : nombre de mots sur la ligne de commande : argc, tableau de pointeurs (terminé par un nul) contenant les mots de la ligne de commande : argv, tableau de pointeurs (terminé par un nul) contenant les variables d'environnment : arge. effff6e4 effff6e8 effff6ec 1 effff704 effff70c argc argv arge effff704 effff814 argv[0] effff708 0 effff70c effff710 effff714 effff81c effff836 effff843 arge[0] arge[1] arge[2] effff718 0 effff814 effff81c effff836 effff843./a.out\0 ARCH=sparc-sun-solaris2.4 DISPLAY=0.0\0 EDITOR=emacs\0 21/01/03 ENST Dép. INFRES 57

21/01/03 ENST Dép. INFRES 58