[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#?).

Ochrana paměti ve WHDLoad

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.

Uživatelova kontrola MMU ve WHDLoad

Jsou tři odlišné módy, jak WHDLoad ovlivňuje existující MMU.
  1. 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:
  2. vypnout MMU:
    Tento mód je možný jen na 68030. WHDLoad MMU vypne a žádná z jeho MMU možností nebude k dispozici.
  3. 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]