Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Dubbio forwarding tra lb e sb

G
GiuseppeLaRocca (1170 points)
4 15 28
in Teoria by (1.2k points)
closed by

Buonasera a tutti,

svolgendo l'esame del 30/6/15 non riesco a capire come mai viene inserito uno stallo tra lb $t1, ($a0) e sb $t1, ($a1)  con la seguente motivazione: NOTA: sb $t1, ($a0) richiede 1 stallo perché posso fare forwarding dalla fase MEM di lb alla fase EXE di sb.

Io avevo capito che in caso di lw seguita da sw , quest'ultima poteva attendere fino alla fase di MEM, stessa cosa vale anche per lb e sb.

Sbaglio qualcosa?

Grazie a chi risponderà.

525 views
closed with the note: answered

1 Answer

gianpcr (4620 points)
5 16 34
by (4.6k points)
Ciao, c'è bisogno di uno stallo perchè il forwarding deve essere eseguito tra MEM -> EXE. Poichè non è possibile propagare un dato andando a ritroso nella pipeline, è necessario aggiungere uno stallo tra le due istruzioni di lb e sb. Nel caso in cui fosse presente una forwarding unit nella fase MEM allora potresti eseguire le due istruzioni sempre con il forwarding ma questa volta senza stalli.
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
Esatto, l'esercizio si riferisce al diagramma della pipeline del compito, che ha due Forwarding Unit (FU), una nella fase ID (per fornire alla beq gli argomenti), l'altro nella fase EXE (per le altre istruzioni). Nel diagramma NON c'è una forwarding Unit nella fase MEM, solo se ci fosse sarebbe possibile aspettare un altro colpo di clock che il dato sia disponibile per la memorizzazione. Senza quella FU il forwarding va fatto verso la fase EXE, un colpo di clock prima e quindi va inserito uno stallo.
G
GiuseppeLaRocca (1170 points)
4 15 28
by (1.2k points)
Ok grazie mille