DE3850447T2 - Asynchrone Übertragungssysteme. - Google Patents

Asynchrone Übertragungssysteme.

Info

Publication number
DE3850447T2
DE3850447T2 DE3850447T DE3850447T DE3850447T2 DE 3850447 T2 DE3850447 T2 DE 3850447T2 DE 3850447 T DE3850447 T DE 3850447T DE 3850447 T DE3850447 T DE 3850447T DE 3850447 T2 DE3850447 T2 DE 3850447T2
Authority
DE
Germany
Prior art keywords
data
pair
locations
location
read
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 - Lifetime
Application number
DE3850447T
Other languages
English (en)
Other versions
DE3850447D1 (de
Inventor
Hugo Rowton C O Dynami Simpson
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.)
MBDA UK Ltd
Original Assignee
British Aerospace PLC
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 British Aerospace PLC filed Critical British Aerospace PLC
Application granted granted Critical
Publication of DE3850447D1 publication Critical patent/DE3850447D1/de
Publication of DE3850447T2 publication Critical patent/DE3850447T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/16Multiplexed systems, i.e. using two or more similar devices which are alternately accessed for enqueue and dequeue operations, e.g. ping-pong buffers
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System (AREA)

Description

  • Die Erfindung bezieht sich auf asynchrone Übertragungssysteme und insbesondere auf eine Übertragung zwischen Elementen eines Digitalcomputers.
  • Die Notwendigkeit, eine genaue und zeitlich exakte Übertragung von Daten zwischen unabhängigen Prozessoren durchzuführen, tritt in zahlreichen Situationen auf, und besonders wichtig ist dies beim Entwurf paralleler Anordnungen mit verteilten Echtzeitdaten-Verarbeitungssystemen. Herkömmliche Systeme, die eine-Verbindung zwischen asynchronen Prozessen ermöglichen, die in unterschiedlichen Elementen eines Computers laufen, haben einen Bereich eines gemeinsamen Speichers benutzt, um einen Puffer zu bilden, auf den sämtliche in Frage kommenden Prozesse Zugriff haben und in den jeder Prozeß in der ihm zugeordneten Zeit Daten aus lesen oder einschreiben kann. Bekannte Kommunikationssysteme leiden jedoch unter dem Nachteil, daß die Daten, die durch den Puffer laufen, verfälscht werden können, wenn beispielsweise ein Prozeß beginnt, Daten aus dem Puffer zu lesen, während ein anderer Prozeß dabei ist, Daten in den Puffer einzuschreiben. Um diese Schwierigkeit zu überwinden, verlassen sich bekannte Kommunikationssysteme auf einen gegenseitigen Ausschluß, d. h. es wird ein Kennzeichen (oder eine Flagge) oder ein äquivalenter Mechanismus benutzt, wodurch verhindert wird, daß ein Prozeß Daten in den Puffer einschreibt, wenn ein anderer Prozeß bereits begonnen hat, Daten auszulesen. Obgleich dies erfolgreich einen Konflikt zwischen schreibenden und lesenden Prozessen verhindert, so führt dies jedoch zu einem System, welches nicht völlig asynchron ist, da die Wirkung eines Prozesses beim Zugriff auf den Puffer die Zeitgebung des anderen Prozesses beeinträchtigen kann.
  • Das britische Patent Nr. 2 039 102 beschreibt ein Ausführungsbeispiel eines bekannten Systems zur Kommunikation zwischen zwei asynchronen Elementen. Der Pufferspeicher wird in zwei Teile aufgeteilt, um die Möglichkeit zu schaffen, daß die Daten gleichzeitig ihn beiden Richtungen zwischen den beiden asynchronen Elementen fließen können. Wie bei anderen bekannten Anordnungen sind jedoch Lese- und Schreibprozesse wiederum anfällig für eine Verfälschung, und demgemäß beruht das beschriebene System auf der Übertragung von Unterbrechungen auf die unterschiedlichen asynchronen Elemente, um eine Verfälschung zu verhindern. Infolgedessen besteht eine Gefahr der Störung zwischen der Zeitgebung der Einheiten, so daß sie nicht völlig asynchron sind.
  • Gemäß einem ersten Merkmal der vorliegenden Erfindung umfaßt ein Verfahren zum Betrieb eines asynchronen Kommunikationssystems die folgenden Schritte: Es werden Daten von einem Eingang des Systems in einen Bereich eines gemeinschaftlichen Speichers geschrieben, der in freie Plätze unterteilt ist; es werden die Daten aus dem Bereich des gemeinsamen Speichers ausgelesen und einem Ausgang des Systems zugeführt, und das Verfahren ist dadurch gekennzeichnet, daß der Speicher in vier freie Plätze unterteilt ist, die zwei Paare mit je zwei freien Plätzen aufweisen, daß die Mittel zum Einschreiben der Daten einen ersten Selektor aufweisen und daß ein Paar von freien Plätzen gewählt wird, aus welchen keine Daten ausgelesen werden, wobei einer der freien Plätze des Paares nicht jener freie Platz ist, der zuletzt beschrieben wurde, und daß Daten vom Eingang nach dem einen freien Platz eingeschrieben werden und daß Mittel vorgesehen sind, um Daten auszulesen, welche Mittel einen zweiten Selektor aufweisen, um einen freien Platz zu wählen, der zuletzt beschrieben wurde, und um die Daten von dem zuletzt beschriebenen freien Platz nach dem Ausgang auszulesen, so daß kohärente Daten voll asynchron vom Eingang nach dem Ausgang geliefert werden.
  • Die vorliegende Erfindung schafft ein Verfahren zur Kommunikation von Daten über einen Puffer, bei dem keine Verfälschung zwischen dem Auslesen und dem Einschreiben von Daten erfolgen kann, so daß die Daten voll asynchron kommuniziert werden können, ohne daß eine Störung zwischen der Zeitgebung von Auslese- und Einschreibeverfahren auftritt. Außerdem gewährleistet das erfindungsgemäße Verfahren, daß die Daten jeweils als kohärente Gruppe durchgelaufen sind und daß die ausgelesenen Daten jeweils frisch sind, d. h. die durch den Lesekopf ausgelesenen Daten sind jeweils die letzten Daten, die vom Schreibkopf geliefert wurden.
  • Vorzugsweise werden die Daten in den Bereich des gemeinsamen Speichers durch ein Verfahren eingeschrieben, welches die folgenden drei aufeinanderfolgenden Schritte wr, w0, w1 umfaßt:
  • wr) Es werden die Eingangsdatenwerte einem der gewählten Paare von freien Plätzen zugeordnet, und zwar jenem, der nicht jener freie Platz ist, der zuletzt beschrieben wurde;
  • w0) es werden Werte s(wp) und w eingestellt, wobei s(wp) und wp skalare Werte sind, die einen freien Platz bzw. ein Paar von freien Plätzen identifizieren, um aufzuzeichnen, daß der bei dem vorhergehenden Schritt gewählte Platz nunmehr jener Platz ist, der zuletzt beschrieben wurde, wobei das gewählte Paar von freien Plätzen nunmehr das Paar ist, welches zuletzt beschrieben wurde;
  • w1) es wird ein Paar von freien Plätzen zum Einschreiben gewählt, die nicht als zum Auslesen bestimmt markiert sind,
  • wobei Daten mittels eines Verfahrens ausgelesen werden, das die folgenden zwei aufeinanderfolgenden Schritte r0, rd umfaßt:
  • r0) es wird ein skalarer Wert r eingestellt, um das zuletzt eingeschriebene Paar zu markieren, so daß es ausgelesen wird, und es wird ein vektorieller Wert rv eingestellt, um die freien Plätze in den Paaren aufzuzeichnen, welches die zuletzt beschriebenen Plätze sind;
  • rd) es werden Daten von dem zuletzt beschriebenen Platz in einem Paar von Plätzen eingeschrieben, die eine Markierung aufweisen, gemäß welcher ein Auslesen in dem vorhergehenden Schritt erfolgte.
  • Der benutzte Formalismus, um die Arbeitsweise zum Einschreiben und Auslesen zu definieren, ist im einzelnen in der weiter unten folgenden Zeichnungsbeschreibung erläutert.
  • Gemäß einem zweiten Merkmal der vorliegenden Erfindung ist ein asynchrones Kommunikationssystem vorgesehen, welches folgende Merkmale aufweist: einen Bereich eines gemeinsamen Speichers, der in Einzelplätze unterteilt ist; Mittel, um Daten aus einem Eingang in den Bereich des gemeinsamen Speichers einzuschreiben, und Mittel, um Daten aus dem Bereich des gemeinsamen Speichers an einen Ausgang aus zugeben, wobei das Kommunikationssystem dadurch gekennzeichnet ist, daß die Plätze des Bereichs des gemeinsamen Speichers ein erstes und zweites Paar von Plätzen aufweisen und daß die Mittel zum Einschreiben der Daten einen ersten Selektor aufweisen, der einen Wahlschalter für ein Schreibpaar aufweist und Daten nach einem oder dem anderen des ersten und zweiten Paares von Plätzen liefert, und daß ein Wahlschalter für einen Schreibplatz jedem Paar von Plätzen zugeordnet und so angeordnet ist, daß Daten nach dem einen oder dem anderen Platz des Paares gelangen können, wobei der erste Selektor so angeordnet ist, daß ein Paar von Plätzen gewählt wird, aus denen keine Daten ausgelesen werden, und einer von den Plätzen des Paares, der nicht der zuletzt beschriebene ist, und daß die Mittel zum Auslesen von Daten einen zweiten Selektor aufweisen, der einen Wählschalter für ein Lesepaar aufweist, um Daten von dem einen oder dem anderen des ersten und zweiten Paares von Plätzen zu leiten, wobei ein Leseplatzwählschalter jedem Paar von Plätzen zugeordnet und so ausgebildet ist, daß Daten von einem oder dem anderen der Plätze des Paares geleitet werden, und wobei der zweite Selektor so angeordnet ist, daß ein zuletzt beschriebener Platz gewählt wird, so daß das System eine vollständig asynchrone Übertragung kohärenter Daten vom Eingang nach dem Ausgang über den Bereich des gemeinsamen Speichers liefert.
  • Nachstehend wird ein asynchrones Kommunikationssystem gemäß der Erfindung in Verbindung mit der bei liegenden Zeichnung beschrieben. In der Zeichnung zeigen:
  • Fig. 1 ein Blockschaltbild, welches den Datenfluß in einem erfindungsgemäßen System veranschaulicht,
  • Fig. 2 ein Blockschaltbild, welches ein erstes Ausführungsbeispiel der Erfindung veranschaulicht,
  • Fig. 3 ein Blockschaltbild, welches ein abgewandeltes Ausführungsbeispiel der vorliegenden Erfindung zeigt, wobei eine äußere stabilisierte Logik Anwendung findet,
  • Fig. 4 ein Blockschaltbild, welches ein Ausführungsbeispiel der vorliegenden Erfindung zeigt, wobei ein innerer Taktgeber vorgesehen ist,
  • Fig. 5 einen Schlüssel der benutzten graphischen Konventionen.
  • Ein Kommunikationssystem zur Verbindung zweier asynchroner Kreise weist vier parallele Datenregister oder Plätze S1-S4 auf, die paarweise angeordnet sind. Die asynchronen Kreise haben Zugriff auf die vier Plätze S1-S4 über Datenverbindungen, die durch ein Schalterpaar 1, 2 gesteuert werden, und es sind außerdem Platzwählschalter 3, 4, 5, 6 vorgesehen. Das Paar 1, 2 und die Platzwählschalter 3 bis 6 sind so angeordnet, daß sie Daten übermitteln, die von den Plätzen und nach diesen übertragen werden, und zwar in der Weise, daß Leseprozeß und Schreibprozeß vollständig orthogonal zueinander verlaufen, d. h. der Prozeß des Einschreibens von Daten nach den Plätzen bleibt unbeeinflußt von dem gleichzeitigen Auslesen von Daten und umgekehrt. Das Kommunikationssystem ermöglicht daher die Übertragung frischer kohärenter Daten über die Plätze ohne Störung zwischen der Zeitgebung der verschiedenen asynchronen Kreise.
  • Bei dem Ausführungsbeispiel nach Fig. 2 ist ein Eingang I so angeschlossen, daß ein paralleler Zugriff zu jedem der Plätze S1-S4 besteht. Die Daten werden einem Platz nur dann eingeschrieben, wenn der Platz ein Freigabesignal empfängt. Das Freigabesignal wird zunächst einem bistabilen Schreibpaar-Wählschalter 1 zugeführt, der das Freigabesignal zu dem ersten oder anderen von zwei Paaren von Plätzen S1, S2; S3, S4 schickt. Ein Lesepaar-Wählschalter 2 liefert Daten, die aus dem einen oder anderen Paar von Plätzen S1, S2; S3, S4 ausgelesen sind. Die Signale laufen über die Leitungen 7, 8, 9, 10, welche die Lese- und Schreibpaar-Wählschalter 1, 2 verbinden. Der Schreib-Wählschalter 1 kippt zwischen seinen zwei Zuständen gemäß einem Signal, welches den Zustand des Lesepaar-Wählschalters 2 anzeigt, so daß die Daten immer in einem Paar von Plätzen S1, S2; S3, S4 eingeschrieben werden, die gerade nicht ausgelesen werden.
  • Jedem Paar von Plätzen S1, S2; S3, S4 ist ein Leseplatz- Wählschalter 3, 4 und ein Schreibplatz-Wählschalter 5, 6 zusammen mit einem Register 11, 12 zugeordnet, welches jenen Platz aufzeichnet, in den zuletzt Daten eingeschrieben wurden. Dieses Register wird durch ein Signal vom Schreibplatz-Wählschalter 5 immer dann aktualisiert, wenn neue Daten in einen der beiden Plätze des Paares eingeschrieben werden. Der Zustand des Registers 11, 12 bestimmt auch die Zustände der zugeordneten Leseplatz-Wählschalter 3, 4 und Schreibplatz-Wählschalter 5, 6, so daß neue Daten immer dann in einem Platz eingeschrieben werden, der nicht der zuletzt beschriebene Platz ist, und die Daten werden immer von einem Platz ausgelesen, der der zuletzt beschriebene Platz ist. Die Arbeitsweise des Systems wird in den weiteren Einzelheiten weiter unten beschrieben.
  • Obgleich bei diesem Ausführungsbeispiel die Plätze S1-S4 einen integralen Teil des Kommunikationssystems bilden, sind andere Anordnungen denkbar, bei denen das System die Adressen zurückführt, um den Zugriff zu einem äußeren Bereich eines gemeinsamen Speichers zu steuern.
  • In gewissen Fällen kann es zweckmäßig sein, einen Taktgeber zu benutzen, um die Zeitgebung von Schreib- und Leseverfahren aufeinander abzustimmen. Wenn die beiden asynchronen Kreise, die durch das Kommunikationssystem verbunden sind, durch einen einzigen Taktgeber gespeist werden, dann ist das sich hieraus ergebende System bei der Verarbeitungsroutine nicht mehr asynchron, obgleich der Datenfluß immer noch voll asynchron ist. Die einzige Bedingung für die Verfahren besteht darin, daß sie in Mehrfachen der Grundtaktperiode arbeiten, und im übrigen sind die Verfahren frei, Daten zu jeder Zeit zu übertragen, die nicht durch die Zeitgebung irgendwelcher anderer Verfahren beeinträchtigt werden. Eine solche Anordnung hat den Vorteil, daß das System wirksam gegen Zitterfrequenzen und andere metastabile Probleme geschützt ist.
  • Es kann ein innerer Taktgeber benutzt werden, um das Kommunikationssystem selbst anzutreiben. Fig. 4 zeigt eine abgewandelte Ausführungsform der Erfindung, die auf diese Weise arbeitet.
  • Fig. 4 zeigt Daten, die von links ankommen, um in einem gewählten Datenregister aufgenommen zu werden, und die nach rechts ausgegeben werden, um einen Zugriff auf ein gewähltes Datenregister zu bewirken. Das Register, welches die letzten Daten speichert, und das Register, welches zum Einschreiben gewählt wurde, sind beide während der vollständigen Periode zwischen aufeinanderfolgenden "Nachschreib"-Sequenzen wirksam.
  • Der in dieser Figur dargestellte Koppler weist vier parallele Datenregister auf (die als Plätze bezeichnet wurden), die die Bezugszeichen 1', 2', 3' und 4' tragen, wobei jedes Register einen eigenen Zugriffscode sowohl zum Lesen als auch zum Schreiben aufweist. Diese Code sind (0,0), (0,1), (1,0) und (1,1), und jeder Platz ist in der Weise gekennzeichnet, daß er seinen eigenen Code benutzt, beispielsweise d(0,0), d(1,0) usw. Die in den Platz einzuschreibenden Daten werden über "Schreibdaten"-Leitungen 5', 6', 7' und 8' geleitet und nur in einen gegebenen Platz eingeschrieben, wenn dieser durch einen Ausgangsselektor 9' gewählt wurde, der zwei Eingangsleitungen "a" und "b" und vier Ausgangsleitungen "wea", "web", "wec" und "wed" aufweist, wobei jede Ausgangsleitung das Einrastsignal für den zugeordneten Platz liefert. Bei Empfang eines "Einrastsignals" werden die Daten auf der entsprechenden Leitung auf den zugeordneten Platz eingerastet, beispielsweise wenn das "Einrastsignal" auf der Ausgangsleitung "wec" zugeführt wird, werden die Daten auf den Platz 3' 20 von der Datenleitung 7' eingerastet.
  • Eine Reihe von miteinander verbundenen bistabilen Stufen 10', 11', 12', 13', 14' und 15', ein Paar von Zweiweg- Eingangswählern 16' und 17' und ein Zweiweg-Ausgangswähler 18' werden benutzt, um die "Nachschreibe"- und "Vorlese"-Folge zu bestimmen, die durch den Schreibkopf bzw. den Lesekopf getriggert werden. Sowohl das Schreibverfahren als auch das Leseverfahren wird durch einen Taktgeber 19' und entsprechende Folgestufen 20' und 21' gesteuert. Bei der Arbeitsweise der "Nachschreibe"-Folge werden Impulse auf den Leitungen "w0", "w1", "w2" zugeführt, die die Werte am Eingang der jeweiligen bistabilen Stufen freischalten, damit sie darin einrasten können. In gleicher Weise liefert auf der "Datenlese"- Seite des Kopplers die Folgestufe 21' Impulse auf "r1" und "r0", die die Werte freischalten, die in den Eingängen der bistabilen Stufen 14' bzw. 15' gespeichert sind, um darin eingerastet zu werden.
  • Die Werte von "a" und "b", die am Vierwege-Ausgangsselektor 9' verfügbar sind, bestimmen, in welchen der vier Plätze 1', 2', 3' und 4' die Daten auf den Datenleitungen eingerastet werden. In gleicher Weise zeigen die Werte von "y" und "z", die dem Vierwege-Eingangsselektor 22', d. h. den Eingängen der bistabilen Stufen 14' und 15' zugeführt werden, jenen Platz an, von dem die Daten über die Datenleitungen 23', 24', 25' und 26' auszulesen sind.
  • Während einer Schreibfolge werden die folgenden Algorithmen durchgeführt:
  • Für eine Lesefolge wird der folgende Algorithmus durchgeführt:
  • r0: r: = w
  • r1: ri: = s(r)
  • rd: Ausgang: = d(r, ri).
  • Bei jedem der beiden Algorithmen bezeichnen "w" und "r" das letzte beschriebene Paar bzw. das zu lesende Paar.
  • s(0), s(1) bezeichnen den letzten Platz im Paar "0", der zu beschreiben ist, und den letzten Platz im Paar "1", der zu beschreiben ist.
  • wp, ri bezeichnen das zu beschreibende Paar und den Platz in dem Paar, der zum Lesen auserwählt wurde.
  • "r0" und "r1" wählen (zum Lesen) das letzte Paar bzw. den letzten Platz in jenem Paar.
  • "w0" und "w2" wählen (zum Schreiben) den inversen Wert des nächsten Platzes in einem Paar bzw. das nächste Paar; außerdem gewährleistet "w0", daß der Leser weiß, welcher Platz des Paares die neuesten Daten enthält.
  • "w1" gewährleistet, daß der Leser weiß, welches Paar die neuesten Daten enthält.
  • Die Arbeitsweise des Systems gewährleistet, daß die folgenden Bedingungen erfüllt sind:
  • (1) Zum Lesen braucht nur ein einziger Platz während einer Leseoperation zugänglich zu sein.
  • (2) Zum Schreiben braucht nur ein einziger Platz während eines Schreibvorgangs zugänglich zu sein.
  • (3) Zum Lesen und zum Schreiben braucht niemals gleichzeitig der gleiche Platz zugänglich zu sein.
  • (4) Beim Schreiben braucht der Platz, der die letzten vorhergehenden Daten enthält, nicht zugänglich zu sein.
  • (5) Die Datenauslesung muß wenigstens die letzten Daten umfassen, die zu Beginn der "Vorlese"-Folge vorhanden sind.
  • (6) Nach der "Nachschreibe"-Folge müssen die zum Lesen verfügbaren Daten die letzten eingegebenen Daten sein.
  • Die Bedingungen (1) bis (3) bewirken eine Datenkohärenz, und die Bedingungen (4) bis (6) ergeben neue Daten, wie dies für eine voll asynchrone Verbindung erforderlich ist.
  • Das beschriebene System akzeptiert einen ersten "Schreib"- Prozeß zu Beginn der Anschaltung, und es ist danach für einen Normalbetrieb verfügbar. Wenn jedoch der erste Prozeß ein "Lese"-Prozeß ist, können inkohärente Daten ausgelesen werden. Wenn dies akzeptabel ist, besteht keine Notwendigkeit, Anfangsbedingungen festzulegen, aber wenn es nicht akzeptabel ist, inkohärente Daten zu lesen, dann können die folgenden Werte anfänglich nach Anschaltung des Kopplers eingegeben werden:
  • d(0,0) = Null
  • s(0) = 0
  • s(1) = 0
  • w = 0
  • r = 0
  • wp = 1.
  • Natürlich können der Vierwege-Ausgangswähler 9' und der Vierwege-Eingangswähler 22' durch zwei Zweiwege-Ausgangswähler bzw. ein Paar von Zweiwege-Eingangswählern ersetzt werden.
  • Es kann für den Schreibkopf notwendig sein, den Platz zum Lesen zur Verfügung zu haben, der die letzten Daten enthält, d. h. wo die Zunahme zu den letzten Datenwerten vorhanden ist, die dann als folgende Datengruppe in einem anderen Platz gespeichert werden. In gleicher Weise kann ein "Lese"-Zugriff für den neuen Datenplatz erforderlich sein, um die eingegebenen Daten zu überprüfen, wobei der Platz einen Teil des Arbeitsraumes des Systems darstellt.
  • Wenn die Computer von einem Taktgeber aus einer äußeren Quelle gespeist werden, d. h. wenn ein gemeinsamer Taktgeber für beide Computer vorhanden ist, dann kann der Taktimpulsgenerator wegfallen.
  • Die Computer können so angeordnet sein, daß sie einen direkten Zugriff zu den miteinander verbundenen bistabilen Stufen haben, und sie können diese direkt einstellen, d. h. ohne Benutzung von Folgegliedern.
  • Die der Erfindung zugrunde liegende Theorie und weitere Ausführungsbeispiele der vorliegenden Erfindung werden nunmehr im einzelnen diskutiert und bekannten Systemen gegenübergestellt.
  • In der folgenden Diskussion wird eine Anzahl von Ausdrücken benutzt, und zwar in einem speziellen technischen Sinn:
  • - Ein Prozeß ist eine unabhängige Folge von Ereignissen, die durch eine Reihe aufeinanderfolgender Operationen definiert ist.
  • - Ein System ist eine Gruppe von parallelen Prozessen, die über einen gemeinsamen Speicher zusammenwirken, wobei die kombinierten individuellen Operationen der Prozesse den gesamten Operationseffekt des Systems als Ganzes erzeugen.
  • - Ein Algorithmus ist eine Reihe aufeinanderfolgender Operationen mit einem speziellen Zweck (in diesem Falle das Einschreiben oder Auslesen von Daten).
  • - Ein Mechanismus ist eine Gruppe von gegenseitig kompatiblen Algorithmen, Datenstrukturen und steuervariablen mit einem speziellen Operationszweck (in diesem Falle Prozeß-Interkommunikation).
  • Die hier betrachteten Systeme sind von einer Klasse, wo jeder Komponentenprozeß in einer endlosen Schleife abläuft, um seine ihm eigenen Funktionen durchzuführen. Kommunikationsalgorithmen sind in den Prozessen immer dort eingebaut, wo eine Notwendigkeit für das Zusammenwirken mit der Datenstruktur und den steuervariablen eines Kommunikationsmechanismus besteht. Prozesse und Kommunikationsmechanismen können in die Hardware oder Software eingebaut werden oder in einer Mischung von beiden. Die Software kann vollständig in einem einzelnen Prozessor enthalten sein oder über getrennte Prozessoren und einen gemeinsamen Speicher einer Mehrfachprozessorkonfiguration verteilt werden. Verschiedene Optionen werden beschrieben.
  • Problembereich
  • Asynchrone Kommunikationsmechanismen liefern Lösungen für Interface- und Teilungsprobleme bei einer digitalen Systemausbildung. Beispielsweise soll der Eingang von Daten von einem asynchronen Sensorprozeß nach einem Prozeß betrachtet werden, wo die Arbeitsraten und die Kommunikation der beiden Prozesse sehr unterschiedlich sind, oder sich über einen weiten dynamischen Bereich ändert. In vielen Fällen ist es unerwünscht oder unzweckmäßig, die Arbeitsweise der beiden Prozesse miteinander zu verrasten, und in Extremfällen kann es völlig unannehmbar sein, irgendeine Art von Synchronismus auf Kosten eines gemeinsamen Fehlerpunktes zu benutzen, der äußerst verwundbar ist.
  • Ein asynchroner Mechanismus entkuppelt die Kommunikationsprozesse vollständig, und in einem Sinne ist der Mechanismus analog einem Pufferverstärker (ideal mit Eingangsimpedanz Unendlich und Ausgangsimpedanz Null), der traditionell in elektronischen Systemen benutzt wird, um individuelle Funktionen zu isolieren und eine Ausbildung zu modulieren. Als solcher liefert der asynchrone Mechanismus eine Form von einer Systemunterteilung, was unterschiedlich ist zu einem synchronen Aufbau und einer Nachrichtenübertragungstechnik, die sich gewöhnlich in Softwaresystemen findet.
  • Tatsächlich scheinen voll asynchrone digitale Kommunikationssysteme mit zahlreichen praktischen Unmöglichkeiten behaftet zu sein, was erklärt, warum Softwaresystem- Entwicklungsmethoden und Sprachen oft wenig oder keine Stütze für das Konzept unabhängig übertragener Daten zwischen konkurrenten Prozessen liefern. Das Fehlen adäquater Formen von Ausdrücken, beispielsweise Daten, und Mitteln für einen Zugriff stellt einen schwerwiegenden Fehler dar, wenn man zur Ausbildung asynchroner Multiprozessorsysteme gelangt, die einen gemeinsamen Speicher enthalten. Die Kenntnis der Existenz voll asynchroner Formen von Kommunikationssystemen öffnet wichtige neue Konstruktionsmöglichkeiten.
  • Abgesehen von diesen Schwierigkeiten der Anwendung und Ausbildung zeigt die Technologie eine zunehmende Benutzung des Asynchronismus in komplexen Anordnungen für Prozessoren, Speicher und Sammelschienen mit ihren zugehörigen Einrichtungen. Bisher hat das Zusammenwirken zwischen solchen Elementen eines Systems gewöhnlich gewisse untere Pegel in der Hardware ausgeschlossen, aber wir sehen nunmehr die Entwicklung voll asynchroner Doppelanschlußspeicherchips, die völlig frei sind von diesen Ausschlußbedingungen. Diese neuen Einrichtungen bilden ein ideales Medium zur Verwirklichung des Kommunikationsmechanismus, der hier beschrieben ist.
  • Darstellung des Aufbaus
  • Mechanismen des Aufbaus werden zunächst in Ausdrücken der Software entwickelt und dann für Prozeßinterkommunikationstechniken von Mascot (Modular Approach to Software Construction Operation and Test) angewandt. Mascot ist ein Softwareauslegungsverfahren, welches auf Datenflußnetzwerkkonzepten beruht, und es kommt in zwei Hauptvarianten vor, nämlich Mascot 2 und Mascot 3. Hier benutzen wir eine kleine Unterabteilung von Mascot 2, da dies eine ökonomische und einfache repräsentative Form liefert, um die dynamischen Charakteristiken von asynchronen Mechanismen zu betrachten.
  • Es ist keine vorherige Kenntnis von Mascot erforderlich. Die Softwareauslegung für das Papier ist eine etwas ausgedehnte Form von Pascal, was in der Anlage A zusammengefaßt ist. Das Schlüsselkonzept ist hier jenes des Interkommunikationsdatenbereichs (ida), und dies ist ein Konzept, welches Steuervariable und Datenstrukturen definiert, die in einem Speicher angeordnet sind, der zwischen Prozessen angeordnet ist, zusammen mit Zugriffsprozeduren und Funktionen, die die zulässige Steuerung und Datenverarbeitung darstellen. Diese Zugriffsoperationen können einen integralen Teil von ida darstellen, und in diesem Fall rufen die benutzten Prozesse als äußere Prozeduren und Funktionen auf, oder sie können in den benutzten Prozessen eingebaut oder in einem Liniencode oder lokalen Prozeduren und Funktionen eingebaut sein. Die präzise Form ist unwichtig, vorausgesetzt, daß die Logik des zugeordneten Algorithmus erhalten bleibt.
  • Obgleich Mascot im wesentlichen ein Softwareverfahren ist, kann dieses Konzept leicht auf eine Hardwareausbildung ausgedehnt werden. Dies wird zwischen der Ableitung äquivalenter Hardwareformen von voll asynchronen Softwaremechanismen demonstriert. Die Symbole, die benötigt werden, um diese Hardwareausbildung auszudrücken, sind in Anlage B aufgenommen.
  • Beschreibung der Basiserfordernisse
  • Die Aufmerksamkeit richtet sich hauptsächlich auf die asynchrone Übertragung von Daten zwischen zwei Prozessen (dem Schreiber und dem Leser) durch einen gemeinsamen Speicher. Die relative Rate, Zeit und Dauer der Schreib- und Leseoperation sind völlig frei.
  • Es muß eine Zahl von Kriterien für eine voll asynchrone Form einer Einzelschreiber/Einzelleser-Kommunikation erfüllt sein:
  • - Asynchronismus. Keiner der Prozesse darf die Zeitgebung des anderen als direkte Folge der Kommunikationsoperationen beeinflussen.
  • - Kohärenz. Die Daten müssen jeweils als kohärente Gruppe durchlaufen, d. h. ein dazwischenliegender Zugriff auf irgendwelche Datengruppen durch den Schreiber oder durch den Leser ist nicht erlaubt.
  • - Neuheit. Die zuletzt vom Schreiber erzeugte Datengruppe muß immer zur Benutzung durch den Leser verfügbar sein.
  • Diese Forderungen sind annehmbar, wenn aufeinanderfolgende Datenwerte durch den Schreiber so gesetzt werden, daß sie vom Leser ausgelesen werden können, und beide Prozesse laufen frei ohne Kenntnis der Zeitgebung der Kommunikationsoperationen auf der anderen Seite des Mechanismus. Implizit ist in diesem Kommunikationsmodell die Tatsache eingebaut, daß die Daten überschrieben werden können (Schreiber schneller als Leser) oder wiederholt werden können (Leser schneller als Schreiber). Dies ist grundsätzlich unterschieden von Datenstromverbindungen zwischen einem Erzeuger und einem Verbraucher, wo aufeinanderfolgende Werte ohne Verlust oder Wiederholung durchlaufen.
  • Prozeßinterkommunikation
  • Sämtliche in diesem Papier betrachteten Mechanismen beziehen sich auf eine betriebssichere Übertragung von Daten und Steuerwerten zwischen Kommunikationsprozessen.
  • Datenkohärenz
  • Ein Kommunikationsmechanismus muß die Integrität der Datengruppen aufrechterhalten, d. h. die Gruppe von Werten muß gegenseitig konsistent sein, wenn sie einem Leser übermittelt werden. Beispielsweise soll ein Datengruppentyp wie folgt definiert werden:
  • type plot = record
  • x, y, z : real;
  • xdot, ydot, zdot : real;
  • hrs, mins, secs : 0,59 end.
  • Wenn Daten gelesen werden, die neue x, y, z enthalten, aber der Rest der Daten auf den alten Werten verbleibt, dann ist die Grundstellung für zukünftige Voraussagen unzutreffend. Ein Fehlen von Kohärenz in der Zeitbezugnahme würde sogar noch schlimmer sein.
  • Bitkommunikationsvariable
  • Das Fehlen von Kohärenz ist ein potentielles Risiko für jedes Mehrfachfeld von Daten. Glücklicherweise gibt es eine variable Type, deren Wert garantiert immer kohärent ist und wo die Lese- und Schreiboperationen konkurrent sein können und sich nicht gegenseitig stören; dies ist die Bitvariable.
  • Wenn man eine solche Variable liest, besteht keine Möglichkeit, irgendetwas anderes abzunehmen als den alten oder den neuen Wert (im Moment soll die Frage der Initialisierung ignoriert und angenommen werden, daß ein Wert als Ergebnis einer Leseoperation geliefert wird). Die Integrität des voll asynchronen Mechanismus ruht schließlich auf dieser Eigenschaft der Bitvariablen.
  • Praktische Ausbildungen von solchen Variablen müssen bei asynchroner Benutzung gewährleisten, daß:
  • - Jede Variable sollte nur durch einen Prozeß geschrieben werden (obgleich es durch beide gelesen werden kann); nur auf diese Weise kann der Schreiber garantieren, daß ein Leser den beabsichtigten Wert erhält.
  • - Eine Schreiboperation, die den Wert nicht ändert, darf nicht irgendwelche Störungen einführen, die eine gleichzeitige Lesung verursachen könnten, um einen falschen Wert zu erhalten.
  • - Eine Leseoperation sollte den Wert in keiner Weise stören.
  • - Eine Schreiboperation kann nur als beendet betrachtet werden, wenn alle folgenden Lesungen der Variable den neuen Wert ergeben; so darf der Schreibprozeß sich nicht fortsetzen, bis ein neuer Wert unwiderrufbar errichtet ist.
  • Flimmern und Zittern
  • Es gibt zwei weitere sehr subtile Punkte, die berücksichtigt werden müssen, wenn Bitvariable in asynchronen Mechanismen benutzt werden. Der erste Punkt, das Flimmern, bezieht sich auf die Möglichkeit einer gewissen Art von Fluktuationen eines Wertes, wenn ein Bit geschaltet wird. Wenn die Lesung beträchtlich schneller ist und häufiger als das Schreiben, und zwar in einem Ausmaß, daß zwei oder mehrere Lesungen in einer Periode des Schreibens auftreten, dann ist es möglich, daß der Leser eine unzutreffende Wertfolge erlangt (neu gefolgt von alt). Dieser Effekt wird jedoch durch die Dauer der Schreiboperation begrenzt und kann leicht dadurch verhindert werden, daß beispielsweise bei Lese- und Schreibbitoperationszyklen die Zeiten die gleichen sind, und wenn aufeinanderfolgende Lesungen des gleichen Bit immer durch ein Intervall getrennt werden, das gleich ist oder länger als eine Bitoperation, dann kann ein Schreiben niemals durch mehr als eine Auslesung überlappt werden.
  • Während das Flimmern als zeitgebundener Fehler eines Schreibers angesehen werden kann, wodurch kein klares Signal erzeugt wird, ist das Zittern ein potentiell ungebundener Fehler eines Lesers, der den Anschein erweckt, daß der Wert nicht gelesen wurde. Diese Möglichkeit resultiert aus dem metastabilen Effekt, der auftreten kann, wenn eine bistabile Stufe (eine Ein-Bit-Speicherstufe) immer dann umgeschaltet wird, wenn der Eingang unbestimmt ist. Unter diesen Bedingungen gibt es kein festes Zeitintervall, welches lang genug wäre, um zu gewährleisten, daß die bistabile Stufe mit der Möglichkeit Eins einen definierten Ausgangszustand erreicht. Die Wirkungen des Zitterns sind ungewiß, aber es ist klar, daß der unbestimmte Wert (mögliche Fluktuation) eine ungebundene Form von Flimmern erzeugen kann.
  • Im Unterschied zu der gebundenen Form des Flimmerns, wo praktische Messungen durchgeführt werden können, um es vollständig auszuschalten, ist das Zittern ein physikalisches Phänomen, welches eine der Fehlerquellen in asynchronen Systemen bilden kann. Spezielle Auslegungstechniken in der Basis können diese Gefahr jedoch vernachlässigbar klein machen (d. h. vereinbar mit anderen Fehlerquellen), aber es liegt jenseits des Inhalts dieses Papiers, hier eine volle Erklärung zu liefern. Die naheliegenden Messungen umfassen eine Reduzierung der Arbeitsgeschwindigkeit oder eine Erhöhung der logischen Pfadlänge zwischen der asynchronen Auslesung einer Bitvariablen und der Benutzung des so erhaltenen Wertes zum synchronen Schreiben einer weiteren Bitvariablen. Natürlich können die Ursachen und Wirkungen des Zitterns vollständig vermieden werden, indem gemeinsame Taktgeberanordnungen benutzt werden. Dies ist jedoch in der Praxis nicht immer möglich oder erwünscht. Die asynchronen Mechanismen, die in diesem Papier beschrieben werden, sind gegenüber dem Zittern nicht in höherem Maße empfindlich als herkömmliche synchrone Formen (d. h. Synchronisers und Arbiters).
  • Allgemein kann das Flimmern und Zittern in jeder Diskussion der Softwareform des Kommunikationsmechanismus unberücksichtigt bleiben, weil eine fehlerfreie Arbeitsumgebung für die Prozeßdurchführung vorgesehen wurde. Das Flimmern und Zittern muß jedoch bei asynchronen Hardwareanordnungen berücksichtigt werden.
  • Unteilbarkeit
  • Eine Datenkohärenz ist oft der Unteilbarkeit von Instruktionsausführungen zugeordnet. Es ist notwendig, bei jedem Teil eines Algorithmus anzugeben, wo die Unteilbarkeit wesentlich ist. In allen anderen Fällen kann der Algorithmus in einem Mechanismus in der Weise betrachtet werden, daß er in der Lage ist, eine ungehinderte parallele Durchführung zu bewirken, obgleich in der Praxis gewisse Beschränkungen vorhanden sind (beispielsweise wenn die Prozesse in einem einzigen Prozessor unter einem Mehrfach-Exekutivprogramm ablaufen).
  • Unteilbarkeit ist nicht das gleiche wie Nichtunterbrechbarkeit, obgleich letztere benutzt werden kann, um zu garantieren, daß erstere in einem einzigen Prozessor benutzt werden kann. Unteilbarkeit heißt, daß keine konkurrenten Operationen auf die betreffenden Variablen in einer Exekutionsfolge ausgeübt werden, während Nichtunterbrechbarkeit bedeutet, daß die Exekutionsfolge nicht durchgeführt werden kann.
  • Das spezielle Symbol ::= wird benutzt, um eine Unteilbarkeitsbedingung auf gemeinsame variable Operationen in einem Übertragungsstatement zu repräsentieren (Operationen bei privaten Prozeßvariablen sind immer unteilbar). Es werden drei Fälle unterschieden:
  • - gemeinsame Variable ::= Variable; dies bedeutet, daß der Wert in die gemeinsame Variable in einer einzigen unteilbaren Operation eingeschrieben wird.
  • - Variable ::= gemeinsame Variable; dies bedeutet, daß der Wert von der gemeinsamen Variablen in einer einzigen unteilbaren Operation ausgelesen wird.
  • - eine gemeinsame Variable ::= eine andere gemeinsame Variable; dies bedeutet eine unteilbare Kopieoperation von gemeinsamen Variablen.
  • Die obige erste und zweite Feststellung, wobei nur zwei Prozesse Zugriff auf eine gemeinsame Variable haben, verhindern eine Überlappung von Schreib- und Leseoperationen und gewährleisten eine Kohärenz des Wertes der gemeinsamen Variablen, die durch den Leseprozeß erhalten wird. Die dritte Feststellung gewährleistet eine Kohärenz beider Variablen und drückt außerdem eine weitere Einschränkung aus, indem die Forderung gestellt wird, daß keine einander störenden Operationen durchgeführt werden, die diese Variablen betreffen.
  • Die Unteilbarkeitsbedingung kann bei einer Laufzeit auf zweierlei Art erreicht werden, und zwar entweder durch einen Prozeßplaner mit höherem Pegel, der gewährleistet, daß die Schreib- und Leseoperationen sich nicht überlappen, oder durch einen dynamischen Ausschlußmechanismus mit niedrigem Pegel (der oft als willkürlich bezeichnet wird). In der Praxis ist der dynamische Ausschluß allgemein aus Gründen der Flexibilität und der einfacheren Programmierung zu bevorzugen, obgleich hierdurch ein unbestimmtes Element eingeführt wird.
  • Konditionale asynchrone Ausbildung
  • Ein Datenbereich, der in der Lage ist, einen einzigen Datenwert innerhalb eines Mechanismus zu halten, ist als freier Platz (slot) bekannt. Die verschiedenen Ausbildungen der Mechanismen werden gemäß der Zahl von freien Plätzen bezeichnet, die sie enthalten. Ein, zwei und drei Platzmechanismen werden in Softwareform entwickelt, geeignet für konditionale asynchrone Verbindungen innerhalb eines einzigen Prozessors. In diesem Fall sind die schreib- und Leseprozesse entweder solche, die unter einem Vielfach- Programmierungsverfahren ablaufen, oder unterbrochene Routinen, die direkt von einer äußeren Hardware angeregt werden. Jede Ausbildung wird im Hinblick auf ihre Arbeitsweise und die Bedingungen beschrieben, unter denen eine asynchrone Kommunikation stattfindet.
  • Ein-Platz-Mechanismus
  • Die Tabelle 1 liefert ein Modell für einen Ein-Platz-ida. Dies ist die einfachste mögliche Form einer asynchronen Verbindung. Das ida-Modul veranschaulicht die prinzipiellen Merkmale der Bezeichnung insofern, als eine Variable in einem gemeinsamen Speicher (Daten) definiert wird, zusammen mit zwei Zugriffsoperationen (schreiben und Lesen).
  • Der Einzelplatz wird auf den Wert Null initialisiert, um eine Datenkohärenz zu gewährleisten, falls ein Lesezugriff zu dem ida erfolgt, bevor ein erster Schreibvorgang vollendet ist. Die Initialisierung des gemeinsamen Speichers ist nicht verantwortlich für irgendeinen Benutzerprozeß, muß aber ausgeführt werden, bevor ein Datenzugriff erfolgt (der Null-Wert kann während der Kompilierung voreingestellt werden, oder durch irgendeine Operation vor der Durchführung).
  • Die Integrität des Ein-Platz-Mechanismus hängt vollständig von der Tatsache ab, daß sich Schreibvorgänge und Lesevorgänge nicht überlappen, und dies wird angezeigt durch die unteilbare Zuteilung der Daten während des Schreibvorgangs. Vorausgesetzt, daß Schreibvorgang und Lesevorgang niemals gleichzeitig verlaufen, zeigt der Mechanismus ein Verhalten, als wäre er voll asynchron. Wenn jedoch diese Vorgänge gleichzeitig verlaufen (und deshalb eine Operation verzögert wird), dann bleibt diese Durchführung hinter den Grunderfordernissen zurück, weil jener Asynchronismus nicht erreicht wird, obgleich Kohärenz und Bedingungen bezüglich der Frischheit erfüllt sind.
  • Zwei-Platz-Mechanismus
  • Das Zwei-Platz-ida, welches aus Tabelle 2 ersichtlich ist, stellt eine etwas kompliziertere und weniger beschränkte Form der Kommunikation dar. Dieser Mechanismus wird gelegentlich als "swung buffer" bezeichnet, da alternative Daten in alternative Puffer eingeschrieben werden, die dann als Ausgang sichtbar gemacht werden.
  • Die Zwei-Platz-Ausbildung wird kurz wie folgt beschrieben:
  • - Eine Datenanordnung hält die Information vorübergehend, und eine eingeschriebene steuervariable zeigt die letzten Daten an.
  • - Die voreingestellten Anweisungen gewährleisten, daß ein Lesevorgang erfolgt, bevor der erste Schreibvorgang den Null-Datenwert liefert.
  • - Der Schreibalgorithmus wählt abwechselnd Plätze zum schreiben, und am Ende jedes Schreibvorgangs werden die letzten Daten angezeigt.
  • - Der Lesealgorithmus liest jeweils die Daten von dem zuletzt vollständig beschriebenen Platz.
  • Der Zwei-Platz-Mechanismus enthält keine Beschränkung hinsichtlich der Unteilbarkeit und macht von Bitkommunikationsvariablen Gebrauch. Ein Lesevorgang, der zwischen Einschreibvorgängen beginnt, hat Zugriff auf kohärente Daten bis zum Beginn des nächsten Schreibvorgangs. So kann beim Fehlen irgendeiner Gesamtsteuerung der Mechanismus nur zufriedenstellend arbeiten, wenn der Intervall zwischen aufeinanderfolgenden Schreibvorgängen (Ende des einen und Beginn des nächsten) immer größer ist als die Dauer irgendeiner Auslesung. Diese Bedingung gilt in einem Bereich von Anmeldungen, so daß der Zwei-Platz-Mechanismus eine gewisse praktische Bedeutung besitzt. Wenn dieser Mechanismus fehlerhaft arbeitet, ist es die Kohärenzforderung, die nicht erfüllt ist (des Ein-Platz-Mechanismus).
  • Drei-Platz-Mechanismus
  • Ein Drei-Platz-Mechanismus kann auf irgendeiner anderen Form von Arbeitsbedingungen basieren, und die Tabelle 3 zeigt eine Drei-Platz-ida-Ausbildung:
  • - Ein Datenfeld behält die Information vorübergehend, und es gibt zwei Steuervariable: LESEN zeigt an, daß die Daten (wenn welche vorhanden sind) gelesen sind, und SCHREIBEN zeigt die letzten Daten an. Die Kohärenz der Steuervariablen wird durch die Unteilbarkeitsbegrenzung in der Lesezugriffsfunktion geschützt.
  • - Die vorgegebenen Anweisungen gewährleisten, daß das Lesen eintritt, bevor das erste Schreiben den Null-Datenwert ergibt, und daß beide Steuervariablen auf legale Werte eingestellt sind.
  • - Der Schreibalgorithmus wählt jeweils den Platz aus, der garantiert noch nicht gelesen ist und der nicht die letzten Daten enthält. Dies wird durch Benutzung der Konstantfeldunterscheidung erreicht, was die Eigenschaft hat, daß der Wert irgendeines Elements von den Werten der entsprechenden Indizes abweicht. Ein subtiler Punkt ist hierbei, daß, obgleich Lesen eine Änderung bewirken kann, nachdem es benutzt wurde, um den Index zu bestimmen, und bevor der Schreibbefehl vollendet ist, dies nur das gleiche werden kann wie Schreiben, und deshalb kann nicht der Indexwert angenommen werden.
  • - Der Lesealgorithmus benutzt einen unteilbaren Zuordnungsbefehl, um Schreiben auf Lesen zu kopieren und um die letzten Daten zu wählen. Dieser Befehl liefert einen kritischen Teil, während die steuervariablen manipuliert werden.
  • Die Betriebszwänge dieser drei Platzmechanismen sind minimal und begrenzt auf den Ausschluß über den Zugriff von Steuervariablen. Es können nicht die Grunderfordernisse in der gleichen Weise wie bei einem Ein-Platz-Mechanismus erreicht werden, aber es geschieht dies in einem sehr viel geringeren Ausmaß. Die Integrität ist kritisch abhängig von der Unteilbarkeit von jenen Werten für eine Kopieinstruktion zwischen zwei Variablen in einem gemeinsamen Speicher. Obgleich dies sehr leicht in einem einzigen Prozessor zu erreichen ist (in dem beispielsweise eine Prozeßwiederverplanung während der Kopie verhindert wird), ist es nicht so leicht möglich, dies bei einem gemeinsamen Speicher in einer Mehrfachprozessorumgebung zu erreichen.
  • Trotz der Feststellung, daß die Drei-Platz-Ausbildung zu einer geringen Zeitinterferenz führen kann, scheint es zunächst intuitiv, daß drei Plätze genug sein sollten für eine volle Asynchronität (und zwar zwei für den Schreiber, um dazwischen umzuschalten, während der Leser mit dem dritten Platz arbeitet). Um diesen Punkt zu erörtern, lassen wir die Ausschlußbegrenzungen außer Acht und überprüfen die Folgen.
  • Abgewandelter Drei-Platz-Mechanismus
  • Die Lesezugriffsfunktion des Drei-Platz-ida gemäß Tabelle 3 enthält den unteilbaren Kopierbefehl:
  • LESEN ::= GESCHRIEBEN
  • Unter der Annahme, daß dies durch zwei Befehle ersetzt wird:
  • TEMP ::= GESCHRIEBEN; LESEN ::= TEMP
  • Dabei ist TEMP eine implizite Arbeitsvariable im Leseprozeß.
  • Die Unteilbarkeitsbedingung wird nunmehr individuell auf die beiden Variablen verteilt. Dies ist eine wesentlich schwächere Bedingung und erfordert nur, daß die Kohärenz der beiden Steuervariablen gewährleistet ist.
  • Das Einführen in diese alternative Ausbildung ist eine Folge der Situation, wo der Schreiber bereits ein Einschreiben vollendet hat (beispielsweise Platz 2) und einen weiteren Schreibvorgang beginnt (beispielsweise Platz 3), bevor der letzte Lesevorgang begann (beispielsweise Platz 1), und beide Prozesse manipulieren dann die Steuervariablen in einer bestimmten verschachtelten Art und Weise. Um dies numerisch zu veranschaulichen, beginnen wir mit dem Zustand:
  • LESEN = 1, SCHREIBEN = 2, INDEX = 3
  • Dann haben wir die Folge, die zu einem Widerspruch am Platz 2 führt:
  • Leser Schreiber
  • TEMP : = 2
  • GESCHRIEBEN : = 3 weitere Operationen INDEX : = 2
  • LESEN : = 2
  • Obgleich diese dynamische Folge als unrealistisch angesehen werden kann, ist sie dennoch möglich, insbesondere wenn die Prozesse unterbrochen werden können oder willkürlich durch einen Programmierer aufgeteilt werden. Eine Zwangsarbeitsbedingung haftet dem Problem an, indem gefordert wird, daß das Intervall zwischen den Schreibvorgängen ständig groß genug ist, um wenigstens eine komplette Steuervariablenfunktion in der Lesezugriffsfunktion (des Zwei-Platz- Mechanismus) durchführen zu können. Wir können feststellen, daß eine Verbindung besteht zwischen der Grenzbedingung der Benutzung des Algorithmus und der Begrenzung der Ausführung des Algorithmus, repräsentiert durch die unteilbaren Copy- Instruktionen. Beide Formen des Drei-Platz-Mechanismus hängen von der Unteilbarkeit ab, so daß keine einen vollen Asynchronismus erreicht, obgleich sie bereits nahe daran sind.
  • Voll asynchrone Ausbildung
  • Mit einer Ein-Platz-Ausbildung, einer Zwei-Platz-Ausbildung und einer Drei-Platz-Ausbildung war ein voll asynchroner Mechanismus nicht zu erreichen, und deshalb fügen wir einen vierten Platz bei und suchen nach Lösungen, die die doppelte Ungewißheit beseitigen können, die von der Aktivität der beiden unabhängigen Prozesse herrührt. Wir beginnen wie oben mit einer Einmodul-Softwareausbildung, bevor alternative Formen der Repräsentation und Verarbeitung betrachtet werden.
  • Vier-Platz-Mechanismus
  • Tabelle 4 bezieht sich auf die Vier-Platz-ida-Ausbildung.
  • Das ida folgt dem Muster, welches bereits aufgebaut wurde, d. h. es besteht aus einem Datenfeld, aus Steuervariablen und zwei Zugriffsalgorithmen. Das Datenfeld und die Steuervariablen sind die folgenden:
  • - var DATA : Feld(Bit, Bit) von Daten. Die Übergangsdaten durchlaufen dieses Feld in einer Organisation von zwei Paaren von zwei Plätzen. Sämtliche Plätze sind vorher auf Null gesetzt.
  • - var PLATZ : Feld(Bit) von Bit. Jedes Element dieses Feldes zeigt den Index des Platzes an, der die letzten Daten innerhalb des entsprechenden Paares enthält. Beide Elemente sind vorher auf Null gesetzt.
  • - var LESEN : Bit. Dies zeigt das Paar an, welches gerade gelesen wird oder welches zuletzt gelesen wurde. Es ist auf Null gesetzt.
  • - var GESCHRIEBEN : Bit. Dies zeigt das zuletzt geschriebene Paar an. Es ist auf Null gesetzt.
  • Das Schreibzugriffsverfahren (der Schreibalgorithmus für den Mechanismus) besteht aus örtlich variablen Erklärungen und einer Reihe von Operationen wie folgt:
  • - var PAAR, INDEX : Bit. Zwei Variable halten das Paar und den Index des Platzes innerhalb des zu beschreibenden Paares.
  • - PAAR := nicht LESEN. Dies wählt ein Paar zum Schreiben 20 aus, in dem jenes Paar vermieden wird, an dem der Leser ein gegenwärtiges Interesse erklärt hat.
  • - INDEX := nicht PLATZ(PAAR). Dies wählt den Platz innerhalb eines Paares zum Schreiben, indem jener Platz in diesem Paar vermieden wird, der zuletzt beschrieben wurde und den der Leser auslesen kann.
  • - DATEN(PAAR, INDEX) := ITEM. Dies kopiert die Daten in das ida.
  • - PLATZ(PAAR) := INDEX. Die letzten Daten innerhalb des gewählten Paares werden angezeigt.
  • - GESCHRIEBEN := PAAR. Das Paar, welches die letzten Daten enthält, wird angezeigt.
  • Die Lesezugriffsfunktion (der Lesealgorithmus für den Mechanismus) besteht aus örtlichen variablen Erklärungen und einer Reihe von Operationen wie folgt:
  • - var PAAR, INDEX : Bit. Zwei Variable halten das Paar und den Index des Platzes innerhalb des Paares, der gelesen wird.
  • - PAAR := GESCHRIEBEN. Das Paar, welches als zuletzt beschrieben angegeben wurde, wird zum Lesen gewählt.
  • - LESEN := PAAR. Dies zeigt das Interesse des Lesers an einem speziellen Paar an. Dieser Befehl (in Verbindung mit dem ersten Befehl der Schreibzugriffsprozedur) gewährleistet, daß nach Vollendung irgendeines Schreibvorganges ein weiteres Schreiben auf das andere Paar umgeschaltet wird, so daß der Platz, der zum Lesen bereit ist, nicht gestört werden kann.
  • - INDEX := PLATZ(PAAR). Dies wählt den Platz innerhalb des Paares, welches zum Lesen gewählt wurde, wobei der Platz in diesem Paar ausgewählt wird, der zuletzt beschrieben wurde.
  • - LESEN := DATEN(PAAR, INDEX). Dies kopiert die Daten aus dem ida.
  • Die INDEX-Variable in dem SCHREIB-Zugriffsverfahren und die PAAR-Variable in der LESE-Zugriffsfunktion sind Arbeitsvariable. Sie werden mitgeführt, um das mögliche Ansteigen in der Wirksamkeit anzuzeigen und den Inhalt des gemeinsamen Speichers zu vermindern, was dadurch erreicht wird, daß eine örtliche Kopie (oder eine Inversion) der gemeinsamen Variablen genommen wird. In einer kompakteren Form des Algorithmus wäre weiter nichts erforderlich.
  • Der Algorithmus enthält keine bedingten Befehle. Die Steuervariablen bestimmen nicht den Programmfluß, aber sie werden nur als Feldindizes benutzt. Als solche sollten sie nicht als Flaggen bezeichnet werden, die Bedingungen festlegen, sondern nur als Adressen, die bestimmte Plätze des Speichers kennzeichnen. Es gibt keine unteilbare Bedingung (wie in dem Ein-Platz-Mechanismus oder dem Drei-Platz-Mechanismus), und es gibt keine Beschränkungen hinsichtlich der Verwendung, wie es der Fall ist bei einem Zwei-Platz-Mechanismus, da der Vier-Platz-Mechanismus voll asynchron ist.
  • Datenflußmodell
  • Die Arbeitsweise des Mechanismus kann am besten als Ganzes unter Zuhilfenahme des Datenflußmodells in Fig. 1 betrachtet werden. Jedes Kästchen repräsentiert eine Variable. Die dicken Verbindungslinien zeigen den Datenfluß durch den Mechanismus an, und die dünnen Linien entsprechen der Datenübertragung von einer Steuervariablen auf eine andere. Alle Linien sind mit einem Buchstaben und einem Index gekennzeichnet, um den relevanten Algorithmus und die Befehlsnummer anzuzeigen.
  • Die Kästchen der gemeinsamen Variablen (LESEN, SCHREIBEN, PLATZ(0), PLATZ(1)) werden nur benutzt, um Steuerwerte zu halten, während die Kästchen für die örtlichen Variablen (INDEX und PAAR in SCHREIB-Verfahren und LESE-Funktion) als Schalter wirken, um die Daten nach gewählten Plätzen und von diesen weg zu überführen. Diese Schalter können mit dem Wert der Steuervariablen oder dem inversen Wert versehen werden (angezeigt durch einen strich), und sie können auch gelesen werden. Die INDEX-Schalter sind dupliziert und ebenso die Operationen auf ihnen. Die einzigen wirksamen Operationen, die relevant sind bezüglich eines INDEX-Schalters, sind jene, für welche die Datenroute bereits durch einen PAAR- Schalter gewählt wurde.
  • Es ist ersichtlich, daß das Datenflußmodell treu die aufeinanderfolgenden Schreib- und Lesealgorithmen wiedergibt. Ein Weg nach einem Platz wird durch W0 und W1 geöffnet mit Daten, die durch W2 übertragen werden. Ein Weg von einem Platz wird durch R0 und R2 geöffnet, wobei Daten durch R3 übertragen werden. R1 wird benutzt, um neue Einschreibungen in ein Paar zu blockieren, unmittelbar bevor eine Lesung gestartet wird, und W3 und W4 zeigen neue Daten unmittelbar nach Vollendung eines Schreibvorganges an.
  • Die Integrität der Vier-Platz-Ausbildung ist in kritischer Weise abhängig von der Ordnung der einzelnen Operationen in jedem Algorithmus. In einem Sinn kann der Mechanismus betrachtet werden, als würde er eine orthogonale Strategie des Vermeidens durchführen, da jeder Prozeß eine Gesamtsteuerung über eine unabhängige Achse des zweidimensionalen Datenfeldes bewirkt, wobei der Zwang besteht, daß eine Störung mit der anderen Achse vermieden wird. So wird das Schreiben jenem Paar zugeführt, das nicht zum Lesen benutzt wird, und das Lesen wird jenem Platz innerhalb eines Paares zugeführt, der nicht zum Schreiben benutzt wird. Übergangsungewißheiten beim Lesen und Schreiben werden von einem Platz nach dem anderen bewegt und dadurch festgelegt, daß genug Manövrierspielraum verbleibt, um eine ordnungsgemäße Vollendung jeder Operation nacheinander zu gewährleisten, wenn eine neue Operation gestartet wird.
  • Verteilte Prozessorformen
  • Die vorbeschriebenen Mechanismen wurden als Einzelmoduln bezeichnet, und sie sind direkt geeignet zum Einbau in einen einzigen Prozessor, wenn eine gemeinsame zentrale Prozessoreinheit eine wirkliche Unabhängigkeit der Kommunikationsprozesse verhindert und die Rolle eines asynchronen Mechanismus in dieser begrenzten Arbeitsumgebung darin besteht, die dynamische Entkopplung zu maximieren. Das Wesen der voll asynchronen Mechanismen besteht darin, daß die Arbeitsweise von Lesen und Schreiben nicht blockiert wird, die unabhängig voneinander ausgeführt werden, so daß eine einfachere Prozeßdurchführung möglich ist, um eine volle Ausnutzung zu gewährleisten.
  • Wenn man jedoch annimmt, daß die Schreib- und Lesevorgänge in getrennten Prozessoren angeordnet sind, dann haben beide Zugriff zu dem gemeinsamen Speicher, in dem Daten und Instruktionen plaziert werden können. Das Ausmaß des Asynchronismus (d. h. das Ausmaß, in welchem keine zeitliche Störung auftritt), das in einer solchen Arbeitsumgebung erreicht werden kann, hängt von der Plazierung der Komponententeile des Mechanismus ab. Zunächst soll angenommen werden, daß nur eine Kommunikationsschiene für zwei Prozessoren und den Speicher vorgesehen ist.
  • Wenn alle Komponenten (Daten und Steuervariable, Schreib- und Lesealgorithmen) in einem gemeinsamen Speicher angeordnet sind, dann wird der Asynchronismus gegenüber dem Fall mit einem einzigen Prozessor insofern verbessert, als einzelne Befehle parallel ausgeführt werden können. Jedoch tritt immer noch eine zeitliche Störung auf Kosten der Zugriffsverbesserung (durch die Schienenwahl) auf, da die Instruktionen geholt werden, und die Daten und die Steuervariablen werden geschrieben oder gelesen.
  • Eine weitere Verbesserung kann erreicht werden, indem die Ausbildung aufgespaltet wird, so daß die Schreib- und Lesealgorithmen jeweils in dem Prozessor für den jeweils benutzten Prozeß zur Verfügung stehen und nur die gemeinsamen Variablen in dem gemeinsamen Speicher angeordnet sind. Eine zeitliche Störung resultiert nunmehr von Daten- und Steuervariablenzugriff. Die Unterteilung dieser Art kann formell in Mascot 3 ausgedrückt werden, aber die Beschreibung hier reicht aus, um die dynamischen Implikationen zu verstehen.
  • Natürlich kann ein voller Asynchronismus nicht erreicht werden, wenn Prozessoren und Speicher durch eine gemeinsame Schiene verbunden sind. Nunmehr werden einige der Doppelspeicher verfügbar und voll asynchron, und diese Bedingung kann eliminiert werden. Diese Speicher enthalten keine Bedingung, und es liegt am Benutzer, die Datenintegrität zu sichern. Die Vier-Platz-Ausbildung kann einen vollen Asynchronismus ergeben, wenn die gemeinsamen Daten und Steuervariablen in einem solchen Speicher angeordnet sind.
  • Algebraische Form
  • Das Vier-Platz-ida ist eine spezielle Softwareausbildung für einen voll asynchronen Mechanismus. Die gemeinsamen Variablen und Algorithmen erfüllen den Abstract, der der Logik dieser Art der Kommunikation zugrunde liegt. Das Wesen dieser Logik kann durch Transformation dieser Variablen und Algorithmen in eine kompaktere algebraische Form abgeleitet werden. Diese algebraische Form kann ihrerseits als Basis für eine Hardwareausbildung dienen und ist geeigneter für eine mathematische Analyse des Mechanismus.
  • Der Startpunkt für die Transformation ist die Softwareausbildung, wie sie in Tabelle 4 angegeben ist. Allgemein kann jeder Zugriff oder jede Funktion als eine mit drei Komponentenoperationen betrachtet werden, wobei die erste Operation die Sichtbarkeit des gemeinsamen Speichers in dem ida verstärkt (bekannt als Vorsequenz), die zweite Operation Daten einfügt oder entfernt und die dritte schließlich irgendeine Administration durchführt, die infolge der Zugriffsoperation notwendig ist (bekannt als Postsequenz). Der Zugriffsalgorithmus für den Vier-Platz-Mechanismus zeigt, daß das Einschreiben Vor- und Nachsequenzen besitzt, die jeweils den Schreibzugriff öffnen und die letzten Daten anzeigen, wobei jedoch das Lesen nur eine Vorsequenz besitzt, in der das Interesse des Lesers an einem speziellen Platz angezeigt wird.
  • Eine weitere Betrachtung der Schreibzugriffsprozedur zeigt, daß unter der Voraussetzung, daß der Platz, der als nächster zum Schreiben benutzt wird, vom einen Ende des Einschreibens bis zum Beginn des nächsten erkannt werden kann, die Schreib-Prä- und -Postsequenzen in eine einzige Postsequenz kombiniert werden können. Diese Vereinfachung wird in der algebraischen Form benutzt; hierdurch wird eine besser ausgeglichene Lösung erzeugt, in der Schreibplatz und Leseplatz über Intervalle zugänglich sind, die nur durch eine einzige Post- oder Präsequenz begrenzt sind. (Es kann scheinen, daß die Unterscheidung zwischen post und prä nunmehr reduntant ist; es ist jedoch sinnvoll, die Benutzung dieser Ausdrücke fortzusetzen, da zur Erfüllung der Frischheitsbedingung die Schreib-Postsequenz durchgeführt werden muß, so bald als möglich, nachdem die Schreiboperation beendet ist, und die Lese-Präsequenz muß durchgeführt werden, so spät als möglich, bevor eine Leseoperation eintritt.)
  • Demgemäß können wir die Algorithmusdefinitionen zusammenfassen, die für eine algebraische Repräsentation geeignet sind:
  • Schreiben Lesen
  • Öffnen zum Schreiben Lesen Präsequenz
  • Schreiben Postsequenz Öffnen zum Lesen
  • Um das algebraische Äquivalent der Vier-Platz-Softwarealgorithmen abzuleiten, ist es zweckmäßig, eine kompaktere Schreibweise vorzunehmen, nämlich:
  • - d(Bit, Bit) = var DATEN : Feld(Bit, Bit) von Daten
  • - s(Bit) = var PLATZ : Feld(Bit) von Bit
  • - r = var LESEN : Bit
  • - w = var SCHREIBEN : Bit
  • - wp = var PAAR : Bit während der SCHREIB-Zugriffsprozedur
  • - ri = var INDEX : Bit in der LESE-Zugriffsfunktion
  • Nunmehr können die folgenden Zugriffsalgorithmen definiert werden:
  • Die Kombination von Schreib-Prä- und -Postsequenzen öffnet die Möglichkeit, diese einzuschichten, statt sie konsekutiv wie oben zu plazieren. Eine sorgfältige Betrachtung zeigt, daß die Ordnung von w1 und w2 umgekehrt werden kann, unter der Voraussetzung, daß der alte Wert von wp beibehalten und benutzt wird, um w einzustellen. Dies kompliziert die Algorithmen ein wenig und führt zu einer späteren Anzeige neuer Daten. Hierdurch wird jedoch ein Vorschlag zur gleichzeitigen Durchführung von w1 und w2 gegeben.
  • Parallele Logikausbildung
  • Das Datenflußmodell gemäß Fig. 1 liefert den Startpunkt für die Entwicklung äquivalenter Hardwareausbildung. Dieses Modell schlägt einen Mechanismus vor, der aus miteinander verbundenen Registern, bistabilen Stufen und Schaltern besteht. Die Anlage B liefert die spezielle graphische Konvention, die benötigt wird.
  • Die algebraische Form der Zugriffsalgorithmen ermöglicht eine direkte Einfügung in die Hardware. Es ist nur erforderlich, die Steuervariablen als miteinander verbundene Gruppe diskreter Elemente zu repräsentieren und die Operationen gemäß der Steuerlogik, die gerade erhalten wurde, zeitlich abzustimmen. Die Überprüfung der ersten beiden Operationen der Schreib-Postsequenz läßt eine gewisse Zweckmäßigkeit für eine parallele Ausführung erkennen, mit dem Ziel, schneller neue Daten anzuzeigen. Um zu zeigen, daß die zweite Operation in keiner Weise von der ersten abhängt, können wir den Schreibalgorithmus wie folgt unter Benutzung paralleler Operationen darstellen:
  • Eine Überprüfung der Lese-Präsequenz zeigt, daß in diesem Fall eine sequentielle Abhängigkeit besteht, und das Ergebnis der ersten Operation muß verfügbar sein, bevor die zweite Operation gestartet werden kann. Eine kleine Änderung des Algorithmus vermeidet diese Folgebedingung. Anstelle s(r) mit ri einzuführen, transformieren wir ri in einen Vektor rv der Type Feld(Bit) eines Bit, so daß das komplette s-Feld in rv eingeführt werden kann, und zwar mit einer geeigneten Post-Selektion innerhalb des Datenübertragungsbefehls. So kann der Lesealgorithmus wie folgt umgeschrieben werden:
  • r0: (r:= w rv:= s)
  • rd: OUTPUT:= d(r, v(r))
  • Es gibt drei zeitliche Begrenzungen innerhalb dieser neuen Formen der Algorithmen:
  • - Schreib-Bit-Versatz (w0) ≥ 0. Das Ergebnis der ersten Operation in w0 wird erreicht, bevor das Ergebnis der zweiten Operation vorliegt.
  • - Lese-Bit-Versatz (r0) ≥ 0. Der Eingang der ersten Operation in r0 wird erreicht, bevor der Eingang für die zweite Operation vorliegt.
  • - Dauer (w0) + Dauer (rd) < Intervall (w1 - w0). Die Zeit, die erforderlich ist, damit w0 ein Ergebnis liefert, plus der Zeit, die rO erfordert, um das Ergebnis zu erzielen, muß kleiner sein als das Intervall zwischen Start von w0 und Start von w1.
  • Die ersten und zweiten Zwangsbedingungen sichern die Orderung von Operationen innerhalb der Algorithmen. In der Praxis werden kleine Verzögerungen benutzt, um dies zu erreichen, wobei diese gerade ausreichen, um die Effekte der Komponententoleranzen zu berücksichtigen. Die dritte Zwangsbedingung bedeutet, daß wenigstens entweder r0 das Ergebnis von w0 in Betracht zieht, oder w1 das Ergebnis von r0 in Betracht zieht, so daß die orthogonale Strategie erhalten bleibt, auf der der Mechanismus beruht.
  • Fig. 2 zeigt eine Hardwareausbildung, die dem Datenflußmodell gemäß Fig. 1 dicht folgt und die parallelen Formen von den oben entwickelten Algorithmen benutzt. Auf der Eingangsseite werden Daten allen vier Plätzen dargeboten, aber der Einrastimpuls wird nur einem Platz über Schalter zugeführt, die durch die Schreib-Postsequenzlogik gesteuert werden. Auf der Ausgangsseite arbeiten die Schalter in den Datenverbindungen und werden durch die Lese-Präsequenzlogik gesteuert. Die Steuerlogik auf beiden Seiten muß den oben erwähnten Zwangsbedingungen von Ordern und Zeitgebung entsprechen.
  • Die hier dargestellte Ausbildung ist frei von den Beschränkungen, die vom Flimmern herrühren, wenn die Bit- Steueroperationen eine geeignete Dauer und geeignete Intervalle besitzen. Die Ausbildung ist nur vollständig frei vom Zittern und dem hieraus folgenden ungebundenen Flimmern, wenn Schreiber und Leser einen gemeinsamen Takt mit einer gemeinsamen Phase haben, um die bistabilen Stufen des Mechanismus zu schalten. In diesem Fall gibt es keine Störung zwischen den Operationen von Schreib- und Lesesteuerlogik, d. h. sämtliche Variablen sind stabil, wenn sie gelesen werden, und neue Werte haben ihren Einfluß in dem folgenden Zyklus. Die einzige Zwangsbedingung beim Ordern, welche verbleibt, ist die Einstellung von wp, und dies wird in der Praxis dadurch garantiert, daß w0 und w1 durch einen Taktzyklus getrennt werden. Wenn Schreiber und Leser einen gemeinsamen Taktgeber besitzen, aber die Phase der Steuerlogikschaltung sich unterscheidet, würde der Mechanismus eine einstellbare Zeitverzögerung haben müssen, um die Phasendifferenz auszumerzen.
  • Die Benutzung eines gemeinsamen Taktgebers resultiert in einer diskreten Form von Asynchronismus, der hinter dem vollen Asynchronismus zurückbleibt. Die Daten können in den Mechanismus eingeschrieben oder von ihm unbehindert ausgelesen werden, aber natürlich gewährleistet die synchrone Durchführung, daß alle Operationen schließlich auf den Takt verriegelt sind. So haben wir einen Asynchronismus mit einem höheren Informationsübertragungspegel, aber nicht mit dem niedrigen Arbeitsdurchführungspegel.
  • Ob ein gemeinsamer Taktgeber benutzt wird oder nicht, die Steuerung erfolgt jeweils derart, daß das Intervall zwischen aufeinanderfolgenden Operationen auf jeder Seite lang genug sein muß, damit die Speicherpegel sich einstellen können, bevor die nächste Operation durchgeführt wird. Dies begrenzt die absolute Geschwindigkeit der Operationen, jedoch besteht keine Begrenzung bezüglich der relativen Rate der Zeit oder der Dauer bezüglich Datenschreiben und -lesen. Der Bereich der zulässigen absoluten Geschwindigkeiten auf beiden Seiten des Mechanismus erstreckt sich von Null (oder Totpunkt) durch eine obere Begrenzung, die durch die Speichereinstellzeiten bestimmt ist.
  • Es ist keine Initialisierungslogik dargestellt, aber diese kann leicht hinzugefügt werden. Statt dessen ist es möglich, wie auch der Zustand des Mechanismus beim Start ist, zuerst die Schreiboperation durchzuführen und danach normal zu arbeiten. So kann die Initialisierungslogik wegfallen, wenn der erste Schreibvorgang auftritt, bevor der erste Lesevorgang eingeleitet wird (oder wenn das Lesen nicht initialisiert ist und möglicherweise inkohärent ist, haben Daten vor dem ersten Schreiben keinen Einfluß).
  • Von außen her stabilisierte Logik
  • Wenn die Hardwareausbildung in einer voll asynchronen Umgebung benutzt werden muß, dann müssen Vorkehrungen getroffen werden, um die Anfälligkeit gegenüber Flimmern und Zittern zu begrenzen. Die Begrenzung des Flimmerns wird dadurch berücksichtigt, daß Zwangsbedingungen bezüglich Dauer und Intervall von Steueroperationen aufgeprägt werden. Die Raten auf den beiden Seiten des Mechanismus brauchen nicht unbedingt unterschiedlich zu sein, bevor dies von Bedeutung ist. Das Zittern und das unbegrenzte Flimmern bewirken weiter eine Gefahr. Dies ist steuerbar, indem jeder mögliche unstabile Steuerwert in den Prozeß eingegeben wird, der einschreiben muß, während eine Stabilisierung auftreten kann, bevor eine Rückkehr nach dem Mechanismus erfolgt. Dies ergibt eine vollständige Prozeßsteuerung über Fehlerraten, die vom Zittern herrühren. Wenn die durchgeführten Prozesse programmgemäß im Computer ablaufen, erscheint es undenkbar, daß eine Instabilität fortdauert, während ein Steuerwert über den Prozeß geschickt wird.
  • Die resultierende Ausbildung ist in Fig. 3 dargestellt. Die relevanten Algorithmen sind: Schreiben Lesen
  • Auf der Schreibseite werden die Daten geschrieben (wr), und die relevante s-Variable wird umgeschaltet und w wird geschrieben (w0), und der inverse Wert von r wird gelesen und als wp' (we) zurückgeführt, und schließlich wird der neue Wert von wp als (w1) geschrieben. Auf der Leseseite werden die w- und s-Variablen gelesen und als r' und rv' (re) zurückgeführt, und die neuen Werte von r und rv werden (r0) geschrieben, und schließlich werden die Daten (rd) gelesen. Die Echtzeit-Zwangsbedingungen, die dieser Ausbildung innewohnen, sind dreifacher Art:
  • - Schreib-Bit-Versatz (w0) &ge; 0.
  • - Lese-Bit-Versatz (re) &ge; 0.
  • - Dauer (w0) + Dauer (re + r0) < Intervall (we - w0).
  • Parallele Operationen innerhalb der Algorithmen ergeben drei Vorteile. Zunächst werden innerhalb der Grenzen der Bit- Versetzung die Daten angezeigt, sowohl als geschriebene als auch zum Lesen in einer einzigen Stufe. Zweitens werden neue Daten angezeigt, als zu einem früheren Punkt in dem Schreibalgorithmus geschrieben. Drittens können bei Benutzung der äußeren Stabilisierung die r'- und rv'-Variablen gleichzeitig stabilisiert werden. Es besteht jedoch der Nachteil: Die Dauerzwangsbedingung führt eine zeitliche Abhängigkeit zwischen den beiden Seiten ein, die in serieller Form nicht vorhanden ist.
  • In der Ausführungsform nach Fig. 3 ergibt sich eine Beschränkung. Die äußere Stabilisierung fällt weg, und die Ausführung wird identisch zu jener gemäß Fig. 2. In diesem Fall wird bei asynchroner Benutzung der Zitterfehler vollständig bestimmt durch die Qualität der bistabilen Stufen (moderne bistabile Stufen können so ausgebildet werden, daß eine äußere Stabilisierung unnötig wird). Es ist außerdem zu bemerken, daß das w0/w1-Intervall direkt als Teil des Mechanismus übernommen werden kann, indem die entsprechende Verzögerung eingeführt wird.
  • Variationen und weitere Ausbildungen
  • Zahlreiche Variationen und weitere Ausbildungen sind möglich. Beispielsweise ermöglicht die soeben beschriebene Hardwareausbildung einen direkten Zugriff auf die Plätze, die zum Schreiben und Lesen gewählt wurden, während das Vier-Platz-ida verfahrensmäßige Interfaces für die Platzdaten besitzt. Eine Softwareausbildung, die der Hardwareausbildung besser äquivalent ist, würde Zugriffsprozeduren enthalten, die die Zeiger auf die gewählten Platzdatenbereiche zurückführen; eine solche Ausbildung würde auch eine Kombination von Schreib-Prä- und -Postsequenzen ermöglichen.
  • Die Ausbildung kann, falls erforderlich, wie folgt erweitert werden:
  • - Dem Schreiber, der Zugriff zu dem gewählten Platz für das Schreiben hat, kann außerdem ein Zugriff zum Lesen ermöglicht werden, so daß dieser Platz als Arbeitsvariable benutzt werden kann.
  • - Der Schreiber kann einen Lesezugriff zu jenem Platz erhalten, der die letzten Daten enthält, damit auf diese Daten Bezug genommen werden kann, während ein neuer Wert in dem Platz aufgebaut wird, der zum Lesen auserwählt wurde.
  • - Der Leser kann zusätzlich zum Lesezugriff auf dem zum Lesen gewählten Platz einen Schreibzugriff erhalten, so daß dieser Platz als Arbeitsvariable benutzt werden kann (es ist jedoch zu berücksichtigen, daß diese und die vorherige weitere Ausbildung sich gegenseitig ausschließen).
  • Die zuletzt erwähnten weiteren Ausgestaltungen ermöglichen eine Entwicklung zu einer semisynchronen Form des Mechanismus, wobei der Leser nur einmal auf die letzten Daten zugreifen kann, jedoch der Schreiber keiner Beschränkung ausgesetzt ist. Dies wird bewirkt, indem ein Identifizierungskennzeichen den Daten aufgeprägt wird, die im Mechanismus enthalten sind. Das Identifizierungskennzeichen wäre bei der Schreibzugriffsprozedur zu setzen und bei der Lesezugriffsfunktion zu löschen. Sollte bei einer Lesezugriffsfunktion ein ungelöschtes Identifizierungskennzeichen gefunden werden, dann würde dieses wiederholt die Lese-Präsequenz aufrufen, bis festgestellt wird, daß neue Daten vorhanden sind. Dieses Protokoll gewährleistet, daß der Leser immer die frischesten Daten verarbeitet, aber niemals Zeit vergeudet, um die gleichen Daten zweimal zu verarbeiten.
  • Experimentelle Bestätigung
  • Die experimentellen Ergebnisse haben die Richtigkeit der Vier-Platz-Ausbildung bestätigt. Es sind zahlreiche Varianten möglich, aber die extreme Einfachheit der Algorithmen bedeutet, daß Software- und Hardware-Erfordernisse leicht verwirklicht werden können, und es wurden zufriedenstellende Ergebnisse von mehreren voneinander unabhängig arbeitenden Bearbeitern erlangt. Wie bei jeder neuartigen Idee ist es wichtig, daß sie durch Versuche praktisch realisiert wird.
  • Software-Erfordernisse
  • Die einfachste Form der Software-Erforschung der Vier- Platz-Ausbildung besteht aus einem Hauptprogramm, welches Schreib- und Leseprozeduren aufrufen kann, welche die Algorithmen verkörpern und Zugriff zu den gemeinsamen Daten- und Steuervariablen haben. Die Schreib- und Leseprozeduren sind jeweils als eine Zahl diskreter Stufen programmiert, die aufeinanderfolgend in einer endlosen Schleife abgerufen werden, und wenn die Steuerung zum Hauptprogramm zurückkehrt, nachdem eine Zahl von Schritten (durch einen Parameter bestimmt) durchgeführt ist, dann wird die Folge danach wiederholt. Das Hauptprogramm ruft abwechselnd Schreib- und Leseprozesse auf, wobei eine zufällige Zahl von Schritten bei jedem Aufruf gekennzeichnet wird, und so wird der Prozeß einer willkürlichen Einschichtung der beiden Algorithmen erzeugt.
  • Um in der Lage zu sein, die Kohärenz zu überprüfen, besteht jeder Datensatz aus zwei identischen ganzzahligen Werten, die in zwei getrennten Stufen geschrieben sind und die auch in zwei getrennten Stufen gelesen werden. Um in der Lage zu sein, die Frischheit zu überprüfen, zeigen die Werte die Zahl von vorher geschriebenen Sätzen an. Der Leser prüft die Kohärenz, indem festgestellt wird, daß ein Paar identischer Werte bei jeder Auslesung erlangt wird, und die Frischheit wird dadurch überprüft, daß der Wert mit dem zuletzt geschriebenen Wert zu Beginn einer Ablesungsfolge verglichen wird (dieser Wert ist speziell verfügbar für den Schreiber). Es sind Versuche während über einer Million Datengruppen durchgeführt worden, die die beiden Prozesse durchlaufen haben, aber es wurden keine Fehler oder unerwarteten Effekte beobachtet.
  • Derartige Software-Experimente üben die Logik in einer synchronen Durchführungsumgebung aus. Obgleich selbst die überprüften Algorithmen äußerst einfach sind, ist der Bereich möglicher Kombinationseingänge und innerer Mechanismuszustände so groß, daß eine sehr lange Zeit erforderlich wäre, um einen ausgiebigen Versuch durchzuführen. Diese praktische Schwierigkeit wird zu einer theoretischen Unmöglichkeit, wenn der Mechanismus in einer tatsächlich asynchronen Form verwirklicht wird, die unabhängige Taktgeber auf der Schreibseite und der Leseseite aufweist.
  • Beschränkte Flimmersimulation
  • Die Softwareverwirklichung kann auf einfache Weise ausgedehnt werden, um die begrenzte Form von Flimmern zu erforschen. Es gibt drei Paare von Operationen, wo die Algorithmen durch diesen Effekt gefährdet sind:
  • Variable Schreiben Lesen
  • Lesen R1 W0
  • Geschrieben W4 R0
  • Platz W3 R2
  • Es kann gezeigt werden, daß die Integrität der Algorithmen durch begrenztes Flimmern unbeeinflußt bleibt. Das Durchführungsmodell kann ausgedehnt werden, um das Flimmern zu erfassen, indem eine geschriebene Steuervariable als Äquivalent für Mehrfach-Schreibvorgänge betrachtet wird, wo diese mit einer Reihe von Lesungen zusammenfällt, die Flimmerwerte erlangen. In diesem Fall wird eine einzelne Schreiboperation zu einer Reihe von Schreibergebnissen, die alternative Werte erzeugen, bevor schließlich der neue (geänderte) Wert ausgegeben wird. Die individuellen Lese- und Schreibereignisse können noch als unterschieden und nicht koinzident betrachtet werden, und demgemäß ist die analytische Annäherung immer noch gültig.
  • Es hat sich jedoch gezeigt, daß das Flimmern aufeinanderfolgende Lesungen veranlassen kann, um Datenwerte in der umgekehrten Reihenfolge zu erhalten, während immer noch die Grunderfordernisse erfüllt sind. Dies rührt von den alternativen Möglichkeiten her, sowohl für den Fall, daß neue Daten durch den Schreiber (W3 oder W4) angezeigt werden, oder für den Fall, daß der Leser auf neue Daten verriegelt wird (R0 oder W3). Dieser umgekehrte Effekt führt zu einer Reflexion des Flimmerphänomens über die höheren Pegel der Auslegung. Wenn es wichtig ist, kann dies abgenommen und durch Benutzung numerierter Daten korrigiert werden.
  • Um das Flimmern zu erforschen, wurde die Softwareausbildung dadurch modifiziert, daß eine Steuerbitschaltung als nicht monotone teilbare Operation programmiert wurde. So wird ein Bit-Zuordnungsbefehl, wo der Wert von b auf a kopiert wird, ersetzt durch eine Folge von Befehlen, die eine dritte Variable c einführen, und demgemäß wird:
  • a := b wird c := b; a := b; a:= c; a := b
  • Die Resultate bestätigen den erwarteten Befehlsumkehreffekt, aber betonen auch die Tatsache, daß ein begrenztes Flimmern nur auftreten kann, wenn Leser und Schreiber mit sehr unterschiedlichen Geschwindigkeiten arbeiten, bis zu einem Ausmaß, das nur von theoretischem Interesse ist.
  • Hardware-Verwirklichung
  • Wenn die Software gebildet ist, kann der Mechanismus innerhalb weniger Stunden aufgebaut und erforscht werden. Die Hardware-Verwirklichung erfordert etwas mehr Anstrengung. Jedoch können relativ einfache Ausbildungen diskreter Komponenten benutzt werden, um die richtige Operation der Algorithmen durchzuführen, und insbesondere um zu ermitteln, ob das Zitterphänomen (und infolgedessen das unbegrenzte Flimmern) auf einen annehmbaren Pegel beschränkt werden kann.
  • Die Hardwareausbildung, die gewählt wurde, um die Prinzipien des Mechanismus zu erforschen, basierte direkt auf der algebraischen Form der Algorithmen. Demgemäß bestanden die Nachschreibe- und Vorlesesequenzen aus drei von zwei individuellen Schritten. Zunächst wurde die Orthogonalität der Zugriffssteuerlogik erforscht, und danach wurde ein Operationstest dadurch durchgeführt, daß Daten durch eine einfache experimentelle Konfiguration geschickt wurden, bestehend aus einem Schreibprozeß, der direkt in die Hardware eingegeben wurde, und einem Leseprozeß, der als Programm in einen Mikroprozessor eingegeben wurde. So kann jene Kohärenz geprüft werden, und jeder Platz im Mechanismus umfaßt zwei Bytes, die als getrennte Operationen geschrieben und gelesen werden.
  • Das Schreiben ist ein einfacher zyklischer Prozeß, und jeder Zyklus bewirkt eine Zählungszunahme im Bereich zwischen 0 und 255, und das Schreiben erfolgt in beide Bytes in einem Platz. Dann wird die Nachschreibefolge angewandt. Die Geschwindigkeit, mit der der Leser läuft, wird durch einen äußeren Taktgeber gesteuert und kann über einen weiten dynamischen Bereich verändert werden, um unterschiedliche Relativgeschwindigkeiten von Schreiben und Lesen zuzulassen.
  • Der Leser ist ein Programm, welches in einer Schleife läuft, und jeder Zyklus, mit dem eine Lesung pro Sequenz aufgerufen wird, liest beide Bytes und führt dann eine gewisse Analyse durch, welche aus Versuchen hinsichtlich Kohärenz und Rangordnung der Daten besteht. Die Ergebnisse der Versuche werden benutzt, um Histogramme wie folgt aufzubauen:
  • - Verteilung der Differenz in den Werten zwischen den beiden Bytes in einer Datengruppe (Kohärenztest).
  • - Verteilung der Differenz im Wert zwischen einem Byte und dem Vorgänger (hauptsächlich relevant, wenn der Schreiber schneller ist als der Leser). Das Auftreten negativer Differenzen zeigt die Umkehr der Folge an.
  • - Verteilung der Zahl der konsekutiven Werte, welche die gleichen sind (hauptsächlich relevant, wenn der Leser schneller ist als der Schreiber).
  • Hunderte von Millionen von Daten haben diese Einrichtung durchlaufen, jedoch war kein Verlust der Kohärenz oder Umkehrfolge zu beobachten, und die relativen Geschwindigkeiten von Lesen und Schreiben, wie sie durch das Lese- Analyseprogramm bestimmt wurden, bestätigen die bekannten aktuellen Raten. Der Mechanismus schien perfekt zu arbeiten, obgleich er theoretisch durch Zittereffekte verwundbar ist (die Schreib- und Lesetaktgeber sind unabhängig). Die Schaltraten moderner bistabiler Stufen würden extrem niedrige Fehlerraten anzeigen, und es könnte etwas frustrierend sein, nach solchen Fehlern zu forschen.
  • Chip-Simulation
  • Es müssen zwei weitere Ausbildungsvariable entworfen werden, die die Kreissimulation benutzen, die Teil einer Drei- Mikron-CMOS-Chipausbildung und des Fabrikationsprozesses sind. Die Simulation wird physikalisch und nicht logisch durchgeführt und gibt die Schalteigenschaften der Schaltungselemente wahrheitsgemäß wieder, die bei dieser Technologie benutzt werden.
  • Die erste Ausbildung basierte auf der Auslegung gemäß Fig. 2 mit einer geringfügigen Modifikation der Steuersequenzen, um eine nähere Entsprechung an die algebraische Form zu erreichen. So wurde auf der Schreibseite w0 zu der gewählten s-bistabilen Stufe eingeführt, und dann wurde w1 gleichzeitig zu w und wp eingeführt, was die Ausdehnung für parallele Durchführung wiedergibt, die bei diesen Operationen benutzt werden. Auf der Leseseite r0 wird an r angelegt, und dann wird r1 an beide rv-bistabile Stufen angelegt.
  • Die zweite Ausbildung folgt Fig. 7 in präziser Weise.
  • Beide Ausbildungen zeigten sich logisch richtig. Die Simulationstechnik erlaubte Schaltsignale jederzeit anzulegen, und dies wurde benutzt, um mögliche Arbeitsgeschwindigkeiten zu ermitteln und das Ausmaß festzustellen, in dem die Zittergefahr Probleme verursachen könnte. Die bistabilen Stufen wurden als Master-Slave-D-Typen eingeführt, mit einer Takt/Q-Zeit in der Größenordnung von 8 Nanosekunden. Diese Zeit bestimmt die absolute untere Begrenzung des Intervalls zwischen aufeinanderfolgenden Steuer- und Datenoperationen auf jeder Seite des Mechanismus. Die Simulation zeigte gewisse Zittereffekte in Form erhöhter Einstellzeiten, wenn eine bistabile Stufe sehr dicht an einer Eingangsänderung geschaltet wird, aber die Ergebnisse waren nicht genau genug, um eine Gesamtzeit zwischen Kommunikationsfehlern vorauszusagen. Ins einzelne gehende Untersuchungen der Charakteristiken der bistabilen Stufen zeigen an, daß mittlere Zeiten zwischen den Fehlern in mehr als zehn Jahren erreicht werden sollten, wenn bistabile Einstellzeiten von 50 Nanosekunden zugelassen werden.
  • Anlage A: Software-Notation
  • Der Programmtext wird in Pascal geschrieben mit geringen Erstreckungen wie folgt:
  • * ida. Ein Modul, dessen Komponententeile zwischen dem gemeinsamen Speicher verteilt werden, der Schreibvorgang und der Lesevorgang.
  • * Daten. Es soll irgendwo eine willkürliche Type als erklärt angenommen werden. Ein Null-Wert soll für Zwecke der Initialisierung angenommen werden.
  • * Zugriff. Eine Kennziffer gibt an, daß ein Prozeß oder eine Funktion benutzt wird, um einen Zugriff auf Variable in einem gemeinsamen Speicher zu bewirken.
  • * Bit. Eine Basistype der Sprache; es nimmt den Wert 0 oder 1 an.
  • * not. Ein Operator, der einen Bit-Wert invertiert.
  • * preset. var Erklärungen können voreingestellt werden, indem in der Deklaration eine Übertragung erfolgt.
  • * konstant. Konstante Felder können erklärt werden.
  • * ::=. Eine unteilbare Begrenzung der Übertragungsoperation benötigt eine oder mehrere gemeinsame Variable.
  • Anlage B: Hardware-Symbole
  • Die Hardwareausbildung wird in Ausdrücken miteinander verbundener Register bistabiler Stufen und Schalter dargestellt, wobei die Symbole benutzt werden, die in Fig. 5 gekennzeichnet sind.
  • - Verbindungen. Dicke Linien stellen parallele Datenverbindungen dar. Dünne Linien führen Signale, die entweder einen logischen Wert haben, der zwischen Schaltern und/oder bistabilen Stufen verläuft, oder einen Einschaltimpuls, der einen Eingang in ein Register oder in eine bistabile Stufe leitet.
  • - Schalter. Diese steuern entweder einen einzigen Signaleingang nach einem von zwei Ausgängen, oder wählen einen von zwei Dateneingängen aus, um nach einem einzigen Ausgang zu führen. Die Wahl erfolgt durch einen Logikwert, der einem Steuerpunkt (Symbol I) am Schalter zugeführt wird.
  • - Speicher. Ein Register, welches in der Lage ist, eine komplette Datengruppe zu speichern, besitzt einen einzigen Dateneingang und Ausgangsverbindungen und einen Steuerpunkt, an den ein Einschaltimpuls angelegt werden kann. Eine bistabile Stufe besitzt einen einzigen Logikwerteingang und zwei komplementäre Logikausgänge und einen Steuerpunkt, an dem ein Einschaltimpuls angelegt werden kann.
  • Tabelle 1
  • ida ein Platz;
  • var DATEN : Daten := Null;
  • Zugriffsprozedur SCHREIBEN (ITEM : Daten); Beginn DATEN ::= ITEM Ende;
  • Zugriffsfunktion LESEN : Daten;
  • Beginn LESEN := DATEN Ende;
  • Ende.
  • : Ein-Platz-ida
  • Tabelle 2
  • Ida zwei Plätze:
  • var DATEN : Feld(Bit) von Daten := (Null, Null);
  • GESCHRIEBEN : Bit := 0;
  • Zugriffsprozedur SCHREIBEN (ITEM : Daten);
  • var INDEX : Bit;
  • Beginn
  • INDEX := nicht SCHREIBEN;
  • DATEN(INDEX) := ITEM;
  • GESCHRIEBEN := INDEX
  • Ende;
  • Zugriffsfunktion LESEN : Daten;
  • var INDEX : Bit;
  • Beginn
  • INDEX := GESCHRIEBEN;
  • LESEN := DATEN(INDEX)
  • Ende;
  • Ende.
  • Zwei-Platz-Ida
  • Tabelle 3
  • ida drei Plätze;
  • var DATEN : Feld(1 . . . 3) von Daten := (Null, Null, Null); LESEN, SCHREIBEN : 1 . . . .3 := 1, 1;
  • Zugriffsprozedur SCHREIBEN (ITEM : Daten);
  • Konstanten-DIFFERENZ = (2,3,2), (3,3,1), (2,1,1);
  • var INDEX : 1 . . . 3;
  • Beginn
  • INDEX := DIFFER (LESEN, GESCHRIEBEN);
  • DATEN(INDEX) := ITEM;
  • GESCHRIEBEN := INDEX
  • Ende;
  • Zugriffsfunktion LESEN : Daten;
  • Beginn
  • LESEN ::= GESCHRIEBEN;
  • LESEN := DATEN(LESEN)
  • Ende;
  • Ende.
  • Drei-Platz-Ida
  • Tabelle 4
  • ida vier Plätze;
  • var DATEN : Feld(Bit, Bit) von Daten := ((Null, Null), (Null, Null));
  • PLATZ : Feld(Bit) von Bit := (0, 0);
  • LESEN, GESCHRIEBEN : Bit := 0, 0;
  • Zugriffsprozedur SCHREIBEN (ITEM : Daten);
  • var PAAR, INDEX : Bit;
  • Beginn
  • PAAR := nicht LESEN; (W0)
  • INDEX := nicht (PLATZ(PAAR)); (W1)
  • DATEN(PAAR, INDEX) := ITEM; (W2)
  • PLATZ(PAAR) := INDEX; (W3)
  • GESCHRIEBEN := PAAR (W4)
  • Ende;
  • Zugriffsfunktion LESEN : Daten;
  • var PAAR, INDEX : Bit;
  • Beginn
  • PAAR := GESCHRIEBEN; (R0)
  • LESEN := PAAR; (R1)
  • INDEX := PLATZ(PAAR); (R2)
  • LESEN := DATEN(PAAR, INDEX) (R3)
  • Ende;
  • Ende.
  • Vier-Platz-Ida

Claims (12)

1. Verfahren zum Betreiben eines asynchronen Übertragungssystems, bei dem Daten von einem Eingang (I) des Systems nach einem Bereich eines gemeinsamen Speichers eingeschrieben werden, der in Plätze aufgeteilt ist, und bei dem die Daten von dem Bereich des Speichers nach einem Ausgang (O) des Systems ausgelesen werden, dadurch gekennzeichnet, daß der Speicher in vier Plätze (S1-S4) unterteilt ist, die zwei Paare von je zwei Plätzen umfassen, daß die Mittel zum Einschreiben der Daten (1, 5, 6) einen ersten Wähler aufweisen und Paare von Plätzen (S1, S2; S3, S4) auswählen, von denen keine Daten ausgelesen werden, wobei einer der Plätze des Paares nicht jener Platz ist, der zuletzt eingeschrieben wurde, und wobei Daten vom Eingang (I) nach dem einen Platz eingeschrieben werden, und daß Mittel (2, 3, 4) vorgesehen sind, um Daten auszulesen, wobei diese Mittel einen zweiten Wähler aufweisen und einen Platz auswählen, der zuletzt eingeschrieben wurde und Daten von diesem zuletzt eingeschriebenen Platz nach dem Ausgang (O) aus lesen, so daß kohärente Daten voll asynchron vom Eingang (I) nach dem Ausgang (O) übertragen werden.
2. Verfahren nach Anspruch 1, bei welchem die Daten in einen Bereich des gemeinsamen Speichers durch einen Prozeß eingeschrieben werden, der die nachstehenden drei aufeinanderfolgenden Schritte wr, w0, w1 aufweist:
- wr) es werden die Datenwerte einem Platz des gewählten Platzpaares zugeordnet, der nicht jener Platz in jenem Paar ist, der zuletzt eingeschrieben wurde;
- w0) es werden die Werte s(wp) und w festgelegt, wobei s(wp) und w skalare Werte sind, die einen Platz bzw. ein Paar von Plätzen identifizieren, um aufzuzeichnen, daß der Platz, der bei dem vorhergehenden Schritt gewählt wurde, nunmehr jener Platz ist, der zuletzt beschrieben wurde, und das gewählte Paar von Plätzen nunmehr das Paar ist, welches zuletzt beschrieben wurde;
- w1) es wird ein Paar von Plätzen zum Einschreiben ausgewählt, welche nicht als zum Lesen markiert sind;
und bei welchem die Daten durch einen Prozeß gelesen werden, der die nachstehenden zwei aufeinanderfolgenden Schritte r0, rd enthält:
- r0) es wird ein skalarer Wert r eingestellt, um das zuletzt eingeschriebene Paar als lesebereit zu markieren, und es wird ein Vektorwert rv eingestellt, um jene Plätze in den Paaren aufzuzeichnen, welche jene Plätze sind, die zuletzt eingeschrieben wurden;
- rd) es werden Daten von jenem Platz, der zuletzt eingeschrieben wurde, nach jenem Platzpaar ausgegeben, das in dem vorhergehenden Schritt als gelesen markiert war.
3. Verfahren nach den Ansprüchen 1 oder 2, bei welchem die Mittel zum Einschreiben von Daten (1, 5, 6) ein Register (11, 12) setzen oder zurücksetzen, das einem jeweiligen Paar von Plätzen (S1, S2; S3, S4) zugeordnet ist, um anzuzeigen, welches der Platzpaare den Platz enthält, der zuletzt eingeschrieben wurde.
4. Verfahren nach einem der vorhergehenden Ansprüche, bei welchem der Eingang (I) parallel mit jedem der Plätze (S1-S4) verbunden ist und die Mittel zum Einschreiben von Daten (1, 5, 6) ein Schreib-Freigabesignal nach diesem einen Platz (S1-S4) übertragen.
5. Verfahren nach einem der vorhergehenden Ansprüche, bei welchem außerdem Übertragungssteuersignale vom Wähler nach einem äußeren Kreis übertragen werden, die von dem äußeren Kreis nach dem Wähler zurückgeführt werden, um eine äußere Stabilisierung der Arbeitsweise des Übertragungssystems zu bewirken.
6. Asynchrones Übertragungssystem mit einem Bereich eines gemeinsamen Speichers, der in vier Plätze (S1-S4) unterteilt ist, mit Mitteln zum Einschreiben von Daten (1, 5, 6) von einem Eingang (I) nach dem Bereich des gemeinsamen Speichers und mit Mitteln zum Auslesen von Daten (2, 3, 4) von dem Bereich des gemeinsamen Speichers nach einem Ausgang (O), dadurch gekennzeichnet, daß die Plätze (S1-S4) des Bereichs des gemeinsamen Speichers ein erstes und ein zweites Paar von Plätzen (S1, S2; S3, S4) aufweisen und daß die Mittel zum Einschreiben von Daten (1, 5, 6) einen ersten Wähler aufweisen, der einen Schreibpaar-Wählschalter (1) aufweist, um die Daten nach dem ersten oder dem zweiten Platzpaar (S1, S2; S3, S4) zu leiten, wobei ein Schreibplatz- Wählschalter (5, 6) jedem Platzpaar (S1, S2; S3, S4) zugeordnet ist, um die Daten nach dem einen oder anderen der Plätze (S1-S4) des Paares zu leiten, und wobei der erste Wähler so angeordnet ist, daß ein Paar von Plätzen ausgewählt wird, von dem keine Daten ausgelesen werden, und außerdem einer der Plätze des Paares ausgewählt wird, der nicht der letzte einbeschriebene Platz ist, und daß die Mittel zum Auslesen der Daten (2, 3, 4) einen zweiten Wähler aufweisen, der einen Lesepaar-Wählschalter (2) aufweist, um die Daten von dem einen oder dem anderen des ersten und zweiten Paares von Plätzen (S1, S2; S3, S4) zu überführen, und ein Leseplatz-Wählschalter (3, 4) jedem Platzpaar (S1, S2; S3, S4) zugeordnet ist, um Daten von dem einen oder anderen Platz des Paares zu leiten, wobei der zweite Wähler so angeordnet ist, daß ein zuletzt beschriebener Platz gewählt wird, so daß das System eine voll asynchrone Übertragung kohärenter Daten vom Eingang (I) nach dem Ausgang (O) über den Bereich des gemeinsamen Speichers bewirkt.
7. System nach Anspruch 6, bei welchem jedem Platzpaar (S1-S4) ein Register (11, 12) zugeordnet ist und die Mittel zum Einschreiben von Daten das Register (11, 12) setzen oder rücksetzen, um anzuzeigen, welcher Platz des jeweiligen Platzpaares (S1, S2; S3, S4) zuletzt beschrieben wurde.
8. System nach Anspruch 7, bei welchem jeder Schreibplatz-Wählschalter (5, 6) eine bistabile Stufe ist, die angeordnet ist, um zwischen Zuständen umzuschalten, bei denen die Daten nach dem einen oder dem anderen der Plätze (S1-S4) des jeweiligen Platzpaares geführt werden, entsprechend einem Signal vom jeweiligen Register (11, 12).
9. System nach Anspruch 6, 7 oder 8, bei welchem der Schreibpaar-Wählschalter (1) eine bistabile Stufe ist, die angeordnet ist, um zwischen Zuständen umzuschalten, bei denen die Daten nach dem einen oder dem anderen Platzpaar (S1, S2; S3, S4) gemäß einem Signal geführt werden, welches vom Lesepaar-Wählschalter (2) empfangen wird.
10. System nach einem der Ansprüche 6 bis 9, bei welchem der Eingang (I) parallel zu jedem Platz (S1-S4) geschaltet ist und die Mittel zum Einschreiben von Daten (1, 5, 6) derart angeordnet sind, daß ein Schreib-Freigabesignal dem einen Platz (S1-S4) übermittelt wird.
11. System nach Anspruch 6, welches außerdem einen Taktgeber (19'; Fig. 4) aufweist, der die Zeitgebung der Arbeitsweise der Mittel zum Einschreiben von Daten und der Mittel zum Lesen der Daten koordiniert.
12. System nach einem der Ansprüche 6 bis 10, welches außerdem Mittel aufweist, um ein Signal zwischen den Mitteln zum Einschreiben von Daten (1, 5, 6) und den Mitteln zum Auslesen der Daten (2, 3, 4) zu übertragen, wobei die Mittel zur Übertragung derart ausgebildet sind, daß ein Steuersignal von den Mitteln zum Einschreiben von Daten (1, 5, 6) und den Mitteln zum Lesen von Daten (2, 3 4) nach dem äußeren Kreis übertragen und das Steuersignal von dem äußeren Kreis zur Stabilisierung der Arbeitsweise des Übertragungssystems zurückgeführt wird.
DE3850447T 1987-05-21 1988-05-19 Asynchrone Übertragungssysteme. Expired - Lifetime DE3850447T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB878711991A GB8711991D0 (en) 1987-05-21 1987-05-21 Asynchronous communication systems

Publications (2)

Publication Number Publication Date
DE3850447D1 DE3850447D1 (de) 1994-08-04
DE3850447T2 true DE3850447T2 (de) 1994-11-03

Family

ID=10617678

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3850447T Expired - Lifetime DE3850447T2 (de) 1987-05-21 1988-05-19 Asynchrone Übertragungssysteme.

Country Status (5)

Country Link
US (1) US4875224A (de)
EP (1) EP0292287B1 (de)
JP (1) JPH01119841A (de)
DE (1) DE3850447T2 (de)
GB (1) GB8711991D0 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5208913A (en) * 1988-06-22 1993-05-04 Sharp Kabushiki Kaisha Buffer memory for synchronizing data transmission and reception between two devices having mutually different operating speeds and operating methods therefor
GB9008366D0 (en) * 1990-04-12 1990-06-13 British Aerospace Data interaction architecture(dia)for real time embedded multi processor systems
JP2821345B2 (ja) * 1993-09-29 1998-11-05 北海道日本電気ソフトウェア株式会社 非同期i/o制御方式
US5680608A (en) * 1995-02-06 1997-10-21 International Business Machines Corporation Method and system for avoiding blocking in a data processing system having a sort-merge network
WO2000005644A1 (en) * 1998-07-22 2000-02-03 California Institute Of Technology Reshuffled communications processes in pipelined asynchronous circuits
US6286076B1 (en) * 1999-01-05 2001-09-04 Sun Microsystems, Inc. High speed memory-based buffer and system and method for use thereof
US7283557B2 (en) * 2002-01-25 2007-10-16 Fulcrum Microsystems, Inc. Asynchronous crossbar with deterministic or arbitrated control
US7698535B2 (en) 2002-09-16 2010-04-13 Fulcrum Microsystems, Inc. Asynchronous multiple-order issue system architecture
US7260753B2 (en) * 2003-07-14 2007-08-21 Fulcrum Microsystems, Inc. Methods and apparatus for providing test access to asynchronous circuits and systems
US7584449B2 (en) * 2004-11-22 2009-09-01 Fulcrum Microsystems, Inc. Logic synthesis of multi-level domino asynchronous pipelines
US7733857B2 (en) * 2004-12-17 2010-06-08 Samsung Electronics Co., Ltd. Apparatus and method for sharing variables and resources in a multiprocessor routing node
US7814280B2 (en) * 2005-01-12 2010-10-12 Fulcrum Microsystems Inc. Shared-memory switch fabric architecture
US20080126956A1 (en) * 2006-08-04 2008-05-29 Kodosky Jeffrey L Asynchronous Wires for Graphical Programming
ATE529808T1 (de) * 2007-02-07 2011-11-15 Bosch Gmbh Robert Verwaltungsmodul, hersteller- und verbraucherrechner, anordnung davon und verfahren zur kommunikation zwischen rechnern über einen gemeinsam verwendeten speicher
US7916718B2 (en) * 2007-04-19 2011-03-29 Fulcrum Microsystems, Inc. Flow and congestion control in switch architectures for multi-hop, memory efficient fabrics
US8135879B2 (en) * 2009-04-03 2012-03-13 National Instruments Corporation Four-slot asynchronous communication mechanism with increased throughput
US20190138242A1 (en) * 2017-11-08 2019-05-09 Raytheon Company Lock-free asynchronous buffer
EP4123969A1 (de) 2021-07-19 2023-01-25 Ratier-Figeac SAS Umstellungsmechanismus für asynchrone vorrichtungen

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL7201920A (de) * 1972-02-15 1973-08-17 Philips Nv
GB1487706A (en) * 1976-01-16 1977-10-05 Plessey Co Ltd Data storage arrangement for buffering asynchronous input and output data streams
JPS52129341A (en) * 1976-04-23 1977-10-29 Nec Corp Data buffer circuit
FR2440058A1 (fr) * 1978-10-27 1980-05-23 Materiel Telephonique Systeme de memoire tampon pour unite d'echange entre deux unites fonctionnelles et procede de mise en oeuvre
JPS6057090B2 (ja) * 1980-09-19 1985-12-13 株式会社日立製作所 データ記憶装置およびそれを用いた処理装置
JPS57182838A (en) * 1981-05-08 1982-11-10 Victor Co Of Japan Ltd Digital data connecting circuit
JPS6214226A (ja) * 1985-07-12 1987-01-22 Hitachi Ltd 半導体メモリ装置

Also Published As

Publication number Publication date
JPH01119841A (ja) 1989-05-11
EP0292287A3 (en) 1990-07-18
EP0292287A2 (de) 1988-11-23
EP0292287B1 (de) 1994-06-29
US4875224A (en) 1989-10-17
GB8711991D0 (en) 1987-06-24
DE3850447D1 (de) 1994-08-04

Similar Documents

Publication Publication Date Title
DE3850447T2 (de) Asynchrone Übertragungssysteme.
DE69128017T2 (de) Verteiltes rechnersystem
DE3784050T2 (de) Ein paralleler datenprozessor.
DE69027299T2 (de) Paralleles Verarbeitungssystem
DE2819571C2 (de)
DE69127101T2 (de) System für verteilte mehrfachrechnerkommunikation
DE2934971C2 (de) Nach dem Fließbandprinzip arbeitender Zentralprozessor
DE2455803C2 (de) Mehrprozessor-Datenverarbeitungsanlage
DE3137292C2 (de) FIFO-Speicher und diesen verwendende Verarbeitungseinheit
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE3686436T2 (de) Speichersystem mit hoher leistung.
EP0428771B1 (de) Zweiwege-Datenübergabe-Einrichtung
DE2853276C2 (de)
DE3110196A1 (de) Datenverarbeitungssystem
DE2741886A1 (de) Datenuebertragungseinrichtung
DE102018126003A1 (de) Kombinieren von Zuständen mehrerer Threads in einem Multithread-Prozessor
EP0807883B1 (de) Kommunikationssystem mit Mitteln zum Austausch von Softwareprozessen
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE2063197A1 (de) Anordnung zur numerischen Steuerung von Werkzeugmaschinen
DE69106384T2 (de) Skalierbares parallel-vektorrechnersystem.
DE2853239A1 (de) Datenpufferspeicher vom typ first-in, first-out mit variablem eingang und festem ausgang
DE69721825T2 (de) Datenschnittstelle und hochgeschwindigkeitskommunikation mit dieser schnittstelle
DE3123382C2 (de) Verfahren und Einrichtung zum Übertragen von Daten in einem Mehrprozessorsystem
DE60015720T2 (de) Verfahren und Anordnung zum Arbitrieren des Zugriffes eines Zeitmutiplex-verteilten Speichers von mehreren Prozessoren in einem Echtzeitsystem
DE60217408T2 (de) Informationsaustausch zwischen lokal synchronen schaltungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: MATRA BAE DYNAMICS (UK) LTD., STEVENAGE, HERTFORDS

8327 Change in the person/name/address of the patent owner

Owner name: MBDA UK LTD., STEVENAGE, HERTFORDSHIRE, GB