Carc
Carc
Carc
Michel CRUCIANU
Table des matières
Introduction....................................................................................................................................................... 5
Structure générale d'un ordinateur....................................................................................................... 5
1. Représentation de l'information. Arithmétique en binaire................................................................... 5
1.1. Information ........................................................................................................................... 5
1.2. Représentation des nombres.................................................................................................. 5
1.2.1. Système de numération en base 2............................................................................ 5
1.2.2. Représentations en "virgule fixe"............................................................................ 7
1.2.2.1. Nombres sans signe :.............................................................................. 7
1.2.2.2. Nombres avec signe : ............................................................................. 7
1.2.3. Représentations en "virgule flottante"..................................................................... 8
1.3. Arithmétique en binaire......................................................................................................... 9
1.3.1. Nombres en binaire, sans signe ............................................................................... 9
1.3.1.1. L'addition exemples........................................................................... 9
1.3.1.2. La soustraction (A - B) exemples ...................................................... 9
1.3.1.3. La multiplication exemple................................................................. 10
1.3.1.4. La division exemple .......................................................................... 10
1.3.2. Nombres en complément à 2................................................................................... 10
1.3.2.1. Obtenir le complément à 2 ..................................................................... 10
1.3.2.2. L'addition exemples........................................................................... 11
1.3.3. Nombres en DCBN compacte................................................................................. 11
1.3.3.1. L'addition exemples........................................................................... 11
1.3.3.2. La soustraction (A - B) exemples ...................................................... 11
1.4. Représentation des caractères ............................................................................................... 12
2. Circuits combinatoires ........................................................................................................................ 12
2.1. Algèbre de Boole et opérateurs combinatoires ..................................................................... 12
2.2. Synthèse combinatoire .......................................................................................................... 14
2.2.1. Formes canoniques.................................................................................................. 14
2.2.2. Simplification de l'écriture d'une fonction logique.................................................. 15
2.2.2.1. Méthode algébrique................................................................................ 15
2.2.2.2. Méthode de Karnaugh ............................................................................ 15
2.2.3. Synthèse avec circuits élémentaires (portes) ........................................................... 15
2.2.4. Synthèse avec mémoires mortes (Read Only Memory, ROM) ................................ 17
2.2.5. Synthèse avec réseaux programmables (Programmable Logic Array, PLA) .......... 18
2.3. Bus et circuits "à trois états" (Tri-State Logic) ..................................................................... 18
3. Circuits séquentiels ............................................................................................................................. 18
3.1. Bascules ................................................................................................................................ 19
3.1.1. Bascules RS ............................................................................................................ 19
3.1.2. Bascules JK............................................................................................................. 19
3.1.3. Bascules D .............................................................................................................. 20
3.2. Registres................................................................................................................................ 21
3.2.1. Registres parallèles ................................................................................................. 21
3.2.2. Registres de déplacement........................................................................................ 21
3.3. Compteurs ............................................................................................................................. 21
3.4. Synthèse d'automates synchrones.......................................................................................... 22
4. Circuits complexes .............................................................................................................................. 24
4.1. Unité Arithmétique et Logique (UAL, ALU) ........................................................................ 24
4.1.1. Additionneurs.......................................................................................................... 24
4.1.2. Additionneur/soustracteur ....................................................................................... 25
4.1.2. Unité Arithmétique et Logique ............................................................................... 26
4.2. Mémoire vive (Random Access Memory, RAM) ................................................................... 27
4.2.1. Mémoires RAM statiques (SRAM).......................................................................... 27
4.2.2. Mémoires RAM dynamiques (DRAM).................................................................... 29
4.2.2. Augmentation de la capacité : utilisation de plusieurs circuits................................ 30
5. Structure et fonctionnement global d'un ordinateur............................................................................. 31
5.1. Structure et fonctionnement .................................................................................................. 31
5.1.1. Structure simplifiée ................................................................................................. 31
5.1.2. Fonctionnement....................................................................................................... 31
5.1.2.1. Exécution d'une instruction .................................................................... 31
5.1.2.2. Exécution des programmes .................................................................... 32
5.2. Architecture et performances ................................................................................................ 32
5.2.1. Temps d'exécution .................................................................................................. 32
5.2.2. Amélioration des accès mémoire ............................................................................ 32
5.2.3. Modèles d'exécution et réduction du temps d'exécution ......................................... 33
6. Structure et fonctionnement de l'unité centrale ................................................................................... 35
6.1. Structure et fonctionnement d'une unité centrale simple ....................................................... 35
6.2. Structure et fonctionnement de l'unité centrale SPARC........................................................ 36
6.2.1. Registres internes .................................................................................................... 36
6.2.2. Bus, pipeline, contrôle ............................................................................................ 37
7. Les instructions du SPARC................................................................................................................. 39
7.1. Registres et types de données................................................................................................ 39
7.2. Types et formats d'instructions. Modes d'adressage.............................................................. 41
7.3. Instructions de transfert registres UC ↔ mémoire................................................................ 42
7.4. Instructions arithmétiques, logiques et de translation (shift) ................................................. 43
7.5. Instructions de transfert de contrôle ...................................................................................... 44
Appel d'une procédure : ........................................................................................................ 45
Retour d'une procédure : ....................................................................................................... 46
Exemples d'utilisation : ......................................................................................................... 47
7.7. Autres instructions ................................................................................................................ 49
8. Organisation et gestion de la mémoire ................................................................................................ 50
8.1. Hiérarchie de mémoires ........................................................................................................ 50
8.2.1. La mémoire cache et sa gestion............................................................................................. 50
8.2.2. Mémoire principale et mémoire virtuelle .............................................................................. 52
9. Les entrées/sorties (E/S, I/O) et leur gestion ....................................................................................... 53
9.1. Types de dispositifs d'E/S ..................................................................................................... 53
9.2. L'interface avec l'UC............................................................................................................. 54
9.3. Dialogue avec les périphériques, interruptions ..................................................................... 54
9.4. Accès direct à la mémoire (Direct Memory Access, DMA)................................................... 54
9.5. L'interface avec la mémoire .................................................................................................. 55
Introduction
bus
Applications utilisateur
Langage d'application
Système d'exploitation (eventuellement assembleur)
Machine
micro-programmée
Langage machine
Machine
physique
Lang. micro-programmes
Commandes physiques
1.1. Information
Unité d'information : le bit permet de lever une ambiguïté élémentaire (oui/non)
Groupe ordonné de 8 bits : octet (byte)
MSB 0 1 0 0 0 0 0 1 LSB
7 0
Groupe ordonné de 4 bits : quartet
Unités employées couramment : 1 Koctet = 1024 octets (= 210 octets)
1 Moctet = 210 Koctets = 220 octets
ou b −1 ⋅ (a −1 + b −1 ⋅ (a − 2 + b −1 ⋅ (a −3 + b −1 ⋅ (a − 4 +)))) ,
donc a −1 , a −2 , a −3 , a−4 , sont les chiffres qui "glissent" successivement à gauche de la virgule lors de
multiplications successives par la base.
La valeur maximale que nous pouvons représenter est 28-2-8 (11111111,11111111 en binaire) et la valeur
minimale 2-8 (0,00000001). Nous constatons que la fidélité de la représentation (le nombre de chiffres
significatifs gardés) dépend directement de la valeur à représenter : plus le nombre à représenter est petit, moins
on peut garder de chiffres significatifs. Ce désavantage se manifeste pour toutes les représentations en "virgule
fixe".
2° Une autre possibilité, moins courante, est d'employer une représentation de type Décimal Codé Binaire
Naturel (Binary Coded Decimals). Dans ce cas, chaque chiffre du nombre décimal à représenter est traduite
individuellement en binaire sur 4 bits, et le nombre est représenté par la concaténation de ces groupes de 4 bits
(représentation BCD compacte). Par exemple, pour (56,3125)10 :
5 6 , 3 1 2 5
0101 0110, 0011 0001 0010 0101
En version non compacte, chaque quartet qui code un chiffre décimal constitue le quartet le moins significatif
d'un octet, l'autre quartet étant 0000 (ex. : 5 → 0101 → 00000101). Le nombre est représenté par la
concaténation de ces octets.
Cette technique de représentation est moins économique, mais facilite la traduction.
2° Complément à 1 (C1(N)) : le premier bit (le plus significatif) est réservé au signe (0 si N ≥ 0, 1 sinon), les
autres contiennent la traduction en binaire de la valeur si le nombre est positif, ou les chiffres opposés (0 ↔ 1) à
3° Complément à 2 (C2(N), ou complément vrai). Le premier bit (le plus significatif) est réservé au signe (0 si N
≥ 0, 1 sinon). Considérons que n des bits suivants sont réservés à la partie supra-unitaire des nombres. Alors la
représentation signe mis à part contient la traduction en binaire de la valeur si le nombre est positif, ou la
différence entre 2n et le résultat de cette traduction si le nombre est négatif. Par exemple, avec 7 bits pour la
partie supra-unitaire et 8 bits pour la partie sub-unitaire, nous obtenons :
(+56,3125)10 = (+111000,0101)2 →
0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0
(-56,3125)10 = (-111000,0101)2 → 27 - 111000,0101 = 1000111,10110000 =
1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 0
Le plus grand nombre positif représentable : 01111111.11111111 → +127,99609375.
Le plus petit nombre positif représentable : 00000000.00000001 → +0,00390625.
Le plus grand nombre négatif représentable : 11111111.11111111 → -0,00390625.
Le plus petit nombre négatif représentable : 10000000.00000000 → -128.
Ecart minimal entre deux nombres représentables : 0,00390625 (constant).
4° Codage par excédent (employé pour des nombres sans partie fractionnaire) : la représentation contient la
traduction en binaire de la somme entre le nombre à représenter et une valeur positive fixe (choisie telle que le
résultat soit toujours positif pour les nombres qu'on veut représenter). Par exemple, avec 8 bits, par excédent à
128 (= 27), nous obtenons :
(+56)10 = (+111000)2 → 27 + 111000 = 10111000 =
1 0 1 1 1 0 0 0
(- 56)10 = (- 111000)2 → 27 - 111000 = 01001000 =
0 1 0 0 1 0 0 0
Nous constatons que le premier bit ne correspond plus à la convention de signe employée jusqu'ici.
1° En simple précision (IEEE 754), 32 bits sont employés pour la représentation. Ainsi, le nombre 1,f × 2e-127
est représenté sous la forme suivante :
signe e f
31 30 23 22 0
Par exemple :
1 10000001 01000000000000000000000 représente :
signe = 1 ⇒ nombre négatif
e - 127 = (10000001)2 - 127 = 129 - 127 = 2
f = (0,01)2 = 0,25
donc le nombre représenté est -1,25 × 22 = -5.
+0,25 = (0,01)2 est représenté par :
nombre positif ⇒ signe = 0
(0,01)2 = 1,0 × 2-2 = 1,0 × 2125-127
2° En double précision (IEEE 754), 64 bits sont employés pour la représentation. Le nombre 1,f × 2e-1023 est
représenté sous la forme suivante :
signe e f
63 62 52 51 0
e f représente
0 0 ±0
-127 -1023
0 ≠0 ±0,f × 2 ou* ±0,f × 2
e-127 e-1023
0 < e < emax ∀f ±1,f × 2 ou* ±1,f × 2
emax (255 ou* 2047) 0 ±∞
emax (255 ou* 2047) ≠0 NaN (Not a Number)
(*simple ou double précision)
NaN est le résultat, par exemple, de − 1 ou de log(−1) ; le résultat d'une opération dont un des arguments est
NaN doit être NaN. ±∞ est le résultat, par exemple, des divisions par 0 ou de log(0) ; ±∞ peut intervenir dans des
calculs, par exemple 1/±∞ = ±0.
00101011
00101011
2° 11111111 ×
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
11111111
1.3.1.4. La division exemple (dividende représenté sur 8 bits, diviseur sur 4 bits) :
10000101 1001
1001
1110
1111
1001
1100
1001
111
correspond à :
133 = 9 × 14 + 7
Cas particulier : division par 2n = déplacement à droite de n positions.
2° C2(N) = C1(N) + 1, le C1(N) étant obtenu en inversant toutes les chiffres de la représentation en binaire du
nombre (0 ↔ 1), par exemple
positif → négatif : 0100 1000 → 1011 0111, +1 → 1011 1000 (signe inclus)
négatif → positif : 1011 1000 → 0100 0111, +1 → 0100 1000 (signe inclus)
1.3.3.1. L'addition exemples (nombres à deux chiffres décimales, représentés sur 8 bits) :
En général, nous effectuons l'addition en binaire sans prendre en compte le caractère particulier du codage, et
ensuite nous corrigeons le résultat de la façon suivante : s'il y a une retenue dans le quartet ou si le quartet
contient une valeur supérieure à 9 (1001), on ajoute 6 (0110) au quartet (et on propage l'éventuelle nouvelle
retenue vers le quartet supérieur).
Par exemple :
0010 1001 + 29 +
0100 0100 44
0110 1101 73
quartet inférieur supérieur à 1001, donc la correction doit être appliquée → 0111 0011 (73),
ou
0000 1001 + 9 +
0100 1000 48
0101 0001 57
retenue obtenue dans le quartet inférieur, la correction doit être appliquée → 0101 0111 (57).
Dec
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240
Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 nul 0 @ P ` p Ç É á
α ≡
1 1 ! 1 A Q a q ü æ í
β ±
2 2 × " 2 B R b r é Æ ó
Γ ≥
3 3 ♥ !! # 3 C S c s â ô ú
π ≤
4 4 ♦ ¶ $ 4 D T d t ä ö ñ
Σ ⌠
5 5 ♣ § % 5 E U e u à ò Ñ
σ ⌡
6 6 ♠ & 6 F V f v å û
µ ÷
7 7 • ' 7 G W g w ç ù
τ ≈
°
8 8
↑ ( 8 H X h x ê ÿ ¿
Φ
9 9
↓ ) 9 I Y i y ë Ö
θ •
10 A
→ * : J Z j z è Ü ¬
Ω •
11 B
← + ; K [ k { ï ¢ ½
δ √
n
12 C , < L \ l ¦ î £ ¼
∞
13 D Ö − = M ] m } ì ¥ ¡
φ ²
14 E s . > N ^ n ~ Ä «
∈ z
15 F t / ? O _ o • Å »
∩
2. Circuits combinatoires
x =x
x+0=x
x+1=1
x+x=x
x+ x =1
x0=0
x1=x
xx=x
x x =0
Commutativité :
x+y=y+x
xy=yx
Associativité :
(x + y) + z = x + (y + z)
(xy)z = x(yz)
Distributivité :
x(y + z) = xy + xz
x + yz = (x + y)(x + z)
x+ y = x⋅y
x⋅ y = x + y
x y x+ y x⋅y x⋅ y x+y
0 0 1 1 1 1
0 1 0 0 1 1
1 0 0 0 1 1
1 1 0 0 0 0
xy
zt 00 01 11 10
00 1 0 0 1
01 0 1 1 1
11 0 0 0 1
10 1 0 0 1
donc f(x, y, z, t) = y z t + x y + yt .
U
+
"1"
"0" "0"
0 t
NON
ET
OU
OU-EXCLUSIF
NAND
NOR
entrée
0
t
sortie
∆Τ
0
t
Toute fonction logique peut être obtenue soit avec des circuits NAND, soit avec des circuits NOR. Par exemple,
avec NAND :
1° x = x⋅ x
2° f=xy+yz+xt
f= x⋅ y + y⋅ z + x⋅t
f= xy ⋅ yz ⋅ xt
x
y
y f
z
x
t
s0
A s1
B s2
s3
adresse
mot 2
mot 1
mot 0
sortie
x1
x2
xn
1 2 m
f1
f2
fp
Programmation : les fusibles sont brûlés là où il est nécessaire d'éliminer des dépendances.
i o
X = 0) : X
S2 S1
bus
3. Circuits séquentiels
Circuits combinatoires : sortie (t) = F (entrée (t)) (absence de mémoire).
Circuits séquentiels : sortie (t) = F (entrée (t), entrée (t-1), … entrée (0)).
3.1.1. Bascules RS
Qn-1 = état antérieur, Qn = nouvel état
R S Qn
0 0 Qn-1
0 1 1
1 0 0
1* 1* ?
*combinaison interdite
S
R Q
R
S Q Q
t
Condition de bon fonctionnement : R⋅S = 0.
S Q
R Q
3.1.2. Bascules JK
But : éviter les combinaisons interdites en entrée
K J Qn
0 0 Qn-1
0 1 1
1 0 0
1 1 Q n -1
K (R) Q J Q
J (S) Q K Q
q
K (R) Q
J (S) Q
q
h
J
K
h J Q
q h
R
K Q
S
Q
t
Le changement d'état se manifeste à la sortie (Q) après que le signal d'horloge revient à 0.
3.1.3. Bascules D
D Qn
0 0
1 1
(R) Q
(S) Q
D
Bascule D synchronisée par un horloge h (change d'état quand l'entrée D est "visible", c'est à dire quand h est à
1) :
(R) Q D
D Q
h
D (S) Q
h Q
Q
h t
Sont utilisées couramment les bascules D qui changent d'état durant la montée du signal d'horloge de 0 à
D Q
h Q
1:
D3 Q3
h
D2 Q2
h
D1 Q1
h
D0 Q0
h h
D D0 Q0 D1 Q1 D2 Q2 D3 Q3 D
IN OUT
h h h h
h
S/P
DS D0 Q0 D1 Q1 D2 Q2 D3 Q3 DS
IN OUT
h h h h
h
3.3. Compteurs
Compteur binaire asynchrone avec bascules JK "maître-esclave" :
1 1 1
H
J0 Q0 J1 Q1 J2 Q2
Q0
H h h h Q1
K0 K1 K2 Q2
t
h
D Q0 D Q1 D Q2 Q0
h Q0 h h Q1
h Q2
t
0 0
0 1 2
1 1
1 0 1 0
0 0
5 4 3
1 1
2° codage des états et construction de la table de transition et de sortie
code = valeur en binaire (4 bits nécessaires) du nombre décimal
Q2 SQ2 Q1 SQ2
Q1Q 0 00 01 11 10 Q1Q 0 00 01 11 10
00 0 1 0 1 00 0 0 1 0
01 0 0 1 0 01 1 1 0 0
11 1 X X 0 11 0 X X 1
10 0 X X 0 10 1 X X 0
Q0 SQ2
Q1Q 0 00 01 11 10
00 1 1 1 1
01 0 0 0 0
11 0 X X 0
10 1 X X 1
D 2 = S ⋅ Q 2 ⋅ Q 0 + S ⋅ Q 2 ⋅ Q 0 + S ⋅ Q 2 ⋅ Q1 ⋅ Q 0 + S ⋅ Q 1 ⋅ Q 0
D 1 = S ⋅ Q1 ⋅ Q 0 + S ⋅ Q 2 ⋅ Q 0 + S ⋅ Q 1 ⋅ Q 0 + S ⋅ Q 1 ⋅ Q 0
D 0 = Q0
0 0
0 1 2
1 1
1 0 1 0
0 0
5 4 3
1 1
1 0
0
6 7
1
Même si l'état initial ne fait pas partie des états désirés, après au maximum 2 impulsions d'horloge l'automate
entre en cycle normal.
5° (éventuellement) re-synthèse à partir du graphe complet
4. Circuits complexes
4.1.1. Additionneurs
Addition sur 4 bits :
a 3 b3 a 2 b2 a1 b1 a 0 b0
r0
a b re a b re a b re a b re
+ + + +
rs S rs S rs S rs S
r4 S3 S2 S1 S0
S = a ⋅ b ⋅ re + a ⋅ b ⋅ re + a ⋅ b ⋅ re + a ⋅ b ⋅ re = a ⊕ b ⊕ re
rs = a ⋅ b + re ⋅ (a ⊕ b )
a b re
rs S
4.1.2. Additionneur/soustracteur
Multiplexeur 2 à 1 (sur 4 bits) :
X3 Y3 X2 Y2 X1 Y1 X0 Y0
X/Y
O3 O2 O1 O0
A7 A4 A3 A0 B7 B 6 B5 B 4 B 3 B 2 B1 B 0 A/S
o3 o2 o1 o0 o3 o2 o1 o0
a 3 b3 a 2 b2 a1 b1 a 0 b0 a 3 b3 a 2 b2 a1 b1 a 0 b0
r4 r0 r4 r0
s 3 s 2 s 1 s0 s 3 s 2 s 1 s0
D S7 S6 S5 S4 S3 S2 S1 S0 Z
Opérand A Opérand B
A B
Code A<B
opération A=B Contrôle Conditions
Unité arithmétique et logique A>B UAL
Mode
Dépassement
Co Cn
R
Résultat
Cellules mémoire
mot m
mot m-1
mot m-2
Bus
Décodeur
adresses
mot 2
mot 1
mot 0
Bus de données
DIN DOUT
selection mot
D Q
écriture
Fonctionnement :
Décodeur Matrice de
adresse
adresse
ligne
ligne cellules mémoire
entrées
d'adresse Sélection transfert 1 ligne
circuit
Ecriture
Tampon lecture/écriture
adresse
Décodeur adresse et sélection colonne
colonne
Validation
adresse colonne
Bus de données
entrées
adresse adresse ligne adresse colonne
sortie de
donnée lue
données
selection
circuit
validation
adresse colonne t
bus données
32 b
Ecriture
64 K
64K x 8 64K x 8 64K x 8 64K x 8 256 K
64 K
64 K
bus données
Ecriture
Bus adresses
Bus données
Bus contrôle
5.1.2. Fonctionnement
Registres internes UC
Mémoire cache
Rapidité Capacité
d'accès Mémoire principale
Mémoire de masse
E/S
Réseau
Disques graphique
bus interne
Compteurs instructions
bus source 1
bus source 2
Contrôle séquentiel
8 registres de 32 bits
différentes
positions
de la
fenêtre
8 registres de 32 bits
A chaque instant, seuls les registres globaux et les registres "visibles à travers la fenêtre" sont accessibles. Ce
mécanisme permet un changement facile et rapide du contexte (par exemple, pour l'appel de procédures).
Lecture Instr. i Instr. i+1 Instr. i+2 Instr. i+3 Instr. i+4 Instr. i+5 Instr. i+6
Décodage Instr. i Instr. i+1 Instr. i+2 Instr. i+3 Instr. i+4 Instr. i+5
Exécution Instr. i Instr. i+1 Instr. i+2 Instr. i+3 Instr. i+4
Une instruction demande toujours 4 périodes d'horloge afin d'être exécutée, mais le parallélisme permet de
terminer une nouvelle instruction pour chaque période de l'horloge.
Quant une instruction exige une étape 3bis, un code d'opération interne (OPI) est engendré à l'intérieur de la
pipeline, après le décodage de l'instruction, et l'accès (lecture ou écriture de donnée) au bus de données est
intercalé dans la séquence normale de lecture d'instructions :
1 2 3 4 5 6 7
Horloge
Lecture Instr. i Instr. i+1 Instr. i+2 Donnée Instr. i+3 Instr. i+4 Instr. i+5
Décodage Instr. i OPI Instr. i+1 Instr. i+2 Instr. i+3 Instr. i+4
Exécution Instr. i OPI Instr. i+1 Instr. i+2 Instr. i+3
63 Double mot 0
31 Mot 0 31 Mot 0
15 Demi-mot 0 15 Demi-mot 0 15 Demi-mot 0 15 Demi-mot 0
7 Octet 0 7 Octet 0 7 Octet 0 7 Octet 0 7 Octet 0 7 Octet 0 7 Octet 7 Octet 0
N N+1 N+2 N+3 N+4 N+5 N+6 N+7
Questions : Comment on charge une valeur numérique spécifique, représentée sur 32 bits, dans un registre UC ?
Comment on copie un registre UC dans un autre ? (voir plus loin …)
Dans l'UC SPARC nous trouvons à chaque instant plusieurs instructions successives, en différentes étapes
d'exécution. Un transfert du contrôle (suite à un branchement conditionnel, un appel ou un retour de procédure)
nécessiterait ainsi l'élimination d'une instruction du pipeline (pour un branchement conditionnel, la condition de
branchement est évaluée et l'adresse à laquelle le contrôle doit être transféré est calculée pendant l'étape 2
décodage de l'instruction) et donc introduirait un retard d'au moins une période d'horloge. Le SPARC peut éviter
cela en permettant l'exécution de l'instruction qui suit l'instruction de transfert de contrôle, avant d'effectuer ce
transfert de contrôle. Bien sûr, le programmeur (ou le compilateur) doit écrire après l'instruction de branchement
une instruction dont l'exécution avant le transfert du contrôle soit conforme à l'algorithme à implémenter. Si une
telle instruction n'est pas trouvée, une instruction inopérante doit être écrite à la place (instruction inopérante
recommandée par le constructeur : sethi %hi 0, %g0).
Influence du bit d'annulation sur l'exécution de l'instruction qui suit un branchement conditionnel :
a=0: a=1:
Suite d'instructions
CALL ou JMPL
Transfert contrôle
4° la première instruction du programme appelant est exécutée.
Exemples d'utilisation :
1° Placer dans le registre l0 le maximum (valeur avec signe) des contenus de l1 et l2 :
…
subcc %l1, %l2, %g0
bl et1
or %g0, %l1, %l0
ba, a et2
et1: or %g0, %l2, %l0
et2: …
(observation : l'instruction or %g0, %l1, %l0 est toujours exécutée).
2° Multiplication de nombres entiers (facteurs sur 32 bits, produit sur 64 bits) positifs :
.seg "data"
.align 4
fpr: .word 0x10000000, 0x10000000
.seg "prog"
sethi %hi (fpr), %l0
or %l0, %lo (fpr), %l0
ldd [%l0+0], %l1
wr %l1, %g0, %y
or %g0, %g0, %l1
or %g0, 32, %l3
mlt: subcc %l3, 1, %l3
bnz mlt
mulscc %l1, %l2, %l1
rd %y, %l2
std [%l0+0], %l1
Registres internes UC
Mémoire cache
Rapidité Capacité
d'accès Mémoire principale
Mémoire de masse
Hypothèses de localité :
1° Localité temporelle : un objet déjà référencé le sera à nouveau bientôt.
2° Localité spatiale : les objets proches d'un objet référencé seront référencés bientôt.
Ces hypothèses de localité sont confirmées par des statistiques de fonctionnement ; cela assure l'utilisation
efficace de chaque niveau intermédiaire de la hiérarchie comme un tampon de taille limitée entre l'unité centrale
et le niveau suivant, plus lent, de la hiérarchie.
Unité minimale d'information qui peut être soit présente soit absente (dans la mémoire cache ou dans la mémoire
principale) = bloc. Toute adresse a donc deux composantes :
numéro du bloc position dans le bloc
Questions à prendre en compte (pour la mémoire cache et pour la mémoire principale) :
1° Où peut-on placer un bloc ?
2° Comment retrouve-t-on un bloc ?
3° Quel bloc doit être remplacé en cas d'absence du bloc référencé (miss) ?
4° Comment fonctionne l'écriture ?
Caractéristiques* :
Composante Registres UC Cache Mémoire principale Disques
Taille typique < 1 Koctet < 512 Koctets < 512 Moctets > 1 Goctet
Temps d'accès 10 ns 20 ns 100 ns 20 000 000 ns
Débit typique 800 Moctets/s 200 Moctets/s 133 Moctets/s 4 Moctets/s
Gérée par Compilateurs Hardware Syst. exploitation Syst. exploit.
*année de référence 1990
Cache
Mémoire
principale
Blocs 0 1 2 34 5 6 78 9 ...
Mémoire adresse
principale
Comment assurer une débit élevé pour les transferts cache ↔ mémoire centrale (condition nécessaire pour
l'efficacité de la cache) :
1° Utilisation d'un bus de données de taille supérieure entre la cache et la mémoire principale (64 bits,
128 bits).
2° Séparation de la mémoire principale en bancs et multiplexage sur le bus de données des informations
destinées aux bancs différents.
3° Utilisation de modes spécifiques d'accès pour les circuits de RAM dynamiques qui composent la
mémoire principale (par ex., accès page : l'adresse de ligne est présentée une seule fois et ensuite
plusieurs colonnes différentes sont lues successivement).
npv npp
Mémoire
Translation-lookaside buffer
Q3 : Quelle page doit être remplacée en mémoire en cas d'absence de la page référencée (page fault) ?
R : En général c'est la page la moins récemment référencée (consistant avec les principes de localité),
mais d'autres choix sont possibles et la stratégie choisie par le système d'exploitation peut dépendre du
contexte.
Q4 : Comment fonctionne l'écriture ?
R : En raison du coût excessif d'une écriture en mémoire de masse, tous les systèmes existants utilisent
l'écriture au remplacement de la page : l'UC n'écrit que dans la mémoire principale, mais toute page
modifiée par l'UC est réécrite en mémoire de masse au moment où elle doit être remplacée en mémoire
principale par une autre page.
La traduction de l'adresse virtuelle en adresse physique a lieu avant l'entrée de l'adresse dans la mémoire cache !
Bus UC - mémoire (adresses, données, contrôle)
Mémoire cache
Mémoire
Traduction adresse
principale
Unité centrale
Contrôleur
de transfert
Dispositif
Bus (programmable)
E/S E/S
Tampons
de données
Mémoire
E/S
Réseau
Disques graphique
Cette solution est très performante (peu d'interférences entre les transferts E/S et le travail de l'UC), mais
des incohérences peuvent apparaître entre les informations gardées dans la cache et celles se transférées
entre la mémoire principale et les périphériques. Les solutions à ce problème combinent des
composantes matérielles et logicielles.
2° Connexion avec le bus local de l'UC (bus UC ↔ cache) :
Bus UC - mémoire (adresses, données, contrôle)
E/S
Réseau
Disques graphique
La solution est moins performante, mais aucune incohérence ne peut apparaître. Toutefois, la première
solution est en général préférée.
E/S
Réseau
Disques graphique
Le système d'exploitation gère les deux modules de traduction d'adresse, qui font appel à une même
table de correspondances.