-
TECHNISCHES GEBIET UND STAND
DER TECHNIK
-
Die
vorliegende Erfindung bezieht sich auf das Gebiet der Chipnetzwerke
oder On-Chip-Netzwerke
(NoC oder "Network
an Chip"). Sie betrifft
ein Verfahren zur Datenübertragung
in einem Chipnetzwerk, insbesondere mit Hilfe eines Asynchronprotokolls
des "Send-Accept"-Typs, sowie eine
verbesserte, die Durchführung
solcher Übertragungen
ermöglichende
Chipnetzwerkstruktur.
-
Diese
Struktur ist fähig,
global asynchron zu arbeiten, selbst in dem Fall, wo sie in Synchronlogik implementierte
Einheiten oder Blöcke
umfasst. Diese Struktur benötigt
nicht unbedingt eine spezialisierte Logik und kann sowohl Elemente
wie insbesondere in Synchronlogik implementierte Knoten und in Asynchronlogik
implementierte Knoten umfassen. Diese Struktur ermöglicht,
verschiedene Dienste-Typen anzuwenden, zum Beispiel einen sogenannten "Latenzgarantie"-Dienst oder einen "Best-effort"-Dienst. Die Implementierung
dieser verschiedenen Dienste sowie die Verwaltung der Prioritäten zwischen
in einer solchen Struktur übertragenen
Datenpaketen wird wenigstens teilweise durch Prioritätskanäle gewährleistet, "virtuelle Kanäle" genannt, denen die
Datenpakete zugeordnet werden.
-
Gegenwärtig ist
die zur Kommunikation zwischen verschiedenen Modulen einer ASIC
oder eines Chips hauptsächlich
verwendeten Einrichtung eine Bus-Topologie. Bei diesem Topologie-Typ
sind die untereinander kommunizierenden Module eines Chips mit ein
und demselben Kommunikationsmedium verbunden, das sie abwechselnd
benutzen, zum Beispiel um Daten zu senden. Ein zentrales Element, "Bus-Arbiter" genannt, liefert
den verschiedenen Modulen das Zugangsrecht zu dem Medium, um Konflikte,
um Busbenutzungskonflikte zu vermeiden.
-
Dieses
System hat insbesondere den Nachteil der niedrigen Kommunikationsraten,
was eine große
Latenz verursachen kann, sowie den einer immer schwierigeren Realisierung,
insbesondere wegen den Problemen der kapazitiven Ladung. Es ist außerdem schwierig,
die durch einen Kommunikationsbus eines Chips gewährleistete
Datenrate genau an die durch die Gesamtheit der Module des Chips realisierte
Anwendung anzupassen. Außerdem
ist ein solches System generell sehr spezifisch für eine bestimmte
Anwendung bestimmt und im Allgemeinen nicht für irgend eine andere Anwendung
benutzbar.
-
Hinsichtlich
einer Verbesserung der oben genannten Probleme wurden Chips des
Typs NoC ("Network
an Chip"), oder
Netzwerkchips, entwickelt.
-
Zum
Beispiel 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 ein
Netzwerkchip vorgeschlagen. 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. Die Anwendung einer solchen Architektur kann sich
als komplex erweisen, insbesondere bezüglich der Routing-Platzierung ihrer
Elemente sowie der Realisierung ihres Taktbaums. Auch die Beherrschung
des Verbrauchs einer solchen Netzwerkarchitektur kann schwierig sein,
insbesondere des durch den Taktbaum verursachten Verbrauchs.
-
Ein
Vorschlag eines Chipnetzwerks, bei dem die Routingknoten asynchron
miteinander kommunizieren, wird beschrieben in "Delay Insensitive System an Chip Interconnect" Using 1 of 4 Data
Encoding", Brainbridge
und S. Furber, 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 hauptsächlich den Nachteil, eine spezifische
Logik zu benutzen, was seine Anwendung schwierig macht. Außerdem arbeitet
ein solches Netzwerk nicht mit unterschiedlichen Dienste-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 mit Elementen versehenen
asynchronen Chipnetzwerk vor, insbesondere Routing-Knoten, implementiert
in Asynchronlogik, mittels virtueller Kanäle.
-
Das
Dokument: Bolotin E et al., "Cost
Considerations in Network an Chip", Integration, the VLSI Journal, North-Holland
Publishing Company, Amsterdam, NL, Band 38, Nr. 1, Okt. 2004, Seiten
19–42 (D1),
präsentiert
eine Chipnetzwerk-Architektur, QnoC für "Quality of Service NoC" genannt, die ein Gitter
aus untereinander durch Punkt-zu-Punkt-Verbindungen verbundenen Routern umfasst.
-
Ein
in einem solchen Netzwerk transferiertes 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ätspegel
zugeteilt werden.
-
Es
stellt sich das Problem, ein neues Datenübertragungsverfahren in einem
global asynchronen Chipnetzwerk, das Elemente, die in Synchronlogik implementiert
sind, und/oder Elemente, die in Asynchronlogik implementiert sind,
umfassen kann, zu finden, sowie eine neue Chipnetzwerkstruktur mit
global asynchronem Betrieb – oder
die auf keinen Gesamttakt zurückgreift,
um die Datentransfers in ihrem Innern zu verwalten – die dabei
in Synchronlogik implementierte Elemente und/oder in Asynchronlogik implementierte
Elemente umfasst und fähig
ist, verschiedene Dienste-Typen anzuwenden, zum Beispiel in Abhängigkeit
davon, ob man einen schnellen Datentransfer zwischen bestimmten
Ressourcen oder eine garantierte Transferrate zwischen bestimmten Ressourcen
und für
bestimmte Daten bevorzugt.
-
OFFENBARUNG DER ERFINDUNG
-
Die
Erfindung umfasst eine verbesserte Chipnetzwerkstruktur sowie ein
verbessertes Verfahren für
den Transfer oder die Übertragung
von Daten in einem solchen Netzwerk.
-
Die
Erfindung betrifft zunächst
Verfahren zur Datenübertragung
in einem On-Chip-Netzwerk,
gebildet durch eine Vielzahl von Elementen, fähig untereinander zu kommunizieren,
wobei die Vielzahl von Elementen eine Vielzahl Ressourcen, fähig Datenverarbeitungen
durchzuführen,
und eine Vielzahl Knoten umfasst, fähig Ressourcen miteinander
zu verbinden und eine Verzweigung bzw. Weiterleitung der Daten in
dem Netzwerk zu realisieren, wobei jeder Knoten mit einer Vielzahl
Eingänge
und einer Vielzahl Ausgänge
versehen ist und das Verfahren dabei umfasst:
- – mit Hilfe
eines Asynchronkommunikationsprotokolls wenigstens einen Schritt
zum Transfer – von einem
Sendeelement des Netzwerks zu einem Empfangselement des Netzwerks – von wenigstens
einem Datenpaket, verknüpft
mit einer Information bezüglich
der Priorität
oder des Prioritätskanals
aus einer Gruppe von mehreren verschiedenen Prioritätskanälen, eine
oder mehrere Elementardatengruppen umfassend, "Flits" genannt, wobei der Transfer von einer
oder von mehreren Elementardatengruppen oder von allen Elementardatengruppen
des genannten Pakets von einer Sendung wenigstens eines dem genannten
Protokoll gemäßen Signals
eines ersten Typs durch das erste Element begleitet wird und von
dem zweiten Element, als Antwort auf das Signal des ersten Typs,
durch eine Sendung von wenigstens einem dem genannten Protokoll
gemäßen anderen
Signal eines zweiten Typs genehmigt wird.
-
Jedes
der in dem Netzwerk transferierten Datenpakete kann verknüpft werden
mit einer Prioritätspegel-
oder Prioritätskanalinformation,
ausgewählt
aus einer Gruppe unterschiedlicher Prioritätskanäle.
-
Nach
einer Anwendungsmöglichkeit
des Verfahrens – wobei
das genannte Datenpaket mit einer Prioritätsinformation oder Prioritätskanalinformation verknüpft ist – kann das
genannte Signal des ersten Typs gemäß dem genannten Asynchronprotokoll
wenigstens teilweise die Prioritätsinformation
oder Prioritätskanalinformation
umfassen, mit der dieses Paket verknüpft ist.
-
Nach
einer Anwendungsvariante des Verfahrens können das Signal des ersten
Typs, das die Sendung einer elementaren Datengruppe begleitet, und
die genannte Elementargruppe von Daten simultan gesendet werden.
-
Das
solche Transfers ermöglichende
Anwendungsprotokoll kann ein Hochpegelprotokoll sein, implementiert
in Synchron- und/oder Asynchronlogik. Dieses Protokoll kann also
ermöglichen,
Datentransfers zwischen wenigstens zwei Netzwerkblöcken zu realisieren,
jeweils synchron, aber phasenverschoben arbeitend, zum Beispiel
zwischen wenigstens einem mit einem ersten Takt verbundenen ersten
Knoten des Netzwerks und wenigstens einem mit einem zweiten Takt
verbundenen zweiten Knoten, verschieden oder phasenverschoben zum
ersten Takt.
-
Dieses
Protokoll kann auch ermöglichen, Datentransfers
zwischen zwei Netzwerkblöcken
zu realisieren, jeweils asynchron, zum Beispiel zwischen wenigstens
einem ersten taktlosen Knoten und wenigstens einem zweiten taktlosen
Knoten des Netzwerks.
-
Dieses
Protokoll kann auch ermöglichen, Datentransfers
zwischen wenigstens zwei Blöcken des
Netzwerks zu realisieren, jeweils synchron und asynchron, zum Beispiel zwischen
wenigstens einem ersten Knoten des Netzwerks, verbunden mit einem ersten
Takt, und wenigstens einem anderen Knoten, asynchron oder taktlos.
-
Das
Protokoll kann so vorgesehen werden, dass ein bestimmtes Flit oder
eine elementare Gruppe von Daten eines Datenpakets durch das Sendelement
gesendet werden kann sobald ein anderes, diesem bestimmten Flit
in dem Datenpaket vorausgehendes Flit durch das Empfangselement
akzeptiert worden ist.
-
Nach
einer Anwendungsmöglichkeit
des erfindungsgemäßen Datentransferverfahrens
kann dieses Verfahren außerdem
umfassen:
- – wenigstens
eine Arbitrierung – durch
wenigstens ein erstes Element des Netzwerks – einer Transferreihenfolge
zum Ausgang des ersten Elements zwischen dem ersten Datenpaket und
dem zweiten Datenpaket, wobei die Transferreihenfolge wenigstens
partiell in Abhängigkeit
von dem jeweiligen Prioritätskanal
bestimmt wird, mit dem das erste Paket und das zweite Paket durch
eine Netzwerkressource verknüpft
worden sind.
-
Das
erste Paket kann durch eine Ressource mit einem ersten Prioritätskanal
verknüpft
worden sein, ausgewählt
aus einer Gruppe vorher festgelegter Kanäle. Das zweite Paket kann seinerseits
durch dieselbe oder eine andere Ressource mit einem zweiten Prioritätskanal
verknüpft
worden sein, ausgewählt
aus einer Gruppe vorher festgelegter Kanäle mit zum ersten Kanal unterschiedlichem
Prioritätspegel.
-
Die
Verknüpfung
eines Datenpakets mit einem Prioritätskanal kann wenigstens teilweise
von dem Datentyp abhängen,
den dieses Paket enthält.
-
Zum
Beispiel können
Pakete, die von verschiedenen Ressourcen stammen und Daten eines ersten
Typs umfassen, zum Beispiel Unterbrechungsdaten, mit einem ersten
Prioritätskanal
verknüpft
werden, während
andere Datenpakete, die von verschiedenen Ressourcen stammen und
Daten eines zweiten Typs enthalten, zum Beispiel Rechen- bzw. Berechnungs-
oder Programmierungsdaten, mit einem zweiten Prioritätskanal
mit zum ersten Kanal unterschiedlichem Prioritätspegel verknüpft werden.
-
Die
durch eine Ressource realisierte Verknüpfung eines Datenpakets mit
einem Prioritätskanal
kann ermöglichen,
dieses Paket mit einem Diensttyp zu verbinden.
-
Verschiedene
Prioritätskanäle oder
virtuelle Kanäle
der genannten vorbestimmten Kanalgruppe können also ebenfalls ermöglichen,
verschiedene Datentransfer-Dienstetypen zu gewährleisten, zum Beispiel wenigstens
einen üblicherweise
Best-effort-Dienst genannten Dienst, und wenigstens einen üblicherweise
Latenzgarantie-Dienst genannten Dienst. Diese verschiedenen Dienste
können
mit einem einzigen Routingsystem implementiert werden.
-
Während des
Arbitrierungsschritts kann die Reihenfolge zwischen dem ersten Paket
und dem zweiten Paket eventuell nur in Abhängigkeit von den jeweiligen
Prioritätspegeln
des ersten Kanals und des zweiten Kanals bestimmt werden. Dies kann
zum Beispiel der Fall sein, wenn das erste Paket und das zweite
Paket mit unterschiedlichen Kanälen
verknüpft
sind. Die Transferreihenfolge zwischen dem ersten Paket und dem
zweiten Paket kann dann eventuell unabhängig von ihrer jeweiligen Ankunftsreihenfolge
beim ersten Knoten oder ihrer jeweiligen Herkunft bestimmt werden.
-
Nach
einer ersten Variante des Datenübertragungsverfahrens,
für die
das erste Datenpaket und das zweite Datenpaket jeweils mit einem
ersten Kanal und einem zweiten Kanal verknüpft worden sind, dessen Prioritätspegel
niedriger ist als der des ersten Kanals, haben eine erste Gruppe
von Daten des ersten Pakets und eine weitere Gruppe von Daten des
zweiten Pakets den ersten Knoten erreicht und schicken sich an,
zu einem Ausgang oder zu einem selben Ausgang des ersten Knotens
zu gelangen, wobei das Verfahren außerdem nach dem Arbitrierungsschritt
umfassen kann:
- – den Transfer des ersten Datenpakets
zum Ausgang des ersten Knotens,
- – den
Transfer des zweiten Datenpakets zum Ausgang des ersten Knotens,
nachdem am Ausgang des ersten Knotens die Gesamtheit des ersten
Pakets transferiert worden ist.
-
Gemäß einer
Möglichkeit
kann das Verfahren außerdem
nach dem Arbitrierungsschritt und vor dem Transferschritt der Gesamtheit
des zweiten Pakets umfassen:
- – den wenigstens
partiellen Stopp des zweiten Pakets in Höhe des ersten Knotens.
-
In
einem Fall, wo der Transfer des zweiten Pakets zum Ausgang des ersten
Knotens schon begonnen hat und wenigstens eine zweite Datengruppe des
zweiten Pakets schon zum Ausgang des ersten Knotens transferiert
worden ist und/oder den ersten Knoten schon verlassen hat, während noch
kein Datenelement des ersten Datenpakets zum Ausgang des ersten
Knotens transferiert worden ist und/oder den ersten Knoten schon
verlassen hat, kann das Verfahren außerdem umfassen:
- – den
Stopp der genannten anderen Datengruppe des zweiten Pakets,
- – die
Verschiebung oder den Transfer der genannten zweiten Datengruppe
des zweiten Pakets.
-
Nach
einer Anwendungsmöglichkeit
können sich
Daten des zweiten Pakets, die den ersten Knoten schon verlassen
haben, selbst dann verschieben, wenn der Transfer dieses zweiten
Pakets am Ausgang des ersten Knoten provisorisch gestoppt worden
ist.
-
In
einem Fall, wo vor dem Arbitrierungsschritt eine dritte Datengruppe
des zweiten Pakets den ersten Knoten noch nicht erreicht hat, kann
das Verfahren außerdem
nach dem Arbitrierungsschritt und eventuell während eines partiellen Stopps
des zweiten Datenpakets umfassen:
- – den Transfer
von wenigstens einem Teil der Daten der dritten Datengruppe des
zweiten Pakets zum Eingang des ersten Knotens.
-
Nach
einer Anwendungsmöglichkeit
können also
Daten, welche den ersten Knoten noch nicht erreicht haben, wenn
der Transfer des zweiten Pakets am Ausgang des ersten Knotens provisorisch
gestoppt worden ist, in diesen ersten Knoten gelangen.
-
In
einem Fall, wo nach dem Arbitrierungsschritt und vor dem Transfer
des zweiten Pakets wenigstens ein drittes Datenpaket, verknüpft mit
einem Kanal höherer
Priorität
als der des zweiten Kanals, den ersten Knoten erreicht und sich
anschickt, zu dem genannten Ausgang des ersten Knotens zu gelangen,
kann das Verfahren außerdem
umfassen:
- – vor
dem Transfer der Gesamtheit des zweiten Pakets den Transfer der
Gesamtheit des dritten Pakets zum Ausgang des ersten Knotens.
-
In
einem Fall, wo das dritte Paket mit einem Kanal gleicher Priorität wie der
des ersten Kanals verknüpft
ist, kann der genannte Transfer der Gesamtheit des dritten Pakets
zum Ausgang des ersten Knotens nach dem Transfer der Gesamtheit
des ersten Pakets und vor dem Schritt Transferschritt der Gesamtheit
des zweiten Pakets realisiert werden.
-
In
einem Fall, wo das dritte Paket mit einem Kanal höherer Priorität als der
des ersten Kanals verknüpft
ist, kann der genannte Transfer der Gesamtheit des dritten Pakets
vor dem Transferschritt des ersten Pakets realisiert werden.
-
Gemäß einer
zweiten Variante des Datenübertragungsverfahren,
bei der in Schritt a) das erste Datenpaket und das zweite Datenpaket
jeweils mit einem selben Prioritätskanal
verknüpft
sind, kann die Arbitrierung der Transferreihenfolge außerdem bestimmt
werden in Abhängigkeit
von der Reihenfolge der jeweiligen Ankunft – beim ersten Knoten – des ersten
Pakets und des zweiten Pakets. Zum Beispiel kann eine Arbitrierung
des Typs "wer zuerst
kommt, mahlt zuerst" benutzt
werden.
-
Die
Arbitrierung der Transferreihenfolge kann ebenfalls auch in Abhängigkeit
von dem Eingang des ersten Knotens bestimmt werden, durch den das
erste Paket und das zweite Paket jeweils in diesen ersten Knoten
gelangen. Zum Beispiel kann im Falle eines Knotens mit einem "Nord"-Eingang, einem "Ost"-Eingang, einem "West"-Eingang und einem "Süd"-Eingang
eine Arbitrierung des Typs "Nord"-Eingang prioritär in Bezug
auf "Ost"-Eingang prioritär in Bezug
auf "Süd"-Eingang prioritär in Bezug
auf "West"-Eingang benutzt
werden.
-
In
einem Fall, wo in dem Arbitrierungsschritt eine erste Datengruppe
des ersten Datenpakets und eine andere Datengruppe des zweiten Pakets
den ersten Knoten schon erreicht haben und sich anschicken zu einem
Ausgang oder einem selben Ausgang des ersten Knotens zu gelangen,
und eine zweite Datengruppe des zweiten Datenpakets schon zum Ausgang
des ersten Knotens transferiert worden ist oder den ersten Knoten
schon verlassen hat, kann das Verfahren außerdem nach dem Arbitrierungsschritt umfassen:
- – den
Transfer des zweiten Datenpakets zum Ausgang des ersten Knotens,
- – den
Transfer des ersten Datenpakets zum Ausgang des ersten Knotens nachdem
die Gesamtheit des zweiten Pakets zum Ausgang des ersten Knotens
transferiert worden ist.
-
In
einem Fall, wo wenigstens ein drittes Datenpaket – verknüpft mit
einem Kanal eines höheren Prioritätspegels
als dem Prioritätspegel
des Kanals, mit dem sowohl das erste Paket als auch das zweite Paket
verknüpft
sind –,
den ersten Knoten nach dem Arbitrierungsschritt und vor dem Transfer
der Gesamtheit des zweiten Pakets erreicht und sich anschickt, zu
dem genannten Ausgang des ersten Knotens zu gelangen, kann das Verfahren
außerdem
umfassen:
- – den
Transfer der Gesamtheit des genannten dritten Pakets zum Ausgang
des ersten Knotens vor dem Transferschritt des ersten Datenpakets.
-
In
einem Fall, wo das dritte Datenpaket vor oder während des Transferschritts
des zweiten Pakets ankommt, kann das Verfahren außerdem umfassen:
den Transfer der Gesamtheit des dritten Pakets zum Ausgang des ersten
Knotens, vor dem Transferschritt der Gesamtheit des ersten Pakets.
-
Das
Routing der Daten in dem Netzwerk kann vom deterministischen Typ
sein. Gemäß einer Anwendung,
in der das erste Paket und das zweite Paket dazu bestimmt sind,
in dem Netzwerk einen ersten Weg und einen zweiten Weg zu benutzen, kann das
Verfahren außerdem
umfassen: die Bestimmung des ersten Wegs und des zweiten Wegs vor
der Sendung des ersten Paket und des zweiten Pakets.
-
Die
Route oder der Weg, die bzw. den die Datenpakete in dem Netzwerk
benutzen, kann jeweils durch die Ressource oder Ressourcen zugeteilt worden
sein, die diese Daten gesendet haben.
-
Gemäß einer
Anwendungsmöglichkeit
dieser Variante kann das Verfahren außerdem vor dem Schritt b) umfassen:
- – die
Zuordnung von den ersten Weg betreffenden Daten zum ersten Paket
durch eine Ressource und von den zweiten Weg betreffenden Daten zum
zweiten Paket durch eine Ressource.
-
Die
einem Pakte zugeordneten Routing- oder Wegdaten können die
Form einer Ordnungsliste mit Daten bezüglich der für die Pakete in dem Netzwerk
bestimmten Richtungen haben. So können die Daten bezüglich des
ersten Wegs die Form einer ersten Richtungsdatenordnungsliste des
ersten Pakets in dem Netzwerk haben, während die den zweiten Weg betreffenden
Daten die Form einer zweiten Richtungsdatenordnungsliste des zweiten
Pakets in dem Netzwerk haben.
-
Nach
einer Anwendungsmöglichkeit
des Verfahrens kann dieses außerdem
umfassen:
- – die
Modifizierung – durch
den ersten Knoten – der
ersten Richtungsdatenordnungsliste vor dem Transfer des ersten Pakets
zum Ausgang des ersten Knotens und der zweiten Richtungsdatenordnungsliste
vor dem Transfer des zweiten Pakets zum Ausgang des ersten Knotens.
-
Das
Netzwerk kann global asynchron sein. So können ein oder mehrere Elemente
des Netzwerks – zum
Beispiel ein oder mehrere Knoten – durch einen ersten Takt gesteuert
werden, während ein
oder mehrere andere Elemente des Netzwerks, zum Beispiel ein oder
mehrere Ressourcen oder ein oder mehrere andere Knoten des Netzwerks
jeweils durch einen anderen als den ersten Takt gesteuert werden,
oder durch einen Takt, der nicht synchron ist mit dem ersten Takt.
Die Erfindung wendet also eine Methode zur Konzeption eines Chipnetzwerks
an, umfassend:
- – die getrennte Realisierung
wenigstens eines ersten Netzwerkblocks mit wenigstens einem Knoten
und/oder wenigstens einer mit einem ersten Takt verbundenen Ressource,
und wenigstens eines zweiten Netzwerkblocks mit wenigstens einem
anderen Knoten und/oder wenigstens einer mit einem von dem ersten
Takt unabhängigen Takt,
- – den
Zusammenbau oder die Verbindung des ersten und des zweiten Blocks
im Netzwerk.
-
Gemäß einer
Variante kann das Netzwerk global asynchron sein und mit asynchronen
Elementen, zum Beispiel asynchronen Knoten, ausgestattet sein. So
können
ein oder mehrere Elemente, zum Beispiel ein oder mehrere Knoten,
nicht durch einen Takt gesteuert werden. Die Synchronisation zwischen
asynchronen Elementen kann auf lokale Weise realisiert werden, zum
Beispiel durch eine sogenannte "Handgriff"-Signalisierung oder
eine solche des "Send-Accept"-Typs.
-
Gemäß einer
anderen Anwendungsmöglichkeit
des erfindungsgemäßen Datentransferverfahrens
kann dieses Verfahren außerdem
umfassen:
- – wenigstens
eine Arbitrierung – durch
wenigstens ein erstes Element des Netzwerks, zum Beispiel einer
ersten Ressource des Netzwerks – einer Transferreihenfolge
zum Ausgang dieser ersten Ressource zwischen wenigstens einem ersten Datenpaket
und wenigstens einem zweiten Datenpaket, wobei die Transferreihenfolge
wenigstens partiell in Abhängigkeit
von einen Prioritätskanal
oder Prioritätskanälen bestimmt
wird, mit dem (denen) das erste Paket und das zweite Paket verknüpft worden
sind.
-
Die
Erfindung sieht ebenfalls eine Konzeptionsmethode eines Netzwerkchips
vor, umfassend:
- – die getrennte Konzeption
wenigstens eines ersten Netzwerkblocks mit wenigstens einem Knoten und/oder
wenigstens einer mit einem ersten Takt verknüpften Ressource, und wenigstens
einen zweiten Netzwerkchip mit wenigstens einem anderen taktlosen
Knoten und/oder wenigstens einer anderen taktlosen Ressource,
- – den
Zusammenbau oder die Verbindung des ersten und zweiten Blocks.
-
Die
Erfindung betrifft auch eine On-Chip-Netzwerkvorrichtung mit einer
Vielzahl von Elementen, fähig
untereinander zu kommunizieren, darunter eine Vielzahl von Ressourcen,
fähig Datenverarbeitungen
durchzuführen,
und einen oder mehrere Knoten mit einem oder mehreren Eingängen und einem
oder mehreren Ausgängen,
fähig eine
Verzweigung bzw.
-
Weiterleitung
von Daten zu realisieren, wobei wenigstens zwei Elemente des Netzwerks
umfassen:
- – Datensendeeinrichtungen,
fähig Daten
in Form von Paketen zu senden, die jeweils eine oder mehrere Elementardatengruppen
umfassen,
- – Datenempfangseinrichtungen,
fähig Daten
in Form von Paketen zu empfangen, die jeweils eine oder mehrere
Elementardatengruppen umfassen,
- – Sendeeinrichtungen
von Synchronisationssignalen entsprechend einem Asynchronkommunikationsprotokoll,
zum Beispiel des "Send-Accept"-Typs, fähig wenigstens
ein Signal eines ersten Typs zu senden, das eine Sendung einer Elementardatengruppe
begleitet oder mit einer Sendung einer Elementardatengruppe verknüpft ist,
- – Empfangseinrichtungen
von Synchronisationssignalen entsprechend dem Asynchronkommunikationsprotokoll,
fähig wenigstens
ein Signal eines zweiten Typs zu empfangen, vor einem Empfang einer
Elementardatengruppe, außerdem
umfassend:
- – Einrichtungen
zur Genehmigung der Sendung einer Elementardatengruppe eines Pakets
nach dem Empfang eines Synchronisationssignals des zweiten Typs
und zur Genehmigung des Empfangs einer Elementardatengruppe eines
Pakets nach dem Empfang eines Synchronisationssignals des ersten
Typs.
-
Gemäß einer
Realisierungsmöglichkeit
der Vorrichtung können
das Signal des ersten Typs, verknüpft mit einer Sendung einer
Elementargruppe von Daten, und diese Elementargruppe von Daten simultan
gesendet werden.
-
Die
in einer solchen Vorrichtung übertragenen
Datenpakete können
alle mit einer Prioritäts- oder
Prioritätskanalinformation
verknüpft
werden. Das genannte Asynchronprotokoll kann die Prioritäts- oder
Prioritätskanalinformation
enthalten.
-
So
kann der erste Signaltyp gemäß dem genannten
Asynchronprotokoll, der durch die Synchronisationssignal-Sendeeinrichtungen
gesendet wird und die Sendung einer Elementargruppe von Daten eines
Datenpakets begleitet, wenigstens teilweise die Prioritäts- oder Prioritätskanalinformation
enthalten, mit der das Datenpaket verknüpft ist.
-
Nach
einer Realisierungsmöglichkeit
der erfindungsgemäßen Vorrichtung
kann diese letztere außerdem
umfassen:
- – wenigstens
eine erste Ressource mit Prioritätszuordnungseinrichtungen,
fähig wenigstens
ein durch diese Ressource gesendetes Datenpaket mit wenigstens einem
aus einer vorherbestimmten Gruppe von Prioritätskanälen ausgewählten Prioritätskanal
zu verknüpfen,
zum Beispiel in Abhängigkeit
von dem Datentyp, den dieses Paket enthält;
- – wenigstens
ein erstes Element, zum Beispiel einen ersten Knoten, außerdem umfassend:
Arbitrierungseinrichtungen, fähig
zur Bestimmung einer Transferreihenfolge zum Ausgang des ersten Elements
zwischen wenigstens einem ersten Paket, verknüpft mit einem Prioritätskanal,
und wenigstens einem zweiten Paket, verknüpft mit einem Prioritätskanal,
wobei die Transferreihenfolge jeweils wenigstens in Abhängigkeit
von einem Prioritätskanal
oder von Prioritätskanälen bestimmt
wird, mit dem/denen das erste Paket und das zweite Paket durch eine
jeweilige Ressource des Netzwerks verknüpft worden sind.
-
Das
Netzwerk kann eine global asynchrone Funktionsweise haben. Nach
einer Realisierungsmöglichkeit
der Erfindung kann der erste Knoten durch einen ersten Takt gesteuert
werden, kann das Netzwerk wenigstens einen zweiten Knoten umfassen,
gesteuert durch einen zweiten Takt, der verschieden ist zum ersten
Takt oder nicht synchron ist zum ersten Takt.
-
Die
On-Chip-Netzwerkvorrichtung kann eventuell mit einer oder mehreren
Asynchronknoten versehen sein. Nach einer Realisierungsmöglichkeit der
On-Chip-Netzwerkvorrichtung
kann diese einen oder mehrere Asynchronknoten umfassen, die nicht durch
einen Takt gesteuert werden, und einen oder mehrere andere Synchronknoten,
die durch einen Takt gesteuert werden.
-
Nach
einer Realisierungsmöglichkeit
der On-Chip-Netzwerkvorrichtung kann die erste Ressource außerdem umfassen:
- – Wegdaten-Zuordnungseinrichtungen,
fähig wenigstens
einem Datenpaket, das die erste Ressource sendet, Daten bezüglich des
Wegs zuzuteilen, den dieses Paket in dem Netzwerk benutzt.
-
Nach
einer Realisierungsart des Netzwerks, bei der das erste Paket und
das zweite Paket von Daten jeweils mit ersten Wegdaten verknüpft worden sind,
zum Beispiel in Form einer ersten Ordnungsliste der zu nehmenden
Richtungen, und mit zweiten Wegdaten, zum Beispiel in Form einer
zweiten Ordnungsliste der zu nehmenden Richtungen durch eine jeweilige
Ressource des Netzwerks, wobei der erste Knoten außerdem umfasst:
- – Datenroutingeinrichtungen,
fähig ein
Routing des genannten ersten Pakets und des genannten zweiten Pakets
wenigstens partiell oder total in Abhängigkeit von jeweiligen Wegdaten
durchzuführen,
mit denen das erste Paket und das zweite Paket jeweils durch eine
Ressource des Netzwerks verknüpft
worden sind.
-
Nach
einer Realisierungsart der On-Chip-Netzwerkvorrichtung kann der
erste Knoten außerdem
umfassen: Wegdatenspeichereinrichtungen.
-
Nach
einer Realisierungsvariante der On-Chip-Netzwerkvorrichtung kann
der erste Knoten außerdem
umfassen: Modifizierungseinrichtungen zum Beispiel zur Verschiebung
von Wegdaten. Diese Verschiebung kann ermöglichen, die Wegdaten für einen
Nachbarknoten vorzubereiten.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird besser verständlich durch die Lektüre der Beschreibung
nur erläuternder
und keinesfalls einschränkender
Realisierungsbeispiele, bezogen auf die beigefügten Zeichnungen:
-
die 1A, 1B, 1C zeigen
Beispiele erfindungsgemäßer Chipnetzwerk-Architekturen,
-
die 2 zeigt
ein Beispiel eines Zeitdiagramms, 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 3A–3F veranschaulichen
verschiedene Schritte eines Datentransferverfahrens,
-
die 4A–4C veranschaulichen
ein Beispiel einer Datenverzweigungsknotenstruktur in einem erfindungsgemäßen Chipnetzwerk.
-
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 lesbarer
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 Maschen-
bzw. Vernetzungstyps.
-
Diese
Architektur umfasst eine Vielzahl von Elementen 110, fähig Datenverarbeitungen
durchzuführen
und untereinander zu kommunizieren, indem sie insbesondere 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 zu initiieren. Dieses Element 112, das
man mit "Netzwerkcontroller" bezeichnet, hat
also die Möglichkeit,
die Kommunikationen zwischen einer Vielzahl anderer Elemente 114 des
Netzwerks, "Ressourcen" genannt, zu programmieren,
die dann ihrerseits ermöglichen,
Aufgaben wie etwa die Verarbeitung von elementaren Daten zu erfüllen, zum
Beispiel Berechnungen oder Speicherungen oder Codierungen/Decodierungen
von Daten. Der Netzwerkcontroller 112 kann zum Beispiel ein
Prozessor oder ein Mikrocontroller sein. Dieser Letztere kann insbesondere
auch die Funktion haben, Berechnungen durchzuführen und Unterbrechungen zu
verwalten. Jede der Ressourcen 114 kann generischen Typs
sein, zum Beispiel in Form eines Prozessors oder eines DSP (für "Digital Signal Prozessor"), oder spezifischen
Typs, wie etwa ein Speicher zum Beispiel des Typs SRAM (für "Static Random Access
Memory"), oder ein
spezialisiertes Verarbeitungsmodul, wie zum Beispiel ein zur Berechung
einer FFT ("Fast
Fourier Transform")
spezialisiertes Modul, oder zum Beispiel ein Codier- und/oder Decodiermodul
des Typs MPEG ("Moving Pictures
Expert Groups").
Jede Ressource 114 der Netzwerkstruktur umfasst Einrichtungen
oder einen "Funktionskern" genannten Teil,
insbesondere für Verarbeitungen
von Daten und/oder für
Berechnungen, sowie andere Einrichtungen oder einen "Netzwerk-Interface" genannten anderen
Teil, um der Ressource 114 zu ermöglichen, mit dem Netzwerk zu kommunizieren.
-
Die
Ressourcen 114 des Netzwerks sind miteinander verbunden
und tauschen untereinander Daten aus, über Verbindungen 115 und
Knoten 120. Die Ressourcen 114 des Netzwerks sind
auch fähig,
in ihrem Innern eine Transferreihenfolge zwischen verschiedenen
Daten oder Datenflüsse
zu entscheiden. Jede Ressource des Netzwerks kann also entscheiden,
welches von mehreren Datenpaketen, die diese Ressource senden soll,
als erstes zum Ausgang weitergeleitet oder transferiert werden muss.
-
Die
Knoten 120 ermöglichen,
eine physikalische Verbindung herzustellen – zum Beispiel mit Hilfe von
Multiplexern – zwischen
einer oder mehreren Eingangsverbindungen und einer oder mehreren Ausgangsverbindungen,
sowie eine Verzweigung der Kommunikationen zwischen den Ressourcen 114. Bei
der sogenannten Vernetzungs- bzw. Maschen- oder Matrizentopologie,
dargestellt in der 1A, ist jeder Knoten 120 mit
vier anderen Knoten verbunden und mit einer der Ressourcen 114 verknüpft.
-
Bezüglich der
Vernetzung 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 vom deterministischen
Typ sein. In diesem Fall kann jeder Knoten des Netzwerks ein Routing
eines Datenpakets ausschließlich
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 eingegeben worden sein, oder dem Paket durch eine Ressource,
die dieses Paket gesendet hat, zugeordnet worden sein.
-
Die
Knoten 120 des Netzwerks sind auch fähig, eine Arbitrierung der
Daten durchzuführen.
Jeder Knoten des Netzwerks kann also entscheiden, welches der Datenpakete,
die er erhält,
zuerst weitergeleitet oder transferiert werden muss. Jeder Knoten des
Netzwerks kann vorgesehen werden, um eventuelle Konflikte zwischen
den bei ihm eintreffenden Daten zu verwalten und zum Beispiel zu
bestimmen, welches Datenpaket zuerst in Richtung Ausgang oder Verbindung
weitergeleitet werden muss.
-
Vorteilhafterweise
kann jeder Knoten vorgesehen werden, um eventuell simultan zu entscheiden,
welche von mehreren möglichen
Reihenfolgen und welcher von mehreren Ausgängen für den Transfer von Datenpaketen
benutzt wird.
-
Die
globale Funktionsweise oder globale Übertragungsart von Daten in
dem Netzwerk kann asynchron sein, so dass die Übertragung oder der Transfer
von Daten in dem Netzwerk ohne einen globalen gemeinsamen Takt aller
Knoten und/oder Ressourcen des Netzwerks geregelt wird. So können wenigstens
zwei Knoten des Netzwerks und/oder wenigstens ein Knoten und eine
Ressource des Netzwerks durch unterschiedlicht Takte gesteuert werden. Ein
oder mehrere Elemente, zum Beispiel ein oder mehrere Knoten eines
ersten Blocks des Netzwerks können
durch einen ersten Takt gesteuert werden, während ein oder mehrere andere
Elemente des Netzwerks, zum Beispiel ein oder mehrere andere Knoten
eines zweite Blocks durch einen zum ersten Takt verschiedenen Takt
oder durch einen zum ersten Takt synchronen Takt gesteuert werden
können. Nach
einer Variante können
ein oder mehrere Knoten jeweils asynchron und taktlos sein.
-
Die
erfindungsgemäße Chipnetzwerk-Architektur
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
eine Variante der oben beschriebenen Architektur, in der man in
Bezug auf die in der 1A dargestellte Vernetzung zusätzliche Knoten
sieht.
-
Unter
den zusätzlichen
Knoten befinden sich Repetitionsknoten 122, die nicht mit
einer Ressource verbunden sind und in dem Netzwerk die "Pipeline"-Rolle spielen. Diese
Knoten 122 ermöglichen eine
Erhöhung
des Netzwerkdurchsatzes.
-
Diese
Netzwerkarchitekturvariante kann speziell hinsichtlich einer Anwendung
oder eines Verarbeitungssystems konzipiert werden, bei der bzw. dem
es voraussichtlich zu Latenz- und Durchsatzzwängen kommt. Bei der Konzeption
des Netzwerks können
weitere zusätzliche
Knoten oder "Spezialknoten" 124 an
spezifischen Stellen oder in spezifischen Zonen des Netzwerks vorgesehen
werden (in der 1B gestrichelt begrenzt), wo
der Datenverkehr normalerweise sehr stark ist. Diese Spezialknoten 124 können also
dem Netzwerk ermöglichen,
voraussichtliche Durchsatz- und Latenzzwänge auszuhalten.
-
Die 1C zeigt
eine Variante von einer der oben beschriebenen Architekturen, in
der man eine Gruppe 150 (gestrichelt begrenzt) asynchroner
oder taktloser Knoten 152 sieht, die eine Trennung oder eine
Schnittstelle zwischen mehreren anderen Gruppen 132, 134, 136 (ebenfalls
gestrichelt begrenzt) realisiert, die jeweils synchrone oder taktgesteuerte Knoten 142, 144, 146 umfassen.
-
Eine
solche Netzwerkarchitekturvariante kann platzsparend sein und schneller
konzipierbar als eine Architektur, die nur asynchrone oder taktlose Knoten
enthält.
-
Bei
beiden oben beschriebenen Netzwerkarchitekturen können die
zwischen Ressourcen 114 ausgetauschten Daten, welche die
Verbindungen 115 und die Knoten 120 durchlaufen,
Datenpakete sein. Ein Paket kann durch eine "Flit" genannte
Datengruppe gebildet werden, oder durch mehrere aufeinanderfolgende
Datengruppen oder Flits, die dazu bestimmt sind, einen selben Weg
zu benutzen. Ein Flit ist die elementare Datenübertragungseinheit in dem Netzwerk.
Einem Flit oder einer elementaren Datengruppe entspricht eine Kapazität einer
Verbindung 115 oder eine Anzahl in einer Verbindung 115 enthaltener
physikalischer Verbindungen oder Faserverbindungen. Ein in dem Netzwerk
zirkulierendes Datenpaket umfasst generell wenigstens ein seinen Kopf
bzw. Header bezeichnendes Flit, sowie ein sein Ende bezeichnendes
Flit und eventuell ein oder mehrere Zwischenflits zwischen dem Headerflit
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 das Flit, zu dem dieses Bob-Bit gehört, ein
Headerflit eines Pakets ist.
-
Ein
zweites 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
Endflit eines Pakets ist.
-
Die
Information "Bop" am Paketanfang und die
Information "Eop" am Paketende können gemäß einer
unterschiedlichen Codierung implementiert werden. Eine Codierung über zwei
Bits, die je nach Wert dieser beiden Bits angibt, ob ein Flit ein
Paketende-Flit oder ein Paketanfang-Flit oder ein Zwischenflit ist,
kann benutzt werden.
-
Ein
Flit eines Datenpakets kann – abgesehen von
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 Funktionsweise einer Ressource 114 zu
konfigurieren.
-
Ein
Headerflit einer eines Datenpakets umfasst – außer den Positionsinformationsbits – mehrere
spezifische Bits, die man "Kontrollbits" nennt, zum Beispiel
14 Kontrollbits, um insbesondere zu ermöglichen, eine Konfiguration
und/oder eine Steuerung einer dieses Headerflit erhaltenden Ressource
anzugeben, zum Beispiel einen Befehl zum Schreiben von Daten oder
einen Befehl zum Lesen von Daten.
-
Ein
Headerflit eines Datenpakets umfasst auch mehrere andere spezifische
Routingbits, zum Beispiel 18 Routingbits. In dem Headerflit bezeichnen
die Routingbits einen Weg, welcher der vollständige Weg sein kann, der für das Datenpaket,
zu dem dieses Headerflit gehört,
in dem Netzwerk bestimmt ist. Dieser Weg kann in Form einer Richtungsdatenordnungsliste
vorhanden sein, wobei jeder Richtungsdatensatz über mehrere Bits codiert ist.
-
In
einem Fall von zum Beispiel einem Netzwerk mit Maschentopologie,
wie beschrieben in Verbindung mit der 1,
wo Knoten des Netzwerks jeweils mit einem "nördlichen", einem "östlichen", einem "südlichen", einem "westlichen" Nachbarknoten und
mit einer Ressource verbunden werden können, kann ein Richtungsdatensatz
auf zwei Bits codiert werden. Die beiden Bits eines Richtungsdatensatzes bedeuten
dann zum Beispiel Richtung "Nord", wenn sie einen
Wert "00" haben, Richtung "Ost", wenn sie einen
Wert "01" haben, Richtung "Süd", wenn sie einen Wert "11" haben, Richtung "West", wenn sie einen
Wert "10" haben. Im Fall von
zum Beispiel einem Paket mit 18 Routingbits, kann eine Ordnungsliste mit
9 codierten Richtungen vorgesehen werden, jede auf zwei Bits. Man
kann vorsehen, dass zwei identische Richtungsdatensätze, zum
Beispiel zwei in der Ordnungsliste aufeinanderfolgende Werte "11" und "11" oder zwei in der
Ordnungsliste aufeinanderfolgende Werte "10" und "10" ein Routing des
Pakets in Richtung einer Ressource bedeuten.
-
Zur
Durchführung
des Routings von Datenpaketen können
alle Knoten des Netzwerks so vorgesehen sein, dass sie, wenn sie
ein Datenpaket empfangen, einen Richtungsdatensatz lesen oder decodieren,
der sich in einer bestimmten vorher festgelegten Position der Richtungsdatenordnungsliste
befindet, zum Beispiel einen Richtungsdatensatz am Ende der Ordnungsliste,
dann für
einen nachfolgenden Nachbarknoten die Reihenfolge der Ordnungsliste
so modifizieren oder verschieben, dass nach der Verschiebung ein
anderer in der bestimmten vorher festgelegten Position befindlicher
Richtungsdatensatz das für
diesen Nachbarknoten durchzuführende Routing
angibt.
-
So
können
zum Beispiel im Fall eines Pakets mit 18 Routingbits und einer Ordnungsliste
mit 9 codierten Richtungen, jede auf zwei Bits, alle Knoten des
Netzwerks so vorgesehen sein, dass sie, wenn sie das Paket erhalten,
die beiden wertniedrigen Routingbits lesen oder decodieren, dann
die Reihenfolge der Routingbits für den nächsten Knoten so modifizieren,
dass die 2 Routingbits, die sich vor der Verschiebung vor den wertniedrigen
Bits befanden, nach der Verschiebung die 2 wertniedrigen Bits sind.
-
Wie
weiter oben beschrieben, insbesondere um die Anzahl der Routingbits
eines Pakets zu reduzieren, kann man eine spezifische Codierung
der Routingbits vornehmen, um einen Knoten anzuweisen, das Routing
eines Datenpakets in Richtung eines Knotens vorzunehmen.
-
Die
Knoten des Netzwerks können
alle so vorgesehen sein, dass sie, wenn sie ein Paket empfangen,
einen ersten Richtungsdatensatz, der sich am Ende der Richtungsdatenordnungsliste
dieses Paket befindet, lesen oder decodieren, dann den nachfolgenden
Richtungsdatensatz in der Richtungsdatenordnungsliste lesen oder
decodieren und, wenn der nachfolgende Richtungsdatensatz mit dem
ersten Richtungsdatensatz identisch ist, ein Routing des Pakets
in Richtung ihrer jeweiligen Ressource vornehmen.
-
So
kann zum Beispiel im Fall eines Pakets mit 18 Routingbits und einer
Liste mit 9 codierten Richtungen, jede auf zwei Bits, ein Knoten
des Netzwerks so vorgesehen sein, dass er, wenn er das Paket erhält, die
2 wertniedrigen Routingbits liest oder decodiert, dann die 2 Routingbits
liest oder decodiert, die auf die 2 wertniedrigen Routingbits folgen,
und, wenn die 2 wertniedrigen Routingbits und die 2 auf die 2 wertniedrigen
Routingbits folgenden Routingbits identisch sind, das Paket in Richtung
der Ressource weiterleitet, mit der er verbunden ist.
-
Wie
weiter oben angegeben, kann das Netzwerk bezüglich des Routings der Datenpakete
in dem Netzwerk vom deterministischen 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 Routingbits des Headerflits
des Pakets, das sie sendet, einen Wert zu.
-
Wenn
eine erste Ressource 114a des Netzwerks zu einem bestimmten
Zeitpunkt einer zweiten Ressource 114b des Netzwerks ein
erstes Datenpaket sendet, kann das erste Datenpaket dazu bestimmt
sein, zwischen der ersten Ressource 114a und der zweiten
Ressource 114b einen durch die erste Ressource 114a festgelegten
Weg zu benutzen (gepfeilt-gestrichelte Linie 116 in der 1B).
Ein Knoten des Netzwerks, bei dem das erste Datenpaket eintrifft,
realisiert dann das Routing dieses ersten Datenpakets nur oder prinzipiell
in Abhängigkeit
von den Routingbits des Headerflits. Bei einer anderen Sendung eines
zweiten Datenpakets durch die erste Ressource 114a an eine
zweite Ressource 114b zu einem zum Zeitpunkt t1 verschiedenen
anderen Zeitpunkt t2 kann das zweite Datenpaket
dazu bestimmt sein, zwischen der ersten Ressource 114a und
der zweiten Ressource 114b einen durch die erste Ressource 114a anderen
Weg zu benutzen (gepfeilt-gestrichelte Linie 117 in der 1B).
-
Damit
eine bestimmte Ressource des Netzwerks einem Paket, das diese Ressource
senden wird, Daten zuweisen kann, die den Weg betreffen, den dieses
Paket in dem Netzwerk benutzen wird, kann eine Routing-Berechnung
oder -Vorausberechnung erfolgen, zum Beispiel durch den Netzwerkcontroller
oder einen Netzwerk-externen Rechner.
-
Die
Berechnung kann mit Hilfe eines adaptiven Routing-Algorithmus des
sogenannten "Deadlock
free"-Typs realisiert
werden, zum Beispiel des Typs, beschrieben in dem Dokument "The Turn Model for
Adaptive Routing",
C. J. Glass, L. M. Ni, Association for Computing Machinery, 1992.
Nach erfolgter Berechnung kann der Netzwerkcontroller das Resultat
der bestimmten bzw. betreffenden Ressource senden.
-
Die
betreffende Ressource weist dem Datenpaket aufgrund dieses Resultats
einen Weg zu, indem sie zum Beispiel den Routingbits des Headerflits dieses
Pakets einen Wert zuteilt.
-
Der
Datenfluss, der dazu bestimmt ist, während einer Verarbeitung oder
einer Anwendung das eine oder andere der oben beschriebenen Netzwerke zu
durchqueren, kann vom sogenannten "Wormhole"-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 durchläuft von einem Datenpaket, gesendet
durch eine Senderessource an eine Empfangsressource, zuerst das
Headerflit den Weg zwischen der Senderessource und der Empfangsressource,
dann folgen eventuell ein oder mehrere Zwischenflits, verteilt in
schon von dem Headerflit durchquerten Netzwerkknoten. Das Endflit schließt den durch
den Datenfluss benutzten Weg.
-
Ein
Synchronisationsmechanismus zwischen einem Daten sendenden Netzwerkelement, zum
Beispiel einem ersten Knoten, und einem Daten empfangenden Netzwerkelement,
zum Beispiel einem zweiten Knoten oder einer Ressource, ist in dem Zeitdiagramm
der 2 dargestellt. Der Datentransfer zwischen dem
Sendeelement und dem Empfangselement wird geregelt durch ein Synchronisationsprotokoll
des "Send-Accept"-Typs, 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 Signale.
-
In
diesem Zeitdiagramm zeigt ein Sendesignal oder "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 Akzeptiersignal oder "Accept"-Signal 210, das von dem Empfangselement
stammt, zeigt an, indem es zum Beispiel zu diesem Zeitpunkt t0 in einem Niedrigzustand ist, dass das Empfangselement
bereit ist, diese Daten zu empfangen. Also wird, wie die Kurve 220 anzeigt,
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 in diesem Hochzustand. Dieses Bob-Signal
gibt an, dass das erste Flit ein Headerflit ist. Ein zweites Flit
und dass 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
werden).
-
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 Akzeptiersignal
dieses vierten Flits zurück.
In einem Fall, wo zum Beispiel das Empfangselement ein Synchronknoten
ist, kann dieser Knoten das vierte Flit empfangen und speichern,
seine Benutzung abwartend. In einem anderen Fall, wo das Empfangselement
zum Beispiel Asynchronknoten ist, kann dieser Knoten das vierte Flit
in dem Sendeelement zurückhalten,
indem er dieses vierte Flit nicht quittiert.
-
Nach
diesem Sendeversuch, zu einem Zeitpunkt t2,
hört das
Sendeelement dann auf, Daten zu senden (Teil 220 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. 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 Datenemission.
-
Alle
in dem Netzwerk weitergeleiteten Datenpakete können verknüpft werden mit einer Information
des Typs Prioritätsniveau
oder Prioritätskanal, "virtueller Kanal" genannt, ausgewählt aus
einer vorher festgelegten Liste von wenigstens zwei verschiedenen
virtuellen Kanälen,
zum Beispiel zwei verschiedenen virtuellen Kanälen oder drei verschiedenen
virtuellen Kanälen.
Jeder virtuelle Kanal bezieht sich auf ein Prioritätsniveau
oder eine Prioritätsnummer
und verleiht einem Datenpaket, mit dem er verknüpft ist, wenn dieses Paket
den Ausgang eines Netzwerkknotens erreicht, einen Prioritätsgrad,
insbesondere was die Arbitrierung der Pakettransfer-Reihenfolge
betrifft.
-
Die
Verknüpfung
eines Datenpakets mit einem virtuellen Kanal kann durch eine Ressource
erfolgen, die dieses Paket in das Netzwerk eingespeist hat.
-
Die
Prioritätskanalinformation,
mit der ein Datenpaket verknüpft
werden kann, kann wenigstens teilweise in Synchronisationssignalen
des Synchronisationsprotokolls des "Send-Accept"-Typs enthalten sein,
wie oben in Verbindung mit der 2 beschrieben,
und insbesondere in den Signalen des "Send"-Typs,
welche die Sendung von Elementardatengruppen des Pakets begleiten.
So können
also ein erstes Paket, verknüpft
mit einem ersten Prioritätskanal,
und ein zweites Paket, verknüpft
mit einem zum ersten Prioritätskanal
verschiedenen zweiten Prioritätskanal,
von Synchronisationssignalen begleitet werden und insbesondere von
unterschiedlichen Signalen des "Send"-Typs.
-
In
einem ersten Netzwerkelement, zum Beispiel einer ersten Ressource,
kann ein erstes Datenpaket im Innern dieser ersten Ressource und
zum Beispiel verknüpft
mit einem ersten Kanal eines bestimmten Prioritätsniveaus, weitergeleitet werden zum
Ausgang dieser ersten Ressource, prioritär in Bezug auf ein anderes
Datenpaket in der ersten Ressource und zum Beispiel verknüpft mit
einem zweiten Kanal eines niedrigeren Prioritätsniveaus als demjenigen des
ersten Kanals.
-
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ätsniveaus, weitergeleitet werden
zum Ausgang dieses ersten Knotens, prioritär in Bezug auf ein anderes
zum Beispiel mit einem zweiten Kanal verknüpftes Datenpaket eines niedrigeren
Prioritätsniveaus als
demjenigen des ersten Kanals, insbesondere in einem Fall, wo das
erste Paket und das andere Paket sich anschicken, einen selben Ausgang
des ersten Knotens zu erreichen.
-
In
einem Fall, wo das mit dem ersten Kanal verknüpfte erste Paket den ersten
Knoten erreicht, während
ein Transfer des mit dem zweiten Kanal verknüpften anderen Datenpakets am
Ausgang des ersten Knotens schon begonnen hat, kann das erste Paket
in Bezug auf das andere Datenpaket ebenfalls prioritär transferiert
werden.
-
Gemäß einer
Implementierungsmöglichkeit der
virtuellen Kanäle,
können
drei verschiedene virtuelle Kanäle
vorgesehen werden, zum Beispiel ein erster Kanal mit dem höchsten Prioritätsniveau,
ein zweiter Kanal mit einem niedrigeren Prioritätsniveau als der erste Kanal,
und ein dritter Kanal mit einem Prioritätsniveau, das niedriger ist
als diejenigen des ersten Kanals und des zweiten Kanals.
-
Die
Verknüpfung
eines Datenpakets mit einem virtuellen Kanal oder einem Prioritätskanal
kann insbesondere vom Typ der Daten abhängen, die dieses Paket enthält.
-
Der
erste Kanal kann zum Beispiel für
einen ersten Datentyp reserviert sein, zum Beispiel für Datenpakete,
die Unterbrechungsdaten enthalten. Der zweite Kanal kann dann zum
Beispiel für
einen zweiten Typ von Daten reserviert sein, die weniger prioritär sind als
die Daten des ersten Typs, also zum Beispiel Datenpakete, die Daten
zur Programmierung oder Konfiguration der Funktionsweise der Ressourcen
enthalten. Der dritte Kanal kann zum Beispiel für einen dritten Datentyp reserviert
sein, deren Priorität niedriger
ist als die der Daten des ersten und des zweiten Typs, zum Beispiel
für Datenpakete
mit Daten, die für
die Ressourcen bestimmt sind und die Berechnungen oder Verarbeitungen
betreffen, welche diese Ressourcen durchführen müssen.
-
Die
Verknüpfung
eines Datenpakets mit einem virtuellen Kanal oder einem Prioritätskanal
kann insbesondere auch von einem Diensttyp abhängen, mit dem man dieses Paket
verbinden will.
-
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 das Durchlassband 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 g gewährleisten.
-
Nach
einer Variante, bei der man dem Beispiel mit drei virtuellen Kanälen folgt,
wie oben beschrieben, kann der Kanal mit der höchsten Priorität dazu benutzt
werden, einen Latenzgarantie-Dienst zu gewährleisten, verknüpft mit
Datenpaketen, die einen Typ prioritärer Daten enthalten, zum Beispiel
Unterbrechungsdaten. Der zweite Kanal und der dritte Kanal können benutzt
werden, um einen Best-effort-Dienst zu gewährleisten und jeweils verknüpft zu werden,
einerseits mit Datenpaketen, die einen Datentyp umfassen, dessen
Priorität
niedriger ist als die des ersten Kanals, zum Beispiel Konfigurationsdaten,
und andererseits mit Datenpaketen, die einen Datentyp umfassen,
dessen Priorität
niedriger ist als die des ersten und des zweiten Kanals, zum Beispiel Rechen-
bzw. Berechnungsdaten.
-
Man
kann vorsehen, insbesondere wenn Pakete einen selben Knoten des
Netzwerks erreichen, dass ein mit einem virtuellen Kanal verknüpftes Datenpaket,
zum Beispiel ein erstes Datenpaket, verknüpft mit einem ersten virtuellen
Kanal, ein anderes Datenpaket unterbrechen kann, das mit einem virtuellen
Kanal von niedrigerem Prioritätsniveau
verknüpft
ist, zum Beispiel ein zweites Datenpaket, verknüpft mit einem zweiten Kanal
mit einer niedrigeren Priorität
als der erste Kanal. Es können
also in einem Fall – obwohl
ein oder mehrere Flits des mit dem zweiten Kanal verknüpften zweiten
Pakets den Knoten durchquert haben –, ein oder mehrere Flits oder sogar
alle Flits des mit dem ersten Kanal verknüpften ersten Pakets den Knoten
durchqueren, bevor das zweite Paket diesen selben Knoten ganz durchquert hat.
-
Man
kann auch vorsehen, dass zwei mit einem selben Prioritätskanal
verknüpfte
Datenpakete, zum Beispiel ein mit dem ersten Kanal verknüpftes erstes
Paket und ein ebenfalls mit dem ersten Kanal verknüpftes drittes
Paket sich nicht gegenseitig unterbrechen, insbesondere, wenn diese
Pakete einen selben Knoten des Netzwerks erreichen.
-
Es
folgt ein Beispiel eines Datenübertragungs-
oder -transferverfahrens in einem erfindungsgemäßen Chipnetzwerk, bezogen auf
die 3A–3F.
-
Diese
Datengruppe ist dazu bestimmt, insbesondere einen die Knoten 340, 350, 360 umfassenden
Teil des Netzwerks zu durchqueren, von denen jeder mehrere Eingange
hat, zum Beispiel vier Eingänge,
und mehrere Ausgänge,
zum Beispiel vier Ausgänge
(wobei in den 3A–3F bei
allen Knoten jeweils nur ein Nord-Eingang und ein Süd-Eingang
dargestellt sind).
-
Die
Datengruppe umfasst insbesondere ein erstes Datenpaket 310 mit
einem Headerflit 312, gefolgt von einem zweiten Flit 314,
dann einem dritten Flit 316 und einem vierten Flit 318.
Diese Datengruppe umfasst auch ein zweites Paket 320 und
ein drittes Paket 330, von denen jedes ein Headerflit aufweist,
nämlich 322 bzw. 332,
auf das jeweils drei weitere Flits folgen, nämlich 324, 326, 328 beim
zweiten Paket 320, und 334, 336, 338 beim
dritten Paket 330.
-
Das
zweite Paket 320 und das dritte Paket 330 sind
jeweils verknüpft
mit einem selben virtuellen ersten Kanal, während das zweite Paket 320 mit
einem zweiten virtuellen Kanal verknüpft ist, dessen Prioritätsniveau
niedriger ist als das des ersten virtuellen Kanals.
-
Die
jeweiligen Wege, die das erste Paket 310, das zweite Paket 320 und
das dritte Paket 330 in diesem Teil des Netzwerks benutzen,
sind in der 3A als Pfeillinien 311, 321, 331 dargestellt.
-
Das
erste Paket 310 und das zweite Paket 320 schicken
sich an, in einen ersten Knoten 340 zu durchqueren, wobei
sie diesen Knoten 340 durch unterschiedliche Ausgänge verlassen.
-
Das
erste Paket 310 ist insbesondere dazu bestimmt, einen ersten
Knoten 340 und einen zweiten Konten 350 zu durchqueren.
Das dritte Paket 330 schickt sich an, einen anderen Knoten 360,
dann den ersten Knoten 340 und dann den zweiten Knoten 350 zu
durchqueren.
-
In
der 3B hat der Transfer des ersten Pakets 310 und
des dritten Pakets 330 begonnen, wobei diese letzteren
den ersten Knoten 340 schon durchquert haben, während das
zweite Paket 320 sich noch anschickt, diesen ersten Knoten 340 zu durchqueren.
In Höhe
des ersten Knotens 340 kann dass eine Arbitrierung zwischen
dem ersten Paket 310 und dem dritten Paket 330 stattfinden,
um die jeweilige Transferreihenfolge dieser Pakete zu bestimmen.
-
Das
Headerflit 312 und das zweite Flit 314 des ersten
Pakets 310 haben diesen ersten Knoten 340 schon
durchquert und erreichen den zweiten Knoten 350, während das
dritte Flit 316 dieses ersten Pakets 310 den ersten
Knoten 340 erreicht hat und sich anschickt, zum Ausgang
des ersten Knotens 340 transferiert zu werden, in Richtung
des zweiten Knotens 350. Das vierte Flit 318 des
ersten Pakets 310 ist gerade dabei, den ersten Knoten 340 zu
erreichen.
-
Parallel
dazu hat das dritte Paket 330 und insbesondere sein Headerflit 332 den
ersten Knoten 340 schon erreicht. Dieses Headerflit 332 schickt
sich an, wie das dritte Flit 316 des ersten Pakets 310,
zum Ausgang des ersten Knotens 340 transferiert zu werden,
in Richtung zweiter Knoten 350.
-
Da
das Headerflit 332 des dritten Pakets 330 und
das dritte Flit 316 des ersten Pakets 310 für einen
selben Ausgang des ersten Knotens 340 bestimmt sind, bahnt
sich ein Konflikt an zwischen dem ersten Paket 310 und
dem dritten Paket 30.
-
Da
das dritte Paket 330 mit einem virtuellen Kanal eines höheren Prioritätsniveaus
als der zweite Kanal verknüpft
ist, mit dem das erste Paket 310 verknüpft ist, wird der Transfer
des ersten Pakets 310 zum zweiten Knoten 350 gestoppt.
Insbesondere wird das dritte Flit 316 des ersten Pakets 310 gestoppt
(den Stopp symbolisiert ein Kreuz in der 3C). In
Höhe des
ersten Knotens 340 kann der Stopp begleitet werden von
einem Übergang
in einen Niedrigzustand des Akzeptanzsignals gemäß dem "Send-Accept"-Protokoll, oben beschrieben in Verbindung
mit der 2.
-
Parallel
dazu (3C) setzt sich der Transfer
des dritten Pakets 330 fort, so dass das Headerflit 332 des
dritten Pakets 330 den zweiten Knoten 350 erreicht,
und das zweite Flit 334 des dritten Pakets 330 den
ersten Knoten erreicht.
-
Ebenfalls
parallel dazu und in Folge der durch den ersten Knoten 340 durchgeführten Arbitrierung
setzt sich der Transfer des zweiten Pakets 320 ebenfalls
fort (3C), so dass das Headerflit 322 des
zweiten Pakets 320 den ersten Knoten 340 erreicht.
-
Obwohl
der Transfer des ersten Pakets 310 zum zweiten Knoten 350 gestoppt
ist, kann das vierte Flit 318 des ersten Pakets 310,
das vor der Arbitrierung den ersten Knoten 340 noch nicht
erreicht hatte, diesen letzteren ebenfalls erreichen. Das zweite
Flit 314 des ersten Pakets 310, das sich vor der
Arbitrierung noch beim zweiten Knoten 350 befand, kann sich
verschieben und den zweiten Knoten 350 verlassen (die Verschiebung
dieses zweiten Flits ist in der 3C durch
einen Pfeil vor einem Referenzblock 314 dargestellt).
-
Das
erste Paket 310 wird also durch das dritte Paket 330 des
Kanals mit höherer
Priorität
in zwei Teile "geschnitten". Ein Teil des dritten
Pakets 330 befindet sich also in dem ersten Knoten 340,
während
ein anderer Teil sich in einer anderen Verbindung oder einem anderen
Knoten befindet (nicht dargestellt in der 3C), der
dem ersten Knoten 340 nicht benachbart ist.
-
Da
das zweite Paket 320 und das dritte Paket 330 dazu
bestimmt sind, vom Ausgang des ersten Knotens 340 unterschiedliche
Knoten zu erreichen, kommt es zwischen diesen Paketen zu keinem
Konflikt. Der jeweilige Transfer des zweiten Pakets 320 und
des dritten Pakets 330 kann dann mit einem Schritt fortgesetzt
werden, der in der 3D dargestellt ist. Parallel
dazu ist der Transfer des ersten Pakets 310 am Ausgang
des ersten Knotens 340 und bestimmt für den zweiten Knoten 340 noch
immer angehalten oder gestoppt.
-
Das
Flit 324 des zweiten Pakets 320 erreicht während dieses
Schrittes den ersten Knoten 340, während das Headerflit 322 zum
Ausgang dieses ersten Knotens 340 transferiert wird.
-
Das
Headerflit 332 des dritten Pakets 330 hat den
Knoten 350 verlassen, während
das zweite Flit 334 des dritten Pakets 330 den
ersten Knoten 340 verlassen hat und den zweiten Knoten 350 erreicht
und das dritte Flit 336 den ersten Knoten 340 erreicht
(3D).
-
Anschließend verlässt das
dritte Paket 330 vollständig
den ersten Knoten 340 und gibt den Ausgang frei, an dem
es zu einem Konflikt mit dem zweiten Paket 320 gekommen
war. Danach, während
eines in der 3E dargestellten Schrittes,
kann der Transfer des zweiten Pakets 320 am Ausgang des ersten
Knotens 340 wieder aufgenommen werden. Ein Flit 316 des
ersten Pakets 310 erreicht dann den zweiten Knoten 350.
Parallel dazu verlängert
sich der Transfer des dritten Pakets 330. Das vierte Flit
und letzte Flit 338 des dritten Pakets hat den zweiten Knoten 350 schon
erreicht.
-
Nach
einem in der 4F dargestellten Schritt
ist der Transfer des ersten Pakets 310 am Ausgang des ersten
Knotens 340 vor dem des zweiten Pakets 320 und
des dritten Pakets 330 beendet. Dieses erste Paket 310 ist
ganz zum Ausgang des ersten Knotens 340 transferiert worden
und kann den zweiten Knoten 350 ganz erreicht haben. Der
Transfer des zweiten Pakets 320 am Ausgang des ersten Knotens 340 ist
ebenfalls beendet. Auch der Transfer des dritten Pakets 330 am
Ausgang des zweiten Knotens 350 ist abgeschlossen.
-
Es
folgt die Beschreibung eines Beispiels eines erfindungsgemäßen Chipnetzwerkknotens 400 mit
Bezug auf die 4A–4C. Dieser
Knoten kann einen eigenen Taktgeber haben (nicht dargestellt), der
von denen der anderen Knoten dieses Netzwerks unabhängig ist.
-
Dieser
Knoten 400 umfasst fünf
Eingang/Ausgangs-Einheiten 410, 420, 430, 440, 450 (dargestellt
in der 4A), jede verbunden mit jeweils
einem Eingang/Ausgangs-Modul 460, 470, 480, 490, 500 (dargestellt
in der 4B).
-
Unter
den Eingang/Ausgangs-Einheiten gibt es eine "Nord"-Einheit 410,
eine "Ost"-Einheit 420, eine "Süd"-Einheit 430 und eine "West"-Einheit 440, von
denen jede fähig
ist, mit einem anderen, dem Knoten 400 benachbarten Netzwerkknoten
verbunden zu werden (diese anderen Knoten sind in den 4A–4C nicht
dargestellt) und mit ihm Daten und/oder Synchronisationssignale
auszutauschen.
-
Eine
andere Eingang/Ausgangs-Einheit 450 des Knotens 400 ist
fähig,
mit einer Ressource des Netzwerks verbunden zu werden (nicht dargestellt
in den 4A–4C) und
mit ihr Daten- und/oder Synchronisationssignalaustausche durchzuführen.
-
Jede
dieser Eingang/Ausgangseinheiten des Knotens 400 kann entsprechend
der in der 4A detaillierter dargestellten 'West"-Einheit 440 umfassen:
- – einen
oder mehrere Eingänge,
zum Beispiel zwei Eingänge 441a, 441b,
verbunden mit ihrem jeweiligen Eingangsmodul (die Eingang/Ausgangsmodule
und insbesondere das "West"-Eingang/Ausgangsmodul
sind in dieser Figur nicht dargestellt) und dazu vorgesehen, Synchronisationssignale
des "Send"-Typs gemäß einem Send-Accept-Protokoll zu erhalten,
von dem ein Funktionsmechanismus weiter oben in Verbindung mit der 2 beschrieben
worden ist und die von einem anderen, benachbarten Knoten (nicht
dargestellt) des Netzwerks stammen.
- – wenigstens
einen Eingang 445a, verbunden mit seinem jeweiligen Eingang/Ausgangsmodul
und dazu vorgesehen, Daten oder Flits des genannten anderen Knotens
zu empfangen,
- – einen
oder mehrere Ausgänge,
zum Beispiel zwei Ausgänge 444a, 444b,
mit ihrem jeweiligen Eingang/Ausgangsmodul verbunden und dazu vorgesehen,
Synchronisationssignale des "Accept"-Typs gemäß einem
Send-Accept-Protokoll in Richtung des anderen Knoten (nicht dargestellt) des
Netzwerks zu senden,
- – einen
oder mehrere Ausgänge,
zum Beispiel zwei Ausgänge 442a, 442b,
mit ihrem jeweiligen Eingang/Ausgangsmodul verbunden und dazu vorgesehen,
Synchronisationssignale des "Send"-Typs gemäß demselben
Send-Accept-Protokoll in Richtung des genannten anderen Nachbarknotens
des Netzwerks zu senden;
- – wenigstens
einen Ausgang 445b, verbunden mit seinem jeweiligen Eingang/Ausgangsmodul
und dazu vorgesehen, Daten oder Flits des genannten anderen Knotens
zu empfangen;
- – einen
oder mehrere Eingänge,
zum Beispiel zwei Eingänge 443a, 443b,
verbunden mit ihrem jeweiligen Ausgangsmodull und dazu vorgesehen,
Synchronisationssignale des "Accept"-Typs zu empfangen,
die von einem anderen Knoten (nicht dargestellt) des Netzwerks stammen.
-
In
der 4B ist der Knoten 400 dieses Mal mit
seinen fünf
Eingang/Ausgangsmodulen 460, 470, 480, 490, 500 und
einem zentralen Modul 510 dargestellt, mit dem jeder dieser
Eingang/Ausgangsmodule verbunden ist. Pfeillinien repräsentieren
in dieser Figur Wege, welche von den diesen Knoten 400 durchquerenden
Daten oder Flits benutzt werden können.
-
Unter
den Eingang/Ausgangsmodulen sind ein Nord-Modul 460 mit
einem Nord-Eingangsmodul 461 und
einem Nord-Ausgangsmodul 468, ein Ost-Modul 470 mit
einem Ost-Eingangsmodul 471 und
einem Ost-Ausgangsmodul 478, ein Süd-Modul 480 mit einem
Süd-Eingangsmodul 481 und
einem Süd-Ausgangsmodul 488,
ein West-Modul 490 und ein weiteres Modul 500 mit
einem Eingangsmodul 501 und einem Ausgangsmodul 508.
Die fünf
Eingang/Ausgangsmodule 460, 470, 480, 490, 500 sind jeweils
verbunden mit einer Nord-Eingang/Ausgangseinheit 410,
einer Ost-Eingang/Ausgangseinheit 420, einer Süd-Eingang/Ausgangseinheit 430 und
einer West-Eingang/Ausgangseinheit 440 (die Eingang/Ausgangseinheiten
sind in der 4B nicht dargestellt).
-
Das
Zentralmodul 510, verbunden mit den Eingangs/Ausgangsmodulen 460, 470, 480, 490, 500,
ermöglicht
insbesondere, für
Nachbarknoten bestimmte Synchronisationssignale des "Send"-Typs zu erzeugen
und/oder von Nachbarknoten stammende Synchronisationssignale des "Accept"-Typs zu verarbeiten.
Das Zentralmodul 510 kann ebenfalls ermöglichen ein Routing von Datenpaketen
durchzuführen,
die den Knoten 400 erreichen, indem er den jeweiligen Ausgang
des Knotens 400 bestimmt, durch den jedes dieser Pakete
weitergeleitet werden soll.
-
Das
Routing eines den Knoten 400 erreichenden Datenpakets kann,
wie weiter oben beschrieben, durch diesen Knoten 400 erfolgen,
in Abhängigkeit
von Routinginformationen, vorhanden in Form einer Ordnungsliste
mit den Daten der Richtungen bzw. Wege, die für das Paket in dem Netzwerk bestimmt
sind.
-
Diese
Routinginformationen können
nur in dem Header des genannten Pakets enthalten sein. Der Knoten 400 konserviert
bzw. speichert die Routinginformationen des Pakets bis zu der Paketende- oder "Eop"-Information. Nachdem
er die spezifischen Routinginformationen eines Pakets gesammelt
hat, kann der Knoten 400 diese spezifischen Routinginformationen
eventuell beseitigen.
-
Der
Knoten 400 ist eingerichtet, um – wenn er eine Datenpaket erhält – einige
der Routinginformationen zu lesen oder zu decodieren, zum Beispiel den
Richtungsdatensatz am Ende der Richtungsdatenordnungsliste, und
dann die Richtungsdatenordnungsliste zu modifizieren, um insbesondere
das Routing für
einen Nachbarknoten vorzubereiten, der sich auf dem Weg des genannten
Pakets hinter dem Knoten 400 befindet. Diese Vorbereitung kann,
wie weiter oben beschrieben, durch Verschiebung der Richtungsdatenordnungsliste
realisiert werden.
-
Das
Zentralmodul 510 des Knotens 400 kann ebenfalls
ermöglichen,
eine Arbitrierung der Daten durchzuführen, indem er eine Transferreihenfolge zwischen
mehreren Flits oder Flitpaketen, die bei ihm eintreffen, bestimmt.
-
Die
Arbitrierung zwischen mehreren Datenpaketen wird, wie weiter oben
beschrieben, wenigstens teilweise in Abhängigkeit von den virtuellen
Kanälen
durchgeführt,
mit denen diese Datenpakete verknüpft sind. Eine Differenzierung
zwischen Prioritätskanälen kann
durch das Zentralmodul 510 erfolgen, zum Beispiel durch
Verknüpfung
von für
jeden virtuellen Kanal unterschiedlichen Send-Accept-Synchronisationssignalen.
-
Die
Transferreihenfolge zwischen mehreren Datenpaketen – wenn diese
Pakete mit Kanälen
unterschiedlicher Priorität
verknüpft
sind – kann
nur in Abhängigkeit
von ihren jeweiligen virtuellen Kanälen bestimmt werden.
-
Die
Transferreihenfolge zwischen mehreren Datenpaketen – wenn einige
dieser Pakete mit Kanälen
gleicher Priorität
verknüpft
sind – kann
ergänzend sein,
bestimmt mit Hilfe einer "dynamischen" Arbitrierung. Bei
einer solchen Arbitrierung wird auch die Ankunftsreihenfolge der
Pakete am Eingang des Knotens 400 berücksichtigt. Diese dynamische
Arbitrierung kann zum Beispiel vom Typ "wer zuerst kommt, mahlt zuerst" sein und kann von
dem Knoten 400 durchgeführt
werden, zum Beispiel um die Transferreihenfolge zwischen mehreren
eintreffenden Paketen zu bestimmen, die mit einem selben Prioritätskanal
verknüpft
sind.
-
Eine
Transferreihenfolge mit Hilfe einer Arbitrierung des "statischen" Typs kann eventuell
auch durch den Knoten 400 angewendet werden, ergänzend zu
derjenigen, die mit Hilfe der virtuellen Kanäle durchgeführt wird. Bei einem solchen
Arbitrierungstyp berücksichtigt
der Knoten 400, 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 400 eintreffen.
-
Eine
solche statische Arbitrierung kann zum Beispiel vom "Nord/Ost/Süd/West"-Typ sein, bei dem ein
vom Nord-Eingang des Knotens 400 stammendes Paket prioritär ist in
Bezug auf ein zweites Paket desselben virtuellen Kanals, das simultan
zum ersten Paket am Ost-Eingang des Knotens 400 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 400 eintrifft.
-
Eine
mögliche
Funktionsweise des Knotens 400 kann folgendermaßen sein:
beim Eintreffen eines Headerflits eines ersten Datenpakets durch
einen Eingang des Knotens 400 wird der Ausgang des Knotens 400,
den dieses Paket zu benutzen bestimmt ist, in Abhängigkeit
von den Routinginformationen bestimmt, die in dem Header dieses
ersten Pakets enthalten sind. Anschließend 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
anschickt, diesen Ausgang zu benutzen, wird das erste Paket zu diesem
Ausgang weitergeleitet oder transferiert.
-
In
einem Fall, wo es bei diesem Ausgang einen Zugriffskonflikt gibt
und wo zum Beispiel ein zweites Paket desselben virtuellen Kanals
wie das erste Paket oder eines virtuellen Kanals höherer Priorität diesen
Ausgang schon benutzt, wird der Transfer des ersten Pakets zum Ausgang
des Knotens 400 blockiert oder gestoppt. Ein Synchronisationssignal des
Accept-Typs wird in den Niedrigzustand versetzt und zu dem Nachbarknoten
des Knotens 400 übertragen,
von dem das erste Paket stammt. Der Transfer des ersten Pakets wieder
aufgenommen werden, wenn alle Flits des genannten zweiten Pakets
den Knoten 400 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 diesen Ausgang benutzen will, wird zwischen dem ersten
Paket und dem zweiten Paket eine statische Arbitrierung des "Nord-, Ost-, Süd-, West"-Typs realisiert.
-
In
einem Fall, wo es an dem genannten Ausgang einen Konflikt gibt und
ein zweites Paket, das zu einem virtuellen Kanal niedrigeren Prioritätsniveaus
als dem des ersten Pakets gehört,
diesen Ausgang schon benutzt, wird der Transfer dieses zweiten Pakets
zum Ausgang des Knotens 400 blockiert. Dann wird das erste
Paket vollständig
zum Ausgang des Knotens 400 transferiert. Der Transfer
des zweiten Paket kann eventuell anschließend wieder aufgenommen werden.
-
Wenn
ein oder mehrere andere Pakete, jeweils verknüpft mit einem Kanal höherer Priorität als der
des Kanals des genannten zweiten Pakets, den Eingang des Knotens 400 erreicht,
bevor die Gesamtheit des genannten zweiten Pakets zum Ausgang des
Knotens 400 transferiert worden ist, und wenn diese anderen
Pakete dazu bestimmt sind, denselben Ausgang wie das zweite Paket
zu benutzen, werden die genannten anderen Pakete in Bezug auf das
zweite Paket prioritär
vollständig
zum Ausgang des Knotens 400 transferiert.
-
Wenn
die genannten anderen Pakete mit einem Kanal höherer Priorität als derjenigen
des Prioritätskanals
des genannten ersten Pakets verknüpft sind, und wenn diese anderen
Pakete den Eingang des Knotens 400 erreichen, bevor die
Gesamtheit des genannten ersten Pakets zum Ausgang des Knotens 400 transferiert
worden ist und diese anderen Pakete dazu bestimmt sind, denselben
Ausgang zu benutzen wie das erste Paket, werden die genannten anderen
Pakete vollständig
vor dem ersten Paket zum Ausgang des Knotens 400 transferiert.
-
Eine
Struktur des Zentralmoduls 510 des Knotens 400 und
eines Eingang/Ausgangsmoduls, zum Beispiel das "West"-Modul 490 des
Knotens 400, ist in der 4C dargestellt.
-
Das "West"-Eingang/Ausgangsmodul 490 umfasst
einen Eingangsmodul 491, mit dem die Eingänge 441a und 441b verbunden
sind, die vorgesehen sind, Synchronisationssignale des Send-Typs
zu empfangen, die von einem Nachbarknoten (nicht dargestellt) des
Knotens 400 stammen.
-
Das
Eingangsmodul 491 ist auch mit dem Eingang 445a verbunden,
vorgesehen um Flits zu empfangen, die von dem genannten anderen
Knoten stammen. Das Eingangsmodul 491 ist auch mit den Ausgängen 444a und 444b verbunden,
die vorgesehen sind, Synchronisationssignale des Accept-Typs zu
empfangen, die von dem genannten Nachbarknoten stammen. In diesem
Beispiel, mit zwei Eingängen 441a und 441b und
zwei Ausgängen 444a und 444b um
gemäß dem asynchronen
Send-Accept-Protokoll Synchronisationssignale zu empfangen und zu
senden, kann ein unter zwei unterschiedlichen virtuellen Kanälen ausgewählter virtueller
Kanal den Paketen zugewiesen werden.
-
Das
Eingangsmodul 491 umfasst Multiplexer 492a, 492b und
Pufferspeicher zum Beispiel in Form von FIFO-Einheiten (FIFO für "first in first out") 493a–493b und 493c–493d.
Diese FIFOs 493a–493b und 493c–493d ermöglichen
eine Funktionsweise ohne Stromstöße bzw.
Anstöße (sans à coups)
des Synchronisationsmechanismus, wie weiter oben beschrieben. Eine
Einheit 494 ermöglicht, eine
Verschiebung der Routinginformationen eines Pakets durchzuführen, wie
weiter oben beschrieben, und insbesondere die Verschiebung der in
diesen Informationen enthaltenen Richtungsdatenordnungsliste.
-
Das
Eingangsmodul 490 umfasst ebenfalls Einrichtungen 497,
welche die Rolle einer Zustandsmaschine (machine d'état) spielen und insbesondere ermöglichen,
die Eingangskontrolle der Pakete und die eventuellen Unterbrechungen
von Paketen zu verwalten, und dies mit Hilfe des Füllgrads
der FIFOs 493a–493b und 493c–493d.
-
Kombinatorische
Recheneinrichtungen 495 sind vorgesehen, um in Abhängigkeit
von der Zustandsmaschine Signale des Accept-Typs zu erzeugen, die
für Nachbarknoten
bestimmt sind.
-
Das
Eingangsmodul 490 ist ebenfalls mit Einrichtungen 496a, 496b ausgestattet,
um eingehende Datenpakete zu speichern und insbesondere die diese
Pakete betreffenden Routinginformationen zu speichern, und mit Einrichtungen 497a, 497b, 497c,
zum Beispiel Multiplexern, um für
ein eingehendes Paket einen Weg in Abhängigkeit von Synchronisationssignalen
des "Send"-Typs und des "Bop"-Bits dieses Pakets
zu selektieren.
-
Ein
Schnittstellenmodul (nicht dargestellt) zwischen Knoten-internen
synchronen Signalen und von einem anderen Knoten stammenden asynchronen
Signalen zum Beispiel des Send- und/oder Accept-Typs kann ebenfalls
vorgesehen werden.
-
Nach
einer Möglichkeit
kann ein solches Modul zum Beispiel FIFOs und Wiedersynchronisierungs-Taktgeber
umfassen.
-
Nach
einer anderen Möglichkeit
kann ein solches Modul eine Schnittfläche umfassen wie sie beschrieben
wird in dem Dokument: Simon Moore et al., "Point to point GALS Interconnect" Proceedings of ASYNC
2002, Seiten 69–75.
Dieses Modul kann ermöglichen,
die Integrität
der in dem Knoten eintreffenden Daten zu garantieren.
-
Ein
solches Schnittstellenmodul kann eventuell auch in einer Ressource
(nicht dargestellt) vorhanden sein, mit welcher der Knoten 400 verbunden ist.
-
Das "West"-Eingang/Ausgangsmodul 490 umfasst
auch ein mit Einrichtungen versehenes Ausgangsmodul 498,
zum Beispiel mit zwei Pufferspeichern 499, dazu vorgesehen,
von einem Nachbarknoten des Knotens 400 stammende Signale
des Accept-Typs
zu verzögern.
Ein Modul (nicht dargestellt in der 4C), der
ein Interfacing zwischen Knoten-internen synchronen Signalen und
asynchronen Signalen ermöglicht,
kann ebenfalls in den Ausgangsmodul 498 integriert sein.
-
Das
Zentralmodul 510 umfasst Arbitrierungs- und Datenverzweigungs-
bzw. – weiterleitungseinrichtungen 511,
deren Funktionsweise wie oben beschrieben sein kann. Die Arbitrierungs-
und Datenverzweigungs- bzw. -weiterleitungseinrichtungen 511 steuern
Multiplexeinrichtungen 513, um in dem Knoten 400 eintreffende
Daten zu einem der Eingang/Ausgangsmodule dieses Knotens 400 zu
leiten.
-
Der
oben beschriebene Knoten 400 wird in Synchronlogik implementiert,
zum Beispiel in einer "HCMOS9"-Technik von ST Microelectronics.
Ein solcher Knoten 400 kann eine hohe Betriebsfrequenz haben,
zum Beispiel in der Größenordnung
von 200 MHz.
-
Die
Anzahl der zur Realisierung eines solchen Knotens nötigen Speicherregister
kann klein sein, zum Beispiel 20 32-Bit-Register für die FIFOs der
Eingangsmodule 461, 471, 481, 491, 501,
und 10 2-Bit-Register für
die Speicherung der Routinginformationen. Diese kleine Anzahl von
Registern kann einen geringen Verbrauch des Knotens 400 zur
Folge haben und folglich einen geringen Gesamtverbrauch eines mit
diesem Knotentyp ausgestatteten Netzwerks im Verhältnis zu
den Vorrichtungen nach dem Stand der Technik.
-
Nach
einer Realisierungsvariante des oben beschriebenen Knotens 400 kann
dieser letztere ohne Taktgeber realisiert werden.
-
Der
oben beschriebene Knoten 400 eine asynchrone interne Funktionsweise
haben und zum Beispiel mit Hilfe eines PivotPointTM der
Firma FULCRUM implementiert werden. In diesem Fall kann der Knoten
mit Hilfe eines Vierphasensynchronisationsprotokolls für den Austausch
mit anderen Knoten des Netzwerks oder mit einer Ressource vorgesehen werden.
-
IN DER BESCHREIBUNG GENANNTE
REFERENZEN
-
Diese
Liste der durch den Anmelder genannten Referenzen dient nur dazu,
dem Leser zu helfen und ist nicht Teil der europäischen Patentschaft. Obwohl 518 mit
einem Höchstmaß an Sorgfalt
erstellt worden ist, können
Fehler oder Weglassungen nicht ausgeschlossen werden und das EPA
lehnt in dieser Hinsicht jede Verantwortung ab.
-
In der Beschreibung genannte Nichtpatentliteratur
-
- • GOOSENS
et al. Trade offs in the design of a router both guaranteed and
best-efforts service for networks an chip. Proceedings of DATE conference,
2003, 350–355
- • BRAINBRIDGE;
S. FURBER. "Delay
Insensitive System an Chip interconnect " Using 1 of 4 Data Encoding. Proceedings
of International Symposium an Advanced Research in Asynchronous
Circuits and Systems, März
2001, 118–126
- • T.
FELICIJAN; S. B. FURBER. Quality of Service (QoS) for Asynchronous
On-Chip Networs. Formal Methods for Globally Asynchronous Locally
Synchronous Architecture (FMGALS 2003), September 2003
- • An
Asynchronous On-Chip Network Router with Quality-of-Service (QoS).
T. FELICIJAN; S. B. FURBER. Support Proceedings IEEE International
SOC Conference. September 2004, 274–277
- • Cost
Considerations in Network an Chip. BOLOTIN E et al. Integration,
the VLSI Journal. North-Holland Publishing Company, Okt. 2004, Vol.
38, 19–42
- • C.
J. Glass; L. M. Ni. The Turn Model for Adaptive Routing. Association
for Computing Machinery, 1992
- • K.
M. AL-TAWIL. A survey and comparision or wormhole routing technique
in Mesh networks. IEEE network, März 1997, 38–45
- • SIMON
MOORE et al. Point to point GALS Interconnect. Proceedings of ASYNC,
2002, 69–75