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

Το WHDLoad και η Memory Management Unit (MMU)

Μια MMU περιέχεται στους ακόλουθους επεξεργαστές της οικογένειας 68000: 68030, 68040, 68060. Υπάρχουν επίσης και οι λεγόμενες EC εκδόσεις αυτών των επεξεργαστών που έχουν ένα χαλασμένο, εκτός λειτουργίας MMU. Για παράδειγμα, όλες οι τυπικές A4000/030 έχουν μόνο έναν 68EC030 CPU. Σε επιταχυντές τρίτων αυτό είναι διαφορετικό, δείτε στις κατάλληλες οδηγίες για να μάθετε περισσότερα. Από όσο γνωρίζω, όλοι οι 68040/68060 που μπήκαν ποτέ σε Amiga είναι πλήρης CPU και περιέχουν ένα λειτουργικό MMU. Αυτό διότι η Zorro III απαιτεί απεικόνιση της MMU του χώρου Ι/Ο. Η διάκριση μεταξύ μιας πλήρης CPU και μιας έκδοσης EC δεν μπορεί να γίνει μέσω λογισμικού. Συνεπώς ο χρήστης πρέπει να το κάνει αυτό ορίζοντας τις κατάλληλες επιλογές για το WHDLoad.
Για τον 68020 υπάρχει μια εξωτερική MMU που ονομάζεται 68851, αλλά αυτό προς το παρόν δεν υποστηρίζεται από το WHDload.

Χαρακτηριστικά μιας MMU και η χρήση της στο WHDLoad

Ο κύριος σκοπός της MMU είναι να μεταφράζει λογικές διευθύνσεις σε φυσικές διευθύνσεις. Αυτό απαιτείται για εικονική μνήμη και ξεχωριστούς χώρους διευθύνσεων. Ένα άλλο χαρακτηριστικό είναι ο ορισμός ειδικών ιδιοτήτων όπως Supervisor Only, Write Protected και λειτουργία Caching για κάθε φυσικό χώρο διεύθυνσης, ρυθμισμένη με βάση σελίδας, όπου η σελίδα που χρησιμοποιείται στο WHDLoad έχει μέγεθος 4096 bytes. Το WHDLoad δεν χρησιμοποιεί μετάφραση λογικής σε φυσική διεύθυνση. Αλλά χρησιμοποιεί την MMU για προστασία μνήμης, διαχείριση προσωρινής μνήμης - cache και μερικά ειδικά χαρακτηριστικά (Παρατήρησης (Snooping), resload_Protect#?).

Προστασία μνήμης στο WHDLoad

Στην εκκίνηση, το WHDLoad σαρώνει τη λίστα μνήμης και δημιουργεί ένα δέντρο μετάφρασης που συμπεριλαμβάνει όλη τη προσβάσιμη μνήμη. Σημειώνει τους ακόλουθους χώρους διευθύνσεων ως έγκυρους και προσβάσιμους: $0...BaseMem (χρησιμοποιώντας τις πληροφορίες από το Slave), $dff000...$dff200 (ειδικοί καταχωρητές), $bfd000...$bff000 (καταχωρητές CIA) και τη μνήμη που χρησιμοποιείται από το Slave και το WHDLoad. Εάν βρεθεί πάγωμα στη μνήμη, η μνήμη που χρησιμοποιείται από το πρόγραμμα παγώματος θα σημειωθεί επίσης ως έγκυρη. Όλη η υπόλοιπη μνήμη σημειώνεται ως άκυρη, και συνεπώς κάθε πρόσβαση σε τέτοια περιοχή (Read ή Write) θα δημιουργήσει μια εξαίρεση Access Fault Exception που θα τερματίσει με ένα κατάλληλο επιλογέα σφάλματος που θα δημιουργηθεί από το WHDLoad.

Έλεγχος χρήστη του χειρισμού της MMU στο WHDLoad

Υπάρχουν 3 διαφορετικές λειτουργίες για το πως το WHDLoad επηρρεάζει μια MMU.
  1. παράβλεψη MMU:
    Σε αυτή την κατάσταση το WHDLoad δεν αλλάζει κανένα καταχωρητή που σχετίζεται με την MMU. Αυτό μπορεί να είναι χρήσιμο αν έχετε προγράμματα που χτυπούν την MMU να τρέχουν και θέλετε οι λειτουργίες αυτών των προγραμμάτων να παραμείνουν άθικτες (για παράδειγμα ένα πρόγραμμα παγώματος όπως το TK).
    Προειδοποίηση: Επειδή το WHDLoad δεν ελέγχει την MMU μόνο του είναι πιθανά πολλά προβλήματα. Αυτά τα προβλήματα μπορεί να προκαλέσουν δυσλειτουργίες, ή άλλες απρόβλεπτες συμπεριφορές. Παρακάτω είναι μια λίστα υπαρκτών ρίσκων:
  2. απενεργοποίηση MMU:
    Σε αυτή τη κατάσταση, που είναι δυνατή μόνο σε 68030, η MMU θα απενεργοποιηθεί από το WHDLoad, κανένα χαρακτηριστικό σχετικό με την MMU δεν θα είναι διαθέσιμο.
  3. χρήση MMU:
    Σε αυτή τη κατάσταση το WHDLoad παίρνει το πλήρη έλεγχο της MMU και πραγματοποιεί προστασία μνήμης και διαχείριση προσωρινής μνήμης (cache) όπως εξηγείται παραπάνω.
Στον 68030 η προεπιλεγμένη κατάσταση είναι απενεργοποίηση MMU. Στον 68040/68060 η προεπιλογή είναι χρήση MMU. Υπάρχουν δύο επιλογές για τον έλεγχο αυτής της συμπεριφοράς. MMU/S αναγκάζει το WHDLoad να χρησιμοποιήσει την MMU και απαιτείται σε συστήματα με 68030 για να ενεργοποιηθούν όλα τα χαρακτηριστικά της MMU. NoMMU/S απενεργοποιεί τη χρήση της MMU από το WHDLoad (παράβλεψη MMU).

Ένα χτύπημα Enforcer είναι ένα χτύπημα Enforcer, τέλος. (Michael Sinz)


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