Open rimaout opened 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:
un comparatore tra i bit che definiscono il tipo di operazione e l'opcode del jump (0000010=2) --> (riconosce se si tratta di un jump) se è 1 (caso 1x), viene passato al PC l'indirizzo a cui saltare, che sarà shiftato di 2 e concatenato a PC+4 per arrivare a 32 bit.
il segnale branchtaken --> se è 1 (caso 01), si sceglie PC+4 + etichetta del branch (i due segnali sono chiaramente mutualmente esclusivi). Se entrambi sono 0, invece, passerà PC+4, senza nessun salto o branch.
[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.
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:
ID / EX.rs == EX / MEM.rd
oppure ID / EX.rt == EX / MEM.rd
attiverà un forwarding sull’istruzione precedenteID / EX.rs == MEM / WB.rd
oppure ID / EX.rt == MEM / WB.rd
attiverà un forwarding sulla seconda istruzione precedenteNello 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.
[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
[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.
[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.
[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.
[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.
[3 Novembre 2022] Si descriva nel maggior dettaglio possibile il funzionamento dei segnali di controllo ForwardA e ForwardB nella fase EXE del diagramma seguente.
[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.
[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)
[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