-
Die vorliegende Erfindung betrifft ein Verfahren und eine
Vorrichtung zur parallelen Zuordnung von Speicherbereichen in
elektronischen Computern.
-
In elektronischen Computern, wie eine Speichervorrichtung
einschließenden Mikrocomputern, muß bisher benutzt gewesener
Bereich im Speicher auf eine wirkungsvolle Weise zur
Wiederverwendung verfügbar gemacht werden. Fig. 1a stellt die
Beziehung zwischen einer Verarbeitungsvorrichtung und einer
Speichervorrichtung mit der Möglichkeit zur Steuerung der
Speicherbereichsverwendung dar.
-
Unter Bezugnahme auf Fig. 1a umfaßt eine
Speichervorrichtung 100 einen Verteilerteil (Zuordnungsteil) 100a, einen
Speicherteil 100b, einen Verzögerung-Verarbeitungsteil
(Zurückstellungsteil) 100c und einen Löschsteuerteil 100d. Die
Übertragungskanäle 101 und 102 führen jeweils von der
Verarbeitungsvorrichtung 103 zur Speichervorrichtung 100 bzw. von der
Speichervorrichtung 100 zur Verarbeitungsvorrichtung 103.
-
Jeglicher Austausch von Informationen zwischen der
Betriebsvorrichtung 103 und der Speichervorrichtung 100
geschieht durch die Übertragung einzelner Datenpakete, die im
folgenden mit "Token" bezeichnet werden. Beim Empfang eines
Speicherbereichsanforderung-Tokens 104 im Verteilerteil 100a der
Speichervorrichtung 100 schickt dieser eine Anfangsadresse für
den Bereich (was von der erforderlichen Bereichsgröße abhängt)
in Gestalt eines Tokens 105. Der Speicherteil 100b kann ferner
ein Schreib-Token 106 oder ein Leseanforderung-Token 107
empfangen. Als Antwort auf das erstere trägt der Speicher 100b
den Parameter V in die Adresse A ein, und als Antwort auf das
letztere liest er den Inhalt V der Adresse A aus und schickt den
Befund zur Verarbeitungsvorrichtung 103 in Gestalt eines Daten-
Tokens 108. Außer im Falle eines Schreib-Tokens WRT besteht die
Notwendigkeit einer Antwort zur Verarbeitungsvorrichtung, und
derartige Antworten sind durch die Parameter Ra identifiziert.
Zwischen dem Verzögerung-Verwaltungsteil 100c oder der
Löschsteuervorrichtung 100d und der Betriebsvorrichtung 103
werden keine Token direkt verschickt. Der
Verzögerung-Verwaltungsteil 100c und der Speicherteil 100b führen jeweils die
Funktionen einer Abwicklung von Leseanforderung-Token in
Zusammenhang mit noch nicht im Speicherteil eingetroffenen Daten
bzw. einer Löschung von Speicherbereich, dessen Nutzung die
Löschsteuervorrichtung 100d abgeschlossen hat, durch. Die
unterschiedlichen Tokenarten lassen sich anhand eines Codes in
jedem Token erkennen.
-
Fig. 1b stellt schematische Beispiele jeder Tokenart dar.
Unter Bezugnahme auf Fig. 1b umfaßt jedes Token vier Felder,
nämlich ein Codefeld 451, ein zweites Feld 452, ein drittes Feld
453 und ein viertes Feld 454.
-
Beim Codefeld 451 handelt es sich um dasjenige Feld, das
zur Unterscheidung verschiedener Tokenarten eingesetzt wird. Im
Beispiel der Fig. 1 sind ihm vier Bit zugewiesen, aus denen sich
sechzehn unterschiedliche Tokenarten darstellen lassen. Der
Einfachheit halber umfassen die dargestellten Felder 452 bis 454
jeweils 24 Bit, es läßt sich aber eine beliebige Länge wählen,
um einem bestimmten System gerecht zu werden. Die schattierten
Bereiche in den Diagrammen stehen für nicht benutzte Felder.
-
In den Fig. 2a bis 2c sind die Funktionen des oben
erwähnten Verteilerteils 100a und Speicherteils 100b ausführlich
dargestellt. Der Verteilerteil 100a sucht und reserviert
Speicherbereich (im folgenden mit "Bereich" bezeichnet), der
nicht benutzt ist, um den Anforderungen der
Verarbeitungsvorrichtung 103 gerecht zu werden. Dann schickt er ein Zeiger-
Token, das den reservierten Bereich für die
Verarbeitungsvorrichtung 103 identifiziert. Unter Bezugnahme auf Fig. 2a tragen
die Kanäle 201 und 202 Token jeweils von der bzw. zur
Verarbeitungsvorrichtung 103 und entsprechen den Teilen mit der
Beschriftung 101, 102 in Fig. 1a. Eine Verteilertabelle 220
umfaßt die folgenden Gegenstände: ein gültiges Markierungsflag
221, ein Größenfeld 222 und ein Anfangsadressfeld 223. Wenn das
gültige Markierungsflag 221 auf "0" steht, dann bedeutet dies,
daß der mit den assoziierten Feldern 222 und 223
zusammenhängende Bereich nicht benutzt, das heißt "frei" ist.
Das Größenfeld 222 und das Anfangsadressfeld 223 enthalten die
Größe und Anfangsadresse des freien Bereichs.
-
Die gespeicherte Adresse von jedem Bereich in Speicherteil
100b und die letzte Adresse des Bereichs umfassen ein freies
Markierungsflag 224 und ein Größenflag 225. Wenn das freie
Markierungsflag 224 auf "1" steht, dann bedeutet dies, daß sein
Bereich nicht benutzt ist; das Größenflag 225 hält den gleichen
Inhalt wie das Größenfeld der Verteilertabelle 220.
-
Zu einem von der Verarbeitungsvorrichtung 103 zur
Verteilervorrichtung 100a geschickten Bereichsanforderung-Token
SRQ 203 gehören die beiden Parameter Zr, die Größe des
erforderlichen Bereichs und Ra. Es folgt nun eine nähere
Beschreibung der Funktionsweise dieses Systems:
-
(1)
-
Unter Bezugnahme auf Fig. 2a überprüft der Verteilerteil
100a beim Eintreffen des Bereichsanforderung-Tokens 203 (SRQ)
die Verteilertabelle 220 und sucht diese nach einer Adresse ab,
die einen Wert, der in seiner Größe dem Wert für den Parameter
Zr des Bereichsanforderung-Tokens SRQ 203 entspricht, speichert.
Falls eine derartige Adresse gefunden wird, sind der Parameter
Ra der Bereichsanforderung und die Anfangsadresse des
zusammenhängenden Bereichs assoziiert. Wie die Fig. 2b zeigt,
kann beispielsweise die mit dem Bereich N zusammenhängende
Adresse lokalisiert werden, in welchem Falle ein Zeiger-Token
(PNT) 204 erzeugt wird.
-
Gleichzeitig wird in das gültige Markierungsflag der
entsprechenden Adresse in der Verteilertabelle 220 eine "0"
eingetragen. Die Eintragung "0" in das gültige Markierungsflag
221 für den Bereich N zeigt an, daß der Bereich N nun benutzt
ist.
-
Kann nicht genug Bereich gefunden werden, um die
Bereichsanforderungen des Verteilerteils 100a zu erfüllen, kommt
es zu einem Überlauf, welcher ein typisches Steuersignal
aufweist, und es erfolgt die Meldung an die
Verarbeitungsvorrichtung 103, daß der Programmablauf nicht weiter
fortschreiten kann. Da dies ohne direkten Bezug zur vorliegenden
Erfindung ist, soll es hier nicht näher besprochen werden.
-
Wenn ein Bereich (beispielsweise M) in der
Speichervorrichtung 100b bisher benutzt wurde, aber nicht mehr benutzt
wird, ermittelt die Speichervorrichtung 100b diesen Umstand.
-
Falls der Bereich neben dem Bereich M noch frei ist, dann werden
der besagte Bereich neben M und M als ein einzelner kombinierter
Bereich angesehen und als solcher in der Tabelle 220
aufgezeichnet. Falls Bereich M keinen benachbarten freien Bereich hat,
wird M allein in der Tabelle 220 aufgezeichnet. In Fig. 2b
werden die Vorgänge dargestellt, die bei Beendigung der Nutzung von
Bereich M eintreten (d.h. wenn der Bereich M frei geworden ist).
-
(2)
-
Der Speicherteil 100b untersucht das freie Markierungsflag
von Bereich M benachbarten Adressen, nämlich Adresse (SM - 1)
und Adresse (SM + ZM + 1). (SM + ZM + 1 = SN). Da das gültige
Markierungsflag der Adresse SN eine "0" ist, geschieht in Bezug
auf den benutzten Bereich N gar nichts. Da das gültige
Markierungsflag der Adresse SN - 1 eine "1" ist, ist bekannt, daß der
Bereich L frei ist. Die Anfangsadresse SL des Bereichs L wird
aus dem Größenfeld (SL = SM - ZL) errechnet. Die Anfangsadresse
SL des aus dem Zusammenfügen von Bereich L und Bereich H
gebildeten Bereichs sowie dessen Größe (ZL + ZM) werden
errechnet.
-
(3)
-
Der Verteilerteil 100a und die Verteilertabelle 220 werden
überprüft und die den Wert SL im Anfangsadressfeld haltende
Adresse herausgesucht, und der Wert ZL + ZM wird - unter
Bezugnahme auf Fig. 2c - ins Größenfeld dieser Adresse eingetragen.
-
Wenn keine freien Bereiche durch das Wirken des
Speicherteils 100b (wie in (2) oben erläutert) zusammengefügt
wurden, ist die die Anfangsadresse (SM) haltende Adresse des zu
registrierenden Bereichs nicht in der Verteilertabelle 200
vorhanden. Dementsprechend werden die Anfangsadresse SM und die
Größe ZM in eine Adresse eingetragen, in der das gültige
Markierungsflag "0" ist, und das gültige Markierungsflag ändert
sich zu "1".
-
Wenn ein Speicherblock nicht mehr benutzt wird, ist es im
oben aufgeführten System nicht möglich, die Verteilertabelle
direkt zu unterrichten und dann die Anfangsadresse des Bereichs
und die letzte Adresse gleichzeitig neu zu schreiben. Dies ist
insofern von Nachteil, als die Token zu langsam verarbeitet
werden. Weiterhin entstehen bei Durchführung der oben erwähnten
beiden Vorgänge gemäß der oben beschriebenen Vorgehensweise
logische Widersprüchlichkeiten. Unter Bezugnahme auf Fig. 3 und
Fig. 4a bis 4h wird dieses Problem nun erläutert.
-
In der Fig. 3 ist ein System gezeigt, worin der
Verteilerteil 100a und der Speicherteil 100b getrennt sind, und die
Übertragung zwischen ihnen wird gänzlich mittels Token
ausgeführt. Mit dem Wort "getrennt" ist im folgenden das
Kommunizieren rein durch die Verschickung von Token gemeint.
-
Die Tokenkanäle 306 und 307 verbinden in der Fig. 3 den
Verteilerteil 100a und den Speicherteil 100b. Die Kanäle tragen
ein Speicherbereichsanforderung-Token (RSV) 308 und ein
Freieplatz-Token (LIB) 309. Das Speicherbereichsanforderung-
Token ergibt sich aus der Bemühung des Verteilerteils 100a,
freien Bereich in benutzten Bereich zu verwandeln, und das
Freieplatz-Token (LIB) 309 ergibt sich aus dem Verfügbarwerden
von freiem Bereich, was in der Verteilertabelle aufgezeichnet
werden muß. Die Probleme dieses Systems werden unter Bezugnahme
auf die Fig. 4a bis 4h erläutert. Fig. 4a zeigt die gleiche Art
von Situation wie Fig. 2a, und ein Speicherbereichsanforderung-
Token (SRQ) 303 wird gerade von der Verarbeitungsvorrichtung 103
geschickt. Im Speicher sind die Bereiche L und N frei, und
Bereich M wird benutzt. Der Vorgang wird im Anschluß erläutert:
-
(1)
-
Beim Eintreffen eines Speicherbereichsanforderung-Tokens
SRQ (303) prüft der Verteilerteil 100a nach, ob zur Befriedigung
der Anforderung noch ausreichend freier Bereich vorhanden ist.
Nimmt man an, daß der Bereich N (den angeforderten Bereich) Zr
unterbringen kann, wird Bereich N in der Verteilertabelle
nachgeschlagen. Der Verteilerteil 100a liest die Vorschubadresse
SN und -größe ZN aus der Verteilertabelle ab, fügt diesen den
Parameter Ra des Speicherbereichsanforderung-Tokens hinzu, und
schickt - unter Bezugnahme auf Fig. 4b - den Befund als ein
Zeiger-Token 404 zur Verarbeitungsvorrichtung 103. Gleichzeitig
erfolgt die Verschickung eines SN und ZN als Parameter
umfassenden Bereichsreservier-Tokens (RSV) 408 zum Speicherteil
100b. Dann wird das gültige Markierungsflag der dem Bereich N
entsprechenden Adresse in der Verteilertabelle zu "0" geändert.
-
(2)
-
Beim Empfang des Bereichsreservier-Tokens 408 (RSV) im
Speicherteil 100b wird in die freien Markierungsflags der ersten
und der letzten Adresse des Bereichs N eine "0" eingetragen und
dies zeigt an, daß der Bereich N benutzt ist. Die Adressen SN
sowie (SN + ZN - 1) des jeweils ersten bzw. letzten Wortes
werden aus den Parametern des Bereichsreservier-Tokens RSV 408
errechnet. Die Resultate verhalten sich so, wie in Fig. 4c
gezeigt.
-
Der Speicherteil 100b ermittelt den Abschluß der Nutzung
eines Speicherbereichs und ändert das gültige Markierungsflag
des Bereichs zu "1". Auch die Verteilertabelle muß aktualisiert
werden. In Fig. 4d ist der Fall dargestellt, in dem der Bereich
M nicht mehr benutzt wird.
-
(3)
-
Bei Ermittlung, daß der Bereich M nicht mehr benutzt wird,
trägt der Speicherteil 100b eine "1" in die gültigen
Markierungsflags der ersten und der letzten Adresse des Bereichs
M ein. Um zu bestimmen, ob die Nachbarbereiche gegebenenfalls
frei sind, liest er als nächstes die M benachbarten Adressen
aus, nämlich (SM + 1) und (SM + ZM). Folglich wird bekannt, daß
der Bereich L frei ist. Daraus werden die Anfangsadresse und
Größe des durch Zusammenlegung von L und M gebildeten Bereichs
und die Parameter (SL und ZL + ZM in Fig. 4d) in Gestalt eines
Freieplatz-Tokens (LIB) 409 zum Verteilerteil 100a geschickt.
-
Unter Bezugnahme auf Fig. 4d sei die Situation betrachtet,
worin an dieser Stelle ein neues Bereichsanforderung-Token 410
von der Verarbeitungsvorrichtung 103 eingetroffen ist.
-
Falls das Freieplatz-Token vor dem Bereichsanforderung-
Token eintrifft, gilt:-
-
(3')
-
Beim Empfang eines Freieplatz-Tokens 409 im Verteilerteil
100a löst dieser seinen Adreßparameter SL heraus und sucht nach
der Adresse in der Verteilertabelle, welche den Parameter SL als
eine Anfangsadresse hält. Unter Bezugnahme auf Fig. 4d folgt
daraus, daß die Adresse 430 in der Verteilertabelle lokalisiert
und eine neue Bereichsgröße (ZL + ZM) in sie eingetragen wird.
Die sich ergebende Verteilertabelle verhält sich so, wie in Fig.
4e gezeigt ist.
-
Der Abschluß des obigen Freieplatz-Vorgangs erfolgt ohne
Widersprüchlichkeiten, falls jedoch in derselben Situation wie
der in Fig. 4d dargestellten das Bereichsanforderung-Token 410
vor dem Freieplatz-Token 409 eintrifft, dann treten
Widersprüchlichkeiten auf. Dies wird wie folgt erläutert:-
-
(4)
-
Beim Eintreffen des Bereichsanforderung-Tokens 410 sucht
der Verteilerteil 100a freien Bereich und lokalisiert
beispielsweise Bereich L. Unter Bezugnahme auf Fig. 4f werden
folglich ein Zeiger-Token 411 und ein Bereichsanforderung-Token
412 erzeugt und gleichzeitig eine "0" in das gültige
Markierungsflag der entsprechenden Adresse 430 eingetragen.
-
(5)
-
Beim anschließenden Erreichen des Verteilerteils 100a sucht
das Freieplatz-Token 409 in der Verteilertabelle eine Adresse
mit der Anfangsadresse SL. Es wird keine derartige Adresse
gefunden, da das gültige Markierungsflag der Adresse 430 auf "0"
steht und deshalb werden - wie die Fig. 4g zeigt - die
Anfangsadresse SL und Größe (ZL + ZM) als ein neuer Bereich in
die Tabelle eingetragen. Ein Bereichsanforderung-Token 412 (in
Fig. 4f gezeigt) trifft am Speicherteil 100b ein, und der
Speicherteil 100b trägt folglich "0" in das gültige
Markierungsflag des mit der Adresse SL beginnenden Bereichs ein.
-
Die Gestalt von Token RSV 408 der Fig. 4b, 4d und 4f und
das Token LlB 409 sind in Fig. 4h gezeigt. In den gleichen
Abbildungen stehen 491 bis 494 entsprechend für 451 bis 454 der
Fig. 1b.
-
Unter Bezugnahme auf Fig. 4g zeigt die Adresse 430 an, daß
der Bereich mit der Anfangsadresse SL und Größe (ZL + ZM) frei
ist, selbst wenn jener Bereich benutzt ist, und der Inhalt des
Verteilerteils und des Speicherteils stimmen deshalb nicht
überein. Die Wurzel dieses Problems liegt in der Existenz eines
Zeitraums zwischen der Zeit, zu welcher der Bereich M nicht mehr
benutzt und durch den Speicherteil 100b benachbarte Bereiche
zusammengefügt sind, und der Zeit, zu welcher die sich daraus
ergebenden Resultate in die Verteilertabelle eingetragen sind,
und der erfolgten Einleitung eines Bereichsanforderung-Vorgangs
während dieses Zeitraums. Es muß notwendigerweise eine spezielle
Signalleitung zwischen dem Speicherteil 100b und dem
Verteilerteil 100a errichtet werden, damit derartiges vermieden
und die Ausführung einer Bereichsanforderung in der oben
erwahnten Zeit verhütet wird. Beim Freiwerden von
Speicherbereich muß unbedingt bestimmt werden, ob es
gegebenenfalls eine entsprechende Speicheradresse in der
Verteilertabelle gibt, und das braucht seine Zeit.
-
Falls mehrere Verteilerteile 100a, 100a' bei dem Versuch
einer Lastverteilung des Verteilervorgangs parallel verarbeitet
werden, muß - unter Bezugnahme auf Fig. 5 - notwendigerweise die
gesamte Verteilertabelle durchsucht werden und die Steuerung ist
sehr kompliziert.
-
Es ist eine Aufgabe der vorliegenden Erfindung, die oben
aufgeführten Nachteile zu umgehen oder zu mildern.
-
Die vorliegende Erfindung liefert ein Verfahren zur
parallelen Zuordnung von Speicherbereichen, bei welchem ein
Verteilerteil einschließlich einer Serie von Zuordnern die
Zuordnung von Speicherbereichen in einem Speicherteil regelt,
worin jeder zur Nutzung verfügbare Speicherbereich mit einem
jeweiligen Zuordner assoziiert ist und eine Kennung für den
jeweiligen Zuordner speichert, Daten, die nicht benutzte
Zuordner identifizieren, gespeichert werden, eine Liste von mit
zur Nutzung verfügbaren Bereichen assoziierten Zuordnern
gespeichert wird, eine Überprüfung jedesmal erfolgt, wenn ein
Speicherbereich nicht mehr benutzt wird, um die Zuordnerkennung
irgendeines, zur Nutzung verfügbaren und mit dem nicht mehr
benutzten Speicherbereich kombinierbaren Bereichs zu bestimmen,
für einen nicht mehr benutzten Bereich Freieplatzdaten erzeugt
werden, wobei die Freieplatzdaten eine erste Kennung, welche die
Kennung eines aus den nicht benutzten Zuordnern ausgewählten
Zuordners ist, und eine zweite Kennung enthalten, welche die
Kennung des Zuordners ist, der mit irgendeinem mit dem nicht
mehr benutzten Bereich kombinierbaren Bereich in Zusammenhang
steht, der Verteilerteil die zweite Kennung durchsieht und in
der besagten Liste nach dem mit der zweiten Kennung assoziierten
Zuordner sucht und, falls die Liste den assoziierten Zuordner
nicht enthält, den mit der ersten Kennung assoziierten Zuordner
in die Liste mit passenden Bereichskennungsdaten einträgt, um
anzuzeigen, daß der bisher benutzte Bereich nun zur Nutzung
verfügbar ist, falls aber die Liste den assoziierten Zuordner
enthält, Bereichskombinierungsdaten erzeugt, was erstens dazu
führt, daß die Bereiche kombiniert werden, und zweitens dazu,
daß der mit der ersten Kennung assoziierte Zuordner in die Liste
mit zum kombinierten Bereich passenden Bereichskennungsdaten
eingetragen wird.
-
Die vorliegende Erfindung liefert ferner eine Vorrichtung
zur parallelen Zuordnung von Speicherbereichen mit einem
Verteilerteil einschließlich einer Serie von Zuordnern und einem
Speicherteil, in welchem die Zuordnung von Speicherbereichen
durch den Verteilerteil geregelt ist, wobei die Vorrichtung
folgendes umfaßt: Mittel zur Speicherung einer jeweiligen
Zuordnerkennung in jedem zur Nutzung verfügbaren
Speicherbereich, Mittel zur Speicherung von Daten, die nicht
benutzte Zuordner identifizieren, Mittel zur Speicherung einer
Liste von mit zur Nutzung verfügbaren Bereichen assoziierten
Zuordnern, Mittel zur Ermittlung, wann ein Speicherbereich nicht
mehr benutzt ist, Mittel zur Bestimmung der Zuordnerkennung
irgendeines, zur Nutzung verfügbaren und mit einem ermittelten,
nicht mehr benutzten Speicherbereich kombinierbaren Bereichs,
Mittel zur Erzeugung von mit einem ermittelten, nicht mehr
benutzten Speicherbereich in Zusammenhang stehenden
Freieplatzdaten, wobei die Freieplatzdaten eine erste Kennung,
welche die Kennung eines aus den nicht benutzten Zuordnern
ausgewählten Zuordners ist, und eine zweite Kennung umfassen,
welche die Kennung des Zuordners ist, der mit irgendeinem, mit
dem nicht mehr benutzten Bereich kombinierbaren Bereich in
Zusammenhang steht, Mittel zum Durchsuchen der besagten
gespeicherten Liste nach der zweiten Kennung, Mittel zum
Eintragen des mit der ersten Kennung assoziierten Zuordners in
die Liste mit passenden Bereichskennungsdaten, falls die zweite
Kennung nicht in der durchsuchten Liste gefunden wird, Mittel
zur Erzeugung von Bereichskombinierungsdaten, falls die zweite
Kennung in der durchsuchten Liste gefunden wird, Mittel, die auf
die Bereichskombinierungsdaten ansprechen, um erstens die
Bereiche, die mit den ersten und zweiten Kennungen in
Zusammenhang stehen, zu kombinieren und um zweitens den mit der
ersten Kennung assoziierten Zuordner in die besagte Liste mit
zur kombinierten Liste passenden Bereichskennungsdaten
einzutragen.
-
Die vorliegende Erfindung wird nachfolgend beispielhaft
anhand der beigefügten Zeichnungen beschrieben. Es zeigen:
-
Fig. 1a ein Blockdiagramm einer Verteilerverarbeitung-
Vorrichtung gemäß dem Stand der Technik;
-
Fig. 1b ein schematisches Diagramm der Gestalt der in der
Vorrichtung der Fig. 1a eingesetzten Token;
-
die Fig. 2a bis 2c, Fig. 3, die Fig. 4a bis 4h und Fig. 5
schematische Diagramme zur Darstellung eines
Verteilervorgangs gemäß dem Stand der Technik;
-
Fig. 6 ein schematisches Diagramm zur Darstellung einer
Speicherverteiler-Vorrichtung gemäß der vorliegenden
Erfindung;
-
Fig. 7 ein schematisches Diagramm von Komponenten der
Vorrichtung der Fig. 6;
-
die Fig. 8a bis 8h eine Darstellung zum Betrieb der Vorrichtung
der Fig. 6 und Fig. 7; und
-
die Fig. 9a bis 9e eine Darstellung einer weiteren
erfindungsgemäßen Ausführungsform.
-
Unter Bezugnahme auf Fig. 6 steht das Zahlzeichen 1 für
eine der Verarbeitungsvorrichtung 103 in Fig. 1a entsprechende
Verarbeitungsvorrichtung. Die Zahlzeichen 2 und 3 bezeichnen
jeweils einen Verteilerteil bzw. einen Speicherteil, die jeweils
dem Verteilerteil 100a bzw. dem Speicherteil 100b in Fig. 1a
entsprechen. Die Zahlzeichen 4 und 5 bezeichnen
Übertragungsvorrichtungen, die Token zwischen der Verarbeitungsvorrichtung
1 und dem Verteilerteil 2 und dem Speicherteil 3 übertragen, und
jeweils den Kanälen 101 bzw. 102 in Fig. 1a entsprechen.
-
Im Verteilerteil 2 speichert ein Puffer 2a vorübergehend
vom Übertragungsteil 4 geschickte Token. Zahlzeichen 2b
bezeichnet einen Steuerteil, der die eingetragene Tokenart
bestimmt und je nach Art entweder die Parameter des Tokens in
Speicher 2c speichert oder den Inhalt des Speichers 2c ausliest.
Zahlzeichen 2d bezeichnet einen Puffer, dessen Zweck darin
besteht, Token vom Steuerteil 2b zur Übertragungsvorrichtung 5
zu übertragen.
-
Im Speicherteil 3 bezeichnet Zahlzeichen 3a einen Puffer,
der vorübergehend von der Übertragungsvorrichtung 4 geschickte
Token speichert. Zahlzeichen 3b bezeichnet einen Steuerteil, der
den eingetragenen Tokentypus bestimmt und je nach Typus entweder
die Parameter des Tokens in einem Speicher 3c speichert oder den
Inhalt des Speichers 3c ausliest. Zahlzeichen 3d bezeichnet
einen Puffer, dessen Zweck darin besteht, vom Steuerteil 3d zur
Übertragungsvorrichtung 5 geschickte Token zu übertragen.
-
Unter Bezugnahme auf Fig. 7 wird der Aufbau der Speicher 2c
und 3c jeweils im Verteilerteil 2 bzw. dem Speicherteil 3
erläutert. In der Fig. 7 bezeichnet das Zahlzeichen 30 einen
Speicherbereich im Speicher 2c des Verteilerteils 2, und
Zahlzeichen 31 bezeichnet den Speicherbereich im Speicher 3c des
Speicherteils 3. Zahlzeichen 32, 33, 34 und 35 stehen für die
Kanäle, über welche Token verschickt und empfangen werden, und
entsprechen den Übertragungsvorrichtungen 4 und 5 in Fig. 6.
Zahlzeichen 603 bezeichnet ein Bereichsanforderung-Token,
Zahlzeichen 604 bezeichnet ein Zeiger-Token, Zahlzeichen 608
bezeichnet ein Bereichsreservier-Token, Zahlzeichen 609
bezeichnet ein Freieplatz-Token, und diese entsprechen jeweils
den Token 303, 304, 308 und 309 aus Fig. 3. Zahlzeichen 613
bezeichnet ein Bereichskombinierung-Token (CMB), Zahlzeichen 614
bezeichnet ein Freizuordner-Token (FDA). Zahlzeichen 630 bis 632
bezeichnen Zuordner, und einer der Zuordner entspricht dem
freien Bereich im Speicherteil 3 der Fig. 6. Die Zuordner 630
bis 632 bilden eine Doppelkettenserie, die aus den vier Worten
F-Link, B-Link, Größe und Anfangsadresse besteht. F-Link und B-
Link zeigen jeweils den nächsten Zuordner in der Serie bzw. den
vorherigen Zuordner in der Serie. Die Größe und Anfangsadresse
stehen mit den entsprechenden freien Bereichen in Zusammenhang.
-
Zahlzeichen 636 bezeichnet das gültige Markierungsflag, welches
den Zeitpunkt einer Entsprechung des Zuordners mit einem freien
Bereich anzeigt. Die erste und die letzte Adresse des freien
Bereichs innerhalb des Speichers 31 enthält die
zusammenhängenden Verteilerinformationen. Die erste oder
Anfangsadresse umfaßt ein gültiges Markierungsflag 633, einen
Zuordnerzeiger 634, und ein Größenfeld 635, aber nur das letzte
Wort weist das gültige Markierungsflag und das Größenfeld auf.
Das gültige Markierungsflag 633 ist "1", wenn der Bereich frei
ist, und "0", wenn der Bereich benutzt ist. Der Zuordnerzeiger
634 hält die Adresse innerhalb des Verteilerteils 2 des
Zuordners, der mit dem Bereich in Zusammenhang steht. In einem
benutzten Bereich gibt es nur das gültige Markierungsflag 633
und das Größenfeld 635 der Beginnadresse und der Letztadresse.
-
Es folgt die Erläuterung eines Beispiels zum Verfahren der
Speicherbereichsverteilung im Einklang mit der vorliegenden
Erfindung. Die Fig. 6 und 7 zeigen nur ein Beispiel eines
Detailaufbaus gemäß der vorliegenden Erfindung. Beispielsweise
beschränkt sich die vorliegende Erfindung nicht unbedingt auf
die Puffer 2a und 2d sowie den Steuerteil 2b im Verteilerteil.
Der Grundbetrieb dieses Beispiels der vorliegenden Erfindung
wird am ehesten aus den Fig. 8a bis 8f verständlich.
-
(a) Beim Eintreffen eines Bereichsanforderung-Tokens 603 tastet
der Verteilerteil 2 die Zuordnerserie ab und sucht einen
freien Bereich passender Größe. Auf die Entdeckung
beispielsweise von Bereich N hin liest der Verteilerteil 2
dessen Anfangsadresse SN und Größe ZN von innerhalb des
entsprechenden Zuordners A2 aus, gibt den Parameter Ra des
Bereichsanforderung-Tokens hinzu und schickt dies unter
Bezugnahme auf Fig. 8b als ein Zeiger-Token 604 zur
Verarbeitungsvorrichtung 103. Gleichzeitig schickt er ein
Bereichsreservier-Token 608 zum Speicherteil 3. Der dem
Bereich N entsprechende Zuordner A2 wird aus einer Serie
von Zuordnern genommen und wird zum freien Zuordner.
-
(b) Beim Empfang des Bereichsreservier-Tokens 608 im
Speicherteil 3 wird "0" in das freie Markierungsflag der ersten und
der letzten Adresse des Bereichs eingetragen, womit
angezeigt ist, daß dieser Bereich nun benutzt ist. Die
erste Adresse SN und die letzte Adresse (SN + ZN - 1)
werden aus den Parametern des Bereichsreservier-Tokens 608
errechnet, und folglich verhält sich der Speicherbereich
wie in Fig. 8c.
-
(c) Wenn der Verteilerteil 2 seit Freiwerden des Zuordners A2
ein Bereichsreservier-Token 608 ausgeschickt hat, wird
- wie die Fig. 8c zeigt - seine Adresse als ein Freizuordner-
Adressen-Token (FDA) 614 zum Speicherteil 3 geschickt.
-
(d) Beim Empfang von (FDA) Token 614 im Speicherteil 4
speichert dieser die Freizuordner-Adresse. Wenn ein
Speicherbereich nicht mehr benutzt wird, ermittelt der
Speicherteil 3 diesen Umstand und leitet einen Vorgang ein,
bei dem der Inhalt der Zuordnerserie innerhalb des
Verteilerteils 2 und die angezeigten Inhalte des
Speicherbereichs in Übereinstimmung gebracht werden. Eine
Beschreibung dieses Vorgangs schließt sich unten an.
-
Wird beispielsweise Bereich M nicht mehr benutzt, hat dies
- unter Bezugnahme auf Fig. 8c - die Bedeutung, daß Bereich
M nun ein freier Bereich ist.
-
(e) Nach Ermittlung, daß der Bereich M nicht mehr benutzt wird,
trägt Speicher 3 eine "1" in das freie Markierungsflag der
ersten und der letzten Adresse dieses Bereichs ein. Um zu
bestimmen, ob gegebenenfalls die Nachbarbereiche von
Bereich M frei sind, liest er dann die Adresse (SM - 1) und
die Adresse (SM + ZM), die gleich SN ist, aus, um ihre
freien Markierungsflags zu bestimmen. Es folgt daraufhin in
der in Fig. 8d dargestellten Situation die Entdeckung, daß
der Bereich L frei ist.
-
(f) Zur Erfassung von M als einen freien Bereich erzeugt der
Speicherteil 3 dementsprechend ein Freieplatz-Token (LIB)
609, wie die Fig. 8d zeigt. Dieses LIB Token weist vier
Parameter auf, nämlich:
-
(a) die Adresse A1 des dem freien Bereich L neben dem
Bereich M entsprechenden Zuordners;
-
(b) die Adresse des Bereichs M;
-
(c) die Größe des Bereichs M;
-
(d) die Adresse des dem Bereich M entsprechenden Zuordners
Ax.
-
In der Freizuordner-Adresse (beispielsweise A2), die sich
im Speicherteil 3 ansammelt, gibt es vier Parameter. Jeder
einzelne dieser vier Parameter kann von Bedeutung sein. Die
Fig. 8d zeigt genau wie in der Erläuterung der Probleme des
in den Fig. 4a bis 4h gezeigten Beispiels den Fall, bei dem
ein neues Bereichsanforderung-Token (SQR) 610 von der
Verarbeitungsvorrichtung 103 eingetroffen ist. Es gilt,
falls Token LIB 609 eingetroffen ist:
-
(g) Bei Empfang des Freieplatz-Tokens 609 empfängt der
Verteilerteil 2 aus diesem Token die Adresse A1 des Zuordners,
der dem dem Bereich M benachbarten Bereich L entspricht.
Der Verteilerteil 2 untersucht das gültige Markierungsflag
der Adresse A1. In der Fig. 8d handelt es sich bei diesem
Markierungsflag um "1" und der Verteilerteil erkennt somit,
daß Bereich L frei ist und die Bereiche L und M
zusammenfügbar sind. Wie die Fig. 8e zeigt, erzeugt er ein
Bereichskombinierung-Token (CMB) 613. Das CMB Token hält
die Anfangsadressen der beiden Bereiche SL und SM, die
zusammengefügt werden sollen. Anschließend wird "0" in das
gültige Markierungsflag des Zuordners A1 eingetragen.
-
(h) Nach Empfang des Bereichskombinierung-Tokens 613 im
Speicher 3 errechnet dieser die Anfangsadresse sowie Größe
des sich beim Zusammenfügen der beiden Bereiche L und M
bildenden Bereichs, und er trägt - wie die Fig. 8f zeigt
- die Größe (ZL plus ZM) in die Anfangsadresse SL ein. Wenn
weiterhin der kombinierte Bereich L + M nicht mehr benutzt
ist, ermittelt der Speicher 3 diesen Umstand und wiederholt
dann den oben beschriebenen Vorgang, beginnend bei
Abschnitt (e). Wo kein freier Nachbarbereich vorhanden ist,
dort wird - unter Bezugnahme auf Fig. 8f - ein "null"-
artiges LIB Token 615 erzeugt und zeigt an, daß keine einem
freien Nachbarbereich entsprechende Zuordner-Adresse
vorhanden ist.
-
(i) Beim Empfang des Freieplatz-Tokens 615 der Fig. 8f im
Verteilerteil 2 steht das gültige Markierungsflag der
Zuordner-Adresse Ax auf "0", die Anfangsadresse SL und die
Größe (ZL + ZM) wird somit in einen Freizuordner Ax
eingetragen und dieser Zuordner wird in die Zuordnerserie
eingeführt.
-
Bei angenommenem Abschluß der obigen Serie von Vorgängen
soll nun die beim Eintreffen eines Bereichsanforderung-
Tokens 610 bestehende Situation als Umstand der Fig. 8d
erläutert werden.
-
(j) Beim Eintreffen eines Bereichsanforderung-Tokens 610 tastet
der Verteilerteil 2 die Zuordnerserie ab und reserviert
beispielsweise Bereich L. Dementsprechend werden wie in
Fig. 3g ein Zeiger-Token 611 und ein Bereichsreservier-
Token 612 erzeugt. Gleichzeitig wird in das gültige
Markierungsflag des dem Bereich L entsprechenden Zuordners
A1 eine "0" eingetragen.
-
(k) Beim Empfang des Freieplatz-Tokens 609 im Verteilerteil 2
nimmt dieser den Parameter A1 aus dem Token und überprüft
das gültige Markierungsflag der Adresse A1. Dieses
Markierungsflag ist zur "0" geworden und der Verteilerteil 2
erkennt somit, daß er die Bereiche nicht zusammenfügen
kann. Damit werden die Anfangsadresse SM und die Größe ZM
des Bereichs M in die Freizuordner-Adresse Ax, die im LIB
Token 609 gehalten ist, eingetragen. Jedes der
Markierungsflags wird zu "1" gemacht, und der Zuordner Ax wird in die
Zuordnerserie eingetragen. Das Resultat verhält sich so,
wie in Fig. 8g gezeigt.
-
Die Gestalt jedes der Token RSV 608, LIB 609, CMB 613 und
FDA 614, die sich in den Fig. 8b, c, d, und e befinden,
wird in Fig. 8h gezeigt. In diesen Abbildungen entsprechen
die Zahlzeichen 691 bis 694 jeweils den Feldern 151 bis 154
in Fig. 1b.
-
Aus Fig. 8h wird offensichtlich, daß das LIB Token 609 vier
Parameter aufweist und sich vom LIB Token in Fig. 4h
unterscheidet.
-
Obwohl der Verteilerteil 2 das Freieplatz-Token (LIB) 609
empfangen hat, ist tatsächlich eine Bereichskombinierung
gelegentlich nicht durchführbar, und zwar wenn die neuen
Zuordner wie folgt in eine Serie gewechselt werden:-
-
(a) wie in (k) oben erwahnt, befindet sich der durch das
LIB Token 609 angezeigte Zuordner nicht in einer
Zuordnerserie;
-
(b) wie in (i) oben hält das LIB Token 609 gerade als
Zuordnerkennung eine "0".
-
Nur wenn bestätigt worden ist, daß die Bereiche sowohl im
Speicherteil als auch im Verteilerteil 2 kombinierbar sind,
werden Bereiche kombiniert. Dies bedeutet, daß sogar bei
Trennung des Speicherteils und des Verteilerteils 2 die richtige
Zuweisung und das richtige Zusammenfügen freier Bereiche möglich
sind. Weiterhin muß der Verteilerteil 2 nicht unbedingt die
Zuordnerserie einhalten, weil das LIB Token 609 als einen
Parameter eine Zuordner-Adresse hält, und es ist mithin rasch
bestimmbar, ob die Bereiche gegebenenfalls zusammenfügbar sind.
Sogar bei Systemen mit mehreren Verteilerteilen stellt die
vorliegende Erfindung eine Verbesserung dar.
-
Die Fig. 9a bis 9e zeigen ein Beispiel eines Systems mit
mehreren Verteilerteilen 2a und 2b.
-
Unter Bezugnahme auf Fig. 9a empfangen die Verteilerteile
2a und 2b unabhängig von der Verarbeitungsvorrichtung 1 die
Bereichsanforderung-Token 610a und 610b, und bringen - wie in
Fig. 9b gezeigt - unabhängig die Zeiger-Token 611a und 611b
sowie die Bereichsanforderung-Token 612a und 612b hervor. Dies
kann im Betrieb zu Widersprüchlichkeiten führen und es ist klar,
daß kein Konflikt aufkommen darf.
-
Es folgt als nächstes eine Erläuterung dazu, wie sich ein
Konflikt aus der Kombinierung von Bereichen in der Situation,
bei der die Nutzung eines Bereichs aufgehört hat, ergeben kann.
-
Jeder freie Bereich läßt sich in verschiedenen
Verteilerteilen eintragen. Die Fig. 9c bis 9e sollen ein
Beispiel der Situation darstellen, bei der ein Bereich B nicht
mehr benutzt wird.
-
Unter Bezugnahme auf Fig. 9d sei der dem Bereich B
benachbarte Bereich C betrachtet, und zwar wird zur Zeit, da der
Speicherteil 3 ermittelt, daß der Bereich B nicht mehr benutzt
ist, ein Freieplatz-Token 609b zu einem Verteilerteil 2b, der
einen dem Bereich C entsprechenden Zuordner hält, geschickt. In
diesem Fall sind auch Informationen zur Unterscheidung des
Verteilerteils 2 im Zuordner-Zeiger im Anfang des freien
Bereichs enthalten. Daraus läßt sich der richtige Bestimmungsort
für das freisetzende Freieplatz-Token 609b festlegen und es
müssen nicht mehr die Informationen in der Gesamtheit des
Speichers 3 - wie noch in den vorherigen Beispielen notwendig
- untersucht werden.
-
Der Verteilerteil 2b führt seinen Betrieb ganz genau wie in
der oben unter (i) beschriebenen Weise durch und schickt das
Bereichskombinierung-Token CMB an den Speicherteil 3. Der
Speicherteil 2 führt die Kombinierung genau wie in der oben
unter (j) beschriebenen Weise durch. Der Situationsverlauf,
worin ein LIB Token 615 einen Zuordner als nicht im
Verteilerteil 2 befindlich anzeigt, erfolgt entsprechend der
Beschreibung in (k) oben, und es treten keine
Widersprüchlichkeiten auf.
-
Weiterhin berücksichtigt die oben erwähnte Erklärung die
Kombinierung eines nicht mehr benutzten Bereichs und eines
benachbarten freien Bereichs. Man braucht allerdings nicht
lediglich die Kombinierung von "Nachbarbereichen" in Betracht
ziehen. Falls es beispielsweise eine Art von Beziehung gibt, bei
der die Durchführung des gleichen Vorgangs möglich ist, wobei
sich der Bereich aus der Kombination zweier getrennter Bereiche
ergibt, dann ist offensichtlich, daß das Verfahren der
vorliegenden Erfindung anwendbar ist. Eine Art von Trenn- und
Kombinationsalgorithmus ist denkbar. In K.G. Knowlton "A Fast
Storage Allocator" [Ein schneller Speicherungszuordner] (CACM
Band 8; Nr. 10; Oktober 1965; Seiten 623 bis 625) ist ein
Algorithmus beschrieben, der Speicherbereich in 2er
Potenzschritten aufteilt und kombiniert.
-
Wie oben erwähnt, werden bei der vorliegenden Erfindung
Zuordner eingesetzt, von denen jeder einem freien Bereich in der
Speichervorrichtung entspricht, jeder freie Bereich enthält
einen Zeiger zum betreffenden Zuordner und jeder Zuordner
enthält einen Zeiger zum betreffenden freien Bereich
(beispielsweise der Anfangsadresse) und irgendwelche sonstigen
gewünschten Informationen in Zusammenhang mit dem freien
Bereich, wie beispielsweise seine Größe. Beim Freiwerden eines
Speicherbereichs untersucht die Speichervorrichtung, ob
gegebenenfalls jener Bereich mit einem anderen freien Bereich
kombinierbar ist.