MMU
Inhaltsverzeichnis
MMU - Memory Management Unit
Eine MMU verwaltet den Verfügbaren Arbeitsspeicher eines Computer System. Im Falle einer 8 Bit CPU, die einen sehr eingeschränkten Adressraum hat, wird durch den Einsatz einer MMU der Adressraum stark erweitert. Der Adressraum einer Motorola 6809 CPU ist auf 64K beschränkt, man spricht vom logischen Adressraum. Die MMU hingegen hat einen viel größeren Adressraum von mehreren MB, das bezeichnet man als physischen Adressraum.
Die Idee hinter der MMU ist es, den logischen Adressraum der CPU in kleine Blöcke zu teilen. Jeder Block kann dann irgendwo im physischen Adressraum verschoben werden. Damit steht der gesamte physikalische Adressraum im Zugriff der CPU, natürlich nur Stückweise.
Je kleiner die Größe eines Blocks gewählt wird, desto flexibler kann die Sicht auf den physikalische Adressraum gestaltet werden. Allerdings vergrößert sich der Verwaltungsaufwand, je kleiner die Blockgröße gewählt wird.
Jeder Speicherzugriff der CPU ist immer ein Zugriff in den logischen Adressraum (64K).
Die MMU rechnet jeden Speicherzugriff um, von der logischen Adresse zur physikalischen Adresse.
Die Umsetzung von logischer auf physikalischer Adresse erfolgt durch ein sehr schnelles RAM, das 'Mapping RAM' (MRAM).
Das ist insbesondere bei einer 3MHz CPU eine ziemliche Herausforderung.
Motorola MMU 6829
Für die Motorola CPU 6809 gibt es einen passenden Chip, die Motorola MMU 6829 (näheres dazu siehe: MMU-6829).
Die MMU-6829 hat einen physikalischen Adressraum von 2MB (21 Bit).
Der physikalische Adressraum ist in 1024 Seiten (Pages) zu je 2K (Page $000 bis $3FF) unterteilt.
Die CPU hat einen logischen Adressraum von 64KB (16 Bit). Der logische Adressraum ist unterteilt in 32 Blöcke von je 2K.
Die MMU-6829 kann 4 Memory MAPs abbilden (4 Tasks). Das Mapping RAM kann von der CPU lesend und schreibend zugegriffen werden.
Die MMU-16
Die MMU 6829 ist heutzutage sehr schwer zu bekommen. Deswegen wurde die MMU-16 entwickelt. Näheres dazu siehe: MMU-16.
Die MMU-16 ist weitgehend kompatibel zur Motorola 6829.
Allerdings hat die MMU-16 ein größeres Mapping RAM (2x 8KB).
Damit unterstützt die MMU-16 bis zu 256 Tasks.
Zudem hat das MRAM gleich 16 Bit (statt nur 10 Bit bei der 6829). Von den 16 Bit werden 13 Bit für die physikalische Adresse verwendet Damit kann die MMU-16 einen größeren physikalischen Adressraum verwalten (bis zu 16MB). Die restlichen 3 Bit steuern den Speicher Zugriff (lesen, schreiben, ausführen). Damit kann man zum Beispiel eine RAM Seite auf lesenden Zugriff beschränken, sodass es für die CPU wie ROM aussieht.
Die Benutzung der MMU
Memory MAP
Inbetriebnahme
Das Betriebssystem
Zum Einsatz kommt NitrOS9 Level II. Die Basis dafür ist der Quellcode des NitrOS9 für den Tandy CoCo-III. Das NitrOS9 wird angepasst auf die im vorigen Kapitel beschriebene Hardware Plattform (NitrOS9 SBC).
Reset Modus
Durch einen Hardware Reset wird in der MMU das Reset Bit gesetzt. Die MMU ist dann in einem speziellen Modus: Reset Modus
Das Reset Bit ist notwendig, weil das Mapping RAM nach dem einschalten einen nicht definierten Inhalt hat. Dadurch wäre das ganze System in einem undefinierten Zustand und könnte nicht richtig gestartet werden.
Zusammenfassung Reset Bit:
- das Reset Signal setzt das Reset Bit, die MMU ist im Reset Modus
- im Reset Modus ist das Mapping RAM inaktiv, alle physikalischen Adressleitungen sind high
- im Reset Modus kann das Mapping RAM beschrieben werden, wie im SU Modus
- das Reset Bit wird zurück gesetzt, sobald man da OP-Key Register beschreibt
System Modus
Durch einen Interrupt (Hardware oder Software Interrupt) wird in der MMU das System Bit gesetzt. Die MMU wechselt dadurch automatisch in den System Modus (oder auch Super User Modus). Solange das System Bit gesetzt ist, ist die MMU immer Task# 0 (System Task). Die Memory Map ist die System Map und die MMU Register sind im Zugriff. Normalerweise wird nun Betriebssystem Code ausgeführt. Das System Bit wird zurückgesetzt, indem man einen Task Wechsel zu einem Benutzer Task durchführt.
Zusammenfassung System Bit:
- ein Interrupt setzt das System Bit, die MMU wechselt in den System Modus
- im System Modus ist immer der Task# 0 (System Task) aktiv
- im System Modus ist die System Memory Map aktiv
- im System Modus ist hat man Zugriff auf die MMU Register und das Mapping RAM
- das System Bit wird zurück gesetzt, sobald man das FUSE Register beschreibt und der FUSE Counter null erreicht
Benutzer Modus
Der Benutzermodus ist quasi der 'Normalbetrieb'. Die CPU führt einen Benutzer Task aus und ist auf die eingestellte Memory MAP beschränkt. Die MMU Register und das Mapping RAM sind nicht im Zugriff, ja sogar vollkommen unsichtbar. Der MMU Speicherbereich ist komplett nutzbar durch die eingestellte Page.
Im Benutzermodus kann das OS aufgerufen werden durch einen Software Interrupt (SWI Befehl).
Hardware Interrupts werden durch das OS bedient. Es funktioniert im Prinzip genau wie ein Taskwechsel.
DMA Zugriffe funktionieren auch ohne Hilfe des OS. Während eines DMA Zugriff wechselt die MMU automatisch in den Task# 1. Die externe Hardware 'sieht' die Memory MAP der Task# 1 die durch das OS konfiguriert wurde.
Start Sequenz
Nach einem Reset fetched die CPU den RESET Vektor von der logischen Adresse $FFFE und führt den Code aus. Die MMU ist nach einem System RESET im Reset Modus. Die Adressleitungen PA11 bis PA23 sind high, daher wird der Reset Vektor gelesen von der physischen Adresse $FFFFFE in der obersten Page (Page 8191). Es läuft privilegierter Code, die MMU Konfig Register sind sichtbar an der Adresse $FF00 bis $FF7F.
Das erste was die CPU nun zu tun hat, ist die Konfiguration der MMU. Sonst hat man keinen Zugriff außerhalb der Page 8191. Die MMU bekommt nun die Konfiguration unter der NitrOS9 laufen kann. Dann wird der Kern Code gestartet. Je nach Art des NitrOS9 ist entweder das gesamte OS im ROM (20K) oder nur der Kern (4K).
Konfiguration der MMU nach einem Reset:
- der Access Key ($FF4A) wird auf Task# 0 gestellt
- das Mapping RAM für Task# 0 wird beschrieben ($FF00 bis $FF3F)
- das Key Value Register KV-0 ($FF40) wird beschrieben, das beende den Reset Modus und aktiviert das Mapping
- nun kann die Kontrolle dem OS übergeben werden
News
- 09.06.2022 --
Downloads