In generale, ad ogni istante, la CPU sta eseguendo contemporaneamente piu' istruzioni.
Se vogliamo un CPU che sfrutta il concetto di Pipeline dobbiamo = dividere in più parti l'esecuzione dell'istruzione, quindi ad ogni istante non eseguiamo contemporaneamente più istruzioni, ma eseguiamo = contemporaneamente le diverse fasi di un'istruzione.

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