Unter einem Expansionsspeicher wird eine Speichererweiterung verstanden, die insbesondere zu Beginn des PC-Zeitalters oftmals genutzt wurde, um den bis dahin ansprechbaren Adressraum bis maximal 1 MB zu erweitern. Infolgedessen wurde auch eine Schnittstelle geschaffen, die auf einem x86-Rechner im Real Mode auf diesen Speicher zugreifen konnte. Das Verfahren wurde kurz EMS für Expanded Memory Specification genannt. In erster Linie war diese Speichertechnik für die Prozessoren 8086, 8088, 80186 und 80286 gedacht. Soweit auch die Nachfolgeprozessoren im Real Mode arbeiteten, konnten auch sie auf diese Technik zurückgreifen.
Technisch basiert die Idee auf einem fest reservierten Page Frame im oberen Adressbereich unterhalb der 1‑MB‑Grenze. Über Memory-Bank-Switching werden 16‑KB‑Speicherseiten (Pages) aus einer Erweiterungskarte in dieses Fenster eingeblendet. Anwendungen sehen somit einen konsistenten Adressbereich und können, gesteuert durch einen Treiber, dynamisch auf deutlich mehr physische Speicherkapazität zugreifen, als der Prozessor im Real Mode direkt adressieren kann.
Wir analysieren Defekte an allen gängigen Datenträgern aller Hersteller - kostenlos und unverbindlich.
Sie erhalten anschließend ein Festpreis-Angebot für die Wiederherstellung Ihrer Daten. Kosten fallen nur an, wenn Sie uns beauftragen und wir Ihre Daten retten können!
100% kostenlose Analyse anfordern!Expansionsspeicher Geschichte
In den 80er Jahren dominierte das Betriebssystem MS-DOS auf den PCs. In der Anfangszeit reichte der 640 KB umfassende konventionelle Arbeitsspeicher für die damaligen Anwendungen aus. Diese wurden jedoch im Laufe der Zeit wesentlich komplexer. Ein Beispiel waren Tabellenkalkulationen, die enormen Speicherplatz für ihre Berechnungen benötigten. Auf der Suche nach Lösungen wurden schließlich spezielle Speicherkarten entwickelt, die zusätzlich in einen freien Port auf dem Motherboard des Rechners eingesteckt werden konnten.
Da die damaligen PCs nur einen Adressraum von 1 MB adressieren konnten, wurde ein Teil des Kartenspeichers in diesen Adressraum hineingeblendet. Programme konnten dann auf diesen Speicher zugreifen. Spezielle Programmbefehle steuerten genau, welcher Teil des Kartenspeichers in der Größe zwischen 512 KB und 2 MB angesprochen werden konnte. Die Rede war vom sogenannten Memory Bank Switching. Ein Programm konnte jedoch nie den gesamten Speicher der Steckkarte auf einmal benutzen. Nur der eingeblendete Teil war zu verwenden. Diese Speicherkarten wurden früher Memory Expander und der Speicher auf ihnen Expanded Memory genannt.
Schon damals gab es einen heiß umkämpften Hardwaremarkt. Dies führte dazu, dass viele Karten zueinander inkompatibel waren. Ein Programm, welches auf eine solche Speicherkarte zugreifen wollte, musste die genau für diese Karte funktionierenden Befehle aufweisen. 1985 einigten sich die drei großen Hersteller Lotus, Microsoft und Intel auf einen gemeinsamen Standard, der fortan als LIM-EMS bezeichnet wurde. Wenn heute von Expanded Memory die Rede ist, wird in der Regel diese Speichertechnik gemeint.
Zur historischen Einordnung des 1‑MB‑Adressraums ist die klassische DOS-Speicherkarte relevant:
- 0–640 KB: konventioneller Speicher für Programme und Daten.
- 640–1.024 KB (UMA/UMB): Bereich für BIOS, Grafikspeicher (z. B. VGA), ROM‑Module und das EMS‑Page‑Frame.
- HMA (High Memory Area): 64 KB minus 16 Byte oberhalb von 1 MB, via A20‑Leitung nutzbar (relevant für HIMEM.SYS und später XMS).
Neben dem offiziellen Standard existierten kurzzeitig proprietäre Lösungen wie EEMS (Enhanced EMS) einiger Hersteller, die später in LIM‑EMS 3.2/4.0 aufgingen. Die Version 4.0 des Standards erlaubte größere Gesamtkapazitäten (typisch bis 32 MB) und flexiblere Mapping‑Optionen, blieb aber abwärtskompatibel zu Anwendungen, die nur ein 64‑KB‑Page‑Frame erwarteten.
Expansionsspeicher als LIM-EMS
Voraussetzung für den LIM-EMS ist ein Expanded-Memory-Manager, auch unter der Kurzbezeichnung EMM bekannt. Es handelt sich hierbei um einen speziellen Gerätetreiber für den Zugriff auf den Expansionsspeicher über einen Software-Interrupt. Hierbei wird der Expansionsspeicher in einzelne Pages, also Seiten zu je 16 KB aufgeteilt. Über ein Page Frame wird im Adressraum ein 64 KB großes Fenster reserviert, mithilfe dessen je 4 EMS-Seiten eingeblendet werden können. In der Regel belegt das EMS-Frame die Speicheradressen Hex-D0000 bis Hex-DFFFF. Der Speicherseitenanfang der jeweiligen EMS-Seiten liegt bei Hex-D0000, D4000, D8000, sowie DC000.
Der Expansionsspeicher wird über einen vom Kartenhersteller entwickelten EMS-Treiber angesprochen. Sehr geläufig war der Treiber emm.sys. Dieser Treiber bietet alle wesentlichen Funktionen, wie zum Beispiel das Belegen und Freigeben der Speicherseiten, das Ein- und Ausblenden einzelner Pages im EMS-Fenster, sowie die Anzeige der Speichergröße einzelner Pages oder des gesamten Speichers. Generell wurde hierbei der Software-Interrupt Hex-67 verwendet.
Typische Funktionen des Interrupts 67h umfassten unter anderem:
- Version/Status abfragen: Ermitteln der LIM‑EMS‑Version und des verfügbaren Speichers.
- Handle anfordern/freigeben: Allokation von EMS‑Seitenblöcken für eine Anwendung.
- Mapping steuern: Bestimmen, welche 16‑KB‑Page an welche der vier Page‑Frame‑Bänke (Offset D0000/D4000/D8000/DC000) gebunden wird.
- Speicher verschieben/kopieren: Block‑Transfers zwischen konventionellem und Expanded‑Memory.
Praktische Einsatzszenarien, in denen EMS deutliche Vorteile bot, waren:
- Tabellenkalkulationen und Datenbanken: z. B. große Arbeitsblätter, Indizes, Caches.
- CAD/Engineering: Zwischenspeicher für Zeichnungen und Geometrie‑Daten.
- Grafik- und DTP‑Anwendungen: Speicherung großer Rastergrafiken und Fonts.
- Spiele und Utilities: Level‑Daten, Texturen, Disk‑Caches und RAM‑Disks.
Vorteile waren die Entlastung des konventionellen Speichers und die Möglichkeit, große Datenmengen in 16‑KB‑Blöcken effizient zu halten. Nachteile ergaben sich aus der Komplexität des Bank‑Switching, der Abhängigkeit von Treibern und potenziellen Konflikten im UMA‑Bereich (Adressüberlagerungen mit ROMs, Grafikspeicher, SCSI‑BIOS usw.).
Expansionsspeicher in 80386er Rechner
EMS-Speicherkarten waren nicht billig und erreichten dadurch eine nicht allzu große Verbreitung. Als der 80386 erschwinglich wurde, war der Einsatz von Expansionsspeicher-Karten häufig überflüssig geworden. Der neue Prozessor beherrschte einen neuen Betriebsmodus, den Virtual-8086-Mode, mit dem eine MSDOS-Real-Mode-Umgebung in einer Protected-Mode-Umgebung emuliert werden konnte. Protected Mode beherrschten alle Intel-Prozessoren ab dem 80386 und auch die damit verbundene Paging-Technik. Hierbei können virtuelle Programmadressen auf mehreren physischen Speicheradressen verschoben werden.
Für diese Speichertechniken wird ein Treiber für ein EMS-Fenster benötigt, der alle Speicherzugriffe auf Bereiche jenseits der 1 MB-Grenze umlenkt. Es handelte sich hierbei um den von MSDOS bekannten Treiber emm386.sys. Als ärgster Konkurrent war der von der Firma Quarterdeck entwickelte qemm386.sys bekannt. Mithilfe dieser Treiber konnte der Hauptspeicher des Rechners direkt jenseits der 1 MB angesprochen werden, ohne dass überhaupt eine Expansionsspeicherkarte eingebaut werden musste. Lediglich der vorhandene Hauptspeicher musste dabei entsprechend groß genug sein.
Mit dem 80386 etablierten sich außerdem ergänzende Konzepte:
- XMS (Extended Memory Specification): Zugriff auf Speicher oberhalb 1 MB mittels HIMEM.SYS ohne Page‑Frame‑Zwang; sinnvoll für Puffer, Caches und RAM‑Disks.
- UMB (Upper Memory Blocks): Freie Bereiche in 640–1.024 KB für Treiber/TSRs; via EMM386/QEMM nutzbar, um konventionellen Speicher zu sparen.
- VCPI/DPMI: Schnittstellen, mit denen DOS‑Extender 32‑Bit‑Protected‑Mode nutzten (z. B. für speicherhungrige Anwendungen); koexistierten oft mit emuliertem EMS.
Beispielhafte Konfigurationen in CONFIG.SYS/AUTOEXEC.BAT waren: „DEVICE=HIMEM.SYS“ für XMS, „DEVICE=EMM386.EXE RAM“ für EMS/UMB und Optimierungsparameter wie „EMMExclude“ (z. B. X=C000‑C7FF) zur Vermeidung von Konflikten mit ROM‑Bereichen. Solche Einstellungen variierten je nach BIOS, Grafikkarte und Zusatz‑Controllern.
In heutiger Zeit spielt der Expansionsspeicher keine Bedeutung mehr. Die heutigen Betriebssysteme sind hierauf nicht mehr angewiesen, da sie ehedem im Protected Mode laufen. Moderne Prozessoren können zudem wesentlich mehr Arbeitsspeicher adressieren und sind daher beim Speichermanagement sehr flexibel. Eine Nische bildet der virtuelle Expansionsspeicher, der im Protected Mode emuliert wird. Er bietet eine einfache Bedienung und wird gerne zu Versuchszwecken eingesetzt.
Aktueller Stand: Moderne x86‑64‑CPUs adressieren enorme Speichermengen, nutzen ausgefeilte Virtual-Memory-Mechanismen, PAE (bei 32‑Bit) und mehrstufiges Paging. Klassisches EMS ist hier obsolet. Bei Bedarf wird es in Emulatoren und virtuellen Maschinen bereitgestellt (z. B. für retrokompatible DOS‑Programme, in 32‑Bit‑Subsystemen älterer Systeme oder in Tools wie DOS‑Emulatoren). Damit bleibt EMS als Lern‑ und Testumgebung relevant, obwohl es in produktiven Umgebungen durch flaches 32/64‑Bit‑Adressieren und moderne Speicherverwaltung vollständig ersetzt ist.
Häufige Fragen und Antworten
Was versteht man unter einem Expansionsspeicher?
Ein Expansionsspeicher ist eine Speichererweiterung, die genutzt wird, um den ansprechbaren Adressraum eines Computers zu vergrößern. Dies wurde insbesondere zu Beginn des PC-Zeitalters häufig verwendet. Durch die Erweiterung des Speichers konnte der Computer auf mehr Daten zugreifen und größere Aufgaben bewältigen. Diese Technik ermöglichte die Verbindung von Speicherkarten mit dem Motherboard des Computers.
Konkret spricht man meist von LIM‑EMS (Expanded Memory Specification): Ein 64‑KB‑Page‑Frame im oberen Speicherbereich blendet 16‑KB‑Seiten aus einer Erweiterungskarte ein. Anwendungen steuern über den Interrupt 67h das Mapping dieser Seiten und arbeiten so trotz Real‑Mode‑Limitierung mit großen Datenmengen.
- Page‑Größe: 16 KB; Page‑Frame: 64 KB (4 Bänke á 16 KB).
- Typische Frame‑Adresse: D0000h–DFFFFh (Varianten je nach System möglich).
- LIM‑EMS 4.0: größere Gesamtkapazität (typisch bis 32 MB) und erweiterte Funktionen.
Welche Rolle spielte der Expansionsspeicher in den 80er Jahren?
In den 80er Jahren spielte der Expansionsspeicher eine entscheidende Rolle, da der vorhandene Arbeitsspeicher in PCs oft nicht ausreichte. Insbesondere für anspruchsvolle Anwendungen wie Tabellenkalkulationen war mehr Speicherplatz erforderlich. Der Expansionsspeicher ermöglichte die Nutzung von Speicherkarten, die in den Computer eingesteckt wurden und zusätzlichen Speicherplatz bereitstellten. Durch das Hineinblenden eines Teils des Kartenspeichers in den adressierbaren Adressraum des Computers konnte auf diesen Speicher zugegriffen werden.
Typische Software, die besonders profitierte, waren Lotus 1‑2‑3, frühe Datenbanken, CAD‑Programme und speicherintensive Utilities. Der Standard LIM‑EMS vereinheitlichte den zuvor fragmentierten Markt proprietärer Speicherkarten und schuf eine stabile Basis für Entwickler und Anwender.
- Vorteil: Mehr nutzbarer Speicher trotz 1‑MB‑Grenze des Real Mode.
- Herausforderung: Adresskonflikte im UMA‑Bereich und Treiberabhängigkeiten.
- Wegbereiter: Spätere Speichertechniken wie XMS/UMB unter 286/386.
Wie funktioniert der Expansionsspeicher im 80386er Rechner?
Im 80386er Rechner wird der Expansionsspeicher durch einen EMS-Treiber angesprochen. Der Speicher wird in einzelne Seiten aufgeteilt und über ein sogenanntes Page Frame in den adressierbaren Adressraum des Computers eingeblendet. Dadurch können mehrere EMS-Seiten gleichzeitig genutzt werden. Der EMS-Treiber ermöglicht das Belegen und Freigeben von Speicherseiten sowie das Ein- und Ausblenden einzelner Seiten im EMS-Fenster. Es handelt sich hierbei um eine spezielle Speicherzugriffstechnik, die es erlaubt, virtuelle Programmadressen auf physische Speicheradressen zu verschieben.
Anders als bei physischen EMS‑Karten emuliert der 80386 mittels Virtual‑8086‑Mode und Treibern wie EMM386.EXE oder QEMM das EMS‑Fenster aus normalem RAM. Gleichzeitig lassen sich XMS (via HIMEM.SYS) und UMB nutzen. Für 32‑Bit‑Anwendungen unter DOS kamen zusätzlich VCPI/DPMI zum Einsatz, wodurch EMS, XMS und Protected Mode kooperativ nebeneinander bestehen konnten.
- Praxis: „DEVICE=EMM386.EXE RAM“ aktiviert EMS/UMB; „DEVICE=HIMEM.SYS“ schaltet XMS/HMA frei.
- Tuning: Exclude‑Parameter verhindern Kollisionen mit ROM‑Bereichen und Option‑BIOS.
- Ergebnis: Mehr konventioneller Speicher frei, bessere Kompatibilität für DOS‑Programme.






