Sto leggendo "L'anima di una nuova macchina" di Tracy Kidder in cui un team di Data General progetta una nuova macchina (nome in codice "Eagle", in seguito chiamato MV / 8000). È un'estensione a 32 bit di un'architettura precedente (Eclipse a 16 bit). Uno dei temi ruotanti sembra essere quello di non voler creare una macchina con un bit di modalità e che ci sono riusciti.
Tuttavia, lascia fuori il modo in cui questo è tecnicamente realizzato, e non si capisce nemmeno perché sia stato così attraente creare una macchina senza un po 'di modalità. Il libro non è un libro tecnico, quindi potrebbe essere che i dettagli fossero in qualche modo distorti. Tuttavia, hai la sensazione di leggere quel libro che una soluzione "mode bit" era comune (e quindi fattibile) al momento, ma era ritenuta poco attraente dagli ingegneri forse per ragioni estetiche. Il libro fa anche sembrare un compito immensamente difficile creare un design senza un po 'di modalità, che è stato in qualche modo superato da questo particolare team.
Ho trovato questa descrizione di come è stato realizzato:
http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt
Sembra fondamentalmente di usare una parte inutilizzata dello spazio del codice operativo per le nuove istruzioni. Devo ammettere di essere rimasto un po 'deluso dal fatto che fosse "solo quello". Inoltre penso che questo lasci ancora alcune domande senza risposta:
Innanzitutto, come vivevano i processi a 16 bit nello spazio degli indirizzi a 32 bit? Perché penso che questa sia la sfida chiave nel realizzare un'estensione a 32 bit "senza un bit di modalità". L'estensione del set di istruzioni, d'altra parte, è un'impresa relativamente comune. Dal momento che non esiste una descrizione di come sia successo, si potrebbe presumere che il codice a 16 bit acceda semplicemente alla memoria come sempre, forse vede qualche tipo di vista virtualizzata / bancata della memoria (con i nuovi registri della CPU che controllano dove si trova il primo indirizzo) o qualcosa del genere. Ma non so se c'è di più. In quel caso si potrebbe sostenere che una sorta di "modalità bit" fosse una soluzione. I processi in modalità 16 bit potrebbero essere eseguiti in parallelo con gli altri processi in virtù delle funzioni speciali aggiunte alla CPU.
In secondo luogo, perché è stato così attraente creare una macchina senza un po 'di modalità? Molti dei vantaggi propagandati nel libro sono che i clienti volevano eseguire il vecchio software. Ma questo non sembra parlare contro un bit di modalità, poiché l'intero scopo dell'uso di un bit di modalità è di avere una retrocompatibilità. Quando AMD ha esteso x86 a 64 bit, almeno secondo la mia comprensione della parola "bit modalità" ciò che hanno fatto è stato esattamente quello di aggiungere un bit modalità. Un bit speciale che renderebbe la CPU in modalità 64 bit. E un altro bit che farebbe eseguire un processo in una "modalità secondaria" della modalità a 64 bit (per consentire la compatibilità con le applicazioni a 32 bit). L'essenza della sottomodalità è che la CPU interpreta il flusso di istruzioni come le vecchie istruzioni a 32 bit ma che gli accessi alla memoria a 32 bit effettuati vengono risolti utilizzando il nuovo formato di tabelle di pagine (impostato dal sistema operativo a 64 bit) e infine mappato all'intero spazio degli indirizzi fisici. Inoltre, il codice a 32 bit può essere preceduto dal codice a 64 bit. Come la soluzione Data General, anche questo ha permesso a un programma a 32 bit di funzionare con programmi a 64 bit (16 bit contro 32 bit nel caso DG). Quindi dal punto di vista del cliente non sembra esserci alcuna differenza. Quindi l'unico vantaggio potrebbe essere stato nell'implementazione, semplificando il design, ma il libro non sembra che questo sia il problema, dal momento che il bit della modalità sembrava essere comune anche a quel tempo (e sembra che le architetture successive abbiano anche impiegato come mostra il caso x64).
Sono sicuro che ci sia qualcosa che mi è sfuggito, quindi sarebbe bello se qualcuno potesse discutere di più sui dettagli tecnici e sulle virtù di questo design "no mode-bit".