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
Application number
DE69012820T
Other languages
English (en)
Other versions
DE69012820D1 (de
Inventor
Paul Barth
Richard Soley
Kenneth Steele
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Massachusetts Institute of Technology
Original Assignee
Massachusetts Institute of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Massachusetts Institute of Technology filed Critical Massachusetts Institute of Technology
Publication of DE69012820D1 publication Critical patent/DE69012820D1/de
Application granted granted Critical
Publication of DE69012820T2 publication Critical patent/DE69012820T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution 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

    HINTERGRUND DER ERFINDUNG
  • 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Kurzbeschreibung der Zeichnungen
  • 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.
  • DETAILBESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • 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.
DE69012820T 1989-07-26 1990-07-26 Nicht-besetzt-wartezustandsmittelsteuerung. Expired - Fee Related DE69012820T2 (de)

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)

* Cited by examiner, † Cited by third party
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

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