CS-Swap / Architettura-degli-Elaboratori

Repository destinato alla condivisione di materiale e soluzioni per gli esercizi ed esami assegnati dal Prof. Checco Alessandro in preparazione all'esame di Architettura degli elaboratori
3 stars 0 forks source link

Domande Comuni Esercizio 6 Pipeline #35

Open rimaout opened 4 months ago

rimaout commented 4 months ago

[24 Gennaio 2023] Qual è il ruolo delle connessioni al multiplexer a monte del PC nel diagramma seguente, spiegando nel maggior dettaglio possibile i tre possibili input e il ruolo dei due bit di controllo

image

[11 Settembre 2023] in quale fase la decisione delle istruzioni di jump sia compiuta nel diagramma qui sotto, e quante fasi di stallo causi, nell'ipotesi migliore, spiegando la risposta.

image

[30 Giugno 2023] in quale fase la decisione delle istruzioni di beq sia compiuta nel diagramma qui sotto, e quante fasi di stallo causi, nell'ipotesi migliore, spiegando la risposta.

image

[8 Giugno 2023] in quale fase la decisione delle istruzioni di beq sia compiuta nel diagramma qui sotto, e quante fasi di stallo causi, nell'ipotesi migliore, spiegando la risposta.

image

[10 Giugno 2023] qualora la decisione delle istruzioni di branching sia compiuta in fase EX e la policy di gestione sia di “branch not taken” by default, quante fasi di stallo causi potenzialmente ogni control hazard. Chiarire se l’uso del forwarding possa influenzare questo fenomeno o meno.

image

[3 Novembre 2022] Si descriva nel maggior dettaglio possibile il funzionamento dei segnali di controllo ForwardA e ForwardB nella fase EXE del diagramma seguente.

image

[20 Marzo 2023] in quale fase la decisione delle istruzioni di jump sia compiuta nel diagramma qui sotto, e quante fasi di stallo causi potenzialmente ogni control hazard.

image

[9 Settembre 2022] 6) in quale fase della pipeline venga presa la decisione dell'istruzione jump, e quali conseguenze questo tipo di architettura abbia sugli hazard (si ricordi di consultare I'immagine dell'architettura seguente questa domanda)

image

[30 Giugno 2022] qualora la decisione dell istruzioni di jump sia compiuta in fase ID, quante fasi di stallo causi potenzialmente ogni control hazard. Chiarire se questo cambiamento abbia altri effetti

image

AglaiaNorza commented 4 months ago

[24 Gennaio 2023] Qual è il ruolo delle connessioni al multiplexer a monte del PC nel diagramma seguente, spiegando nel maggior dettaglio possibile i tre possibili input e il ruolo dei due bit di controllo

Il MUX sopra il PC serve a spostare la decisione di jump alla fase IF. I suoi segnali di controllo (e le loro utilità) sono:

[11 Settembre/20 marzo 2023/9 settembre 2022] in quale fase la decisione delle istruzioni di jump sia compiuta nel diagramma qui sotto, e quante fasi di stallo causi, nell'ipotesi migliore, spiegando la risposta. (e che conseguenze abbia sugli hazard)

La decisione delle istruzioni di tipo jump viene presa nella fase di Instruction Fetch e proprio per questo non causa stalli, in quanto non crea control hazard (quando si salta non ci saranno istruzioni successive già caricate in pipeline)

[30/8 Giugno 2023] in quale fase la decisione delle istruzioni di beq sia compiuta nel diagramma qui sotto, e quante fasi di stallo causi, nell'ipotesi migliore, spiegando la risposta.

La decisione delle istruzioni di tipo branch viene presa nella fase di Instruction Decode, e il caso migliore dipende dalla policy che si segue in merito ai branch. Se la politica è di branch not taken, è il caso in cui non si salta, mentre se è branch taken, è quello in cui si salta. In entrambi i casi, non ci saranno stalli.

[10 Giugno 2023] qualora la decisione delle istruzioni di branching sia compiuta in fase EX e la policy di gestione sia di “branch not taken” by default, quante fasi di stallo causi potenzialmente ogni control hazard. Chiarire se l’uso del forwarding possa influenzare questo fenomeno o meno.

Se la decisione di branching fosse presa in fase EX, nei casi in cui si salta si genererebbero due stalli dopo l’istruzione e uno prima, nel caso di istruzioni come lw. Infatti, quando l’istruzione di branch sarà arrivata alla fase di EX, la pipeline avrà già iniziato a caricare le due istruzioni successive (una sarà in fase IF e l’altra in ID). Per risolvere questo problema, si può anticipare il salto alla fase ID. Questa anticipazione permette di eliminare uno dei due stalli successivi all’istruzione, causando però più stalli prima dell’istruzione. Infatti, il branch sarà preceduto da due stalli nel caso di istruzioni come lw, e da uno stallo nel caso di istruzioni di tipo R o li/la.

[3 Novembre 2022] Si descriva nel maggior dettaglio possibile il funzionamento dei segnali di controllo ForwardA e ForwardB nella fase EXE del diagramma seguente.

ForwardA e ForwardB servono a identificare possibili data hazard nella fase EX di un'istruzione e, di conseguenza, a scegliere che registri inviare alla ALU. Ci sono 3 casi:

1) se rt e/o rd dell'istruzione corrente (quindi di ID/EX) sono uguali a rd di EX/MEM (registro che ha cambiato valore nell'istruzione precedente), attraverso il relativo MUX passerà il valore da EX/MEM - forwarding dall'istruzione precedente 2) se rt e/o rd dell'istruzione corrente (ID/EX) sono uguali a rd di MEM/WB (registro che ha cambiato valore due istruzioni prima), attraverso il relativo MUX passerà il valore da MEM/WB - forwarding da due istruzioni prima 3) se rt e rd non corrispondono ai registri modificati nelle due istruzioni precedente, vengono fatti passare - nessun forwarding

[30 Giugno 2022] qualora la decisione delle istruzioni di jump sia compiuta in fase ID, quante fasi di stallo causi potenzialmente ogni control hazard. Chiarire se questo cambiamento abbia altri effetti

Se la decisione di jump fosse presa nella fase Instruction Decode, questa genererebbe uno stallo. Infatti, contemporaneamente all’ID, la pipeline avrebbe iniziato a caricare l’istruzione successiva, che andrebbe quindi trasformata in una NOP.

alem1105 commented 4 months ago

Domanda 6

I segnali ForwardA e ForwardB servono a gestire i forwarding della pipeline nella fase di EXE. Infatti la Forwarding EX unit controllera' per prima cosa due casi:

Nello specifico ForwardA si riferisce al registro rs mentre ForwardB al registro rt, quindi nel caso in cui non c'e' forwarding i segnali vengono impostati a 00 e i dati provengono dal blocco ID / EXE normalmente. Se c'e' un forwarding e prendiamo rs / rt dal blocco EXE / MEM allora, rispettivamente, ForwardA e / o ForwardB verranno impostati a 10. Nell'ultimo caso, dove prendiamo i registri dal blocco MEM / WB impostiamo i segnali a 01.