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 management
og nogle specielle features (Snooping, resload_Protect#?).
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.
Der er 3 forskellige måder hvorpå WHDLOad påvirker en eksisterende MMU.
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...
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,
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 brugeMMU'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)