Académique Documents
Professionnel Documents
Culture Documents
Mémoires
Jean-Marc Talbot
jtalbot@cmi.univ-mrs.fr
L3 Informatique - Université de Provence () Architecture des ordinateurs 120 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 121 / 158
différentes technologies :
unité de base : 1 bit (0 ou 1)
Electronique - Magnétique - Optique
octet (byte) = groupe de 8 bits
différentes caractéristiques :
mot = regroupement d’octets (8 bits, 16 bits, 32 bits, ...) I capacité
I unité d’information adressable en mémoire I temps d’accès
I débit
un KiloOctet = 210 octets = 1024 octes = 1 Ko I volatilité
un MegaOctet = 210 Ko = 1 Mo
un GigaOctet = 210 Mo = 1 Go
un TeraOctet = 210 Go = 1 To
L3 Informatique - Université de Provence () Architecture des ordinateurs 122 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 123 / 158
Performances des mémoires Types de mémoires (I)
temps d’accès : temps qui sépare une demande de vitesse
lecture/écriture et sa réalisation ta + −
débit (ou bande passante) : nombre de bits maximum transmis Mémoire centrale
par seconde
Disques durs
en cas d’accès en temps uniforme au données
n − Bandes - Disques optiques +
B= n est le nombre de bits transférés par cycle
tc capacité
L3 Informatique - Université de Provence () Architecture des ordinateurs 124 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 125 / 158
mémoire centrale
vitesse (temps d’accès) vitesse (débit) capacité
registres < 1 ns > 50 Go/s < 100 octets
cache 2 - 5 ns 5 - 20 Go/s 100 Ko - 1 Mo
registres
mémoire
20 ns 1 Go/s 256 Mo - 4 Go
centrale
disque dur 1-10 ms 300 Mo/s 50 Go - 500 Go cache
carte mère
L3 Informatique - Université de Provence () Architecture des ordinateurs 126 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 127 / 158
Méthodes d’accès Types de mémoire
Accès séquentiel
I pour accéder à une information, il faut parcourir toutes les Sur la carte mère cohabite
informations qui la précède
I exemple : bandes magnétiques
Mémoires persistantes (mémoires mortes - ROM)
Accès direct I leur contenu est fixé (ou presque)
I chaque information possède une adresse propre, à laquelle on peut I et conservé en permanence même hors alimentation électrique
accéder directement
I exemple : mémoire centrale de l’ordinateur
Mémoires volatiles (mémoires vives - RAM)
Accès semi-séquentiel I leur contenu est modifiable
I intermédiaire entre séquentiel et direct I et perdu hors alimentation électrique
I exemple : disque dur
F accès direct au cylindre
F accès séquentiel au secteur sur un cylindre
Accès associatif
ROM = Read Only Memory RAM = Random Access Memory
I une information est identifiée par sa clé
I on accède à une information via sa clé
I exemple : mémoire cache
L3 Informatique - Université de Provence () Architecture des ordinateurs 128 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 129 / 158
L3 Informatique - Université de Provence () Architecture des ordinateurs 130 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 131 / 158
Mémoires volatiles (RAM) (II) Décodeurs - multiplexeurs : rappels (I)
Un décodeur permet de décoder un mot binaire : il comprend n
entrées et 2n sorties.
2 types de RAM
la i ème sortie de décodeur vaut 1 si les n entrées forment l’entier
SRAM : Static RAM binaire i.
décodeur 3 vers 8
L3 Informatique - Université de Provence () Architecture des ordinateurs 132 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 133 / 158
L3 Informatique - Université de Provence () Architecture des ordinateurs 134 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 135 / 158
Registres (II) Bancs de registres (I)
Réalisation :
Un banc de registres de hauteur n et de largeur k est
registre 1-bit = 1 bascule RS (ou D) un ensemble de n registres de k bits
registre n-bits = n bascules RS (ou D) en parallèle une mémoire de n adresses
registre 4 bits
Exemple :
L3 Informatique - Université de Provence () Architecture des ordinateurs 136 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 137 / 158
L3 Informatique - Université de Provence () Architecture des ordinateurs 138 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 139 / 158
Bancs de registres (IV) Bancs de registres (V)
Fontionnement en écriture :
L3 Informatique - Université de Provence () Architecture des ordinateurs 140 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 141 / 158
Rappels :
Mémoire de type DRAM
L3 Informatique - Université de Provence () Architecture des ordinateurs 146 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 147 / 158
Fonctionnement de la mémoire (III) Fonctionnement de la mémoire (IV)
Optimisations
Protocoles échanges processeur-mémoire
mémoire synchrone (synchronisée avec le bus) : SDRAM
Synchrone : au bout de k unités de temps, le processeur Pour les mémoires matriciels, accès en mode page : on charge
suppose que l’opération sur la mémoire a été réalisée (mot écrit ligne et colonne, puis on ne change que les colonnes pour les
en mémoire, mot lu disponible sur la sortie) accès suivants (localité des données) : DRAM FPM
Asynchrone (handshaking) : processeur et mémoire Pour les mémoires matriciels, accès en rafale (burst) : on charge
s’échangent des informations de contrôle (request/ ligne et colonne ainsi que le nombre de données à lire ;
acknowledgment) incrémentation dans la mémoire des colonnes pour les accès
suivants (localité des données). DDR-SDRAM
L3 Informatique - Université de Provence () Architecture des ordinateurs 148 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 149 / 158
L3 Informatique - Université de Provence () Architecture des ordinateurs 150 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 151 / 158
Assemblage de boitiers mémoire (III) Mémoire et erreurs
Augmentation du nombres de mots
4 boitiers mémoires de 2k mots de n bits =⇒ un bloc de 4 ∗ 2k mots de
n bits Du fait de sa nature “physique”, les informations en mémoire peuvent
adresse pour le nouveau bloc sur k + 2 bits comporter une ou des erreurs.
L3 Informatique - Université de Provence () Architecture des ordinateurs 152 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 153 / 158
L3 Informatique - Université de Provence () Architecture des ordinateurs 154 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 155 / 158
Mémoire Logique (III) Mémoire Logique (IV)
On a donc 2B blocs ayant chacun 2N−B cases.
L3 Informatique - Université de Provence () Architecture des ordinateurs 156 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 157 / 158
Mémoire Virtuelle
Mécanisme de swap
Langage d’assemblage
Jean-Marc Talbot
jtalbot@cmi.univ-mrs.fr
L3 Informatique - Université de Provence () Architecture des ordinateurs 211 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 212 / 256
un certain nombre de registres : Le langage est défini par un ensemble d’instructions que le
I utilisable/modifiable directement par le programme : registres de processeur exécute directement
travail - pointeur de segment Chaque instruction correspond à un nombre (codé selon le cas sur un
octet, un mot de 16 bits, ... : le format de l’instruction) et se
registres vu par le jeu d’instructions
décompose en
I modifiable indirectement par le programme : compteur ordinal - une partie codant l’opération à exécuter appelé opcode ou code
pointeur de pile - registre d’instruction - registre d’états opération
registres manipulés implicitement par le jeu d’instructions une partie pour les opérandes
Code op Operandes
un certain nombre de manière d’accéder à la mémoire : modes
d’adressage
L3 Informatique - Université de Provence () Architecture des ordinateurs 213 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 214 / 256
Langage machine (II) Jeu d’instructions
L3 Informatique - Université de Provence () Architecture des ordinateurs 215 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 216 / 256
L3 Informatique - Université de Provence () Architecture des ordinateurs 217 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 218 / 256
Modes d’adressage (I) Modes d’adressage (II)
Les instructions du langage machine manipulent des données. Selon adressage direct (ou direct restreint) : Operandes est l’adresse
où ces données se trouvent, on parle de différents modes (ou un fragment de l’adresse) où se trouve la donnée en mémoire.
d’adressage.
adressage relatif : Operandes contient un déplacement relatif par
rapport à une adresse qui se trouve dans un registre précis (par
Code op Operandes exemple, le compteur ordinal PC).
Comment interpréter Operandes pour trouver les données de adressage indirect : Operandes contient le numéro d’un registre
l’instruction Code op ? dont le contenu est l’adresse où se trouve la donnée en mémoire.
adressage implicite : l’instruction opère sur une donnée qui se adressage (indirect) indexé : Operandes contient le numéro d’un
trouve à un emplacement précis et déterminé. registre contenant une adresse a. La donnée est en mémoire à
I manipulation du registre d’états (Pentium) l’adresse a + i, où i est le contenu d’un autre registre dans
Operandes ou d’un registre spécifique, appelé registre d’index
adressage par registres : Operandes contient le(s) numéro(s) du
(des) registre(s) où se trouvent les données manipulées par adressage immédiat : Operandes est la valeur utilisée par
l’instruction. l’instruction
L3 Informatique - Université de Provence () Architecture des ordinateurs 219 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 220 / 256
D’un programme de haut niveau à son exécution Cycle d’exécution d’une instruction
1 Récupérer (en mémoire) l’instruction à exécuter :
programme C .c RI ← Mémoire[PC]
↓ L’instruction à exécuter est présente en mémoire à l’adresse
Compilateur contenue dans le compteur de programme PC et est placé dans
↓ le registre d’instruction RI.
module langage machine .o
↓ 2 Le compteur de programme est incrémenté : PC ← PC + 4
Editeur de lien ← librairies langage machine .o Par défaut, la prochaine instruction à exécuter est la suivante en
↓ mémoire (sauf si l’instruction est un saut)
programme langage machine .exe
↓ 3 L’instruction est décodée : On identifie les opérations qui vont
Chargeur devoir être réalisées pour exécuter l’instruction
↓
mémoire 4 L’instruction est exécutée : elle peut modifier les registres
(opérations arithmétiques - lecture en mémoire), la mémoire
(écriture), le registre PC (instructions de saut)
L3 Informatique - Université de Provence () Architecture des ordinateurs 221 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 222 / 256
Assembleur Assembleur MIPS
L3 Informatique - Université de Provence () Architecture des ordinateurs 223 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 224 / 256
32 registres de 32 bits
Mémoire de 232 octets = 230 mots de 32 bits
une mémoire vive adressable de 232 octets
un compteur de programmes PC (Program Counter) sur 32 bits Les mots mémoires sont adressés par des adresses qui sont des
un registre d’instruction RI sur 32 bits multiples de 4
L3 Informatique - Université de Provence () Architecture des ordinateurs 225 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 226 / 256
Registres MIPS Arithmétique (I)
Les 32 registres du processeur MIPS sont :
L3 Informatique - Université de Provence () Architecture des ordinateurs 227 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 228 / 256
Code C Assembleur Sachant que A7→$s0, B7→$s1 et que le registre $0 vaut toujours 0 on
add $t0, $s1, $s2 peut écrire :
A = B + C + D
add $s0, $t0, $s3 add $s0, $0, $s1
E = F - A
sub $s4, $s5, $s0
Il vaut mieux utiliser l’instruction move :
Ici, A7→$s0, B7→$s1, C7→$s2, D7→$s3, E7→$s4, F7→$s5.
Toutes les opérations arithmétiques ont trois opérandes Code C Assembleur
A = B move $s0, $s1
Nécessaire car une instruction doit se coder sur un nombre borné de
bits.
move est une pseudo-instruction : sa traduction en langage machine
est celle de add $s0, $0, $s1.
L3 Informatique - Université de Provence () Architecture des ordinateurs 229 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 230 / 256
Pseudo-instruction li Lecture-Ecriture dans la mémoire principale
li r, imm (load immediate) charge la valeur imm (sur 32 bits)
dans le registre r.
Les deux instructions lw (load word = lecture) et sw (store word =
écriture) permettent les échanges entre la mémoire centrale et les
est assemblé comme lui r, immh
registres.
ori r, imml
où
syntaxe
immh,imml sont respectivement les 16 bits de poids fort et de
poids faible de imm lw $2, 10($3) copie dans le registre $2 la valeur située dans la
mémoire principale à l’adresse m obtenue en ajoutant 10 au nombre
lui r, immh (load upper immediate) utilise les 16 bits de immh stocké dans la registre $3.
pour initialiser les 16 bits de poids fort du registre r, les 16 bits de sw $2, 15($1) copie la valeur présente dans le registre $2 dans
poids faible étant mis à 0. dans la mémoire principale à l’adresse m obtenue en ajoutant 15 au
nombre stocké dans la registre $1.
ori r, imml : réalise un “ou logique” entre les 16 bits de imml
(étendus à 32 bits en mettant ceux de poids fort à 0) et le contenu
de r, le résultat étant placé dans r
L3 Informatique - Université de Provence () Architecture des ordinateurs 231 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 232 / 256
Syntaxe
j Label
La prochaine instruction à exécuter est celle placée après l’étiquette
Label : PC ← Label.
jr registre
La prochaine instruction à exécuter est celle à l’adresse se trouvant
dans le registre registre : PC ← registre.
Code C Assembleur
jal Label beq $s4, $s5, Lab1
La prochaine instruction à exécuter est celle placée après l’étiquette add $s6, $s4, $s5
if (i !=j) h =i+j
Label et l’adresse de l’instruction suivant l’instruction courante j Lab2
else h =i-j
(adresse de retour) est stockée dans $ra : $ra ← PC + 4, Lab1 :sub $s6, $s4, $s5
PC ← Label. Lab2 :
Ici, i7→$s4, j7→$s5, h7→$s6.
L3 Informatique - Université de Provence () Architecture des ordinateurs 235 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 236 / 256
L3 Informatique - Université de Provence () Architecture des ordinateurs 237 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 238 / 256
Appel de sous-programmes (II) Appel de sous-programmes : pile
Une pile est une mémoire qui se manipule via deux opérations :
Solution :
push : empiler un élément (le contenu d’un registre) au sommet
Sauvegarder la valeur des registres (en mémoire) de l’appelant et
de la pile
restaurer ces valeurs à l’issue de l’appel
pop : dépiler un élément (et le récupérer dans un registre)
Sauvegarder l’adresse de retour du programme appelant en
mémoire
Ces deux instructions n’existent pas en assembleur MIPS, mais elles
peuvent être “simulées”
On sauvegarde les (une partie des) registres en mémoire dans une
pile. en utilisant les instructions sw et lw
en stockant l’adresse du sommet de pile dans le registre $sp (le
Les registres $a0-$a3 sont ceux qui ne sont pas sauvegardés car ils pointeur de pile)
contiennent lors de l’appel la valeur des paramètres effectifs et au
retour les valeurs retournés par le sous-programme.
Traditionnellement, la pile croı̂t vers les adresses les moins élevées.
L3 Informatique - Université de Provence () Architecture des ordinateurs 239 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 240 / 256
L3 Informatique - Université de Provence () Architecture des ordinateurs 241 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 242 / 256
Appel de sous-programmes : exemple De l’assembleur à l’exécution
programme assembleur .s
adresses hautes
.. .. .. ↓
. . . Compilateur / Assembleur
.. .. ..
. . . ↓
.. .. .. module langage machine .o
. . .
$sp → $s0 (B) $sp → ↓
$s1 (B) Editeur de lien ← librairies langage machine .o
$ra (B) ↓
$sp → programme langage machine .exe
↓
Chargeur
adresses basses ↓
mémoire
L3 Informatique - Université de Provence () Architecture des ordinateurs 243 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 244 / 256
6 bits 26 bits
Code op Opérandes
Codage des instructions assembleur / Assemblage 26 = 64 opérateurs possibles
Format I :
Format I :
L3 Informatique - Université de Provence () Architecture des ordinateurs 247 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 248 / 256
Format J
Pour les instructions de type I : 16 bits
L3 Informatique - Université de Provence () Architecture des ordinateurs 249 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 250 / 256
Format d’instructions R (I) Format d’instructions R (II)
Format R :
Format R :
op rs rt rd sa fu
6 bits 5bits 5bits 5bits 5bits 6bits add $1,$2,$3 0 2 3 1 0 32
Code op rs rt rd sa fu sub $1,$2,$3 0 2 3 1 0 34
slt $1,$2,$3 0 2 3 1 0 42
rs : registre source 1 jr $31 0 31 0 0 0 8
rt : registre source 2
rd : registre destination sub $1,$2,$3 : soustrait $3 de $2 et place le résultat dans $1.
sa : nombre de décalage à effectuer (shift amount)
fu : identificateur de la fonction slt $1,$2,$3 (set less than) : met $1 à 1 si $2 est inférieur à
$3 et à 0 sinon.
L3 Informatique - Université de Provence () Architecture des ordinateurs 251 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 252 / 256
car
avec i 7→ $19, j 7→ $20, k 7→ $21 et $10 est initialisé à 4.
PC
z }| {
80008 + 4 + 2 ∗ 4
20000 ∗ 4 = 80000
L3 Informatique - Université de Provence () Architecture des ordinateurs 253 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 254 / 256
Mode d’adressages (I) Mode d’adressages (II)
L3 Informatique - Université de Provence () Architecture des ordinateurs 255 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 256 / 256
Architecture des ordinateurs
Licence Informatique - Université de Provence
L3 Informatique - Université de Provence () Architecture des ordinateurs 257 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 258 / 313
Au coeur du processeur
L3 Informatique - Université de Provence () Architecture des ordinateurs 259 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 260 / 313
Unité de calcul Unité de contrôle/commande (I)
Unité arithmétique et logique : ALU
calculs sur les entiers - opérations booléennes
L3 Informatique - Université de Provence () Architecture des ordinateurs 261 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 262 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 263 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 264 / 313
Unité de contrôle/commande (IV) Unité de contrôle/commande (V)
Constitué :
d’un ensemble de registres Constitué :
I registre d’adresse : contient l’adresse de la donnée à lire ou à un horloge qui permet la synchronisation des éléments et des
écrire en mémoire. évènements
I registres de données : contient temporairement la donnée lue ou à
écrire en mémoire.
I registre d’index XR (utilisé dans le mode d’adressage indexé) : un décodeur qui détermine les opérations à exécuter en fonction
l’adresse est obtenue en ajoutant son contenu à l’adresse contenue du code de l’instruction.
dans l’instruction ; peut être incrémenter/décrémenter
automatiquement après son utilisation un séquenceur qui déclenche et coordonne les différentes
parcours efficace de tableaux opérations pour réaliser l’instruction
I registre de base : contient l’adresse (le numéro de segment) à
ajouter aux adresses (relatives) contenues dans les instructions.
L3 Informatique - Université de Provence () Architecture des ordinateurs 265 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 266 / 313
PC 80004
L3 Informatique - Université de Provence () Architecture des ordinateurs 267 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 268 / 313
Cycle d’exécution d’une instruction : exemple (II) Horloge
Cycle de recherche
L3 Informatique - Université de Provence () Architecture des ordinateurs 269 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 270 / 313
Séquenceur micro-programmé :
Réalisation :
I Une ROM contient des micro-programmes composés de
micro-instructions
séquenceur câblé I Le séquenceur sait exécuter les séquences de micro-instructions
séquenceur micro-programmé
L3 Informatique - Université de Provence () Architecture des ordinateurs 271 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 272 / 313
Chemin de données (I) Chemin de données (II)
L3 Informatique - Université de Provence () Architecture des ordinateurs 273 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 274 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 275 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 276 / 313
Composants du processeur MIPS (I) Composants du processeur MIPS (II)
L3 Informatique - Université de Provence () Architecture des ordinateurs 277 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 278 / 313
Registres ALU
L3 Informatique - Université de Provence () Architecture des ordinateurs 279 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 280 / 313
Exécution de : add $1,$2, $3 Exécution de : lw $1, 100($2)
Code op rs rt adresse sur 16 bits
Codeop rs rt rd sa funct
35 2 1 100
0 2 3 1 0 32
L3 Informatique - Université de Provence () Architecture des ordinateurs 281 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 282 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 283 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 284 / 313
Contrôle de l’ALU (II) Contrôle de l’ALU (III)
L3 Informatique - Université de Provence () Architecture des ordinateurs 285 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 286 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 287 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 288 / 313
L’architecture MIPS multi-cycle : cycle d’exécution L’architecture MIPS multi-cycle : unité de contrôle
ALUout ← A+RI[15-0]
si (A==B) alors
Exécution ALUout ← A op B
PC ← ALUout
Mem data ← Mem[ALUout] Mem[ALUout] ← B
Reg(RI[15-0]) ←
Ecriture Reg[RI[15-11]] ← ALUout
Mem data
L3 Informatique - Université de Provence () Architecture des ordinateurs 289 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 290 / 313
L’architecture MIPS multi-cycle : signaux 1 bit L’architecture MIPS multi-cycle : signaux 2 bits
L3 Informatique - Université de Provence () Architecture des ordinateurs 291 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 292 / 313
Conception d’une unité de contrôle Modélisation d’un séquenceur
L3 Informatique - Université de Provence () Architecture des ordinateurs 293 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 294 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 295 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 296 / 313
Chemin de données : état 8 (branch. cond. : beq) Chemin de données : état 9 (branch. incond. : j)
L3 Informatique - Université de Provence () Architecture des ordinateurs 297 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 298 / 313
Chemin de données : état 6 (type R : partie I) Chemin de données : état 7 (type R : partie II)
L3 Informatique - Université de Provence () Architecture des ordinateurs 299 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 300 / 313
Chemin de données : état 2 (sw : partie I) Chemin de données : état 5 (sw : partie II)
L3 Informatique - Université de Provence () Architecture des ordinateurs 301 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 302 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 303 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 304 / 313
Séquenceur : solution microprogrammée Contrôleur de microcode
2 types de microprogrammation :
horizontale
verticale
L3 Informatique - Université de Provence () Architecture des ordinateurs 305 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 306 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 307 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 308 / 313
Microprogrammation verticale Microprogrammation verticale MIPS
00 : send 0000
01 : send 0001
Les microinstructions sont de petite taille et se décomposent en 2 02 : if j 10
parties : 03 : if beq 12
04 : if R-type 14
Codeop données 05 : send 0010
06 : if sw 17
07 : send 0011
Les données prennent un sens selon le Codeop En supposant un codage des signaux
08 : send 0100
09 : goto 00 à émettre pour chacun des états : 10
Jeu d’instructions sophistiqué 10 : send 1001 codes différents ⇒ 4 bits
11 : goto 00
émission de signaux (nécessitant un décodage) 12 : send 1000
saut 13 : goto 00
14 : send 0110
branchement conditionnel 15 : send 0111
... 16 : goto 00
17 : send 0101
18 : goto 00
L3 Informatique - Université de Provence () Architecture des ordinateurs 309 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 310 / 313
L3 Informatique - Université de Provence () Architecture des ordinateurs 311 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 312 / 313
Interruptions - exceptions (III)
Optimisation : pipeline
Jean-Marc Talbot
jtalbot@cmi.univ-mrs.fr
L3 Informatique - Université de Provence () Architecture des ordinateurs 314 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 315 / 352
L3 Informatique - Université de Provence () Architecture des ordinateurs 316 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 317 / 352
Pipeline (III) Aléas dans un pipeline
Le fonctionnement idéal du pipeline se base sur le fait que
chacune des sous-opérations utilise des parties différentes du
chemin de données
les instructions exécutées les unes à la suite des autres sont
indépendantes
L’instruction devant être exécutée après celle en cours d’exécution
est la suivante en mémoire (ou peut être facilement déterminée)
Grande augmentation des performances En pratique, aucune de ces conditions n’est vérifiée ; la violation d’une
Sans : exécution séquentielle de 2 instructions en 10 cycles de ces conditions s’appelle un aléa
Avec : exécution parallèle de 5 instructions en 9 cycles aléa structurel : des parties du chemin de données doivent être
utilisés simultanément par plusieurs étage du pipeline
Gain théorique car nombreux problèmes d’aléas aléa de données : le calcul d’une valeur à un étage du pipeline
nécessite une valeur non encore calculée
En pratique, autour de 12/15 étages dans un pipeline. aléa de contrôle : l’instruction suivante dépend d’une valeur
calculée
L3 Informatique - Université de Provence () Architecture des ordinateurs 318 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 319 / 352
Solution :
arrêter le calcul de $3 tant que $1 n’est pas connu
L3 Informatique - Université de Provence () Architecture des ordinateurs 322 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 323 / 352
Prédiction statique :
I on suppose que le test réalisé est faux : pas de saut (Intel 486) La qualité d’une méthode de prédiction est donnée par
I on suppose que le saut est effectué si c’est un saut arrière le nombre de succès de la prédiction
I le compilateur choisit le sens au moment de la production du code
l’efficacité de cet algorithme
Prédiction dynamique :
des informations concernant les branchements du programme ATTENTION : en cas de prédiction erronée, le pipeline doit être vidé.
sont stockés au cours de l’exécution et utilisées pour réaliser les
prédictions de branchement futurs.
L3 Informatique - Université de Provence () Architecture des ordinateurs 324 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 325 / 352
Mémoire cache (I)
Optimisation : mémoire cache Mais la mémoire centrale ne peut fournir raisonnablement ces
données à la vitesse dont le processeur en a besoin
L3 Informatique - Université de Provence () Architecture des ordinateurs 326 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 327 / 352
L3 Informatique - Université de Provence () Architecture des ordinateurs 328 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 329 / 352
Mémoire cache : niveaux de cache (I) Mémoire cache : niveaux de cache (II)
La mémoire cache sert à combler la différence de vitesse entre le 2 relations possibles pour les niveaux L1 et L2
processeur et la mémoire centrale.
Cache inclusif :
La mémoire cache se divise généralement en deux parties
I le contenu de L1 est également dans L2 (Le contenu de L1 est
une mémoire cache de niveau 1 (L1) au sein du processeur et inclus dans L2) (L1 contient une copie de L2)
allant à sa vitesse I L2 est une copie partielle de la mémoire centrale et L1 est une
copie partielle de L2
une mémoire cache de niveau 2 (L2) de taille supérieure au I taille de la mémoire cache = taille de L2
niveau 1 mais d’accès plus lent.
Cache exclusif :
I le contenu de L1 n’est pas présent dans L2 (Les contenus de L1 et
L2 sont exclus mutuellement)
I L2 contient le trop-plein de L1 : quand L1 est plein, on transvase
vers L2 et inversement si une données redevient intéressante.
I taille de la mémoire cache = taille de L1 + taille de L2
L3 Informatique - Université de Provence () Architecture des ordinateurs 330 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 331 / 352
Cache inclusif :
⊕ Cache L2 plus performant La mémoire cache est de type SRAM
Taille totale plus faible
Taille de L2 ne doit pas être trop petite par rapport à celle de L1
La mémoire centrale stocke de manière contiguë des données, les
adresses se suivent.
Cache exclusif : Les mémoires caches doivent utiliser un principe différent, car les
⊕ Cache plus grand au total
mots qu’elles vont stocker ont des adresses quelconques, qui ne se
⊕ L2 de taille quelconque suivent pas forcément.
la non-duplication des données entre L1 et L2 est très coûteuse :
L2 est moins performant Les mémoires caches sont des mémoires associatives.
mémoire associative :
L3 Informatique - Université de Provence () Architecture des ordinateurs 336 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 337 / 352
Fonctionnement de la mémoire cache (III) Gestion du contenu de la mémoire cache (I)
L3 Informatique - Université de Provence () Architecture des ordinateurs 338 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 339 / 352
Gestion du contenu de la mémoire cache (II) Gestion du contenu de la mémoire cache (III)
L3 Informatique - Université de Provence () Architecture des ordinateurs 340 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 341 / 352
Gestion du contenu de la mémoire cache (IV) Gestion du contenu de la mémoire cache (V)
L3 Informatique - Université de Provence () Architecture des ordinateurs 342 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 343 / 352
Gestion du contenu de la mémoire cache (VI) Cohérence des données entre cache et mémoire (I)
L3 Informatique - Université de Provence () Architecture des ordinateurs 344 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 345 / 352
Cohérence des données entre cache et mémoire (II) Correspondance lignes cache/mémoire (I)
Cohérence cache/mémoire lors d’une opération d’écriture
L3 Informatique - Université de Provence () Architecture des ordinateurs 346 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 347 / 352
Une ligne mémoire ne peut aller que dans une ligne du cache
Trois méthodes pour gérer la correspondance entre lignes du cache et L lignes de cache
lignes de la mémoire centrale :
la ligne d’adresse j de la mémoire centrale est gérée par la ligne i
du cache
Correspondance directe (Direct mapping)
I i = j mod L
Correspondance associative totale (Fully associative mapping) I A partir de l’adresse d’une ligne mémoire, on sait dans quelle ligne
Correspondance associative par ensemble (N-way set associative du cache elle doit se trouver.
mapping)
une ligne de cache étant partagée par plusieurs lignes de la
mémoire centrale, on garde donc l’information sur la donnée
effectivement présente dans le cache
L3 Informatique - Université de Provence () Architecture des ordinateurs 348 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 349 / 352
Correspondance directe (II) Correspondance associative totale
L3 Informatique - Université de Provence () Architecture des ordinateurs 350 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 351 / 352