Newsgroup: it.comp.hardware.cpu
Titolo: Per chi ha detto che le SSE2 del P4 servono solo per la grafica

C'è chi pensa ERRONEAMENTE che le istruzioni SSE2 servono solo nel campo
della grafica (Giochi, MPEG, ecc).
Le SSE2 servono in qualsiasi ambito in cui occorre fare calcoli in
floating-point, ecc. come ad es. nel calcolo di trasformate discrete di
fourier (usate in qualunque applicazione scientifica, ludica, ecc.), calcolo
del massimo/minimo di un insieme di valori, per eseguire moltiplicazioni di
grandi numeri, ecc. in qualunque campo!!!
Ecco una piccola lista d'esempio di cosa sono in grado di fare le SSE2
            Using the Intel® Pentium® 4 Processor SSE2 Instructions to Find
the Maximum/Minimum Element of a Double-Precision Floating-point Vector and
its Corresponding Index, AP-937
            This application note contains both the code and a description
of how the Pentium 4 Processor SSE2 Instructions can be used to find the
maximum or minimum double-precision floating-point element of a vector and
the element's corresponding index.
            Block-Matching In Motion Estimation Algorithms Using Pentium 4
Processor SSE2 Instructions, AP-940
            As an example of the usage of the 16-byte wide psadbw and paddw
instructions, this application note gives details on coding a fast
block-matching algorithm. This type of code is used in MPEG and MPEG2
encoders and accounts for approximately 40-70% of execution time of the
encoders.
            Performance Comparison of Uniform NURBS Surface Tessellation on
the Pentium® III Processor and the Pentium 4 Processor, AP-944
            This application note discusses optimization techniques for the
tessellation of non-uniform rational B-spline (NURBS) surfaces (a type of
parametric surface) for display in real-time applications. NURBS are the
standard for describing curves and surfaces in the computer aided design
industry. Their use is growing for modeling objects in films, digital art
and, most recently, video games.
            Using the Pentium 4 Processor SSE2 Instruction Set to Implement
an Inverse Discrete Cosine Transform, AP-945
            This application note contains both the code and a description
of how the Pentium 4 Processor SSE2 Instructions can be used to implement an
Inverse Discrete Cosine Transform (IDCT).
            Using the Pentium 4 Processor SSE2 Instruction Set to Perform a
Single-Point Crossover Operation in a Binary Genetic Algorithm, AP-936
            This application note contains both the code and a description
of how the Pentium 4 Processor SSE2 Instructions can be used to perform a
single-point crossover operation used in a binary genetic algorithm.
            Using Pentium 4 Processor SSE2 Instruction for SAXPY/DAXPY,
AP-935
            This application note describes SAXPY and DAXPY, a common linear
algebra routine in single and double-precision floating-point versions, and
includes examples of code that exploit the Pentium 4 Processor SSE2
Instructions.
            Floating-Point Arithmetic with Streaming SIMD Extensions and
Pentium 4 Processor SSE2 Instructions, AP-943
            Floating-point computations on Intel® architecture (IA)
processors prior to the introduction of the Pentium III processor could be
performed only with scalar operations, using the IA floating-point stack
model. New applications that use 3D graphics, video decoding/encoding, or
speech recognition algorithms require increasingly higher performance, while
allowing for the same floating-point operation to be performed on multiple
data elements in parallel. This corresponds to the SIMD (single instruction,
multiple data) computation model offered by the Streaming SIMD Extensions
and the Pentium 4 Processor SSE2 Instructions.
            Using the Pentium 4 Processor SSE2 Instructions to Evaluate a
Hidden Markov Model with Viterbi Decoding, AP-946
            This application note contains both the code and a description
of how the Pentium 4 Processor SSE2 Instructions can be used to implement a
Viterbi Algorithm to evaluate a Hidden Markov Model.
            Using Pentium 4 Processor SSE2 Instructions in Motion
Compensation for Video Decoding and Encoding, AP-942
            This application note presents the Motion Compensation (MC)
algorithm that is used in the Moving Picture Expert Group (MPEG) video
decoding and encoding processes, and includes code examples that exploit the
Pentium 4 Processor SSE2 Instructions to perform this algorithm.
            Using Pentium 4 Processor SSE2 Instructions in a
Double-precision 3D Transform, AP-939
            This application note describes the implementation of a
double-precision 3D geometry transformation, and includes code examples that
exploit the Pentium 4 Processor SSE2 Instructions.
            Using Streaming SIMD Extensions 2(SSE2) to Perform Big
Multiplications, AP-941
            The Big Number Multiplication is used for multiplying two
numbers where the size of either multiplicand is larger than the native size
of the target machine's instruction set. This function is heavily used in
number-theoretic cryptographic applications. In particular, it is heavily
used in public-key cryptography. This application note contains both the
code and a description of how the Pentium 4 Processor SSE2 Instructions can
be used to provide significant performance enhancements to this algorithm.
            Using Spin-Loops on Intel® Pentium® 4 Processor and Next
Generation IA-32 Processor Code Named Foster, AP-949
            This application note addresses two important optimization
issues for multi-threading computations involving high-speed processors:
spin loop and shared-data management. Specifically, these optimizations
include the use of the new PAUSE instruction in spin-wait loops and the
placement of shared and non-shared data on different 128-byte cache lines.

 grandi numeri, ecc. in qualunque campo!!!
Ok, Ok   abbiamo capito che per te AMD è come minimo cacca :-)
Joe

 della grafica (Giochi, MPEG, ecc).
Non e' questo il punto. Le SSE2 in teoria possono trovare applicazione
nei piu' svariati campi. Il ptoblema e' che ADESSO di software che le
utilizza ce n'e' veramente poco ed e' molto settoriale. Per ora che le
SSE2 diventeranno uno standard diffuso, AMD le aggiungera' ai suoi
processori annullando il possibile vantaggio che i P4 futuri ne
trarranno.
Max

 moltiplicazioni di grandi numeri, ecc. in qualunque campo!!!
Quando anche AMD farà uso nel 2003 delle SSE2 l'Intel non saprà più che
pesci pigliare per giustificare il divario di prestazioni dal concorrente.
Forse s'inventerà le SSE3 e dirà che serviranno a fare anche il caffè.....

trarranno.
Gli *Hammer avranno 16 registri per le SSE2 che potranno in alcuni
casi lavorare come se fossero 32 e questo porta ad un miglior
sfruttamento delle istruzione. Esattamente come ora avviene per le SSE
con l'Athlonxp che avendo più registri del P4 riesce a sfruttarle
meglio...
-- 
e-mail:dialtone#NOSPAM#@
aruba.it
Togliere #NOSPAM# per rispondere
E chi ha la fantasia per metterci una firma?!
http://groups.google.com/advanced_group_search?hl=it
tutto quello che vuoi sapere ed E' MEGLIO 
che tu non abbia mai osato chiedere

grandi numeri, ecc. in qualunque campo!!!
Ehm.... guarda che praticamente 'tutte' quelle cose nella lista che
hai messo, servono per la grafica... alcune anche per applicazioni
matematiche complesse (che poi si usano in grafica...). 
In linea di massima le sse2 servono per il multimedia... e' chiaro che
alcune instruzioni potrebbero servire a ottimizzare altro, ma il loro
vero scopo sono le applicazioni matematiche orientate alla grafica.
Ciao!

 vero scopo sono le applicazioni matematiche orientate alla grafica.
Servono per qualunque applicazione matematica, indipendentemente che sia
orientata alla grafica o meno. E' chiaro che per fare 1+1=2 non serve usare
le SSE2, nè tantomento serve un P4 a 1.7Ghz.

 Joe
Non ho detto che AMD fa schifo.
Ho semplicemente detto che le SSE/SSE2 non servono a fare solo grafica.

 le SSE2, nè tantomento serve un P4 a 1.7Ghz.
Matlab ultima versione usa le SSE2 ?
--
ByE,
Kvochur
*************************************
ICQ                       16656093
E-Mail          
kvoc...@yahoo.com
Homepage 
http://highflight.cjb.net
*************************************

 meglio...
Piu registri?
Intendi shadow register oppure registri visibili al programmatore ?
Pensavo che la differenza fosse dovuta alla migliore efficienza delle
FPU dei K7, praticamente per implementare SSE sugli XP non hanno
fatto altro che aggiungere i registri XMM e modificare il decoder, visto
che le FPU che eseguivano le istruzioni 3DNow avevano gia il throughput
necessario in termini di operazioni floating point eseguibili
in parallelo.
L. Micheletto

 Non ho detto che AMD fa schifo.
Ben sapendo la tua predilezione per Intel avevo messo la faccina :-)
sperando si capisse che era un modo benevolo per prenderti in giro....
Del resto con un nick come il mio....
:-P
Joe

in parallelo.
Esattamente cosi'. Hanno registri XMM. E i K8 dovrebbero aggiungere i
registri XMM8-15 e permettere l'utilizzo di ogni registro in modo
doppio, praticamente come se esistessero registri XMM0-31 con notevoli
benefici. Non voglio però far credere che sia tutta farina del mio
sacco... Ovviamente sono informazioni che ho reperito in giro per la
grande rete...
Mentre leggevo l'ultimo articolo di Lithium mi è venuta in mente una
cosa... Ma esistono sistemi "RAID 0,1,0+1" per la ram? Voglio dire...
Montando 4 banchi di memoria. Si possono utilizzare i primi 2 per
memorizzare informazioni che verrebbero richieste contemporaneamente e
gli altri 2 per il mirroring (ovviamente solo in situazione di
utilizzo server)... Oppure la Ram è già capace di leggere in più punti
nello stesso processo? 
Se è una castroneria chiedo umilmente venia... Ma la mia testa ogni
tanto spara a caso e mi fa venire dubbi atroci... 


nello stesso processo? 
dipende dal tipo di memoria, le vram permettono piu' accessi
contemporanei, le VCM permettono piu' richieste contemporanee ma ne
risolvono una alla volta (facendo una sorta di prefetch), le e-sdram
funzionano in modo simile alle vcm ma sono piu' efficienti - ti
consiglio di farti un giretto su ArsTechnica, ha degli articoli sulla
memoria interessantissimi.
--
    (iao!!oai)                                    (ICQ: 10860566)
    //.aurizio
[WARNING!: togliete _nessuno_ per rispondere]
    Time may change me
    But I can't trace time

 Kvochur
Si.

> Matlab ultima versione usa le SSE2 ?
Dal sito 
www.matlab.com
PLEASE NOTE: The Pentium 4 processor is not officially supported with MATLAB
6.0 (R12); however, it is officially supported with MATLAB 6.1 (R12.1). For
more information on the system requirements for MATLAB 6.1 (R12.1), please
see the following URL:

 nello stesso processo?
Per ora il mirroring avrebbe poco senso, a parita di quantita la memoria ram
co$ta molto piu di quella degli hd ed e' molto piu veloce (senza contare
che raddoppiare il bus costa parecchio, uno dei vantaggi delle rambus
e' che avendo il bus dati da 16bit semplificano enormemente la progettazione
di configurazioni dual bus e quad bus rispetto alle SDRAM).
L. Micheletto

Oppure intendevi piu registri rispetto ai K7 pre-XP ?
Uhmmm... Mi č parso di aver capito che avevano piů registri dedicati a
fare solo quello... Probabilmente allora o ho letto male oppure quello
che ha scritto ha scritto una castroneria... Stavolta contrariamente
al solito penso che sia quello che ha scritto che ha sbagliato... Mi
spiace che non mi ricordo il link altrimenti l'avrei scritto per farti
controllare...
Cmq non potrebbe essere rispetto ai Thund perchč non avevano le SSE
quindi non avrebbero potuto implementare niente in modo migliore...


le SSE2, nè tantomento serve un P4 a 1.7Ghz.
Le applicazioni matematiche complesse ora sui Pc sono sostanzialmente
quelle di grafica... per le cose serie non si usano i p4... o comunque
credo che la % di gente che usa programmi di matematica sia inferiore
a quella delle persone che credono che il P4 sia un buon processore :)
Saluti!

 quindi non avrebbero potuto implementare niente in modo migliore...
In un certo senso si, mi ricordo che confrontando
le 3DNow! dei K7 con le SSE dei Pentium III si vede che il numero di 
operazioni in floating point a singola precisione per ciclo di clock
e' *uguale* (il K7 riesce ad appaiare due istruzioni 3Dnow!
in modo da ottenere le stesse prestazioni di una istruzione SSE).
Per questo avevo detto che per inserire il supporto per SSE sugli
Athlon XP le modifiche principali sono state fatte al decoder
ed al set di registri (ma non alle FPU).
L. Micheletto

 6.0 (R12); however, it is officially supported with MATLAB 6.1 (R12.1).
For
adesso verifichero', cmq "ufficialmente supportato" non significa che
sfrutti le SSE2. I programmi ad uso professionale sono normalmente
certificati per certi SO (e molti fino a poco tempo fa erano certificati
solo con NT, nemmeno col 2000...) e un certi processori. Il che significa
che il produttore ti garantisce che con quella configurazione il software
non ha bachi (come no...:) e malfunzionamenti; inoltre ti garantiscono
l'assistenza e il supporto tecnico se utilizzati con tali piattaforme.
....ma non vuol affatto dire che sfrutti appieno le caratteristiche
dell'hardware!!!


 sfrutti le SSE2.
Invece si, perchè quell'articolo parlava proprio di SSE2 cioè se Matlab 6.1x
supportava le SSE2 (era intitolato così!!)

 a quella delle persone che credono che il P4 sia un buon processore :)
non credo, tutti gli studenti di ingegneria e suppongo anche altre facolta
usano programmi di matematica e sono in molti...solo Torino siamo in oltre
10000...probabilmente gia' bastiamo a far piu' gente di quanta crede che il
PIV si un buon processore in tutto il mondo :-)))

 ha scritto nel messaggio
news:a2e57c$10i3u6$1...@ID-26146.news.dfncis.de...

certamente uno studente universitario prima di comprarsi un p4 deve badare
ai propri costi di mantenimento, l'università si sa ha un costo e richiede
sacrifici e io credo che proprio gli universitari siano tra quelle persone
che prima di spendere qualcosa valutino di più il guadagno e spendere il 40%
in più per un p4 ed avere si e no un 3-5% in più di prestazioni (questo cmq
è da verificare) non è significativo.

meglio...
Anche qui, quanti sono i registri in questione?
Grazie :-)
-- 
ZHELGADIS THE LIGHTBRINGER (ICQ 33134824)
Tessera #008 B.A.G., #000 DPPSJ, #013 B.A.T
"Il Grande Fratello? Non lo farei mai vedere ai miei figli."
(Giovanni Modina, direttore di Canale 5)

 Spezzandoli in 2?
In un certo senso si.
Ci sono le istruzioni SSE/SSE2 "scalari" che operano solo
sulla parte bassa dei registri XMM (sia operazioni che semplici
MOV) lasciando la parte alta inalterata, poi con l' istruzione MOVHLPS 
puoi copiare la parte alta di un registro XMM sulla parte bassa 
di un altro, mentre con l'istruzione MOVLHPS avviene il contrario.
L. Micheletto

di un altro, mentre con l'istruzione MOVLHPS avviene il contrario.
Non è possibile operare direttamente sulla parte alta/bassa del
singolo registro?


 singolo registro?
Sulla parte bassa si (usando le istruzioni "scalari"), ma con quella
alta si devono usare le MOVHLPS/MOVLHPS per lavorarci singolamente.
Comunque sfruttando le altre istruzioni SSE "vettoriali" non e'
un gran problema: le operazioni su parte bassa ed alta vengono raggruppate
quando possibile (in modo da sfruttare il piu possibile le istruzioni
"vettorali") e si tengono nelle parti basse dei registri XMM
le variabili che piu spesso vanno modificate singolarmente.
L. Micheletto

Le SSE e le SSE2 implementate da Intel usano gli 8 registri XMM.
AMD le implementa in modo diverso?


 AMD le implementa in modo diverso?
Per quel che riguarda i core Palomino (e limitatamente alle SSE)
non ci sono differenze.
L' Hammer invece quando lavora in modo a 64bit ha a disposizione
16 registri XMM e relative istruzioni "estese" per utilizzarli.
L. Micheletto

16 registri XMM e relative istruzioni "estese" per utilizzarli.
Wow, figata 8^)
