DE102020119017A1 - Ausgang aus Eingangswarteschlangen mit Gerechtigkeit auf Zeitstempelbasis - Google Patents

Ausgang aus Eingangswarteschlangen mit Gerechtigkeit auf Zeitstempelbasis Download PDF

Info

Publication number
DE102020119017A1
DE102020119017A1 DE102020119017.4A DE102020119017A DE102020119017A1 DE 102020119017 A1 DE102020119017 A1 DE 102020119017A1 DE 102020119017 A DE102020119017 A DE 102020119017A DE 102020119017 A1 DE102020119017 A1 DE 102020119017A1
Authority
DE
Germany
Prior art keywords
queue
queues
timestamp
port
packet
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.)
Pending
Application number
DE102020119017.4A
Other languages
English (en)
Inventor
John Greth
Arvind Srinivasan
David Arditti Ilitzky
Robert Southworth
Gaspar Mora Porta
Scott Diesing
Bongjin Jung
Prasad Shabadi
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 DE102020119017A1 publication Critical patent/DE102020119017A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/826Involving periods of time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/624Altering the ordering of packets in an individual queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/629Ensuring fair share of resources, e.g. weighted fair queuing [WFQ]

Landscapes

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

Abstract

Hier beschriebene Beispiele schaffen ein Paketeingangs- und Paketausgangssystem mit einem Arbeitsspeicherpuffer in einer Netzvorrichtung. Das Eingangs- und Ausgangssystem kann einen Zeitstempel für ein oder mehrere empfangene Pakete an einem Eingangsport erzeugen, ein empfangenes Paket zu einer Warteschlange unter mehreren Warteschlangen zuweisen und den Ausgang eines Pakets aus einer Warteschlange ermöglichen. Ein Eingangsport kann eine oder mehrere Warteschlangen aufweisen, die zum Speichern von empfangenen Paketen zugewiesen sind. Ein Ausgangsport kann die eine oder die mehreren Warteschlangen verwenden, von denen Pakete ausgelassen werden sollen. Eine maximale Größe einer Warteschlange wird als zugewiesene Arbeitsspeicherbereichsgröße dividiert durch die Anzahl von Eingangsports, die den zugewiesenen Arbeitsspeicherbereich verwenden, festgelegt. Ein Ausgangsvermittler kann ein Vermittlungsschema anwenden, um den Ausgang von Paketen in Zeitstemplreihenfolge zeitlich zu planen.

Description

  • TECHNISCHES GEBIET
  • Verschiedene hier beschriebene Beispiele beziehen sich auf das Verwalten eines Staus an Eingangsports eines Switch.
  • HINTERGRUND
  • Auf dem Gebiet von Datenkommunikationen werden Switches verwendet, um Pakete an einem oder mehreren Eingangsports zu empfangenen und Pakete zu einem Ausgangsport für die Übertragung zu einem Zwischenknoten oder Ziel zu leiten. In einigen Fällen werden Warteschlangen verwendet, um Pakete vor dem Ausgang aus einem Ausgangsport zu speichern. Ausgangsports weisen eine zugewiesene Bandbreite auf, die unter einer oder mehreren Warteschlangen und einem oder mehreren Eingangsports geteilt wird. In einigen Fällen ist es erwünscht, dass die Switch-Bandbreite gleichmäßig über Eingangsports ungeachtet dessen geteilt wird, wie diese Eingangsports physikalisch gruppiert sind oder zu welchen Ausgangsports der Verkehr fließt. Dies kann jedoch in Switches mit hoher Grundzahl mit einer hohen Anzahl von Eingangs- und Ausgangsports, und die Portgruppen verwenden, schwierig zu bewerkstelligen sein.
  • Figurenliste
    • 1 stellt ein Blockdiagramm hoher Ebene eines Systems für den Eingang und Ausgang von Paketen dar.
    • 2 zeigt eine Bandbreite, die jedem Eingangsport zugewiesen wird, für verschiedene Schemen in Anbetracht der Umgebung von 1.
    • 3A und 3B stellen Beispiele eines Ausgangs auf der Basis von Paketzeitstempeln dar.
    • 4A stellt ein Beispiel einer Ausgangsbandbreitenzuweisung für ein Incast-Szenario dar.
    • 4B zeigt ein Beispiel einer Ausgangsbandbreitenzuweisung für das Beispiel von 4A.
    • 4C stellt ein Beispiel einer Warteschlangengrößenzuweisung dar.
    • 4D stellt ein Szenario dar, in dem jeder Eingangsport eine unterschiedliche Anzahl von Warteschlangen speist und jede Warteschlange durch eine unterschiedliche Anzahl von Ports gespeist wird.
    • 4E stellt ein Szenario dar, wobei die Kanten den Anteil jedes Eingangsports zeigen, der zu einer Warteschlange geht.
    • 4F stellt ein anderes Beispiel dar.
    • 5 stellt ein Beispielsystem dar, um eine Zuweisung eines Pakets zu einer Warteschlange und den Ausgang von Paketen zu schaffen.
    • 6 zeigt die Bandbreite, die in einem Szenario von 4A verbraucht wird.
    • 7 stellt einen Beispielprozess dar.
    • 8 stellt ein System dar.
    • 9 stellt ein Beispiel eines Datenzentrums dar.
    • 10 stellt eine Umgebung dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • An jedem Ausgangsport wird eine Gerechtigkeitszeitplanung auf Warteschlangen angewendet, um zu bestimmen, welche Pakete austreten sollen. Die Gerechtigkeitszeitplanung begünstigt typischerweise Eingangsports, die Verkehr zu vielen Ausgangsports senden. Wenn ein Eingangsport Verkehr zu allen Ausgangsports sendet, sieht jeder individuelle Ausgangsport einen kleinen Teil der angeforderten Bandbreite. Der Eingangsport kann jedoch die ganze angeforderte Bandbreite verbrauchen. Dagegen wird ein Eingangsport, der auf eine kleine Anzahl von Ausgangsports abzielt, gedrosselt.
  • Außerdem skaliert diese Lösung nicht. In einem Fall, in dem beispielsweise 256 Eingangsports, 256 Ausgangsports und 16 Verkehrsklassen vorhanden sind, gibt es über eine Million Warteschlangen. Die Anzahl von Warteschlangen ist in Anbetracht des begrenzten verfügbaren Arbeitsspeichers nicht brauchbar und eine gerechte Zeitplanung kann für einen Switch mit weniger Eingangsports und Ausgangsports funktionieren. Um eine Anzahl von Warteschlangen auf eine brauchbare Anzahl zu deckeln, können Eingangsports gruppiert werden und sich virtuelle Warteschlangen teilen. Virtuelle Warteschlangen, die durch mehr Eingangsports angesteuert werden, sollten daher mehr Bandbreite erhalten als andere virtuelle Warteschlangen, die durch weniger Eingangsports angesteuert werden.
  • 1 stellt ein Blockdiagramm hoher Ebene eines Systems für den Eingang und Ausgang von Paketen dar. Die Eingangsports 1.1 und 1.2 sind in ein Paar gruppiert, um die Anzahl von separaten Warteschlangen zu verringern. Die Eingangsports 2.1 und 3.1 weisen separate zugewiesene Warteschlangen auf. In diesem Beispiel senden alle Eingangsports Verkehr zum gleichen Ausgangsport, Ausgangsport 4. Verkehr von den Eingangsports 1.1 und 1.2 wird zuerst durch einen Eingangsvermittler geleitet. Der Eingangsvermittler speist eine einzelne Warteschlange, die Pakete von einer Gruppe von Eingangsports hält, die für denselben Ausgangsport bestimmt sind. Der Eingangsvermittler stellt sicher, dass die Warteschlange gleichermaßen zwischen einer Gruppe mit Eingangsports 1.1 und 1.2 geteilt wird. Wenn nur ein Eingangsport in einer Gruppe vorhanden ist, der auf einen gegebenen Ausgangsport zielt (wie es für 2.1 und 3.1 der Fall ist), leitet die Eingangsvermittlung einfach die Daten zu einer Warteschlange weiter. Das Warteschlangensystem weist Platz zu jeder Warteschlange zu, so dass der Arbeitsspeicher gleichmäßig über Eingangsports geteilt wird. Wenn mehr als ein Eingangsport eine einzelne Warteschlange speist, wird diese Warteschlange anwachsen lassen.
  • Paketverkehr wird vom Warteschlangensystem durch einen Ausgangsvermittler gelesen. Der Ausgangsvermittler verwendet Zeitstempel, die dem Verkehr zugeordnet sind, und sendet das älteste Paket zuerst. Dies führt dazu, dass der größeren Warteschlange mehr Bandbreite zugewiesen wird. Dies kann ein gewünschtes Ergebnis sein, da die Eingangsports 1.1 und 1.2 kombiniert zweimal so viel Bandbreite wie der Eingangsport 2.1 oder 3.1 allein erhalten sollte.
  • In diesem Beispiel weist ein globaler Arbeitsspeicher 16 Stellen für Eingangsdaten von 4 Eingangsports auf. 16 Stellen werden gleichmäßig zugewiesen, so dass jeder Eingangsport 4 Stellen erhält. Wenn 2 Eingangsports sich eine Warteschlange teilen, erhält die Warteschlange zweimal eine Anzahl von Stellen. Die geteilte Warteschlange weist zweimal die Anzahl von Stellen wie die nicht geteilte zweite und dritte Warteschlange auf. Die Zeitstempelvermittlung stellt zweimal Bandbreite für die geteilte Warteschlange bereit. Der Eingangsvermittler teilt gerecht die Bandbreite unter Eingangsports, wohingegen der Ausgangsvermittler die Bandbreite gerecht unter den Warteschlangen für eine Ringverteilungsausgangsvermittlung teilt. Da drei Warteschlangen, aber vier Eingangsports vorhanden sind, empfangen die Eingangsports 2.1 und 3.1 jeweils ein Drittel der Ausgangsbandbreite, aber die Eingangsports 1.1 und 1.2 empfangen jeweils die Hälfte eines Drittels der Ausgangsbandbreite. Durch Teilen einer Warteschlange empfangen folglich die Ports 1.1 und 1.2 weniger Ausgangsbandbreite, als wenn sie sich keine Warteschlange geteilt hätten, obwohl die geteilte Warteschlange zweimal so groß ist wie irgendeine ungeteilte Warteschlange. Die Ringverteilungsausgangsvermittlung weist Bandbreite zu Warteschlangen in einer Weise zu, die für Warteschlangen gerecht ist. Die Zeitstempelausgangsvermittlung weist Bandbreite zu Warteschlangen in einer Weise zu, die für Eingangsports gerecht ist.
  • 1 zeigt ein Beispiel, in dem die Ausgangsvermittlung Bandbreite zu Warteschlangen zuweist und dass der globale Arbeitsspeicher Warteschlangenstellen in einer Weise zuweist, die für Eingangsports gerecht ist, aber stellt keine spezielle Implementierung des Ausgangsvermittlers dar. Wenn der Ausgangsvermittler in 1 als Ringverteilungsausgangsvermittlung implementiert wird, ist die Bandbreite für Warteschlangen gerecht und für Eingangsports ungerecht. Wenn der Ausgangsvermittler in 1 als Zeitstempelausgangsvermittlung implementiert wird, ist die Bandbreite für Eingangsports gerecht und für Warteschlangen ungerecht. Es kann erwünscht sein, dass die Ausgangsbandbreite gerecht über alle Eingangsports geteilt wird, selbst wenn einige Eingangsports gruppiert sind und sich eine Warteschlange teilen.
  • Verschiedene Ausführungsformen schaffen ein Ausgangszeitplanungssystem, das einen Zeitstempel für ein oder mehrere empfangene Pakete auf der Basis der Ankunftszeit bestimmt. Der Zeitstempel kann bei der Ankunftszeit an einem Port, oder wenn es in eine Warteschlange kopiert wird, festgelegt werden. Ein empfangenes Paket kann einer Empfangswarteschlange zugewiesen werden und eine Empfangswarteschlange kann von einem oder mehreren Eingangsports geteilt werden. Eine Menge an Warteschlangenbildung für einen Eingangsport wird jedoch am Warteschlangenplatz im Arbeitsspeicher, der diesem Port zugewiesen ist, gedeckelt. Ein geteilter Arbeitsspeicher kann partitioniert werden, so dass jeder Eingangsport eine maximale Menge an Platz aufweist. Jeder Eingangsport kann jedoch dieselbe Menge an Platz aufweisen. Ein Eingangsport mit 400 Gbps empfängt beispielsweise im Allgemeinen 4-mal die Arbeitsspeicherzuweisung wie ein Eingangsport mit 100 Gbps. Für eine ausgewählte Verkehrsklasse (TC) oder einen ausgewählten Fluss für den Ausgang kann der Ausgang von Paketen in einer Zeitstempelreihenfolge zeitlich geplant werden. Verschiedene Ausführungsformen schaffen eine gerechte Bandbreitenzuweisung über alle Eingangsports ohne Hinzufügen von signifikantem Mehraufwand. Eingangsports können sich eine Warteschlange teilen und ihnen kann dennoch ein Anteil der Ausgangsbandbreite zugewiesen werden, der zur Anzahl von Eingangsports proportional ist.
  • Wenn ein Paket von einem Eingangsport ankommt oder wenn ein Paket von einem Eingangsport in eine Warteschlange kopiert wird, kann ein Zeitstempel bestimmt und dem Paket zugewiesen werden. Paketkennzeichen und ein Paketdeskriptor können angeben, ob Paketdaten im Arbeitsspeicher gespeichert sind, und auch einen Paketzeitstempel angeben. Der Zeitstempel kann verwendet werden, um zu bestimmen, welche Paketdaten von einer Warteschlange für den Ausgang abzurufen sind. Der Ausgangsvermittler versucht, den Ausgang in Zeitstempelreihenfolge zeitlich zu planen. In einigen Beispielen kann eine Vermittlung auf Zeitstempelbasis Ausgangsbandbreite im Verhältnis zur Warteschlangentiefe zuweisen.
  • 2 zeigt eine Bandbreite, die jedem Eingangsport zugewiesen wird, für verschiedene Schemen in Anbetracht der Umgebung von 1. Ein Grundlinienentwurf weist dieselbe Ausgangsportbandbreite zu jeder Warteschlange unter Verwendung von Eingangs- und Ausgangsvermittlern zu (beide verwenden eine gewichtete gerechte Zeitplanung). Wie gezeigt, führt jedoch die Zuweisung desselben statischen Gewichts zu jeder Warteschlange zu einer ungleichmäßigen Zuweisung von Bandbreite unter Eingangsports, was einen Stau in den Eingangsports (Eingangsports) und eine Unterauslastung von anderen Eingangsports verursachen kann.
  • Eine andere Methode (Methode 2) weist Ausgangsbandbreite zu jeder Warteschlange im Verhältnis zur Anzahl von Eingangsports zu, die Verkehr zu dieser Warteschlange senden. In Bezug auf das Beispiel von 1 weist beispielsweise der Ausgangsvermittler zwei Einheiten von Ausgangsbandbreite zu einer Warteschlange, die durch zwei Eingangsports (1.1 und 1.2) gespeist wird, und 1 Einheit von Ausgangsbandbreite zu Warteschlangen, die durch Eingangsports 2.1 und 3.1 gespeist werden, zu. Aber eine Anzahl von Eingangsports, die eine geteilte Warteschlange speisen, kann sich über die Zeit ändern. Wenn ein Port die Speisung einer geteilten Warteschlange stoppt, ist es schwierig zu bestimmen, wann Bandbreite zur geteilten Warteschlange erneut zugewiesen werden soll.
  • Noch eine andere Methode (Methode 3) verwendet Zeitstempel, um zu bestimmen, welches Paket austreten soll, wodurch ein Paket mit dem ältesten Zeitstempel ausgelassen wird. Wie gezeigt, schaffen die Methoden 2 und 3 eine relativ ausgeglichene Ausgangsbandbreitenzuweisung für jeden Eingangsport.
  • 3A und 3B stellen Beispiele eines Ausgangs auf der Basis von Paketzeitstempeln dar. 3A stellt eine Beispielreihenfolge des Paketausgangs auf der Basis von Zeitstempeln dar. In diesem Beispiel gibt es zwei Warteschlangen, eine erste Warteschlange und eine zweite Warteschlange, und die erste Warteschlange und die zweite Warteschlange weisen dieselbe Größe auf. Pakete A-D werden in die erste Warteschlange geladen und Pakete E-H werden in die zweite Warteschlange geladen. Die Pakete A-H weisen einen zugehörigen Zeitstempel auf. Das Paket A ist älter als das Paket B, das Paket B ist älter als das Paket C, ... das Paket G ist älter als das Paket H. Eine Reihenfolge des Ausgangs aus der ersten Warteschlange ist A, dann B, dann C, dann D. Die erste Warteschlange wird mit Paketen I, J, K, L aufgefrischt, wobei das Paket I älter ist als das Paket J, das Paket J älter ist als das Paket K und das Paket K älter ist als das Paket L. Das Paket E, dann F, dann G, dann H werden der Reihe nach von der unteren Warteschlange ausgelassen. Dann werden die Pakete I, J, K, L der Reihe nach ausgelassen. Folglich ist eine Reihenfolge des Ausgangs: A, B, C, D, E, F, G, H, I, J, K und L. Wenn die erste und die zweite Warteschlange dieselbe Größe aufweisen, dann bewirkt die Zeitstempelvermittlung, dass eine gleiche Menge an Bandbreite der ersten und der zweiten Warteschlange zugewiesen wird.
  • 3B zeigt ein Beispiel, in dem die zweite Warteschlange größer ist als die erste Warteschlange. In der Praxis führt die Zeitstempelvermittlung zur Zuweisung von Ausgangsbandbreite im Verhältnis zur Warteschlangentiefe. In diesem Beispiel ist die zweite Warteschlange zweimal so groß wie die erste Warteschlange und folglich empfängt die zweite Warteschlange zweimal so viel Ausgangsbandbreite wie jene der ersten Warteschlange. Folglich wird selbst unter Verwendung von Zeitstempelvermittlung die Bandbreite nicht gleichmäßig zu Warteschlangen zugewiesen.
  • 4A-4B stellen ein Beispiel der Ausgangsbandbreitenzuweisung unter Verwendung von Zeitstempelvermittlung dar. Mit der Zeitstempelvermittlung wirkt sich die Anzahl von Zielausgangsports, die von einem Eingangsport angezielt werden, auf eine Menge an Bandbreite aus, die diesem Eingangsport durch einen Ausgangsvermittler zugewiesen wird. Wenn ein erster Eingangsport Pakete zu zwei Ausgangsports sendet und ein zweiter Eingangsport Pakete zu einem einzelnen Ausgangsport sendet, dann empfängt der erste Eingangsport mehr Ausgangsbandbreite als der zweite Eingangsport unter einem Ringverteilungsschema. Mit der Zeitstempelvermittlung erhalten alle Eingangsports dieselbe Menge an Bandbreite, selbst wenn einige der Eingangsports Verkehr zu einzelnen oder mehreren Ausgangsports senden.
  • 4A stellt ein Beispiel einer Ausgangsbandbreitenzuweisung für ein Incast-Szenario dar. Jeder Pfeil stellt die Verwendung einer Warteschlange dar, um Pakete vor dem Ausgang aus einem Ausgangsport zu speichern. Der Eingangsport 0 beliefert zwei verschiedene Ausgangsports und 50 % des Verkehrs des Eingangsports 0 gehen zum Ausgangsport 48 und 50 % des Verkehrs des Eingangsports 0 gehen zum Ausgangsport 52. Der Eingangsport 4 beliefert zwei verschiedene Ausgangsports und 50 % des Verkehrs des Eingangsports 4 gehen zum Ausgangsport 48 und 50 % des Verkehrs des Eingangsports 4 gehen zum Ausgangsport 52. Der Eingangsport 8 beliefert den Ausgangsport 48, wohingegen der Eingangsport 12 den Ausgangsport 52 beliefert.
  • In diesem Beispiel bestehen keine Portgruppierungen und Eingangsports teilen sich keine Warteschlange. Mit der Ringverteilungsvermittlung empfängt jeder der Eingangsports 8 und 12 ein Drittel Ausgangsbandbreite der Ausgangsports 48 und 52, aber der Eingangsport 0 empfängt ein Drittel Ausgangsbandbreite von jedem der Ausgangsports 48 und 52. In dieser Anordnung wird der Eingangsport 0 auf die Ausgabe von zwei Drittel dessen gedrosselt, was geliefert werden könnte. Und der Eingangsport 8 wird auf ein Drittel der Ausgabe dessen gedrosselt, was er liefern könnte. Folglich führt ein Eingangsport, der mehrere Ausgangsports beliefert, zu einer erhöhten Bandbreite für diesen Eingangsport.
  • 4B zeigt, wie die Zeitstempelvermittlung die Ausgangsbandbreitenzuweisung für das Beispiel von 4A durchführt. Der Eingangsport 0 liefert Pakete zu zwei Warteschlangen, wobei 50 % der Bandbreite vom Eingangsport 0 zu einer Warteschlange geliefert werden, die den Ausgangsport 48 beliefert, und 50 % der Bandbreite vom Eingangsport A zu einer Warteschlange geliefert werden, die den Ausgangsport 52 beliefert. Der Eingangsport 4 liefert Pakete zu zwei Warteschlangen, wobei 50 % der Bandbreite vom Eingangsport 4 zu einer Warteschlange geliefert werden, die den Ausgangsport 48 beliefert, und 50 % der Bandbreite vom Eingangsport 4 zu einer Warteschlange geliefert werden, die den Ausgangsport 52 beliefert. Der Eingangsport 8 liefert Pakete zu einer Warteschlange, die Pakete zum Port 48 liefert.
  • Der Eingangsport 12 liefert Pakete zu einer Warteschlange, die Pakete zum Port 52 liefert. Wenn ein Ausgangsport 10 Einheiten an Bandbreite aufweist, dann weist der Ausgangsvermittler Bandbreite zu Zwischenwarteschlangen proportional als 2,5 Einheiten, 2,5 Einheiten und 5 Einheiten zu. Die Eingangsports 0 und 4 teilen ihre Bandbreite über die Ausgangsports auf. Jeder Eingangsport erhält insgesamt 5 Einheiten an Bandbreite. Die Bandbreite für den Eingangsport 0 ist insgesamt 5 Einheiten, die über die zwei Ausgangsports aufgeteilt werden (2,5 Einheiten für jeden Ausgangsport). Die Bandbreite für den Eingangsport 4 ist insgesamt 5 Einheiten, die über die zwei Ausgangsports aufgeteilt werden (2,5 Einheiten für jeden Ausgangsport). Die Bandbreite für den Eingangsport 8 ist insgesamt 5, die ganz zum Ausgangsport 48 geht. Die Bandbreite für den Eingangsport 12 ist insgesamt 5, die ganz zum Ausgangsport 52 geht.
  • 4C stellt ein Beispiel einer Warteschlangengrößenzuweisung dar. Jedem Eingangsport werden 10 Einheiten an Warteschlangentiefe gewährt. Der Port A speist die Warteschlange S. Der Warteschlange S wird eine Tiefe 10 gewährt. Die Ports B und C teilen sich die Warteschlange T. Der Warteschlange T darf daher zweimal so groß sein (Tiefe 20). Der Port D speist zwei separate Warteschlangen U und V. Die Warteschlangen U und V teilen sich den Platz, der für den Port D zugewiesen ist, so dass sie jeweils 5 tief sind. Der Port E speist die Warteschlangen W und X, während der Port F nur die Warteschlange X speist. In diesem Fall ist die Warteschlange W 5 Einheiten tief (die Hälfte der Zuweisung für den Port E). Die Warteschlange X ist 15 Einheiten tief (die Hälfte der Zuweisung für den Port E plus die volle Zuweisung von 10 vom Port F).
  • 4D stellt ein Szenario dar, in dem jeder Eingangsport eine unterschiedliche Anzahl von Warteschlangen speist, und jede Warteschlange durch eine unterschiedliche Anzahl von Eingangsports gespeist wird. In dem Beispiel von 4D werden jedem Eingangsport 10 Einheiten an Warteschlangentiefe gewährt. Der Port C speist die Warteschlange U und stellt 10 Einheiten an Warteschlangentiefe bereit. Der Port D speist die Warteschlangen U, V und W und stellt 3,3 Einheiten an Warteschlangentiefe für jede der Warteschlangen U, V und W bereit. Der Warteschlange U wird eine Tiefe von 13,3 Einheiten gewährt. Der Warteschlange V wird eine Tiefe von 3,3 Einheiten gewährt. Der Port E speist die Warteschlangen W und X. Der Warteschlange W wird eine Tiefe von 8,3 Einheiten gewährt, da 3,3 Einheiten durch den Port D zugewiesen werden und 5 Einheiten durch den Port E zugewiesen werden. Der Port F speist die Warteschlange X. Der Warteschlange X wird eine Tiefe von 15 Einheiten gewährt, da 5 Einheiten durch den Port E zugewiesen werden und 10 Einheiten durch den Port F zugewiesen werden.
  • 4E stellt ein Szenario dar, wobei die Kanten den Anteil jedes Eingangsports zeigen, der zu einer Warteschlange geht. Warteschlangen, die schneller ableiten, können kleiner sein. In diesem Fall stellt der Eingangsport A 10 Einheiten an Warteschlangentiefe für die Warteschlange S bereit, die 10 Einheiten an Warteschlangentiefe für den Ausgangsport G bereitstellt. Der Ausgangsport G ist exakt auf den Eingangsport A abgestimmt, so dass sie Daten mit der maximalen Rate von 10 Einheiten übertragen können.
  • Der Ausgangsport H ist überbelegt, so dass die Warteschlange T auffüllt. Die Warteschlange T wächst auf ihre maximale Größe von 20 Einheiten von Warteschlangenbildung (10 von jedem der Eingangsports B und C). Der Ausgangsport H kann nur 10 Einheiten an Bandbreite von der Warteschlange T liefern, so dass die Warteschlange T nur 10 Einheiten an Bandbreite zulassen kann. Die Bandbreite in die Warteschlange T wird gerecht durch die Eingangsports B und C geteilt. Die Eingangsports B und C erhalten jeweils nur 5 Einheiten an Bandbreite. Es ist zu beachten, dass, obwohl die gesamte Bandbreite durch die Ports B, C und H 10 Einheiten an Bandbreite ist, die gesamte Warteschlangentiefe immer noch 20 Einheiten an Warteschlangentiefe ist.
  • Der Eingangsport D stellt 5 Einheiten an Warteschlangentiefe für die Warteschlange U und 5 Einheiten an Warteschlangentiefe für die Warteschlange V bereit. Die Ausgangsports J und K weisen gemeinsam mehr als genügend verfügbare Verbindungsgeschwindigkeit auf, um Pakete so schnell auszulassen, wie der Port D seine Warteschlangen belegen kann. Die Ausgangsports J und K lassen Pakete aus den Warteschlangen U und V aus, sobald der Eingangsport D Pakete liefert. Aus diesem Grund sind die Warteschlangen U und V fast leer (als 0 gezeigt), selbst wenn ihnen ermöglicht ist, jeweils auf 5 Einheiten an Warteschlangentiefe anzuwachsen.
  • Der Eingangsport E liefert Pakete zu den Warteschlangen W und X. Die Warteschlange W liefert Pakete zum Ausgangsport L. Der Eingangsport F liefert Pakete nur zur Warteschlange X. Die Warteschlange X liefert Pakete zum Ausgangsport M. Der Ausgangsport L (wie die Ausgangsports J und K) ist überversorgt. Der Ausgangsport L kann Pakete von der Warteschlange W schneller abrufen, als der Eingangsport E Pakete schieben kann, so dass die Warteschlange W fast leer ist (als 0 gezeigt). Dies ermöglicht, dass sich die Warteschlange X unter Verwendung von allen verfügbaren Warteschlangenressourcen für beide Ports E und F ausdehnt. Das Ergebnis ist, dass sich die Eingangsports E und F gleichmäßig die Verwendung der Warteschlange X und des Ausgangsports M teilen können.
  • Warteschlangen sind virtuelle Gebilde, die bei Bedarf wachsen und schrumpfen können. Die einzige Einschränkung besteht an der Gesamtmenge an Warteschlangenbildung, die zugewiesen werden kann (durch die Größe der Vereinigung des geteilten Arbeitsspeichers begrenzt).
  • 4F stellt ein anderes Beispiel dar. Die Warteschlange U könnte auf 20 Einheiten wachsen (10 Einheiten vom Eingangsport C und 10 Einheiten vom Eingangsport D, da die anderen Warteschlangen, die dem Eingangsport D zugeordnet sind, leer sind). In diesem Fall würden sich die Eingangsports C und D gleichmäßig den Ausgangsport J teilen. Der Eingangsport D liefert jedoch nicht genügend Pakete, um die Hälfte der Bandbreite des Ausgangsports J zu verbrauchen. Der Eingangsport D verwendet nur ein Drittel der Bandbreite jedes Ausgangsports J, so dass die restlichen zwei Drittel an Bandbreite zum Eingangsport C gehen. Da die Zufuhrrate des Eingangsports D die Hälfte von jener des Eingangsports C ist, benötigt der Eingangsport D nur 5 Einheiten an Warteschlangenplatz in der Warteschlange U (daher weist die Warteschlange U eine Größe von 15 auf).
  • Die Ausgangsports K und L sind überversorgt (unterbelegt) und rufen Pakete von jeweiligen Warteschlangen V und W schneller ab, als die Eingangsports D oder E Pakete zu den Warteschlangen V oder W schieben können. Folglich schrumpfen die Warteschlangen V und W auf nahezu leer (0). Die Warteschlange X erhält die vollständige Zuweisung von den Eingangsports E und F, die sich den Ausgangsport M gleichmäßig teilen.
  • Verschiedene Ausführungsformen schaffen eine 1:1-Abbildung zwischen einer Warteschlange und einem Ausgangsport. Die Zeitstempelvermittlung, die an einem Ausgangsport angewendet wird, ermöglicht jedoch, dass mehrere Warteschlangen denselben Ausgangsport speisen und sich wie eine einzige Warteschlange verhalten, da sie gemeinsam auf der Basis des Zeitstempels „first-in-first-out“ sind. Eingangsports, die Daten zu überbelegten Ausgangsports zuführen, werden nur auf der Basis des Teils ihres Verkehrs benachteiligt, der auf diese überbelegten Ports abzielt (wie der Eingangsport E von 4F). Warteschlangen, die unterbelegte Ausgangsports beliefern, sind meist leer und sprechen nicht gegen die Warteschlangenzuweisung des Eingangsports.
  • 5 stellt ein Beispielsystem dar, um ein Paket einer Warteschlange zuzuweisen und Pakete auszulassen. Verschiedene Ausführungsformen können in irgendeiner Netzvorrichtung verwendet werden. Eine Netzvorrichtung kann beispielsweise irgendeiner von Switch-Puffern, Paketpuffern, Routern, Netzschnittstellen oder Switches oder eine Kombination davon sein. Ein Switch mit 25 Tbps kann beispielsweise bis zu 256 Eingangs- und Ausgangsports umfassen und 16 Verkehrsklassen unterstützen. Andere Geschwindigkeiten und Zahlen von Eingangs- und Ausgangsports können unterstützt werden. Ein Arbeitsspeicherpuffer mit einem Eingangs- und Ausgangssystem 500 empfängt Pakete von Eingangsports 502-0 bis 502-A, wobei A >1, von einem Netzmedium, einem Gefüge, einer Verschaltung, einem Bus und so weiter. Ein Netzmedium, ein Gefüge, eine Verschaltung oder ein Bus kann beispielsweise mit einem oder mehreren von Folgenden kompatibel sein: Ethernet, PCIe, „Intel QuickPath Interconnect“ (QPI), „Intel Ultra Path Interconnect“ (UPI), „Intel On-Chip System Fabric“ (IOSF), Omnipath, „Compute Express Link“ (CXL), HyperTransport, einem Hochgeschwindigkeitsgefüge, NVLink, einer Verschaltung von „Advanced Microcontroller Bus Architecture“ (AMBA), OpenCAPI, Gen-Z, CCIX und so weiter.
  • Der Warteschlangenzuweiser und Manager 514 bestimmt eine Warteschlange zum Zuweisen zu einem empfangenen Paket. Beispielsweise kann eine Warteschlange auf der Basis des Flusses, der Verkehrsklasse, des Niveaus an Vollheit von einer oder mehreren Warteschlangen, um Pakete zu weniger vollen Warteschlangen für den Ausgleich abzuladen, und so weiter zugewiesen werden. Die Weiterleitungsmaschine 503-0 bis 503-A kann ein empfangenes Paket (oder einen Teil davon) in eine zugewiesene Warteschlange unter den Warteschlangen 506-0 bis 506-B, wobei B ≥1, im Arbeitsspeicher 505 kopieren.
  • Wie vorstehend angegeben, können einige Ports einen größeren Anteil von Warteschlangenplatz auf der Basis der Bandbreite dieses Ports empfangen. Der Warteschlangenzuweiser und Manager 514 kann eine maximale Größe von Warteschlangen bestimmen, so dass eine Größe einer Warteschlange (Warteschlangen 506-0 bis 506-B) einen zugewiesenen Arbeitsspeicherbereich für Warteschlangen dividiert durch eine Anzahl von Eingangsports, die den zugewiesenen Arbeitsspeicherbereich verwenden, nicht überschreitet. Die Warteschlangengrößenzuweisungen pro Port 516 können eine maximale Größe jeder Warteschlange 506-0 bis 506-B angeben. Für einen Switch mit 256 Eingangsports wird beispielsweise höchstens 1/256 des Arbeitsspeichers 505 für jeden Eingangsport zugewiesen. Ein Eingangsport kann ein Paket (oder einen Teil davon) zu einer oder mehreren Warteschlangen 506-0 bis 506-B liefern. Für weniger Eingangsports können größere maximale Warteschlangengrößen pro Eingangsport zugewiesen werden. Warteschlangen können als Listen konstruiert werden, die den Arbeitsspeicher im geteilten Arbeitsspeicher verbrauchen. Die maximale Warteschlangentiefe kann pro Eingangsport, nicht Portgruppe zugewiesen werden.
  • In einigen Ausführungsformen kann ein einzelner Eingangsport mehrere Warteschlangen verwenden, um einen einzelnen Ausgangsport (Ausgangsport) zu beliefern. Eine Gesamtgröße der mehreren Warteschlangen, die durch den einzelnen Eingangsport verwendet werden, um einen einzelnen Ausgangsport zu beliefern, kann jedoch nicht 1/ANZAHL VON EINGANGSPORTS * Größe des geteilten Arbeitsspeichers überschreiten. Die Gerechtigkeit über Flüsse kann durch gegen die Latenz unempfindliche Warteschlangen (LIQs) unter Verwendung von Weiterleitungsregeln erreicht werden.
  • Der Arbeitsspeicher 505 umfasst zugewiesene Warteschlangen 506-0 bis 506-B. Die Warteschlange 506-0 umfasst Daten 508-0, einen Zähler 510-0 und Zeitstempel 512-0 oder ist diesen zugeordnet. Die Daten 508-0 können Daten von Paketen umfassen, die an einem Eingangsport empfangen werden und zur Warteschlange 506-0 zugewiesen werden. Metadaten umfassen einen Zähler 510-0 und Zeitstempel 512-0. Paketmetadaten können über Kennzeichen verfolgt werden, die auf 1-256 Bytes (oder andere Größen) von Daten zeigen, die im globalen Arbeitsspeicher gespeichert sind. Die Warteschlangen 506-1 bis 506-B können auch eine oder mehrere von Daten 508, einen Zähler 510 und Zeitstempel 512 umfassen oder sind diesen zugeordnet.
  • Der Warteschlangengrößenzuweiser und Manager 514 kann eine Größe einer Warteschlange auf der Basis von zugewiesenen Paketen unter Verwendung von Zählern 510-0 bis 510-B für jeweilige Warteschlangen 506-0 bis 506-B verfolgen. Die Ankunft eines Segments von Daten an einer Warteschlange bewirkt, dass ein Zähler inkrementiert. Der Warteschlangengrößenzuweiser und Manager 514 lässt den Zähler nicht 1/ANZAHL VON EINGANGSPORTS * (Größe des geteilten Arbeitsspeichers/Segmentgröße) überschreiten. Wenn der Zähler 1/ANZAHL VON EINGANGSPORTS * (Größe des geteilten Arbeitsspeichers/Segmentgröße) mit dem Hinzufügen des empfangenen Pakets oder Paketsegments überschreiten sollte, dann wird der Warteschlange nicht erlaubt, ein Datensegment hinzuzufügen, und das Paketsegment oder Paket kann fallengelassen werden. In einigen Beispielen ist ein Segment von Daten eine einheitliche Größe. Wenn jedoch ein Segment von Daten in der Größe variiert, dann kann die Gesamtgröße einer Warteschlange bei einer Gesamtgröße (z. B. in Bytes) gedeckelt werden und der Zähler zählt die akkumulierte Größe von Daten. Die maximale Größe einer Warteschlange kann als 1/ANZAHL VON EINGANGSPORTS * (Größe des geteilten Arbeitsspeichers) festgelegt werden. Wenn ein Paket oder Paketsegment austritt, dekrementiert der Warteschlangengrößenzuweiser und Manager 514 einen Zähler für die Warteschlange, von der das Segment oder Paket ausgetreten ist.
  • Der Zeitstempelgenerator 504 kann einen Zeitstempel für ein empfangenes Paket bei der Ankunft an einem Eingangsport oder nach dem Kopieren in eine Warteschlange (z. B. Arbeitsspeicherbereich) erzeugen. Der Zeitstempel kann ein ungefährer Zeitstempel sein. Der Zeitstempel für ein Paket kann in den Zeitstempeln 512-0 bis 512-B für die Warteschlangen 506-0 bis 506-B gespeichert werden. Der Zeitstempelgenerator 504 kann einen Zeitstempel für eine Gruppe von einem oder mehreren Paketen bestimmen. Der Zeitstempelgenerator 504 kann beispielsweise einen Zeitstempel einem Block von 10-20 Paketsegmenten (oder anderen Zahlen) zuordnen. Ein erstes Kennzeichen in einem Block kann verwendet werden, um den Zeitstempel eines ganzen Blocks von Paketsegmenten anzugeben.
  • In einigen Beispielen kann eine Taktsynchronisation zwischen Netzvorrichtungen unter Verwendung von Techniken stattfinden, die beispielsweise in IEEE 1588-2008 beschrieben sind, um den Zeitablauf zu synchronisieren, um Zeitstempel bei der Paketübertragung und/oder bei oder nach dem Paketempfang einer Netzvorrichtung zu erzeugen.
  • Der Ausgangsvermittler 518 kann Pakete aus den Warteschlangen 506-0 bis 506-B auslassen. Der Ausgangsvermittler 518 kann die Zeitstempelvermittlung 520 verwenden, um Pakete durch Auslassen des ältesten Zeitstempels innerhalb einer Verkehrsklasse, eines Flusses oder einer anderen Klassifikation von irgendeiner Warteschlange auszulassen. Anstatt alle Zeitstempel zu vergleichen, um den ältesten Zeitstempel zu finden, kann der Ausgangsvermittler 518 die bekannten Zeitstempel abtasten, bis einer gefunden ist, der älter ist als der aktuelle Zeitstempel. Während die Abtastung für ein Paket mit einem älteren Zeitstempel unter den Warteschlangen in Gang ist, kann eine gewisse Anzahl von Paketen für den Ausgang aus derselben Warteschlange zeitlich geplant werden, aus der ein Paket ausgelassen wird, selbst wenn die Pakete nicht den ältesten Zeitstempel aufweisen.
  • In einigen Fällen weisen die Zeitstempel keine feine Granularität auf und mehrere aufeinander folgende Pakete in einer Warteschlange, die zu verschiedenen Zeiten angekommen sind, können denselben Zeitstempelwert aufweisen. In einigen Fällen tritt (treten) (ein) Paket(e) mit dem identifizierten ältesten Zeitstempel aus, bevor zu einer Warteschlange mit noch älteren Paketen gewechselt wird. Dies kann dazu führen, dass Bündel von Paketen aus derselben Warteschlange ausgegeben werden.
  • Um einen ältesten Zeitstempel zu finden, kann der Ausgangsvermittler 518 Warteschlangen, von denen Pakete zum Ausgang auszuwählen sind, wechseln. Der Ausgangsvermittler 518 unterbricht nicht den Ausgang eines Pakets, und nachdem ein Paket die Ausgabe aus einer Warteschlange gestartet hat, muss das ganze Paket ausgelassen werden, bevor zu einer anderen Warteschlange gewechselt wird.
  • In einigen Beispielen kann der Ausgangsvermittler 518 eine Prüfung durchführen, um festzustellen, ob ein Zeitstempel, der mit einem empfangenen Paket vorgesehen ist, betrügerisch ist, um einen schnelleren Ausgang zu bewirken. Ein Sender kann beispielsweise einen „zurückdatierten“ Zeitstempel zu Paketen liefern, um zu bewirken, dass das Paket früher austritt als andere Pakete mit neueren Zeitstempeln. Ein Code, der gültigen Zeitstempeln zugeordnet ist und mit einem Paketkopf versehen ist, kann beispielsweise durch den Ausgangsvermittler 518 geprüft werden, um zu bestimmen, ob der Zeitstempel authentisch ist.
  • Der Ausgangsport J in 4F soll betrachtet werden. Wenn der Ausgangsport J Bandbreite zu einer anderen Warteschlange (zusätzlich zur Warteschlange U) liefern würde, wäre die Bandbreite gemäß der tatsächlichen Warteschlangentiefe (15 für die Warteschlange U), nicht der maximalen zulässigen Warteschlangentiefe (20 für die Warteschlange U) zugewiesen worden. Die Vermittlung auf der Basis direkt der Warteschlangentiefe kann Warteschlangentiefenvermittlung genannt werden. Dies hätte unterschiedliche Eigenschaften von der Zeitstempelvermittlung wie im Fall von 4F/Port J. Die Warteschlangentiefenvermittlung kann eine Ausgangsbandbreite im Verhältnis zu einer maximalen zulässigen Warteschlangentiefe bereitstellen. Das Festlegen einer maximalen zugelassenen Warteschlangentiefe auf dieselbe für alle Eingangsports kann bewirken, dass die Ausgangsbandbreite für Eingangsports gleich ist. Mit der Zeitstempelvermittlung und Festlegung einer maximalen Größe jeder Warteschlange auf der Basis einer Zuweisung von Arbeitsspeicher für alle Warteschlangen dividiert durch eine Anzahl von Eingangsports können alle Eingangsports dieselbe Menge an Bandbreite empfangen, selbst wenn einige der Eingangsports Verkehr zu einzelnen oder mehreren Ausgangsports senden.
  • In einigen Beispielen kann eine Warteschlangentiefe so geändert werden, dass sie die tatsächliche Warteschlangentiefe ist, um mehr Bandbreite für vollere Warteschlangen zu ermöglichen, unterliegt jedoch derselben maximalen Warteschlangengröße.
  • Die Zeitstempelvermittlung, bei der jedes Paketsegment oder Paket individuell mit einem Zeitstempel versehen wird, kann ein Erscheinungsbild schaffen, dass eine einzelne geteilte Ausgangswarteschlange vorhanden ist. In einigen Beispielen können sich 16 Eingangsports eine Warteschlange teilen und die Ausgangsvermittlung wählt aus 16 Warteschlangen, so dass 256 Eingangsports unterstützt werden (16 * 16 = 256).
  • In einigen Ausführungsformen können vom Benutzer zugewiesene Gewichte pro Eingangsport angewendet werden, so dass die Menge an Ausgangsbandbreite, die einer Warteschlange zugewiesen wird, gleich der Summe der Gewichte der Eingangsports ist, die eine solche Warteschlange speisen. Die Gewichtung muss unter den Eingangsports nicht gleich sein.
  • Nach der Auswahl einer Reihenfolge des Paketausgangs lassen die Ausgangsports 522-0 bis 522-C Pakete an ein Netzmedium, ein Gefüge, eine Verschaltung, einen Bus und so weiter aus. Ein Netzmedium, ein Gefüge, eine Verschaltung oder ein Bus kann beispielsweise mit einer oder mehreren von Folgenden kompatibel sein: Ethernet, PCIe, „Intel QuickPath Interconnect“ (QPI), „Intel Ultra Path Interconnect“ (UPI), „Intel On-Chip System Fabric“ (IOSF), Omnipath, „Compute Express Link“ (CXL), HyperTransport, einem Hochgeschwindigkeitsgefüge, NVLink, einer Verschaltung von „Advanced Microcontroller Bus Architecture“ (AMBA), OpenCAPI, Gen-Z, CCIX und so weiter.
  • 6 zeigt die Bandbreite, die in einem Szenario von 4A verbraucht wird. Eingangsports 0 und 4 senden einen Teil ihres Verkehrs zu zwei verschiedenen Ausgangsports. Die Eingangsports 8 und 12 senden nur Verkehr zu einem Ausgangsport (Ausgangsport 48 oder 52). 6 zeigt, dass die Eingangsports 0 und 4 ungefähr zweimal so viel Bandbreite wie die Eingangsports 8 und 12 erhalten, wenn ein Grundlinienentwurf verwendet wird, der dieselbe Ausgangsportbandbreite zu jeder Warteschlange unter Verwendung von Eingangs- und Ausgangsvermittlern zuweist (beide verwenden eine gewichtete gerechte Zeitplanung).
  • Eine andere Methode (Verteiler) weist Ausgangsbandbreite zu jeder Warteschlange im Verhältnis zur Anzahl von Eingangsports zu, die Verkehr zu dieser Warteschlange senden. Eingangsports senden Verkehr zu nur einer Warteschlange. Die Vermittler für den Ausgangsport 48 und den Ausgangsport 52 sind sich nicht einander bewusst. Sie sind sich auch unbewusst, dass die Eingangsports 0 und 4 zwei Ziele aufweisen, während die Eingangsports 8 und 12 nur ein Ziel aufweisen. Der Ausgangsport 48 weist seine Bandbreite gleichmäßig zu den drei Eingangsports zu, die ihn ansteuern. Der Ausgangsport 52 tut dasselbe. Schließlich empfangen die Eingangsports 0 und 4 ungefähr zweimal so viel Bandbreite wie die Eingangsports 8 und 12, da sie Pakete zu zweimal so vielen Ausgangsports senden.
  • Die Verwendung von Zeitstempeln, um zu bestimmen, welches Paket austreten soll, wodurch ein Paket mit dem ältesten Zeitstempel ausgelassen wird, kann eine gleichmäßige Ausgangsbandbreitenzuweisung unter Eingangsports vorsehen.
  • 7 stellt einen Beispielprozess dar. Der Prozess kann beispielsweise durch einen Switch oder Prozessoren durchgeführt werden, die den Empfang von Paketen für den Arbeitsspeicher und die Übertragung von Paketen vom Arbeitsspeicher verwalten. Bei 702 wird ein Paket an einem Eingangsport empfangen. Das Paket kann von einem Netzmedium wie z. B. einem Netzmedium, einem Gefüge, einer Verschaltung, einem Bus oder einer anderen Vorrichtung empfangen werden. Das Paket kann unter Verwendung von irgendeinem Protokoll befördert werden, einschließlich Ethernet, PCIe, „Intel QuickPath Interconnect“ (QPI), „Intel Ultra Path Interconnect“ (UPI), „Intel On-Chip System Fabric“ (IOSF), Omnipath, „Compute Express Link“ (CXL), HyperTransport, eines Hochgeschwindigkeitsgefüges, NVLink, einer Verschaltung von „Advanced Microcontroller Bus Architecture“ (AMBA), OpenCAPI, Gen-Z, CCIX und so weiter.
  • Bei 704 wird eine Bestimmung einer Warteschlange zum Zuweisen zum empfangenen Paket am Eingangsport durchgeführt. Die Zuweisung einer Warteschlange zu einem Eingangspaket kann auf einem Eingangsport, dem Fluss, der Verkehrsklasse oder dem Ausgangsport für das Paket basieren. Eine Warteschlange kann in einem Arbeitsspeicherbereich zugewiesen werden und der Arbeitsspeicherbereich kann für die Verwendung durch mehrere Eingangsports geteilt werden. In einigen Ausführungsformen können eine oder mehrere Warteschlangen pro Eingangsport zugewiesen werden und die eine oder die mehreren Warteschlangen werden einem Ausgangsport zugeordnet. Die Warteschlange kann durch einen oder mehrere Flüsse oder Verkehrsklassen geteilt werden. Ein Fluss kann beispielsweise durch eine oder mehrere von Folgenden identifiziert werden: einen Zielport, eine Ziel-IP-Adresse, einen Zielport, eine Ziel-IP-Adresse oder irgendeinen anderen Paketkopf, eine Präambel oder Nutzinformationsinhalte.
  • Bei 706 wird dem empfangenen Paket ein Zeitstempel zugewiesen. Der Zeitstempel kann auf der Basis der Ankunftszeit an einem Eingangsport zugewiesen werden. Ein Zähler kann verwendet werden, um einen Zeitstempel festzulegen. Die Zuweisung eines Zeitstempels bei 706 kann übersprungen werden, wenn der Zeitstempel bei oder nach dem Schreiben eines Pakets (oder eines Teils eines Pakets) in eine Warteschlange bestimmt werden soll.
  • Bei 708 wird eine Bestimmung hinsichtlich dessen durchgeführt, ob eine Größe der zugewiesenen Warteschlange eine maximale zugelassene Größe überschreiten würde. Eine maximale Größe einer Warteschlange kann eine Größe des Arbeitsspeicherbereichs, der für Warteschlangen für einen oder mehrere Eingangsports zugewiesen wird, dividiert durch (Anzahl von Eingangsports, die den Arbeitsspeicherbereich verwenden) sein. Ein Eingangsport wird zugewiesen, um einen Arbeitsspeicherbereich zu verwenden, der gedeckelt wird, so dass alle Eingangsports dieselbe maximale Größenverwendung des geteilten Arbeitsspeicherbereichs aufweisen. Wenn die Warteschlangengröße eine maximale Größe mit dem Hinzufügen des empfangenen Pakets (oder eines Teils davon) überschreiten würde, folgt 720 und das empfangene Paket (oder ein Teil davon) wird verworfen und nicht in der zugewiesenen Warteschlange gespeichert. In einigen Beispielen kann das empfangene Paket (oder ein Teil davon) in einer Zwischenwarteschlange gepuffert und dann verworfen werden. Wenn die Warteschlangengröße eine maximale Größe mit dem Hinzufügen des empfangenen Pakets nicht überschreiten würde, folgt 710.
  • Bei 710 wird das empfangene Paket der bestimmten Warteschlange zugewiesen. Ein Zeiger auf das empfangene Paket kann in der bestimmten Warteschlange bereitgestellt werden oder das Paket kann in einen Arbeitsspeicherbereich, der der bestimmten Warteschlange entspricht, über eine Kopie mit direktem Arbeitsspeicherzugriff (DMA) kopiert werden. In einigen Beispielen wird anstelle der oder zusätzlich zur Bestimmung eines Zeitstempels, wenn das Paket an einem Eingangsport empfangen wird (706), bei 712 der Zeitstempel bestimmt, wenn das empfangene Paket in eine bestimmte Warteschlange kopiert wird.
  • Bei 714 wird ein Zähler für die dem empfangenen Paket zugewiesene Warteschlange aktualisiert. Der Zähler kann die Paketanzahl, die in der Warteschlange gespeichert ist, oder eine Gesamtgröße des Inhalts in der Warteschlange zählen. In einigen Fällen kann eine Größe eines in der Warteschlange gespeicherten Pakets von Paket zu Paket variieren und der Zähler zählt eine Gesamtgröße des Arbeitsspeichers, der durch die einer Warteschlange zugewiesenen Pakete verwendet wird. Der Verwendungszähler für das zugewiesene Paket wird aktualisiert, um eine Menge an Arbeitsspeicher anzugeben, die durch die zugewiesene Warteschlange verwendet wird.
  • Bei 716 kann der Verwendungszähler in Metadaten für die zugehörige Warteschlange im Arbeitsspeicher gespeichert werden. Bei 716 kann der Zeitstempel für das Paket in Metadaten für die zugehörige Warteschlange im Arbeitsspeicher gespeichert werden und einem Paketidentifizierer zugeordnet werden.
  • Bei 718 wird die Ausgangsvermittlung durchgeführt, um ein Paket aus einem Ausgangsport auszulassen. Die Ausgangsvermittlung wählt ein Paket für den Ausgang aus einem Ausgangsport durch Auswählen eines Pakets mit einem ältesten Zeitstempel aus. Die Ausgangsvermittlung kann ein Paket aus einer oder mehreren Warteschlangen für den Ausgang aus einem Ausgangsport auswählen. Der Ausgang eines Pakets bewirkt, dass ein Verwendungszähler für die ausgewählte Warteschlange, die einem ausgelassenen Paket zugewiesen ist, dekrementiert wird, um den freien Platz im Arbeitsspeicherbereich durch den Ausgang des Pakets zu berücksichtigen.
  • 8 stellt ein System dar. Das System kann hier beschriebene Ausführungsformen verwenden, um Daten zu oder von dem System zu einer anderen Vorrichtung durch ein Netz oder Gefüge zu liefern. Das System 800 umfasst einen Prozessor 810, der eine Verarbeitung, ein Betriebsmanagement und eine Ausführung von Befehlen für das System 800 bereitstellt. Der Prozessor 810 kann irgendeinen Typ von Mikroprozessor, Zentraleinheit (CPU), Graphikverarbeitungseinheit (GPU), Verarbeitungskern oder anderer Verarbeitungs-Hardware, um die Verarbeitung für das System 800 bereitzustellen, oder eine Kombination von Prozessoren umfassen. Der Prozessor 810 steuert den gesamten Betrieb des Systems 800 und kann ein oder mehrere programmierbare Universal- oder Spezialmikroprozessoren, Digitalsignalprozessoren (DSPs), programmierbare Steuereinheiten, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLDs) oder dergleichen oder eine Kombination von solchen Vorrichtungen sein oder diese umfassen.
  • In einem Beispiel umfasst das System 800 eine Schnittstelle 812, die mit dem Prozessor 810 gekoppelt ist, die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite benötigen, wie z. B. das Arbeitsspeicheruntersystem 820 oder Graphikschnittstellenkomponenten 840 oder Beschleuniger 842. Die Schnittstelle 812 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente sein kann oder in einen Prozessorchip integriert sein kann. Wenn vorhanden, koppelt die Graphikschnittstelle 840 über eine Schnittstelle mit Graphikkomponenten zum Bereitstellen einer visuellen Anzeige für einen Benutzer des Systems 800. In einem Beispiel kann die Graphikschnittstelle 840 eine Anzeige mit hoher Auflösung (HD) ansteuern, die eine Ausgabe für einen Benutzer bereitstellt. Die hohe Auflösung kann sich auf eine Anzeige mit einer Pixeldichte von ungefähr 100 PPI (Pixel pro Zoll) oder größer beziehen und kann Formate wie z. B. „Full HD“ (z. B. 1080p), Retinaanzeigen, 4K (ultrahohe Auflösung oder UHD) oder andere umfassen. In einem Beispiel kann die Anzeige eine Berührungsbildschirmanzeige umfassen. In einem Beispiel erzeugt die Graphikschnittstelle 840 eine Anzeige auf der Basis von Daten, die im Arbeitsspeicher 830 gespeichert sind, oder auf der Basis von Operationen, die durch den Prozessor 810 ausgeführt werden, oder beider. In einem Beispiel erzeugt die Graphikschnittstelle 840 eine Anzeige auf der Basis von Daten, die im Arbeitsspeicher 830 gespeichert sind, oder auf der Basis von Operationen, die durch den Prozessor 810 ausgeführt werden, oder beider.
  • Die Beschleuniger 842 können eine Ablademaschine mit fester Funktion sein, auf die durch einen Prozessor 810 zugegriffen werden kann oder die von diesem verwendet werden können. Ein Beschleuniger unter den Beschleunigern 842 kann beispielsweise eine Kompressionsfähigkeit (DC-Fähigkeit), Kryptographiedienste wie z. B. Verschlüsselung mit öffentlichem Schlüssel (PKE), eine Chiffre, Hash/Authentifizierungs-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. In einigen Ausführungsformen stellt zusätzlich oder alternativ ein Beschleuniger unter den Beschleunigern 842 Feldauswahlsteuereinheitsfähigkeiten, wie hier beschrieben, bereit. In einigen Fällen können die Beschleuniger 842 in eine CPU-Buchse integriert sein (z. B. ein Verbindungselement mit einer Hauptplatine oder Leiterplatte, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt). Die Beschleuniger 842 können beispielsweise einen Einzel- oder Mehrkernprozessor, eine Graphikverarbeitungseinheit, einen Einzel- oder Mehrebenen-Cache einer logischen Ausführungseinheit, Funktionseinheiten, die verwendbar sind, um Programme oder Threads unabhängig auszuführen, anwendungsspezifische integrierte Schaltungen (ASICs), Prozessoren eines neuronalen Netzes (NNPs), eine programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie z. B. anwenderprogrammierbare Verknüpfungsfelder (FPGAs) umfassen. Die Beschleuniger 842 können mehrere neuronale Netze, CPUs, Prozessorkerne, Universalgraphikverarbeitungseinheiten bereitstellen oder Graphikverarbeitungseinheiten können zur Verwendung durch Modelle für künstliche Intelligenz (KI) oder Maschinenlernen (ML) zur Verfügung gestellt werden. Das KI-Modell kann beispielsweise irgendeines oder eine Kombination von Folgenden verwenden oder umfassen: ein Verstärkungslernschema, Q-Lernschema, tiefes Q-Lernen oder „Asynchronous Advantage Actor-Critic“ (A3C), ein kombinatorisches neuronales Netz, ein rekurrentes kombinatorisches neuronales Netz oder ein anderes KI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Graphikverarbeitungseinheiten können für die Verwendung durch KI- oder ML-Modelle zur Verfügung gestellt werden.
  • Das Arbeitsspeicheruntersystem 820 stellt den Hauptarbeitsspeicher des Systems 800 dar und stellt einen Speicher für einen durch den Prozessor 810 auszuführenden Code oder Datenwerte bereit, die beim Ausführen einer Routine verwendet werden sollen. Das Arbeitsspeicheruntersystem 820 kann eine oder mehrere Arbeitsspeichervorrichtungen 830 wie z. B. einen Festwertarbeitsspeicher (ROM), Flash-Arbeitsspeicher, eine oder mehrere Vielfalten von Direktzugriffsarbeitsspeicher (RAM) wie z. B. DRAM oder andere Arbeitsspeichervorrichtungen oder eine Kombination von solchen Vorrichtungen umfassen. Der Arbeitsspeicher 830 speichert und beherbergt unter anderem ein Betriebssystem (OS) 832, um eine Software-Plattform für die Ausführung von Befehlen im System 800 bereitzustellen. Außerdem können die Anwendungen 834 auf der Software-Plattform des OS 832 vom Arbeitsspeicher 830 ausführen. Die Anwendungen 834 stellen Programme dar, die ihre eigene Betriebslogik aufweisen, um die Ausführung von einer oder mehreren Funktionen durchzuführen. Die Prozesse 836 stellen Agenten oder Routinen dar, die Hilfsfunktionen für das OS 832 oder eine oder mehrere Anwendungen 834 oder eine Kombination bereitstellen. Das OS 832, die Anwendungen 834 und die Prozesse 836 stellen eine Software-Logik bereit, um Funktionen für das System 800 bereitzustellen. In einem Beispiel umfasst das Arbeitsspeicheruntersystem 820 eine Arbeitsspeichersteuereinheit 822, die eine Arbeitsspeichersteuereinheit ist, um Befehle zu erzeugen und an den Arbeitsspeicher 830 auszugeben. Es ist selbstverständlich, dass die Arbeitsspeichersteuereinheit 822 ein physikalischer Teil des Prozessors 810 oder ein physikalischer Teil der Schnittstelle 812 sein könnte. Die Arbeitsspeichersteuereinheit 822 kann beispielsweise eine integrierte Arbeitsspeichersteuereinheit sein, die in eine Schaltung mit dem Prozessor 810 integriert ist.
  • Obwohl nicht speziell dargestellt, ist selbstverständlich, dass das System 800 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen umfassen kann, wie z. B. einen Arbeitsspeicherbus, einen Graphikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können kommunikativ oder elektrisch Komponenten miteinander koppeln oder sowohl kommunikativ als auch elektrisch die Komponenten koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuereinheiten oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können beispielsweise einen oder mehrere eines Systembusses, eines Busses von „Peripheral Component Interconnect“ (PCI), eines „Hyper Transport“- oder Industriestandardarchitekturbusses (ISA-Busses), eines Schnittstellenbusses eines kleinen Computersystems (SCSI), eines universellen seriellen Busses (USB) oder eines Busses des Standards 1394 des „Institute of Electrical and Electronics Engineers“ (IEEE) (Firewire) umfassen.
  • In einem Beispiel umfasst das System 800 eine Schnittstelle 814, die mit der Schnittstelle 812 gekoppelt sein kann. In einem Beispiel stellt die Schnittstelle 814 eine Schnittstellenschaltung dar, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. In einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder periphere Komponenten oder beide mit der Schnittstelle 814. Die Netzschnittstelle 850 versieht das System 800 mit der Fähigkeit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) über ein oder mehrere Netze zu kommunizieren. Die Netzschnittstelle 850 kann einen Ethernet-Adapter, drahtlose Verschaltungskomponenten, Verschaltungskomponenten eines zellularen Netzes, USB (universeller serieller Bus) oder andere verdrahtete oder drahtlose Schnittstellen auf Standardbasis oder firmeneigene Schnittstellen umfassen. Die Netzschnittstelle 850 kann Daten zu einer Vorrichtung, die sich im gleichen Datenzentrum oder Schrank befindet, oder zu einer entfernten Vorrichtung übertragen, was das Senden von Daten, die im Arbeitsspeicher gespeichert sind, umfassen kann. Die Netzschnittstelle 850 kann Daten von einer entfernten Vorrichtung empfangen, was das Speichern von empfangenen Daten im Arbeitsspeicher umfassen kann. Verschiedene Ausführungsformen können in Verbindung mit der Netzschnittstelle 850, dem Prozessor 810 und dem Arbeitsspeicheruntersystem 820 verwendet werden.
  • In einem Beispiel umfasst das System 800 eine oder mehrere Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 860. Die E/A-Schnittstelle 860 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch die ein Benutzer mit dem System 800 zusammenwirkt (z. B. Audio-, alphanumerische, taktile/Berührungs- oder andere Schnittstellenkopplung). Die periphere Schnittstelle 870 kann irgendeine Hardware-Schnittstelle umfassen, die vorstehend nicht speziell erwähnt ist. Peripheriegeräte beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig mit dem System 800 verbinden. Eine abhängige Verbindung ist eine, bei der das System 800 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, an der der Betrieb ausführt, und mit der ein Benutzer zusammenwirkt.
  • In einem Beispiel umfasst das System 800 ein Speicheruntersystem 880, um Daten in einer nichtflüchtigen Weise zu speichern. In einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten des Speichers 880 mit Komponenten des Arbeitsspeicheruntersystems 820 überlappen. Das Speicheruntersystem 880 umfasst (eine) Speichervorrichtung(en) 844, die irgendein herkömmliches Medium zum Speichern von großen Mengen an Daten in einer nichtflüchtigen Weise sein oder umfassen kann (können), wie z. B. eine oder mehrere Platten auf magnetischer, Halbleiter- oder optischer Basis oder eine Kombination. Der Speicher 844 hält einen Code oder Befehle und Daten 886 in einem dauerhaften Zustand (d. h. der Wert wird trotz einer Unterbrechung der Leistung für das System 800 beibehalten). Der Speicher 884 kann im Allgemeinen als „Arbeitsspeicher“ betrachtet werden, obwohl der Arbeitsspeicher 830 typischerweise der Ausführungs- oder Betriebsarbeitsspeicher ist, um Befehle zum Prozessor 810 zu liefern. Während der Speicher 884 nichtflüchtig ist, kann der Arbeitsspeicher 830 einen flüchtigen Arbeitsspeicher umfassen (d. h. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung für das System 800 unterbrochen wird). In einem Beispiel umfasst das Speicheruntersystem 880 eine Steuereinheit 882, um mit dem Speicher 884 über eine Schnittstelle zu koppeln. In einem Beispiel ist die Steuereinheit 882 ein physikalischer Teil der Schnittstelle 814 oder des Prozessors 810 oder kann Schaltungen oder eine Logik in sowohl dem Prozessor 810 als auch der Schnittstelle 814 umfassen.
  • Ein flüchtiger Arbeitsspeicher ist ein Arbeitsspeicher, dessen Zustand (und daher die in ihm gespeicherten Daten) unbestimmt ist, wenn die Leistung für die Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Arbeitsspeicher erfordert eine Auffrischung der in der Vorrichtung gespeicherten Daten, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Arbeitsspeichers umfasst einen DRAM (dynamischer Direktzugriffsarbeitsspeicher) oder eine gewisse Variante wie z. B. einen synchronen DRAM (SDRAM). Ein Arbeitsspeicheruntersystem, wie hier beschrieben, kann mit einer Anzahl von Arbeitsspeichertechnologien kompatibel sein, wie z. B. DDR3 (doppelte Datenrate Version 3, ursprüngliche Ausgabe durch JEDEC („Joint Electronic Device Engineering Council“) am 27. Juni 2007, DDR4 (DDR Version 4, anfängliche Spezifikation, veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR Version 4), LPDDR3 (leistungsarmer DDR Version 3, JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WI02 (Breite Eingabe/Ausgabe Version 2, JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (Arbeitsspeicher mit hoher Bandbreite, JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (gegenwärtig in Erörterung durch JEDEC), HBM2 (HBM Version 2), gegenwärtig in Erörterung durch JEDEC, oder andere oder Kombinationen von Arbeitsspeichertechnologien und Technologien auf der Basis von Ableitungen oder Erweiterungen von solchen Spezifikationen. Die JEDEC-Standards sind verfügbar auf www.iedec.org.
  • Eine Vorrichtung eines nichtflüchtigen Arbeitsspeichers (NVM) ist ein Arbeitsspeicher, dessen Zustand bestimmt ist, selbst wenn die Leistung für die Vorrichtung unterbrochen wird. In einer Ausführungsform kann die NVM-Vorrichtung eine blockadressierbare Arbeitsspeichervorrichtung umfassen, wie z. B. NAND-Technologien oder spezieller einen NAND-Flash-Arbeitsspeicher mit mehreren Schwellenpegeln (beispielsweise Einzelpegelzelle („SLC“), Mehrpegelzelle („MLC“), Vierfachpegelzelle („QLC“), Dreipegelzelle („TLC“) oder irgendein anderes NAND). Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Kreuzpunktarbeitsspeichervorrichtung mit Schreiben an der Stelle oder eine andere byteadressierbare NVM-Vorrichtung mit Schreiben an der Stelle (auch als dauerhafter Arbeitsspeicher bezeichnet) umfassen, wie z. B. einen Phasenänderungsarbeitsspeicher (PCM) mit einzelnem oder mehreren Pegeln oder einen Phasenänderungsarbeitsspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die ein Chalcogenid-Phasenänderungsmaterial verwenden (beispielsweise Chalcogenidglas), einen Widerstandsarbeitsspeicher mit einer Metalloxidbasis, Sauerstoffleerstellenbasis und Direktzugriffsarbeitsspeicher mit leitfähiger Brücke (CB-RAM), einen Nanodrahtarbeitsspeicher, einen ferroelektrischen Direktzugriffsarbeitsspeicher (FeRAM, FRAM), einen magnetoresistiven Direktzugriffsarbeitsspeicher (MRAM), der eine Memristortechnologie beinhaltet, einen Spintransferdrehmoment-MRAM (SST-MRAM), eine Vorrichtung auf der Basis eines Spintronikmagnetübergangsarbeitsspeichers, eine Vorrichtung auf der Basis eines Magnettunnelübergangs (MTI), eine Vorrichtung auf der Basis von DW (Domänenwand) und SOT (Spinorbittransfer), eine Arbeitsspeichervorrichtung auf Thyristorbasis oder eine Kombination von beliebigen der obigen oder einen anderen Arbeitsspeicher.
  • Eine Leistungsquelle (nicht dargestellt) liefert Leistung zu den Komponenten des Systems 800. Insbesondere koppelt die Leistungsquelle typischerweise über eine Schnittstelle mit einer oder mehreren Leistungsversorgungen im System 800, um Leistung zu den Komponenten des Systems 800 zu liefern. In einem Beispiel umfasst die Leistungsversorgung einen AC-DC-Adapter (Adapter für Wechselstrom zu Gleichstrom), um in eine Wandsteckdose einzustecken. Eine solche Wechselstromleistung kann eine Leistungsquelle mit erneuerbarer Energie (z. B. Solarenergie) sein. In einem Beispiel umfasst die Leistungsquelle eine Gleichstromleistungsquelle wie z. B. einen externen AC-DC-Wandler. In einem Beispiel umfasst die Leistungsquelle oder Leistungsversorgung eine drahtlose Auflade-Hardware, um über Nähe zu einem Aufladefeld aufzuladen. In einem Beispiel kann die Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine Leistungsversorgung auf Bewegungsbasis, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • In einem Beispiel kann das System 800 unter Verwendung von miteinander verbundenen Rechenschlitten von Prozessoren, Arbeitsspeichern, Speichern, Netzschnittstellen und anderen Komponenten implementiert werden. Verschaltungen mit hoher Geschwindigkeit können verwendet werden, wie z. B. PCIe, Ethernet oder optische Verschaltungen (oder eine Kombination davon).
  • Ausführungsformen hier können in verschiedenen Typen von Rechen- und Vernetzungsausrüstung implementiert werden, wie z. B. Switches, Routern, Schränken und Blade-Servern, wie z. B. jenen, die in einem Datenzentrum und/oder einer Serverfarmumgebung verwendet werden. Die Server, die in Datenzentren und Serverfarmen verwendet werden, umfassen geordnete Serverkonfigurationen wie z. B. Server auf Schrankbasis oder Blade-Server. Diese Server sind in Kommunikation mit verschiedenen Netzbereitstellungen miteinander verbunden, wie z. B. Partitionierung von Sätzen von Servern in lokale Netze (LANs) mit geeigneten Umschalt- und Leitweglenkungseinrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Cloud-Beherbergungseinrichtungen können beispielsweise typischerweise große Datenzentren mit einer Vielzahl von Servern verwenden. Ein Blade umfasst eine separate Rechenplattform, die dazu konfiguriert ist, Funktionen vom Servertyp durchzuführen, das heißt ein „Server auf einer Karte“. Folglich umfasst jeder Blade Komponenten, die mit herkömmlichen Servern gemeinsam sind, einschließlich einer gedruckten Hauptleiterplatte (Hauptplatine), die eine interne Verdrahtung (d. h. Busse) zum Koppeln von geeigneten integrierten Schaltungen (ICs) und anderen Komponenten, die auf der Platine montiert sind, bereitstellt.
  • 9 stellt ein Beispiel eines Datenzentrums dar. Wie in 9 gezeigt, kann das Datenzentrum 900 ein optisches Gefüge 912 umfassen. Verschiedene Ausführungsformen können im Gefüge 912 verwendet werden. Das optische Gefüge 912 kann im Allgemeinen eine Kombination von optischen Signalisierungsmedien (wie z. B. eine optische Verkabelung) und eine optische Schaltinfrastruktur, über die irgendein spezieller Schlitten im Datenzentrum 900 Signale zu den anderen Schlitten im Datenzentrum 900 senden (und davon empfangen) kann, umfassen. Die Signalisierungskonnektivität, die das optische Gefüge 912 für irgendeinen gegebenen Schlitten bereitstellt, kann eine Konnektivität sowohl mit anderen Schlitten in einem gleichen Schrank als auch Schlitten in anderen Schränkgen umfassen. Das Datenzentrum 900 umfasst vier Schränke 902A bis 902D und die Schränke 902A bis 902D nehmen jeweilige Paare von Schlitten 904A-1 und 904A-2, 904B-1 und 904B-2, 904C-1 und 904C-2 und 904D-1 und 904D-2 auf. In diesem Beispiel umfasst das Datenzentrum 900 folglich insgesamt acht Schlitten. Das optische Gefüge 912 kann eine Schlittensignalisierungskonnektivität mit einem oder mehreren der sieben anderen Schlitten bereitstellen. Über das optische Gefüge 912 kann beispielsweise der Schlitten 904A-1 im Schrank 902A die Signalisierungskonnektivität mit dem Schlitten 904A-2 im Schrank 902A sowie den sechs anderen Schlitten 904B-1, 904B-2, 904C-1, 904C-2, 904D-1 und 904D-2 besitzen, die unter den anderen Schränken 902B, 902C und 902D des Datenzentrums 900 verteilt sind. Die Ausführungsformen sind nicht auf dieses Beispiel begrenzt. Beispielsweise kann das Gefüge 912 eine optische und/oder elektrische Signalisierung bereitstellen.
  • 10 stellt eine Umgebung 1000 mit mehreren Rechenschränken 1002 dar, die jeweils einen Schrankoberseitenswitch (ToR-Switch) 1004, einen Schaltpultmanager 1006 und mehrere vereinigte Systemeinschübe umfasst. Verschiedene Ausführungsformen können in einem Switch verwendet werden. Im Allgemeinen können die vereinigten Systemeinschübe vereinigte Recheneinschübe und vereinigte Speichereinschübe umfassen. Wahlweise können die vereinigten Systemeinschübe auch vereinigte Arbeitsspeichereinschübe und vereinigte Eingabe/Ausgabe-Einschübe (E/A-Einschübe) umfassen. In der dargestellten Ausführungsform umfassen die vereinigten Systemeinschübe einen vereinigten INTEL® XEON®-Computereinschub 1008 und einen vereinigten INTEL® ATOM™-Recheneinschub 1010, einen vereinigten Speichereinschub 1012, einen vereinigten Arbeitsspeichereinschub 1014 und einen vereinigten E/A-Einschub 1016. Jeder der vereinigten Systemeinschübe ist mit dem ToR-Switch 1004 über eine Hochgeschwindigkeitsverbindung 1018 verbunden, wie z. B. eine Ethernet-Verbindung mit 40 Gigabit/Sekunde (Gb/s) oder 100 Gb/s oder eine optische Silizium-Photonik-Verbindung (SiPh-Verbindung) mit 100+ Gb/s. In einer Ausführungsform umfasst die Hochgeschwindigkeitsverbindung 1018 eine optische SiPh-Verbindung mit 800 Gb/s.
  • Mehrere der Rechenschränke 1000 können über ihre ToR-Switch 1004 miteinander verbunden sein (z. B. mit einem Switch auf Schaltpultebene oder Datenzentrumsswitch), wie durch Verbindungen mit einem Netz 1020 dargestellt. In einigen Ausführungsformen werden Gruppen von Rechenschränken 1002 als separate Schaltpulte über (einen) Schaltpultmanager 1006 gemanagt. In einer Ausführungsform wird ein einzelner Schaltpultmanager verwendet, um alle Schränke im Schaltpult zu verwalten. Alternativ können verteilte Schaltpultmanager für Schaltpultmanagementoperationen verwendet werden.
  • Die Umgebung 1000 umfasst ferner eine Managementschnittstelle 1022, die verwendet wird, um verschiedene Aspekte der Umgebung zu verwalten. Dies umfasst das Verwalten der Schrankkonfiguration mit entsprechenden Parametern, die als Schrankkonfigurationsdaten 1024 gespeichert sind.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert werden. In einigen Beispielen können Hardware-Elemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Arbeitsspeichereinheiten, Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter umfassen. In einigen Beispielen können Software-Elemente Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, eine Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Software-Schnittstellen, APIs, Befehlssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Worte, Werte, Symbole oder irgendeine Kombination davon umfassen. Das Bestimmen, ob ein Beispiel unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren variieren, wie z. B. der gewünschten Rechenrate, Leistungspegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Arbeitsspeicherressourcen, Datenbusgeschwindigkeiten und anderen Konstruktions- oder Leistungsfähigkeitseinschränkungen, wie für eine gegebene Implementierung erwünscht. Es wird angemerkt, dass Hardware-, Firmware- und/oder Software-Elemente gemeinsam oder individuell hier als „Modul“, „Logik“, „Schaltung“ oder „Schaltungsanordnung“ bezeichnet werden können. Ein Prozessor kann eine oder mehrere Kombinationen einer Hardware-Zustandsmaschine, digitalen Steuerlogik, Zentraleinheit oder von beliebigen Hardware-, Firmware- und/oder Software-Elementen sein.
  • Einige Beispiele können unter Verwendung eines Herstellungsgegenstandes oder mindestens eines computerlesbaren Mediums oder als dieses implementiert werden. Ein computerlesbares Medium kann ein nichttransitorisches Speichermedium umfassen, um eine Logik zu speichern. In einigen Beispielen kann das nichttransitorische Speichermedium einen oder mehrere Typen von computerlesbaren Speichermedien umfassen, die in der Lage sind, elektronische Daten zu speichern, einschließlich eines flüchtigen Arbeitsspeichers oder nichtflüchtigen Arbeitsspeichers, eines entnehmbaren oder nicht entnehmbaren Arbeitsspeichers, eines löschbaren oder nicht löschbaren Arbeitsspeichers, eines beschreibbaren oder wiederbeschreibbaren Arbeitsspeichers und so weiter. In einigen Beispielen kann die Logik verschiedene Software-Elemente umfassen, wie z. B. Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, eine Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Software-Schnittstellen, eine API, Befehlssätze, einen Rechencode, einen Computercode, Codesegmente, Computercodesegmente, Worte, Werte, Symbole oder irgendeine Kombination davon.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichttransitorisches Speichermedium umfassen, um Befehle zu speichern oder zu halten, die, wenn sie durch eine Maschine, eine Rechenvorrichtung oder ein Rechensystem ausgeführt werden, bewirken, dass die Maschine, die Rechenvorrichtung oder das Rechensystem Verfahren und/oder Operationen gemäß den beschriebenen Beispielen durchführt. Die Befehle können irgendeinen geeigneten Typ von Code umfassen, wie z. B. einen Quellencode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Befehle können gemäß einer vordefinierten Computersprache, Weise oder Syntax implementiert werden, um eine Maschine, eine Rechenvorrichtung oder ein Rechensystem anzuweisen, eine bestimmte Funktion durchzuführen. Die Befehle können unter Verwendung von irgendeiner geeigneten Programmiersprache hoher Ebene, niedriger Ebene, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert werden.
  • Ein oder mehrere Aspekte von mindestens einem Beispiel können durch repräsentative Befehle implementiert werden, die auf mindestens einem maschinenlesbaren Medium gespeichert sind, das eine vielfältige Logik innerhalb des Prozessors darstellt, die, wenn sie durch eine Maschine, Rechenvorrichtung oder ein Rechensystem gelesen wird, bewirkt, dass die Maschine, die Rechenvorrichtung oder das Rechensystem eine Logik herstellt, um die hier beschriebenen Techniken durchzuführen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem konkreten, maschinenlesbaren Medium gespeichert sein und zu verschiedenen Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Die Erscheinungen des Ausdrucks „ein einzelnes Beispiel“ oder „ein Beispiel“ beziehen sich nicht notwendigerweise alle auf dasselbe Beispiel oder dieselbe Ausführungsform. Irgendein hier beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen Aspekt, der hier beschrieben ist, ungeachtet dessen kombiniert werden, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Eine Unterteilung, Weglassung oder Aufnahme von Blockfunktionen, die in den begleitenden Figuren dargestellt sind, leitet nicht ab, dass die Hardware-Komponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen in Ausführungsformen notwendigerweise unterteilt, weggelassen oder enthalten wären.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander bestimmt. Beschreibungen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ können beispielsweise angeben, dass zwei oder mehr Elemente in direktem physikalischem oder elektrischem Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht miteinander in direktem Kontakt stehen, aber immer noch miteinander zusammenwirken oder wechselwirken.
  • Die Begriffe „erster“, „zweiter“ und dergleichen bedeuten hier nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr verwendet, um ein Element von einem anderen zu unterscheiden. Die Begriffe „ein“ und „eine“ bedeuten hier nicht eine Begrenzung der Menge, sondern bezeichnen vielmehr die Anwesenheit von mindestens einem der angeführten Gegenstände. Der Begriff „aktiviert“, der hier mit Bezug auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist, und der durch Anwenden irgendeines Logikpegels, entweder logische 0 oder logische 1, auf das Signal erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgend oder nach irgendeinem anderen Ereignis oder Ereignissen folgend beziehen. Andere Sequenzen von Schritten können auch gemäß alternativen Ausführungsformen durchgeführt werden. Ferner können in Abhängigkeit von den speziellen Anwendungen zusätzliche Schritte hinzugefügt oder entfernt werden. Irgendeine Kombination von Änderungen kann verwendet werden und ein Fachmann auf dem Gebiet mit dem Nutzen dieser Offenbarung würde die vielen Variationen, Modifikationen und alternativen Ausführungsformen davon verstehen.
  • Eine disjunktive Sprache wie z. B. der Ausdruck „mindestens eines von X, Y oder Z“, wenn nicht speziell anders angegeben, wird ansonsten innerhalb des Zusammenhangs verstanden, wie im Allgemeinen verwendet, um darzustellen, dass ein Gegenstand, Begriff usw. entweder X, Y oder Z oder irgendeine Kombination davon (z. B. X, Y und/oder Z) sein kann. Folglich soll und sollte eine solche disjunktive Sprache nicht im Allgemeinen implizieren, dass bestimmte Ausführungsformen erfordern, dass mindestens eines von X, mindestens eines von Y oder mindestens eines von Z jeweils vorhanden ist. Außerdem sollte eine konjunktive Sprache wie z. B. der Ausdruck „mindestens eines von X, Y und Z“, wenn nicht speziell anders angegeben, auch so verstanden werden, dass es X, Y, Z oder irgendeine Kombination davon, einschließlich „X, Y und/oder Z“, bedeutet.
  • Erläuternde Beispiele der Vorrichtungen, Systeme und Verfahren, die hier offenbart sind, sind nachstehend vorgesehen. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann irgendeines oder mehrere und irgendeine Kombination der nachstehend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst eine Paketzuweisungseinrichtung in einer Netzvorrichtung, wobei die Einrichtung Folgendes umfasst: einen Arbeitsspeicher, um Inhalt zu speichern, der einer oder mehreren Warteschlangen zugeordnet ist; einen Warteschlangenzuweiser, um einen Teil eines empfangenen Pakets von einem Eingangsport zu einer oder mehreren ausgewählten Warteschlangen zuzuweisen, wobei eine maximale Größe der einen oder der mehreren Warteschlangen eine gleiche maximale Größe wie jene ist, die einer oder mehreren Warteschlangen für einen anderen Eingangsport zugewiesen ist, der Inhalt im Arbeitsspeicher speichert; einen Zeitstempelgenerator, um einen Zeitstempel für einen Teil des empfangenen Pakets zu erzeugen; und einen Ausgangsvermittler, um Pakete von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auszulassen.
  • Beispiel 2 umfasst irgendein Beispiel, wobei der Ausgang von Paketen aus der einen oder den mehreren Warteschlangen in Zeitstempelreihenfolge eine ungefähr gleichmäßige Zuweisung von Ausgangsbandbreite unter Eingangsports bewirkt.
  • Beispiel 3 umfasst irgendein Beispiel, wobei eine oder mehrere Warteschlangen einem einzelnen Eingangsport und einem einzelnen Ausgangsport zugewiesen werden.
  • Beispiel 4 umfasst irgendein Beispiel, wobei der Ausgangsvermittler Pakete in einem oder mehreren Flüssen von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auslassen soll.
  • Beispiel 5 umfasst irgendein Beispiel, wobei der Ausgangsvermittler Pakete in einem oder mehreren Flüssen und einer oder mehreren Verkehrsklassen von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auslassen soll.
  • Beispiel 6 umfasst irgendein Beispiel, wobei der Zeitstempelgenerator: einen Zeitstempel für ein oder mehrere empfangene Pakete irgendeines Eingangsports, irgendeines Flusses oder irgendeiner Verkehrsklasse erzeugen und den Zeitstempel für ein oder mehrere empfangene Pakete in Metadaten für das eine oder die mehreren empfangene Pakete speichern soll.
  • Beispiel 7 umfasst irgendein Beispiel, wobei der Zeitstempelgenerator: einen Zeitstempel für ein oder mehrere empfangene Pakete, die einer Warteschlange zugewiesen sind, erzeugen und den Zeitstempel in Metadaten für ein empfangenes Paket des einen oder der mehreren empfangenen Pakete speichern soll.
  • Beispiel 8 umfasst irgendein Beispiel, wobei der Zeitstempelgenerator einen Zeitstempel zu einer Ankunftszeit an einem Eingangsport oder einer Zeit, wenn das empfangene Paket in die zugewiesene Warteschlange kopiert wird, erzeugen soll.
  • Beispiel 9 umfasst irgendein Beispiel, wobei der Warteschlangenzuweiser: eine Menge an Paketdaten, die einer Warteschlange zugewiesen sind, zählen soll und die Zuweisung eines Teils des empfangenen Pakets zu einer ersten Warteschlange unter der einen oder den mehreren Warteschlangen ermöglichen soll, wenn eine maximale Größe der ersten Warteschlange nicht überschritten wird, wobei die maximale Größe (Größe des geteilten Arbeitsspeichers)/(Anzahl von Eingangsports, die Inhalt im Arbeitsspeicher speichern) ist.
  • Beispiel 10 umfasst irgendein Beispiel, wobei der Warteschlangenzuweiser einen Teil des empfangenen Pakets zu einer Warteschlange auf der Basis von einem oder mehreren der Folgenden zuweisen soll: eines Eingangsports, eines Ausgangsports, einer Verkehrsklasse oder eines Flusses.
  • Beispiel 11 umfasst irgendein Beispiel, wobei der Arbeitsspeicher unter mehreren Eingangsports geteilt wird.
  • Beispiel 12 umfasst irgendein Beispiel, wobei der Ausgangsvermittler Bandbreite im Verhältnis zur Warteschlangentiefe zuweisen soll.
  • Beispiel 13 umfasst irgendein Beispiel und umfasst eines oder mehrere von Folgenden: einen Switch, eine Netzschnittstelle, einen Rechenschlitten, einen Schrank, einen Blade, einen Server oder ein Rechensystem.
  • Beispiel 14 umfasst ein Verfahren, das das Auswählen von einer oder mehreren Warteschlangen für die Verwendung durch einen Eingangsport unter N Eingangsports, wobei N >1, und eine maximale Größe irgendeiner Warteschlange der einen oder der mehreren Warteschlangen eine Arbeitsspeicherbereichsgröße/N ist; das Zuweisen eines Teils eines Pakets, das an einem Eingangsport empfangen wird, zu einer Warteschlange unter den ausgewählten einen oder mehreren Warteschlangen, wenn eine Größe der Warteschlange nach dem Hinzufügen des empfangenen Teils des empfangenen Pakets nicht die maximale Größe überschreiten würde; das Bestimmen eines Zeitstempels zur Zuordnung zu dem Teil des empfangenen Pakets; und das Auswählen eines Pakets für den Ausgang aus einem Ausgangsport auf der Basis einer Zeitstempelreihenfolge umfasst.
  • Beispiel 15 umfasst irgendein Beispiel, wobei die eine oder die mehreren Warteschlangen einem einzelnen Ausgangsport zugewiesen werden.
  • Beispiel 16 umfasst irgendein Beispiel, wobei das Auswählen des Pakets zum Ausgang aus einem Ausgangsport auf der Basis einer Zeitstempelreihenfolge das Auswählen eines Pakets aus einem oder mehreren Flüssen zum Ausgang aus einem Ausgangsport auf der Basis eines ältesten Zeitstempels umfasst.
  • Beispiel 17 umfasst irgendein Beispiel, wobei das Bestimmen eines Zeitstempels zum Zuordnen zu dem Teil des empfangenen Pakets Folgendes umfasst: Erzeugen eines Zeitstempels für ein oder mehrere empfangene Pakete, die einer Warteschlange zugewiesen sind, und Speichern des Zeitstempels in Metadaten für ein empfangenes Paket des einen oder der mehreren empfangenen Pakete.
  • Beispiel 18 umfasst irgendein Beispiel, wobei der Zeitstempel einen Zeitstempel zur Ankunftszeit an einem Eingangsport oder zu der Zeit, wenn das empfangene Paket in die ausgewählte Warteschlange kopiert wird, umfasst.
  • Beispiel 19 umfasst ein Netzvorrichtungssystem, das einen Switch mit einem oder mehreren Eingangsports und einem oder mehreren Ausgangsports; einen Arbeitsspeicher; einen Warteschlangenzuweiser, um Pakete, die an einem Eingangsport empfangen werden, zu einer oder mehreren Warteschlangen zuzuweisen, wobei die eine oder die mehreren Warteschlangen einem einzelnen Ausgangsport zugewiesen werden und eine maximale Größe der einen oder der mehreren Warteschlangen eine Größe des Arbeitsspeichers, der für die Verwendung durch den einen oder die mehreren Eingangsports zugewiesen ist, dividiert durch eine Anzahl von Eingangsports, die den Arbeitsspeicher verwenden, ist; einen Zeitstempelgenerator, um einen Zeitstempel für ein Paket zu erzeugen; und einen Ausgangsvermittler, um Pakete von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auszulassen, umfasst.
  • Beispiel 20 umfasst irgendein Beispiel, wobei der Ausgangsvermittler Pakete in einem oder mehreren Flüssen und einer oder mehreren Verkehrsklassen von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auslassen soll.
  • Beispiel 21 umfasst irgendein Beispiel, wobei der Zeitstempelgenerator: einen Zeitstempel für ein oder mehrere empfangene Pakete irgendeines Eingangsports, irgendeines Flusses oder irgendeiner Verkehrsklasse erzeugen und den Zeitstempel für ein empfangenes Paket in Metadaten für das eine oder die mehreren empfangenen Pakete speichern soll.

Claims (15)

  1. Paketzuweisungseinrichtung in einer Netzvorrichtung, wobei die Einrichtung Folgendes umfasst: einen Arbeitsspeicher, um Inhalt zu speichern, der einer oder mehreren Warteschlangen zugeordnet ist; einen Warteschlangenzuweiser, um einen Teil eines empfangenen Pakets von einem Eingangsport zu einer oder mehreren ausgewählten Warteschlangen zuzuweisen, wobei eine maximale Größe der einen oder der mehreren Warteschlangen eine gleiche maximale Größe wie jene ist, die einer oder mehreren Warteschlangen für einen anderen Eingangsport zugeordnet wird, der Inhalt im Arbeitsspeicher speichert; einen Zeitstempelgenerator, um einen Zeitstempel für einen Teil des empfangenen Pakets zu erzeugen; und ein Ausgangsvermittler, um Pakete von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auszulassen.
  2. Einrichtung nach Anspruch 1, wobei der Ausgang von Paketen von der einen oder den mehreren Warteschlangen in Zeitstempelreihenfolge eine ungefähr gleichmäßige Zuweisung von Ausgangsbandbreite unter Eingangsports bewirken soll
  3. Einrichtung nach Anspruch 1, wobei eine oder mehrere Warteschlangen einem einzelnen Eingangsport und einem einzelnen Ausgangsport zugewiesen werden und wobei der Ausgangsvermittler Pakete in einem oder mehreren Flüssen oder einer oder mehreren Verkehrsklassen von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge auslassen soll.
  4. Einrichtung nach Anspruch 1, wobei der Zeitstempelgenerator: einen Zeitstempel für ein oder mehrere empfangene Pakete irgendeines Eingangsports, irgendeines Flusses oder irgendeiner Verkehrsklasse erzeugen soll, und den Zeitstempel für ein oder mehrere empfangene Pakete in Metadaten für das eine oder die mehreren empfangenen Pakete speichern soll.
  5. Einrichtung nach Anspruch 1, wobei der Zeitstempelgenerator einen Zeitstempel zu einer Ankunftszeit an einem Eingangsport oder einer Zeit, wenn das empfangene Paket in die zugewiesene Warteschlange kopiert wird, erzeugen soll.
  6. Einrichtung nach Anspruch 1, wobei der Warteschlangenzuweiser: eine Menge an Paketdaten, die einer Warteschlange zugewiesen werden, zählen soll, und die Zuweisung eines Teils des empfangenen Pakets zu einer ersten Warteschlange unter der einen oder den mehreren Warteschlangen ermöglichen soll, wenn eine maximale Größe der ersten Warteschlange nicht überschritten wird, wobei die maximale Größe (Größe des geteilten Arbeitsspeicher)/(Anzahl von Eingangsports, die Inhalt im Arbeitsspeicher speichern) ist.
  7. Einrichtung nach Anspruch 1, wobei der Warteschlangenvermittler einen Teil des empfangenen Pakets zu einer Warteschlange auf der Basis von einem oder mehreren von Folgenden zuweisen soll: eines Eingangsports, eines Ausgangsports, einer Verkehrsklasse oder eines Flusses.
  8. Einrichtung nach Anspruch 1, wobei der Arbeitsspeicher unter mehreren Eingangsports geteilt wird und wobei der Ausgangsvermittler Bandbreite im Verhältnis zur Warteschlangentiefe zuweisen soll.
  9. Einrichtung nach einem der Ansprüche 1-8, die ferner einen oder mehrere von Folgenden umfasst: einen Switch, eine Netzschnittstelle, einen Rechenschlitten, einen Schrank, einen Blade, einen Server oder ein Rechensystem.
  10. Verfahren, das Folgendes umfasst: Auswählen von einer oder mehreren Warteschlangen für die Verwendung durch einen Eingangsport unter N Eingangsports, wobei N ≥1, und eine maximale Größe von irgendeiner Warteschlange der einen oder der mehreren Warteschlangen eine Arbeitsspeicherbereichsgröße/N ist; Zuweisen eines Teils eines Pakets, das an einem Eingangsport empfangen wird, zu einer Warteschlange unter den ausgewählten einen oder mehreren Warteschlangen, wenn eine Größe der Warteschlange die maximale Größe nach dem Hinzufügen des empfangenen Teils des empfangenen Pakets nicht überschreiten würde; Bestimmen eines Zeitstempels zum Zuordnen zum Teil des empfangenen Pakets; und Auswählen eines Pakets zum Ausgang aus einem Ausgangsport auf der Basis einer Zeitstempelreihenfolge.
  11. Verfahren nach Anspruch 10, wobei die eine oder die mehreren Warteschlangen einem einzelnen Ausgangsport zugewiesen werden und wobei das Auswählen eines Pakets zum Ausgang aus einem Ausgangsport auf der Basis einer Zeitstempelreihenfolge das Auswählen eines Pakets unter einem oder mehreren Flüssen zum Ausgang aus einem Ausgangsport auf der Basis eines ältesten Zeitstempels umfasst.
  12. Verfahren nach Anspruch 10, wobei das Bestimmen eines Zeitstempels zum Zuordnen zum Teil des empfangenen Pakets Folgendes umfasst: Erzeugen eines Zeitstempels für ein oder mehrere empfangene Pakete, die einer Warteschlange zugewiesen werden, und Speichern des Zeitstempels in Metadaten für ein empfangenes Paket des einen oder der mehreren empfangenen Pakete, wobei der Zeitstempel einen Zeitstempel zur Ankunftszeit an einem Eingangsport oder zu einer Zeit, wenn das empfangene Paket in die ausgewählte Warteschlange kopiert wird, umfasst.
  13. Netzvorrichtungssystem, das Folgendes umfasst: einen Switch mit einem oder mehreren Eingangsports und einem oder mehreren Ausgangsports; einen Arbeitsspeicher; einen Warteschlangenzuweiser, um Pakete, die an einem Eingangsport empfangen werden, zu einer oder mehreren Warteschlangen zuzuweisen, wobei die eine oder die mehreren Warteschlangen einem einzelnen Ausgangsport zugewiesen werden und eine maximale Größe der einen oder der mehreren Warteschlangen eine Größe des Arbeitsspeichers, der für die Verwendung durch den einen oder die mehreren Eingangsports zugewiesen wird, dividiert durch eine Anzahl von Eingangsports, die den Arbeitsspeicher verwenden, ist; einen Zeitstempelgenerator, um einen Zeitstempel für ein Paket zu erzeugen; und einen Ausgangsvermittler für den Ausgang von Paketen von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge.
  14. System nach Anspruch 13, wobei der Zeitstempelgenerator: einen Zeitstempel für ein oder mehrere empfangene Pakete irgendeines Eingangsports, irgendeines Flusses oder irgendeiner Verkehrsklasse erzeugen soll, und den Zeitstempel für ein empfangenes Paket in Metadaten für das eine oder die mehreren empfangenen Pakete speichern soll.
  15. System nach Anspruch 12 oder 13, wobei der Ausgangsvermittler Pakete in einem oder mehreren Flüssen und einer oder mehreren Verkehrsklassen von einer oder mehreren Warteschlangen in Zeitstempelreihenfolge durch Auswahl eines ältesten Zeitstempels auslassen soll.
DE102020119017.4A 2019-08-21 2020-07-17 Ausgang aus Eingangswarteschlangen mit Gerechtigkeit auf Zeitstempelbasis Pending DE102020119017A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/547,482 US20210058334A1 (en) 2019-08-21 2019-08-21 Timestamp-based fairness egress from ingress queues
US16/547,482 2019-08-21

Publications (1)

Publication Number Publication Date
DE102020119017A1 true DE102020119017A1 (de) 2021-02-25

Family

ID=74495634

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020119017.4A Pending DE102020119017A1 (de) 2019-08-21 2020-07-17 Ausgang aus Eingangswarteschlangen mit Gerechtigkeit auf Zeitstempelbasis

Country Status (2)

Country Link
US (1) US20210058334A1 (de)
DE (1) DE102020119017A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11784925B2 (en) 2019-12-10 2023-10-10 Juniper Networks, Inc. Combined input and output queue for packet forwarding in network devices

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11178046B2 (en) * 2019-11-27 2021-11-16 Google Llc Weighted bandwidth allocation for adaptive routing
US11349771B2 (en) * 2020-04-30 2022-05-31 Hewlett Packard Enterprise Development Lp Method and system for enhanced queue management in a switch
US11249926B1 (en) * 2020-09-03 2022-02-15 PetaIO Inc. Host state monitoring by a peripheral device
US11785669B2 (en) * 2021-07-30 2023-10-10 EdgeQ, Inc. Systems and methods for ethernet link sharing to concurrently support multiple radios
EP4336795A4 (de) * 2021-12-29 2024-08-07 New H3C Tech Co Ltd Nachrichtenübertragungsverfahren und netzwerkvorrichtung

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7426206B1 (en) * 1998-06-11 2008-09-16 Synchrodyne Networks, Inc. Switching system and methodology having scheduled connection on input and output ports responsive to common time reference
US8255599B2 (en) * 2006-03-28 2012-08-28 Integrated Device Technology Inc. Packets transfer device having data absorbing buffers with elastic buffer capacities
US8160098B1 (en) * 2009-01-14 2012-04-17 Cisco Technology, Inc. Dynamically allocating channel bandwidth between interfaces
US7986706B2 (en) * 2009-04-29 2011-07-26 Telefonaktiebolaget Lm Ericsson Hierarchical pipelined distributed scheduling traffic manager
US10122645B2 (en) * 2012-12-07 2018-11-06 Cisco Technology, Inc. Output queue latency behavior for input queue based device
US10560401B2 (en) * 2017-06-04 2020-02-11 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Network packet microburst detection via network switching device hardware supporting quantizied congestion notification

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11784925B2 (en) 2019-12-10 2023-10-10 Juniper Networks, Inc. Combined input and output queue for packet forwarding in network devices

Also Published As

Publication number Publication date
US20210058334A1 (en) 2021-02-25

Similar Documents

Publication Publication Date Title
DE102020119017A1 (de) Ausgang aus Eingangswarteschlangen mit Gerechtigkeit auf Zeitstempelbasis
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102020113544A1 (de) Bedarfsgesteuerte paketwarteschlangen in einer netzwerkvorrichtung
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102016100902A1 (de) Verfahren zum dynamischen Zuteilen von Ressourcen von konfigurierbaren Datenverarbeitungsressourcen
DE60130079T2 (de) Verfahren und vorrichtung zur paketvermittlung mittels eines geteilten pufferspeichers
DE102020109669A1 (de) Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE112020004673T5 (de) Mehrpfad-Paketdeskriptor-Zustellschema
DE102020103570A1 (de) Host-definierte bandbreitenzuweisung für ssd-aufgaben
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE102020118494A1 (de) Technologien zur behandlung einer latenzbasierten dienstebenenvereinbarung in fern-direktspeicherzugriffsnetzen
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE102019130686A1 (de) Technologien zur bereitstellung dynamischer auswahl von edge- und lokalen beschleunigerressourcen
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE112011105911T5 (de) Server mit Switch-Schaltungen
DE102018130164A1 (de) Speicherungsvorrichtung mit programmierten zellenspeicherungsdichtenmodi, die eine funktion einer speicherungsvorrichtungskapazitätsnutzung sind
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE102019105881A1 (de) Technologien zur bereitstellung von effizienter detektion leerlaufender abfrageschleifen
DE102019127285A1 (de) Verfahren und Vorrichtung zur sicheren Datenzentrumsüberbrückung in einem Multi-Tenant-System
DE102018110704A1 (de) Speicherungsvorrichtung für ein vorausgehendes Verwalten einer Schreibdaten zuzuweisenden physischen Adresse
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012863000

Ipc: H04L0047500000