[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]

WHDLoad e la Memory Management Unit (MMU)

L' MMU è contenuta nei seguenti processori della famiglia 68000: 68030, 68040, 68060. Esistono anche delle versioni chiamate EC di questi processori che possiedono una MMU "fuori servizio" (rotta o comunque malfunzionante e quindi disabilitata). Per esempio tutti i sistemi standard A4000/030 possiedono una CPU 68EC030. Nelle schede acceleratrici di terze parti le cose sono differenti, controlla la loro documentazione per saperne di più. Per quanto ne sappia, tutti i 68040/68060 mai utilizzati in un Amiga sono CPU complete che contengono una MMU funzionante (perché la modalità burst e Zorro III richiedono una mappatura dello spazio di IO fornita dalla MMU). La distinzione fra una CPU completa ed una in versione EC non può essere fatta via software. Pertanto l'utente deve farlo settando le opzioni corrette per WHDLoad.
Per il 68020 è disponibile una MMU esterna chiamata 68851, ma non è correntemente supportata da WHDLoad.

Caratteristiche di una MMU ed il suo utilizzo in WHDLoad

L'utilizzo principale della MMU è di tradurre indirizzi logici in indirizzi fisici. Questo è necessario per la memoria virtuale e spazi di indirizzamento separati. Un'altra caratteristica è di specificare proprietà speciali come Supervisore, Protetto in Scrittura e la modalità di caching per ogni spazio di indirizzamento fisico basato su pagine, dove una pagina in WHDLoad ha una dimensione di 4096 byte. WHDLoad non utilizza la traduzione da indirizzi logici a fisici. Invece utilizza la MMU per memoria protetta, gestione delle cache e alcune caratteristiche speciali (Snooping, resload_Protect#?).

La protezione della memoria in WHDLoad

All'avvio, WHDLoad analizza la memory list e costruisce un translation tree che include tutta la memoria accessibile. Imposta il seguente spazio di indirizzamento come valido e accessibile: $0...BaseMem (utilizzando le informazioni fornite dallo Slave), $dff000...$dff200 (registri Custom), $bfd000...$bff000 (registri Cia) e la memoria usata dallo Slave e WHDLoad. Se viene trovato un Freezer in memoria, la memoria utilizzata dal Freezer stesso viene anch'essa impostata come valida. Tutta la rimanente memoria viene marchiata come non valida, e pertanto ogni accesso a quest'area (in lettura o scrittura) causerà un Access Fault Exception che terminerà in un apposito requester d'errore creato da WHDLoad.

Controllo da parte dell'utente dell'utilizzo della MMU in HDLoad

Ci sono 3 modi differenti in cui WHDLoad può utilizzare la MMU.
  1. ignore MMU (ignora MMU):
    In questa modalità WHDLoad non cambierà nessun registro MMU. Questo può tornare utile se hai programmi in esecuzione che utilizzano la MMU e vuoi che le funzionalità di questi programmi rimangano inalterate (per esempio un Freezer software come TK).
    Attenzione: per il fatto che WHDLoad non controlla la MMU possono saltar fuori molti problemi. Questi problemi possono essere crash, malfunzionamenti o altre imprevedibili casualità. Di seguito una lista di possibili rischi:
  2. disable MMU (disabilita MMU):
    In questa modalità, che è posssibile solo su 68030, la MMU verrà disabilitata da WHDLoad, nessuna caratteristica della MMU sarà disponibile.
  3. use MMU (usa MMU):
    In questa modalità WHDLoad prende il pieno controllo della MMU ed attiva la memoria protetta e la gestione delle cache come spiegato sopra.
Nel 68030 la modalità di default (preselezionata) è disable MMU. Nei 68040/68060 il default è use MMU. Ci sono due opzioni per controllare questo modo di funzionare. MMU/S forza WHDLoad a usare la MMU ed è richiesto nei sistemi 68030 per ottenere le funzionalità della MMU. NoMMU/S disabilita l'utilizzo della MMU da parte di WHDLoad (ignore MMU).

An Enforcer hit is an Enforcer hit, period. (Michael Sinz)


[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]