PDA

View Full Version : Quanto è preciso un processore???


Violator
16-04-2003, 00:20
Avrei bisogno di un' informazione: vorrei sapere la precisione dei seguenti processori: Pentium II, Pentium III, Celeron e Pentium IV.
Se mi chiedete cosa intendo per "precisione"... diciamo che se faccio fare un' operazione al computer il cui risultato è un numero decimale, vorrei sapere a quale cifra decimale il computer comincia a commettere l' errore numerico...
Mi pare centri qualcosa con il calcolo in virgola mobile della CPU, ma potrei sbagliarmi.

Grazie a tutti per l' aiuto.

V|RuS[X]
16-04-2003, 00:31
è uno scherzo questo thread vero? :D

ATi7500
16-04-2003, 00:39
Originally posted by "V|RuS[X

"]è uno scherzo questo thread vero? :D

ma L :sofico: :sofico: :sofico: L!


bYeZ!

Mono
16-04-2003, 01:01
Una domanda un po piu' Complicata no e'? :sofico:

Thunder82
16-04-2003, 01:31
Non è uno scherzo, noi lo studiamo in calcolo numerico, ogni processore ha la sua precisione di macchina, ad esempio se hai un numero 0.00000000000.....000001 con X zeri, fino a Y cifre ti rappresenta il numero giusto (cioè con Y zeri) ma se si supera la precisione di macchina il processore ti sparerà fuori solo uno 0. Il numero Y di cifre dopo le quali si ha 0 come risultato dipende dal processore (che può lavorare in single precision o double precision). L'esempio che ho fatto è banale ma vi assicuro che ci sono dei casi in cui la precisione di macchina influenza MOOOOLTO il risultato, ed è una cosa da tenere in considerazione nella compilazione di programmi di calcolo numerico!
Purtroppo non so la precisione di macchina dei processori da te indicati, ma non dovrebbe essere difficile trovarli con google :).
Io so solo che l'Athlon XP, come ha detto il nostro prof, ha una precisione di macchina migliore di quella del Pentium 4

V|RuS[X]
16-04-2003, 01:36
Originally posted by "Thunder82"


Io so solo che l'Athlon XP, come ha detto il nostro prof, ha una precisione di macchina migliore di quella del Pentium 4


Di al tuo docente di andare a zappare la terra.

Thunder82
16-04-2003, 01:41
Guarda, io ho solo detto quello che ha detto il mio prof, che è ricercatore al cnr e sicuramente ne sa più di te della precisione di macchina ;)

V|RuS[X]
16-04-2003, 01:46
Originally posted by "Thunder82"

Guarda, io ho solo detto quello che ha detto il mio prof, che è ricercatore al cnr e sicuramente ne sa più di te della precisione di macchina ;)


Non metto in dubbio la tua buona fede, difatti il commento era riferito a chi aveva sentenziato quella falsità.

Wales
16-04-2003, 01:49
Originally posted by "V|RuS[X

"]


Non metto in dubbio la tua buona fede, difatti il commento era riferito a chi aveva sentenziato quella falsità.

Olè! Urge conoscere una verità ben spiegata... Che ne dici, Thunder82, di chiedere al prof un detaglio appena lo becchi?

Mi incuriosisce 'sta cosa...

Ciao e non accusate senza spiegarvi! ;)

Thunder82
16-04-2003, 01:55
Cmq non penso che avesse torto, d'altronde è risaputo che l'architettura XP è migliore di quella P4, e il mio prof le ha provate tutte e due xchè realizza programmi di calcolo strutturale (se qualcuno li conosce, era nel team che ha sviluppato Straus 7 e anche Ed-Tridim)

Thunder82
16-04-2003, 02:00
Originally posted by "Wales"



Olè! Urge conoscere una verità ben spiegata... Che ne dici, Thunder82, di chiedere al prof un detaglio appena lo becchi?



Purtroppo le lezioni con quel prof sono finite la settimana scorsa, della differenza athlon xp- pentium4 ne aveva accennato ad una lezione ed aveva detto questo (badate che ciò che ha detto è riferito ai programmi di calcolo strutturale, non so il resto, lui ha detto che quando il pentium 4 dà 0 l'athlon dà ancora un numero finito, segno di una precisione di macchina maggiore).
Cmq non ci si potrà mai accorgere della differenza usando i programmi, perchè sono programmati appunto per evitare questi tipi di errori, la differenza caso mai la si nota programmando...

Thunder82
16-04-2003, 02:13
Ho trovato su un libro un algoritmo per calcolare eps (precisione di macchina)

x=4.0/3.0;
y=x-1.0;
z=y+y+y;
eps=|z-1.0|

eps dovrebbe essere la precisione di macchina

LittleLux
16-04-2003, 09:01
Originally posted by "V|RuS[X

"]


Non metto in dubbio la tua buona fede, difatti il commento era riferito a chi aveva sentenziato quella falsità.

Quindi in realtà come stanno le cose?Questo fatto mi incuriosisce,ti potresti spiegare meglio,per cortesia?

Ciao

^O^ Yawn
16-04-2003, 09:09
anche il mio prof dice che l'xp come calcolo è migliore, bah! (sto ad ing elettronica)

(cmq penso che in tutti e 2 i proci.. puoi stare sicuro che per i calcoli che fai, la loro precisione va + che bene)

Athlon
16-04-2003, 09:25
in teoria l'architettura X86 prevede una FPU standard di tipo IEEE 754 uguale per tutti

nella realta' i progetti implementativi posson variare e nel caso della FPU dell' Athlon c'e' una rimanenza dell' origine Alpha della FPU che e' in grado di lavorare (con chiamate Assembly dirette , quindi fuori dagli standard x86) ad una precisione superiore



http://www.stereopsis.com/FPU.html

http://docs.sun.com/source/816-2464/ncgLOT.html

lhawaiano
16-04-2003, 09:29
Originally posted by "V|RuS[X

"]


Di al tuo docente di andare a zappare la terra.
ma perchè non ne dai anche le motivazioni allora?? :rolleyes:
o è solo perchè a te piace il pentium? :rolleyes: :rolleyes:

l.golinelli
16-04-2003, 09:30
Originally posted by "Thunder82"

Ho trovato su un libro un algoritmo per calcolare eps (precisione di macchina)

x=4.0/3.0;
y=x-1.0;
z=y+y+y;
eps=|z-1.0|

eps dovrebbe essere la precisione di macchina

Dovresti essere un pò più chiaro... eps che tipo è che include servono? cosa vuol dire|? Che linguaggio è (penso C)?

Violator
16-04-2003, 09:50
x V|RuS[X] ..... no, questo 3d non è uno scherzo .... :rolleyes:

x tutti gli altri, grazie mille!!!!

Io però vorrei informazioni più precise, cioè oltre a sapere chi è il "vincitore", vorrei avere anche alcune caratteristiche della CPU da portare come esempio. Tutto qua.
Suppongo che fra le CPU di mio interesse (tutte Intel), la "più precisa" dovrebbe essere quella di ultima generazione, cioè il PIV.

In Matlab, mi pare ci sia una funzione eps, per calcolare il più piccolo numero positivo rappresentabile dal PC (cioè quello che lui interpreta come "zero"), magari centra qualcosa?

I links segnalati da Athlon (grazie moderatore) sono utilii, ma non accennano alle caratteristiche dei processori, che è invece quello che sto cercando.

Grazie ancora a tutti.

t00pmi
16-04-2003, 10:03
Originally posted by "Athlon"

in teoria l'architettura X86 prevede una FPU standard di tipo IEEE 754 uguale per tutti

nella realta' i progetti implementativi posson variare e nel caso della FPU dell' Athlon c'e' una rimanenza dell' origine Alpha della FPU che e' in grado di lavorare (con chiamate Assembly dirette , quindi fuori dagli standard x86) ad una precisione superiore

http://www.stereopsis.com/FPU.html

http://docs.sun.com/source/816-2464/ncgLOT.html

Ottima precisazione, complimenti :) Però mi sa che adesso V|rus[X] consiglierà anche a te di munirti di zappa! :eek:

Athlon
16-04-2003, 10:30
Se ti serve fare calcoli molto precisi l'unica pua possibilita' e' di uscire dal campo dell' IEEE 754 che permette al massimo registri da 80 bit.

La maniera piu' semplice per farlo e' di uscire dall' architettura x86 questo vuol dire:

Itanium2
MIPS
SUN
Opteron

personalmente ritengo che il rapporto prezzo preztazioni sia favorevole all' Opteron devi solo aspettare la completa commercializzazione

Athlon
16-04-2003, 10:40
Codice in C per la valutazione della precisione


/* sqrt.c - the problems of approximation */
##include
##include
main()
{
float a;
a = sqrt(2.0);
a = a*a;
if (a == 2.0)
printf("a is 2\n");
else
printf("a isn't 2; the difference is %e\n",a-2.0);
}


per valutare il diverso impatto nell' utilizzo di registi a 32 a 64 o a 80 bit devi dichiarare la variabile a rispettivamente come:
float
double
extended

checo
16-04-2003, 10:43
Originally posted by "l.golinelli"



Dovresti essere un pò più chiaro... eps che tipo è che include servono? cosa vuol dire|? Che linguaggio è (penso C)?

è un algoritmo , mica del codice :o

checo
16-04-2003, 10:47
/* sqrt.c - the problems of approximation */
#include <stdio.h>
#include <math.h>
main()
{
float a;
a = sqrt(2.0);
a = a*a;
if (a == 2.0)
printf("a is 2\n");
else
printf("a isn't 2; the difference is %e\n",a-2.0);
}

così è un po meglio

checo
16-04-2003, 10:50
allego l'eseguibile

C:\>cpu
a isn't 2; the difference is -1.192093e-07

risultato dell' athlon a 32 bit

Athlon
16-04-2003, 11:28
risultato su P4
a isn't 2; the difference is -1.192093e-07


come si puo' vedere entrambe le CPU sono delle x86 compatibili con lo standard ieee754

intakeem
16-04-2003, 13:52
Originally posted by "V|RuS[X

"]


Di al tuo docente di andare a zappare la terra.

:sofico:

Betha23
16-04-2003, 13:58
In teoria coem ha detto Athlon tutti i processori X86 dovrebber overe la stessa precisione FPU che si tirano dietro da 20 anni! :eek:

XP1700+@2400+
16-04-2003, 14:38
Boh ... anch'io penso obiettivamente che la precisione sia uguale per tutti i processori X86, tuttavia il calcolo in virgola mobile delle architetture AMD con il K7 è decisamente più performante data la natura ibrida della CPU (CISC-RISC)...rispetto al P4 che è di tipo CISC.

Questo non vuol dire che sia più preciso(AMD), ma semplicemente che è più rapido a compiere uno o più cicli di calcolo a parità di frequenza di CPU (rispetto al P4).

Poi non saprei se caratteristiche di prefetching o predicting influiscano negativamente sulla precisione di calcolo, ma se provando con i test non si notano differente non vedo perchè dubitarne.

Ora bisogna capire perchè i docenti professori illustrissimi la pensano diversamente.

Saluti

Betha23
16-04-2003, 14:52
Originally posted by "XP1700+@2400+"

Boh ... anch'io penso obiettivamente che la precisione sia uguale per tutti i processori X86, tuttavia il calcolo in virgola mobile delle architetture AMD con il K7 è decisamente più performante data la natura ibrida della CPU (CISC-RISC)...rispetto al P4 che è di tipo CISC.

Questo non vuol dire che sia più preciso(AMD), ma semplicemente che è più rapido a compiere uno o più cicli di calcolo a parità di frequenza di CPU (rispetto al P4).

Poi non saprei se caratteristiche di prefetching o predicting influiscano negativamente sulla precisione di calcolo, ma se provando con i test non si notano differente non vedo perchè dubitarne.

Ora bisogna capire perchè i docenti professori illustrissimi la pensano diversamente.

Saluti

Tutti i processori attuali (P4, Athlon, P3 etc etc ) sono risc-like mi sembra che l'ultimo processore tutto Cisc fosse il Pentium primo medello. :rolleyes:

XP1700+@2400+
16-04-2003, 14:59
Originally posted by "Betha23"



Tutti i processori attuali (P4, Athlon, P3 etc etc ) sono risc-like mi sembra che l'ultimo processore tutto Cisc fosse il Pentium primo medello. :rolleyes:

Non sono d'accordo...le architetture di athlon e P4 sono profondamente diverse e le uniche CPU risc-like come le chiami tu attualmente in commercio per il mercato home user riguardano esclusivamente il mercato macintosh con i suoi processori motorola!!!

Il P4 è un CISC puro ribadisco mentre l'athlon per la sua caratteristica di un numero maggiore di pipeline a meno stadi rispetto al P4, ma funzionanti in parallelo è ciò che si può avvicinare maggiormente ad un hybrid CISC-RISC!

Poi se vuoi pure confutare che il calcolo in virgola mobile è assoluta prerogativa di AMD non so proprio che altro aggiungere!

Saluti

Alex23
16-04-2003, 18:27
Originally posted by "V|RuS[X

"]


Non metto in dubbio la tua buona fede, difatti il commento era riferito a chi aveva sentenziato quella falsità.

In base a cosa giudichi le affermazioni del prof di Thunder82 falsità?
Ne hai un riscontro? Se non lo hai, faresti meglio a non esporti, per evitare brutte figure...

Se invece sei sicuro al 100% di ciò che dici, beh, ti porgo le mie scuse...

ByeZ!
ALEX23
:D

V|RuS[X]
16-04-2003, 18:56
Originally posted by "Alex23"



In base a cosa giudichi le affermazioni del prof di Thunder82 falsità?
Ne hai un riscontro? Se non lo hai, faresti meglio a non esporti, per evitare brutte figure...

Se invece sei sicuro al 100% di ciò che dici, beh, ti porgo le mie scuse...

ByeZ!
ALEX23
:D


Quoto solo te per non farlo con tutti, potevo rispondere ieri notte stesso così mi evitavo di aver detto stupidaggini quando non l'ho fatto.

Alex23 e gli altri invece di scrivere a vanvera avete letto quello che Athlon ha riportato?

Violator
16-04-2003, 19:23
Grazie ancora.

Allora Athlon, grazie anche per l' algoritmo in C e per la possibile scelta nell' acquisto di una futura CPU.

Quello che mi proponevo di fare è la seguente cosa: ho svolto la tesi in CFD (Aerodinamica computazionale) presso la Saab in Svezia e volevo dedicare un paragrafo sulla sensibilità del risultato al variare della CPU impiegata per i calcoli. Così mi servivano un po' di caratteristiche tecniche sui processori.

Da quello che avete detto e da altre fonti che ho letto in internet avete ragione, le CPU "attuali" non differiscono nella precisione. Sembrano usare tutti la stessa.
A conferma di ciò se andate nel sito della Intel, quando paragonano le famiglie di processori non menzionano mai la "precisione" comem caratteristica che è stata migliorata...

Grazie a tutti, ancora.

lzeppelin
16-04-2003, 20:43
La tesi?
In bocca al lupo allora!

checo
16-04-2003, 21:35
Originally posted by "XP1700+@2400+"

B..rispetto al P4 che è di tipo CISC.



eretico!!!!!!!!!!

checo
16-04-2003, 21:40
Originally posted by "Violator"

Grazie ancora.

Allora Athlon, grazie anche per l' algoritmo in C e per la possibile scelta nell' acquisto di una futura CPU.

Quello che mi proponevo di fare è la seguente cosa: ho svolto la tesi in CFD (Aerodinamica computazionale) presso la Saab in Svezia e volevo dedicare un paragrafo sulla sensibilità del risultato al variare della CPU impiegata per i calcoli. Così mi servivano un po' di caratteristiche tecniche sui processori.

Da quello che avete detto e da altre fonti che ho letto in internet avete ragione, le CPU "attuali" non differiscono nella precisione. Sembrano usare tutti la stessa.
A conferma di ciò se andate nel sito della Intel, quando paragonano le famiglie di processori non menzionano mai la "precisione" comem caratteristica che è stata migliorata...

Grazie a tutti, ancora.

a isn't 2; the difference is 4.440892e-16

questo è il risultato utilizzando un double che ha doppia precisione pe definizione

allego in prg

Athlon
16-04-2003, 23:36
a isn't 2; the difference is 4.440892e-16

eseguito su K6-2+ 500@550

Betha23
17-04-2003, 11:38
Originally posted by "checo"



eretico!!!!!!!!!!

:sofico:

manuele.f
17-04-2003, 18:41
Originally posted by "Athlon"

risultato su P4
a isn't 2; the difference is -1.192093e-07


come si puo' vedere entrambe le CPU sono delle x86 compatibili con lo standard ieee754
potrebbe darsi che la differenza sia ancora più piccola e questo prog non la percepisce :rolleyes:

checo
17-04-2003, 19:48
Originally posted by "manuele.f"


potrebbe darsi che la differenza sia ancora più piccola e questo prog non la percepisce :rolleyes:

scusa?

se istanzio un dato float a 32 bit faccio i calcoli su registri a 32bit e il risulato che fa la cpu è quello che "percepisce il programma"

idema se lo faccio su un double.

è c/c++ non sono bruscolini!

manuele.f
17-04-2003, 23:36
hai raione :)
sono stato io che ho parlato prima di riflettere :eek: :mad: :mad: :cool:
sai...anch'io a scuola è da un anno che faccio Turbo C++....

Superboy
18-04-2003, 11:55
Originally posted by "XP1700+@2400+"



Non sono d'accordo...le architetture di athlon e P4 sono profondamente diverse e le uniche CPU risc-like come le chiami tu attualmente in commercio per il mercato home user riguardano esclusivamente il mercato macintosh con i suoi processori motorola!!!

Il P4 è un CISC puro ribadisco mentre l'athlon per la sua caratteristica di un numero maggiore di pipeline a meno stadi rispetto al P4, ma funzionanti in parallelo è ciò che si può avvicinare maggiormente ad un hybrid CISC-RISC!

Poi se vuoi pure confutare che il calcolo in virgola mobile è assoluta prerogativa di AMD non so proprio che altro aggiungere!

Saluti


Invece secondo me tu sbagli, in quanto sia il k7 che il p4 decodificano le istruzioni x86 il primo in macroOPs il secondo im microOPs, la differenza maggiore tra le due implementazioni è come dice il nome la "pesantezza" della microistruzione stessa. Quindi l'esecuzione vera e propria viene fatta su un ristretto set ma molto veloce (grazie allo smembramento di istruzioni più complesse, per me questo è RISC (da questo tipo di def il p4 è ancora + Risc del k7 :PPPPP)
Ciao ciao
Alex

manuele.f
18-04-2003, 12:03
è sempre la stessa storiella...
3000 piccoli carichi o(p4)
1000 grandi carichi (Athlon)

cionci
05-05-2003, 09:01
Originally posted by "checo"


se istanzio un dato float a 32 bit faccio i calcoli su registri a 32bit e il risulato che fa la cpu è quello che "percepisce il programma"

La FPU fa comunque i calcoli a 80 bit... Sono le istruzioni FLD (carica un float dalla memoria allo stack FPU), FST (copia il contenuto di un registro dallo stack FPU alla memoria) che si occupato di convertire il float da 80 a 32 bit... In questo passaggio ovviamente si perde precisione...

I FP IEEE754 hanno 3 campi: segno, mantissa binaria normalizzata (1,xxxxx) e esponente... Nella parte destinata a contenere la mantissa viene memorizzato xxxxx...

Durante la conversione da 80 a 32 bit sia la parte di spazio riservata alla mantissa che la parte di spazio riservata all'esponente vengono ridotte notevolmente (non mi ricordo le dimensioni, dovrei andarle a cercare)...

Di conseguenza ogni volta che sposto un numero dall'interno della FPU verso la memoria perdo precisione perchè quando andrò a rimetterlo la parte tagliata della mantissa non avrà più il valore precedente (ma saranno tutti zero)...

Stessa cosa per l'esponente... Diminuendo il numero di bit se un risultato fosse più piccolo del risultato minimo rappresentabile tramite i FP a 32 bit si avrebbero problemi (non so bene come si comporta la procedura di conversione, probabilmente rende 0.0)...

Inoltre ci sono preoblemi di precisione intrinseca del calcolo binario... Come facciamo a rappresentare un numero reale ? Riusciamo a rappresentarlo bene solamente i numeri reali la cui mantissa binaria normalizzata ha un lunghezza pari o minore allo spazio riservato per la mantissa nei FP...

telnet
05-05-2003, 09:49
Originally posted by "checo"

allego l'eseguibile

C:\>cpu
a isn't 2; the difference is -1.192093e-07

risultato dell' athlon a 32 bit


identico risultato su un p3 800.

gasse
22-06-2003, 21:37
Posso allegare il risultato ottenuto con il mio Commodore 64? :D

Jaguarrrr
22-06-2003, 23:56
Originally posted by "Thunder82"

Ho trovato su un libro un algoritmo per calcolare eps (precisione di macchina)

x=4.0/3.0;
y=x-1.0;
z=y+y+y;
eps=|z-1.0|

eps dovrebbe essere la precisione di macchina

E' vero !!!
L'ho eseguito in matlab ma così (è più utile)

x=4.0/3.0
y=x-1.0
z=y+y+y
w=abs(z-1.0)

Risultato:
w=2.2204e-016

esattamente uguale a EPS !!!

AnonimoVeneziano
23-06-2003, 09:39
Originally posted by "checo"



a isn't 2; the difference is 4.440892e-16

questo è il risultato utilizzando un double che ha doppia precisione pe definizione

allego in prg

Checo, non è che hai il sorgente del programmino?

Grazie

Ciao