Microsoft Windows XP 64 bit: ormai manca poco!

Microsoft Windows XP 64 bit: ormai manca poco!

Negli ultimi giorni vari rumors segnalano come data di rilascio per il nuovo windows a 64bit, il 29 Aprile. Per ingannare l'attesa Microsoft ha distribuito una versione trial che, stando a vari commenti raccolti in rete, appare abbastanza matura e non ha creato particolari problemi nel riconoscimento

di pubblicata il , alle 17:23 nel canale Programmi
MicrosoftWindows
 
211 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
Solido03 Febbraio 2005, 14:41 #191
Originariamente inviato da Solido
Scusate ma si può scaricare oppure no?
cionci03 Febbraio 2005, 15:29 #192
Originariamente inviato da fek
Tu aiuti sicuramente a distendere la discussione
Ma la discussione non si sarebbe neppure scaldata se la nostra amica ammettesse ogni tanto qualche suo errore, soprattutto quando sono cosi' goffi, invece di limitarsi ad arrampicarsi sugli specchi e insultare l'interlocutore che glieli fa notare.

fek: rileggiti per bene quello che è stato scritto... Non vi siete capiti...
Sta dicendo la tua stessa cosa...cioè che di per se un istruction set a 64 bit non porta reali vantaggi... Il codice che tu hai riportato sembrava fatto per fargli capire che in quella situazione (in effetti non hai specificato niente dell'ambiente esterno) il codice a 64 bit era intrinsecamente più lento... Prendendola in questo modo lei ti ha fatto vedere che proprio quel codice, nella situazione migliore (inner loop), è estremamento più veloce del corrispondente a 32 bit...

Quando gli hai chiesto come si fa il profiling, lei ha capito come si fa "in questo caso" il profiling e ti ha fatto il discorso del RDTSC...tu hai capito che facesse il profiling solo in quel modo e ti sei inalberato dicendo che non era capace di fare il profiling... Siccome repne scasb è capacissima di farlo...si è ovviamente incavolata...

Quindi smettetela e fate la pace

Riguardo al discorso del memory bound...non sempre si è memory bound...magari nel tu lavoro la quantità di accessi e la variabilità di questi accessi è tale da renderti sempre memory bound... In molti altri campi questo non succede...
midian03 Febbraio 2005, 15:31 #193
Originariamente inviato da Solido


non penso....come tutti i SO microsoft nn si puo scaricare dal sito ufficiale
cionci03 Febbraio 2005, 15:51 #194
Sì...almeno lo si può fare solitamente...
cionci03 Febbraio 2005, 15:53 #195
Ecco qua: http://microsoft.order-9.com/winxp64/handoff.asp?id=dl

Ho una voglia matta di un sistema a 64 bit...non sapete quante prove avrei voglia di farci
Helstar03 Febbraio 2005, 17:20 #196
Quel codice non e' validissimo, perche' come avevo ripetuto una decina di volte era eseguito in una condizione ideale e irreale (l'inner loop) che era gia' stata indicata da me come il caso perfetto in cui il codice a 64 bit risulta nettamente piu' veloce. Sostanzialmente ha dimostrato l'ovvio su un caso particolare per poi cercare di estenderlo per induzione a tutti i casi. Un tentativo un po' goffo.

Come ha perfettamente detto Cionci, le cose stanno un po' diversamente in quanto sei stato tu (Fek) a portare in primo luogo quell'esempio (per giunta con errori vari riconosciuti ma questo e' un altro discorso) ma manco a farlo apposta era proprio uno di quei rari casi in cui a 64bit si va piu' veloci
Inoltre non credo sia stato il massimo dell'obiettivita' il tuo atteggiamento un po', come dire, sopra le righe nei confronti di repne, arrivando anche a frecciate di dubbio gusto e facendo l'offeso.
Se hai beccato qualcuno che puo' starti dietro nel tuo campo qui sul forum, non averne a male, nessuno ti sta facendo scendere dal piedistallo e la stima di tutti resta immutata, anche se da parte mia hai perso qualche punto per via di certo sarcasmo gratuito ... =)
Cio' non toglie comunque che in 'generale' hai ragione tu sul discorso dei 'presunti' vantaggi (come gia' confermato anche da repne, cdmauro, banus e tutti gli altri) dei 64bit.

Gabido: ma perche' scherzare proprio in questo thread e soprattutto, se non ne puoi fare a meno, in maniera cosi' infantile ?
cionci03 Febbraio 2005, 18:47 #197
Originariamente inviato da Helstar
Come ha perfettamente detto Cionci, le cose stanno un po' diversamente in quanto sei stato tu (Fek) a portare in primo luogo quell'esempio (per giunta con errori vari riconosciuti ma questo e' un altro discorso) ma manco a farlo apposta era proprio uno di quei rari casi in cui a 64bit si va piu' veloci

Non è proprio così...quella routine va sicuramente più veloce a 64 bit solamente nel caso in cui tutti i dati a cui accede siano in cache...ed è per quello che l'aveva introdotta fek...
Diciamo che fek, conscio delle minori operazioni necessarie, voleva mettere in evidenza il fatto che nonostante siano necessarie meno istruzioni la velocità di esecuzione di quella routine dipende dal contesto in cui essa viene richiamata...
cdimauro04 Febbraio 2005, 09:52 #198
Originariamente inviato da fek
2) i dati sono anche i due operandi, non per altro nella versione C li ho passati di proposito come puntatori a interi lunghi, per risaltare il fatto che quei dati provenivano dalla memoria, potenzialmente in due pagine totalmente separate, e ancora potenzialmente non in cache

Rispondo solamente a questa parte, perché per il resto concordo o ne abbiamo già parlato. Citando i dati passati come puntatori, mi è sorto un dubbio: sono andato a controllare e probabilmente la routine che hai riportato non era corretta. La riporto integralmente:
[CODE]void __fastcall func_64(
__int64* res,
__int64 arg1,
__int64 arg2)
{
__int64 res1 = *arg1 + *arg2;
__int64 res2 = *arg1 - *arg2;

*res = res1 * res2;
}[/CODE]
Magari sbaglio, ma usando i puntatori forse doveva essere scritta così:
[CODE]void __fastcall func_64(
__int64* res,
__int64 *arg1,
__int64 *arg2)
{
__int64 res1 = *arg1 + *arg2;
__int64 res2 = *arg1 - *arg2;

*res = res1 * res2;
}[/CODE]
In effetti usando i puntatori si verifica quel che hai scritto: è possibile che ciascun accesso in memoria possa provocare un page fault (tre, se consideriamo anche quello del risultato, che è anch'esso un puntatore).

Quella routine poteva anche essere scritta così (l'ho scritta così perché il mio stile è diverso dal tuo):
[CODE]__int64 __fastcall func_64(__int64 arg1, __int64 arg2) {
return (arg1 + arg2) * (arg1 - arg2);
}[/CODE]
E' chiaro che il problema dell'accesso ai due argomenti (e i conseguenti possibili page fault) è sempre lo stesso: è soltanto anticipato all'inizio della chiamata alla funzione (e posticipato per la scrittura del risultato tornato).

C'è da dire, però, che le routine, sebbene facciano lo stesso lavoro, non sono affatto "identiche": la prima viene "digerita meglio" dai sistemi a 32 bit, perché vengono passati 3 puntatori a 32 bit, mentre nei sistemi a 64 bit un puntatore è a 64 bit (con le conseguenze di cui abbiamo parlato); la seconda è "digerita meglio" dai sistemi a 64 bit, perché si evita il passaggio di un puntatore, ma soprattutto il dato sta interamente in un registro.

Qui nasce anche un problema "etico" per un programmatore: quale forma preferire?
Più in generale: per dati che sono contenuti in 64 bit, è meglio passarne direttamente il valore o il puntatore?
fek04 Febbraio 2005, 12:33 #199
Originariamente inviato da cdimauro
Qui nasce anche un problema "etico" per un programmatore: quale forma preferire?
Più in generale: per dati che sono contenuti in 64 bit, è meglio passarne direttamente il valore o il puntatore?



Nella prima versione del codice che hai riportato il passaggio e' per valore ma gli argomenti sono deferenziati come fossero puntatori, quella versione neppure dovrebbe compilare.
Mi sembra strano che l'abbia postata in quel modo, perche' ho postato anche il disassemblato del debugger e devo averla compilata

edit: confermo, l'ho postata senza l'asterisco sugli argomenti, devo aver fatto casino con il copy&paste per la seconda volta... per fortuna ho i correttori di bozze che si leggono tutto quello che scrivo in cerca di errori; vi posso assumere mentre programmo?
cdimauro04 Febbraio 2005, 13:28 #200
Posso assicurarti che anch'io ho le mie gatte da pelare: non ne voglio aggiungere altre...

Comunque non sono gli errori (chiaramente accidentali) l'oggetto del mio messaggio né lo è l'accesso in memoria e il relativo contesto trattato: l'interrogativo lascia spazio per altre discussioni rispetto a quelle che abbiamo già fatto...

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^