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

WHDLoad og Memory Management Unit'en (MMU)

En MMU er indeholdt i de følgende processorer i 68000-familien: 68030, 68040, 68060. Der er også såkaldte EC-versioner af disse processorer, der har en fejlbehæftet MMU, der er ude af funktion. For eksempel har alle standard A4000/030 kun en 68EC030 CPU. På tredjeparts-acceleratorboards varierer dette; se i den pågældende dokumentation for at lære mere om dette. Så vidt vides, er alle 68040/68060'ere, der er bygget ind i en Amiga, fulde CPU'er, der indeholder en funktionel MMU. Dette skyldes, at Zorro III kræver MMU-mapping af I/O-rum. Skelnen mellem en fuld CPU og en EC-version kan ikke foretages af software. Derfor må brugeren gøre ette ved at sætte de rigtige optioner for WHDLoad.
For 68020'eren er der en ekstern MMU kaldet 68851, men denne er pt. ikke understøttet af WHDLoad.

Funktioner for en MMU og brug i WHDLoad

Hovedformålet for MMU'en er at oversætte logiske til fysiske adresser. Dette er påkrævet for virtuel hukommelse og separerede adresserum. En anden funktion er at specificere specielle egenskaber så som Kun Supervisor, Skrivebeskyttet og Caching-modus for hvert fysiske adresserum, konfigureret på en sidebasis, hvor en side i WHDLoad har en størrelse på 4096 bytes. WHDLoad bruger ikke logisk-til-fysisk oversættelse Men den bruger MMU'en til memory protection, cache management og nogle specielle funktioner så som Snooping og resload_Protect#?.

Hukommelsesbeskyttelse i WHDLoad

Ved opstart scanner WHDLoad den tilgængelige hukommelsesliste og bygger et oversættelses-træ, der inkluderer al tilgængelig hukommelse. Den markerer de følgende adresserum som gyldige og tilgængelige: $0...BaseMem (vha. informationen fra Slaven), $dff000...$dff200 (Brugerdefinerede registre), $bfd000...$bff000 (CIA registre) og hukommelse brugt af Slaven og WHDLoad. Hvis en Freezer bliver fundet i hukommelsen, vil hukommelsen brugt af Freezeren også blive markeret som gyldig. Al anden hukommelse er markeret som gyldig, og derfor vil hver adgang til et sådant område (Læsning eller Skrivning) skabe en Adgangsfejls-undtagelse, hvilket vil ende op i en passende fejlforespørger, oprettet af WHDLoad.

Brugerkontrol af MMU-håndteringen i WHDLoad

Der er 3 forskellige moduser, med hvilke WHDLoad påvirker en tilstedeværende MMU.
  1. ignorer MMU:
    I denne modus ændrer WHDLoad ikke nogen MMU-relaterede registre. Dette kan være nyttigt, hvis du har kørende programmer, der belaster MMU'en og du vil have funktionaliteten i disse programmer bevaret (for eksempel en software freezer så som TK).
    Advarsel: Fordi WHDLoad ikke selv kontrollerer MMU'en, kan en masse fejl være mulige. Disse problemer kan forårsage crashes, fejl i funktioner eller anden uforudsigelig, fejlagtig adfærd. Her er en liste over eksisterende ricisi:
  2. deaktiver MMU:
    I denne modus, hvilket kun er muligt på 68030, vil MMU'en blive slået fra af WHDLoad; ingen MMU-relaterede funktioner er tilgængelige.
  3. brug MMU:
    I denne modus taker WHDLoad fuld kontrol over MMU'en og realiserer hukommelsesbeskyttelse og cache-styring som forklaret ovenfor.
På 68030'eren er standard modus deaktiver MMU. På 68040/68060 er standard brug MMU. Der er to optioner til at kontrollere denne adfærd. MMU/S tvinger WHDLoad til at bruge MMU'en og er nødvendig på 68030-systemer for at få adgang til MMU-funktionerne. NoMMU/S deaktiverer WHDLoad's MMU-brug (ignorer MMU).

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


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