-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf das Gebiet der Chipnetzwerke
oder NoC (für "Network an Chip"). Sie betrifft eine
On-Chip-Netzwerkstruktur mit Asynchronknoten, die ohne einen Takt kommunizieren.
-
Ein
Beispiel eines Netzwerkchips wird in dem Dokument "Trade offs in the
design of a router both guaranteed and best-efforts service for
networks an chip",
Goossens et al., Proceedings of DATE conference, 2003, S. 350–355 beschrieben.
In diesem Dokument wird insbesondere eine Netzwerkarchitektur vorgeschlagen,
versehen mit einem Kommunikationsmedium mit einer Topologie des
Matrizen- oder Maschen- bzw. Vernetzungstyps. Dieses Kommunikationsmedium
umfasst Routing-Knoten, geeignet zu Realisierung von zwei unterschiedlichen
Routing-Typen. Ein erster Routingtyp wird angewendet, um einen ersten,
sogenannten Latenzzeitgarantie-Dienst zu ermöglichen, bei dem die Zeit,
welche die Daten benötigen,
um von einer ersten Ressource zu einer zweiten Ressource zu gelangen,
im Wesentlichen konstant ist. Ein zweiter Routingtyp wird angewendet,
um einen zweiten, sogenannten "Best
effort"-Dienst zu
ermöglichen,
bei dem die Kapazität der
Leitungen des die Routingknoten verbindenden Netzwerks maximal beansprucht
wird. Bei dieser Architektur wird der Zugriff auf das Kommunikationsmedium
durch einen globalen Netzwerktakt gesteuert, realisiert durch ein
Zeitmultiplexing (im Englischen "time
multiplexing").
Die Anwendung einer solchen Architektur kann sich als komplex erweisen,
insbesondere bezüglich
der Routing-Anordnung ihrer Elemente sowie der Realisierung ihres
Taktbaums. Auch ist die Beherrschung des Verbrauchs einer solchen Netzwerkarchitektur
schwierig, insbesondere die Beherrschung des durch den Taktbaum
verursachten Verbrauchs.
-
Ein
Vorschlag eines Chipnetzwerks, bei dem die Routingknoten auf asynchrone
Weise miteinander kommunizieren, wird beschrieben von Brainbridge
und S. Furber in "Delay
Insensitive System an Chip Interconnect" Using 1 of 4 Data Encoding", Proceedings of
International Symposium an Advanced Research in Asynchronous Circuits
and Systems, March 2001, Seiten 118 bis 126. Die in einem solchen Netzwerk übertragenen
Daten werden außerdem
mit Hilfe einer Codierung des "one
hot encoding" genannten
Typs codiert. Dieses Netzwerk hat jedoch insbesondere den Nachteil,
eine spezifische Logik zu benutzen, was seine Anwendung schwierig
macht. Außerdem
arbeitet ein solches Netzwerk nicht mit unterschiedlichen Dienst-Typen,
zum Beispiel einem Latenzgarantie-Dienst und einem sogenannten "Best effort"-Dienst.
-
Die
Dokumente: "Quality
of Service (QoS) for Asynchronous On-Chip Networks", T. Felicijan, S.
B. Furber, Formal Methods for Globally Asynchronous Locally Synchronous
Architecture (FMGALS 2003) Pisa, Italy, Sept. 2003, und "An Asynchronous On-Chip
Network Router with Quality-of-Service (QoS), T. Felicijan, S. B.
Furber Support Proceedings IEEE International SOC Conference, Santa
Clara, CA, Sept. 2004, pp 274–277,
ISBN: 0-7803-8445-8, schlagen
Methoden zur Verwaltung der Dienstqualität in einem asynchronen Chipnetzwerk
mit Hilfe virtueller Kanäle
vor.
-
Das
Dokument: Bolotin E et al., "Cost
Considerations in Network an Chip", Integration, the VLSI Journal, North-Holland
Publishing Company, Amsterdam, NL, Vol. 38, Nr. 1, Okt. 2004, Seiten
19–42
(D1), präsentiert
eine QnoC für "Quality of Service
NoC" genannte Chipnetzwerk-Architektur,
die ein Gitter aus untereinander durch Punkt-zu-Punkt-Verbindungen verbundenen
Routern umfasst.
-
Ein
ein solches Netzwerk durchquerendes Datenpaket ist in eine Vielzahl
von Flits unterteilt. Ein Transfer von Flits zwischen zwei Routern
des Chipnetzwerks kann mit Hilfe eines sogenannten "Handshake"-Protokolls erfolgen.
Den in diesem Netzwerk transferierten Daten können unterschiedliche Prioritätsniveaus
oder -pegel zugeteilt werden.
-
Das
Problem besteht darin, eine neue Datenübertragungsstruktur mit global
asynchroner Funktionsweise zu finden, versehen mit Elementen, insbesondere
Knoten, die auf keinen Takt zurückgreifen, um
die Datentransfers in ihrem Innern zu steuern.
-
Eine
solche Struktur muss vorzugsweise verschiedene Diensttypen anwenden
können,
zum Beispiel abhängig
davon, ob man einen schnellen Datentransfer zwischen bestimmten
Ressourcen oder einen schnellen Transfer bestimmter Daten bevorzugen
will, oder auch, ob man zwischen bestimmten Ressourcen oder für bestimmte
Daten eine garantierte Datenrate erzielen will.
-
BESCHREIBUNG DER ERFINDUNG
-
Die
Erfindung realisiert ein verbessertes Chipnetzwerk.
-
Sie
betrifft vor allem ein Verfahren zur Übertragung von Daten in einem
Chipnetzwerk mit Asynchronkommunikationsprotokoll, wobei dieses
Netzwerk einen oder mehrere Knoten oder eine oder mehrere Ressourcen
umfasst und jeder Knoten dabei einen oder mehrere Eingänge, verbunden
mit einem oder mehreren Eingangscontrollern, und einen oder mehrere
Ausgänge,
verbunden mit einem oder mehreren Ausgangscontrollern, umfasst,
wobei wenigstens einer der Knoten ohne internen Takt arbeitet und
fähig ist,
zwischen zwei für
einen selben Ausgang bestimmten Datenpaketen eine Transferhierarchie
festzulegen, und diese Hierarchie wenigstens in Abhängigkeit
von einer jedem Datenpaket zugeordneten Prioritätskanalinformation festgelegt
wird und dieser Prioritätskanal
und dieses Datenpaket von einem anderen Knoten und einer anderen
Ressource des Netzwerks stammen, und die Prioritätskanalinformation übertragen
wird durch ein Synchronisationssignal eines ersten Typs gemäß dem genannten Asynchronkommunikationsprotokoll.
-
Das
Asynchronkommunikationsprotokoll kann ein Hochpegelsignal des "Send-Accept"-Typs sein, das die
Ressourcen und die Knoten des Netzwerks benutzen, um Datenübertragungen
durchzuführen.
-
Das
Signal des ersten Typs kann ein Signal des "Send"-Typs
sein, wie es jede Elementardatengruppe begleitet oder mit jeder
Elementardatengruppe oder jedem "Flit" eines Datenpakets
verknüpft
ist.
-
Erfindungsgemäß werden
die Synchronisierung und der Transfer der Daten lokal in jedem asynchronen
Knoten durchgeführt.
-
Die
Struktur des erfindungsgemäßen Chipnetzwerks
kann in Asynchronlogik werden, die nicht sehr empfindlich gegenüber Verzögerungen
und sehr robust gegenüber
Versorgungs- und Temperaturschwankungen ist.
-
Vorzugsweise
wird die Transferhierarchie, wenn die prioritären Datenkanäle identisch
sind, bestimmt durch Zuordnung – zu
jedem Paket – eines Prioritätspegels,
der abhängig
ist von seinem Ankunftszeitpunkt in dem Knoten und/oder von dem Eingang
oder dem Eingangs-Port, durch das dieses Paket in den Knoten gelangt.
-
Nach
einer besonderen Realisierungsart, wenn das erste Paket dabei ist,
den Knoten zu verlassen, aber einen niedrigeren Prioritätspegel
aufweist als das zweite Paket, Eingangspaket genannt, kann der Ausgang
des ersten Pakete unterbrochen oder gestoppt werden und das zweite
Paket kann prioritär
ausgegeben werden. Auf diese Weise ist eine prioritäre Übertragung
der Daten des Kanal der höheren
Priorität
sichergestellt.
-
Die
Routinginformationen, zum Beispiel in Form einer Richtungsdatenordnungsliste
können
mit jedem Datenpaket verknüpft
werden, wobei für
jeden durchquerten Knoten ein Teil dieser Routinginformationen,
zum Beispiel ein Richtungsdatensatz der Richtungsdatenliste, bestimmt
ist.
-
Vorzugsweise
wird die einen Knoten betreffende Routinginformation in einem Knoten
gelesen und benutzt, wobei die anderen Routinginformationen, die
für die
noch nicht durchquerten Knoten bestimmt sind, vorbereitet werden,
zum Beispiel durch Verschiebung der Richtungsdatenordnungsliste,
für die
nächste
Destination des Datenpakets in dem Netzwerk.
-
Die
Routinginformationen befinden sich vorzugsweise am Anfang des Datenpakets.
-
Diese
Routinginformationen können
außerdem
in einem Eingangscontroller des durchquerten Knotens gespeichert
werden hinsichtlich des Transfers der Daten von dem Eingangscontroller
zu einem Ausgangscontroller.
-
Der
Asynchronknoten kann Einrichtungen zur Speicherung einer Routinginformation
des ersten Pakets umfassen, dessen Ausgang unterbrochen oder gestoppt
wird.
-
Ein
erfindungsgemäßes Verfahren
kann außerdem
das Senden – durch
den Knoten, der einen oder mehrere Datensätze erhält, an das Element, von dem
er diesen Datensatz oder diese Datensätze erhalten hat – eines
Synchronisationssignal eines zweiten Typs umfassen, zum Beispiel
ein Akzeptanzsignal gemäß dem Asynchronkommunikationsprotokoll,
nach Empfang und Akzeptanz der Daten und des Synchronisationssignals.
-
Der
Knoten sendet kein Akzeptanzsignal für Daten, die mit dem Kanal
höherer
Priorität
verknüpft sind,
was eine elastischere Steuerung des Systems ermöglicht.
-
Das
Asynchronkommunikationsprotokoll kann mit Hilfe einer Zweirichtungssignalisierung
des Send-Accept-Typs angewendet werden: jede Aktion wird durch den
Empfänger
quittiert, damit der Sender wieder senden kann.
-
Ein
erfindungsgemäßes Netzwerk
kann also funktionieren, indem man ebenfalls ein Niedrigpegel-Asynchronprotokoll
des Send-Accept-Typs anwendet.
-
Vorzugsweise
werden bei einem solchen Verfahren die Synchronisationssignale des
Asynchronkommunikationsprotokolls mit Hilfe eines Vierphasen-Send-Accept-Protokolls
und einer "Multi-rail"-Codierung.
-
Bei
einem erfindungsgemäßen Verfahren sendet
der Eingangscontroller, wenn er den Anfang eines zu übertragenden
Pakets erhält,
dem Ausgangscontroller des Ausgangs zu dem die Daten des Pakets übertragen
werden müssen,
ein sogenanntes Validierungssignal, wobei dieses Validierungssignal Daten
umfasst, die den Prioritätskanal
des genannten zu übertragenden
Datenpakets betreffen.
-
Der
Ausgangscontroller, nachdem er das Validierungssignal empfangen
hat, integriert dann eine Paketbeginnabfrage eines Datenpakets,
das nicht Teil der prioritärsten Datenpakete
in eine Paketbeginnabfrage-Warteschlange von Paketen desselben Prioritätskanals.
-
Der
Ausgangscontroller überwacht
nach dem Empfang des Validierungssignals Register des Eingangscontrollers,
in denen die Daten in Abhängigkeit
von ihrem Prioritätskanal
gespeichert sind.
-
Der
Eingangscontroller kann die Daten des Prioritätskanals speichern hinsichtlich
des Transfers der Daten zum Ausgangscontroller.
-
Die
Erfindung betrifft eine Datenübertragungsvorrichtung
mit einem On-Chip-Netzwerk
mit Asynchronkommunikationsprotokoll, wobei dieses Netzwerk einen
oder mehrere Knoten und eine oder mehrere Ressourcen umfasst und
jeder Knoten dabei einen oder mehrere Eingänge, verbunden mit einem oder
mehreren Eingangscontrollern, und einen oder mehrere Ausgänge, verbunden
mit einem oder mehreren Ausgangscontrollern, umfasst, wobei wenigstens
einer der Knoten ohne internen Takt arbeitet, und jeder der Eingangscontroller
dieses Knotens umfasst:
- – Einrichtungen zur Bestimmung
einer Transferhierarchie zwischen zwei zu einem selben Ausgang zu
leitenden Datenpaketen, wobei diese Hierarchie wenigstens in Abhängigkeit
von einer Information des mit diesem Datenpaket verknüpften Prioritätskanals
bestimmt wird,
- – Einrichtungen
für den
Empfang von einem eine Prioritätskanalinformation
enthaltenden Synchronisationssignal und von Datenpaketen eines anderen
Knotens oder von einer Ressource des Netzwerks.
-
Eine
solche Vorrichtung umfasst außerdem Einrichtungen
zur Bestimmung der Transferhierarchie und Einrichtungen, um jedem
Datenpaket, wenn die Prioritätskanäle identisch
sind, einen Prioritätspegel
zuzuordnen, in Abhängigkeit
von seinem Ankunftszeitpunkt in dem Knoten und/oder dem Eingang
oder dem Eingangs-Port in den Knoten. Diese Einrichtungen können in
die Ausgangscontroller des Knotens integriert sein.
-
Es
können
außerdem
Einrichtungen vorgesehen sein, um die Aussendung eines ersten Datenpakets
zu unterbrechen oder auszusetzen, wenn dieses erste Paket dabei
ist, den Knoten zu verlassen, aber einen Prioritätspegel aufweist, der niedriger
ist als der Prioritätspegel
eines "Eingangspaket" genannten zweiten
Pakets, um dieses zweite Paket prioritär auszugeben. Diese Einrichtungen
können
auch in die Ausgangscontroller des Knotens integriert sein.
-
Die
erfindungsgemäße Vorrichtung
kann außerdem
Einrichtungen zur Codierung von mit jedem Datenpaket verknüpften Routinginformationen
umfassen, zum Beispiel in Form einer Ordungsliste der mit jedem
Datenpaket verknüpften
Richtungsdaten, wobei für
jeden durchquerten Knoten ein Teil dieser Informationen bestimmt
ist.
-
Es
können
außerdem
Einrichtungen vorgesehen sein, um die jeden Knoten betreffenden
Routinginformation zu lesen, sowie Einrichtungen, um die Routinginformationen
für die
nächste
Destination des Datenpakets in dem Netzwerk vorzubereiten. In einem
Fall, wo sich zum Beispiel die Routinginformationen in einer Richtungsdatenordnungsliste
befinden, können
diese Einrichtungen dazu benutzt werden, um die Richtungsdatenordnungsliste
zu verschieben für
eine nachfolgende Destination des Pakets, zum Beispiel einen benachbarten
Knoten.
-
Einrichtungen
ermöglichen
die Speicherung der Routinginformationen in dem Eingangscontroller eines
durchquerten Knotens hinsichtlich des Transfers der Daten von dem
Eingangscontroller zum Ausgangscontroller.
-
Der
Asynchronknoten umfasst vorzugsweise Einrichtungen zur Speicherung
einer Routinginformation des ersten Pakets, dessen Ausgabe unterbrochen
oder gestoppt wird.
-
Nach
einer bevorzugten Realisierungsart umfasst er außerdem Einrichtungen um, wenn
er einen Datensatz oder mehrere Datensätze empfängt, nach Empfang und Akzeptanz
der Daten und des entsprechenden Synchronisationssignals der Einrichtung,
von der er diesen Datensatz oder diese Datensätze erhalten hat, ein Akzeptanzsignal
zu senden.
-
Vorzugsweise
umfasst der Eingangscontroller Einrichtungen um, wenn er einen Datenpaketanfang
empfängt,
dem Ausgangscontroller des Ausgangs, zu dem die Daten übertragen
werden sollen, ein sogenanntes Validierungssignal zu senden, wobei
dieses Validierungssignal Daten bezüglich des Prioritätskanals
der genannten zu übertragenden
Daten enthält.
-
Bei
einem Asynchronknoten einer erfindungsgemäßen Vorrichtung kann der Ausgangscontroller
Einrichtungen umfassen, um nach Empfang des Validierungssignals
eine Paketbeginnabfrage eines Datenpakets einzufügen, das nicht Teil der Datenpakete
des Kanals höchster
Priorität
ist – in
eine Paketbeginnabfrage-Warteschlange von Paketen desselben Prioritätskanals.
-
Der
Ausgangscontroller kann außerdem
Einrichtungen umfassen um, nach Empfang eines Validierungssignals,
Register der Eingangscontroller zu überwachen, in denen Daten in
Abhängigkeit
von ihrem Prioritätskanal
gespeichert sind.
-
Er
kann außerdem
Einrichtungen zur Speicherung der Prioritätskanaldaten hinsichtlich des Transfers
der Daten zum Ausgangscontroller umfassen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird besser verständlich durch die Lektüre der Beschreibung
nur erläuternder
und keinesfalls einschränkender
Beispiele, wobei Bezug genommen wird auf die beigefügten Zeichnung:
-
die 1A, 1B zeigen
jeweils Architekturbeispiele erfindungsgemäßer Chipnetzwerke;
-
die 2 zeigt
ein Zeitdiagrammbeispiel, das mit Hilfe eines Protokolls des "Send-Accept"-Typs einen Synchronisationsmechanismus
in einem erfindungsgemäßen Chipnetzwerk
zwischen einem Sendeelement von Daten und einem Empfangselement
dieser Daten veranschaulicht;
-
die 3 und 4 veranschaulichen
jeweils ein Beispiel eines Transfers gemäß einem Vierphasenprotokoll
sowie einer "Dual-rail"-Codierung;
-
die 5 zeigt
ein Beispiel einer Asynchronknotenstruktur in einem erfindungsgemäß realisierten
Chipnetzwerk;
-
die 6 und 7 veranschaulichen
jeweils einen Eingangscontroller und einen Ausgangscontroller eines
Asynchronknotens nach der Erfindung.
-
Identische, ähnliche
oder äquivalente
Teile der verschiedenen Figuren tragen dieselben Bezugszeichen,
um den Übergang
von einer Figur zu anderen zu erleichtern.
-
Die
verschiedenen in den Figuren dargestellten Teile entsprechen nicht
notwendigerweise einem einheitlichen Maßstab, um die Figuren besser
lesbar zu machen.
-
DETAILLIERTE BESCHREIBUNG
-
Die 1A zeigt
ein Beispiel einer Kommunikationsarchitektur oder eines Chipnetzwerks
(NoC für "Network an Chip") nach der Erfindung
und ausgestattet mit einer Topologie des Matrizen- oder Maschentyps.
-
Diese
Architektur umfasst eine Vielzahl Elemente 110, fähig Datenverarbeitungen
durchzuführen
und untereinander zu kommunizieren, indem sie Daten austauschen.
-
Unter
allen in einer solchen Architektur enthaltenen Elementen 110 kann
ein mit 112 bezeichnetes Element die Rolle des Masters
spielen und ermöglichen,
insbesondere die Kommunikationen in dem Netzwerk einzuleiten. Dieses
Element 112, mit "Netzwerkcontroller" bezeichnet, hat
also die Möglichkeit,
die Kommunikationen zwischen einer Vielzahl anderer Elemente 114a, 114b des
Netzwerks, "Ressourcen" genannt, zu programmieren,
die dann ihrerseits ermöglichen,
Aufgaben wie etwa die Verarbeitung von elementaren Daten auszuführen, zum Beispiel
Berechnungen oder Speicherungen oder Codierungen/Decodierungen von
Daten.
-
Der
Netzwerkcontroller 112 kann sich zum Beispiel in Form eines
Prozessor oder eines Mikrocontroller präsentieren. Dieser Letztere
kann insbesondere auch die Funktion haben, Berechnungen durchzuführen und
Unterbrechungen zu verwalten.
-
Jede
der Ressourcen 114a, 114b kann von generischem
Typ sein, zum Beispiel in Form eines Prozessors oder eines DSP (für "Digital Signal Processor"), oder von spezifischem
Typ, wie etwa ein Speicher zum Beispiel des Typs SRAM (für "Static Random Access
Memory").
-
Es
kann auch ein spezialisiertes Verarbeitungsmodul sein, zum Beispiel
ein zur Berechung einer FFT ("Fast
Fourier Transform")
spezialisiertes Modul, oder auch ein Codier- und/oder Decodiermodul des Typs MPEG
("Moving Pictures
Expert Groups").
-
Die
Ressourcen 114a, 114b des Netzwerks sind miteinander
verbunden und tauschen untereinander Daten aus mittels eines Kommunikationsmediums
mit bidirektionalen Verbindungen 115, gebildet durch eine
oder mehrere Verbindungen, die einen Datentransfer in einer Richtung
gewährleisten,
und durch eine oder mehrere andere Verbindungen, die einen Datentransfer
in einer entgegengesetzten Richtung gewährleisten.
-
Das
Netzwerk umfasst außerdem
Knoten 120. Diese Knoten 120 ermöglichen,
eine physikalische Verbindung herzustellen zwischen einer oder mehreren
Eingangsverbindungen und einer oder mehreren Ausgangsverbindungen,
sowie eine Verzweigung der Kommunikationen zwischen den Ressourcen 114.
-
Bei
der sogenannten "Maschen"- oder Matrizentopologie,
dargestellt in der 1A, ist jeder Knoten 120 mit
vier Nachbarknoten verbunden und mit einer der Ressourcen 114 verbunden
oder verknüpft.
-
Diese
Netzwerkarchitektur ist von global asynchroner, lokal synchroner
Funktionsart (GALS): die Kommunikation zwischen den verschiedenen Ressourcen
ist asynchron.
-
Gemäß einer
Realisierungsmöglichkeit
können
die Ressourcen 114a, 114b der Netzwerkstruktur synchrone
Einheiten des Netzwerks sein, jeweils gesteuert durch einen Taktgeber.
Die jeweiligen Taktgeber der Ressourcen können eventuell verschieden oder
voneinander unabhängig
sein.
-
Das
Kommunikationsmedium des Netzwerks, und insbesondere der Knoten 120,
kann in Asynchronlogik implementiert sein. Ein oder mehrere Knoten 120 des
Netzwerks sind taktlos und von asynchroner Betriebsart.
-
Bezüglich der
Verzweigung von Daten sind die Knoten 120 fähig, ein
Datenrouting durchzuführen.
-
Ein
Knoten des Netzwerks kann also entscheiden, für welche Verbindung oder welchen
benachbarten Knoten Daten oder Datenpakete bestimmt sind, die er
erhält.
-
Das
im Innern der Knoten erfolgende Routing kann von deterministischem
Typ sein. In diesem Fall kann jeder Knoten des Netzwerks ein Routing
eines Datenpakets nur oder prinzipiell in Abhängigkeit von Routinginformationen
durchführen,
die in dem Datenpaket enthalten sind, das er erhält. Diese Routinginformationen
geben den Weg an, den dieses Paket in dem Netzwerk benutzen soll,
und sie können
in das Paket eingefügt
worden sein, oder dem Paket durch eine Ressource, die dieses Paket
gesendet hat, zugeordnet worden sein.
-
Ein
oder mehrere Knoten 120 des Netzwerks sind auch fähig, eine
Arbitrierung der Daten durchzuführen,
das heißt
zu bestimmen, welches der Datenpakete, die er erhält, zuerst
weitergeleitet oder transferiert werden muss.
-
Ein
asynchroner Knoten des Netzwerks kann vorgesehen werden, um eventuelle
Konflikte zwischen bei ihm eintreffenden Daten zu verwalten und zum
Beispiel zu enscheiden, welches der bei ihm eintreffenden und für denselben
Ausgang oder dieselbe Verbindung bestimmten Datenpaket zuerst in
Richtung Ausgang oder Verbindung weitergeleitet werden muss.
-
Die
Architektur des erfindungsgemäß realisierten
Chipnetzwerks ist nicht auf die in der 1A dargestellte
Vernetzungs- bzw. Maschentopologie begrenzt und kann eine ganz andere
Topologie aufweisen, zum Beispiel eine Topologie des Typs Hyperwürfel, Baum,
Ring, Torus, usw.
-
Die 1B zeigt
einen Teil des oben in Verbindung mit der 1A beschriebenen
Netzwerks, insbesondere einen ersten Knoten 120 und einen zweiten
Knoten 120b, die benachbart sind und von denen keiner einen
internen Taktgeber hat.
-
Der
erste Knoten 120a und der zweite Knoten 120b sind
jeweils mit einer ersten Ressource 114a und einer zweiten
Ressource 114b verbunden und umfassen jeder fünf Eingangs-Ausgangsmodule, eingerichtet
für das
Empfangen und/oder Senden der Daten und/oder der Synchronisationssignale,
darunter ein "Nord"-Modul, jeweils mit
dem Bezugszeichen 130a für den ersten Knoten und 130b für den zweiten Knoten,
ein "Ost"-Modul, jeweils mit
dem Bezugszeichen 140a für den ersten Knoten und 140b für den zweiten
Knoten, ein "Süd"-Modul, jeweils mit
dem Bezugszeichen 150a für den ersten Knoten und 150b für den zweiten
Knoten und ein "West"-Modul, jeweils mit
dem Bezugszeichen 160a für den ersten Knoten und 160b für den zweiten
Knoten. Diese Eingangs-Ausgangsmodule sind mit anderen Knoten des
Netzwerks verbunden. Ein Eingangs-Ausgangsmodul 170a, 170b ist
jeweils mit einer Ressource 114a, 114b verbunden.
-
In
dieser Konfiguration umfasst jeder Knoten 5 Eingänge (132a, b; 142a,
b; 152a, b; 162a, b; 172a, b für den ersten
Knoten 120a) sowie 5 Ausgänge (134a, b; 144a,
b; 154a, b; 164a, b; 174a, b für den ersten
Knoten 120a).
-
Jeder
Knoten umfasst 5 Eingangscontroller und 5 Ausgangscontroller. Jeder
Eingang ist nur mit 4 der 5 Ausgänge
verbunden, wohl wissend, dass das Hin/Zurück in einem selben Eingangs-Ausgangsmodul
nicht zulässig
ist. Ein Eingangscontroller detektiert die Präsenz neuer zu verarbeitender
Daten und transferiert diese Daten zu einem Ausgang – in Abhängigkeit
von dem in den Daten angegebenen Routing, vorzugsweise im Header
des laufenden Pakets.
-
In
der einen oder anderen der oben beschriebenen Architekturen können die
zwischen Ressourcen 114a, b ausgetauschten Daten, welche
die Leitungen 115a, b und die Knoten 120a, b passieren, Datenpakete
bilden.
-
Ein
Paket besteht aus einer Datengruppe, "Flit" genannt,
oder mehreren aufeinanderfolgenden, für denselben Weg bestimmten
Datengruppen, "Flits" genannt.
-
Ein
Flit ist die elementare Datenübertragungseinheit
in dem Netzwerk. Einem Flit entspricht eine Kapazität einer
Verbindung 115 oder einer Anzahl in einer Verbindung 115 vorhandener
physikalischer Verbindungen oder Verbindungsleitungen bzw. -kanäle (liants
filaires).
-
Ein
in dem Netzwerk zirkulierendes Datenpaket umfasst im Allgemeinen
wenigstens ein seinen Header bezeichnendes Flit sowie wenigstens
ein sein Ende bezeichnendes Flit und eventuell ein oder mehrere
Zwischenflits zwischen dem Header und dem Endflit.
-
Ein
Datenpaket kann eventuell durch eine einzige Elementardatengruppe
oder ein einziges Flit gebildet werden. In diesem Fall bezeichnet
dieses einzige Flit zugleich den Kopf und das Ende des Pakets.
-
Eine
Elementardatengruppe oder ein Flit kann durch mehrere Bits, zum
Beispiel 34 Bits, gebildet werden und insbesondere sogenannte Informationsbits
umfassen, die dazu dienen, die Position dieser Flits in einem Paket
zu bezeichnen.
-
Ein
erstes Informationsbit, "Bop"-Bit genannt (Bop
für "Begin of packet"), kann zum Beispiel
dazu dienen, anzugeben, ob, ja oder nein, das Flit, zu dem dieses
Bob-Bit gehört,
ein Headerflit eines Pakets ist.
-
Ein
anderes Informationsbit, "Eop"-Bit genannt (Eop
für "End of packet"), kann zum Beispiel dazu
dienen, anzugeben, ob das Flit, zu dem dieses Eop-Bit gehört, ein
Paket-Endflit ist.
-
Ein
Flit eines Datenpakets kann außer
den Informationsbits auch mehrere andere Datenbits umfassen, zum
Beispiel 32 andere Datenbits, die Informationen umfassen, die eine Berechnung
oder eine Behandlung von Daten und/oder Adresseninformationen und/oder
Programmierungsdaten betreffen, die dazu bestimmt sind, die Funktionsart
einer Ressource 114 zu konfigurieren.
-
Ein
Headerflit einer eines Datenpakets umfasst außer den Positionsinformationsbits
mehrere spezifische Bits, die man "Mitteilungskontrollbits" (im Englischen "message control") nennt, die ermöglichen,
die Art des Pakets anzugeben, je nach dem, ob dieses Paket einem
Lese-, Schreib- oder Unterbrechungspaket entspricht.
-
Ein
Headerflit eines Datenpakets umfasst auch mehrere spezifische Routingbits,
zum Beispiel 18 Routingbits, auch "Zielwegbits" (im Englischen "path to target") genannt.
-
In
dem Headerflit bezeichnen die Zielwegbits den Weg, welcher der Weg
sein kann, der für
das Datenpaket, zu dem dieses Headerflit gehört, in dem Netzwerk bestimmt
ist. Dieser Weg kann zum Beispiel in Form einer Richtungsdaten-Ordnungsliste oder
einer Ordnungsliste vorhanden sein, welche die Reihenfolge der Eingangs-Ausgangsmodule
bezeichnet, die das Paket zu benutzen bestimmt ist.
-
Ein
Knoten kann eingerichtet sein, um einerseits einen den zu verfolgenden
Weg definierenden Teil der Richtungsdatenliste zu benutzen, zum
Beispiel zwei niedrigwertige "Zielweg"-Bits, und um andererseits
des Pakets zu einem seiner Module zu routen und die Liste für den nächsten Knoten
zu verschieben.
-
Zum
Beispiel kann eine Codierung verwendet werden, die "00" benutzt, um ein "Nord"-Eingangs-Ausgangsmodul
zu bezeichnen, "01" benutzt, um ein "Ost"-Eingangs-Ausgangsmodul zu
bezeichnen, "10" benutzt, um ein "Süd"-Eingangs-Ausgangsmodul zu bezeichnen
und "11" benutzt, um ein "West"-Eingangs-Ausgangsmodul
zu bezeichnen.
-
Um
insbesondere die Anzahl der Routingbits in dem Paket zu reduzieren,
kann eine spezifische Codierung der Routingbits benutzt werden,
um einem Knoten das Routing eines Datenpakets zu einer Ressource
anzuzeigen. Zum Beispiel können
zwei identische aufeinanderfolgende Datensätze in einer Richtungsordnungsliste
eine Ressource bezeichnen.
-
Wie
weiter oben angegeben, kann das Netzwerk bezüglich des Routings der Datenpakete
in dem Netzwerk von deterministischem Typ sein. So kann eine Ressource
vor dem Senden eines Datenpakets einen Weg für dieses Datenpaket festlegen.
Dazu teilt zum Beispiel die Ressource den Zielwegbits des Headerflits
des Pakets, das sie sendet, einen Wert zu.
-
Der
Datenfluss, der dazu bestimmt ist, während einer Verarbeitung oder
einer Applikation das eine oder andere der oben beschriebenen Netzwerke zu
durchqueren, kann von dem sogenannten "Wurmloch"-Typ sein, wie zum Beispiel beschrieben
in dem Dokument "A
survey and comparison of wormhole routing technique in Mesh networks", K. M. Al-Tawil
et al., IEEE network, März–April 1997,
Seiten 38–45). Bei
einem solchen Datenfluss-Typ durchläuft von einem Datenpaket, gesendet
durch eine Senderessource an eine Empfangsressource, zuerst das
Headerflit den Weg zwischen der Senderessource und der Empfangsressource,
und dann folgen eventuell ein oder mehrere Zwischenflits, verteilt
auf schon von dem Headerflit benutzte Netzwerkknoten. Das Endflit schließt den durch
den Datenfluss benutzten Weg.
-
Die
in dem Netzwerk weitergeleiteten Datenpakete können jedes verknüpft sein
mit einem Prioritätskanal, "virtueller Kanal" genannt, ausgewählt aus einer
vorher festgelegten Liste von einem oder mehreren verschiedenen
virtuellen Kanälen,
zum Beispiel zwei verschiedenen virtuellen Kanälen oder drei verschiedenen
virtuellen Kanälen.
Jeder virtuelle Kanal bezieht sich auf einen Prioritätspegel
oder eine Prioritätsnummer
bzw. -zahl und verleiht einem Datenpaket, mit dem er verknüpft ist,
wenn dieses Paket einen Netzwerkknoten erreicht, einen Prioritätsgrad, insbesondere
was die Arbitrierung der Transferreihenfolge des Pakets betrifft.
-
In
zum Beispiel einem ersten Knoten des Netzwerks kann ein erstes Datenpaket,
das in diesem ersten Knoten eintrifft und verknüpft ist mit zum Beispiel einem
ersten Kanal eines bestimmten Prioritätspegels, weitergeleitet werden
zum Ausgang dieses ersten Knotens, prioritär in Bezug auf ein anderes
zum Beispiel mit einem zweiten Kanal eines niedrigeren Prioritätspegels
als demjenigen des ersten Kanals verknüpftes Datenpaket, insbesondere
in einem Fall, wo das erste Paket und das andere Paket sich anschicken,
einen selben Ausgang des ersten Knotens zu erreichen.
-
Gemäß einer
Implementierungsmöglichkeit der
virtuellen Kanäle,
können
k verschiedene virtuelle Kanäle
vorgesehen werden (wobei k eine ganze Zahl größer als 2 ist), zum Beispiel
ein erster Kanal oder Kanal 0 mit dem höchsten Prioritätspegel,
ein zweiter Kanal oder Kanal 1 mit einem niedrigeren Prioritätspegel
als dem des ersten Kanals, und ein dritter Kanal oder Kanal 2 mit
einem Prioritätspegel,
der niedriger ist als derjenige des ersten Kanals und des zweiten
Kanals, usw.
-
Die
virtuellen Kanäle
können
ermöglichen, verschiedene
Datentransferdienste in dem Netzwerk zu gewährleisten, zum Beispiel wenigstens
einen sogenannten "Best-effort"-Dienst, bei dem der Durchlassbereich
oder der Zugriff auf das Netzwerk im Wesentlichen gleich zwischen
den Ressourcen aufgeteilt oder verteilt wird, und wenigstens einen
sogenannten "Latenzgarantie"-Dienst, bei dem
die mit diesem Dienst verknüpften
Daten in dem Netzwerk mit einer vorzugsweise konstanten oder nur
wenig variablen Transferdauer zum Beispiel von einer Ressource zu
einer zweiten Ressource weitergeleitet werden.
-
So
kann bei einer Implementierung mit zwei virtuellen Kanälen der
Kanal mit der höheren
Priorität,
zum Beispiel der erste Kanal, benutzt werden, um einen Latenzgarantie-Dienst zu gewährleisten,
während
der andere Kanal mit der niedrigeren Priorität dazu benutzt werden kann,
einen Best-effort-Dienst zu gewährleisten.
-
Die
Prioritätskanalinformation
ist mit Hilfe wenigstens eines Synchronisationssignals mit einem Datenpaket
verknüpft,
gemäß einem
Kommunikationsprotokoll, das weiter unten in Verbindung mit der 2 beschrieben
wird.
-
Die
Transferreihenfolge zwischen mit verschiedenen Prioritätskanälen verknüpften Datenpaketen
kann durch Einrichtungen eines Asynchronknotens realisiert werden,
insbesondere einen Eingangscontroller und einen Ausgangscontroller
dieses Knotens, in Abhängigkeit
von den Informationen des Prioritätskanals. Beispiele solcher
Controller werden weiter unten in Verbindung mit den 6 und 7 beschrieben.
-
Es
kann auch vorgesehen werden, dass zwei mit einem selben Prioritätskanal
verbundene Datenpakete, zum Beispiel ein mit einem ersten Kanal
verknüpftes
erstes Paket und ein mit einem zweiten Kanal verknüpftes zweites
Paket, sich nicht gegenseitig unterbrechen, insbesondere wenn diese
Pakete einen selben Knoten des Netzwerks erreichen.
-
Die
Transferreihenfolge zwischen mehreren Datenpaketen, wenn diese Datenpakete
mit Kanälen identischer
Priorität
verknüpft
sind, ist nicht vorgeschrieben und kann zum Beispiel mit Hilfe einer
dynamischen Arbitrierung, zum Beispiel des Typs FIFO ("First In First Out"), erfolgen.
-
Eine
Transferreihenfolge mittels einer Arbitrierung des "statischen" Typs kann ebenfalls
benutzt werden. Bei einem solchen Arbitrierungstyp berücksichtigt
der Knoten, von welchem Nachbarknoten diese Datenpakete stammen
oder an welchem seiner Eingänge
die Pakete jeweils angekommen sind. Dieser statische Arbitrierungstyp
kann insbesondere ergänzend
zu der mit Hilfe der virtuellen Kanäle durchgeführten Arbitrierung angewendet
werden, zum Beispiel um die Transferreihenfolge zwischen mehreren verschiedenen
mit einem selben virtuellen Kanal verknüpften Paketen zu bestimmen,
die gleichzeitig oder im Wesentlichen gleichzeitig im Knoten eintreffen.
Eine solche statische Arbitrierung kann zum Beispiel vom "Nord/Ost/Süd/West"-Typ sein, bei dem
ein vom Nord-Eingang des Knotens stammendes Paket prioritär ist in
Bezug auf ein zweites Paket desselben virtuellen Kanals, das gleichzeitig
zum ersten Paket am Ost-Eingang des Knotens eintrifft, wobei das zweite
Paket seinerseits prioritär
ist in Bezug auf ein drittes Paket desselben virtuellen Kanals,
das simultan zum zweiten Paket am Süd-Eingang des Knotens eintrifft.
-
Generell
ist es möglich,
in Abhängigkeit
von der jeweiligen Herkunft der Datenpakete eine Arbitrierung zwischen
verschiedenen Paketen mit identischen Prioritätskanälen zu realisieren.
-
Eine
mögliche
Funktionsweise des Knotens 120a der 1B kann
zum Beispiel folgendermaßen sein:
beim Eintreffen eines Headerflits eines ersten Datenpakets durch
einen Eingang dieses Knotens 120a wird der Ausgang des
Knotens, den dieses Paket zu benutzen bestimmt ist, in Abhängigkeit
von den Routinginformationen bestimmt, die in dem Header dieses
ersten Pakets enthalten sind. In Abhängigkeit von diesen Routinginformationen
und des Prioritätskanals,
mit dem dieses erste Paket verknüpft
ist, wird eine Arbitrierungsinformation aktiviert.
-
In
einem Fall, wo es an diesem genannten Ausgang keinen Konflikt gibt
und wo zum Beispiel kein anderes Paket diesen Ausgang benutzt oder sich
anschickt, diesen Ausgang zu benutzen, wird das erste Paket zu diesem
Ausgang weitergeleitet oder transferiert.
-
In
einem Fall, wo es an dem genannten Ausgang einen Zugriffskonflikt
gibt und wo, während
ein erstes Paket diesen Ausgang schon benutzt, ein zweites Paket
eines höheren
virtuellen Prioritätskanals
wie das erste Paket in dem Knoten an demselben Ausgang eintrifft,
wird der Transfer des ersten Pakets zum Ausgang des Knotens 120a blockiert oder
gestoppt, um das zweite Paket zu transferieren. Der Transfer des
ersten Pakets kann wieder aufgenommen werden, wenn alle Flits des
genannten zweiten Pakets den Knoten 120a durchquert haben.
-
In
einem anderen Fall, wo es an diesem Ausgang einen Konflikt gibt
und zum Beispiel ein anderes Headerflit eines zweiten Pakets, das
zu demselben virtuellen Kanal gehört wird das erste Paket, zur
selben Zeit wie das erste Paket diesen Ausgang benutzen will, kann
zwischen den Paketen, in Abhängigkeit von
der Herkunft der Pakete oder ihrem Eingang in den Knoten eine statische
Arbitrierung zum Beispiel des "Nord-,
Ost-, Süd-,
West"-Typs realisiert werden.
-
Die
Prioritätskanalinformation,
mit der ein Datenpaket zum Beispiel verknüpft ist, kann wenigstens teilweise
in Synchronisationssignalen eines Hochpegel-Synchronisationsprotokolls des "Send-Accept"-Typs enthalten sein,
angewendet um zu ermöglichen,
zwischen den Elementen, Knoten und/oder Ressourcen des Netzwerks
Datentransfers ausführen
zu können.
-
Ein
Transfermechanismus zwischen einem Daten sendenden Netzwerkelement,
zum Beispiel einem ersten Knoten oder einer Ressource, und einem Daten
empfangenden Netzwerkelement, zum Beispiel einem Nachbarknoten des
ersten Knotens, ist in dem Zeitdiagramm der 2 dargestellt.
Der Datentransfer zwischen dem Sendeelement und dem Empfangselement
wird geregelt durch ein Hochpegelprotokoll des "Send-Accept"-Typs, das Synchronisationssignale des
Send-Typs sowie Synchronisationssignale des Accept-Typs benutzt,
bei dem ein bestimmtes Flit oder eine Elementardatengruppe eines Datenpakets
durch das Sendeelement gesendet werden kann, sobald ein anderes,
diesem bestimmten Flit in dem Datenpaket vorausgehendes Flit durch das
Empfangselement akzeptiert worden ist.
-
Die
Kurven 200 und 210 des Zeitdiagramms sind repräsentativ
für die
durch das Sendeelement und das Empfangselement ausgetauschten Signale. Die
Kurve 220 ist repräsentativ
für die
durch das Sendeelement und das Empfangselement ausgetauschten Daten.
-
In
diesem Zeitdiagramm zeigt ein "Send"-Signal 200,
das von dem Sendeelement stammt, zu einem Zeitpunkt t0 an,
wenn es zum Beispiel in einen Hochzustand übergeht, dass Daten zum Empfangselement
gesendet werden. Ein Akzeptanzsignal oder "Accept"-Signal 210, das von dem Empfangselement stammt,
zeigt an, indem es zum Beispiel zu diesem Zeitpunkt t0 in
einem Hochzustand ist, dass das Empfangselement fähig ist,
diese Daten zu empfangen. Also wird, wie die Kurven 220 und 230 jeweils
anzeigen, eine erste Gruppe von Daten oder ein erstes Flit durch
das Sendeelement gesendet und durch das Empfangselement empfangen
(das erste Flit wird durch einen Teil 221 der Kurve 220 repräsentiert).
-
Eine
Kurve 250 des Zeitdiagramms, repräsentativ für ein "Bop"-Signal,
geht zum Zeitpunkt t0 in einen Hochzustand über und
bleibt während
der Dauer des ersten Flits im Hochzustand. Dieses Bop-Signal gibt
an, dass das erste Flit ein Headerflit ist. Ein zweites Flit und
dann ein drittes Flit werden anschließend durch das Sendeelement
gesendet und durch das Empfangselement empfangen (wobei das zweite und
das dritte Flit jeweils durch Teile 222 und 223 der Kurve 200 repräsentiert
sind).
-
Zu
einem Zeitpunkt t1 wechselt das Accept-Signal
seinen Zustand und geht zum Beispiel in einen Niedrigzustand über. Das
Empfangselement hört
dann auf, Daten zu empfangen. Das Sendeelement macht einen Versuch,
ein viertes Flit zu senden (Teil 224 der Kurve 220),
aber das Empfangselement sendet dem Sendeelement kein Akzeptanzsignal
dieses vierten Flits zurück.
In einem Fall, wo zum Beispiel das Empfangselement ein Synchronknoten
ist, kann dieser Knoten das vierte Flit empfangen, speichern und
seine Benutzung abwarten. In einem anderen Fall, wo das Empfangselement
zum Beispiel ein Asynchronknoten ist, kann dieser Knoten das vierte
Flit in dem Sendeelement zurückhalten,
indem bzw. wobei er dieses vierte Flit nicht quittiert.
-
Nach
diesem Sendeversuch, zu einem Zeitpunkt t2,
hört das
Sendeelement dann auf, Daten zu senden (Teil 229 der Kurve 220).
-
Das
Empfangselement ist erneut bereit, ab einem Zeitpunkt t3 Daten
zu empfangen. Dies wird durch das Accept-Signal angezeigt (Kurve 210),
die ihren Zustand verändert
und zum Beispiel in den Hochzustand übergeht. Ab diesem Zeitpunkt
t3 zeigt das Empfangselement an, dass es
nun das vierte Flit akzeptiert (Teil 234 der Kurve 230).
Das Sendeelement kann dann wieder Daten senden. Ab diesem Zeitpunkt
t4 sendet das Element ein viertes Flit (Teil 225 der
Kurve 220), dann ein fünftes
Flit (Teil 226 der Kurve 220), die dann von dem
Empfangselement empfangen werden. Wie die für das "Eop"-Signal (Eop
für "End of packet") repräsentative
Kurve 240 anzeigt, markiert das fünfte Flit zu einem Zeitpunkt
t5 das Ende des Pakets und der Datensendung.
-
Mit
anderen Worten werden die Datensendungen zwischen einem ersten Element
und einem Asynchronknoten durch ein Send-Accept-Protokoll verwaltet.
Bei dem oben beschriebenen Transmissionsmechanismus kommunizieren
das Sendeelement und das Empfangselement über Eingangs-Ausgangsmodule,
deren Austausche auf der Ebene physikalischer Schichten durch eine
bidirektionale Signalisierung des Send-Accept-Typs verwaltet werden.
-
Diese
bidirektionale Signalisierung kann mittels eines "Vierphasen"-Niedrigpegelprotokolls, auch "full handshake" genannt, realisiert
werden.
-
Eine
Funktionsweise dieses Protokolls veranschaulicht die 3.
Die Kurve 310 dieses Diagramms ist repräsentativ für Signale von Daten, in denen
Abfragesignale figurieren, erzeugt durch das Sendeelement, während die
Kurve 320 repräsentativ ist
für Quittierungssignale,
erzeugt durch das Empfangselement.
-
Gemäß einer
ersten Phase, zwischen einem Zeitpunkt t0 und
einem Zeitpunkt t1, detektiert das Empfangselement
ein Eintreffen von neuen, zu erfassenden Daten, wobei dieses Eintreffen
durch eine Zustandsänderung
der Kurve 310 dargestellt ist. Dieses Empfangselement generiert
anschließend,
wie dargestellt durch die Zustandsänderung der Kurve 300 zum
Zeitpunkt t1, ein Quittierungssignal, in
Richtung Sendeelement.
-
Anschließend, gemäß einer
zweiten Phase, enthalten zwischen den Zeitpunkten t1 und
t2, detektiert das Sendeelement das Quittierungssignal
oder die Zustandsänderung
des Quittierungssignals und macht die Daten für das Empfangselement ungültig, wie
dargestellt durch eine Zustandsänderung
der Kurve 300.
-
Dann,
gemäß einer
dritten Phase, enthalten zwischen den Zeitpunkten t2 und
t3, detektiert das Empfangselement das Passieren
der Daten in einem ungültigen
Zustand und stellt das Quittierungssignal in seinen Anfangszustand,
oder in einen Zustand, in dem sich dieses Signal am Anfang der ersten
Phase befand.
-
Anschließend, gemäß einer
vierten Phase, enthalten zwischen den Zeitpunkten t2 und
t3, detektiert das Sendeelement eine Rückstellung
des Quittierungssignals in seinen Anfangszustand oder in den Zustand,
in dem sich dieses Signal während
der ersten Phase befand, und ist dann wieder berechtigt, neue Daten
zu senden.
-
Die
das Netzwerk durchquerenden Daten- und/oder Synchronisierungssignale
können
gemäß einem
gegenüber
Verzögerungen
unempfindlichen Codierungstyp codiert werden, die man "Dual-rail"- oder "1 aus N"-Codierung nennt
und die angewendet wird, um den Knoten zu ermöglichen:
- – die Präsenz neuer,
sie erreichender Daten zu detektieren,
- – Fälle zu unterscheiden,
wo neue an ihrem Eingang eintreffende Daten einen zu dem der vorhergehenden
Daten identischen Zustand annehmen.
-
Dieser
Codierungstyp ermöglicht
einem Knoten auch, ein Quittierungssignal zu erzeugen, um seine
Nachbarknoten vom Ende einer Verarbeitung zu informieren.
-
Bei
Dual-rail-Codierung, wie dargestellt in der 4, wird
zum Beispiel ein Datenbit mit zwei Leitungen codiert, bei denen
a priori vier Zustände möglich sind.
Eine erste Leitung (in der 4 mit 410 bezeichnet)
kann vorgesehen sein, um einen Wert '0' des
Datenbits zu codieren, während
eine zweite Leitung (420 in der 4) den Wert '1' codiert.
-
Wenn
beide Leitungen einen niedrigen Zustand aufweisen, gibt es keinen
gültigen
Wert (Signale 410 und 420 mit Logikpegel 0 vor
dem Referenzzeitpunkt T0). Wenn die erste
Leitung ihren Zustand ändert
und zum Beispiel in einen hohen Zustand übergeht, codiert letzterer
den Wert '0', die zweite Leitung
im hohen Zustand zeigt den Wert '1' an. Ein hoher Zustand
gleichzeitig auf beiden Leitungen ist verboten. Jede Änderung
eines gültigen
Werts impliziert, erneut den ungültigen
Zustand zu durchlaufen, in dem sich die beiden Leitungen im niedrigen
Zustand befinden.
-
Die 5 zeigt
die Architektur eines asynchronen Knotens: jeder Eingang ist mit
(n – 1)
Ausgängen
verbunden, und jeder Ausgang ist mit (n – 1) Eingängen verbunden, wobei n zum
Beispiel größer oder
gleich 4 ist, und folglich kann der Knoten eine Anzahl Eingänge und
Ausgänge über 5 aufweisen.
-
Ein
Beispiel eines solchen Knotens 500, angeschlossen an n
Leitungen (mit n als Ganzzahl > 5) ist
in dieser 5 dargestellt (die Leitungen
sind in dieser Figur nicht dargestellt). Dieser Knoten 500 kann
eine Architektur des Typs n × n-"Crossbar" aufweisen und umfasst
n Eingänge 5100 , ..., 510n-1 und n
Ausgänge 5500 , ..., 550n-1 ,
wobei jeder der Eingänge 5100 , ..., 510n-1 mit
n – 1
Ausgängen
verbunden sein kann. Bei dieser Netzwerkvariante können k Prioritätskanäle implementiert
werden (mit k als Ganzzahl größer oder
gleich 2). Jedes der eine solche Variante durchquerenden Datenpakete
kann also mit einem unter k Prioritätspegeln oder -kanälen ausgewählten Prioritätskanal
verknüpft
werden.
-
Ein
solcher Knoten 500 kann eine statische Arbitrierung anwenden,
um eine Transferreihenfolge zwischen Paketen zu bestimmen, die zu
einem selben Kanal und insbesondere dem Kanal der höchsten Priorität gehören. Zum
Beispiel kann ein Paket, von dem Eingang 5100 stammend,
verknüpft
mit dem Kanal 0 der höchsten
Priorität
als prioritär
gegenüber einem
anderen Paket bestimmt werden, das mit demselben Kanal 0 verknüpft ist
und von dem Eingang 5101 stammt.
-
Jeder
der Eingänge 5100 , ..., 510n-1 des
Knotens 500 ist jeweils mit einem der Eingangscontroller 6000 , ..., 600n-1 verknüpft, während jeder
Ausgang 5100 , ..., 510n-1 jeweils mit einem der Ausgangscontroller 7000 , ..., 700n-1 verknüpft ist.
-
Gemäß einem
Realisierungsbeispiel des in der 5 dargestellten
Knotens, der k = 2 verschiedene Prioritätspegel oder -kanäle regelt
bzw. steuert und Flitpakete mit zum Beispiel 34 Bits erhält, können die
Datenbusse des Knotens, der Pakete in Form von E_data-Signalen erhält, und
die Busse des Knotens, der Datenpakete in Form von E_send-Signalen
sendet, auf der Basis 4 codiert werden, um seinen Verbrauch zu reduzieren,
so dass man 17 Multi-rail-Vektoren der Basis 4 für 34 Datenbits erhält.
-
Die
Kontrollsignale E_send des "Send"-Typs können mit
einer Dual-rail-Codierung realisiert werden, um zu ermöglichen,
zwei Nummern unterschiedlicher virtueller Kanäle oder Prioritätskanäle zu transportieren.
Die Kontrollsignale S_acceptk des "Accept"-Typs können mit einer Single-rail-Codierung
realisiert werden, um anzuzeigen, ob in dem nächsten Knoten wieder ein Platz
frei ist.
-
Eine
Architektur eines Eingangscontrollers 6000 des
Asynchronknotens 500 ist detaillierter in der 6 dargestellt.
-
Dieser
Controller 6000 ermöglicht,
ein an seinem Eingang 5000 präsentes bestimmtes
Flit zu einem bestimmten Ausgang oder einem bestimmten Ausgangscontroller
unter insgesamt n – 1
Ausgängen
oder Ausgangscontrollern 7001 ,
..., 700n-1 (s. 5 und 7)
zu transferieren.
-
Der
Eingangscontroller 6000 erhält also
von dem Eingang 5100 (nicht dargestellt
in der 6), mit dem er verknüpft ist, ein Datenflit eines
Datenpakets in Form eines Signals E_data von zum Beispiel 34 Bits,
mit dem ein Synchronisationssignal des Send-Typs, E_send, verknüpft ist.
-
Man
erinnert, wie schon weiter oben erwähnt, dass sowohl die E_data-Daten
wie das Synchronisationssignal E_send durch einen Knoten oder eine
Ressource gesendet werden, der bzw. die mit Eingang 5100 verbunden sind, der dem Asynchronknoten 500 in
dem Weg vorausgeht, den das Datenpaket in dem Netzwerk verfolgt.
-
Der
Eingangscontroller 6000 erzeugt
ebenfalls Akzeptanzsignale des Accept-Typs (E_accept1, ..., E_acceptk
in der 6), bestimmt für
das Nachbarelement (Knoten oder Ressource) des Asynchronknotens 500,
verbunden mit dem Eingang 5100 , von
dem die durch diesen Knoten 500 empfangenen Daten stammen.
-
Der
Controller 6000 umfasst ein Modul
oder Einrichtungen 610, um wenigstens einen Teil eines
in Form des Signals E_data eintreffenden Flits in mehrere Flits
zu duplizieren, zum Beispiel in zwei Signale E_data_y und E_data_x,
bestimmt jeweils für
ein Modul oder Einrichtungen 620, Neudaten-Erfassungseinrichtungen
genannt, und für
ein anderes Modul oder Einrichtungen 630, Synchronisationssignal-Erfassungseinrichtungen
genannt.
-
Die
Einrichtungen 630 empfangen das Synchronisationssignal
E_send, mit dem das eintreffende Flit verknüpft ist und das in codierter
Form den Prioritätspegel
oder -kanal des Pakets enthält,
zu dem dieses Flit gehört.
Die Herkunft dieses Signals ist schon oben erklärt worden. Die Einrichtungen 630 ermöglichen
also insbesondere, den Prioritätspegel oder
-kanal eines in dem Knoten 500 eintreffenden bestimmten
Flits eines Pakets zu decodieren.
-
Die
Einrichtungen 630 ermöglichen
auch, einige Bits des bestimmten Flits zu decodieren, insbesondere
einige der Routingbits dieses Flits aus einem "Zielweg"-Feld, zum Beispiel eine Richtungsdaten-Ordnungsliste,
zum Beispiel die Niedrigwertbits des "Zielweg"-Felds,
umfassend.
-
Nach
der Decodierung – durch
die Einrichtungen 630 – der
Bits des "Zielweg"-Felds, erzeugen diese Einrichtungen 630:
- – einerseits
ein Ausgangsvalidierungssignal Valid R0_to_S0, ..., Valid_Rk-1_to_Sn-1
(in der Folge abgekürzt
Valid_R_to_S), um einen Prioritätskanal
unter den k Prioritätspegeln
und einen Ausgang unter den Ausgängen
des Knotens zu validieren, den als Ausgang aus dem Asynchronknoten
zu benutzen das eintreffende Flit bestimmt ist;
- – andererseits
eine Paketanfangsinformation BopR1_to_S0, ..., BopRk-1_to_Sn-1 (in
der Folge abgekürzt
BopR_to_S0), um sie einem Ausgangscontroller des Asynchronknotens
zu senden.
-
Diesem
Ausgangscontroller werden ebenfalls geliefert:
- – Informationen
die den Prioritätskanal
des Flits betreffen,
- – Informationen
die die Position des Flits in dem Paket betreffen, zum Beispiel
ob dieses Flit ein Paketanfang-Flit oder ein Paketende-Flit ist.
-
In
einem Fall, wo das Flit E_data_x ein Paketanfang-Flit ist, erzeugen
die Einrichtungen 630 ein Steuersignal CTRL_E, um den Datenerfassungseinrichtungen 620 den Prioritätskanal
anzugeben, mit dem das eintreffende Paket verknüpft ist, sowie einen Befehl
zur Verschiebung der Bits des "Zielweg"-Felds.
-
Die
niedrigwertigen Bits des "Zielweg"-Felds des eintreffenden
Flits, welche die Bestimmung bzw. Destination angeben, werden ebenfalls
durch die Einrichtungen 630 decodiert. Diese Datendestinationsbits
ermöglichen,
ein Validierungssignal Valid_R_to_S und eine Paketanfangsinformation
zu erzeugen, außer
für mit
dem Pegel oder Kanal höherer
Priorität
verknüpften
Paketen, bei denen anders geschlichtet werden kann. Die beiden Signale
bezüglich
der Validierungsinformation und der Paketanfangsinformation aktivierten
den betreffenden Ausgang über
den laufenden Prioritätspegel.
-
Die
diesen Ausgang betreffende Information wird in Registern 6400 , ..., 640k-1 gespeichert,
nachdem sie durch die Einrichtungen 630 in Form eines Destinationsinformationssignals
NXT_Rk erzeugt worden ist. Dieses Signal NXT_Rk, eingespeist in
eines der Register 6400 , ..., 640k-1 , ermöglicht, die Routingdaten für die Fortsetzung
des eintreffenden Pakets zu konservieren.
-
In
einem Fall, wo das eintreffende Flit kein Paketanfang-Flit ist,
erzeugen die Einrichtungen 630 eine Steuersignal CTRL_E,
das dann nur den Prioritätspegel
oder -kanal des eintreffenden Flits angibt. Die laufende Destination,
gespeichert wie oben erklärt,
wird gelesen (Signal CUR_Rk, gesendet durch die Einrichtungen 6400 , ..., 640k-1 ),
um den laufenden Ausgang mit dem betreffenden Prioritätspegel
zu aktivieren.
-
Wenn
die Einrichungen 620 das Signal E_data_y erhalten, realisieren
sie in Abhängigkeit von
dem Wert des Signals CTRL_E, erzeugt durch die Einrichtungen 630,
eine Verschiebung der "Zielweg"-Bits des Headerflits
eines bestimmten in dem Knoten 500 eintreffenden Pakets.
Dies ermöglicht, die
Routinginformation des gegebenen Pakets für einen Nachbarknoten des Knotens 500 vorzubereiten, den
das Paket nach dem Knoten 500 durchqueren soll. Nach Verschiebung
geben die niedrigwertigen Bits des "Zielwegs" des Headerflits dem nächsten Knoten
an, welchen seiner eigenen Ausgänge
das Datenpaket benutzen wird.
-
Die
Einrichtungen 620 ermöglichen
auch – mit
Hilfe des Steuersignals CTRL_E – die
Daten eines Flits in Richtung eines bestimmten Moduls oder bestimmter
Einrichtungen unter einer Gruppe von k Einrichtungen 6250 , ..., 625n-1 ,
zum Beispiel Kommunikationskanälen,
in Abhängigkeit
des Prioritätskanals,
mit dem dieses Flit verknüpft
ist, zu orientieren. Zum Beispiel ein mit dem Kanal höchster Priorität, zum Beispiel
dem Kanal 0 verknüpftes
Flit ist in Richtung Einrichtungen 6250 orientiert,
die dazu vorgesehen sind, mit dem Kanal 0 verknüpfte Flits zu verarbeiten.
Die Einrichtungen 620 ermöglichen also, eine Klassierung
pro virtuellem Kanal oder Prioritätskanal der durch den Eingang
eintreffenden Pakete zu realisieren, mit dem sie in dem Knoten 500 verknüpft sind.
-
Die
Einrichtungen 620 ermöglichen
auch, zu decodieren, sodann das Paketende-Bit "Eop" des Headerflits
des gegebenen eintreffenden Pakets zu duplizieren hinsichtlich einer
Verwendung durch eine Zustandsmaschine (nicht dargestellt in der 6)
eines Ausgangscontrollers des Knotens.
-
Die
Einrichtungen oder Register 6250 ,
..., 625k-1 , ermöglichen,
aus den Einrichtungen 620 austretende Daten zu einem der
n – 1
Ausgangscontroller 7001 , ..., 700n-1 des Knotens 500 zu transferieren. Dazu
werden die Einrichtungen 6250 ,
..., 625k-1 durch die n – 1 Ausgangscontroller 7001 , ..., 700n-1 sondiert, gemäß einem
Sondierungsmechanismus des Typs, beschrieben in dem Dokument von
P. Vivet, "Eine Methodologie
zur Konzeption quasi verzögerungsunempfindlicher
integrierter Schaltungen: Anwendung bei der Entwicklung und Realisierung
eines asynchronen 16-Bit-RISC-Prozessors", Dissertation, INPG, 2001. Diese Sondierung
erfolgt durch Ausgangscontroller 7001 ,
..., 700n-1 , wenn diese letzteren
aktiviert werden durch Validierungssignale, gesendet durch die Einrichtungen 630.
-
Der
Eingangscontroller 6000 umfasst
auch Einrichtungen 6501 , ..., 650k , um die Akzeptanzsignale in den verschiedenen
Prioritätskanäle oder
-pegel zu sondieren, die von jedem der Ausgänge A1_fromS0, ..., Ak-1_fromSn-1
stammen, um ein Akzeptanzsignal E_accept1, ..., E_acceptk-1 zu generieren.
Diese Einrichtungen 6501 , ..., 650k können
gemäß einem
weiter oben beschriebenen Sondierungsmechanismus funktionieren.
Zudem sind diese Einrichtungen 6501 ,
..., 650k vorgesehen, um einen
Initialisierungsjeton zu generieren; vor einem Austausch des Send-accept-Typs,
wie oben beschrieben. Der Eingangscontroller 6000 teilt
dann zu Beginn dieses Austausches dem Knoten oder einem in dem Netzwerk
vorangehenden Element mit, dass ein bestimmter virtueller Kanal
unter den k virtuellen Kanälen
frei ist.
-
Speichereinrichtungen 6400 , ..., 640k-1 zum Beispiel
in Form von Pufferspeichern sind ebenfalls vorgesehen, um die Destinationsinformationen
eines gerade in dem Knoten 500 transferierten Pakets zu konservieren,
insbesondere für
Flits gemäß dem Headerflit
des Pakets. Diese Informationen werden den Speichereinrichtungen 640 durch
Einrichtungen 630 gesendet. Bei der Initialisierung der
Schaltung oder des Netzwerks, bevor ein Headerflit eines neuen Pakets
den Eingangscontroller 6000 erreicht,
senden diese Speichereinrichtungen 6400 ,
..., 640k-1 den Einrichtungen 630 einen
Initialisierungsjeton.
-
Vorzugsweise
wird das Akzeptanzsignal E_accept1, ..., E_acceptk-1 nur gesendet
um gewisse Pakettypen zu quittieren, und insbesondere Pakete, die
verknüpft
sind mit virtuellen Kanälen
oder Prioritätskanälen mit
einem niedrigeren Prioritätspegel als
dem höchsten
Prioritätspegel.
-
Ein
Eingangscontroller decodiert also das Synchronisationssignal, wartet
auf einen neuen Dateneingangswert, ordnet ihn den dem betreffenden Prioritätspegel
entsprechenden Einrichtungen 6250 , ..., 625k-1 zu und validiert in Abhängigkeit
von der Destination des laufenden Pakets mit Hilfe eines Signals
Valid_R_to_S einen seiner Ausgänge
in Richtung des richtigen Ausgangscontrollers.
-
Eine
Architektur eines Ausgangscontrollers des Knotens 500,
zum Beispiel des Ausgangscontrollers 7000 ,
ist in der 7 dargestellt.
-
Dieser
Ausgangscontroller 7000 orientiert
ein Flit von Daten eines Pakets in Form eines Signals S_data von
zum Beispiel 34 Bits, mit dem ein Synchronisationssignal des Send-Typs, S_send, verknüpft ist,
in Richtung des Ausgangs 5500 (nicht
dargestellt in der 7).
-
Der
Ausgangscontroller ermöglicht
außerdem,
im Ausgang 7000 eine Transferarbitrierung
zwischen den prioritären
Paketen und den weniger prioritären
Paketen zu realisieren. Er ermöglicht
auch, eine Arbitrierung zwischen Datenpaketen desselben Prioritätspegels
zu realisieren.
-
Um
eine Transferreihenfolge zwischen Paketen unterschiedlicher Prioritäten zu bestimmen,
berücksichtigt
der Ausgangscontroller 7000 die
virtuellen Kanäle
oder Prioritätskanäle, mit
denen diese Pakete jeweils verknüpft
sind.
-
Zur
Arbitrierung einer Transferreihenfolge zwischen Paketen gleicher
Priorität,
kann der Ausgangscontroller 7000 in
einem Fall, wo diese Pakete mit dem Kanal höchster Priorität verknüpft sind,
eine Arbitrierung in Abhängigkeit
von den jeweiligen Eingängen, 5000 , ..., 500n-1 ,
dieser Pakete realisieren.
-
In
einem Fall, wo diejenigen Pakete, deren Transferreihenfolge bestimmt
ist, mit einem selben Kanal verknüpft sind, zum Beispiel dem
Kanal 1 mit einer niedrigeren Priorität als der Kanal mit der höchsten Priorität, zum Beispiel
der Kanal 0, kann der Controller eine Arbitrierung des Typs FIFO
("First In First
Out) durchführen.
-
Der
Ausgangscontroller 7000 ermöglicht also,
eine Arbitrierung zwischen den Transferreihenfolgen mehrerer Datenpakete
zu realisieren, die den Knoten 500 durch einen der Eingänge 5000 , ..., 500n-1 erreichen,
und insbesondere zwischen mehreren Paketen, die dazu bestimmt sind,
zum Ausgang 5500 zu gelangen, an
den dieser Controller 7000 angeschlossen
ist.
-
Mit
den k – 1
Klassierungseinrichtungen 7101 ,
..., 710k-1 sind jeweils Speichereinrichtungen 7201 , ..., 720k-1 verknüpft, jede
gebildet durch n – 1 Pufferspeicher,
von denen jeder n – 1
Paketbeginnabfragen speichern kann. Jede der Klassierungseinrichtungen 7101 , ..., 710k-1 ,
umfasst n Eingänge
und dient der Klassierung von Paketen, die mit einem selben virtuellen
Kanal verknüpft
sind. Die Einrichtungen 710, ..., 710k-1 ,
können
sich standardmäßig im Aktiv-
oder Ruhezustand befinden und sich initialisieren, sobald in einem
der Prioritätskanäle eine
Aktivität
detektiert wird.
-
Diese
Detektion kann realisiert werden mit Hilfe einer Sondierungsfunktion,
beschrieben in dem Dokument von P. Vivet, "Methodologie zur Konzeption quasi verzögerungsunempfindlicher
integrierter Schaltungen: Anwendung bei der Entwicklung und Realisierung
eines asynchronen 16-Bit-RISC-Prozessors", Dissertation, Institut National Polytechnique
de Grenoble, 2001.
-
Vorzugsweise,
um dem Knoten 500 zu ermöglichen, schnell den Transfer
der mit dem Kanal höchster
Priorität
verknüpften
Pakete durchzuführen, zum
Beispiel dem Kanal 0, klassieren diese Einrichtungen 7101 , ..., 710k-1 nur
Pakete, die mit dem Kanal niedrigerer Priorität verknüpft sind. Wenn auf einem der
Kanäle
eine Aktivität
detektiert wird (Detektion eine BoP-Bit):
- – wenn das
BoP-Bit vom Eingang 5100 kommt, wird
die Abfrage des Eingangs 5100 in
einem zu den Einrichtungen 7201 ,
..., 720k-1 gehörenden Speicher abgespeichert,
in Abhängigkeit
von den Prioritätskanal
des Pakets, zu dem dieses BoP gehört;
- – wenn
nicht und das BoP-Bit von dem Eingang 5101 kommt,
dann wird die Abfrage des Eingangs 5101 in
einem anderen zu den Einrichtungen 7201 , ..., 720k-1 gehörenden Speicher abgespeichert,
in Abhängigkeit
von den Prioritätskanal
des Pakets, zu dem dieses BoP gehört.
-
Einrichtungen 730 und
Einrichtungen 740, zum Beispiel im Form von Zustandsmaschinen
ermöglichen,
Validitätsabfragen
in Abhängigkeit
von der laufenden Priorität
zu arbitrieren.
-
Einrichtungen 730 und
Einrichtungen 740 zum Beispiel in Form von Zustandsmaschinen
ermöglichen,
Validitätsabfragen
in Abhängigkeit
von der laufenden Priorität
zu arbitrieren.
-
Zur
Erläuterung
dieses Arbitrierungsprozesses werden nun mehrere Fälle beschrieben.
-
Vorher
werden noch die verschiedenen in der 7 dargestellten
Signale oder ihre Entsprechungen in der 6 beschrieben.
-
Die
Signale valid_R0_from_E0, ..., valid_Rk-1_from_En-1 und bop_R1_from_E0,
..., bopRk-1_from_En-1 sind jeweils die durch die Einrichtungen 630 der 6 gesendeten
Validitätssignale valid_R_to_S
und die Paketbeginnsignale bop_R_to_S. Die Signale Rk_eop_fromEO
entsprechen den Validitätssignalen
valid Rk_to_S1 und Rk_eop_to-S1, gesendet durch die Einrichtungen 625 der 6.
Die Signale Ak_to_E1 entsprechen den Validitätssignalen Ak_from_S1, empfangen
von den Einrichtungen 650 der 6. Die Signale Rk_from_E1
entsprechen den Signalen Rk_to_S1, gesendet durch die Einrichtungen 625 der 6.
Die Signale S_ACCEPT1, ..., S_ACCEPTk-1 sind Akzeptanzsignale, empfangen
von einem Element (einem Knoten oder einer Ressource) des Netzwerks,
das auf dem Weg der Daten in dem Netzwerk auf den Asynchronknoten 500 folgt.
-
Bei
dem durch die Zustands- bzw. Statusmaschine 730 realisierten
Arbitrierungsverfahren kann man drei Fälle unterscheiden.
-
Erster
Fall: wenn die Priorität
im Laufe der Verarbeitung "Leer-Status
bzw. -Zustand" ist
und wenn es kein laufendes Paket in Richtung dieses Ausgangscontrollers
mehr gibt, dann:
- – wenn ein mit dem Kanal höchster Priorität verknüpftes Paket,
zum Beispiel ein mit dem Kanal 0 verknüpftes Paket, präsent ist,
wird der laufende Status bzw. Zustand prioritär, erzeugen die Einrichtungen 730 das
Signal NXT_PRIO und die Herkunft des Pakets wird mit Hilfe einer
Information NXT_FROM konserviert. Das Validitätsignal wird quittiert;
- – wenn
kein mit dem Kanal höchster
Priorität
verknüpftes
Paket präsent
ist, hat ein Paket niedrigerer Priorität den Prozess ausgelöst. Der
zu transferierende Eingang wird in einer der entsprechenden Listen
gelesen. Der laufende Status bzw. Zustand wird nicht-prioritär, das Signal
NXT_PRIO wird zur Status- bzw. Zustandsmaschine 740 gesendet,
während
die Herkunft des Pakets in der Statusmaschine 740 mit Hilfe
der Informations NXT_FROM konserviert wird. Das Akzeptanzsignal
entsprechenden Pegels wird quittiert.
-
Zweiter
Fall: die laufende Priorität
ist: Nicht-Prioritätsstatus
bzw. Nicht-Prioritätszustand (Paket
des Pegels k).
-
In
diesem Fall kann ein nicht-prioritäres Paket unterbrochen werden
durch ein Paket höherer Priorität.
-
Eine "Wache" oder Selektionseinrichtungen testen
dann:
- – die
Präsenz
eines Validitätssignals
des Pegels höherer
Priorität,
- – oder
die Präsenz
eines Validitätssignals
prioritäreren
Pegels, wenn ein von dem nächsten
Knoten in dem Netzwerk stammendes Akzeptanzsignal entsprechenden
Prioritätspegels
empfangen worden ist,
- – oder
die Präsenz
des Validitätssignals
des laufenden nicht-prioritären
Pakets, wenn ein von dem nächsten
Knoten in dem Netzwerk stammendes Akzeptanzsignal des laufenden
nicht-prioritären
Pegels empfangen worden ist.
-
Wenn
ein prioritäreres
Paket präsent
ist, suspendieren die Einrichtungen 730 das laufende nicht-prioritäre Paket,
indem sie den Einrichtungen 740 das Signal TO_SUSPEND senden
und das Paket höchster
Priorität
verarbeitet wird.
-
Wenn
kein mit dem Kanal höchster
Priorität verknüpftes Paket
präsent
ist, aber die Fortsetzung eines mit einem Kanal niedrigerer Priorität verknüpftes Paket
präsent
ist, wird die Fortsetzung des Pakets verarbeitet.
-
Dritter
Fall: die laufende Priorität
ist ein Zustand bzw. Status höchster
Priorität.
In diesem Fall kann das laufende Paket nicht unterbrochen werden und
die Fortsetzung des zu transferierenden Pakets wird abgewartet bzw.
erwartet.
-
Ein
Leerzustands-Initialisierungsjeton wird durch die Zustandsmaschine 740 generiert.
-
In
Bezug auf das durch die Zustandsmaschine 740 durchgeführte Arbitrierungsverfahren
kann man ebenfalls drei Fälle
unterscheiden.
-
Erster
Fall: der laufende Zustand ist der Leerzustand und es gibt kein
laufendes Paket in Richtung dieses Ausgangs mehr. Das EoP-Bit, welches
das Ende eines betreffenden Pakets anzeigt, wird decodiert und dann
wird der laufende Zustand des Ausgangs aktualisiert. Ein Kontrollsignal CTRL_SWITCH
von Schalteinrichtungen 770 wird aktiviert.
-
Bei
einem nicht-prioritären
Paket werden Akzeptanzsignale Ak_toEn des entsprechenden Pegels in
die Eingangsstufe eingespeist.
-
Zweiter
Fall: der laufende Zustand ist ein nicht-prioritärer Zustand (Paket mit Pegel
oder Kanal zwischen 1 und k).
-
Wenn
ein neues prioritäreres
Paket präsent ist,
wird das laufende Paket weniger prioritären Pegels suspendiert. Das
Verfahren verwaltet also die Suspension, um den Transfer des neuen
Pakets zu ermöglichen.
In dem Fall, wo EoP = 1, ist das Paket von der Länge 1 und muss nicht suspendiert
werden.
-
Wenn
nicht, wird die Fortsetzung des laufenden Pakets transferiert.
-
Dritter
Fall: der laufende Zustand ist ein Zustand höherer Priorität (Paket
mit Pegel oder Kanal 0).
-
Die
Fortsetzung des Paket höherer
Priorität wird
dann erwartet bzw. abgewartet.
-
Dann,
wenn die Arbitrierungseinrichtungen 730 in einem der Validitätssignale
des prioritärsten Pegels
oder den Validitätssignalen
weniger prioritären
Pegels eine Aktivität
entdecken, und wenn ein von dem nächsten Knoten in dem Netzwerk
stammendes Akzeptanzsignal des entsprechenden Prioritätspegels
empfangen worden ist, testet das Arbitrierungsverfahren die Präsenz eines
Pakets prioritäreren
Pegels zunächst
mit einer bestimmten Priorität.
-
Die
Einrichtungen 740 gewährleisten
die Verwaltung der Prioritäten
und des laufenden Zustands. Diese Einrichtungen erhalten also die EoP-Bits,
die ermöglichen,
die Entscheidung des Übergangs
von einem Zustand in den anderen und einer Priorität in die
andere zu treffen. Diese Einrichtungen ermöglichen auch, die suspendierten
Pakete weniger prioritärer
Pakete wiederherzustellen. Sie generieren auch ein Kontrollsignal
CTRL_SWITCH eines Ausgangsschalters 770.
-
Am
Ende des Pakets testet das Verfahren den Ausgang von Suspensionseinrichtungen 750, um
zu wissen, ob ein Paket mit weniger prioritärem Pegel suspendiert worden
ist (CUR_SUSPENDED).
-
Die
Einrichtungen 750 gewährleisten
das Konservieren der Zustands- bzw. Statusvariablen der Zustands-
bzw. Statusmaschine 740, während die Einrichtungen 760 fähig sind,
Suspensionsvariable dieser Maschine 740 zu konservieren.
Diese Einrichtungen generieren "Leerzustand"- und "Keine-Suspension"-Initialisierungsjetons.
-
Die
Einrichtungen 770 sind Schalteinrichtungen, zum Beispiel
ein Multiplexer mit k(n – 1)
möglichen
Eingängen
(n – 1
Eingänge
mit k Prioritätspegeln)
in Richtung S_data des Knotens. S_send wird durch dieselben Einrichtungen
generiert.
-
Eine
erfindungsgemäße Schaltung
kann in der Sprache CHP, abgeleitet von CSP modelliert werden, die
ermöglicht,
die Asynchronknoten durch kommunizierende Prozesse zu beschreiben.
Dazu kann man sich auf den Artikel von A. J. Martin mit dem Titel "Synthesis of asynchronous
VLSI circuits",
Caltech-CS-TR-93-28, beziehen.
-
Die
Synthese der Schaltung kann anschließend teilweise realisiert werden
durch die Synthesetools von asynchronen Schaltungen wie TAST (s.
den Artikel von A. V. Dinh Duc et al.: "TAST CAD tools: tutorial", Intern. Symposium
an Advanced research in Asynchronous Circuits and Systems ASYNC'02, Manchester, UK,
8.–11.
April, 2002; ebenfalls A. V. Dinh Duc et al.: "Synthesis of QDI asynchronous circuits
form DTL – stylePetri
net", IWLS – 02, 11. IEEE/ACM
Int. Workshop an Logic and Synthesis, New Orleans, Lousiana, 4.–7. Juni,
2002), oder auch durch Synthesemethoden, beschrieben in JB Rigaud et
al.: "Modeling and
Design of Asynchronous Priority Arbitrers for On-Chip Communication
Systems" in Com.
Systems SOC Design Methodologies, edited by M. Roberts et al., Kluwer
Academic Publishers, Juli 2002, ISBN 1-4020-7148-5 oder in JB Rigaud: "specification de
sbibliothèques
pour la synthèse
de circuits asynchrones",
Dissertation, INPG, 2002, insbesondere für die Arbitrierungsblöcke.
-
Eine
Asynchronnetzwerkstruktur nach der Erfindung ermöglicht, verschiedene Diensttypen
zu realisieren, zum Beispiel einen "Latenzgarantie"-Dienst und einen weiteren, "Best effort"-Dienst genannten
Dienst. Die Implementierung dieser verschiedenen Dienste sowie die
Verwaltung der Prioritäten
zwischen den eine solche Struktur durchquerenden Datenpaketen erfolgt
wenigstens teilweise mit Hilfe von "virtuelle Kanäle" genannten Prioritätskanälen, mit denen die Datenpakete
verknüpft
sind.