La pipeline è come una catena di montaggio che, dato un flusso di dati, permette di parallelizzarne le istruzioni spezzettandole in più fasi:
- fetch (caricamento in memoria dell'istruzione)
- decode (decodifica l'istruzione e carica gli operandi delle operazioni da fare)
- operate (detta anche execute, esegue le operazioni richieste dall'istruzione)
- write (scrittura dei risultati)
Ogni fase impiega come minimo un ciclo di clock (il clock è una unità) e si separa dall'altra con un buffer.
Con questa suddivisione quando la prima istruzione passa da fetch a decode, l'unità di fetch è libera per caricare in memoria una nuova istruzione. Questo funzionamento si ripete in cascata con tutte le altre fasi.
La lunghezza della pipeline è data quindi da in quante parti spezzetto l'istruzione, mentre la larghezza (o stadio) è data da quante istruzioni posso parallelizzare.
Se non ti basta dillo