Tdprocesseur 001

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

Université de Sousse A.

U: 2010/2011
Ecole Nationale d'Ingénieurs de Sousse B.MAHMOUD / A. AMMARI
E.I. 2
Série N°2
Processeurs Embarqués

Exercice 1 :
Soit un mix d'instructions du DLX :
Type Fréquence
Arith/Logic 40%
Load 30% Parmi eux 25% sont
immédiatement suivis par
une instruction qui utilise le
résultat du Load
Store 10%
Brandi 20% Parmi eux 45% sont pris

Quel est le CPI pour le DLX avec forwarding et calcul d'addresse du branchement à l'étage
ID quand le branchement non pris est implémenté

Exercice 2 : &-, -= ~ '


loop: LWR1,0(R2) F . £ p 7 ,v,V?v»
**- ADDIR1,R1,#1 ., • - , - <">
/«W 0(R2), RI ;initiallement R3 vaut R2 +f4ÔÔ~ O
V/ADDI R2, R2, #4
f '"SUB R4, R3, R2 , ^ \o-o }
!£> BNEZ R4, loop
1) Exécuter la boucle une seule fois et donner les séquences d'instructions au niveau du
pipeline en supposant qu'il n'y a pas de forwarding (cependant l'écriture et la lecture du
même registre se fait au même cycle) et s'il y a des aléas de branchement (le calcul du
branchement se fait à l'étage MEM), le pipeline est bloqué. Donner le nombre de cycles pour
exécuter le programme en entier
2) Même_guestion^que_précédemment sauf qu'il y a forwarding et que le branchement est
Tpl-édlt commenpn-pjri^JjLe calcul du branchement se fait à l'étage ID)
SyMlEnêTquestion que B sauf que la technique du branchement retardé est implémentée (sur
une seule instruction), réordonnancer le code en incluant le branchement retardé

Exercice 3 ; Architecture RISC, aléas

Soit un pipeline à 5 niveaux semblable au DLX et soit la boucle suivante qui réalise
l'opération vectorielle Z = X - Y + Z pour des vecteurs de dimension 16:
etiq : LD FO, 0(R1) ; charge X(i)
LD F2, 0(R2) ;
SUBD F4, FO, F2 ;
LD F6, 0(R3) ; charge Z(i) /l s^Z-*:""

ADDD F8, F6, F4 ;


SD 0(R3), F8 ;
—XDDTKT; RI, #8 ;
range Z(i)o)
incrémente l'indice X '
ri
tr tt -y ~?
ADDI R2, R2, #8 ;
ADDI R3, R3, #8 ;
SGE/R5,R1,R4; teste si plus grand ou égal à 16*8 A
BEQZ R5, etiq ; boucle sinon { -

• X(0), Y(0) et Z(0) se trouvent à partir de l'adresse RI, R2 et R3


• RI, R2 et R3 sont initialisés à 0, 128 et 256 respectivement.
• R4 est initialisé à 128.
Inst produisant Inst Utilisant Latence

UALF UALF 3
UALF Rang D 2
Charg D UALF 1
Charg D Rang D 0

À partir de cette boucle et à l'aide de la table ci-dessus et en ne considérant que les aléas de
données:
a) Donnez la boucle non ordonnancée, en tenant compte des cycles de suspension ou
d'attente. Donnez le temps d'exécution.
b) À partir du résultat obtenu en a), dépliez la boucle 4 fois et ordonnancé les instructions afin
de minimiser le nombre de cycles par itération. Au besoin vous pouvez ajouter des registres
Ri ou Fi. Donnez le nombre de cycles par itération résultant.
rs^ Soit une machine superscalaire à deux pipelines: un pipeline pour les instructions entière
(et les accès mémoire) et un pipeline pour le point flottant. Ordonnancez la boucle dépliée
obtenue en b). Donnez le nombre de cycles par itération résultant.

Exercice 4 ; Identification des Aléas

a) Dans ce code, identifiez tous les aléas LAE, EAE, et EAL (RAW, WAW, WAR).
L.D. FO, 0(R1)
MULT.D F2, FO, F6 % FO * F6 -» F2
L.D. F6, 8(R1) %MEM[8+R1]
MULT.D F6, F6, F2 % F6 * F2 -»F6
S.D.F6, 16(R1) /^~x
(ÔADDIRl,Rl,W-32\ MEM[R1] % RI - 32 ^ RI
.
b) Parmi les aléa^ identifiés en a), identifiez ceux qui pourraient causer une suspension de
pipeline sur uù processeur avec'ordonnancement statique./
Note : Votre réponse doit être indépendante de la réalisation (nombre d'étages du pipeline,
envoi de données ou non, délai d'accès mémoire, etc.) du processeur.
c) Pour un processeur avec ordonnancement dynamique (dynamic scheduling), les obstacles
de type WAW et WAR ne peuvent être ignorés. Pourquoi ?
Exercice 5 :
Soit les programmes assembleur PI et P2.
RI contient initialement l'adresse d'un tableau X de flottants simple précision;
R2 contient initialement l'adresse d'un tableau Y de flottants simple précision;
La variable S est à l'adresse 0000 1000

PI
SUBF FO, FO, FO
ADDIR3,RO,128
Boucle :LF FI, 0(R1)
LF F2,0(R2)
MULTFF1,F1,F2
ADDF FO,FO,F1
ADDI RI,RI,4
ADDI R2,R2,4
ADDI R3,R3,-1
BNEZ R3, Boucle ^J>
SF-% lOOO(RO), Ç& :V=tf
,Vo> .,/
<^. .*£***
P2
SUBF F9,F9,F9
SUBF F10,F10,F10

UBFJF12.F12.F12.
ADDI R3,0, 128
Bouclé :XFFÏ,0(R.Ï)"
LFF3,4(R1)
LF F5, 8(R1)
LFF7,12(R1)
LF F2,0(R2)
LF F4, 4(R2)
LF F6, 8(R2)
LF F8, 12(R2)
MULTFF1,F1,F2
MULTF F3,F3,F4
MULTF F5,F5,F6
MULTF F7,F7,F8
ADDF F9,F9,F1
ADDFF10,F10,F3
ADDFF11,F11,F5
ADDF F12,F12,F7
ADDI RI, RI, 16
ADDIR2,R2,16
ADDI R3,R3,-4
BNEZ R3, Boucle
ADDFF9, F9,F10
ADDFF11,F11,F12
ADDFF9,F9,F11
SFF9, 1000(RO)
1- Exécuter le programme P1 sur DLX
2- Déterminer tous les aléas du programme PI
3- Donner le nombre de cycles ainsi le pourcentage d'aléas du PI
4- Corriger les aléas et exécuter le programme corrigé sur DLX
5- Exécuté le programme corrigé
6- Donner le nombre de cycles ainsi le pourcentage d'aléas du programme corrigé
7- Faire une comparaison entre les deux versions
8- Faire le même travail pour le programme P2
9- Que représente le programme P2 par rapport au programme PI ?

Vous aimerez peut-être aussi