Vous êtes sur la page 1sur 97

STRUCTURE MACHINE

Haouam M. Yassine
2013-2014
Plan du cours
• Introduction
• Structure de base d’un ordinateur
• Mémoires secondaires
• Les Entrées/Sorties
1. Introduction à l'informatique
Définition 1:
Ordinateur : Machine capable d’effectuer automatiquement des
opérations arithmétiques et logiques (à des fins scientifiques,
administratives, comptables, . . . ) à partir de programmes
définissant la séquence de ces opérations.

Définition 2:
Ordinateur : C’est un appareil électronique qui peut stocker,
récupérer et traiter les données à travers un programme
Historique
• 1642: Blaise Pascal créa la machine d'arithmétique
(pascaline)
• Destinée à effectuer mécaniquement des additions et des soustractions.
• L’automatisation était réalisée à l’aide de roues dentées.
• 1673: Gottfried Leibniz
ajouta à la Pascaline la
multiplication et la division
avec des nombres à 12
chiffres.
• Il a décrit les mathématiques
binaires, système de base
des calculs des ordinateurs
d'aujourd'hui
• 1801 le Français Joseph-
Marie Jacquard. invente une
machine à tisser
programmable à l’aide des
cartes perforées
• 1833 : Machine de
Charles Babbage (La
machine à différence)
• Principes du métier à
tisser
• 4 opérations
arithmétiques de bases
• Ensuite il imagine une machine analytique
• Quatre parties : magasin (mémoire), moulin (unité de
calcul), entrée (lecteur de cartes perforées), sortie
(perforation)
• Opérations arithmétiques, test et branchement
conditionnel
• Non construit faute de moyen.
• 1890 Herman Hollerith utilise une machine à cartes
perforées pour le recensement américain.
Première génération (1945-1955)

• 1945-50 : ENIAC
(Electronic Numerical
Integrator And Calculator) :
• 18 000 tubes,
• 30 tonnes,
• multiplie 2 nombres de 10
chiffres en 3 millisecondes.
Inconvénients
Deuxième génération (1955-1965)
• Remplacement des tubes
par des transistors

• 1956 : Disque magnétique


(IBM)

• 1960 : IBM 7000 (William


Shockley, John Bardeen,
Walter Brattain)
Troisième génération (1965-1980)
• 1958 : apparition des
circuits intégrés (puces) et
des processeurs

• 1964-66 : IBM 360, DEC


PDP-8, HP-2115
Quatrième génération (1980-??)
• Ordinateurs personnels et
VLSI (Very Large Scale
Integration) : augmentation
du nombres de transistors
2. Structure de base d’un ordinateur
Architecture Von Neumann
• Von Neumann propose une machine universelle :
• Unité arithmétique et logique (UAL, ou ALU) : traitement données
• Mémoire :
• instructions
• données
• Bus :
• transfert données
• Unité de commande (UC) :
• contrôle
• Unité entrées/sorties (I/O) :
• échange d’information avec les périphériques.
Architecture Von Neumann

Mémoire

Unité arithmétique
Unité de
et logique
commande
Accumulateur

Entrée Sortie
L’architecture interne
La mémoire Adresse

• La mémoire contient les


instructions et les Adresse Mots
données. 0 ADD A,B,C
• La mémoire est formée 1 23

d’un ensemble de mots de 2 24

longueur fixe, chaque mot 3 …

contenant une information … …

codée en binaire. … …
N …
• Chaque mot de la
mémoire est accessible
par l’intermédiaire de Lecture/Ecriture
l’adresse mémoire. Données
Les Bus
Ce sont les moyens de transport de l’information à
l’intérieur de l’ordinateur.
On distingue trois catégories de bus:
• Les bus de données
• Il transporte les données
• Capacité  nombre de fils (un bit par fil)
• Les bus d’adresses
• Il transporte l’adresse à laquelle on veut lire ou écrire une donnée
• Le bus de commande
• C’est un ensemble de lignes (fils) de transport des ordres ou
commandes destinés aux différents éléments de l’ordinateur pour
effectuer les opérations
L’architecture interne
L’unité de commande (1)

Elle permet de séquencer le déroulement des instructions. Elle


effectue la recherche en mémoire de l'instruction, le décodage de
l’instruction codée sous forme binaire. Enfin elle pilote l’exécution
de l’instruction.

• Les blocs de l’unité de commande :


• Le compteur de programme (PC : Programme Counter) appelé
aussi Compteur Ordinal (CO) : est constitué par un registre dont
le contenu est initialisé avec l'adresse de la première instruction du
programme. Il contient toujours l’adresse de la prochaine
instruction à exécuter.
L’architecture interne
L’unité de commande (2)

• Le registre d'instruction et le décodeur d'instruction : Chacune


des instructions à exécuter est transférée depuis la mémoire dans
le registre instruction puis est décodée par le décodeur
d’instruction.

• Bloc logique de commande (ou séquenceur) : Il organise


l'exécution des instructions au rythme d’une horloge. Il élabore
tous les signaux de synchronisation internes ou externes (bus de
commande) du microprocesseur en fonction de l’instruction qu’il a
exécuter.
L’architecture interne
L’unité de commande (3)
L’architecture interne
L’unité de traitement (1)

Elle regroupe les circuits qui assurent les traitements nécessaires


à l'exécution des instructions

• Les blocs de l’unité de traitement :


• Les accumulateurs: sont des registres de travail qui servent à
stocker un opérande au début d'une opération arithmétique et le
résultat à la fin de l'opération.
• L’Unité Arithmétique et Logique (UAL): est un circuit complexe
qui assure les fonctions logiques (ET, OU, Comparaison,
Décalage, etc…) ou arithmétique (Addition, soustraction…).
L’architecture interne
L’unité de traitement (2)
• Le registre d'état est généralement composé de 8 bits à
considérer individuellement. Chacun de ces bits est un indicateur
dont l'état dépend du résultat de la dernière opération effectuée par
l’UAL. On les appelle indicateur d’état ou flag ou drapeaux. Dans
un programme le résultat du test de leur état conditionne souvent
le déroulement de la suite du programme. On peut citer par
exemple les indicateurs de :
• Retenue (carry : C)
• Débordement (overflow : OV ou V)
• Zéro (Z)
• ...
L’architecture interne
L’unité de traitement (3)
L’architecture interne
Architecture complète
Le traitement des instructions
• Une instruction est composée de deux éléments :
• Le code opération: C’est un code binaire qui correspond à l’action
à effectuer par le processeur (type d’action)
• Le champ opérande: Donnée ou bien adresse de la donnée.
• Une instruction peut contenir 0 ou plusieurs opérandes.

Code opération Opérande 1 Opérande 2

• Exemple d’instruction:
• Instruction d’addition: ADD A,B,C (instruction à 3 opérandes)
ADD: Code opérations
A,B,C : Opérandes
CA+B
Types d’instructions
• On distingue six groupes d'instructions :
• transferts de données : de mémoire à registre, de
registre à registre, de registre à mémoire;
• opérations arithmétiques : addition, soustraction,
multiplication et division;
• opérations logiques : ET, OU inclusif, NON, etc.;
• contrôle de séquence : branchements conditionnels ou
non, appel de procédure, etc.;
• entrées/sorties;
• manipulations diverses : décalage, conversion de
format, incrémentation, etc.
Modes d'adressage
• Un champ adresse peut permettre :
• D’indiquer une valeur
• De référencer un registre ou un mot en mémoire
• Modes d’adressage
• Adressage immédiat :
• le champ adresse contient la valeur de l’opérande
• Exemple: MOV #100, R1
le registre R1  100.

• Adressage registre :
• Le champ adresse contient le numéro (nom) du registre
• Exemple: CLR R1
Le registre R1  0
Modes d'adressage
• Adressage direct: @ Contenu
• Le champ adresse de l'instruction contient 0
l'adresse effective de l'opérande (l’adresse
1 205
qui contient la valeur de l’opérande).
• Exemple: MOV 100, R2 …

100 15
101 23
102 1
103 105

R2 15
Modes d'adressage
• Adressage indirect: @ Contenu
• Le champ adresse de l'instruction contient 0
l'adresse d’une case mémoire qui contient
1 205
l’adresse effective de l'opérande
• Exemple: MOV (102), R2 …

100 15
101 23
102 1
103 105

R2 2O5
Le traitement des instructions
Phase 1 : Recherche de l’instruction en mémoire

• La valeur du PC est placée sur le bus d'adresse par l'unité


de commande qui émet un ordre de lecture.
• Après le temps d'accès à la mémoire, le contenu de la
case mémoire sélectionnée est disponible sur le bus des
données.
• L'instruction est stockée dans le registre d’instruction du
processeur.
• La partie code opération est transmise au décodeur pour
déterminer le type d’opération et le transmet au
séquenceur.
Phase 1 : Recherche de l’instruction en mémoire
Le traitement des instructions
Phase 2 : Décodage et recherche de l’opérande

• L'unité de commande transforme l'instruction en une suite


de commandes élémentaires nécessaires au traitement
de l'instruction.
• Si l'instruction nécessite une donnée en provenance de la
mémoire, l'unité de commande récupère sa valeur sur le
bus de données.
• L’opérande est stocké dans le registre de données.
Phase 2 : Décodage et recherche de l’opérande
Le traitement des instructions
Phase 3 : Exécution de l’instruction
• Le séquenceur réalise l'instruction.
• Les drapeaux sont positionnés (registre d'état).
• L'unité de commande positionne le PC pour l'instruction
suivante.
Phase 3 : Exécution de l’instruction
Jeu d'instructions
• Jeu d'instructions: ensemble des instructions
(opérations) effectuables par l'UAL;
• Exemple:
• plus de 100 sur des architecture CISC [Complex Instruction Set
Code]
• et 35 sur des architectures RISC [Reduced Instruction Set Code]
(détails dans un chapitre ultérieur).
Jeu d'instruction
• Transfert de données: Load, Move, Store,
• transfert de registre/mémoire a registre, etc.
• Opérations arithmétiques: les 4 opérations en virgule
fixe/flottante et en simple/multiple précision.
• Opérations logiques: NOT, AND, OR, XOR, etc.
• Contrôle de séquence: branchement
impératif/conditionnel, boucle, appel de procédure, etc.
• Entrées/sorties: Read, Write, Print, etc.
• Manipulations diverses: décalages de bits, conversions
Exemple
On considère une mémoire RAM contenant 16 mots
mémoires d'un octet. Il suffit donc de 4 bits pour adresser un
mot mémoire. On suppose les instructions suivantes:

• ADD a: Pour additionner le contenu du registre


accumulateur au mot mémoire situé a l'adresse a de la
mémoire RAM. Le résultat est stocke dans l'accumulateur ;
• ADD #a: Pour additionner le contenu du registre
accumulateur avec la valeur a. Le résultat est stocke dans
l'accumulateur ;
• JMP a: Pour charger l'adresse a dans le compteur ordinal
(instruction de branchement inconditionnel) ;
• JNZ a: Si le contenu de l'accumulateur est différent de
zéro, l'adresse a est chargée dans le compteur ordinal
(instruction de branchement conditionnel).
• SHL. Pour décaler les bits du registre accumulateur d'une
position vers la gauche (le dernier bit devient égale a 0) ;
• LOAD a: Pour charger le registre accumulateur avec le
mot mémoire situé à l'adresse a ;
• LOAD #a: Pour charger la valeur a dans le registre
accumulateur.
• STO a: Pour ranger la valeur contenue dans le registre
accumulateur à l'adresse a en RAM.
• STOP. Arrêt du programme .
Travail demandé:

• En reprenant les trois étapes de


déroulement d'une instruction
décrites plus haut, décrire pour
chacune des étapes le contenu
du registre accumulateur, du
compteur ordinal et de la
mémoire lors de l‘exécution de
la séquence d'instructions
commençant à l'adresse 0. Le
contenu initial de la mémoire est
le suivant :
Recherche de l’instruction en mémoire
0
(1) CT

CO 0

(2) Lecture
UAL RI
Load 7

Décodeur
R1
Séquenceur

(3) CT

Load 7
Recherche de l’instruction en mémoire
• (CO)  Bus @
// 0  Bus @
• Lecture
• ((Bus @))  Bus de données
// Load 7  Bus de données
• (bus de données)  RI
// Load 7  RI
• (RI.Code opération)  Décodeur
// Load  Décodeur
Décodage et recherche de l’opérande
7

(1) CT

CO 0

(2) Lecture
UAL RI
Load 7

Décodeur
R1 2O
Séquenceur

(3) CT

20
Décodage et recherche de l’opérande
• (RI.Opérande)  Bus @
// 7  Bus @
• Lecture
• ((Bus @))  Bus de données
// 20  Bus de données
• (bus de données)  R1
// 20  R1
Exécution de l’instruction
7

(1) CT

CO 10
2O
NOP (2) Lecture
UAL RI
Load 7

Décodeur
R1 2O
Séquenceur

(3) CT

20
Exécution de l’instruction

• ACC  (ACC) NOP (R1)


• // 20  ACC

• CO  (CO) + 1
• // CO  1
3. Les mémoires
Définition
• Une mémoire est un dispositif capable:
• d’enregistrer, de conserver et de restituer des
informations (instructions et variables).

• Les informations peuvent être écrites ou lues.


• Il y a écriture lorsqu'on enregistre des informations en
mémoire,
• Il y a lecture lorsqu'on récupère des informations
précédemment enregistrées.
Caractéristiques d’une mémoire
• La capacité (taille de la mémoire)
• c’est le nombre total de bits que contient la mémoire. Elle
s’exprime souvent en octet.
• Temps d’accès
• temps qui s’écoule entre une demande de lecture ou d’écriture et
son accomplissement.
• Cycle mémoire:
• il représente l'intervalle minimum entre 2 accès successifs à la
mémoire.
• Cycle > temps d’accès
• Car besoin d’opérations supplémentaires entre 2 accès
(stabilisation des signaux, synchronisation ...)
• Volatilité
• Elle caractérise la permanence des informations dans la mémoire.
L'information stockée est volatile si elle risque d'être perdue suite
à un défaut d'alimentation électrique (Ex. le contenu d’une
mémoire volatile est effacé lorsqu’on éteint l’ordinateur) et non
volatile dans le cas contraire (elle garde de l’information dans tous
les cas).

• Débit
• Nombre d’octets ou bits pouvant être lus ou écrits par secondes.
Méthodes d’accès
• Accès séquentiel
• Pour accéder à une information on doit parcourir toutes les
informations précédentes
• Accès lent
• Exemple : bandes magnétiques (K7 vidéo)
• Accès direct
• Chaque information a une adresse propre
• On peut accéder directement à chaque adresse
• Exemple : mémoire centrale
• Accès associatif/par le contenu
• Une information est identifiée par une clé
• On accède à une information via sa clé
• Exemple : mémoire cache
Hiérarchie de mémoire
• L’idéale c’est l’utilisation d’une mémoire rapide de grande
capacité.
• Problème: les mémoires de grande capacité sont souvent
très lente et les mémoire rapides sont très chères.
• Afin d’obtenir le meilleur compromis coût-performance, on
définie donc une hiérarchie mémoire.
• On utilise des mémoires de faible capacité mais très rapide pour
stocker les informations fréquemment utilisées par le
microprocesseur.
• On utilise des mémoires de capacité importante mais beaucoup
plus lente pour stocker les informations les moins utilisées par
microprocesseur.
< 400 octets
Registre

Capacité
Vitesse

Jusqu’à 4 Mo
Mémoire cache

Mémoire principale Jusqu’à 4 Go

Mémoire de masse 500 Go


• Les registres sont les éléments de mémoire les plus
rapides. Ils sont situés au niveau du processeur et servent
au stockage des opérandes et des résultats intermédiaires.
• La mémoire cache est une mémoire rapide de faible
capacité destinée à accélérer l’accès à la mémoire centrale
en stockant les données les plus utilisées.
• La mémoire principale est l’organe principal de rangement
des informations. Elle contient les programmes (instructions
et données) et est plus lente que les deux mémoires
précédentes.
• La mémoire de masse est une mémoire périphérique de
grande capacité utilisée pour le stockage permanent ou la
sauvegarde des informations (disque dur, CDROM, DVD).
Mémoires à semi-conducteurs (1/2)
Les mémoires mortes (ROM: Read Only Memory)
• Permettent de conserver des informations de façon permanente
même lorsque l'alimentation électrique est interrompue (mémoires
non volatiles)
• Accès en lecture seule (Modification impossible)
• L’inscription des données en mémoire est appelée
programmation.
• Il existe plusieurs types de ROM:
• ROM
• PROM
• EPROM
• EEPROM
• Mémoire Flash.
La ROM
• Elle est programmée par le fabricant et son contenu ne peut
plus être ni modifié, ni effacé par l'utilisateur .
 Mémoire non volatile.
 Mémoire rapide.
 Modification impossible.
 Coût élevé .

La PROM:
• C’est une ROM qui peut être programmée une seule fois par
l'utilisateur (Programmable ROM).
 Mémoire non volatile.
 Mémoire rapide.
 Coût relativement faible
 Modification impossible.
L’ EPROM (Erasable Programmable ROM)
• Elles sont des ROM que l'on peut programmer, effacer et
reprogrammer.
 Reprogrammable et non Volatile.
 Impossible de sélectionner une seule cellule à effacer.
 L’écriture est beaucoup plus lente que sur une RAM
 Coût élevé

L’EEPROM (Electically EPROM)


• Est une mémoire programmable et effaçable électriquement.
 Comportement d'une RAM non Volatile.
 Programmation et effacement mot par mot possible.
 Très lente pour une utilisation en RAM.
 Coût de réalisation.

Mémoire flash
• le contenu est effacé électriquement et plus rapidement que sur
les EEPROM
Mémoires à semi-conducteurs (2/2)
• Les mémoires vives (RAM: Random Acces Memory)
• Réalisées à base de semi-conducteurs.
• Accès en lecture et écriture.
• Mémoires à accès aléatoire (RAM : Random Acces
Memory), c'est-à-dire que le temps d'accès à l'information
est indépendant de sa place en mémoire.
• Mémoires volatiles : la conservation de son contenu
nécessite la permanence de son alimentation électrique.
• Un temps d’accès moyen mais plus rapide que les
mémoires magnétiques.
• Pour la communication avec les autres organes de
l’ordinateur, la mémoire vive utilise les bus ( bus d’adresses
et bus de données)
Types des mémoires vives 1/2
• Il existent deux grandes familles des mémoires vives : les
mémoires statiques (SRAM) et les mémoires dynamiques
(DRAM).

• Mémoires statiques : elle sont construites à base de


bascules, elles possèdent un faible taux d’intégration
mais un temps d’accès rapide (mémoire cache).
 très rapides.
 Coût élevé.
Types des mémoires vives 2/2

• Mémoires dynamiques: elle sont construites à base de


condensateurs. Ces mémoires possèdent un très grand taux
d’intégration, elle sont plus simples que les mémoires statiques
mais avec un temps d’accès plus long. Le condensateur se
décharge avec le temps et l'information est perdue si la
charge n'est pas rafraichie périodiquement (mémoire
centrale de l’ordinateur).
 Capacité importante.
 Coût moins élevé.
 moins rapides.
Vue logique de la mémoire centrale
Une adresse
• Un mot mémoire stocke une
information sur m bits. 0000 1100 0000
• un mot mémoire contient plusieurs 0111 0001 0001
cellules mémoire.
1100 1100 0002
• Une cellule mémoire stock 1 seul bit
0010 1000 0003
• Chaque mot possède sa propre
adresse. ……
• Une adresse est un numéro unique ……
qui permet d’accéder à un mot ……
mémoire. ……
• Les adresses sont séquentielles Contenu d’une
……
(consécutives) case mémoire
FFFF
• La taille de l’adresse (le nombre de
bits) dépend de la capacité de la
mémoire.
Structure matricielle
• Le décodeur reçoit une adresse codée sur n bits.
• A la sortie du décodeur nous allons avoir une seule sortie qui est
active  Cette sortie va nous permettre de sélectionner un seul

Lignes de mots
mot mémoire.

2n mots
Opération de lecture:

1 2
Opération d’écriture:

1 3
Comment calculer la capacité d’une MC ?
• Soit n la taille du bus d’adresses
• Soit m la taille du bus de données (la taille d’un mot mémoire )
• On peut exprimer la capacité de la mémoire centrale soit en nombre de
mots mémoire ou en bits ( octets, kilo-octets,….)
• La capacité = 2 n Mots mémoire
• La capacité = 2 n x m Bits

Exemple :
• Dans une mémoire la taille du bus d’adresses n=14 et la taille du bus de
données m=4.
• Calculer la capacité de cette mémoire ?

• C=214 = 16384 Mots mémoire


• C= 214 * 4 = 65536 Bits
= 8192 Octets
= 8 Ko
Mémoire Cache
• Définition
• La mémoire cache est une mémoire intermédiaire
placée entre le processeur et la mémoire centrale dont
le temps d'accès est de 4 à 20 fois inférieur à celui de la
mémoire centrale.
• Problèmes
• La mémoire cache est de petite taille
• Ne peut donc pas y stocker tout un programme et ses
données
• Solutions
• Algorithmes pour « deviner » et mettre dans le cache
les données/instructions avant que le CPU en ait besoin
Objectifs et principes du cache

• Homme = Unité de calcul


• Le bureau = Mémoire cache
• La bibliothèque = Mémoire centrale
Mémoire cache : principe

1. L'info cherchée est-elle


dans le cache ?
• Oui: (a) ramener l'info dans le
processeur
• Non: (2) chercher l'info dans
la mémoire centrale
2. L'info est-elle en
mémoire centrale?
• Oui : (b) ramener l'info dans
le cache , puis dans le
processeur (a)
• Non: ….
Mémoire cache : Principe de localité
• Localité temporelle
• Une donnée référencée à un temps t aura de très fortes chances
d’être référencée dans un futur proche (t+1, t+2, …)
• Il est intéressant de stocker dans le cache une donnée à laquelle le
processeur à récemment accédée.

1: load R3
Premier accès aux instructions
2: add R2 2, 3, 4, 5  en MC
3: load R4
4: sub #1 Les 4 accès suivants s’effectuent
5: jnz 2 À partir du cache

• Ce principe n’est pas vrai à 100% !


Mémoire cache : Principe de localité
• Localité spatiale
• Si une donnée est référencée à un temps t, alors il y a
de très fortes chances que les données voisines le
soient dans un futur proche
• On ramène dans le cache, l’information qui ne s’y
trouve pas + un ensemble de plusieurs cases mémoires
voisines.
for i:=0 to N do
somme := somme + A[i];

• Ce principe n’est pas vrai à 100% !


A

Si (A) présent Alors


Charger processeur avec (A)
Sinon
Charger cache avec (A) et ses voisines
Charger processeur avec (A)
Mémoire cache : Performances

• Soient
• h la probabilité de succès h Tc Tm Td Teff
• Tc le temps d’accès au cache 0;9 1 20 5 3
• Tm le temps de lecture d’un bloc 0,8 1 20 5 5
de mots en mémoire centrale
0,7 1 20 5 7
• Td le temps d’accès à un mot en
mémoire centrale
alors Teff le temps effectif pour accéder à une information

Teff = (h ×Tc) + [(1 –h) × (Tm + Tc)]

Teff = (0,9 x 1) + [(1 – 0,9) x (20 + 1)]


= 0,9 + [0,1 x 21]
= 0,9 + 2,1
Accès par lignes mémoire
• Plus de performance
• Augmente le taux de succès 
• Augmentation de la taille de la mémoire cache
• Mais, ne gagne pas forcément en performance car augmentation
de taille  augmentation du temps d’accès

• Principe
• Les échanges d’informations entre mémoire de niveaux différents
se font par blocs d’adresses consécutives: une ligne mémoire
• pas beaucoup plus coûteux de lire une ligne qu’un seul mot
• et s’adapte bien au principe de localité spatiale
Structure cache/mémoire principale
Organisation mémoire
• La mémoire cache possède x blocs
• La mémoire centrale possède y blocs
• y >> x
Principe général
• L’UC veut faire référence à un bloc X2 dans le cache
• Recherche de X2 dans le cache
• Défaut de cache
Placement des données dans le cache
• Pour le processeur la présence de la mémoire
cache est transparente
• Le CPU demande toujours à accéder à une adresse
en mémoire centrale (pour lecture ou écriture)
• La mémoire cache contient des lignes de mots de la
mémoire centrale
• Les blocs ont généralement entre 4 et 128 octets et
sont tous de même taille dans un cache donné.
• La mémoire centrale et la mémoire cache ont
impérativement les même tailles de blocs.
Adressage
• L’adresse fournie par le processeur peut être scindée en
deux parties : le N° de bloc et l’adresse dans le bloc.

• Exemple : @ sur 32 bits et blocs de 8 octets


Etiquettes

À chaque bloc on associe :

• Une étiquette : La valeur de cette étiquette permettra de


décider si un bloc donné est effectivement dans le cache
ou non.

• Les étiquettes sont stockées dans un répertoire en même


temps que les données
Mécanisme de correspondance
Où placer une ligne de la mémoire principale dans le cache?
Mémoire Principale

Un
Lebloc
le bloc
blocapeut
ne
unpeut
êtreêtre
nombrestocké
stocké
de n’importe
choixque
limitéoù Cache associatif par
dans un
le cache
seul endroit. ensemble de bloc

Cache à
Cache associatif correspondance
Correspondance associative
• Une ligne de la mémoire cache correspond à n'importe
quelle bloc de la mémoire centrale

• Pour déterminer si un bloc se trouve dans le cache, on


doit simultanément examiner chaque étiquette de ligne à
la recherche d’une correspondance.
Correspondance associative
Correspondance associative
Exemple
• Bloc de 4 octets

• Mémoire cache de 64 Ko
• 64 Ko = 64 x 1024 octets = 65536
• 65536 / 4 = 16384 lignes

• Mémoire centrale de 16 Mo
• doit être gérée via les 64 Ko de cache et ses 16384 lignes
• Elle contient 4M de blocs de 4 octets chacun
• Longueur de l’adresse:
• Chaque octet étant directement adressable par une
adresse 24 bits (224 = 16M)

• Etiquette
• Nombre de blocs dans la mémoire principale 4M
• L’étiquette : 22 bits (222 = 4M).

• Numéro d’octet
• Nombre d’octets par bloc 4 : 2 bits (22 = 4)
• Adresse de la mémoire principale

• Soit l’adresse mémoire (hexadécimal) : 16339C


23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0

Etiquette (22 bits) = 058CE7 Mot (2bits)


Comment un bloc est-il trouvé?
• Quand une donnée est placée dans le cache, le numéro
de bloc de l’adresse fournie par le processeur est placé
dans le champ étiquette de la rangée où la donnée est
placée.

• À chaque accès mémoire, les comparateurs comparent


simultanément le n° de bloc de l’adresse demandée avec
toutes les étiquettes se trouvant dans le cache.

• Si égalité  Succès Sinon  Échec


Correspondance associative
• Avantages
• Très souple et efficace pour gérer les lignes de
manière optimale en terme de succès d'accès.
• Inconvénient
• Doit au pire parcourir toutes les lignes du cache
pour savoir si la ligne cherchée s'y trouve ou
pas.

Taux de succès de l'ordre de 90 à 95%


Correspondance directe (1/2)
• L lignes en cache
• Le bloc j en mémoire centrale sera géré par la ligne i en
cache avec
• i = j modulo L
• A partir de l'adresse d'une ligne en mémoire on sait directement
dans quelle ligne du cache elle doit se trouver
Correspondance directe (2/2)
• Avantages
• On sait immédiatement où aller chercher la ligne
• Accès très rapide à la ligne
• Inconvénients
• Devra parfois décharger et charger souvent les
mêmes lignes alors que d'autres lignes sont peu
accédées
• Peu efficace en pratique
• Taux de succès entre 60 et 80%
Correspondance mixte
• Solution intermédiaire aux approches directe et
associative.
• le cache se divise en v ensembles, composés chacun de
k lignes.
• Avantages
• Plus souple et efficace que la correspondance
directe
• Taux de succès : 80% à 90%
Cohérence données cache/mémoire
• Lecture/écriture en mémoire centrale via cache
• Le cache contient une copie d'une partie de la mémoire centrale :
nécessité de cohérence mutuelle
• Opérations de lecture/écriture sont effectuées dans le cache avec
répercussion sur la mémoire centrale

• Opération de lecture
• Pas de modification de valeurs : toujours cohérent
• Opération d'écriture
• Modification du contenu du cache : la partie équivalente en
mémoire centrale n'est plus cohérente
Cohérence cache/mémoire en écriture
2 techniques :

• Écriture simultanée (write-through)


• Quand écrit un mot d'une ligne du cache, on écrit simultanément le
mot de la même ligne en mémoire centrale
• Écriture plus longue car accès mémoire centrale
• Écriture différée ou réécriture (write-back)
• On n'écrit le mot que dans la ligne du cache
• Quand cette ligne est supprimée du cache, on l'écrit en mémoire
centrale
Cohérence données cache/mémoire
• Avantage du write-back
• Limitation des écritures en mémoire centrale

• Inconvénient du write-back
• Problème si d'autres éléments accèdent à la mémoire
en écriture
• Périphériques en mode DMA (Direct Memory Access)
• Multi-processeurs avec mémoire commune
• Nécessite alors des algorithmes supplémentaires pour
gérer la cohérence

Vous aimerez peut-être aussi