Pipeline

Pubblicità
ahaihaiahai GIOCHI, che vuoi che faccia. Black and White ti dice niente? famosissimo gioco in cui tu eri un DIO e, con la tua amata creatura dovevi portare avanti la comunità.
Tra l'altro è in lavorazione il secondo capitolo, che penso non sia molto lontano dall'essere ultimato..ma questa "dritta" dovrebbe darcela Francesco. ;)
 
beh grazie fran... spiegazione eccessivamente esauriente.. grazie mille :biglaugh: :biglaugh:

mirracomando black & white 2 deve essere sublime :nod:
lo aspettiamo tutti con ansia ;)
 
scusate il disturbo, ma mi sa che non avete molto chiaro cos'è in realtà una pipeline e quindi cerco di spiegarmi al meglio...


dunque, partiamo dal fatto che una generica operazione può essere suddivisa in diverse fasi. la pipeline è un meccanismo che, in sostanza, permette di parallelizzare le fasi di operazioni diverse, comportando un guadagno prestazionale...
nel caso di un processore, possiamo evidenziare tre fasi di funzionamento per quanto riguarda l'elaborazione: fetch, decode, execute.

fetch -> reperimento della prossima istruzione da eseguire: il procio deve trasferire all'interno delle sue unità "esecutrici" il codice dell'istruzione, che è da qualke parte (in genere nella cache oppure nella ram del sistema). quindi c'è un'operazione di copia del codice dell'istruzione dentro appositi registri.
decode -> decodifica dell'istruzione: le istruzioni possono essere distinte e "capite" dalla cpu proprio perché sono codificate secondo determinati standard. quindi, prima che un'istruzione possa essere eseguita, deve essere interpretata dalla cpu.
execute -> esecuzione dell'istruzione: non c'è nulla da aggiungere... :D

l'operazione normale che una cpu esegue è quindi costituita da queste 3 fasi sopra, eseguite rigorosamente in sequenza, x ovvi motivi (p.e. non posso decodificare una istruzione che non conosco perché non l'ho ancora letta).
se supponiamo che ogni fase richiede un tempo pari a 1 per essere portata a termine, ogni operazione viene eseguita in un tempo pari a 3 unità.
poiché un programma è fatto da una sequenza di istruzioni, la cpu è fatta per elaborare sequenze di istruzioni (in realtà non è proprio così ma semplifichiamo molto, sennò dovrei scrivere fino a domani sera... :D :D ).
questo significa che per eseguire 3 istruzioni ci vogliono 3x3 = 9 unità di tempo.
immaginiamo ora che la nostra cpu sia dotata di una pipeline a 3 stadi (cioè possa eseguire 3 sotto-operazioni in parallelo): uno per ognuna delle 3 fasi viste sopra. questo vuol dire che x ognuna di esse nella cpu c'è un modulo hardware dedicato.

la figura sotto mostra cosa succede se voglio che la cpu elabori le 3 istruzioni di prima. verso dx scorre il tempo (da 1 a 5). al tempo 1 il modulo fetch acchiappa l'istruzione dalla memoria e la carica nel procio, al tempo 2 il modulo decode la decodifca. però al tempo 2 il modulo fetch non fa nulla, visto che ha già terminato il suo lavoro e quindi lo impiego per fare il fetch della seconda istruzione. al tempo 3 uso il modulo exec per eseguire la istr 1, ma anche il modulo decode che ha finito con la istr 1 per decodificare l'istr 2. anche il modulo fetch è senza lavoro (ha finito con l'istr 2 al tempo 2) x cui gli faccio fare il fecth dell'istr 3. e così via fino al terminare l'ultima fase dell'istr 3.

per eseguire 3 istruzioni la cpu ci ha messo 5 unità di tempo. un bel risparmio direi. ecco perché in ogni cpu c'è almeno 1 pipeline (le gpu ne hanno 4 o 8 di diversi tipi)

se da un lato c'è l'incremento prestazionale, dall'altro la pipe richiede un hw più complesso (costoso) e la risoluzione di problemi avanzati (tipo se la pipe si svuota x qualche motivo la devo "ricaricare" perdendo parte del beneficio in velocità)..

spero di essere stato chiaro!!!
 
Ultima modifica:
Pibe85 ha detto:
beh grazie fran... spiegazione eccessivamente esauriente.. grazie mille :biglaugh: :biglaugh:

mirracomando black & white 2 deve essere sublime :nod:
lo aspettiamo tutti con ansia ;)

Grazie :)

ruruzozo ha detto:
scusate il disturbo, ma mi sa che non avete molto chiaro cos'è in realtà una pipeline e quindi cerco di spiegarmi al meglio...

Questa e' una descrizione del pipelining in una CPU.
Una pipeline di una GPU e' un'unita' un po' diversa, sia negli scopi sia nell'implementazione.
 
Fran ...

per cortesia correggi la firma che non è a regolamento ... che prevede 3 linee alla risoluzione 1024x768 .... ora ne impegni 5 ....
Grazie .... :nod:
 
Manolo ha detto:
ahaihaiahai GIOCHI, che vuoi che faccia. Black and White ti dice niente? famosissimo gioco in cui tu eri un DIO e, con la tua amata creatura dovevi portare avanti la comunità.
Tra l'altro è in lavorazione il secondo capitolo, che penso non sia molto lontano dall'essere ultimato..ma questa "dritta" dovrebbe darcela Francesco. ;)

Non è colpa mia non l'ho mai visto e sentito nominare :cry: :cry: :cry:
 
Fran ha detto:
Grazie :)



Questa e' una descrizione del pipelining in una CPU.
Una pipeline di una GPU e' un'unita' un po' diversa, sia negli scopi sia nell'implementazione.

Infatti...personalmente non so la differenza...la spieghi? :)
Però vorrei una spiegazione accurata in maniera da capire. ;)
 
eccolo che appena arriva deve fare l'esame ai nuovi arrivati. :D

Ciao Fran, conosco il gioco Black&White ;)
 
Fran ha detto:
Questa e' una descrizione del pipelining in una CPU.
Una pipeline di una GPU e' un'unita' un po' diversa, sia negli scopi sia nell'implementazione.
vero vero! la mia era una descrizione un po' + dettagliata e semplificata di un esempio (prob il + semplice) di pipeline. le pipe grafiche sono diverse...
 
Pubblicità
Pubblicità

Discussioni Simili

Indietro
Top