-
Hintergrund der Erfindung
-
Verwandte Anmeldungen
-
Diese
Anmeldung betrifft das
US-Patent
Nr. 5,394,556 , "Method
and apparatus for unique address assignment, node self-identification
and topology mapping for a directed acyclic graph [Verfahren und
Vorrichtung zur eindeutigen Adressenzuteilung, Knoteneigenidentifizierung
und Topologieabbildung für
einen gerichteten azyklischen Graphen]".
-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Computersysteme. Genauer gesagt,
betrifft die vorliegende Erfindung ein Verfahren zum Erstellen und
Nutzen eines Kommunikationsschemas zwischen mehreren beliebig zusammengesetzten
Elementen eines Computersystems.
-
Stand der Technik
-
Komponenten
in einem gegebenen Computersystem benötigen die Fähigkeit, Signale untereinander
auszutauschen. In sehr einfachen Systemen ist es möglich, daß jedes
Element des Systems direkt mit allen anderen Teilen des Systems
verschaltet werden kann. In der Realität haben Computerarchitekten
jedoch vor langem das Konzept eines Kommunikationsbusses entwickelt,
um Computer erweiterbar zu machen und eine unbekannte Zahl von Systemteilen
aufzunehmen.
-
Ein
Bus ist ein Kommunikationsweg, wie zum Beispiel eine Leitung oder
Leitungen, die durch das ganze Computersystem laufen. Jede Komponente des
Systems braucht nur an den Bus angeschlossen zu werden, um theoretisch
mit jeder anderen Komponenten im System verbunden zu sein. Natürlich kann nicht
jede Komponente gleichzeitig mit anderen Komponenten kommunizieren,
weil es möglicherweise
nur einen einzigen Kommunikations kanal zwischen den Komponenten
gibt. Bei der Nutzung eines Kommunikationsbusses ist es notwendig,
eine bestimmte Form einer Anordnung zur gemeinsamen Nutzung einzurichten,
so daß jede
Komponente den Bus zur Kommunikation mit anderen Komponenten effizient
verwenden kann, die kritische Informationen von einer Komponente
nicht hängen
läßt, die
auf den Zugriff auf den Bus warten. Das Verfahren, durch welches
Komponenten des Busses sich den Bus teilen, wird allgemein als Buszuteilungsschema
bezeichnet.
-
Eine
Art von Zuteilungsschema wird auf der 11. Internationalen Konferenz über Computersysteme
für Verteilte
Datenverarbeitung, Arlington, Texas, USA, Mai 1991, unter dem Titel "A Dag-Based Algorithm
for Distributed Mutual Exclusion",
von M. L. Nelson und M. Mizumo beschrieben. Das Schema, das beschrieben
wird, basiert auf einem verteilten wechselseitigen Algorithmus auf
Tokenbasis, das ein vollständig
angeschlossenes Netz und ein logisches Netz mit einer Struktur eines
gerichteten azyklischen Graphen annimmt.
-
Neben
dem entscheidenden Bedürfnis,
das Buszuteilungsschema zu optimieren, um so den Fluß wichtiger
Informationen zu maximieren, kann und sollte die physische (und
logische/elektrische) Konfiguration des Busses selbst optimiert
werden, um Systemverzögerungen
zu minimieren und dabei so flexibel wie möglich zu bleiben.
-
Um
mit anderen Komponenten, die an einen Bus angeschlossen sind, zu
kommunizieren, muß jede
Komponente mit Hardware ausgestattet sein, wie zum Beispiel Sende-
und Empfangsschaltungen, die zu dem Kommunikationsprotokoll kompatibel sind,
welches für
den Bus implementiert ist. Ein solcher Kommunikationsstandard wird
in dem IEEE-Standards-Dokument P1394 mit dem Titel "High Performance
Serial Bus" beschrieben,
wobei das Dokument als Anhang A an das vorliegende Dokument angehängt ist.
Die Norm, die in P1394 beschrieben wird, soll eine preiswerte Zwischenverbindung
zwischen Karten auf derselben Rückwandplatine,
Karten auf anderen Rückwandplatinen
und externen Peripheriegeräte
bereitstellen.
-
Busse
oder Netze nach dem Stand der Technik erforderten das Wissen, was
wo eingestöpselt wurde.
Die Rückseite
vieler Computer hat zum Beispiel viele Ports für spezielle Peripheriegeräte. Einige Computer
implementieren mehrere Busse, wie zum Beispiel der Macintosh, der
einen Bus verwendet, welcher als ADB bezeichnet wird, für Komponenten wie
Maus und Tastatur und SCSI-Bus für
andere Peripheriegeräte.
Diese Arten von Bussen sorgen für das
Anschließen
von Elementen in Kaskade, die Verbindungen besitzen jedoch eine
begrenzte Topologie. Andere bekannte Busse/Netze erfordern, daß die Knoten
des Netzes in einem Ring angeordnet sind, einer Schleife, die geschlossen
sein muß,
damit sie arbeiten kann.
US-A-4344134 beschreibt
Prozessoren in einer Verarbeitungsanordnung, die in einer hierarchischen
Baumstruktur angeordnet sind. Und schließlich erfordern Stern- und
Nabe-Speiche-Anordnungen, daß jeder
Knoten direkt mit einem zentralen Master verbunden ist. Jedem der
vorherigen Systeme nach dem Stand der Technik fehlt ein wünschenswertes
Maß an
Flexibilität.
-
Es
wäre wünschenswert
und ist daher ein Ziel der vorliegenden Erfindung, Elemente eines Computersystems
beliebig auf einem Bus zu versammeln, wo die beliebige Topologie
vom System in ein funktionierendes System aufgelöst werden kann, ohne daß eine vorgegebene
Anordnung von Komponenten erforderlich wäre.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Gemäß der vorliegenden
Erfindung wird ein Verfahren zur preemptiven Businitialisierung
in einem Computersystem bereitgestellt, wobei das Computersystem
mehrere Komponenten umfaßt,
die durch mehrere Kommunikationsverbindungen verbunden sind, wobei
die mehreren Komponenten jeweils mindestens einen Kommunikationsknoten
haben, wobei die Kommunikationsknoten ihre zugehörige Komponente durch einen
Knotenport mit einer Kommunikationsverbindung verbinden, wobei die Knoten
mehrere Ports haben können,
wobei die Konfiguration von Knoten und Kommunikationsverbindungen
einen gerichteten azyklischen Graphen umfassen, wobei ein Knoten
als Wurzelknoten bezeichnet wird und alle Knoten, die nur mit einem
benachbarten Knoten verbunden sind, als Blattknoten bezeichnet werden,
wobei alle anderen Knoten im Graphen als Zweigknoten bezeichnet
werden, wobei der azyklische gerichtete Graph aufgestellte hierarchische
Vorgänger-Nachfolger-Beziehungen
zwischen allen benachbarten Knoten hat, die vom Wurzelknoten nach
unten zu allen Blattknoten fortschreiten, wobei ein Blattknoten
nur einen Vorgängerknoten
hat und alle Knoten, die dem Wurzelknoten benachbart sind, Nachfolgerknoten
in Bezug auf den Wurzelknoten sind, aber Vorgängerknoten in Bezug auf andere benachbarte
Knoten sind, wobei der Wurzelknoten definitionsgemäß keinen
Vorgängerknoten
hat, wobei das Verfahren der preemptiven Businitialisierung die
Schritte der Ausbreitung eines Businitialisierungssignals von einem
Knoten, der feststellt, daß die
Businitialisierung notwendig ist, Aufrechterhalten des Businitialisierungssignals
für einen
vorgegebenen Zeitabschnitt und Ausbreiten dieses Signals durch den
ganzen Graphen auf alle Knoten im Graphen umfaßt.
-
Es
ist ein Ziel der vorliegenden Erfindung, ein faires Buszugriffszuteilungsschema
für einen
Computersystembus oder -netz bereitzustellen, in dem die Verbindungen
von Knoten in einen azyklischen gerichteten Graphen aufgelöst worden
sind.
-
Es
ist ein weiteres Ziel der vorliegenden Erfindung, ein Verfahren
der Token-Passing-Buszuteilung für
einen Computersystembus oder -netz bereitzustellen, in dem die Verbindungen
von Knoten in einen azyklischen gerichteten Graphen aufgelöst worden
sind.
-
Es
ist ein weiteres Ziel der vorliegenden Erfindung, einen Mechanismus
bereitzustellen, mit dem eine preemptive Businitialisierung durch
einen Knoten in einem Netz von Knoten ausgelöst werden kann, die in einen
azyklischen gerichteten Graphen aufgelöst sind, wenn Fehler festgestellt
oder Knoten während
des Betriebs hinzugefügt
oder entfernt werden.
-
Diese
und andere Ziele der vorliegenden Erfindung werden in einem System
implementiert, in dem eine beliebige Ansammlung von Knoten auf einem
Systembus in einen azyklischen gerichteten Graphen aufgelöst worden
sind. Die hierarchische An ordnung von Knoten hat einen Knoten, der
als Wurzel bezeichnet wird, während
alle anderen Knoten feststehende Vorgänger-Nachfolger-Beziehungen mit den Knoten
haben, mit denen sie verbunden sind. Jeder Knoten kann mehrere angeschlossene Nachfolgerports
mit einem vorgegebenen Quittungsprioritätsschema, das eingeführt ist,
haben. Die faire Buszugriffszuteilung sorgt für eine Busgewährung in einer
Folge, die den vorgegebenen Portprioritäten entspricht, was allen Knoten
einen Turnus auf dem Bus ermöglicht.
Der Wurzelknoten kann immer seinen Prioritätszugriffsstatus durchsetzen,
um Zugriff auf den Bus zu erlangen, was für die Aufnahme eines Wurzelknotens
nützlich
ist, der eine isochrone Datenübertragung
benötigt.
Alternativ kann ein Token-Passing-Zuteilungsschema implementiert
werden, bei dem das Token für
den Buszugriff gemäß dem oben beschriebenen
vorgegebenen Portprioritätsschema die
Knoten durchläuft.
Die preemptive Businitialisierung kann von jedem Knoten beim Feststellen
eines Fehlers oder einer Hinzufügung
oder einer Entfernung einer Verbindung zu/von einem vorhandenen Knoten,
die dies erforderlich macht, ausgelöst werden.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
Ziele, Merkmale und Vorteile der vorliegenden Erfindung werden aus
der folgenden ausführlichen
Beschreibung erkennbar; dabei gilt:
-
1 ist
ein Blockdiagramm der Hardwareschichtimplementierung, die gemäß der vorliegenden Erfindung
verwendet wird.
-
Die 2(a)-2(b) illustrieren
beliebig zusammengestellte Kollektionen von Knoten, wobei eine azyklisch
ist und die andere mehrere Zyklen umfaßt.
-
3(a) ist die beliebig zusammengestellte Kollektion
von Knoten von 2(a), die den Graphentransformationsprozeß gemäß der vorliegenden Erfindung
erfährt.
-
Die 3(b)-3(d) illustrieren
alternative Kommunikationsvermittlungen zwischen Knoten bei der
Implementierung der vorliegenden Erfindung.
-
3(e) illustriert grafisch den gerichteten Graphen,
der sich aus dem beliebig zusammengesetzten Netz von Knoten von 2(a) ergibt.
-
4 illustriert
eine symmetrische Graphenanordnung, die das Auflösen eines Wurzelkonflikts erfordert.
-
5 illustriert
einen gerichteten azyklischen Graphen mit einer möglichen
eindeutigen Adreßzuteilungsordnung,
die angezeigt wird.
-
Die 6(a)-6(e) illustrieren
den Verfahrensablauf beim Ausführen
der Graphentransformationsprozedur gemäß der bevorzugten Ausführungsform
der vorliegenden Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Es
werden ein Verfahren und eine Vorrichtung zur Nutzung eines Busses,
der eine beliebige Topologie hat, beschrieben. In der folgenden
Beschreibung werden zahlreiche spezielle Details, wie zum Beispiel
verschiedene Computerkomponenten, dargelegt, um für ein gründliches
Verständnis
der vorliegenden Erfindung zu sorgen. Für Fachleute auf dem Gebiet
ist jedoch erkennbar, daß die
vorliegende Erfindung ohne solche speziellen Details ausgeführt werden
kann. In anderen Fällen
sind bekannte Kontrollstrukturen und Codierverfahren nicht im Detail beschrieben
worden, um das Verständnis
für die
vorliegende Erfindung nicht unnötig
zu erschweren.
-
In
der ganzen ausführlichen
Beschreibung werden zahlreiche beschreibende Begriffe eingeführt, um
für eine
metaphorische Klarheit in der Beschreibung zu sorgen. Zum Beispiel
wird häufig
auf die Vorgänger-Nachfolger-Beziehungen
zwischen Knoten in einer gegebenen Topologie verwiesen. Der Zweck
besteht darin, das Konzept der "Richtung" für den abschließend aufgelösten Graphen
bereitzustellen. Wie beschrieben wird, gibt es einen Knoten, der als "Wurzelknoten" identifiziert wird,
sobald eine beliebige Topologie auf einen azyklischen gerichteten Graphen
reduziert worden ist. Der Wurzelknoten hat keinen Vorgängerknoten;
alle Knoten, die logisch dem Wurzelknoten unmittelbar benachbart
sind, sind dann Nachfolgerknoten der Wurzel. Die Metapher "Baum" wird durch die Aufnahme
von Knoten vervollständigt,
die als "Zweige" und "Blätter" bezeichnet werden.
-
Die
Busarchitektur, die hierin beschrieben wird, hat, obwohl sie mit
Bezug auf Komponenten für einen
einzelnen Computer beschrieben wird, im allgemeinen einen weiteren
Anwendungsbereich. Die vorliegende Erfindung zum Definieren der
Bustopologie kann auf jede beliebig zusammengesetzte Kollektion
von Knoten angewendet werden, die wie in einem Netz von Geräten verbunden
sind. Ein Punkt, der zu beachten ist, ist die Notwendigkeit, einen
Knoten von einer physischen Computerkomponente zu unterscheiden.
Jede Komponente, die auf dem Bus stehen soll, ist mit mindestens
einem physischen Schichtencontroller des Knotens verknüpft. Unter
bestimmten Umständen
kann eine gegebene Komponente vorteilhaft mit mehreren Knoten verknüpft werden,
im Normalfall gibt es aber eine 1:1-Entsprechung zwischen Geräten oder
Komponenten auf dem Bus und Knoten.
-
Sieht
man sich nun 1 an, so wird ein Blockdiagramm
eines Knotens 10 dargestellt. Die physische Implementierung
eines Knotens ist etwas willkürlich.
In der Implementierung der bevorzugten Ausführungsform der vorliegenden
Erfindung werden die Knoten so bezeichnet, daß sie dem IEEE P1394 Hochleistungs-Serienbus-Kommunikationsprotokoll entsprechen,
welches als Anhang A beigefügt
ist. Knoten 10 umfaßt
die Zuteilungsstatus-Maschinenlogik 11. Diese Zuteilungsstatus-Maschinenlogik enthält alle
logischen Schaltungen zum Ausführen
der Verfahren und Algorithmen, die hierin beschrieben werden sollen.
Die Schaltungen können
ein programmierbares Logikfeld (PLA) umfassen oder eindeutig ausgelegt
sein, um die Funktionen, die hierin beschrieben werden, auszuführen. Sobald
die Funktionen, die von der Knotenlogik auszuführen sind, beschrieben sind,
sind Fachleute in der Lage, die vorliegende Erfindung ohne unnötiges Experimentieren
zu implementieren. Der Knoten soll mittels seiner Logik das Minimalzuteilungsprotokoll
implementieren, einschließlich
der Businitialisierungs-, Baumidentifizierungs-, Eigenidentifizierungs-
und Buszutei lungsfunktionen, die alle im Detail weiter hierin beschrieben
werden sollen.
-
Knoten 10,
der in 1 gezeigt wird, umfaßt auch die Übertragungsmultiplexer 12 und 13 und
Datensender, -empfänger
und Resynchronisierungsvorrichtung 14. Der Knoten, der
in 1 illustriert wird, ist mit dem lokalen Host 15 verbunden.
Der lokale Host 15 kann ein Gerät sein, das man mit dem Bus verbinden
möchte,
wie zum Beispiel ein Plattenlaufwerk, CPU, Tastatur oder eine andere
Komponente, die mit anderen Komponenten im System kommunizieren
muß. Knoten 10 kommuniziert
mit anderen Knoten durch Kommunikationslinks. Ein Link ist eine Verbindung
zwischen zwei Ports und, praktisch gesehen, ist er ein Kabelsegment,
im allgemeinen aber kann er als ein beliebiger physischer Kommunikationskanal
implementiert werden. Ein Link soll mindestens in der Lage sein,
einen Halbduplex-Kommunikationskanal
zwischen den zwei Ports, die er verbindet, bereitzustellen. Ein
Port ist eine Schnittstelle zwischen einem Knoten und einem Link.
Gemäß der vorliegenden
Erfindung muß ein
Port die Fähigkeit
besitzen, Daten und Zuteilungssignale zu senden und zu empfangen.
Ein Port muß feststellen
können,
ob er durch einen Link mit einem anderen Port verbunden ist oder
nicht. Ein Verfahren, um dies zu erleichtern, besteht darin, daß an angeschlossene
Ports durch den Link eine Vorspannung angelegt wird, die vom Port
am anderen Ende des Links festgestellt werden kann. Wenn also ein
Port einen Link hat, der nicht mit einem Port am anderen Ende verbunden
ist, ein offener Link, dann stellt der Port fest, daß er kein
angeschlossener Port ist. In 1 hat der
illustrierte Knoten 10 drei externe Ports 21, 22 und 23 mit
verbindenden Links 17, 18 bzw. 19.
-
Einige
der Regeln der Implementierung für Knoten,
die für
die Implementierung der vorliegenden Erfindung gelten, sind, daß ein Knoten
einen oder mehrere Ports haben kann. Ein Knoten muß Daten über einen
beliebigen seiner Ports senden und empfangen können. Ein Knoten muß Daten
immer auf einem einzigen seiner aktivierten Ports empfangen können und
muß diese
Daten über
alle übrigen
aktivierten Ports wieder senden können. Ein Knoten muß Signalmitteilungen über alle
seine Ports gleichzeitig und unabhängig senden und empfangen können. Für jeden
Port eines Knotens sind getrennte Signal-Transceiver, Codierer und
Decodierer erforderlich. Ein Minimalimplementierungsknoten erfordert
kein Gerät für den lokalen
Host. Solch ein Knoten kann zum Beispiel als Kabelerweiterung fungieren.
Von nun an werden Geräte
und lokale Hosts ignoriert, und alle Verweise auf die Bustopologie
beziehen sich auf Knoten und Knotenverbindungen über verschiedene Ports.
-
Graphentransformation
-
Die 2(a) und 2(b) illustrieren
beliebig zusammengestellte Kollektionen von Knoten. Von nun an werden
Knoten nur noch als Kreise dargestellt, werden aber so betrachtet,
daß jeder
Elemente enthält,
die denen in Bezug auf 1 beschriebenen äquivalent
sind. Beachten Sie jedoch, daß jeder
Knoten mehr oder weniger als die drei externen Ports haben kann,
die in dieser Figur gezeigt werden. Die gezeigten Linien, die jeden
der Knoten verbinden, sind das Mittel, mit dem Links gezeigt werden.
Ports werden nicht dargestellt, sind aber implizit die Schnittstelle,
an der sich ein Link und ein Knoten verbinden.
-
Das
Buszuteilungsverfahren, das hierin beschrieben werden soll, erfordert,
daß die
beliebige Topologie in einen azyklischen gerichteten Graphen aufgelöst wird.
In einem Graphen beliebiger Topologie kann eine Kollektion von Knoten
und Links einen Zyklus bilden. Ein Zyklus besteht, wenn es beim
Start von einem bestimmten Knoten im Graphen aus möglich ist,
zum selben Knoten beim Durchlaufen von Links und Knoten zurückzukehren,
ohne daß ein
Link zweimal durchlaufen wird. 2(a) illustriert
einen azyklischen Graphen, weil keiner der Knoten, die dargestellt
sind, innerhalb einer Schleife angeschlossen ist. 2(b) ist jedoch kein azyklischer Graph, da der Bereich
in dem Begrenzungskasten 25 eine Kollektion von Knoten, 40-47,
enthält,
die mehrere Zyklen bilden. Das Buszuteilungsverfahren, das hierin
beschrieben werden soll, erfordert, daß es keine Zyklen gibt; daher
wird auch ein Verfahren für
den Benutzereingriff zum Auflösen
von Zyklen weiter unten beschrieben.
-
Zusätzlich zu
der Forderung, daß ein
Graph azyklisch sein soll, muß er
auch gerichtet sein. Ein gerichteter Graph ist einer, bei dem zwischen
benachbarten Knoten eine hierarchische Ordnung errichtet wurde.
Zu Anfang gibt es keine aufgestellten Vorgänger-Nachfolger-Beziehungen
zwischen Knoten. Das heißt
zum Beispiel, daß Knoten 31 der "Vorgängerknoten" für Knoten 34 sein
kann oder der "Nachfolgerknoten" für Knoten 34 sein
kann. Es ist daher notwendig, einen Graphen einer gegebenen beliebigen
Topologie zu bearbeiten und ihn in einen azyklischen und gerichteten
Graphen zu transformieren. Die Verfahren, die hierin beschrieben
werden, dienen dazu, diese Transformation für jede gegebene beliebige Topologie
auszuführen,
ungeachtet der Zahl der Knoten oder wie sie physisch verbunden sind
und ungeachtet der Signalausbreitungszeit entlang der Links.
-
Knotenkommunikation
-
Zu
Anfang wird der Prozess der Transformation eines azyklischen Graphen
beliebiger Topologie in einen gerichteten Graphen beschrieben. Der
Fall, bei dem ein Zyklus aufgelöst
werden muß,
folgt danach. 3(a) zeigt den beliebigen Graphen
von 2(a), wobei die Knoten und Links
Statuskennzeichnungen haben, und kommunizierte Signale für den Graphentransformationsprozeß für die Richtungsangabe
eines Graphen angezeigt werden. An diesem Punkt ist es aufschlußreich,
die Signalkommunikation zwischen den Knoten zu beschreiben. 3(b) illustriert zwei Knoten 50 und 51 (die
hierin nachstehend Knoten A bzw. Knoten B genannt werden), die durch
Link 52 verbunden sind. Wie beschrieben, ist der Link der
Kommunikationskanal, der die Transceiverports der jeweiligen Knoten
verbindet, wie oben mit Bezug auf 1 beschrieben.
Während des
Graphentransformationsprozesses wird es notwendig, daß Knoten
Vorgänger-Nachfolger-Beziehungen
mit benachbarten Knoten aufstellen. Von zwei Knoten wird gesagt,
daß sie
benachbarte Knoten sind, wenn es mindestens einen Link gibt, der zwischen
einem Port des ersten Knotens und einem Port des zweiten Knotens
angeschlossen ist. In den 3(b)-3(d) wird angenommen, daß die Beziehung, die aufgelöst werden
soll, die ist, daß Knoten
B der Vorgänger
von Knoten A ist und daß die Knoten
sich dafür
eignen, diese Beziehung aufzustellen.
-
Bevor
eine Richtung aufgestellt wird, sendet Knoten A von seinem Port,
an den Link 52 angeschlossen ist, das Signal "Du bist mein Vorgänger" (YAMP), wenn es
für Knoten
A angemessen ist, Knoten B als seinen Vorgänger aufzustellen. Dieser Mitteilungsinhalt
kann eine beliebige Form annehmen, solange Knoten A weiß, daß er YAMP
als Signal abschickt und Knoten B verstehen kann, daß die empfangene
Mitteilung YAMP ist. Wenn das YAMP-Signal 53 von Knoten
B empfangen wird, reagiert Knoten auf Knoten A durch Senden von "Du bist mein Nachfolger" (YAMC) über Link 52 an
Knoten A. Die Zuteilungszustandsmaschinenlogik 11 von Knoten
A verfolgt die Zeitverzögerung
zwischen dem Senden des YAMP-Signals 53 und dem Empfang
des YAMC-Signals 54. Die Zeit, die gemessen wird, gibt
das Doppelte der Ausbreitungsverzögerung zwischen den Knoten
A und B an. Beim Empfang des YAMC-Signals reagiert Knoten A mit
einem "Du bist mein
Nachfolger Bestätigt" (YAMCA)-Signal 55.
Dies versieht Knoten B mit der Fähigkeit,
ebenfalls die Ausbreitungszeitverzögerung zwischen den Knoten
als der Zeitverzögerung
zwischen dem Senden von YAMC und dem Empfang von YAMCA zu bestimmen.
Für Halbduplex-Kommunikationslinks
hat die YAMCA-Mitteilung auch den Effekt, den Kommunikationskanal
richtig auszurichten.
-
Für Vollduplex-Kommunikationskanäle können die
drei logischen Mitteilungen, YAMP, YAMC und YAMCA, alternativ durch
nur zwei Signalübertragungen
weitergeleitet werden. In 3(c) wird
diese Situation illustriert, bei der Knoten A das YAMP-Signal 56 kontinuierlich
sendet, bis er das Rückkehr-YAMC-Signal 57 empfängt. Das
YAMCA-Signal wird logisch an Knoten B gesendet, wenn festgestellt wird,
daß das
YAMP-Signal nicht mehr ankommt.
-
Die
Verwendung dieses beschriebenen dreifachen asynchronen Austauschs
von Mitteilungen stellt einen Mechanismus be reit, mit dem beide
Knoten, die am Austausch von Mitteilungen beteiligt sind, die Ausbreitungszeitverzögerung über den
Link feststellen können.
Dieser Verzögerungswert
wird verwendet, um Konfliktereignisse, die weiter unten beschrieben
werden sollen, aufzulösen,
und wird während
der normalen Buszuteilung verwendet, um die Busleistungsfähigkeit
zu optimieren. Die dynamische Bestimmung dieses Parameters ist nicht
obligatorisch. Als Alternative kann eine maximale Ausbreitungszeitverzögerung a
priori auf Kosten einer optimalen Busleistungsfähigkeit bestimmt werden.
-
Sobald
die Knoten A und B Mitteilungen ausgetauscht haben, die anzeigen,
daß Knoten
B der Vorgänger
von Knoten A ist, kann man feststellen, daß der Link gerichtet ist. Knoten
A kennzeichnet in der Logik seinen Port, an den Link 52 angeschlossen ist,
als Vorgängerport
(er unterhält
sich mit einem Vorgängerknoten),
und Knoten B kennzeichnet seinen Port, an den Link 52 angeschlossen
ist, als Nachfolgerport (er unterhält sich mit einem Nachfolgerknoten).
Es ist wichtig, die Kennzeichnungen, die Ports erhalten, zu bewahren,
da die Verfahren, die unten beschrieben werden sollen, sich auf
die Kennzeichnungen beziehen, die den Knoten und Ports zu einer
gegebenen Zeit zugewiesen werden. Eine graphische Kurzbezeichnung
wird in 3(d) illustriert, in der der
Richtungspfeil 58 anzeigt, daß Knoten B als Vorgänger von
Knoten A eingerichtet ist und der Link gerichtet ist.
-
Richtungsbestimmungen
-
Wenn
man nun auf 3(a) und auf die Prozeßfiguren 6(a)-6(e) zurückverweist,
so wird nun der Prozeß der
Richtungszuteilung für
die gesamte beliebige Topologie beschrieben. Es ist notwendig, ein
paar weitere anschauliche Definitionen einzuführen, die beim Erläutern des
Topologietransformationsprozesses helfen sollen. Erstens ist ein "Blattknoten" als Knoten mit nur
einem angeschlossenen Port definiert. Ein Knoten erkennt seinen
Status als Blattknoten, sobald er nach dem Einschalten oder einer
anderen Businitialisierung initia lisiert wird. Ein "Zweigknoten" ist ein Knoten,
der mindesten zwei angeschlossene Ports hat. Ein Zweigknoten hat
das YAMP-Signal über alle
angeschlossenen Ports außer einem
empfangen und hat es bestätigt. Über den übrigen Port
hat ein Zweigknoten das YAMP-Signal gesendet und so festgestellt,
daß er
einen Vorgängerknoten
hat. Ein Knoten erreicht keinen Zweigknotenstatus, ehe er nicht
festgestellt hat, daß er
einen Vorgängerknoten
hat (ein Knoten kann nur einen Vorgängerknoten haben) und alle
seine anderen Ports mit Nachfolgerknoten verbunden sind. Vor dem
Erreichen des Zweigknotenstatus wird ein Knoten als "Zyklusknoten" angesehen, weil
die Möglichkeit
besteht, bis er als Zweigknoten festgestellt wird, daß der Knoten
Teil eines Zyklus ist, was das Feststellen einer Richtung unmöglich macht.
-
Die
Graphentransformationsprozedur beginnt in Schritt 60 bei
Businitialisierung (durch Einschalten oder initiiert); zu diesem
Zeitpunkt erkennen sich die Blattknoten in der beliebigen Topologie
in Schritt 61 als Blattknoten und kennzeichnen sich in Schritt 68 als
Blattknoten, indem sie in Entscheidungsrhombus 66 feststellen,
daß sie
nur einen angeschlossenen Port haben. In dem Graphen, der in 3(a) dargestellt wird, sind die Knoten 33, 35, 36 und 37 Blattknoten,
die nach der Initialisierung in Schritt 69 jeweils das
YAMP-Signal über
ihren einzigen angeschlossenen Port an ihren benachbarten Knoten
senden. Nachdem sie diese Signale erhalten haben, senden die Knoten
die YAMC-Signale in Schritt 70 zurück an die Blattknoten und stellen
damit die Richtung für
den gegebenen Link zwischen den jeweiligen Vorgänger-Nachfolger-Paaren fest,
wenn die YAMCA-Kommunikation abgeschlossen ist. In Schritt 71 kennzeichnet
jeder Blattknoten seinen angeschlossenen Port als Vorgängerport,
und jeder empfangende Port auf dem Vorgängerport wird als Nachfolgerport
gekennzeichnet.
-
Die
Knoten auf dem Graphen, die zu Anfang keine Blattknoten sind, werden
zu Anfang als "Zyklusknoten" aus dem Grund angesehen,
der oben beschrieben wird, und fahren gemäß der Zyklusknotenprozedur 63 fort.
Jeder Zyklusknoten, bei dem alle seiner angeschlossenen Ports außer einem
als Nachfolgerports gekennzeichnet sind, sendet dann in Schritt 85 das
YAMP-Signal über
seinen restlichen, nicht gekennzeichneten Port. Wenn diese Richtung für den Link
festgestellt ist, wird der Zyklusknoten als Zweigknoten gekennzeichnet.
Nachdem also Blattknoten 37 feststellt, daß Knoten 34 sein
Vorgängerknoten
ist, hat Knoten 34 nur einen nicht gekennzeichneten Port
(nachdem er die Linkverbindung zu Knoten 37 als über einen
Vorgängerport
gekennzeichnet hat), sendet Knoten 34 das YAMP-Signal an Knoten 31,
was dazu führt,
daß Knoten 34 zu
einem Zweigknoten wird. Analog sendet Knoten 31 das YAMP-Signal
an Knoten 30, sobald Knoten 31 festgestellt hat,
daß die
Knoten 33 und 34 seine Nachfolger sind. Wenn ein
Knoten in Entscheidungsrhombus 75 das YAMP-Signal über alle
seine Ports erhalten hat, wird der Knoten zum Wurzelknoten. Nachdem Knoten 30 die
YAMP-Signale von
den Knoten 31 und 32 in 3(a) erhalten
hat, ändert
sich seine Kennzeichnung von einem Zyklusknoten zum Wurzelknoten.
Im Graphen von 3(a) ist es nicht notwendigerweise
der Fall, daß Knoten 30 zur
Wurzel wird. Wenn einige der Links im Baum für lange Ausbreitungsverzögerungen
sorgen, könnte
Knoten 30 ein YAMP-Signal auf einem Port erhalten haben
und dann ein YAMP-Signal über
einen anderen Port gesendet haben. Jeder der Knoten kann zur Wurzel werden,
selbst ein Blatt, wobei die Wurzeleigenschaft Vorrang hat. 3(e) zeigt den sich ergebenden gerichteten Graphen
als Reaktion auf die kommunizierten Signale, die in 3(a) gezeigt werden, wobei jeder Knoten gekennzeichnet
ist und die Richtungen durch schwarze Pfeile angezeigt werden.
-
Wurzelkonflikt
-
Unter
bestimmten Umständen
kann eine Situation mit einem Wurzelkonflikt entstehen. Dies kann
zum Beispiel dann passieren, wenn die beliebige Topologie eine symmetrische
Anordnung aufweist, wie die in 4 gezeigte.
In dem beliebigen Graphen, der in 4 illustriert
wird, haben die Knoten 160 und 161 jeweils festgestellt,
daß es
ein Vorgänger
zu den zwei Blattknoten ist, mit dem er verbunden ist. Dann hat
jeder nahezu zur selben Zeit das YAMP-Signal an den anderen gesendet.
-
Die
Wurzelkonfliktsituation wird von beiden Knoten, die am Entscheidungsrhombus 86 beteiligt sind,
erkannt. Jeder Knoten erhält
ein Signal, das ihn als Vorgängerknoten
bezeichnet, während
er dasselbe Signal durch denselben Port gesendet hat. Jeder der
am Konflikt beteiligten Knoten antwortet dem anderen in Schritt 91 mit
dem YAMC-Signal, das es jedem ermöglicht, den "Entscheidungszeitabschnitt" festzustellen, der
gleich dem Doppelten der Ausbreitungszeit zwischen den Knoten ist.
-
Die
Wurzelkonfliktsituation wird durch Nutzen eines Zufallsentscheidungsmechanismus
aufgelöst,
der in jeder Zuteilungsstatus-Maschinenlogik 11 jedes Knotens
enthalten ist. Für
jeden "Entscheidungszeitabschnitt", der vergeht, entscheidet
jeder Knoten in Schritt 92 zufällig (mit einer 50 %igen Wahrscheinlichkeit),
ob er das YAMP-Signal an den anderen nochmals senden soll. Innerhalb
einer endlichen Zahl von Zyklen wird ein Knoten fast sicher entscheiden,
den anderen als Vorgängerknoten
zu bezeichnen, ohne daß der
andere erwidert. Derjenige, der als Vorgängerknoten bezeichnet wird,
wird in Schritt 95 zur Wurzel. Alternativ können vorgegebene Auswahlkriterienwerte
den Knoten zugewiesen werden, wobei der größere oder kleinere bestimmt,
welcher in einem Konfliktfall dominiert. Die dynamische Bestimmung
des "Entscheidungszeitabschnitts" ist nicht entscheidend
bei der Implementierung der vorliegenden Erfindung, obwohl er eine
optimale Leistungsfähigkeit
bietet. Als Alternative kann ein a priori definierter "Entscheidungszeitabschnitt" verwendet werden,
solange er größer als
die Linkausbreitung, die in einem beliebigen Bus auftreten kann,
bei Verwendung dieses Algorithmus im schlimmsten Fall ist. Dasselbe
Verfahren, das zum Auflösen
von Wurzelkonflikten verwendet wird, wird auch zum Auflösen anderer
Konfliktereignisse verwendet, die weiter unten beschrieben werden
sollen.
-
Wurzelzuteilung
-
Wie
oben beschrieben, ist das Ergebnis des Graphentransformationsprozesses
die Zuteilung des Wurzelattributs an einen einzigen Knoten im Graphen.
Der Wurzelknoten hat die letztendliche Entscheidung im Buszuteilungsschema,
das beschrieben werden soll, und kann daher auf den Bus mit maximaler
Priorität
ohne Verwendung spezieller Prioritätszeitlücken zugreifen. Es ist oft
wünschenswert, die
Wurzeleigenschaft einem vorgegebenen Knoten zuweisen zu können, entweder
wenn er erzeugt wird, oder dynamisch (während der Laufzeit), um ein
gegebenes System zu optimieren. Ein gegebener Bus kann einen Knoten
umfassen, der isochrone Datenübertragung
erfordert. Isochrone Daten sind Daten, die zu einer gegebenen Zeit
gesendet werden müssen,
um von Wert zu sein. Musik von einer CD muß zum Beispiel in der Reihenfolge übertragen
und ausgegeben werden, in der sie gehört werden soll, und ohne wesentliche
Verzögerungen,
anders als Datendateien, die stückweise
und nicht notwendigerweise der Reihe nach übertragen werden können.
-
Knoten
können
in drei Kategorien in Bezug auf die Wurzelbezeichnungen klassifiziert
werden. Diese Bezeichnungen können
während
der Herstellung durch Festverdrahtung der Bezeichnung in das Gerät, Programmieren
der Zuteilungszustands-Maschinenlogik
oder durch höhere
Programmierung eingebracht werden, wobei die Entscheidung getroffen
wird, dann ein erneutes Booten ausgelöst wird, wobei die Entscheidung
bewahrt wird. Die drei Bezeichnungen, die einem Knoten in Bezug
auf die Bezeichnung als Wurzel zugewiesen werden können, sind:
Knoten, die keine Wurzel sein wollen, Knoten, die Wurzel sein können (sollten),
und Knoten, die Wurzel sein müssen.
Diese Bezeichnungen werden in den Schritten 81 und 83 geprüft. Ein
Knoten, der der ersten Kategorie zugewiesen ist, beginnt mit der Graphentransformationsprozedur,
sobald er die Anweisung dafür
erhält.
Daran schließt
sich sofort der Abschluß der
Businitialisierungsprozedur an. Ein Knoten aus der zweiten Kategorie
verzögert
den Beginn der Graphentransformationsprozedur für einen vorgegebenen Zeitabschnitt,
nachdem er die Anweisung für
den Beginn der Prozedur in Schritt 84 erhielt. Durch diese
Verzögerung
erhöht
der Knoten seine Chance, zur Wurzel zu werden. (Auf Grund der Verzögerung ist
es wahrscheinlicher, daß die
YAMP-Signale sich bis zu ihm ausbreiten.) Trotz der hinzugefügten Verzögerung ist
es immer noch möglich,
daß ein
Knoten vom Typ "kann
Wurzel werden" im
Endeffekt nicht als Wurzel be zeichnet wird. Dies hängt von der
gegebenen Topologie und den Ausbreitungsverzögerungen der Mitteilungen ab.
Die Größe der Verzögerung kann
während
des Entwurfs so definiert werden, daß sie größer als eine vernünftige Ausbreitungsverzögerung durch
einen recht komplexen Graphen im schlimmsten Fall ist.
-
Ein
Knoten aus der dritten Kategorie der Möglichkeiten der Wurzelbezeichnung
kann nur die Tatsache anerkennen, daß er die Wurzel sein muß, nachdem
der Graph bereits transformiert wurde und alle Knoten sich selbst
identifiziert haben. Die Zuteilungszustands-Maschinenlogik kann
diese Feststellung vornehmen oder Software, die auf dem Hostsystem
läuft.
Wenn dies auftritt, vereinbart der Knoten, der Wurzel sein muß, mit allen
anderen Knoten auf dem Bus, daß er
die einzige Wurzel sein wird, und startet den Graphentransformationsprozeß neu, indem
er ein preemptives Businitialisierungssignal aussendet, das weiter
unten beschrieben wird. Der Knoten wartet dann in Schritt 82,
bis er zur Wurzel wird, und beteiligt sich nicht an der Graphentransformation,
bis er das YAMP-Signal an allen seinen Ports erhalten hat, was seine
Ernennung zur Wurzel erzwingt.
-
Sobald
die Wurzel festgelegt wurde, kann man sagen, daß der Graph gerichtet ist.
Es gibt eine definierte Beziehung, die zwischen allen benachbarten
Knoten im Graphen besteht.
-
Zyklusauflösung
-
Die
Prozeduren, die oben zur Richtungszuteilung eines Graphen beschrieben
werden, funktionieren nur für
einen azyklischen Graphen. Wenn es Zyklen in der beliebigen Topologie
gibt, müssen
sie durch die Prozedur, beginnend bei Schritt 80, aufgebrochen
werden. Das Vorhandensein eines Zyklus wird in Schritt 79 festgestellt,
wenn nach dem Verstreichen einer vorgegebenen Zeitüberwachungsdauer
ein Knoten immer noch als Zyklusknoten und nicht als Blatt, Zweig
oder Wurzel gekennzeichnet ist. Die Zeitnahme für die "Zyklusfeststellung" beginnt unmittelbar nach dem Ende der
Businitialisierungsfunktion. Der Zeitüberwachungsabschnitt braucht nicht
länger
zu sein als die Dauer des Graphentransformationsprozesses im ungünstigsten Fall
(Hinzufügen
von Verzögerungszeit
für einen
Knoten vom Typ "kann
Wurzel werden" und
ein mögliches
Wurzelkonfliktereignis).
-
Das
Zeitablaufereignis "Zyklusfeststellung" muß nicht
synchron für
alle Knoten eines Graphs auftreten, da die Austauschvorgänge aller
Mitteilungen asynchrone Ereignisse sind. Daher ist es für einen Knoten,
der sein Zeitablaufereignis "Zyklusfeststellung" noch nicht erreicht
hat, möglich,
eine Mitteilung zu erhalten, die anzeigt, daß die Zyklusauflösung andauert.
Solch ein Knoten wird sein Zeitablaufintervall Zyklusfeststellung
beenden und den entsprechenden Zyklusauflösungsprozeß beginnen.
-
Das
Verfahren der Zyklusauflösung
gemäß der vorliegenden
Erfindung erfordert den Eingriff des Nutzers der zusammengestellten
Kollektion von Knoten. Wenn ein Knoten auf den Zeitablauf "Zyklusfeststellung" trifft, kann der
Systemnutzer in Schritt 100 von 6(a) durch
ein Ausgabegerät
davon benachrichtigt werden, daß ein
Zyklus vorhanden ist und welche Knoten daran beteiligt sind. Der
Nutzer wird dann angewiesen, Links zu unterbrechen, um Zyklen, die
vorhanden sind, zu beseitigen. Der Nutzer gibt dann die Kontrolle
an die Graphentransformationsprozedur zurück.
-
Sobald
alle Schleifen aufgebrochen sind und keine Zyklen übrig bleiben,
kann die Prozedur zur Umformung des Graphen, wie in früheren Abschnitten
beschrieben, fortfahren, bis der gesamte Graph sowohl azyklisch
als auch gerichtet ist.
-
Eindeutige physische Adreßzuteilung
-
Sobald
ein gerichteter azyklischer Graph aus der originalen beliebigen
Topologie erstellt worden ist, ist es möglich, jedem Knoten auf dem
Graphen eindeutige physische Adressen zuzuweisen. Dieser Prozess
beginnt bei allen Blattknoten, die den Bus anfordern, durch Senden
des Busanforderungs-(BR)-Signals über ihre
einzelnen angeschlossenen Ports. Der Vorgängerknoten wartet, wenn er das
Signal erhält,
bis er das BR-Signal
von allen seinen Nachfolgerports erhalten hat, und sendet dann das
BR-Signal an seinen Vorgänger.
Die BR-Signale breiten sich durch den Graphen aus, bis die Wurzel das
BR-Signal von allen
seinen Nachfolgern erhalten hat. Sobald die Wurzel eine Busanforderung über alle ihre
Nachfolgerports erhalten hat, wird sie eine Entscheidung über die
Zuteilung des Busses über
einen Port treffen und das Busablehnungs-(BD)-Signal über alle übrigen Nachfolgerports senden.
Das Verfahren zur Auswahl, welche Busanforderung angenommen wird,
kann eine a priori-Entscheidung sein, wie die oben beschriebene,
wo zum Beispiel Ports von links nach rechts oder auf der Basis der
Portnumerierung ausgewählt
werden usw. Das Busgewährungs-(BG)-Signal wird
von der Wurzel an den anfordernden Nachfolger gesendet. Wenn der
anfordernde Nachfolger selbst ein Vorgängerknoten ist, der die Busanforderung
von einem seiner Nachfolger gesendet hat, wird er das Busablehnungssignal über alle seine
Nachfolgerports außer
einem in derselben vorgegebenen Weise senden, wie oben beschrieben. Schließlich empfängt ein
Blattknoten das Busgewährungssignal,
auf welches er mit einem Busgewährungsquittierungs-(BGA)-Signal
antwortet, welches zurück
zum Wurzelknoten gesendet wird. Das Senden der BD- und BGA-Signale
dient dazu, die Kommunikationslinks auszurichten, was für den Fall
von Halbduplex-Kommunikationskanälen
notwendig sein kann. Alle abgelehnten Knoten warten dann auf Aktivität durch
den Knoten, der schließlich
das BG-Signal erhält.
-
Der
Knoten, dem letztendlich der Zugriff auf den Bus gewährt wird,
sendet ein Adreßzuteilungspaket.
Der Knoten sendet dieses Paket auf dem Bus, und dieses wird von
allen anderen Knoten empfangen, von denen jeder die Zahl der Adreßpakete
zählt, die
empfangen werden. Das gesendete Adreßpaket kann beliebige Informationen
enthalten. Eine eindeutige physische Adresse eines Knotens basiert
auf der Zahl der Adreßpakete,
die ein Knoten gezählt
hat, bevor er ein Adreßpaket
sendet. Daher erhalten keine zwei Knoten dieselbe physische Adresse,
trotzdem sie keine Adreßinformationen
haben, die im voraus zugewiesen werden. Die tatsächliche Zusammensetzung des
Adreßpakets
ist beliebig und kann irgendein Bitstrom sein, der vom System effizient
genutzt werden kann. Nach dem Senden des physischen Adreßzuteilungspakets
sendet ein Knoten ein "Nachfolger-ID
Ab geschlossen"-(CIC)-Signal.
Der Vorgängerknoten
sendet, wenn er dies über
einen Nachfolgerport empfängt,
das "Nachfolgeridentifizierung
Abgeschlossen Bestätigungs"-(CICA)-Signal und kennzeichnet
den Port als identifizierten Nachfolgerport. Als Reaktion auf die
nächste
BR-Signalsendung wählt
der Vorgänger
des Knotens, der sich gerade selbst identifiziert hat, seinen nächsten Nachfolger
zum Senden des physischen Adreßpakets
aus. Sobald alle Nachfolgerknoten eines Vorgängerknotens sich selbst identifiziert
haben, fordert der Vorgängerknoten
den Bus an und, wenn der Bus gewährt
wird, sendet er sein physisches Adreßzuteilungspaket. Diese Prozedur
setzt sich fort, wobei die vorgegebenen Auswahlkriterien befolgt
werden, bis alle Knoten eine eindeutige physische Adreßzuteilung
durch Zählen
feststellen. 5 illustriert den Graphen von 3(e), bei dem ein vorgegebenes Auswahlkriterium "von links nach rechts" implementiert wird.
Die Knoten sind eindeutig zugewiesene Adressen, wobei Knoten 33 die
erste Adresse erhält, und
wie beschrieben, der Wurzelknoten 30 die achte und letzte
Adresse erhält.
-
Wenn
diese Prozedur abgeschlossen ist, hat jeder Knoten im Graphen eine
eindeutige physische Adresse, die nicht im voraus bestimmt werden
muß und
die für
das Systemmanagement oder andere Zwecke genutzt werden kann.
-
Knoteneigenidentifizierung
-
Der
Prozess der Knoteneigenidentifizierung folgt im wesentlichen derselben
Routine wie die Zuteilungsprozedur für physische Adressen, die oben beschrieben
wird. Da jeder Knoten sein physisches Adreßzuteilungspaket sendet, kann
dieses Paket weitere Informationen umfassen, wie zum Beispiel die
Identifikation des physischen Gerätes, welche die Identifikation
des lokalen Hosts in Bezug auf den Knoten, wie viel Energie er erfordert
und zum Beispiel, ob er ein Attribut "weiches Einschalten" unterstützt, usw. umfaßt. Tatsächlich können die
Informationen über
die Knoteneigenidentifizierung als physisches Adreßzuteilungspaket
dienen, da überhaupt die
Praxis des Sen dens von Informationen die Basis für das Zählen zum Gewinnen eindeutiger
physischer Adressen liefert.
-
Mit
Bezug auf das Knoteneigenidentifizierungspaket brauchen diejenigen
Knoten, die von der Art des ankündigenden
Knotens betroffen sind, überhaupt
nicht auf die speziellen Informationen zu "lauschen", die den Knoten betreffen. Diese Prozedur setzt
sich wie oben fort, bis alle Knoten ihre Informationen zur Knoteneigenidentifizierung
gesendet haben.
-
Topologieabbildung
-
Das
Verfahren der Topologieabbildung verfolgt dieselbe Richtung wie
die physische Adreßzuteilung
und Knoteneigenidentifizierung. Diese Prozedur veranlaßt also
jeden Knoten, wenn er den Prozess der Adreßzuteilung oder Knoteneigenidentifizierung
durchläuft,
weiter Informationen bezüglich
aller seiner Ports zu senden, wie zum Beispiel die Zahl der Nachfolgerports,
die der hat, und ob er Ports deaktiviert hat oder nicht. In Bezug
auf deaktivierte Ports kann es wünschenswert
sein, ein Kommunikationsprotokoll zwischen Ports, die deaktivieren,
zu implementieren, so daß sie
feststellen können,
von wem sie deaktiviert werden. Wenn also ein Port sich als deaktivierten
Port identifiziert, gibt er einen Kennzeichner an, der seine eigne
ID wie auch die Port-ID anzeigt, von der er deaktiviert wurde.
-
Durch
Zusammenstellen aller Topologieinformationen über alle Ports, die während der
Topologieabbildungsprozedur empfangen wurden, kann der Busserver,
Host oder eine Anwendung auf Softwareniveau logisch die aufgelöste Bustopologie
rekonstruieren. Dies ist für
viele Zwecke nützlich,
einschließlich
für die
Implementierung von Redundanz, bei der vorher deaktivierte Links,
wenn ein Link unerwartet ausfällt,
dazu dienen können,
den Verlust von Kommunikationskanälen für Knoten zu verhüten.
-
Gerechte Buszugangszuteilung
-
Nach
dem Abschluß der
Routinen zur Topologieabbildung, Knoteneigenidentifizierung oder
physischen Adreßzuteilung
kann der Bus als betriebsbereit angesehen werden. Ein Zuteilungsschema,
das gemäß der vorliegenden
Erfindung implementiert ist, ist das des gerechten Buszugangs. Wenn
ein Knoten Zugang zum Bus wünscht,
sendet er über
seinen Vorgängerport
(wenn er nicht die Wurzel ist) ein Busanforderungs-(BR)-Signal.
Der Vorgänger
sendet beim Empfangen des BR-Signals von einem Nachfolger ein Busablehnungs-(BD)-Signal über alle
seine anderen Nachfolgerports. Der Vorgänger sendet dann das BR-Signal
nach oben über
seinen Vorgänger,
bis das Signal die Wurzel erreicht. Die Wurzel gibt ein Busgewährungs-(BG)-Signal
als Reaktion auf das erste BR-Signal aus, das sie empfängt, und sendet
das BD-Signal über
alle seine anderen Nachfolgerports, die es nach unter weiterleiten,
wodurch die Links ausgerichtet werden. Das BG-Signal breitet sich
nach unten durch den Graphen aus, bis es den anfordernden Knoten
erreicht, der dann das Busbestätigungs-(BA)-Signal
sendet, gefolgt von dem Paket mit Informationen, die der Knoten
auf den Bus senden muß.
Wenn das Paket abgeschlossen ist, kehren alle Knoten zum Leerlaufzustand
zurück
oder nehmen diesen ein.
-
Falls
die Wurzel nahezu gleichzeitige Anforderungen für den Bus erhält, werden
die vorgegebenen Auswahlkriterien für den Wurzelknoten für die Gewährung des
Buszugangs an einen der Knoten verwendet. Dies können dieselben vorgegebenen Prioritätsauswahlkriterien
sein wie die oben beschriebenen.
-
Ein
weiterer Aspekt der gerechten Buszugangszuteilung ist, daß ein Vorgängerknoten
Vorrang gegenüber
seinen Nachfolgern hat. Wenn also ein Vorgängerknoten den Bus benötigt, sendet
er das BD-Signal über
alle seine Nachfolgerports und sendet dann das BD-Signal nach oben
zur Wurzel hin. Ein potentielles Problem bei diesem Mechanismus ist,
daß ein
Nachfolgerknoten Schwierigkeiten haben kann, einen angemessenen
Buszugang zu erhalten, wenn der Vorgänger eine große Menge
an Informationen zu senden hat. Daher wird ein Lückensystem eingeführt, das
in großem
Umfang verwendet wird und im Fachgebiet bekannt ist. Nachdem ein
Knoten den Bus genutzt hat, muß der
Knoten für
eine Unterbrechungszeit warten, bevor er den Bus wieder anfordern
kann. Dies gibt jedem Knoten auf dem Bus, un abhängig von seiner topologischen
Einordnung auf dem Bus, die gleiche Chance, Zugang zum Bus gewährt zu bekommen.
-
Um
ein gerechtes Zuteilungsprotokoll zu garantieren, muß die Länge der
Unterbrechung größer als
die Signalausbreitungsverzögerung
durch den Bus im ungünstigsten
Fall sein. Der Unterbrechungswert kann vorgegeben und in der Knotenlogik
fest verdrahtet sein; solch eine Herangehensweise führt in allen
Fällen,
außer
im extremsten Fall, zu einer nicht optimalen Nutzung des Busses.
Die Topologieabbildungsfähigkeit,
zusammen mit der Messung der Ausbreitungsverzögerung zwischen benachbarten Knoten,
die während
der Graphentransformationsphase ausgeführt wird, ermöglicht die
Berechnung einer optimalen gerechten Unterbrechung, durch die die
Busleistungsfähigkeit
für eine
beliebige spezielle Implementierung maximiert wird.
-
Prioritätsbuszuteilung
-
Bei
dem Buszuteilungsschema, das gemäß der obigen
gerechten Buszugangszuteilung implementiert wird, kann es wünschenswert
sein, daß die Wurzel
immer Buspriorität
hat. Wenn dies implementiert wird, kann der Wurzelknoten jederzeit
sich selbst den Bus gewähren.
Dies erfolgt dadurch, daß zuerst das
BD-Signal nach unten durch alle Knoten im Graphen gesendet wird.
Der Prioritätsbuszugang
ist für die
Wurzel sehr nützlich
für den
Fall, daß der
Wurzelknoten eine isochrone Datenübertragung ausführen soll.
-
Token-Passing-Bus-Zuteilung
-
Als
Alternative zu den gerechten und Prioritätsbuszugangszuteilungsschemata,
die oben beschrieben werden, kann die vorliegende Erfindung bei
der Implementierung eines Token-Passing-Buszuteilungsschemas
genutzt werden. Bildlich gesprochen, bezieht sich der Token-Passing-Buszugang
auf die Vorstellung, daß ein
Knoten auf einem Bus kommunizieren kann, wenn er im Besitz eines
Tokens ist, das zwischen den Knoten weitergegeben wird. Das Token
wird von Knoten zu Knoten zyklisch so weitergegeben, daß jeder
Knoten den Bus an einem vor gegebenen Punkt im Zyklus empfängt. Token-Passing wird
in der vorliegenden Erfindung implementiert, indem dieselbe Verfahrensweise
verfolgt wird wie bei der Zuteilungsprozedur für physische Adressen, die oben
beschrieben wird. Die vorgegebenen Auswahlmechanismen, die implementiert
sind, werden zum Auswählen
der Reihenfolge verwendet, in der das Token von Knoten zu Knoten
weitergegeben wird. Diese Reihenfolge ähnelt der Reihenfolge, wie
sie in 5 gezeigt, die die Reihenfolge der eindeutigen Adreßzuteilung
bestimmt. Jeder Knoten sendet, wenn ihm das Token zugewiesen wird,
sein Informationspaket auf dem Bus, während die übrigen Knoten lauschen. Der
Knoten gibt dann das Token auf der Basis des vorgegebenen Folgesteuerungsverfahrens an
den nächsten
logischen Knoten weiter, wie oben beschrieben.
-
Preemptive Businitialisierung
-
Ein
wichtiges Merkmal, das gemäß der vorliegenden
Erfindung implementiert werden kann, ist der Begriff der preemptiven
Businitialisierung. Die Statusmaschinenlogik, die in jedem Knoten
enthalten ist, kann ein Businitialisierungs-(BI)-Signal auslösen, das bei bestimmten Bedingungen
vom Knoten über alle
seine Ports ausgebreitet werden soll. Wenn ein Knoten festgestellt
hat, daß es
notwendig ist, einen Businitialisierungszustand zu signalisieren,
sendet er das BI-Signal
durch alle seine Ports für
eine Dauer, die garantiert, daß alle
benachbarten Knoten es erhalten und dann freigegeben haben. Ein
Knoten tritt dann in die einleitenden Prozeduren ein, die dann zum
Graphentransformationsprozeß in
den oben beschriebenen Prozeduren führen.
-
Es
gibt eine Reihe von Situationen, die es notwendig oder wünschenswert
machen, eine preemptive Businitialisierung auszulösen. Erstens kann
dies eine Knotenantwort auf einen unvorhergesehenen Fehler sein.
Außerdem
kann auf dem Hostniveau festgestellt werden, daß ein anderer Knoten das Wurzelattribut
erhalten sollte, zum Beispiel ein Knoten für die isochrone Datenübertragung.
-
Diese
Zuteilung wird während
der ganzen Businitialisierungsprozedur beibehalten, wodurch bewirkt
wird, daß der
gewünschte
Knoten während
der Transformationsprozedur wartet, bis er die Wurzelkennzeichnung
erhält.
Ein weiterer Zustand, der zu einer preemptiven Businitialisierung
führt,
kann das Aufbrechen eines Links sein; in diesem Fall kann es notwendig
sein, einen neuen azyklischen gerichteten Graphen für die angeschlossenen
Knoten zu berechnen. Zum Schluß eine
wichtige Situation, bei der eine preemptive Businitialisierung auftreten
sollte, wenn ein Gerät
dem Netz hinzugefügt
wird, was als Anschluß von
Peripheriegeräten
unter Spannung bezeichnet wird. Der Port, an den ein neues Gerät angeschlossen
wird, stellt das Vorhandensein eines neuen Knotens fest und löst eine
Businitialisierung aus, die für
den Nutzer des Systems transparent ist, die aber zum Beispiel das
Hinzufügen
oder Entfernen von Peripheriegeräten
ermöglicht,
ohne an- und wieder anschalten zu müssen. Es wird ein neuer azyklischer
gerichteter Graph berechnet, der den hinzugefügten Knoten einschließt. Es ist
möglich,
daß es beim
Entfernen bestimmter Knoten nicht nötig ist, eine Businitialisierung
auszulösen;
wenn zum Beispiel ein Blattknoten entfernt wird, schadet dies dem Netz
nicht. Wenn jedoch ein Zweigknoten vom arbeitenden Bus abgeklemmt
wird, ist es wahrscheinlich notwendig, den Graph neu zu konfigurieren.
-
Obwohl
die vorliegende Erfindung in Form von bevorzugten Ausführungsformen
beschrieben wurde, wird für
den Fachmann ersichtlich, daß verschiedene
Modifizierungen und Abwandlungen vorgenommen werden können. Die
Erfindung sollte daher in Form der Ansprüche, die folgen, bewertet werden.