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

WHDLoad et l'unité de gestion mémoire (MMU)

Le MMU se trouve sur les processeurs de la famille des 68000 suivants: MC68030, MC68040, MC68060. Il existe des versions EC de ces processeurs qui ont un MMU dont certaines fonctions sont inopérantes. Par exemple, sur les Amiga standards A4000/030, ceux-ci possèdent seulement un MC68EC030 CPU. Sur les 3ème parties de cartes accélératrices, ceci varie, renseignez-vous auprès de la documentation pour en savoir plus. A notre connaissance, tous les 68040/68060 construits dans les Amigas ont tous un MMU. Car le burstmode et le port Zorro III ont besoin d'un MMU pour reloger les mémoires entrées-sorties. La différence entre un CPU (avec MMU) et une version EC ne peut se faire par software. Par conséquent, l'utilisateur doit configurer lui-même WHDLoad avec l'option adéquate.
Pour les MC68020, il existe un MMU externe appelé MC68851, pour l'instant il n'est pas supporté par WHDLoad.

Caratéristiques du MMU et son utilisation dans WHDLoad

Le but principal du MMU est de traduire les adresses logiques en adresses physiques. Ceci est requis pour la mémoire virtuelle et pour séparer l'espace d'adressage. Une autre caractéristique est de spécifier des propriétés comme le mode "Supervisor Only", protection contre l'écriture et le mode "Cache" pour chaque adresse mémoire physique, configurés sur une page de base. WHDLoad utilise une taille de 4096 octets pour une page. WHDLoad ne transforme pas les adresses logiques en adresses physiques. Mais il utilise le MMU pour la protection de mémoire, la gestion des caches du CPU et d'autres caractéristiques (Snooping, resload_Protect#?).

Protection de la mémoire dans WHDLoad

Au début, WHDLoad scanne la liste de la mémoire et construit un arbre de traduction (translation tree) qui incluera toutes les mémoires accessibles. Il marque les adresses de mémoires suivantes comme valides et accessibles : $0...BaseMem (en utilisant les informations du Slave), $dff000...$dff200 (canaux DMA), $bfd000...$bff000 (registres CIA) et la mémoire utilisée par le Slave et WHDLoad. Si un débugger est trouvé dans la mémoire, celle-ci sera valide. Toutes les autres mémoires seront notées comme invalide, et donc chaque accès dans ces mémoires (en lecture ou écriture) produira un "Access Fault Exception" qui quittera avec un message d'erreur approprié créé par WHDLoad.

Contrôle du MMU dans WHDLoad par l'utilisateur

Il y 3 modes différents où WHDLoad affecte un MMU existant.
  1. ignore MMU:
    Dans ce mode, WHDLoad ne change aucun registre du MMU. Ceci peut être utile si vous avez un programme qui modifie le MMU et que vous voulez que le fonctionnement du programme reste intact (par exemple un debuggeur comme TK).
    Attention: parce que WHDLoad ne contrôle plus le MMU lui-même, certains problèmes peuvent arriver. Ces problèmes peuvent causer des effondrements du système et d'autres dysfonctionnements imprévisibles. Voici une liste des risques qui existent:
  2. disable MMU:
    Dans ce mode, cette fonction n'est seulement possible qu'avec un 68030, le MMU sera inactif, aucune caratéristique du MMU ne sera disponible.
  3. use MMU:
    Dans ce mode, WHDLoad prend le contrôle total du MMU et réalise la protection de la mémoire et la gestion des caches du CPU comme expliqué ci-dessus.
Pour un 68030, le mode par défaut est disable MMU. Pour un 68040 ou 68060, par defaut, ce sera use MMU. Il y a 2 options pour contrôler le MMU. MMU/S active le MMU et doit être utilisé sur des systèmes 68030 pour activer le fontionnement du MMU. NoMMU/S désactive le MMU.

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


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