Slides
Slides
Planning: 13 semaines
Transparents
Web: [Link]
1
Objectif: Comprendre le fonctionnement interne des ordinateurs
Mémoires
Interruptions
Protection et multiprogrammation
Mémoire cache
Mémoire virtuelle
2
Circuits et Signaux
circuit
fil
entrée
sortie
3
Circuits et Signaux (suite)
La valeur 0 d’un signal est souvent représentée par une tension de 0 V (environ)
La valeur 1 d’un signal est souvent représentée par une tension de 3 ou 5 V (environ)
4
Circuits combinatoires
x y
0 0
x y
1 1
x Circuit y
2 2
combinatoire
x y
m-1 n-1
5
Tables de vérité
Un circuit combinatoire peut être complètement décrit par une telle table
Exemple:
x y z a b
0 0 0 0 1
0 0 1 1 1
0 1 0 1 1
0 1 1 1 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 0 1
6
Portes logiques
porte "et"
porte "ou"
porte "non-et"
porte "non-ou"
7
Inverseur
x y
x y
0 1
1 0
8
Porte "et"
x
0
y
x
n-1
x x y
1 0
0 0 0
0 1 0
1 0 0
1 1 1
9
Porte "ou"
x
0
y
x
n-1
La valeur de la sortie est 1 ssi la valeur d’au moins une entrée est 1
x x y
1 0
0 0 0
0 1 1
1 0 1
1 1 1
10
Porte "non-et"
x
0
y
x
n-1
x x y
1 0
0 0 1
0 1 1
1 0 1
1 1 0
11
Porte "non-ou"
x
0
y
x
n-1
La valeur de la sortie est 0 ssi la valeur d’au moins une entrée est 1
x x y
1 0
0 0 1
0 1 0
1 0 0
1 1 0
12
Porte "ou exlusif"
x
0
y
x
n-1
x x y
1 0
0 0 0
0 1 1
1 0 1
1 1 0
13
Simulation de portes
Il suffit d’avoir des portes "non-et" pour simuler les autres portes
un inverseur à la sortie d’une porte "non-et":
Pour simuler une porte "ou" il suffit de brancher
un inverseur à chaque entrée d’une porte "non-et":
Pour simuler une porte "non-ou" il suffit de brancher
un inverseur à la sortie d’une porte "ou":
La porte "ou exclusif" est un peu plus difficile, mais
possible elle aussi.
14
Construction de circuits combinatoires
Table de vérité
Formule logique
15
Spécification: formule logique
idempotence xx = x x+x = x
Opérateurs: +, - , .
inversion xx = 0 x+x = 1
16
Spécification: table de vérité
x y z out
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1
x y z out
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 -
1 0 0 -
1 0 1 1
1 1 0 0
1 1 1 1
17
Abbreviation de la table de vérité
Souvent la valeur de la sortie est identique pour plusieurs combinaisons d’entrées:
x1 x2 x3 x4 x5 y
0 0 - - - 1
0 1 - - - 0
1 0 - - 0 0
1 0 - - 1 1
1 1 0 - - 1
1 1 1 - - 0
Il est possible d’avoir des valeurs de sortie non pécisées dans une table abbreviée:
x1 x2 x3 x4 x5 y
0 0 - - - 1
0 1 - - - 0
1 0 - - 0 -
1 0 - - 1 1
1 1 0 - - -
1 1 1 - - 0
18
Méthode générale de construction d’un circuit combinatoire
Première couche:
Pour chaque ligne dont la valeur est 1, mettre une porte non-et, avec une
entrée normale pour un 1, et une entrée inversée pour un 0
Deuxième couche:
Mettre une porte non-et avec en entrée les sortie de la première couche
19
Exemple de construction générale
t = xy + z(x + y)
20
Exemple de construction directe
t = xy + z(x + y)
Circuit:
x
21
Exemple où la méthode générale est inadaptée
(Multiplexeur)
a2 a1 a0 d7 d6 d5 d4 d3 d2 d1 d0 out
0 0 0 - - - - - - - c c
0 0 1 - - - - - - c - c
0 1 0 - - - - - c - - c
0 1 1 - - - - c - - - c
1 0 0 - - - c - - - - c
1 0 1 - - c - - - - - c
1 1 0 - c - - - - - - c
1 1 1 c - - - - - - - c
La table de vérié non abbreviée a 2048 lignes dont 1024 avec out = 1
22
Le circuit du multiplexeur
d7 d6 d5 d4 d3 d2 d1 d0
a2
a1
a0
23
Démultiplexeur
a2 a1 a0 d x7 x6 x5 x4 x3 x2 x1 x0
0 0 0 c 0 0 0 0 0 0 0 c
0 0 1 c 0 0 0 0 0 0 c 0
0 1 0 c 0 0 0 0 0 c 0 0
0 1 1 c 0 0 0 0 c 0 0 0
1 0 0 c 0 0 0 c 0 0 0 0
1 0 1 c 0 0 c 0 0 0 0 0
1 1 0 c 0 c 0 0 0 0 0 0
1 1 1 c c 0 0 0 0 0 0 0
a2
a1
a0
x7 x6 x5 x4 x3 x2 x1 x0
24
Décodeur
a2 a1 a0 x7 x6 x5 x4 x3 x2 x1 x0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
a2
a1
a0
x7 x6 x5 x4 x3 x2 x1 x0
25
Arithmétique binaire
3 2 1 0
2034 = 2 * 10 + 0 * 10 + 3 * 10 + 4 * 10
Représentation en base 2:
4 3 2 1 0
11010 = 1 * 2 + 1 * 2 + 0 * 2 + 1 * 2 + 0 * 2
26
Algorithmes pour l’arithmétique binaire
Addition Soustraction
1 1 1 10 10
1 0 1 1 1 0 0 1
+ 1 0 0 1 - 1 1 0
1 0 1 0 0 0 0 1 1
Multiplication Division
1 1 0 1 0 1 1 0
* 1 0 1 1 0 1 1 0 1
1 0
1 1 0 1
1 0
0 0 0 0
1 0
1 1 0 1
0 1
1 0 0 0 0 0 1
27
Représentation de nombres négatifs
28
Représentation de nombres négatifs
Complément à 10 avec précision infinie
Imaginons l’odomètre d’une voiture (ou d’un vélo) mais avec un nombre
infine de roues.
-1 = ...9999999
-2 = ...9999998
-3 - ...9999997
29
Représentation des nombres négatifs
... 0 0 0 3 4 (34)
... 9 9 9 9 3 (-7)
... 0 0 0 2 7 (27)
... 9 9 9 8 7 (-13)
... 9 9 9 9 3 (-7)
... 9 9 9 8 0 (-20)
30
Représentation de nombres négatifs
Nous pouvons faire presque la même chose avec une précision finie
Exemple d’addition: 2 3 3 2 3 3 2 3 3
1 0 5 5 2 1 (-479) 9 9 5 (-5)
3 3 8 7 5 4 (-246) 1 2 2 8 (???)
2 3 3 9 9 8 (-2)
3 2 1 8 8 1 (-119)
5 5 4 (-446!!!) 1 8 7 9 (???)
31
Représentation de nombres négatifs
32
Arithmétique binaire
33
Représentation des nombres rationnels
34
Représentation en virgule flottante
(IEEE 754)
Le nombre est divisé en mantisse est exposant les deux de taille fixe
Les format internes sont : simple précision (32 bits) et double précision (64 bits)
35
IEEE 754
Simple précision:
1 8 23
exp mantisse
signe
Double précision:
1 11 52
exp mantisse
signe
e
Le nombre représenté est s * m * 2
36
Représentation de la mantisse (IEEE 754)
(représentation normalisée)
De plus, la valeur est toujours normalisée (1 <= v < 2). C’est toujours possible,
car on peut toujours ajuster l’exposant
37
Représentation de l’exposant (IEEE 754)
(représentation normalisée)
L’opération la plus fréquente est l’addition/soustraction
-126
Le plus petit nombre représentable est donc 1 * 2
127
Le plus grand nombre représentable est 1,11111111111111111111111 * 2
38
IEEE 754
(représentation non normalisée)
Représentation dénormalisée
Représentation de zéro
Représentation de l’infini
39
IEEE 754
(représentation dénormalisée)
La valeur de la mantisse est 0 < v < 1 avec tous les bits représentés.
-127
Le plus grand nombre dénormalisé est donc 0.11111111111111111111111 * 2
soit presque 2 -127
-127
Le plus petit nombre dénormalisé est 0,00000000000000000000001 * 2
soit 2-150
40
IEEE 754
(représentation de zéro)
41
IEEE 754
(représentation de l’infini)
Cette valeur est générée par des opérations arithmétiques dont le résultat
dépasse ce qui est représentable de façon normalisée
Cette valeur est aussi acceptable en tant que opérande des opérations
arithmétiques
42
IEEE 754
(NaN, Not a Number)
43
Arithmétique en virgule flottante
Il suffit alors de décaler la mantisse du plus petit nombre à droite (right shift)
(y compris le bit implicit) et d’incrémenter son exposant
Si les exposants sont très différents, on risque de perdre des bits significatifs
du plus petit nombre
44
Circuits pour l’arithmétique binaire
(addition et soustraction)
Même avec minimisation, un circuit à deux niveaux peut avoir trop de portes
(selon le nombre de bits de la représentation)
45
Additionneur (1 bit)
x y
c-out c-in
x y c-in s c-out
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
46
Additionneur, circuit
x
y
c-in
c-out s
47
Additionneur à n bits
(exemple n = 8)
y7 x7 y6 x6 y5 x5 y4 x4 y3 x3 y2 x2 y1 x1 y0 x0
y x y x y x y x y x y x y x y x
s7 s6 s5 s4 s3 s2 s1 s0
48
Analyse du circuit d’addition
49
Accélération du calcul de la retenue
Idéee de base:
y3 x3 y2 x2 y1 x1 y0 x0
y7 x7 y6 x6 y5 x5 y4 x4 y3 x3 y2 x2 y1 x1 y0 x0
y x y x y x y x y x y x y x y x
s7 s6 s5 s4 s3 s2 s1 s0
50
Addition de plusieurs bits à la fois
y7 x7 y6 x6 y5 x5 y4 x4 y3 x3 y2 x2 y1 x1 y0 x0
s7 s6 s5 s4 s3 s2 s1 s0
51
Addition et soustraction
Pour calculer x - y, on calcule x + (-y).
y7 y6 y5 y4 y3 y2 y1 y0
sub
x7 x6 x5 x4 x3 x2 x1 x0
Additionneur 8 bits
c
s7 s6 s5 s4 s3 s2 s1 s0
52
Circuits séquentiels
53
Table d’état
Exemple:
u/d x y x’ y’
0 0 0 0 1
0 0 1 1 0
0 1 0 1 1
0 1 1 1 1
1 0 0 0 0
1 0 1 0 0
1 1 0 0 1
1 1 1 1 0
La nouvelle valeur (après un front d’horloge) d’une sortie s est indiquée par s’
54
Bascules
Voici sa réalisation:
x
r
55
Bascule SR
0 0
s s
0 1 1 0
1 0 0 1
x x
r r
0 0
1 0
s s
1 0 0 1
0 1 1 0
x x
r r
0 1
56
Symbole de la bascule SR
Les symboles pour les bascules ne sont pas aussi standardisés que
ceux des portes logiques
s x
57
Bistables
Un bistable est un cirquit séquentiel (donc avec horloge) similaire à une bascule,
mais le changement d’état est synchronisé par une horloge
r r
clock
58
Symbole du bistable D
D x
59
Méthode générale de construction de circuits séquentiels
D
y0
.
.
. D
y1
x0
D
y2
x1
. .
. .
. .
D
yn
xm
60
Exemple de la méthode générale
u/d
u/d x y x’ y’
0 0 0 0 1
0 0 1 1 0
0 1 0 1 1
0 1 1 1 1
1 0 0 0 0 D y
1 0 1 0 0
1 1 0 0 1
1 1 1 1 0
D x
61
Registres
Un registre est un circuit séquentiel avec n+1 entrées (sans compter l’horloge)
et n sorties.
62
Symbole du registre
x0 y0
x y
1 1
x y
n-1 n-1
ld
63
Compteurs
64
Variations sur les compteurs
65
Multiplication binaire
1 1 0 1 1 1 0 1
1 0 1 1 0 1
1 1 0 1 1 1 0 1 accumulateur
0 0 0 0 0 0 0 0
1 1 0 1
1 1 0 1 accumulateur
1 0 0 0 0 0 1 1 1 0 1
1 0 0 0 0 0 1 accumulateur
66
Multiplication binaire (suite)
n-1 n-2 0
y = y 2 + y 2 + ... + y 2
n-1 n-2 0
67
Multiplication binaire (suite)
n-1
r = r / 2 + x * y 2
i+1 i i
Car:
n-1
r / 2 + x * y 2 =
i i
68
Multiplication binaire (suite)
n-1 n
Mais: r = r / 2 + x * y 2 = (r + x * y 2 ) / 2
i+1 i i i i
x3 x2 x1 x0
0 0 0 0
r7 r6 r5 r4 r3 r2 r1 r0
69
Multiplication binaire (suite)
x3 x2 x1 x0
r7 r6 r5 r4 r3 r2 r1 r0
70
Multiplication binaire (suite)
x3 x2 x1 x0
r7 r6 r5 r4 r3 r2 r1 r0
71
Multiplication binaire (suite)
x3 x2 x1 x0
r7 r6 r5 r4 r3 r2 r1 r0
yi
72
Logique à trois états
Avec la logique à trois état, on introduit une troisème possibilité: non définie
Avec des circuits à trois états, on peut le faire, à condition qu’au plus
un des circuits branchés ait une valeur définie (0 ou 1)
Les circuits de ce type ont une entrée supplémentaire que l’on appel "enable"
73
Logique à trois états (suite)
enable
Quand "enable" est 1, alors il y a libre passage entre les deux autres ports
Quand "enable" est 0, alors il n’y a pas de connexion entre les deux autres ports
Symboles:
unidirectionnel bidirectionnel
74
Logique à trois états (suite)
Pour convertir un circuit normal (par exemple une porte "et") en circuit à
trois états, il suffit de faire passer la sortie par un "bus driver":
enable
75
La notion de bus
Un bus est une collections de fils sur lesquels on peut connecter la sortie
de plusieurs circuits à trois états, ainsi que l’entrée de circuits arbitraires
Un seul des circuits à trois états peut avoir ses sorties à 0 ou 1. Les autres
doivent avoir la valeur non définie
en en
en en
76
Mémoires
77
Mémoires (suite)
a0 d0
a1 d1
.
.
.
am-1 dn-1
enable r/w
L’entrée enable indique si les sorties d0 ... dn-1 sont dans un état défini
78
Mémoires (suite)
Nous allons montrer comment construire une mémoire à 2^m mots, chacun
de n bits
d0
s x
enable r/w
79
Mémoires (suite)
a0
. a1 d0 d1
.
am-1
en r/w
a0
. a1 d0 dn-1
.
am-1
en r/w
r/w en
80
Mémoires (suite)
am am-1 a0
a0 d0 d0
a1 d1 d1
en r/w d0
a0
a1 d1
am-1 dn-1
en r/w
81
Le premier ordinateur
Data Bus Address Bus
1 Main 5
Instruction Decoder
Memory
2
BD
clr ld en r/w
micro PC
PC
3 4 ld incr clr
reset
1 15 8 9 10
1
BD
11 R0 R1 12
13-15 ALU
82
La micro mémoire
C’est comme une mémoire mais sans écriture (read-only memory, ROM)
83
Le micro PC
84
Le décodeur d’ instructions
85
L’unité arithmétique et logique (ALU)
Selon les MOPs 13-15, capable d’effectuer une opération arithmétique ou logique
86
Les registres R0 et R1
La sortie de R1 peut (via MOP 8 et un pilote de bus) sortier sur le bus de données
87
La mémoire principale
88
Le registre d’adresse
Le contenu peut être sortie sur le bus d’adresse via un pilote de bus
piloté par le MOP 10
89
Le compteur ordinal
Le contenu peut être sortie sur le bus d’adresse via un pilote de bus et MOP 5
90
Conteu de la micro mémoire et du décodeur d’instructions
micro mémoire décodeur d’instructions
reset
1 15 8 9 10
1 6
BD 20
19
18
11 R0 R1 12 17
NZ CV 16
13-15 ALU
92
Contenu du circuit
N Z C V
17 18 19 20
93
Conteu de la micro mémoire et du décodeur d’instructions
micro mémoire décodeur d’instructions
95
Sous-programmes
En C:
f() h()
{ {
h(); ...
} return;
... }
g()
{
h();
}
Problème principal:
96
Sous-programmes (suite)
f: ... hret: 0
ldimm fhret h: ...
copy jin hret
st hret
...
jal h
fhret: ...
g: ...
ldimm ghret
copy
st hret
...
jal h
ghret: ...
97
Sous-programmes (suite)
5 3 9 7
10 3 9
10 6 1
Problème:
Solution:
98
Sous-programmes (suite)
Utilisation de jsr:
f: ... 0
jsr h-1 h: ...
... jin h-1
...
g: jsr h-1
...
Description de jsr:
99
Modifications pour jsr
Data Bus Address Bus
1 Main 5
Instruction Decoder
Memory
2
BD
clr ld en r/w
micro PC
3 4 PC
ld incr clr
BD Data Reg
micro Mem 22 21 6 7
Address Reg BD
reset
1 15 8
1
9 10
BD
11 R0 R1 12
13-15 ALU
100
Micro programme pour jsr
5 3 9 7
5 21
10 22
10 22 4
10 22 4 3
10 22 4
10 6
7 1
101
Récursivité
La pile est définie par un registre: pointeur de pile (sp, stack pointer)
sp
sp
sp
sp
Notre choix
102
Modifications pour la pile
Data Bus Address Bus
1 Main 5
Instruction Decoder Memory
2
BD
clr ld en r/w
micro PC reset
3 4 PC
ld incr clr
BD Data Reg 1
micro Mem 22 21 6 7
Address Reg BD
1 15 8 BD
9 10 Stack Pointer
25 inc dec clr
BD
23 24
11 R0 R1 12
13-15 ALU
103
Instructions jsr et ret avec pile
Utilisation:
f: ... h: ...
jsr h ret
...
g: ...
jsr h
...
Description jsr:
1. empiler PC
2. charcher l’adresse donnée dans PC
Description ret:
104
Micro programme pour jsr et ret avec pile
jsr
5 3 9 7
5 21 24
25 22
25 22 4
25 22 4 3
25 22 4
10 6 1
ret
25 3 9
10 6 23 1
105
Utilisation de la pile pour passage de paramètres
push
empiler le contenu de R1
pop
106
Implémentation de push et de pop
push:
24
8 25 4
8 25 4 3
8 25 4 1
pop:
25 3 11 23 1
107
Protocole d’appel de sous programmes
108
Accès aux arguments dans un sous programme
Actuellement, la seule possibilité est d’utiliser pop, ce qui n’est pas pratique
109
Modifications pour l’accès aux arguments
Data Bus Address Bus
1 Main 5
Instruction Decoder Memory
2
BD
clr ld en r/w
micro PC reset
3 4 PC
ld incr clr
BD Data Reg 1
micro Mem 22 21 6 7
clr
Address Reg BD BD Stack Pointer
1 15 8 inc dec
9 10 25
BD 26 23 24
BD
Adder
11 R0 R1 12
13-15 ALU
110
Nouvelle instruction pour l’accès aux argument
Il est maintenant possible d’écrire une instruction lds (load from stack).
5 3 9 7
26 3 11 1
111
Dépiler les arguments
112
Modifications pour l’arithétique de sp
Data Bus Address Bus
1 Main 5
Instruction Decoder Memory
2
BD
clr ld en r/w
micro PC reset
3 4 PC
ld incr clr
BD Data Reg 1
micro Mem 22 21 6 7
clr
Address Reg BD BD Stack Pointer
1 15 8 inc dec ld
9 10 25
BD 26 23 24 27
BD
Adder
11 R0 R1 12
13-15 ALU
113
Nouvelle instruction pour l’arithmétique de sp
Voici l’implémentation
5 3 9 7
27 1
114
Variables locales à un sous programme
var loc m
var loc 1
adresse de retour
arg 1
arg n
115
Nouveau protocole d’appel
Appelant Appelé
calculer argument n
empiler R1
...
calculer argument 1
empiler
jsr appelé
addsp -m
calculer en utilisant lds, sts
addsp m
ret
addsp n
116
Entrées/Sorties
117
Sortie
d0 d0
s x s x
r r
118
Sortie (suite)
Pour avoir un registre à (par exemple) 8 bit, il suffit d’en mettre 8 en parallèle:
d0
d1
d7
enable r/w
119
Sortie (suite)
Décodage d’adresses
d7 d6 d5 d4 d3 d2 d1 d0
enable
a0
a1
a2
a3
a4
a5
a6
a7
r/w
120
121
! ! ! ! " " "
r/w
$#$#$#
$$#$#
##$#
Sortie (suite)
d0
Exemple
7 ségments
décodeur
d1
BCD
d7
enable
a0
a1
a7
Entrée
d0 d0
s x x
122
Entrée (suite)
d0
d1
d7
enable r/w
123
Entrée (suite)
Décodage d’adresses
d7 d6 d5 d4 d3 d2 d1 d0
enable
a0
a1
a2
a3
a4
a5
a6
a7
r/w
124
Entrée (suite)
Exemple
d7 d1 d0
enable r/w
a0
a1
a7
1 1 1 1
125
Entrée (suite)
Problème:
Solution:
126
Modifications pour les interruptions
Instruction Decoder
Memory
2
28 BD
clr1 clr2 ld en r/w
int
micro PC A BD reset
3 4 PC
ld incr clr
BD Data Reg 1
micro Mem 22 21 6 7
clr
Address Reg BD BD Stack Pointer
1 15 8 inc dec ld
9 10 25
int BD 26 23 24 27
BD
Adder
s x
r 11 R0 R1 12
29
13-15 ALU
127
Modification de micro PC
128
Micro programme pour les interruptions
29 5 21 24
25 22 4
25 22 4 3
25 22 4
28 6 1
129
Différences entre notre architecture et une architecture réelle
130
CISC/RISC
CISC RISC
131
Optimisations
132
Instructions pour les langages haut niveau
sp
var
loc
ap
sp a.r. a.r. sp a.r.
sp arg1 arg1 arg1 arg1 sp arg1
arg2 arg2 arg2 arg2 arg2
ap ap ap ap
133
Mémoire Cache
Problème : la mémoire est beacoup plus lente que le processeur (facteur 10)
UC
134
Mémoire Cache
L’objectif est de faire croire que la mémoire entière est de la taille de celle
que est plus grande, et du coût de celle qui est le moins chère
Raison du principe :
135
Cache, idée de base
28 bits 4 bits
136
Cache, chargement de blocs
L’argorithme utilisé est souvent une version de LRU (least recently used,
moins récemment utilisé), mais il y en a d’autres (random, ...)
137
Cache associatif
Le cache est composé d’un nombre de "lignes de cache"
(ou simplement "ligne", anglais : cache lines), égal au nombre de blocs
Chaque ligne contient un bit pour indiquer si le contenu de la ligne est valide,
un nombre de bits assez large pour déterminer un numéro de bloc de façon
unique (dans notre exemple précédent : 28 bits), et le bloc (16 octets dans notre
exemple, soit 128 bits)
138
Cache associatif
bloc octet
B 1010
1 B
ligne
cherchée
octet chercé
139
Cache associatif
Pour que l’accès soit rapide, le numéro de bloc cherché doit être comparé
en parallèle avec toutes les lignes simultanément
140
Cache direct
Exemple (taille du cache 128 ko, adresses à 32 bits, taille d’un bloc 16 octets) :
B1
8 k lignes
B1
compar
141
Cache associatif à N groupes
C’est une solution intermédiaire entre associatif et direct (ex N=4, taille 128 ko)
17 11 4
17
142
Cache associatif à N groupes
143
Choix des paramètres
Pour une taille fixe de cache, il est donc préférable d’avoir des blocs de
taille importante
Associativité
144
Influence du cache sur la programmation
C’est une bonne idée d’aligner le code et les données sur les lignes de cache
Il faut éviter des boucles et des tableaux dont la taille dépasse celle du cache
(pour un cache associatif, c’est la seule considération)
Pour un cache direct, il faut éviter une distance entre appelant et appelé
multiple de la taille du cache, ainsi que la manipulation simultanée de données
à distance multiple de la taille du cache
145
Stratégie d’écriture du cache
Écriture immédiate
Écriture différée
146
Pipeline
sans pipeline
avec pipeline
147
Pipeline
Cache
instructions
Cache
données
148
Pipeline
Exemple: multiplication
x3 x2 x1 x0
r7 r6 r5 r4 r3 r2 r1 r0
yi
149
Pipeline
x r, y
portes Exécution:
add
x r, y
portes
add
t
x r, y
portes
add
x r, y
portes
add
150
Multiprocesseurs
151
SMP
UC UC UC UC
Cache Cache Cache Cache
Mémoire
152
SMP
153
Furetage
Les autres processeurs Q1, Q2, ... vérifient s’ils ont une copie du bloc
Les écritures suivantes du bloc par P n’ont pas besoin de message d’invalidation
154
Synchronisation
155
Synchronisation avec l’instruction swap
156
Synchronisation (suite)
Avec un seul processeur, chaque instruction est atomique (c’est pour ça que
nous avons décidé de tenir compte des interruptions après terminaison de
l’exécution de l’instruction)
C’est un problème résolu par l’arbitrage du bus (que nous n’avons pas
le temps d’en parler)
157