Les mémoires internes
Mémoire centrale RAM
Case Adresse N-1
0 0 0 1 1 1 1 0
Case
Case
Mot mémoire = Nombre de bits
(8 bits) .
.
Taille = Nombre de cases (en octets) .
.
Taille = Nb_cases × Mot_Memm (en .
octets
Case Adresse 2
Nb_case = 16, Mot_Mem = 8 bits
Taille_Mem = 16 × 8bits(1 octet) Case Adresse 1
= 16 octets Case Adresse 0
80
Les mémoires internes
Communication entre CPU & RAM
Bus adresse : Adresse 2 Case Adresse N-1
Case
Case
.
CPU .
.
.
10100110 .
10100110 Adresse 2
Case Adresse 1
Bus contrôle (Lecture) Case Adresse 0
81
Les mémoires internes
Communication entre CPU & RAM
Bus adresse : Adresse 1 Case Adresse N-1
Case
Case
.
CPU Bus donnée : 00001111 .
.
.
00001111 .
Case Adresse 2
00001111 Adresse 1
Bus contrôle (Ecriture) Case Adresse 0
82
Les mémoires internes
CALCUL INTUITIF !
Case 1111
Si l’adresse est sur n-bits, donc il est
possible de référencer 𝒏 cases Case
mémoire (Dans l’exemple c’est 16 Case
cases ou mots mémoire)
.
.
If the address is n-bit, then it is possible .
to reference 2^n memory locations .
(in the example, this is 16 memory .
locations or words).
Case 0010
Case 0001
Case 0000
83
Les mémoires internes
Segmentation de la mémoire
La segmentation est la subdivision
(logique et non pas physique) de la @Segment
RAM en plusieurs plages à taille
1 1 1 1
égales 1 1 1 0
Elle se fait par le découpage des 1 1 0 1
bits du bus d’adresses 1 1 0 0
1 0 1 1
1 0 1 0
Segmentation is the subdivision 1 0 0 1
1 0 0 0
(logical, not physical) of RAM into 0 1 1 1
several equally sized ranges. 0 1 1 0
This is done by dividing the bits 0 1 0 1
of the address bus. 0 1 0 0
0 0 1 1
0 0 1 0
0 0 0 1
0 0 0 0
84
Les mémoires internes
Segmentation de la mémoire
Ecriture @Segment @Offset
Segment:Offset (EA, Depl) 1 1 1 1
Segment 11 1 1 1 0
1 1 0 1
1 1 0 0
1 0 1 1
11:01 Segment 10 1 0 1 0
1 0 0 1
1 0 0 0
10:01 0 1 1 1
Segment 01 0 1 1 0
0 1 0 1
00:10 0 1 0 0
0 0 1 1
0 0 1 0
Segment 00 0 0 0 1
DS, ES: Segment:Offset 0 0 0 0
CS : CS:IP
SS : SS:SP 85
La segmentation d’un programme permet de séparer le code de ce programme de ses
données pour une utilisation plus rationnelle de la mémoire centrale
Program segmentation allows the Mémoire centrale Mémoire centrale
program code to be separated
from its data for more efficient Espace Espace
use of main memory. occupé occupé
Espace libre Espace libre
insuffisant insuffisant
Espace Espace
occupé occupé
Programme Programme
(Code+ (Code+
Données)
Espace Données)
Espace
libre et suffisant et
suffisant occupé
Espace Espace libre
occupé insuffisant
Chargement sans Problème de chargement
sans segmentation 86
segmentation
Mémoire centrale
Espace
occupé
Espace libre
et suffisant
Segment Espace
Programme
Segments Code occupé
(Code
Données) Segment
Données Espace
suffisant et
occupé
Espace libre
et
suffisant
87
Le registre CS
Segment
Code
64 Ko L’adresse segment: elle est contenue dans le
registre segment correspondant sur 16 bits (64KO).
Le registre DS
L’adresse Effective (EV, offset, déplacement, ‘’IP
Segment pour le CS’’): c’est l’adresse relative par rapport au
Données début d’un segment, sa taille est 16 bits. Les
64 Ko adresses effectives du premier Byte et du dernier
Byte de chaque segment sont respectivement
Le registre SS 0000H et FFFFH.
Segment
Pile L’adresse Physique : cette adresse qui est sur 20
64 Ko bits est générée par le μP, elle est véhiculée via le
bus d’adresses (20 bits) pour pointer n’importe
quelle case mémoire dans l’espace de la mémoire
Le registre ES
Segment
centrale
Données
suppl
64 Ko
88
Segment
Code
64 Ko
Segment
Données
64 Ko
@_physique = @_segment × 16 + Offset
Segment
Pile
64 Ko Exemple:
CS=1234H @_p = CS × 16 + 0000H = 12340H
@_p = CS × 16 + A0ABH = 1C3EBH Segment
Segment
Code
Données
64 Ko
suppl
64 Ko
@_p = CS × 16 + FFFFH = 2233FH 89
Mémoire
00000H
CS × 16 = 123A0H
EA = 341BH
Code Segment
CS × 16 + 341BH = 157BBH Instruction (CS=123AH)
CS × 16 + FFFFH = 2239FH
223A0H
FFFFFH
90
CS × 16
Code segment
DS × 16
Data segment
SS × 16
Stack segment
ES × 16
Extra segment
91
Mémoire
00000H
CS × 16 = 02000H
EA = 0600H
Code Segment
CS × 16 + 0600H = 02600H (CS=0200H)
Instruction i
CS × 16 = 1A300H
EA = 0600H
Code Segment
CS × 16 + 0600H = 1A900H (CS=1A30H)
Instruction i
après relocation
FFFFFH 92
00000H
Data segment
64 K bytes Variables Utilisées
Code segment
64 K bytes
Pas chevauchement
des segments (No
FFFFFH segment overlapping) 93
00000H
Variables Utilisées
Data segment
64 K bytes
Code segment
64 K bytes
Pas chevauchement
des segments (No
FFFFFH segment overlapping) 94
00000H
Variables Utilisées
Data segment
64 K bytes
Code segment
64 K bytes
Chevauchement
des segments (segment
overlapping)
FFFFFH 95
Chevauchement
des segments (segment
00000H overlapping)
00200H
Variables Utilisées (7 octets)
00206H
DS
64 Kb
00210H
Code segment
64 K bytes
96
FILE D’INSTRUCTIONS (Instruction Queue)
Mémoire Centrale
7 0
6
B
y
t
e
s
UCC (Décodeur) Lors d’un branchement, la file est
remise à zéro (FLUSHED OUT)
97
La pile
Segmentation de la mémoire
@Segment @Offset
1 1 1 1
Ecriture Segment 11 1 1 1 0
Segment:Offset 1 1 0 1
1 1 0 0
1 0 1 1
11:01 Segment 10 1 0 1 0
1 0 0 1
1 0 0 0
10:01 0 1 1 1
Segment 01 0 1 1 0
0 1 0 1
00:10 0 1 0 0
0 0 1 1
0 0 1 0
Segment 00 0 0 0 1
0 0 0 0
98
La pile
La pile
La pile est une structure de la
mémoire centrale
Utilise le principe de LIFO (Last In
First Out) 1 1 1 1
1 1 1 0
SP est un registre qui pointe au 1 1 0 1
sommet de la pile 1 1 0 0
Manipulée par les instructions PUSH 1 0 1 1
et POP 1 0 1 0
1 0 0 1
Sauvegarde l’adresses de retour lors 1 0 0 0
des appels des procédures 0 1 1 1
SS=01 0 1 1 0
0 1 0 1 SP
xxxxx 0 1 0 0
The stack is a structure of main memory 0 0 1 1
Uses the LIFO (Last In First Out) principle 0 0 1 0
SP is a register that points to the top of the stack 0 0 0 1
0 0 0 0
Controlled by the PUSH and POP instructions
Saves the return address when calling procedures
99
La pile
La pile
10: offset1: Ins 1
10: offset2: Ins 2
10: offset3: CALL PROC
10: offset4: Ins 4
PROC 1 1 1 1
10:offset: Inst 1 1 1 1 0
10:offset: Inst 2 1 1 0 1
RET
1 1 0 0
1 0 1 1
1 0 1 0
1 0 0 1
1 0 0 0
0 1 1 1
SS=01 0 1 1 0
0 1 0 1 SP
xxxxx 0 1 0 0
0 0 1 1
0 0 1 0
0 0 0 1
0 0 0 0
100
Les mémoires internes
RAM
SRAM DRAM
Random Access
Volatile Elle est de taille
Elle est de taille
réduite Lecture/Ecriture supérieure
Temps d’accès Temps d’accès
rapide important
Utilisée dans les Utilisée dans la
mémoires caches mémoire centrale
Consomme Consomme plus
moins d’énergie d’énergie
Chère Abordable 101
Mémoire cache
UNITES
D’ENTREE CPU UNITES DE
SORTIE
Mémoire cache Rapide + de
(SRAM) petite taille
MÉMOIRE MÉMOIRE
CENTRALE SECONDAIRE
102
Mémoire cache
UNITES UNITES DE
D’ENTREE SORTIE
CPU
2 1 1 4
Succès de cache Mémoire cache Echec de cache
(Hit) (SRAM) (Miss)
2 3
MÉMOIRE
MÉMOIRE
CENTRALE
SECONDAIRE
103
104
Laisser de coté le
bit de validité
105
Mémoire cache
Principe de localité
Le principe de localité affirme que les informations auxquelles va accéder le
processeur ont une forte probabilité d’être localisées dans une fenêtre
spatiale et une fenêtre temporelle
Localité Temporelle Localité Spatiale
Un programme qui a Un programme qui a manipulé
manipulé une information une information dans un passé
dans un passé proche à de proche à de très grandes
très grandes chances de la chances de manipuler des
manipuler à nouveau peu informations proches de
de temps après l’information de départ peu de
temps après
106
Mémoire cache
Localité Temporelle Localité Spatiale
Boucle Pour Tableau T
Index Contenu
- Instruction 1; (x)
T[1] Val 1
- Instruction 2; (x,y) BLOC T[2] Val 2
- Instruction 3;
- ….; MÉMOIRE T[3] Val 3
-
-
….;
….;
Bloc = k
- ….; mots
- Instruction N;
mémoires T[i] Val i
107