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é existeix l'anomenada versió EC (econòmica) d'aquests processadors que disposa d'una unitat MMU "falsa" sense funcionalitat. Per exemple, totes els A4000/030 estàndard disposen d'una CPU 68EC030. En plaques acceleradores de tercers això és diferent, 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 (degut al fet que el mode burst i el bus Zorro III requereixen 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 (no almenys en un temps acceptable). Per tant l'usuari ha de fer això 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 separats de memòria (per exemple en un sistema multiprocés protegit). Una altra característica es la d'especificar propietats especials com Solament Mode Supervisor, Protecció Contra Escriptura i Mode de Caché per a cada adreça física en l'espai d'adreces (basant-se en pàgines, on una pàgina utilitzada per WHDLoad consisteix en 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#?).

Protecció de memòria a WHDLoad

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.

Control per part de l'usuari de la gestió de MMU a WHDLoad

Hi ha 3 modes diferentes en què WHDLoad pot afectar una MMU :
  1. 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:
  2. 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.
  3. 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)