PDA

View Full Version : pipeline e frequenza


cicoandcico
28-03-2005, 13:11
perchè nei processori pipeline più lunghe corrispondono a frequenze maggiori? me lo sono sempre chiesto.

Mauro82
28-03-2005, 16:54
esempio:
-processore a un solo stadio il percorso critico (quello che richiede più tempo) è ad esempio 10ns, quindi la frequenza può essere al massimo 100MHz
-processore con due stadi, l'operazione viene completata in due cicli di clock e il percorso di prima richiede ad esempio 12 ns perchè viene interposto un registro, però il calcolo viene diviso in due pezzi diciamo da 6ns ciascuno, quindi la frequenza massima è 166MHz (=6ns^-1)

è spiegato un pò da schifo ma spero si capisca

le pipeline dei processori x86 attuali se non ricordo male sono:
10 per l'Athlon
12 per Pentium M e Athlon 64
20 P4 northwood
31 p4 prescott

lowenz
28-03-2005, 21:04
Se mi date un attimo mi organizzo e spiego come stanno le cose in generale con le macchine a pipeline e le frequenze di lavoro collegate ;)

Qui c'è un piccolo confronto fra Athlon e Nothwood:

http://www.aceshardware.com/Spades/read.php?article_id=15000185

lowenz
28-03-2005, 22:10
Dato che volevo fare una dispensina per il forum di Processori, Memorie e Overclock, colgo l'occasione per iniziare il lavoro ora :D

Come assegnare la frequenza di lavoro adeguata ad una pipeline

Promemoria iniziale

-Latch: elemento di memoria che campiona e propone in uscita il dato presente al suo ingresso per un intero semiperiodo (positivo o negativo, dipende dalle implementazioni) del clock; per il restante semiperiodo propone in uscita l'ultimo valore letto durante il precedente semiperiodo; in gergo si denotano ciascuno dei due semiperiodi come " semiperiodo di trasparenza" e "semiperiodo di opacità".
-Flip-Flop: elemento di memoria che campiona il dato presente al suo ingresso nell'istante in cui il segnale di clock cambia (fronte di salita o di discesa, dipende dalle implementazioni); per il restante tempo propone in uscita l'ultimo valore letto;
-Clock: onda quadra periodica che scandisce con i suoi fronti e/o livelli le azioni della macchina;


Ogni elemento di memoria (sia esso Latch o Flip-Flop) presenta alcuni tempi caratteristici legati al ruolo di memorizzazione che esso svolge:
-tempo di Latch/Flip-Flop (tL/tFF): tempo che intercorre fra l'istante in cui l'elemento di memoria è pronto a memorizzare e l'istante in cui il dato si presenta alla sua uscita;
-tempo di Setup (tS): tempo necessario affinchè il segnale in ingresso all'elemento di memoria sia "stabile", ovvero abbia assunto con "certezza" il valore logico 0 o 1 prima di un fronte del clock.
-tempo di Hold (tH): tempo necessario affinchè il segnale in uscita all'elemento di memoria sia "stabile", ovvero abbia assunto con "certezza" il valore logico 0 o 1 dopo un fronte del clock.

Vi sono poi 3 tempi legati invece alla rete, la pipeline nel nostro caso, in cui tali elementi di memoria vengono usati:
-tempo di clock (tC): corrisponde al periodo del clock
-tempo di rete combinatoria (tRC): tempo necessario alla rete combinatoria presente fra un banco di elementi di memoria (registro) e il successivo per effettuare l'elaborazione (aritmetica o logica) del segnale;
-tempo di skew (tSK): è il tempo che tiene conto del ritardo con cui il segnale di clock attiva gli elementi di memoria; tale tempo esiste in quanto i fronti del clock non arrivano contemporaneamente in tutta la macchina, ma bensì leggermente sfasati: Tale fase è una variabile stocastica (casuale) solo a MEDIA nulla, ma non a valori nulli, che anzi possono di caso in caso essere positivi o negativi.

In realtà tL, tFF, tRC e tSK non sono valori ma intervalli di valori in quanto dipendono dalla temperatura e dalla tensione di alimentazione a cui lavora la pipeline. Quindi avremo tLmin, tLmax, tFFmin, tFFmax, tRCmin, tRCmax, |tSK|min, |tSK|max (tSK è utilizzato nelle equazioni in cui compare in valore assoluto).

Dati questi tempi è ora possibile calcolare la frequenza MASSIMA di lavoro che la macchina può sostenere senza dare origine ad errori e anche (e qui in pochi forse lo sanno) la MINIMA.
Ogni macchina sequenziale (ovvero che combina elementi di memoria e di calcolo aritmetico-logico) può infatti presentare, se mal progettata, 2 problemi:
-il problema della scorrettezza dei dati, ovvero quel fenomeno per cui viene memorizzato in ingresso un registro un dato non ancora stabile in uscita da una rete combinatoria.
-il problema delle corse critiche, ovvero quel fenomeno per cui un dato attraversa istanteneamente la pipeline sovrascrivendo i dati presenti nei registri successivi a quello di sua momentanea competenza; tale fenomeno è causato da una frequenza troppo bassa del clock (che corrisponde elettronicamente a fronti troppo "dolci" del segnale che lo distribuisce nella macchina) in quanto un dato "troppo veloce" (segnale con con fronti "ripidi") potrebbe, nel tempo di salita o discesa del clock, attraversare più stadi di pipeline, stadi che corrispondono ai vari registri.
Le soluzioni a questi 2 problemi si concretano in 2 vincoli matematici che legano i tempi caratteristici sopra indicati.

Per uno stadio di pipeline con registri costituiti da Flip-Flop (caso più semplice):

- tFFmax+tRCmax+tS<=tC-|tSK|max -> frequ. max<=1/(tFF+tRCmax+tS+|tSK|max)
- tFFmin+tRCmin>=tH+|tSK|max

Si vede bene come, per soddisfare le due disequazioni, si vorrebbe più ridotto possibile l'intervallo di valori a cui appartiene tRC. E' interessante notare come nel secondo vincolo non sia presente tC e pertanto non vi sia dipendenza dal tempo di clock: questo accade però solo nel caso di uso di uso di Flip-Flop.

Per uno stadio di pipeline con registri costituiti da Latch (caso più complesso):

- tLmax+tRCmax+tS<=tC-|tSK|max+T
- tLmin+tRCmin>=tH+|tSK|max+T

T è un valore appartenente all'intervallo [0; tC/2] e tiene conto del fatto che il Latch è "trasparente" non solo sui fronti del clock ma per un intero semiperiodo di esso.
Se volete un paragone sportivo una pipeline con latch è come una staffetta: prima arriva lo steffettista precedente prima parte quello successivo: questo è reso possibile dal fatto che un corridore può "arrivare prima del previsto", proprio come un dato può essere stabile all'ingresso di un Latch non solo in fondo al semiperiodo di trasparenza del clock (tC/2), ma anche al suo inizio in corrispondenza del fronte.
Questa componente "aggiuntiva" permette di innalzare la frequenza massima di lavoro, a discapito di avere anche un vincolo superiore al tempo di clock: se T è grande infatti la frequenza massima può crescere ma diviene più difficile rispettare il secondo vincolo rispetto al caso di registri costituiti da Flip-Flop; tramite T (che è una porzione del semiperiodo del clock) vi è infatti una dipendenza nel secondo vincolo dal tempo di clock.
Si nota chiaramente come, nel caso di uso di latch, il tempo di occupazione di uno stadio di pipeline NON sia indipendente dal precedente stadio (nel caso di uso di Flip-Flop vi era invece indipendenza fra i vari stadi): questo aumenta la difficoltà della progettazione in quanto diviene molto complesso garantire che le 2 disequazioni sopra riportate siano sempre soddisfatte.

lowenz
29-03-2005, 08:37
Ho fatto alcune correzioni e messo tutto in un post ;)

cicoandcico
29-03-2005, 13:09
grande! grazie :)