WHDLoad a Memory Managment Unit (MMU)
MMU je v nasledujicich procesorech 68000 rodiny: MC68030,
MC68040, MC68060. Existuji take takzvane EC verze procesoru, ktere maji
nefunkcni MMU. Napr. vsechny standartni A4000/030 maji MC68EC030 CPU.
Na turbokartach se to lisi (informujte se v jejich dokumentaci). Pokud vim,
vsechny existujici 68040/68060 jsou plnohodnotna CPU s funkcnim MMU (protoze
burst mod a Zorro 3 vyzaduji MMU pro mapovani IO). MMu nemuze byt nahrazeno
softwarove.
Pro MC68020 je externi MMU MC68851, ale WHDLoad ho v soucasnosti nepodporuje.
Schopnosti MMU a pouziti ve WHDLoad
Hlavni ucel MMU je prelozit logicke adresy na fyzicke. Je to treba pro virtualni
pamet a oddelene adresove prostory (napr. v multi vykonnem systemu). Dalsi
schopnost je zadat zvlastni proporce jako Supervisor Only, Write Protected a Caching mod
pro kazdou fyzickou adresu/misto (na podstate stranek, kde stranka pouzita ve WHDLoad
ma velikost 4096 bajtu). WHDLoad nepouziva preklad logicka->fyzicka adresa. Ale
pouziva MMU pro ochranu pameti, cache managment
a specialni schopnost (Snooping, resload_Protect#?).
Ochrana pameti ve WHDLoad
Na zacatku WHDLoad scanuje list pameti a vytvori translation tree, ktery obsahuje
univerzalne pristupnou pamet. Oznaci nasledujici adresovy prostor jako legalni
a pristupny: $0...BaseMem (velikost urcena ve slave), $dff000...$dff200 (Custom registry),
$bfd000...$bff000 (Cia registry) a pamet pouzita slavem a WHDLoad. Jestli je v pameti
nalezen freezer, pamet kterou pouziva bude take legalni. Vsechna ostatni pamet
je nelegalni a kazdy pristup do ni vytvori vyjimku Access Fault, ktera skonci
prislusnym chybovym hlasenim WHDLoadu.
Uzivatelova kontrola MMU ve WHDLoad
Jsou tri odlisne mody, jak WHDLoad ovlivnuje existujici MMU.
- ignorovat MMU:
V tomto modu WHDLoad nevytvori zadny MMU registr, to se hodi pro programy,
ktere nemaji opravene chyby a MMU jim nedovoluje pokracovat v behu. Patri mezi
ne i freezer TK.
Varovani: protoze WHDLoad neovlada MMU sam, mohou se vyskytnout problemy - sekani,
nefunkcnost... tady je seznam problemu, o kterych vime:
- bezici Enforcer/CyberGuard nebo podobna utilita sekne stroj, protoze WHDLoad
vytvori radu chyb, kdyz prepina do OS a zpet. Tyto chyby ale nejsou nedostatky
WHDLoad, ale cast normalni operace.
- novejsi verze 68060.library (od v41.1) remapuji pamet $0-$1000 (prvni stranka)
do fast RAM lokace pomoci MMU, v "ignorovacim modu" tento preklad adres zustane
nedotceny. Pokud tuto oblast pouziva nainstalovany program pro DMA akce - copperlist, atd.
vysledky jsou nevypocitatelne, protoce CPU zapisuje do Fast RAM, ale data obsahuje
Chip RAM.
- jestli bezici MMU zalezi na handleru vyjimek ("Access Fault"
vyjimka), volba NoTrapHandler/S
musi byt zapnuta, jinak jakakoliv vyjimka bude prevzata WHDloadem a ten ukonci
nainstalovany program v pripade nechtenych chyb.
- jestli bezici MMU pouziva nejakou pamet (handler vyjimek, translation tree)
uvnitr BaseMem nainstalovaneho programu, muze se seknout, protoze BaseMem bude prepsana
v behu instalovaneho programu.
- v podstate kazdy program, ktery meni zakladni funkce systemu pomoci MMU,
muze s WHDLoad vejit do konfliktu.
- vypnout MMU:
Tento mod je mozny jen na 68030. WHDLoad MMU vypne a zadna z jeho MMU moznosti
nebude k dispozici.
- pouzit MMU:
V tomto modu WHDLoad prebira kontrolu nad MMU a umoznuje ochranu pameti a
cache management jak jsem vysvetlil nize.
Na 68030 je standartne MMU vypnuto. Na 68040/68060 je zapnuto. Zmenit se to
da pomoci MMU/S (aktivuje MMU, na 68030 musi byt zapnuta)
NoMMU/S MMU vypne.