vuoi
o PayPal
tutte le volte che vuoi
Segnali di controllo
Si parla di datahazard e del segnale match. In particolare
quando cioè abbiamo la condizione
match_1E_M quando questi due segnali , sono uguali , e li vedi evidenziati li nel
datapath, e attiva il registro che parte dal registro tra lo stadio execute e lo stato
memori e il canale che va al multiplexer che poi andrà in ingresso aal primo canale
della alu ( quel canale che hai evidenziato in blu)
La stessa cosa vale per la seconda condizione però ora va al secondo registro sorgente
Ma oltre a questa condizione , al fatto che sia primo o secondo registro sorgente ,
dobbiamo controllare anche se c’è anche la condizione che fa scrivere anche il registro
tra la fase memori e la fase writeback , se è cosi devo far passare anche il suo segnale
e scrivere o nel primo o nel secondo canale . ecco un esempio dei due
Immagine riferita a quando siamo in questo caso
Sennò se il dato aggiornato si trova nel registro pipelinee tra lo stato memori e lo stato
writeback allora siamo nel caso
Quindi avremo
Prendiamo per esempio il ciclo 4 del esempio
Quello che si presenterà nel datapath sarà questo
Vediamo che si attua questa condizione
Regwritem è asserito perché scriviamo nel register file quindi è uguale a 1, quindi
vediamo che il segnale forwardAE che vediamo scritto nella condizione come 10 , è
segnato nell’ datapath che fa vedere appunto che l’ingresso del multiplexer usato per
far passare il dato aggiornato è 10
Ma se siamo in questa situazione
Quindi siamo nella condizione dell’else , cioè
Quindi passa il dato vecchio . Non siamo nel caso dei datahazard appunto perché non
abbiamo che R1 non viene usato appunto come registro destinazione .
(fine di “prendiamo ad esempio il ciclo 4”)
Pipeline , cosa succede in questo caso