Claudio Brotto

La rivoluzione dei 64 bit

Eh già ... finalmente sono state rese disponibili le versioni a 64 bit di Windows (XP e 2003 Server).

Tecnicamente parlando, il salto è enorme.

L'architettura hardware e l'instruction set consentono di lavorare in modo nativo con valori di 8 byte: fondamentalmente, i registri sono grandi il doppio, e vengono ovviamente implementate le istruzioni necessarie a manipolarli.

I vantaggi, a mio giudizio, vanno in due filoni principali.

Da un lato, le capacità di elaborazione su quantità "grandi" (l'artimetica su valori a 64 bit risulta ora infinitamente più performante).

Dall'altro la capacità di indirizzamento: puntatori il doppio più capienti, e possibilità di indirizzare una quantità di memoria praticamente illimitata (anche se andrei piano con queste considerazioni, visto che un illustre personaggio , alcuni anni orsono, sosteneva che il limite dei 640Kb non sarebbe mai stato un ostacolo !).

Queste caratteristiche vanno ovviamente sfruttate dal software che vi è costruito sopra.

A partire dal sistema operativo, per arrivare al software applicativo.

In quest'ottica, credo che la scelta di adottare come target un ambiente virtuale risulti assolutamente vincente.

Immaginate cosa vorrebbe dire ricompilare ex-novo un'applicazione nativa.

Controllare di non aver fatto assunzioni legate alla piattaforma (principalmente sulle dimensioni dei puntatori, allocazioni di memoria, ecc...).

Gestire due versioni dello stesso software, almeno in forma binaria, per architetture IA32 e IA64.

Spostare tutte queste problematiche nello strato di Virtual Machine non è cosa da poco, perchè il "lavoro sporco" lo hanno fatto altri, e probabilmente meglio di come avremmo potuto fare noi (ricordandosi sempre, comunque, che gli IntPtr esistono e vanno utilizzati in modo appropriato !).

Discutendo il modello di compilazione Just-In-Time, i sostenitori degli ambienti virtuali portano spesso la maggiore adattabilità all'effettiva architettura di esecuzione come argomento, a parziale contrappeso rispetto ad una maggiore lentezza, dovuta ad un ulteriore livello di indirezione.

Questa argomentazione non mi aveva mai convinto, e tuttora non riesce a farlo, rimanendo nell'esclusivo campo delle prestazioni.

Però ha risvolti decisamente importanti quando si parla di condivisione di componenti fra architetture differenti, in termini di uniformità di sviluppo, manutenibilità ed astrazione.

Non credo che queste considerazioni abbiano mai avuto un peso primario nella scelta di adottare .NET come piattaforma, almeno rispetto ad altri fattori, rapidità di sviluppo in primis. Credo, però, che potranno iniziare ad averlo ora che l'introduzione di hardware e sistema operativo a 64 bit è una realtà del presente, anche in campo consumer.

powered by IMHO 1.2

Posted: apr 03 2005, 11:39 by devlizard
Filed under: