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

WHDLoad og Memory Management 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 management 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:
  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)


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