Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Examen Assembleur 2007

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Université Paris Sud 2010-2011

Licence d’Informatique (L313)

ARCHITECTURE DES ORDINATEURS


Examen Juin 2011
3H – Tous documents autorisés
Les questions sont indépendantes
On utilise le jeu d’instructions NIOS II.

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.

LF 2 LF ft, déplac(rs) ft ← MEM [rs +SIMM]


SF 1 SF ft, déplac(rs) ft → MEM [rs + SIMM]
FADD 3 FADD fd, fs,ft fd ← fs + ft (addition flottante simple précision)
FMUL 3 FMUL fd, fs,ft fd ← fs * ft (multiplication flottante simple précision)
FSUB 3 FSUB fd, fs,ft fd ← fs - ft (soustraction flottante simple précision)
Figure 1: Instructions flottantes ajoutées (Ce ne sont pas les instructions NIOS)
Question 7) Quel est le temps d’exécution (en cycles par itération) de la boucle de la table 1.
Optimiser la boucle et donner le nouveau temps d’exécution (cycles/itération).
Table 1 : Programme C et programme assembleur
float X[100], Y[100], S; ADDI R5, R3, 400
int i ; FSUB F0, F0, F0
for (i=0; i<100; i++) Boucle :LF F1,(R3)
S+=X[i]*Y[i]; LF F2, (R4)
FMUL F1,F1,F2
FADD F0,F0,F1
ADDI R3,R3,4
ADDI R4,R4,4
BNEQ R3,R5, Boucle
SF F0, (adresse de 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

Vous aimerez peut-être aussi