Mikroprozessortechnik 03/87

 

RAM-Floppy - ein schneller Zusatzspeicher für Bürocomputer

Dr. Christian Löber
VEB Robotron-Meßelektronik
"Otto Schön" Dresden

Anwendung und Eigenschaften von RAM-Floppies

In Arbeitsplatz-, Personal- und Bürocomputern sowie in Entwicklungssystemen werden als Hintergrundspeicher vorrangig Diskettenspeicher eingesetzt. Durch weitere Verringerung der Abmessungen und Verbesserung der technischen Parameter gilt dies zunehmend auch für Heim- und Kleincomputer und darüber hinaus für intelligente Meßgeräte und Prüfsysteme wie etwa Digitaltester, Meßtechnikcontroller oder Funktionsmeßplätze. Nachteilig ist jedoch die niedrige Transfergeschwindigkeit der Floppy-Laufwerke. Dadurch wird die Effektivität des Bedieners bei üblichen Programmierarbeiten wie Laden, Editieren, Assemblieren, Compilieren, Linken von Programmen sowie beim Arbeiten mit Datenbank und Textverarbeitungssystemen deutlich reduziert. Ganz besonders gilt das für Rechner und Geräte, die unter dem weit verbreiteten Betriebssystem CP/M bzw. dem dazu kompatiblen SCP arbeiten. Diese Betriebssysteme sind durch ihr streng hintergrundspeicherorientiertes Entwurfsprinzip, durch die angewandte Overlaytechnik ihrer Dienstprogramme sowie regelmäßige Warmstarts und damit sehr häufige Um- und Nachladeprozesse von bzw. zum Diskettenspeicher charakterisiert.
Davon ausgehend und unter Berücksichtigung des rasch steigenden Integrationsgrades sowie stark fallender Preise bei dynamischen Halbleiterspeichern (DRAM) werden in zunehmendem Maße sogenannte RAM-Floppies (RAM-Disk, virtuelle Disk) zur Geschwindigkeitssteigerung eingesetzt. Dies sind vollelektronische Zusatzspeicher, meist in mehreren Speicherbänken zu je 64 KByte organisiert, die sich aus der Sicht des Bedieners wie normale Diskettenspeicher verhalten, mit einem Unterschied: Sie sind um den Faktor 3 ... 10 schneller /1, 2, 3/.
RAM-Floppies sind vor ihrem Gebrauch wie physische Disketten entsprechend den im jeweiligen Betriebssystem gültigen Konventionen zu initialisieren. Danach sind sie betriebsbereit und können mit häufig benutzten Dienstprogrammen geladen werden. Soll zum Beispiel ein Anwenderprogramm auf Assemblerniveau erstellt werden, so wird man den Editor oder ein Textverarbeitungsprogramm kopieren, ferner den Assembler. Linker und ggf. - für anschließendes Testen - einen geeigneten Debugger. Damit sind alle für Programmierung und Test benötigten Dienstprogramme auf der RAM-Floppy verfügbar, und alle Diskettenoperationen verlaufen mit einer um den oben genannten Faktor höheren Geschwindigkeit.
Nach Abschluß der Arbeiten, beispielsweise nach dem Ausdrucken des in der RAM-Floppy stehenden Listings, muß als Besonderheit beachtet werden, daß die erstellten Daten für spätere Verfügbarkeit auf eine physische Diskette auszulagern sind, ansonsten gehen sie beim Ausschalten des Rechners verloren.

Wirkungsprinzip von RAM-Floppies

Es gibt zwei prinzipielle Möglichkeiten, um eine RAM-Floppy in ein bestehendes System zu integrieren:

I/O-Mapping

Hierbei wird die aus einer oder mehreren Seiten bestehende RAM-Floppy über hard- oder softwaregesteuerte, bitserielle oder bitparallele I/O-Ports an das Grundsystem angeschlossen. Damit ist die RAM-Floppy ein echter vollelektronischer Zusatzspeicher, der nicht im Adreßraum des Hauptspeichers, sondern in dem des I/O-Raumes liegt. Der Datentransfer wird durch Blockein-/ausgabebefehle - beim U880 ist das die Gruppe der INIR/OTIR-Befehle - realisiert. Das bedeutet bei 8-Bit-Rechnern, daß nur maximal 128 Byte lange Sektoren in einem Zug transferiert werden können. Darüber hinaus muß bei dieser Lösung das Problem des zyklischen Refresh der DRAM-Speicher beachtet werden. In /1/ ist eine Schaltung für eine halbintelligente Diskettenstation mit einer RAM-Floppy beschrieben, die aus Geschwindigkeitsgründen bitparallel und rein hardwaregesteuert über einen IEC-Controller arbeitet. Eine andere, in /4/ erläuterte Variante basiert hingegen auf einfachen richtungsgesteuerten Datentreibern und einer fünfstufigen, im Bereich von 0...FFFF beliebig einstellbaren Zählkette, die das Speichersegment adressiert, auf das zugegriffen werden soll.

Memory-Mapping

Bei diesem Prinzip wird die RAM-Floppy im allgemeinen in Bänken zu je 64 KByte mit dem Hauptspeicher "gemappt", das heißt, sie liegt voll in seinem Adreßraum. Zur Vermeidung von Adressenkonflikten ist deshalb eine Seitenschaltung erforderlich, die die zur aktuellen physischen Diskettenadresse (DRIVE, TRACK, SECTOR) gehörende Speicherseite an die Stelle der weggeschalteten Grundseite des Hauptspeichers. Über Speichersperr-/-freigabe Signale (wie z.B. MEMDI, MEMDI1, MEMDI2 beim Rechner K1520) einblendet. Der Datentransfer wird programmseitig mit Blocktransferbefehlen, wie z.B. LDIR, realisiert. Damit können maximal 64 KByte lange Sektoren in einem Zug kopiert werden. Ein Beispiel für das Memory-Mapping-Prinzip ist in /2/ beschrieben, wobei 32 KByte lange Halbseiten in den Adreßbereich 4000...BFFF der Grundseite eingeblendet werden. Die Variante nutzt die nicht für alle Betriebssysteme geltende Eigenschaft von CP/M, daß jeder Datenaustausch sektorweise zwischen Grundseite und Diskettenspeicher über einen globalen DMA-Puffer außerhalb des ausblendbaren Bereiches 4000...BFFF erfolgt. Damit ist ein Diskettenzugriff in zwei voneinander unabhängigen Schritten realisierbar: beispielsweise beim Lesen der Diskette zuerst Transfer eines Sektors zwischen Diskette und BIOS-internem DMA-Puffer und danach Transfer zwischen diesem DMA-Puffer und dem adressierten Segment im Bereich 4000...BFFF. Wird vor dem zweiten Schritt durch die Seitensteuerung eine der Halbseiten einer RAM-Floppy eingeblendet, so ist dies ein Kopiervorgang von einer physischen Diskette auf die RAM-Floppy. Die Voraussetzung einer Zwischenpufferung der zu transferierenden Daten in einem DMA-Puffer ist jedoch für 8-Bit-Betriebssysteme nicht allgemein üblich, so zum Beispiel nicht bei dem Betriebssystem UDOS bzw. dem dazu kompatiblen RIO.

Die erläuterten Hardware-Erweiterungen für eine RAM-Floppy müssen außerdem softwareseitig unterstützt werden:

Eine RAM-Floppy für den Bürocomputer A5120

Im folgenden wird ein Beispiel zur Implementierung einer RAM-Floppy in den Bürocomputer A5120 nach dem Memory-Mapping-Prinzip erläutert. Dabei umfaßt die RAM-Floppy 4 Seiten zu je 64K = 256 KByte. Sie repräsentiert damit die 1,6fache Kapazität der derzeit üblichen 5,25"-Minidisketten doppelter Dichte mit 40 Spuren zu je 4 KByte. Bild 2 zeigt die Organisation einer solchen Diskette unter SCP. Demzufolge ist bei jedem Zugriff auf das virtuelle Floppy-Laufwerk durch den zugehörigen RAM-Floppy-Treiber über die Seitenschaltung folgende Adressenkonvertierung zwischen physischer Diskadresse und RAM-Diskadresse zu realisieren:

physische Diskette
RAM-Floppy

Spur   0 ... 15 00000 ... 0FFFF (Seite 1)
Spur 16 ... 31
10000 ... 1FFFF (Seite 2)
Spur 32 ... 47
20000 ... 2FFFF (Seite 3)
Spur 48 ... 63
30000 ... 3FFFF (Seite 4)

Die zusätzlich erforderlichen Adreßbits zur Adressierung des Speichers der RAM-Floppy werden hierbei über vier Pagingbits PB1...4 eines Ports in der Seitenschaltung simuliert. So ist beispielsweise bei einem Sektortransfer im Bereich von Spur 16...31 durch den RAM-Floppy-Treiber vor dem Blocktransferbefehl LDIR als statische Bedingung für die Seitensteuerung das Bit PB2 zu setzen.
Darüber hinaus ist noch die Richtung des Datentransfers von bzw. zur virtuellen Diskette festzulegen (RAM-Floppy-Lesen/Schreiben). Dies geschieht durch zwei Richtungssteuerbits RB0 und RB1, die ebenfalls über Port im entsprechenden READ- bzw. WRITE-Ruf des SCP statisch einzustellen sind.

Dynamische Seitensteuerung

Die eigentliche Seitenumschaltung erfolgt jedoch dynamisch erst während der Abarbeitung des LDIR-Befehls und nur für die Dauer eines READ- bzw. WRITE-Zyklus. Das bedeutet, z.B. beim RAM-Floppy-Schreiben, daß das nächste Datenbyte im DMA-Puffer während des MR-Zyklus des LDIR-Befehls noch bei aktiver Grundseite gelesen wird. Erst mit der fallenden Flanke von /MREQ im MW-Zyklus wird die Grundseite aus- und dafür die addressierte RAM-Floppy-Seite eingeblendet, und somit das Byte in die RAM-Floppy geschrieben. Anschließend, das heißt, mit der aufsteigenden Flanke von /MREQ, erfolgt die Wiedereinschaltung der Grundseite. Die RAM-Floppy-Seite ist folglich nur für die Dauer von /MREQ = 0 eingeblendet. Bild 3 verdeutlicht die Verhältnisse.
In Bild 4 ist das Prinzip der Seitenschaltung dargestellt. Die einwandfreie Funktion der Schaltung ist an eine programmtechnische Besonderheit gebunden. In der Programmpassage des RAM-FIoppy-Treibers dürfen nach dem Setzen eines der beiden Richtungssteuerbits RB0, RB1 unmittelbar vor dem LDIR-Befehl bis zu ihrem Rücksetzen unmittelbar nach dem LDIR-Befehl nur Befehle mit M1-Zyklen auftreten, mit Ausnahme des LDIR selbst. Ansonsten treten Fehlschaltungen der Seitensteuerung durch unbeabsichtigte MR- bzw. MW-Zyklen auf. Das in Bild 5 angegebene Programm DISKRW genügt diesen Bedingungen.
Die dynamische Umschaltung der Seiten nur im jeweils aktiven RD- bzw. WR-Zyklus des Blocktransferbefehls hat folgende Vorzüge:

RAM-Floppy-Treiber

Wie schon erwähnt, ist zur Abwicklung der Diskettenarbeit mit der RAM-Floppy ähnlich wie bei physischen Disketten ein RAM-Floppy-Treiber erforderlich. Er enthält u.a.:
- einen Drive-Multiplexer als Weiche zwischen physischen und RAM-Floppy-Zugriffen (bei SCP erfordert dies eine Änderung der Rufe READ und WRITE im BIOS).
- ein Konvertierungsprogramm zur Umrechnung der physischen Diskadresse (in SCP definiert durch die BIOS-Schnittstelle DRIVE, TRACK, SECTOR) in die zugehörige RAM-Floppy-Adresse.
- den eigentlichen "Treiber" zur Realisierung des sektorweisen Datentransfers in Verbindung mit der erläuterten statischen bzw. dynamischen Seitensteuerung.
- Fehlerbehandlung und Realisierung von Sonderfunktionen (z.B. Read-after-Write-Funktion zur Erkennung von fehlerhaften Schreiboperationen auf der RAM-Floppy).

Er ist in das jeweilige Betriebssystem einzubinden. und darüber hinaus sind die Diskettenbeschreibungstabellen zu modifizieren. Unter SCP bedeutet dies die Eröffnung eines Diskparameterblockes für die RAM-Floppy. Dieser beschreibt dann das Format der RAM-Floppy, die hinsichtlich Speicherkapazitäten, Anzahl der Systemspuren usw. nicht notwendigerweise mit dem Format der physischen Diskette Übereinstimmen muß.

Praktische Ergebnisse

Nach dem vorgegebenen Prinzip wurde eine 256-K-RAM-Floppy, bestehend aus dem eigentlichen RAM-Floppy-Treiber und einem 256-K-DRAM-Speicher mit 4 Bänken zu je 64 KByte, realisiert und im Bürocomputer A5120 eingebaut. Das Betriebssystem SCP wurde in einer in seinen Grundkomponenten CCP, BDOS und BIOS entsprechend modifizierten und erweiterten Version SCPNET V1.2 implementiert. Die aus der Literatur und theoretischen Betrachtungen erwartete Verkürzung der Reaktionszeiten hat sich in jeder Hinsicht bestätigt. Die bei typischen Programmieraktivitäten gemessene Geschwindigkeitssteigerung bewegt sich im Verhältnis 1:3 bis 1:10, das heißt, die unangenehmen Wartezeiten haben sich drastisch verringert (Tafel 3). Die Geschwindigkeitsvorteile äußern sich speziell beim iterativen Prozeß der Programmerstellung von Mikrorechnersoftware auf Grund des notwendigen häufigen Programmwechsels, aber auch bei der Arbeit mit Datenbanksystemen und bei der Textverarbeitung in einem deutlichen Effektivitätszuwachs des Programmierers. Darüber hinaus wird das Arbeiten mit der RAM-Floppy durch die in vielen Fällen augenblickliche Reaktion des Systems und den damit verbundenen Tempogewinn auch subjektiv als sehr angenehm empfunden.
Für die praktische Arbeit mit der RAM-Floppy sind noch einige Sonderfunktionen von Bedeutung:

Das System ist gleichzeitig für den Anschluß an eine Festplatte über ein lokales Netz mit Lichtwellenleiterkopplungen vorbereitet. Dazu enthält das Betriebssystem SCPNET für die Arbeit mit virtuellen Disketten über die virtuellen Laufwerke D...I softwareseitige Erweiterungen.
Das System ist ab sofort nachnutzbar.

Literatur

[1] Eisenack, G.; Fingberg, H.: "RAM-Floppy"-Laufwerk beschleunigt den Zugriff. Elektronik (1985)24, S.85-90
[2] Gassner, S.: Meier, R.: Halbleiterfloppy sind schneller... Elektrotechnik 65(1983)9, S.19 bis 21
[3] Joepgen, H.: Virtuelle Floppy, mc (1983)9, S.47-49
[4] Sternberg, G.: Ein RAM-Floppy für den MC-CP/M Computer. mc(1985)6, S. 86-96


66 KByte 72 KByte 72 KByte
Bild 1 Bild 2 Bild 3

119 KByte 119 KByte
Bild 4 Bild 5

41 KByte 34 KByte 103 KByte
Tafel 1 Tafel 2 Tafel 3