Corrige Exam 2005
Corrige Exam 2005
Corrige Exam 2005
Etiemble
Licence d’informatique 2004-2005
Q1) Donner le contenu des registres R7 à R10 (sous forme de huit chiffres hexadécimaux) après
exécution des instructions suivantes. Indiquer les cas de débordement
Q2) Donner le contenu des registres R12 à R16 (sous forme de huit chiffres hexadécimaux)
après exécution des instructions suivantes :
1
Université Paris Sud D. Etiemble
Licence d’informatique 2004-2005
Programme C
T[0]=0 ;
T[1]=1 ;
For (i=2 ; i<100 ; i++)
T[i]=T[i-1]+T[i-2];
PARTIE 3 : CACHES
On considère que le processeur décrit en annexe a un cache donnée de 8 Ko, avec des blocs
(lignes) de 16 octets. Il utilise la réécriture (write back) avec écriture allouée (write allocate)
- Rappel : lors d’un échec cache en écriture, les caches à « écriture allouée » (write
allocate) commencent par charger le bloc manquant depuis la mémoire principale. Il y a
ensuite écriture dans le bloc de cache qui vient d’être chargé.
-
Le processeur exécute le programme C suivant :
Q5) Donner le nombre d’échecs cache avec pénalité d’échec par itération de la boucle dans les
hypothèses suivantes :
a) le cache est à correspondance directe
b) le cache est associatif quatre voies (4 blocs par ensemble)
c) le cache est associatif deux voies (2 blocs par ensemble)
Dans les cas b) et c), la politique de remplacement est le LRU.
2
Université Paris Sud D. Etiemble
Licence d’informatique 2004-2005
En correspondance directe, les adresses de X[i], Y[i] et Z[i] correspondent au même bloc du
cache. Avec les caches associatifs 2 ou 4 voies, les adresses de X[i], Y[i] et Z[i] correspondent au
même ensemble.
a) correspondance directe : il y a trois défauts de cache par itération, un pour chaque
élément de chaque tableau
b) associativité quatre voies : il y a quatre blocs différents pour chaque ensemble. Chaque
bloc ayant 4 flottants, il y a trois défauts de cache pour 4 itérations, soit 0,75
défauts/itération
c) associativité 2 voies : il y a deux blocs par ensemble. Compte tenu du LRU, il y a 3
défauts de cache par itération (voir ci-dessous)
er ème
Itération 1 ensemble 2 ensemble
0 X[0] X[1] X[2]X[3] Y[0] Y[1] Y[2]Y[3]
0-1 Z[0] Z[1] Z[2]Z[3] X[0] X[1] X[2]X[3]
1 Y[0] Y[1] Y[2]Y[3] Z[0] Z[1] Z[2]Z[3]
2 X[0] X[1] X[2]X[3] Y[0] Y[1] Y[2]Y[3]
2-3 Z[0] Z[1] Z[2]Z[3] X[0] X[1] X[2]X[3]
3 Y[0] Y[1] Y[2]Y[3] Z[0] Z[1] Z[2]Z[3]
Q6) Reprendre la question Q5 en supposant que les adresses de début des tableaux sont
maintenant
@X[0] = F000 0000H
@Y[0] = F000 0200H
@Z[0] = F000 0400H
En correspondance directe, les adresses de X[i], Y[i] et Z[i] correspondent à des blocs différents
du cache. Avec les caches associatifs 2 ou 4 voies, les adresses de X[i], Y[i] et Z[i] correspondent
à des ensembles différents.
Dans les trois cas, il y a donc 3 défauts pour 4 itérations, soit 0,75 défauts par itération.
.
PARTIE 4 : TEMPS D’EXECUTION
Le processeur est pipeliné. Il peut commencer une nouvelle instruction à chaque cycle.
Les latences des instructions sont les suivantes (une instruction i qui s'exécute au cycle c a une
latence de n cycles si une instruction qui dépend de i ne peut commencer avant le cycle i+n. ):
- Instructions entières dont ADDI et BNE : 1 cycle
- LF : 2 cycles, SF : 1 cycle
- ADDF 3 cycles
-
Soit le programme assembleur PA1 suivant :
ADDI R4,R1,400 // 400 : valeur décimale
Boucle : LF F1, 0(R1) // R1 contient initialement la valeur F000 0000H
LF F2, 0(R2) // R2 contient initialement la valeur F000 1000H
ADDF F1, F1, F2
SF F1, 0(R3) // R3 contient initialement la valeur F000 2000H
ADDI R1,R1, 4
ADDI R2, R2, 4
ADDI R3, R3, 4
3
Université Paris Sud D. Etiemble
Licence d’informatique 2004-2005
Dans cette partie, on considèrera des caches parfaits (pas d’échecs cache).
Q6) Quel est le temps d’exécution en cycles d’horloge par itération du programme PA1 ?
Q7) Donner une version PA2 du programme PA1 optimisée par simple réordonnancement des
instructions pour réduire le temps d’exécution. Quel est alors le temps d’exécution en cycles
d’horloge par itération de la version PA2 ?
Q8) Quel serait le temps d’exécution par itération de la boucle initiale avec un déroulage
d’ordre 4 (4 itérations par boucle déroulée) pour la version PA2 ? On est dans le cas où le
nombre d’itérations est un multiple de 4
ADDI R4,R1,400
1 Boucle : LF F1, 0(R1)
2 LF F2, 0(R2)
3
4 ADDF F1, F1, F2
5
6
7 SF F1, 0(R3)
8 ADDI R1,R1, 4
9 ADDI R2, R2, 4
10 ADDI R3, R3, 4
11 BNEQ R1,R4, Boucle
PA1 : 11 cycles par itération
ADDI R4,R1,400
1 Boucle : LF F1, 0(R1)
2 LF F2, 0(R2)
3 ADDI R1,R1, 4
4 ADDF F1, F1, F2
5 ADDI R2, R2, 4
6 ADDI R3, R3, 4
7 SF F1, -4(R3)
8 BNEQ R1,R4, Boucle
PA2 : 8 cycles par itération.
Déroulage par 4
4
Université Paris Sud D. Etiemble
Licence d’informatique 2004-2005
ANNEXE
Le processeur considéré est une version simplifiée du MIPS R2000 pour la partie entière et
complétée pour la partie flottante. Il a 32 registres entiers de 32 bits, notés R0 à R31. Le registre
R0 est câblé à 0. Il a 32 registres flottants de 32 bits notés F0 à F31. Le registre F0 est normal.
Il y a trois formats d’instructions (figure 1)
FORMAT I : IMMÉDIAT
31 26 25 2120 16 15 0
OP rs rt immédiat
FORMAT J : SAUTS
31 26 25 0
OP Destination
FORMAT R : REGISTRE
31 26 25 2120 16 15 11 10 6 5 0
OP rs rt rd nombre ext CO
OP : code opération
ext CO : extension du code
opération
5
Université Paris Sud D. Etiemble
Licence d’informatique 2004-2005