WHDLoad i la Unitat de Gestió de Memòria (MMU, Memory Management Unit)
Els següents processadors de la família 68k: 68030 , 68040, 68060 contenen una MMU. També existeixen les anomenades versions EC (econòmiques) d'aquests processadors que
disposen d'una MMU no funcional. Per exemple, tots els A4000/030 estàndard disposen d'una CPU 68EC030. En plaques acceleradores de tercers això varia, consulti
la documentació apropiada per a aprendre sobre aquest tema. Fins a on jo sé, tots els 68040/68060 utilitzats en Amiga són CPU's complertes que contenen una MMU funcional. Això és
degut a que el bus Zorro III requereix mapeig de l'espai d'E/S mitjançant MMU. La distinció entre una CPU complerta i una versió EC no pot fer-se per programari i per tant
l'usuari ha de fer-ho configurant les opcions correctes a WHDLoad.
Per al 68020 existeix una MMU externa anomenada 68851, però actualment no està suportada per WHDLoad.
Funcionalitats d'una MMU i el seu ús a WHDLoad
El propòsit principal de la MMU és traduir adreces lògiques a adreces físiques. Això es requereix per a la memòria virtual i espais d'adreces separats. Una altra característica és
per a especificar propietats especials com Solament Mode Supervisor, Protecció Contra Escriptura i Mode de Caché per a cada espai d'adreça física, configurat en base a pàgines,
on cada una a WHDLoad té un tamany de 4096 bytes. WHDLoad no empra la traducció d'adreces lògiques a físiques. Però sí utilitza la MMU
per a protecció de memòria, gestió de la caché i algunes funcionalitats especials (Snooping, resload_Protect#?).
Durant l'arrencada, WHDLoad recorre la llista de memòria i construeix un arbre de traducció que inclou tota la memòria accessible. Marca els següents espais d'adreces com vàlids i accessibles:
$0...BaseMem (usant la informació de l'Esclau), $dff000...$dff200 (registres Custom), $bfd000...$bff000 (registres CIA) i la memòria utilitzada per l'Esclau i WHDLoad. Si es troba un
Congelador en memòria (freezer), la memòria que utilitzi el congelador també serà marcada com a vàlida. Tota altra memòria serà marcada com a invàlida i per tant qualsevol accés a
aquesta àrea (Lectura o Escriptura) ocasionarà una Excepció de Falla d'Accés que acabarà amb el quadre de diàleg d'error apropiat creat per WHDLoad.
Hi ha 3 modes diferentes en què WHDLoad pot afectar una MMU :
Ignorar la MMU:
En aquesta mode WHDLoad no canviarà cap registre relacionat amb la MMU. Això pot ser útil si s'estant executant programes que modifiquen la MMU i es vol que la funcionalitat d'aquests programes
romangui intacta (per exemple un congelador per programari com TK).
Precaució: Atès que WHDLoad no pren control per sí mateix de la MMU, poden aparéixer un munt de problemes. Aquests problemes poden causar caigudes del sistema, mal funcionament o altres
comportaments inesperats. Aquí hi ha una llista dels riscos existents:
Executar Enforcer/CyberGuard o una eina similar congelarà/penjarà la màquina, atès que WHDLoad crearà una gran quantitat de Hits cada vegada que arrenqui/apagui el S.O.
Aquests Hits no són errors de WHDLoad sinó part d'una operació normal.
Les versions més noves de la 68060.library (començant per v41.1) remapejaran la memòria $0-$1000 (la primer pàgina) a una ubicació en memòria Fast emprant la MMU; en mode "ignorar la MMU"
aquesta traducció d'adreces romandrà intacta i si el programa instal·lat intenta utilitzar aquesta àrea per a qualsevol acció DMA (per ex. a causa de una copperlist en aquesta àrea)
els resultats no poden predir-se, atès que la CPU escriurà/llegirà la ubicació de memòria Fast mentre que els DMAs ho faran sobre la memòria Xip real que conté dades aleatòries.
Si el codi de MMU en execució usa qualsevol memòria (gestió d'excepcions, arbre de traducció, ...) dintre de BaseMem del programa instal·lat, ocasionarà una caiguda del sistema,
atès que la BaseMem serà sobreescrita durant l'execució del programa instal·lat
En general cada programa que canviï funcions bàsiques del sistema (emprant la MMU) pot entrat en conflicte amb WHDLoad ...
Desactivar la MMU:
En aquest mode, que és possible només en un 68030, la MMU serà desactivada per WHDLoad i no estaran disponibles funcionalitats relacionades amb la MMU.
Utilitzar la MMU:
En aquest mode WHDLoad prèn el control total sobre la MMU i realitza la protecció de memòria i gestió de la caché tal com s'ha explicat anteriorment
Al 68030 el mode per defecte és Desactivar la MMU. Als 68040/68060 el mode per defecte és utilitzar la MMU.
Es disposa de dos opcions per a controlar aquest comportament: MMU/S força WHDLoad
a emprar la MMU i és requerit en sistemes basats en 68030 per a utilitzar les funcionalitats de la MMU.
NoMMU/S desactiva l'ús de la MMU per part de WHDLoad (ignorar la MMU).
Un hit d'Enforcer és un hit d'Enforcer, punt. (Michael Sinz)