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

WHDLoad a Memory Management Unit (MMU)

MMU sa nachádza v nasledujúcich procesoroch rodiny 68k: MC68030, MC68040, MC68060. Existujú tiež takzvané EC verzie procesorov, ktoré majú MMU nefunkčné. Napr. všetky štandartné A4000/030 majú MC68EC030 CPU. Na turbokartách je situácia odlišná (pozrite sa do manuálu od týchto kariet). Pokiaľ je mi známe, všetky existujúce 68040/68060 obsahujú plnohodnotné CPU s funkčným MMU (pretože burst mód a Zorro 3 vyžadujú MMU na mapovanie IO priestoru). MMU nemôže byť nahradené softwarovo.
Preto by užívateľ mal zvoliť správne nastavenie ako bude WHDLoad nakladať s MMU.
Pre MC68020 existuje externé MMU MC68851, ale WHDLoad ho v súčasnosti nepodporuje.

Schopnosti MMU a ich použite vo WHDLoad

Hlavným účelom MMU je preložiť logické adresy na fyzické. Je to potrebné kvôli virtuálnej pamäti a oddeleným adresným priestorom (napr. v chránenom multi-procesovom systéme). Ďalšou schopnosťou je nastavenie špeciálneho režimu ako Supervisor Only, Write Protected a Caching mód pre každý fyzický adresný priestor (BasePage, kde stránka použitá vo WHDLoad má veľkosť 4096 bajtov). WHDLoad nepoužíva preklad typu logická->fyzická adresa. Používa však MMU na ochranu pamäti, cache management a niektoré špeciálne schopnosti (Snooping, resload_Protect#?).

Ochrana pamäte vo WHDLoad

WHDLoad po spustení prehľadá list pamäte a vytvorí prekladovú štruktúru (translation tree), ktorá obsahuje prístupnú pamäť. Označí nasledujúce adresné priestory ako platné a prístupné: $0...BaseMem (použitím informácie zo Slave), $dff000...$dff200 (Custom registre), $bfd000...$bff000 (Cia registre) a pamäť použitá programom WHDLoad a Slave. Ak je v pamäti nájdený freezer, pamäť, ktorú používa, bude tiež označená ako platná. Ostatná pamäť je označená ako neplatná a každý prístup do takej oblasti (či už čítanie alebo zapisovanie) vytvorí výnimku Access Fault, ktorá skončí príslušným chybovým hlásením programu WHDLoad.

Užívateľská kontrola práce MMU vo WHDLoad

Existujú 3 rozličné spôsoby ako WHDLoad ovplyvňuje MMU.
  1. ignorovanie MMU:
    V tomto móde WHDLoad nemení žiadny register spojený s MMU. To sa hodí pre programy, ktoré sú v konflikte s MMU a užívateľ chce, aby funkčnosť takých programov zostala zachovaná. Patrí medzi ne i freezer TK.
    Varovanie: pretože WHDLoad neovláda MMU sám, môžu sa vyskytnúť množstvo problémov - mrznutie, zlyhanie, neočakávane správanie... tu je zoznam známych problémov:
  2. vypnutie MMU:
    Tento mód je možný len na 68030. WHDLoad MMU vypne a žiadna z jeho MMU možností nebude k dispozícii.
  3. použitie MMU:
    V tomto móde WHDLoad preberá plnú kontrolu nad MMU a umožňuje tak ochranu pamäte a cache management tak, ako bolo vysvetlené vyššie.
Na 68030 je MMU štandartne vypnuté. Na 68040/68060 je zapnuté. Sú dve voľby, ktoré menia toto nastavenie. Voľba MMU/S prikáže programu WHDLoad, aby použil MMU. Táto voľba vyžadovaná na 68030 systémoch. Voľba NoMMU/S vypne použitie MMU programom WHDLoad (MMU bude ignorované).

An Enforcer hit is an Enforcer hit, period. (Michael Sinz)

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