Expanded Memory nach dem EMS-Standard


Auf einen altbewährten Trick haben Firmen wie Lotus (Lotus 1-2-3), Intel (Hersteller der PC-Prozessoren) und Microsoft (MS-DOS und OS/2) schon im Jahre 1985 zurückgegriffen, als sie den nach ihnen benannten LIM-Standard schufen: das Bank-Switching. Es hatte bereits in der Ära des Homecomputers eine wahre Blütezeit erlebt und kommt hier noch einmal zu Ehren.
Vereinfacht gesagt, wird dabei einfach ein kleines Fenster geschaffen, über das aus dem Adreßraum des Rechners heraus immer nur auf einen kleinen Teil eines Speicherbereichs zugegriffen werden kann, der sich in seiner Gesamtheit u.U. über mehrere MByte erstreckt.

Die Software trägt im Zusammenspiel mit der Hardware dabei die Verantwortung dafür, daß dieses Fenster immer so verschoben wird, daß sich der gerade benötigte Teil des Speichers im Zugriff des Programms befindet - der übrige Teil bleibt dabei bedeckt und ist für ein Programm im wahrsten Sinne des Wortes unsichtbar.
Konkret sieht der LIM-Standard vor, daß der Hauptspeicher des PCs mit Hilfe einer Erweiterungskarte um bis zu 8 MByte aufgestockt werden kann, von diesen maximal 8 MByte aber immer nur 64 KByte durch das genannte Fenster in den Adreßbereich des Prozessors eingeblendet werden. Ein derart installierter Speicher wird "Expanded Memory" (EMS) genannt, das Fenster wird als "Page-Frame" bezeichnet.

Das Ganze darf übrigens nicht mit dem Extended Memory verwechselt werden, das oberhalb der 1-MByte-Grenze angesiedelt ist und in einem folgenden Abschnitt dieses Kapitels noch zu Wort kommen wird.



Abbildung : Zugriff auf EMS-Speicher nach dem LIM-Standard mit Hilfe eines Fensters

Bei der Verwirklichung ihrer Idee kam den Entwicklern des LIM-Standards der Umstand entgegen, daß nicht der gesamte Adreßraum zwischen dem Ende des RAM-Speichers und der 1-MByte-Grenze für das BIOS, das Video-RAM und andere Systemerweiterungen vergeben ist. Vielmehr lassen sich immer 64 KByte finden, die noch nicht vergeben sind und daher als Fenster in den EMS-Speicher genutzt werden können. Meistens liegt dieses als Page-Frame benannte Fenster an der Segmentadresse E000, doch ist die EMS-Hardware in dieser Hinsicht völlig flexibel. Da sich dieses Fenster also grundsätzlich noch unterhalb der 1-MByte-Speichergrenze befindet, kann auf unterster Ebene mit Hilfe normaler Assemblerbefehle auf diesen Speicher zugegriffen werden, wie dies z.B. auch für das Video-RAM gilt, das sich ebenfalls hinter dem Ende des RAM-Speichers befindet. Lese- und Schreibzugriffe sind dabei gleichermaßen möglich.

Etwas verfeinert wird das ganze Verfahren noch dadurch, daß sowohl der EMS-Speicher als auch der Page-Frame nicht jeweils in 64-KByte-Segmente, sondern in 16-KByte-Pages (Seiten) aufgeteilt wird. Es stehen dem Programmierer dadurch vier individuelle EMS-Seiten zur Verfügung, die unterschiedliche Teile des EMS-Speichers aufnehmen können.
Um nicht immer auf die gleichen vier Pages des EMS-Speichers zugreifen zu müssen, besteht über die Hardware-Register der EMS-Karte die Möglichkeit, beliebige Pages aus dem EMS-Speicher in den Page-Frame einzublenden. Dieses Einblenden ist dabei ganz wörtlich zu verstehen, denn die Pages werden nicht etwa aus dem EMS-Speicher in den Page-Frame kopiert, sondern die Adreßleitungen auf der EMS-Karte werden so programmiert, daß die einzelnen Pages tatsächlich die Adresse der entsprechenden Page im Page-Frame tragen. Genau in diesem Vorgang drückt sich der Begriff des "Bank-Switching" aus, den man auch unter dem Namen "Paging" kennt.

Neben der Hardware gehört zu EMS noch eine Software-Schnittstelle, die z.B. die Programmierung der EMS-Hardware-Register, aber auch andere Verwaltungsaufgaben abnehmen soll. Sie trägt den Namen EMM (Expanded-Memory-Manager) und stellt eine standardisierte Schnittstelle dar, mit deren Hilfe der Programmierer von der eigentlichen Hardware der EMS-Karte isoliert wird. Dadurch kann ein Programm bei Ausnutzung dieser Schnittstelle ohne Probleme nicht nur auf die EMS-Karten verschiedenster Hersteller zugreifen, sondern auch mit den zahlreichen EMS-Emulatoren zusammenarbeiten, die in großer Zahl auf dem Markt sind.

Alle Produkte basieren auf einem speziellen Betriebsmodus des 80386, dem sogenannten Virtual-86-Mode. Er bietet die Möglichkeit, Speicher von oberhalb der 1-MByte-Grenze in den konventionellen Speicher unterhalb dieser Barriere einzublenden, so daß er dort wie ein ganz normaler Page-Frame erscheint. Gegenüber einer konventionellen Hardware-Realisierung bietet das gleich mehrere Vorteile:

  • Wird auf die Arbeit mit dem EMS-Emulator verzichtet, kann der Speicher wieder als ganz normales Extended Memory genutzt werden.
  • Der Zugriff auf den EMS-Speicher und die Umschaltung zwischen verschiedenen Pages vollzieht sich schneller, weil darin kein Hardware involviert ist, die umständlich über I/O-Ports angesprochen werden muß.
  • Die Kosten sind niedriger, weil eine EMS-Karte in der Regel teurer ist als ein Software-Emulator und eine entsprechende Menge an Extended Memory.
  • Ein Steckplatz wird eingespart.

Die Softwareschnittstelle zwischen dem EMM und einem Programm gleicht vielen anderen Softwareschnittstellen, die man im PC-Bereich antrifft, nicht nur, weil die verschiedenen EMM-Funktionen über einen Software-Interrupt aufgerufen werden müssen. Auch der Werdegang der EMS-Schnittstelle ist für viele Software-Schnittstellen typisch, denn sie wurde mehrmals erweitert und modifiziert.

Zurück