CPU Design: La vita è fatta a stadi

Se ci permettete la licenza poetica, potremmo dire che i circuiti sono fatti a stadi, almeno quelli buoni. Dividere in stadi ci permette, come abbiamo visto, di ridurre il tempo di propagazione massimo che bisogna aspettare tra un ciclo di clock e l’altro, il che a sua volta ci permette di aumentare la frequenza di clock e di eseguire più elaborazioni al secondo.  E se pensate al processore che avete per le mani a questo punto della storia, e ai lunghi percorsi combinatori che ci sono al suo interno, la tentazione di spezzarli mediante l’inserimento di qualche registro è invitante, vero? Come creare una pipeline lo sappiamo, perciò che ci vorrà mai? In realtà, come vi spiegheremo oggi, mettere in pipeline un processore è più facile a dirsi che a farsi.

CINQUE STADI IN CERCA DI UN PROCESSORE

Il principio fondamentale alla base di qualsiasi catena di montaggio, da quella della Ford a quella delle marmotte che incartano la cioccolata,  è che il lavoro che faccio io non deve in alcun modo dipendere da quello che fai tu, almeno se tu ti trovi più a valle lungo il nastro trasportatore. L’acqua che scende giù per un tubo deve andare giù: se un po’ di quest’acqua tornasse su, sarebbero guai. Se per progettare il vostro firmware doveste aspettare le degnanze del vostro amico che non si sa bene che sta combinando sulla scheda, dove sarebbe il vantaggio della pipeline? Una pipeline si basa sul concetto che qualsiasi due stadi in essa possono lavorare in parallelo: se non c’è parallelismo, le prestazioni restano quelle.

Bene, riprendete un attimo i circuiti che abbiamo visto l’altro volta. C’erano dipendenze tra i vari stadi? Bè, nei primi, chi può dirlo? Erano inventati di sana pianta! Nei circuiti aritmetici, invece, sicuramente no: la somma al primo stadio non dipende in alcun modo da quello che combina il secondo stadio. Vale il contrario, cioè quello che combina il secondo stadio dipende fortemente da quello che combina il primo, ma questo non importa, è così che deve essere. In un moltiplicatore il discorso è lo stesso: nessuna delle somme parziali è influenzata in alcun modo dalle somme successive, solo dalle precedenti.

E in un processore? Se ricordate, parlando di come mettere insieme i vari pezzi, avevamo diviso il flusso di esecuzione di un’istruzione in cinque stadi:

 

Figura 1: Una pipeline a cinque stadi.

Sì, questa cosa nella Figura 1 è una pipeline a cinque stadi. Il problema è che in questa pipeline gli stadi dipendono in molti modi da quello che accade negli stadi successivi, e questo non è bello. Un primo problema salta immediatamente all’occhio se rappresentiamo con un diagramma di pipeline questa sequenza di istruzioni: [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 3865 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend