IA-32 Mode: 32-Bit e Virtual Real

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-32 Mode: 32-Bit e Virtual Real

IA-32 (32-Bit)

Poi è arrivato il 386, che è stato il primo processore a 32 bit nell'industria dei PC. Questo chip poteva eseguire un set di istruzioni totalmente nuovo a 32 bit. Per avvantaggiarsene completamente erano richiesti un SO a 32 bit e applicazioni a 32 bit. Questa nuova modalità a 32 bit era chiamata "protected mode", il che allude al fatto che i software che operano in tale modalità sono protetti dalla sovrascrittura di un altro software in memoria. Questa protezione rende il sistema molto più stabile, dato che un programma "vagante" non riesce facilmente a danneggiare altri programmi o il sistema operativo. Inoltre un programma che è andato in crash si può terminare permettendo al resto del sistema di continuare a lavorare senza problemi.

Sapendo che i nuovi sistemi operativi e le applicazioni - che si avvantaggiano della protected mode a 32 bit - avrebbero richiesto del tempo per lo sviluppo, Intel realizzò una real mod retrocompatibile in 386. Questo permise al chip di far girare senza problemi applicazioni e sistemi operativi a 16 bit; li gestiva anche abbastanza bene - molto più rapidamente di qualsiasi altro chip precedente. Per la maggior delle persone era sufficiente. Non volevano necessariamente software nuovo a 32 bit, ma applicazioni esistenti a 16 bit che girassero più velocemente. Sfortuntamente, questo significava che il chip non funzionava mai in protected mode a 32 bit e tutte le funzioni derivanti da quelle capacità erano ignorate.

Quando un 386 o successivo faceva girare DOS (real mode), agiva come un "Turbo 8088", cioè il processore aveva il vantaggio di velocità nel far girare qualsiasi programma a 16 bit; poteva usare solo istruzioni a 16 bit e accedere alla memoria interna alla stessa mappa di memoria da 1 MB dell'originale 8088. Perciò, se avevate un sistema con processore a 32 o 64 bit che faceva girare Windows 3.x o DOS, effettivamente stavate usando solo il primo megabyte di memoria, lasciando tutto il resto della RAM inutilizzato!

Erano necessari nuovi sistemi operativi e applicazioni capaci di lavorare nella protected mode a 32 bit dei processori moderni. Per via di diverse resistenze da parte degli utenti, i sistemi operativi a 32 bit hanno richiesto del tempo prima di diffondersi. Windows XP fu il primo vero sistema operativo a 32 bit a diventare mainstream e questo principalmente perché Microsoft forzò la mano con Windows 9x/ME (che erano sistemi 16-bit/32-bit). Windows 3.x è stato l'ultimo sistema operativo a 16 bit, anche se alcuni non lo considerano un SO completo dato che gira sopra DOS.

IA-32 Virtual Real Mode

La chiave per la retrocompatibilità di un ambiente Windows a 32 bit è la terza modalità del processore: la virtual real mode. Virtual real è una modalità in ambiente a 16 bit che opera all'interno della protected mode a 32 bit. Quando aprite una finestra prompt DOS all'interno di Windows, avete creato una sessione "virtual real mode". Dato che la protected mode consente di avere un vero multitasking, potete avere diverse sessioni "real mode" in funzione, ognuna con il proprio software che lavora su un PC virtuale. Queste sessioni possono funzionare tutte simultaneamente, persino mentre altre applicazioni a 32 bit sono in azione.

Bisogna notare che qualsiasi programma operi in una finestra virtual real mode può accedere a un massimo di 1 MB di memoria, crededendo che sia il primo e unico MB di memoria nel sistema. In altre parole, se fate girare un'applicazione DOS in una finestrea virtual real questa avrà un limite di 640 KB nell'uso di memoria. Questo è il motivo per cui c'è solo 1 MB di RAM totale in un ambiente a 16 bit e 384 KB sono riservati all'uso del sistema. La finestra virtual real emula completamente un ambiente 8088, così a parte la velocità il software opera come se fosse nella modalità "real" originale - solo PC. Ogni sistema virtuale ha il proprio address space di 1 MB, un'immagine delle routine hardware reali basic input/output system (BIOS) e l'emulazione di tutti gli altri registri e caratteristiche che si trovano in real mode.

La modalità virtual real è usata quando aprite una finestra DOS per far funzionare un programma DOS o Windows 3.x a 16 bit. Quando avviamo un'applicazione DOS, Windows crea un sistema DOS virtuale per farla funzionare. Una cosa da notare interessante è che tutti i processori Intel e Intel-compatibili (come AMD e VIA/Cyrix) si avviavano in modalità "real". Se caricate un sistema operativo a 32 bit, questo passa automaticamente il processore in modalità a 32 bit e prende il controllo da lì.

È inoltre importante notare che alcune applicazioni a 16 bit (DOS e Windows 3.x) si comportano male in ambiente a 32 bit, il che significa che fanno cose che persino la virtual real mode non supporta. I software diagnostici sono un perfetto esempio. Questi software non operano correttamente in una finestra real mode (virtual real) sotto Windows. In quel caso, potete ancora far girare il vostro moderno sistema nella modalità originale "real" avviando da floppy DOS o Windows 9x/ME o usando un CD o DVD autoavviante che contiene il software diagnostico.

Anche se le applicazioni DOS a 16 bit e quelle DOS standard usano la real mode, sono disponibili programmi speciali che estendono DOS e permettono l'accesso alla memoria estesa – oltre 1 MB. Questi a volte sono chiamati "DOS extender" e solitamente sono inclusi come parte di qualsiasi software DOS o Windows 3.x che li vuole usare. Il protocollo che descrive come far funzionare DOS in protected mode è stato chiamato DOS protected mode interface (DPMI).

Windows 3.x usava DPMI per accedere alla memoria estesa per l'uso con applicazioni Windows 3.x. Ciò permetteva a questi programmi di usare maggiore memoria sebbene fossero a 16 bit. I "DOS extender" sono molto popolari nei giochi DOS dato che consentono a questi di accedere a molta più memoria di sistema rispetto al megabyte standard che la maggior parte dei programmi real mode può indirizzare. Questi "DOS extender" lavorano facendo passare il processore avanti e indietro dalla "real mode". Quelli che operano sotto Windows usano l'interfaccia DPMI integrata nel sistema operativo, consentendo loro di condividere una porzione della memoria estesa del sistema.

Un'altra eccezione in real mode è che i primi 64 KB di memoria estesa sono attualmente accessibili al PC in real mode, nonostante si credesse non fosse possibile. Questo è il risultato di un bug nell'originale IBM AT rispetto alla ventunesima linea d'indirizzo, nota come A20 (A0 è la prima). Manipolando la linea A20, la real mode software può ottenere accesso ai primi 64 KB di memoria estesa - i primi 64 KB di memoria dopo il primo megabyte. Quest'area di memoria è chiamata high memory area (HMA).