[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]
WHDLoad a Memory Management Unit (MMU)
MMU je v následujících procesorech 68000 rodiny: MC68030,
MC68040, MC68060. Existují také takzvané EC verze procesoru, které mají
nefunkční MMU. Např. všechny standartní A4000/030 mají MC68EC030 CPU.
Na turbokartách se to liší (informujte se v jejich dokumentaci). Pokud vím,
všechny existující 68040/68060 jsou plnohodnotná CPU s funkčním MMU,
protože Zorro III požaduje mapování MMU celého IO prostoru. Rozdíl mezi plnou
verzí a EC verzí CPU je, že MMU nemůže být nahrazeno softwarem. Uživatel tedy
musí uživatelskou kontrolu MMU pro WHDLoad nastavit ručně.
Pro MC68020 je externí MMU MC68851, ale WHDLoad ho v současnosti nepodporuje.
Schopnosti MMU a použití ve WHDLoad
Hlavní účel MMU je přeložit logické adresy na fyzické. Je to třeba pro virtuální
paměť a oddělené adresové prostory. Další schopnost je zadat zvláštní vlastnosti
jako supervisor Only, Write Protected a Caching mod pro každou fyzickou adresu/místo,
nakonfigurovat na bázi stránkování, kde stránka používaná WHDLoadem má velikost 4096 bajtů.
WHDLoad nepoužívá překlad logická->fyzická adresa. Ale
používá MMU pro ochranu paměti, cache management
a speciální schopnost (Snooping, resload_Protect#?).
Na začátku WHDLoad scanuje list paměti a vytvoří translation tree, který obsahuje
univerzálně přístupnou paměť. Označí následující adresový prostor jako legální
a přístupný: $0...BaseMem (velikost určena ve slave), $dff000...$dff200 (Custom registry),
$bfd000...$bff000 (Cia registry) a paměť použitá slavem a WHDLoad. Pokud je v paměti
nalezen freezer, paměť, kterou používá, bude také legální. Všecnha ostatní paměť
je nelegální a každý přístup do ní vytvoří vyjímku Access Fault, která skončí
příslušným chybovým hlášením WHDLoadu.
Jsou tři odlišné módy, jak WHDLoad ovlivňuje existující MMU.
- ignorovat MMU:
V tomto módu WHDLoad nevytvoří žádný MMU registr, to se hodí pro programy,
které nemají opravené chyby a MMU jim nedovoluje pokračovat v běhu. Patří mezi
ně i freezer TK.
Varování: protože WHDLoad neovládá MMU sám, mohou se vyskytnout problémy - sekání,
nefunkčnost... tady je seznam problemů, o kterých víme:
- běžící Enforcer/CyberGuard nebo podobná utilita sekne stroj, protože WHDLoad
vytvoří řadu chyb, když přepíná do OS a zpět. Tyto chyby ale nejsou nedostatky
WHDLoad, ale část normální operace.
- novější verze 68060.library (od v41.1) remapují paměť $0-$1000 (první stránka)
do fast RAM lokace pomocí MMU, v "ignorovacím módu" tento překlad adres zůstane
nedotčený. Pokud tuto oblast používá nainstalovaný program pro DMA akce - copperlist, atd.
výsledky jsou nevypočitatelné, protože CPU zapisuje do Fast RAM, ale data obsahuje
Chip RAM.
- jestli běžící MMU používá nějakou paměť (handler vyjímek, translation tree)
uvnitř BaseMem nainstalovaného programu, může se seknout, protože BaseMem bude přepsána
v běhu instalovaného programu.
- v podstatě každý program, který mění základní funkce systému pomocí MMU,
může s WHDLoad vejít do konfliktu.
- vypnout MMU:
Tento mód je možný jen na 68030. WHDLoad MMU vypne a žádná z jeho MMU možností
nebude k dispozici.
- použít MMU:
V tomto modu WHDLoad přebírá kontrolu nad MMU a umožňuje ochranu paměti a
cache management jak jsem vysvětlil níže.
Na 68030 je standartně MMU vypnuto. Na 68040/68060 je zapnuto. Změnit se to
dá pomocí MMU/S (aktivuje MMU, na 68030 musí být zapnuta)
NoMMU/S MMU vypne.
[Main]
[Docs]
[Installs]
[Search]
[Team]
[Guestbook]
[Links]