Architetture per la grafica Daniele Marini Corso Di Programmazione Grafica Tratto da appunti di: Tomas Akenine-Möller Department of Computer Engineering.

Slides:



Advertisements
Presentazioni simili
Gestione della Memoria
Advertisements

Ombre e riflessioni in tempo reale
Gestione della memoria centrale
La struttura fisica e logica di un elaboratore
Realizzazione del file system
Realizzazione del file system
Esercizi sulle architetture
Introduzione al calcolo parallelo SISTEMI INFORMATIVI AZIENDALI Pierpaolo Guerra Anno accademico 2009/2010.
Glossario. AGP Accelerated Graphics Port: architettura di bus che permette alle schede grafiche laccesso diretto al bus di sitema (fino a 100MHz), invece.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Computer Graphics Marco Tarini Lezione 7: rasterizzazione la fabbrica dei frammenti Università dellInsubria Facoltà di Scienze MFN - Varese Corso di Laurea.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Struttura dei sistemi operativi (panoramica)
La gestione dell'I/O Architettura degli elaboratori 1 - A. Memo La gestione dellI/O 4Prestazioni e generalità 4.1Modelli di funzionamento 4.2Dischi.
Xscale Nicola Rebagliati 2001s135. Cose Xscale Xscale è una microarchitettura per processori che fornisce ottime prestazioni con bassi consumi energetici.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
CPU (central process unit)
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Smoothing Daniele Marini.
2. Hardware Componenti di base di un computer
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Superfici nascoste Daniele Marini.
1 Struttura di un sistema grafico e frame buffer Daniele Marini.
Sistemi ad elevate prestazioni Lezione 1
1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Antialiasing tratto da: Han-Wei Shen.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Antialiasing parzialmente tratto da: Han-Wei Shen Daniele Marini Corso Di Programmazione Grafica aa2005/2006.
Antialiasing parzialmente tratto da: Han-Wei Shen
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Esercitazioni I/O. Dischi: Esercizio 1 Si consideri un programma che legge blocchi di 2 KB da disco, esegue un’elaborazione su questi, e quindi li riscrive.
Migliorare le prestazioni delle cache
Architettura del calcolatore
GPGPU General Purpose Computation on GPU Emanuele Ruffaldi 2005 Corso su Elasticità non lineare ed Oggetti Deformabili.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
3  Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione  elaborazione dati  memorizzazione dati 
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
Luglio 2004Generalità Hardware1 Luglio Generalità Hardware2 MACCHINA DI VON NEUMAN (1947) BUS Processore Elaborazione Controllo Memoria Ingresso.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Valutazione delle Prestazioni Francesco Lo Presti Rielaborate da Salvatore Tucci.
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
Informatica Generale Marzia Buscemi
 Il modello a memoria comunque trova impiego nelle architetture in cui esiste un’unica memoria a tutti i processi,per esempio macchine monoprocessore.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
GPU - Graphics Processing Unit Corso di Sistemi Paralleli Luigi La Torre Giugno 2012.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Il modello di Von Neumann
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Breve Storia 3d prima generazione (escludiamo Wolf3d, Doom e Duke3d, che erano una sorta di 2D)  per ogni triangolo che compone una mesh calcoliamo la.
Transcript della presentazione:

Architetture per la grafica Daniele Marini Corso Di Programmazione Grafica Tratto da appunti di: Tomas Akenine-Möller Department of Computer Engineering Chalmers University of Technology

Programmazione Grafica2 Aspetti considerati Ricordare i problemi di texturing prospettico Ricordare le trasformazioni geometriche per il rendering L’architettura di XBOX L’architettura di KYRO C’è in giro molta documentazione su HW grafico, cercare qui:

Programmazione Grafica3 Aspetti generali L’evoluzione delle recenti architetture grafiche parte dalla fase finale della pipeline –Si è aggiunto all’HW la rasterizzazione (il maggiore aumento di prestazioni deriva da questo) –Poi si è rivisto lo stadio di geometria –L’applicazione non è stata ancora messa in HW! Due vie principali per migliorare le prestazioni: –Pipelining –Parallellizazione –Combinazione dei due fattori

Programmazione Grafica4 Sulla pipeline Nella GeForce3: stadi di pipeline! –57 millioni di transistor –Pentium IV: 20 stadi, 42 millioni transistor Schede recenti: –Radeon 9700: 110M transistor –GeForce FX 5800: 125 M transistor, 500 MHz Idealmente: n stadi accrescono il throughput di n volte –Ma aumenta la latenza! –Comunque non è ancora un problema: Consdieriamo un chip con una frequenza di circa 200 MHz (5ns per clock) 5ns*700=3.5 m s di latenza complessiva Ma abbiamo circa 20 ms per frame (50 frames per secondo) HW grafico è semplice da organizzare in pipeline perchè: –I pixel sono per lo più independenti l’uno dagli altri –Pochi test e funzionalità molto precise –Non è necessaria una frequenza troppo elevata: il collo di bottiglia è la banda passante per la comunicazione con la memoria Questo sta cambiando con il crescere della programmabilità –È semplice prevedere i meccanismi di accesso a memoria, e quindi fare un ” prefecthing”

Programmazione Grafica5 Parallellismo Idea semplice: calcola n risultati in parallalo e combinali alla fine GeForce FX 5800: 8 pixels/clock, 16 textures/clock –Con una pipeline di parecchi gruppi a 100 stadi si possono processare molti pixel insieme Non è sempre semplice! –Provate a parallelizzare un algoritmo di sort … –Ma i pixel sono tra loro indipendenti, e quindi per la grafica è più semplice Si può parallelizzare sia la geometria sia la rasterizzazione:

Programmazione Grafica6 Classificazione dei tipi di hardware È necessario computare un sort dallo spazio modello allo spazio schermo Quattro alternative principali: –Sort-first –Sort-middle –Sort-Last Fragment –Sort-Last Image

Programmazione Grafica7 Sort-first Ordina le primitive prima dello stadio di geometria Schermo suddiviso in grandi regioni Ogni singola pipeline è responsabile di una regione G è lo stadio geometrico FG fragment generator, parte della rasterizzazione, trova quali pixel sono interni a un triangolo FM fragment merge, assembla i frammenti nei vari buffer (Z-buffer, colore) Architettura inusuale e poco usata

Programmazione Grafica8 Sort-middle Ordina dopo G prima di rasterizzare (R) Naturale, perché dopo G conosciamo le posizioni dei triangoli nello spazio schermo Suddividi il lavoro tra le varie unità G Lo schermo può esser suddiviso in “piastrelle” (es. 4x4 pixel, oppure in n linee di scansione) R è responsabile del rendering entro una piastrella Triangoli comuni a due regioni sono inviate ai due R responsabili

Programmazione Grafica9 Sort-Last Fragment Ordina tra FG e FM XBOX adotta questo schema! Suddividi il lavoro tra le G Il risultato si invia a FG I frammente sono quindi ordinati prima di inviarli a FM –Ogni FM è responsabile di una piastrella di pixel Un triangolo è spedito a un solo FG, si evita di duplicare il lavoro

Programmazione Grafica10 Sort-Last Image Ordina alla fine della pipeline Ciascun FG & FM ha un frame buffer separato per l’intero schermo (Z e colore) Dopo che tutte le primitive sono state spedite alla pipeline z-buffer e color buffer sono fusi in un solo color buffer Può essere visto come un insieme di pipeline indipendenti Richiede enorme memoria! Usato per ricerca ma non commercialmente

Programmazione Grafica11 La banda passante per la memoria è enorme !! R lettura, W scrittura, T texture, Z è Z-buffer, C è color buffer Supponendo 2 texture per pixel, e il costo TR 24 byte (triline MIP-mapping), il resto costa 32 bit (4 byte) Un pixel normale costa: ZR+ZW+CW+2*TR=60 byte per pixel Se vogliamo 60 fps, 1280x1024: 4.5 Gb/s Ma un pixel viene sovrascritto molte volte! Se la sovrascrittura è 4 volte, si ha: 18 Gb/s ! Supponiamo una DDRAM a 300 MHz, 256 bit per accesso: 9.6 Gb/s 18>9.6 !!

Programmazione Grafica12 Banda passante 18>9.6 L’uso di banda non è mai al 100%, possiamo inoltre usare molte texture, anti- aliasing, che richiede ancor più banda Ci sono molte tecniche per ridurre l’uso di banda: –Texture caching e prefetching –Compressione delle Texture –Z-compression –Z-occlusion testing (HyperZ)

Programmazione Grafica13 Z-occlusion testing e Z- compression Un modo per ridurre la banda –ATI Inc., ha esplorato per primo questa strada con la tecnologia HyperZ Molto semplice e molto efficace –Dividi lo schermo in piastrelle di 8x8 pixels –Mantieni uno stato della memoria sul chip –Accesso molto veloce –Memorizza altra informazione richiesta da questo algoritmo Abilita occlusion culling sui triangoli, z- compression, e Z-clear veloce

Programmazione Grafica14 Memorizza zmax per tile, e un flag (se è compresso/non-compresso) Rasterizza una piastrella per volta Test: se zmin sul triangolo è maggiore di zmax della piastrella –Se sì non far nulla!!! –Salva la texture e z-read per l’intera piastrella– enorme risparmio! Altrimenti leggi Z-buffer compresso e decomprimi Scrivi Z-buffer non-compresso, quando hai finito comprimilo e spediscilo indietro alla memoria, aggiorna zmax Per Z-clear fast: setta un flag a”clear” per ciascuna piastrella –Non dobbiamo leggere dallo Z-buffer, basta spedire lo Z pulito per quella piastrella

Programmazione Grafica15 Xbox game console Costruita da Microsoft e NVIDIA È quasi un PC: –Pentium III, 733 MHz –GeForce3 estesa Perché una console? –Resta stabile … –Non devi preoccuparti di 20 differenti schede grafiche e di CPU che vanno da 100 MHz a 2GHz

Programmazione Grafica16 Xbox è una macchina UMA UMA = unified memory architecture –Ogni componente del sistema accede alla medesima memoria Esaminiamo la GPU

Programmazione Grafica17 geometry stage Dual vertex shaders –La stessa procedura su un vertice è eseguita due volte in parallelo –Vertex shader è una SIMD opera su 4 componenti per volta –Invece di uno stadio geometrico con funzione fissata, abbiamo pieno controllo sulla animazione dei vertici, lighting etc. Usa DMA (direct memory access), la GPU invia i vertici direttamente dalla memoria! 3 differenti caches – per prestazioni migliori!

Programmazione Grafica18 geometry stage: le cache Pre T&L (transform & lighting) –Memorizza i vertici inviati dalla memoria Evitare invii inutili –In media un vertice è condiviso da 6 triangoli –Ha 4 kbyte di memoria locale Post T&L cache: –Evita di lavorare più di una volta su ogni vertice –Ha memoria sufficiente per 16 vertici trasformati Primitive Assembly cache: –Un vertice trasformato richede un sacco di memoria, ci vuole tempo per fetchare un vertice dalla Post T&L cache –Può salvare 3 vertici completamente shaded –Esiste per evitare fetch da Post T&L Il compito della cache PA è di inviare i triangoli al rasterizzatore

Programmazione Grafica19 rasterizer Primo blocco: trianglesetup (TS) and FG Sorting è fatto dopo FG Architettura del tipo Sort-last 2 texture unit TX RC (register combiners) opera sui valori di texel filtrati dal TX e dallo shading interpolato sui triangoli (è programmabile) –Può esser usato ad es. per bump mapping Infine i risultati da TX, RC, shading interpolation, fog interpolation è fuso da FM in un colore finale per il pixel

Programmazione Grafica20 texture swizzling Una tecnica di accesso che si usa ad es. per filtraggio bilineare Questa è una curva di ”riempimento del piano” (simile alla curva di Peano) usata per sfruttare la coerenza spaziale tra pixel

Programmazione Grafica21 Xbox conclusioni (Quasi) un PC con un grande HW grafico Architettura del tipo Sort-last fragment 2 vertex shaders 4 pixel 250 MHz Programmabile per pixel Una dellle migliori console attuali (per ora …)

Programmazione Grafica22 KYRO – una architettura differente Basata su architettura PowerVR (StMicrolectronics) Basata su piastrelle –KYRO II: 32x16 pixels Differenze fondamentali –Per l’intera scena esegui: Trova tutti i triangoli interni a ciascuna piastrella Renderizza tutti i triangoli interni ad essa Vantaggi: può implementare colori temporanei, stencil, e Z- buffer su una veloce memoria on-chip Risparmia memoria e banda di comunicazione con memoria centrale! –Il produttore dichiara di risparmiare 2/3 della banda usuale rispetto ad architetture tradizionali (senza test di Z-occlusione) –

Programmazione Grafica23 KYRO: panoramica CPU invia dati dei triangoli a KYRO II Tile Accelerator (TA) –Deve avere l’intera scena prima di far partire i blocchi ISP e TSP –Mentre ISP e TSP lavorano, TA lavora sull’immagine successiva (lavorano in modo pipeline) –TA ordina i triangoli e crea una lista di puntatori a triangoli per ciascuna piastrella

Programmazione Grafica24 KYRO Tile accelerator (TA): –Quando tutti i triangoli della scena sono ordinati nelle piastrelle, TA spedisce i dati al blocco ISP –TA continua sul frame successivo, ed esegue il sorting in parallelo Image synthesis processor (ISP): –Implementa Z-buffer, color buffer, stencil buffer per la piastrella –Esegue occlusion culling (simile al test Z-occlusion) Testa 32 pixels per volta nello Z-buffer Registra quali pixel sono visibili –Raggruppa i pixel con la stessa texture e li invia al TSP Questi pixel sono certamente visibili, quindi si calcola la texture una solva volta per ciascun pixel

Programmazione Grafica25 KYRO: TSP Texture and Shading Processor (TSP): –Gestisce texturing e interpolazione di shading Ha due pipeline che lavorano in parallelo –2 pixels per clock Può usare al più 8 texture –Viene implementato con una specie di ”loop” nel TSP I dati texture sono prelevati dalla memoria locale Supersampling: 2x1, 1x2, and 2x2 –Renderizza un’immagine a dimensione maggiore e la filtra scalandola –Nel caso 2x2 occorre solo 4x la dimensione della piastrella, ovvero rende 4x le piastrelle ma non richiede 4x la memoria

Programmazione Grafica26 KYRO: vantaggi e svantaggi Usa una piccola memora aggiuntiva molto veloce –Riduce notevolmente la banda necessaria –Riduce notevolmente la memoria buffer Ma richiede maggiore memoria locale –Per l’ordinamento delle piastrelle Questo limita il numero di triangoli che si possono elaborare –3 MB possono gestire circa 30,000 triangoli

Programmazione Grafica27 Il futuro? Progettare unanuova architettura per la global illumination Pochi si sono occupati di algoritmi basati su”ray tracing” Altre cose utili: –Test rapido di intesezione tra superfici curve in HW –Attraversamento rapido di una struttura dati spaziale –Gestire scene molto grandi HW standard può lavorare già abbastanzza bene percheè vengono scartati triangoli che sono già stati elaborati Gli algoritmi di ray tracing non possono avere questo vantaggio, perchè sono globali, e devono conoscere l’intera geometria –Photon mapping…