-
HINTERGRUND DER ERFINDUNG
-
Hiermit zusammenhänge Anmeldungen
-
Diese Anmeldung hängt zusammen mit dem US-Patent
5,630,173 mit dem Titel „Method
and Apparatus for Arbitrating on an Acyclic Directed Graph", welches an den
Zessionar der vorliegenden Anmeldung übertragen und gleichzeitig
hiermit angemeldet wurde.
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich auf Computersysteme. Insbesondere bezieht sich die vorliegende
Erfindung auf ein Verfahren und eine Einrichtung für die Einrichtung
und die Nutzung eines Kommunikationsschemas zwischen einer Mehrzahl von
beliebig zusammengesetzten Elementen eines Computersystems.
-
Hintergrund
-
Komponenten innerhalb eines gegebenen Computersystems
benötigen
die Fähigkeit,
Signale untereinander zu übertragen.
Bei sehr einfachen Systemen ist es möglich, daß jedes Element des Systems
direkt mit allen anderen Teilen des Systems verdrahtet ist. In der
Realität
jedoch entwickelten Computer-Architekten vor langer Zeit das Konzept
eines Kommunikationsbusses, um Computer erweiterungsfähig zu machen
und eine unbekannte Anzahl von Systemteilen aufzunehmen.
-
Ein Bus ist ein Kommunikationspfad,
wie beispielsweise ein Draht oder Drähte, der durch das gesamte
Computersystem verläuft.
Jede Komponente des Systems muß nur
an den Bus angeschlossen werden, um theoretisch mit jeder der anderen
Komponenten in dem System verbunden zu sein. Natürlich kann nicht jede Komponente
gleichzeitig mit anderen Komponenten kommunizieren, weil es nur
einen einzigen Kommunikationskanal zwischen den Komponenten geben
kann. Bei der Verwen dung eines Kommunikationsbusses ist es erforderlich,
irgendeine Form einer Anordnung für eine gemeinsame Benutzung
aufzubauen, so daß jede
Komponente den Bus verwenden kann, um mit anderen Komponenten in
einer effizienten Weise zu kommunizieren, die keine kritischen Informationen
von einer Komponente hängen
läßt, die
auf den Buszugriff warten. Das Verfahren, mit welchem die Komponenten
an dem Bus den Bus gemeinsam benutzen, wird im Allgemeinen als ein
Bus-Arbitrierungs-Schema bezeichnet.
-
Zusätzlich zu der entscheidenden
Notwendigkeit, das Bus-Arbitrierungs-Schema
zu optimieren, um den Durchlauf wichtiger Informationen zu maximieren,
kann und sollte die physikalische (und logische/elektrische) Konfigurierung
des Busses selbst optimiert werden, um Systemlaufzeiten bei Erhaltung
einer höchstmöglichen
Flexibilität
zu minimieren.
-
Um mit anderen an einen Bus angeschlossenen
Komponenten zu kommunizieren, muß jede Komponente mit Hardware,
wie beispielsweise einer Sende- und Empfangsschaltung ausgestattet
sein, die mit dem für
den Bus implementierten Kommunikationsprotokoll kompatibel ist.
Ein derartiger Kommunikationsstandard wird in dem IEEE Standards Document
P1394 unter dem Titel „High
Performance Serial Bus" beschrieben;
dieses Dokument ist als Anhang A dem vorliegenden Dokument beigefügt. Der in
P1394 beschriebene Standard hat den Zweck, eine preiswerte Verbindung
zwischen Karten auf derselben Bus-Leiterplatte, Karten auf anderen
Bus-Leiterplatten und externen Peripheriegeräten bereitzustellen.
-
Dem Stand der Technik entsprechende
Busse oder Netzwerke benötigten
das wissen darüber, was
wo angeschlossen wurde. Beispielsweise verfügt die Rückseite vieler Computer über spezifische Ports
für spezifische
Peripheriegeräte.
Einige Computer implementieren verschiedene Busse, wie beispielsweise
der Macintosh, welcher einen als ADB bezeichneten Bus für Komponenten
wie Maus und Tastatur und einen SCSI-Bus für andere Peripheriegeräte verwendet.
Diese Bustypen ermöglichen
eine erstklassige Verkettung von Elementen, aber die Verbindungen
weisen eine begrenzte Topologie auf. Andere bekannte Busse/Netzwerke
erfordern, daß die Knoten
des Netzwerks in einem Ring angeordnet sind, eine Schleife, welche
geschlossen sein muß, um
wirksam zu werden. Schließlich
erforderten Stern- oder Speichen-Anordnungen, daß jeder Knoten mit einem zentralen
Master direkt verbunden war. Allen dem Stand der Technik entsprechenden
Systemen fehlt ein gewünschtes
Maß an
Flexibilität.
Das US-Patent 4,845,744 (DeBenedictis) offenbart ein Parallelverarbeitungsnetzwerk,
das in Form von strukturierten virtuellen Bäumen von Verarbeitungsknoten
konfiguriert ist. Die virtuellen Bäume sind Lösungen für zahlreiche mathematische
Probleme.
-
Es wäre wünschenswert und ist daher ein Ziel
der vorliegenden Erfindung, in der Lage zu sein, Elemente eines
Computersystems an einem Bus beliebig zusammenzusetzen, wobei die
beliebige Topologie von dem System in ein funktionierendes System aufgelöst werden
kann, ohne daß eine
vorherbestimmte Anordnung der Komponenten erforderlich ist.
-
ZUSAMMENFASSENDE DARSTELLUNG
DER ERFINDUNG
-
Es ist ein Ziel der vorliegenden
Erfindung, die Funktionalität
des Busses eines Computersystems zu verbessern, in welchem die Knoten
des Busses in einen azyklischen gerichteten Graphen aufgelöst worden
sind.
-
Es ist ebenfalls ein Ziel der vorliegenden
Erfindung, eindeutige Adressen an Knoten auf einem azyklischen gerichteten
Graphen bereitzustellen.
-
Es ist ein weiteres Ziel der vorliegenden
Erfindung, einen Selbstidentifizierungsmechanismus für eine Ansammlung
bzw. Gruppe von Knoten auf einem azyklischen gerichteten Graphen
bereitzustellen.
-
Es ist noch ein weiteres Ziel der
vorliegenden Erfindung, einen Mechanismus für die Abbildung der Topologie
einer Ansammlung von Knoten an einem Bus bereitzustellen, die die
Topologie eines azyklischen gerichteten Graphen aufweist.
-
Es ist noch ein weiteres Ziel der
vorliegenden Erfindung, Verbindungsredundanzinformationen an ein
Host-System für
eine beliebige Ansammlung von Knoten bereitzustellen, die in einen
azyklischen gerichteten Graphen aufgelöst werden.
-
Diese und andere Ziele der vorliegenden
Erfindung werden in einem Computersystem mit einem Bus implementiert,
wobei das Computersystem eine Mehrzahl von Komponenten aufweist,
die durch eine Mehrzahl von Kommunikationsverbindungen miteinander
verbunden sind, wobei die mehreren Komponenten jeweils eine Mehrzahl
von Kommunikationsknoten aufweisen, wobei die Knoten wenigstens
einen Port einer Mehrzahl von Ports aufweisen und Schnittstellen
zu den ihnen zugeordneten Komponenten über eine Kommunikationsverbindung,
welche einen Port eines Knotens mit einem anderen Port eines anderen
Knotens verbindet, bilden, wobei die Knotenverbindungen azyklisch
sind und eingerichtete hierarchische Eltern-Kind- bzw. Vorgänger-Nachfolger-Beziehungen
zwischen sämtlichen
benachbarten Knoten von einem Wurzelknoten bis zu irgendwelchen
Blattknoten bzw. terminalen Knoten hinab aufweisen, wobei ein terminaler
Knoten nur einen Vorgängerknoten
aufweist, wobei sämtliche
dem Wurzelknoten benachbarte Knoten Nachfolgerknoten in Bezug auf
andere benachbarte Knoten sind, wobei der Wurzelknoten als Knoten
definiert ist, der keinen Vorgängerknoten
aufweist, wobei das Verfahren umfaßt:
daß jeder terminale Knoten anfänglich ein „Busanforderung"(BR)-Signal auf den
Bus sendet;
daß jeder
ein BR-Signal empfangende Knoten wartet, bis sämtliche benachbarten Nachfolgerknoten entweder
ein BR-Signal verbreiten
bzw. weiterleiten oder identifiziert sind, und dann das BR-Signal
an einen Vorgängerknoten
verbreitet;
daß der
Wurzelknoten wartet, bis sämtliche
benachbarten Knoten ein BR-Signal verbreiten, und dann ein „Buszutei lung"(BG)-Signal an einen
der benachbarten Knoten verbreitet;
daß das BG-Signal abwärts über die
dazwischenliegenden Knoten verbreitet wird, bis ein Knoten, der ein
BR-Signal initiierte, das BG-Signal empfängt;
dadurch gekennzeichnet,
daß sämtliche
Knoten anfänglich
den Status nicht identifizierter Knoten haben, wobei jeder Port
jedes Knotens ein vorgegebenes Auswahlkriterium hat, das für benachbarte
Knoten eingerichtet ist, die mit diesem Knoten gekoppelt sind, wobei
die Knoten und Kommunikationsverbindungen, wie sie miteinander zusammengeschlossen
sind, einen azyklischen gerichteten Graphen bilden, wobei ein Knoten
als Wurzelknoten gekennzeichnet ist, sämtliche Knoten, die mit nur
einem benachbarten Knoten gekoppelt sind, als terminale Knoten gekennzeichnet
sind und sämtliche
anderen Knoten in dem azyklischen gerichteten Graphen als Zweig-
bzw. Verzweigungsknoten gekennzeichnet sind, wobei das Verfahren
dem Zuweisen eindeutiger Adressen zu den Knoten des azyklischen
gerichteten Graphen dient und ferner umfaßt:
daß die das BR-Signal empfangenden
Knoten Verzweigungsknoten sind;
daß der Wurzelknoten wartet,
bis sämtliche
benachbarten Knoten entweder ein BR-Signal verbreiten oder identifiziert
sind, und dann ein „Buszuteilung"(BG)-Signal an einen
der benachbarten nicht identifizierten Knoten auf der Grundlage
des vorgegebenen Auswahlkriteriums zum Auswählen benachbarter Knoten verbreitet,
wobei das BG-Signal über den
azyklischen gerichteten Graphen abwärts über dazwischenliegende Knoten
auf der Grundlage des vorgegebenen Auswahlkriteriums zum Auswählen benachbarter
Knoten verbreitet wird, bis ein Knoten, der ein BR-Signal initiierte,
das BG-Signal empfängt;
daß der das
BG-Signal empfangende Knoten dann eine Adreßbekanntgabe an alle Knoten
an dem Bus aussendet;
daß jeder
Knoten an dem Bus als eine Zahl zählt, wie viele Adreßbekanntgaben
durch andere Knoten ausgesendet werden;
daß jeder Knoten eine eindeutige
Adresse einstellt, wobei die eindeutige Adresse eine Funktion der
Zahl der durch andere Knoten ausgesendeten Adreßbekanntgaben ist, bis der
Knoten ein BG-Signal empfängt
und nachfolgend eine Adreßbekanntgabe
aussendet, wobei der Knoten dann den Status des Identifiziert-Seins
erlangt;
daß die
obigen Schritte wiederholt werden, bis sämtliche Knoten identifiziert
sind;
wodurch jeder Knoten eine unterschiedliche Anzahl von
Adreßbekanntgaben
durch andere Knoten vor dem Einstellen der eindeutigen den Knoten
identifizierenden Adresse gezählt
hat, womit gesichert wird, daß jeder
Knoten eine eindeutige Adreßzuweisung erlangt.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die Ziele, Merkmale und Vorteile
der vorliegenden Erfindung werden aus der folgenden detaillierten
Beschreibung deutlich, in welcher:
-
1 ein
Blockschaltbild der Hardware-Schicht-Implementierung darstellt,
die gemäß der vorliegenden
Erfindung verwendet wird.
-
2(a)–2(b) eine
beliebig zusammengesetzte Ansammlung von Knoten darstellen, wobei eine
Ansammlung azyklisch ist und die andere mehrere Zyklen umfaßt.
-
3(a) die
beliebig zusammengesetzte Ansammlung von Knoten aus 2(a) zeigt,
die den Graphen-Transformationsprozeß gemäß der vorliegenden Erfindung
durchläuft.
-
3(b)–3(d) alternative
Kommunikationsaustauschvorgänge
zwischen Knoten bei der Implementierung der vorliegenden Erfindung
darstellen.
-
3(e) den
gerichteten Graphen, der aus dem beliebig zusammengesetzten Netzwerk
der Knoten aus 2(a) resultiert, grafisch
darstellt.
-
4 eine
symmetrische Graphenanordnung darstellt, welche die Auflösung einer
Knotenkonkurrenzsituation erfordert.
-
5 einen
gerichteten azyklischen Graphen mit einer gekennzeichneten möglichen
eindeutigen Adreßzuweisungsreihenfolge
darstellt.
-
6(a)–6(a) den
Prozeßablauf
für die
Ausführung
des Graphen-Transformationsverfahrens gemäß dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung darstellt.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Es werden ein Verfahren und eine
Einrichtung für
die Verwendung eines Busses, der eine beliebige Topologie aufweist,
beschrieben. In der folgenden Beschreibung sind viele spezifische
Details dargelegt, wie beispielsweise verschiedene Computerkomponenten,
um ein umfassendes Verständnis der
vorliegenden Erfindung zu gewährleisten.
Einem Fachmann wird jedoch klar sein, dass die vorliegende Erfindung
ohne derartige spezifische Details ausgeführt werden kann. In anderen
Fällen
wurden bekannte Steuerstrukturen und Codierungstechniken nicht im
Detail beschrieben, um die vorliegende Erfindung nicht unnötigerweise
mit anderen Details zu überlagern.
-
In dieser gesamten detaillierten
Beschreibung werden zahlreiche deskriptive Begriffe eingeführt, um
der Beschreibung metaphorische Klarheit zu geben. Es wird beispielsweise
häufig
auf Eltern-Kind- bzw. Vorgänger-Nachfolger-Beziehungen zwischen
den Knoten in einer gegebenen Topologie Bezug genommen. Der Zweck
dessen besteht darin, dem endgültig
aufgelösten
Graphen das Konzept der „Richtung" zu geben. Wie beschrieben
werden wird, wird ein Knoten als der „Wurzel"-Knoten
identifiziert, wenn eine beliebige Topologie auf einen azyklischen gerichteten
Graphen reduziert worden ist.
-
Der Wurzelknoten hat keinen Vorgängerknoten,
alle Knoten, die logisch unmittelbar benachbarte Knoten des Wurzelknotens
sind, sind die Nachfolgerknoten der Wurzel. Die „Baum"-Metapher wird durch die Einbeziehung
von Knoten, die als "Zweige" bzw. „Verzweigungen" und „Blätter" bezeichnet werden, vervollständigt.
-
Obwohl die hierin beschriebene Busarchitektur
unter Bezugnahme auf die Komponenten für einen einzelnen Computer
beschrieben wird, hat sie im Allgemeinen einen weiteren Geltungsbereich.
Die vorliegende Erfindung zum Definieren der Bustopologie kann auf
jede beliebig zusammengesetzte Ansammlung von Knoten angewendet
werden, die wie in einem Netzwerk von Einrichtungen miteinander verbunden
sind. Ein Punkt, der zu beachten ist, ist die Notwendigkeit, einen
Knoten von einer physikalischen Computerkomponente zu unterscheiden.
Jede Komponente, die sich an dem Bus befindet, weist wenigstens
eine mit ihr verknüpfte
Knoten-Bitübertragungsschicht-Steuereinrichtung
auf. Unter bestimmten Umständen
kann eine gegebene Komponente vorteilhaft mit mehreren Knoten ver-
knüpft
werden, aber im Normalfall wird es eine Eins-zu-Eins-Korrespondenz zwischen
Einrichtungen oder Komponenten an dem Bus und den Knoten geben.
-
Es wird jetzt auf 1 Bezug genommen; es wird ein Blockschaltbild
eines Knotens 10 dargestellt. Die physikalische Implementierung
eines Knotens ist ein wenig beliebig. Bei dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung werden die Knoten in Übereinstimmung mit dem Kommunikationsprotokoll
IEEE P1394 High Performance Serial Bus konzipiert, welches als Anhang
A beigefügt
ist. Der Knoten 10 enthält
die Arbitrierungs-Zustandsmaschinenlogik bzw. -Automatenlogik 11.
Diese Arbitrierungs-Automatenlogik beinhaltet die gesamte Logikschaltung
für die
Ausführung
der Methodiken und Algorithmen, die hierin zu beschreiben sind.
Die Schaltung kann ein programmierbares Logik-Array (PLA) aufweisen
oder kann speziell zur Ausführung
der hierin beschriebenen Funktionen konzipiert sein. Wenn die von
der Knotenlogik auszuführenden
Funktionen beschrieben sind, werden Fachleute in der Lage sein,
die vorliegende Erfindung ohne unangemessenes Experimentieren zu
implementieren. Mithilfe seiner Logik implementiert der Knoten das
minimale Arbitrierungs-Protokoll, welches die Businitialisierung,
Baumidentifizierung, Selbstidentifizierung und die Bus-Arbitrierungs-Funktionen
einschließt, welche
alle hierin weiter detailliert zu beschreiben sind.
-
Der in 1 gezeigte
Knoten 10 enthält auch Übertragungs-Multiplexer 12 und 13 und
einen Datensender, Empfänger
und Resynchronisierer 14. Der in 1 gezeigte Knoten ist mit einem lokalen Host 15 gekoppelt.
Der lokale Host 15 kann jede beliebige Einrichtung sein,
welche man an den Bus anschließen
möchte,
wie beispielsweise ein Plattenlaufwerk, eine CPU, eine Tastatur
oder eine beliebige andere Komponente, welche mit anderen Komponenten
in dem System kommunizieren muß.
Der Knoten 10 kommuniziert mit anderen Knoten über Kommunikationsverbindungen.
Eine Verbindung ist eine Verknüpfung
zwischen zwei Ports und unmittelbar auf die Praxis bezogen ist sie
ein Kabelsegment, aber im Allgemeinen kann sie als ein beliebiger
physikalischer Kanal implementiert werden. Eine Verbindung soll
mindestens in der Lage sein, einen Halbduplex-Kommunikationskanal
zwischen den zwei Ports, die sie verbindet, bereitzustellen. Ein
Port ist die Schnittstelle zwischen einem Knoten und einer Verbindung.
Gemäß der vorliegenden
Erfindung muß ein Port über die
Fähigkeit
des Sendens und Empfangens von Daten und der Arbitrierungs-Signalisierung verfügen. Ein
Port muß in
der Lage sein, zu bestimmen, ob er mit einem anderen Port über eine
Verbindung verbunden ist oder nicht. Ein Verfahren zur Erleichterung
dessen besteht darin, daß verbundene Ports
eine Vorspannung über
die Verbindung anlegen, welche von dem Port am anderen Ende der
Verbindung erlaßbar
ist. Wenn folglich ein Port eine angeschlossene Verbindung hat,
welche am anderen Ende nicht mit einem Port verbunden ist, eine
offene Verbindung, bestimmt der Port, daß er kein verbundener Port ist.
In 1 hat der dargestellte
Knoten 10 drei externe Ports 21, 22 und 23 mit
Anschlußverbindungen 17, 18 beziehungsweise
19.
-
Einige der Regeln der Implementierung
für Knoten,
um die vorliegende Erfindung zu implementieren, beinhalten, daß ein Knoten
einen oder mehrere Ports haben kann. Ein Knoten soll in der Lage
sein, Daten an einem beliebigen seiner Ports zu senden und zu empfangen.
Ein Knoten soll in der Lage sein, Daten an einem und nur einem seiner
freigegebenen Ports auf einmal zu empfangen und soll in der Lage sein,
diese Daten an allen verbleibenden freigegebenen Ports wieder zu
senden. Ein Knoten soll in der Lage sein, Signalisierungsnachrichten über alle
seine Ports gleichzeitig und unabhängig zu empfangen und zu senden.
Separate Signalisierungs-Sendeempfänger, Codierer und Decodierer
werden für
jeden Port eines Knotens benötigt.
Ein minimaler Implementierungsknoten benötigt keine lokale Host-Einrichtung.
Beispielsweise kann ein solcher Knoten als eine Kabelerweiterung
funktionieren. Von hier an werden Einrichtungen und lokale Hosts
ignoriert und alle Verweise auf die Bustopologie beziehen sich auf Knoten
und Knotenverbindungen über
verschiedene Ports.
-
Graphentransformation
-
2(a) und 2(b) stellen beliebig zusammengesetzte
Ansammlungen von Knoten dar. Von hier an werden Knoten nur als Kreise
dargestellt, werden aber für
jedes einbezogene Element wie diejenigen betrachtet, die unter Bezugnahme
auf 1 beschrieben wurden.
Man beachte jedoch, daß jeder Knoten
mehr oder weniger als die drei externen Ports aufweisen kann, die
in dieser Figur gezeigt werden. Die dargestellten Linien, die die
Knoten verbinden, sind die Methode, mit welcher Verbindungen gezeigt werden.
Ports sind nicht dargestellt, sind aber implizit die Schnittstelle,
an welcher eine Verbindung und ein Knoten miteinander verbunden
sind.
-
Die hierin zu beschreibende Bus-Arbitrierungs-Methodik
erfordert, daß die
beliebige Topologie in einen azyklischen gerichteten Graphen aufgelöst wird.
Bei einem beliebigen Topologie-Graphen kann eine Ansammlung bzw.
Gruppe von Knoten und Verbindungen einen Zyklus bilden. Ein Zyklus
existiert, wenn es möglich
ist, beim Start von einem spezifischen Knoten in dem Graphen zu
demselben Knoten zurückzukehren,
indem Verbindungen und Knoten durchlaufen werden, ohne eine Verbindung
zweimal zu durchlaufen. 2(a) stellt
einen azyklischen Graphen dar, weil keiner der dargestellten Knoten
in einer Schleife verbunden ist. 2(b) ist
jedoch kein azyklischer Graph, da das Gebiet in der Zeichen-Box 25 eine
Ansammlung von Knoten, 40-47, enthält, welche mehrere Zyklen bilden.
Die zu beschreibende Bus-Arbitrierungs-Methodik erfordert, dass
keine Zyklen vorhanden sind; somit wird hierin ebenfalls weiter
unten ein Verfahren des Anwendereingriffs zur Auflösung von
Zyklen beschrieben.
-
Zusätzlich zu der Anforderung,
daß ein Graph
azyklisch sein muß,
muß er
auch gerichtet sein. Ein gerichteter Graph ist ein Graph, bei welchem
eine hierarchische Anordnung zwischen benachbarten Knoten eingerichtet
worden ist. Anfänglich
gibt es keine eingerichteten Vorgänger-Nachfolger-Beziehungen
zwischen den Knoten. Das heißt beispielsweise,
daß Knoten 31 der „Vorgängerknoten" für Knoten 34 sein
kann, oder daß er
der „Nachfolgerknoten" für Knoten 34 sein
kann. Somit ist es erforderlich, einen gegebenen Graphen mit einer
beliebigen Topologie zu nehmen und ihn in einen azyklischen und
gerichteten Graphen zu transformieren. Die hierin beschriebenen
Verfahren funktionieren bei der Ausführung dieser Transformation
für jede
mögliche
beliebige Topologie, unabhängig
von der Anzahl der Knoten oder von der Art ihrer physikalischen
Verbindung, und unabhängig
von der Signalisierungsverbreitungszeit entlang der Verbindungen.
-
Knotenkommunikation
-
Zu Anfang wird der Prozeß des Transformierens
eines azyklischen Graphen mit einer beliebigen Topologie in einen
direkten Graphen beschrieben. Der Fall, in welchem eine Zyklusauflösung erforderlich
ist, folgt. 3(a) zeigt den beliebigen
Graphen aus 2(a), in welchem die Knoten
und Verbindungen Statuskennzeichnungen haben, und übermittelte Signale
für den
Graphen-Transformationsprozeß zum
Richten des Graphen angezeigt werden. An diesem Punkt ist es aufschlußreich,
die Signalkommunikationen zwischen den Knoten zu beschreiben. 3(b) stellt zwei Knoten 50 und 51 dar
(nachstehend Knoten A beziehungsweise Knoten B genannt), die durch
eine Verbindung 52 gekoppelt sind. Wie beschrieben, ist
die Verbindung der Kommunikationskanal, der die Sendeempfänger-Ports
der jeweiligen Knoten koppelt, wie oben unter Bezugnahme auf 1 beschrieben. Während des
Graphen-Transformationsprozesses wird es für die Knoten erforderlich, Vorgänger-Nachfolger-Beziehungen
mit benachbarten Knoten einzurichten. Zwei Knoten werden als benachbart
bezeichnet, wenn es mindestens eine Verbindung gibt, die zwischen
einem Port des ersten Knotens und einem Port des zweiten Knotens
liegt. In den 3(b)–3(d) wird angenommen,
daß die
aufzulösende
Beziehung die ist, daß der
Knoten B der Vorgängerknoten
von Knoten A ist, und daß es
für die Knoten
zweckmäßig ist,
diese Beziehung einzurichten.
-
Wenn es für Knoten A zweckmäßig wird, Knoten
B als seinen Vorgängerknoten
einzurichten, sendet Knoten A vor dem Einrichten einer Richtung von
seinem Port, mit welchem die Verbindung 52 gekoppelt ist, das Signal „Du bist
mein Vorgänger" (YAMP). Dieser Nachrichteninhalt
kann jede Form annehmen, solange Knoten A weiß, daß er YAMP signalisiert, und
Knoten B in der Lage ist, zu verstehen, daß die empfangene Nachricht
YAMP ist. Wenn das YAMP-Signal 53 von Knoten B empfangen
wird, antwortet Knoten B Knoten A, indem er an Knoten A über Verbindung
52 „Du
bist mein Nachfolger" (YAMC)
sendet. Die Arbitrierungs-Automatenlogik 11 von Knoten
A verfolgt die Zeitverzögerung
zwischen dem Senden des YAMP-Signals 53 und
dem Empfangen des YAMC-Signals 54. Die gemessene Zeit zeigt
die zweifache Verbreitungsverzögerung
zwischen den Knoten A und B an. Bei Empfang des YAMC-Signals antwortet
Knoten A mit einem Signal 55 „Du bist als mein Nachfolger
bestätigt" (YAMCA). Dies verleiht
Knoten B die Fähigkeit,
ebenfalls die Verbreitungszeitverzögerung zwischen den Knoten gleich
der Zeitverzögerung
zwischen dem Senden von YAMC und dem Empfangen von YAMCA zu bestimmen.
Für Halbduplex-Kommunikationsverbindungen
hat die YAMCA-Nachricht
auch den Effekt, den Kommunikationskanal ordnungsgemäß auszurichten.
-
Für
Vollduplex-Kommunikationskanäle
können
die drei logischen Nachrichten YAMP, YAMC und YAMCA alternativ durch
nur zwei Signalsendungen übertragen
werden. In 3(c) wird diese Situation dargestellt,
in welcher Knoten A das YAMP-Signal 56 kontinuierlich anlegt,
bis er das YAMC-Rücksendesignal 57 empfängt. Das
YAMCA-Signal wird logisch an Knoten B gesendet, wenn erfaßt wird,
daß das YAMP-Signal
nicht mehr ankommt.
-
Die Verwendung dieses beschriebenen
dreifachen asynchronen Nachrichtenaustausches stellt einen Mechanismus
bereit, mit welchem beide an dem Nachrichtenaustausch beteiligten
Knoten die Verbreitungszeitverzögerung über die
Verbindung bestimmen können.
Dieser Verzögerungswert
wird bei der Auflösung
von Konkurrenzsituationsereignissen, die hierin ferner zu beschreiben
sind, sowie als normale Bus-Arbitrierung zur Optimierung der Busleistung
verwendet. Die dynamische Extraktion dieses Parameters ist nicht
zwingend vorgeschrieben. Als eine Alternative kann auf Kosten der
optimalen Busleistung eine maximale Verbreitungszeitverzögerung a
priori definiert werden.
-
Wenn Knoten A und B Nachrichten ausgetauscht
haben, die besagen, daß Knoten 8 der
Vorgängerknoten
von Knoten A ist, kann die Verbindung als gerichtet bezeichnet werden.
Innerhalb seiner Logik kennzeichnet Knoten A seinen Port, mit welchem die
Verbindung 52 gekoppelt ist, als einen Vorgängerport
(er spricht mit einem Vorgängerknoten),
und Knoten B kennzeichnet seinen Port, mit welchem die Verbindung
52 gekoppelt ist, als einen Nachfolgerport (er spricht mit einem
Nachfolgerknoten). Es ist wichtig, diese Kennzeichnungen, die die
Ports erhalten, beizubehalten, weil die nachstehende Beschreibung
der Verfahren zu gegebener Zeit anhand der Kennzeichnungen erfolgt,
die den Knoten und Ports zugewiesen wurden. Eine abgekürzte grafische Schreibweise
ist in 3(d) dargestellt, wo der Richtungspfeil 58 anzeigt,
daß der
Knoten B als der Vorgängerknoten
von Knoten A eingerichtet ist, und daß die Verbindung gerichtet
ist.
-
Richtungsbestimmung
-
Es wird erneut auf 3(a) Bezug
genommen; zum Ausführen
von 6(a)–6(e) wird
jetzt der Prozeß des
Richtens der gesamten beliebigen Topologie beschrieben. Es ist notwendig,
noch einige anschauliche Definitionen einzuführen, die die Erläuterung
des Topologie-Transformationsprozesses unterstützen. Erstens, ein „Blatt"-Knoten bzw. terminaler Knoten
wird definiert als ein Knoten mit nur einem verbundenen Port. Ein
Knoten erkennt seinen Status als ein terminaler Knoten, sobald er
nach dem Einschalten oder einer anderen Businitialisierung initialisiert
wird. Ein „Verzweigungs"-Knoten ist ein Knoten, welcher
mindestens zwei verbundene Ports aufweist. Über alle außer einen der verbundenen Ports
wird ein Verzweigungsknoten das YAMP-Signal erhalten und es bestätigt haben. Über seinen
verbleibenden Port hat ein Verzweigungsknoten das YAMP-Signal gesendet
und somit eingerichtet, daß er
einen Vorgängerknoten
hat. Ein Knoten erreicht keinen Verzweigungsstatus, bis er eingerichtet
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 Verzweigungsstatus, wird ein Knoten als ein „Zyklus"-Knoten betrachtet,
weil bis zur Bestimmung, daß er
eine Verzweigung ist, die Möglichkeit besteht,
daß der
Knoten Teil eines Zyklus ist, welcher das Einrichten einer Richtung
unmöglich
macht.
-
Das Graphen-Transformationsverfahren
beginnt bei Schritt 60 bei der Businitialisierung (Einschalten
oder initiiert), zu welchem Zeitpunkt die terminalen Knoten in der
beliebigen Topologie sich bei Schritt 61 erkennen und bei
Schritt 68 als terminale Knoten kennzeichnen, indem bei
Entscheidungssymbol 66 bestimmt wird, daß sie nur
einen verbundenen Port haben. In dem in 3(a) dargestellten
Graphen sind die Knoten 33, 35, 36 und 37 terminale Knoten,
welche, wenn sie initialisiert sind, bei Schritt 69 jeweils über ihren
einzigen verbundenen Port das YAMP-Signal an ihren benachbarten
Knoten senden. Die Knoten, die diese Signale empfangen, verbreiten dann
bei Schritt 70 die YAMP-Signale zurück zu den terminalen Knoten,
womit eine Richtung für
die gegebene Verbindung zwischen den jeweiligen Vorgänger-Nachfolger-Paaren
eingerichtet wird, wenn die YAMCA-Kommunikation abgeschlossen ist.
Bei Schritt 71 kennzeichnet jeder terminale Knoten seinen
einzigen verbundenen Port als einen Vorgängerport und jeder Empfängerport
an dem Vorgängerknoten
wird als ein Nachfolgerport gekennzeichnet.
-
Die Knoten auf dem Graphen, die zu
Anfang keine terminalen Knoten sind, werden aus dem oben beschriebenen
Grund zu Anfang als „Zyklusknoten" betrachtet und werden
gemäß dem Zyklusknotenverfahren 63 weiterbehandelt.
Jeder Zyklusknoten, welcher alle außer einem seiner verbundenen
Ports als Nachfolgerports gekennzeichnet hat, verbreitet dann das
YAMP-Signal von seinem verbleibenden ungekennzeichneten Port bei
Schritt 85 weiter. Wenn diese Richtung für die Verbindung
eingerichtet ist, dann wird der Zyklusknoten als ein Verzweigungsknoten gekennzeichnet.
Nachdem der terminale Knoten 37 einrichtet, daß Knoten 34 sein
Vorgängerknoten
ist, hat Knoten 34 somit nur einen ungekennzeichneten Port
(nachdem die Verbindungsverknüpfung
zu Knoten 37 als eine Verbindung über einen Nachfolgerport gekennzeichnet
wurde); somit sendet der Knoten 34 das YAMP-Signal an Knoten 31,
was dazu führt,
daß Knoten 34 ein
Verzweigungsknoten wird. In gleicher Weise sendet Knoten 31 das
YAMP-Signal an Knoten 30, wenn Knoten 31 identifiziert
hat, daß die
Knoten 33 und 34 seine Nachfolger sind. Wenn ein
Knoten über
alle seine Ports das YAMP-Signal bei den Entscheidungssymbol 75 empfangen
hat, dann wird dieser Knoten der Wurzelknoten. Nachdem der Knoten 30 die
YAMP-Signale von den Knoten 31 und 32 erhalten
hat, verändert
sich seine Kennzeichnung in 3(a) von
einem Zyklusknoten zu einem Wurzelknoten. In dem Graphen von 3(a) ist es nicht notwendigerweise der
Fall, daß der
Knoten 30 die Wurzel werden würde. Wenn einige der Verbindungen
in dem Baum lange Verbreitungsverzögerungen bereitstellen würden, könnte Knoten 30 ein
YAMP-Signal an einem Port empfangen und dann ein YAMP-Signal über seinen
anderen Port gesendet haben. Jeder der Knoten kann die Wurzel werden,
selbst ein Blatt, wobei die Wurzeleigenschaft den Vorrang hat. 3(a) zeigt den resultierenden gerichteten
Graphen als Antwort auf die übermittelten
Signale, die in 3(a) gezeigt werden,
wobei jeder Knoten gekennzeichnet ist und die Richtungen durch dunkle
Pfeile angezeigt werden.
-
Wurzelkonkurrenzsituation
-
Unter bestimmten Umständen kann
eine Wurzelkonkurrenzsituation entstehen. Dies kann beispielsweise
in einem Fall geschehen, wenn die beliebige Topologie eine symmetrische
Anordnung, ähnlich
wie in 4 gezeigt wird,
aufweist. In dem in 4 dargestellten
beliebigen Graphen haben die Knoten 160 und 161 jeweils
eingerichtet, daß sie
ein Vorgängerknoten
zu den zwei terminalen Knoten sind, mit welchen sie verbunden sind.
Dann hat jeder annähernd
zur gleichen Zeit das YAMP-Signal an den anderen verbreitet. Die
Situation der Wurzelkonkurrenz wird von beiden beteiligten Knoten
bei dem Entscheidungssymbol 86 erkannt. Jeder Knoten empfängt ein
Signal, welches ihn als Vorgängerknoten
bezeichnet, während
er dasselbe Signal über denselben
Port ausge sendet hat. Jeder der konkurrierenden Knoten antwortet
dem anderen bei Schritt 91 mit dem YAMC-Signal, was jedem
Knoten ermöglicht,
den „Entscheidungszeitraum" zu bestimmen, welcher
dem Doppelten der Verbreitungszeit zwischen den Knoten entspricht.
-
Die Situation der Wurzelkonkurrenz
wird durch Anwendung eines Zufallsentscheidungsmechanismus gelöst, der
in jeder Arbitrierungs-Automatenlogik-Einheit 11 jedes
Knotens enthalten ist. Für jeden „Entscheidungszeitraum", der abläuft, entscheidet
jeder Knoten bei Schritt 92 zufällig (mit einer 50%igen Wahrscheinlichkeit),
ob das YAMP-Signal erneut an den anderen Knoten gesendet wird. Bei
einer begrenzten Anzahl von Zyklen wird ein Knoten nahezu sicher
entscheiden, den anderen Knoten als seinen Vorgängerknoten zu bezeichnen, ohne
dass dieser erwidert. Der Knoten, der als Vorgängerknoten bezeichnet wird,
wird bei Schritt 95 die Wurzel. Alternativ können den
Knoten vorherbestimmte Auswahlkriterienwerte zugewiesen werden,
wobei der größere oder
kleinere bestimmt, welcher bei einem Konkurrenzsituationsereignis
dominiert. Obwohl die dynamische Bestimmung des „Entscheidungszeitraums" eine optimale Leistung
ermöglicht,
ist sie bei der Implementierung der vorliegenden Erfindung nicht
wesentlich. Als Alternative kann ein a priori definierter „Entscheidungszeitraum" verwendet werden,
solange er größer ist
als die Verbindungsverbreitung des ungünstigsten Falles, die in jedem
beliebigen Bus angetroffen werden kann, der diesen Algorithmus verwendet.
Dasselbe zur Auflösung
von Wurzelkonkurrenzsituationen verwendete Verfahren wird ebenfalls verwendet,
um andere Konkurrenzsituationsereignisse aufzulösen, die ferner hierin zu beschreiben
sind.
-
Wurzelzuweisung
-
Wie oben beschrieben wurde, ist das
Ergebnis des Graphen-Transformationsprozesses die Zuweisung der
Wurzeleigenschaft an einen und nur einen Knoten in dem Graphen.
Der Wurzelknoten hat die endgültige
Entscheidung in dem zu be schreibenden Bus-Arbitrierungs-System und
kann daher ohne die Verwendung von Zeitabständen spezieller Priorität mit höchster Priorität auf den
Bus zugreifen. Häufig
ist es wünschenswert,
in der Lage zu sein, die Wurzeleigenschaft einem vorherbestimmten
Knoten zuzuweisen – entweder
bei der Herstellung, oder dynamisch (während der Laufzeit) zur Optimierung
eines gegebenen Systems. Ein gegebener Bus kann einen Knoten enthalten,
welcher einen isochronen Datentransfer benötigt. Isochrone Daten sind
Daten, die zu einem gegebenen Zeitpunkt mit einem beliebigen Wert
gesendet werden müssen.
Beispielsweise muß Musik
von einer CD in der Reihenfolge, in welcher sie zu hören ist,
und ohne signifikante Verzögerungen übertragen
und ausgegeben werden, im Gegensatz zu Dateien, welche Stück für Stück übertragen
werden können,
und zwar nicht unbedingt in einer bestimmten Reihenfolge.
-
Knoten können im Hinblick auf die Wurzelbezeichnungen
in drei Kategorien klassifiziert werden. Diese Bezeichnungen können während der
Herstellung durch Festverdrahtung der Bezeichnung in der Einrichtung,
Programmieren der Arbitrierungs-Automatenlogik, oder durch eine übergeordnete
Software zugewiesen werden, die die Entscheidung trifft, dann ein
Neubooten initiiert, während
diese Entscheidung erhalten bleibt. Die drei Bezeichnungen, die
einem Knoten im Hinblick auf die Bezeichnung als eine Wurzel zugewiesen
werden können,
sind: Knoten, die keine Wurzel sein wollen, Knoten, die eine Wurzel sein
können
(sollten), und Knoten, die eine Wurzel sein sollen. Diese Bezeichnungen
werden bei den Schritten 81 und 83 überprüft. Ein
Knoten, der in der ersten Kategorie bezeichnet wird, beginnt das
Graphen-Transformationsverfahren, sobald er angewiesen wird, dies
zu tun. Dies ist normalerweise unmittelbar nach dem Abschluß des Businitialisierungsverfahrens
der Fall. Ein Knoten der zweiten Kategorie verzögert den Beginn des Graphen-Transformationsverfahrens
um eine vorherbestimmte Zeit, nachdem er angewiesen wird, das Verfahren
bei Schritt 84 zu beginnen. Durch diese Verzögerung erhöht der Knoten
seine Chance, eine Wurzel zu werden. (Die YAMP-Signale werden aufgrund
der Verzögerung
mit höherer
Wahrscheinlichkeit an ihn verbreitet.) Trotz der zusätzlichen
Verzögerung
ist es noch möglich, daß ein „Kann-Wurzel-Sein"-Knoten zu guter
Letzt nicht als die Wurzel bezeichnet wird. Dies ist von der gegebenen
Topologie und den Verzögerungen
der Nachrichtenverbreitung abhängig.
Der Umfang der Verzögerung
kann während
des Designs größer als eine
zumutbare ungünstigste
Verbreitungsverzögerung
durch einen ziemlich komplexen Graphen definiert werden.
-
Ein Knoten der dritten Kategorie
der Wurzelbezeichnungsmöglichkeiten
kann nur die Tatsache erkennen, daß er die Wurzel sein muß, nachdem
der Graph bereits transformiert worden ist und sich alle Knoten
identifiziert haben. Diese Festlegung kann die Arbitrierungs-Automatenlogik
oder eine Software, die auf dem Host-System läuft, treffen. Wenn dies eintritt,
stimmt sich der Knoten, der die Wurzel sein muß, mit allen anderen Knoten
an dem Bus ab, daß er
die eine und nur eine Wurzel ist, und startet den Graphen-Transformationsprozeß neu, indem
er ein bevorrechtigtes Businitialisierungssignal sendet, was hierin
ferner beschrieben wird. Der Knoten wartet dann bei Schritt 82,
um die Wurzel zu werden, und nimmt nicht an der Graphen-Transformation
teil, bis er das YAMP-Signal auf allen seinen Ports empfangen hat,
womit er erzwingt, als die Wurzel bezeichnet zu werden.
-
Wenn die Wurzel bestimmt worden ist,
kann der Graph als gerichtet bezeichnet werden. Es besteht ein definiertes
Verhältnis
zwischen allen benachbarten Knoten auf dem Graphen.
-
Zyklusauflösung
-
Das oben beschriebene Verfahren für das Richten
eines Graphen funktioniert nur für
einen azyklischen Graphen. Wenn es in der beliebigen Topologie Zyklen
gibt, müssen
sie durch das bei Schritt 80 beginnende Verfahren unterbrochen
werden. Die Existenz eines Zyklus wird bei Schritt 79 festgestellt, wenn
nach Ablauf einer vorherbestimmten Zeitüberwachungsdauer, ein Knoten
noch als Zyklusknoten, anstatt als ein Blatt, eine Verzweigung oder
eine Wurzel, gekennzeichnet ist. Die „Zykluserfassungs"-Zeitgabe beginnt
unmittelbar nach dem Ende der Businitialisierungsfunktion. Die Zeitüberwachungsdauer muß nicht
länger
sein als die Dauer des Graphen-Transformationsverfahrens im ungünstigsten Fall
(Erhöhung
der Verzögerungszeit
für einen „Kann-Wurzel-Sein"-Knoten und ein mögliches
Wurzelkonkurrenzsituationsereignis).
-
Das „Zykluserfassungs"-Zeitüberwachungs- bzw.
-ablaufereignis muß nicht
synchron für
alle Knoten eines Graphen eintreten, da alle Nachrichtenaustauschvorgänge asynchrone
Ereignisse sind. Als solchen ist es für einen Knoten, der sein „Zykluserfassungs"-Zeitablaufereignis
noch nicht erreicht hat, möglich,
eine Nachricht zu empfangen, die anzeigt, daß die Zyklusauflösung im
Gange ist. Ein derartiger Knoten beendet sein Zykluserfassungs-Zeitüberwachungsintervall
und beginnt den entsprechenden Zyklusauflösungsprozefl.
-
Das Verfahren der Zyklusauflösung gemäß der vorliegenden
Erfindung verlangt, daß der
Anwender der zusammengesetzten Ansammlung von Knoten eingreifen
muß. Wenn
ein Knoten auf die „Zykluserfassungs"-Zeitüberwachung
trifft, kann der Systemanwender bei Schritt 100 von 6(e) über
eine Ausgabeeinrichtung benachrichtigt werden, daß ein Zyklus
existiert und welche Knoten dann einbezogen sind. Der Anwender wird
dann angewiesen, Verbindungen zu unterbrechen, um Zyklen, gleich
welcher Art, zu beseitigen. Der Anwender gibt dann die Steuerung
an das Graphen-Transformationsverfahren zurück.
-
Wenn jede Schleife unterbrochen ist
und keine Zyklen übrig
bleiben, kann das Verfahren für
das Transformieren des Graphen, wie es in den vorherigen Abschnitten
beschrieben wurde, fortgesetzt werden, bis der gesamte Graph sowohl
azyklisch als auch gerichtet ist.
-
Zuweisung einer eindeutigen
physikalischen Adresse
-
Wenn aus der ursprünglichen
beliebigen Topologie ein gerichteter azyklischer Graph eingerichtet worden
ist, ist es dann möglich,
jedem Knoten auf dem Graphen eindeutige physikalische Adressen zuzuweisen.
Dieser Prozeß beginnt
bei allen terminalen Knoten, die den Bus anfordern, indem sie über ihre einzelnen
verbundenen Ports das Busanforderung(BR)-Signal senden. Der das
Signal empfangende Vorgängerknoten
wartet, bis er das BR-Signal von allen seinen Nachfolgerports empfangen
hat und verbreitet dann das BR-Signal an seinen Vorgängerknoten.
Die BR-Signale verbreiten sich über
den Graphen, bis die Wurzel das BR-Signal von allen ihren Nachfolgern
empfangen hat. Wenn die Wurzel eine Busanforderung über alle
ihre Nachfolgerports empfangen hat, trifft sie eine Entscheidung
für die
Zuteilung des Busses über
einen Port und verbreitet ein Busverweigerung(BD)-Signal über ihre
verbleibenden Nachfolgerports. Das Verfahren zum Auswählen, welche
Busanforderung zuzuteilen ist, kann eine a-priori-Entscheidung sein,
wie beispielsweise die oben beschriebene, wo zum Beispiel Ports
von links nach rechts oder auf der Grundlage der Port-Nummerierung
etc. ausgewählt
werden. Das Buszuteilung(BG)-Signal wird von der Wurzel an ihren
anfordernden Nachfolger gesendet. Wenn dieser anfordernde Nachfolger
selbst ein Vorgängerknoten
ist, welcher die Busanforderung von einem seiner Nachfolger verbreitet
hat, sendet er das Busverweigerung-Signal über alle außer einem seiner Nachfolgerports
in derselben vorherbestimmten Weise, wie sie oben beschrieben wurde.
Schließlich
empfängt
ein terminaler Knoten das Buszuteilung-Signal, welches er mit einem
Buszuteilung-Bestätigt(BGA)-Signal
beantwortet, welches zu dem Wurzelknoten zurückverbreitet wird. Die Verbreitung
der BD-und BGA-Signale
dienen zur Ausrichtung der Kommunikationsverbindungen, welche für den Fall
der Halbduplex-Kommunikationskanäle
erforderlich sein können.
Alle abgelehnten Knoten warten dann auf die Aktivität des Knotens,
der endgültig
das BG-Signal empfängt.
-
Der Knoten, welchem schließlich der
Zugriff auf den Bus zugeteilt wird, sendet ein Adreßzuweisungspaket.
Der Knoten sendet dieses Paket auf den Bus und es wird von allen
ande ren Knoten empfangen, von welchen jeder die Anzahl der Adreßpakete, die
er empfängt,
zählt.
Das gesendete Adreßpaket kann
beliebige Informationen beinhalten. Die eindeutige physikalische
Adresse eines Knotens wird auf der Anzahl der Adreßpakete,
die ein Knoten gezählt hat,
bevor er ein Adreßpaket
sendet, basieren. Somit erhalten keine zwei Knoten dieselbe physikalische Adresse,
obwohl keine Adreßinformationen
im Voraus zugewiesen wurden. Die aktuelle Zusammensetzung des Adreßpakets
ist beliebig und kann jeder beliebige Bitstrom sein, der von dem
System effizient verwendet werden kann. Nach dem Senden des physikalischen
Adreßzuweisungspakets
sendet ein Knoten ein „Nachfolger-ID-Abgeschlossen"(CIC)-Signal. Der
Vorgängerknoten,
der dieses auf seinem Nachfolgerport empfängt, sendet dann das „Nachfolger-Identifikation-Abgeschlossen-Bestätigt"(CICA)-Signal und
kennzeichnet den Port als einen identifizierten Nachfolgerport.
Als Antwort auf die nächste
BR-Signal-Verbreitung wählt
der Vorgänger des
Knotens, welcher sich gerade identifiziert hat, seinen nächsten Nachfolger
aus, um das physikalische Adreßpaket
zu senden. Wenn sich alle Nachfolgerknoten eines Vorgängerknotens
identifiziert haben, fordert der Vorgängerknoten den Bus an, und wenn
der Bus zugeteilt wird, verbreitet er sein physikalisches Adreßzuweisungspaket.
Dieses Verfahren wird nach den vorherbestimmten Selektionskriterien fortgesetzt,
bis alle Knoten durch Zählen
eine eindeutige physikalische Adreßzuweisung bestimmen. 5 stellt den Graphen aus 3(e) dar, in welchem ein vordefiniertes
Von-Links-Nach-Rechts-Selektionskriterium implementiert ist. Den
Knoten werden eindeutige Adressen zugewiesen, wobei der Knoten 33 die
erste Adresse empfängt,
und, wie beschrieben, der Wurzelknoten 30 die achte und
letzte Adresse empfängt.
-
Wenn dieses Verfahren abgeschlossen
ist, hat jeder Knoten in dem Graphen eine eindeutige physikalische
Adresse, welche nicht im Voraus bestimmt worden sein muß und welche
für das
Systemmanagement oder andere Zwecke verwendet werden kann.
-
Knoten-Selbstidentifizierung
-
Der Prozeß der Knoten-Selbstidentifizierung folgt
im Wesentlichen derselben Routine wie das Verfahren der physikalischen
Adreßzuweisung,
das oben beschrieben wurde. Da jeder Knoten sein physikalisches
Adreßzuweisungspaket
sendet, kann dieses Paket weitere Informationen enthalten, wie beispielsweise
die Identifizierung der physikalischen Einrichtung, die die Identifizierung
des dem Knoten zugeordneten lokalen Hosts umfaßt, wie viel Energie sie benötigt, und
beispielsweise, ob sie eine „Soft
Power-on"-Eigenschaft
unterstützt,
etc. In der Tat können
die Knoten-Selbstidentifizierungsinformationen als das physikalische
Adreßzuweisungspaket
dienen, weil die Praxis des Sendens aller Informationen überhaupt
die Grundlage für
das Zählen
zum Erhalt der eindeutigen physikalischen Adressen bildet.
-
Was das Knoten-Selbstidentifizierungspaket anbelangt,
so müssen
die bestimmten Informationen, die den Knoten betreffen, nur von
jenen Knoten „gehört" werden, die von
der Beschaffenheit des ankündigenden
Knotens beeinflußt
werden. Dieses Verfahren wird – wie
bei dem obigen – fortgesetzt,
bis alle Knoten ihre Knoten-Selbstidentifizierungsinformationen
gesendet haben.
-
Topologieabbildung
-
Das Verfahren der Topologieabbildung
folgt denselben Regeln wie die physikalische Adreßzuweisung
und die Knoten-Selbstidentifizierung.
Bei diesem Verfahren sendet somit jeder Knoten, wenn er das Verfahren
der Adreßzuweisung
oder der Knoten-Selbstidentifizierung durchläuft, ferner Informationen,
die alle seine Ports betreffen, wie beispielsweise die Anzahl der
Nachfolgerports, die er hat, und ob er gesperrte Ports hat oder
nicht. Im Hinblick auf gesperrte Ports kann es wünschenswert sein, ein Kommunikationsprotokoll
zwischen den Ports, die sperren, zu implementieren, so daß sie identifizieren
können,
von wem sie gesperrt werden.
-
Somit wird ein Port, wenn er einen
gesperrten Port erkennt, eine Kennung geben, die seine eigene ID
sowie die Port-ID, von welcher er gesperrt wurde, anzeigt.
-
Durch das Zusammensetzen aller Topologieinformationen über alle
Ports, die während
des Topologieabbildungsverfahrens empfangen werden, können der
Busserver, der Host oder eine Anwendung eines beliebigen Softwareniveaus
die aufgelöste
Bustopologie logisch rekonstruieren. Dies ist hilfreich für viele
Zwecke, einschließlich
des Implementierens von Redundanz, wobei bei dem unerwarteten Zusammenbrechen
einer Verbindung zuvor gesperrte Verbindungen dazu dienen können, den
Verlust der Kommunikationskanäle
zu irgendwelchen Knoten zu verhindern.
-
Angemessene Buszugriffs-Arbitrierung
-
Wenn die Topologieabbildungs-, Knoten-Selbstidentifizierungs-
oder physikalischen Adreßzuweisungsroutinen
abgeschlossen sind, kann der Bus als eingeschaltet und in Betrieb
befindlich betrachtet werden. Ein Arbitrierungs-Schema, das gemäß der vorliegenden Erfindung
implementiert wird, ist das des angemessenen Buszugriffs. Wenn ein
Knoten den Zugriff auf den Bus wünscht,
sendet er über
seinen Vorgängerport
(sofern er nicht die Wurzel ist) ein Busanforderung(BR)-Signal.
Beim Empfang des BR-Signals von einem Nachfolger sendet der Vorgängerport
ein Busverweigerung(BD)-Signal über
alle seine anderen Nachfolgerports. Der Vorgänger verbreitet dann das BR-Signal über seinen Vorgänger aufwärts, bis
das Signal die Wurzel erreicht. Die Wurzel gibt als Antwort auf
das erste BR-Signal, das sie empfängt, ein Buszuteilung(BG)-Signal
aus und sendet das BD-Signal über alle
ihre anderen Nachfolgerports, welche abwärts verbreiten, wodurch die
Verbindungen ausgerichtet werden. Das BG-Signal wird durch den Graphen abwärts verbreitet,
bis es den anfordernden Knoten erreicht, welcher dann das Busbestätigung(BA)-Signal sendet,
dem das Paket der Informationen folgt, das der Knoten auf dem Bus
senden mußte.
Wenn das Pa ket abgeschlossen ist, kehren alle Knoten in einen Leerlaufstatus
zurück
oder treten in diesen ein.
-
In dem Fall, wenn die Wurzel nahezu
gleichzeitige Anforderungen für
den Bus empfängt,
werden die vorherbestimmten Auswahlkriterien für den Wurzelknoten verwendet,
um einem der beiden Knoten den Buszugriff zuzuteilen. Dies können dieselben vorherbestimmten
Prioritätsauswahlkriterien
sein, wie sie oben beschrieben wurden.
-
Ein weiterer Aspekt der angemessenen
Buszugriffs-Arbitrierung ist der, daß ein Vorgängerknoten Priorität gegenüber seinen
Nachfolgern hat. Wenn ein Vorgängerknoten
den Bus wünscht,
sendet er folglich das BD-Signal über alle seine Nachfolgerports,
dann verbreitet er das BR-Signal aufwärts zu der Wurzel. Ein potentielles
Problem bei diesem Mechanismus besteht darin, daß ein Nachfolgerknoten Schwierigkeiten
haben kann, einen adäquaten
Buszugriff zu erlangen, wenn der Vorgänger eine große Menge
von Informationen auf dem Bus zu senden hat. Es wird daher ein Abstandssystem
eingeführt, das
in der Technik in großem
Umfang verwendet wird und bekannt ist. Nachdem ein Knoten den Bus
genutzt hat, muß der
Knoten eine Abstandsperiode warten, bevor er den Bus erneut anfordern
kann. Dies räumt
jedem Knoten auf dem Bus unabhängig
von seiner topologischen Plazierung auf dem Bus gleiche Chancen
für die
Buszuteilung ein. Um ein angemessenes Arbitrierungs-Protokoll zu
garantieren, muß die
Länge des
Abstandes größer als
die ungünstigste Signalverbreitungsverzögerung über den
Bus sein. Der Abstandswert kann vorherbestimmt und in der Knotenlogik
fest verdrahtet werden, aber eine solche Methode wird in allen Fällen, außer dem
Extremfall, zu einer suboptimalen Nutzung des Busses führen. Die
Topologieabbildungsfähigkeit
gemeinsam mit der Messung der Verbreitungsverzögerung zwischen den benachbarten
Knoten, die während
der Graphen-Transformationsphase ausgeführt wird, ermöglichen
die Berechnung eines optimalen angemessenen Abstandes, der die Busleistung
für jede
beliebige spezifische Implementierung maximieren wird.
-
Prioritäts-Hus-Arbitrierung
-
Bei dem Bus-Arbitrierungs-Schema,
das in Übereinstimmung
mit der obigen angemessenen Buszugriffs-Arbitrierung implementiert
wird, kann es wünschenswert
sein, daß die
Wurzel immer die Buspriorität
hat. Wenn dies implementiert ist, kann sich der Wurzelknoten jederzeit
den Bus zuteilen. Dies erfolgt, indem zuerst das BD-Signal abwärts über alle Knoten
in dem Graphen gesendet wird. Der Prioritäts-Buszugriff für die Wurzel
ist für
den Fall sehr nützlich,
wenn der Wurzelknoten zur Ausführung
eines isochronen Datentransfers benötigt wird.
-
Token-Passing-Bus-Arbitrierung
-
Als eine Alternative zu den oben
beschriebenen Systemen der angemessenen und der Prioritäts-Buszugriffs-Arbitrierung
kann die vorliegende Erfindung bei der Implementierung eines Token-Passing-Bus-Arbitrierungs-Systems
verwendet werden. Metaphorisch ausgedrückt bezieht sich der Token-Passing-Buszugriff
auf den Gedanken, daß ein Knoten
auf einem Bus kommunizieren kann, wenn er im Besitz eines Token
ist, das zwischen Knoten weitergeleitet wird. Das Token wird in
einer zyklischen Weise von Knoten zu Knoten geleitet, so daß jeder Knoten
den Bus an einem vorherbestimmten Punkt in dem Zyklus erhält. Token-Passing
wird bei der vorliegenden Erfindung in derselben Weise implementiert wie
die Routine der physikalischen Adreßzuweisung, die oben beschrieben
wurde. Die implementierten vorherbestimmten Selektionsmechanismen
werden verwendet, um die Reihenfolge auszuwählen, in der das Token von
Knoten zu Knoten geleitet wird. Diese Reihenfolge ähnelt der
in 5 gezeigten Reihenfolge,
welche die Reihenfolge der eindeutigen Adreßzuweisung diktiert. Jeder
Knoten wird bei Zuweisung des Token an ihn sein Informationspaket
auf dem Bus verbreiten, während
die übrigen
Knoten zuhören.
Der Knoten gibt dann auf der Grundlage des vorherbestimmten Ab laufsteuerungsverfahrens
das Token an den nächsten
logischen Knoten weiter, wie oben beschrieben wurde.
-
Bevorrechtigte Businitialisierung
-
Ein wichtiges Merkmal, das gemäß der vorliegenden
Erfindung implementiert werden kann, ist der Gedanke der bevorrechtigten
Businitialisierung. Die in jedem Knoten enthaltene Automatenlogik
ist unter bestimmten Umständen
in der Lage, ein Businitialisierungs(BI)-Signal zu triggern, das
von dem Knoten über
alle seine Ports zu verbreiten ist. Wenn ein Knoten bestimmt hat,
daß es
notwendig ist, eine Businitialisierungsbedingung zu signalisieren,
sendet er ein BI-Signal über alle
seine Ports für
eine Zeitdauer aus, die ausreicht, um zu gewährleisten, daß alle benachbarten
Knoten es empfangen und dann freigegeben haben. Ein Knoten tritt
dann in die Initiierungsverfahren ein, welche dann zu dem Graphen-Transformationsverfahren
in den oben beschriebenen Verfahren führen.
-
Es gibt eine Reihe von Situationen,
die es erforderlich oder wünschenswert
machen können,
eine bevorrechtigte Businitialisierung zu triggern. Zum ersten kann
dies eine Knotenreaktion auf einen unvorhergesehenen Fehler sein.
Außerdem
kann auf der Host-Ebene bestimmt werden, daß ein anderer Knoten, beispielsweise
ein isochroner Datentransferknoten, die Wurzeleigenschaft erhalten
sollte. Diese Zuweisung wird bei der gesamten Businitialisierungsroutine
bewahrt, wodurch der gewünschte
Knoten veranlaßt
wird, während
des Transformationsverfahrens zu warten, bis er die Wurzelbezeichnung
erhält. Eine
weitere Bedingung, die zu einer bevorrechtigten Businitialisierung
führt,
kann die Unterbrechung einer Verbindung sein, in welchem Falles
erforderlich sein kann, einen neuen azyklischen gerichteten Graphen für die angeschlossenen
Knoten zu berechnen. Schließlich
ist eine wichtige Situation, in welcher eine bevorrechtigte Businitialisierung
eintreten sollte, eine Situation, wenn eine Einrichtung zu dem Netzwerk hinzugefügt wird,
was als „Hot
Addi tion" von Peripheriegeräten bezeichnet
wird. Der Port, an welchen eine neue Einrichtung angeschlossen wird,
erfaßt das
Vorhandensein eines neuen Knotens und triggert eine Businitialisierung,
welche für
den Anwender des Systems transparent ist, aber welche das Hinzufügen und
Entfernen von Peripheriegeräten
gestattet, beispielsweise ohne abschalten und neu starten zu müssen. Es
wird ein neuer azyklischer gerichteter Graph berechnet, welcher
das Vorhandensein des hinzugefügten
Knotens einbezieht. Es ist möglich, das
es bei der Entfernung bestimmter Knoten nicht erforderlich sein
wird, eine Businitialisierung zu triggern; wenn beispielsweise ein
terminaler Knoten entfernt wird, kommt es nicht zu einem Schaden
am Netzwerk. Wenn allerdings ein Verzweigungsknoten von einem in
Betrieb befindlichen Bus entfernt wird, ist es wahrscheinlich, daß der Graph
neu konfiguriert werden muß.