IA-32e 64-Bit Extension Mode (x64, AMD64, x86-64, EM64T)

Il processore per molti è un pezzo silicio che fa andare il computer, ma all'interno nasconde tante cose. In questo primo articolo affrontiamo il tema della frequenza e delle cache.

Avatar di Tom's Hardware

a cura di Tom's Hardware

IA-32e 64-Bit Extension Mode (x64, AMD64, x86-64, EM64T)

La "64 bit extension mode" è un miglioramento all'architettura IA-32 originariamente progettata da AMD e poi adottata da Intel. Nel 2003 AMD ha introdotto il primo processore a 64 bit per computer desktop compatibili x86 - l'Athlon 64 - seguito dal suo primo processore server a 64 bit, l'Opteron. Nel 2004 Intel ha introdotto una serie di versioni a 64 bit della sua famiglia di processori Pentium 4 desktop. Gli anni successivi hanno segnato l'arrivo di sempre più processori a 64 bit.

Processori con estensione a 64 bit possono lavorare in modalità real (8086), IA-32 o IA-32e. La IA-32 consente al processore di funzionare in protected mode e virtual real mode. La IA-32e permette al processore di lavorare in modalità 64 bit e compatibilità, il che significa che potete far girare simultaneamente applicazioni a 64 e 32 bit. La IA-32e include due sottomodalità:

  • 64 bit mode - permette a un sistema operativo a 64-bit di far girare applicazioni a 64 bit
  • Compatibility mode - permette a un sistema a 64-bit di far girare la maggior parte dei software esistenti a 32-bit

La modalità IA-32e 64 bit si abilita caricando un sistema operativo a 64 bit ed è usata da applicazioni a 64 bit. Nella sottomodalità a 64 bit, sono disponibili le seguenti funzioni:

  • n64 bit linear memory addressing
  • Supporto di memoria nPhysical oltre 4GB (limitata allo specifico processore)
  • Nuovi general-purpose registers (GPRs) nEight
  • Nuovi registri nEight per le estensioni streaming SIMD (MMX, SSE, SSE2, and SSE3)
  • n64 bit-wide GPRs and instruction pointers

La IE-32e compatibility mode permette ad applicazioni a 32 bit e 16 bit di lavorare sotto un sistema operativo a 64 bit. Sfortunatamente i vecchi programmi a 16 bit che operano in virtual real mode (ovvero programmi DOS) non sono compatibili e non funzionano, e questo è probabilmente il maggiore problema per molti utenti, specialmente quelli che usano vecchie applicazioni business o amano far girare vecchi videogiochi. In modo simile alla modalità a 64-bit, la compatibility mode è abilitata dal sistema operativo su basi di codice individuale, il che significa che applicazioni a 64 bit che operano in modalità 64 bit possono funzionare simultaneamente con applicazioni a 32 bit che operano in compatibility mode.

Tutto ciò che serve per questo lavoro è un sistema operativo a 64 bit e, più importante, driver a 64 bit per tutto l'hardware che opera sotto quel sistema operativo. Microsoft distribuì infatti una versione a 64 bit di Windows XP, ma solo poche aziende pubblicarono i driver adatti. È stato solo con Windows Vista e ancora di più con Windows 7 che i driver sono diventati abbastanza diffusi da rendere i 64 bit mainstream.

Bisogna notare che Microsoft usa il termine x64 per riferirsi ai processori che supportano AMD64 o EM64T, dato che le estensioni di AMD e Intel allo standard d'architettura IA32 sono praticamente identiche e si possono supportare da una singola versione di Windows.

Nota: le prime versioni dei processori EM64T di Intel non avevano il supporto alle istruzioni LAHF e SAHF usate nel set di istruzioni AMD64. I processori Pentium 4 e Xeon DP, tuttavia, con gli stepping di core G1 e superiori supportavano totalmente tali istruzioni; era necessario un aggiornamento del BIOS. I processori multi-core più recenti con supporto a 64 bit includono queste istruzioni.

I limiti di memoria fisica per Windows XP e successivi sono mostrati nella tabella sotto:

Versione Windows Limite memoria
8 Enterprise/Professional 512 GB
8 128 GB
7 Profession/Ultimate/Enterprise 192 GB
Vista Business/Ultimate/Enterprise 128 GB
Vista/7 Home Premium 16 GB
Vista/7 Home Basic 8 GB
XP Professional 128 GB
XP Home 4 GB

La principale differenza tra Windows a 32 e 64 bit è il supporto di memoria - nello specifico superare la barriera dei 4 GB che si trova nei sistemi Windows a 32 bit. Queste versioni supportano fino a 4 GB di memoria fisica, con un massimo di 2 GB di memoria dedicati per processo. Le versioni a 64 bit di Windows supportano invece fino a 512 GB di memoria fisica, con un massimo di 4 GB per ogni processo a 32 bit e fino a 8 TB per ogni processo a 64 bit. Il supporto a maggiore memoria significa che le applicazioni possono precaricare più dati nella memoria, a cui il processore può accedere molto più rapidamente.

Nota: sebbene le versioni a 32 bit di Windows possono supportare fino a 4 GB di RAM, le applicazioni non possono accedere a più di 3,25 GB. Il resto dell'address space è usato dalle schede video, dalla ROM di sistema, dai dispositivi PCI integrati, dalle schede PCI e PCIe e dagli APICs.

Windows a 64 bit fa funzionare le applicazioni a 32 bit senza problemi ma non fa girare applicazioni a 16 bit, DOS o altri programmi che girano in virtual real mode. I driver sono un altro grande problema. I processi a 32 bit non possono caricare dynamic link libraries (DLLs) a 64-bit, e i processi a 64-bit non possono caricare DLLs a 32-bit. Questo significa che per tutti quei dispositivi che avete connesso al vostro sistema dovete avere sia driver a 32 che a 64 bit per farli funzionare. Ottenere driver a 64 bit per vecchi dispositivi o prodotti che non sono più supportati si può definire difficile se non impossibile. Prima di installare una versione a 64 bit di Windows assicuratevi che tutti i componenti interni godano di driver a 64 bit.

Suggerimento: se non trovate driver a 64 bit progettati per Windows Vista o Windows 7, cercate quelli per Windows XP x64 edition. Questi driver spesso funzionano molto bene con le successive versioni di Windows a 64 bit.

Anche se i produttori ormai sviluppano senza problemi software e driver a 64 bit, non dovreste dimenticare tutti i problemi nella capacità di memoria, software e driver quando considerate il passaggio dai 32 ai 64 bit. La transizione dall'hardware a 32 bit fino al rendere i 64 bit comuni ha richiesto 16 anni. Il primo processore a 64 bit è stato distribuito nel 2003 e i 64 bit non sono diventati davvero diffusi fino al tardo 2009 con Windows 7.