Molto sinteticamente :
Immagina una coda di attesa delle istruzioni e/o dei dati fra le sottounita' della CPU. Se ogni Sottounita' di elaborazione preleva i dati da una pipe sempre tenuta piena, andra' sempre al massimo della velocita' perche' non dovra' mai fermarsi ad aspettare l'arrivo dei dati. Scaricando i dati elaborati in un'altra coda, senza aspettare che l'unita' ricevente sia pronta si guadagna tempo. Si parla allora di Pipelining fra sottounita' di elaborazione. Immagina ancora una catena di montaggio e un insieme di piccoli magazzini intermedi dove si prelevano i pezzi da lavorare e si scaricano qualli lavorati, senza dover aspettare che il collega della fase successiva sia pronto. La pipeline aumenta quindi il numero di istruzioni che la CPU è in grado di completare nell’unità di tempo,non riduce tuttavia il tempo necessario per eseguire una singola istruzione.
Nei moderni microprocessori la pipeline riveste un ruolo molto importante. Essa è usata per poter eseguire operazioni di calcolo in parallelo da parte di un processore (sia esso grafico o centrale). In pratica, c'è bisogno di avere un certo numero di registri in più integrati nel processore rispetto ad una architettura senza pipeline (quindi più memoria interna).
Tuttavia la pipeline non risulta sempre efficiente; infatti nel caso si incontrassero sovente salti nel programma o interruzioni, bisognerà che la pipeline venga svuotata (che finisca cioè di eseguire le istruzioni che erano state reperite) e passare al nuovo processo. Quindi, almeno teoricamente, più lunga è una pipeline, maggiore sarà la latenza in caso di stallo (vedi P4).
Spero di essere stato sinteticamente esauriente.
Ciao