WHDLoad og MMU'en

### WHDLoad og Memory Managment Unit'en (MMU)

Der findes en MMU i de følgende processorer i 68000 familien: 68030, 68040, 68060. Der er også såkaldte EC versioner af disse processorer som har en ødelagt MMU der ikke virker. For eksempel har alle standard A4000/030 kun en 68EC030 CPU. På tredje parts accelerator kort er dette forskelligt. Se i dokumentationen for at finde ud af dette. Så vidt jeg ved er alle 68040/68060 der nogen sinde er bygget ind i en Amiga fulde CPU'er med en fungerende MMU (fordi burstmode og Zorro III krævet MMU mapping af IO område). Det er ikke muligt at differentiere mellem en fuld CPU og en EC version vha software (ihvertilfald ikke i en acceptabel tid). Derfor må brugeren selv gøre dette ved at sætte de rigtige instillinger for WHDLoad.
For 68020'eren er der en extern MMU kaldet 68851, men denne supporteres i øjeblikket ikke af WHDLoad.

#### En MMU's muligheder og brugen i WHDLoad

Hovedårsagen for en MMU er at oversætte logiske adresser til fysiske. Dette er nødvendigt for virtuel hukommelse og seperate addresse områder (for eksempel i et beskyttet multi processor system). En anden feature er at specificere specielle indstillinger såsom Supervisor Only, Skrive beskyttet og caching mode for hvert enkel fysiske adresse område (baseret på en side, hvor en side i WHDLOad har en størrelse på 4096 bytes). WHDLoad bruger ikke logisk til fysisk adresse oversættelse. Men den bruger MMU'en til memory protection, cache managment og nogle specielle features (Snooping, resload_Protect#?).

#### Memory protection i WHDLoad

Ved opstart scanner WHDLoad hukommelses listen og vil bygge et oversættelses træ som indeholder al tilgængelig hukommelse. Den markerer de følgende adresse områder valide og tilgængelige: $0...BaseMem (bruger information fra Slaven), $dff000...$dff200 (Custom registre), $bfd000...$bff000 (Cia registre) og hukommelsen der bruges af Slaven og WHDLoad. Hvis en Freezer bliver fundet i hukommelsen vil den hukommelse Freezeren bruger også blive markeret valid. Al anden hukommelse markeres som invalid, og derfor vil hver adgang til et sådannet område (læse eller skrive) resultere i en Access Fault Exception som vil resultere i en passende error requester lavet af WHDLoad.

#### Bruger kontrol af MMU håndtering i WHDLOad

Der er 3 forskellige måder hvorpå WHDLOad påvirker en eksisterende MMU.

1. ignorér MMU:
   På denne måde ændrer WHDLOad ikke nogen MMU relaterede registre. Dette kan være brugbart hvis du kører programmer som hamrer løs på MMU'en og du vil have fuktionaliterne af disse programmer til at være bibeholdt intakte (f.eks. en software Freezer såsom TK).
   Advarsel: Fordi WHDLoad ikke kontrollerer selve MMU'en kan der opstå en masse problemer. Disse problemer kan resultere i nedbrud, funktionsfejl eller andre uforudsete opførsler. Her er en liste af eksisterende risici:
   - køre Enforcer/CyberGuard eller et lignende værktøj vil låse/crashe maskinen, fordi WHDLoad vil lave en masse Hits hver gang den skifter starter eller stopper OS'et. Disse Hits er ikke WHDLoad fejl men en del af en normal operation.
   - nye versioner af 68060.library'et (startende fra v41.1) vil omrokere hukommelsen $0-$1000 (den første side) til et Fast memory område ved hjælp af MMU'en, i "ignore MMU" mode vil denne adresse omrokering blive bibeholdt intakt hvis det installerede program forsøger at bruge dette område for DMA aktioner (f.eks. en Copperlist i dette område) vil resultatet ikke kunne forudsiges fordi CPU'en vil læse/skrive i Fast memory området mens DMA'ens rigtige Chip hukommelse indeholder tilfældige data.
   - Hvis det kørende MMU indehold afhænger af dens exception handler ("Access Fault") exception skal indstillingen NoTrapHandler/S være aktiveret ellers vil enhver fejl der opstår blive håndteret WHDLoad som vil afslutte det installerde program hvis noget uønsket skulle ske
   - hvis det kørende MMU indhold bruger noget hukommelse (exception handler, translation tree, ...) indeni BaseMem'en af det installerde program kan den måske bryde ned, fordi BaseMem'en vil blive overskrevet under eksekveringen af det installerede program (midlertidigt)
   - generelt vil ethvert program der ændrer basale funktioner i systemet ved hjælp af MMU'en) kunne konflikte med WHDLOad...
2. slå MMU'en fra:
   I denne mode, som kun er mulig på 68030, vil MMU'en blive sået fra af WHDLOad. Herefter vil ingen MMU relaterede features være tilgængelige,
3. bruge MMU:
   I denne mode tager WHDLoad fuld kontrol over MMU'en og indfører memory protection and cache management som forklaret ovenover.

På 68030'eren er den normale mode disable MMU. På 68040/68060'erne er den normale mode use MMU. Der er to indstillinger til at kontrollere denne opførsel. MMU/S tvinger WHDLoad til at bruge MMU'en og er påkrævet på 68030 systemer for at få fat i MMU features. NoMMU/S slår WHDLoads brug af MMU'en fra (ignore MMU).

Et Enforcer hit er et Enforcer hit, punktum. (Michael Sinz)