DE602006000515T2 - Global asynchrone Kommunikationsarchitektur für ein System auf einem integrierten Schaltkreis - Google Patents

Global asynchrone Kommunikationsarchitektur für ein System auf einem integrierten Schaltkreis Download PDF

Info

Publication number
DE602006000515T2
DE602006000515T2 DE602006000515T DE602006000515T DE602006000515T2 DE 602006000515 T2 DE602006000515 T2 DE 602006000515T2 DE 602006000515 T DE602006000515 T DE 602006000515T DE 602006000515 T DE602006000515 T DE 602006000515T DE 602006000515 T2 DE602006000515 T2 DE 602006000515T2
Authority
DE
Germany
Prior art keywords
packet
data
node
priority
channel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602006000515T
Other languages
English (en)
Other versions
DE602006000515D1 (de
Inventor
Fabien 38120 Clermidy
Pascal 38760 Vivet
Edith 38112 Beigne
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Commissariat a lEnergie Atomique CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of DE602006000515D1 publication Critical patent/DE602006000515D1/de
Application granted granted Critical
Publication of DE602006000515T2 publication Critical patent/DE602006000515T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

  • 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 3A3F veranschaulichen verschiedene Schritte eines Datentransferverfahrens,
  • die 4A4C 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 3A3F.
  • 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 3A3F 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 4A4C. 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 4A4C 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 4A4C) 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") 493a493b und 493c493d. Diese FIFOs 493a493b und 493c493d 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 493a493b und 493c493d.
  • 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

Claims (32)

  1. 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 (110, 114a, 114b), fähig Datenverarbeitungen durchzuführen, und eine Vielzahl Knoten (120, 400) 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 (114a) des Netzwerks zu einem Empfangselement (114b) des Netzwerks – von wenigstens einem Datenpaket (310, 320, 330), 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 (312, 314, 316, 318, 322, 324, 326, 328, 332, 334, 336, 338) umfassend, 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, dadurch gekennzeichnet, dass das genannte dem Asynchronkommunikationsprotokoll gemäße Signal des ersten Typs die genannte Prioritäts- oder Prioritätskanalinformation des genannten Pakets wenigstens partiell enthält.
  2. Verfahren zur Datenübertragung in einem On-Chip-Netzwerk nach Anspruch 1, wobei das Verfahren außerdem umfasst: a) Verknüpfung – durch eine jeweilige Ressource des Netzwerks – von Daten bezüglich der Priorität oder eines Prioritätskanals mit wenigstens einem ersten Datenpaket (310), von anderen Daten bezüglich der Priorität oder eines anderen Prioritätskanals mit wenigstens einem zweiten Datenpaket (320), b) 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 verknüpft worden sind.
  3. Datenübertragungsverfahren nach Anspruch 2, bei dem das erste Element ein erster Knoten (340) ist und bei dem das erste Datenpaket (310) und das zweite Datenpaket jeweils mit einem ersten Prioritätskanal von bestimmter Priorität und mit einem zweiten Prioritätskanal mit einem von dem des ersten Prioritätskanals unterschiedlichen Prioritätspegel verknüpft worden sind, wobei eine erste Datengruppe des ersten Datenpakets und eine andere Datengruppe des zweiten Pakets den ersten Knoten erreicht haben und sich anschicken, zu einem Ausgang oder zu einem selben Ausgang des ersten Knotens zu gelangen, und während des Schritts b) die Transferreihenfolge zwischen dem ersten Paket und dem zweiten Paket nur in Abhängigkeit von dem jeweiligen Prioritätspegel des ersten Kanals und des zweiten Kanals bestimmt wird.
  4. Datenübertragungsverfahren nach Anspruch 2 oder 3, in dem das erste Element ein erster Knoten (340) ist und in dem das erste Datenpaket (310) und das zweite Datenpaket (320) jeweils mit einem ersten Prioritätskanal und einem zweiten Prioritätskanal eines niedrigeren Prioritätspegels als dem des ersten Prioritätskanals verknüpft worden sind, wobei eine erste Datengruppe des ersten Pakets und eine andere Datengruppe des zweiten Pakets den ersten Knoten erreicht haben und sich anschicken, zu einem Ausgang oder zu einem selben Ausgang des ersten Knotens zu gelangen, und das Verfahren außerdem nach dem Schritt b) umfasst: c) den Transfer des ersten Datenpakets zum Ausgang des ersten Knotens, d) den Transfer des zweiten Datenpakets zum Ausgang des ersten Knotens, nachdem am Ausgang des ersten Knotens die Gesamtheit des ersten Pakets transferiert worden ist.
  5. Datenübertragungsverfahren nach Anspruch 4, außerdem nach Schritt b) und vor Schritt d) umfassend: – den wenigstens partiellen Stopp des zweiten Pakets in Höhe des ersten Knotens.
  6. Datenübertragungsverfahren nach Anspruch 4 oder 5, in dem der Transfer des zweiten Pakets zum Ausgang des ersten Knotens schon vor dem Schritt b) 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, außerdem nach dem Schritt b) und vor dem Schritt d) und eventuell während eines partiellen Stopps des zweiten Datenpakets umfassend: – den Stopp der genannten anderen Datengruppe des zweiten Pakets, – die Verschiebung oder den Transfer der genannten zweiten Datengruppe des zweiten Pakets.
  7. Datenübertragungsverfahren nach einem der Ansprüche 4 bis 6, in dem vor dem Schritt b) eine dritte Datengruppe des zweiten Pakets (320) den ersten Knoten (340) noch nicht erreicht hat, außerdem nach dem Schritt b) und vor dem Schritt d) umfassend: – den Transfer von wenigstens einem Teil der Daten der dritten Datengruppe des zweiten Pakets zum Eingang des ersten Knotens.
  8. Datenübertragungsverfahren nach einem der Ansprüche 5 bis 7, in dem nach dem Schritt b) und vor dem Schritt d) wenigstens ein drittes Datenpaket (330), 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 und das Verfahren dabei außerdem umfasst: – vor dem Schritt d) den Transfer der Gesamtheit des dritten Pakets zum Ausgang des ersten Knotens (310).
  9. Datenübertragungsverfahren nach Anspruch 8, in dem das dritte Paket (330) mit einem Kanal gleicher Priorität wie der des ersten Kanals verknüpft ist, wobei der genannte Transfer der Gesamtheit des dritten Pakets zum Ausgang des ersten Knotens nach dem Schritt c) und vor dem Schritt d) realisiert wird.
  10. Datenübertragungsverfahren nach Anspruch 8, in dem das dritte Paket (330) mit einem Kanal höherer Priorität als der des ersten Kanals verknüpft ist, wobei der genannte Transfer der Gesamtheit des dritten Pakets vor dem Schritt c) realisiert wird.
  11. Datenübertragungsverfahren nach Anspruch 2, in dem in Schritt a) das erste Element ein erster Knoten ist, und in dem das erste Datenpaket und das zweite Datenpaket jeweils mit einem selben Prioritätskanal verknüpft sind, wobei die Arbitrierung der Transferreihenfolge außerdem bestimmt wird in Abhängigkeit von der Reihenfolge der jeweiligen Ankunft – beim ersten Knoten – des ersten Pakets und des zweiten Pakets und/oder in Abhängigkeit von dem Eingang des ersten Knotens, durch den das erste Paket und das zweite Paket jeweils in diesen ersten Knoten gelangt sind.
  12. Datenübertragungsverfahren nach Anspruch 11, in dem vor dem Schritt b) eine erste Datengruppe des ersten Datenpakets (310) und eine andere Datengruppe des zweiten Pakets (320) den ersten Knoten schon erreicht haben und sich anschicken zu einem Ausgang oder einem selben Ausgang des ersten Knotens zu gelangen, und in dem in Schritt b) eine zweite Datengruppe des zweiten Datenpakets schon zum Ausgang des ersten Knotens transferiert worden ist oder den ersten Knoten schon verlassen hat, außerdem nach Schritt b) umfassend: e) den Transfer des zweiten Datenpakets zum Ausgang des ersten Knotens, f) den Transfer des ersten Datenpakets zum Ausgang des ersten Knotens nachdem die Gesamtheit des zweiten Pakets zum Ausgang des ersten Knotens transferiert worden ist.
  13. Datenübertragungsverfahren nach einem der Ansprüche 11 oder 12, in dem 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 Schritt b) und vor dem Schritt e) erreicht und sich anschickt, zu dem genannten Ausgang des ersten Knotens zu gelangen, außerdem umfassend: – vor dem Schritt e) den Transfer der Gesamtheit des genannten dritten Pakets zum Ausgang des ersten Knotens.
  14. Datenübertragungsverfahren nach Anspruch 13, in dem das dritte Datenpaket den ersten Knoten vor dem Schritt a) oder während des Schritts c) erreicht, außerdem umfassend: – vor dem Schritt f) den Transfer der Gesamtheit des genannten dritten Pakets zum Ausgang des ersten Knotens.
  15. Datenübertragungsverfahren nach einem der Ansprüche 2 bis 14, in dem das erste Paket und das zweite Paket dazu bestimmt sind, in dem Netzwerk einen ersten Weg beziehungsweise einen zweiten Weg zu benutzen, wobei das Verfahren vor dem Schritt b) umfasst: – die Bestimmung des ersten Wegs und des zweiten Wegs.
  16. Datenübertragungsverfahren nach Anspruch 15, außerdem vor Schritt b) umfassend: – Zuordnung von den ersten Weg betreffenden Daten zum Paket (310) und von den zweiten Weg betreffenden Daten zum Paket (320) durch eine jeweilige Ressource des Netzwerks.
  17. Datenübertragungsverfahren nach einem der Ansprüche 2 bis 16, wobei die Verknüpfung des ersten Datenpakets (310) mit einem Prioritätskanal und des zweiten Datenpakets (320) mit einem Prioritätskanal in Abhängigkeit von dem (den) Typ(en) der Daten erfolgt, die das genannte erste Paket und das genannte zweite Paket jeweils enthalten.
  18. Verfahren zur Datenübertragung in einem On-Chip-Netzwerk nach einem der Ansprüche 1 bis 17, wobei wenigstens ein Element des Netzwerks durch einen ersten Takt gesteuert wird.
  19. Verfahren zur Datenübertragung in einem On-Chip-Netzwerk nach Anspruch 18, wobei ein oder mehrere andere Elemente des Netzwerks jeweils durch einen Takt gesteuert werden, der anders ist als der erste Takt oder nicht synchron ist zum ersten Takt.
  20. Verfahren zur Datenübertragung in einem On-Chip-Netzwerk nach einem der Ansprüche 1 bis 19, wobei ein oder mehrere Elemente nicht durch einen Takt gesteuert werden oder keinen Takt haben.
  21. On-Chip-Netzwerkvorrichtung mit einer Vielzahl von Elementen, fähig untereinander zu kommunizieren, darunter eine Vielzahl von Ressourcen (110, 114a), fähig Datenverarbeitungen durchzuführen, und einen oder mehrere Knoten (120, 400) 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 On-Chip-Netzwerks umfassen: – Datensendeeinrichtungen, fähig Daten in Form von Paketen zu senden, die jeweils mit einer Prioritätspegel- oder Prioritätskanal-Information verknüpft sind und 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, 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, wobei die Vorrichtung außerdem umfasst: – Einrichtungen zur Genehmigung der Sendung einer Elementardatengruppe eines Pakets nach dem Empfang eines Signals des zweiten Typs und zur Genehmigung des Empfangs einer Elementardatengruppe eines Pakets nach dem Empfang eines Signals des ersten Typs, dadurch gekennzeichnet, dass das eine Sendung einer Elementardatengruppe eines Pakets begleitende oder mit ihr verknüpfte Signal des ersten Typs wenigstens partiell die Prioritätspegel- oder Prioritätskanal-Information enthält, mit der das genannte Paket verknüpft ist.
  22. On-Chip-Netzwerkvorrichtung nach Anspruch 21, außerdem umfassend: – wenigstens eine erste Ressource (110a) 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, – wenigstens ein erstes Element (124), das außerdem umfasst: Arbitrierungseinrichtungen, fähig zur Bestimmung einer Transferreihenfolge zum Ausgang des ersten Elements zwischen wenigstens einem ersten Paket (310), 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 (320) durch eine jeweilige Ressource des Netzwerks verknüpft worden sind.
  23. On-Chip-Netzwerkvorrichtung nach Anspruch 22, bei der das erste Element ein erster Knoten (124) ist, in dem das erste Paket und das zweite Paket jeweils mit einem ersten Prioritätskanal und mit einem zweiten Prioritätskanal verknüpft werden, der von anderer Priorität als der erste Kanal ist, wobei die Arbitrierungseinrichtungen außerdem fähig sind, die Transferreihenfolge zwischen dem ersten Paket und dem zweiten Paket nur in Abhängigkeit von den beiden jeweiligen Kanälen zu bestimmen, mit denen das erste Paket und das zweite Paket jeweils verknüpft sind.
  24. On-Chip-Netzwerkvorrichtung nach Anspruch 22, bei der das erste Element ein erster Knoten (124) ist, in dem das erste Paket und das zweite Paket mit einem selben Prioritätskanal verknüpft werden, wobei die Arbitrierungseinrichtungen außerdem fähig sind, die Transferreihenfolge zwischen dem ersten Paket und dem zweiten Paket in Abhängigkeit von der jeweiligen Ankunftsreihenfolge am Eingang des ersten Knotens zu bestimmen, in der das erste und das zweite Paket den ersten Knoten erreicht haben.
  25. On-Chip-Netzwerkvorrichtung nach Anspruch 24, bei der die Arbitrierungseinrichtungen außerdem fähig sind, die Transferreihenfolge zwischen dem ersten Paket und dem zweiten Paket in Abhängigkeit von dem jeweiligen Eingang des ersten Knotens zu bestimmen, durch den das erste Paket und das zweite Paket in den ersten Knoten gelangt sind.
  26. On-Chip-Netzwerkvorrichtung nach einem der Ansprüche 22 bis 25, wobei die erste Ressource außerdem umfasst: – Wegdaten-Zuordnungseinrichtungen, fähig wenigstens einem Datenpaket, das die erste Ressource (114a) sendet, Daten bezüglich des Wegs zuzuteilen, den dieses Paket in dem Netzwerk benutzt.
  27. On-Chip-Netzwerkvorrichtung nach Anspruch 26, bei der das erste Element ein erster Knoten (124) ist und bei der das erste Datenpaket und das zweite Datenpaket durch eine jeweilige Ressource des Netzwerks jeweils mit ersten Wegdaten und mit zweiten Wegdaten verknüpft worden sind, 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.
  28. On-Chip-Netzwerkvorrichtung nach Anspruch 27, wobei der erste Knoten außerdem umfasst: Wegdatenspeicherungseinrichtungen.
  29. On-Chip-Netzwerkvorrichtung nach einem der Ansprüche 22 bis 28, wobei die Prioritätszuordnungseinrichtungen fähig sind, mit wenigstens einem Datenpaket, das diese erste Ressource sendet, wenigstens einen Prioritätskanal zu verknüpfen, ausgewählt aus einer vorbestimmten Gruppe von Prioritätskanälen in Abhängigkeit vom Typ der Daten, die dieses Paket enthält.
  30. On-Chip-Netzwerkvorrichtung nach einem der Ansprüche 21 bis 29, bei dem wenigstens eines der genannten Elemente des Netzwerks durch einen ersten Takt gesteuert wird.
  31. On-Chip-Netzwerkvorrichtung nach Anspruch 30, bei dem wenigstens ein anderes Element unter den genannten Elementen durch einen zweiten Takt gesteuert wird, der anders ist als der erste Takt oder nicht synchron ist zum ersten Takt.
  32. On-Chip-Netzwerkvorrichtung nach einem der Ansprüche 21 bis 31, bei dem wenigstens eines der genannten Netzwerkelemente nicht durch einen Takt gesteuert wird oder keinen Takt hat.
DE602006000515T 2005-03-08 2006-03-06 Global asynchrone Kommunikationsarchitektur für ein System auf einem integrierten Schaltkreis Active DE602006000515T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0550610A FR2883116B1 (fr) 2005-03-08 2005-03-08 Architecture de communication globalement asynchrone pour systeme sur puce.
FR0550610 2005-03-08

Publications (2)

Publication Number Publication Date
DE602006000515D1 DE602006000515D1 (de) 2008-03-27
DE602006000515T2 true DE602006000515T2 (de) 2009-02-19

Family

ID=34954682

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602006000515T Active DE602006000515T2 (de) 2005-03-08 2006-03-06 Global asynchrone Kommunikationsarchitektur für ein System auf einem integrierten Schaltkreis

Country Status (6)

Country Link
US (1) US7957381B2 (de)
EP (1) EP1701273B1 (de)
JP (1) JP4808513B2 (de)
AT (1) ATE386299T1 (de)
DE (1) DE602006000515T2 (de)
FR (1) FR2883116B1 (de)

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2026493A1 (de) * 2007-08-16 2009-02-18 STMicroelectronics S.r.l. Verfahren und System für mesochrone Kommunikationen in mehreren Taktdomänen und entsprechendes Computerprogrammprodukt
US8261025B2 (en) * 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US8526422B2 (en) 2007-11-27 2013-09-03 International Business Machines Corporation Network on chip with partitions
US7917703B2 (en) * 2007-12-13 2011-03-29 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8473667B2 (en) * 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8010750B2 (en) * 2008-01-17 2011-08-30 International Business Machines Corporation Network on chip that maintains cache coherency with invalidate commands
US8018466B2 (en) * 2008-02-12 2011-09-13 International Business Machines Corporation Graphics rendering on a network on chip
US8490110B2 (en) 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US7913010B2 (en) * 2008-02-15 2011-03-22 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US20090245257A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US8078850B2 (en) * 2008-04-24 2011-12-13 International Business Machines Corporation Branch prediction technique using instruction for resetting result table pointer
US20090271172A1 (en) * 2008-04-24 2009-10-29 International Business Machines Corporation Emulating A Computer Run Time Environment
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8020168B2 (en) * 2008-05-09 2011-09-13 International Business Machines Corporation Dynamic virtual software pipelining on a network on chip
US7958340B2 (en) * 2008-05-09 2011-06-07 International Business Machines Corporation Monitoring software pipeline performance on a network on chip
US8392664B2 (en) 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
US7861065B2 (en) * 2008-05-09 2010-12-28 International Business Machines Corporation Preferential dispatching of computer program instructions
US8494833B2 (en) 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
US8214845B2 (en) * 2008-05-09 2012-07-03 International Business Machines Corporation Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data
US7991978B2 (en) * 2008-05-09 2011-08-02 International Business Machines Corporation Network on chip with low latency, high bandwidth application messaging interconnects that abstract hardware inter-thread data communications into an architected state of a processor
US8040799B2 (en) * 2008-05-15 2011-10-18 International Business Machines Corporation Network on chip with minimum guaranteed bandwidth for virtual communications channels
US8230179B2 (en) * 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
US8406748B2 (en) 2009-01-28 2013-03-26 Headwater Partners I Llc Adaptive ambient services
US8275830B2 (en) 2009-01-28 2012-09-25 Headwater Partners I Llc Device assisted CDR creation, aggregation, mediation and billing
US8725123B2 (en) 2008-06-05 2014-05-13 Headwater Partners I Llc Communications device with secure data path processing agents
US8402111B2 (en) 2009-01-28 2013-03-19 Headwater Partners I, Llc Device assisted services install
US8548428B2 (en) 2009-01-28 2013-10-01 Headwater Partners I Llc Device group partitions and settlement platform
US8391834B2 (en) 2009-01-28 2013-03-05 Headwater Partners I Llc Security techniques for device assisted services
US8630192B2 (en) 2009-01-28 2014-01-14 Headwater Partners I Llc Verifiable and accurate service usage monitoring for intermediate networking devices
US8340634B2 (en) 2009-01-28 2012-12-25 Headwater Partners I, Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US8924543B2 (en) 2009-01-28 2014-12-30 Headwater Partners I Llc Service design center for device assisted services
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US8346225B2 (en) 2009-01-28 2013-01-01 Headwater Partners I, Llc Quality of service for device assisted services
US8898293B2 (en) 2009-01-28 2014-11-25 Headwater Partners I Llc Service offer set publishing to device agent with on-device service selection
US8924469B2 (en) 2008-06-05 2014-12-30 Headwater Partners I Llc Enterprise access control and accounting allocation for access networks
US8635335B2 (en) 2009-01-28 2014-01-21 Headwater Partners I Llc System and method for wireless network offloading
US8626115B2 (en) 2009-01-28 2014-01-07 Headwater Partners I Llc Wireless network service interfaces
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US7958341B1 (en) 2008-07-07 2011-06-07 Ovics Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory
US8327114B1 (en) 2008-07-07 2012-12-04 Ovics Matrix processor proxy systems and methods
US8195884B2 (en) * 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
US7992043B2 (en) * 2008-10-22 2011-08-02 International Business Machines Corporation Software debugger for packets in a network on a chip
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US11985155B2 (en) 2009-01-28 2024-05-14 Headwater Research Llc Communications device with secure data path processing agents
US8745191B2 (en) 2009-01-28 2014-06-03 Headwater Partners I Llc System and method for providing user notifications
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US9571559B2 (en) 2009-01-28 2017-02-14 Headwater Partners I Llc Enhanced curfew and protection associated with a device group
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US8893009B2 (en) 2009-01-28 2014-11-18 Headwater Partners I Llc End user device that secures an association of application to service policy with an application certificate check
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US8793758B2 (en) 2009-01-28 2014-07-29 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US11973804B2 (en) 2009-01-28 2024-04-30 Headwater Research Llc Network service plan design
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US10484858B2 (en) 2009-01-28 2019-11-19 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
JP2010178867A (ja) * 2009-02-05 2010-08-19 Fujifilm Corp 放射線撮影用ネットワークシステム及び放射線画像撮影システム制御方法
US8285900B2 (en) * 2009-02-17 2012-10-09 The Board Of Regents Of The University Of Texas System Method and apparatus for congestion-aware routing in a computer interconnection network
US8824496B2 (en) * 2009-10-30 2014-09-02 Oracle America, Inc. Two-phase arbitration mechanism for shared optical links
FR2957176B1 (fr) * 2010-03-02 2012-04-06 Commissariat Energie Atomique Puce electronique et circuit integre comportant une telle puce electronique
US8391281B2 (en) * 2010-03-31 2013-03-05 Toshiba America Research, Inc. Router design for 3D network-on-chip
EP2579530A4 (de) * 2010-05-28 2016-12-07 Univ Tohoku Asynchrone protokollumwandlungsvorrichtung
JP2012146201A (ja) 2011-01-13 2012-08-02 Toshiba Corp オンチップルータ及びそれを用いたマルチコアシステム
WO2012125718A1 (en) * 2011-03-16 2012-09-20 The Trustees Of Columbia University In The City Of New York Bi-modal arbitration nodes for a low-latency adaptive asynchronous interconnection network and methods for using the same
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
US8655120B2 (en) 2011-07-11 2014-02-18 Oracle International Corporation Arbitrated optical network using tunable drop filters
US9225665B2 (en) * 2012-09-25 2015-12-29 Qualcomm Technologies, Inc. Network on a chip socket protocol
US8885510B2 (en) 2012-10-09 2014-11-11 Netspeed Systems Heterogeneous channel capacities in an interconnect
KR102014118B1 (ko) 2012-10-19 2019-08-26 삼성전자주식회사 Axi 기반 네트워크 백본 시스템의 서브채널방식의 채널 관리 방법 및 장치
US8854555B2 (en) * 2013-01-18 2014-10-07 Darryl Adderly System and method to toggle between two or more television channels
US9007920B2 (en) * 2013-01-18 2015-04-14 Netspeed Systems QoS in heterogeneous NoC by assigning weights to NoC node channels and using weighted arbitration at NoC nodes
FR3001310B1 (fr) * 2013-01-21 2015-02-27 Commissariat Energie Atomique Interface de reseau sur puce dotee d'un systeme adaptatif de declenchement d'envoi de donnees
EP2975812A4 (de) * 2013-03-12 2016-11-02 Panasonic Ip Man Co Ltd Bussystem und computerprogramm
WO2014159862A1 (en) 2013-03-14 2014-10-02 Headwater Partners I Llc Automated credential porting for mobile devices
WO2014209391A1 (en) * 2013-06-28 2014-12-31 Intel Corporation A method, apparatus and system for a source-synchronous circuit-switched network on a chip (noc)
US9471726B2 (en) 2013-07-25 2016-10-18 Netspeed Systems System level simulation in network on chip architecture
US9054977B2 (en) 2013-08-05 2015-06-09 Netspeed Systems Automatic NoC topology generation
US9473388B2 (en) 2013-08-07 2016-10-18 Netspeed Systems Supporting multicast in NOC interconnect
US9699079B2 (en) 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
US9473415B2 (en) 2014-02-20 2016-10-18 Netspeed Systems QoS in a system with end-to-end flow control and QoS aware buffer allocation
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9602587B2 (en) * 2014-06-26 2017-03-21 Altera Corporation Multiple plane network-on-chip with master/slave inter-relationships
US9608935B2 (en) * 2014-09-08 2017-03-28 Qualcomm Technologies, Inc. Tunneling within a network-on-chip topology
US9742630B2 (en) 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US9571341B1 (en) 2014-10-01 2017-02-14 Netspeed Systems Clock gating for system-on-chip elements
CN104320341B (zh) * 2014-10-23 2017-05-24 东北大学 路由自适应异步2D‑Torus片上网络系统及其设计方法
US9529400B1 (en) 2014-10-29 2016-12-27 Netspeed Systems Automatic power domain and voltage domain assignment to system-on-chip agents and network-on-chip elements
US11321263B2 (en) 2014-12-17 2022-05-03 Intel Corporation High bandwidth core to network-on-chip interface
US9660942B2 (en) 2015-02-03 2017-05-23 Netspeed Systems Automatic buffer sizing for optimal network-on-chip design
US9444702B1 (en) 2015-02-06 2016-09-13 Netspeed Systems System and method for visualization of NoC performance based on simulation output
US9928204B2 (en) 2015-02-12 2018-03-27 Netspeed Systems, Inc. Transaction expansion for NoC simulation and NoC design
US9568970B1 (en) 2015-02-12 2017-02-14 Netspeed Systems, Inc. Hardware and software enabled implementation of power profile management instructions in system on chip
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10050843B2 (en) 2015-02-18 2018-08-14 Netspeed Systems Generation of network-on-chip layout based on user specified topological constraints
US9912997B2 (en) 2015-03-03 2018-03-06 Darryl Adderly System and method to determine content items and associated toggle triggers for a viewer
US9864728B2 (en) 2015-05-29 2018-01-09 Netspeed Systems, Inc. Automatic generation of physically aware aggregation/distribution networks
US9825809B2 (en) 2015-05-29 2017-11-21 Netspeed Systems Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10313269B2 (en) 2016-12-26 2019-06-04 Netspeed Systems, Inc. System and method for network on chip construction through machine learning
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10084725B2 (en) 2017-01-11 2018-09-25 Netspeed Systems, Inc. Extracting features from a NoC for machine learning construction
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10298485B2 (en) 2017-02-06 2019-05-21 Netspeed Systems, Inc. Systems and methods for NoC construction
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10896476B2 (en) 2018-02-22 2021-01-19 Netspeed Systems, Inc. Repository of integration description of hardware intellectual property for NoC construction and SoC integration
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
KR101984762B1 (ko) * 2018-10-31 2019-06-03 주식회사 모라이 네트워크 플랫폼을 적용한 자율주행차량 시뮬레이터

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596742A (en) * 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5774067A (en) * 1995-06-07 1998-06-30 International Business Machines Corporation Flash-flooding multi-stage interconnection network with parallel path seeking switching elements
US20030035371A1 (en) * 2001-07-31 2003-02-20 Coke Reed Means and apparatus for a scaleable congestion free switching system with intelligent control
US7283557B2 (en) 2002-01-25 2007-10-16 Fulcrum Microsystems, Inc. Asynchronous crossbar with deterministic or arbitrated control

Also Published As

Publication number Publication date
DE602006000515D1 (de) 2008-03-27
JP4808513B2 (ja) 2011-11-02
FR2883116B1 (fr) 2007-04-13
ATE386299T1 (de) 2008-03-15
EP1701273B1 (de) 2008-02-13
US7957381B2 (en) 2011-06-07
US20060209846A1 (en) 2006-09-21
JP2006254449A (ja) 2006-09-21
FR2883116A1 (fr) 2006-09-15
EP1701273A1 (de) 2006-09-13

Similar Documents

Publication Publication Date Title
DE602006000515T2 (de) Global asynchrone Kommunikationsarchitektur für ein System auf einem integrierten Schaltkreis
DE602006000516T2 (de) Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System
EP1941674B1 (de) Teilnehmer und kommunikationscontroller eines kommunikationssystems und verfahren zur realisierung einer gateway-funktionalität in einem teilnehmer eines kommunikationssystems
DE69832884T2 (de) Wegesucheinheit mit zuteilung von virtuellen kanälen
DE602004012061T2 (de) Vorrichtung und Verfahren zum Festlegen eines Routing-Weges zwischen Routern auf einem Chip
DE60316587T2 (de) Integrierter schaltkreis und verfahren zum erstellen von transaktionen
DE3752370T2 (de) Vermittlungssystem
DE60317890T2 (de) Verfahren und anordnung zur lokalen synchronisation in verteilten master-slave-kommunikationssystemen
DE60033529T2 (de) Netzprozessor, speicherorganisation und verfahren
DE602005003473T2 (de) Datenverarbeitungssystem und Verfahren zur Zuordnung von Zeitlagen
DE60314205T2 (de) Arbiter für ein Vermittlungssystem mit Eingangspuffer
CN102629913B (zh) 适用于全局异步局部同步片上互连网络的路由器装置
DE60132307T2 (de) Paketvermittlung
CN101189843B (zh) 电子设备和通信资源分配方法
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE60208252T2 (de) Vorrichtung für ein Mehrrechnersystem mit einer mehrstufigen Verbindungsanordnung
CN1788500A (zh) 时分多路复用电路交换路由器
CN102685017A (zh) 一种基于fpga的片上网络路由器
CN101584164A (zh) 闭环时钟同步
DE60112319T2 (de) Kommunikationsnetze
DE69631265T2 (de) Vermittlungssystem
DE60130844T2 (de) Autonomes OSPF-System mit einem in zwei Teilbereiche getrennten Hauptnetz
DE60123134T2 (de) Verfahren und vorrichtung für einen rekonfigurierbaren prozessor
DE69534171T2 (de) Verfahren und Vorrichtung für verbesserten Durchfluss in einem Vielfachknoten-Kommunikationssystem mit einem gemeinsamen Betriebsmittel
SE514485C2 (sv) Förfarande och arrangemang för defragmentering

Legal Events

Date Code Title Description
8364 No opposition during term of opposition