-
Verfahren zum Zwischenspeichern von Informationen
-
in einen FIFO-Speicher Die vorliegende Erfindung betrifft ein Verfahren
zum Zwischen speichern einer Mehrzahl von Informationen in einen FIFO-Speicher,
bei dem Informationen in beliebiger Reihenfolge eingeschrieben und ausgelesen werden.
Derartige Speicher zeichnen sich dadurch aus, daß die zuerst eingegebene Information
auch als erste wieder ausgelesen wird. Dies ist dann beispielsweise der Fall, wenn
die Zustandsmeldungen, die nacheinander anfallen, in der gleichen Reihenfolge wieder
abgearbeitet werden sollen. Diese Zustandsmeldungen gelangen dann in der Reihenfolge
ihres Auftretens in den Speicher und werden, sobald die hierfür geeigneten Steuereinrichtungen
frei sind, und auch gerade keine neuen Eingabewünsche vorliegen, in der Reihenfolge
ihrer Eingabe wieder abgearbeitet.
-
Dieses an sich bekannte Verfahren ist symbolisch in den Figuren 1
und 2 dargestellt. Fig.7 zeigt in symbolischer Darstellung einen FIFO-Speicher (S),
in dem nacheinander die durchnumerierten Zeilen 1 bis n vorgesehen sind. Mit Hilfe
von Eingabeadressen E wird, beginnend mit der Eingabeadresse "1" nacheinander eine
Zeile des Speichers nach der anderen mit Meldungen vollgeschrieben. Durch einen
Pfeil bei E in Fig.1 ist angedeutet, in welcher Richtung die Eingabeadresse E ansteigen
und in welcher Richtung somit die einzelnen Zeilen nacheinander vollgefüllt werden.
Wie aus Fig.1 ersichtlich, ist als letzte Eingabeadresse gerade die Adresse m verwendet
worden, so daß diese Zeile die letzte volle Zeile ist.
-
Die mit Meldungen angefüllten Zeilen sind symbolisch durch Strichlinien
ausgefüllt, während Frei-Zeilen ungestrichelt gezeichnet sind.
-
Aus Fig.1 ist weiterhin zu erkennen, daß die ersten Zeilen ~1" bis
"k" durch eine entsprechende Adressierung mittels der Ausgabeadresse A ausgelesen
wurden, so daß diese Zeilen wieder frei sind. Das Auslesen geschieht immer dann,
wenn eine angeschlossene Bearbeitungseinheit hierzu in der Lage ist. In diesem Falle
wird die nachfolgende Ausgabeadresse A auf den Speicher S angewendet, und die so
gegebene Zeile geleert. Aus Fig.1 ist ersichtlich, daß die zuletzt ausgelesene Ausgabeadresse
die Nr."k" hatte. Die Richtung, in der die Ausgabeadresse fortschreitet, ist ebenfalls
durch einen Pfeil angedeutet.
-
In Fig.1 ist weiterhin festgehalten, daß mit dem Vollschreiben auf
der letzten Eingabeadresse E mit der Nr."n" der Speicher S nicht unbedingt vollkommen
voll sein muß, da in der Zwischenzeit schon eine ganze Reihe von am Anfang des Speichers
S liegende Zeilen (in Fig.1 beispielsweise die Zeilen 1 bis "k") wieder ausgelesen
sein können.
-
Der Adressengeber, welcher die für das Eingaben zur Verfügung stehenden
freien Zeilen benennt, wird also zyklisch umlaufen und von der Eingabeadresse "n"
auf die Eingabeadresse Nr."1 n zurückspringen. Entsprechendes gilt für die Ausgabeadresse.
Dieser Vorgang ist durch eine mit einem Pfeil versehene Verbindungslinie zwischen
der letzten Zeile n und der ersten Zeile 1 angedeutet.
-
Bei der Einspeicherung von Meldungen in den FIFO-Speicher S muß nun
sichergestellt werden, daß nicht Meldungen in Zeilen eingeschrieben werden können,
die bereits voll sind.
-
Anders ausgedrückt bedeutet dies, daß ein voller FIFO-Speicher keine
Meldungen mehr aufnehmen darf.
-
Im Prinzip ist es nun möglich, aufgrund des Vergleichs der beiden
Adressen A und E eine Aussage zu machen, ob der Speicher S voll ist oder nicht.
Nimmt man nämlich in Fig.1 an, daß der verarbeiteten Einheit aus hier nicht zu erörternden
Gründen eine Abarbeitung der hinter der Zeile "k" liegenden Zeile Z gerade nicht
möglich ist, und daß aber ständig neue Meldungen eingegeben werden, so wird der
Speicher, nachdem er bis zu seinem unteren Ende mit der Zeile "n" vollgefüllt ist,
auch von oben her beginnend mit der Zeile "1" in Richtung zur Zeile k hin aufgefüllt.
Es läßt sich daher sagen, daß, sobald die Eingabeadresse E die Ausgabeadresse A
erreicht, (die Differenz zwischen der letzten Ausgabeadresse und der letzten Eingabeadresse
also 0 wird) der Speicher voll sein muß. Leider ist aber dies einfache Kriterium
doppeldeutig.
-
Dies läßt sich daran erkennen, wenn man in Fig.1 annimmt, daß die
Eingabeadresse E festgehalten wird, also keine weiteren Eingaben erfolgen und die
Verarbeitungseinheit eine Zeile nach der anderen abarbeitet, so daß sich die Ausgabeadresse
A ständig erhöht. Hier wird schließlich ein Zeitpunkt erreicht, bei dem die letzte
Ausgabeadresse A gleich der letzten Eingabeadresse E ist. Es liegt also das gleiche
für einen vollen Speicher angegebene Kriterium vor, nur mit dem Unterschied, daß
diesmal der Speicher vollkommen leer ist.
-
Es läßt sich nun zwar durch zusätzliche Kriterien eine Unterscheidung
schaffen, wann bei der Bedingung A 5 E der Speicher voll ist und wann er in diesem
Falle leer ist. Ein derartiges Kriterium kann beispielsweise dadurch gefunden werden,
daß man bei erzielt er Adressengleichheit noch beachtet, welche der beiden Adressen
zuletzt verändert wurde. Wurde nämlich zuletzt die Ausgabeadresse geändert, führt
also eine Ausgabe zu dem Ergebnis A P E, so ist der Speicher leer, während in dem
umgekehrten Falle, indem also eine Eingabe zu der Ergebnis E - A führt,
der
Speicher gerade vollgefüllt wurde. Derartige Abhängigkeiten lassen sich nun nur
durch relativ komplizierte Schaltungen logisch darstellen.
-
Aufgabe der Erfindung ist es, ein Verfahren anzugeben, durch welches
mittels einer einfach ausgestalteten Schaltung eine Überlastung des FIFO-Speichers
S verhindert werden kann. Die Lösung dieser Aufgabe ist in dem Hauptanspruch dargelegt.
-
Die Erfindung besteht also im Prinzip darin, nicht die beiden Adressen
miteinander zu vergleichen, bei denen zuletzt die Ausgabe bzw. Eingabe erfolgt ist,
sondern hinsichtlich der Eingabeadresse die Adresse zu verwenden, die als nächste
für die Eingabe vorgesehen ist. Hat also, wie bei Fig.1 gezeigt, die letzte Adresse
E,bei der eingegeben wurde, den Wert "m", so wird die Adresse "m + 1" mit der Ausgabeadresse
A verglichen, bei der zuletzt eine Zeile freigemacht wurde, also in Fig.1 die ZeileNr."k".
-
Ein Ausführungsbeispiel der Erfindung wird nachfolgend anhand der
Zeichnung erläutert. Darin zeigt: Fig.1 in symbolischer Darstellung einen FIFO-Speicher
zur Erläuterung der bekannten Ein- und Ausgabe verfahren, und Fig.2 ebenfalls in
symbolischer Darstellung einen weiteren FIFO-Speicher, an dem die Wirksamkeit des
erfindungsgemäßen Verfahrens aufgezeigt werden kann.
-
Fig.2 zeigt einen gegenüber Fig.1 fortgeschrittenen Zustand der Zwischenspeicherung
von Meldungen. Gegenüber Fig.1 sind in Fig.2 schon alle Zeilen "1" bis "e" abgearbeitet,
während
in die hierdurch frei gewordenen Zeilen Z bis zur Zeile Nr."h" neue Meldungen eingegeben
wurden, nachdem der FIFO-Speicher S vorher schon bis zur Zeile n vollgeschrieben
war.
-
Wendet man nun das erfindungsgemäße Verfahren auf die Konstellation
nach Fig.2 an, so kann man sich vorstellen, daß aus irgendwelchen Gründen eine weitere
Ausgabe und damit ein Entleeren der gefüllten Zeile Nr."e+1" unterbleibt. Die letzte
angewendete Ausgabeadresse A hat also die Nummer "e". An dieser Größe von A wird
sich, wie schon erläutert, auch nichts ändern, während der Speicher S, ausgehend
von der Eingabeadresse Nr."h", immer mehr aufgefüllt wird. Zu irgendeinem Zeitpunkt
wird dann der Moment gekommen sein, wo die Eingangsadresse den Wert "e-1" hat, so
daß also diese Zeile ebenfalls ausgefüllt ist. Ist dieser Moment erreicht, so lautet
die Adresse der Zeile, die als nächste vollgeschrieben werden soll Nr."e". Wendet
man jetzt das erfindungsgemäße Verfahren an, so ist die letzte Ausgabeadresse "e"
und die nächste Einschreibeadresse ebenfalls "e", die Differenz dieser beiden Adressen
ist also Null. Dieses sehr einfach zu gewinnende Kriterium wird erfindungsgemäß
dafür ausgewertet, die Zufuhr weiterer Meldungen zu dem Speicher S zu sperren.
-
Wie sich zeigt, versagt also das Verfahren hinsichtlich der Anzeige
eines vollen Speichers nicht, es muß allerdings festgestellt werden, daß bei der
einfachsten Ausführung immer eine einzige Zeile (im vorliegenden Ausführungsbeispiel
ist es gerade die Zeile "e") nicht gefüllt werden kann.
-
Somit verbleibt nur noch der Nachweis, daß es bei leerem Speicher
nicht zu der eingangs erläuterten Doppeldeutigkeit
kommt. Dies soll
nachfolgend anhand der Konstellation nach Fig.1 nachgewiesen werden. Geht man nämlich,
wie in Fig.l dargestellt, davon aus, daß eine weitere Eingabe von Meldungen und
damit ein Anwachsen der Eingabeadresse E unterbleibt, diese also ihren Wert "m"
beibehält, während durch Abarbeiten der einzelnen Zeilen die Ausgabeadresse A ausgehend
von "k" in Richtung "m" wächst, so erhält man schließlich den Zustand, daß A = E
= m gilt, der Speicher S also leer ist. In diesem Falle wird aber nicht die Zufuhr
weiterer Meldungen für den Speicher S unterbrochen, da ja die erfindungsgemäße Bedingung
nicht erfüllt ist. Dies kommt daher, daß bei dem Vergleich der Adressen E = m+1
mit A P m für diesen gegebenen Zustand miteinander verglichen werden. Eine Übereinstimmung
der beiden miteinander verglichenen Adressen ist also hier nicht gegeben, und es
wird folglich auch nicht die Zufuhr weiterer Meldungen zu dem Speicher unterbrochen.
-
Es ist aber auch ausgeschlossen, daß sich im vorliegenden Fall der
Wert der Ausgabeadresse über "m" anwachsen könnte, da Ja die letzte überhaupt verfügbare
Meldung in der Zeile m eingeschrieben steht, die Zeilen also mit höheren Adressen
gar nicht abgerufen werden können.
-
L e e r s e i t e