PDA

View Full Version : ALTIVEC


bandierarossa
21-05-2004, 16:43
Il set di istruzioni SIMD si rivolge non solo alle tradizionali funzioni DSP, ma permette di ottenere incrementi nella computazioni tali da far scendere molti algoritmi ad una complessità superlineare. Pensate, dati i 4 gigaflops di potenza di cui 1 gigaflop sostenibile, alle accelerazioni ottenibili in settori come il Voice over IP (il processore G4 permette la gestione di 30 canali simultanei bidirezionali di traffico VoIP), il riconoscimento vocale, i modem multi-canale, le video-conferenze. Inoltre molti compiti divengono gestibili in tempo reale, come le comunicazioni a banda larga (ci sono incrementi nelle performance tra il 400% e il 2000% per gli algoritmi di routing e di rete specifici per architettura PowerPC), il riconoscimento del parlato continuo, la grafica 3D, la realtà virtuale, MPEG2, MPEG4, il 3D Audio. Un modo per capire cosa si può fare con una potenza di 1 gigaflop è quella di considerare un video clip di 1.000x1.000 pixels con frame-rate di 30 quadri al secondo. Otteniamo quindi 30 milioni di pixels al secondo. Con 1 gigaflop possiamo fare 33 operazioni per pixel mantenendo il frame-rate. Molti dei moderni compressori basati sulle trasformate - MPEG, JPEG2000(motion), schemi wavelet - richiedono a malapena una dozzina di operazioni algebriche per pixel. Questo vuol dire che un G4 ha abbastanza potenza da poter fare una cosa del genere in tempo reale. E' vero che anche i processori Pentium sono dotato di una forma di vettorizzazione, in alcuni casi spinta come quella del G4, ma occorre osservare che MMX/SSE ha prestazioni mediamente peggiori a parità di frequenza.

AltiVec MMX & SSE
32 registri dedicati 8 registri MMX condivisi con la FPU, 8 registri SSE dedicati
128-bit per registro 64-bit / 128bit
162 nuove istruzioni 127 nuove istruzioni
Nessuna interferenza con la FPU MMX blocca la FPU
Nessun Context o mode switching MMX richiede un context switching

E' possibile leggere i risultati dei test sulla signal-processing library code sul sito web di Intel (www.intel.com) per accorgersi che una FFT di 1024 punti su un Pentium III 600MHz viaggia a circa 850 megaflops, mentre la stessa trasformata sul G4 500MHz viaggia a 2,5 gigaflops. Le funzioni del PowerPC G4 sono state scritte per funzionare nella fascia tra i 2 e i 3 gigaflops tra cui operazioni matriciali, convoluzioni, filtri digitali e così via. Chi è versato nella grafica e nell'elaborazione dei segnali riconoscerà queste operazioni come le più importanti e le più usate. Documenti prodotti dall'ACG (Apple's Advanced Computation Group) che mostrano i risultati sulle FFT, wavelets, algebra matriciale e algebra a multiprecisione sono disponibili sul sito web http://developer.apple.com/hardware/altivec/acgresearch.html.


sono basito!
:sbavvv:

Mattlab
22-05-2004, 08:43
http://developer.apple.com/hardware/ve/quickstart.html

cdimauro
22-05-2004, 17:05
Originariamente inviato da bandierarossa
Molti dei moderni compressori basati sulle trasformate - MPEG, JPEG2000(motion), schemi wavelet - richiedono a malapena una dozzina di operazioni algebriche per pixel.
Forse non conosci bene JPEG2000: altro che 12 operazioni per pixel...
Questo vuol dire che un G4 ha abbastanza potenza da poter fare una cosa del genere in tempo reale. E' vero che anche i processori Pentium sono dotato di una forma di vettorizzazione, in alcuni casi spinta come quella del G4, ma occorre osservare che MMX/SSE ha prestazioni mediamente peggiori a parità di frequenza.
Bisogna vedere anche di quanto. Poi da un paio d'anni ci sono anche le SSE2, introdotte col P4, che hanno portato PARECCHIE migliore alla sezione SIMD degli x86...
AltiVec MMX & SSE
32 registri dedicati 8 registri MMX condivisi con la FPU, 8 registri SSE dedicati
Per le SSE/2, con gli AMD a 64 bit i registri sono diventati 16.
162 nuove istruzioni 127 nuove istruzioni
Le SSE2 ne hanno aggiunte ben 144. Le SSE3 altre 13.
Nessuna interferenza con la FPU MMX blocca la FPU
Difatti ormai su punta sulle SSE/2/3.
Nessun Context o mode switching MMX richiede un context switching
Questo è un pregio, e le MMX sono anche trasparenti a livello di s.o. Comunque non sono più usate, e il context switch si porta dietro anche lo stato delle SSE, esattamente come con l'Altivec.
E' possibile leggere i risultati dei test sulla signal-processing library code sul sito web di Intel (www.intel.com) per accorgersi che una FFT di 1024 punti su un Pentium III 600MHz viaggia a circa 850 megaflops, mentre la stessa trasformata sul G4 500MHz viaggia a 2,5 gigaflops.
Preferirei vedere l'FFT scritta per le SSE2, e girare su un'architettura più recente, anche con clock similiare.
Le funzioni del PowerPC G4 sono state scritte per funzionare nella fascia tra i 2 e i 3 gigaflops tra cui operazioni matriciali, convoluzioni, filtri digitali e così via. Chi è versato nella grafica e nell'elaborazione dei segnali riconoscerà queste operazioni come le più importanti e le più usate. Documenti prodotti dall'ACG (Apple's Advanced Computation Group) che mostrano i risultati sulle FFT, wavelets, algebra matriciale e algebra a multiprecisione sono disponibili sul sito web http://developer.apple.com/hardware/altivec/acgresearch.html.

sono basito!
:sbavvv:
Beh, considera che programmi come Photoshop utilizzano praticamente tutte le tipologie di algoritmi che hai citato (in particolare le convoluzioni, con cui vengono realizzati buona parte dei filtri), ma le prestazioni migliori li mostra ormai con la piattaforma x86/SSE, anziché con PPC/Altivec.
Indubbiamente l'implementazione SIMD di Altivec è migliore di quella presente con le SSE, ma non sempre è possibile sfruttarne le caratteristiche (ad esempio, il maggior numero di registri, il fatto di poter scrivere il risultato su un registro diverso, il mascheramento applicabile per ogni operazione): dipende tutto dall'algoritmo da implementare.
Bene o male con le SSE si riesce a implementare di tutto, ottenendo anche dei buoni tempi di esecuzione. Quel che conta, principalmente, è l'adozione della tecnologia SIMD da parte di un'architettura.