Il modo in cui mi piace pensarci è con un'analogia della lavanderia. Le istruzioni della CPU sono come carichi di biancheria. È necessario utilizzare sia la lavatrice che l'asciugatrice per ogni carico. Diciamo che ciascuno impiega 30 minuti per funzionare. Questo è il ciclo dell'orologio. Le vecchie CPU eseguivano la lavatrice, quindi eseguivano l'asciugatrice, impiegando 60 minuti (2 cicli) per terminare ogni carico di biancheria, ogni volta.
Pipelining: una pipeline è quando si utilizzano entrambi contemporaneamente: si lava un carico, quindi mentre si sta asciugando, si lava il carico successivo. Il primo carico impiega 2 cicli per terminare, ma il secondo carico termina dopo 1 altro ciclo. Pertanto, la maggior parte dei carichi richiede solo 1 ciclo, ad eccezione del primo carico.
Superscalar: porta tutto il bucato nella lavanderia automatica. Prendi 2 rondelle e caricale entrambe. Quando hanno finito, trova 2 essiccatori e usali entrambi. Ora puoi lavare e asciugare 2 carichi in 60 minuti. Cioè 2 carichi in 2 cicli. Ogni carico richiede ancora 2 cicli, ma ora puoi eseguirne altri. Il tempo medio è ora di 1 carico per ciclo.
Superscalare con tubazioni: lavare i primi 2 carichi, quindi mentre questi si stanno asciugando, caricare le rondelle con i successivi 2 carichi. Ora, i primi 2 carichi richiedono ancora 2 cicli, quindi i successivi 2 sono terminati dopo 1 altro ciclo. Quindi, il più delle volte, finisci 2 carichi in ogni ciclo.
Nuclei multipli: dai la metà del bucato a tua madre, che ha anche 2 lavatrici e 2 asciugatrici. Lavorando entrambi insieme, puoi fare il doppio. Questo è simile al superscalare, ma leggermente diverso. Invece di dover spostare tutto il bucato da e verso ciascuna macchina, può farlo contemporaneamente a te.
È fantastico, possiamo fare il bucato otto volte più di prima nello stesso tempo, senza dover creare macchine più veloci. (Raddoppia la velocità dell'orologio: lavatrici che richiedono solo 15 minuti per funzionare.)
Ora parliamo di come le cose vanno male:
Bolla della pipeline: hai una macchia che non è emersa durante il lavaggio, quindi decidi di lavarla di nuovo. Ora l'asciugatrice è solo lì, in attesa di qualcosa da fare.
Miss cache: il camion che trasporta la biancheria sporca è bloccato nel traffico. Ora hai 2 lavatrici e 2 asciugatrici, ma non stai lavorando perché devi aspettare.
A seconda della frequenza con cui le cose vanno male, non saremo in grado di fare sempre 4 carichi ogni ciclo, quindi la quantità effettiva di lavoro può variare.
Branch Prediction: Beh, inizi a fare il bucato sui tuoi vestiti puliti nel caso in cui li macchi più tardi, quindi saranno già puliti ... okay, qui è dove l'analogia si rompe ...