Erweiterter Speicher - Expanded memory

Im Seitenrahmen , der Teil des oberen Speicherbereichs ist, sind mehrere Seiten mit erweitertem Speicher bankgeschaltet .

Bei der DOS-Speicherverwaltung ist der erweiterte Speicher ein System der Bankumschaltung , das DOS- Programmen über die Grenze des herkömmlichen Speichers (640 KiB) hinaus zusätzlichen Speicher zur Verfügung stellt .

Erweiterter Speicher ist ein Überbegriff für mehrere inkompatible Technologievarianten. Die am weitesten verbreitete Variante war die Expanded Memory Specification ( EMS ), die von Lotus Software , Intel und Microsoft gemeinsam entwickelt wurde , sodass diese Spezifikation manchmal als " LIM EMS " bezeichnet wurde. LIM EMS hatte mehrere Versionen. Die erste weit verbreitete Version war EMS 3.2, das bis zu 8 MB erweiterten Speicher unterstützt und Teile des Adressraums verwendet, die normalerweise für die Kommunikation mit Peripheriegeräten ( oberer Speicher ) vorgesehen sind, um Teile des erweiterten Speichers abzubilden. EEMS , ein erweiterter Speicherverwaltungsstandard, der mit LIM EMS 3.x konkurriert, wurde von AST Research , Quadram und Ashton-Tate ("AQA") entwickelt. es könnte jeden Bereich der unteren 1 MiB abbilden. EEMS wurde schließlich in LIM EMS 4.0 integriert, das bis zu 32 MiB erweiterten Speicher unterstützte und auch DOS-Multitasking unterstützte. IBM hat jedoch einen eigenen erweiterten Speicherstandard namens XMA erstellt .

Die Verwendung von erweitertem Speicher wurde in den späten 1980er bis Mitte der 1990er Jahre bei Spielen und Business-Programmen wie Lotus 1-2-3 üblich , nahm jedoch ab, als Benutzer von DOS auf geschützte Betriebssysteme wie Linux und IBM umstellten OS / 2 und Microsoft Windows .

Hintergrund

Ein Abschnitt des unteren 1-MiB-Adressraums bietet ein "Fenster" in mehrere Megabyte erweiterten Speicher

Der 8088- Prozessor des IBM PC und des IBM PC / XT kann ein Megabyte (MiB oder 2 20 Byte) Speicher adressieren. Diese Grenze wurde vom externen 20-Bit-Adressbus des Intel 8086 geerbt . Die Designer des PCs haben die unteren 640  KiB ( 655 360 Bytes) Adressraum für Lese- / Schreibprogrammspeicher (RAM), der als "herkömmlicher Speicher" bezeichnet wird, und die verbleibenden 384 KiB Speicherplatz wurden für Anwendungen wie das System- BIOS , den Videospeicher und den Speicher auf Erweiterungsperipheriekarten reserviert .

Obwohl der 1984 eingeführte IBM PC AT den 80286- Chip verwendete, der bis zu 16 MiB RAM als erweiterten Speicher adressieren konnte , konnte er dies nur im geschützten Modus tun . Der Mangel an Software, die mit dem 286-geschützten Modus kompatibel ist (es konnten keine Standard- DOS- Anwendungen ausgeführt werden), bedeutete, dass der Markt noch offen für eine andere Lösung war.

Passen möglicherweise viel mehr Speicher als die 384 KiB freien Adressraumes würde es ermöglichen, ein Bank Schaltschema wurde entwickelt, bei denen nur ausgewählte Teile des zusätzlichen Speichers zu einem bestimmten Zeitpunkt zugänglich sein würden. Ursprünglich war ein einzelnes 64-KB- Speicherfenster (2 bis 16 Byte) möglich , das als Seitenrahmen bezeichnet wurde. später wurde dies flexibler gemacht. Programme mussten auf eine bestimmte Weise geschrieben werden, um auf den erweiterten Speicher zugreifen zu können. Das "Fenster" zwischen niedrigerem RAM und erweitertem RAM könnte an verschiedene Stellen innerhalb des erweiterten RAM verschoben werden.

Ein erster Versuch, eine Bankwechseltechnik zu verwenden, wurde von Tall Tree Systems mit ihren JRAM-Karten unternommen, aber diese haben sich nicht durchgesetzt. (Tall Tree Systems stellte später EMS-basierte Boards mit derselben JRAM-Marke her.)

Erweiterte Speicherspezifikation (EMS)

Lotus Development , Intel und Microsoft haben bei der Entwicklung des EMS-Standards (auch bekannt als LIM EMS) zusammengearbeitet. Die erste öffentlich verfügbare Version von EMS, Version 3.0, ermöglichte den Zugriff auf bis zu 4 MiB erweiterten Speicher. Dies wurde mit Version 3.2 der Spezifikation auf 8 MiB erhöht. Die endgültige Version von EMS, Version 4.0, erhöhte die maximale Menge an erweitertem Speicher auf 32 MiB und unterstützte zusätzliche Funktionen.

Microsoft hielt den Bankwechsel für eine unelegante und vorübergehende, aber notwendige Notlösung. Bill Gates schlug während eines Interviews mit der Faust auf den Tisch und sagte über das erweiterte Gedächtnis: "Es ist Müll! Es ist ein Kludge ! ... aber wir werden es tun." Die Unternehmen planten, den Standard auf der COMDEX im Frühjahr 1985 einzuführen , wobei viele Unternehmen für Erweiterungskarten und Software ihre Unterstützung ankündigten.

Die erste öffentliche Version des EMS-Standards namens EMS 3.0 wurde 1985 veröffentlicht. In EMS 3.0 wurden jedoch fast keine Hardware-Implementierungen vorgenommen, bevor EMS 3.2 abgelöst wurde. EMS 3.2 verwendete eine 64-KiB-Region im oberen 384-KiB-Bereich ( oberer Speicherbereich ), die in vier 16-KiB-Seiten unterteilt war und zum Abbilden von Teilen des erweiterten Speichers verwendet werden konnte.

Im Gegenzug wurde EMS 3.2 von einer Gruppe von drei anderen Unternehmen verbessert: AST Research, Quadram und Ashton-Tate, die ihren eigenen EEMS-Standard (Enhanced EMS) entwickelten. Mit EEMS konnte jeder 16-KiB-Bereich im unteren RAM dem erweiterten Speicher zugeordnet werden, sofern er nicht mit Interrupts oder dediziertem E / A-Speicher wie Netzwerk- oder Grafikkarten verknüpft war. Somit könnten ganze Programme in den zusätzlichen RAM ein- und ausgeschaltet werden. EEMS fügte auch Unterstützung für zwei Sätze von Zuordnungsregistern hinzu. Diese Funktionen wurden von früherer DOS-Multitasker-Software wie DESQview verwendet . Die 1987 veröffentlichte LIM EMS 4.0-Spezifikation enthielt praktisch alle Funktionen von EEMS.

Eine neue Funktion in LIM EMS 4.0 wurde hinzugefügt, dass EMS-Karten mehrere Sätze von Seitenzuordnungsregistern (bis zu 64 Sätze) haben können. Dies ermöglichte eine primitive Form des DOS- Multitasking . Die Einschränkung bestand jedoch darin, dass der Standard nicht spezifizierte, wie viele Registersätze eine Karte haben sollte, so dass diesbezüglich eine große Variabilität zwischen Hardware-Implementierungen bestand.

Die erweiterte Speicherspezifikation (EMS) ist die Spezifikation, die die Verwendung des erweiterten Speichers beschreibt. Auf EMS-Funktionen kann über den Software- Interrupt 67h zugegriffen werden. Programme, die EMS verwenden, müssen zuerst das Vorhandensein eines installierten erweiterten Speichermanagers (EMM) feststellen, indem sie nach einem Gerätetreiber mit dem Gerätenamen EMMXXXX0 suchen .

Erweiterter Speicheradapter (XMA)

IBM hat einen eigenen Speicherstandard namens Expanded Memory Adapter (XMA) entwickelt. Der IBM DOS-Treiber dafür war XMAEM.SYS. Im Gegensatz zu EMS können die IBM Erweiterungskarten sowohl mit einem erweiterten Speichermodell als auch als erweiterter Speicher angesprochen werden . Die von XMA-Karten verwendete Hardware-Schnittstelle mit erweitertem Speicher ist jedoch nicht mit EMS kompatibel, aber ein XMA2EMS.SYS-Treiber stellte die EMS-Emulation für XMA-Karten bereit. XMA-Karten wurden erstmals für die 1986 (überarbeiteten) Modelle des 3270-PCs eingeführt .

Implementierungen

Erweiterungskarten

Emulex Persyst 4 MiB ISA-Speicherkarte

Dieses Einfügen eines Speicherfensters in den peripheren Adressraum konnte ursprünglich nur durch bestimmte Erweiterungskarten erreicht werden, die an den ISA- Erweiterungsbus des Computers angeschlossen sind. Berühmte erweiterte Speicherkarten der 1980er Jahre waren AST RAMpage, IBM PS / 2 80286 Speichererweiterungsoption, AT & T Expanded Memory Adapter und Intel Above Board . Angesichts des RAM-Preises im Berichtszeitraum von bis zu mehreren hundert Dollar pro MiB und der Qualität und des guten Rufs der oben genannten Markennamen war eine erweiterte Speicherkarte sehr teuer.

Motherboard-Chipsätze

Später implementierten einige Motherboard- Chipsätze von Intel 80286- basierten Computern ein erweitertes Speicherschema, für das keine zusätzlichen Karten erforderlich waren, insbesondere der NEAT-Chipsatz . In der Regel haben Software-Switches festgelegt, wie viel Speicher als erweiterter Speicher und wie viel als erweiterter Speicher verwendet werden soll .

Gerätetreiber

Eine erweiterte Speicherkarte als Hardware-Peripheriegerät benötigte einen Software- Gerätetreiber , der ihre Dienste exportierte. Ein solcher Gerätetreiber wurde als Erweiterungsspeichermanager bezeichnet . Sein Name war variabel; Die zuvor genannten Karten verwendeten REMM.SYS (AST), PS2EMM.SYS (IBM), AEMM.SYS (AT & T) bzw. EMM.SYS (Intel). Später wurde der Ausdruck mit reinen Software-Lösungen verbunden sind, die erfordern Intel 80386 - Prozessor, zum Beispiel Achter 's QEMM , Qualitas ' 386 MAX oder der Standard - EMM386 in MS-DOS, PC - DOS und DR-DOS.

Software-Emulation

Ab 1986 modellierten die integrierten Speicherverwaltungsfunktionen des Intel 80386- Prozessors den Adressraum frei, wenn ältere Real-Mode-Software ausgeführt wurde, sodass Hardwarelösungen nicht mehr erforderlich waren. Erweiterter Speicher könnte in Software simuliert werden.

Das erste Software - Expansionsspeicher - Management (Emulation) Programm war CEMM , erhältlich im September 1986 als Werkzeug für den Compaq Deskpro 386 . Eine beliebte und gut ausgestattete kommerzielle Lösung war Quarterdecks QEMM. Ein Anwärter war Qualitas ' 386 MAX . Die Funktionalität wurde später 1989 in MS-DOS 4.01 und 1990 als EMM386 in DR DOS 5.0 integriert .

Software-Manager für erweiterten Speicher boten im Allgemeinen zusätzliche, aber eng verwandte Funktionen. Insbesondere erlaubten sie die Verwendung von Teilen des oberen Speicherbereichs (UMA) (die oberen 384 KiB des Real-Mode-Adressraums), die als obere Speicherblöcke (UMBs) bezeichnet werden, und stellten Werkzeuge zum Laden kleiner Programme bereit , typischerweise TSRs im Inneren ("LOADHI" oder " LOADHIGH ").

Die Interaktion zwischen erweitertem Speicher , erweiterter Speicheremulation und DOS-Extendern wurde schließlich durch die Spezifikationen von XMS, VCPI ( Virtual Control Program Interface ), DPMI ( DOS Protected Mode Interface ) und DPMS ( DOS Protected Mode Services ) geregelt .

Bestimmte Emulationsprogramme, umgangssprachlich als LIMulatoren bezeichnet, stützten sich überhaupt nicht auf Motherboard- oder 80386-Funktionen. Stattdessen reservierten sie 64 KB des Basis-RAM für das erweiterte Speicherfenster, in dem sie Daten in und aus dem erweiterten Speicher oder der Festplatte kopierten, wenn Anwendungsprogramme Seitenwechsel anforderten. Dies war programmgesteuert einfach zu implementieren, aber die Leistung war gering. Diese Technik wurde von AboveDisk von Above Software und von mehreren Shareware- Programmen angeboten.

Ablehnen

Die erweiterte Speichernutzung ging in den 90er Jahren zurück. Der IBM AT Intel 80286 unterstützte im geschützten Modus 24 Bit Adressraum (16 MiB) , und der 386 unterstützte 32-Bit-Adressen oder 4  Gigabyte (2 32 ) RAM - das 4096-fache des adressierbaren Raums des ursprünglichen 8086. DOS selbst unterstützte den geschützten Modus nicht direkt, aber Microsoft entwickelte schließlich DPMI und mehrere DOS-Extender wurden basierend darauf veröffentlicht. DOS-Programme wie Doom könnten Extender wie DOS / 4G verwenden , um im geschützten Modus ausgeführt zu werden, während die DOS-API weiterhin verwendet wird . In den frühen neunziger Jahren unterstützten neue Betriebssysteme wie Linux , Windows NT , OS / 2 und BSD / OS den geschützten Modus "out of the box". Diese und ähnliche Entwicklungen machten Expanded Memory zu einem veralteten Konzept.

Siehe auch

Verweise

Weiterführende Literatur