DE69012820T2 - Nicht-besetzt-wartezustandsmittelsteuerung. - Google Patents
Nicht-besetzt-wartezustandsmittelsteuerung.Info
- Publication number
- DE69012820T2 DE69012820T2 DE69012820T DE69012820T DE69012820T2 DE 69012820 T2 DE69012820 T2 DE 69012820T2 DE 69012820 T DE69012820 T DE 69012820T DE 69012820 T DE69012820 T DE 69012820T DE 69012820 T2 DE69012820 T2 DE 69012820T2
- Authority
- DE
- Germany
- Prior art keywords
- auxiliary device
- type
- field
- state
- requests
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000003111 delayed effect Effects 0.000 claims description 47
- 238000000034 method Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 description 8
- 238000005111 flow chemistry technique Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
- Datenverarbeitungssysteme, die gleichzeitig mehrere Prozesse durchführen, müssen Einrichtungen für die Synchronisierung des Zugriffs zu gemeinsamen Hilfsmitteln haben, die sich die mehreren Prozesse (Prozessoren) teilen. Typischerweise haben Datenverarbeitungssysteme einen solchen synchronisierten Zugriff zu den gemeinsam benutzten Hilfsmitteln durch Benutzung von Beschäftigt-Wartend-Strategien geschaffen. Bei der Beschäftigt-Wartend-Strategie erzeugt jeder Prozeß eine Anforderung nach einem Hilfsmittel und wartet im Lerrlauf, bis das Hilfsmittel verfügbar ist. Wenn das Hilfsmittel dann zu irgend einer Zeit verfügbar wird, erhält der leerlaufende Prozeß Zugriff zu diesem Hilfsmittel. Dieser Ansatz sorgt für eine angemessene Synchronisation, leidet aber unter dem Nachteil, daß der Prozessor im Lerrlauf arbeiten muß, während er auf das Hilfsmittel wartet. Ein derartiger Beschäftigt-Wartend-Ansatz, der einen Software-Semaphore (Signalisier)- Mechanismus benutzt, um eine Synchronisation zu erzielen, wurde von E.W. Dijkstra in der Arbeit "Zusammenwirkende sequentielle Prozesse" vorgeschlagen, erschienen in Genuys ed. Programming Languages, N.A.T.O. 1968. Insbesondere arbeitet der vorgeschlagene Ansatz mit einer Beschäftigt-Wartend-Verriegelungs-Signalisierung, um den Zugriff mehrerer Prozesse auf gemeinsam genutzte (Hilfs-)Mittel zu synchronisieren.
- Eine Sperrmöglichkeit bzw. -Einrichtung für einen gemeinsam genutzten Speicher ist aus der Druckschrift "IBM Technical Disclosure Bulletin, Volume 14, Nr. 5, Oktober 1971, Seiten 1543 und 1544, bekannt, wobei der Zugriff zu dem gemeinsam genutzten Speicher über Sperr- und Entsperr-Prozessorbefehle gesteuert wird, während Lese- und Schreibbefehle separat in Abhängigkeit von dem Verriegelungszustand durchgeführt werden.
- Die vorliegende Erfindung umfaßt eine Datenstruktur zur Realisierung eines Verriegelungsprotokolls. Dieses Verriegelungsprotokoll sorgt für eine Synchronisation des Zugriffs zu einem Datenverarbeitungsmittel mittels mehrerer Prozesse (Prozessoren).
- Gemäß einem ersten Aspekt der vorliegenden Erfindung wird ein Datenverarbeitungssystem angegeben, welches umfaßt:
- mindestens ein Prozessorelement zum Erzeugen von Zugriffsanforderungen zu einem Datenverarbeitungsspeicher, wobei die Zugriffsanforderungen mindestens einen ersten und einen zweiten Anforderungstyp umfassen, zu denen Lese- und Schreibanforderungen gehören; und
- einen Speicher zum Speichern einer Datenstruktur zum Realisieren eines Sperrprotokolls für Zugriffsanforderungen zu dem Speicher, umfassend:
- a. ein Wertefeld zum Speichern von Werten, auf welche mittels einer Zugriffsanforderung zugegriffen werden kann; und
- b. ein Sperrfeld, welches mit dem Wertefeld adresiert wird und anzeigt ob das Wertefeld gesperrt ist;
- welches dadurch gekennzeichnet ist, dar es sich bei dem ersten und dem zweiten Typ von Zugriffsanforderungen um Hybridanforderungen handelt, welche auch das Sperren des Speichers steuern; und welches gekennzeichnet ist durch eine Steuerung zur Steuerung der Handhabung von Zugriffsanforderungen zu dem Speicher und zum Sperren des Sperrfeldes in Abhängigkeit von einer Zugriffsanforderung des ersten Typs von Zugriffsanforderungen, wobei die Steuerung, dann, wenn das Sperrfeld gesperrt ist, den Zugriff auf das Wertefeld für eine Zugriffsanforderung des ersten Typs von Zugriffsanforderungen verzögert, welcher das Wertefeld gesperrt hat, jedoch das Wertefeld entsperrt und jede Zugriffsanforderung des zweiten Typs von Zugriffsanforderungen bedient.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird angegeben: Ein Verfahren zum Synchronisieren des Zugriffs mehrerer Prozesse, die in einem Datenverarbeitungssystem ablaufen, auf eine Datenverarbeitungs-Hilfseinrichtung mit Hilfe von Zugriffsanforderungen mindestens eines ersten und eines zweiten Typs, welche Lese- und Schreib-Anforderungen umfassen, wobei diese Hilfseinrichtung eine Synchronisiereinrichtung mit einem Sperrfeld umfaßt, um den laufenden Sperrzustand der Hilfseinrichtung anzuzeigen, welches dadurch gekennzeichnet ist, daß die Anforderungen des ersten und des zweiten Typs Hybridanforderungen sind, welche außerdem das Sperren der Hilfseinrichtung steuern; und welches gekennzeichnet ist durch die (folgenden) Schritte:
- a. Die Synchronisiereinrichtung setzt das Verriegelungsfeld der Hilfseinrichtung in einen gesperrten Zustand, wenn die Hilfseinrichtung durch eine Zugriffsanforderung des ersten Typs angefordert wird, wenn sich das Verriegelungsfeld in einem nicht gesperrten Zustand befindet;
- b. die Synchronisiereinrichtung setzt das Verriegelungsfeld der Hilfseinrichtung auf einen nicht gesperrten Zustand, wenn die Hilfseinrichtung durch eine Zugriffsanforderung des zweiten Anforderungstyps angefordert wird, wenn sich das Verriegelungsfeld in einem gesperrten Zustand befindet; und
- c. die Synchronisiereinrichtung setzt das Verriegelungsfeld der Hilfseinrichtung in einen Zustand "gesperrt und verzögert", wenn die Hilfseinrichtung durch eine Zugriffsanforderung des ersten Typs angefordert wird, wenn sich das Sperrfeld in einem gesperrten Zustand befindet, und die Synchronisiereinrichtung fügt dann außerdem die Anforderung der Hilfseinrichtung einer Warteliste von noch zu erledigenden Hilfseinrichtungsanforderungen des ersten Typs hinzu.
- Gemäß einem Ausführungsbeispiel der vorliegenden Erfindung kann das Wertefeld Daten enthalten oder, alternativ, einen Zeiger zu einer verzögerten Liste bzw. einer Verzögerungsliste von Sperr- oder Entsperranforderungen. Diese beiden Arten von Werten teilen sich die Benutzung des Wertefeldes, um den Wirkungsgrad zu optimieren. Sie können sich dasselbe Wertefeld teilen, da sie niemals gleichzeitig in dem Wertefeld gespeichert werden. Die Natur der beiden Werte führt naturgemäß dazu, daß sie sich gegenseitig ausschließen. Gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung teilt sich der Zeiger das Wertefeld nicht mit den Daten; stattdessen ist er in einem separaten Feld gespeichert, welches von dem Wertefeld verschieden ist.
- Wenn sich das Verriegelungsfeld in einem Zustand gesperrt und verzögert befindet, stellt es vorzugsweise einen Indikator dafür dar, daß ein Prozeß gegenwärtig den ausschließlichen Zugriff zu dem Wertefeld hat und daß mehrfache Anforderungen desselben Anforderungstyps nach einem Zugriff zu dem Wertefeld noch vorliegen. Die noch vorliegenden mehrfachen Anforderungen können auf einer Verzögerungs- bzw. Warteliste gespeichert werden, zu der der Zeiger zeigt. In ähnlicher Weise wird es dann, wenn sich das Verriegelungsfeld in einem Zustand entsperrt und verzögert befindet, bevorzugt eine Anzeige zu erzeugen, daß gegenwärtig kein Prozeß exklusiven Zugriff zu dem Datenfeld hat, dar aber noch mehrere Anforderungen zum Entsperren des Wertefeldes vorliegen. Die noch vorliegenden Entsperranforderungen können in einer Verzögerungsliste gespeichert werden, zu der der Zeiger zeigt.
- Wenn sich das Sperrfeld in einem gesperrten Zustand befindet, ändert eine Entsperranforderung das Sperrfeld in einen entsperrten Zustand. Umgekehrt ändert eine Sperranforderung dann, wenn sich das Sperrfeld in einem entsperrten Zustand befindet, das Sperrfeld in einen gesperrten Zustand. Das Sperrschema gemäß vorliegender Erfindung ist jedoch nicht auf diese Grundzustände beschränkt, da weitere Möglichkeiten vorhanden sind. Beispielsweise wird der Zustand des Sperrfeldes dann, wenn sich das Sperrfeld in einem gesperrten Zustand befindet und eine Sperranforderung empfangen wird, in einen Zustand gesperrt und verzögert geändert. Die Sperranforderung wird der Verzögerungsliste hinzugefügt. Gleichermaßen wird der Zustand des Sperrfeldes dann, wenn eine Entsperranforderung empfangen wird, während sich das Sperrfeld in einem entsperrten Zustand befindet, in einen Zustand entsperrt und verzögert geändert, und die Entsperranforderung wird der Verzögerungsliste hinzugefügt.
- Sobald es sich in einem der Verzögerungszustände befindet, bleibt das Sperrfeld in dem betreffenden verzögerten Zustand, bis die Verzögerungsanforderungen bedient worden sind.
- Insbesondere bleibt das Sperrfeld dann, wenn es sich in dem Zustand gesperrt und verzögert befindet und eine Sperranforderung empfangen wird, in diesem Zustand. In analoger Weise bleibt das Sperrfeld in dem Zustand entsperrt und verzögert, wenn es sich in dem Zustand entsperrt und verzögert befindet und eine Entsperranforderung empfangen wird. In jedem dieser beiden Fälle werden die betreffenden Anforderungen der Verzögerungsliste hinzugefügt.
- Außerdem bleibt das Sperrfeld in seinem gegenwärtigen Zustand, wenn sich das Sperrfeld gegenwärtig in dem Zustand gesperrt und verzögert befindet und eine Entsperranforderung empfangen wird, wenn mehrere Sperranforderungen auf der Verzögerungsliste vorhanden sind. In Abhängigkeit von der Entsperranforderung wird jedoch eine Sperranforderung aus der Verzögerungsliste herausgeworfen. Eine ähnliche Situation liegt vor, wenn das Sperrfeld sich gegenwärtig in dem Zustand entsperrt und verzögert befindet und eine Sperranforderung empfangen wird. Der Sperrzustand (das Sperrfeld) bleibt in dem Zustand entsperrt und verzögert; trotzdem wird eine Entsperranforderung aus der Verzögerungsliste herausgeworfen.
- Nur dann, wenn die letzte Anforderung einer Verzögerungsliste aus dieser Liste herausgeworfen (abgearbeitet) ist, ändert sich der Zustand des Sperrfeldes. Im einzelnen ändert sich das Sperrfeld in den Zustand gesperrt, wenn sich das Sperrfeld zunächst in dem Zustand gesperrt und verzögert befindet und wenn die letzte Sperranforderung aus der Verzögerungsliste durch eine Entsperranforderung herausgeworfen wurde. Weiterhin ändert sich der Zustand des Sperrfeldes in den Zustand entsperrt, wenn sich das Sperrfeld zunächst in dem Zustand entsperrt und verzögert befindet und wenn die letzte Entsperranforderung durch eine Sperranforderung aus der Verzögerungsliste herausgeworfen wurde.
- Das vorstehend erläuterte Schema kann genutzt werden, um Speicherplätze und I-Strukturen gemeinsam zu nutzen. Die vorliegende Erfindung verwendet eine Speicherplatz-Sperreinrichtung zur Realisierung des obigen Sperrschemas für gemeinsam genutzte Speicherplätze. Die Speicherplatz-Sperreinrichtung umfaßt einen Prozeßindikator, der aus einem Rahmenzeiger und einem Befehlszeiger besteht, die vorzugsweise in einem Register gespeichert werden. Der Rahmenzeiger zeigt zu einem Speicherplatz, zu dem in dem Speicher zugrgriffen werden soll, und der Befehlszeiger zeigt einen an diesem Speicherplatz auszuführenden Befehl an. Jeder Speicherplatz umfaßt den oben erwähnten Sperrzustand. Die Arbeitsweise des Sperrschemas wird durch eine lokale Steuerung kontrolliert. Die lokale Steuerung schaut nach den Befehlen, zu denen von einem Befehlszeiger gezeigt wird, zu den Inhalten der Speicherplätze, zu denen von dem Rahmenzeiger gezeigt wird, und zu den zugeordneten Sperrzuständen, um zu bestimmen, was in Abhängigkeit von dem Befehl zu tun ist.
- Dieses Sperrschema kann in einem Datenverarbeitungssystem, wie z.B. einem Datenflußverarbeitungssystem, benutzt werden. Ein derartiges Datenverarbeitungssystem umfaßt mehrere Prozesse (Prozessoren), einen Speicher, wie er beispielsweise oben beschrieben wurde, und eine Steuerung, wie sie oben beschrieben wurde. Das System ist so entworfen, daß eine Anforderung nach einem Speicherzugriff von einem Verarbeitungselement durchgeführt werden kann, und es kann andere Aufgaben ausführen, während es auf den durchzuführenden Speicherzugriff wartet.
- Fig. 1 zeigt die Hauptkomponenten des Datenverarbeitungssystems.
- Fig. 2 zeigt die Felder, die von einer Informationseinheit bzw. einem Token umfaßt werden.
- Fig. 3 zeigt eine Speichereinheit im Detail.
- Fig. 4 zeigt einen adressierbaren Speicherplatz.
- Fig. 5 zeigt ein Zustandsdiagramm des grundlegenden Sperrschemas.
- Fig. 6a und 6b zeigen eine Folge von Lese/Sperr-Tokens und die Wirkung ihrer Durchführung an einem Speicherplatz.
- Fig. 7a und 7b zeigen eine Folge von Schreib/Entsperr-Tokens und die Wirkung ihrer Ausführung auf einen Speicherplatz.
- Fig. 8 zeigt ein Beispiel für eine Warteschlangenoperation, welche unter Verwendung der verbesserten (erweiterten) Sperrstrategie ausgeführt wird.
- Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung betrifft ein Datenflußverarbeitungssystem 2 mit sperrenden Speicherplätzen. Das Datenflußverarbeitungssystem umfaßt mehrere (Prozessoren) Verarbeitungselemente 5, welche sich zahlreiche Speichereinheiten 10 teilen. Diese Verarbeitungselemente 5 führen mehrere Prozesse parallel durch. Zu den durchgeführten Prozessen gehören Operationen, welche einen Zugriff zu den Speichereinheiten 10 erforderlich machen. Aufgrund der Tatsache, daß diese Operationen parallel durchgeführt werden, können sich insofern Probleme ergeben, als bei mehreren Prozessen Zugriff zu demselben Speichereinheitsplatz gesucht wird. Um einen möglichen Konflikt zwischen rivalisierenden Prozessen zu vermeiden, wird den einzelnen Prozessen für begrenzte Zeitintervalle Zugriff zu einzelnen Speicherplätzen gewährt. Im einzelnen werden diese Speicherplätze (bzw. deren Inhalte) nicht modifiziert, bis ein Verarbeitungselement die Benutzung des Speicherplatzes beendet hat.
- Diese Fähigkeit wird durch die Verwendung eines Sperrmechanismus geschaffen. Es wird verhindert, dar Zugriff zu einem Speicherplatz gewonnen wird, bis der Speicherplatz durch eine Entsperranforderung entsperrt worden ist. Andere Prozesse (Prozessoren) müssen jedoch nicht im Leerlauf arbeiten, während sie darauf warten, daß der Speicherplatz entsperrt wird. Sie fahren fort, andere Aufgaben zu bearbeiten, während sie warten.
- Fig. 1 zeigt die Hauptkomponenten des Datenflußverarbeitungssystems 2. Speziell umfaßt das System 2 mehrere Prozessoren bzw. Verarbeitungselemente (VE) 5 und mehrere Speichereinheiten 10. Die Kommunikation zwischen den Speichereinheiten 10 und den Verarbeitungselementen 5 wird über ein Verbindungsnetzwerk 12 erreicht. Das Verbindungsnetzwerk 12 ist aus Schaltungen aufgebaut, die aus dem Stand der Technik gut bekannt sind. Jedes der Verarbeitungselemente 5 hat Zugriff zu jeder der Speichereinheiten 10. Die Verarbeitungselemente 5 sind vorzugsweise für einen Pipelinebetrieb ausgelegt, um eine maximale Parallelaktivität in jedem Verarbeitungselement 5 zu ermöglichen. Eine bevorzugte Konfiguration für ein Verarbeitungselement ist in der Doktorarbeit "Implementation of a general purpose data flow multiprocessor von G. Papadopolus, Massachusetts Institute of Technology, 1988, dargestellt.
- Das Datenflußverarbeitungssystem 2 ist vorzugsweise ein Tagtoken-Datenflußverarbeitungssystem, welches auf der Basis von Tokens (Informationseinheiten) arbeitet. Wie Fig. 2 zeigt, sind diese Tokens 11 aus einem Identifikator- bzw. Tagfeld 3 und einem Wertfeld 6 zusammengesetzt. Das Tagfeld 3 wird verwendet, um einen Befehlszeiger 3a zu enthalten, der in Fig. 2 als IP bezeichnet ist, und um einen Fenster- bzw. Rahmenzeiger 3b zu enthalten, der in Fig. 2 als FP bezeichnet ist. Der Befehlszeiger 3a zeigt auf einen auszuführenden Befehl. Der Rahmenzeiger 3b zeigt im Gegensatz dazu zum Anfang bzw. zur Startadresse eines Fensters bzw. eines Rahmens von Speicherplätzen; auf einen von diesen wird durch den Befehl zugegriffen. Das Wertfeld 6 wird für einen (bestimmten) Zweck verwendet. Es wird zum Speichern eines Werts verwendet. Die Bedeutung des in dem Wertfeld 6 gehaltenen Wertes variiert und hängt von dem Befehl ab, auf den der Befehlszeiger 3a zeigt. Beispielsweise kann der Wert eine Adresse oder einfach einen gegenwärtigen Datenwert darstellen.
- Jedes Verarbeitungselement 5 hält eine lokale (Warte-)Schlange von Tokens aufrecht, in der sie mehrere Tokens speichert. Jedes Verarbeitungselement 5 taktet bei jedem Taktzyklus eines Systemtakts einen neuen Token von der Tokenschlange in die Pipeline des Verarbeitungselements 5. In der Pipeline des Verarbeitungselements 5 wird die Ausführung des Befehls versucht, zu dem der Befehlszeiger 3a des Tagteils 3 des Tokens 11 zeigt. Häufig ist jedoch zur Ausführung des Befehls ein Speicherzugriff erforderlich. In diesem Falle erzeugt die Pipeline des Verarbeitungselements 5 einen neuen Token, dessen Tag anzeigt, daß eine Leseoperation oder eine Schreiboperation an dem Speicherplatz auszuführen ist, auf den zugegriffen werden muß. Diese Tokens verlassen die Pipeline und wandern über das Verbindungsnetzwerk 12 zu den Speichereinheiten 10, wo die Speicherzugriffsanforderungen bedient werden. Wie diese Speicherzugriffsanforderungen behandelt werden bzw. wie der Speichermechanismus zum effektiven Bedienen bzw. Abarbeiten dieser Anforderungen betrieben wird, ist von großer Bedeutung für das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 3 zeigt eine Speichereinheit 10 mit Sperrmöglichkeiten detaillierter als Fig. 1. Die Speichereinheit 10 umfaßt einen ersten FIFO-Speicher (first in/first out = zuerst rein/zuerst raus-Speicher) 14 als Pufferspeicher für ankommende Tokens, die von denjenigen Prozessorelementen 5 gesendet wurden, die Zugriff zum Speicher suchen. Die Tokens werden nach Speicherung in dem ersten FIFO-Pufferspeicher 14 jeweils einzeln zu einem Register 16 gesendet. Das Register 16 steht in Verbindung mit einem Multiplexer 18, einem Datenspeicher 20 und einer Steuerung 24. Zusätzlich ist ein tokenbildender Pufferspeicher 26 vorgesehen, um die Erzeugung von Ausgangstokens zu unterstützen. Die Ausgangstokens werden an einen zweiter FIFO-Pufferspeicher 28 ausgegeben und von dort anschließend an das Netzwerk 12.
- Bei einem typischen Betrieb empfängt die Speichereinheit 10 Tokens 11, die von einem Verarbeitungselement 5 über das Netzwerk 12 Zugriff zu dem Speicher suchen. Diese Tokens werden zeitweilig in dem ersten FIFO-Pufferspeicher 14 gespeichert. Wenn das Register 16 bereitsteht, ein neues Token von dem ersten FIFO-Pufferspeicher 14 zu empfangen, wird ein Token aus dem ersten FIFO-Pufferspeicher 14 zu dem Register 16 übertragen. Im weiteren Verlauf der Verarbeitung wird der Rahmenzeigerwert (Startadressenzeiger) 3b des in dem Register 16 gespeicherten Tokens genommen und zu einem Multiplexer 18 weitergegeben. Der Rahmenzeiger zeigt zu dem speziellen Speicherplatz, auf den zugegriffen werden soll. Der Befehlszeigerwert 3a wird ebenfalls weitergeleitet, jedoch zu der Steuerung 24. Der Befehlszeiger informiert die Steuerung 24, welche Operation an dem Speicherplatz auszuführen ist, die durch den Rahmenzeiger spezifiziert ist.
- Sobald die Steuerung 24 die auszuführende Operation bestimmt hat, sendet sie ein geeignetes Auswahlsignal an den Multiplexer 18, um die Speicheradresse auszuwählen, auf die zuzugreifen ist. Diese Adresse kann die von dem Rahmenzeiger 3b angezeigte Adresse sein oder eine Adresse, die an einem Speicherplatz des Datenspeichers 20 zu finden ist. Wenn die Adresse so ausgewählt wird, daß es sich um eine Adresse handelt, die an dem Speicherplatz des Datenspeichers gefunden wird, handelt es sich um eine Adresse von einer Verzögerungsliste. Die Verzögerungslisten werden weiter unten noch detaillierter diskutiert werden. Die von dem Multiplexer 18 ausgewählte Adresse wandert zu der Adressenleitung des Datenspeichers 20 und zu den Adressenleitungen des Sperrzustandsspeichers 22, wo die Adresse benutzt wird, um Zugriff zu den betreffenden Speicherplätzen zu erhalten. Die Steuerung 24 prüft den Sperrzustand, der dem adressierten Speicherplatz zugeordnet ist und arbeitet entsprechend.
- Wie aus der angeregten Konfiguration deutlich wird, müssen die Sperrzustände und Datenwerte einer Speicheradresse nicht an demselben physikalischen Speicherplatz gespeichert sein. Tatsächlich können sie an (davon) körperlich getrennten Speicherplätzen gespeichert sein, müssen jedoch durch eine einzige Speicheradresse adressierbar sein, so daß bei Zugriff auf eine Adresse sowohl die Daten als auch die Sperrzustände verfügbar sind. Es ist wünschenswert, den Speicher physikalisch bzw. körperlich so zu unterteilen, daß die Speicherzugriffszeit für die Sperrzustandsinformation optimiert werden kann. Im einzelnen wird bevorzugt daß ein statischer Hochgeschwindigkeitsspeicher zur Speicherung (Aufnahme) des Sperrzustandsspeichers 22 verwendet wird, da eine große Anzahl von Zugriffen auf die Sperrzustände allgemein erforderlich ist. Typischerweise muß für jeden ausgeführten Sperrbefehl ein Sperrzustand gelesen und ein neuer Sperrzustand eingeschrieben werden. Die Verwendung eines statischen Speichers reduziert die mit diesen Transaktionen verbrachte Zeit auf ein Minimum. Ein statischer Speicher ist jedoch für den Datenspeicher 20 nicht erwünscht, da er zu große Kosten mit sich bringt. Außerdem ist das Bedürfnis für einen solchen statischen Speicher für die Daten nicht so groß wie es für die Sperrzustände ist, da auf die Daten nicht so häufig zugegriffen wird wie auf die Sperrzustände. Daher sollte für den Datenspeicher 20 ein dynamischer Speicher verwendet werden.
- Lese- und Schreibbefehle sind bei dem bevorzugten Ausführungsbeispiel nicht einfach Standard-Lese- und Schreibbefehle. Vielmehr sind sie Hybridbefehle, die eine doppelte Funktion haben. Im einzelnen sperren die Lesebefehle zusätzlich zur Ausführung eines Standard-Lesevorgangs diejenigen Speicherplätze, die ausgelesen werden, und Schreibbefehle entsperren die Speicherplätze, in denen ein Einschreiben erfolgt. Dies sind die einzigen Sperrsteuerbefehle, die benötigt werden, um das bevorzugte Ausführungsbeispiel zu realisieren. Standard-Lese- und Schreibbefehle sind in dem Datenflußverarbeitungssystem 2 verfügbar, sie werden jedoch nur in Bereichen des Speichers verwendet, die nicht gesperrt und entsperrt werden können. Es wird bevorzugt, Speicherbereiche zu besitzen, die nicht gesperrt werden können und die nicht entsperrt werden können, da mit der Aufrechterhaltung von Sperren und Freigaben ein Overhead (übergeordnete bzw. zugeordnete Einrichtungen) verknüpft ist. Da es nicht erforderlich ist, an jedem Speicherplatz die Möglichkeit für ein Sperren und Entsperren zu haben, ist es möglich, auf diesen unnötigen Overhead dadurch zu verzichten, daß man nicht sperrbare Speicherplätze und sperrbare Speicherplätze hat. Für die restliche (weitere) Diskussion kann angenommen werden, daß es sich bei allen Lesebefehlen und allen Schreibbefehlen um Lese/Sperrbefehle bzw. Schreib/Entsperr-Befehle handelt.
- Fig. 4 zeigt einen typischen Speicherplatz. Dieser Speicherplatz kann drei Felder umfassen. Zwei dieser Felder 66 und 70 befinden sich körperlich in dem Datenspeicher 20, während das weitere Feld 68 physikalisch bzw. körperlich in dem Sperrzustandsspeicher 22 angeordnet ist. Das erste Feld ist ein Wertefeld 66, welches zum Speichern von Werten, wie z. B. Daten und Adressen, verwendet wird, wie dies zuvor beschreiben wurde. Das Sperrfeld 68 wird zur Speicherung des laufenden Sperrzustandes der Speicheradresse verwendet. Schließlich ist das Zeigerfeld 70 vorgesehen, um Zeiger zu Elementen einer Verzögerungsliste zu speichern, wenn dies erforderlich ist. Bei der Alternative muß kein Zeigerfeld 70 verwendet werden. Statt dessen kann das Wertefeld 66 als funktionsmäßiges Äquivalent sowohl für das Wertefeld 66 als auch für das Zeigerfeld 70 verwendet werden. Insbesondere speichert das Wertefeld 66 dann, wenn diese Option angewandt wird, entweder Daten oder einen Zeiger; da diese beiden niemals gleichzeitig an einem Speicherplatz vorhanden sind, kann es wirksamer sein, diese beiden in einem einzigen Feld zu speichern. Die vorliegende Erfindung wählt nicht eine dieser beiden Alternativen, sondern umfaßt statt dessen diese beiden Alternativen.
- Es soll angenommen werden, daß ein Token, welcher eine Schreib/Entsperr-Anforderung trägt, in die Speichereinheit 10 eintritt und daß sich der Speicherplatz, an dem das Einschreiben erfolgen soll, in einem gesperrten Zustand befindet. Wenn dieser Token verarbeitet wird, erlangt die Steuerung 24 Zugriff zu dem Speicherplatz, der auf den Adressenleitungen des Datenspeichers 20 spezifiziert ist, wie dies oben ausgeführt wurde. Die Steuerung veranlaßt dann, daß der Wert im Wertefeld 5 des Tokens 11, das in dem Register 16 gespeichert wird, an dem Speicherplatz eingeschrieben wird, auf den zugegriffen wurde.
- Nunmehr soll statt dessen angenommen werden, dar das Token statt dessen die Ausführung eines Lese/Sperr-Befehis fordert und daß sich der Speicherplatz in einem nicht gesperrten Zustand befindet. In diesem Fall benutzt die Steuerung 24 die Adresse auf den Adressenleitungen des Datenspeichers 20, um auf einen Speicherplatz in dem Datenspeicher 20 zuzugreifen. Sobald die Steuerung 24 Zugriff zu dem Speicherplatz erhält, liest sie die Inhalte dieses Speicherplatzes aus. Die Inhalte werden dann zu dem tokenbildenden Pufferspeicher 26 übertragen. In einem solchen Fall wird das Wertefeld des ankommenden Tokens 11 zu dem tokenbildenden Pufferspeicher 26 als Zieladresse für den gelesenen Wert weitergeleitet. Diese Zieladresse wird in dem tokenbildenden Pufferspeicher 26 in das Rahmenzeigerfeld des Ausgangstokens aufgenommen. Es identifiziert ein Verarbeitungselement und einen Rahmen eines lokal zu dem Verarbeitungselement gehörenden Speichers. Zusätzlich wird das Ausgangstoken von der Steuerung 24 weitergeleitet, und der Wert wird von dem Datenspeicher 20 entsprechend dem Befehl der Steuerung 24 weitergeleitet. Das Ausgangstoken wird als nächstes zu dem zweiten FIFO-Pufferspeicher 28 weitergeleitet. Dieser Puffer ist vorgesehen, um eine Verzögerung der Ausgangstokens zu ermöglichen, um ein "Untergehen (swamping)" des Netzwerks 12 zu verhindern. Die Ausgangstokens, die in dem zweiten Pufferspeicher 28 gespeichert sind, werden an das Netzwerk 12 weitergeleitet, wenn dieses bereitsteht, sie zu empfangen.
- Wenn ein Lese/Sperr-Befehl gesucht wird und der auszulesende Speicherplatz gesperrt oder im verzögerten Zustand ist (dieser Zustand wird später noch näher diskutiert werden), reagiert das System anders auf das Token als dann, wenn sich der Speicherplatz im nicht gesperrten Zustand befinden würde. Zunächst werden dann, wenn sich der Speicherplatz in einem solchen gesperrten und verzögerten Zustand befindet, nur dann Ausgangstokens gebildet, wenn entsprechende Daten über eine Schreib/Entsperr-Anforderung eintreffen. Zweitens wird die Bestimmungsadresse nicht aus dem Wertefeld des Registers 16 genommen, sondern von einem Element auf der verzögerten Liste, die in dem Datenspeicher gespeichert ist und der Schreib/Lese-Anforderung entspricht. Die Organisation der verzögerten Listen wird weiter unten anhand eines Beispiels beschrieben werden. Die anderen Felder des Ausgangstokens werden immer noch wie oben beschrieben gebildet.
- Es sollte beachtet werden, dar die nicht sperrenden Speicherplätze dieselben Bits enthalten, die das Sperrfeld an den Speicherplätzen bilden. Diese Bits haben jedoch an den nicht sperrenden Plätzen eine andere Bedeutung. An sperrenden Plätzen stellen die Bits unterschiedliche Sperrzustände dar.
- Die drei Grundzustände, die das Sperrfeld eines Speicherplatzes annehmen kann, sind in Fig. 5 gezeigt. Diese drei Zustände sind "entsperrt bzw. nicht gesperrt" 30, "gesperrt" 32 und "gesperrt und verzögert" 34. Alle Speicherplätze, die gesperrt werden können, befinden sich anfänglich in einem nicht gesperrten Zustand 30. Wenn eine (Sperr)Lese/Sperr- Anforderung 40 nach einem Speicherplatz erfolgt, wird das Sperrfeld des Speicherplatzes in den Zustand 32 (gesperrt) geändert. Wenn eine Schreib/Entsperr-Anforderung 28 anschließend an demselben Speicherplatz eintrifft, wird das Sperrfeld dieses Speicherplatzes wieder zurück in den Zustand 40 (entsperrt) gebracht.
- Wenn sich der Speicherplatz in einem gesperrten Zustand befindet und eine Lese/Sperr-Anforderung 44 eintrifft, ändert sie das Statusfeld in den Zustand 34 (gesperrt und verzögert). Jede zusätzliche Lese/Sperr-Anforderung 56, die empfangen wird, während sich das Zustandsfeld in seinem Zustand 34 - gesperrt und verzögert - befindet, ändert diesen Zustand icht. Diese Anforderungen werden jedoch in einer Verzögerungsliste gespeichert. Schreib/Entsperr-Anforderungen 46, welche empfangen werden, während sich das Statusfeld in dem Zustand 34 - gesperrt und verzögert - befindet, bewirken, daß eine einzige entsprechende Lese/Sperr-Anforderung aus der verzögerten Liste gestrichen wird. Der letzte derartige Schreib/Entsperr-Befehl 42 entfernt die letzte verzögerte Schreib/Sperr-Anforderung und bringt das Statusfeld in den Zustand 32 - gesperrt - zurück. Die Reihenfolge der Anforderungen muß bei diesem Beispiel nicht befolgt werden. Anforderungen zum Lesen/Entsperren und zum Lesen/Sperren können in jeder Reihenfolge auftreten. Die oben beschriebene Folge wurde lediglich zum Zwecke der Erläuterung ausgewählt.
- Die Bedeutung des Zustandes Gesperrt und des Zustandes Gesperrt und Verzögert besteht darin, dar kein anderes Verarbeitungselement 5 als dasjenige Verarbeitungselement, dem die Lese/Schreib-Anforderung gewährt ist, mit einer weiteren Lese/Sperr-Anforderung auf den Speicherplatz zugreifen kann, während dieser gesperrt ist. Die anderen Verarbeitungselemente müssen warten, bis dieser Speicherplatz entsperrt ist, ehe sie Zugriff zu ihm erhalten können. Eine brauchbare Analogie ist die Betrachtung des Speicherplatzes als Buch aus einer Bücherei. Wenn eine Person versucht, ein Buch aus der Bücherei zu holen, ist dies das Äquivalent zu einem Lese/Sperr-Befehl. Die Person, die das Buch abholt, hat exklusiv Zugang zu dem Buch. Sie kann das Buch verändern und das veränderte Buch dann zurückgeben, so daß unter der Voraussetzung, daß nur ein Buch verfügbar ist, alle folgenden Personen das Buch in dem Zustand empfangen, in dem es von dieser Person geändert wurde. Irgendwelche Personen, die versuchen, das Buch auszuleihen, wenn es verliehen ist, können das Buch nicht bekommen, können jedoch beantragen, daß ihr Name auf einer Liste von Personen aufgezeichnet wird, die nach dem Buch suchen.
- Diese Liste ist analog zu der Warte- bzw. Verzögerungsliste bei dem gesperrten und verzögerten Zustand. Wenn diejenige Person, die das Buch ursprünglich entnommen hat, das Buch zurückbringt, dann ist dies so, als ob sie eine Schreib/Entsperr-Anforderung abgeben würde. Das Buch ist jedoch noch immer in dem gesperrten und verzögerten Zustand, da immer noch Namen auf der Liste sind. Allerdings empfängt die erste Person auf der Liste das Buch und wird von der Liste gestrichen. Dieser Prozeß wird mit jeder nachfolgenden Rückgabe des Buchs wiederholt, bis die letzte Person auf der Liste in den Besitz des Buches gelangt; zu diesem Zeitpunkt ist das Buch dann nur noch in dem gesperrten Zustand. Wenn diese (letzte) Person diese (letzte) Person das Buch zurückgibt, kehrt dieses in den nicht gesperrten Zustand zurück. Die vorstehende Beschreibung beschreibt die Grundzustände zum Realisieren einer Sperrstrategie gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Diese Zustände können jedoch in eleganter Weise verbessert werden, um eine mächtigere Sperrstrategie zu entwickeln, die einen zusätzlichen Zustand umfaßt: "Entsperrt und Verzögert". Das Zustandsdiagramm, welches erzeugt wird, wenn dieser Zustand zu dem vorherigen Zustandsdiagramm hinzugefügt wird, ist in Fig. 5 gezeigt. Der zusätzliche Zustand schafft für die vorliegende Erfindung eine Sperrstrategie mit der Möglichkeit, eine Warteschlange zu bilden.
- Um das Verständnis für den Zustand 36 - entsperrt und verzögert - zu fördern, sei angenommen, daß sich der Speicherplatz anfänglich in einem nicht gesperrten Zustand befindet und daß eine Schreib/Entsperr-Anforderung 50 empfangen wird. Das Sperrfeld der Speicheradresse wird daraufhin in den Zustand 36 - entsperrt und verzögert - geändert. Während dieses entsperrten und verzögerten Zustands 36 haben alle anschließend empfangenen Schreib/Entsperr-Anforderungen 54 keinen Einfluß auf den Zustand, der in dem Sperrfeld aufrechterhalten wird. Die Anforderungen werden jedoch auf eine Verzögerungsliste gesetzt. Diese Liste wird unter Verwendung derselben Hardware realisiert, die für die Liste Gesperrt und Verzögert verwendet wird. Da beide Listen nicht gleichzeitig existieren können, bietet die gemeinsame Nutzung der Hardware für beide Listen eine wirksame Strategie, die die Overhead-Kosten (den zusätzlichen Kostenaufwand) minimiert.
- Lese/Sperr-Anforderungen 52, die empfangen werden, solange immer noch Schreib/Entsperr-Anforderungen auf der Verzögerungsliste vorhanden sind, bewirken (52), daß Schreib/Entsperr-Anforderungen von der Liste gestrichen werden. Von diesen Anforderungen auf der Verzögerungsliste wird jedesmal eine gestrichen derart, daß jede Schreib/Entsperr-Anforderung von der Liste nur in Abhängigkeit von einer zugeordneten Lese/Sperr-Anforderung gestrichen wird. Die Lese/Entsperr-Anforderung, welche gestrichen wird, muß nicht am Anfang der Liste stehen. Sie kann sich an irgendeiner anderen Stelle der Liste befinden, ohne große Overhead-Kosten zu verursachen. Irgendwann verkürzt sich die Verzögerungsliste, während die Verarbeitung fortgesetzt wird, auf eine einzige Schreib/Entsperr-Anforderung. Diese letzte Schreib/Entsperr-Anforderung der Verzögerungsliste wird wie ihre Vorgänger durch eine Schreib/Sperr-Anforderung 48 von der Liste gestrichen. Wenn diese Anforderung gestrichen bzw. gelöscht wird, kehrt das Statusfeld des Speicherplatzes in den nicht gesperrten Zustand 30 zurück. Diese Strategie gewährleistet, daß alle verzögerten Schreib/Entsperr-Anforderungen behandelt werden, ehe das Statusfeld in einen nicht gesperrten Zustand 30 zurückkehrt.
- Fig. 6a und 6b zeigen eine Folge von Tokens und von zugehörigen Auswirkungen der Ausführung dieser Tokens. Im einzelnen zeigt Fig. 6a Tokens 60, 62 und 64, welche der Reihe nach ausgeführt werden. Es wird angenommen, dar das Wertefeld 66 des Speicherplatzes einen Wert von 6 hat und dar das Statusfeld 68 einen Wert hat, der einem nicht gesperrten Zustand entspricht, was bezüglich des Speicherzustands 74 in Fig. 6b durch das Zeichen U angedeutet wird.
- Wenn das Token 60 ausgeführt wird, ändert sich der Inhalt des Speicherplatzes an der Adresse 10 in einen Speicherzustand 76. Im einzelnen wird der Wert 6 aus dem Wertefeld 66 ausgelesen. Das Wertefeld 66 tritt in einen Zustand "keine Sorge (don't care)" ein. Das Statusfeld 68 wird geändert, um anzuzeigen, daß der Speicherplatz nunmehr gesperrt ist, was durch das Zeichen L angedeutet wird. Der Wert 6 wird über ein neues Token an die Adresse Joe gesendet. Joe ist der Name, welcher zum Zwecke der Erläuterung einem Rahmenzeigerwert der Rückkehradresse gegeben wurde.
- Wenn das Token 62 ausgeführt wird, ändert sich der Inhalt des Speicherplatzes an der Adresse 10 in den Speicherzustand 78. Statt einen Teil der Daten in dem Wertefeld 66 zu speichern, wird in dem Wertefeld 66 die Rückkehradresse Mary gespeichert. Mary ist wie Joe lediglich ein Name, der zum Zwecke der Erläuterung der Rückkehradresse gegeben wurde. Weiterhin wird das Status- bzw. Zustandsfeld 68 von einem Zustand "Gesperrt" in einen Zustand "Verzögert und Gesperrt" geändert, was durch die Bezeichnung "LD" angedeutet wird (L = locked; D = deferred"). Zu diesem Zeitpunkt wird kein neues Token erzeugt, um die Daten zu ihrem Ziel zurückzuführen. Wenn die Daten verfügbar werden, wird ein neues Token erzeugt, um die Daten zu ihrem Ziel zu bringen. Wenn eine Schreib/Entsperr-Anforderung für die Adresse 10 empfangen wird, weiß die Speichersteuerung 24, dap noch eine Sperrbzw. eine Lese/Sperr-Anforderung offen ist, die versucht, einen ausgelesenen Wert zu einem Speicherplatz Mary zurückzusenden.
- Wenn das letzte Token 64 ausgeführt wird, befindet sich der Speicherplatz 10 bereits in dem Zustand Verzögert und Gesperrt. Das Wertefeld 66 und das Zustandsfeld 68 werden nicht geändert. Statt dessen besteht die einzige Änderung, die eintritt, darin, dar das Zeigerfeld 70, welches zuvor "nil (undefiniert)" war, derart geändert wird, daß es auf eine Lese/Sperr-Anforderung 72 zeigt. Diese Anforderung speichert die Rückkehradresse für die Anforderung bei 72a, wobei es sich in diesem Fall um Tom handelt. Es speichert außerdem einen Zeiger 72b zu der nächsten Anforderung auf der Verzögerungsliste. In diesem Fall liegen keine weiteren Anforderungen vor. Daher wird in dem Zeiger kein Wert gespeichert.
- Fig. 7a und 7b zeigen eine Folge von Schreib/Entsperr-Tokens und die resultierenden Speicherzustände, die durch Ausführung dieser Tokens 82, 84 und 86 erzeugt werden. Es wird davon ausgegangen, daß die Inhalte des Speicherplatzes an der Adresse 10 in einem Speicherzustand 92 starten, in dem das Wertefeld 66 einen Wert "keine Sorge" hat. Ferner befindet sich das Sperrfeld 68 in einem gesperrten Zustand und das Zeigerfeld 70 in dem Zustand "nil". Wenn das Token 82 ausgeführt wird, ändern sich die Inhalte des Speicherplatzes 10 in den Speicherzustand 94. In diesem Speicherzustand hat das Wertefeld 66 den Wert 7 und das Sperrfeld 68 den Wert nicht gesperrt. Das Zeigerfeld 70 bleibt in dem Zustand "nil". Es wird kein neues Token erzeugt.
- Wenn das Token 84 ausgeführt wird, ändert sich der Inhalt des Speicherplatzes 10 in den Speicherzustand 96. Das Wertefeld 66 bleibt wie es im Speicherzustand 94 war. Speziell speichert es immer noch den Wert 7. Das Sperrfeld wird jedoch in den Zustand "Entsperrt und Verzögert" geändert. Weiterhin zeigt das Zeigerfeld 70 nunmehr auf eine Entsperr-Anforderung 88. Diese Entsperr-(Schreib/Entsperr)-Anforderung 88 enthält einen Wert, der aufgrund der Anforderung geschrieben werden muß. In diesem Fall ist der Wert 9 und enthält einen Zeiger zu der nächsten Anforderung in der Verzögerungsliste. Da in diesem Fall keine weiteren Anforderungen vorliegen, hat der Zeiger den Wert "nil".
- Die Ausführung des Tokens 86 ändert die Inhalte des Speicherplatzes 10 nicht, vielmehr führt sie nur zur Aufnahme einer weiteren Entsperr-Anforderung in die Verzögerungsliste. Im einzelnen ändert die Anforderung 88 ihren Zeigerwert, um auf eine zusätzliche Entsperr-Anforderung 89 zu zeigen. Diese Entsperr-Anforderung 89 umfaßt einen Wert, der eingeschrieben werden soll (d. h. 15) und einen Zeiger. Der Zeiger hat für die Anforderung 89 den Wert "nil", da es sich bei dieser Anforderung um die letzte Anforderung auf der Verzögerungsliste handelt.
- Zum genaueren Verständnis des Zusammenhanges zwischen dem Lese/Sperr-Befehl und dem Schreib/Entsperr-Befehl und zum Aufzeigen der Fähigkeit der Bildung von Warteschlangen durch Verwendung eines Zustands "Entsperrt und Verzögert" wird angenommen, daß die in Fig. 7a spezifizierten Tokens ausgeführt werden und zu dem Speicherzustand 98 führen. Anschliepend werden die in Fig. 6a spezifizierten Tokens ausgeführt. Fig. 8 zeigt die Speicherzustände, die für den Speicherplatz 10 eintreten. Wenn das Token 60 ausgeführt wird, welches eine Lese/Sperr-Anforderung darstellt, wird der Wert 7 vom vorderen Ende der Verzögerungsliste entfernt und mit Hilfe eines neu erzeugten Tokens an die mit Joe bezeichnete Adresse gesendet. Das ausgeführte Token 62 ändert den Speicherplatz, so daß die Inhalte an der Adresse 10 nunmehr so sind wie in Speicherzustand 102 gezeigt. Inzwischen wird der Wert 9 zu dem Speicherplatz mit der Adresse Mary gesendet. Der Speicherplatz 10 hat in seinem Wertefeld 66 den Wert 15 und wird in den entsperrten Zustand gesetzt wie dies aufgrund des Sperrfeldes 68 angegeben ist. Weiterhin wird das Zeigerfeld 70 auf "nil" gesetzt. Schließlich wird das Token 64 ausgeführt, und die Inhalte des Speicherplatzes an der Adresse 10 treten in den Speicherzustand 104 ein. Im Speicherzustand 104 hat das Wertefeld 66 den Wert "keine Sorge"; das Sperrfeld 68 befindet sich im Zustand "Gesperrt", und der Zeiger hat den Wert NULL. Der Wert 15 wird zu dem Speicherplatz mit der Adresse Tom gesendet.
- Die vorliegende Erfindung gestattet es, daß eine Anforderung nach Zugriff zu einem Speicherplatz durch ein Verarbeitungselement durchgeführt wird, ohne eine Reihenfolge bezüglich der Anforderungen an den Speicher zu beachten und ohne mehrfach Anforderungen an den Speicher zu senden, d. h. ohne den Zustand "beschäftigtes Warten". Die Anforderungen werden in der Verzögerungsliste gespeichert und zu einem späteren Zeitpunkt bedient. In der Zwischenzeit kann das Verarbeitungselement andere Aufgaben durchführen. Außerdem sorgt die vorliegende Erfindung dafür, daß diese Synchronisation effektiv ist. Es speichert Sperren automatisch derart, daß jeder Zugriff zu Daten in einem Speicher einen Zugriff zu dem Zustand "Gesperrt" mit sich bringt. Insofern sind keine zwei getrennten Speicherzugriffstransaktionen erforderlich. Weiterhin wird die Entsprechung der Sperre zu ihrem Datenteil vorab durch die gemeinsame Nutzung einer Speicheradresse hergestellt. Es sind keine Anpaßeinrichtungen hinsichtlich der benachbarten Anordnung, Zeiger oder andere Mittel erforderlich.
- Die vorliegende Erfindung gemäß den Ansprüchen kann mit anderen Ressourcen als Speicherplätzen verwendet werden und kann in anderen Datenverarbeitungsarchitekturen als Datenflußmaschinen realisiert werden.
Claims (16)
1. Datenverarbeitungssystem, umfassend:
mindestens ein Prozessorelement (5) zum Erzeugen von
Zugriffsanforderungen zu einem Datenverarbeitungsspeicher
(10), wobei die Zugriffsanforderungen mindestens einen
ersten und einen zweiten Anforderungstyp umfassen, zu
denen Lese- und Schreibanforderungen gehören; und
einen Speicher (20, 22) zum Speichern einer Datenstruktur
zum Realisieren eines Sperrprotokolls für
Zugriffsanforderungen zu dem Speicher, umfassend:
a. ein Wertefeld (66) zum Speichern von Werten, auf
welche mittels einer Zugriffsanforderung zugegriffen
werden kann; und
b. ein Sperrfeld (68), welches mit dem Wertefeld
adressiert wird und anzeigt, ob das Wertefeld
gesperrt ist;
dadurch gekennzeichnet, daß es sich bei dem ersten und
dem zweiten Typ von Zugriffsanforderungen um
Hybridanforderungen handelt, welche auch das Sperren des Speichers
steuern; und
gekennzeichnet durch eine Steuerung (24) zur Steuerung
der Handhabung von Zugriffsanforderungen zu dem Speicher
und zum Sperren des Sperrfeldes in Abhängigkeit von einer
Zugriffsanforderung des ersten Typs von
Zugriffsanforderungen, wobei die Steuerung, dann, wenn das Sperrfeld
gesperrt ist, den Zugriff auf das Wertefeld für eine
Zugriffsanforderung des ersten Typs von
Zugriffsanforderungen verzögert, welcher das Wertefeld gesperrt hat,
jedoch das Wertefeld entsperrt und jede
Zugriffsanforderung des zweiten Typs von Zugriffsanforderungen bedient.
2. Datenverarbeitungssystem nach Anspruch 1, bei dem der
erste Typ von Zugriffsanforderungen vom Typ einer Lese/
Sperr-Anforderung ist und der zweite Typ von
Zugriffsanforderungen vom Typ einer Schreib/Entsperr-Anforderung.
3. Datenverarbeitungssystem nach Anspruch 1 oder 2, bei dem
das Verriegelungsfeld (68) einen Zustand "gesperrt und
verzögert" umfaßt, welcher anzeigt, daß mehrere
Anforderungen vom Verriegelungstyp noch auf eine Ausführung
warten und in einer Warteliste von Anforderungen
gespeichert sind.
4. Datenverarbeitungssystem nach Anspruch 3, bei dem das
Wertefeld (66) dann, wenn das Sperrfeld (68) sich in dem
Zustand "gesperrt und verzögert" befindet, einen Zeiger
enthält, welcher auf eine Warteliste von
Zugriffsanforderungen des sperrenden Typs zeigt.
5. Datenverarbeitungssystem nach einem der Ansprüche 1 bis
4, bei dem das Sperrfeld (68) einen Zustand "entsperrt
und verzögert" umfaßt, welcher anzeigt, daß mehrere
Anforderungen des entsperrenden Typs vorliegen und in
einer Warteliste von Anforderungen gespeichert sind.
6. Datenverarbeitungssystem nach Anspruch 5, bei dem das
Wertefeld (66), dann, wenn sich das Sperrfeld (68) in dem
Zustand "entsperrt und verzögert" befindet, einen Zeiger
enthält, der auf eine Warteliste von
Zugriffsanforderungen des sperrenden Typs zeigt.
7. Verfahren zum Synchronisieren des Zugriffs mehrerer
Prozesse, die in einem Datenverarbeitungssystem ablaufen,
auf eine Datenverarbeitungs-Hilfseinrichtung (10) mit
Hilfe von Zugriffsanforderungen mindestens eines ersten
und eines zweiten Typs, welche Lese- und
Schreib-Anforderungen umfassen, wobei diese Hilfseinrichtung eine
Synchronisiereinrichtung (24) mit einem Sperrfeld (68)
umfaßt, um den laufenden Sperrzustand der Hilfseinrichtung
anzuzeigen, dadurch gekennzeichnet, daß die Anforderungen
des ersten und des zweiten Typs Hybridanforderungen sind,
welche außerdem das Sperren der Hilfseinrichtung
steuern; und
gekennzeichnet durch die (folgenden) Schritte:
a. Die Synchronisiereinrichtung (24) setzt das
Verriegelungsfeld (68) der Hilfseinrichtung in einen
gesperrten Zustand, wenn die Hilfseinrichtung durch eine
Zugriffsanforderung des ersten Typs angefordert wird,
wenn sich das Verriegelungsfeld (68) in einem nicht
gesperrten Zustand befindet;
b. die Synchronisiereinrichtung (24) setzt das
Verriegelungsfeld (68) der Hilfseinrichtung auf einen nicht
gesperrten Zustand, wenn die Hilfseinrichtung
durch eine Zugriffsanforderung des zweiten
Anforderungstyps angefordert wird, wenn sich das
Verriegelungsfeld in einem gesperrten Zustand befindet;
und
c. die Synchronisiereinrichtung (24) setzt das
Verriegelungsfeld (68) der Hilfseinrichtung in einen Zustand
"gesperrt und verzögert", wenn die Hilfseinrichtung
durch eine Zugriffsanforderung des ersten Typs
angefordert wird, wenn sich das Sperrfeld in einem
gesperrten Zustand befindet, und die
Synchronisiereinrichtung fügt dann außerdem die Anforderung der
Hilfseinrichtung einer Warteliste von noch zu
erledigenden Hilfseinrichtungsanforderungen des ersten Typs
hinzu.
8. Verfahren nach Anspruch 7, bei dem die
Zugriffsanforderung des ersten Typs eine Lese/Sperr-Anforderung ist
und bei dem die Zugriffsanforderung des zweiten Typs eine
Schreib/Entsperr-Anforderung ist.
9. Verfahren nach Anspruch 7 oder 8, welches ferner den
(folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) setzt das
Verriegelungsfeld (68) der Hilfseinrichtung auf einen Zustand
"entsperrt und verzögert", wenn die Anforderung der
Hilfseinrichtung durch eine Zugriffsanforderung des
zweiten Typs erfolgt und wenn sich das Verriegelungsfeld in
dem nicht gesperrten Zustand befindet, und die
Synchronisiereinrichtung fügt dann außerdem die Anforderung der
Hilfseinrichtung einer Warteliste von noch zu
erledigenden Anforderungen des zweiten Typs hinzu.
10. Verfahren nach Anspruch 7, 8 oder 9, welches ferner den
(folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) hält das
Verriegelungsfeld (68) der Hilfseinrichtung in einem Zustand "gesperrt
und verzögert", wenn die Hilfseinrichtung durch eine
Zugriffsanforderung des ersten Typs angefordert wird und
wenn sich das Sperrfeld in dem Zustand "gesperrt und
verzögert" befindet, und die Synchronisiereinrichtung
addiert dann die Anforderung der Hilfseinrichtung zu einer
Warteliste von noch zu erledigenden Anforderungen des
ersten Typs.
11. Verfahren nach einem der Ansprüche 7 bis 10, welches
ferner den (folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) hält das
Verriegelungsfeld (68) der Hilfseinrichtung in einem Zustand
"entsperrt und verzögert", wenn die Hilfseinrichtung
durch eine Zugriffsanforderung des zweiten Typs
angefordert wird und wenn sich das Sperrfeld in dem Zustand
"entsperrt und verzögert" befindet, und die
Synchronisiereinrichtung fügt dann die Anforderung nach der
Hilfseinrichtung der Warteliste von noch zu erledigenden
Anforderungen des zweiten Typs nach der Hilfseinrichtung
hinzu.
12. Verfahren nach einem der Ansprüche 7 bis 11, welches
ferner den (folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) hält das Sperrfeld (68)
der Hilfseinrichtung in einem Zustand "gesperrt und
verzögert", wenn die Hilfseinrichtung durch eine
Zugriffsanforderung des zweiten Typs angefordert wird,
wenn sich das Sperrfeld (68) in einem Zustand "gesperrt
und verzögert" befindet und noch weitere
Einrichtungs-Anforderungen des ersten Typs bereits empfangen wurden,
aber noch zu erledigen sind, und die
Synchronisiereinrichtung wirft dann außerdem eine noch zu erledigende
Anforderung nach der Hilfseinrichtung aus der Warteliste
der noch zu erledigenden Anforderungen des ersten Typs
heraus.
13. Verfahren nach einem der Ansprüche 7 bis 12, welches
ferner den (folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) hält das Sperrfeld (68)
der Hilfseinrichtung in einem Zustand "entsperrt und
verzögert" wenn die Hilfseinrichtung durch eine
Zugriffsanforderung des zweiten Typs angefordert wird, während sich
das Sperrfeld in einem Zustand "entsperrt und verzögert"
befindet und weitere Anforderungen des ersten Typs nach
der Hilfseinrichtung bereits empfangen wurden, aber noch
zu erledigen sind, und die Synchronisiereinrichtung wirft
dann auch eine noch zu erledigende Anforderung aus der
Warteliste von noch zu erledigenden
Hilfseinrichtungs-Anforderungen des ersten Typs heraus.
14. Verfahren nach einem der Ansprüche 7 bis 13, welches
ferner den (folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) setzt das Sperrfeld
(68) der Hilfseinrichtung dann, wenn diese von einer
Zugriffsanforderung des zweiten Typs angefordert wird, in
einen gesperrten Zustand, wenn das Sperrfeld sich in
einem Zustand "gesperrt und verzögert" befindet und
lediglich eine noch zu erledigende Anforderung des ersten
Typs nach der Hilfseinrichtung vorliegt, und die
Synchronisiereinrichtung wirft dann auch die letzte noch zu
erledigende Anforderung nach der Hilfseinrichtung aus der
Warteliste von noch zu erledigenden
Hilfseinrichtungs-Anforderungen des ersten Typs heraus.
15. Verfahren nach einem der Ansprüche 7 bis 14, welches
ferner den (folgenden) Schritt umfaßt:
Die Synchronisiereinrichtung (24) setzt das Sperrfeld
(68) der Hilfseinrichtung auf einen entsperrten Zustand,
wenn eine Anforderung der Hilfseinrichtung durch eine
Zugriffsanforderung des ersten Typs erfolgt, wenn sich das
Sperrfeld in einem Zustand "entsperrt und verzögert"
befindet und lediglich noch eine Anforderung des zweiten
Typs nach der Hilfseinrichtung zu erledigen ist, und die
Synchronisiereinrichtung wirft dann auch die letzte noch
zu erledigende Hilfseinrichtungs-Anforderung aus der
Warteliste von zu erledigenden
Hilfseinrichtungs-Anforderungen des zweiten Typs heraus.
16. Verfahren nach einem der Ansprüche 7 bis 15, bei dem die
Hilfseinrichtung ein zeitlich gestaffelt gemeinsam
genutzter Speicher ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38573389A | 1989-07-26 | 1989-07-26 | |
PCT/US1990/004212 WO1991002310A1 (en) | 1989-07-26 | 1990-07-26 | Non-busy-waiting resource control |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69012820D1 DE69012820D1 (de) | 1994-10-27 |
DE69012820T2 true DE69012820T2 (de) | 1995-05-11 |
Family
ID=23522648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69012820T Expired - Fee Related DE69012820T2 (de) | 1989-07-26 | 1990-07-26 | Nicht-besetzt-wartezustandsmittelsteuerung. |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0483250B1 (de) |
JP (1) | JPH04507019A (de) |
DE (1) | DE69012820T2 (de) |
WO (1) | WO1991002310A1 (de) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274823A (en) * | 1992-03-31 | 1993-12-28 | International Business Machines Corporation | Interrupt handling serialization for process level programming |
US5317749A (en) * | 1992-09-25 | 1994-05-31 | International Business Machines Corporation | Method and apparatus for controlling access by a plurality of processors to a shared resource |
GB2273586A (en) * | 1992-12-21 | 1994-06-22 | Hanover | Restricting access to shared memory during updates. |
US5699460A (en) * | 1993-04-27 | 1997-12-16 | Array Microsystems | Image compression coprocessor with data flow control and multiple processing units |
US10860388B1 (en) | 2019-07-09 | 2020-12-08 | Micron Technology, Inc. | Lock management for memory subsystems |
-
1990
- 1990-07-26 JP JP2511321A patent/JPH04507019A/ja active Pending
- 1990-07-26 EP EP90911561A patent/EP0483250B1/de not_active Expired - Lifetime
- 1990-07-26 DE DE69012820T patent/DE69012820T2/de not_active Expired - Fee Related
- 1990-07-26 WO PCT/US1990/004212 patent/WO1991002310A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
DE69012820D1 (de) | 1994-10-27 |
EP0483250B1 (de) | 1994-09-21 |
WO1991002310A1 (en) | 1991-02-21 |
EP0483250A1 (de) | 1992-05-06 |
JPH04507019A (ja) | 1992-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69211231T2 (de) | Verfahren und Vorrichtung zur Verwaltung eines gemeinsam genutzten Speichers ausserhalb des Bildschirms | |
DE68927946T2 (de) | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre | |
DE68927375T2 (de) | Arbitrierung von Übertragungsanforderungen in einem Multiprozessor-Rechnersystem | |
DE3110196A1 (de) | Datenverarbeitungssystem | |
DE3908459C2 (de) | Netzwerkserver | |
EP0635792B1 (de) | Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen | |
DE1499182C3 (de) | Datenspeichersystem | |
DE2045052A1 (de) | System zum Identifizieren von Mehraufgabensituationen und zum Steuern der Durchführung dieser Aufgaben | |
DE69031524T2 (de) | Verfahren und Vorrichtung zur Datenübertragung zwischen Prozessorelementen | |
DE4207158A1 (de) | Speicher-zugriffssteuerung | |
DE2222855A1 (de) | Schienentransportsystem fuer Selektionsinformation und Daten | |
DE4011745A1 (de) | Taskverfolgungseinrichtung | |
DE602004008911T2 (de) | Verfahren und system um die reihenfolge von paketen mit hilfe eines zwischenspeichers zu gewährleisten | |
DE3642324A1 (de) | Multiprozessoranlage mit prozessor-zugriffssteuerung | |
DE68928759T2 (de) | Rechner mit intelligentem Speichersystem und zugehöriges Verfahren | |
DE19617976A1 (de) | Kommunikationssystem mit Mitteln zum Austausch von Softwareprozessen | |
DE69025524T2 (de) | Vorrichtung und Verfahren zur Steuerung von Speicherzugriffsanforderungen in einem digitalen Datenverarbeitungssystem | |
DE2855673A1 (de) | Anordnung zur handhabung des direkten zugriffs auf den speicher einer datenverarbeitungsanlage | |
DE1271191B (de) | Einrichtung zur UEbertragung von Informationseinheiten in die Binaerstellen eines Umlaufspeichers | |
DE2912073A1 (de) | Stapelspeicheranordnung zur kurzzeitigen speicherung von informationen bei nichtabsetzbarkeit dieser informationen in einem datenverarbeitungssystem | |
DE69012820T2 (de) | Nicht-besetzt-wartezustandsmittelsteuerung. | |
DE1499190B2 (de) | Elektronische Datenverarbeitungsanlage | |
DE4114053A1 (de) | Computersystem mit cachespeicher | |
DE68920028T2 (de) | Verfahren und Vorrichtung zum Vielfachzugriff mit zyklischer Reservierung in einem Kommunikationssystem. | |
DE3048414A1 (de) | "schaltungsanordnung fuer eine datenverarbeitungsanlage" |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |