L'examendure3heures.
Lesujetomporte6pagesdont2pagesderappelssurleLC-2.
Tousdoumentsautorisés.
Lebarèmeestdonnéàtitreindiatif,ilvoussertsurtoutàévaluerlepoidsrespetifdesexeries;
lasommedespointsest50.
Ilestimpératifdeommentervosprogrammesouséquenesdeontrle;laplupartdeslignes/instrutions
doiventêtresuiviesd'unommentairepermettantdeomprendreleurrle.
Il est impératifde justier lairementtoutes vos réponses.
OnveutréeruneversionpipelinéeduLC2.Pourela,onmodielastrutureduLC2ommeindiqué
dans laFigure 1. Onaplaé lesprinipaux blos hardware duLC2 dansles étages depipeline. Il ya
5étages depipeline : IF, ID,EX, MEM, WB; deux étagesde pipeline
E 1 et E 2 (e.g., IDet EX) sont
séparésparunregistred'étageappelé
E 1 /E 2(e.g., ID/EX).Lesétagesdepipelinesontlessuivants:
IF (InstrutionFeth) :hargementdel'instrution depuisla mémoire;ontrairementauLC2, il
n'y apasderegistreinstrutionIR,onstokel'instrutiondansleregistred'étageIF/ID;
ID(InstrutionDeode):leiruitdeontrledéterminelanaturedel'instrutionetréupèreles
opérandesdel'instrution(hampsdebitsontenusdansl'instrutionet/ouregistres);
EX (Exeute) :aluls arithmétiques et logiques,mais aussialuls d'adresses;ontrairementau
LC2,iln'y apasd'additionneurdediéaualuld'adresses;
MEM (Memory): hargementourangementdedonnéesenmémoire;
WB(WriteBak):érituredanslebanderegistres;
Attention,e pipelineduLC2estdiérentdeeluivuenours.
DanslaFigure1,ladesriptiondesportsdesdiérentsomposantsestlasuivante:
InstrutionCahe:AddrIN(16bits, adressedel'instrution),InstOUT(16bits,instrution);
RegisterBank : SR1,SR2 (3bits haun, numérodes registressoure 1et 2), OUT1,OUT2 (16
bitshaun,valeurdesregistressoure1et2),DR(3bits,numéroduregistredestination),IN(16
bits, valeuràériredansleregistredestination),LD.REG(1 bit,vaut1enasd'ériture);
Data Cahe : AddrIN (16 bits, adresse de la donnée àlire ou érire), DataIN (16 bits, valeurà
érire),DataOUT(16bits,valeurlue),R/W(1bit, vaut1enasd'ériture);
On suppose que le temps de yle d'horloge est très grand; en onséquene, toutes les tâhes qui
peuventthéoriquements'eetuerenunyles'exéutenteetivementenunyle(e.g.,leture/ériture
danslesahes,alulsdansl'ALU,et).
Dansl'ensembledusujet,onignorel'instrutionTRAP.
Lesexeries2,3,4sontrelativementindépendants,bien qu'ilsoit reommandéde lestraiterdans
l'ordre.En revanhe,ilestindispensabledeommenerparl'exerie1.
Exerie 1 - Exéution pipelinée des instrutions (20 points)
Dans ette question, on veut omprendre omment les instrutions du LC2 s'exéutent dans e
pipeline, et on veut progressivement ompléter le diagramme de la Figure 1. Vous devez reproduire
eshémasurvotreopie.
Question 1.1
Pourlepipeline,quelestl'intérêtd'avoirunahed'instrutionset unahededonnées?
Figure1Versionpipelinée duLC2.
Réponse
Celadonnel'illusionauproesseurquelesmémoiresdonnéesetinstrutionssontdeuxressouresdiérentes,
etdonilnepeutyavoirdeonitsderessoure.
Question 1.2
DanslaFigure1,l'étageWBneontientapparemmentauunblomatériel.Quelleressourematérielle
estenfaitutiliséedansetétage?
Réponse
Leportd'érituredubanderegistres.Pluspréisément,lessignaux:
LD.REG
,DR
,DR.IN
.Question 1.3
Dansette question,ononsidèrelesinstrutionsarithmétiques etlogiques(ADD,AND,NOT).
(a)Quelletâheest eetuéedansl'étageMEMdupipelineparesinstrutions?
(b)Quelomposantfaut-ilajouterdansl'étageID,etparquellesinstrutionssera-t-ilutilisé?Aquoi
orrespondeomposant?
Réponse
(a) Auune, es instrutions se omportent omme des NOP pour et étage. Eventuellement, on pouvait
antiiperqueNZPsontalulésdansMEM,mais'était diileàestade.
(b)L'extensiondesigne(SEXT)utiliséepourlesmodesimmédiatdeADDetAND.Ceomposantn'estpas
uniruit,ils'agitjustederépliquerlebitdesigne11fois.
Question 1.4
Dansette question,ononsidèrelesinstrutionsdebranhementinonditionnel(JMP,JMPR).
(a)Quelomposantfaut-il ajouterdansl'étageIDpourpouvoirexéuterl'instrutionJMP?Aquel
iruitorrespondeomposant?
(b)Même questionpourJMPR?
()Alandequelétage,auplustt,onnait-onl'adressedebranhementpourJMPR?
(d)Dansunshémaséparé,ajoutezlesiruitsetheminsnéessairesàl'exéutiondeJMPetJMPR
dansl'étageIFdelaFigure1;indiquezlairementlenombredebitsetlanaturedel'informationportée
parhaquehemin.
Réponse
(a)L'adresse ibledeJMPestdonnéeparlaonaténationdes7bits depoidsfortduPC etdes 9bitsde
poidsfaible del'instrution.Ilfaut donajouterun opérateurdeonaténationdansl'étage ID,quin'est rien
d'autre,enfait,qu'unejontiondels.Aveetopérateur,ononnaitdonl'adresseibledubranhementàla
ndel'étageID.
(b)PourJMPR,ilfautajouterl'extensionnonsignée(ZEXT)dansl'étageID. Anouveau, en'estpas un
iruit,maissimplementl'ajoutdedix0enbitsdepoidsfort.
()PourJMPR,ilfautajouterl'index,ontenudansl'instrution,àunregistresoure.Cetteadditionalieu
dansl'ALU,donl'adresseibledubranhementestonnueàlandel'étageEX.
(a)ParrapportàJMPetJMPR,JSRetJSRRdoiventeetueruneationsupplémentaire,laquelle?
(b) En supposant que ette ation est eetuée dans l'étage ID, pourquoi peut-elle engendrer un
onitderessoures?Détaillezvotreréponse.
() Pour JSR, fournissez deux séquenes simples d'instrutions, l'une engendrant un tel onit de
ressoures,l'autre n'aboutissantpasàunonitderessoures.
(d) Dans quel étage faut-il eetuer ette ation pour être ertain de ne pas avoir de onit de
ressoures?Onsupposedorénavantqueetteexéutionesteetuéedansetétagelà.
(e)Alandequelétage,auplustt,onnait-onl'adressedebranhementpourRET?
(f)Enfatorisantlaquestion(d),ombienfaut-ild'instrutions,auminimum,entreunJSRetleRET
assoié pour que le programme s'exéute orretement (en supposant qu'il n'y a pas de forwarding)?
Quesepasse-t-ilsinon?
Réponse
(a)JSR/JSRRdoitsauvegarderPC+1dansleregistre
R7
.(b)Ilpeutdonyavoirunonitderessouressurleportd'érituredubanderegistresavedesinstrutions
dansl'étageWBsil'oneetueettesauvegardeenID,lorsque
R7
estdisponibleetquel'onsaitquel'instrution estunJSR/JSRR.IdemsiondéidedelefaireenEX.() Par exemple,la séquene i-dessous engendre un onit de ressoures pare que ADD veut érire son
résultatlorsqueJSRvoudrasauvegarder
R7
.ADD R3, R2, R1
<INST>
<INST>
JSR ADDRESS
Dans laséquenei-dessous il n'ya pasde onitde ressourespare que STn'érit pas dansle ban de
registres,i.e.,ilnesepasserienàl'étageWB.
ST R3, ADDRESS2
<INST>
<INST>
JSR ADDRESS1
(d)Dansl'étageWB.
(e)Alandel'étageID,unefoisqu'onaluleregistre
R7
.(f)LeJSRvastoker
R7
dansl'étageWB,etilfautqu'ilaiteetuéetteationpourqueleRETassoiéliselavaleurorretedanslebanderegistres.OrRETlitlavaleurdansID,ilfautdonauminimum3instrutions
entreleJSRetleRETpourque
R7
ontiennelabonnevaleurlorsqueRETvalelire.Sinon,onvafaireunsautàlavaleurontenuedans
R7
enl'interprétantommeuneadresse.Question 1.6
Dans ette question, ononsidère les instrutions de hargementmémoire (LD, LDR).A lan de
quelétagel'adresseest-elledisponiblepourLD?PourLDR?
Réponse
(a)LD:àlandeID,ommeJMP.
(b)LDR:àlandeEX,ommeLDR.
Question 1.7
Dans ette question, on onsidère l'instrution LEA. Quelle tâhe eetue LEA dans l'étage EX?
Dansl'étageMEM?
Réponse
Auune.
Question 1.8
Dansette question,ononsidèrelesinstrutionsderangementmémoire(ST,STR).
(a)A landequelétagel'adresseest-elledisponiblepourST? PourSTR?
Réponse
(a)MêmehosequepourLD/LDR.
(b)AlandeID(ladonnéeestluedanslebanderegistres).
Question 1.9
Dans ettequestion,ononsidèrel'instrutiondebranhementonditionnel(BR),etonétudieplus
endétaillesproblèmesdebranhement.
(a) DansleLC2pipeliné,d'où provientl'entréeduiruitombinatoirealulantlesbitsNZP?En
déduirepourquoiil fautmettreeiruitombinatoireetlesregistresNZP dansl'étageMEM.
Ajoutez le iruitNZP dans la Figure 1(on ne détaillerapas leiruit NZP lui-même, déjà vu en
TD,onlereprésenteraaveunesimpleboîte)et lesomposantset heminsnéessairespourobtenirson
entrée.
Onsupposequeleiruitpermettantdealulerlaonditiondubranhementsetrouvedanslemême
étage MEM,et on nestokeplusette onditiondans unregistre(plus de registreBEN),la sortiedu
iruitest utiliséeimmédiatementparunéventuelBR.
(b) Sansajouterlemoindre autreomposant(pasdetable depréditionouautre), quellepolitique
de prédition de branhement doit-onimpliitement utiliser pour pouvoirharger une instrutionpar
yle?
()Dansepipeline, jusqu'àlandequelétage, auplustard,peut-onautorisertouteinstrutionà
s'exéuterdefaçonspéulative?Pourquoi?
(d) Si l'on onsidère l'ensemble des instrutions de branhement, quels sont les délais minimal et
maximal (à partir du début de l'exéution de l'instrution de branhement) pour déterminer si une
préditiondebranhementest orrete?
(e)Donnezuneséquenesimpled'instrutionsillustrantunasoùesdélaisvariablesengendrentun
onitderessoures.Détaillezvotreréponse.
(f)Donnezuneséquenesimpled'instrutionsillustrantunasoùesdélaisvariablesengendrentune
exéutioninorreteduode,notammentenraisonduaratèrespéulatifdel'exéutiondesinstrutions.
(g) Dorénavant, on supposera que le branhement lui-même ne pourra être eetué que lorsque
l'instrutiondebranhementseradans l'étageMEM.Réalisezmaintenantlaversiondénitive(iruits
ethemins)del'étageIF dushémadelaFigure1.
Réponse
(a)Sil'instrutiondansl'étageMEMestuneinstrutionALU,onutiliselasortiedel'ALUdansEX/MEM,
sinon, on utilise la donnée lueen mémoire. Du oup, selon l'instrution quipréède le branhement, ondoit
éventuellementattendrel'étage MEMpouralulerNZP (asd'unLD/LDR),don ilfautmettrele iruitet
lesregistresNZPdansl'étageMEM.
Onplaedon leiruit deNZP dans l'étage MEM, ave, en entrée un multiplexeurprenant lasortie de
l'ALUprovenantduregistreEX/MEMetlavaleurrevenantdelamémoire.
(b)Impliitement,haquebranhementest prédit nonpris, don onpeut ontinuer àharger l'instrution
suivante,enutilisantlerésultatdePC+1.
()Jusqu'àlandel'étageEXpare que,jusqu'àetétage, l'étatduproesseur(registres, mémoire)n'est
pasmodiéparl'instrution.
(d)UneinstrutionJMP/JSRpeuteetuersonbranhementàlandel'étageID,uneinstrutionJMPR/JSRR
ouun BRpréédéd'unLD/LDRnepourraeetuersonbranhementqu'àlan del'étage MEM.Ledélaiest
donde2à4yles.
(e)Danslaséquenei-dessous,leJMPetleJMPRvontvouloireetuerleurbranhementaumêmeyle,
puisqueleJMPseradansl'étageIDetleJMPRdansl'étageEX.Ilyadonunonitderessouressurleport
d'éritureduPC,etsurtout,onnepeutlaisserJMPmodierl'étatdelamahineavantqueJMPRnesoitonnu.
JMPR R0, INDEX
JMP ADDRESS2
(f)Danslaséquenei-dessous,leBRestnonpris,etilestsuivid'uneinstrutionJMP.CommeleBRestnon
pris,ilnemodie paslePC, maisleJMPquilesuit,exéutéspéulativement,lemodie.Commelaondition
duBRestrésolueunyleaprèslesautduJMP(résolutionduBRenMEM,sautduJMPenID),leiruitde
ontrlen'apasenoreannulél'instrutionJMPpréédantleBR.LePCestdoninorretementmodié.
LD R0, ADDRESS1
BRn ADDRESS2; non pris
JMP ADDRESS3
(g)LemultiplexeurenentréeduPCn'aplusquedeuxentrées:soitPC+1,soituneadressedebranhement,
envoyéedepuisl'étageMEM.
haqueregistred'étage,indiquezlairementquellesinstrutionspartagentexatementlesmêmeshamps
duregistred'étage;présentezvosréponsesdelafaçonsuivante:
Registre
E 1 /E 2 :
INSTRUCTIONa,INSTRUCTIONb,... : <natureduhamp>(<nombrede bits>)
...
Réponse
IF/ID:
Toutes:instrution(16);
LD,JMP,LEA,BR:BitsdepoidsfortduPC(7);
JSR,JSRR:PC+1orrespondantàl'adressederetour(16);
Taille:16+16=32bits.
ID/EX:
Toutes:opode(4);
ADD,AND,NOT:les(valeursdes)deuxregistressoure(2x16),unseulpourNOTetADD,ANDreg-reg;
ADD,ANDreg-imm:unevaleurimmédiateétendue(16);
LD,JMP,LEA,JSR,BR,ST:adresse(16);
LDR,STR,JMPR,JSRR:unregistreetunindexétendu(16+16);
ST,STR:registre(valeuràérire)(16);
JMP,JMPR,JSR,JSRR:bitL(1);
JSR,JSRR:adressederetour(16);
BR:nzp(3)
Taille:4(opode),2x16pourlesregistressoures(utilisésparALUmaisaussil'adressageindexéetlesstores
pour lavaleurà érire), 16pour les adresses diretes, 16pour les immédiats étendus (signés), 16pour les in-
dexétendus(nonsignés),16pourl'adressederetour,1pourlebitL:4+2x16+16+16+16+16+1=101bits.
EX/MEM:
Toutes:opode(4);
ADD,AND,NOT,LDR,STR,JMPR,JSRR:sortiedel'ALU(valeurouadresse)(16);
LD,ST, LEA,JMP,JSR,BR:adresseobtenuedansDI(16);
ST,STR:registre(valeuràérire)(16);
JSR,JSRR:adressederetour(16);
JMP,JMPR,JSR,JSRR:bitL(1);
Taille : 4 (opode), 16(sortie ALU),16 (adresse direte), 16 (valeur à érire pour ST/STR), 16(adresse
retourpourJSR/JSRR),1(L):4+16+16+16+16+1=69bits.
MEM/WB :
Toutes:opode(4);
ADD,AND,NOT:résultatdel'ALUàériredansunregistre(16);
LD,LDR:valeurlueenmémoireetàériredansunregistre (16);
LEA:adresse(16);
ST,STR,JMP,JMPR:rien(0);
JSR,JSRR:adressederetour(16);
JMP,JMPR,JSR,JSRR:bitL(1);
Taille:4(opode),16(résultatALU),16(valeurmémoire),16(adresse),16(
R7
pourJSR/JSRR),1(L):4+16+16+16+16+1=69bits.
Question 2.2
En supposantque l'on n'ajouteauun multiplexeur supplémentaireen entrée desregistresd'étage,
endéduirelatailledehaqueregistred'étage,enbits.
Réponse
Voirréponsepréédente.
Question 2.3
Onsupposemaintenantquel'onautorisel'ajoutdemultiplexeursenentréedesregistresd'étagean
desinformationsdenaturediérente,selonlesinstrutions.Cependant,onnepourramutualiserqueles
hamps demême taille. Indiquezla taille de haque registred'étage,en expliquant très lairementles
entréesdeesmultiplexeurs,etquelssontleshampsqui sontregroupéset pourquellesinstrutions.
Réponse
IF/ID:Onnepeutréduirelatailleduregistred'étage.
ID/EX:Chaqueinstrutionaauplusbesoindetroishampsde16bits(àausedeSTR:deuxregistreset
unindexétendu,etJSRR:registred'adresse, indexétendu,valeurderetour).Ensus, ilfautlebitL,l'opode
etles3bitsnzppourBR.Taille:4+1+3+3x16=56bits.Par exemple,onpeutregrouperlesinstrutions
ainsi:
hamp1(16):registresoure1pourADD,AND,NOT,registred'adressepourLDR,STR,JMPR,JSRR,
adressepourLD,JMP,LEA,JSR,BR,ST;
hamp 2 (16) : registre soure 2 ouimmédiat étendupour ADD, AND, index étendupour LDR, STR,
JMPR,JSRR;
hamp3(16):valeurderetourpourJSR,JSRR,valeuràérirepourST,STR;
opode(4);
JMP,JMPR,JSR,JSRR:bitL(1);
BR:nzp(3)
EX/MEM : L'adresse de STR ou elle de JSRR étant alulée, uneinstrution n'a plus besoin que deux
hampsde16bits,auplus. Ensus,opode,bitL;les bitsNZPsontproduitsetonsommésàetétage,ilsne
sontdonpaspassésàl'étageWBsuivant.Taille:2x16+4+1=37bits.Onpeutparexempleregrouperles
instrutionsainsi:
hamp 1(16) : ADD, AND,NOT, LDR,STR, JMPR,JSRR, LD,ST, LEA, JMP,JSR, BR:sortie de
l'ALU(valeurouadresseindexée)ouadressedirete(16);
hamp2(16):ST,STR:registre(valeuràérire),JSR,JSRR:adressederetour(16);
opode(4);
JMP,JMPR,JSR,JSRR:bitL(1);
MEM/WB :Chaqueinstrutionn'a plusbesoinqued'unhampde16bitsauplus,avetoujoursl'opode
etlebitL.Taille:16+4+1=21bits.
hamp1(16):résultatàériredansunregistre,valeurlueenmémoire(LD,LDR),adresse(LEA)àérire,
adressederetour(JSR,JSRR)àérire;
opode(4);
JMP,JMPR,JSR,JSRR:bitL(1);
Exerie 3 - Compiler pour une exéution pipelinée (10 points)
Dansettequestion, onsuppose que leLC2 pipelinéne dispose pasd'un ontrle matériellui per-
mettant dedéteter les aléas(ressoures, ontrle, données).C'est don auompilateur de modier le
programmepourqueesaléasneseproduisentpas.
Question 3.1
Un NOP (NOOperation)est uneinstrutionqui n'a auunimpatsur l'étatduproesseur.Quelle
instrutionduLC2peutêtreutiliséeommeunNOP?
Réponse
BR(sansn,zoup).
Question 3.2
Ononsidèreleprogrammesuivant,éritpourleLC-2nonpipeliné.Modiezlepourqu'ils'exéute
orretementsurleLC-2pipeliné.Expliquezlairementlaraisondevosmodiations.
LD R0, VALUE1
LD R1, VALUE2
ADD R0, R0, #1
ADD R1, R0, R0
LD R2, R3, #0
STR R1, R2, #10
Réponse
Lesregistressontéritsàlandel'étageWB,etilssontlusaudébutdel'étageID.SiuneinstrutionINST1
éritunregistreetqu'uneautreINST2lelit,ilfautauminimumtroisinstrutionsentreINST1etINST2pour
qu'àl'étageID,lavaleurlueparINST2danslebanderegistressoitlabonne.
NOP
ADD R1, R0, R0
LD R2, R3, #0
NOP
NOP
NOP
STR R1, R2, #10
Question 3.3
Même question en supposant que vous pouvez ajouter tous les hemins de forwarding souhaités.
Indiquezlairementquelsheminsdeforwardingvousdevezajouterpourréduireautantquepossiblele
tempsd'exéutionduprogramme.
Réponse
LavaleurduLDR0estdisponibledèslandel'étageMEM, etnéessaireaudébutdel'étageEXduADD
R0,dons'ilyaunforwardingentrelandel'étageMEMetledébutdeEX,auundélain'estnéessaire.De
mêmes'ilyaunforwardingentrelanetledébutdeEX,auundélain'est néessaireentreADDR0etADD
R1.Enrevanhe,lealuld'adressedeSTRalieu dansl'étage EX,etilfautdisposerdeR2pourealul, or
R2n'estdisponiblequ'àlandel'étageMEMduLD.Ilfautdon insérerunNOPentreleLDetleSTR.
LD R0, VALUE1
LD R1, VALUE2
ADD R0, R0, # 1
ADD R1, R0, R0
LD R2, R3, #0
NOP
STR R1, R2, #10
Exerie 4 - Contrle d'un pipeline (10 points)
Pouretexerie,onadoptelesnotationssuivantes:
Pourtestersiunopodeorrespondàune ertaineinstrutionINST(e.g.,LD),onériraopode
== INST(e.g., opode == LD);
Pour tester si le hamp CH d'un registre d'étage
E 1 /E 2 est égal à une valeur VAL, on érira
E 1 /E 2.CH == VAL;
Onrappelle quelorsqu'une instrutionest en ours d'exéution dans unétage
E 2,toutes les infor-
mationsassoiéessontontenuesdansleregistred'étage
E 1 /E 2.
Question 4.1
ParmilesinstrutionsduLC2,quellessontellesqui :
(a)ériventuneinformationdansunregistre;
(b)lisentaumoinsunregistre;
()lisentdeuxregistres;
Réponse
(a)ADD,AND,NOT,LD,LDR,LEA,JSR,JSRR(
R7
);(b)ADD,AND,NOT,LDR,ST, STR,JMPR,JSRR,RET(
R7
);()ADDreg-reg,ANDreg-reg,STR;
Question 4.2
Donnezuniruitombinatoirequivaut1sideuxnombresde4bits
A 3 A 2 A 1 A 0 et B 3 B 2 B 1 B 0 sont
identiques.
Réponse
AN D(N OT (XOR(A 3 , B 3 )), N OT (XOR(A 2 , B 2 )), N OT (XOR(A 1 , B 1 )), N OT (XOR(A 0 , B 0 )))
Question 4.3
Dansettequestion,onsupposequelesregistresd'étageID/EX,EX/MEMetMEM/WBontiennent
unhampDR de 3bitsorrespondantaunuméroduregistrede destinationde l'instrution,si elle-i
érituneinformationdansundesregistresgénérauxduproesseur(
R0
àR7
).Erivez l'ensemble des tests à eetuer pour déterminer si l'instrution en ours d'exéution dans
l'étage ID est vitime d'un aléa de données(data hazard), et doit don être stoppée. On distinguera
éventuellementsuivantlesinstrutions,maisilestreommandéderegrouperlesinstrutionsengendrant
lesmêmestests.
BienqueestestssoientimplémentéssousformedeiruitombinatoiredansunLC2pipeliné,onles
ériraiiommedestestsdeprogramme(e.g.,if...),enutilisantlesnotationsmentionnéesi-dessus.
Réponse
Ilyaunaléadedonnéessil'instrutionlitenIDunregistre éritparuneinstrutiondansunétagesuivant.
Lestestsontdon:
if (
(
// l'instrution dans IF/ID lit un registre RS1?
IF/ID.opode == (ADD or AND or NOT or LDR or STR or JMPR or JSRR)
// un des étages suivants ontient une instrution qui érit dans e registre?
and
( (ID/EX.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and (IF/ID.RS1 ==
ID/EX.DR)
or (EX/MEM.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and (IF/ID.RS1 ==
EX/MEM.DR)
or (MEM/WB.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and (IF/ID.RS1 ==
MEM/WB.DR) )
)
or (
// l'instrution dans IF/ID lit un registre RS2?
IF/ID.opode == (ADD reg-reg or AND reg-reg or STR or JSRR)
and (ID/EX.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and (IF/ID.RS2 ==
ID/EX.DR)
or (EX/MEM.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and (IF/ID.RS2 ==
EX/MEM.DR)
or (MEM/WB.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and (IF/ID.RS2 ==
MEM/WB.DR)
)
or (
// l'instrution dans IF/ID est RET
IF/ID.opode == RET
and ( ((ID/EX.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and ID/EX.DR ==
R7)
or ((EX/MEM.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and EX/MEM.DR ==
R7)
or ((MEM/WB.opode == (ADD or AND or NOT or LD or LDR or LEA or JSR or JSRR)) and MEM/WB.DR ==
R7) )
)
) data hazard
Question 4.4
Erivezletestàeetuer pourdéterminersiunbranhementalieu àl'étageMEM.
Réponse
if (
// l'instrution est un branhement inonditionnel;
(ID/EX.opode == (JMP or JMPR or JSR or JSRR or RET))
or
// l'instrution est un branhement onditionnel
( ID/EX.opode == BR and (Nn+Zz+Pp) )
) branh taken;
+1 2
IR LD.IR R PCMX LD.PC
2 MARMX
+ ZEXT
ZEXT
MDR MAR
R.W
KBDR
KBSR
CRTDR
CRTSR
2 INMUX LD.MAR
MIO.EN GateMDR
MEM.EN LD.MDR
Input Output
MIO.EN
GatePC
R7 R0
ALU OUT
SR2
OUT SR1
2
ALUK
GateALU SR1
SR2
SEXT
LD.REG DR
SR1MX DRMX
2
2
des
bus16bits
ontrle
adresses mémoire
adressable
sur16bits
N Z P LD.CC
ombinatoire ombinatoire
BEN LD.BEN SR2MX
ontrlemiroprogrammé BEN GateMARMX
PC
CarryOut CarryIn
16
[8:0℄
16
[15:9℄
[5:0℄
[7:0℄
16 16
16 16
3
3
3
16 16
[4:0℄
[5℄
[8:6℄
[11:9℄
[11:9℄
[15:11℄
[0:2℄
Figure2ShémaduLC-2
Note:lesiruitsPC,IR,MAR,MDR,BEN,N,ZetPsontdesregistres.
Lerle dessignauxdeontrledelagure2estexpliité danslalistesuivante.
LD.MAR
/ 1
,LD.MDR/ 1
,LD.IR/ 1
, LD.REG/ 1
, LD.CC/ 1
etLD.PC/ 1
ommandentl'ériture danslesdiversregistresduLC-2.
LD.BEN
/ 1
ommandel'érituredansleregistreBEN(branhenable);eregistrevaut1lorsquelebranhementdoitêtrepris(sil'instrutionouranteestunbranhementonditionnel).
GatePC
/ 1
, GateMDR/ 1
, GateALU/ 1
et GateMARMX/ 1
ommandent les aès en ériture sur lebus.
MIO.EN
/ 1
doitêtremisà1lorsque l'onsouhaiteaéderàlamémoireouauxI/O,enletureouenériture.
R.W
/ 1
estmisà0pouruneletureet1pouruneéritureenmémoire.ALUK
/ 2
:00pourADD,01pourAND,10pourNOT,11pourfairetraverserl'entrée1sansalul.PCMX
/ 2
séletionnel'unedesquatreentréesdumultiplexeur:dedroiteàgauhe,00,01,10et11.MARMX
/ 2
séletionnel'unedestroisentréesdumultiplexeur:degauheàdroite,00,01et10(11 est inutilisé).SR1MX
/ 2
séletionnel'unedesquatreentréesdumultiplexeur:dehaut enbas,00et01(10et11 nesontpasutilisés).DRMX
/ 2
séletionneleregistredestination(signalDR):IR[11 : 9]
pour00,IR[8 : 6]
pour01(10et 11nesontpasutilisés).
SR2MX
/ 1
estàpart:e signaldéterminesiladeuxièmeopérande vientdubandes registresouduhampimmédiat,ilestparonstrutionégalaubit5duregistred'instrutionIRetn'intervient
pasdanslamiroprogrammation.
P C → P C + 1, LD.P C = 1, GateP C = 1, LD.M AR = 1 chargement instruction M IO.EN = 1, LD.M DR = 1 instruction dans M DR
GateM DR = 1, LD.IR = 1 instruction dans IR P CM X = 11, LD.P C = 1 @ → P C
Table1Exemple de séquenede ontrlepour l'instrutionJMP.
OnrappelleégalementlalistedesinstrutionsduLC-2(danssa versionsimpliée) enFigure3.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ADD DR, SR1, SR2
(DR
←
SR1 + SR2)0 0 0 1 DR SR1 0 0 0 SR2
ADD DR, SR1, imm5
(DR
←
SR1 + SEXT(imm5))0 0 0 1 DR SR1 1 imm5:immédiat5-bitssigné
AND DR, SR1, SR2
(DR
←
AND(SR1, SR2))0 1 0 1 DR SR1 0 0 0 SR2
AND DR, SR1, imm5
(DR
←
AND(SR1, SEXT(imm5)))0 1 0 1 DR SR1 1 imm5:immédiat5-bitssigné
NOT DR, SR
(DR
←
NOT(SR))1 0 0 1 DR SR 1 1 1 1 1 1
BRnzp label
(PC = PC[15
:
9℄offset9ifn.N+z.Z+p.P)
0 0 0 0 n z p oset9-bitsnonsignédanslapageourante
JMP label
(PC = PC[15
:
9℄offset9) 0 1 0 0 0 0 0 oset9-bitsnonsignédanslapageouranteJSR label
(R7
←
PCand PC = PC[15:
9℄offset9)0 1 0 0 1 0 0 oset9-bitsnonsignédanslapageourante
JMPR indexed address
(PC = BaseR + ZEXT(offset6))
1 1 0 0 0 0 0 BaseR index6-bitsnonsigné
JSR indexed address
(R7
←
PCand PC = BaseR + ZEXT(offset6))1 1 0 0 1 0 0 BaseR index6-bitsnonsigné
LEA DR, label
(DR
←
PC[15:
9℄offset9) 1 1 1 0 DR oset9-bitsnonsignédanslapageouranteLD DR, label
(DR
←
MEM(PC[15:
9℄offset9) ) 0 0 1 0 DR oset9-bitsnonsignédanslapageouranteLDR DR, indexed address
(DR
←
MEM(BaseR + ZEXT(offset6)) )0 1 1 0 DR BaseR index6-bitsnonsigné
ST SR, label
(SR
→
MEM(PC[15:
9℄offset9) ) 0 0 1 1 SR oset9-bitsnonsignédanslapageouranteSTR SR, indexed address
(SR
→
MEM(BaseR + ZEXT(offset6)) )0 1 1 1 SR BaseR index6-bitsnonsigné
RET
(PC
←
R7)1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
Figure3Format desinstrutionsduLC-2