Pipeline (CPU): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot: fix citazione web (v. discussione)
Riga 25:
# C=A+B
# D=C-1
La prima istruzione deve prelevare i numeri contenuti nelle variabili A e B, sommarli e porli nella variabile C. La seconda istruzione deve prelevare il valore contenuto nella variabile C, sottrarlo di uno e salvare il risultato in D. Ma la seconda istruzione non potrà essere elaborata (EX) fino a quando il dato della prima operazione non sarà disponibile in memoria (MEM) e quindi la seconda operazione dovrà bloccarsi per attendere il completamento della prima e quindi questo ridurrà il throughput complessivo. Questo problema può essere attenuato facendo in modo che i dati elaborati dalla prima istruzione siano resi disponibile alla seconda istruzione prima del solo salvataggio definitivo in memoria. Questo si ottiene inserendo dei registri temporanei nell'unità di esecuzione dove salvare dati che serviranno all'istruzione successiva. Un problema simile è quando due istruzioni utilizzano gli stessi registri per operare. In questo caso si utilizza la [[rinominazione dei registri]], una tecnica che elimina la maggior parte degli stalli.
*Il secondo problema consiste nei salti condizionati.
I programmi contengono delle istruzioni condizionate che se una specifica condizione logica è verificata provvedono a interrompere il flusso sequenziale del programma e a mandare in esecuzione un altro pezzo di programma indicato dall'istruzione di [[salto (informatica)|salto]]. Ogni volta che questo accade il microprocessore si trova a dover eseguire un nuovo flusso di operazioni e quindi deve svuotare la pipeline del precedente flusso e caricare il nuovo flusso. Ovviamente queste operazioni fanno sprecare cicli di clock e quindi deprimono il throughput. Per ridurre questo problema le CPU adottano delle unità chiamate [[Predizione delle diramazioni|unità di predizione delle diramazioni]] (in inglese ''Branch Prediction Unit'') che fanno delle [[Esecuzione speculativa|previsioni sul flusso del programma]]. Queste unità riducono notevolmente i cicli persi per i salti.