Bank Switching

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Bank Switching und Adressspeicherumschaltung (ASU) sind synonyme Begriffe für die Erweiterung des Computerspeichers eines Computers (RAM oder ROM) über seine natürlichen Adressierungsräume hinaus durch das durch Software gesteuerte, aber in Hardware umgesetzte Umschalten einzelner Speicherbereiche. Diese Technik ist entweder integraler Bestandteil eines Mikroprozessors oder wird davon unabhängig in Computersysteme integriert. Um Bank Switching zu ermöglichen, wird entweder der gesamte oder auch nur ein Teil des Speicherbereichs reserviert. In diesen reservierten Speicherbereich (Bank) wird jeweils ein entsprechend großer Bereich aus einem anderen Speicher eingeblendet.

Schema einer Adressspeicherumschaltung mit vier Speicherbereichen

Die Technik des Bank Switching gilt als unelegant und als eine Quelle schwer zu findender Programmfehler. Sie wird daher nur dann verwendet, wenn von der Computerarchitektur entsprechende Grenzen gesetzt werden. Mit der zunehmenden Verbreitung von 32- und 64-Bit-Computersystemen entfällt der Bedarf für Bank Switching zunehmend, da diese Architekturen meist ausreichend Adressierungsraum für Speicher mit sich bringen.

Bank Switching bei 8-Bit-Systemen[Bearbeiten]

Bank Switching wurde bereits bei frühen 8-Bit-Computersystemen eingesetzt, z. B. dem C64, da diese nur 64 KB Speicher adressieren konnten, viele Firmen aber 64 KB oder noch mehr RAM und zusätzlich auch noch ROM einbauen wollten und teilweise Memory Mapped I/O verwendeten, welche beide auch Adressraum belegen. Auch Spielmodule für Videokonsolen (z. B. Atari 2600) verwendeten diese Technik, um den Programmspeicher über das ursprünglich vorgesehene Maß hinaus zu vergrößern. Bei MSX-Computern mit dem Z80-Prozessor wurde der Speicher in 4 Bänke zu 16 KB eingeteilt und nach Bedarf RAM oder ROM eingeblendet.

Bei einem anderen 8-Bit-System, das vor allem sehr viel ROM-Platz benötigte, wurde es beispielsweise so realisiert, dass die unteren 32 KB des Adressraums unverändert blieben und neben dem kompletten RAM sowie dem Memory Mapped I/O vor allem die Grundroutinen des Betriebssystems (Hauptschleife, Schnittstellenbedienung) und die Bank-Umschaltroutinen enthielten. Die komplette obere 32-KB-Hälfte des Adressraums war umschaltbar eingerichtet, wohin wahlweise eine von bis zu 8 verschiedenen 32-KB-ROM-Bänken eingeblendet wurde. Das einzige Problem trat auf, wenn ein Programmteil aus dieser oberen Adresshälfte eine Subroutine aus einer anderen Bank der oberen Hälfte aufrufen wollte. Für diesen Fall gab es spezielle Unterstützungsroutinen in der festen unteren Hälfte, die diese Operation zu organisieren halfen.

Bank Switching beim IBM PC[Bearbeiten]

Das Problem setzte sich später auf dem IBM-PC fort. Alle IBM-kompatiblen PCs sind im Real Mode, der unter MS-DOS üblichen Betriebsart und der einzigen auf älteren PCs möglichen, vom Prinzip her auf maximal 640 KB direkt nutzbares RAM beschränkt – den sogenannten Konventionellen Speicher. Daher wurde 1988 das Expanded Memory System (EMS) von den Firmen Lotus, Intel und Microsoft („LIM“) spezifiziert. RAM-Steckkarten, die nach diesem LIM-EMS-Standard gebaut waren, konnten dann von Programmen verwendet werden, um den Speicher des PCs in 64 KB großen Bänken zu erweitern. Diese Bänke konnten von einem Programm einzeln in den Adressraum „eingeblendet“ werden.