Alla fine del 1999, Apple
ha introdotto sul mercato i computer PowerMac G4 dotati
di processore Motorola MPC7400, i primi processori ad implementare
la tecnologia AltiVec; Questa tecnologia rappresenta
un'espansione all'architettura RISC (Reduced Instruction Set
Computer) specificatamente dedita al vector processing. L'architettura
AltiVec, sviluppata da Apple, Motorola e IBM,
è stata la prima a permettere ad un microprocessore di ottenere
performance superiori ad 1 Gigaflop/s.
Poiché il trend generale dell'industria è quello di
usare processori programmabili per implementare filtri adattivi,
modulatori/demodulatori e altre funzioni prima possibili solo
via hardware, si è venuta a creare una grossa opportunità
per i processori ad elevate prestazioni come il G4, soprattutto
nell'ambito della ricerca e delle applicazioni avanzate.
G4,
il cuore di una nuova rivoluzione
"Forget megaherts, we're talking gigaflops", questo
è lo slogan con cui Apple pubblicizza la nuova linea di computer
basati su PowerPC G4. Che alla Apple siano sempre andati contro
corrente, è un dato di fatto. Basti pensare al PowerMac Cube
o alla linea di computer iMac, che oltre ad essere dei buoni
Personal Computer sono degli splendidi oggetti d'arredamento
che rallegrano uno studio o il salotto di casa. Steve Jobs,
CEO di Apple, ha illustrato a San Francisco (all'SF2001) la
strategia dell'azienda per il prossimo futuro riassumendola
con il nuovo motto - Digital Life Style - dicendo basta alle
lotte di religione fatte a colpi di Megahertz e sostenendo
che le prestazioni ottenibili con i 733MHz del nuovo PowerPC
G4 con Velocity Engine sono maggiori di quelle del Pentium
4 a 1,5GHz mostrando un PC impiegato a fare con Photoshop
le stesse cose fatte dal Mac.
Il nuovo Jobs-pensiero dice che
per uscire dalla crisi che ha colpito il settore dell'informatica
occorre cambiare pelle ai PC trasformandoli in dispositivi
multiuso e multimediali. I nuovi PowerBook G4 sono computer
mobili potenti e resistenti che integrano al meglio le tecnologie
che hanno fatto la fortuna di Apple, ma soprattutto vogliono
essere le basi per la futura rivoluzione. I nuovi computer
che avranno come cuore un G4 e come cervello il nuovo sistema
operativo MacOs X faranno da ponte tra le esigenze
professionali e il tempo libero. Questa è la strategia che
portò USB sull'iMac, poi FireWire per l'utilizzo di videocamere
digitali, il collegamento con i palmari, e adesso l'integrazione
con lettori di MP3, la realizzazione di CD Audio, fino all'incredibile
iDVD (suite di creazione DVD).
Velocity Engine e tecnologia AltiVec
Il processore PowerPC G4 è dotato di circuiteria chiamata
Velocity Engine che consiste in una unità di calcolo vettoriale
a 128-bit capace di operare indipendentemente dalle due unità
intere a 32-bit e dall'unità in virgola mobile a 64-bit. In
questo modo il G4 è capace di eseguire fino a 16 operazioni
in un singolo ciclo di clock. La tecnologia AltiVec è un'architettura
parallela a vettori corti. A seconda delle dimensioni dei
dati, i vettori sono composti da 4, 8 o 16 elementi, al contrario
di quello che avviene nelle classiche architetture dei supercomputer
che usano vettori lungi centinaia di elementi. L'approccio
dei vettori lunghi, seppur utile nei calcoli scientifici,
non è ottimale nei settori delle comunicazioni e del multimedia,
target primario del PowerPC G4.
L'unità di calcolo vettoriale può operare quindi in
tre diversi modi:
· Parallelismo a 16 vie usando interi a 8-bit con e senza
segno o caratteri
· Parallelismo a 8 vie usando interi a 16-bit con e senza
segno
· Parallelismo a 4 vie usando interi a 32-bit con e senza
segno o numeri in virgola mobile a singola precisione
Ci sono 32 registri dedicati a 128-bit per contenere
i dati dell'unità vettoriale e il set di istruzioni del PowerPC
è stato esteso con 162 nuove operazioni vettoriali, eseguite
tutte in un singolo ciclo di clock. L'unità vettoriale opera
su tutti gli elementi del registro simultaneamente, usando
una tecnica nota come calcolo parallelo SIMD (single instructions,
multiple data). Queste istruzioni si dividono in quattro classi:
1. Operazioni aritmetiche intra-elemento
2. Operazioni aritmetiche inter-elemento
3. Operazioni non-aritmetiche intra-elemento
4. Operazioni non-aritmetiche inter-elemento
Operazioni aritmetiche intra-elemento
Le
operazioni aritmetiche intra-elemento eseguono computazioni
parallele indipendenti sugli elementi contenuti nel registro
sorgente e mettono i risultati nei campi corrispondenti del
registro destinazione. Le operazioni intra-elemento supportano
entrambi i tipi di dato, interi o virgola mobile, con o senza
segno. Alcune delle operazioni sono la somma, la sottrazione,
il prodotto, il prodotto con somma , il calcolo del minimo,
del massimo e della media, oltre alla conversione fra numeri
in virgola mobile e interi a 32-bit. Facciamo un esempio di
operazione prodotto con somma, tipo a*b+c, sui vettori invece
che sui numeri. Immaginate di avere la quadrupla a = {1,3,2,5}
di moltiplicarla per la quadrupla b = {2,12,4,40} e infine
di aggiungere al risultato un'altra quadrupla c = {1,1,10,3},
e di poter ottenere il risultato in un colpo solo:
{1,3,2,5} * {2,12,4,40} + {1,1,10,3} = {3,37,18,203}
Come si può vedere vengono effettuate 8 operazioni (4 moltiplicazioni
e 4 addizioni) in una volta sola. Questo modo di operare permette
al G4 di essere fino a otto volte più veloce di un processore
non vettoriale tipo il Pentium, anche se tipicamente il vantaggio
rimane intorno alle due - quattro volte. Un G4 500MHz raggiunge
prestazioni di picco di 4 gigaflops, anche se in situazioni
di uso comune si arriva "solamente" a 2-3 gigaflops.
Operazioni aritmetiche inter-elemento
Sono poche le operazioni inter-elemento messe a disposizione,
prevalentemente quelle necessario al calcolo del prodotto
vettoriale.
Operazioni non-aritmetiche intra-elemento
Sono incluse varie forme di comparazione, spostamento e rotazione,
oltre alle operazioni logiche AND, OR, NOT, XOR, AND-NOT.
Operazioni non-aritmetiche inter-elemento
Sono le operazioni di pack e unpack, inclusa una operazione
speciale per maneggiare il formato dei pixel 1/5/5/5 comune
nei pixel a 16-bit colore. Forse l'operazione più potente
è la permutazione. L'operazione di permutazione è capace di
selezionare dati arbitrari con una granularità di 8-bit da
due registri sorgente per metterli in un registro destinazione.
Di quanto migliora il mio modo di lavorare?
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 developer.apple.com/hardware/altivec/acgresearch.html.
Dopo aver letto questo articolo vi starete chiedendo
cosa possa trattenervi dall'acquistare un PowerMac o il bellissimo
PowerBook Titanium. La risposta è purtroppo semplice
e dolorosa: la superiorità del G4 rispetto ai processori non
vettoriali rimane vincolata alla disponibilità di software
che sfrutti appieno le capacità del Velocity Engine. Purtroppo
ad oggi sono ancora pochi i compilatori pensati per il G4,
limitando quindi la quantità di software ottimizzato per questa
tecnologia. La buona notizia è che il nuovo sistema operativo
MacOS X supporterà il Velocity Engine. In particolare sarà
sfruttato dalla nuova interfaccia grafica Quartz, dalla libreria
QuickDraw e dalla tecnologia QuickTime.
a
cura di Max Manfrin