Examen Assembleur 2007
Examen Assembleur 2007
Examen Assembleur 2007
PROGRAMMATION ASSEMBLEUR
1) Soit le code C
int a, b;
unsigned char c;
char d; // Les adresses de a, b, c, d sont initialement dans R1, R2,
//R3, R4
a= (int) c;
b= (int) d
Question 1 ) Ecrire le code assembleur NIOS correspondant au code C
2) Soit une fonction Prime(x dans R4) qui renvoie 1 dans R2 si x est premier et 0 sinon.
R5 contient l’adresse du premier élément d’un tableau d’entiers T, et R6 contient le nombre N
d’éléments du tableau.
Soit le code assembleur NIOS II ci-dessous
ADDI R4,R0,0
Test :BLE R6,R0, FIN
Boucle : ADDI R4,R4,1
Call Prime
BEQ R2,R0, Boucle
STW R4,(R5)
ADDI R5,R5,4
ADDI R6,R6,-1
BEQ R0,R0,Test
FIN :
Question 2) Donner le code C correspondant au code assembleur
Question 3) Que fait le programme ?
CACHES
On suppose que le processeur utilisé a un cache données de 32 Ko, avec des blocs de 32 octets.
Le cache utilise la réécriture avec écriture allouée (il y a des défauts de cache en écriture)
Le processeur a des adresses sur 32 bits.
L’adresse de X[0] est F000 0000H. L’adresse de Y[0] est FF00 0000H
1/3
Université Paris Sud 2010-2011
Licence d’Informatique (L313)
Question 4) Quel est pour ce cache le nombre de bits pour l’adresse dans le bloc, le nombre
de bits d’index et le nombre de bits d’étiquette dans les deux cas suivants : a) correspondance
directe, b) associativité quatre voies (quatre blocs par ensemble).
Question 5) Dans quels blocs vont les flottants X[0] et Y[0] correspondance directe ?
Question 6) Quel est le nombre total de défauts de caches lors de l’exécution des boucles
pour les deux cas suivants : a) correspondance directe, b) associativité quatre voies pour les
corps de boucle suivant
float X[2048], Y[2048], S ; int i;
1) for (i=0 ; i<2048 ; i++)
S+=X[i] ;
2) for (i=0 ; i<2048 ; i++)
S+=X[i] + Y[i];
3) for (i=0 ; i<2040 ; i++)
S+=X[i] + X[i+8];
EXECUTION DE BOUCLES
On ajoute au jeu d’instructions NIOS II des instructions flottantes simple précision (32 bits)
(Figure 1) et 32 registres flottants F0 à F31 (F0 est un registre normal).
Les additions, soustractions et multiplications flottantes sont pipelinées. Une nouvelle
instruction peut démarrer à chaque cycle. Les latences sont de 2 cycles pour LF et de 3 cycles
pour les instructions flottantes.
Les branchements ne sont pas retardés.
2/3
Université Paris Sud 2010-2011
Licence d’Informatique (L313)
Question 8) Quel serait le temps d’exécution (en nombre de cycles de la boucle initiale) avec
un déroulage de boucle d’ordre 4 ?
PREDICTION DE BRANCHEMENT
Un branchement a le comportement suivant, où ¨P signifie pris et N signifie non pris.
PPNPPPPNPPPPNPPPPNPPPPNPPPPNPPPPN….
Question 9 : après la phase d’initialisation, quelle est le pourcentage de bonnes prédictions
a) avec un prédicteur 1 bit
b) avec un prédicteur 2 bits.
3/3