-
HINTERGRUND DER ERFINDUNG
-
Zugehörige Anmeldungen
-
Diese
Anmeldung bezieht sich auf das US-Patent Nr. 5,394,556 „Ein Verfahren
und eine Einrichtung für
eine eindeutige Adresszuweisung, eine Knoten-Selbstidentifikation
und eine Topologieabbildung für
einen gerichteten azyklischen Graphen".
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf Computersysteme. Insbesondere
bezieht sich die vorliegende Erfindung auf ein Verfahren zur Bildung und
Verwendung eines Kommunikationsschemas zwischen einer Mehrzahl von
beliebig zusammengestellten Elementen eines Computersystems.
-
Hintergrund
-
Komponenten
in einem gegebenen Computersystem benötigen die Fähigkeit, untereinander Signale
zu übermitteln.
In sehr einfachen Systemen ist es möglich, jedes Element des Systems
direkt mit allen anderen Teilen des Systems zu verdrahten. Um Computer
erweiterbar auszuführen
und eine unbekannte Anzahl von Systemteilen aufzunehmen, haben jedoch
Computerarchitekten tatsächlich
vor langer Zeit das Konzept eines Kommunikationsbusses entwickelt.
-
Ein
Bus ist ein Kommunikationspfad, wie zum Beispiel ein durch das Computersystem
laufender Draht oder Drähte.
Jede Komponente des Systems muss nur an den Bus angeschlossen werden, um
theoretisch mit jeder anderen Komponente im System verbunden zu
sein. Natürlich
kann nicht jede Komponente gleichzeitig mit anderen Komponenten kommunizieren,
da es nur einen einzigen Kommunikationskanal zwischen den Komponenten
geben kann. Bei Verwendung eines Kommunikationsbusses ist die Bildung
irgendeiner Art Zugriffsanordnung erforderlich, so dass jede Komponente
den Bus zur Kommunikation mit anderen Komponenten in einer effizienten
Art und Weise verwenden kann, bei der entscheidende Informationen
von einer Komponente nicht blockiert werden, die auf einen Buszugriff
wartet. Das Verfahren, bei dem sich Komponenten auf dem Bus den
Bus teilen, wird allgemein als ein Busarbitrierungsschema bezeichnet.
-
Eine
Ausführung
eines Arbitrierungsschemas ist in der 11-ten International Conference on Distributed
Computing Systems, Arlington, Texas, USA, Mai 1991, mit dem Titel „A Dag-Based
Algorithm for Distributed Mutual Exclusion" von M. L. Nelson und M. Mizumo beschrieben.
Das beschriebene Schema basiert auf einem Token [Zuordnungsmarkierung]-basierten
verteilten wechselseitigen Algorithmus, der ein vollständig verbundenes
Netzwerk und ein als ein gerichteter azyklischer Graph strukturiertes
logisches Netzwerk voraussetzt.
-
Zusätzlich zu
der entscheidenden Notwendigkeit einer Optimierung des Busarbitrierungsschemas
für eine
Maximierung des Durchflusses wichtiger Informationen kann und sollte
die physikalische (und logische/elektrische) Konfiguration des Busses selbst
für eine
Minimierung von Systemverzögerungen
optimiert werden und gleichzeitig so flexibel wie möglich bleiben.
-
Um
mit anderen, an einem Bus angeschlossenen Komponenten zu kommunizieren,
muss jede Komponente mit Hardware ausgerüstet sein, wie zum Beispiel
mit einer mit dem für
den Bus implementierten Kommunikationsprotokoll kompatiblen Sende-
und Empfangsschaltung. Ein derartiger Kommunikationsstandard ist im
IEEE Standard-Dokument P1394 mit dem Titel „High Performance Serial Bus" beschrieben. Das
genannte Dokument ist diesem Dokument als Anhang A beigefügt. Der
in P1394 beschriebene Standard ist für eine Bereitstellung einer
preiswerten Verbindung zwischen Karten auf der gleichen Bus-Leiterplatte,
Karten auf anderen Bus-Leiterplatten und externen Peripherieeinrichtungen
bestimmt.
-
Busse
und Netzwerke des Standes der Technik erforderten die Kenntnis,
was wo angeschlossen wurde. Die Rückseite vieler Computer weist
zum Beispiel festgelegte Ports für
bestimmte Peripherieeinrichtungen auf. Einige Computer führen mehrere Busse
aus, wie zum Beispiel der Macintosh, der einen als ADB bezeichneten
Bus für
Komponenten wie eine Maus und eine Tastatur und einen SCSI-Bus für andere
Peripherieeinrichtungen verwendet. Diese Bus-Arten stellen eine
Verkettung von Elementen bereit. Die Verbindungen weisen jedoch
eine begrenzte Topologie auf. Andere bekannte Busse/Netzwerke erfordern,
dass die Knoten des Netzwerks in einem Ring angeordnet sind, eine
Schleife, die zur Wirksamkeit geschlossen sein muss. Letztendlich
erfordern Stern- oder Speichen[Hub-and-Spoke]-Anordnungen, dass
jeder Knoten direkt mit einer zentralen Haupteinrichtung [Master]
verbunden wird. Jedem der Systeme des Standes der Technik fehlt
ein erwünschtes
Maß an
Flexibilität.
-
Es
wäre wünschenswert
in der Lage zu sein und ist deshalb eine Aufgabe der vorliegenden
Erfindung, Elemente eines Computersystems auf einem Bus beliebig
zusammenzustellen, wobei durch das System die beliebige Topologie
in ein funktionierendes System aufgetrennt werden kann, ohne eine
vorgegebene Anordnung von Komponenten zu erfordern.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
In
einem Ausführungsbeispiel
wird ein Verfahren für
eine faire Buszugriffsarbitrierung gemäß Anspruch 1 beschrieben. In
einem weiteren Ausführungsbeispiel
wird ein Verfahren für
eine faire Busarbitrierung gemäß Anspruch
11 beschrieben. In einem weiteren Ausführungsbeispiel wird ein Verfahren
einer einen Token weiterleitenden Buszugriffsarbitrierung gemäß Anspruch
13 beschrieben. In einem weiteren Ausführungsbeispiel wird ein Verfahren
der preemptiven Businitialisierung gemäß Anspruch 14 beschrieben.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, ein faires Buszugriffsarbitrierungsschema
für einen
Computersystembus oder ein Netzwerk bereitzustellen, in dem die
Verbindungen der Knoten in einen azyklischen gerichteten Graphen
aufgelöst
wurden.
-
Es
ist eine weitere Aufgabe der vorliegenden Erfindung ein Verfahren
einer einen Token weiterleitenden Busarbitrierung für einen
Computersystembus oder ein Netzwerk bereitzustellen, in dem die Verbindungen
der Knoten in einen azyklischen gerichteten Graphen aufgelöst wurden.
-
Es
ist noch eine weitere Aufgabe der vorliegenden Erfindung einen Mechanismus
bereitzustellen, mit dem eine preemptive Businitialisierung durch jeden
Knoten in einem Netzwerk von Knoten getriggert [ausgelöst] werden
kann, die in einen azyklischen gerichteten Graphen aufgelöst werden,
wenn Fehler erkannt oder Knoten während des Betriebes hinzugefügt oder
entfernt werden.
-
Diese
und andere Aufgaben der vorliegenden Erfindung sind in einem System
ausgeführt,
in dem eine beliebige Anordnung von Knoten auf einem Systembus in
einen azyklischen gerichteten Graphen aufgelöst wurde. Die hierarchische
Anordnung von Knoten weist einen als Root [Wurzel] bezeichneten Knoten
auf, während
alle anderen Knoten Eltern/Kind-Beziehungen mit den Knoten gebildet
haben, mit denen sie verbunden sind. Jeder Knoten kann eine Mehrzahl
von verbundenen Kind-Ports mit einem vorher festgelegten Bestätigungsprioritätsschema
gebildet haben. Eine faire Buszugriffsarbitrierung berücksichtigt
eine Busgewährung
in einer den vorher festgelegten Portprioritäten entsprechenden Abfolge,
die allen Knoten einen Turnus auf dem Bus ermöglicht. Der Root-Knoten kann
immer seinen Prioritätszugriffsstatus
zum Erhalt des Buszugriffs geltend machen. Das ist nützlich,
um einem Root-Knoten entgegenzukommen, der eine isochrone Datenübertragung
benötigt.
Alternativ kann ein einen Token weiterleitendes Arbitrierungsschema
ausgeführt
werden, bei dem der Token für
den Buszugriff um die Knoten herum gemäß dem oben beschriebenen, vorher
festgelegtem Prioritätsschema
der Ports weitergeleitet wird. Eine preemptive Businitialisierung
kann durch jeden Knoten bei der Erfassung eines dies erforderlich
machenden Fehlers oder bei Hinzufügung oder Entfernung einer
Verbindung zu einem existierenden Knoten getriggert werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden
von der folgenden, detaillierten Beschreibung ersichtlich werden,
in der:
-
1 ein
Blockdiagram der Ausführung
der Hardwareschicht veranschaulicht, die gemäß der vorliegenden Erfindung
verwendet wird.
-
2(a)–2(b) veranschaulichen eine beliebig zusammengestellte
Sammlung von Knoten. Eine ist azyklisch und die andere umfasst mehrere Zyklen.
-
3(a) zeigt die beliebig angeordnete Sammlung von
Knoten von 2(a), die dem Graphentransformationsverfahren
gemäß der vorliegenden
Erfindung unterzogen wird.
-
3(b)–3(d) veranschaulichen alternative Kommunikationsmöglichkeiten
zwischen den Knoten bei der Ausführung
der vorliegenden Erfindung.
-
3(e) veranschaulicht graphisch den gerichteten
Graphen, der aus dem beliebig zusammengestellten Netzwerk von Knoten
von 2(a) resultiert.
-
4 veranschaulicht
eine symmetrische Graphenanordnung, die die Auflösung einer Root-Konkurrenzsituation
erfordert.
-
5 veranschaulicht
einen gerichteten azyklischen Graphen, wobei eine mögliche eindeutige
Adreßzuweisungsreihenfolge
angezeigt ist.
-
6(a)–6(e) veranschaulichen den Prozessablauf für die Durchführung des
Graphentransformationsverfahrens gemäß dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Es
werden ein Verfahren und eine Einrichtung zur Verwendung eines Busses
beschrieben, der eine beliebige Topologie aufweist. In der folgenden Beschreibung
werden viele spezielle Einzelheiten dargelegt, wie zum Beispiel
verschiedene Computerkomponenten, um ein vollständiges Verständnis der vorliegenden
Erfindung bereitzustellen. Es wird jedoch für einen Fachmann ersichtlich
sein, dass die vorliegende Erfindung ohne derartige spezielle Einzelheiten
umgesetzt werden kann. In anderen Fällen sind bekannte Steuerungsstrukturen
und Codierungstechniken nicht ausführlich beschrieben worden,
um die vorliegende Erfindung nicht unnötig zu verdecken.
-
Überall in
dieser detaillierten Beschreibung sind zahlreiche beschreibende
Begriffe eingeführt, um
der Beschreibung eine metaphorische Übersichtlichkeit bereitzustellen.
Es werden zum Beispiel häufig
Bezüge
auf Eltern-Kind-Beziehungen zwischen den Knoten in einer gegebenen
Topologie vorgenommen. Der Zweck dessen ist die Bereitstellung des Konzeptes
der „Richtung" zum letztendlich
aufgelösten
Graphen. Wie beschrieben werden wird, wird es, sobald eine beliebige
Topologie zu einem azyklischen gerichteten Graphen reduziert wurde,
einen als den „Root"-Knoten bezeichneten
Knoten geben. Der Root-Knoten wird keinen Elternknoten aufweisen.
Alle logisch unmittelbar an den Root-Knoten angrenzenden Knoten
sind die Kindknoten des Root-Knoten. Die „Baum"-Metapher wird durch die Einbeziehung
von als „Zweige" und „Blätter" bezeichneten Knoten
vervollständigt.
-
Obwohl
die hierin beschriebene Bus-Architektur mit Bezug auf Komponenten
für einen
Einzelcomputer beschrieben ist, hat sie allgemein einen erweiterten
Gültigkeitsbereich.
Die vorliegende Erfindung zur Definition der Bus-Topologie kann
auf jede beliebig zusammengestellte Sammlung von miteinander verbundenen
Knoten angewendet werden, wie zum Beispiel in einem Netzwerk von
Einrichtungen. Ein anzumerkender Punkt ist die Notwendigkeit der Unterscheidung
eines Knotens von einer physikalischen Computerkomponente. Jede
auf dem Bus befindliche Komponente wird mindestens einer Knotensteuereinrichtung
der physikalischen Schicht zugeordnet. Unter bestimmten Bedingungen
kann eine gegebene Komponente zweckmäßigerweise mehreren Knoten
zugeordnet sein. Im Normalfall wird es jedoch eine eineindeutige Übereinstimmung
zwischen den Einrichtungen oder Komponenten auf dem Bus und den
Knoten geben.
-
Es
wird jetzt auf 1 Bezug genommen, in der ein
Blockdiagramm eines Knotens 10 veranschaulicht ist. Die
physikalische Ausführung
eines Knotens ist ziemlich beliebig. In der Ausführung des bevorzugten Ausführungsbeispiels
der Erfindung sind die Knoten zur Einhaltung des IEEE P1394 High Performance Serial
Bus – Kommunikationsprotokolls ausgelegt,
das als Anhang A beigefügt
ist. Der Knoten 10 umfasst eine Arbitrierungsautomatenlogik 11. Diese
Arbitrierungsautomatenlogik enthält
die gesamte Logikschaltung zur Ausführung der hierin zu beschreibenden
Methoden und Algorithmen. Die Schaltung kann eine programmierbare
logische Anordnung (PLA) aufweisen oder speziell zur Ausführung der
hierin beschriebenen Funktionen ausgelegt sein. Sobald die durch
die Knotenlogik auszuführenden
Funktionen beschrieben sind, werden die Fachleute ohne übermäßiges Experimentieren
in der Lage sein, die vorliegende Erfindung auszuführen. Der Knoten
soll mittels seiner Logik das minimale Arbitrierungsprotokoll ausführen, das
die Bus-Initialisierung, die
Baum-Identifikation, die Selbstidentifikation und die Bus-Arbitrierungsfunktionen
umfasst. Alle sind nachstehend ausführlich zu beschreiben.
-
Der
in 1 gezeigte Knoten 10 umfasst außerdem Übertragungsmultiplexer 12 und 13 und
eine Datensender-, Empfänger- und Neusynchronisierungs-Einrichtung 14.
Der in 1 veranschaulichte Knoten ist mit dem lokalen
Host 15 gekoppelt. Der lokale Host 15 kann irgendeine
Einrichtung sein, die man mit dem Bus zu verbinden wünscht, wie
zum Beispiel ein Plattenlaufwerk, eine CPU, eine Tastatur oder irgendeine
andere Komponente, die mit anderen Komponenten im System kommunizieren
muss. Der Knoten 10 kommuniziert über Kommunikationsverbindungen
mit anderen Knoten. Eine Verbindung ist eine Kopplung zwischen zwei
Ports und in unmittelbaren praktischen Begriffen ein Kabelsegment.
Im Allgemeinen kann sie jedoch als irgendein physikalischer Kommunikationskanal
ausgeführt
werden. Eine Verbindung soll mindestens in der Lage sein, einen
Halbduplex-Kommunikationskanal
zwischen den beiden Ports bereitzustellen, die sie verbindet. Ein Port
ist die Schnittstelle zwischen einem Knoten und einer Verbindung.
Gemäß der vorliegenden
Erfindung muss ein Port die Fähigkeit
zum Senden und Empfangen von Daten und einer Arbitrierungssignalgebung
aufweisen. Ein Port muss in der Lage sein, zu bestimmen, ob er über eine
Verbindung mit einem anderen Port verbunden ist oder nicht. Ein
Verfahren, das dies ermöglicht,
ist das Anlegen einer Vorspannung über die Verbindung an die verbundenen
Ports, die durch den Port am anderen Ende der Verbindung erfassbar
ist. Wenn folglich ein Port eine angeschlossene Verbindung aufweist,
die nicht mit einem Port am anderen Ende verbunden ist, eine offene
Verbindung, wird der Port bestimmen, dass er kein verbundener Port
ist. In 1 weist der veranschaulichte Knoten 10 drei
externe Ports 21, 22 und 23 mit den Verbindungen 17, 18 beziehungsweise 19 auf.
-
Eine
der Ausführungsregeln
für Knoten
zur Ausführung
der vorliegenden Erfindung besteht darin, dass ein Knoten einen
oder mehrere Ports haben kann. Ein Knoten soll zum Senden und Empfangen von
Daten auf jedem seiner Ports in der Lage sein. Ein Knoten soll zum
Empfangen von Daten auf jeweils genau einem seiner freigegebenen
Ports in der Lage sein und zum erneuten Übertragen dieser Daten auf
allen verbleibenden freigegebenen Ports in der Lage sein. Ein Knoten
soll zum gleichzeitigen und unabhängigen Empfang und Senden von
Signalgebungsnachrichten über
alle seine Ports in der Lage sein. Für jeden Port eines Knotens
sind getrennte Signalgebungs-Sende-Empfänger-Einrichtungen,
Codierungseinrichtungen und Decodierungseinrichtungen erforderlich.
Ein Knoten minimaler Ausführung erfordert
keine lokale Host-Einrichtung. Ein derartiger Knoten kann zum Beispiel
als eine Kabelerweiterung funktionieren. Von hierab werden Einrichtungen
und lokale Hosts ignoriert und alle Verweise auf eine Bus-Topologie
werden sich auf Knoten und Knotenverbindungen über verschiedene Ports beziehen.
-
Graphentransformation
-
2(a) und 2(b) veranschaulichen
beliebig zusammengestellte Sammlungen von Knoten. Von hierab werden
Knoten lediglich als Kreise dargestellt. Es wird jedoch angenommen,
dass jeder Elemente enthält,
die denen mit Bezug auf 1 beschriebenen entsprechen.
Man beachte jedoch, dass jeder Knoten mehr oder weniger als die
in dieser Fig. gezeigten drei externen Ports aufweisen kann. Die veranschaulichten
Linien, die jeden der Knoten verbinden, sind das Verfahren, durch
das Verbindungen gezeigt werden. Ports sind nicht veranschaulicht, sind
aber impliziert, die Schnittstelle, über die sich eine Verbindung
und ein Knoten verbinden.
-
Die
hier zu beschreibende Bus-Arbitrierungsmethode erfordert, dass die
beliebige Topologie in einen azyklischen gerichteten Graphen aufgelöst wird.
In einem Graphen beliebiger Topologie kann eine Sammlung von Knoten
und Verbindungen einen Zyklus bilden. Ein Zyklus existiert, wenn
es möglich ist,
mittels einer Durchquerung von Verbindungen und Knoten nach dem
Start von einem bestimmten Knoten im Graphen zum gleichen Knoten
zurückzukehren,
ohne dass irgendeine Verbindung zweimal durchquert wird. 2(a) veranschaulicht einen azyklischen Graphen,
da keiner der veranschaulichten Knoten innerhalb einer Schleife
verbunden ist. 2(b) ist jedoch kein azyklischer
Graph, da der Bereich in der Zeichen-Box 25 eine Sammlung
von Knoten 40–47 enthält, die
mehrere Zyklen bilden. Die zu beschreibende Bus-Arbitrierungsmethode
erfordert, dass es keine Zyklen gibt. Daher wird nachstehend auch
ein Verfahren eines Anwendereingriffs zur Auflösung von Zyklen beschrieben.
-
Zusätzlich zur
Anforderung, dass ein Graph azyklisch ist, muss er auch gerichtet
sein. Ein gerichteter Graph ist ein Graph, in dem eine hierarchische Anordnung
zwischen benachbarten Knoten gebildet wurde. Zunächst gibt es zwischen den Knoten
keine eingerichteten Eltern-Kind-Beziehungen. Das heißt, Knoten 31 kann
zum Beispiel der „Elternknoten" für Knoten 34 oder
der „Kindknoten" für Knoten 34 sein. Auf
diese Weise ist es erforderlich, einen gegebenen Graphen beliebiger
Topologie zu nehmen und in einen azyklischen und gerichteten Graphen
zu transformieren. Das hier beschriebene Verfahren wird zur Ausführung dieser
Transformation für
jede gegebene, beliebige Topologie funktionieren, unabhängig von
der Anzahl der Knoten oder ihrer physikalischen Verbindung und unabhängig von
der Signalgebungsausbreitungszeit entlang der Verbindungen.
-
Knoten-Kommunikation
-
Zunächst wird
der Transformationsprozess eines azyklischen Graphen beliebiger
Topologie in einen gerichteten Graphen beschrieben. Es wird der Fall
folgen, bei dem die Auflösung
eines Zyklus erforderlich ist. 3(a) zeigt
den beliebigen Graphen von 2(a),
in dem die Knoten und die Verbindungen Statuskennzeichnungen aufweisen
und die kommunizierten Signale für
den Graphentransformationsprozess zur Ausrichtung eines Graphen
angegeben sind. Es ist an diesem Punkt aufschlussreich, die Signalkommunikation
zwischen den Knoten zu beschreiben. 3(b) veranschaulicht
zwei durch die Verbindung 52 gekoppelte Knoten 50 und 51 (nachstehend
Knoten A beziehungsweise Knoten B). Wie beschrieben, ist die Verbindung
der Kommunikationskanal, der die Sender-Empfängerports der entsprechenden
Knoten wie vorstehend mit Bezug auf 1 beschrieben
koppelt. Während
des Graphentransformationsprozesses wird für die Knoten die Bildung von
Eltern-Kind-Beziehungen mit benachbarten Knoten erforderlich. Zwei
Knoten gelten als benachbarte Knoten, wenn es mindestens eine zwischen einem
Port des ersten Knotens und einem Port des zweiten Knotens gebildete
Verbindung gibt. In den 3(b)–3(d) wird angenommen werden, dass die aufzulösende Beziehung
darin besteht, dass der Knoten B der Eltern von Knoten A ist und
dass die Bildung dieser Beziehung für die Knoten geeignet ist.
-
Wenn
es vor der Bildung einer Richtung für den Knoten A geeignet ist,
Knoten B als seinen Elternknoten einzurichten, wird der Knoten A
von seinem mit der Verbindung 52 gekoppelten Port das Signal „Du bist
mein Elternknoten" (YAMP) übertragen. Der
Inhalt dieser Nachricht kann irgendeine Form annehmen, solange der
Knoten A weiß,
dass er YAMP signalisiert und der Knoten B in der Lage ist zu verstehen,
dass die empfangene Nachricht YAMP ist. Wenn das YAMP-Signal 53 von
Knoten B empfangen wird, wird Knoten B Knoten A durch das Senden
von „Du
bist mein Kindknoten" (YAMC) über die
Verbindung 52 zu Knoten A antworten. Die Arbitrierungsautomatenlogik 11 von
Knoten A wird die Zeitverzögerung
zwischen dem Senden des YAMP-Signals 53 und dem Empfang
des YAMC-Signals 54 beobachten. Die gemessene Zeit kennzeichnet
die doppelte Ausbreitungsverzögerung
zwischen den Knoten A und B. Bei Empfang des YAMC-Signals wird der
Knoten A mit einem „Du
bist mein bestätigter
Kindknoten"(YAMCA)-Signal 55 antworten.
Dies stellt Knoten B ebenfalls die Fähigkeit zur Bestimmung der
Ausbreitungszeitverzögerung
zwischen den Knoten bereit, die gleich der Zeitverzögerung zwischen
dem Senden von YAMC und dem Empfang von YAMCA ist. Für Halbduplex-Kommunikationsverbindungen hat
die YAMCA-Nachricht
auch den Effekt der richtigen Orientierung des Kommunikationskanals.
-
Für Vollduplex-Kommunikationskanäle können die
drei logischen Nachrichten YAMP, YAMC und YAMCA alternativ durch
nur zwei Signalübertragungen
weitergeleitet werden. In 3(c) ist
diese Situation veranschaulicht, in der der Knoten A das YAMP-Signal 56 kontinuierlich
anlegt, bis er das Rückgabesi gnal
YAMC 57 empfängt.
Das YAMCA-Signal wird logisch zu Knoten B übertragen, wenn erfasst wird,
dass das YAMP-Signal nicht mehr eintrifft.
-
Die
Verwendung dieses beschriebenen dreifachen asynchronen Nachrichtenaustausches
stellt einen Mechanismus bereit, durch den beide in den Nachrichtenaustausch
eingebundene Knoten die Ausbreitungszeitverzögerung durch die Verbindung bestimmen
können.
Dieser Verzögerungswert
wird bei der Auflösung
von hierab weiter zu beschreibenden Konkurrenzsituationsereignissen,
wie auch während
der normalen Busarbitrierung zur Optimierung der Busleistungsfähigkeit
verwendet. Die dynamische Auskopplung dieses Parameters ist nicht
zwingend erforderlich. Als eine Alternative kann auf Kosten der
optimalen Leistungsfähigkeit
des Busses eine maximale Ausbreitungszeitverzögerung a priori definiert werden.
-
Sobald
die Knoten A und B Nachrichten zur Kennzeichnung ausgetauscht haben,
dass Knoten B der Elternknoten von Knoten A ist, kann die Verbindung
als gerichtet gelten. Innerhalb seiner Logik bezeichnet Knoten A
seinen Port, mit dem die Verbindung 52 gekoppelt ist, als
einen Elternport (er spricht zu einem Elternknoten) und Knoten B
bezeichnet seinen Port, mit dem die Verbindung 52 gekoppelt
ist, als einen Kindport (er spricht zu einem Kindknoten). Das Beibehalten
der von den Ports erhaltenen Bezeichnungen ist wichtig, da die nachstehend
zu beschreibenden Verfahren anhand der den Knoten und Ports zu einem
festgelegten Zeitpunkt zugewiesenen Bezeichnungen dargestellt werden.
Eine Kurzform einer grafischen Notation ist in 3(d) veranschaulicht, in der der Richtungspfeil 58 anzeigt,
dass der Knoten B als Elternknoten von Knoten A gebildet und die
Verbindung gerichtet ist.
-
Richtungsbestimmung
-
Es
wird erneut auf 3(a) und die Verarbeitungs-6(a)–6(e) Bezug genommen. Jetzt wird das Verfahren
der Ausrichtung der gesamten, beliebigen Topologie beschrieben.
Zur Unterstützung
der Erläuterung
des Topologietransformationsprozesses ist die Einführung von
ein paar weiteren anschaulichen Definitionen notwendig. Zuerst wird ein „Blatt"-Knoten als ein Knoten
mit nur einem verbundenen Port definiert. Ein Knoten erkennt seinen Status
als ein Blattknoten, sobald er nach dem Einschalten oder einer anderen
Businitialisierung initialisiert wird. Ein „Zweig"-Knoten ist ein Knoten, der mindestens
zwei verbundene Ports aufweist. Über
alle bis auf einen der verbundenen Ports wird ein Zweigknoten das
YAMP-Signal empfangen haben und es bestätigt haben. Über seinen
verbleibenden Port hat ein Zweigknoten das YAMP-Signal gesendet.
Dadurch wird eingerichtet, dass er einen Elternknoten aufweist.
Ein Knoten erreicht keinen Zweigstatus, bis er eingerichtet hat,
dass er einen Elternknoten aufweist (ein Knoten kann nur einen Elternknoten
aufweisen) und alle seine anderen Ports mit Kindknoten verbunden
sind. Vor dem Erreichen des Zweigstatus wird ein Knoten als ein „Zyklus"-Knoten angesehen, da
bis zur seiner Bestimmung als Zweig die Möglichkeit besteht, dass der
Knoten Teil eines Zyklus ist, der die Bildung einer Richtung unmöglich macht.
-
Das
Graphentransformationsverfahren beginnt in Schritt 60 bei
der Businitialisierung (beim Einschalten oder auf Veranlassung),
zu welchem Zeitpunkt die Blattknoten in der beliebigen Topologie
in Schritt 61 sich erkennen und durch eine Bestimmung im
Entscheidungssymbol 66, dass sie nur einen verbundenen
Port haben, sich selbst in Schritt 68 als Blattknoten kennzeichnen.
In dem in 3(a) anschaulich dargestellten Graphen
sind die Knoten 33, 35, 36 und 37 Blattknoten,
die sobald sie initialisiert sind, jeweils in Schritt 69 über ihren
einzigen verbundenen Port das YAMP-Signal zu ihrem benachbarten Knoten übertragen.
Die diese Signale empfangenden Knoten werden dann in Schritt 70 die
YAMC-Signale zu den Blattknoten zurück verteilen. Auf diese Weise wird
für die
gegebene Verbindung zwischen den entsprechenden Eltern-Kind-Paaren eine Richtung
gebildet, wenn die YAMCA-Kommunikation beendet ist. In Schritt 71 bezeichnet
jeder Blattknoten seinen einzigen verbundenen Port als einen Elternport
und jeden Empfangsport am Elternknoten wird als ein Kindport bezeichnet.
-
Die
Knoten auf dem Graphen, die zunächst keine
Blattknoten sind, werden zunächst
aus dem oben beschriebenen Grund als „Zyklusknoten" angesehen und laufen
gemäß dem Zyklusknotenverfahren 63 ab.
Jeder Zyklusknoten, der alle bis auf einen seiner verbundenen Ports
als Kindports bezeichnet hat, breitet dann in Schritt 85 das
YAMP-Signal von seinem verbleibenden, nicht bezeichneten Port aus. Wenn
diese Richtung für
die Verbindung gebildet ist, wird der Zyklusknoten als ein Zweigknoten
bezeichnet. Nachdem der Blattknoten 37 Knoten 34 als
seinen Elternknoten gebildet hat, weist folglich Knoten 34 nur
einen nicht bezeichneten Port auf (er hat den Verbindungsaufbau
zu Knoten 37 als über
einen Kindport verlaufend bezeichnet). Daher sendet der Knoten 34 das
YAMP-Signal zu Knoten 31. Dies führt dazu, dass Knoten 34 ein
Zweigknoten wird. Sobald Knoten 31 identifiziert hat, dass
die Knoten 33 und 34 seine Kinder sind, sendet
Knoten 31 ebenso das YAMP-Signal zu Knoten 30.
Wenn ein Knoten im Entscheidungssymbol 75 über alle
seine Ports das YAMP-Signal empfangen hat, wird der Knoten der Root-Knoten. Nachdem Knoten 30 in 3(a) die YAMP-Signale von den Knoten 31 und 32 empfangen hat, ändert sich
seine Bezeichnung von der eines Zyklusknotens zu der eines Root-Knotens.
Im Graphen von 3(a) ist es nicht notwendigerweise
der Fall, dass Knoten 30 zum Root-Knoten werden würde. Wenn
einige der Verbindungen im Baum große Ausbreitungsverzögerungen
bereitgestellt hätten,
könnte Knoten 30 ein
YAMP-Signal auf einem Port empfangen und dann ein YAMP-Signal über seinen
anderen Port gesendet haben. Jeder der Knoten kann zum Root-Knoten
werden, selbst ein Blatt. Die Rooteigenschaft hat Priorität. 3(e) zeigt den sich ergebenden gerichteten Graphen
als Reaktion auf die in 3(a) gezeigten,
kommunizierten Signale. Dabei ist jeder Knoten bezeichnet und die
Richtungen sind durch dunkle Pfeile markiert.
-
Root-Konkurrenzsituation
-
Unter
bestimmten Umständen
kann eine Root-Konkurrenzsituation auftreten. Dies kann zum Beispiel
in dem Fall auftreten, in dem die beliebige Topologie eine symmetrische
Anordnung aufweist, wie zum Beispiel die in 4 gezeigte.
In dem in 4 veranschaulichten beliebigen
Graphen haben sich die Knoten 160 und 161 jeweils
als Eltern für
die beiden Blattknoten eingerichtet, mit denen sie gekoppelt sind.
Dann hat jeder etwa zum gleichen Zeitpunkt das YAMP-Signal zum anderen
verbreitet. Die Root-Konkurrenzsituation wird von beiden betroffenen
einbezogenen Knoten im Entscheidungssymbol 86 erkannt.
Jeder Knoten empfängt
ein Signal, das ihn als einen Elternknoten festlegt, während er
das gleiche Signal über
den gleiche Port gesendet hat. Jeder der konkurrierenden Knoten
antwortet in Schritt 91 dem anderen mit dem YAMC-Signal.
Dies gestattet jedem die „Entscheidungszeitperiode" zu bestimmen, die
gleich dem Doppelten der Ausbreitungszeit zwischen den Knoten ist.
-
Die
Root-Konkurrenzsituation wird durch die Verwendung eines Zufallsentscheidungsmechanismus
aufgelöst,
der in jeder Arbitrierungsautomatenlogikeinheit 11 jedes
Knotens enthalten ist. Für
jede ablaufende „Entscheidungszeitperiode" wird jeder Knoten
in Schritt 92 zufällig
entscheiden (mit einer 50%-igen Wahrscheinlichkeit), ob er erneut
das YAMP-Signal zum anderen überträgt. Nahezu
sicher wird sich ein Knoten innerhalb einer endlichen Anzahl von
Zyklen entscheiden, den anderen als seinen Elternknoten festzulegen,
ohne dass dieser erwidert. Der als der Elternknoten festgelegte
Knoten wird in Schritt 95 der Root-Knoten. Alternativ können Knoten vorher
festgelegte Werte für
die Auswahlkriterien zugewiesen werden. Der Größere oder Kleinere bestimmt,
welcher bei einem Konkurrenzsituationsereignis dominiert. Obwohl
die dynamische Bestimmung der „Entscheidungszeitperiode" eine optimale Leistungsfähigkeit
bietet, ist sie bei der Ausführung der
vorliegenden Erfindung nicht erforderlich. Als Alternative kann
eine a priori definierte „Entscheidungszeitperiode" verwendet werden,
solange sie größer als
die ungünstigste,
in irgendeinem diesen Algorithmus verwendenden Bus anzutreffende
Verbindungsausbreitung ist. Das gleiche, zur Auflösung von
Root-Konkurrenzsituationen verwendete Verfahren wird auch zur Auflösung anderer,
nachfolgend beschriebener Konkurrenzsituationsereignisse verwendet.
-
Root-Zuweisung
-
Wie
vorstehend beschrieben, ist das Resultat des Graphentransformationsprozesses
die Zuweisung des Rootattributes zu genau einem Knoten im Graphen.
Der Root-Knoten wird im zu beschreibenden Busarbitrierungsschema
die endgültige
Entscheidung haben. Er kann daher ohne eine Verwendung von speziellen
Prioritätszeitlücken mit
maximaler Priorität
auf den Bus zugreifen. Es ist oft wünschenswert in der Lage zu
sein, zur Optimierung eines gegebenen Systems einem vorher festgelegten Knoten
entweder bei seiner Herstellung oder dynamisch (während der
Laufzeit) die Rooteigenschaft zuzuweisen. Ein gegebener Bus kann
einen Knoten umfassen, der eine isochrone Datenüber tragung erfordert. Isochrone
Daten sind Daten, die zu einem festgelegten Zeitpunkt übertragen
werden müssen, um
von Wert zu sein. Zum Beispiel muss Musik von einer CD in der zu
hörenden
Reihenfolge und ohne signifikante Verzögerungen übertragen und ausgegeben werden.
Im Gegensatz dazu können
Datendateien stückweise übertragen
werden und müssen nicht
notwendigerweise in der Reihenfolge übertragen werden.
-
Knoten
können
in Bezug auf die Rootbezeichnungen in drei Kategorien eingeteilt
werden. Diese Bezeichnungen können
während
der Herstellung durch eine feste Verdrahtung der Bezeichnung in
der Einrichtung, durch eine Programmierung der Arbitrierungsautomatenlogik
oder durch eine Software einer höheren
Ebene vorgesehen werden, die die Entscheidung trifft und dann unter
Beibehaltung dieser Entscheidung einen Neustart initiiert. Die drei
Bezeichnungen, die einem Knoten in Bezug auf seine Bezeichnung als
Root zugewiesen werden können, sind:
Knoten, die kein Root-Knoten sein wollen, Knoten, die ein Root-Knoten
sein können
(sollten), und Knoten, die ein Root-Knoten sein sollen. Diese Bezeichnungen
werden in den Schritten 81 und 83 geprüft. Ein
in der ersten Kategorie bezeichneter Knoten wird das Graphentransformationsverfahren
beginnen, sobald er dazu angewiesen wird. Dies wird üblicherweise
unmittelbar nach dem Beenden des Businitialisierungsverfahrens erfolgen.
Ein Knoten der zweiten Kategorie wird den Start des Graphentransformationsverfahrens
um einen vorher festgelegten Zeitbetrag verzögern, nachdem er zum Start des
Verfahrens in Schritt 84 angewiesen wurde. Durch diese
Verzögerung
erhöht
der Knoten seine Aussicht, Root-Knoten zu werden. (Aufgrund der
Verzögerung
ist die Ausbreitung der YAMP-Signale zu ihm wahrscheinlicher.) Trotz
der hinzugefügten
Verzögerung
ist es immer noch möglich,
dass ein „Kann Root
sein"-Knoten nicht
mit seiner Bezeichnung als Root enden wird. Dies wird von der gegebenen
Topologie und den Ausbreitungsverzögerungen der Nachrichten abhängen. Der
Betrag der Verzögerung
kann während
des Designs so definiert werden, dass er größer als eine angemessene ungünstigste
Ausbreitungsverzögerung über einen
ziemlich komplexen Graphen ist.
-
Ein
Knoten der dritten Kategorie der Rootbezeichnungsmöglichkeiten
kann nur die Tatsache erkennen, dass er der Root-Knoten sein muss, nachdem der Graph
bereits transformiert wurde und sich alle Knoten selbst identifiziert
haben. Diese Bestimmung kann die Arbitrierungsautomatenlogik oder eine
auf dem Host-System ablaufende Software vornehmen. Wenn dies auftritt,
vereinbart der Knoten, der der Root-Knoten sein muss, mit allen
anderen Knoten auf dem Bus, dass er der einzige Root-Knoten sein
wird und startet den Graphentransformationsprozess durch eine Signalgebung
eines hier weiter beschriebenen, preemptiven Businitialisierungssignals
neu. Der Knoten wartet dann in Schritt 82 darauf, Root-Knoten
zu werden und nimmt an der Graphentransformation nicht teil, bis
er an allen seinen Ports das YAMP-Signal empfangen hat. Auf diese Weise
erzwingt er seine Bezeichnung als Root.
-
Sobald
der Root-Knoten bestimmt wurde, kann der Graph als gerichtet gelten.
Es gibt eine definierte Beziehung, die zwischen allen benachbarten Knoten
auf dem Graphen existiert.
-
Zyklusauflösung
-
Die
oben beschriebenen Verfahren zur Ausrichtung eines Graphen werden
nur für
einen azyklischen Graphen funktionieren. Wenn es in der beliebigen
Topologie Zyklen gibt, müssen
sie durch das in Schritt 80 beginnende Verfahren unterbrochen
werden. Die Existenz eines Zyklus wird in Schritt 79 erfasst,
wenn nach dem Ablauf eines vorher festgelegten Timeout- bzw. Zeitüberwachungs-Periode
ein Knoten immer noch als Zyklusknoten anstatt als Blatt, Zweig
oder Root bezeichnet wird. Die Zeitsteuerung zur „Zykluserfassung" beginnt unmittelbar nach
dem Ende der Businitialisierungsfunktion. Die Timeout-Periode muss
nicht länger
als die ungünstigste
Dauer des Graphentransformationsprozesses sein (unter Hinzufügung der
Verzögerungszeit
für einen „Kann Root
sein"-Knoten und
ein mögliches Root-Konkurrenzsituationsereignis).
-
Das „Zykluserfassungs-Timeout-Ereignis" muss nicht synchron
für alle
Knoten eines Graphen auftreten, da alle Nachrichtenvermittelungen
asynchrone Ereignisse sind. Daher ist für einen Knoten, der noch nicht
sein „Zykluserfassungs-Timeout-Ereignis" erreicht hat, der
Empfang einer Nachricht möglich,
die eine laufende Zyklusauflösung
anzeigt. Ein derartiger Knoten wird sein Zykluserfassungs-Timeout-Intervall
abbrechen und den entsprechenden Zyklusauflösungsprozess beginnen.
-
Das
Verfahren der Zyklusauflösung
gemäß der vorliegenden
Erfindung erfordert ein Eingreifen des Anwenders der zusammengestellten
Knotensammlung. Wenn ein Knoten auf ein Timeout der „Zykluserfassung" trifft, kann der
Systemanwender in Schritt 100 von 6(a) über eine
Ausgabeeinrichtung benachrichtigt werden, dass ein Zyklus existiert und
welche Knoten einbezogen sind. Der Anwender wird dann angewiesen,
zur Eliminierung gleich welcher vorhandenen Zyklen Verbindungen
zu trennen. Der Anwender wird dann die Steuerung an das Graphentransformationsverfahren
zurückgeben.
-
Sobald
jede der Schleifen unterbrochen ist und keine Zyklen verbleiben,
kann das Verfahren zur Transformation des Graphen, wie es in den
vorherigen Abschnitten beschrieben ist, fortsetzen bis der gesamte
Graph sowohl azyklisch als auch gerichtet ist.
-
Eindeutige physikalische
Adresszuweisung
-
Sobald
ein gerichteter azyklischer Graph von der ursprünglichen, beliebigen Topologie
gebildet wurde, ist die Zuweisung von eindeutigen physikalischen
Adressen zu jedem Knoten auf dem Graphen möglich. Dieses Verfahren beginnt
damit, dass alle Blattknoten den Bus durch die Übertragung des Busanforderungs(BR)-Signals über ihren
einzigen verbundenen Port anfordern. Der das Signal empfangende
Elternknoten wird bis zum Empfang des BR-Signals von allen seinen
Kindports warten und dann das BR-Signal zu seinem Elternknoten ausbreiten.
Die BR-Signale werden
sich durch den Graphen ausbreiten, bis der Root-Knoten das BR-Signal
von allen seinen Kindern empfangen hat. Sobald der Root-Knoten eine
Busanforderung über
alle seine Kindports empfangen hat, wird er eine Entscheidung zur
Gewährung
des Busses über
einen Port treffen und ein Busverweigerungs(BD)-Signal über seine verbleibenden
Kindports ausbreiten. Das Verfahren zur Auswahl, welche Busanforderung
zu gewähren ist,
kann eine a priori – Entscheidung
sein, wie zum Beispiel die vorstehend beschriebene, bei der zum Beispiel
Ports von links nach rechts oder basierend auf einer Portnummerierung
etc. ausgewählt
werden. Das Busgewährungs(BG)-Signal
wird von dem Root-Knoten zu seinem anfordernden Kind übertragen.
wenn dieses anfordernde Kind selbst ein Elternknoten ist, der die
Busanforderung eines seiner Kinder verbreitet hat, wird er das Busverweigerungs-Signal über alle
außer
einen seiner Kindports in der gleichen vorher festgelegten, vorstehend
beschriebenen Art und Weise senden. Schließlich wird ein Blattknoten
das Busgewährungs-Signal
empfangen, auf das er mit einem Busgewährung-Bestätigt(BGA)-Signal antworten
wird, das zurück
zum Root-Knoten ausgebreitet wird. Die Ausbreitung der BD- und BGA-Signale
dient der Orientierung der Kommunikations verbindungen, was im Falle
von Halbduplex-Kommunikationskanälen
notwendig sein kann. Alle verweigerten Knoten werden dann auf eine Aktivität des Knoten
warten, der letztendlich das BG-Signal
empfängt.
-
Der
Knoten, dem letztendlich ein Zugriff auf den Bus gewährt wurde,
wird ein Adresszuweisungspaket übertragen.
Der Knoten wird dieses Paket auf den Bus übertragen und es wird von allen
anderen Knoten empfangen werden, von denen jeder die Anzahl der
von ihnen empfangenen Adresspakete zählen wird. Das übertragene
Adresspaket kann irgendwelche beliebigen Informationen aufweisen.
Die eindeutige physikalische Adresse eines Knotens wird auf der
Anzahl der Adresspakete basieren, die ein Knoten gezählt hat,
bevor er ein Adresspaket überträgt. Folglich
werden keine zwei Knoten die gleiche physikalische Adresse erhalten,
obwohl ihnen keine Adressinformationen im Voraus zugewiesen wurde. Die
tatsächliche
Zusammensetzung des Adresspaketes ist beliebig und kann jeder durch
das System effizient verwendbare Bit-Strom sein. Nach der Übertragung
des Zuweisungspakets der physikalischen Adresse wird ein Knoten
ein „Kind-ID
Vollständig"-Signal (CIC-Signal) übertragen.
Der dies auf seinem Kindport empfangende Elternknoten wird dann
das „Kind-ID
Vollständig
Bestätigung"(CICA)-Signal übertragen
und den Port als einen identifizierten Kindport bezeichnen. Als
Reaktion auf die nächste BR-Signalausbreitung
wird der Elternknoten desjenigen Knotens, der sich gerade selbst
identifiziert hat, seinen nächsten
Kindknoten zur Übertragung
des Pakets der physikalischen Adresse auswählen. Sobald sich alle Kindknoten
eines Elternknotens identifiziert haben, wird der Elternknoten den
Bus anfordern. Wenn ihm der Bus gewährt wird, wird er sein Zuweisungspaket
der physikalischen Adresse ausbreiten. Dieses Verfahren wird dem
vorher festgelegten Auswahlkriterium folgend fortgesetzt, bis alle Knoten
eine eindeutige physikalische Adresszuordnung durch Zählen bestimmen. 5 veranschaulicht
den Graphen von 3(e), in dem ein vordefiniertes
von-links-nach-rechts-Auswahlkriterium ausgeführt ist. Die Knoten sind eindeutig
zugewiesene Adressen, wobei der Knoten 33 die erste Adresse empfängt und
der Root-Knoten 30 wie
beschrieben die achte und letzte Adresse empfängt.
-
Wenn
dieses Verfahren abgeschlossen ist, wird jeder Knoten im Graphen
eine eindeutige physikalische Adresse aufweisen, die nicht im Voraus
bestimmt werden muss und die für
das Systemmanagement oder andere Zwecke verwendet werden kann.
-
Knoten-Selbstidentifikation
-
Das
Verfahren der Selbstidentifikation der Knoten folgt im Wesentlichen
der gleichen Routine wie das vorstehend beschriebene Verfahren der
Zuweisung der physikalischen Adresse. Da jeder Knoten sein Zuweisungspaket
der physikalischen Adresse überträgt, kann
dieses Paket weitere Informationen umfassen, wie zum Beispiel die
Identifikation der physikalischen Einrichtung, die die Identifikation
des zum Knoten gehörenden
lokalen Host aufweist, wie viel Energie er erfordert und zum Beispiel
ob er ein „Soft
power-on" [gesteuertes
Einschalten]-Attribut unterstützt etc.
In der Tat können
die Selbstidentifikationsinformationen der Knoten als Zuordnungspaket der
physikalischen Adresse dienen, da das Verfahren des Sendens irgendwelcher
Informationen überhaupt die
Basis für
das Zählen
zum Erhalt eindeutiger physikalischer Adressen bereitstellt.
-
In
Bezug auf das Selbstidentifikationspaket der Knoten müssen die
bestimmten, den Knoten betreffende Informationen nur von denjenigen
Knoten „mitgehört" werden, die durch
die Beschaffenheit des bekannt gebenden Knotens betroffen sind.
Wie beim Vorstehenden geht dieses Verfahren weiter, bis alle Knoten
ihre Informationen der Knoten-Selbstidentifikation übertragen
haben.
-
Topologieabbildung
-
Das
Verfahren der Topologieabbildung folgt der gleichen Art wie die
physikalische Adresszuweisung und die Knoten-Selbstidentifikation. Bei diesem Verfahren überträgt folglich
jeder Knoten, wenn er durch das Verfahren der Adresszuweisung oder
der Knoten-Selbstidentifikation geht, weitere, alle seine Ports
betreffende Informationen, wie zum Beispiel die Anzahl seiner Kindports
und ob er irgendwelche deaktivierten Ports aufweist oder nicht.
In Bezug auf die deaktivierten Ports kann die Ausführung eines Kommunikationsprotokolls
zwischen sich deaktivierenden Ports wünschenswert sein, so dass sie
identifizieren können,
von wem sie deaktiviert wurden. Folglich wird ein Port, wenn er
einen deaktivierten Port identifiziert, eine Kennung abgeben, die
sowohl seine eigene ID als auch die ID des Portes anzeigt, von dem
er deaktiviert wurde.
-
Durch
die Zusammenstellung aller während des
Topologieabbildungsverfahrens empfangenen Topologieinformationen über alle
Ports können
der Busserver, der Host oder irgendeine Anwendung der Softwareschicht
die aufgelöste
Bustopologie logisch rekonstruieren. Dies ist für viele Zwecke nützlich,
die die Ausführung
von Redundanz umfassen, bei der beim unerwarteten Zusammenbruch
einer Verbindung vorher deaktivierte Verbindungen zur Verhinderung
des Verlusts von Kommunikationskanälen zu irgendwelchen Knoten
dienen können.
-
Faire Buszugriffsarbitrierung
-
Sobald
die Routinen der Topologieabbildung, der Knoten-Selbstidentifikation oder der Zuweisung der
physikalischen Adressen abgeschlossen sind, kann der Bus als bereit
und in Betrieb angesehen werden. Ein gemäß der vorliegenden Erfindung
ausgeführtes
Arbitrierungsschema ist das eines fairen Buszugriffs. Wenn ein Knoten
einen Zugriff auf den Bus wünscht,
sendet er über
seinen Elternport (sofern er nicht der Root-Knoten ist) ein Busanforderungs(BR)-Signal.
Der Elternknoten sendet bei Empfang des BR-Signals von einem Kindknoten
ein Bus-Verweigert-Signal (BD) über
alle seine anderen Kindports. Der Elternknoten breitet dann das
BR-Signal aufwärts über seinen
Elternknoten aus, bis das Signal den Root-Knoten erreicht. Der Root-Knoten gibt
als Reaktion auf das erste empfangene BR-Signal ein Bus-Gewährt-Signal (BG) aus und sendet
das BD-Signal über alle
seine anderen, abwärts
ausbreitenden Kindports. Dadurch werden die Verbindungen orientiert.
Das BG-Signal breitet
sich abwärts
durch den Graphen bis zum Erreichen des anfordernden Knotens aus,
der dann das Bus-Bestätigt(BR)-Signal gefolgt
von dem Informationspaket sendet, dessen Sendung der Knoten auf
den Bus benötigte.
Wenn das Paket abgeschlossen ist, kehren alle Knoten in einen Ruhezustand
zurück
oder treten in ihn ein.
-
Wenn
der Root-Knoten nahezu gleichzeitig Busanforderungen empfängt, werden
die vorher festgelegten Auswahlkriterien für den Root-Knoten zur Gewährung des
Buszugriffs für
einen der Knoten verwendet. Dies können die gleichen vorher festgelegten,
wie oben beschriebenen Prioritätsauswahlkriterien
sein.
-
Ein
weiterer Aspekt einer fairen Buszugriffsarbitrierung ist die Priorität eines
Elternknoten gegenüber
seinen Kindknoten. Wenn folglich ein Elternknoten den Bus benötigt, sendet
er das BD-Signal über alle
seine Kindports und breitet dann das BR-Signal nach oben in Richtung
des Root-Knotens aus. Ein potentielles Problem dieses Mechanismus
besteht darin, dass ein Kindknoten Schwierigkeiten beim Erlangen
eines angemessenen Buszugriffs haben kann, wenn der Elternknoten
eine große Menge
von Informationen auf den Bus zu übertragen hat. Es wurde deshalb
ein Lückensystem
eingeführt,
das weit verbreitet und auf dem Gebiet gut bekannt ist. Nachdem
ein Knoten den Bus verwendet hat, muss der Knoten eine Lückenperiode
warten, bevor er den Bus erneut anfordern kann. Dies gibt jedem
Knoten auf dem Bus die gleiche Chance für eine Busgewährung, unabhängig von
seiner topologischen Anordnung auf dem Bus. Zur Sicherstellung eines
fairen Arbitrierungsprotokolls muss die Länge der Lücke größer als die ungünstigste
Signalausbreitungsverzögerung über den
Bus sein. Der Lückenwert
kann vorher festgelegt und in der Knotenlogik fest verdrahtet sein. Eine
derartige Lösung
wird mit Ausnahme des extremsten Falles zu einer suboptimalen Verwendung des
Busses führen.
Die Fähigkeit
zur Topologieabbildung zusammen mit der während der Phase der Graphentransformation
ausgeführten
Messung der Ausbreitungsverzögerung
zwischen benachbarten Knoten ermöglicht
die Berechnung einer optimalen, fairen Lücke, die die Leistungsfähigkeit
des Busses für jede
spezifische Ausführung
maximieren wird.
-
Prioritätsbusarbitrierung
-
In
dem gemäß der vorstehenden
fairen Buszugriffsarbitrierung ausgeführten Busarbitrierungsschema
kann es wünschenswert
sein, dass der Root-Knoten immer die Buspriorität aufweist. Wenn dies ausgeführt ist,
kann sich der Root-Knoten den Bus zu jeder Zeit selbst gewähren. Dies
wird durch das Senden des BD-Signals
nach unten über
alle Knoten des Graphen ausgeführt.
Ein Prioritätsbuszugriff
für den
Root-Knoten ist für
den Fall sehr nützlich, bei
dem die Ausführung
einer isochronen Datenübertragung
des Root-Knotens erforderlich ist.
-
Einen Token
weiterleitende Busarbitrierung
-
Als
eine Alternative zu den oben beschriebenen fairen und Prioritäts-Buszugriffsarbitrierungsschemata
kann die vorliegende Erfindung zur Ausführung eines einen Token weiterleitenden
Busarbitrierungsschemas verwendet werden. Bildlich gesprochen bezieht
sich ein einen Token weiterleitender Buszugriff auf die Vorstellung,
dass ein Knoten auf einem Bus kommunizieren kann, wenn er im Besitz
eines zwischen den Knoten weitergeleiteten Token ist. Der Token
wird in einer zyklischen Art und weise von Knoten zu Knoten weitergeleitet,
so dass jeder Knoten den Bus zu einem vorher festgelegten Zeitpunkt im
Zyklus erhält.
Das Weiterleiten des Token wird in der vorliegenden Erfindung auf
die gleiche Art und Weise wie die oben beschriebene Zuweisungsroutine der
physikalischen Adresse ausgeführt.
Die implementierten vorher festgelegten Auswahlmechanismen werden
zur Auswahl der Reihenfolge verwendet, in der der Token von Knoten
zu Knoten weitergeleitet wird. Diese Reihenfolge ähnelt der
in 5 gezeigten Reihenfolge, die die Reihenfolge der
Zuweisung einer eindeutigen Adresse vorschreibt. Jeder Knoten wird
bei einer Zuweisung des Token sein Informationspaket auf dem Bus
ausbreiten, während die
verbleibenden Knoten mithören.
Basierend auf dem vorstehend beschriebenen, vorher festgelegten Ablaufsteuerungsverfahren
wird der Knoten den Token dann zum nächsten logischen Knoten weiterleiten.
-
Preemptive
Businitialisierung
-
Ein
wichtiges, gemäß der vorliegenden
Erfindung ausführbares
Merkmal ist der Begriff der preemptiven Businitialisierung. Die
in jedem Knoten enthaltene Automatenlogik ist in der Lage, unter
bestimmten Bedingungen ein von dem Knoten über alle seine Ports auszubreitendes
Bus-Initialisierungs(BI)-Signal
zu triggern. Wenn ein Knoten die Notwendigkeit der Signalisierung
einer Businitialisierungsbedingung bestimmt hat, wird er das BI-Signal über alle
seine Ports für
eine Zeitdauer ausbreiten, die ausreichend sicherstellt, dass es
alle angrenzenden Knoten empfangen und dann freigegeben haben. Ein
Knoten wird dann in die initiierenden Verfahren eintreten, die dann
zu dem Graphentransformationsprozeß in den vorstehend beschriebenen
Prozeduren führen.
-
Es
gibt eine Reihe von Situationen, die die Triggerung einer preemptiven
Businitialisierung notwendig oder wünschenswert machen können. Dies kann
zunächst
eine Reaktion eines Knotens auf einen unvorhergesehenen Fehler sein.
Zusätzlich
kann auf der Ebene des Host bestimmt werden, dass ein anderer Knoten
das Knotenattribut erhalten soll, zum Beispiel ein Knoten mit isochroner
Datenübertragung.
Diese Zuweisung wird während
der gesamten Businitialisierungsroutine eingehalten. Dadurch wird der
gewünschte
Knoten veranlasst, während
des Transformationsverfahrens zu warten, bis er die Root-Bezeichnung
empfängt.
Eine andere, zu einer preemptiven Businitialisierung führende Bedingung kann
der Bruch einer Verbindung sein. In diesem Fall kann die Berechnung
eines neuen azyklischen, gerichteten Graphen für die angeschlossen Knoten
notwendig sein. Schließlich
ist eine bedeutende Situation, in der eine preemptive Businitialisierung
auftreten soll, wenn eine Einrichtung zu dem Netzwerk hinzugefügt wird.
Dies wird als „Hot
Addition" [„Hinzufügen im laufenden
Betrieb"] von Peripherieeinrichtungen bezeichnet.
Der Port, an den die neue Einrichtung angeschlossen ist, wird das
Vorhandensein eines neuen Knotens erfassen und eine Businitialisierung triggern,
die für
den Systemanwender transparent sind, aber zum Beispiel das Hinzufügen und
Entfernen von Peripherieeinrichtungen ohne ein Herunterfahren und
Neueinschalten gestattet. Es wird ein neuer azyklischer gerichteter
Graph berechnet, der das Vorhandensein des hinzugefügten Knotens
umfasst. Es ist möglich,
dass beim Entfernen bestimmter Knoten die Triggerung einer Businitialisierung nicht
notwendig ist, wenn zum Beispiel ein Blattknoten entfernt wird,
entsteht kein Schaden für
das Netzwerk. Wenn jedoch ein Zweigknoten aus einem in Betrieb befindlichen
Bus herausgelöst
wird, ist die Notwendigkeit der Neukonfiguration des Graphen wahrscheinlich.
-
Obwohl
die vorliegende Erfindung anhand von bevorzugten Ausführungsbeispielen
beschrieben wurde, sollte es klar sein, dass verschiedene Modifikationen
und Änderungen
von den Fachleuten vorgenommen werden können, ohne den Schutzumfang
der Erfindung zu verlassen. Die Erfindung sollte deshalb an den
nachfolgenden Ansprüchen
gemessen werden.