PDA

View Full Version : Pipeline


Sn4k3.it
23-06-2005, 21:35
Ragazzi potete spiegarmi cosa sono le pipeline?Perché é importante averne di più?Ho visto la nuova 7800 gtx e ho notato che si mette in grande rilevanza la presenza delle 24 pipe.

Dai rispondetemi sono curioso :)

peppos83
23-06-2005, 21:59
Ragazzi potete spiegarmi cosa sono le pipeline?Perché é importante averne di più?Ho visto la nuova 7800 gtx e ho notato che si mette in grande rilevanza la presenza delle 24 pipe.

Dai rispondetemi sono curioso :)

Diciamo che è come una catena di montaggio :D + sono e + la quantità d textures e pixel mossi al sec sale :read:

Methis
23-06-2005, 22:06
Sono sotto unità hardware indipendenti in grado di eseguire simultanemente su una serie di dati (non solo grafici...le pipeline ci sono anche nella cpu) le azioni elementari componenti un'operazione complessa. Con tale tecnica si realizza un parallelismo temporale che comunque presuppone un'alimentazione di dati con continuità e quindi si aumenta il numero di pipeline in maniera proporzionale alla banda passante della memoria.

fek
23-06-2005, 22:14
Ragazzi potete spiegarmi cosa sono le pipeline?Perché é importante averne di più?Ho visto la nuova 7800 gtx e ho notato che si mette in grande rilevanza la presenza delle 24 pipe.

Dai rispondetemi sono curioso :)

Il processo di generazione di un'immagine e' altamente parallelo, significa che si possono eseguire operazioni su entita' (pixel e vertici) il cui risultato non dipende l'uno dall'altro.
Significa che per calcolare il colore di un pixel, non serve sapere il colore di nessuno degl'altri pixel dell'immagine.

Sfruttando questo principio le GPU possono parallelizzare il lavoro e far passare ogni entita' attraverso una catena di montaggio (la pipeline) che la lavora. I pixel entreranno nelle catene di montaggio che ne calcolano il colore, mentre i vertici in quelle che ne calcolano la nuova posizione.

Piu' catene di montaggio ci sono all'interno della GPU, piu' pixel e vertici possono essere elaborati in contemporanea e piu' veloce sara' la GPU a calcolare i colori di tutti i pixel di un'immagine.

Lo stesso principio e' solo parzialmente valido per le CPU perche' gli algoritmi general purpose non possono essere parallelizzati in maniera altrettanto efficiente quindi aggiungere molte unita' che fanno la stessa cosa non e' altrettanto conveniente come per le GPU.

Sn4k3.it
23-06-2005, 22:17
Uhm...quindi praticamente poniamo il caso di una texture,questa passa fra tutte le pipe, e va alla GPU :confused:

Ma viene usato un solo ciclo di clock?O di +?

Quindi le pipeline sono le "braccia" della GPU che dovrebbe essere il cervello :D

sgrisol@verklok
24-06-2005, 00:25
Uhm...quindi praticamente poniamo il caso di una texture,questa passa fra tutte le pipe, e va alla GPU :confused:

Ma viene usato un solo ciclo di clock?O di +?

Quindi le pipeline sono le "braccia" della GPU che dovrebbe essere il cervello :D

il ciclo di clock è stabilito dal bus dati e dalle latenze, e anche dalla lunghezza delle pipes.
sinceramente io non riesco a immaginare la gpu come un qualcosa di organicamente connesso alle pipes come un cervello rispetto alle braccia, piuttosto come un un organismo e le sue arterie, un tuttuno diciamo

Mason
24-06-2005, 10:06
...
I vertici entreranno nelle catene di montaggio che ne calcolano il colore, mentre i vertici in quelle che ne calcolano la nuova posizione.
...


immagino il primo soggetto fosse i pixel, giusto?

fek
24-06-2005, 10:21
immagino il primo soggetto fosse i pixel, giusto?

Si', lo correggo, grazie :)

Uhm...quindi praticamente poniamo il caso di una texture,questa passa fra tutte le pipe, e va alla GPU :confused:

Ma viene usato un solo ciclo di clock?O di +?

Quindi le pipeline sono le "braccia" della GPU che dovrebbe essere il cervello :D

Le texture non "passano" attraverso le pipeline, solo pixel/vertici (vettori per essere piu' precisi) sono elaborati.

Le texture non sono altro che un'astrazione del concetto di memoria: la texture e' una zona di videoram che puo' essere letta durante l'elaborazione di un pixel (oppure di un vertice).

La CPU fa accesso ad una cella di memoria durante l'elaborazione di un programma, la GPU fa accesso ad un texel di una texture durante l'elaborazione di un pixel. E' la stessa cosa (piu' o meno) ma chiamata in maniera differente.

Le pipeline sono come tanti piccoli core di una CPU semplificati che eseguono programmi su pixel/vertici.

(In questo topic parlo di pipeline riferendomi solo a quelle di una GPU non al concetto generale)

zerothehero
24-06-2005, 10:27
ma i pixel formano le texture,no?
io ci ho lavorato un pochino a livello di modding, ma ho un ignoranza pazzesca su questi ambiti.. :fagiano:

fek
24-06-2005, 10:37
ma i pixel formano le texture,no?
io ci ho lavorato un pochino a livello di modding, ma ho un ignoranza pazzesca su questi ambiti.. :fagiano:

Lo so, c'e' una gran confusione con i termini :)

Pixel e' un termine improprio. Correttamente si dovrebbe parlare di:

- texel: un elemento di una texture, che puo' essere un colore, una normale in una normal map oppure qualunque significato il programmatore voglia dargli

- fragment: quello che di solito si chiama pixel, e' un frammento del frame buffer, un elemento dell'immagine finale calcolato all'interno di una pixel pipeline (che dovrebbe essere chiamata fragment pipeline) a partire da un programma, il pixel shader o meglio fragment program, a partire da un certo numero di texture di ingresso.

- pixel: propriamente e' un elemento dell'immagine nel framebuffer pronto per essere visualizzato, quindi alla fine di tutta la pipeline grafica (pipeline qui non e' la stessa cosa delle pipeline di una GPU, si fa un sacco di confusione con i termini nel 3d)

In sintesi, una versione semplificata della pipeline grafica (che ancora, non e' la stessa cosa di una pipeline della GPU) puo' essere:

1) Un poligono entra nella GPU per essere disegnato
2) Viene diviso nei tre vertici che lo costituiscono e ogni vertice passa per una vertex pipeline che esegue un vertex program che lo trasforma in un qualche modo
3) I tre vertici trasformati sono riassemblati e il poligono trasformato che ne risulta e' suddiviso (rasterizzato) in un insieme di frammenti che coprono una parte dell'immagine finale pronti per essere elaborati
4) Ogni frammento attraversa una fragment pipeline che lo elabora eseguendo un fragment program che ne calcola il colore finale a partire da uno o piu' texel letti da una o piu' texture (l'equivalente di accessi alla memoria di una CPU)
5) Al frammento che esce dalla fragment pipeline e' applicato l'algoritmo di zbuffering per capire se e' coperto o meno da altri frammenti gia' calcolati, se non e' coperto, viene scritto nel framebuffer e diventa un pixel dell'immagine pronto per essere mandato allo schermo

lowenz
24-06-2005, 13:06
Lo so, c'e' una gran confusione con i termini :)

Pixel e' un termine improprio. Correttamente si dovrebbe parlare di:

- texel: un elemento di una texture, che puo' essere un colore, una normale in una normal map oppure qualunque significato il programmatore voglia dargli

- fragment: quello che di solito si chiama pixel, e' un frammento del frame buffer, un elemento dell'immagine finale calcolato all'interno di una pixel pipeline (che dovrebbe essere chiamata fragment pipeline) a partire da un programma, il pixel shader o meglio fragment program, a partire da un certo numero di texture di ingresso.

- pixel: propriamente e' un elemento dell'immagine nel framebuffer pronto per essere visualizzato, quindi alla fine di tutta la pipeline grafica (pipeline qui non e' la stessa cosa delle pipeline di una GPU, si fa un sacco di confusione con i termini nel 3d)

In sintesi, una versione semplificata della pipeline grafica (che ancora, non e' la stessa cosa di una pipeline della GPU) puo' essere:

1) Un poligono entra nella GPU per essere disegnato
2) Viene diviso nei tre vertici che lo costituiscono e ogni vertice passa per una vertex pipeline che esegue un vertex program che lo trasforma in un qualche modo
3) I tre vertici trasformati sono riassemblati e il poligono trasformato che ne risulta e' suddiviso (rasterizzato) in un insieme di frammenti che coprono una parte dell'immagine finale pronti per essere elaborati
4) Ogni frammento attraversa una fragment pipeline che lo elabora eseguendo un fragment program che ne calcola il colore finale a partire da uno o piu' texel letti da una o piu' texture (l'equivalente di accessi alla memoria di una CPU)
5) Al frammento che esce dalla fragment pipeline e' applicato l'algoritmo di zbuffering per capire se e' coperto o meno da altri frammenti gia' calcolati, se non e' coperto, viene scritto nel framebuffer e diventa un pixel dell'immagine pronto per essere mandato allo schermo

Direi quasi di metterla in rilievo questa spiegazione! :)

Sn4k3.it
24-06-2005, 14:36
Si', lo correggo, grazie :)



Le texture non "passano" attraverso le pipeline, solo pixel/vertici (vettori per essere piu' precisi) sono elaborati.

Le texture non sono altro che un'astrazione del concetto di memoria: la texture e' una zona di videoram che puo' essere letta durante l'elaborazione di un pixel (oppure di un vertice).

La CPU fa accesso ad una cella di memoria durante l'elaborazione di un programma, la GPU fa accesso ad un texel di una texture durante l'elaborazione di un pixel. E' la stessa cosa (piu' o meno) ma chiamata in maniera differente.

Le pipeline sono come tanti piccoli core di una CPU semplificati che eseguono programmi su pixel/vertici.

(In questo topic parlo di pipeline riferendomi solo a quelle di una GPU non al concetto generale)

Grazie della spiegazione :)

non mi é molto chiara la parte che ho evidenziat,cosa s'intende per texel?

Scusate ma sono noob :)

fek
24-06-2005, 14:52
Grazie della spiegazione :)

non mi é molto chiara la parte che ho evidenziat,cosa s'intende per texel?

Scusate ma sono noob :)

No prob :)

Un texel e' semplicemente l'elemento di una texture. Immagina una texture a risoluzione 256x256, ogni elemento in questa griglia si chiama texel.

Sn4k3.it
24-06-2005, 17:33
No prob :)

Un texel e' semplicemente l'elemento di una texture. Immagina una texture a risoluzione 256x256, ogni elemento in questa griglia si chiama texel.


Sei un grande :ave:

Cosi é chiarissimo :)

zerothehero
24-06-2005, 18:35
No prob :)

Un texel e' semplicemente l'elemento di una texture. Immagina una texture a risoluzione 256x256, ogni elemento in questa griglia si chiama texel.

sto iniziando a capire qualcosa..io pensavo alle texture come un elemento "unitario" che veniva calcolato e elaborato... :fagiano:...

Zak84
24-06-2005, 22:29
fek :ave:

Non so come fai a dare delle spiegazioni così semplici da capire e precise allo stesso tempo. :ave:

Sn4k3.it
25-06-2005, 17:03
Direi quasi di metterla in rilievo questa spiegazione! :)


Beh, come non quotarti :)

Zak84
25-06-2005, 17:32
Direi quasi di metterla in rilievo questa spiegazione! :)Beh, come non quotarti :)

Mi aggiungo al quote!:)