DE112013003900B4 - Reservierungsverfahren und vorrichtung zur verringerung von verhungern von agenten und zurückprallen von nachrichten für zweidimensionale interconnects ohne pufferspeicher - Google Patents

Reservierungsverfahren und vorrichtung zur verringerung von verhungern von agenten und zurückprallen von nachrichten für zweidimensionale interconnects ohne pufferspeicher Download PDF

Info

Publication number
DE112013003900B4
DE112013003900B4 DE112013003900.1T DE112013003900T DE112013003900B4 DE 112013003900 B4 DE112013003900 B4 DE 112013003900B4 DE 112013003900 T DE112013003900 T DE 112013003900T DE 112013003900 B4 DE112013003900 B4 DE 112013003900B4
Authority
DE
Germany
Prior art keywords
ring
agent
flit
horizontal
interconnect
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
DE112013003900.1T
Other languages
English (en)
Other versions
DE112013003900T5 (de
Inventor
Andres Meija
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112013003900T5 publication Critical patent/DE112013003900T5/de
Application granted granted Critical
Publication of DE112013003900B4 publication Critical patent/DE112013003900B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H04L12/427Loop networks with decentralised control
    • H04L12/43Loop networks with decentralised control with synchronous transmission, e.g. time division multiplex [TDM], slotted rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/08Intermediate station arrangements, e.g. for branching, for tapping-off
    • H04J3/085Intermediate station arrangements, e.g. for branching, for tapping-off for ring networks, e.g. SDH/SONET rings, self-healing rings, meashed SDH/SONET networks
    • 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
    • H04L12/422Synchronisation for ring networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • 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
    • H04L2012/421Interconnected ring systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Vibration Dampers (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

Es wird eine Schlitzreservierungsverfahren offenbart. Das Schlitzreservierungsverfahren generiert Schlitzreservierungen in zwei Dimensionen zur Behandlung einer Starvation und zur Verringerung eines Bounce von Nachrichten, die durch eine Zwischenverbindung übertragen werden. Eine Zwischenverbindung, die unter Verwendung des Schlitzreservierungsverfahrens implementiert wird, kann auf größere Netz-auf-Chip-Implementierungen skaliert werden.

Description

  • TECHNISCHES GEBIET
  • Diese Anmeldung bezieht sich auf Interconnects ohne Pufferspeicher und insbesondere auf ein Reservierungsverfahren und eine Vorrichtung, die ein Verhungern von Agenten und ein Zurückprallen von Nachrichten (Flits) innerhalb solcher Interconnects reduzieren.
  • ALLGEMEINER STAND DER TECHNIK
  • Die US 2012/0079032 A1 offenbart ein System, das eine Einwege-Ordnung von ansonsten unabhängigen Nachrichtenklassen ermöglicht. Ein Einwege-Nachrichtenordnungsmechanismus ermöglicht eine Einwege-Ordnung von Nachrichten verschiedener Nachrichtenklassen, die zwischen Interconnects gesendet werden, die unabhängige Pfade für die Nachrichtenklassen verwenden. Nachrichten einer zweiten Nachrichtenklasse können dabei keine Nachrichten einer ersten Nachrichtenklasse weiterleiten. Wenn Nachrichten der ersten Klasse und zweiten Klasse der Reihe nach empfangen werden, stellt der Ordnungsmechanismus sicher, dass Nachrichten der ersten Klasse vor Nachrichten der zweiten Klasse an einen nächsten Hop weitergeleitet und dort empfangen werden.
  • On-Chip Netzarchitekturen, auch bekannt als Netz-auf-Chip-Architekturen, werden mit einer großen Zahl von Agenten gestaltet. Üblicherweise verfügen diese Netzarchitekturen über emulierte Off-Chip Netze, was zu komplexen Designs führt, die nicht skalierbar sind.
  • Ein Interconnect, eine Art von vermaschtem Netz, ist eine vereinfachte Design-Topologie, die eine größere Zahl von Agenten ermöglicht, die gleichzeitig auf einem Chip vorhanden sind, wobei jeder Agent mit einem anderen Agenten kommunizieren kann. Interconnects werden aus Kombinationen von Ringen hergestellt, die in zwei Dimensionen dargeboten werden, wobei Intelligenz an den Schnittpunkten der Ringe eingebettet ist.
  • Leider neigt das Design solcher Interconnects dazu, die Agenten, die an der Peripherie des Interconnects angeordnet sind, gegenüber Agenten zu begünstigen, die sich in der Mitte des Interconnects befinden. Dieser Konstruktionsmangel kann zu Verhungern, wobei ein Agent nicht imstande ist, eine Nachricht über den Interconnect zu einem anderen Agenten zu senden, und zu Zurückprallen führen, wobei Nachrichten, die sich bereits in dem Interconnect befinden, ihren Zielagenten nicht erreichen können.
  • Es besteht daher ein anhaltender Bedarf an einer Lösung zur Eliminierung der Nachteile nach dem Stand der Technik.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die Erfindung betrifft Vorrichtungen und ein verbessertes Schlitzreservierungsverfahren, das es Agenten ermöglicht, Schlitzereservierungen in einem zweidimensionalen Interconnect (ohne Puffferspeicher) zu generieren. Die Erfindung löst dabei die Aufgabe, ein Verhungern der Agenten und ein Zurückprallen von Nachrichten (Flits), die durch eine Interconnect übertragen werden, zu verringern.
  • Die Erfindung wird durch den Gegenstand der unabhängigen Patentansprüche definiert. Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der abhängigen Patentansprüche.
  • Figurenliste
  • Die vorangehenden Aspekte und viele der begleitenden Vorteile dieses Dokuments werden offensichtlicher, wenn sie unter Bezugnahme auf die folgende ausführliche Beschreibung in Verbindung mit den beiliegenden Zeichnungen besser verständlich werden, in welchen sich gleiche Bezugszeichen in den verschiedenen Ansichten auf gleiche Teile beziehen, falls nicht anders angegeben.
    • 1 ist ein vereinfachtes Flussdiagramm eines Schlitzreservierungsverfahrens gemäß einigen Ausführungsformen;
    • 2 ist ein vereinfachtes Diagramm eines 6 x 6 Interconnect gemäß einigen Ausführungsformen, die bis zu 72 Agenten unterstützt;
    • 3 ist eine vereinfachte Darstellung des Interconnects von 2, die einen einzelnen horizontalen Ring und einen einzelnen vertikalen Ring, die einander schneiden und an ein Paar von Agenten gekoppelt sind, gemäß einigen Ausführungsformen zeigt;
    • 4 ist die vereinfachte Darstellung des Interconnects von 2, die einige der Elemente des Ring-Stopps gemäß einigen Ausführungsformen zeigt;
    • 5 ist eine schematische Darstellung eines Ring-Stopps, der vom Schlitzreservierungsverfahren von 1 gemäß einigen Ausführungsformen verwendet wird;
    • 6A - 6C sind vereinfachte Darstellungen, die zeigen, wie periphere Agenten gegenüber mittleren Agenten in dem Interconnect von 2 gemäß einigen Ausführungsformen bevorzugt werden;
    • 7 ist ein vereinfachtes Diagramm von mehreren Agenten mit Warteschlangen zum Speichern von Nachrichten-Flits zur Veranschaulichung des Blockierungsphänomens am Linienkopf gemäß einigen Ausführungsformen;
    • 8 ist ein Register für Schlitzreservierungsanfragen, das vom Schlitzreservierungsverfahren von 1 gemäß einigen Ausführungsformen verwendet wird;
    • 9 ist ein vereinfachtes Diagramm, das zeigt, wie anfragende Agenten Schlitzreservierungen in dem Interconnect von 2 gemäß einigen Ausführungsformen generieren;
    • 10 ist ein Flussdiagramm, das Operationen des Schlitzreservierungsverfahrens von 1 zeigt, um ein Verhungern im horizontalen Ring eines Interconnects gemäß einigen Ausführungsformen zu verhindern;
    • 11 ist ein Flussdiagramm, das Operationen des Schlitzreservierungsverfahrens von 1 zeigt, um ein Verhungern von Agenten im vertikalen Ring eines Interconnects gemäß einigen Ausführungsformen zu verhindern;
    • 12 ist ein Flussdiagramm, das Operationen des Schlitzreservierungsverfahrens von 1 zeigt, um ein Zurückprallen von Nachrichten (Flits) im horizontalen Ring zu verringern; und
    • 13 ist ein Flussdiagramm, das Operationen zeigt, die vom Schlitzreservierungsverfahren von 1 beim Eintreffen des Ringschlitzes am Ring-Stopp gemäß einigen Ausführungsformen ausgeführt werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden ausführlichen Beschreibung wird auf die beiliegenden Zeichnungen verwiesen, die zur Veranschaulichung spezielle Ausführungsformen zeigen, in welchen der hier beschriebene Gegenstand ausgeführt werden kann. Es sollte jedoch klar sein, dass andere Ausführungsformen für einen Durchschnittsfachmann in dem Gebiet beim Lesen dieser Offenbarung offensichtlich werden. Die folgende ausführliche Beschreibung ist daher nicht in einem einschränkenden Sinn auszulegen, da der Schutzumfang des Gegenstandes durch die Ansprüche definiert ist.
  • 1 ist ein vereinfachtes Blockdiagramm eines Schlitzreservierungsverfahrens 100 gemäß einigen Ausführungsformen. Das Schlitzreservierungsverfahren 100 wird in einem Interconnect verwendet, der mehrere Agenten miteinander verbindet. Das durchgeführte Schlitzreservierungsverfahren 100 wird zur Behandlung eines von drei Phänomenen durchgeführt, die in dem Interconnect auftreten können: Verhungern von Agenten im horizontalen Ring (A), Verhungern von Agenten im vertikalen Ring (B), und Zurückprallen von Nachrichten (Flits) im horizontalen Ring (C). Jedes dieser Phänomene führt zu einem ineffizienten Betrieb des Interconnects und jedes Phänomen wird durch Vornehmen einer Schlitzreservierung wie unten beschrieben adressiert. In einigen Ausführungsformen wird die Nachrichtenverarbeitung in dem Interconnect durch Verwendung des Schlitzreservierungsverfahrens 100 verbessert.
  • Vor einer ausführlichen Beschreibung des Schlitzreservierungsverfahrens 100 ist eine Einführung in den Interconnect angemessen. 2 ist ein vereinfachtes Diagramm eines zweidimensionalen Interconnects 150 gemäß einigen Ausführungsformen. Der beispielhafte Interconnect 150 ist eine sechs-mal-sechs Topologie, die die Verbindung von bis zu 72 Agenten unterstützt. Halbringe 30 sind in der horizontalen Ebene dargestellt, während Halbringe 40 in der vertikalen Ebene dargestellt sind. Die Halbringe 30, 40 werden hier auch als die horizontalen Ringe bzw. vertikalen Ringe bezeichnet.
  • Kacheln 20, die unterhalb der Ringe 30, 40 angeordnet sind, bezeichnen Agentenpositionsmarker, wobei jede Kachel zwei Agenten unterstützt. In 2 sind die Agenten nicht ausdrücklich dargestellt, aber das Eintreffen einer Nachricht von jedem Cache-Agenten und jedem Kern-Agenten in dem Interconnect 150 und ihr Austreten aus dem Interconnect sind mit Pfeilen dargestellt. Somit geben die Pfeile 32 und die Pfeile 34 ein Eintreffen einer Nachricht von einem Kern/Cache-Agenten auf dem Interconnect 150 an, während die Pfeile 42 und die Pfeile 44 einen Austritt einer Nachricht aus dem Interconnect zum Kern/Cache-Agenten angeben.
  • Jeder Agent wird von einem Ring-Stopp 50 bedient, der am Schnittpunkt zwischen dem horizontalen Ring 30 und dem vertikalen Ring 40 für diesen Agenten angeordnet ist. Der Ring-Stopp 50 (nicht zu verwechseln mit den unten beschriebenen Ringschlitzen 90) enthält die Intelligenz des Interconnects 150. Der Ring-Stopp 50 ist in der Folge ausführlicher beschrieben.
  • Der Interconnect 150 ist eine Erweiterung von Ring-Interconnect-Designs zu einer zweidimensionalen Gittertopologie. Die horizontalen 30 und vertikalen 40 Ringe sind an den Kreuzungspunkten miteinander verbunden. Gleichzeitig ist ein Agent mit einem der horizontalen Ringe 30 und einem der vertikalen Ringe 40 verbunden.
  • 3 ist ein vereinfachtes Diagramm des Interconnects 150, das einen einzelnen horizontalen Ring 30 und einen einzelnen vertikalen Ring 40 zeigt, wobei der Ring-Stopp 50 zwischen den Ringen angeordnet ist. Ebenso sind in 3 zwei Agenten dargestellt, ein Kern-Agent 98A und ein Cache-Agent 98B (gemeinsam „Agenten 98“). Beide Agenten 98 sind sowohl mit den horizontalen wie auch vertikalen Ringen verbunden. Ein Eintritt in den horizontalen Ring 30 erfolgt durch Eintrittspunkte 32 und 34 und ein Austritt aus dem vertikalen Ring 40 erfolgt durch Austrittpunkte 42 und 44. Ein Flit 200 bewegt sich entlang des horizontalen Rings 30.
  • Verkehr auf dem Interconnect 150 betrifft Nachrichten, die zwischen zwei Agenten 98 übertragen werden. Die Nachrichten werden als mehrere Flits übertragen. Ein Flit, kurz für Flow Control Digit, ist die kleinste Einheit einer Flusssteuerung. Nachrichten bestehen im Allgemeinen aus mehreren Flits. Ein einzelnes Flit 200 ist in 3 beim Eintritt in den Interconnect 150 am horizontalen Ring 30 dargestellt. Die Verarbeitung von Flits 200 auf dem Interconnect 150 im Allgemeinen, wie auch durch das Schlitzreservierungsverfahren 100 wird nachstehend ausführlicher beschrieben.
  • 4 ist ein weiteres vereinfachtes Blockdiagramm des Interconnects 150 gemäß einigen Ausführungsformen. Zur Verarbeitung der Flits 200, die zwischen Agenten übertragen werden, enthält der Ring-Stopp 50 einen horizontalen Ring-Stopp 60, einen vertikalen Ring-Stopp 60 und einen Überschreitungspufferspeicher (Transgress Buffer - TB) 66. Der horizontale Ring-Stopp 60 verarbeitet Flits 200, die von einem Agenten empfangen werden (entweder Agent 98A oder Agent 98B), die für einen anderen Agenten auf dem Interconnect 150 bestimmt sind. Der vertikale Ring-Stopp 70 verarbeitet Flits 200, die vom horizontalen Ring 30 empfangen werden, und garantiert, dass die Flits über den vertikalen Ring 40 zu den Agenten gesendet werden. Der Überschreitungspufferspeicher 66, der zwischen dem horizontalen Ring-Stopp 60 und dem vertikalen Ring-Stopp 70 angeordnet ist, sorgt für eine Pufferspeicherung von Flits 200, die zwischen den zwei Ring-Stopps durchgehen. In anderen Ausführungsformen durchqueren Flits 200, die von einem Agenten 98 empfangen werden, zuerst den vertikalen Ring und werden dann vom vertikalen Ring-Stopp 70 verarbeitet, bevor sie zum horizontalen Ring 30 transferiert werden. Das Schlitzreservierungsverfahren 100 ist nicht auf eine bestimmte Ringtopologie beschränkt und arbeitet in mehreren Interconnect-Umgebungen.
  • 5 ist eine ausführliche schematische Darstellung des Ring-Stopps 50 des Interconnects 150 der 2, 3, und 4. Der Ring-Stopp 50 wird vom Schlitzreservierungsverfahren 100 in 1 verwendet, um zwei Phänomene zu vermeiden, die in dem Interconnect 150 auftreten, Verhungern und Zurückprallen. Verhungern und Zurückprallen werden nachstehend ausführlicher beschrieben.
  • Der Ring-Stopp 50 ist die Zwischenstation zum Bewegen von Flits 200 vom horizontalen Ring 30 zum vertikalen Ring 40. Zusätzlich zum horizontalen Ring-Stopp 60, dem vertikalen Ring-Stopp 70 und dem Überschreitungspufferspeicher 66, wie in 4 beschrieben, enthält der Ring-Stopp 50 eine Cache-Box (Austritt) 54, eine Kern-Box (Austritt) 52, eine Kern-Box (Eintritt) 72 und eine Cache-Box (Eintritt) 74. Der Kern-Agent 98A ist mit der Kern-Box 52 verbunden, um Flits 200 zum Interconnect 150 zu senden, und ist mit der Kern-Box 72 verbunden, um Flits von dem Interconnect zu empfangen. Ebenso ist der Cache-Agent 98B mit der Cache-Box 54 verbunden, um Flits 200 zum Interconnect 150 zu senden, und ist mit der Cache-Box 74 verbunden, um Flits von dem Interconnect 150 zu empfangen. Das Schlitzreservierungsverfahren 100 ist innerhalb der horizontalen und vertikalen Ring-Stopps 60, 70 angeordnet. In einigen Ausführungsformen hat der Überschreitungspufferspeicher 66 seinen eigenen Pufferspeicher oder Warteschlangen, einen Pufferspeicher 96C im Überschreitungspufferspeicher-Aufwärts/Cache 66A und einen Pufferspeicher 96D im Überschreitungspufferspeicher-Abwärts/Kern 66B.
  • Die Kern-Box 52 und die Cache-Box 54 leiten die Transaktion auf dem Interconnect 150 ein. Die Kern-Box 52 empfängt Flits 200 vom Kern-Agenten 98A und sendet die Flits über den horizontalen Ring 30 durch den Interconnect 150. Ebenso empfängt die Cache-Box 54 Flits 200 vom Cache-Agenten 98B und sendet die Flits über den horizontalen Ring 30durch den Interconnect 150. Die Kern-Box 52 und die Cache-Box 54 sind mit dem horizontalen Ring 30 durch Multiplexer 56A und 56B (gemeinsam „Multiplexer 56“) verbunden.
  • Die Kern-Box 72 und die Cache-Box 74 beenden die Transaktion auf dem Interconnect 150. Die Kern-Box 72 und die Cache-Box 74 empfangen Flits 200 vom vertikalen Ring-Stopp 70. Die Kern-Box 72 und die Cache-Box 74 sind mit dem vertikalen Ring 40 durch Multiplexer 86A und 86B (gemeinsam „Multiplexer 86“) verbunden.
  • Auf dem horizontalen Ring 30 bewegen sich Flits 200 für eine bestimmte Nachricht in eine einzige Richtung, entweder gegen den Uhrzeigersinn oder im Uhrzeigersinn. Ein Agent 98 kann eine Nachricht in einer Richtung gegen den Uhrzeigersinn senden, dann eine zweite Nachricht in einer Richtung im Uhrzeigersinn senden, wobei die Richtung durch den kürzesten Abstand zwischen dem sendenden Agenten und dem empfangenden Agenten bestimmt wird.
  • Ähnlich können sich Flits 200 über den vertikalen Ring 40 in einer Richtung gegen den Uhrzeigersinn oder in einer Richtung im Uhrzeigersinn bewegen. Der vertikale Ring 40 hat jedoch eine Polarität, die die Kopplung der Agenten an den vertikalen Ring in jeder Zeitperiode ändert. Während einer ersten Zeitperiode ist die Kern-Box 72 mit dem vertikalen Ring 40 verbunden, der in einer ersten Richtung (z.B. gegen den Uhrzeigersinn) verläuft, während die Cache-Box 74 mit dem vertikalen Ring verbunden ist, der in die entgegengesetzte Richtung (z.B. im Uhrzeigersinn) verläuft. Während der nächsten folgenden Zeitperiode ist die Kern-Box 72 mit dem vertikalen Ring 40 verbunden, der in die entgegengesetzte Richtung (im Uhrzeigersinn) verläuft, während die Cache-Box 74 mit dem vertikalen Ring verbunden ist, der in die erste Richtung (gegen den Uhrzeigersinn) verläuft. Während somit Nachrichten in beide Richtungen gesendet werden können, werden Flits 200 für eine bestimmte Nachricht in jeder Zeitperiode abwechselnd in eine bestimmte Richtung übertragen.
  • Der Überschreitungspufferspeicher 66 sieht einen Pufferspeicher für Flits 200 vor, die vom horizontalen Ring 30 kommen, und bewegt die Flits 200 zum vertikalen Ring 40. In einigen Ausführungsformen enthält der Überschreitungspufferspeicher 66 ferner einen Überschreitungspufferspeicher-Aufwärts/Cache 66A, einen Überschreitungspufferspeicher-Abwärts/Kern 66B, und Selektionsmultiplexer 80A und 80B (gemeinsam „Selektionsmultiplexer 80“). Die Selektionsmultiplexer 80 wählen den Zielort eintreffender Flits 200, gegen den Uhrzeigersinn oder im Uhrzeigersinn, Kern-Agent oder Cache-Agent. Es gibt mehrere mögliche Implementierungen des Überschreitungspufferspeichers 66 innerhalb des Ring-Stopps 50 abhängig von der Pufferspeicherorganisation und Konnektivität, wobei in einigen Ausführungsformen Kompromisse zwischen dem gewünschten Durchsatz und den Implementierungskosten getroffen werden.
  • Innerhalb des Ring-Stopps 50 besteht der horizontalen Ring-Stopp 60 aus zwei Zwischenspeichern 58A und 58B (gemeinsam „Zwischenspeicher 58“), einem in jeder Richtung, die Flits 200 vorübergehend speichern, die sich über den horizontalen Ring 30 bewegen. Die Multiplexer 56 wählen das Flit 200, das einen horizontalen Ring-Stopp 60 verlässt, in jedem Verarbeitungszyklus.
  • Flits 200, die über den horizontalen Ring 30 weiterlaufen, erhalten eine höhere Priorität für die Multiplexer 56 als Flits, die in den horizontalen Ring eingespeist werden (Flits, die am horizontalen Ring-Stopp durch die Austrittswarteschlange 52/54 des Agenten eintreffen). Wenn sich daher ein Flit 200 Zeitperiode für Zeitperiode über den horizontalen Ring 30 bewegt, bis es den Ring-Stopp erreicht, der mit dem beabsichtigten Zielagenten verknüpft ist, wird das Flit verarbeitet, bevor neu eintretende Flits verarbeitet werden.
  • Die zwei Selektionsmultiplexer 80 des Überschreitungspufferspeichers 66 filtern Flits 200 gemäß ihrem beabsichtigten Zielort auf dem vertikalen Ring 40. Zum Beispiel sendet der Selektionsmultiplexer 80A ein Flit 200, das gegen den Uhrzeigersinn entlang des vertikalen Rings 40 läuft oder die lokale Cache-Box zum Ziel hat, zum entsprechenden Überschreitungspufferspeicher (96C), während der Multiplexer 80B ein Flit 200, das entlang des vertikalen Rings im Uhrzeigersinn läuft oder die lokale Kern-Box zum Ziel hat, zum entsprechenden Überschreitungspufferspeicher (96D) sendet.
  • Der vertikale Ring-Stopp 70 besteht aus zwei Zwischenspeichern 82A und 82B (gemeinsam „Zwischenspeicher 82“), die vorübergehend Flits 200 speichern, die sich über den vertikalen Ring 40 bewegen. Der vertikale Ring-Stopp 70 enthält auch zwei Multiplexer 84A und 84B (gemeinsam „Multiplexer 84“), die Flits 200 wählen, die sich zu Eintrittsports 72, 74 der Agenten 98 bewegen. Die Multiplexer 86 des vertikalen Ring-Stopps 70 wählen das Flit 200, das bei jedem Verarbeitungszyklus in die Eintrittswarteschlange des Agenten eingespeist wird. Flits 200, die sich bereits entlang des vertikalen Rings 70 bewegen, erhalten eine höhere Priorität für die Multiplexer 86 als Flits, die vom Überschreitungspufferspeicher 66 zum Ring transferiert werden.
  • Die Kern-Box 52 enthält einen Pufferspeicher 96A und die Cache-Box 54 enthält einen Pufferspeicher 96B zum Speichern von Flits 200, die eine Nachricht bilden. Ebenso enthält der Überschreitungspufferspeicher-Aufwärts 66A einen Pufferspeicher 96C und der Überschreitungspufferspeicher-Abwärts 66B enthält einen Pufferspeicher 96D. Schließlich enthält die Kern-Box 72 einen Pufferspeicher 96E und die Cache-Box 74 enthält einen Pufferspeicher 96F zum Speichern von empfangenen Flits 200 (gemeinsam „Pufferspeicher 96“). Diese Pufferspeicher 96 werden zum Speichern der Flits 200, die die Nachricht bilden, in ihrer beabsichtigen Übertragungsreihenfolge verwendet.
  • Der horizontale Ring-Stopp 60 empfängt das Flit 200 vom horizontalen Ring 30 oder von der Austrittswarteschlange 52/54 des Agenten. Wenn das Flit in seiner Dimension geändert werden muss oder an einem beabsichtigten Zielort eingetroffen ist, wird das Flit 200 dann durch die Multiplexer 80 transferiert und entsprechend seinem Zielort gespeichert. Der Überschreitungspufferspeicher 66A speichert Flits, die sich in eine erste Richtung (z.B. gegen den Uhrzeigersinn) bewegen, oder für eine erste Art von Agenten (z.B. Cache-Agent) bestimmt sind. Der Überschreitungspufferspeicher 66B speichert Flits, die sich in eine zweite Richtung (z.B. im Uhrzeigersinn) bewegen oder für eine zweite Art von Agenten (z.B. Kern-Agent) bestimmt sind.
  • In jedem Fall transferiert der Überschreitungspufferspeicher 66 das Flit 200 zum vertikalen Ring-Stopp 70. Wenn ein Verhungern eines Agenten auf dem horizontalen Ring 30 eintritt (Situation A), wird das Schlitzreservierungsverfahren 100 ausgeführt. Wenn ein Verhungern eines Agenten auf dem vertikalen Ring 40 eintritt (Situation B), kann das Schlitzreservierungsverfahren 100 ebenso ausgeführt werden. Wenn schließlich ein Zurückprallen von Nachrichten (Flits) auf dem horizontalen Ring 30 eintritt, wird ebenso das Schlitzreservierungsverfahren 100 ausgeführt. In jedem dieser Umstände wird durch Reservierung eines Schlitzes auf dem geeigneten Ring der Durchsatz einer Nachrichtenverarbeitung in einigen Ausführungsformen verbessert.
  • Unter erneuter Bezugnahme auf 4 sind die Eintrittspfeile 32 und 34 so bezeichnet, da sie von Cache- bzw. Kern-Agenten 98 in den horizontalen Ring 30 „eintreten“. Ebenso „treten“ Austrittspfeile 42 und 44 vom vertikalen Ring 70 zu den Cache- bzw. Kern-Agenten 98 „aus“. Die Pfeile 32, 34, 42 und 44 von 4 sind auch in 5 angegeben. Im Gegensatz dazu werden die Kern-Box 52 und Cache-Box 54 als „Austritt“ bezeichnet, da Flits von den Kern- und Cache-Agenten 98 die Agenten verlassen und in den horizontalen Ring 30 eintreten.
  • In dem Interconnect 150 sind die Austrittsports 52, 54 der Agenten 98 mit dem horizontalen Ring-Stopp 60 verbunden, so dass Verkehr, der nur horizontal geleitet werden darf, durch den horizontalen Ring 30 in den Interconnect 150 eingespeist werden kann. Verkehr, der vertikal geleitet werden muss, wird durch den vertikalen Ring 40 in den Interconnect 150 eingespeist, nachdem er über den Überschreitungspufferspeicher 66 gelaufen ist, der sich am Ursprungsring-Stopp befindet. Verkehr, der horizontal geleitet werden muss, wird zuerst durch den horizontalen Ring 30 in den Interconnect 150 eingespeist und dann durch den Überschreitungspufferspeicher 66, der sich am Ring-Stopp 50 befindet, zum vertikalen Ring 40 transferiert.
  • Eingangsports 72, 74 der Agenten 98 sind mit dem vertikalen Ring 40 durch den vertikalen Ring-Stopp 70 verbunden, wodurch ein Verkehr, der vertikal geleitet wird, den Interconnect 150 durch den vertikalen Ring 40 verlassen kann. Jeder horizontale Ring-Stopp 60 ist auch mit den Eingangsports der Agenten 98 verbunden. Verkehr, der nicht über den vertikalen Ring 40 geleitet werden muss, verlässt den Interconnect 150 über diese Verbindung. In einigen Ausführungsformen wird Verkehr, der sich über den vertikalen Ring 40 bewegt, eine höhere Priorität verliehen, als Verkehr, der sich über den horizontalen Ring 30 bewegt.
  • Der horizontale Ring 30 und der vertikale Ring 40 sind eigentlich Halbringe, die sich von einem zweiseitig gerichteten Ring unterscheiden. Im Halbring wird in jeder Richtung ein einseitig gerichteter Ring verwendet, aber jeder Ring-Stopp 50 ist mit beiden Richtungen (links und rechts für den horizontalen Ring 30, aufwärts und abwärts für den vertikalen Ring 40) des Rings verbunden.
  • Ein Agent 98 wählt die Richtung des Rings, in die das Flit 200 einzuspeisen ist, aufgrund der kürzesten Bewegungsstrecke zum Zielagenten 98 auf dem Ring. Die Wrap-Around-Verbindungen auf dem Halbring verbinden die zwei einseitig gerichteten Halbringe (links/rechts und aufwärts/abwärts) zur Bildung eines zweiseitig gerichteten Rings. Die Wrap-Around-Verbindungen auf dem Halbring werden nur verwendet, wenn ein Zielagent (oder Ring-Stopp 50 im Falle eines horizontalen Rings) einen Flit 200 nicht annehmen kann, so dass das Flit schließlich auf dem Ring ein Zurückprallen erfährt. Für den Interconnect 150 ist die verwendete Leitungsstrategie zunächst horizontal, so dass das Flit 200 vom Ursprungsagenten 98 auf dem horizontalen Ring 30 zur Zielortspalte über den Ringschlitz geleitet wird. Dann wird das Flit 200 (bei Bedarf) auf den vertikalen Ring 40 geleitet und läuft dann weiter zum tatsächlichen Zielagenten 98.
  • Während die Darstellung des Interconnects 150 eine Symmetrie zwischen Kern- und Cache-Agenten nahelegen mag, kann in praktischen Situationen der Interconnect 150 mit viel mehr Kern-Agenten als Cache-Agenten bestückt sein. Dennoch soll das Design des Interconnects 150 eine Kommunikation zwischen beliebigen zwei verbundenen Agenten 98 erleichtern, egal, ob sie Kern-Agenten oder Cache-Agenten sind. Während der Interconnect 150 in dieser Zielsetzung erfolgreich ist, begünstigen einige Aspekte des Designs einige Agenten gegenüber anderen. Aus 2 ist bekannt, dass vier Eckkacheln 20, die jeweils zwei Agenten 90 darstellen, gefärbt sind. In der Verarbeitung von Nachrichten zwischen Agenten, sind die Agenten 98, die diese Grenzkacheln 20 einnehmen, gegenüber den anderen Agenten begünstigt, die sich in der Mitte des Interconnects 150 befinden.
  • Es sind zwei Agenten pro Kachel (Ring-Stopp) verbunden, jeder Agent hat zwei Ports (Warteschlangen), einer ist als Eintritt zum Empfangen von Flits von dem Interconnect 150 und der andere als Austritt zum Abgeben von Flits in den Interconnect bezeichnet. Der Einfachheit wegen nennen wir einen der Agenten Cache (mit zugehöriger Cache-Austrittswarteschlange 54 und zugehöriger Cache-Eintrittswarteschlange 74) und den anderen Agenten Kern (mit zugehöriger Kern-Austrittswarteschlange 52 und zugehöriger Kern Eintrittswarteschlange 72).
  • 6A - 6C zeigen jeweils einen einzelnen horizontalen Ring 30, gemeinsam mit zwölf Agenten 98 gemäß einigen Ausführungsformen. Die hierin in Bezug auf den horizontalen Ring 30 beschriebenen Prinzipien gelten ebenso für den vertikalen Ring 40. Der horizontale Ring 30 enthält zwölf Ringschlitze 90, einen für jeden Agenten 98. Die Ringschlitze 90 sind die Mittel, durch die jeder Agent 98 Nachrichten zum anderen Agenten in dem Interconnect sendet. Wenn daher auf Nachrichten Bezug genommen wird, die zwischen Agenten 98 auf dem Interconnect 150 gesendet werden, sollte klar sein, dass die Nachrichten in der Praxis in der Form von Flits 200 gesendet werden. In 6A - 6C, sind verschiedene Flits dargestellt, 200A, 200B, und 200C (gemeinsam „Flits 200“).
  • Nehmen wir an, dass der erste Agent, Agent 1, ein Flit 200 in seinen jeweiligen Ringschlitz 90 einsetzt, wie in 6A dargestellt. In der nächsten Zeitperiode (6B) hat sich das Flit 200A eine Position weiter in den Ringschlitz 90 bewegt, der zum Agenten 2 gehört. Dies verhindert, dass der Agent 2 ein Flit 200 in den Ring 30 einsetzt. Dennoch ist Agent 1 imstande, ein zweites Flit 200B in den Ring 30 einzusetzen. In der nächsten Zeitperiode (6C) hat sich das Flit 200A wieder bewegt, dieses Mal in den Ringschlitz 90, der zum Agenten 3 gehört. Das Flit 200B hat sich auch in den Ringschlitz 90 bewegt, der zum Agenten 2 gehört. Sowohl Agent 2 wie auch Agent 3 sind zu diesem Zeitpunkt für ein Einsetzen von Flits 200 blockiert. In der Zwischenzeit ist Agent 1 imstande, ein drittes Flit 200C in den Ring 30 einzusetzen.
  • 6A - 6C zeigen, wie sich Flits 200 um den horizontalen Ring 30 bewegen und an jeder Agentenposition (Ring-Stopp 90) in jeder Zeitperiode stoppen. Der horizontale Ring 30 bewegt sich in eine einzige Richtung, in diesem Fall im Uhrzeigersinn. Die Figuren zeigen, warum der erste (periphere) Agent gegenüber folgenden (mittleren) Agenten begünstigt ist, die mit dem Ring 30 verbunden sind. Wenn der erste Agent 98, Agent 1, das Flit 200 in seinen jeweiligen Ringschlitz 90 einsetzt, wird in der nächsten Zeitperiode der zweite Agent, Agent 2, daran gehindert, sein eigenes Flit 200 dem Ring 30 zu unterbreiten. Da sich Agent 1 an der Peripherie des Interconnects 150 oder am „Kopf der Linie“ befindet, wird Agent 1 gegenüber anderen Agenten auf dem horizontalen Ring 30 begünstigt und ist daher imstande, mehr Nachrichten zeitgerecht zum Interconnect 150 zu liefern.
  • Da der horizontale Ring 30 eigentlich aus zwei Halbringen besteht, bewegen sich die Flits 200 nicht über den Ringschlitz 90 des Agenten 6 hinaus, sondern bewegen sich über den passenden Ring-Stopp 50 zum vertikalen Ring 40. Die in 6A - 6C für Agent 1 dargestellten Prinzipien können ebenso für den Agenten 7 gelten, da Agent 7 der periphere Agent seines entsprechenden Halbrings ist. Agent 7 sendet in einer ersten Zeitperiode das Flit 200 in eine Richtung im Uhrzeigersinn, das in seinem Ringschlitz 90 empfangen wird. In einer zweiten Zeitperiode bewegt sich das Flit 200 zum Ringschlitz 90 für Agenten 8, wodurch der Agent 8 am Einsetzen seines eigenen Flits gehindert wird. Wie beim Agenten 1 wird daher, aufgrund der Konfiguration des Interconnects 150, der Agent 7 gegenüber Agenten 8, 9 begünstigt, und so weiter.
  • Unter erneuter Bezugnahme auf 2 gibt es drei Schritte, damit ein Flit 200 vom beabsichtigten Agenten 98 empfangen wird. In einigen Ausführungsformen tritt das Flit 200 zuerst in den Interconnect 150 auf dem horizontalen Ring 30, die sich auf derselben Reihe wie der sendende Agent 98 befindet. Das Flit 200 bewegt sich Ring-Stopp 50 für Ring-Stopp über den Ring, bis es die Spalte erreicht, wo sich der empfangende Agent 98 befindet. Anschließend tritt das Flit 200 in einen Ring-Stopp 50 ein, der zwischen dem horizontalen Ring 30 und einem vertikalen Ring 40 angeordnet ist, wo der Ring-Stopp dieselbe Spalte wie der empfangende Agent 98 besetzt. An diesem Punkt verlässt das Flit 200 den horizontalen Ring 30 und tritt in den vertikalen Ring 40 ein. Auch hier bewegt sich das Flit 200 Ring-Stopp 50 für Ring-Stopp entlang des vertikalen Rings 40, bis es die Stelle des empfangenden Agenten 98 erreicht. An diesem Punkt wird das Flit 200 vom empfangenden Agenten 98 empfangen.
  • Wenn sich daher zum Beispiel der sendende Agent 98 in der ersten Reihe, ersten Spalte befindet, und der empfangende Agent in der dritten Reihe, dritten Spalte ist, tritt das Flit 200 an des Interconnects 150 in einen Ringschlitz 90 am ersten Ring-Stopp 50 des horizontalen Ring 30, stoppt am zweiten Ring-Stopp (zweiten Agenten), und stoppt am dritten Ring-Stopp (dritten Agenten), bevor es in den Ring-Stopp 50 eintritt, um zum vertikalen Ring 40 transferiert zu werden. Auf dem vertikalen Ring stoppt das Flit 200, beginnend am Ring-Stopp in der ersten Reihe, am Ring-Stopp in der zweiten Reihe und stoppt am Ring-Stopp in der dritten Reihe, wo sich der empfangende Agent befindet. Die Anzahl von Stopps in der vertikalen Richtung hängt vom Ermitteln des kürzesten Weges zum beabsichtigten Zielort ab.
  • 7 zeigt ein anderes Phänomen bei des Interconnects 150 gemäß einigen Ausführungsformen, bekannt als Blockierung des Linienkopfs. Es sei daran erinnert, dass jeder Agent 98 in dem Interconnect 150 einen Pufferspeicher oder eine Warteschlange 96 (wie eine Kern-Box 52 oder Cache-Box 54) zum Speichern der Flits 200 hat (5). Da die zu sendende Nachricht aus mehreren Flits 200 besteht, sind die Flits in einer vorgegebenen Reihenfolge zu senden. Wenn das erste Flit 200 im Pufferspeicher 96 blockiert wird, so dass es nicht in die Ringschlitze 90 des horizontalen Rings 30 eintreten kann, wird der Austrittspufferspeicher 96, der blockiert ist, voll, so dass keine neuen Nachrichten in den Ring eintreten können.
  • In 7 sei angenommen, dass Agent 1 eine Nachricht zu Agent 7 sendet. Agent 1 hat einen Pufferspeicher 96 voll mit Flits 200A - 200G, die gemeinsam die Nachricht bilden. Agent 1 kann ein Flit 200 in jeder Zeitperiode einspeisen, wobei sechs Flits 200 in 7 dargestellt sind. (Innerhalb des Ring-Stopps 50 für Agent 6 werden die Flits 200 direkt zum Agenten 7 transferiert.) Da sich die Flits bereits in ihren jeweiligen Ringschlitzen 90 befinden, können Agenten 2 - 6 keinen leeren Schlitz 90 finden, in den Flits in der horizontalen Richtung abgegeben werden. Somit leiden die Agenten 2 - 6 an einer Blockierung des Linienkopfs.
  • Wie in 5 dargestellt, hat der Überschreitungspufferspeicher 66 auch einen Pufferspeicher oder Warteschlangen 96. Das Phänomen einer Blockierung des Linienkopfs kann sich auch bei der Warteschlange des Überschreitungspufferspeichers 66 zeigen, der Pakete in den vertikalen Ring 40 einspeist. Die Konkurrenzsituation, die durch die Blockierung des Linienkopfs erzeugt wird, breitet den Stau am horizontalen Ring 30 aus, da der Ring nicht imstande ist, Pakete abzuleiten, die für den vertikalen Ring bestimmt sind. Dies führt wiederum zu einer Zunahme eines Nachrichten-Zurückprallen am horizontalen Ring.
  • In einigen Ausführungsformen vermeidet das Schlitzreservierungsverfahren 100 die Blockierung des Linienkopfs beim Einspeisen in Warteschlangen oder Pufferspeicher 96, die sich in der Kern-Box 52, der Cache-Box 54 und dem Überschreitungspufferspeicher 66 befinden, die durch die Nichtverfügbarkeit von leeren Schlitzen am Zielortring verursacht wird. Ein weiteres Phänomen, das eine effiziente Verarbeitung von Nachrichten in dem Interconnect 150 verringert, ist als Zurückprallen bekannt. Ein Zurückprallen kann unter verschiedenen Umständen auftreten.
  • Zum Beispiel tritt ein Zurückprallen ein, wenn das Flit 200 den horizontalen Ring 30 aufgrund der Nichtverfügbarkeit des Überschreitungspufferspeichers 66 nicht verlassen kann. Ein Zurückprallen kann auch eintreten, wenn das Flit 200 den vertikalen Ring 40 aufgrund der Nichtverfügbarkeit des Agenten 98, um das Flit zu empfangen, nicht verlassen kann. In diesen Fällen bewegt sich das Flit 200 weiter entlang der Ringschlitze 90, was den Durchsatz andere Benachrichtigungsoperationen senken kann. Eine Vermeidung sowohl einer Blockierung des Linienkopfs wie auch ein Zurückprallen sind somit zur Verbesserung des Durchsatzes des Interconnects 150 wünschenswert. Wie hierin verwendet, bezieht sich ein Zurückprallen auf ein Flit, das auf einem Ring des Interconnects 150 bleibt, da das Flit den Ring nicht verlassen kann. Obwohl ein Zurückprallen auf dem vertikalen Ring 40 eintreten kann, wird ein Zurückprallen auf dem horizontalen Ring 30 durch das Schlitzreservierungsverfahren 100 in einigen Ausführungsformen behandelt. Die hierin in Bezug auf den horizontalen Ring 30 beschriebenen Prinzipien können in anderen Ausführungsformen beim vertikalen Ring 40 angewendet werden.
  • Die Blockierung des Linienkopfs und die Auswirkung eines Nachrichten-Zurückprallens machen es beide schwer, neue Nachrichten in ihren beabsichtigten Zielort abzuleiten, was wiederum eine Konkurrenzsituation von Paketen erzeugt, die sich entlang verschiedener Pufferspeicher oder Warteschlangen 96 innerhalb des Interconnects 150 bewegen. Wenn zum Beispiel der Agent 98 nicht imstande ist, Flits 200 zu verarbeiten, kann die Eintrittswarteschlange oder der Eintrittspufferspeicher 96 zum Agenten 72 oder 74 voll werden. Eine solche Konkurrenzsituation verursacht ein Verhungern gewisser Agenten, welchen die Möglichkeit verwehrt wird, neue Nachrichten in den Interconnect 150 einzuspeisen (oder neue Nachrichten aus diesen auszustoßen). Wenn der Agent keine Kapazität hat, Nachrichten in den Interconnect 150 für mehr als eine vorbestimmte Anzahl von Zyklen einzuspeisen, gesperrt ist, bis seine Warteschlange 96 voll ist oder bis die Warteschlange eine Schwellenkapazität erreicht, ist das Ergebnis in einigen Ausführungsformen eine massive Leistungsverringerung und eine Unvorhersagbarkeit des Interconnectlatenz. Wie hier verwendet, ist Verhungern ein Zustand, in dem ein oder mehrere Agent(en), die auf einem Ring des Interconnects 150 angeordnet sind, nicht imstande sind, einen Flit auf dem Ring einzuspeisen. Ein Verhungern kann entweder im horizontalen Ring 30 oder im vertikalen Ring 40 eintreten.
  • Ein anderer Aspekt des Interconnects 150 ist, dass die Ringschlitze 90 der vertikalen Ringe in zwei Polaritäten unterteilt sind, wobei die Kern-Agenten eine Polarität verwenden und die Cache-Agenten die andere verwenden. Unter erneuter Bezugnahme auf 5 sind die Kern-Box 52 und die Cache-Box 54 mit beiden Teilen (Oberseite und Unterseite) des horizontalen Rings 30 durch die Multiplexer 56 verbunden. Aufgrund dieser Konfiguration können Agenten 98 Flits 200 in eine von zwei Richtungen auf dem horizontalen Ring 30 senden, wodurch die Flits zu ihrem beabsichtigten Agenten in der effizienteren Richtung gesendet werden können.
  • Für die Kern-Box 72 und die Cache-Box 74 unterscheiden sich die Verbindungen geringfügig. Die Multiplexer 86 verbinden die Kern-Box 72 und die Cache-Box 74 selektiv entweder mit der linken Seite oder der rechten Seite des vertikalen Rings 30. Aufgrund dieser Konfiguration werden aufeinanderfolgende Flits 200, die eine einzelne Nachricht bilden, von der Kern-Box 72 (oder Cache-Box 74) in jeder zweiten Zeitperiode empfangen.
  • In einigen Ausführungsformen beruht das Schlitzreservierungsverfahren 100 auf einem Schlitzreservierungsmechanismus zur Reservierung eines Ringschlitzes 90 in der Richtung, in die er verlangt wurde. In einigen Ausführungsformen ist die Optimierung möglich, da der reservierte Schlitz zum Transportieren von Flits 200 in eine Richtung verwendet wird, die der ursprünglichen Transportrichtung entgegengesetzt ist. Die Ringschlitzreservierungsstrategie ist auf eine Minimierung leerer reservierter Schlitze auf dem Interconnect 150 zurechtgeschnitten.
  • In einigen Ausführungsformen verwendet jeder Ringschlitz 90 ein Register zum Platzieren einer Reservierung, der Richtung, die von der Reservierung verlangt wird und des Ring-Stopps 50, der den Ringschlitz verlangt. 8 ist ein vereinfachtes Blockdiagramm eines Acht-Feld-Registers 160, das vom Ringschlitz 50 zur Platzierung einer Schlitzreservierung gemäß einigen Ausführungsformen verwendet wird. Ein Feld wird zur Platzierung der Reservierung verwendet, ein zweites Feld wird zur Definition der Polarität der Reservierung verwendet, ein drittes Feld wird zur Definition der Richtung der Reservierung verwendet und drei Felder ermöglichen eine Bezeichnung des Ring-Stopps 50, der die Reservierung verlangt. In einigen Ausführungsformen ist jedes Feld durch ein einzelnes Bit dargestellt. Für einen horizontalen Ring 30 (oder vertikalen Ring 40) mit sechs Ring-Stopps 50 sind drei Bits ausreichend, um den besonderen Ring-Stopp zu identifizieren, der die Reservierung vornimmt. Für größere Interconnects könnte das Register 160 jedoch mehr Bits zur Bezeichnung des Ring-Stopps 50 benötigen.
  • In einigen Ausführungsformen hat jeder Ring-Stopp 50 zur Aufgabe, Schlitzreservierungen zu löschen und auszugeben, Während der Bewegung über den Interconnect 150 beschränkt der reservierte Schlitz andere Ring-Stopps 90 und hindert sie, Flits 200 in der Richtung einzuspeisen, die durch das Register 160 spezifiziert ist. Die Schlitzreservierung verhindert jedoch nicht, dass andere Ring-Stopps 50 Flits 200 in die entgegengesetzte Richtung einspeisen. Wenn der reservierte Ringschlitz 90 beim Ring-Stopp 50 eintrifft, der die Schlitzreservierung platziert hat, stellt der Ring-Stopp zuerst sicher, dass die Reservierung gelöscht ist und verwendet anschließend den Ringschlitz 90, in dem die Reservierung vorliegt.
  • 9 ist ein vereinfachtes Diagramm, das zur Veranschaulichung verwendet wird, wie der Schlitzreservierungsmechanismus in einigen Ausführungsformen arbeitet. Der Ring in 9 ist ein vertikaler Ring 40. Es sei angenommen, dass der vierte Agent 98, bezeichnet als „anfragender Agent 4“, entscheidet, einen Schlitz zu reservieren. Es wird daran erinnert, dass ein Ring-Stopp 50 für jeden Agenten bestimmt und zwischen dem horizontalen 30 und vertikalen 40 Ring des Interconnects 150 angeordnet ist. Wenn eine Reservierung bei einem der Ringe platziert werden soll, benachrichtigt der anfragende Agent 98 seinen horizontalen Ring-Stopp 60 oder vertikalen Ring-Stopp 70 und fordert eine Schlitzreservierung 180 an. Die Schlitzreservierung 180 wird ausgegeben, aber der anfragende Agent 98 muss warten, bis der Ringschlitz 90, der die Schlitzreservierung 180 trägt, den anfragenden Agenten erreicht.
  • Bis der Ringschlitz 90, der die Schlitzreservierung hält, zum anfragenden Agenten zurückkehrt, werden andere gleiche Agenten gehindert, den Ringschlitz zu verwenden. Wie hier verwendet, ist ein „gleicher Agent“ als ein Agent mit derselben Polarität wie der anfragende Agent definiert. Somit sind „gleiche Agenten“ für den anfragenden Agenten 4 Agenten 6, 8, 10, 12 und 2. Während diese gleichen Agenten in einigen Ausführungsformen daran gehindert werden könnten, den Ringschlitz 90 zu verwenden, der die Schlitzreservierung 180 hält, sind die übrigen Agenten (Agenten 5, 7, 9, 11, 1 und 3) mit ihren entsprechenden, in rosa dargestellten Ringschlitzen noch imstande, den Ringschlitz 90 zu verwenden. Während somit Agenten 6, 8, 10, 12 und 2 den reservierten Schlitz 180 sehen, bevor der reservierte Schlitz zum anfragenden Agenten 4 zurückkehrt, kann nur Agent 6 nicht auf den Schlitz zugreifen, da er dieselbe Richtung wie der anfragende Agent (im Uhrzeigersinn) hat. Agenten 8, 10 und 12 sehen jedoch den reservierten Schlitz auch vor dem anfragenden Agenten 4 und können den Ringschlitz 90 verwenden. Die Agenten 8, 10 und 12 können den Schlitz 90 mit der Schlitzreservierung 180 noch verwenden, um Flits 200 in die Richtung gegen den Uhrzeigersinn abzugeben, aber Agent 2 kann den Schlitz nicht zur Abgabe eines Flits 200 in die Richtung im Uhrzeigersinn verwenden.
  • In einigen Ausführungsformen ist das Schlitzreservierungsverfahren 100 in Software implementiert. In anderen Ausführungsformen ist das Verfahren 100 in Hardware implementiert. In weiteren Ausführungsformen ist das Verfahren 100 unter Verwendung einer Kombination aus Hardware- und Software-Elementen implementiert.
  • In einigen Ausführungsformen gibt das Schlitzreservierungsverfahren 100 eine Schlitzreservierung aus, wenn bei einer bestimmten Warteschlange oder einem bestimmten Pufferspeicher 96 ein Verhungern festgestellt wird. Es sei daran erinnert, dass jeder Agent oder Überschreitungspufferspeicher Flits in einer Warteschlange oder einem Pufferspeicher 96 speichert, so dass die Flits in den Interconnect 150 in einer vorbestimmten Reihenfolge eintreten. In einigen Ausführungsformen hat jede Warteschlange 96 (ob in der Kern-Box 52, der Cache-Box 54, dem Überschreitungspufferspeicher 66A oder dem Überschreitungspufferspeicher 66B), die Flits in den Interconnect 150 einspeist, einen zugehörigen Zähler. Der Zähler wird jedes Mal erhöht, wenn das Flit an der Spitze der Warteschlange 96 keinen Ringschlitz 90 auf dem horizontalen Ring 30 oder dem vertikalen Ring 40 erhält (im letztgenannten Fall bei der korrekten Polarität). Wenn der Zähler einen konfigurierbaren Schwellenwert erreicht, wird ein Verhungern der Warteschlange 96 festgestellt. Daher gibt der zugehörige Ring-Stopp 50 eine Schlitzreservierungsanfrage aus. Sobald der Schlitz reserviert ist, wird der Zähler zurückgestellt und beginnt wieder mit der Zählung.
  • In einigen Ausführungsformen, wenn ein Flit 200, der sich über den horizontalen 30 (oder vertikalen 40) Ring bewegt, am Zielort nicht verbraucht werden kann, läuft das Flit über den Ring („Zurückprallen“). Ein Zurückprallen wird aus zwei Hauptgründen erzeugt. Erstens tritt ein Zurückprallen ein, wenn zwei Flits 200, die sich auf dem horizontalen Ring aus verschiedenen Richtungen bewegen, bei demselben Ring-Stopp 50 eintreffen. Wenn beide Flits 200 für dieselbe Warteschlange (z.B. 96C) des Überschreitungspufferspeichers 66 (d.h., 66A) bestimmt sind, kann der Ring-Stopp 50 einen Flit 200 annehmen, aber den anderen Flit zurückweisen, mit dem Ergebnis, dass das zweite Flit weiterhin durch den horizontalen Ring 30 läuft. Zweitens tritt ein Zurückprallen ein, wenn die Zielortwarteschlange 96C oder 96B des Überschreitungspufferspeichers 66A oder 66B voll ist, wodurch ein Speichern des Flits 200 im Überschreitungspufferspeicher 66 verhindert wird. Die erste Situation tritt unwahrscheinlich am vertikalen Ring ein und kann bis zu einem gewissen Punkt toleriert werden, aber die zweite kann eine Kettenreaktion auslösen, die eine ziemliche Bandbreite des Rings 30 verbrauchen kann, wenn sie nicht zeitgerecht gesteuert wird.
  • In 5 ist das Schlitzreservierungsverfahren 100 sowohl im horizontalen Ring-Stopp 60 wie auch im vertikalen Ring-Stopp 70 angeordnet. In einigen Ausführungsformen wird das Schlitzreservierungsverfahren 100 im horizontalen Ring-Stopp 60 zum Behandeln ein Verhungern im horizontalen Ring 30 (A) ausgeführt, während das Verfahren im vertikalen Ring-Stopp 70 zum Behandeln ein Verhungern im vertikalen Ring 40 (B) und ein Zurückprallen im horizontalen Ring 30 (C) ausgeführt wird.
  • 10 - 12 sind Flussdiagramme, die zeigen, wie das Schlitzreservierungsverfahren 100 unter drei Bedingungen, A, B bzw. C gemäß einigen Ausführungsformen arbeitet. Die erste Bedingung (A) wird durch Überwachen des Pufferspeichers 96A (96B) in Kern- und Cache-Boxen 52, 54 behandelt, während die zweite Bedingung (B) und dritte Bedingung (C) durch Überwachen des Pufferspeichers 96C (96D) im Überschreitungspufferspeicher 66 behandelt werden.
  • Das Schlitzreservierungsverfahren 100 behandelt Bedingungen A und B gleich, wobei die Pufferspeichereinspeisung in die jeweiligen Ringe überwacht wird. Ein Zähler verfolgt, wann immer ein Flit 200 einen Ringschlitz 90 nicht erreichen kann, egal, ob er in den horizontalen Ring 30 (A) oder den vertikalen Ring 40 (B) eintritt. Sobald der Zähler einen Schwellenwert (Zeitschwellenwert) erreicht, wird ein Schlitz im horizontalen Ring 30 (Bedingung A) und im vertikalen Ring 40 (Bedingung B) reserviert. Für Bedingung C werden Belegung oder Vollsein des Überschreitungspufferspeichers 96C (96D) überwacht. Sobald der Pufferspeicher über einen gewünschten Schwellenwert hinaus (Belegungsschwellenwert) voll wird, wird das Schlitzreservierungsverfahren 100 aufgerufen, das veranlasst, dass ein Schlitz im vertikalen Ring reserviert wird.
  • 10 behandelt in einigen Ausführungsformen Bedingung A, die Möglichkeit, dass ein Verhungern auf dem horizontalen Ring 30 eintritt. Zuerst, wenn ein neuer Flit 200 am Kopf des Pufferspeichers 96A (96B) für die Kern-Box 52 (Cache-Box 54) (Block 102), gefunden wird, wird ein Zähler erneut gestartet (Block 104). Der Zähler soll bei jeder Zeitperiode erhöht werden, in der das Flit 200 nicht auf den horizontalen Ring 30 gelangen und einen Ringschlitz 90 (Block 106) belegen kann. Der Zähler hilft somit in der Bestimmung, ob das Flit 200 in den horizontalen Ring 30 innerhalb einer angemessenen Zeitperiode eingetreten ist (wie durch den Zeitschwellenwert spezifiziert).
  • Sobald der Zähler jedoch den Zeitschwellenwert erreicht (Block 108), wird ein Schlitz im horizontalen Ring 30 reserviert (Block 112). Aus 8 ist bekannt, dass in einigen Ausführungsformen das Register 160 verwendet werden kann, um die Schlitzreservierung zu erhalten, wobei drei Bits anzeigen, welcher Ring-Stopp 50 von der Reservierung verlangt wird. Es wird eine Richtungsangabe gemacht, die das passende Richtungs-Bit setzt, das entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn sein kann. In diesem Fall ist keine Polaritätsangabe erforderlich, da die Schlitzreservierung im horizontalen Ring 30 erfolgt.
  • Wenn stattdessen der Zähler den Zeitschwellenwert nicht erreicht hat (die „Nein“-Zacke von Block 108), prüft das Schlitzreservierungsverfahren 100, ob ein neues Flit am Kopf des Pufferspeichers 96A (96B) vorhanden ist (Block 110). Falls nicht, wird der Zähler erhöht (Block 106) und die Schwellenwertabfrage erneut durchgeführt (Block 108). Andernfalls wird der Zähler auf null zurückgestellt (Block 104) und das Verfahren wird wieder gestartet, wenn ein neues Flit 200 im Pufferspeicher 96A (96B) empfangen wird.
  • 11 behandelt Bedingung B in einigen Ausführungsformen, die Möglichkeit, dass ein Verhungern auf dem vertikalen Ring 40 auftritt. Dieses Mal werden die Überschreitungspufferspeicher 96C (96D) überwacht. Wenn ein neues Flit 200 am Kopf des Pufferspeichers 96C (96D) gefunden wird (Block 122), wird ein Zähler neu gestartet (Block 124). Der Zähler ist bei jeder Zeitperiode zu erhöhen, in der das Flit 200 nicht imstande ist, auf den vertikalen Ring 40 zu gelangen und einen Ringschlitz 90 zu belegen (Block 126). Der Zähler hilft somit bei der Bestimmung, ob das Flit 200 in den vertikalen Ring 40 innerhalb einer angemessenen Zeitperiode eingetreten ist (wie durch den Zeitschwellenwert spezifiziert).
  • Sobald der Zähler den Zeitschwellenwert jedoch erreicht (Block 128), wird ein Schlitz im vertikalen Ring 40 reserviert (Block 132). Auch hier kann das Register 160 verwendet werden, um die Schlitzreservierung zu erreichen, wobei drei Bits anzeigen, welcher Ring-Stopp 50 die Reservierung verlangt hat, und ein Bit die Richtung der Reservierung anzeigt. Da der vertikale Ring 40 eine Polarität enthält, ist auch die Polaritätsangabe im Register 160 vorgesehen, wenn die Schlitzreservierung vorgenommen wird.
  • Wenn stattdessen der Zähler den Zeitschwellenwert nicht erreicht hat (die „Nein“-Zacke von Block 128), prüft das Schlitzreservierungsverfahren 100, ob ein neues Flit am Kopf des Pufferspeichers 96C (96D) vorhanden ist (Block 130). Falls nicht, wird der Zähler erhöht (Block 126) und die Schwellenwertabfrage erneut durchgeführt (Block 128). Andernfalls wird der Zähler auf null zurückgesetzt (Block 124) und das Verfahren erneut gestartet, wenn ein neues Flit 200 im Pufferspeicher 96C (96D) empfangen wird.
  • 12 behandelt Bedingung C in einigen Ausführungsformen, die Möglichkeit eines Zurückprallens auf dem horizontalen Ring 30. Auch hier wird der Überschreitungspufferspeicher 96C (96D) überwacht. Dieses Mal überwacht das Schlitzreservierungsverfahren 100 jedoch, wie voll der Pufferspeicher ist, und nicht, wie effizient das Flit an der Spitze des Pufferspeichers verarbeitet wird.
  • Sobald der Überschreitungspufferspeicher 96C (96D) voll wird, werden Flits 200 auf dem horizontalen Ring 30 daran gehindert, den horizontalen Ring zu verlassen und haben somit keine Wahl, außer um den Ring zu laufen, wodurch der Durchsatz der Nachrichtenverarbeitung verringert wird. Somit prüft das Schlitzreservierungsverfahren 100 kontinuierlich, um festzustellen, ob der Überschreitungspufferspeicher 96C (96D) einen vorgegebenen Schwellenwert (Belegungsschwellenwert) übersteigt (Block 142). Falls ja, wird die Schlitzreservierung im vertikalen Ring 40 platziert, wobei das Register 160 den Ring-Stopp, die Polarität und die Richtung anzeigt (Block 144). Sobald die Reservierung platziert ist, wartet das Schlitzreservierungsverfahren 100 eine konfigurierbare Anzahl von Zyklen, bevor es mit der Operation fortfährt (Block 146). In einigen Ausführungsformen wird gewartet, um ein Überfluten des vertikalen Rings mit Reservierungen zu vermeiden, wenn der Überschreitungspufferspeicher konstant über dem Belegungsschwellenwert ist.
  • Das Schlitzreservierungsverfahren 100 beruht auf einem konfigurierbaren Schwellenwert, der eine hohe Belegung der Warteschlangen des Überschreitungspufferspeichers wie auch der Austrittswarteschlange von Agenten erfasst, und antwortet durch Auslösen einer Schlitzreservierung (bei der passenden Polarität) auf dem Zielortring.
  • In einigen Ausführungsformen steuert der Anti-Verhungern-Mechanismus des Schlitzreservierungsverfahrens 100 die maximale Interconnectlatenz und mildert die Unfairness, die durch innewohnende Einspeisungsprioritäten und das natürliche Verhalten des Rings 30 (40) produziert wird.
  • In einigen Ausführungsformen garantiert der Zurückprallen-Verringerungsmechanismus des Schlitzreservierungsverfahrens 100 eine Steuerung der maximalen Interconnectlatenz, während er für eine faire Bandbreitennutzung der vertikalen Ressourcen sorgt, indem er sicherstellt, dass untergeordnete Warteschlangen des Rings 30 (40) effizient geleert werden, wenn sie drohen, voll zu werden. Es können andere Strategien implementiert werden, um Bandbreitengarantien zum Zwecke einer Dienstqualität bereitzustellen. Der Schlitzreservierungsmechanismus des Schlitzreservierungsverfahrens 100 ist auf eine Minimierung reservierter Schlitze durch Platzierungsreservierungen nur in die Richtung, in der eine Anfrage erfolgte, zurechtgeschnitten.
  • Die Quadrate in 5, die das Schlitzreservierungsverfahren 100 bezeichnen, verwenden ein Anti-Verhungern-Maßnahme und ein Zurückprallen-Verringerungsmaßnahme im vertikalen Ring 40, aber nur eine Anti-Verhungern-Maßnahme im horizontalen Ring 30. Ein Zurückprallen wird vorwiegend in einigen Ausführungsformen im horizontalen Ring 30 erwartet.
  • 13 ist ein Flussdiagramm, das eine Prozedur 160 zeigt, auf die das Schlitzreservierungsverfahren 100 beim Eintreffen des Ringschlitzes 90 am Ring-Stopp 50 gemäß einigen Ausführungsformen folgt. Diese Prozedur 160 wird zur Platzierung der Reservierung und zum Bestimmen verwendet, ob es sicher ist, den aktuellen Schlitz zu verwenden, wenn dort eine Reservierung vorhanden ist.
  • Als Teil des Schlitzreservierungsverfahrens 100 überprüft der Ring-Stopp 50 die Informationen des Reservierungsregisters 160 wie auch die Belegung des Ringschlitzes 90. Wenn ein Reservierungsfeld eingerichtet ist (Block 162) und eine Reservierung zuvor vom aktuellen Ring-Stopp 50 vorgenommen wurde (Block 164), setzt der Ring-Stopp das Reservierungsfeld 160 am Ringschlitz 90 zurück und der Ringschlitz ist für eine Verwendung zur Abgabe, falls leer, sicher (Block 172). Wenn das Reservierungsfeld nicht eingerichtet ist (die „Nein-“ Zacke von Block 162), steht der Ringschlitz für eine Abgabe eines Flits durch den Ring-Stopp 50 zur Verfügung, wenn der Ringschlitz 90 keinen Flit 200 transportiert (Block 168), so dass der Ring-Stopp 50 keine Reservierung platzieren muss (Block 178). Wenn der Ringschlitz 90 jedoch aktuell einen Flit 200 transportiert (die „Ja-“ Zacke von Block 168), kann der Ring-Stopp 50 eine Reservierung platzieren (Block 170).
  • Wenn das Reservierungsfeld eingerichtet ist (die „Ja-“ Zacke von Block 162), prüft der Ring-Stopp 50, ob er die Reservierung „besitzt“, das heißt, ob die Reservierung vom aktuellen Ring-Stopp platziert wurde (Block 164). Falls dies zutrifft, setzt der Ring-Stopp 50 das Reservierungsregister am Ringschlitz 90 zurück, wodurch es für den Ring-Stopp sicher wird, den Schlitz zur Abgabe eines Flits 200 zu verwenden, falls er leer ist (Block 172). Wenn der Ring-Stopp 50 die Reservierung nicht „besitzt“ (die „Nein-"Zacke von Block 164), bestimmt der Ring-Stopp, ob die aktuelle Reservierung in derselben Richtung/Polarität wie gewünscht vorliegt (Block 166). Mit anderen Worten, möchte der aktuelle Ring-Stopp 50 ein Flit 200 in dieselbe Richtung/derselben Polarität senden, in der sich die Schlitzreservierung bewegt? Falls dies zutrifft (die „Ja-"Zacke von Block 166), ist der Ringschlitz 50 nicht imstande, eine Reservierung zu platzieren und verwendet den Schlitz 90 nicht zur Abgabe eines Flits 200 (Block 174). Anderenfalls bewegt sich die aktuelle Reservierung in eine andere Richtung/Polarität als der Ring-Stopp ein Flit 200 senden möchte. Während der Ring-Stopp 50 also nicht imstande ist, eine Reservierung zu platzieren, kann der Ring-Stopp imstande sein, den Ringschlitz 90 zur Abgabe eines Flits 200 zu verwenden (Block 176). Für den aktuellen Ring-Stopp 90 ist die Analyse beendet und wird im nächstfolgenden Ringschlitz 50 beim nächsten Verarbeitungszyklus wiederholt.
  • Basierend auf dem Trend der Technologieentwicklung werden Prozessoren mit mehreren zehn bis hunderten Kernen und anderen IP-Blöcken, die auf einem einzelnen Chip integriert sind, allgemein für den Cloud-Computing-Markt zur Verfügung stehen. Das Schlitzreservierungsverfahren 100 ist in einigen Ausführungsformen erwartungsgemäß ein starker Kandidat als skalierbare Lösung für eine On-Chip-Kommunikation.
  • Das Schlitzreservierungsverfahren 100 kann eine Fairness und Latenzvorhersagbarkeit für Nachrichten garantieren, wodurch es Designern möglich ist, eine faire Menge an Ressourcen für jeden Agenten innerhalb des Interconnects 150 zu garantieren und eine Dienstqualität auf der Basis einer Bereitstellung der maximalen Leistung mit Latenzvorhersagbarkeit bereitzustellen.
  • Der Interconnect 150 in 2 ist zuerst zum Einspeisen von Flits 200 in der horizontalen Dimension bestimmt und, falls erforderlich, um diese in die vertikale Dimension mit Hilfe des Überschreitungspufferspeichers 66 zu bewegen. In einer anderen möglichen Implementierung könnten die Flits 200 zuerst durch die vertikale Dimension eingespeist werden und, falls erforderlich, unter Verwendung des Überschreitungspufferspeichers in die horizontale Dimension bewegt werden.

Claims (17)

  1. Reservierungsverfahren, aufweisend: Überwachen eines Pufferspeichers (96A-D), wobei Nachrichten in Form von einem oder mehreren Flits (200, 200A-G) zwischen einem ersten Agenten (98) und einem anderen zweiten Agenten (98) einer Vielzahl von Agenten (98) entlang eines ersten Rings (30,40) eines Interconnects (150) übertragen werden, wobei jedes Flit (200, 200A-G) in einem von mehreren Ringschlitzen (90) ausgehend vom ersten Agenten (98) von Agent (98) zu Agent (98) entlang des ersten Rings (30,40) bis zum zweiten Agenten (98) weitergeleitet wird; gekennzeichnet durch Platzierung einer Schlitzreservierung (160) in einem der mehreren Ringschlitze (90) des Rings (30,40) seitens des Agenten (98) anhand einer Eigenschaft des Pufferspeichers (96A-D); wobei sich die Schlitzreservierung (160) über den Ring (30, 40) in eine erste Richtung bewegt, wobei andere Agenten (98) der mehreren Agenten (98) daran gehindert werden, Flits (200, 200A-G) auf dem Ring (30, 40) in die erste Richtung zu senden, bis die Schlitzreservierung (160) den Agenten (98) erreicht.
  2. Reservierungsverfahren nach Anspruch 1, des Weiteren aufweisend: Starten eines Zählers, wenn sich ein Flit (200, 200A-G) an einem Kopf des Pufferspeichers befindet; Erhöhen des Zählers jedes Mal, wenn das Flit (200, 200A-G) nicht in einem der mehreren Ringschlitze (90) des Rings (30,40) gesendet werden kann, wobei in jeder von mehreren aufeinander folgenden Zeitperioden einer der mehreren Ringschlitze (90) dem Agenten (98) zum Senden des Flits (200, 200A-G) auf dem Ring (30, 40) zur Verfügung steht.
  3. Reservierungsverfahren nach Anspruch 2, des Weiteren aufweisend: Platzierung der Schlitzreservierung (160), wenn der Zähler einen vorgegebenen Zeitschwellenwert übersteigt.
  4. Reservierungsverfahren nach Anspruch 2, des Weiteren aufweisend: Bestimmen, dass der Zähler den vorgegebenen Zeitschwellenwert nicht übersteigt; und wenn kein neues Flit (200, 200A-G) im Pufferspeicher (96A-D) empfangen wird, Erhöhen des Zählers.
  5. Reservierungsverfahren nach Anspruch 4, des Weiteren aufweisend: wenn ein neues Flit (200, 200A-G) im Pufferspeicher (96A-D) empfangen wird, Neustarten des Zählers.
  6. Reservierungsverfahren nach Anspruch 1, wobei der Pufferspeicher ein Überschreitungspufferspeicher (96C, 96D) ist, der zwischen einem horizontalen Ring (30) und einem vertikalen Ring (40) des Interconnects (150) angeordnet ist.
  7. Reservierungsverfahren nach Anspruch 1, wobei die Platzierung einer Schlitzreservierung (160) auf dem Ring (30, 40) seitens des Agenten (98) des Weiteren aufweist: Angeben einer Richtung für die Schlitzreservierung (160); und Angeben, dass der Agent (98) die Schlitzreservierung (160) verlangt.
  8. Reservierungsverfahren nach Anspruch 7, wobei das Angeben, dass der Agent (98) die Schlitzreservierung (160) verlangt, des Weiteren aufweist: Setzen von n Bits in einem Register mit einem Wert, der dem Agenten (98) entspricht, wobei die ganze Zahl n einer Anzahl von 2n Agenten (98) entspricht, die sich auf des Interconnects (150) befinden.
  9. Reservierungsverfahren nach Anspruch 1, wobei die Platzierung einer Schlitzreservierung (160) im Ring (30, 40) seitens des Agenten (98) des Weiteren aufweist: Angeben einer Richtung für die Schlitzreservierung (160); Angeben einer Polarität für die Schlitzreservierung (160); und Angeben, dass der Agent (98) die Schlitzreservierung (160) verlangt.
  10. Vorrichtung, die zwischen einem horizontalen Ring (30) und einem vertikalen Ring (40) eines Interconnects (150) angeordnet ist, aufweisend: einen horizontalen Ring-Stopp (60), der eingerichtet ist, um Flits (200, 200A-G), die in Ringschlitzen (90) auf dem horizontalen Ring (30) des Interconnects (150) übertragen werden, zu verarbeiten; einen Pufferspeicher (96A, 96B), der eingerichtet ist, Flits (200, 200A-G), die auf dem horizontalen Ring (30) übertragen werden sollen, zu speichern; einen vertikalen Ring-Stopp (70), der eingerichtet ist Flits (200, 200A-G), die in Ringschlitzen (90) auf dem vertikalen Ring (40) des Interconnects (150)übertragen werden zu verarbeiten; und einen Überschreitungspufferspeicher (66), der zwischen dem horizontalen Ring-Stopp (60) und dem vertikalen Ring-Stopp (70) angeordnet ist, wobei der Überschreitungspufferspeicher (66) eingerichtet ist, um Flits (200, 200A-G) zu speichern, die vom horizontalen Ring (30) empfangen werden und für den vertikalen Ring (40) bestimmt sind; gekennzeichnet durch einen Agenten (98), der eingerichtet ist den horizontalen Ring-Stopp (60) bzw. den vertikale Ring-Stopp (70) zu veranlassen, eine Schlitzreservierung (160) in Reaktion auf das Eintreten einer Bedingung des Pufferspeicher (96A, 96B) oder des Überschreitungspufferspeicher (66) in einem der Ringschlitze (90) des horizontalen bzw. des vertikalen Rings (30, 40) zu platzieren, wobei sich die Schlitzreservierung (160) über den horizontalen bzw. vertikalen Ring (30, 40) in eine erste Richtung bewegt, wobei andere Agenten (98) daran gehindert werden, Flits (200, 200A-G) auf dem horizontalen bzw. vertikalen Ring (30, 40) in die erste Richtung zu senden, bis die Schlitzreservierung (160) den Agenten (98) erreicht.
  11. Vorrichtung nach Anspruch 10, wobei der horizontale Ring-Stopp (60) aufweist: einen ersten Multiplexer (56B), der zwischen einem Cache-Agenten (98B) und dem horizontalen Ring (30) gekoppelt ist; und einen zweiten Multiplexer (56A), der zwischen einem Kern-Agenten (98A) und dem horizontalen Ring (30) gekoppelt ist; wobei der erste und zweite Multiplexer (56A, 56B) ein Flit (200, 200A-G) auf dem horizontalen Ring (30) im Uhrzeigersinn oder gegen den Uhrzeigersinn ablegen.
  12. Vorrichtung nach Anspruch 10 oder 11, wobei der vertikale Ring-Stopp (70) des Weiteren aufweist: einen ersten Multiplexer (84B), der zwischen dem vertikalen Ring (40) und einem Cache-Agenten (98B) gekoppelt ist; und einen zweiten Multiplexer (84A), der zwischen dem vertikalen Ring (40) und einem Kern-Agenten (98A) gekoppelt ist; wobei: in einer ersten Zeitperiode: der erste Multiplexer (84B) ein erstes Flit (200, 200A-G) auf dem vertikalen Ring (40) in einer Richtung im Uhrzeigersinn ablegt; und der zweite Multiplexer (84A) ein Flit (200, 200A-G) auf dem vertikalen Ring (40) in einer Richtung gegen den Uhrzeigersinn ablegt; und in einer zweiten Zeitperiode, die unmittelbar auf die erste Zeitperiode folgt: der erste Multiplexer (84B) das erste Flit (200, 200A-G) auf dem vertikalen Ring (40) in einer Richtung gegen den Uhrzeigersinn ablegt; und der zweite Multiplexer (84A) das zweites Flit (200, 200A-G) auf dem vertikalen Ring (40) in einer Richtung im Uhrzeigersinn abgelegt.
  13. Vorrichtung nach einem der Ansprüche 10 bis 12, des Weiteren aufweisend: ein Register (160), das eingerichtet die Schlitzreservierung (160) zu bewirken, wobei das Register (160) aufweist: Bits für eine ganze Zahl n, um eine Agentenkennung zu spezifizieren, wobei die Agentenkennung zur Angabe dient, welcher Agent (98) die Schlitzreservierung (160) anfragt, wobei der Interconnect (150) 2n Agenten (98) aufweist, wobei jeder Agent (98) eine eindeutige Agentenkennung aufweist; ein Richtungs-Bit zur Angabe, in welche Richtung sich die Schlitzreservierung (160) bewegen sollte; und ein Polaritäts-Bit zur Angabe, welche Polarität die Schlitzreservierung (160) reserviert, wobei das Polaritäts-Bit nur für den vertikalen Ring (40) verwendet wird.
  14. Vorrichtung nach einem der Ansprüche 10 bis 13, wobei die Bedingung ein Verhungern eines Agenten (98) auf dem horizontalen Ring (30) aufweist, in dem ein oder mehrere Agenten, die mit dem Interconnect (150) gekoppelt sind, nicht imstande sind, ein Flit (200, 200A-G) auf dem horizontalen Ring (30) abzulegen.
  15. Vorrichtung nach einem der Ansprüche 10 bis 13, wobei die Bedingung ein Verhungern eines Agenten auf dem vertikalen Ring (40) aufweist, in dem ein oder mehrere Agenten (98), die mit dem Interconnect (150) gekoppelt sind, nicht imstande sind, ein Flit (200, 200A-G) auf dem vertikalen Ring (40) abzulegen.
  16. Vorrichtung nach einem der Ansprüche 10 bis 13, wobei die Bedingung ein Zurückprallen eines Flits (200, 200A-G) auf dem horizontalen Ring (30) aufweist, beim dem die Anzahl von Flits (200, 200A-G), die im Überschreitungspufferspeicher (66) gespeichert ist, eine vorgegebene Anzahl übersteigt.
  17. Vorrichtung, die eingerichtet ist, das Verfahren nach einem der Ansprüche 1 bis 9 auszuführen.
DE112013003900.1T 2012-09-29 2013-06-14 Reservierungsverfahren und vorrichtung zur verringerung von verhungern von agenten und zurückprallen von nachrichten für zweidimensionale interconnects ohne pufferspeicher Active DE112013003900B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/631,944 2012-09-29
US13/631,944 US8982695B2 (en) 2012-09-29 2012-09-29 Anti-starvation and bounce-reduction mechanism for a two-dimensional bufferless interconnect
PCT/US2013/045862 WO2014051748A1 (en) 2012-09-29 2013-06-14 Anti-starvation and bounce-reduction mechanism for a two dimensional bufferless interconnect

Publications (2)

Publication Number Publication Date
DE112013003900T5 DE112013003900T5 (de) 2015-04-16
DE112013003900B4 true DE112013003900B4 (de) 2023-07-27

Family

ID=50385069

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013003900.1T Active DE112013003900B4 (de) 2012-09-29 2013-06-14 Reservierungsverfahren und vorrichtung zur verringerung von verhungern von agenten und zurückprallen von nachrichten für zweidimensionale interconnects ohne pufferspeicher

Country Status (4)

Country Link
US (2) US8982695B2 (de)
CN (1) CN104583991B (de)
DE (1) DE112013003900B4 (de)
WO (1) WO2014051748A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8982695B2 (en) 2012-09-29 2015-03-17 Intel Corporation Anti-starvation and bounce-reduction mechanism for a two-dimensional bufferless interconnect
CN104636085B (zh) * 2015-01-27 2017-10-03 北京理工大学 一种片上网络消息缓冲区的存储管理模块
US10193826B2 (en) * 2015-07-15 2019-01-29 Intel Corporation Shared mesh
US9547539B1 (en) 2015-09-10 2017-01-17 International Business Machines Corporation Reserving space in a mail queue
CN108400880B (zh) * 2017-02-07 2020-11-03 华为技术有限公司 片上网络、数据传输方法和第一交换节点
CN108512735B (zh) * 2017-02-25 2021-04-20 华为技术有限公司 一种数据传输方法和装置
US11294850B2 (en) * 2019-03-29 2022-04-05 Intel Corporation System, apparatus and method for increasing bandwidth of edge-located agents of an integrated circuit
US11784941B2 (en) * 2021-07-13 2023-10-10 Arm Limited Apparatus and method for operating a ring interconnect

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079032A1 (en) 2010-09-24 2012-03-29 Vash James R Apparatus, system, and methods for facilitating one-way ordering of messages

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7009991B2 (en) * 2002-03-28 2006-03-07 Matisse Networks Reservation-based media access controller and reservation-based optical network
CN100520752C (zh) * 2004-03-26 2009-07-29 皇家飞利浦电子股份有限公司 数据处理系统和用于事务中止的方法
US20060041715A1 (en) 2004-05-28 2006-02-23 Chrysos George Z Multiprocessor chip having bidirectional ring interconnect
EP1605727A1 (de) 2004-06-09 2005-12-14 Koninklijke Philips Electronics N.V. Integrierte Schaltungsanordnung und Verfahren zur Zuordnung von Zeitlagen
US7733898B2 (en) * 2004-08-25 2010-06-08 Intel Corporation Method and apparatus for preventing starvation in a slotted-ring network
US7965725B2 (en) 2005-05-31 2011-06-21 Stmicroelectronics, Inc. Hyper-ring-on-chip (HyRoC) architecture
US7461190B2 (en) * 2005-08-11 2008-12-02 P.A. Semi, Inc. Non-blocking address switch with shallow per agent queues
WO2007071889A1 (en) * 2005-12-22 2007-06-28 Arm Limited Arbitration method reordering transactions to ensure quality of service specified by each transaction
US7760669B2 (en) * 2006-06-27 2010-07-20 International Business Machines Corporation Method and apparatus for preventing starvation in a slotted ring data communications network
US8593960B2 (en) 2010-06-30 2013-11-26 Intel Corporation Providing a bufferless transport method for multi-dimensional mesh topology
US8982695B2 (en) 2012-09-29 2015-03-17 Intel Corporation Anti-starvation and bounce-reduction mechanism for a two-dimensional bufferless interconnect

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079032A1 (en) 2010-09-24 2012-03-29 Vash James R Apparatus, system, and methods for facilitating one-way ordering of messages

Also Published As

Publication number Publication date
US20150139242A1 (en) 2015-05-21
WO2014051748A1 (en) 2014-04-03
CN104583991B (zh) 2017-12-29
DE112013003900T5 (de) 2015-04-16
US9407454B2 (en) 2016-08-02
US8982695B2 (en) 2015-03-17
US20140092732A1 (en) 2014-04-03
CN104583991A (zh) 2015-04-29

Similar Documents

Publication Publication Date Title
DE112013003900B4 (de) Reservierungsverfahren und vorrichtung zur verringerung von verhungern von agenten und zurückprallen von nachrichten für zweidimensionale interconnects ohne pufferspeicher
DE69534540T2 (de) Apparat und Methode zur Verarbeitung von Bandbreitenanforderungen in einer ATM-Vermittlungsstelle
DE60127366T2 (de) Verfahren und Struktur zur Unterstützung von Rahmen variabler Länge in einer Vermittlungsanlage mit gemeisamem Speicher
DE69334005T2 (de) Überlastregelung in Hochgeschwindigkeitsnetzen
DE69827053T2 (de) Verfahren zur Zuteilung von Betriebsmitteln in einem digitalen Datenübertragungsnetzwerk
DE3780799T2 (de) Anordnung zur ueberlastregelung durch bandbreitenverwaltung fuer paketvermittlungssystem.
DE102015017100B3 (de) Verteilte Switch-Architektur
DE69025558T2 (de) Verfahren und Vorrichtung zur Überlastregelung in einem Datennetzwerk
DE3780800T2 (de) Anordnung zur ueberlastregelung fuer paketvermittlungssystem.
DE60222656T2 (de) Vorrichtung und verfahren für effizientes multicasting von datenpaketen
DE3888818T2 (de) Aufgeteilte Lastverteilung.
DE69031368T2 (de) Weglenkung von Nachrichtenpaketen
DE3785524T2 (de) Adaptive gebührabhängige Verkehrsleitweglenkung und automatisches Netzwerkhandhabungssystem für Fernmeldenetzwerke mit mehreren Diensten.
DE60119866T2 (de) Vermittlungseinrichtung und verfahren mit getrennten Ausgangspuffern
DE10196447B4 (de) Verfahren und Vorrichtung zum Verringern der Erschöpfung des Pools in einer Vermittlung mit gemeinsam genutztem Speicher
DE69025713T2 (de) Dynamische Fensterbestimmung in einem Datennetzwerk
DE60036031T2 (de) Zuweisung von prioritätsstufen in einem datenfluss
DE112013004750B4 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE19526962C2 (de) Flußsteuerungsmechanismus für eine Paket-geschaltete Computerverbindung
DE10357582A1 (de) Klassenbasierte Ratensteuerung unter Verwendung eines Leaky Bucket mit einer Vielzahl von Grenzwerten
DE102007038964A1 (de) Verfahren und Vorrichtung zum Verarbeiten von Netzwerkdaten
DE69534171T2 (de) Verfahren und Vorrichtung für verbesserten Durchfluss in einem Vielfachknoten-Kommunikationssystem mit einem gemeinsamen Betriebsmittel
DE102020105776A1 (de) Kostengünstige Überlastungsisolierung für verlustfreies Ethernet
DE60222233T2 (de) Prozessor und Verfahren zur Erhaltung der Verarbeitungsreihenfolge von Paketen basierend auf Paketstromkennungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final