Upload
vongoc
View
270
Download
0
Embed Size (px)
Citation preview
Mémoires
INF1600: Architecture des micro-ordinateurs
Mémoires
Mémoire virtuelle
1Génie informatique et génie logiciel H2013
Mémoire virtuelle
Professeur: Giovanni Beltrame
Local: M-4109
Mémoires
Programme du cours
IntroductionOrganisation interne du
microprocesseur
Hierarchie de mémoireTP0
Introduction aux outils
TP2
Architecture du microprocesseur
TP4
Lien entre C++ et assembleur
2Génie informatique et génie logiciel H2013
Programmation en assembleur
Architecture d'un microprocesseur
TP1
Périphériques et architecture
Micro-ordinateuret périphériques
TP3
Programmation en assembleur
TP5
Mémoires
C++ et assembleurThéorieTravaux Pratiques
Mémoires
Objectifs de la leçon
1
3
2
Décrire le fonctionnement de la mémoire virtuelle
Expliquer le fonctionnement d'une mémoire segmentée
Expliquer le fonctionnement d'une mémoire paginée
3Génie informatique et génie logiciel H2013
5
Décrire l'utilisation d'un Translation Lookaside Buffer
Résumer la hiérarchie de mémoire
Expliquer la hiérarchie de mémoire pour les entrées et les sorties
4
6
Mémoires
Agenda
• Mémoire virtuelle
• Entrées et sorties avec mémoire virtuelle
1 32
5
4
4Génie informatique et génie logiciel H2013
6• Résumé
Mémoires
Mémoire virtuelle
- adresser la mémoire de point de vue logique sans considérer la quantité de mémoire physique disponible.
- un processus peut être exécuté dans la mémoire principale sans avoir toutes les instructions et données dans la mémoire en même temps.
- le champ d’adresse des instruction machine contient les adresses virtuelles (l’adresse calculée par le CPU est virtuelle).
5Génie informatique et génie logiciel H2013
virtuelles (l’adresse calculée par le CPU est virtuelle).
● MMU (Memory Management Unit)
– Circuit qui traduit l’adresse virtuelle/logique vers l’adresse physique
– Fait au niveau d’OS , en logiciel, MMU en matériel
Puce du processeur
CPUMMU
Table de
traduction
CacheMémoire
principaleDisqueAdresse
logique
Adresse
physique
Mémoires
Mémoire virtuelle
● Routine de défaut de page (logiciel)
– Transfert les pages entre mémoire et disque
– Met à jour la table de traduction
● La cache voit l’adresse virtuelle ou physique (physique est plus courante):
● Virtuelle : bonne vitesse mais
même adresse virtuelle pour
1
6Génie informatique et génie logiciel H2013
même adresse virtuelle pour
deux application s aux deux
emplacements différentes.
Source William Stallings – Computer organization and Architecture
Mémoires
Adresses
- Adresse effective (effective address) – l’adresse calculée par le processeur pendant l’ exécution. Même chose qu’adresse logique
- Adresse logique – une adresse vue a l’ extérieur du CPU
- Adresse effective – a l’ intérieur du CPU
- Adresse virtuelle – adresse générée de l’adresse logique (par MMU).
7Génie informatique et génie logiciel H2013
- Adresse virtuelle – adresse générée de l’adresse logique (par MMU).
- Un ensemble d’adresses virtuelles utilisées par un processus – l’espace
adresse virtuelle.
- Adresse physique – adresse présentée a la mémoire
Mémoires
Avantage de la mémoire virtuelle● Programmation plus facile
- espace d'adresses est assez grand
● Pas besoin de recouvrement (« overlay » - le programme recouvre son propre code si plus de code est nécessaire – MM fait par le programmeur)
● Pas de fragmentation du programme
- pas de fragmentation externe
● Beaucoup de mémoire pas chère
1
8Génie informatique et génie logiciel H2013
● Beaucoup de mémoire pas chère
- disques beaucoup moins chères que la RAM
● Contrôle d'accès (vérification des privilèges)
- Peut aussi être fait par segmentation, sans nécessairement avoir de mémoire virtuelle – division de l’espace d’adresse en segments.
- Permet de protéger le système contre des bogues dans les programmes, ou contre des attaques intentionnelles i.e. segments protégés « read only » ou « execute only ».
- Le fameux « segmentation fault » -
● Inconvénient
- Mauvaise performance si mauvaise localité
Mémoires
Allocation memoire pour MM effective
Permutation
9Génie informatique et génie logiciel H2013
Partitionnement (fixe ou dynamique)
Mémoire segmentée
Mémoire paginée
Source William Stallings – Computer organization and Architecture
Mémoires
Mémoire segmentée
- Mémoire partitionnée en unités de données logiquement connectées
- Adresse virtuelle <segment#, offset>
- Les unités de mémoire sont vues de point de vue usager
10Génie informatique et génie logiciel H2013
Mémoires
Mémoire segmentée
● Problème: fragmentation externe (déplacement
repetee de segments dans et de la mémoire )
– Trous se forment entre les segments
● Solution: compaction périodique
– Enlever les trous
Mémoire principale
… FFF
Adr.Adr.
Segment 5
Segment 1
Vide
0
0
2
11Génie informatique et génie logiciel H2013
– Enlever les trous
– En déplaçant les segments Adr.physique
… 000
Adr.virtuelle Segment 6
Segment 9
Segment 3
Vide
0
0
0
0
Mémoires
Mémoire segmentée
2
12Génie informatique et génie logiciel H2013
Mémoires
Mémoire paginée- Mémoire partitionnée en
morceaux ayant la même taille (secteurs - frames)
- Processus divisé en morceaux ayant une taille (pages).
13Génie informatique et génie logiciel H2013
- Les morceaux de programme (pages) peuvent être affectées aux secteurs de mémoire logiquement connectées.
- La liste de secteurs disponibles gérée par OS
avant après
Source William Stallings – Computer organization and Architecture
Mémoires
14Génie informatique et génie logiciel H2013
Source William Stallings – Computer organization and Architecture
Mémoires
Mémoire paginée● Le MMU gère la traduction de virtuelle à physique
– Interruption lorsque la traduction n’existe pas
● Les autres sont gérées par l’OS
Mémoire secondaire(disque)
Mémoire virtuelle
Pages
« Pages »(plusieurs secteurs
pour avoir la même
taille qu’une page)
3
15Génie informatique et génie logiciel H2013
● Problème:Fragmentation interne
– Espaces vide à la fin
des pages
Mémoire physique(principale)
Page 0
Page 1
Page 2
Page n – 1
…
Mémoires
Exemple• Sur l’IA-32
• Adresse logique « seg⟨15..0⟩ # offset⟨31..0⟩ »
• L’« offset » est l’adresse que vous voyez dans vos programmes
• Adresse linéaire « TableSegments[seg] + offset »
• TableSegments[] = 0 sous Windows et Linux
• Adresse physique
• M[M[CR3 # linéaire⟨31..22⟩ # 00] # linéaire⟨21..12⟩ # 00] # linéaire⟨11..0⟩
31 22 21 12 11 0
Linear address
3
16Génie informatique et génie logiciel H2013
Directory Table Offset
31 22 21 12 11 0
Directory entry
Page directory
(1024 entées)
Page table entry
Page table
(1024 entrées
par table) Physical address
4kB physical page
CR3 (page directory base register)
Mémoires
17Génie informatique et génie logiciel H2013
Source www.wikipedia.org
Mémoires
Placement et remplacement de pages
● Aussi flexible que cache associative
● Moins de complexité, plus de mémoire
‒ Complexité de recherche associative remplacée par une table
‒ La table peut être relativement grosse
● Problème de taille de table
3
18Génie informatique et génie logiciel H2013
● Problème de taille de table
‒ Réduction avec table à plusieurs niveaux (comme exemple de l’IA-32)
● Problème de temps de traduction
‒ L’accès à la table demande des lectures mémoires
‒ Utilisation d’un tampon de traduction
‒ TLB – Translation Lookaside Buffer
‒ Genre de cache pour les traductions d’adresses
‒ Complètement associatif
Mémoires
Page fault (défaut de page)
-le processus essaye d’ accéder une adresse virtuelle d’une page qui n’existe pas dans la mémoire physique
-si la page existe sur le disque
- le processus est suspendu
- si nécessaire libérer des pages
19Génie informatique et génie logiciel H2013
- si nécessaire libérer des pages
- la page dans la mémoire et résumer l’ exécution
-si la page n’existe pas sur le disque
- erreur ou une autre page et résumer l’ exécution
Mémoires
TLB
# page virt. mot
Recherche associativedu # page
dans la TLB
# page phys. mot
Adresse virtuelle (CPU) Adresse physique
TLB
4
20Génie informatique et génie logiciel H2013
dans la TLB
Dans
TLB?
non
oui
Accès completà la table de pages
en mémoireprincipale
# pagevirtuelle
# pagephysique
Bits decontrôle:droits d’accès…
Mémoires
#Bloc (#page) #Mot
Table de traduction
#Bloc (#seg) #Mot
Table de traduction
Source : Hennessy et Patterson – Computer Architecture A quantitative approach
21Génie informatique et génie logiciel H2013
Paginé
(blocs de taille fixe)
#Mot#Bloc (#page)
Adresse primaire
Segmenté
(blocs de taille variable)
#Mot
Adr. de base du segment
+
Adresse primaire
Mémoires
Mémoire paginée vs mémoire segmentée
Paginée Segmentée
Mots/page Un Deux (segment et offset)
VisibilitéPas visible pour le
programmeur
Peut être visible pour le
programmeur
Remplacement Facile (toutes les pages ont la Difficile (trouver des blocs
contigües, taille variable, parties
22Génie informatique et génie logiciel H2013
Remplacement
blocs
Facile (toutes les pages ont la
même taille)contigües, taille variable, parties
mémoire principale non- utilisées)
Utilisation
inefficace de la
memoire
Fragmentation interne
(portions page non- utilisées)
Fragmentation externe (parties
mémoire principale non- utilisées)
Trafic disque
efficace
Oui Pas toujours (dans le cas de petits
segments on peut transférer
seulement quelques octets)
Source : Hennessy et Patterson – Computer Architecture A quantitative approach
Mémoires
Sommaire de la hiérarchie
Vérifie TLB Vérifie cache
Dans
Adresse virtuelle
non Dans
Vérifietable de pages
Dansoui non
« page fault » :OS lit disque et
place en mémoire
CPU Cache Mémoire principale Mémoire secondaire(disque dur)
5
23Génie informatique et génie logiciel H2013
DansTLB?
non
Génère adressephysique
Génère adressephysique
Ajoute dansTLB
Danscache?
oui
Danstable?
non oui
oui non
Lit mémoire et place dans cache
Lit valeurde la cache
Met à jour cacheet table de pages
Mémoires
Agenda
• Mémoire virtuelle
• Entrées et sorties avec mémoire virtuelle
1 32
5
4
24Génie informatique et génie logiciel H2013
6• Résumé
Mémoires
Hiérarchie et entrées/sorties
● La cache est « transparente » et fait les accès mémoires
CPU CacheMémoire
Principale
DMA d’E/S
Disque
Autres
périphériques
E/S
programmées
Adresses non
« cachable »
6
25Génie informatique et génie logiciel H2013
● La cache est « transparente » et fait les accès mémoires
● La mémoire principale ne fait pas les accès disque
‒ CPU ordonne les accès
‒ En meilleur cas les données sont transmises par DMA
● DMA – Direct Memory Access
‒ CPU spécifie l’adresse et la taille (compteur)
‒ DMA place les données, incrémente l’adresse, décrémente le compteur
‒ Interruption lorsque compteur tombe à zéro
‒ Doit indiquer à la cache les modifications
Mémoires
Agenda
• Mémoire virtuelle
• Entrées et sorties avec mémoire virtuelle
1 32
5
4
26Génie informatique et génie logiciel H2013
6• Résumé
Mémoires
Sommaire Partie 3 : Memoires
● Mémoires (SRAM, DRAM, etc.)● Hiérarchie de mémoire● Caches
– Politiques de lecture– Politiques d'écriture
Remplacement
27Génie informatique et génie logiciel H2013
– Remplacement– Performances
● Mémoire virtuelle– Segments– Pagination– TLB– Entrées/Sorties
Mémoires
● Un ordinateur possède une mémoire cache de 512 Kio. Chaque
bloc (ligne) en cache occupe 64 octets. Cette cache est
associative par ensembles de 4. La stratégie de remplacement
est LRU. En cas d’écriture, le bloc est copié en cache s’il n'y est
pas déjà (write allocate), puis éventuellement réécrit en mémoire
centrale avant d’être enlevé (write-back). La cache voit les
adresses physiques.
Exercice 1 : Cache
28Génie informatique et génie logiciel H2013
adresses physiques.
● Structure de l'adresse
– 19 bits pour adresser 512Kio
– 6 bits pour chaque bloc => 13 bits pour identifier la ligne
– 4 voies => 11 bit pour l'ensemble
– 15 bits pour le tag | 11 bits pour l'ensemble | 6 bits pour l'octe
Mémoires
● Les accès suivants sont effectués (adresses physiques)alors que la cache est initialement vide : W0x020203,W0x200201, R0x10023D, R0x020211, W0x020404,W0x08022C, R0x180209, R0x100202, R0x20021A, R0x10022F
– Décomposez l’adresse tel que répondu dans la diapo
Exercice 1 : Cache
29Génie informatique et génie logiciel H2013
– Décomposez l’adresse tel que répondu dans la diapoprécédente
• W 1|8|03 W 10|8|01
• R 8|8|3D R 1|8|11
• W 1|10|04 W 4|8|2C
• R C|8|09 R 8|8|02
• R 10|8|1A R 8|8|2F
Mémoires
● W0x020203, W0x200201, R0x10023D, R0x020211, W0x020404,W0x08022C, R0x180209, R0x100202, R0x20021A, R0x10022F
– Dites si c’est un succès d’accès en cache et indiquez s’il y a eulecture et/ou écriture en mémoire principale.
– Quel bloc de cache sera utilisé ? Étiquette (tag) ?
– Le contenu du bloc != de la mémoire principale?W 1|8|03 W 10|8|01 R 8|8|3D R 1|8|11 W 1|10|04 W 4|8|2C R C|8|09 R 8|8|02 R 10|8|1A R 8|8|2F
Exercice 1 : Cache
30Génie informatique et génie logiciel H2013
W 1|8|03 W 10|8|01 R 8|8|3D R 1|8|11 W 1|10|04 W 4|8|2C R C|8|09 R 8|8|02 R 10|8|1A R 8|8|2F
Succ. oui oui oui
Mem R R R R R W R W R FIN
Ens8 1x
10x
8
x
4x
C
.
10
.
10
C8
4x
Ens10 1x 1x
Mémoires
● En supposant que le temps d’un accès en cache (lecture ou
écriture) est de 1ns et qu’une copie d’une ligne entre la mémoire
principale et la cache est de 10ns quel est le temps d’accès effectif
pour ces accès ?Succ. oui oui oui
Mem R R R R R W R W R FIN
Exercice 1 : Cache
31Génie informatique et génie logiciel H2013
3 succès, 9 copies (7 lectures, 2 écriture) : 9
3*1ns + 9*10ns = 93ns pour 10 accès = 9,3ns moyenne
FIN
Ens8 1x
10x
8
x
4x
C
.
10
.
10C84x
Ens10 1x 1x
Mémoires
● Un programme accède séquentiellement aux 7 adresses suivantes :
1)0x00012340, 2)0x00023400, 3)0x00012800, 4)0x00410000, 5)0x00401000,
6)0x00400100, 7) 0x00400010. Ces données ne se trouvent pas initialement en
mémoire physique, mais les tables nécessaires à la traduction de ces adresses
sont déjà allouées. Le système détermine qu’un bloc de mémoire physique à
partir de l’adresse 0x00010000 pourrait être libéré au besoin
●
Exercice 2 : Mémoire virtuelle
31 22 21 12 11 0
Linear address
32Génie informatique et génie logiciel H2013
● Donnez les numéros desaccès qui causent des défauts de page1, 2, 4, 5, 6
Directory Table Offset
31 22 21 12 11 0
Directory entry
Page directory
(1024 entées)
Page table entry
Page table
(1024 entrées
par table) Physical address
4kB physical page
CR3 (page directory base register)
Mémoires
● Un programme accède séquentiellement aux 7 adresses suivantes :
1)0x00012340, 2)0x00023400, 3)0x00012800, 4)0x00410000, 5)0x00401000,
6)0x00400100, 7) 0x00400010.
● Montrez l’état des tables de traduction d’adresses après ces accès (quelles
entrées seront utilisées et quelle sera la page physique associée à l’entrée).
● 0
Exercice 2 : Mémoire virtuelle
31 22 21 12 11 0
Linear address
33Génie informatique et génie logiciel H2013
● 0
– 0x12→0x10
– 0x23→0x11
● 1
– 0→0x14
– 1→0x13
– 0x10→0x12
Directory Table Offset
31 22 21 12 11 0
Directory entry
Page directory
(1024 entées)
Page table entry
Page table
(1024 entrées
par table) Physical address
4kB physical page
CR3 (page directory base register)
Mémoires
Agenda
• Mémoire virtuelle
• Entrées et sorties avec mémoire virtuelle
1 32
5
4
34Génie informatique et génie logiciel H2013
6• Résumé