DE602006000516T2 - Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System - Google Patents

Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System Download PDF

Info

Publication number
DE602006000516T2
DE602006000516T2 DE602006000516T DE602006000516T DE602006000516T2 DE 602006000516 T2 DE602006000516 T2 DE 602006000516T2 DE 602006000516 T DE602006000516 T DE 602006000516T DE 602006000516 T DE602006000516 T DE 602006000516T DE 602006000516 T2 DE602006000516 T2 DE 602006000516T2
Authority
DE
Germany
Prior art keywords
data
node
packet
priority
output
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
DE602006000516T
Other languages
English (en)
Other versions
DE602006000516D1 (de
Inventor
Edith 38112 Beigne
Pascal 38760 Vivet
Marc 38330 Renaudin
Jerôme 38100 Quartana
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.)
Centre National de la Recherche Scientifique CNRS
Institut Polytechnique de Grenoble
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Centre National de la Recherche Scientifique CNRS
Commissariat a lEnergie Atomique CEA
Institut Polytechnique de Grenoble
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 Centre National de la Recherche Scientifique CNRS, Commissariat a lEnergie Atomique CEA, Institut Polytechnique de Grenoble filed Critical Centre National de la Recherche Scientifique CNRS
Publication of DE602006000516D1 publication Critical patent/DE602006000516D1/de
Application granted granted Critical
Publication of DE602006000516T2 publication Critical patent/DE602006000516T2/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/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • 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

Description

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

Claims (27)

  1. Verfahren zur Datenübertragung in einem On-Chip-Netzwerk mit Asynchronkommunikationsprotokoll, wobei dieses Netzwerk einen oder mehrere Knoten (120, 500) und eine oder mehrere Ressourcen (114) umfasst und jeder Knoten dabei einen oder mehrere Eingänge (5100 , ..., 510n-1 ), verbunden mit einem oder mehreren Eingangscontrollern (6000 , ..., 600n-1 ), und einen oder mehrere Ausgänge (5500 , ..., 550n-1 ), verbunden mit einem oder mehreren Ausgangscontrollern (7000 , ..., 700n-1 ), umfasst, dadurch gekennzeichnet, dass wenigstens einer der Knoten ohne internen Takt arbeitet und fähig ist, zwischen zwei für einen selben Ausgang bestimmten Datenpaketen eine Transfer-Hierarchie festzulegen, wobei diese Hierarchie wenigstens in Abhängigkeit von einer jedem Datenpaket zugeordneten Prioritätskanalinformation festgelegt wird und dieser Prioritätskanal und dieses Datenpaket von einem anderen Knoten und einer anderen Ressource des Netzwerks stammen, und die Prioritätskanalinformation übertragen wird durch ein Synchronisationssignal eines ersten Typs gemäß dem Asynchronkommunikationsprotokoll.
  2. Verfahren nach Anspruch 1, wobei die Transferhierarchie, wenn die Prioritätskanäle identisch sind, festgelegt wird, indem man jedem Paket einen Prioritätspegel zuordnet, abhängig von dem Zeitpunkt seiner Ankunft in dem Knoten (500) und/oder dem Ankunftseingang (5100 ) oder dem Eingangsport in den Knoten.
  3. Verfahren nach Anspruch 1 oder 2, in dem – wenn ein erstes Paket gerade dabei ist, den Knoten zu verlassen, aber einen Prioritätspegel aufweist, der niedriger ist als der Prioritätspegel eines "Eingangspaket" genannten zweiten Pakets –, die Ausgabe des ersten Pakets unterbrochen oder gestoppt wird und das zweite Paket prioritär zum Ausgang transferiert wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, in dem Routinginformationen mit jedem Datenpaket verknüpft werden, wobei für jeden der durchquerten Knoten ein Teil dieser Routinginformationen bestimmt ist.
  5. Verfahren nach Anspruch 4, wobei eine einen Knoten (500) betreffende Routinginformation in diesem Knoten gelesen und benutzt wird und die für noch nicht durchquerte Knoten bestimmten anderen Routinginformationen vorbereitet werden für die nächste Destination des Datenpakets in dem Netzwerk.
  6. Verfahren nach Anspruch 4 oder 5, wobei die Routinginformationen sich am Anfang des Datenpakets befinden.
  7. Verfahren nach einem der Ansprüche 4 bis 6, wobei die Routinginformationen außerdem in dem hinsichtlich des Transfers der Daten von dem Eingangscontroller (6000 ) zum Ausgangscontroller (7000 ) des Knotens (500) in dem Eingangscontroller (6000 ) gespeichert werden.
  8. Verfahren nach einem der Ansprüche 4 bis 7, wobei der Knoten (500) Einrichtungen zur Speicherung einer Routinginformation des ersten Pakets hat, dessen Ausgabe unterbrochen oder gestoppt wird.
  9. Verfahren nach einem der Ansprüche 4 bis 7, das außerdem, nach Empfang und Akzeptation der Daten und des Synchronisationssignals des ersten Typs, die Sendung eines Synchronisationssignals eines zweiten Typs, oder Akzeptationssignals, von dem Knoten (500), der ein Datenelement oder mehrere Datenelemente empfängt, zu der Einrichtung, von der der Knoten dieses Datenelement oder diese Datenelemente erhalten hat, umfasst.
  10. Verfahren nach Anspruch 9, in dem der Knoten für Daten, die mit dem Kanal der höchsten Priorität verknüpft sind, kein Akzeptationssignal oder Synchronisationssignal des zweiten Typs sendet.
  11. Verfahren nach Anspruch 9 oder 10, in dem die Synchronisationssignale des Kommunikationsprotokolls mittels eines Vierphasenprotokolls und/oder einer Multischienencodierung implementiert sind.
  12. Verfahren nach einem der Ansprüche 1 bis 11, wobei der Eingangscontroller (6000 ), wenn er einen Datenpaketanfang empfängt, dem Ausgangscontroller des Ausgangs, zu dem die Daten übertragen werden müssen, ein sogenanntes Validitätssignal sendet, wobei dieses Validitätssignal Daten bezüglich des Prioritätssignals der genannten zu übertragenden Daten enthält.
  13. Verfahren nach Anspruch 12, wobei der Ausgangscontroller (7000 ) nach dem Empfang des Validitätssignals Paketanfangs- bzw. Paketstartanfragen, die zu Paketen gehören, die nicht Teil der prioritärsten Datenpakete sind, in Warteschlangen von Paketstartanfragen einfügt, die jeweils zu Datenpaketen desselben Prioritätskanals gehören.
  14. Verfahren nach einem der Ansprüche 12 oder 13, wobei der Ausgangscontroller (7000 ), nach dem Empfang des Validitätssignals, Register des Eingangscontrollers überwacht, in denen die Daten in Abhängigkeit von ihrem Prioritätskanal gespeichert werden.
  15. Verfahren nach einem der vorangehenden Ansprüche, wobei der Eingangscontroller (6000 ) die Daten des Prioritätskanals hinsichtlich des Transfers der Daten zum Ausgangscontroller speichert.
  16. Datenübertragungsvorrichtung mit einem On-Chip-Netzwerk mit Asynchronkommunikationsprotokoll, wobei dieses Netzwerk einen oder mehrere Knoten (120, 500) und eine oder mehrere Ressourcen (114) umfasst und jeder Knoten dabei einen oder mehrere Eingänge (5100 , ..., 510n-1 ), verbunden mit einem oder mehreren Eingangscontrollern (6000 , ..., 600n-1 ), und einen oder mehrere Ausgänge (5500 , ..., 550n-1 ), verbunden mit einem oder mehreren Ausgangscontrollern (7000 , ..., 700n-1 ), umfasst, dadurch gekennzeichnet, dass wenigstens einer der Knoten ohne internen Takt arbeitet, wobei jeder der Eingangscontroller dieses Knotens umfasst: – Einrichtungen zur Bestimmung einer Transferhierarchie zwischen zwei zu einem selben Ausgang zu leitenden Datenpaketen, wobei diese Hierarchie wenigstens in Abhängigkeit von einer Information des mit diesem Datenpaket verknüpften Prioritätskanals bestimmt wird, – Einrichtungen (630) für den Empfang von einem eine Prioritätskanalinformation enthaltenden Synchronisationssignal und von Datenpaketen eines anderen Knotens oder von einer Ressource des Netzwerks.
  17. Vorrichtung nach Anspruch 16, wobei die Einrichtungen zur Bestimmung der Transferhierarchie Einrichtungen umfassen, um jedem Datenpaket, wenn die Prioritätskanäle identisch sind, einen Prioritätspegel zuzuordnen, in Abhängigkeit von seinem Ankunftszeitpunkt in dem Knoten (500) und/oder dem Eingang (5100 ) oder dem Eingangsport in den Knoten.
  18. Vorrichtung nach einem der Ansprüche 16 oder 17 mit außerdem Einrichtungen, um die Aussendung eines ersten Datenpakets zu unterbrechen oder auszusetzen, wenn dieses erste Paket einen Prioritätspegel aufweist, der niedriger ist als der Prioritätspegel eines "Eingangspaket" genannten zweiten Pakets, um dieses zweite Paket prioritär auszugeben.
  19. Vorrichtung nach einem der Ansprüche 16 bis 18 mit außerdem Einrichtungen zur Codierung von mit jedem Datenpaket verknüpften Routinginformationen, wobei für jeden durchquerten Knoten ein Teil dieser Informationen bestimmt ist.
  20. Verfahren nach Anspruch 19 mit Einrichtungen zum Lesen der einen Knoten betreffenden Routinginformation und Einrichtungen, um die Routinginformationen für die nächste Destination des Datenpakets in dem Netzwerk vorzubereiten.
  21. Verfahren nach einem der Ansprüche 19 oder 20 mit außerdem Einrichtungen (640) zur Speicherung der Routinginformationen in dem Eingangscontroller eines durchquerten Knotens hinsichtlich des Transfers der Daten von dem Eingangscontroller zum Ausgangscontroller.
  22. Verfahren nach einem der Ansprüche 19 bis 21, wobei der asynchrone Knoten (500) Einrichtungen zur Speicherung einer Routinginformation des ersten Pakets hat, dessen Ausgabe unterbrochen oder gestoppt wird.
  23. Verfahren nach einem der Ansprüche 19 bis 22, wobei der asynchrone Knoten (500) außerdem Einrichtungen umfasst, um, wenn er ein Datenelement oder mehrere Datenelemente empfängt, nach Empfang und Akzeptation der Daten und des entsprechenden Synchronisationssignals der Einrichtung, von der er dieses Datenelement oder diese Datenelemente erhalten hat, ein Akzeptationssignal (E_accept) zu senden.
  24. Verfahren nach einem der Ansprüche 16 bis 23, wobei der Eingangscontroller Einrichtungen (630) umfasst, um, wenn er einen Datenpaketanfang empfängt, dem Ausgangscontroller des Ausgangs, zu dem die Daten übertragen werden sollen, ein sogenanntes Validitätssignal zu senden, wobei dieses Validitätssignal Daten bezüglich des Prioritätskanals der genannten zu übertragenden Daten enthält.
  25. Vorrichtung nach Anspruch 24, wobei der Ausgangscontroller (7000 ) Einrichtungen umfasst, um nach Empfang des Validitätssignals eine Paketanfangs- bzw. Paketstartanfrage, die zu einem Paket gehört, das nicht Teil der Datenpakete des prioritärsten Kanals ist, in eine Warteschlange für Paketstartanfragen einzufügen, die jeweils zu Datenpaketen desselben Prioritätskanals gehören.
  26. Verfahren nach einem der Ansprüche 24 oder 25, wobei der Ausgangscontroller (7000 ) Einrichtungen (740) umfasst, um nach Empfang eines Validitätssignals Register des Eingangcontrollers zu überwachen, in denen Daten in Abhängigkeit von ihrem Prioritätskanal gespeichert werden.
  27. Verfahren nach einem der Ansprüche 16 bis 26, wobei der Eingangscontroller (6000 ) Einrichtungen zur Speicherung der Prioritätskanaldaten hinsichtlich des Transfers der Daten zum Ausgangscontroller umfasst.
DE602006000516T 2005-03-08 2006-03-06 Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System Active DE602006000516T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0550611 2005-03-08
FR0550611A FR2883117B1 (fr) 2005-03-08 2005-03-08 Architecture de noeud de communication dans un systeme de reseau sur puce globalement asynchrone.

Publications (2)

Publication Number Publication Date
DE602006000516D1 DE602006000516D1 (de) 2008-03-27
DE602006000516T2 true DE602006000516T2 (de) 2009-04-02

Family

ID=34954683

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602006000516T Active DE602006000516T2 (de) 2005-03-08 2006-03-06 Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System

Country Status (6)

Country Link
US (1) US7940666B2 (de)
EP (1) EP1701274B8 (de)
JP (1) JP4808514B2 (de)
AT (1) ATE386300T1 (de)
DE (1) DE602006000516T2 (de)
FR (1) FR2883117B1 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008018004A2 (en) * 2006-08-08 2008-02-14 Koninklijke Philips Electronics N.V. Electronic device and method for synchronizing a communication
US20090067343A1 (en) * 2007-06-04 2009-03-12 David Fritz Method for the synthesis of optimal asynchronous on-chip communication networks from system-level constraints
WO2008149784A1 (ja) 2007-06-08 2008-12-11 Nec Corporation 半導体集積回路及びフィルタ制御方法
JP5287718B2 (ja) 2007-06-08 2013-09-11 日本電気株式会社 半導体集積回路及びフィルタ制御方法
US7783823B2 (en) * 2007-07-31 2010-08-24 Hewlett-Packard Development Company, L.P. Hardware device data buffer
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
FR2925187B1 (fr) * 2007-12-14 2011-04-08 Commissariat Energie Atomique Systeme comportant une pluralite d'unites de traitement permettant d'executer des taches en parallele,en mixant le mode d'execution de type controle et le mode d'execution de type flot de donnees
US8473667B2 (en) * 2008-01-11 2013-06-25 International Business Machines Corporation Network on chip that maintains cache coherency with invalidation messages
US8490110B2 (en) 2008-02-15 2013-07-16 International Business Machines Corporation Network on chip with a low latency, high bandwidth application messaging interconnect
US8638665B2 (en) 2008-04-30 2014-01-28 Nec Corporation Router, information processing device having said router, and packet routing method
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
US8392664B2 (en) 2008-05-09 2013-03-05 International Business Machines Corporation Network on chip
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
US8494833B2 (en) 2008-05-09 2013-07-23 International Business Machines Corporation Emulating a computer run time environment
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
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US8327114B1 (en) * 2008-07-07 2012-12-04 Ovics Matrix processor proxy 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
US8195884B2 (en) 2008-09-18 2012-06-05 International Business Machines Corporation Network on chip with caching restrictions for pages of computer memory
DE102008049620A1 (de) * 2008-09-30 2010-04-01 Bayerische Motoren Werke Aktiengesellschaft Kommunikationssystem
US8108908B2 (en) 2008-10-22 2012-01-31 International Business Machines Corporation Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor
JP5307525B2 (ja) * 2008-12-03 2013-10-02 キヤノン株式会社 データ処理装置及びその制御方法
US8509078B2 (en) * 2009-02-12 2013-08-13 Microsoft Corporation Bufferless routing in on-chip interconnection networks
DE102009002007B3 (de) * 2009-03-31 2010-07-01 Robert Bosch Gmbh Netzwerkcontroller in einem Netzwerk, Netzwerk und Routingverfahren für Nachrichten in einem Netzwerk
FR2948840B1 (fr) 2009-07-29 2011-09-16 Kalray Reseau de communication sur puce avec garantie de service
FR2949879B1 (fr) 2009-09-04 2014-07-18 Kalray Noeuds d'entree/sortie d'un reseau sur puce torique.
FR2951868B1 (fr) 2009-10-28 2012-04-06 Kalray Briques de construction d'un reseau sur puce
FR2957176B1 (fr) * 2010-03-02 2012-04-06 Commissariat Energie Atomique Puce electronique et circuit integre comportant une telle puce electronique
EP2613479B1 (de) 2010-09-03 2015-09-30 Panasonic Intellectual Property Management Co., Ltd. Relaisvorrichtung
JP2012146201A (ja) * 2011-01-13 2012-08-02 Toshiba Corp オンチップルータ及びそれを用いたマルチコアシステム
JP2012186539A (ja) * 2011-03-03 2012-09-27 Renesas Electronics 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
CN102158403B (zh) * 2011-03-24 2014-03-05 山东大学 一种适用于片上网络的高效数据流传输通信系统及其工作方法
JP5603481B2 (ja) * 2011-07-22 2014-10-08 パナソニック株式会社 中継装置
JP2013196167A (ja) 2012-03-16 2013-09-30 Toshiba Corp 情報処理装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812534A (en) * 1993-01-08 1998-09-22 Multi-Tech Systems, Inc. Voice over data conferencing for a computer-based personal communications system
NZ510022A (en) * 1998-08-20 2002-08-28 Qualcomm Inc System and method for priority access channel assignment in a cellular telephone system
US6859454B1 (en) * 1999-06-30 2005-02-22 Broadcom Corporation Network switch with high-speed serializing/deserializing hazard-free double data rate switching
DE60128413T2 (de) * 2000-03-02 2008-01-17 Alcatel Lucent Gekennzeichneter Prioritätswarteschlangescheduler
US6917589B2 (en) * 2001-01-25 2005-07-12 Agere Systems Inc. Automatic quality of service assignment in ethernet switches
US7283557B2 (en) 2002-01-25 2007-10-16 Fulcrum Microsystems, Inc. Asynchronous crossbar with deterministic or arbitrated control
ATE306163T1 (de) * 2002-04-16 2005-10-15 Bosch Gmbh Robert Verfahren zur überwachung einer zugriffsablaufsteuerung für ein kommunikationsmedium einer kommunikationssteuerung eines kommunikationssystems
US7277449B2 (en) * 2002-07-29 2007-10-02 Freescale Semiconductor, Inc. On chip network
US20040090964A1 (en) * 2002-11-07 2004-05-13 Coke Reed Means and apparatus for a scaleable congestion free switching system with intelligent control II
DE10252536A1 (de) * 2002-11-08 2004-05-27 Philips Intellectual Property & Standards Gmbh Verfahren und Vorrichtung zur Übertragung von Datenpaketen
JP2007535064A (ja) * 2004-04-28 2007-11-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 非同期/同期インタフェースを備える回路
US20080144493A1 (en) * 2004-06-30 2008-06-19 Chi-Hsiang Yeh Method of interference management for interference/collision prevention/avoidance and spatial reuse enhancement
WO2006018751A1 (en) * 2004-08-12 2006-02-23 Koninklijke Philips Electronics N.V. A method for allocating data to at least one packet in an integrated circuit
US20060190852A1 (en) * 2005-01-12 2006-08-24 Sotiriou Christos P Asynchronous, multi-rail, asymmetric-phase, static digital logic with completion detection and method for designing the same
US7535907B2 (en) * 2005-04-08 2009-05-19 Oavium Networks, Inc. TCP engine

Also Published As

Publication number Publication date
DE602006000516D1 (de) 2008-03-27
FR2883117B1 (fr) 2007-04-27
US20060203825A1 (en) 2006-09-14
EP1701274A1 (de) 2006-09-13
US7940666B2 (en) 2011-05-10
JP4808514B2 (ja) 2011-11-02
FR2883117A1 (fr) 2006-09-15
ATE386300T1 (de) 2008-03-15
JP2006254450A (ja) 2006-09-21
EP1701274B8 (de) 2008-07-16
EP1701274B1 (de) 2008-02-13

Similar Documents

Publication Publication Date Title
DE602006000516T2 (de) Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System
DE602006000515T2 (de) Global asynchrone Kommunikationsarchitektur für ein System auf einem integrierten Schaltkreis
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
CN100367250C (zh) 用于建立事务的集成电路和方法
Chien et al. Planar-adaptive routing: Low-cost adaptive networks for multiprocessors
DE69832884T2 (de) Wegesucheinheit mit zuteilung von virtuellen kanälen
DE69936225T2 (de) Gleichzeitige serielle verbindung zur integrierung von funktionellen blöcken in eine integrierte schaltungsvorrichtung
EP1941674B1 (de) Teilnehmer und kommunikationscontroller eines kommunikationssystems und verfahren zur realisierung einer gateway-funktionalität in einem teilnehmer eines kommunikationssystems
DE69833708T2 (de) Kommunikationsverfahren für eine medienunabhängige Schnittstelle (MII) für ein hochintegriertes Ethernet-Netzelement
Chien et al. Planar-adaptive routing: low-cost adaptive networks for multiprocessors
DE60115154T2 (de) Verfahren und Vorrichtung zum Datenrahmenweiterleiten in einer Vermittlungsstelle
DE112009000834B4 (de) Expressvirtuelle Kanäle in einem Paketvermittelten Auf-Chip Verbindungsnetzwerk
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE60317890T2 (de) Verfahren und anordnung zur lokalen synchronisation in verteilten master-slave-kommunikationssystemen
DE69735740T2 (de) Asynchrone paketvermittlung
CN100538691C (zh) 用于发出事务的集成电路、数据处理系统和方法
DE112013004750B4 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE60222656T2 (de) Vorrichtung und verfahren für effizientes multicasting von datenpaketen
DE60003834T2 (de) Vituelle kanäle und entsprechende pufferzuweisungen für einen blockierungfreien rechnersystem -betrieb
CN102185751B (zh) 一种基于快速通道技术的单周期片上路由器
Sivaram et al. HIPIQS: A high-performance switch architecture using input queuing
DE69534171T2 (de) Verfahren und Vorrichtung für verbesserten Durchfluss in einem Vielfachknoten-Kommunikationssystem mit einem gemeinsamen Betriebsmittel
DE60130844T2 (de) Autonomes OSPF-System mit einem in zwei Teilbereiche getrennten Hauptnetz
DE60204794T2 (de) Mechanismus zur kennzeichnung und arbitrierung in einem eingabe/ausgabe knoten eines rechnersystems
DE102005036064B4 (de) Verfahren zum phasenbezogenen Scheduling des Datenflusses in geschalteten Netzwerken

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (, FR

Owner name: COMMISSARIAT A L ENERGIE ATOMIQUE, PARIS, FR

Owner name: INSTITUT NATIONAL POLYTECHNIQUE DE GRENOBLE, G, FR

8364 No opposition during term of opposition