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 Fabio Boneschi pubblicata il 28 Gennaio 2005, alle 17:23 nel canale ProgrammiMicrosoftWindows










Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Ford: l'elettrico genera una perdita di oltre 8 miliardi di dollari, ma la società è fiduciosa per il futuro
Ayaneo Next 2: la console portatile Windows 11 che costa più di un PC di fascia alta
Il WiFi può vederti senza telecamere: l'allarme dei ricercatori tedeschi
Linux sotto assedio: SSHStalker riporta in vita IRC per infettare migliaia di server
Stellantis: dopo il crollo di venerdì, si torna in ufficio. Dal 2027 stop allo smart working
Combat Liquid 360 HUD: raffreddamento AIO da 360 mm con display integrato e design modulare
Tornano le EVO Sessions della Formula E: i creator possono guidare delle vere macchine da corsa elettriche
Moltbook, il social network per AI: i post più virali? Tutti scritti da umani
Cina: eseguito il test della navicella Mengzhou per la Luna e del razzo spaziale riutilizzabile Lunga Marcia 10A
Mistral, il rivale europeo di OpenAI, investe 1,2 miliardi di euro in Svezia per un datacenter AI da 23 MW
Libri piratati, allarme rosso: 722 milioni bruciati e 4.500 posti di lavoro persi. L'IA ora pesa sul mercato
Ayaneo svela quasi tutte le specifiche di Pocket Play, lo smartphone che ricorda Xperia Play
Sony chiude definitivamente con i registratori Blu-ray: fine delle spedizioni a febbraio 2026
Renault Twingo E-Tech Electric sotto i 20.000€: da oggi ordinabile l'elettrica più economica della Losanga









211 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infosperiamo che creative esca con dei driver per win x64, altrimenti niente audigy 2...
sai che perdit...
sai che perdit...
non ci dormo la notte...
http://preview.creativelabs.com
questo passaggio onestamente mi sfugge....
"Giusto l'altro ieri ci siamo domandati se un pezzo di codice piuttosto complicato che necessitava di calcoli a 64bit su una cpu a 32 bit sarebbe stato piu' veloce se implementato a 32 bit"
Qui c'e' una considerazione importante: fare speculazioni sui tempi di esecuzione del codice e' divertente, ma raramente ci si azzecca.
L'unica soluzione e' provare e prendere i tempi di esecuzioni e poi speculare sui risultati cercando di spiegarli.
Detto questo, ci siamo domandati se quell'algoritmo che averebbe necessitato di calcoli a 64 bit sarebbe stato meno veloce se implementato a 32 bit e abbiamo scoperto che i tempi di esecuzione non cambiavano.
Questo e' un dato di fatto, e' il risultato dell'esperimento.
Poi abbiamo provato a cercare di capire il perche' di questo risultato.
partendo dal fattto ke ovviamente ne sei consapevole, o hai sbagliato a scrivere qualcosa, o sono io ke non riesco proprio a capire quello ke vuoi dire
La spiegazione e' semplice: un codice che richiede calcoli a 64 bit, implementato a 32 bit necessita di piu' istruzioni, ma spesso e volentieri il motore di esecuzione out of order, che ricordo si occupa di spostare le istruzioni di modo da ottimizzarne l'esecuzione, riesce a muovere queste istruzioni in piu' in colpi di clock che sarebbero altrimenti persi ad attendere che i dati arrivino dalla memoria.
Questa e' la norma in un'applicazione, che nella stragrande maggioranza dei casi e' memory bound. Chiaramente e' possibile immaginare particolari situazioni nelle quali inner loop molto corti che lavorano su dati molto coerenti verrebbero avvantaggiati dal poter fare calcoli nativi a 64 bit, ma questa e' un'eccezione rara.
Per questo e' molto raro notare questi fantomatici incrementi e nella maggior parte delle situazioni le CPU a 32 bit sono perfettamente in grado di eseguire codice a 64 bit senza perdita di prestazioni.
E' proprio questo il punto, i dubbi ci sono e sono molto forti e all'atto pratico esistono molti casi in cui codice a 64 bit possa risultare anche piu' lento di codice a 32 bit.
Ecco uno di questi casi, tratto da un articolo di Herb Sutter che ho postato tempo fa:
http://www.gotw.ca/publications/concurrency-ddj.htm
IMHO i 64 bit, sono un passo importante ke ci regaleranno un buon incremento prestazionale. Dopotutto in ambito di encoding video si parla di incrementi del 15% SOLAMENTE utilizzando winxp 64 con un encoder a 32 bit.... onestamente mi para un pò difficile ke utilizzando encoders a 64 bit le prestazioni peggiorino....
E' l'esatto contrario, solo in situazioni particolarmente di nicchia si possano notare questi incrementi prestazionali, ma nella maggior parte dei casi no. Posso immaginare che alcuni encoder possano avere inner loop che beneficino di istruzioni a 64 bit.
tieni conto ke se ti metti a scrivere da un portatile disteso sul letto non ti viene motlo comodo usare la tastiera, qdi tenti di ridurre AL MASSIMO i tasti da premere.... e una volta ke mi ritrovo sul computer fisso mi resta l'abitudine.... un pò come qdo si è abituati a scrivere "e', perche', cioe'" dato ke in molte applicazioni su internet vengono visualizzati male (MUD, TELNET....)
Stai speculando, ma i dati che ho visto dipingono scenari diversi.
Risolvere la questione e' molto semplice: scrivi un pezzo di codice, compilalo a 32 e 64 bit e guarda le differenze di prestazioni
Noi lo abbiamo fatto, Sutter lo ha fatto, nessuno dei due ha trovato differenze.
Per favore scrivi senza k, si fa molta fatica a leggerti ed e' un segno di rispetto verso chi ti legge non affaticarlo inutilmente.
Re: Re: Non facciamo confusione...
e per le vecchie applicazioni 16 bit non c'e' proprio nessuna speranza o saranno eseguibili tramite l'opzione di compatibilita' ?
Non credo: dovrebbero essere del tutto abbandonate.
Comunque se dopo vent'anni dall'introduzione dei 386 hai ancora l'esigenza di far girare software a 16 bit, puoi sempre affidarti agli emulatori: anche se in emulazione, i processori attuali permettono di far girare molto velocemente le applicazioni a 16 bit.
Ho preso una funzione molto semplice che calcola la seguente espressione con interi a 64 bit:
risultato = (x + y) * (x - y)
Questa e' la funzione:
[code]
void __fastcall func_64(
__int64* res,
__int64 arg1,
__int64 arg2)
{
__int64 res1 = *arg1 + *arg2;
__int64 res2 = *arg1 - *arg2;
*res = res1 * res2;
}
[/code]
L'espressione calcolata potrebbe essere piu' complicata, ma questo non cambierebbe di molto la situazione (a meno che non ci sia un inner loop totalmente non memory bound, ma e' una situazione piuttosto rara come abbiamo detto).
Questa funzione viene compilata nel seguente codice asm su architettura X86:
[code]
00677ED8 push ebp
00677ED9 mov ebp,esp
00677EDB mov eax,dword ptr [ebp+8]
00677EDE push esi
00677EDF push edi
00677EE0 mov esi,ecx
00677EE2 mov ecx,dword ptr [ebp+0Ch]
00677EE5 mov edx,eax
00677EE7 sub edx,dword ptr [arg2]
00677EEA mov edi,ecx
00677EEC sbb edi,dword ptr [ebp+14h] ; (*)
00677EEF add eax,dword ptr [arg2]
00677EF2 adc ecx,dword ptr [ebp+14h] ; (*)
00677EFE pop edi
00677EFF mov dword ptr [esi],eax
00677F01 mov dword ptr [esi+4],edx
00677F04 pop esi
00677F05 pop ebp
00677F06 ret 10h
[/code]
Ho marcato con (*) le istruzioni in piu' che sono necessarie per effettuare un calcolo a 64 bit su una CPU a 32 bit. E' da notare che tutte le volte che vedere "dword ptr [qualcosa]" la CPU sta facendo un accesso alla memoria che puo' essere in cache ma puo' anche non esserlo. Ogni accesso alla memoria puo' lasciare teoricamente la CPU in attesa a far nulla per qualche ciclo di clock o anche per migliaia di cicli di clock (a seconda che il dato sia in cache oppure no). Tutte le CPU moderne cercano di trovare qualcosa da fare alla CPU durante queste attese, implementano pipeline lunghe con molti stadi, riordinano le istruzioni, eseguono addirittura altri processi in quei cicli di clock altrimenti persi (HyperThreading). Molto probabilmente le istruzioni che ho marcato con (*) verranno schedulate per essere eseguite molto vicine ad uno degli accessi alla memoria per tenere occupata la CPU che altrimenti non avrebbe avuto nulla da fare. Quelle istruzioni in piu' che servono per fare calcoli a 64 bit molto probabilmente saranno gratuite in questo esempio.
Ovviamente in caso di calcoli piu' complessi, funzioni piu' lunghe, cicli piu' stretti, usare meno registri permetterebbe di ridurre gli accessi alla memoria, come e' possibile che che il working set piu' ampio peggiori le prestazioni della cache; si possono dipingere molti scenari.
La sintesi di questo discorso e' che non e' affatto detto che ricompilare un programma a 64 bit dia un incremento prestazionale enorme, in generale non cambiera' molto probabilmente nulla.
Spero di essere stato chiaro perche' il post e' un po' tecnico e noioso.
Ad esempio, se prendiamo i test effettuati lo scorso anno con la beta di XP/64, notiamo che la compressione di un video con XviD è migliorata del 15% (in meno del tempo di esecuzione), pur essendo programma e codec a 32 bit.
Le prove con i giochi hanno fatto vedere che, a causa dei driver immaturi, le prestazioni fino a 1024x768 erano nettamente inferiori all'esecuzione degli stessi con XP (a 32 bit), ma andavano via via migliorando e addirittura a 1280x1024 erano migliori: quindi il layer WOW64 è stato capace di sopperire, e addirittura di migliorare, ai problemi dei driver.
Le prove fatte con Linux hanno evidenziato che POVRay e MySQL compilati a 64 bit e fatti girare sul s.o. a 64 bit hanno avuto incrementi prestazionali anche superiori al 40% sulla stessa macchina, ma con le medesime versioni a 32 bit.
E' chiaro che, come giustamente sottolinei, nell'usare i puntatori a 64 bit siamo in presenza di una perdita di prestazioni, ma è anche evidente che il maggior numero di registri general purpose disponibili (anche per le SSE), unito all'ortogonalità dei registri (che aiuta i compilatori) e alla presenza di una modalità d'indirizzamento relativa al PC, hanno contribuito, e non poco, a sanare questa perdita e mediamente ad ottenere dei risultati migliori.
E' anche chiaro che non interessa a nessuno sapere che la GUI delle applicazioni, che fanno ampio uso di oggetti e quindi di puntatori, avranno generalmente un decadimento prestazionale, ma è anche vero che gli incrementi che interessanno e che fanno veramente la differenza le vediamo non con le GUI, ma con l'esecuzione di applicazioni che effettuano dei calcoli intensivi, e queste normalmente beneficeranno del nuovo ambiente, come appare appunto dagli esempi che ho citato.
Io non conosco il contesto delle prove che avete fatto, per cui non mi posso esprimere in merito: avete sicuramente trovato un esempio in cui non c'è differenza fra l'esecuzione di codice a 32 e a 64 bit.
Ma ti posso anche dire che, se devo effettuare una conversione dallo spazio RGB allo YUV (o YCbCr o altro) o viceversa, trovo decisamente molto comodo e molto più efficiente / veloce poter utilizzare una moltiplicazione 32x32 -> 64 bit e usare poi le istruzioni a 64 bit per manipolare queste quantità, anziché ricorrere ai long long "emulati" con istruzioni a 32 bit. Questo per fare un altro esempio.
Dipende tutto dal tipo di algoritmo che si deve implementare.
EDIT: ho appena visto l'altro messaggio che hai postato, e sono d'accordo.
Dipende tutto dal tipo di algoritmo che si deve implementare.
Esatto dipende troppo dalla situazione, non si puo' assolutamente dire che mediamente si vedra' un aumento del 15/20%, anzi; dai, nessuno crede ai risultati forniti dalle simulazioni dei reparti di marketing, vero?
MySQL mi sembra sospetto, hai un link a questa prova? Sono curioso. PovRay e XVid sicuramente possono beneficiare.
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".