Il parallelismo e' ottenuto avendo a disposizione diversi =
Program
Counters per lo stesso programma.
No.Se vogliamo estrarre più istruzioni non necessitiamo di =
più
program counters, basta averne uno come riferimento per ottenere (tutte)
le prossime istruzioni che vogliamo.
L'obiettivo di eseguire, in media, una istruzione per ogni =
ciclo
di CPU puo' essere solo
avvicinato, ma mai raggiunto pienamente.
Falso.
Le operazioni di LOAD rendono piu' complessa la gestione del =
pipelining.
Si. Perchè si possono creare situazioni di dipendenza di tipo
RAW(Read After Write), cioè si richiede la lettura di un dato che
è in attesa di essere scritto(quindi bisognerebbe attendere che
il dato abbia il suo valore attuale prima di poterlo leggere).
Le operazioni di STORE rendono piu' complessa la gestione del
pipelining.
Si. Anche qui si creano delle situazioni di dipendenza di tipo =
WAR(Write
After Read) e WAW(Write After Write), ciò accade (WAR) =
quando
si vuole scrivere su un dato il cui vecchio valore deve essere ancora =
letto(bisognerebbe
attendere la lettura, per poi poter aggiornare attraverso la scrittura
il dato). Oppure (WAW) possiamo avere un situazione nella quale si
vuole scrivere un dato prima di aver effettuato la scrittura precedente.
RAW,WAR e WAW possono essere aggirati attraverso "OUT OF ORDER =
EXECUTION"
ovvero non eseguire le istruzioni seguendo l'ordine di estrazione, ma =
eseguendo
le istruzioni che non hanno dipendenze, in attesa che le altre escano =
dalle
varie situazioni di stallo.
WAR e WAW possono essere eliminate attraverso "REGISTER RENAMING" =
ovvero
l'uso di registri nascosti dove memorizzare temporaneamente i valori che
dovrebbero essere invece memorizzati in registri soggetti a dipendenze.
Le operazioni di salto condizionato rendono piu' complessa la
gestione del pipelining.
Si è vero. I salti condizionati, dipendono da una condizione
il cui valore è individuabile solo dopo aver verificato la =
condizione
stessa, quindi non è possibile sapere a priori, (ovvero prima di
aver eseguito l'istruzione che contiene il salto condizionato) a quale
istruzione saltare. Questo problema potrebbe bloccare il sistema di =
Pipelining,
costringendo ad aspettare obbligatoriamente l'istruzione con il salto =
condizionato
però esistono dei meccanismi di Branch prediction che ci =
permottono
di risolvere questo problema.
Nonostante ciò il Branch prediction rende molto più =
complessa
la gestione del pipelining