MMU 8722

Da der Prozessor 6502 einen 16 Bit breiten Adreßbus besitzt, kann er höchstens 65536 Bytes RAM direkt ansprechen. Beim C64 mit seinen 64 KByte RAM zuzüglich der 20 KByte ROM für Betriebssystem und Zeichensatz war der Prozessor also bereits an seinem Limit angelangt, wobei man hier schon ein wenig tricksen mußte um sowohl ROM als auch RAM ansprechen zu können. Beim C128 mit seinem doppelt so großen Hauptspeicher mußte man sich etwas anderes einfallen lassen.

Der C64 besitzt einen PLA-Baustein, der in Zusammenarbeit mit dem Prozessorport des 6510 das An- und Abschalten der Betriebssystem-ROMs sowie des I/O Bereichs regelt. Dies ist zum Ansprechen des Speichers "unter" den ROMs nötig. Aus Kompatibilitätsgründen (C64-Modus!) wurde an diesem Mechanismus nichts geändert, sondern man entwarf einen neuen Baustein für die Verwaltung des Speichers im C128. Heraus kam eine sogenannte MMU, eine Memory Management Unit (Speicherverwaltungseinheit). Dieser Bausteins ist in der Lage, dem Prozessor die 128 KByte des C128 stückweise zur Verfügung zu stellen. Der Prozessor selbst bekommt davon nichts mit, er "sieht" immer nur 64 KByte Speicher. Wo sich dieser Speicher tatsächlich befindet, das steuert die MMU.

Fähigkeiten der MMU

Dazu gibt es mehrere Möglichkeiten. Zum einen kann man zwischen maximal 4 verschiedenen RAM-Bänken zu je 64 KByte umschalten. Der C128 verfügt in seiner Grundausstattung über 2 Bänke, wovon eine dem Prozessor zur Verfügung gestellt werden kann. Um die Datenübergabe zu vereinfachen, gibt es die Möglichkeit eine sogenannte Common Area einzurichten, in der eine andere Speicherbank "durchscheint". Diese Common Area kann sowohl am oberen als auch am unteren Ende des Adreßbereichs eingerichtet werden und jeweils 1, 4, 8 oder 16 KByte groß sein. Darüber hinaus kann man noch die Zeropage und den Stapelbereich innerhalb des Adreßraums in 256 Byte-Schritten verschieben.

Die wichtigsten Einstellungen können über ein Konfigurationsregister getätigt werden. Dazu gehören die Auswahl der Speicherbank und die Auswahl der einzublendenden ROMs. Außerdem können 4 dieser Konfigurationen in MMU- Registern gespeichert werden und mit einem einfachen Speicherzugriff eingeschaltet werden. Um zu vermeiden dass man den Ast auf dem man sitzt absägt finden sich 5 Register (das Konfigurationsregister sowie die 4 Prekonfigurationsregister) in jeder Konfiguration ab der Adresse $ff00 wieder.

Das Moduskonfigurationsregister beinhaltet einige spezielle Optionen wie die Auswahl des zu verwendenden Prozessors (8502 oder Z-80), die Rechnerbetriebsart (C64 oder C128), der Status der 80-Zeichen Taste und mehr.

Im RAM-Konfigurationsregister kann man noch die Position und Größe der Common Area einstellen sowie die für den VIC-Chip zu verwendende Speicherbank.

Die MMU im 128er ist zwar ein wirklich interessanter Baustein, trotz ihres Namens ermöglicht sie aber nicht die bei heutigen PMMUs gängige seitenweise Umsetzung von Virtuellen Speicheradressen in Physikalische, wie sie beispielsweise für virtuellen Speicher benötigt wird. Auch gibt es keinen Speicherschutz oder ähnliches.

Verwendet in