[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.
- 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:
- bežiaci Enforcer/CyberGuard alebo podobný
program zamrzne stroj, pretože WHDLoad vytvorí množstvo Hits vždy, keď
prepína do OS a späť. Tieto chyby ale nie sú nedostatky WHDLoad, ale sú
súčasťou normálnej operácie.
- novšie verzie 68060.library (od v41.1)
remapujú pamäť $0-$1000 (prvá stránka) do Fast RAM pomocou MMU, pri
ignorovaní MMU tento preklad adries zostane nedotknutý. Ak túto oblasť
používa nainštalovaný program pre DMA akcie - copperlist, atd. následky
sú nevypočitateľné, pretože CPU číta/zapisuje Fast RAM oblasti, kým DMA
používa reálnu Chip RAM, ktorá obsahuje náhodné dáta.
- ak bežiace MMU závisí na ovládači výnimiek
("Access Fault" výnimka), voľba NoTrapHandler/S
musí byť zapnutá, inak akákoľvek výnimka bude spracovaná programom
WHDLoad, ktorý ukončí nainštalovaný program v prípade nechcených chýb.
- ak bežiace MMU používa akúkoľvek pamäť
(ovládač výnimiek, translation tree...) vo vnútri BaseMem nainštalovaného
programu, môže zamrznúť, pretože BaseMem bude prepísaná počas behu
nainštalovaného programu (dočasne).
- v podstate každý program, ktorý mení
základné funkcie systému pomocou MMU, môže vojsť do konfliktu
s programom WHDLoad.
- 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.
- 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]