Vous êtes sur la page 1sur 47

Architecture des ordinateurs

Licence Informatique - Université de Provence

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

Mémoires Mémoires (II)


mémoire : dispositif permettant d’enregistrer, de conserver et de
restituer de l’information.

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 + −

temps de cycle : temps minimum entre deux accès à la mémoire registres


tc

On a ta < tc (stabilisation des signaux, synchronisation, ...)


Cache

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

Types de mémoires (II) Mémoires : localisations

processeur mémoire de masse

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

Mémoires mortes (ROM) Mémoires volatiles (RAM) (I)


2 types de RAM
ROM (Read Only Memory) : information stockée au moment de la
DRAM : Dynamic RAM
conception du circuit.

Dynamique : l’information doit être périodiquement rafraı̂chie


PROM (Programmable Read Only Memory) : mémoire
réalisation :
programmble par un utilisateur final mais une seule fois I 1 bit = 1 transistor + 1 condensateur
I le condensateur stocke l’information
EPROM (Erasable Programmable Read Only Memory) : mémoire I Doit être rafraı̂chit régulièrement (pour conserver la valeur stockée
dans le condensateur)
(re)programmable et effaçable par ultraviolet. F ralentit la vitesse d’accès à la mémoire
peu coûteuse
EEPROM (Electrically Erasable Programmable Read Only
Memory) : mémoire (re)programmable et effaçable
électriquement.
I exemple : Bios (“flashable”) - lecteur MP3

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.

Statique : l’information n’a pas besoin d’être rafraı̂chie


réalisation : s0
e0 s1
e1 s2
I 1 bit = 4 transistors = 2 portes NOR
I Bascule RS (ou D) qui stocke l’information Décodeur
en−1 s2n −2
F beaucoup plus rapide que la DRAM en s2n −1
s2n
beaucoup plus cher que la DRAM

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

Décodeurs - multiplexeurs : rappels (II) Registres (I)


Un multiplexeur comporte 2n entrées, 1 sortie et n lignes de
sélection (entrées).
mémoire de type SRAM

la sortie du multiplexeur vaut la valeur de la i ème entrée si l’entier


intégrés au cœur du processeur
i est codé sur les lignes de sélection.
un registre stocke les informations relatives à une instruction
I opérandes nécessaires à l’instruction
e0
e1
e2
I résultats produits par l’instruction
Multiplexeur s très peu nombreux (< 20)
e2n −2 (MUX)
e2n −1
e2n
très rapides (cadencés à la vitesse du processeur)

Nous en reparlerons lors de l’étude du processeur


l0 l1 ln−1
ln
multiplexeur 4 vers 1

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 :

Une banc de n registres de 3 bits avec


un port d’écriture
deux ports de lecture (lors d’une lecture le contenu de deux
registres est lu même temps.)

L3 Informatique - Université de Provence () Architecture des ordinateurs 136 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 137 / 158

Bancs de registres (II) Bancs de registres (III)


Exemple d’utilisation :
Fonctionnement en lecture : (2 registres en parallèle)

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

Mémoire centrale Organisation de la Mémoire centrale


Mémoire unidimensionnelle

Rappels :
Mémoire de type DRAM

l’information y est stockée comme des mots (mémoire) d’un


certain nombre de bits (8, 16, 32, 64 bits) : la longueur des mots
est le format de la mémoire.

vitesse relativement lente (comparée à celle du processeur)

Nombre de portes dans le décodeur trop important


L3 Informatique - Université de Provence () Architecture des ordinateurs 142 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 143 / 158
Organisation de la Mémoire centrale (II) Organisation de la Mémoire centrale (III)
Mémoire bidimensionnelle utilisation d’un décodeur pour les lignes et un pour Mémoire matricielle (organisée comme une matrice carrée)
les colonnes
Utilisation des mêmes lignes d’adresses utilisées pour les lignes et les
colonnes.

Chargement de l’adresse en deux temps et stocké dans deux registres

CAS : Column Address Strobe


RAS : Row Address Strobe
L3 Informatique - Université de Provence () Architecture des ordinateurs 144 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 145 / 158

Fonctionnement de la mémoire (I) Fonctionnement de la mémoire (II)


Cycle de lecture Cycle d’écriture
établissement de l’adresse
établissement de l’adresse
signal de lecture (R/W=0 par exemple)
sélection du boitier (CS=0) sélection du boitier (CS=0)
Après un certain temps, l’information apparaı̂t sur la sortie et reste établissement de la donnée sur l’entrée
présente jusqu’à la fin du cycle. signal d’écriture (R/W=0 ci-dessous)

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

Assemblage de boitiers mémoire (I) Assemblage de boitiers mémoire (II)


Augmentation de la taille des mots
2 boitiers de 2k mots de n bits =⇒ un bloc de 2k mots de 2n bits
Les mémoires sont regroupés dans des boitiers mémoire.

Du aux limites technologiques d’intégration, pour obtenir des


mémoires de grandes tailles, on associe plusieurs boitiers mémoires.

Ces blocs sont assemblés :


pour augmenter la taille des mots de la mémoire
pour augmenter le nombre de mots dans la mémoire

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.

Pour détecter et corriger, on ajoute des bits de contrôle.

bit de parité : 1 bit supplémentaire (en plus des bits de données)


tel que le nombre de bits à 1 est pair
mémoire ECC (Error Correction Coding) possède des bits
supplémentaires pour détecter et corriger le(s) bit(s) erroné(s).

L3 Informatique - Université de Provence () Architecture des ordinateurs 152 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 153 / 158

Mémoire Logique (I) Mémoire Logique (II)


Pour un mot mémoire de 32 bits, il existe 2 façons de ranger les octets
qui le compose :
La mémoire logique est la façon dont le processeur (ou le Le mot de poids fort est stocké en premier : big-endian
programmeur) voit la mémoire (physique).
i i+1 i+2 i+3
La mémoire est définie comme un ensemble de N octets consécutifs Octet 3 Octet 2 Octet 1 Octet 0
dont Le mot de poids fort est stocké en dernier : little-endian
la première adresse est 0 i i+1 i+2 i+3
la dernière adresse est N − 1 Octet 0 Octet 1 Octet 2 Octet 3
Adressage de la mémoire par des mots de : 8 (octet), 16, 32, 64, .. bits.
Un mot de 32 bits est constitué de 4 octets consécutifs Un mot mémoire ne peut commencer n’importe où
les mots de 16 bits commencent sur des adresses paires
les mots de 32 bits commencent sur des adresses multiples de 4

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.

Segmentation de la mémoire : découpage logique de la mémoire en


un certain certains nombres de blocs (ou segments)

Une adresse est codée comme


un numéro de blocs
un déplacement dans le bloc (offset)

N bits d’adresses =⇒ 2N cases mémoire.

Les N bits sont séparés en deux :


B bits (de poids fort) pour le numéro de bloc
N − B bits (de poids faible) pour le déplacement dans le bloc

L3 Informatique - Université de Provence () Architecture des ordinateurs 156 / 158 L3 Informatique - Université de Provence () Architecture des ordinateurs 157 / 158

Mémoire Virtuelle

La mémoire physique n’est qu’une partie de la mémoire disponible : le


système permet l’utilisation de la mémoire de masse (disque durs)
comme de la mémoire virtuelle.

Pagination de la mémoire virtuelle

Mécanisme de swap

L3 Informatique - Université de Provence () Architecture des ordinateurs 158 / 158


Architecture des ordinateurs
Licence Informatique - Université de Provence

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

Processeur et Programmation Langage machine (I)


D’un point de vue de la programmation, le processeur offre
Le langage machine est le langage directement interprétable par le
processeur.
un certain jeu d’instructions qu’il sait exécuter.

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

Un programme en langage machine est une suite de mots codant


opérations et opérandes Le jeu d’instructions est l’ensemble des opérations élémentaires
qu’un processeur peut accomplir.

adresse programme Le type de jeu d’instructions d’un processeur détermine son


0x2024 00F1 architecture.
0x2026 00AA
Deux types d’architectures
0x2028 00F1
0x202A 0B28 RISC (Reduced Instruction Set Computer)
0x202C 00F1 PowerPC, MIPS, Sparc
0x202E 0C91
0x2030 0001 CISC (Complex Instruction Set Computer)
Pentium
Chaque processeur possède son propre langage machine.

L3 Informatique - Université de Provence () Architecture des ordinateurs 215 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 216 / 256

RISC/CISC (I) RISC/CISC (II)


CISC
⊕ programmation de plus haut niveau
RISC : ⊕ programmation plus compacte (écriture plus rapide et plus élégante
I jeu d’instructions de taille limitée des applications)
I instructions simples ⊕ moins d’occupation en mémoire et à l’exécution
I format des instructions petit et fixé complexifie le processeur
I modes d’adressage réduits taille des instructions élevée et variable : pas de structure fixe
exécution des instructions : complexe et peu performante.
CISC :
I jeu d’instructions de taille importante
I instructions pouvant être complexes RISC
I format d’instructions variables (de 1 à 5 mots) ⊕ instructions de format standard
I modes d’adressages complexes. ⊕ traitement plus efficace
⊕ possibilité de pipeline plus efficace
programmes plus volumineux
compilation plus compliquée

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

Le langage assembleur ou assembleur est le langage de


programmation.
Assembleur du processeur MIPS R2000 (processeur de type RISC)
C’est une version lisible par un humain du langage machine, obtenu
en remplaçant les valeurs entières du langage machine par des processeur MIPS :
mnémoniques (instruction du langage assembleur).
NEC, SGI, console (Sony PSP, PS2), AdslBox (FreeBox, NeufBox)
Pour un même langage machine, il peut exister différents langages
assembleur : variation sur la syntaxe. Assembleur proche des autres assembleurs RISC

assembleur : programme qui transforme du langage assembleur en


langage machine.

L3 Informatique - Université de Provence () Architecture des ordinateurs 223 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 224 / 256

Processeur MIPS Mémoire


Processeur 32 bits constitué de

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

bus d’adresses de 32 bits


le programme est stocké en mémoire
bus de données de 8 bits
l’adresse de l’instruction en cours d’exécution est stockée dans le
registre PC
l’instruction en cours d’exécution est stockée dans le registre RI

NB : une instruction est codée sur 32 bits.

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 :

Nom Numéro Description


Code C Assembleur
$zero 0 constante 0
A = B + C add $s0, $s1, $s2
$at 1 réservé à l’assembleur
$v0,$v1 2-3 résultats d’évaluation
$a0,..,$a3 4-7 arguments de procédure Toutes les opérandes se trouvent dans des registres.
$t0,..,$t7 8-15 valeurs temporaires
$s0,..,$s7 16-23 sauvegardes Le choix des registres est déterminé par le compilateur : ici, A7→$s0,
$t8,$t9 24-25 temporaires B7→$s1, C7→$s2.
$k0,$k1 26-27 réservé pour les interruptions
$gp 28 pointeur global Le résultat est placé dans $s0, la première opérande
$sp 29 pointeur de pile
$fp 30 pointeur de bloc
$ra 31 adresse de retour

L3 Informatique - Université de Provence () Architecture des ordinateurs 227 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 228 / 256

Arithmétique (II) Pseudo-instruction move

Comment traduire A=B ?

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

Branchements conditionnels (I) Branchements conditionnels (II)

Syntaxe

bne $t0, $t1, Label


Si la valeur contenue dans le registre $t0 n’est pas égale à celle
stockée dans le registre $1 alors la prochaine instruction à exécuter
est celle placée après l’étiquette Label

beq $t0, $t1, Label


Si la valeur contenue dans le registre $t0 est égale à celle stockée
dans le registre $1 alors la prochaine instruction à exécuter est celle Code C Assembleur
placée après l’étiquette Label bne $s0, $s1, Test
if (i==j) h =i+j ; add $s2, $s0, $s1
Test :

Ici, i7→$s0, j7→$s1, h7→$s2.


L3 Informatique - Université de Provence () Architecture des ordinateurs 233 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 234 / 256
Branchements inconditionnels (I) Branchements inconditionnels (II)
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

Branchements inconditionnels (III) Appel de sous-programmes (I)


L’instruction jal SP permet d’exécuter le sous-programme de label SP, la
sauvegarde de l’adresse de retour étant réalisée par cette instruction (dans le
registre $31).

Code C Assembleur Cependant,


li $t2, 0 Le sous-programme peut affecter les valeurs contenues dans les
li $t3, 1 registres au moment de l’appel : pas de notion de variables locales et de
t2=0
while :beq $t1, $0, done portée/masquage de variables.
while (t1 != 0){
add $t2, $t1, $t2
t2 = t2 + t1 La sauvegarde de l’adresse de retour dans un registre ne permet pas
sub $t1, $t1, $t3
t1=t1-1 } l’enchaı̂nement des appels à des sous-programmes, encore moins des
j while
done : sous-programmes récursifs

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

Appel de sous-programmes : politique de gestion de la Appel de sous-programmes : exemple


pile ...
B ... debut de B
...
Deux politiques de sauvegarde des registres : sw $s0,0($sp) sauvegarde de $s0
sw $s1,-4($sp) sauvegarde de $s1
sauvegarde par l’appelant : le programme appelant sauvegarde
sw $ra,-8($sp) sauvegarde de l’adresse de retour de B
tous les registres sur la pile (avant l’appel). li $t0,12
sauvegarde par l’appelé : le programme appelant suppose que add $sp,$sp,-12 ajustement du sommet de pile
tous les registres seront préservés par le sous-programme jal C appel du sous-programme C
appelé. lw $ra,4($sp) restauration de l’adresse de retour de B
lw $s1,8($sp) restauration de $s1
lw $s0,12($sp) sauvegarde de $s0
Quelque soit la politique utilisée, li $t0,12
add $sp,$sp,12 ajustement du sommet de pile
un sous-programme doit rendre la pile intacte ...
jr $ra
... fin de B

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

Format d’instructions MIPS (I)


Rappel : les instructions du langage machine MIPS sont codées sur
32 bits

6 bits 26 bits
Code op Opérandes
Codage des instructions assembleur / Assemblage 26 = 64 opérateurs possibles

Trois formats d’instructions :

Instructions de type immédiat (Format I)


Instructions de type saut (Format J)
Instructions de type registre (Format R)

Les 6 bits du Code op détermine le format de l’instruction.


L3 Informatique - Université de Provence () Architecture des ordinateurs 245 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 246 / 256
Format d’instructions I (I) Format d’instructions I (II)

Format I :
Format I :

6 bits 5bits 5bits 16 bits op rs rt 16 bits


Code op rs rt immédiat/adresse lui $1, 100 15 0 1 100
lw $1, 100($2) 35 2 1 100
rs : registre source sw $1, 100($2) 43 2 1 100
beq $1, $2 ,100 4 1 2 100
rt : registre cible / condition de branchement
bne $1, $2 ,100 5 1 2 100
immédiat/adresse : opérande immédiate ou déplacement
d’adresse

L3 Informatique - Université de Provence () Architecture des ordinateurs 247 / 256 L3 Informatique - Université de Provence () Architecture des ordinateurs 248 / 256

Format d’instructions J Codage des adresses


Les adresses dans les instructions ne sont pas sur 32 bits !

Format J
Pour les instructions de type I : 16 bits

6 bits 26 bits =⇒ Adresse = PC + signé(16 bits) * 4 adressage relatif


Code op adresse
Pour les instructions de type J : 26 bits

op adresse 26 bits =⇒ On obtient l’adresse d’un mot mémoire (de 32 bits) en


j 1000 2 1000 ajoutant devant les 26 bits les 4 bits de poids fort de PC (Il faut
jal 1000 3 1000 multiplier par 4 pour l’adresse d’un octet)

adressage direct restreint

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

Exemple (I) Exemple (II)


Programme chargé à l’adresse 80000 et Tstart vaut 1000

Code C Assembleur MIPS Adresse Contenu


80000 28 19 10 9 0 2
Loop : mul $9, $19, $10 80004 35 9 8 1000
while (tab[i] == k)
lw $8 , Tstart($9) 80008 5 8 21 2
bne $8 , $21, Exit 80012 0 19 20 19 0 32
i = i+j ;
add $19, $19, $20 80016 5 20000
j Loop
Exit :
80020 ....

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

Processeur : description - fonctionnement -


Jean-Marc Talbot microprogrammation
jtalbot@cmi.univ-mrs.fr

L3 Informatique - Université de Provence () Architecture des ordinateurs 257 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 258 / 313

Au coeur du processeur

On trouve au sein d’un processeur :

des éléments de mémorisation : (banc de) registres - cache


Processeur : description
des éléments de calcul : unité arithmétique et logique (UAL-ALU) -
unités de calcul flottant (FPU - Floating Point Unit)

des éléments de commandes : unité de contrôle/commande

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

Unité de calcul flottant : (FPU - Floating Point Unit)


unité qui coordonne le fonctionnement des autres éléments pour
calculs sur les flottants : sqrt, sin, ... exécuter la séquence d’instructions constituant le programme.

unité multimédia : pour exécuter une instruction, deux cycles se succèdent


I recherche de l’instruction à exécuter
calcul vectoriel (même instruction sur plusieurs donnée en I exécution de l’instruction
parallèle)
Intel MMX et SSE, AMD 3DNow !

Plusieurs unités au sein d’un processeur :

3 ALU au sein du Pentium

L3 Informatique - Université de Provence () Architecture des ordinateurs 261 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 262 / 313

Unité de contrôle/commande (II) Unité de contrôle/commande (III)


Constitué :
d’un ensemble de registres
I registre d’instruction RI : permet de stocker l’instruction qui doit être
exécutée
I compteur programme PC : stocke l’adresse de la prochaine
instruction à exécuter.
I registre d’états (flag register) : permet de stocker des indicateurs
sur l’état du système après l’exécution d’une instruction. par
exemple,
F C (pour carry) : vaudra 1 si une retenue est présente.
F Z (pour Zero) : vaudra 1 si le résultat de la dernière opération réalisée
est nul.
F V (pour oVerflow) : vaudra 1 en cas de dépassement de capacité
F N (pour Negative) : vaudra 1 si le résultat est négatif.
Mis à jour par l’UAL
F T (Trap flag) : mis à 1 le processeur fonctionne en mode pas à pas
F IE (Interrupt Enable) : mis à 1 les interruptions sont prise en compte
F ....

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

Cycle d’exécution d’une instruction Cycle d’exécution d’une instruction : exemple


Cycle de recherche

Cycle de recherche : PC 80000 80000 add $1, $2, $3


I On récupère dans RI l’instruction à exécuter (celle à l’adresse 80004 ....
contenue dans PC)
I On incrémente de compteur ordinal PC 1 On récupère l’instruction à exécuter
Plus finement, utilisation des registres d’adresses et de données I On met PC dans RA (le registre d’adresse)
I On envoie un ordre de lecture à la mémoire
I On place le contenue de RD (le registre de donnée) dans RI
Cycle d’exécution :
I On décode l’instruction RI add $1, $2, $3
I Lire les adresses et les registres nécessaires à l’instruction
I Déterminer que faire pour cette instruction 2 On incrémente le compteur ordinal PC
I Le faire (ou le faire faire) (utilisation d’une unité de calcul) I Soit PC est muni d’un dispositif d’incrémentation
I Soit on utilise l’ALU

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

3 Décodage de l’instruction (Décodeur)


I identification d’une addition entre deux registres avec placement du définit le cycle de base : cycle machine
résultat dans un registre utilisée pour synchroniser chaque étape des cycles de recherche
et d’exécution
4 Préparation des données (Séquenceur)
I On place les contenus des registres $2 et $3 dans les deux L’exécution du cycle de recherche ou d’exécution prend un certain
registres d’entrée de l’ALU nombre de cycle de base (dépendant de l’instruction)
5 Déterminer ce qu’il faut faire (Séquenceur)
I Envoi du signal de l’opération d’addition à l’ALU Cycle CPU = temps d’exécution minimal d’une instruction (recherche +
6 Le faire (Séquenceur) exécution)
I L’ALU ajoute les deux opérandes et place le résultat dans son
registre de sortie
I le contenu du registre de sortie de l’ALU est transféré dans le
registre $1

L3 Informatique - Université de Provence () Architecture des ordinateurs 269 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 270 / 313

Séquenceur (I) Séquenceur (II)

Séquenceur = machine de Mealy


recevant des informations du décodeur et des signaux d’états Séquenceur câblé :
(entrées) I circuit séquentiel (synchrone) réalisé avec des portes logiques
I Un sous-circuit pour chaque instruction, sous-circuit activé selon le
produisant des signaux de commandes contrôlant les différentes
code envoyé par le décodeur.
unités

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)

Un chemin de données est défini par


l’ensemble des composants requis pour l’exécution d’une
instruction : PC, UAL, banc de registres, mémoire, ...
Liens entre ces composants : flux de données, signaux de
lecture/écriture, multiplexage des unités partagées, ....

Selon les instructions, les composants requis et les liens existants


entre eux varient

L3 Informatique - Université de Provence () Architecture des ordinateurs 273 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 274 / 313

Une architecture d’un processeur MIPS

Processeur : fonctionnement - microprogrammation

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)

Compteur Mémoire Extension


Mémoire d’instructions Additionneur de données signée
programme

L3 Informatique - Université de Provence () Architecture des ordinateurs 277 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 278 / 313

Composants du processeur MIPS (III) Format des instructions : rappel

Format 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits


Format R Code op rs rt rd sa funct
Format I Code op rs rt adresse sur 16 bits
Format J Code op adresse sur 26 bits

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

Le signal MemRead est activité.


le signal RegWrite contrôle l’écriture dans le banc de registres
ALUoperation décrit le type de calcul réalisé “adresse 16 bits” est un déplacement relatif signé
le signal Zero est émis si le calcul vaut 0 les signaux MemWrite et MemRead contrôlent respectivement
l’écriture et la lecture dans la mémoire

L3 Informatique - Université de Provence () Architecture des ordinateurs 281 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 282 / 313

Exécution de : beq $1,$2, 100 Contrôle de l’ALU (I)


Code op rs rt adresse sur 16 bits
4 2 1 100

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)

Signaux de contrôle (ALUoperation) Calcul réalisé


000 and
001 or Codeop ALUop funct ALUoperation
010 add lw 00 010
110 sub sw 00 010
111 slt beq 01 110
add 10 100000 010
ALUoperation est calculé en fonction sub 10 100010 110
and 10 100100 000
du champ funct, les 6 bits de poids faible de l’instruction or 10 100101 001
exécutée slt 10 101010 111
du signal ALUop sur 2 bits

Le signal ALUop est calculé en fonction du Codeop, les 6 bits de poids


fort de l’instruction exécutée

L3 Informatique - Université de Provence () Architecture des ordinateurs 285 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 286 / 313

L’unité de contrôle L’architecture MIPS multi-cycle

registre d’instruction RI, registre de données RD


une seule ALU avec des registres d’entrées A,B et un registre de
sortie ALUout

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

Etape Type R Référence mémoire Branchements

Extraction RI ← Mem[PC] et PC ← PC+4

Décodage A ← Reg[RI[25-21]] ; B ← Reg[RI[20-16]] ; ALUout ← PC + RI[15-0]*4

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

Signal Effet pour S=0 Effet pour S=1


le registre de destination le registre de destination
RegDest
pour l’écriture est RI[20 :16] pour l’écriture est RI[15 :11] ALUSrcB : la seconde entrée de l’ALU est
la donnée en écriture est
RegWrite I 00 : la valeur du registre B
stockée dans le registre à écrire
ALUSrcA la 1ere opérande de l’ALU est PC la 1ere opérande de l’ALU est A I 01 : la valeur 4
une donnée est lue en mémoire I 10 : l’extension signée 16 bits de la valeur immédiate dans RI
MemRead
à l’adresse spécifiée I 11 : l’extension signée 16 bits de la valeur immédiate dans RI
une donnée à écrire est écrite en
MemWrite
mémoire à l’adresse spécifiée décalée de 2
la donnée à écrire dans le registre la donnée à écrire dans le registre
MemtoReg
provient du registre donnée mémoire provient de ALUout
l’adresse pour la mémoire est l’adresse pour la mémoire provient PCSource : le PC sera écrit avec
IorD
fournie par PC de ALUout I 00 : la sortie de l’ALU (PC+4)
La sortie de la mémoire est
IRWrite
écrite dans RI
I 01 : la valeur de ALUout
PCWrite une valeur est écrite dans PC
I 10 : l’adresse de saut décalée de 2 et ajoutée à PC+4[31 :28]
PC est modifié si le valeur
PCWriteCond
Zero de l’ALU vaut 1

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

L’unité de contrôle est un système synchrone

Le décodeur identifie l’instruction.

Le séquenceur envoie les signaux de contrôle orchestrant les


différents éléments du chemin de données pour réaliser l’instruction.

Séquenceur = machine de Moore


entrées : informations du décodeur + informations des éléments
du chemin de données
sorties : signaux de contrôle

L3 Informatique - Université de Provence () Architecture des ordinateurs 293 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 294 / 313

Chemin de données : état 0 Chemin de données : état 1

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

Réalisation d’un séquenceur Séquenceur : solution cablée

solution cablée : l’unité de contrôle est une implantation cablée de


l’automate
I privilégiée pour les processeurs RISC

solution microprogrammée : un microprogramme contenu dans


une ROM réalise l’automate
I privilégiée pour les processeurs CISC

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

Concevoir la réalisation de l’automate comme un programme qui


implante les instructions du langage machine.

Un microprogramme pour une instruction du langage machine est


une représentation du contrôle nécessaire à l’exécution de l’instruction
et est constitué d’une suite de microinstructions.

Chaque microinstruction pilote un ensemble de signaux de contrôle du


chemin de données.

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

Microprogrammation horizontale Microprogrammation horizontale MIPS


Dans chaque microinstruction, il y a
2 bits 1 bit 2 bits 3 bits 4 bits 4 bits 2 bits
Contrôle Contrôle Contrôle
une partie “contrôle” : un bit est dédié à chacune des signaux de SRC1 SRC2 Mémoire suivante
ALU registre écriture PC
contrôle

une partie “instruction suivante” : détermine la microinstruction Champs Signaux


suivante à exécuter parmi Contrôle ALU ALUop
I la microinstruction suivante dans la mémoire SRC1 ALUSrcA
I la première microinstruction de l’instruction suivante SRC2 ALUSrcB
I un branchement selon des signaux d’états Contrôle registre RegWrite,MemtoReg,RegDst
Mémoire MemRead, MemWrite,IorD,ORWrite
Contrôle écriture PC PCWrite,PCWriteCond,PCsource
Peu de microinstructions nécessaires à la réalisation d’une
instruction
Les microinstructions peuvent très longues (une centaines de bits)

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

Interruptions - exceptions (I) Interruptions - exceptions (II)

Les exceptions sont des évènements anormaux provenant (de


l’impossibilité) de l’exécution de l’instruction en cours.
En MIPS
I ADEL/ADES : adresse incorrecte respectivement en lecture et en
écriture - adresse non alignée ou dans une zone d’accès interdite. le registre CR Cause Register contient en cas d’interruption ou
I OVF : overflow - la dernière opération réalisée ne produit pas un d’exception, la cause pour laquelle on fait appel au programme de
résulat représentable sur 32 bits traitement des interruptions/exceptions.
I RI : Codeop illégal - la mémoire à l’adresse PC ne contient pas une
instruction.
le registre EPC Exception Programm Counter contient
I ...
I l’adresse de retour (PC + 4) en cas d’interruption
I l’adresse de l’instruction fautive en cas d’exception
Les interruptions sont des évènements déclenchés
I par des périphériques : interruption matérielle
I par le programme lui-même : interruption logicielle

L3 Informatique - Université de Provence () Architecture des ordinateurs 311 / 313 L3 Informatique - Université de Provence () Architecture des ordinateurs 312 / 313
Interruptions - exceptions (III)

En cas d’exception, la procédure stockée à l’adresse


0x80000080 (le gestionnaire d’exception) est exécutée.

Les exceptions sont fatales (à l’exécution du programme)

CR et EPC sont uniquement utilisés pour identifier l’exception

En cas d’interruptions, la procédure stockée à l’adresse


0x80000080 (le gestionnaire d’exception) est exécutée.

CR est utilisé pour identifier l’exception

EPC est utilisé comme adresse de retour après le traitement de


l’exception.

L3 Informatique - Université de Provence () Architecture des ordinateurs 313 / 313


Architecture des ordinateurs
Licence Informatique - Université de Provence

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

Pipeline (I) Pipeline (II)


Exemple simplifié : Instructions de type R

Sous-opérations de l’exécution d’une instruction :


L’exécution d’une instruction est décomposée en plusieurs étapes
LE : lecture de l’instruction en mémoire
utilisant :
DE : décodage de l’instruction
des parties différentes du chemin de données
CH : chargement des registres de UAL avec le contenu des
des parties différentes de l’unité de contrôle/commande
registres source
EX : exécution du calcul
De nombreuses unités sont donc inactives si on exécute qu’une seule
instruction à la fois. ENR : enregistrement du résultat dans le registre destination

=⇒ paralléliser l’exécution des instructions : utilisation d’un pipeline

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

Aléas structurels Aléas de données (I)


La réalisation du chemin de données interdit certaines combinaisons
d’opérations addi $1, $2, 12
multi $3, $1, 2
Exemple : LE et EX accède tous les deux à la mémoire en cas de
exécution d’une instruction de lecture écriture. Problème : la lecture de la valeur de $1 (Ch) de multi $3, $1, 2
précède l’écriture de $1 (Enr) dans addi $1, $2, 12.

Solution :
arrêter le calcul de $3 tant que $1 n’est pas connu

Solutions : changer l’ordre d’exécution des instructions : réordonnancement


attendre que l’unité soit disponible en retardant l’exécution : peu (réalisé soit à la compilation, soit par le processeur à la volée)
efficace addi $1, $2, 12 addi $1, $2, 12
dupliquer les différentes unités du chemin de données : multi $3, $1, 2 li $5, 4
ici, accès mémoire : découpage en 2 parties du cache L1 =⇒
li $5, 4 add $4, $5, $6
I LE accède à la partie “instruction” add $4, $5, $6 multi $3, $1, 2
I EX accède à la partie “données”
L3 Informatique - Université de Provence () Architecture des ordinateurs 320 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 321 / 352
Aléas de données (II) Aléas de contrôle

sub $1, $1, $2


Solution (suite) : bne $1, $0, Suite
add $3, $3, $1

On court-circuite le pipeline (et l’exécution normale des Problème :


instructions) en plaçant le contenu du registre de sortie de UAL
directement dans un des ses registres d’entrée. L’instruction à charger après celui de sub $1, $1, $2 dépend de la
valeur de $1 après l’exécution de celle-ci.
=⇒ modification du chemin de données
Solutions :
=⇒ nécessité d’empiler les résultats de sortie de l’ALU si on veut attendre que le résultat de l’opération soit connue : peu efficace
traiter des aléas de données sur plusieurs étages. (ici, le chargement de l’instruction (LE) ne peut se faire qu’après
l’écriture dans $1
réaliser une prédiction de branchement et commencer le calcul
avec celle-ci

L3 Informatique - Université de Provence () Architecture des ordinateurs 322 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 323 / 352

Prédiction de branchement (I) Prédiction de branchement (II)

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)

Le processeur a besoin en permanence des données à traiter et des


instructions à exécuter

Optimisation : mémoire cache Mais la mémoire centrale ne peut fournir raisonnablement ces
données à la vitesse dont le processeur en a besoin

Solution : utiliser une mémoire plus rapide entre la mémoire centrale et


le processeur
Mémoire cache ou cache

L3 Informatique - Université de Provence () Architecture des ordinateurs 326 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 327 / 352

Mémoire cache (II) Mémoire cache (III)

La mémoire cache doit rester petite :


cache : mémoire d’accès rapide stockant une copie des données en
adressage limité pour rester efficace en temps d’accès et débit
petite quantité choisies parmi les données stockés dans une dispositif
mémoire plus lent. coût important

Problème : elle ne peut stocker un programme et toutes ses données.


Conceptuellement, les registres servent de cache à la mémoire cache
qui sert de cache à la mémoire centrale qui sert de cache à la Il faut décider :
mémoire de masse.
quelle doit être la taille du cache, le nombre de niveau de caches,
ATTENTION : Le mécanisme de cache entre la mémoire centrale et ....
une mémoire de masse est du domaine du système et donc, logiciel.
quoi mettre dans le cache et quand

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

Mémoire cache : niveaux de cache (II) Mémoire cache : réalisation (I)


Comparaison

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.

cache inclusif : Intel Pentium - Intel Xeon


cache exclusif : AMD K8 - AMD Duron
L3 Informatique - Université de Provence () Architecture des ordinateurs 332 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 333 / 352
Mémoire cache : réalisation (II) Mémoire cache : réalisation (III)

mémoire associative :

un descripteur ou clef est associé(e) à chacune des informations


présentes dans la mémoire.

La recherche dans la mémoire se fait par ce descripteur :


le descripteur à rechercher est comparé simultanément à tous
ceux présents dans la mémoire.
en cas d’égalité avec un descripteur de la mémoire, l’information
associée à celui-ci est activée.

la matrice 2 contient les informations


la matrice 1 remplace le décodeur (d’adresses)
L3 Informatique - Université de Provence () Architecture des ordinateurs 334 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 335 / 352

Fonctionnement de la mémoire cache (I) Fonctionnement de la mémoire cache (II)

L’accès au cache doit être transparent pour le processeur : Principe de fonctionnement :

Le processeur envoie une demande de lecture à une adresse de


1 Le processeur demande une donnée à une certaine adresse de la
la mémoire centrale et reçoit la donnée (qui devrait se trouver) à mémoire centrale
cette adresse en mémoire
2 Le cache vérifie s’il possède la donnée de cette adresse :
Une demande d’écriture d’une donnée à une certaine adresse de
a) succès : la donnée est présente dans le cache et elle est
la mémoire centrale, puis de lecture à cette même adresse transmise au processeur
retourne la même donnée. b) défaut de cache : la donnée n’est pas présente dans le cache ;
celui-ci la demande au cache de niveau supérieur ou à la mémoire
Les accès à la mémoire sont corrects du point de vue du processeur centrale, la stocke une fois obtenue et la transmet au processeur.

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)

Augmentation des performances :


Le cache (de niveau 1) est souvent divisé en deux parties
Augmentation de la taille du cache une partie “donnée” qui stocke des données nécessaire à
I augmente le taux de succès l’exécution du programme
I mais augmente le temps d’accès au cache
une partie “instruction” qui contient des instructions du
programme en cours d’exécution
Augmentation du nombre de niveaux de cache
I gain significatif pour le passage de 1 à 2 niveaux
I gain faible pour le passage de 2 à 3 niveaux Que doit on mettre dans/retirer de la mémoire cache et quand ?
I gain insignifiant ou nul au dessus

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)

principe de localité : principe de localité :


localité temporelle : une donnée manipulée à l’instant t aura de
grandes chances d’être manipulée dans un futur proche for (i = 0 ; i < n ; i++)
localité spatiale : si une donnée d’adresse d est manipulée somme +=A[i] ;
l’instant t alors des données d’adresses proches ont de fortes
chances d’être manipulées conjointement.
localité spatiale : A[i], A[i + 1], A[i + 2], ...
Dans le cas d’instructions, si une instruction est exécutée alors ses localité temporelle : n, A, i
suivantes en mémoire ont de fortes chances d’être exécutées dans un
avenir proche.

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)

Remplacement d’informations dans le cache


pre-fetching : chargement en avance des données/instructions dont
le processeur va avoir besoin. La lecture ou l’écriture pour le processeur à une adresse non présente
dans le cache nécessite son chargement dans ce dernier
Permet d’augmenter le taux de succès du cache
Nécessite d’enlever des données présentes dans le cache pour y
Les algorithmes de pre-fetching sont basés sur le principe de localité mettre ces nouvelles.
localité temporelle : garder dans le cache les dernières données
Quel choix des données à ôter ?
manipulées par le programme.
localité spatiale : charger en avance les données/instructions Random
contiguës à une donnée/instruction référencée. LRU
LFU

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)

Lecture/écriture dans la mémoire centrale via le cache


Remplacement d’informations dans le cache
Le cache contient une partie des données de la mémoire
Remplacement aléatoire (Random) :
centrale : risque d’incohérence entre les données
I simple à mettre en œuvre
I peu efficace car on peut supprimer des données très accédées. opérations de lecture/écriture se réalise sur le cache : gérer les
répercussions sur la mémoire centrale
Remplacement de la plus ancienne “non utilisée”
I LRU : Last Recently Used
I Nécessite des compteurs associés aux données opérations de lecture : pas de modifications des données, donc
Remplacement de la moins utilisée cohérence entre le cache et la mémoire
I LFU : Least Frequently Used
I Nécessite également des compteurs opérations d’écritures : modification du cache, donc incohérence
entre le cache et la mémoire

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

2 Méthodes : La mémoire cache contient des lignes de mots de la mémoire


centrale.
Ecriture simultanée (write-through)
La donnée écrite dans le cache est simultanément écrite en Exemple :
mémoire Lignes de cache de 32 octets
⊕ cache et mémoire sont cohérentes à chaque instant Mémoire cache de 512 Ko : 16384 lignes
écriture plus lente car accès à la mémoire centrale Mémoire centrale de 128 Mo
Ecriture différée (write-back) I doit être gérée par les 512 Ko de cache et ses 16384 lignes.
La donnée est modifiée uniquement dans le cache, la I 1 ligne du cache / 8192 octets (256 lignes) de la mémoire centrale.
répercussion est faite en mémoire uniquement lorsque la donnée
est sortie du cache Quelle est la relation entre les lignes du cache et celle de la mémoire
⊕ limitation des accès à la mémoire en écriture
centrale ?
problèmes si d’autres éléments accède à la mémoire centrale
(périphérique en mode DMA - Direct Memory Acces)

L3 Informatique - Université de Provence () Architecture des ordinateurs 346 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 347 / 352

Correspondance lignes cache/mémoire (II) Correspondance directe (I)

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

Chaque ligne de la mémoire peut se trouver dans n’importe quelle


ligne du cache.
⊕ On sait immédiatement où aller chercher la ligne (accès rapide)
Nombreux défauts de cache conflictuels si on accède à des lignes Le cache contient le numéro de ligne de le mémoire centrale de
de la mémoire centrale qui correspondent toutes à la même ligne chacune des informations.
du cache, tandis que d’autres lignes du cache ne sont pas
utilisées. ⊕ grande souplesse d’utilisation permettant d’augmenter le nombre
performances médiocres (taux de succès : 60-80 %) de succès (90-95 % de succès)
temps de comparaison plus long car adresse complète (temps
d’accès plus long)

L3 Informatique - Université de Provence () Architecture des ordinateurs 350 / 352 L3 Informatique - Université de Provence () Architecture des ordinateurs 351 / 352

Correspondance associative par ensemble

Combinaison des deux méthodes précédentes pour pallier leur défaut


respectif.

le cache est divisé en ensembles de lignes, chaque ensemble


contenant N lignes.

Chaque ligne de la mémoire centrale est affectée à un ensemble

ensemble = numéro de ligne mod nombre d’ensembles

A l’intérieur d’un ensemble, correspondance associative totale.

L3 Informatique - Université de Provence () Architecture des ordinateurs 352 / 352

Vous aimerez peut-être aussi