DE102022202554A1 - Verfahren, einrichtungen und herstellungsartikel zum dynamischen zuweisen von cache - Google Patents

Verfahren, einrichtungen und herstellungsartikel zum dynamischen zuweisen von cache Download PDF

Info

Publication number
DE102022202554A1
DE102022202554A1 DE102022202554.7A DE102022202554A DE102022202554A1 DE 102022202554 A1 DE102022202554 A1 DE 102022202554A1 DE 102022202554 A DE102022202554 A DE 102022202554A DE 102022202554 A1 DE102022202554 A1 DE 102022202554A1
Authority
DE
Germany
Prior art keywords
cache
queue
circuitry
traffic class
data
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
DE102022202554.7A
Other languages
English (en)
Inventor
Kishore Kasichainula
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 DE102022202554A1 publication Critical patent/DE102022202554A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • 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/39Credit based
    • 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/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es werden Verfahren, Einrichtungen, Systeme und Herstellungsartikel offenbart, um Cache dynamisch zuzuweisen. Ein Beispiel beinhaltet einen Cache mit einer Warteschlange, eine Datenstromklassifizierungsschaltungsanordnung und eine Cache-Verwaltungsschaltungsanordnung. In einem Beispiel ist die Datenstromklassifizierungsschaltungsanordnung dazu ausgelegt, einen der Warteschlange des Caches zugewiesenen Datenstrom zu decodieren, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen. In zusätzlichen oder alternativen Beispielen ist die Cache-Verwaltungsschaltungsanordnung dazu ausgelegt, basierend auf der der Warteschlange zugeordneten Verkehrsklasse der Warteschlange einen Teil des Caches zuzuweisen. In manchen Beispielen ist die Cache-Verwaltungsschaltungsanordnung dazu ausgelegt, ein Signal an einen Speichersteuerung zu übertragen, um die Zuweisung des Caches anzupassen.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft allgemein die Cache-Verwaltung und insbesondere Verfahren, Einrichtungen und Herstellungsartikel zum dynamischen Zuweisen von Cache.
  • HINTERGRUND
  • Mehrfachzugriffs-Edge-Computing (MEC) ist ein Netzwerkarchitekturkonzept, das Cloud-Computing-Fähigkeiten und eine Infrastrukturtechnologiedienstumgebung am Rand eines Netzwerks wie etwa eines zellularen Netzwerks ermöglicht. Unter Verwendung von MEC können Datenzentrum-Cloud-Dienste und -Anwendungen näher an einem Endbenutzer oder einer Rechenvorrichtung verarbeitet werden, um den Netzwerkbetrieb zu verbessern.
  • Figurenliste
    • 1 veranschaulicht eine Übersicht über eine Edge-Cloud-Konfiguration für Edge-Computing.
    • 2 veranschaulicht Betriebsschichten zwischen Endpunkten, eine Edge-Cloud und Cloud-Computing-Umgebungen.
    • 3 veranschaulicht einen beispielhaften Ansatz für Vernetzung und Dienste in einem Edge-Computing-System.
    • 4 veranschaulicht beispielhafte Ebenen einer beispielhaften Informationstechnologie (IT)/Betriebstechnologie (OT)-Umgebung.
    • 5 ist ein Blockdiagramm einer beispielhaften Netzwerkschnittstellen-Schaltungsanordnung (NIC), die in einer oder mehreren Edge-Vorrichtungen und/oder einer oder mehreren IT/OT-Vorrichtungen von 1, 2, 3 und/oder 4 implementiert werden kann.
    • 6 ist ein Blockdiagramm, das eine beispielhafte Implementierung der beispielhaften Cache-Steuerschaltungsanordnung von 5 veranschaulicht.
    • 7 ist eine beispielhafte grafische Veranschaulichung, die beispielhafte Vorteile hierin offenbarter Beispiele im Vergleich zu existierender Technologie demonstriert.
    • 8 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder Operationen repräsentiert, die durch eine beispielhafte Prozessorschaltungsanordnung ausgeführt und/oder instanziiert werden können, um die beispielhafte Cache-Steuerschaltung von 5 und/oder 6 zu implementieren.
    • 9 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die eine Prozessorschaltungsanordnung beinhaltet, die dazu strukturiert ist, die beispielhaften maschinenlesbaren Anweisungen und/oder Operationen von 8 auszuführen und/oder zu instanziieren, um die beispielhafte Cache-Steuerschaltung von 5 und/oder 6 zu implementieren.
    • 10 ist ein Blockdiagramm einer beispielhaften Implementierung der Prozessorschaltungsanordnung von 9.
    • 11 ist ein Blockdiagramm einer anderen beispielhaften Implementierung der Prozessorschaltungsanordnung von 9.
    • 12 ist ein Blockdiagramm einer beispielhaften Softwareverteilungsplattform (z. B. ein oder mehrere Server) zum Verteilen von Software (z. B. Software, die den beispielhaften maschinenlesbaren Anweisungen von 8 entspricht) an Client-Vorrichtungen, die mit Endbenutzern und/oder Verbrauchern (z. B. für Lizenz, Verkauf und/oder Verwendung), Einzelhändler (z. B. für Verkauf, Wiederverkauf, Lizenz und/oder Sublizenz) und/oder Originalgeräteherstellen (OEMs) (z. B. zur Aufnahme in Produkte, die zum Beispiel an Einzelhändler und/oder an andere Endbenutzer wie etwa Direktkaufskunden zu verteilen sind) in Zusammenhang stehen.
  • Die Figuren sind nicht maßstabsgetreu. Allgemein werden die gleichen Bezugsziffern in der (den) Zeichnung(en) und der begleitenden schriftlichen Beschreibung verwendet, um sich auf die gleichen oder ähnliche Teile zu beziehen. Wie hier verwendet, können Verbindungsbezüge (z. B. angebracht, gekoppelt, verbunden und angefügt) Zwischenglieder zwischen den Elementen, auf die durch den Verbindungsbezug verwiesen wird, und/oder eine Relativbewegung zwischen diesen Elementen beinhalten, sofern nichts anderes angegeben ist. Daher schließen Verbindungsbezüge nicht notwendigerweise aus, dass zwei Elemente direkt und/oder in fester Beziehung zueinander verbunden sind.
  • Sofern nicht spezifisch anders angegeben, werden Deskriptoren wie etwa „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw. hierin verwendet, ohne irgendeine Bedeutung von Priorität, physischer Reihenfolge, Anordnung in einer Liste und/oder Reihenfolge auf irgendeine Weise zu imputieren oder anderweitig anzugeben, sondern werden lediglich als Bezeichnungen und/oder willkürliche Namen verwendet, um Elemente zum einfachen Verständnis offenbarter Beispiele zu unterscheiden. Bei manchen Beispielen kann der Deskriptor „erster“ verwendet werden, um auf ein Element in der ausführlichen Beschreibung zu verweisen, während auf dasselbe Element in einem Anspruch mit einem anderen Deskriptor wie etwa „zweiter“ oder „dritter“ Bezug genommen werden kann. In derartigen Fällen versteht es sich, dass derartige Deskriptoren lediglich zum eindeutigen Identifizieren dieser Elemente verwendet werden, die zum Beispiel ansonsten einen gleichen Namen teilen könnten. Wie hierin verwendet, umfasst die Formulierung „in Kommunikation“, einschließlich Varianten davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (z. B. verdrahtete) Kommunikation und/oder konstante Kommunikation, sondern umfasst vielmehr außerdem eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, nicht periodischen Intervallen und/oder einmalige Ereignisse. Wie hier verwendet, ist „Prozessorschaltungsanordnung“ so definiert, dass sie (i) eine oder mehrere elektrische Spezialschaltungen beinhaltet, die zum Durchführen einer oder mehrerer spezifischer Operationen strukturiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z. B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert ist) beinhalten, und/oder (ii) eine oder mehrere universelle halbleiterbasierte elektrische Schaltungen, die mit Anweisungen zum Durchführen spezifischer Operationen programmiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z. B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert wird) beinhalten. Beispiele für Prozessorschaltungsanordnungen beinhalten programmierte Mikroprozessoren, feldprogrammierbare Gate-Arrays (FPGAs), die Anweisungen instanziieren können, Zentralprozessoreinheiten (CPUs), Grafikprozessoreinheiten (GPUs), Digitalsignalprozessoren (DSPs), XPUs oder Mikrocontroller und integrierte Schaltungen wie etwa anwendungsspezifische integrierte Schaltungen (ASICs). Zum Beispiel kann eine XPU durch ein heterogenes Rechensystem implementiert werden, das mehrere Arten von Prozessorschaltungsanordnung (z. B. ein oder mehrere FPGAs, eine oder mehrere CPUs, eine oder mehrere GPUs, einen oder mehrere DSPs usw. und/oder eine Kombination davon) und Anwendungsprogrammierungsschnittstelle(n) (API(s)) beinhaltet, die eine oder mehrere Rechenaufgaben jedem der mehreren Typen der Prozessorschaltungsanordnung zuweisen können, die am besten zum Ausführen der Rechenaufgabe(n) geeignet ist/sind. Wie hier verwendet, steht das Akronym „ASIC“ für eine anwendungsspezifische integrierte Schaltungsanordnung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist ein Blockdiagramm 100, das einen Überblick über eine Konfiguration für Edge-Computing zeigt, die eine Verarbeitungsschicht beinhaltet, die in vielen der folgenden Beispiele als „Edge-Cloud“ bezeichnet wird. Wie gezeigt befindet sich die Edge-Cloud 110 gemeinsam an einem Edge-Standort wie etwa einem Zugangspunkt oder einer Basisstation 140, einem lokalen Verarbeitungsknoten 150 oder einer Zentrale 120 und kann somit mehrere Entitäten, Vorrichtungen und Geräteinstanzen beinhalten. Die Edge-Cloud 110 befindet sich viel näher an den Endpunkt (Verbraucher und Erzeuger)-Datenquellen 160 (z. B. autonome Fahrzeuge 161, Benutzergerät 162, Geschäfts- und Industrieausrüstung 163, Videoaufnahmevorrichtungen 164, Drohnen 165, intelligente Städte und Gebäudevorrichtungen 166, Sensoren und Internet-der-Dinge (IoT)-Vorrichtungen 167 usw.) als das Cloud-Datenzentrum 130. Rechen-, Speicher- und Speicherressourcen, die an den Rändern in der Edge-Cloud 110 angeboten werden, sind kritisch für das Bereitstellen von Antwortzeiten mit ultraniedriger Latenz für Dienste und Funktionen, die durch die Endpunktdatenquellen 160 verwendet werden, sowie für das Reduzieren von Netzwerk-Backhaul-Verkehr von der Edge-Cloud 110 zum Cloud-Datenzentrum 130, wodurch Energieverbrauch und Gesamtnetzwerknutzungen unter anderen Vorteilen verbessert werden.
  • Rechenleistung, Arbeits- und Massenspeicher sind knappe Ressourcen und nehmen im Allgemeinen in Abhängigkeit vom Edge-Standort ab (wobei z. B. weniger Verarbeitungsressourcen an Verbraucherendpunktvorrichtungen verfügbar sind als an einer Basisstation, als an einer Zentrale). Je näher sich der Edge-Standort jedoch am Endpunkt (z. B. Benutzergerät (UE)) befindet, desto mehr sind Raum und Leistung häufig eingeschränkt. Beispielsweise kann eine solche Verarbeitung eine überproportionale Menge an Bandbreite von Verarbeitungsressourcen verbrauchen, die näher an dem Endbenutzer oder der Rechenvorrichtung liegen, wodurch Latenz, Überlastung und Leistungsverbrauch des Netzwerks erhöht werden. Somit versucht Edge-Computing die Menge an Ressourcen, die für Netzwerkdienste benötigt werden, durch die Verteilung von mehr Ressourcen zu reduzieren, die sich sowohl geografisch als auch in der Netzwerkzugriffszeit näher befinden. Auf diese Weise versucht Edge-Computing, die Rechenressourcen gegebenenfalls zu den Arbeitslastdaten zu bringen oder die Arbeitslastdaten zu den Rechenressourcen zu bringen. Wie hierin verwendet, sind Daten Informationen in beliebiger Form, die durch eine Prozessorschaltungsanordnung aufgenommen, verarbeitet, interpretiert und/oder anderweitig manipuliert werden können, um ein Ergebnis zu erzeugen. Das erzeugte Ergebnis kann selbst Daten darstellen.
  • Das Folgende beschreibt Aspekte einer Edge-Cloud-Architektur, die mehrere potenzielle Bereitstellungen abdeckt und Einschränkungen behandelt, die manche Netzbetreiber oder Dienstanbieter in ihren eigenen Infrastrukturen aufweisen können. Diese beinhalten: Konfigurationsschwankungen basierend auf dem Edge-Standort (weil Edges auf Basisstationsebene zum Beispiel eingeschränktere Leistungsfähigkeit und Fähigkeiten in einem Multi-Mandanten-Szenario aufweisen können); Konfigurationen basierend auf der Art der Berechnung, des Speichers, der Speicherung, der Fabric, der Beschleunigung oder ähnlicher Ressourcen, die Edge-Standorten, Ebenen von Standorten oder Gruppen von Standorten zur Verfügung stehen; die Dienst-, Sicherheits- und Verwaltungs- und Orchestrierungsfähigkeiten; und verwandte Ziele zum Erreichen einer Nutzbarkeit und Leistung von Enddiensten. Diese Bereitstellungen können ein Verarbeiten in Netzwerkschichten bewerkstelligen, die in Abhängigkeit von Latenz-, Entfernungs- und Zeitgebungsmerkmalen als „Near Edge“-, „Close Edge“-, „Local Edge“-, „Middle Edge“- oder „Far Edge“-Schichten betrachtet werden können.
  • Edge-Computing ist ein sich entwickelndes Paradigma, bei dem die Berechnung am oder näher am Rand („Edge“) eines Netzwerks durchgeführt wird, typischerweise durch die Verwendung einer Rechenplattform (z. B. x86- oder ARM-Rechenhardwarearchitektur), die an Basisstationen, Gateways, Netzwerkroutern oder anderen Vorrichtungen implementiert ist, die sich viel näher an Endpunktvorrichtungen befinden, die Daten erzeugen und verbrauchen. Edge-Gateway-Server können zum Beispiel mit Pools von Arbeitsspeicher- und Massenspeicherressourcen ausgestattet sein, um eine Berechnung in Echtzeit für Verwendungsfälle mit niedriger Latenz (z. B. autonomes Fahren oder Videoüberwachung) für verbundene Client-Vorrichtungen durchzuführen. Oder als ein Beispiel können Basisstationen mit Rechen- und Beschleunigungsressourcen erweitert werden, um Dienstarbeitslasten für angebundene Benutzergeräte direkt zu verarbeiten, ohne weiter Daten über Backhaul-Netzwerke zu kommunizieren. Oder als weiteres Beispiel kann zentrale Büronetzwerkverwaltungshardware durch standardisierte Rechenhardware ersetzt werden, die virtualisierte Netzwerkfunktionen durchführt und Rechenressourcen für die Ausführung von Diensten und Verbraucheranwendungen für angebundene Vorrichtungen bietet. Innerhalb von Edge-Computing-Netzen kann es Szenarien in Diensten geben, in denen die Rechenressource zu den Daten „verschoben“ wird, sowie Szenarien geben, in denen die Daten zur Rechenressource „verschoben“ werden. Oder als ein Beispiel können Basisstationsberechnungs-, Beschleunigungs- und Netzwerkressourcen Dienste bereitstellen, um die Arbeitslastanforderungen nach Bedarf durch Aktivieren ruhender Kapazität (Subskription, Capacity on Demand) zu skalieren, um Grenzfälle, Notfälle zu verwalten oder Langlebigkeit für eingesetzte Ressourcen über einen wesentlich längeren implementierten Lebenszyklus bereitzustellen.
  • Im Gegensatz zur Netzarchitektur von 1 sind herkömmliche Endpunkt-Anwendungen (z. B. UE, Fahrzeug-zu-Fahrzeug (V2V), Fahrzeug-zu-Alles (V2X) usw.) auf lokale Vorrichtungs- oder Remote-Cloud-Datenspeicherung und -verarbeitung angewiesen, um Informationen auszutauschen und zu koordinieren. Eine Cloud-Datenanordnung ermöglicht eine langfristige Datensammlung und -speicherung, ist aber für stark zeitlich variierende Daten, wie etwa eine Kollision, einen Ampelwechsel, industrielle Anwendungen, Kraftfahrzeuganwendungen usw., nicht optimal und kann beim Versuch fehlschlagen, Latenzherausforderungen zu erfüllen.
  • Abhängig von den Echtzeitanforderungen in einem Kommunikationskontext kann eine hierarchische Struktur von Datenverarbeitungs- und Speicherungsknoten in einer Edge-Computing-Bereitstellung definiert werden. Eine solche Bereitstellung kann beispielsweise eine lokale Verarbeitung mit ultraniedriger Latenz, regionale Speicherung und Verarbeitung sowie eine Remote-Cloud-Datenzentrum-basierte Speicherung und Verarbeitung umfassen. Leistungskennzahlen (KPIs: Key Performance Indicators) können dafür verwendet werden, zu identifizieren, wo Sensordaten am besten transferiert und wo sie verarbeitet oder gespeichert werden sollen. Dies hängt typischerweise von der ISO-Schicht-Abhängigkeit der Daten ab. Beispielsweise ändern sich Daten einer niedrigeren Schicht (PHY, MAC, Routing usw.) typischerweise schnell und werden besser lokal gehandhabt, um die Latenzanforderungen zu erfüllen. Daten höherer Schichten, wie Daten der Anwendungsschicht, sind typischerweise weniger zeitkritisch und können in einem abgesetzten Cloud-Datenzentrum gespeichert und verarbeitet werden. Auf einer mehr generischen Ebene kann ein Edge-Computing-System so beschrieben werden, dass es eine beliebige Anzahl von Einsätzen einschließt, die in der Edge-Cloud 110 arbeiten, die eine Koordination von Client- und verteilten Computing-Vorrichtungen bereitstellen.
  • 2 veranschaulicht Betriebsschichten unter Endpunkten, eine Edge-Cloud und Cloud-Computing-Umgebungen. Insbesondere stellt 2 Beispiele für Rechennutzungsfälle 205 dar, die die Edge-Cloud 110 von 1 unter mehreren veranschaulichenden Schichten des Netzwerkrechnens nutzen. Die Schichten beginnen an einer Endpunkt-Schicht (Vorrichtungen und Dinge) 200, die auf die Edge-Cloud 110 zugreift, um Datenerzeugungs-, Analyse- und Datenverbrauchsaktivitäten durchzuführen. Die Edge-Cloud 110 kann mehrere Netzwerkschichten umspannen, wie etwa eine Edge-Vorrichtungsschicht 210 mit Gateways, Servern vor Ort oder Netzwerkgeräten (Knoten 215), die sich in physisch nahen Edge-Systemen befinden; eine Netzwerkzugangsschicht 220, umfassend Basisstationen, Funkverarbeitungseinheiten, Netzwerkknoten, regionale Datenzentren (DZ) oder lokale Netzwerkgeräte (Geräte 225); und beliebige Geräte, Vorrichtungen oder Knoten, die sich dazwischen befinden (in Schicht 212, nicht ausführlich veranschaulicht). Die Netzwerkkommunikationen innerhalb der Edge-Cloud 110 und inmitten der verschiedenen Schichten können über eine beliebige Anzahl von drahtgebundenen oder drahtlosen Medien stattfinden, einschließlich über Konnektivitätsarchitekturen und Technologien, die nicht dargestellt sind.
  • Beispiele für Latenz, die aus Netzwerkkommunikationsdistanz- und Verarbeitungszeitbeschränkungen resultieren, können von weniger als einer Millisekunde (ms), wenn inmitten der Endpunktschicht 200, unter 5 ms an der Edge-Vorrichtungsschicht 210, sogar bis zwischen 10 und 40 ms reichen, wenn mit Knoten an der Netzwerkzugangsschicht 220 kommuniziert wird. Jenseits der Edge-Cloud 110 befinden sich Schichten des Kernnetzwerks 230 und des Cloud-Datenzentrums 240, jeweils mit zunehmender Latenz (z. B. zwischen 50-60 ms an der Kernnetzwerkschicht 230, bis 100 oder mehr ms an der Cloud-Datenzentrumsschicht 240). Infolgedessen werden Operationen in einem Kernnetz-Rechenzentrum 235 oder einem Cloud-Rechenzentrum 245 mit Latenzen von mindestens 50 bis 100 ms oder mehr nicht in der Lage sein, viele zeitkritische Funktionen der Anwendungsfälle 205 zu realisieren. Jeder dieser Latenzwerte wird zu Veranschaulichungs- und Kontrastzwecken bereitgestellt; es versteht sich, dass die Verwendung anderer Zugangsnetzwerkmedien und -technologien die Latenzen weiter reduzieren kann. Bei manchen Beispielen können jeweilige Teile des Netzwerks relativ zu einer Netzwerkquelle und einem Netzwerkziel als „Near Edge“-, „Close Edge“-, „Local Edge“-, „Middle Edge“- oder „Far Edge“-Schichten kategorisiert sein. Beispielsweise kann aus der Perspektive des Kernnetzwerk-Datenzentrums 235 oder eines Cloud-Datenzentrums 245 ein Zentralamt- oder Inhaltsdatennetzwerk als innerhalb einer „nahen Rand“-Schicht („nahe“ an der Cloud, mit hohen Latenzwerten, wenn mit den Vorrichtungen und Endpunkten der Nutzungsfälle 205 kommuniziert) befindlich betrachtet werden, wohingegen ein Zugangspunkt, eine Basisstation, ein Vor-Ort-Server oder ein Netzwerk-Gateway als innerhalb einer „fernen Rand“-Schicht („fern“ von der Cloud entfernt, mit niedrigen Latenzwerten, wenn mit den Vorrichtungen und Endpunkten der Nutzungsfälle 205 kommuniziert) befindlich betrachtet werden können. Es versteht sich, dass andere Kategorisierungen einer speziellen Netzwerkschicht als eine „Close“, „Local“, „Near“, „Middle“ oder „Far Edge“ bildend auf Latenz, Entfernung, Anzahl von Netzwerksprüngen oder anderen messbaren Charakteristiken basieren können, wie von einer Quelle in einer beliebigen der Netzwerkschichten 200-240 gemessen.
  • Die diversen Anwendungsfälle 205 können auf Ressourcen unter Nutzungsdruck von eingehenden Strömen aufgrund mehrerer Dienste, die die Edge-Cloud nutzen, zugreifen. Um Ergebnisse mit niedriger Latenz zu erzielen, gleichen die Dienste, die innerhalb der Edge-Cloud 110 ausgeführt werden, variierende Anforderungen in Bezug auf Folgendes aus: (a) Priorität (Durchsatz oder Latenz) und Dienstgüte (QoS) (z. B. Verkehr für ein autonomes Fahrzeug kann hinsichtlich der Antwortzeitanforderung eine höhere Priorität als ein Temperatursensor aufweisen; oder eine Performanzempfindlichkeit/ein Performanzengpass kann an einer Rechen-Beschleuniger-, Arbeitsspeicher-, Speicherungs- oder Netzwerkressource in Abhängigkeit von der Anwendung existieren); (b) Zuverlässigkeit und Widerstandsfähigkeit (z. B. müssen manche Eingangsströme bearbeitet und der Verkehr mit missionskritischer Zuverlässigkeit geleitet werden, wohingegen manche anderen Eingangsströme je nach Anwendung einen gelegentlichen Ausfall tolerieren können); und (c) physikalische Beschränkungen (z. B. Leistung, Kühlung und Formfaktor).
  • Die Ende-zu-Ende-Dienstansicht für diese Anwendungsfälle beinhaltet den Begriff eines Dienstflusses und ist einer Transaktion zugeordnet. Die Transaktion gibt die Gesamtdienstanforderung für die Entität an, die den Dienst in Anspruch nimmt, sowie die zugehörigen Dienste für die Ressourcen, Arbeitslasten, Arbeitsabläufe und Geschäftsfunktions- und Geschäftsebenenanforderungen. Die Dienste, die mit den beschriebenen „Bedingungen“ ausgeführt werden, können in jeder Schicht auf eine Weise verwaltet werden, sodass Echtzeit- und Laufzeitvertragskonformität für die Transaktion während des Lebenszyklus des Dienstes sichergestellt wird. Wenn eine Komponente in der Transaktion ihre vereinbarte Dienstgütevereinbarung (SLA, Service Level Agreement) verfehlt, kann das System als Ganzes (Komponenten in der Transaktion) die Fähigkeit bereitstellen, (1) die Auswirkung der SLA-Verletzung zu verstehen und (2) andere Komponenten im System zu erweitern, um die gesamte Transaktions-SLA wiederaufzunehmen, und (3) Schritte zu implementieren, um Abhilfe zu schaffen.
  • Dementsprechend kann unter Berücksichtigung dieser Abweichungen und Dienstmerkmale Edge-Computing innerhalb der Edge-Cloud 110 die Fähigkeit bereitstellen, mehrere Anwendungen der Anwendungsfälle 205 (z. B. Objektverfolgung, Videoüberwachung, angebundene Fahrzeuge usw.) in Echtzeit oder nahezu Echtzeit zu bedienen und auf diese zu reagieren und Anforderungen in Bezug auf ultraniedrige Latenz für diese mehreren Anwendungen zu erfüllen. Diese Vorteile ermöglichen eine ganze neue Klasse von Anwendungen (z. B. virtuelle Netzwerkfunktionen (VNFs), FaaS, Edge as a Service (EaaS), Standardprozesse usw.), die herkömmliches Cloud-Computing aufgrund von Latenz oder anderen Einschränkungen nicht nutzen können.
  • Bei den Vorteilen des Edge-Computing gibt es jedoch die folgenden Vorbehalte. Die an der Edge befindlichen Geräte sind häufig ressourcenbeschränkt, und deshalb besteht Druck auf die Nutzung von Edge-Ressourcen. Typischerweise wird dies durch das Zusammenfassen von Arbeitsspeicher- und Massenspeicherressourcen zur Verwendung durch mehrere Benutzer (Mandanten) und Vorrichtungen adressiert. Die Edge kann in Leistung und Kühlung eingeschränkt sein, sodass der Leistungsverbrauch durch die Anwendungen berücksichtigt werden muss, die die meiste Leistung verbrauchen. Es kann inhärente Leistungs-Performanz-Kompromisse in diesen gebündelten Speicherressourcen geben, da viele von ihnen wahrscheinlich neu entwickelte Speichertechnologien verwenden, bei denen für mehr Leistung eine größere Speicherbandbreite notwendig ist. Gleichermaßen sind eine verbesserte Sicherheit von Hardware und vertrauenswürdigen Funktionen einer Vertrauenskette auch erforderlich, da Edge-Orte unbemannt sein können und sogar erlaubten Zugriff benötigen können (z. B. wenn sie an einem Drittparteistandort untergebracht sind). Derartige Probleme werden in der Edge-Cloud 110 in einer Multi-Mandanten-, Multi-Eigentümer- oder Multi-Zugriffssituation vergrößert, bei der Dienste und Anwendungen von vielen Benutzern angefordert werden, insbesondere, da die Netzwerknutzung dynamisch schwankt und sich die Zusammensetzung der mehreren Beteiligten, Anwendungsfälle und Dienste ändert.
  • Auf einer allgemeineren Ebene kann ein Edge-Rechensystem so beschrieben werden, dass es eine beliebige Anzahl von Bereitstellungen in den zuvor besprochenen Schichten umfasst, die in der Edge-Cloud 110 arbeiten (Netzwerkschichten 210-230), die eine Koordination von Client- und verteilten Rechenvorrichtungen bereitstellen. Ein oder mehrere Edge-Gatewayknoten, ein oder mehrere Edge-Aggregationsknoten und ein oder mehrere Kerndatenzentren können über Schichten des Netzwerks verteilt sein, um eine Implementierung des Edge-Rechensystems durch oder im Auftrag eines Telekommunikationsdienstanbieters („Telco“ oder „TSP“), eines Internet-der-Dinge-Dienstanbieters, eines Cloud-Dienstanbieters (CSP), einer Unternehmensentität oder einer beliebigen anderen Anzahl von Entitäten bereitzustellen. Verschiedene Implementierungen und Konfigurationen des Edge-Rechensystems können dynamisch bereitgestellt werden, wie zum Beispiel bei Orchestrierung, um Dienstziele zu erfüllen.
  • Im Einklang mit den hierin bereitgestellten Beispielen kann ein Client-Rechenknoten als eine beliebige Art von Endpunktkomponente, -vorrichtung, -gerät oder anderem Ding ausgebildet sein, die bzw. das fähig ist, als ein Erzeuger oder Verbraucher von Daten zu kommunizieren. Ferner bedeutet die Kennzeichnung „Knoten“ oder „Gerät“, wie es im Edge-Rechensystem verwendet wird, nicht notwendigerweise, dass ein derartiger Knoten oder derartiges Gerät in einer Client- oder Agent-/Minion-/Folgerrolle arbeitet; vielmehr bezeichnen beliebige der Knoten oder Vorrichtungen im Edge-Rechensystem einzelne Entitäten, Knoten oder Subsysteme, die diskrete oder verbundene Hardware- oder Softwarekonfigurationen beinhalten, um die Edge-Cloud 110 zu ermöglichen oder zu verwenden.
  • Als solche ist die Edge-Cloud 110 aus Netzwerkkomponenten und funktionalen Merkmalen gebildet, die durch und innerhalb von Edge-Gatewayknoten, Edge-Aggregationsknoten oder anderen Edge-Rechenknoten unter den Netzwerkschichten 210-230 betrieben werden. Die Edge-Cloud 110 kann somit als eine beliebige Art von Netzwerk umgesetzt sein, das Edge-Computing- und/oder Speicherungsressourcen bereitstellt, die sich in der Nähe von RAN-fähigen Endpunktvorrichtungen (z. B. mobile Rechenvorrichtungen, IoT-Vorrichtungen, Smartvorrichtungen usw.) befinden, die hier erörtert werden. Anders ausgedrückt kann man sich die Edge-Cloud 110 als ein „Rand“ vorstellen, der die Endpunktvorrichtungen und herkömmliche Netzwerkzugangspunkte verbindet, die als ein Zugriffspunkt zu Kernnetzen von Dienstanbietern dienen, einschließlich Netzwerken von mobilen Trägern (z. B. Netzwerke des Global System for Mobile Communications (GSM), Long-Term-Evolution(LTE)-Netzwerke, 5G/6G-Netzwerke usw.), während sie auch Speicher- oder Rechenfunktionen bereitstellt. Andere Arten und Formen des Netzwerkzugriffs (z. B. WiFi, drahtlose, verdrahtete Langstreckennetze einschließlich optischer Netzwerke) können auch anstatt oder in Kombination mit derartigen 3GPP-Trägernetzen eingesetzt werden.
  • Die Netzwerkkomponenten der Edge-Cloud 110 können Server, Multi-Mandanten-Server, Geräterechenvorrichtungen und/oder eine beliebige andere Art von Rechenvorrichtungen sein. Zum Beispiel kann die Edge-Cloud 110 eine Geräterechenvorrichtung beinhalten, die eine eigenständige elektronische Vorrichtung einschließlich einer Einhausung, eines Chassis, eines Gehäuses oder einer Schale ist. Unter Umständen kann die Einhausung für Portabilität dimensioniert sein, sodass sie von einem Menschen getragen und/oder versandt werden kann. Beispielhafte Einhausungen können Materialien beinhalten, die eine oder mehrere Außenflächen bilden, die Inhalte des Geräts teilweise oder vollständig schützen, wobei der Schutz Wetterschutz, Schutz in gefährlichen Umgebungen (z. B. EMI, Vibration, extreme Temperaturen) beinhalten kann und/oder Eintauchbarkeit ermöglichen kann. Beispielhafte Einhausungen können Leistungsschaltungsanordnungen beinhalten, um Leistung für stationäre und/oder tragbare Implementierungen bereitzustellen, wie etwa Wechselstromeingänge, Gleichstromeingänge, AC/DC- oder DC/AC-Wandler, Leistungsregler, Transformatoren, Ladeschaltungsanordnungen, Batterien, drahtgebundene Eingänge und/oder drahtlose Leistungseingänge. Beispielhafte Einhausungen und/oder Oberflächen davon können Montageelemente beinhalten oder mit diesen verbunden sein, um eine Befestigung an Strukturen wie etwa Gebäuden, Telekommunikationsstrukturen (z. B. Masten, Antennenstrukturen usw.) und/oder Racks (z. B. Server-Racks, Bladebefestigungen usw.) zu ermöglichen. Beispielhafte Einhausungen und/oder Oberflächen davon können einen oder mehrere Sensoren (z. B. Temperatursensoren, Vibrationssensoren, Lichtsensoren, Akustiksensoren, kapazitive Sensoren, Näherungssensoren usw.) unterstützen. Ein oder mehrere derartige Sensoren können in der Oberfläche enthalten, von dieser getragen oder anderweitig in diese eingebettet und/oder an der Oberfläche des Geräts montiert sein. Beispielhafte Einhausungen und/oder Oberflächen davon können mechanische Konnektivität unterstützen, wie etwa Antriebshardware (z. B. Räder, Propeller usw.) und/oder Gelenkelemente (z. B. Roboterarme, schwenkbare Fortsätze usw.). Unter manchen Umständen können die Sensoren eine beliebige Art von Eingabevorrichtungen beinhalten, wie etwa Benutzerschnittstellenhardware (z. B. Tasten, Schalter, Wählscheiben, Schieber usw.). Unter Umständen beinhalten beispielhafte Einhausungen Ausgabevorrichtungen, die in ihnen enthalten, durch sie getragen, darin eingebettet und/oder daran angebracht sind. Ausgabevorrichtungen können Anzeigen, Touchscreens, Leuchten, Leuchtdioden (LEDs), Lautsprecher, E/A-Ports (z. B. USB (Universal Serial Bus)) usw. beinhalten. Unter Umständen sind Edge-Vorrichtungen Vorrichtungen, die im Netzwerk für einen spezifischen Zweck (z. B. eine Ampel) vorhanden sind, können aber Verarbeitungs- und/oder andere Kapazitäten aufweisen, die für andere Zwecke genutzt werden können. Derartige Edge-Vorrichtungen können unabhängig von anderen vernetzten Vorrichtungen sein und können mit einer Einhausung versehen sein, die einen Formfaktor aufweist, der für seinen primären Zweck geeignet ist; aber dennoch für andere Rechenaufgaben verfügbar ist, die ihre primäre Aufgabe nicht stören. Edge-Vorrichtungen beinhalten IoT-Vorrichtungen. Die Geräterechenvorrichtung kann Hardware- und Softwarekomponenten beinhalten, um lokale Probleme wie etwa Vorrichtungstemperatur, Vibration, Ressourcenausnutzung, Aktualisierungen, Stromprobleme, physische und Netzwerksicherheit usw. zu verwalten. Die Edge-Cloud 110 kann auch einen oder mehrere Server und/oder einen oder mehrere Server mit mehreren Mandanten beinhalten. Ein solcher Server kann ein Betriebssystem und eine virtuelle Rechenumgebung beinhalten. Eine virtuelle Rechenumgebung kann einen Hypervisor beinhalten, der eine oder mehrere virtuelle Maschinen, einen oder mehrere Container usw. verwaltet (erzeugt, einsetzt, zerstört usw.). Solche virtuellen Rechenumgebungen stellen eine Ausführungsumgebung bereit, in der eine oder mehrere Anwendungen und/oder andere Software, Code oder Skripte ausgeführt werden können, während sie von einer oder mehreren anderen Anwendungen, Software, Code oder Skripten isoliert sind.
  • In 3 tauschen verschiedene Client-Endpunkte 310 (in Form von Mobilvorrichtungen, Computern, autonomen Fahrzeugen, Geschäftsrechenanlagen, industriellen Verarbeitungsanlagen) Anforderungen und Antworten aus, die für den Typ der Endpunktnetzwerkaggregation spezifisch sind. Beispielsweise können Client-Endpunkte 310 Netzwerkzugang über ein drahtgebundenes Breitbandnetzwerk erhalten, indem Anforderungen und Antworten 322 durch ein Vor-Ort-Netzwerksystem 332 ausgetauscht werden. Manche Client-Endpunkte 310 wie etwa mobile Rechenvorrichtungen können Netzwerkzugang über ein drahtloses Breitbandnetzwerk erhalten, indem Anfragen und Antworten 324 durch einen Zugangspunkt (z. B. Mobilfunknetzturm) 334 ausgetauscht werden. Manche Client-Endpunkte 310, wie etwa autonome Fahrzeuge, können Netzwerkzugang für Anfragen und Antworten 326 über ein drahtloses Fahrzeugnetzwerk durch ein auf Straßen angeordnetes Netzwerksystem 336 erhalten. Unabhängig von der Art des Netzwerkzugangs kann der TSP jedoch Aggregationspunkte 342, 344 innerhalb der Edge-Cloud 110 von 1 einsetzen, um Verkehr und Anforderungen zu aggregieren. Somit kann der TSP innerhalb der Edge-Cloud 110 verschiedene Rechen- und Speicherressourcen einsetzen, wie etwa an Edge-Aggregationsknoten 340, um angeforderten Inhalt bereitzustellen. Die Edge-Aggregationsknoten 340 und andere Systeme des Edge-Cloud 110 sind mit einer Cloud oder einem Datenzentrum (DC) 360 verbunden, das ein Backhaul-Netzwerk 350 verwendet, um Anforderungen mit höherer Latenz von einer Cloud/einem Datenzentrum für Websites, Anwendungen, Datenbankserver usw. zu erfüllen. Zusätzliche oder konsolidierte Instanzen der Edge-Aggregationsknoten 340 und der Aggregationspunkte 342, 344, einschließlich jener, die auf einem einzigen Server-Framework eingesetzt werden, können auch innerhalb der Edge-Cloud 110 oder anderer Bereiche der TSP-Infrastruktur vorhanden sein.
  • 4 stellt beispielhafte Ebenen einer beispielhaften IT/OT-Umgebung 400 dar. Im Beispiel von 4 implementiert die IT/OT-Umgebung 400 ein industrielles Steuersystem (ICS), das einen Herstellungs- und/oder anderen Produktionsprozess steuert. Im Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 sechs Funktionsebenen, die hierarchische Funktionen von Vorrichtungen und/oder Geräten repräsentieren, und die Zwischenverbindungen und gegenseitigen Abhängigkeiten einer beispielhaften IT/OT-Umgebung wie etwa einer ICS. Die IT/OT-Umgebung 400 beinhaltet eine beispielhafte Ebene Null 402, die physischen Prozessen entspricht. Im Beispiel von 4 befinden sich physische Geräte, die die tatsächlichen physischen Prozesse durchführen, in der Ebene null 402. Zum Beispiel weist die Ebene null 402 einen oder mehrere beispielhafte Sensoren 403, einen oder mehrere beispielhafte Antriebe 404 (z. B. einen oder mehrere Motoren), einen oder mehrere beispielhafte Aktuatoren 405 und einen oder mehrere beispielhafte Roboter 406 auf. In manchen Beispielen beinhaltet die Ebene null 402 eine oder mehrere zusätzliche oder alternative Vorrichtungen.
  • Im veranschaulichten Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 eine beispielhafte Ebene eins 408, die einer individuellen Steuerung des einen oder der mehreren jeweiligen physischen Prozesse der Ebene null 402 entspricht. Im Beispiel von 4 beinhaltet die Ebene eins 408 eine beispielhafte Batch-Steuerungsschaltungsanordnung 409, eine beispielhafte diskrete Steuerungsschaltungsanordnung 410 (z. B. eine oder mehrere Proportional-Integral-Differenzial (PID)-Steuerungen, eine oder mehrere Steuerungen mit offenem Regelkreis usw.), eine beispielhafte Sequenzsteuerungsschaltungsanordnung 411 (z. B. eine oder mehrere sequenzielle Steuerungen mit Interlocklogik), eine beispielhafte kontinuierliche Steuerungsschaltungsanordnung 412 (z. B. Durchführen einer kontinuierlichen Prozesssteuerung) und eine beispielhafte hybride Steuerungsschaltungsanordnung 413 (z. B. eine oder mehrere spezialisierte Steuerungen, die Fähigkeiten bereitstellen, die in Standardsteuerungen nicht zu finden sind, wie etwa adaptive Steuerung, künstliche Intelligenz und Fuzzy-Logik). In manchen Beispielen beinhaltet die Ebene eins 408 eine oder mehrere zusätzliche oder alternative Steuerungen, wie etwa jene, die eine Verhältnissteuerung, Vorwärtskopplungssteuerung, Kaskadensteuerung und Mehrvariablenprozesssteuerung durchführen. Im Beispiel von 4 können beliebige der Batch-Steuerungsschaltungsanordnung 409, der diskreten Steuerungsschaltungsanordnung 410, der Sequenzsteuerungsschaltungsanordnung 411, der kontinuierlichen Steuerungsschaltungsanordnung 412 und der hybriden Steuerungsschaltungsanordnung 413 durch eine oder mehrere programmierbare Logiksteuerungen (PLC(s)) implementiert werden. Wie hier verwendet, sind die Begriffe Steuerung und/oder Steuerungsschaltungsanordnung ein Typ von Prozessorschaltungsanordnung und können eine oder mehrere analoge Schaltungen, digitale Schaltungen, Logikschaltungen, programmierbare Mikroprozessoren, programmierbare Mikrocontroller, Grafikverarbeitungseinheiten (GPUs), Digitalsignalprozessoren (DSPs), anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PLDs) und/oder feldprogrammierbare Logikvorrichtungen (FPLDs) wie etwa feldprogrammierbares Gate-Array (FPGAs) beinhalten.
  • Im veranschaulichten Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 eine beispielhafte Ebene zwei 414, die der Steuerung der einen oder der mehreren Steuerungen der Ebene eins 408 entspricht. Im Beispiel von 4 beinhaltet die Ebene zwei 414 ein ICS, wie etwa ein Mensch-Maschinen-Schnittstellen (HMI)-Systems und/oder ein SCADA (Supervisory Control and Data Acquest)-System, um die eine oder die mehreren Steuerungen der Ebene eins 408 zu beaufsichtigen, zu überwachen und/oder zu steuern. Im Beispiel von 4 beinhaltet die Ebene zwei 414 eine beispielhafte erste Überwachungssteuerungsschaltungsanordnung 415 (z. B. ein HMI-System, ein SCADA-System usw.), eine beispielhafte Bedienerschnittstelle 416, eine beispielhafte technische Workstation 417 und eine beispielhafte zweite Überwachungssteuerungsschaltungsanordnung 418 (z. B. ein HMI-System, ein SCADA-System usw.). Im Beispiel von 4 werden die Bedienerschnittstelle 416 und die technische Workstation 417 durch einen oder mehrere Computer (z. B. Laptops, Desktop-Computer usw.) implementiert.
  • Im veranschaulichten Beispiel von 4 kommunizieren die erste Überwachungssteuerungsschaltungsanordnung 415, die Bedienerschnittstelle 416, die technische Workstation 417 und die zweite Überwachungssteuerungsschaltungsanordnung 418 über einen beispielhaften ersten Aggregationspunkt 419 mit der einen oder den mehreren Steuerungen und/oder Vorrichtungen der Ebene eins 408 und der Ebene null 402. Im Beispiel von 4 wird der erste Aggregationspunkt 419 durch einen Router implementiert. In manchen Beispielen wird der erste Aggregationspunkt 419 unter anderem durch ein Gateway, einen Router und ein Modem, einen Netzwerkswitch, einen Netzwerkknoten implementiert.
  • Im veranschaulichten Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 eine beispielhafte Ebene drei 420, die Herstellungsausführungssystemen entspricht, die einen Produktionsarbeitsablauf in der Herstellung verwalten (z. B. die Ebene null 402). In manchen Beispielen beinhaltet die Ebene drei 420 angepasste Systeme für gewisse Funktionen wie etwa Batch-Verwaltung, Aufzeichnung von Daten, Verwaltungsoperationen und Gesamtleistungsfähigkeit der Herstellungsanlage. Im Beispiel von 4 beinhaltet die Ebene drei 420 eine beispielhafte Produktionssteuerungsschaltungsanordnung 421, eine beispielhafte Optimierungssteuerungsschaltungsanordnung 422 (z. B. Durchführen einer optimalen Steuerung), eine beispielhafte Prozesshistoriendatenbank 423 (z. B. um Daten aufzuzeichnen, die mit einem oder mehreren physischen Prozessen assoziiert sind) und eine beispielhafte Domänensteuerungsschaltungsanordnung 424 (z. B. einen oder mehrere Server, die die Sicherheit der Netzwerkdomäne der Ebene null 402, der Ebene eins 408, der Ebene zwei 414 und der Ebene drei 420 steuern).
  • In manchen Beispielen aggregieren und/oder verarbeiten die Produktionssteuerungsschaltungsanordnung 421, die Optimierungssteuerungsschaltungsanordnung 422 (z. B. Durchführen einer optimalen Steuerung), die Prozesshistoriendatenbank 423 und/oder die Domänensteuerungsschaltungsanordnung 424 Daten einer niedrigeren Ebene (z. B. von der Ebene null 402, der Ebene eins 408 und/oder der Ebene zwei 414) und leitet die aggregierten und/oder verarbeiteten Daten an höhere Ebenen der IT/OT-Umgebung 400 weiter. Im Beispiel von 4 kommunizieren die Produktionssteuerungsschaltungsanordnung 421, die Optimierungssteuerungsschaltungsanordnung 422 (z. B. Durchführen einer optimalen Steuerung), die Prozesshistoriendatenbank 423 und die Domänensteuerungsschaltungsanordnung 424 mit der einen oder den mehreren Steuerungen, einer oder mehreren Schnittstellen, einer oder mehreren Workstations und/oder einer oder mehreren Vorrichtungen der Ebene zwei 414, der Ebene eins 408 und der Ebene null 402 über einen beispielhaften zweiten Aggregationspunkt 425. Im Beispiel von 4 ist der zweite Aggregationspunkt 425 ähnlich dem ersten Aggregationspunkt 419 implementiert.
  • Im veranschaulichten Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 eine beispielhafte Ebene vier 426, die von der Ebene drei 420, der Ebene zwei 414, der Ebene eins 408 und der Ebene null 402 durch eine beispielhafte demilitarisierte Zone (DMZ) 428 getrennt ist. Im Beispiel von 4 entspricht die DMZ 428 einem oder mehreren Sicherheitssystemen wie etwa einer oder mehreren Firewalls und/oder einem oder mehreren Proxys, die einen bidirektionalen Datenfluss zwischen der Ebene drei 420, der Ebene zwei 414, der Ebene eins 408, der Ebene null 402 und oberen Ebenen (z. B. der Ebene vier 426) der IT/OT-Umgebung 400 regeln (z. B. moderieren, kontrollieren usw.). Die beispielhafte DMZ 428 ermöglicht den Austausch von Daten zwischen den hochsicheren, stark verbundenen Netzwerken höherer Ebene (z. B. Geschäftsnetzwerken) der IT/OT-Umgebung 400 und den weniger sicheren, weniger verbundenen Netzwerken niedrigerer Ebene (z. B. ICS-Netzwerken) der IT/OT-Umgebung 400.
  • Im veranschaulichten Beispiel von 4 kommunizieren die niedrigeren Ebenen (z. B., die Ebene drei 420, die Ebene zwei 414, die Ebene eins 408 und die Ebene null 402) der IT/OT-Umgebung 400 über einen beispielhaften dritten Aggregationspunkt 430 mit der DMZ 428. Zusätzlich kommuniziert die DMZ 428 über einen beispielhaften vierten Aggregationspunkt 432 mit den oberen Ebenen (z. B. der Ebene vier 426) der IT/OT-Umgebung 400. Im Beispiel von 4 ist sowohl der dritte Aggregationspunkt 430 als auch der vierte Aggregationspunkt 432 ähnlich dem ersten Aggregationspunkt 419 als auch dem zweiten Aggregationspunkt 425 implementiert, mit der Ausnahme, dass sowohl der dritte Aggregationspunkt 430 als auch der vierte Aggregationspunkt 432 eine Firewall implementiert.
  • Im veranschaulichten Beispiel von 4 beinhaltet die DMZ 428 einen beispielhaften Historienserver 433 (z. B. implementiert durch einen oder mehrere Computer und/oder einen oder mehrere Speicher), eine beispielhafte Webdienstoperationssteuerungsschaltungsanordnung 434 (z. B. implementiert durch einen oder mehrere Computer und/oder einen oder mehrere Speicher), einen beispielhaften Anwendungsserver 435 (z. B. implementiert durch einen oder mehrere Computer und/oder einen oder mehrere Speicher), einen beispielhaften Endgeräteserver 436 (z. B. implementiert durch einen oder mehrere Computer und/oder einen oder mehrere Speicher), eine beispielhafte Patchverwaltungssteuerungsschaltungsanordnung 437 (z. B. implementiert durch einen oder mehrere Computer und/oder einen oder mehrere Speicher) und einen beispielhaften Antivirusserver 438 (z. B. implementiert durch einen oder mehrere Computer und/oder einen oder mehrere Speicher). Im Beispiel von 4 verwaltet der Historienserver 433 eingehende und/oder ausgehende Daten, Speichern der Daten, Komprimieren der Daten und/oder Abrufen der Daten. Im Beispiel von 4 steuert die Webdienstoperationssteuerungsschaltungsanordnung 434 eine internetbasierte direkte Anwendungs-zu-Anwendungs-Interaktion über ein erweiterbares Markup-Language (XML)-basiertes Informationsaustauschsystem.
  • Im veranschaulichten Beispiel für 4 hostet der Anwendungsserver 435 Anwendungen. Im Beispiel von 4 stellt der Endgeräteserver 436 Endgeräte (z. B. Computer, Drucker usw.) mit einem gemeinsamen Verbindungspunkt zu einem lokalen Netzwerk (LAN) oder Weitverkehrsnetzwerk (WAN) bereit. Im Beispiel von 4 verwaltet die Patchverwaltungssteuerungsschaltungsanordnung 437 das Abrufen, Testen und Installieren eines oder mehrerer Patche (z. B. Codeänderungen, Aktualisierungen usw.) auf existierende Anwendungen und Software (z. B. den Anwendungen, die durch den Anwendungsserver 435 gehostet werden). Im Beispiel von 4 verwaltet der Antivirusserver 438 Antivirussoftware.
  • Im veranschaulichten Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 die Ebene vier 426, die IT-Systemen wie etwa unter anderem E-Mail und Intranet entsprechen. Im Beispiel von 4 beinhaltet die Ebene vier 426 ein oder mehrere IT-Netzwerke einschließlich Unternehmensressourcenplanungs- (ERP)-Systemen, Datenbankservern, Anwendungsservern und Dateiservern, die Geschäftslogistiksysteme wie etwa Standortgeschäftsplanung und Logistikvernetzung ermöglichen.
  • Im veranschaulichten Beispiel von 4 beinhaltet die IT/OT-Umgebung 400 eine beispielhafte Ebene fünf 440, die einem oder mehreren Firmennetzwerken (z. B. Unternehmen) entspricht. Im Beispiel von 4 beinhaltet die Ebene fünf 440 ein oder mehrere Unternehmens-IT-Systeme, die Kommunikationen mit dem Internet abdecken. Im Beispiel von 4 kommunizieren eine oder mehrere Vorrichtungen in der Ebene fünf 440 mit einer oder mehreren Vorrichtungen in der Ebene vier 426 über einen beispielhaften fünften Aggregationspunkt 442. Im Beispiel von 4 ist der fünfte Aggregationspunkt 442 ähnlich dem ersten Aggregationspunkt 419 und dem zweiten Aggregationspunkt 425 implementiert.
  • Im veranschaulichten Beispiel von 4 entsprechen die Ebene null 402, die Ebene eins 408, die Ebene zwei 414 und die Ebene drei 420 dem OT-Teil der IT/OT-Umgebung 400. Innerhalb des OT-Teils bilden die Ebene null 402, die Ebene eins 408 und die Ebene zwei 414 einen beispielhaften Zellen-/Zonenbereich. Im Beispiel von 4 bilden die Ebene vier 426 und die Ebene fünf 440 den IT-Teil der IT/OT-Umgebung 400 aus.
  • Im veranschaulichten Beispiel von 4 integrieren der erste Aggregationspunkt 419, der zweite Aggregationspunkt 425, der dritte Aggregationspunkt 430, der vierte Aggregationspunkt 432, der fünfte Aggregationspunkt 442, die Batch-Steuerungsschaltungsanordnung 409, die diskrete Steuerungsschaltungsanordnung 410, die Sequenzsteuerungsschaltungsanordnung 411, die kontinuierliche Steuerungsschaltungsanordnung 412, die hybride Steuerungsschaltungsanordnung 413, die erste Überwachungssteuerungsschaltungsanordnung 415, die Bedienerschnittstelle 416, die technische Workstation 417 und die zweite Überwachungssteuerungsschaltungsanordnung 418, die Produktionssteuerungsschaltungsanordnung 421, die Optimierungssteuerungsschaltungsanordnung 422, die Prozesshistoriendatenbank 423, die Domänensteuerungsschaltungsanordnung 424, der Historienserver 433, die Webdienstoperationssteuerungsschaltungsanordnung 434, der Anwendungsserver 435, der Endgeräteserver 436, die Patchverwaltungssteuerungsschaltungsanordnung 437 und/oder der Antivirusserver 438 Edge-Berechnung, Vorrichtungen, IT-fähige Software und/oder eine oder mehrere Anwendungen, die sich auf Produktivität, Zuverlässigkeit und/oder Sicherheit beziehen.
  • Da die IT/OT-Umgebung 400 ein ICS implementiert, das einen Herstellungs- und/oder anderen Produktionsprozess steuert, können manche der Prozesse zeitempfindlich sein. Dementsprechend hat das Institute of Electrical and Electronics Engineers (IEEE) Standards entwickelt, um solche zeitempfindlichen Prozesse zu handhaben. Zum Beispiel stellen die aufkommenden IEEE-Standards für deterministische Vernetzung, die kollektiv als Time-Sensitive-Networking (TSN) bezeichnet werden, einen äußerst präzisen Datentransfer über ein Netzwerk bereit. Infolgedessen integrieren eingebettete Designs (z. B. eine beliebige der Vorrichtungen der IT/OT-Umgebung 400) in Industrie- und/oder Automobilumgebungen (z. B. der IT/OT-Umgebung 400) zunehmend TSN-Steuerungen. TSN-Steuerungen können durch eine Netzwerkschnittstellen-Schaltungsanordnung (NIC) basierend auf den Fähigkeiten der NIC implementiert werden. Wie hier verwendet, bezieht sich NIC auf eine Netzwerkschnittstellen-Schaltungsanordnung. Eine NIC kann auf einer Karte implementiert sein oder nicht. Mit zunehmender Konvergenz von IT- und OT-Umgebungen zwingen die Arbeitslastkonsolidierung und der Bedarf an nahtloser Kommunikation über viele verbundene Vorrichtungen zu einer höheren Bandbreite, einer kürzeren Ende-zu-Ende-Latenz und harten Echtzeitanforderungen für eingebettete Designs.
  • Da Linkgeschwindigkeiten aufgrund hoher Bandbreitenanforderungen und Die-Disaggregation zunehmend höher werden, wird außerdem das Erfüllen von Paketübertragungslatenzen mit der Leitungsrate extrem schwierig. Wie hierin verwendet, bezieht sich Linkgeschwindigkeit auf eine theoretisch maximale Geschwindigkeit, gemessen in Bits pro Sekunde, mit der eine erste Vorrichtung mit einer zweiten Vorrichtung kommunizieren kann, mit der die erste Vorrichtung verknüpft ist. Wie hierin verwendet, bezieht sich Leitungsrate auf eine tatsächliche Geschwindigkeit, mit der ein oder mehrere Bits auf einen Draht gesendet werden. Bei manchen Beispielen wird die Leitungsrate als Brutto-Bitrate der physikalischen Schicht bezeichnet. Wie hierin verwendet, bezieht sich Die-Disaggregation auf die Platzierung eines oder mehrerer Dies (z. B., eines Die, der NIC implementiert) innerhalb eines eingebetteten Designs (z. B. eines System-on-Chip (SoC)) immer weiter von einem oder mehreren anderen Dies (z. B. Computing, eines Prozessors, eines Prozessorkerns usw.) entfernt im Vergleich zu vorherigen Designs des eingebetteten Designs (z. B. SoC).
  • Als Beispiel ist es für die NIC schwieriger, die Leitungsrate zu erfüllen, wenn ein 64-Byte-Paket (z. B. 64 B) mit einer Linkgeschwindigkeit von 10 Gigabit pro Sekunde (z. B. 10 Gbps) übertragen wird, als für die NIC, die Leitungsrate zu erfüllen, wenn ein 64-B-Paket mit einer Linkgeschwindigkeit von 1 Gbps übertragen wird. Es ist schwieriger für eine Vorrichtung (z. B. NIC) die Leitungsrate bei höheren Linkgeschwindigkeiten zu erfüllen, weil bei höheren Linkgeschwindigkeiten die Verzögerung, die mit dem Abrufen von Daten aus dem Speicher assoziiert ist, viel höher als die Latenz ist, die mit der Vorrichtung assoziiert ist, die ein Paket überträgt. Diese Schwierigkeit nimmt mit zunehmender Linkgeschwindigkeit zu. Außerdem nehmen die Latenzen, die mit dem Datenabruf der Vorrichtung (z. B. NIC) aus dem Speicher (z. B. DDR (Double Data Rate)-Speicher) assoziiert sind, aufgrund eines physisch größeren Die und/oder aufgrund einer Die-Disaggregation zu.
  • Zum Beispiel beträgt die Zeit, die die NIC benötigt, um ein 64 B-Paket mit einer Linkgeschwindigkeit von 1 Gbps zu übertragen, 576 Nanosekunden (ns), während die Zeit, die die NIC benötigt, um ein 64-B-Paket mit einer Linkgeschwindigkeit von 10 Gbps zu übertragen, 57,6 ns beträgt. In einem solchen Beispiel sind 57,6 ns relativ sehr wenig im Vergleich zu der Latenz von 1 Mikrosekunde (µs), die mit der NIC assoziiert ist, die Daten aus dem Speicher abruft. Ein gemeinsamer Ansatz zum Mindern der Latenzen des Datenabrufens besteht darin, Daten vorab abzurufen und einen lokalen Cache innerhalb einer Vorrichtung (z. B. NIC) selbst einzusetzen. Da das Übertragen eines Pakets im Allgemeinen zwei Vorabrufoperationen erfordert (z. B. eine erste Abrufoperation für einen Deskriptor des Pakets und eine zweite Abrufoperation für eine Nutzlast des Pakets), beinhalten Vorrichtungen (z. B. NICs) im Allgemeinen zwei Caches, die mit jeweiligen Vorabrufoperationen assoziiert sind (z. B., einen ersten Cache für Deskriptoren von Paketen und einen zweiten Cache für Daten der Pakete). Somit ruft eine Vorrichtung (z. B. NIC) sowohl Deskriptoren als auch Daten von Paketen vorab ab, um die Leitungsrate zu erfüllen.
  • Ein Problem, das mit dem Vorabrufen assoziiert ist, besteht jedoch darin, dass sich das Vorabrufen auf den Die-Bereich der Vorrichtung auswirkt, die das Vorabrufen durchführt (z. B. die NIC). Für TSN-fähige NICs kann die Auswirkung auf die Die-Fläche aufgrund der mehreren Warteschlangen in den zwei Caches zur Übertragung und der mehreren Warteschlangen in den zwei Caches zum Empfang sehr groß sein. Zum Beispiel erfordert eine TSN-NIC mit 8 Sendewarteschlangen und 8 Empfangswarteschlangen 8-mal den Cache, den die NIC mit dem herkömmlichen einzelnen Sendewarteschlangen-Cache und Signalempfangswarteschlangen-Cache (z. B. Ethernet-Steuerungs-Cache) aufweist. Da die TSN-Standards erfordern, dass jede Warteschlange in einer TSN-NIC das kleinste durch die TSN-Standards definierte Paket (z. B. 64 B) mit der Leitungsrate und das kleinste Paket einer beliebigen durch die TSN-Standards definierten Verkehrsklasse unterstützt, wird jeder Warteschlange einer TSN-NIC ein dedizierter Cache (z. B. erster Cache für Deskriptoren von Paketen und zweiter Cache für Daten von Paketen) zugewiesen. Infolgedessen erfordern TSN-NICs eine erhöhte Cache-Größe. Diese Art von Architektur ist für TSN-NICs mit hoher Linkgeschwindigkeit nicht skalierbar, da sie zu teuer zu implementieren ist. Das Implementieren einer solchen Architektur für TSN-NICs mit hoher Linkgeschwindigkeit würde zum Beispiel die Energie, die verbraucht wird, um Daten in den und aus dem Cache zu bewegen, die physische Größe (z. B. den Bereich) des Caches auf einem Die und die Latenz, die mit dem Bewegen von Daten in den und aus dem Cache assoziiert ist, erhöhen.
  • Zusätzlich wird in einigen Beispielen die Cache-Größe, die von den TSN-Standards benötigt wird, untergenutzt. Beispielsweise definiert der „IEEE Standard for Local and Metropolitan Area Network--Bridges and Bridged Networks“ in IEEE Std 802.1 Q-2018 (Revision ofIEEE Std 802.1 Q-2014), Vol., Nr., S. 1-1993, 6. Juli 2018 (im Folgenden als „IEEE 802.1 Q-Standard“ bezeichnet) acht Verkehrsklassen (z. B. TC0-TC7) für alle Datenströme. Jede Verkehrsklasse unterliegt jedoch unterschiedlichen Parametern (z. B. Dienstgüte (QoS)). In industriellen Anwendungen wird harter Echtzeitverkehr mit hoher Priorität als TC7-TC5 klassifiziert, und die Daten von Paketen dieser Klassen sind typischerweise klein (z. B. im Vergleich zu TC4-TC0) und sind kleiner als 256 B. Ähnlich wird Best-Effort-Nichtechtzeitverkehr (z. B. Best-Effort-Datenstrom bzw. -ströme) als TC4-TC0 klassifiziert, und die Daten von Paketen dieser Klassen liegen üblicherweise zwischen 256 B und 1518 B. Wie hierin verwendet, bezieht sich Echtzeitverkehr und/oder Echtzeitdatenstrom bzw. -ströme auf Netzwerkverkehr, der mit einer Rechenanwendung assoziiert ist, wobei der Erfolg der Rechenanwendung von der logischen Korrektheit des Ergebnisses der Rechenanwendung sowie davon abhängt, ob das Ergebnis der Rechenanwendung mit einer spezifizierten Zeitbedingung versehen wurde, die als eine Frist bekannt ist. Wie hierin verwendet, bezieht sich harter Echtzeitverkehr und/oder harter Echtzeitdatenstrom bzw. -ströme auf Echtzeitverkehr, der mit einer Rechenanwendung assoziiert ist, wobei das Versagen, eine Frist zu erfüllen, ein Versagen der Rechenanwendung darstellt. Wie hierin verwendet, bezieht sich Best-Effort-Verkehr und/oder Best-Effort-Datenstrom bzw. -ströme auf Netzwerkverkehr, der mit einer Rechenanwendung assoziiert ist, die kein Ergebnis mit einer spezifizierten Zeitauflage erfordert.
  • Hierin offenbarte Beispiele nutzen die Verkehrsklassen, die in dem IEEE 802.1 Q-Standard dargelegt sind, aus, um die Gestaltung von Cache in einer TSN-fähigen Vorrichtung (z. B. einer TSN-NIC) zu verbessern (z. B. zu optimieren). Dementsprechend reduzieren hierin offenbarte beispielhafte Verfahren, Einrichtungen und/oder Herstellungsartikel die gesamte Cachegröße in TSN-fähigen Vorrichtungen (z. B. TSN-NICs). Da kleinere Pakete schneller übertragen werden können, als eine Vorrichtung Daten für eine anschließende Übertragung vorabrufen kann, ist die Unterstützung der Leitungsrate bei der kleinsten Paketgröße einer Verkehrsklasse schwierig. Theoretisch kann die Summe der Cache-Nutzung aller Warteschlangen die Leitungsrate jedoch nicht überschreiten. Die hier offenbarte beispielhafte Architektur basiert auf diesen beiden Prinzipien.
  • Hierin offenbarte beispielhafte Verfahren, Einrichtungen und Herstellungsartikel decodieren Verkehrsklassen des Netzwerks (z. B. des Datenstroms), berechnen Größen der Cache-Region und kreditieren den Deskriptor-Cache und den Daten-Cache für jede Warteschlange, wodurch die gesamte Cache-Nutzung erhöht und der gesamte Cache-Flächenverbrauch auf dem Die reduziert wird. Für den Deskriptor-Cache weisen hierin offenbarte Beispiele Datenströmen der Verkehrsklassen TC7-TC5 mehr Deskriptor-Cache zu, da diese Datenströme Pakete mit kleineren Nutzlasten (z. B. im Vergleich zu TC4-TC0) beinhalten und daher mehr Abrufe für Deskriptoren erfordern. Umgekehrt weisen hierin offenbarte Beispiele für Deskriptor-Cache Datenströmen der Verkehrsklassen TC4-TC0 weniger Deskriptor-Cache zu, da diese Datenströme Pakete mit größeren Nutzlasten (z. B. im Vergleich zu TC7-TC5) beinhalten und daher weniger Abrufe für Deskriptoren erfordern.
  • Wie hierin verwendet, sind „zuweisen“ und Variationen davon (z. B. Zuweisung, Neuzuweisung usw.) so definiert, dass sie anderweitiges Einrichten einer Beziehung zwischen einem oder mehreren Teilen (z. B. diskret, kontinuierlich und/oder anderweitig) eines ersten Satzes (z. B. eines Einheitssatzes oder anderweitig) und einem oder mehreren anderen Sätzen oder Teilsätzen bedeuten. Zuweisen kann verwendet werden, um Zuweisen, Teilen, Zuteilen oder dergleichen zu bedeuten. Somit weisen in einigen Beispielen offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel Teile (z. B. in Form von Bits, Bytes (B), Kilobytes (KB) usw.) eines Caches jeweiligen Warteschlangen dieses Caches zu. In manchen solchen Beispielen weisen offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel einen ersten Teil (z. B. 256 B) von Deskriptor-Cache einer ersten Warteschlange, der Verkehrsklasse TC7 zugewiesen ist, zu und weisen einen zweiten Teil (z. B. 64 B) von Deskriptor-Cache einer zweiten Warteschlange zu, der Verkehrsklasse TC0 zugewiesen ist. In zusätzlichen oder alternativen Beispielen weisen offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel Prozentsätze (z. B. 4 %, 5 %, 26 % usw.) eines Caches jeweiligen Warteschlangen dieses Caches zu. In anderen Beispielen weisen offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel einen oder mehrere Teile eines Caches einer oder mehreren Gruppen von Warteschlangen zu und weisen Subteile des zugewiesenen Caches einigen der Gruppen von Warteschlangen zu. Offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel weisen zum Beispiel Warteschlangen, denen die Verkehrsklassen TC7-TC5 zugeordnet sind, einen ersten Teil (z. B. 75 %) eines (z. B. 2 KB) Deskriptor-Caches zu und weisen Warteschlangen, denen Verkehrsklassen TC4-TC0 zugeordnet sind, einen zweiten Teil (z. B. 25 %) des (z. B. 2 KB) Deskriptor-Caches zu. In einem solchen Beispiel weisen von dem ersten Teil (z. B. 1,5 KB) des Deskriptor-Caches, der den Warteschlangen zugewiesen ist, denen die Verkehrsklassen TC7-TC5 zugeordnet sind, offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel einen ersten Subteil (z. B. 500 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC7, einen zweiten Subteil (z. B. 500 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC6 und einen dritten Subteil (z. B. 500 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC5 zu. Zusätzlich weisen in einem solchen Beispiel von dem zweiten Teil (z. B. 0,5 KB) des Deskriptor-Caches, der den Warteschlangen zugewiesen ist, die Verkehrsklassen TC4-TC0 zugeordnet sind, offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel einen ersten Subteil (z. B. 100 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC4, einen zweiten Subteil (z. B. 100 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC3, einen dritten Subteil (z. B. 100 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC2, einen vierten Subteil (z. B. 100 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC1 und einen fünften Subteil (z. B. 100 B) der Warteschlange mit der zugeordneten Verkehrsklasse TC0 zu. Wie klar sein sollte, können offenbarte Verfahren, Einrichtungen und/oder Herstellungsartikel Cache als Anzahl von Bits, die einer Warteschlange und/oder Gruppe von Warteschlangen zugewiesen sind, als Prozentsatz des verfügbaren Caches, der einer Warteschlange und/oder Gruppe von Warteschlangen zugewiesen ist, und/oder eine beliebige Kombination davon zuweisen.
  • Zusätzlich weisen hierin offenbarte Beispiele für Datencache Datenströmen der Verkehrsklassen TC7-TC5 weniger Datencache zu, da diese Datenströme Pakete mit kleineren Nutzlasten (z. B. im Vergleich zu TC4-TC0) beinhalten. Da Datenströme der Verkehrsklassen TC7-TC5 zeitsensitive Beispiele (z. B. harter Echtzeitverkehr) sind, übertragen sie zusätzlich die Nutzlasten, ohne sie im Cutthrough-Modus zu speichern. Wie hierin verwendet, bezieht sich der Durchschnittmodus auf eine Paketvermittlung, bei der eine Vorrichtung beginnt, ein Paket weiterzuleiten, bevor das gesamte Paket empfangen wurde. Somit ist weniger Cache für harten Echtzeitverkehr (z. B., Datenströme) ausreichend. Für Datencache weisen hierin offenbarte Beispiele Datenströmen der Verkehrsklassen TC4-TC0 mehr Datencache zu, da diese Datenströme Pakete mit größeren Nutzlasten (z. B. im Vergleich zu TC7-TC5) beinhalten, die eine niedrigere Priorität aufweisen (z. B. im Vergleich zu TC7-TC5).
  • In bestehenden Technologien wird die Größe des Deskriptor-Caches basierend auf einer minimalen Paketgröße berechnet, die durch den TSN-Standard unterstützt wird, und wird unabhängig von der Verkehrsklasse, die dieser Warteschlange zugewiesen ist, statisch für jede Warteschlange zugewiesen. Existierende TSN-NICs unterstützen zum Beispiel 16 Deskriptoren für jede Sendewarteschlange und jede Empfangswarteschlange des Deskriptor-Caches. Da erweiterte Deskriptoren 8 Doppelwörter (32 B) erfordern, benötigen bestehende TSN-NICs in einem solchen Beispiel 4 Kilobytes (KB) (z. B. 32x16x8) für die Cache-Größe für die Sendewarteschlangen. Gleichermaßen erfordern existierende TSN-NICs 4 KB (z. B. 32x16x8) für die Cache-Größe für die Empfangswarteschlangen (z. B. 8 KB insgesamt). Bei Verkehrsklassen, die größere Nutzlasten (z. B. im Vergleich zu anderen Verkehrsklassen) beinhalten, bleibt viel Deskriptor-Cache ungenutzt. Bei solchen Verkehrsklassen bleibt der Deskriptor-Cache ungenutzt, weil zum Aufrechterhalten einer Leitungsrate bei Paketen mit großen Nutzlasten nicht viel mehr als ein Paket gespeichert werden kann. Somit wird der Deskriptor-Cache untergenutzt.
  • Manche existierenden TSN-NICs sind für eine Linkgeschwindigkeit von 2,5 Gbps ausgelegt. Diese existierenden TSN-NIC-Designs sind nicht skalierbar, insbesondere da sich die Soll-Verbindungsgeschwindigkeiten 10 Gbps annähern. Existierende TSN-NIC-Designs würden zum Beispiel einen größeren Cache erfordern, um die Leitungsrate für kleinere Pakete aufrechtzuerhalten. In einem solchen Beispiel würden existierende TSN-NICs eine große Die-Fläche erfordern und die Kosten von Produkten einschließlich existierender TSN-NIC-Designs erhöhen. Zusätzlich dazu ist in einem solchen Beispiel beim Datencache jede Warteschlange bestehender TSN-NICs dazu ausgelegt, zwei maximale Nutzlasten von jeweils 1518 B zu unterstützen. Diese Zuordnung von Cache ist wahrscheinlich aufgrund der minimalen Nutzlast von jeweils 64 B zu viel. Existierende TSN-NIC-Designs beinhalten 4 KB für den Datencache für jede Sendewarteschlange und jede Empfangswarteschlange. Daher benötigt eine existierende TSN-NIC mit 8 Sendewarteschlangen und 8 Empfangswarteschlangen 64 KB für den Datencache.
  • Ein anderer Ansatz besteht darin, statische individuelle Cachegrenzen für jede Warteschlange zu entfernen. Zum Beispiel kann der gesamte Cache für eine beliebige Warteschlange verwendbar sein. Obwohl dieser Ansatz oberflächlich betrachtet die Probleme zu lösen scheint, die statisch begrenzte Warteschlange befallen, ist dieser Ansatz problematisch, falls irgendeine Warteschlange und/oder Kombination von Warteschlangen den Cache übernutzen kann, was zu einem Aushungern des Caches für andere Warteschlangen (z. B. Echtzeitwarteschlangen) führt. Somit ist dieser Ansatz für harte Echtzeitanwendungen nicht geeignet, da das Aushungern eines Vorabrufs von Deskriptoren oder Nutzdaten für eine Warteschlange, die hartem Echtzeitverkehr zugewiesen ist, eine rechtzeitige Übertragung eines Pakets beeinflussen wird und somit die Gesamtsendepaketlatenz erhöht.
  • Die oben erwähnten zwei Ansätze zur Cachezuweisung (z. B. statische Cachegrenzen und keine Cachegrenzen) weisen ernsthafte Einschränkungen auf. Der erste Ansatz von Caches fester Größe mit statischer Zuweisung erfordert eine unpraktikable Flächenmenge auf dem Chip, was zu negativen Auswirkungen führt, insbesondere für NICs, die 10-Gbps-Linkgeschwindigkeiten unterstützen. Der zweite Ansatz von Cache ohne Warteschlangengrenzen führt zu einem Aushungern des Caches für harte Echtzeitwarteschlangen, da ein oder mehrere Datenströme den Cache übernutzen können, indem zu viele Deskriptoren vorab abgerufen werden, was zu einem Aushungern des Caches für andere Warteschlangen (z. B. jenen, die hartem Echtzeitverkehr zugewiesen sind) führt. Hierin offenbarte Beispiele lösen die Probleme, die mit mindestens diesen zwei Ansätzen assoziiert sind, durch dynamisches Anpassen von Cachegrenzen pro Warteschlange basierend auf der Verkehrsklasse, die der Warteschlange zugewiesen ist. Da hierin offenbarte Beispiele Cachegrenzen pro Warteschlange basierend auf der Verkehrsklasse anpassen, die der Warteschlange zugewiesen ist, reduzieren hierin offenbarte Beispiele die gesamte Cachegröße, um eine TSN-NIC zu implementieren.
  • Beispielhafte Verfahren, Einrichtungen und Herstellungsartikel, die hierin offenbart sind, nutzen den verfügbaren Cache effizient, indem der Cache, der für einen gegebenen Datenstrom benötigt wird, basierend auf der Verkehrsklasse der Datenströme, die der einen oder den mehreren Warteschlangen des Caches zugeordnet werden, dynamisch zugewiesen wird. Im Gegensatz zu existierenden Ansätzen, die den Warteschlangen eine feste Größe zuweisen, partitionieren hierin offenbarte Beispiele den Cache über alle Warteschlangen basierend auf der Verkehrsklasse, die einer Warteschlange zugewiesen ist. Daher wird der gesamte Cache optimaler genutzt und beseitigt Cache-Redundanz. Außerdem reduzieren hier offenbarte Beispiele die Die-Fläche, um NIC zu implementieren, die Leistung und Die-Kosten für Chiphersteller und für Kunden.
  • 5 ist ein Blockdiagramm einer beispielhaften Netzwerkschnittstellen-Schaltungsanordnung (NIC) 500, die in einer oder mehreren Edge-Vorrichtungen- und/oder einer oder mehreren IT/OT-Vorrichtungen von 1, 2, 3 und/oder 4 implementiert sein kann. Im Beispiel von 5 weist die NIC 500 eine beispielhafte On-Chip-System-Fabric (OSF)-Brücke 502, einen beispielhaften Router 504 und eine beispielhafte Direktspeicherzugriff (DMA)-Steuerschaltungsanordnung 506 auf. Im Beispiel von 5 wird die OSF-Brücke 502 durch einen oder mehrere Hardwareschalter implementiert, die in einen oder mehrere logische Schalter virtualisiert wurden. Im Beispiel von 5 dient die OSF-Brücke 502 als eine Schnittstelle zwischen einer beispielhaften primären skalierbaren Fabric (PSF), die mit anderen Teilen eines SoC verbunden ist, und dem Router 504. Die beispielhafte OSF-Brücke 502 überträgt ein oder mehrere Abschlusssignale an den Router 504 und/oder empfängt ein oder mehrere Anforderungssignale von diesem. In dem Beispiel von 5 entsprechen Anforderungssignale Anforderungen für die DMA-Steuerschaltungsanordnung 506, Daten vorab abzurufen, und Abschlusssignale entsprechen einer Rückgabe der vorab abgerufenen Daten an die DMA-Steuerschaltungsanordnung 506. Beispielhafte Abschluss- und Anforderungssignale werden basierend auf einer oder mehreren virtuellen Klassen (VCs) und einer oder mehreren entsprechenden Verkehrsklassen (TCs), die Datenströmen zugewiesen sind, geroutet. Zum Beispiel definiert der IEEE 802.1 Q-Standard acht Verkehrsklassen, zu denen der Datenstrom zugeordnet werden muss. In hierin offenbarten Beispielen werden zeitsensitive harte Echtzeitdatenströme TC7-TC5 zugeordnet und Best-Effort-Datenströme werden TC4-TC0 zugeordnet.
  • Bei dem veranschaulichten Beispiel für 5 dient der beispielhafte Router 504 als eine Zwischenverbindung zwischen der OSF-Brücke 502 und der DMA-Steuerschaltungsanordnung 506. Im Beispiel von 5 wird der Router 504 durch eine oder mehrere Logikschaltungen implementiert. In zusätzlichen oder alternativen Beispielen wird der Router 504 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Mikroprozessoren, einen oder mehrere programmierbare Mikrocontroller, eine oder mehrere Grafikverarbeitungseinheiten (GPUs), einen oder mehrere Digitalsignalprozessoren (DSPs), eine oder mehrere anwendungsspezifische integrierte Schaltungen) (ASICs), eine oder mehrere programmierbare Logikvorrichtungen (PLDs) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtung(en) (FPLDs) wie etwa feldprogrammierbare Gate-Arrays (FPGAs) implementiert. Im Beispiel von 5 leitet der Router 504 Abschluss- und Anforderungssignale zu und/oder von der DMA-Steuerschaltungsanordnung 506 weiter.
  • Im veranschaulichten Beispiel für 5 wird die DMA-Steuerschaltungsanordnung 506 durch einen oder mehrere Logikschaltungen implementiert. In zusätzlichen oder alternativen Beispielen wird die DMA-Steuerschaltungsanordnung 506 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, GPUs, DSPs, ASICs, PLDs und/oder FPLDs wie etwa FPGAs implementiert. Im Beispiel von 5 ruft die DMA-Steuerschaltungsanordnung 506 Daten ab, die in einen beispielhaften Deskriptor-Cache 508 (z. B., L1, L2, L3 usw.) und/oder einen beispielhaften Daten-Cache 510 (z. B., L1, L2, L3 usw.) geladen werden sollen. Im Beispiel von 5 wird der Deskriptor-Cache 508 durch 4 KB Cache implementiert. Im Beispiel von 5 wird der Daten-Cache 510 durch 16 KB Cache implementiert.
  • In manchen Beispielen beinhaltet die NIC 500 ein oder mehrere Mittel zum Speichern. Zum Beispiel können das eine oder die mehreren Mittel zum Speichern durch den Deskriptor-Cache 508 und/oder den Daten-Cache 510 implementiert werden. Zum Beispiel kann der Deskriptor-Cache 508 erste Mittel zum Speichern implementieren und der Daten-Cache 510 kann zweite Mittel zum Speichern implementieren. In manchen Beispielen können der Deskriptor-Cache 508 und der Daten-Cache 510 Mittel zum Speichern implementieren. In zusätzlichen oder alternativen Beispielen implementiert der Deskriptor-Cache 508 Mittel zum Speichern eines oder mehrerer Deskriptoren und der Daten-Cache 510 implementiert Mittel zum Speichern von Daten. In manchen Beispielen können der Deskriptor-Cache 508 und/oder der Daten-Cache 510 durch ein oder mehrere Register, einen Hauptspeicher, einen flüchtigen Speicher (z. B. einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), einen dynamischen Direktzugriffsspeicher (DRAM), einen dynamischen RAMBUS® - Direktzugriffsspeicher (RDRAM®) und/oder einen beliebigen anderen Typ von RAM-Vorrichtung) und/oder einen nichtflüchtigen Speicher (z. B. Flash-Speicher und/oder beliebiger anderer gewünschter Typ von Speichervorrichtung) implementiert werden.
  • In anderen Beispielen wird die Cache-Steuerschaltungsanordnung 514 durch eine andere Hardwarelogikschaltungsanordnung, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige andere Kombination von Hardware, Software und/oder Firmware implementiert. Zum Beispiel kann die Cache-Steuerschaltungsanordnung 514 durch mindestens eine oder mehrere Hardwareschaltungen (z. B. eine Prozessorschaltungsanordnung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC: Application Specific Integrated Circuit), einen Komparator, einen Operationsverstärker (Operationsverstärker), eine Logikschaltung usw.) implementiert werden, die zum Durchführen der entsprechenden Operation strukturiert sind, ohne Software oder Firmware auszuführen, aber andere Strukturen sind ebenfalls geeignet.
  • Im veranschaulichten Beispiel von 5 passt die DMA-Steuerschaltungsanordnung 506 zusätzlich die Zuweisung des Deskriptor-Caches 508 und/oder des Daten-Caches 510 basierend auf einem oder mehreren Anforderungssignalen und/oder einem oder mehreren Cache-Grenzsignalen an, die von einer beispielhaften Medienzugriffssteuerungs (MAC)-Schaltungsanordnung 512 empfangen werden. Im Beispiel von 5 wird die MAC-Steuerschaltungsanordnung 512 durch einen oder mehrere Logikschaltkreise implementiert. In zusätzlichen oder alternativen Beispielen wird die DMA-Steuerschaltungsanordnung 506 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, GPUs, DSPs, ASICs, PLDs und/oder FPLDs wie etwa FPGAs implementiert.
  • Im veranschaulichten Beispiel von 5 weist die MAC-Steuerschaltungsanordnung 512 eine beispielhafte Cache-Steuerschaltungsanordnung 514 und eine beispielhafte Gate-Steuerlogik (GCL)-Schaltungsanordnung 516 auf. Im Beispiel von 5 erzeugt die Cache-Steuerschaltungsanordnung 514 das eine oder die mehreren Anforderungssignale und/oder das eine oder die mehreren Cache-Grenzsignale. Außerdem verarbeitet die Cache-Steuerschaltungsanordnung 514 einen oder mehrere Datenströme, die durch die DMA-Steuerschaltungsanordnung 506 abgerufen werden. Bei dem Beispiel von 5 wird die Cache-Steuerschaltungsanordnung 514 durch eine oder mehrere elektrische Spezialschaltungen implementiert, die zum Durchführen einer oder mehrerer spezifischer Operationen strukturiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z. B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert ist) beinhalten. In manchen Beispielen wird die Cache-Steuerschaltungsanordnung 514 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, GPUs, DSPs, ASICs, PLDs und/oder FPLDs wie etwa FPGAs implementiert.
  • Im veranschaulichten Beispiel von 5 veranschaulicht die beispielhafte NIC 500 die Implementierung der Cache-Steuerschaltungsanordnung 514 für einen Sender. Ein Empfänger, der hier offenbarte Beispiele implementiert, wird eine NIC mit einem entgegengesetzten Ansatz zu jenem der NIC 500 aufweisen. Zum Beispiel beinhaltet ein Empfänger, der hierin offenbarte Beispiele implementiert, eine Cache-Steuerschaltungsanordnung, einen variablen Daten-Cache und einen variablen Deskriptor-Cache. Bei einem solchen beispielhaften Empfänger variiert die Cache-Steuerschaltungsanordnung dynamisch die Zuweisung des Daten-Caches zu jeder Warteschlange basierend auf der Verkehrsklasse, die der Warteschlange zugewiesen ist. Außerdem variiert die Cache-Steuerschaltungsanordnung bei einem solchen Empfänger dynamisch die Zuweisung des Deskriptor-Caches zu jeder Warteschlange basierend auf der Verkehrsklasse, die der Warteschlange zugewiesen ist. Dementsprechend beträgt die gesamte Größe des Deskriptor-Caches für Übertragung und Empfang, wenn hierin offenbarte Beispiele implementiert werden, 8 KB (z. B. 4 KB für den Sender und 4 KB für den Empfänger). Außerdem beträgt die Gesamtgröße des Daten-Caches für Übertragung und Empfang, wenn hierin offenbarte Beispiele implementiert werden, 32 KB (z. B. 16 KB für den Sender und 16 KB für den Empfänger).
  • Im veranschaulichten Beispiel für 5 nutzt die Cache-Steuerschaltungsanordnung 514 die Verkehrsklassenzuordnung von Datenpaketen gemäß dem IEEE 802.1 Q-Standard. Zum Beispiel ist in industriellen Anwendungen harte die Echtzeitpaketdatennutzlast typischerweise kleiner als 256 B und sind die Nichtechtzeitdaten häufig größer als 256 B. Im Beispiel von 5 berechnet die Cache-Steuerschaltungsanordnung 514 Cache-Grenzen und weist Warteschlangen in dem Deskriptor-Cache 508 und/oder dem Daten-Cache 510 basierend auf der Verkehrsklasse von Datenströmen, die jeder Warteschlange zugeordnet sind, Cache zu. In hierin offenbarten Beispielen weist die Cache-Steuerschaltungsanordnung 514 Warteschlangen pro Anwendung Cache zu. Bevor zum Beispiel eine Anwendung ausgeführt wird, weist die Cache-Steuerschaltungsanordnung 514 den Cache für diese Anwendung zu. Beispielhafte Anwendungen beinhalten Steuern eines Motors (z. B. einschließlich mehr Deskriptoren, aber kleinere Datenpakete), Überwachen von Video (z. B. Videodaten werden TC0 zugeordnet, während die Steuerung TC7 zugeordnet wird) und IT/OT-Anwendungen (z. B. Datenpakete werden TC0 zugeordnet, während Steuerpakete TC7 zugeordnet werden). In Abhängigkeit von der Art der Verkehrsklasse, die mit jedem Datenstrom assoziiert ist, weist die Cache-Steuerschaltungsanordnung 514 der entsprechenden Warteschlange dynamisch Cache zur optimalen Nutzung des Caches zu.
  • Im veranschaulichten Beispiel für 5 sendet (z. B. überträgt) die Cache-Steuerschaltungsanordnung 514 Informationen, die Zuweisung jeder Sendewarteschlange und Empfangswarteschlange des Deskriptor-Caches 508 angeben, über das eine oder die mehreren Cache-Grenzsignale an die DMA-Steuerschaltungsanordnung 506. Im Beispiel von 5 überträgt die Cache-Steuerschaltungsanordnung 514 das eine oder die mehreren Cache-Grenzsignale als sechzehn Zwölfbit-Signale. Im Beispiel von 5 startet die DMA-Steuerschaltungsanordnung 506, wenn der Abschlusszeiger für einen gegebenen Übertragungspufferring (TRB) durch die Anwendung fortbewegt wird, das Vorabrufen der Deskriptoren, solange Platz in dem Deskriptor-Cache 508 vorhanden ist, der gemäß dem einen oder den mehreren Cache-Grenzsignalen zugewiesen ist, die durch die Cache-Steuerschaltungsanordnung 514 gesendet werden. Auf diese Weise über- oder unternutzt kein einzelner Datenstrom den Deskriptor-Cache 508. Die Cache-Steuerschaltungsanordnung 514 überwacht kontinuierlich die Datenströme und entsprechende Verkehrsklassen. In manchen Beispielen weist die Cache-Steuerschaltungsanordnung 514 den Warteschlangen des Deskriptor-Caches 508 und des Daten-Caches 510 Kredite zu. Beispielsweise weist die Cache-Steuerschaltungsanordnung 514 den Warteschlangen mit kleineren Paketen mehr Kredite zu und weist den Warteschlangen mit größeren Paketen weniger Kredite zu. In solchen Beispielen überwacht und verwaltet die Cache-Steuerschaltungsanordnung 514 die Kredite. Beim kreditbasierten Ansatz bemisst die Cache-Steuerschaltungsanordnung 514 den Cache basierend auf den jeder Verkehrsklasse zugewiesenen Krediten neu (z. B. weist neu zu). Zum Beispiel weist die Cache-Steuerschaltungsanordnung 514 für Verkehrsklassen, die mehr genutzt werden, mehr Kredite zu, wohingegen die Cache-Steuerschaltungsanordnung 514 für Verkehrsklassen, die weniger genutzt werden, weniger Kredite zuweist.
  • In dem veranschaulichten Beispiel von 5 berechnet die Cache-Steuerschaltungsanordnung 514 Cache-Grenzen und weist Cache Warteschlangen im Datencache 510 basierend auf der Verkehrsklasse von Datenströmen zu, die jeweiligen Warteschlangen zugeordnet sind. Zum Beispiel beinhaltet der Datencache 510 acht Warteschlangen, von denen eine beispielhafte erste Warteschlange 518, eine beispielhafte zweite Warteschlange 520, eine beispielhafte sechste Warteschlange 522 und eine beispielhafte achte Warteschlange 524 veranschaulicht sind. Im Beispiel von 5 wird TC0 der ersten Warteschlange 518 zugeordnet, TC1 wird auf der zweite Warteschlange 520 zugeordnet, TC5 der sechsten Warteschlange 522 zugeordnet und TC7 der achten Warteschlange 524 zugeordnet. Im Beispiel von 5 sendet (überträgt) die Cache-Steuerschaltungsanordnung 514 Informationen, die die Zuweisung jeder Sendewarteschlange und jeder Empfangswarteschlange des Daten-Caches 510 angeben, über das eine oder die mehreren Datenanforderungssignale an die DMA-Steuerschaltungsanordnung 506.
  • Sobald die DMA-Steuerschaltungsanordnung 506 die Deskriptoren vorab abruft, parst die MAC-Schaltungsanordnung 512 (z. B. die Cache-Steuerschaltungsanordnung 514) im Beispiel von 5 die Deskriptoren und erzeugt eine Datenabrufanforderung an die DMA-Steuerschaltungsanordnung 506. Der Scheduler innerhalb der MAC-Schaltungsanordnung 512 führt eine Arbitrierung zwischen den verfügbaren Deskriptoren durch und erzeugt eine oder mehrere Datenabrufanforderungen an die DMA-Steuerschaltungsanordnung 506 in Abhängigkeit von verschiedenen Kriterien wie etwa jenen, die durch den „IEEE Standard for Local and Metropolitan Area Networks-- Bridges and Bridged Networks - Amendment 25: Enhancements for Scheduled Traffic“ in IEEE Std 802.1Qbv-2015 (Amendment to IEEE Std 802.1 Q-2014, wie von IEEE Std 802.1 Qca-2015, IEEE Std 802.1Qcd-2015 und IEEE Std 802.1 Q-2014/Cor 1-2015 geändert), Vol., Nr., S. 1-57, 18. März 2016 (im Folgenden als „IEEE 802.1Qbv-Standard“ bezeichnet) und/oder „IEEE Standard for Local and Metropolitan Area Networks - Virtual Bridged Local Area Networks Amendment 12: Forwarding and Queuing Enhancements for Time-Sensitive Streams“ in IEEE Std 802.1 Qav-2009 (Amendment to IEEE Std802.1 Q-2005), Vol., Nr., S. C1-72, 5. Januar 2010 (im Folgenden als „IEEE 802. 1Qav-Standard“ bezeichnet) spezifiziert sind. Zum Beispiel führt der Scheduler innerhalb der MAC-Schaltungsanordnung 512 eine Arbitrierung zwischen den verfügbaren Deskriptoren durch und erzeugt eine Datenabrufanforderung an die DMA-Steuerschaltungsanordnung 506 in Abhängigkeit von der Verkehrsklassenpriorität, Startzeit, die in der Gate-Steuerliste (z. B. für den IEEE 802.1Qbv-Standard), in dem Deskriptor (z. B. für zeitbasierte Planung), den verfügbaren Krediten (z. B., für den IEEE 802.1Qav-Standard) und/oder basierend auf dem verfügbaren Cache-Raum spezifiziert ist. Bei zeitbasierten Planungsbeispielen implementiert die GCL-Schaltungsanordnung 516 eine zeitbasierte Steuerung, um auszuwählen, welche Warteschlange priorisiert werden soll.
  • Im Beispiel von 5 lädt die DMA-Steuerschaltungsanordnung 506 nach dem Durchführen einer Vorabrufoperation Datenpakete über einen beispielhaften ersten Multiplexer 526, einen beispielhaften zweiten Multiplexer, einen beispielhaften sechsten Multiplexer 530 bzw. einen beispielhaften achten Multiplexer 532 in die erste Warteschlange 518, die zweite Warteschlange 520, die sechste Warteschlange 522 bzw. die achte Warteschlange 524. Die DMA-Steuerschaltungsanordnung 506 kann harte Echtzeitdaten über einen Express-Speicherpfad laden, der von einem Best-Effort-Speicherpfad getrennt ist, mit dem die DMA-Steuerschaltungsanordnung 506 Best-Effort-Daten laden kann. Basierend auf der durchgeführten Planung wählt die MAC-Schaltungsanordnung 512 (z. B. die GCL-Schaltungsanordnung 516) einen beispielhaften Multiplexer 534 aus und leitet die ausgewählten Datenpakete an den Sender des SoC weiter, um zu einer anderen Vorrichtung übertragen zu werden.
  • In manchen Beispielen beinhaltet die NIC 500 Mittel zum Steuern von Cache. Zum Beispiel kann das Mittel zum Steuern des Caches durch die Cache-Steuerschaltungsanordnung 514 implementiert werden. In manchen Beispielen kann die Cache-Steuerschaltungsanordnung 514 durch maschinenausführbare Anweisungen implementiert werden, wie etwa jene, die durch mindestens die Blöcke 802, 804, 806, 808, 810, 812, 814, 816 und 818 von 8 implementiert werden, die durch eine Prozessorschaltungsanordnung ausgeführt und/oder instanziiert werden, die durch die beispielhafte Prozessorschaltungsanordnung 912 von 9, den beispielhaften Mikroprozessor 1000 von 10 und/oder die beispielhafte FPGA (Field Programmable Gate Array)-Schaltungsanordnung 1100 von 11 implementiert werden kann. In anderen Beispielen wird die Cache-Steuerschaltungsanordnung 514 durch eine andere Hardwarelogikschaltungsanordnung, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige andere Kombination von Hardware, Software und/oder Firmware implementiert. Zum Beispiel kann die Cache-Steuerschaltungsanordnung 514 durch mindestens eine oder mehrere Hardwareschaltungen (z. B. eine Prozessorschaltungsanordnung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC: Application Specific Integrated Circuit), einen Komparator, einen Operationsverstärker (Operationsverstärker), eine Logikschaltung usw.) implementiert werden, die zum Durchführen der entsprechenden Operation strukturiert sind, ohne Software oder Firmware auszuführen, aber andere Strukturen sind ebenfalls geeignet.
  • 6 ist ein Blockdiagramm, das eine beispielhafte Implementierung der beispielhaften Cache-Steuerschaltungsanordnung 514 von 5 veranschaulicht. Im Beispiel von 6 weist die Cache-Steuerschaltungsanordnung 514 eine beispielhafte Datenstromklassifizierungsschaltungsanordnung 602 und eine beispielhafte Cache-Verwaltungsschaltungsanordnung 604 auf. Bei dem Beispiel von 6 können eine beliebige der Datenstromklassifizierungsschaltungsanordnung 602 und/oder der Cache-Verwaltungsschaltungsanordnung 604 über einen beispielhaften Kommunikationsbus 606 kommunizieren. In hierin offenbarten Beispielen kann der Kommunikationsbus 606 unter Verwendung einer beliebigen geeigneten drahtgebundenen und/oder drahtlosen Kommunikation implementiert werden. Bei zusätzlichen oder alternativen Beispielen beinhaltet der Kommunikationsbus 606 Software, maschinenlesbare Anweisungen und/oder Kommunikationsprotokolle, durch die Informationen zwischen der Datenstromklassifizierungsschaltungsanordnung 602 und/oder der Cache-Verwaltungsschaltungsanordnung 604 kommuniziert werden.
  • Im veranschaulichten Beispiel für 6 wird die Datenstromklassifizierungsschaltungsanordnung 602 durch eine oder mehrere elektrische Spezialschaltungen implementiert, die zum Durchführen einer oder mehrerer spezifischer Operationen strukturiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z. B., elektrische Hardware, die durch einen oder mehrere Transistoren implementiert ist) beinhalten. In manchen Beispielen wird die Datenstromklassifizierungsschaltungsanordnung 602 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, GPUs, DSPs, ASICs, PLDs und/oder FPLDs wie etwa FPGAs implementiert. Im Beispiel von 6 überwacht die Datenstromklassifizierungsschaltungsanordnung 602 die DMA-Steuerschaltungsanordnung 506 auf einen oder mehrere Datenströme. Als Reaktion auf das Erhalten (z. B. Zugreifen, Empfangen usw.) eines oder mehrerer Datenströme von einer Anwendung decodiert die Datenstromklassifizierungsschaltungsanordnung 602 den einen oder die mehreren Datenströme, die jeweiligen Warteschlangen des Caches (z. B. des Deskriptor-Caches 508 und/oder des Daten-Caches 510) zugewiesen sind, um die Verkehrsklasse zu bestimmen, die jeder Warteschlange zugeordnet ist. Zusätzlich oder alternativ bestimmt die Datenstromklassifizierungsschaltungsanordnung 602, ob die Anwendung, die eine Übertragung des einen oder der mehreren Datenströme angefordert hat, beendet ist.
  • In manchen Beispielen beinhaltet die Cache-Steuerschaltungsanordnung 514 Mittel zum Klassifizieren eines oder mehrerer Datenströme. Das Mittel zum Klassifizieren eines oder mehrerer Datenströme kann zum Beispiel durch die Datenstromklassifizierungsschaltungsanordnung 602 implementiert werden. In manchen Beispielen kann die Datenstromklassifizierungsschaltungsanordnung 602 durch maschinenausführbare Anweisungen implementiert werden, wie etwa jene, die durch mindestens die Blöcke 802, 804, 806, 816 und 818 von 8 implementiert werden, die durch die Prozessorschaltungsanordnung ausgeführt und/oder instanziiert werden, die durch die beispielhafte Prozessorschaltungsanordnung 912 von 9, den beispielhaften Mikroprozessor 1000 von 10 und/oder die beispielhafte FPGA (Field Programmable Gate Array) -Schaltungsanordnung 1100 von 11 implementiert werden kann. In anderen Beispielen wird die Datenstromklassifizierungsschaltungsanordnung 602 durch eine andere Hardwarelogikschaltungsanordnung, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige andere Kombination von Hardware, Software und/oder Firmware implementiert. Zum Beispiel kann die Datenstromklassifizierungsschaltungsanordnung 602 durch mindestens eine oder mehrere Hardwareschaltungen (z. B. eine Prozessorschaltungsanordnung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC: Application Specific Integrated Circuit), einen Komparator, einen Operationsverstärker (Operationsverstärker), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation durchzuführen, ohne Software oder Firmware auszuführen, aber andere Strukturen sind ebenfalls geeignet.
  • Bei dem veranschaulichten Beispiel für 6 wird die Cache-Verwaltungsschaltungsanordnung 604 durch eine oder mehrere elektrische Spezialschaltungen implementiert, die zum Durchführen einer oder mehrerer spezifischer Operationen strukturiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z. B., elektrische Hardware, die durch einen oder mehrere Transistoren implementiert ist) beinhalten. In manchen Beispielen wird die Cache-Verwaltungsschaltungsanordnung 604 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, eine oder mehrere programmierbare Steuerungen, eine oder mehrere GPUs, DSPs, ASICs, PLDs und/oder FPLDs wie etwa FPGAs implementiert. Im Beispiel von 6 berechnet die Cache-Verwaltungsschaltungsanordnung 604 basierend auf den jeweiligen Verkehrsklassen, die der einen oder den mehreren Warteschlangen des Deskriptor-Caches 508 zugeordnet sind, jeweilige Teile des Deskriptor-Caches 508, die der einen oder den mehreren Warteschlangen zuzuweisen sind. Zum Beispiel weist die Cache-Verwaltungsschaltungsanordnung 604 Warteschlangen, die Verkehrsklassen TC7-TC5 zugeordnet sind, mehr des Deskriptor-Caches 508 zu, weil Datenströme, die diesen Warteschlangen zugewiesen sind, kleinere Nutzlastdaten tragen. Umgekehrt weist die Cache-Verwaltungsschaltungsanordnung 604 Warteschlangen, die den Verkehrsklassen TC4-TC0 zugeordnet sind, weniger des Deskriptor-Caches 508 zu, weil Datenströme, die diesen Warteschlangen zugewiesen sind, größere Nutzlastdaten tragen. Die beispielhafte Cache-Verwaltungsschaltungsanordnung 604 überträgt zusätzlich ein oder mehrere Cache-Grenzsignale an die DMA-Steuerschaltungsanordnung 506, um die Zuweisung des Deskriptor-Caches 508 anzupassen.
  • Im veranschaulichten Beispiel von 6 berechnet die Cache-Verwaltungsschaltungsanordnung 604 basierend auf den jeweiligen Verkehrsklassen, die der einen oder den mehreren Warteschlangen des Daten-Caches 510 zugewiesen sind, jeweilige Teile des Daten-Caches 510, die der einen oder den mehreren Warteschlangen zuzuweisen sind. Zum Beispiel weist die Cache-Verwaltungsschaltungsanordnung 604 Warteschlangen, die Verkehrsklassen mit hoher Priorität (z. B. TC7-TC5) zugeordnet sind, mehr des Daten-Caches 510 zu. Umgekehrt weist die Cache-Verwaltungsschaltungsanordnung 604 Warteschlangen, die Verkehrsklassen mit niedriger Priorität zugeordnet sind (z. B. TC4-TC0), weniger des Daten-Caches 510 zu. Die beispielhafte Cache-Verwaltungsschaltungsanordnung 604 überträgt zusätzlich ein oder mehrere Datenanforderungssignale an die DMA-Steuerschaltungsanordnung 506, um die Zuweisung des Daten-Caches 510 anzupassen.
  • Zum Beispiel sind Deskriptorpakete typischerweise unabhängig von der Größe des Datenpakets gleich groß (z. B. Bits). Von daher weist die Cache-Verwaltungsschaltungsanordnung 604 Verkehrsklassen, die kleinere Datenpakete beinhalten (z. B. Verkehrsklassen, die häufiger übertragen werden, TC7-TC5 usw.), mehr des Deskriptor-Caches 508 zu, um die Anzahl an Datenpaketen in dem Daten-Cache 510 zu erhöhen, wodurch Latenzen ausgeglichen werden, die ansonsten in einem statisch begrenzten Cache auftreten würden. Gleichermaßen weist die Cache-Verwaltungsschaltungsanordnung 604 Verkehrsklassen, die größere Datenpakete beinhalten (z. B. Verkehrsklassen, die seltener übertragen werden, TC4-TC0usw.) weniger des Deskriptor-Caches 508 zu, um die Anzahl von Datenpaketen in dem Daten-Cache 510 zu verringern, weil weniger Datenpakete dieser Verkehrsklassen mehr des Daten-Caches 510 verbrauchen werden im Vergleich zu Verkehrsklassen, die kleinere Datenpakete beinhalten.
  • In manchen Beispielen beinhaltet die Cache-Steuerschaltungsanordnung 514 Mittel zum Verwalten eines oder mehrerer Mittel zum Speichern. Zum Beispiel kann das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern durch die Cache-Verwaltungsschaltungsanordnung 604 implementiert werden. In manchen Beispielen kann die Cache-Verwaltungsschaltungsanordnung 604 durch maschinenausführbare Anweisungen implementiert werden, wie etwa jene, die durch mindestens die Blöcke 808, 810, 812 und 814 von 8 implementiert werden, die durch die Prozessorschaltungsanordnung ausgeführt und/oder instanziiert werden, die durch die beispielhafte Prozessorschaltungsanordnung 912 von 9, den beispielhaften Mikroprozessor 1000 von 10 und/oder die beispielhafte feldprogrammierbare Gate-Array (FPGA)-Schaltungsanordnung 1100, falls 11, implementiert werden kann. In anderen Beispielen wird die Cache-Verwaltungsschaltungsanordnung 604 durch eine andere Hardwarelogikschaltungsanordnung, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige andere Kombination von Hardware, Software und/oder Firmware implementiert. Zum Beispiel kann die Cache-Verwaltungsschaltungsanordnung 604 durch wenigstens eine oder mehrere Hardwareschaltungsanordnungen (z. B. eine Prozessorschaltungsanordnung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine anwendungsspezifische integrierte Schaltung (ASIC), einen Komparator, einen Operationsverstärker (Op-amp), eine Logikschaltung usw.) implementiert werden, die zum Durchführen der entsprechenden Operationen strukturiert ist, ohne Software oder Firmware auszuführen, aber andere Strukturen sind ebenfalls geeignet.
  • Obwohl 5 und 6 die Cache-Steuerschaltungsanordnung 514 als eine oder mehrere elektrische Spezialschaltungen veranschaulichen und beschreiben, die zum Durchführen einer oder mehrerer spezifischer Operationen strukturiert sind und eine oder mehrere halbleiterbasierte Logikvorrichtungen (z. B. elektrische Hardware, die durch einen oder mehrere Transistoren implementiert wird) beinhalten, kann die Cache-Steuerschaltungsanordnung 514 in anderen Beispielen durch eine beliebige andere Kombination von Hardware, Software und/oder Firmware implementiert werden. Zum Beispiel kann die Cache-Steuerschaltungsanordnung 514 durch eine Allzweckprozessorschaltungsanordnung implementiert werden, wie etwa die beispielhafte Prozessorschaltungsanordnung 912 von 9, den beispielhaften Mikroprozessor 1000 von 10 und/oder die beispielhafte FPGA (Field Programmable Gate Array)-Schaltungsanordnung 1100 von 11, die dazu programmiert sein kann, maschinenlesbare Anweisungen und/oder Operationen (z. B. maschinenlesbare Anweisungen, die Anweisungen entsprechen) wie etwa die maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 auszuführen und/oder zu instanziieren. In manchen solchen Beispielen bewirken die Anweisungen, dass die Prozessorschaltungsanordnung eine oder mehrere Operationen durchführt, die den maschinenlesbaren Anweisungen und/oder Operationen (z. B. den maschinenlesbaren Anweisungen und/oder Operationen 800 von 8) entsprechen.
  • In manchen Beispielen beinhaltet der Mikroprozessor 1000 (z. B. Mehrkernhardwareschaltungsanordnung einschließlich einer CPU, eines DSP, einer GPU, einer XPU usw.) einen oder mehrere Kerne, die unabhängig oder kooperativ arbeiten können, um maschinenlesbare Anweisungen auszuführen, die mindestens einigen der maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 entsprechen können. Zum Beispiel decodiert der Mikroprozessor 1000, der die maschinenlesbaren Anweisungen und/oder Operationen 800 ausführt, einen oder mehrere Datenströme, die einer oder mehreren Warteschlangen des Deskriptor-Caches 508 und/oder des Daten-Caches 510 zugewiesen sind, um eine oder mehrere Verkehrsklassen zu bestimmen, die der einen oder den mehreren Warteschlangen zugewiesen sind. Zusätzlich oder alternativ weist der Mikroprozessor 1000, der die maschinenlesbaren Anweisungen und/oder Operationen 800 ausführt, einen oder mehrere Teile des Deskriptor-Caches 508 und/oder des Daten-Caches 510 der einen oder den mehreren Warteschlangen basierend auf der einen oder den mehreren diesen zugeordneten Verkehrsklassen zu. In manchen Beispielen überträgt der Mikroprozessor 1000, der die maschinenlesbaren Anweisungen und/oder Operationen 800 ausführt, ein oder mehrere Signale an die DMA-Steuerschaltungsanordnung 506, um ein oder mehrere Register der DMA-Steuerschaltungsanordnung 506 einzustellen, um die Zuweisung des Deskriptor-Caches 508 und/oder des Daten-Caches 510 anzupassen.
  • In zusätzlichen oder alternativen Beispielen ist die FPGA-Schaltungsanordnung 1100 dazu konfiguriert, die Cache-Steuerschaltungsanordnung 514 von 5 zu implementieren. Zum Beispiel ist die FPGA-Schaltungsanordnung 1100 dazu ausgelegt, eine oder mehrere Operationen zu instanziieren, die mindestens einigen der maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 entsprechen können. Zum Beispiel decodiert die FPGA-Schaltungsanordnung 1100 beim Instanziieren der maschinenlesbaren Anweisungen und/oder Operationen 800 einen oder mehrere Datenströme, die einer oder mehreren Warteschlangen des Deskriptor-Caches 508 und/oder des Daten-Caches 510 zugewiesen sind, um eine oder mehrere Verkehrsklassen zu bestimmen, die der einen oder den mehreren Warteschlangen zugeordnet sind. Zusätzlich oder alternativ weist die FPGA-Schaltungsanordnung 1100 beim Instanziieren der maschinenlesbaren Anweisungen und/oder Operationen 800 einen oder mehrere Teile des Deskriptor-Caches 508 und/oder des Daten-Caches 510 der einen oder den mehreren Warteschlangen basierend auf der einen oder den mehreren diesen zugewiesenen Verkehrsklassen zu. Bei manchen Beispielen sendet die FPGA-Schaltungsanordnung 1100 beim Instanziieren der maschinenlesbaren Anweisungen und/oder Operationen 800 ein oder mehrere Signale an die DMA-Steuerschaltungsanordnung 506, um ein oder mehrere Register der DMA-Steuerschaltungsanordnung 506 einzustellen, um die Zuweisung des Deskriptor-Caches 508 und/oder des Daten-Caches 510 anzupassen.
  • 7 ist eine beispielhafte grafische Veranschaulichung 700, die mindestens einen Vorteil hierin offenbarter Beispiele im Vergleich zu bestehender Technologie demonstriert. Die grafische Veranschaulichung 700 weist eine beispielhafte Darstellung des existierenden Caches 702 und eine beispielhafte Darstellung des beispielhaften Caches 704 auf. Die beispielhafte Darstellung des beispielhaften Caches 704 veranschaulicht beispielhafte Interaktionen zwischen der Cache-Steuerschaltungsanordnung 514 von 5 und/oder 6, der DMA-Steuerschaltungsanordnung 506 von 5 und dem beispielhaften Cache 704.
  • Im veranschaulichten Beispiel von 7 veranschaulicht der existierende Cache 702 ein Beispiel für eine Partitionierung in feste Cache-Regionen, während der beispielhafte Cache 704 eine offenbarte Partitionierung in variable Cache-Regionen veranschaulicht. Wie in 7 gezeigt, werden bei der Partitionierung in feste Cache-Regionen den acht Warteschlangen des existierenden Caches 702 jeweils gleich große dedizierte Regionen des existierenden Caches 702 zugewiesen. Zum Beispiel wird jeder Warteschlange in dem existierenden Cache 702 ein dedizierter Adressbereich zugewiesen 512 B, der fest ist und sich nicht ändern kann. Dementsprechend benötigt der existierende Cache 702 4 KB für acht Warteschlangen, die sechzehn Deskriptoren pro Warteschlange speichern können. Im Beispiel von 7 hat jeder Deskriptor acht Doppelwörter (DWords) oder 32 B. Wie oben erläutert, unterliegt der existierende Cache 702 jedoch einer Unternutzung und ist aufgrund der großen Siliciumfläche, die mit zunehmender Linkgeschwindigkeit benötigt wird, nicht skalierbar.
  • Im veranschaulichten Beispiel von 7 implementiert der beispielhafte Cache 704 eine aktive Cache-Verwaltung, da die Cache-Steuerschaltungsanordnung 514 die Cache-Kredite und Regionengrenzen für jede Warteschlange dynamisch basierend auf der Verkehrsklasse berechnet, die für einen oder mehrere Datenströme durch eine Anwendung zugeordnet wird, die eine Übertragung des einen oder der mehreren Datenströme anfordert. Mit anderen Worten berechnet die Cache-Steuerschaltungsanordnung 514 die Cache-Kredite und Regionengrenzen für jede Warteschlange dynamisch basierend auf der Zuordnung der Verkehrsklasse zur Warteschlange (z. B., dem Typ des Datenstroms, der mit jeder Warteschlange assoziiert ist). Zum Beispiel kann die Cache-Steuerschaltungsanordnung 514 den Adressbereich, der jeder Warteschlange des beispielhaften Caches 704 zugewiesen ist, zwischen 512 B und 64 B basierend auf der Verkehrsklasse variieren, die der Warteschlange zugeordnet ist.
  • Im veranschaulichten Beispiel von 7 weist die Cache-Steuerschaltungsanordnung 514 den beispielhaften Cache 704 basierend auf einer Verkehrsklasse dynamisch Warteschlangen zu. Zum Beispiel weist die Cache-Steuerschaltungsanordnung 514 den Warteschlangen des beispielhaften Caches 704 Kredite basierend auf der Latenz eines Datenstroms zu, der den Warteschlangen zugewiesen ist. Zum Beispiel weist die Cache-Steuerschaltungsanordnung 514 einer Warteschlange, die auf einem Datenstrom mit niedriger Latenz zugeordnet ist, mehr Kredite zu im Vergleich zu einer anderen Warteschlange, die auf einem Datenstrom mit hoher Latenz zugeordnet ist. Infolge der hierin offenbarten dynamischen Adressenzuordnung ist der beispielhafte Cache 704 effizienter und erhöht die Cache-Ausnutzung, wodurch die gesamte Cache-Größe reduziert wird. Somit reduziert die hier offenbarte dynamische Adressenzuordnung die Gesamtgröße des Caches, der in NICs und/oder anderen Vorrichtungen implementiert ist.
  • Obwohl eine beispielhafte Art und Weise des Implementierens der Cache-Steuerschaltungsanordnung 514 von 5 in 6 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 6 veranschaulicht sind, kombiniert, geteilt, umgeordnet, weggelassen, eliminiert und/oder auf eine beliebige andere Weise implementiert werden. Ferner können die beispielhafte Datenstromklassifizierungsschaltungsanordnung 602, die beispielhafte Cache-Verwaltungsschaltungsanordnung 604 und/oder allgemeiner die beispielhafte Cache-Steuerschaltungsanordnung 514 von 6 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Dementsprechend könnten zum Beispiel beliebige der beispielhaften Datenstromklassifizierungsschaltungsanordnung 602, der beispielhaften Cache-Verwaltungsschaltungsanordnung 604 und/oder allgemeiner der beispielhaften Cache-Steuerschaltungsanordnung 514 von 6 durch eine Prozessorschaltungsanordnung, eine oder mehrere analoge Schaltungen, eine oder mehrere digitale Schaltungen, eine oder mehrere Logikschaltungen, einen oder mehrere programmierbare Prozessoren, einen oder mehrere programmierbare Mikrocontroller, eine oder mehrere Grafikverarbeitungseinheiten) (GPUs), einen oder mehrere Digitalsignalprozessoren (DSPs), ein oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), eine oder mehrere programmierbare Logikvorrichtungen (PLDs) und/oder eine oder mehrere feldprogrammierbare Logikvorrichtungen (FPLDs) wie etwa feldprogrammierbare Gate-Arrays (FPGAs) implementiert werden. Wenn gelesen wird, dass beliebige der Einrichtungs- oder Systemansprüche dieses Patents eine reine Software- und/oder Firmware-Implementierung abdecken, sind die beispielhafte Datenstromklassifizierungsschaltungsanordnung 602 und/oder die beispielhafte Cache-Verwaltungsschaltungsanordnung 604 und/oder allgemeiner die beispielhafte Cache-Steuerschaltungsanordnung 514 von 6 hiermit ausdrücklich so definiert, dass sie eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherplatte, wie etwa einen Speicher, eine DVD (Digital Versatile Disk), eine CD (Compact Disk), eine Blu-Ray-Disk usw. einschließlich der Software und/oder Firmware beinhalten. Ferner können die beispielhafte Cache-Steuerschaltungsanordnung 514 von 5 und/oder 6 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle der in 6 veranschaulichten beinhalten und/oder können mehr als eines von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen beinhalten.
  • Ein Flussdiagramm, das eine beispielhafte Hardwarelogikschaltungsanordnung, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der Cache-Steuerschaltungsanordnung 514 von Figur und/oder 6 darstellt, ist in 8 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Teil(e) eines ausführbaren Programms zur Ausführung durch eine Prozessorschaltungsanordnung sein, wie etwa die Prozessorschaltungsanordnung 912, die in der unten in Verbindung mit 9 besprochenen beispielhaften Prozessorplattform 900 gezeigt ist, und/oder die unten in Verbindung mit 10 und/oder 11 besprochene beispielhafte Prozessorschaltungsanordnung. Das Programm kann in Software umgesetzt sein, die auf einem oder mehreren nichtflüchtigen computerlesbaren Speicherungsmedien gespeichert ist, wie etwa einer CD, einer Diskette, einem Festplattenlaufwerk (HDD), einer DVD, einer Blu-Ray-Disk, einem flüchtigen Speicher (z. B. Direktzugriffsspeicher (RAM) eines beliebigen Typs usw.) oder einem nichtflüchtigen Speicher (z. B., FLASH-Speicher, HDD usw.), die mit einer Prozessorschaltungsanordnung assoziiert sind, die sich in einer oder mehreren Hardwarevorrichtungen befindet, aber das gesamte Programm und/oder Teile davon könnten alternativ dazu durch eine oder mehrere andere Hardwarevorrichtungen als der Prozessorschaltungsanordnung ausgeführt werden und/oder in Firmware oder dedizierter Hardware umgesetzt werden. Die maschinenlesbaren Anweisungen können über mehrere Hardwarevorrichtungen verteilt und/oder durch zwei oder mehr Hardwarevorrichtungen (z. B. einen Server und eine Client-Hardwarevorrichtung) ausgeführt werden. Die Client-Hardwarevorrichtung kann zum Beispiel durch eine Endpunkt-Client-Hardwarevorrichtung (z. B. eine Hardwarevorrichtung, die mit einem Benutzer assoziiert ist) oder eine Zwischen-Client-Hardwarevorrichtung (z. B. ein Funkzugangsnetzwerk (RAN)-Gateway, das Kommunikation zwischen einem Server und einer Endpunkt-Client-Hardwarevorrichtung ermöglichen kann) implementiert werden. Gleichermaßen können die nichtflüchtigen computerlesbaren Speichermedien ein oder mehrere Medien beinhalten, die sich in einer oder mehreren Hardwarevorrichtungen befinden. Obwohl das beispielhafte Programm unter Bezugnahme auf das in 8 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren der beispielhaften Cache-Steuerschaltungsanordnung 514 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden und/oder manche der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. eine Prozessorschaltungsanordnung, eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, ein FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-amp), eine Logikschaltung usw.) implementiert sein, die zum Durchführen der entsprechenden Operation strukturiert sind, ohne Software oder Firmware auszuführen. Die Prozessorschaltungsanordnung kann an unterschiedlichen Netzwerkstandorten und/oder lokal zu einer oder mehreren Hardwarevorrichtungen (z. B. einem Einzelkernprozessor (z. B. einer Einkernzentralprozessoreinheit (CPU)), einem Mehrkernprozessor (z. B. einer Mehrkern-CPU) usw.) in einer einzigen Maschine verteilt sein, mehrere Prozessoren können über mehrere Server eines Server-Racks verteilt sein, mehrere Prozessoren können über ein oder mehrere Server-Racks verteilt sind, eine CPU und/oder ein FPGA können sich in demselben Package (z. B. demselben Package mit integrierter Schaltung (IC) oder in zwei oder mehr separaten Gehäusen usw.) befinden.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können in einem komprimierten Format und/oder einem verschlüsselten Format und/oder einem fragmentierten Format und/oder einem kompilierten Format und/oder einem ausführbaren Format und/oder einem verpackten Format usw. gespeichert sein. Maschinenlesbare Anweisungen wie hierin beschrieben können als Daten oder eine Datenstruktur (z. B. als Teile von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die genutzt werden können, um maschinenausführbare Anweisungen zu erzeugen, herzustellen und/oder zu produzieren. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speichervorrichtungen und/oder Rechenvorrichtungen (z. B. Servern) gespeichert sein, die sich an demselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z. B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung und/oder Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und/oder auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und/oder kombiniert werden, einen Satz maschinenausführbarer Anweisungen bilden, die eine oder mehrere Operationen implementieren, die zusammen ein Programm wie etwa das hierin beschriebene bilden können.
  • In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie von einer Prozessorschaltungsanordnung gelesen werden können, aber Hinzufügen einer Bibliothek (z. B. einer Dynamic Link Library (DLL)), eines Softwareentwicklungskits (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die maschinenlesbaren Anweisungen auf einer speziellen Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen möglicherweise konfiguriert (z. B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das bzw. die entsprechenden Programme vollständig oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie hierin verwendet, maschinenlesbare Anweisungen und/oder Programm(e) unabhängig von dem speziellen Format oder Zustand der maschinenlesbaren Anweisungen und/oder Programm(e) beinhalten, wenn sie gespeichert oder anderweitig in Ruhe oder im Transit sind.
  • Die hierin beschriebenen maschinenlesbaren Anweisungen können durch jegliche vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. dargestellt sein. Zum Beispiel können die maschinenlesbaren Anweisungen durch Verwenden jeglicher der folgenden Sprachen dargestellt sein: C, C++, Java, C#, Perl, Python, JavaScript, HyperText-Markup-Language (HTML), Structured-Query-Language (SQL), Swift usw.
  • Wie oben erwähnt, können die beispielhaften Operationen von 8 unter Verwendung ausführbarer Anweisungen (z. B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem oder mehreren nichtflüchtigen computer- und/oder maschinenlesbaren Medien gespeichert sind, wie etwa optischen Speichervorrichtungen, magnetischen Speichervorrichtungen, einem HDD, einem Flash-Speicher, einem Nurlesespeicher (ROM), einer CD, einer DVD, einem Cache, einem RAM eines beliebigen Typs, einem Register und/oder einer beliebigen anderen Speichervorrichtung oder Speicherplatte, auf der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, permanent, für kurze Momente, zum temporären Puffern und/oder zum Cachen der Informationen) gespeichert sind. Wie hierin verwendet, sind die Begriffe nichtflüchtiges computerlesbares Medium und nichtflüchtiges computerlesbares Speichermedium ausdrücklich so definiert, dass sie eine beliebige Art von computerlesbarer Speichervorrichtung und/oder Speicherplatte beinhalten und sich ausbreitende Signale ausschließen und Übertragungsmedien ausschließen.
  • „Beinhaltend" und „umfassend“ (und alle Formen und Spannungen davon) werden hier als offenendige Begriffe verwendet. Wann auch immer ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z. B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als eine Präambel oder innerhalb einer Anspruchsrezitation einer beliebigen Art einsetzt, versteht es sich somit, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Rezitation zu fallen. Wie hier verwendet, ist, wenn der Ausdruck „mindestens“ als der Übergangsterm in zum Beispiel einer Präambel eines Anspruchs verwendet wird, er auf die gleiche Weise offen, wie der Ausdruck „umfassend“ und „einschließend“ offen sind. Der Begriff „und/oder“, wenn er zum Beispiel in einer Form wie etwa A, B und/oder C verwendet wird, bezieht sich auf eine beliebige Kombination oder Teilmenge von A, B, C, wie etwa (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C oder (7) A mit B und mit C. Wie hier im Zusammenhang mit der Beschreibung von Strukturen, Komponenten, Gegenständen, Objekten und/oder Dingen verwendet, soll sich der Ausdruck „mindestens eines von A und B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Ähnlich, wie hier im Kontext der Beschreibung von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet, soll sich der Ausdruck „mindestens eines von A oder B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Wie hierin im Kontext der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet, soll sich der Ausdruck „mindestens eines von A und B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten. Ähnlich, wie hierin im Zusammenhang mit der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Handlungen, Aktivitäten und/oder Schritten verwendet, soll sich der Ausdruck „mindestens eines von A oder B“ auf Implementierungen beziehen, die beliebige von (1) mindestens einem A, (2) mindestens einem B oder (3) mindestens einem A und mindestens einem B beinhalten.
  • Wie hier verwendet, schließen singuläre Referenzen (z. B. „ein“, „eine“, „erste“, „zweite“ usw.) mehrere nicht aus. Der Ausdruck „ein“ Objekt, wie hier verwendet, verweist auf eines oder mehrere dieses Objekts. Der Ausdruck „ein“ (oder „eine“), „ein oder mehrere“ und „mindestens ein“ werden hier austauschbar verwendet. Obwohl einzeln aufgelistet, können des Weiteren mehrere Mittel, Elemente oder Verfahrensaktionen durch z. B. dieselbe Entität oder dasselbe Objekt implementiert werden. Obwohl einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, können diese zusätzlich möglicherweise kombiniert werden und die Aufnahme in unterschiedlichen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht machbar und/oder vorteilhaft ist.
  • 8 ist ein Flussdiagramm, das beispielhafte maschinenlesbare Anweisungen und/oder beispielhafte Operationen 800 darstellt, die durch eine Prozessorschaltungsanordnung ausgeführt und/oder instanziiert werden können, um die beispielhafte Cache-Steuerschaltung 514 von 5 und/oder 6 zu implementieren. Die maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 beginnen bei Block 802, bei dem die Datenstromklassifizierungsschaltungsanordnung 602 auf einen oder mehrere Datenströme überwacht. Zum Beispiel überwacht die Datenstromklassifizierungsschaltungsanordnung 602 bei Block 802 die DMA-Steuerschaltungsanordnung 506 auf einen oder mehrere Datenströme. Bei Block 804 bestimmt die Datenstromklassifizierungsschaltungsanordnung 602, ob die Datenstromklassifizierungsschaltungsanordnung 602 einen oder mehrere Datenströme empfangen hat, die für eine Anwendung zu übertragen sind.
  • Im veranschaulichten Beispiel für 8 als Reaktion darauf, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, dass ein oder mehrere Datenströme von einer Anwendung empfangen wurden (Block 804: JA), gehen die maschinenlesbaren Anweisungen und/oder Operationen 800 zu Block 806 über. Als Reaktion darauf, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, dass ein oder mehrere Datenströme nicht von einer Anwendung empfangen wurden (Block 804: NEIN), kehren die maschinenlesbaren Anweisungen und/oder Operationen 800 zu Block 802 zurück. Bei Block 806 decodiert die Datenstromklassifizierungsschaltungsanordnung 602 den einen oder die mehreren Datenströme, die jeweiligen Warteschlangen des Caches (z. B. des Deskriptor-Caches 508 und/oder des Daten-Caches 510) zugewiesen sind, um die Verkehrsklasse zu bestimmen, die jeder Warteschlange zugeordnet ist.
  • Im veranschaulichten Beispiel von 8 berechnet die Cache-Verwaltungsschaltungsanordnung 604 bei Block 808 basierend auf den jeweiligen Verkehrsklassen, die der einen oder den mehreren Warteschlangen des Deskriptor-Caches 508 zugeordnet sind, jeweilige Teile des Deskriptor-Caches 508, die der einen oder den mehreren Warteschlangen zuzuweisen sind. Zum Beispiel weist die Cache-Verwaltungsschaltungsanordnung 604 bei Block 808 Warteschlangen, die den Verkehrsklassen TC7-TC5 zugeordnet sind, mehr des Deskriptor-Caches 508 zu, weil Datenströme, die diesen Warteschlangen zugewiesen sind, kleinere Datenpakete tragen. Zusätzlich oder alternativ weist die Cache-Verwaltungsschaltungsanordnung 604 bei Block 808 Warteschlangen, die den Verkehrsklassen TC4-TC0zugeordnet sind, weniger des Deskriptor-Caches 508 zu, weil Datenströme, die diesen Warteschlangen zugewiesen sind, größere Datenpakete tragen.
  • Im veranschaulichten Beispiel von 8 sendet die Cache-Verwaltungsschaltungsanordnung 604 bei Block 810 ein oder mehrere Cache-Grenzsignale an die DMA-Steuerschaltungsanordnung 506, um die Zuweisung des Deskriptor-Caches 508 anzupassen. Bei Block 812 berechnet die Cache-Verwaltungsschaltungsanordnung 604 basierend auf den jeweiligen Verkehrsklassen, die der einen oder den mehreren Warteschlangen des Daten-Caches 510 zugewiesen sind, jeweilige Teile des Daten-Caches 510, die der einen oder den mehreren Warteschlangen zuzuweisen sind. Zum Beispiel weist die Cache-Verwaltungsschaltungsanordnung 604 bei Block 812 Warteschlangen, die Verkehrsklassen mit hoher Priorität (z. B. TC7-TC5) zugeordnet sind, weniger des Daten-Caches 510 zu. Bei zusätzlichen oder alternativen Beispielen weist die Cache-Verwaltungsschaltungsanordnung 604 bei Block 812 Warteschlangen, die Verkehrsklassen mit niedriger Priorität zugeordnet sind (z. B. TC4-TC0), mehr des Daten-Caches 510 zu. Bei Block 814 überträgt die Cache-Verwaltungsschaltungsanordnung 604 ein oder mehrere Datenanforderungssignale an die DMA-Steuerschaltungsanordnung 506, um die Zuweisung des Daten-Caches 510 anzupassen.
  • Im veranschaulichten Beispiel von 8 bestimmt die Datenstromklassifizierungsschaltungsanordnung 602 bei Block 816, ob die Anwendung, die eine Übertragung des einen oder der mehreren Datenströme angefordert hat, beendet ist. Als Reaktion darauf, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, dass die Anwendung, die eine Übertragung des einen oder der mehreren Datenströme angefordert hat, nicht beendet ist (Block 816: NEIN), kehren die maschinenlesbaren Anweisungen und/oder Operationen 800 zu Block 802 zurück. Als Reaktion darauf, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, dass die Anwendung, die eine Übertragung des einen oder der mehreren Datenströme angefordert hat, beendet wurde (Block 816: JA), gehen die maschinenlesbaren Anweisungen und/oder Operationen 800 zu Block 818 über.
  • Im veranschaulichten Beispiel für 8 bestimmt die Datenstromklassifizierungsschaltungsanordnung 602 bei Block 818, ob der Betrieb fortgesetzt werden soll. Zum Beispiel beinhaltet eine Bedingung, die bewirkt, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, den Betrieb zu unterbrechen, Ausschalten der NIC und/oder einer anderen Vorrichtung beinhaltet, in der die Cache-Steuerschaltungsanordnung 514 implementiert ist. Als Reaktion darauf, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, die Operation fortzusetzen (Block 818: JA), kehren die maschinenlesbaren Anweisungen und/oder Operationen 800 zu Block 802 zurück. Als Reaktion darauf, dass die Datenstromklassifizierungsschaltungsanordnung 602 bestimmt, den Betrieb nicht fortzusetzen (Block 818: NEIN), enden die maschinenlesbaren Anweisungen und/oder Operationen 800.
  • 9 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 900, die eine Prozessorschaltungsanordnung beinhaltet, die zum Ausführen und/oder Instanziieren der maschinenlesbaren Anweisungen und/oder Operationen von 8 strukturiert ist, um die Cache-Steuerschaltungsanordnung 514 von 5 und/oder 6 zu implementieren. Die Prozessorplattform 900 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine Mobilvorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie etwa ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Spieler, ein CD-Spieler, ein digitalen Videorecorder, ein Blu-Ray-Spieler, eine Spielekonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Headset (z. B. ein Augmented-Reality (AR)-Headset, ein Virtual-Reality (VR)-Headset usw.) oder eine andere Wearable-Vorrichtung oder eine beliebige andere Art von Rechenvorrichtung sein.
  • Die Prozessorplattform 900 des veranschaulichten Beispiels weist eine Prozessorschaltungsanordnung 912 auf. Die Prozessorschaltungsanordnung 912 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann die Prozessorschaltungsanordnung 912 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, FPGAs, Mikroprozessoren, CPUs, GPUs, DSPs und/oder Mikrosteuerungen einer beliebigen gewünschten Familie oder eines beliebigen gewünschten Herstellers implementiert werden. Die Prozessorschaltungsanordnung 912 kann durch eine oder mehrere halbleiterbasierte (z. B. siliciumbasierte) Vorrichtungen implementiert werden.
  • Die Prozessorschaltungsanordnung 912 des veranschaulichten Beispiels beinhaltet einen lokalen Speicher 913 (z. B. einen Cache, Register usw.). Die Prozessorschaltungsanordnung 912 des veranschaulichten Beispiels befindet sich über einen Bus 918 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 914 und einen nichtflüchtigen Speicher 916 beinhaltet. Der flüchtige Speicher 914 kann durch einen SDRAM (Synchronous Dynamic Random Access Memory), einen DRAM (Dynamic Random Access Memory), einen RDRAM (RAMBUS® Dynamic Random Access Memory) und/oder eine beliebige andere Art von RAM-Vorrichtung implementiert werden. Der nichtflüchtige Speicher 916 kann durch Flash-Speicher und/oder eine beliebige andere gewünschte Art von Speichervorrichtung implementiert werden. Der Zugriff auf den Hauptspeicher 914, 916 des veranschaulichten Beispiels wird durch eine Speichersteuerung 917 gesteuert.
  • Die Prozessorplattform 900 des veranschaulichten Beispiels weist auch die beispielhafte Netzwerkschnittstellen-Schaltungsanordnung 500 auf. Die Netzwerkschnittstellen-Schaltungsanordnung 500 kann durch Hardware gemäß einer beliebigen Art von Schnittstellenstandard implementiert werden, wie etwa eine Ethernet-Schnittstelle, eine USB (Universal Serial Bus)-Schnittstelle, eine Bluetooth®-Schnittstelle, eine NFC-Schnittstelle (Near Field Communication), eine PCI-Schnittstelle und/oder einer PCIe-Schnittstelle. In manchen Beispielen kann die Netzwerkschnittstellen-Schaltungsanordnung 500 auch als Host-Fabric-Schnittstelle (HFI) bezeichnet werden. Im Beispiel von 9 ist die Netzwerkschnittstellen-Schaltungsanordnung 500 auf einem von der Prozessorschaltungsanordnung 912 getrennten Die implementiert (z. B. als Teil eines SoC).
  • In manchen Beispielen ist die Netzwerkschnittstellen-Schaltungsanordnung 500 auf demselben Die wie die Prozessorschaltungsanordnung 912 implementiert. In zusätzlichen oder alternativen Beispielen ist die Netzwerkschnittstelle-Schaltungsanordnung 500 innerhalb desselben Gehäuses wie die Prozessorschaltungsanordnung 912 implementiert. Bei manchen Beispielen ist die Netzwerkschnittstelle-Schaltungsanordnung 500 in einem anderen Gehäuse als dem Gehäuse implementiert, in dem die Prozessorschaltungsanordnung 912 implementiert ist. Zum Beispiel kann die Netzwerkschnittstellen-Schaltungsanordnung 500 als eine oder mehrere Add-In-Platinen, Tochterkarten, Netzwerkschnittstelle-Karten, Controllerchips, Chipsätze oder andere Vorrichtungen implementiert sein, die durch die Prozessorschaltungsanordnung 912 verwendet werden können, um sich mit einer anderen Prozessorplattform und/oder einer anderen Vorrichtung zu verbinden.
  • Im veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 922 mit der Netzwerkschnittstellen-Schaltungsanordnung 500 verbunden. Die Eingabevorrichtung(en) 922 ermöglicht (ermöglichen) einem Benutzer, Daten und/oder Befehle in die Prozessorschaltungsanordnung 912 einzugeben. Die eine oder die mehreren Eingabevorrichtungen 922 können zum Beispiel durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, eine Isopoint-Vorrichtung und/oder ein Spracherkennungssystem implementiert werden.
  • Eine oder mehrere Ausgabevorrichtungen 924 sind auch mit der Netzwerkschnittstellen-Schaltungsanordnung 500 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtungen 924 können zum Beispiel durch Anzeigevorrichtungen (z. B., eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT-Anzeige), eine In-Place-Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert werden. Die Netzwerkschnittstellen-Schaltungsanordnung 500 des veranschaulichten Beispiels beinhaltet somit typischerweise eine Grafiktreiber-Karte, einen Grafiktreiber-Chip und/oder eine Grafikprozessor-Schaltungsanordnung wie etwa eine GPU.
  • In dem veranschaulichten Beispiel von 9 setzt die Netzwerkschnittstellen-Schaltungsanordnung 500 den Deskriptor-Cache 508, den Daten-Cache 510 und die beispielhafte Datenstromklassifizierungsschaltungsanordnung 602, die beispielhafte Cache-Verwaltungsschaltungsanordnung 604 und/oder allgemeiner die Cache-Steuerschaltungsanordnung 514 um. Die Netzwerkschnittstellen-Schaltungsanordnung 500 des veranschaulichten Beispiels beinhaltet auch eine Kommunikationsvorrichtung, wie etwa einen Sender, einen Empfänger, einen Sendeempfänger, ein Modem, ein Haus-Gateway, einen drahtlosen Zugangspunkt und/oder einen Netzwerkschnittstelle, um den Austausch von Daten mit externen Maschinen (z. B. Rechenvorrichtungen einer beliebigen Art) durch ein Netzwerk 926 zu ermöglichen. Die Kommunikation kann zum Beispiel durch eine Ethernet-Verbindung, eine DSL-Verbindung (DSL: Digital Subscriber Line), eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Line-of-Site-System, ein Mobilfunksystem, eine optische Verbindung usw. erfolgen.
  • Die Prozessorplattform 900 des veranschaulichten Beispiels beinhaltet auch eine oder mehrere Massenspeichervorrichtungen 928 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichervorrichtungen 928 beinhalten magnetische Speichervorrichtungen, optische Speichervorrichtungen, Diskettenlaufwerke, HDDs, CDs, Blu-Ray-Disk-Laufwerke, RAID-Systeme (RAID: Redundant Array of Independent Disks), Festkörperspeichervorrichtungen wie etwa Flash Speichervorrichtungen und DVD-Laufwerke.
  • Die maschinenausführbaren Anweisungen 932 von 9, die durch die maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 implementiert werden können. Die maschinenausführbaren Anweisungen 932 können in der Massenspeichervorrichtung 928, im flüchtigen Speicher 914, im nichtflüchtigen Speicher 916 und/oder auf einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium wie etwa einer CD oder DVD gespeichert sein.
  • 10 ist ein Blockdiagramm einer beispielhaften Implementierung der Prozessorschaltungsanordnung 912 von 9. In diesem Beispiel wird die Prozessorschaltungsanordnung 912 von 9 durch einen Mikroprozessor 1000 implementiert. Zum Beispiel kann der Mikroprozessor 1000 eine Mehrkernhardwareschaltungsanordnung implementieren, wie etwa eine CPU, einen DSP, eine GPU, eine XPU usw. Obwohl er eine beliebige Anzahl beispielhafter Kerne 1002 (z. B. 1 Kern) beinhalten kann, ist der Mikroprozessor 1000 dieses Beispiels eine Mehrkernhalbleitervorrichtung, die N Kerne beinhaltet. Die Kerne 1002 des Mikroprozessors 1000 können unabhängig arbeiten oder können zusammenwirken, um maschinenlesbare Anweisungen auszuführen. Zum Beispiel kann Maschinencode, der einem Firmwareprogramm, einem eingebetteten Softwareprogramm oder einem Softwareprogramm entspricht, durch einen der Kerne 1002 ausgeführt werden oder kann durch mehrere der Kerne 1002 zur gleichen oder zu unterschiedlichen Zeiten ausgeführt werden. In manchen Beispielen wird der Maschinencode, der dem Firmwareprogramm, dem eingebetteten Softwareprogramm oder dem Softwareprogramm entspricht, in Threads aufgeteilt und parallel durch zwei oder mehr der Kerne 1002 ausgeführt. Das Softwareprogramm kann einem Teil oder allen der maschinenlesbaren Anweisungen und/oder Operationen 800 entsprechen, die durch das Flussdiagramm von 8 repräsentiert werden.
  • Die Kerne 1002 können durch einen beispielhaften Bus 1004 kommunizieren. In manchen Beispielen kann der Bus 1004 einen Kommunikationsbus implementieren, um eine Kommunikation zu bewirken, die mit einem bzw. mehreren der Kerne 1002 assoziiert ist. Zum Beispiel kann der Bus 1004 einen Inter-Integrated Circuit (I2C)-Bus und/oder einen Serial Peripheral Interface (SPI)-Bus und/oder einen PCI-Bus und/oder einen PCIe-Bus implementieren. Zusätzlich oder alternativ dazu kann der Bus 1004 eine beliebige andere Art von Rechen- oder elektrischem Bus implementieren. Die Kerne 1002 können Daten, Anweisungen und/oder Signale von einer oder mehreren externen Vorrichtungen durch die beispielhafte Schnittstellenschaltungsanordnung 1006 erhalten. Die Kerne 1002 können Daten, Anweisungen und/oder Signale durch die Schnittstellenschaltungsanordnung 1006 an die eine oder die mehreren externen Vorrichtungen ausgeben. Obwohl die Kerne 1002 dieses Beispiels einen beispielhaften lokalen Speicher 1020 (z. B. Level 1 (L1)-Cache, der in einen L1-Daten-Cache und einen L1-Anweisungs-Cache aufgeteilt sein kann) beinhalten, beinhaltet der Mikroprozessor 1000 auch einen beispielhaften gemeinsam genutzten Speicher 1010, der von den Kernen (z. B. Level 2 (L2_Cache)) für einen Hochgeschwindigkeitszugriff auf Daten und/oder Anweisungen gemeinsam genutzt werden kann. Daten und/oder Anweisungen können durch Schreiben in den und/oder Lesen aus dem gemeinsam genutzten Speicher 1010 übertragen (z. B. gemeinsam genutzt) werden. Der lokale Speicher 1020 jedes der Kerne 1002 und der gemeinsam genutzte Speicher 1010 können Teil einer Hierarchie von Speichervorrichtungen sein, einschließlich mehrerer Ebenen von Cache-Speicher und Hauptspeicher (z, B. Hauptspeicher 914, 916 von 9). Typischerweise weisen höhere Speicherebenen in der Hierarchie eine niedrigere Zugriffszeit auf und weisen eine kleinere Speicherungskapazität als niedrigere Speicherebenen auf. Änderungen in den verschiedenen Ebenen der Cache-Hierarchie werden durch eine Cache-Kohärenzrichtlinie verwaltet (z. B. koordiniert).
  • Jeder Kern 1002 kann als CPU, DSP, GPU usw. oder eine beliebige andere Art von Hardwareschaltungsanordnung bezeichnet werden. Jeder Kern 1002 weist eine Steuereinheitschaltungsanordnung 1014, eine Arithmetik-und-Logik (AL)-Schaltungsanordnung 1016 (manchmal als ALU 1016 und/oder eine Arithmetik-und-LogikSchaltungsanordnung 1016 bezeichnet), eine Vielzahl von Registern 1018, den L1-Cache 1020 und einen beispielhaften Bus 1022 auf. Andere Strukturen können vorhanden sein. Zum Beispiel kann jeder Kern 1002 eine Vektoreinheitsschaltungsanordnung, eine SIMD-Einheitsschaltungsanordnung (SIMD: Single Instruction Multiple Data), eine LSU-Schaltungsanordnung (LSU: Load/Store Unit), eine Verzweigungs-/Sprungeinheitsschaltungsanordnung, eine Gleitkommaeinheit (FPU: Floating Point Unit) usw. beinhalten. Die Steuereinheitschaltungsanordnung 1014 beinhaltet halbleiterbasierte Schaltungen, die zum Steuern einer Datenbewegung (z. B. Koordinatendatenbewegung) innerhalb des entsprechenden Kerns 1002 strukturiert sind. Die AL-Schaltungsanordnung 1016 beinhaltet halbleiterbasierte Schaltungen, die dazu strukturiert sind, eine oder mehrere mathematische und/oder logische Operationen an den Daten innerhalb des entsprechenden Kerns 1002 durchzuführen. Die AL-Schaltungsanordnung 1016 mancher Beispiele führt ganzzahlbasierte Operationen durch. In anderen Beispielen führt die AL-Schaltungsanordnung 1016 auch Gleitkommaoperationen durch. In noch anderen Beispielen kann die AL-Schaltungsanordnung 1016 eine erste AL-Schaltungsanordnung, die ganzzahlbasierte Operationen durchführt, und eine zweite AL-Schaltungsanordnung, die Gleitkommaoperationen durchführt, beinhalten. In manchen Beispielen kann die AL-Schaltungsanordnung 1016 als arithmetische Logikeinheit (ALU: Arithmetic Logic Unit) bezeichnet werden. Die Register 1018 sind halbleiterbasierte Strukturen zum Speichern von Daten und/oder Anweisungen wie etwa Ergebnissen einer oder mehrerer der Operationen, die durch die AL-Schaltungsanordnung 1016 des entsprechenden Kerns 1002 durchgeführt werden. Die Register 1018 können zum Beispiel ein oder mehrere Vektorregister, SIMD-Register, Allzweckregister, Flag-Register, Segmentregister, maschinenspezifische Register, Befehlszeigerregister, Steuerregister, Debug-Register, Speicherverwaltungsregister, Maschinenprüfregister usw. beinhalten. Die Register 1018 können in einer Bank angeordnet sein, wie in 10 gezeigt ist. Alternativ dazu können die Register 1018 in einer beliebigen anderen Anordnung, einem beliebigen anderen Format oder einer beliebigen anderen Struktur organisiert sein, einschließlich einer Verteilung im Kern 1002, um die Zugriffszeit zu verkürzen. Der Bus 1022 kann einen I2C-Bus und/oder einen SPI-Bus und/oder einen PCI-Bus und/oder einen PCIe-Bus implementieren
  • Jeder Kern 1002 und/oder allgemeiner der Mikroprozessor 1000 kann zusätzliche und/oder alternative Strukturen zu den oben gezeigten und beschriebenen beinhalten. Zum Beispiel können eine oder mehrere Taktschaltungen, eine oder mehrere Leistungsversorgungen, ein oder mehrere Leistungsgatter, ein oder mehrere Cache-Home-Agenten (CHAs), ein oder mehrere konvergierte/gemeinsame Mesh-Stopps (CMSs), ein oder mehrere Schieber (z. B. Tonnenschieber) und/oder eine andere Schaltungsanordnung vorhanden sein. Der Mikroprozessor 1000 ist eine Halbleitervorrichtung, die so gefertigt ist, dass sie viele Transistoren beinhaltet, die miteinander verbunden sind, um die oben beschriebenen Strukturen in einem oder mehreren integrierten Schaltkreisen (ICs) zu implementieren, die in einem oder mehreren Gehäusen enthalten sind. Die Prozessorschaltungsanordnung kann einen oder mehrere Beschleuniger beinhalten und/oder mit diesen zusammenwirken. In manchen Beispielen werden Beschleuniger durch eine Logikschaltungsanordnung implementiert, um gewisse Aufgaben schneller und/oder effizienter durchzuführen, als durch einen Allzweckprozessor durchgeführt werden kann. Beispiele für Beschleuniger beinhalten ASICs und FPGAs, wie etwa die hier besprochenen. Eine GPU oder eine andere programmierbare Vorrichtung kann auch ein Beschleuniger sein. Beschleuniger können sich an Bord der Prozessorschaltungsanordnung, in demselben Chipgehäuse wie die Prozessorschaltungsanordnung und/oder in einem oder mehreren von der Prozessorschaltungsanordnung getrennten Gehäusen befinden.
  • 11 ist ein Blockdiagramm einer anderen beispielhaften Implementierung der Prozessorschaltungsanordnung 912 von 9. Bei diesem Beispiel wird die Prozessorschaltungsanordnung 912 durch eine FPGA-Schaltungsanordnung 1100 implementiert. Die FPGA-Schaltungsanordnung 1100 kann zum Beispiel verwendet werden, um Operationen durchzuführen, die ansonsten durch den beispielhaften Mikroprozessor 1000 von 10 durchgeführt werden könnten, der entsprechende maschinenlesbare Anweisungen ausführt. Sobald sie jedoch konfiguriert ist, instanziiert die FPGA-Schaltungsanordnung die maschinenlesbaren Anweisungen in Hardware und kann dementsprechend die Operationen häufig schneller ausführen, als sie durch einen Universalmikroprozessor durchgeführt werden könnten, der die entsprechende Software ausführt.
  • Genauer gesagt gilt im Gegensatz zu dem Mikroprozessor 1000 von 10, der oben beschrieben ist (der eine Allzweckvorrichtung ist, die dazu programmiert sein kann, manche oder alle der maschinenlesbaren Anweisungen und/oder Operationen 800 auszuführen, die durch das Flussdiagramm von 8 dargestellt werden, deren Zwischenverbindungen und Logikschaltungsanordnung aber nach der Fertigung fixiert sind), beinhaltet die FPGA-Schaltungsanordnung 1100 des Beispiels von 11 Zwischenverbindungen und Logikschaltungsanordnungen, die nach der Fertigung konfiguriert und/oder auf unterschiedliche Weisen miteinander verbunden werden können, um zum Beispiel manche oder alle der maschinenlesbaren Anweisungen und/oder Operationen 800, die durch das Flussdiagramm von 8 repräsentiert werden, zu instanziieren. Insbesondere kann die FPGA-Schaltungsanordnung 1100 als ein Array aus Logikgattern, Zwischenverbindungen und Schaltern angesehen werden. Die Schalter können dazu programmiert sein, zu ändern, wie die Logikgatter durch die Zwischenverbindungen miteinander verbunden sind, wodurch effektiv ein oder mehrere dedizierte Logikschaltkreise gebildet werden (sofern nicht und bis die FPGA-Schaltungsanordnung 1100 neu programmiert wird). Die konfigurierten Logikschaltungen ermöglichen, dass die Logikgatter auf unterschiedliche Weisen zusammenwirken, um unterschiedliche Operationen an Daten durchzuführen, die durch die Eingabeschaltungsanordnung empfangen werden. Diese Operationen können einigen oder der gesamten Software entsprechen, die durch das Flussdiagramm von 8 repräsentiert wird. Von daher kann die FPGA-Schaltungsanordnung 1100 dazu strukturiert sein, manche oder alle der maschinenlesbaren Anweisungen und/oder Operationen 800 des Flussdiagramms von 8 effektiv als dedizierte Logikschaltkreise zu instanziieren, um die Operationen, die jenen Softwareanweisungen entsprechen, auf eine dedizierte Weise analog zu einer ASIC durchzuführen. Daher kann die FPGA-Schaltungsanordnung 1100 die Operationen, die den manchen oder allen der maschinenlesbaren Anweisungen entsprechen, und/oder Operationen 800 von 8 schneller durchführen, als der Universalmikroprozessor dieselben ausführen kann.
  • In dem Beispiel von 11 ist die FPGA-Schaltungsanordnung 1100 strukturiert, um durch einen Endbenutzer durch eine Hardwarebeschreibungssprache (HDL) wie etwa Verilog programmiert (und/oder einmal oder mehrmals umprogrammiert) zu werden. Die FPGA-Schaltungsanordnung 1100 von 11 beinhaltet eine beispielhafte Eingabe/Ausgabe (E/A)-Schaltungsanordnung 1102, um Daten zu erhalten und/oder von der beispielhaften Konfigurationsschaltungsanordnung 1104 und/oder externer Hardware (z. B. externer Hardwareschaltungsanordnung) 1106 auszugeben. Zum Beispiel kann die Konfigurationsschaltungsanordnung 1104 eine Schnittstellenschaltungsanordnung implementieren, die maschinenlesbare Anweisungen zum Konfigurieren der FPGA-Schaltungsanordnung 1100 oder eines oder mehrerer Abschnitte davon erhalten kann. Bei manchen solchen Beispielen kann die Konfigurationsschaltungsanordnung 1104 die maschinenlesbaren Anweisungen von einem Benutzer, einer Maschine (z. B. Hardwareschaltungsanordnung (z. B. programmierte oder dedizierte Schaltungsanordnung) erhalten, die ein Modell künstlicher Intelligenz/des Maschinenlernen (AI/ML) implementieren kann, um die Anweisungen zu erzeugen) usw. Wie hierin verwendet, ist ein Modell ein Satz von Anweisungen und/oder Daten, die durch eine Prozessorschaltungsanordnung aufgenommen, verarbeitet, interpretiert und/oder anderweitig manipuliert werden können, um ein Ergebnis zu erzeugen. Häufig wird ein Modell unter Verwendung von Eingabedaten betrieben, um Ausgabedaten gemäß einer oder mehreren Beziehungen zu erzeugen, die in dem Modell wiedergegeben werden. Das Modell kann auf Trainingsdaten basieren. In einigen Beispielen kann die externe Hardware 1106 den Mikroprozessor 1000 von 10 implementieren. Die FPGA-Schaltungsanordnung 1100 weist auch ein Array aus einer beispielhaften Logikgatterschaltungsanordnung 1108, mehreren beispielhaften konfigurierbaren Zwischenverbindungen 1110 und einer beispielhaften Speicherschaltungsanordnung 1112 auf. Die Logikgatterschaltungsanordnung 1108 und die Zwischenverbindungen 1110 sind konfigurierbar, um eine oder mehrere Operationen zu instanziieren, die mindestens einigen der maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 und/oder anderen gewünschten Operationen entsprechen können. Die in 11 gezeigte Logikgatterschaltungsanordnung 1108 ist in Gruppen oder Blöcken gefertigt. Jeder Block beinhaltet halbleiterbasierte elektrische Strukturen, die zu Logikschaltkreisen konfiguriert sein können. In manchen Beispielen beinhalten die elektrischen Strukturen Logikgatter (z. B. AND-Gatter, OR-Gatter, NOR-Gatter usw.), die Basisbausteine für Logikschaltkreise bereitstellen. Elektrisch steuerbare Schalter (z. B. Transistoren) sind innerhalb jeder der Logikgatterschaltungsanordnungen 1108 vorhanden, um eine Konfiguration der elektrischen Strukturen und/oder der Logikgatter zum Bilden von Schaltkreisen zum Durchführen gewünschter Operationen zu ermöglichen. Die Logikgatterschaltungsanordnung 1108 kann andere elektrische Strukturen beinhalten, wie etwa Nachschlagetabellen (LUTs), Register (z. B. Flip-Flops oder Latches), Multiplexer usw.
  • Die Zwischenverbindungen 1110 des veranschaulichten Beispiels sind leitfähige Pfade, Leiterbahnen, Vias oder dergleichen, die elektrisch steuerbare Schalter (z. B. Transistoren) beinhalten können, deren Zustand durch Programmieren (z. B. unter Verwendung einer HDL-Anweisungssprache) geändert werden kann, um eine oder mehrere Verbindungen zwischen einer oder mehreren der Logikgatterschaltungsanordnungen 1108 zu aktivieren oder zu deaktivieren, um gewünschte Logikschaltkreise zu programmieren.
  • Die Speicherschaltungsanordnung 1112 des veranschaulichten Beispiels ist dazu strukturiert, ein oder mehrere Ergebnisse der einen oder der mehreren Operationen zu speichern, die durch entsprechende Logikgatter durchgeführt werden. Die Speicherschaltungsanordnung 1112 kann durch Register oder dergleichen implementiert sein. Im veranschaulichten Beispiel ist die Speicherschaltungsanordnung 1112 auf die Logikgatterschaltungsanordnung 1108 verteilt, um den Zugriff zu erleichtern und die Ausführungsgeschwindigkeit zu erhöhen.
  • Die beispielhafte FPGA-Schaltungsanordnung 1100 von 11 weist auch eine beispielhafte Dedizierungsoperationsschaltungsanordnung 1114 auf. In diesem Beispiel beinhaltet die Dedizierungsoperationsschaltungsanordnung 1114 eine Spezialzweckschaltungsanordnung 1116, die aufgerufen werden kann, um üblicherweise verwendete Funktionen zu implementieren, um die Notwendigkeit zu vermeiden, diese Funktionen in dem Feld zu programmieren. Beispiele für eine solche Spezialschaltungsanordnung 1116 beinhalten eine Speicher (z. B. DRAM)-Steuerungsschaltungsanordnung, eine PCIe-Steuerungsschaltungsanordnung, eine Taktschaltungsanordnung, eine Sendeempfängerschaltungsanordnung, einen Speicher und eine Multiplizierer-Akkumulator-Schaltungsanordnung. Andere Arten von Spezialschaltungsanordnungen können vorhanden sein. In manchen Beispielen kann die FPGA-Schaltungsanordnung 1100 auch eine beispielhafte programmierbare Allzweckschaltungsanordnung 1118 wie etwa eine beispielhafte CPU 1120 und/oder einen beispielhaften DSP 1122 beinhalten. Eine andere programmierbare Allzweckschaltungsanordnung 1118 kann zusätzlich oder alternativ vorhanden sein, wie etwa eine GPU, eine XPU usw., die dazu programmiert sein kann, andere Operationen durchzuführen.
  • Obwohl 10 und 11 zwei Implementierungsbeispiele der Prozessorschaltungsanordnung 912 von 9 veranschaulichen, werden viele andere Ansätze in Betracht gezogen. Wie oben erwähnt, kann zum Beispiel eine moderne FPGA-Schaltungsanordnung eine Onboard-CPU wie etwa eine oder mehrere der beispielhaften CPU 1120 von 11 beinhalten. Daher kann die Prozessorschaltungsanordnung 912 von 9 zusätzlich durch Kombinieren des beispielhaften Mikroprozessors 1000 von 10 und der beispielhaften FPGA-Schaltungsanordnung 1100 von 11 implementiert werden. In manchen solchen hybriden Beispielen kann ein erster Teil der maschinenlesbaren Anweisungen und/oder Operationen 800, die durch das Flussdiagramm von 8 dargestellt werden, durch einen oder mehrere der Kerne 1002 von 10 ausgeführt werden, und ein zweiter Teil der maschinenlesbaren Anweisungen und/oder Operationen 800, die durch das Flussdiagramm von 8 dargestellt werden, kann durch die FPGA-Schaltungsanordnung 1100 von 11 ausgeführt werden.
  • In manchen Beispielen kann sich die Prozessorschaltungsanordnung 912 von 9 in einem oder mehreren Gehäusen befinden. Zum Beispiel können sich der Mikroprozessor 1000 von 10 und/oder die FPGA-Schaltungsanordnung 1100 von 11 in einem oder mehreren Gehäusen befinden. In manchen Beispielen kann eine XPU durch die Prozessorschaltungsanordnung 912 von 9 implementiert werden, die sich in einem oder mehreren Gehäusen befinden kann. Zum Beispiel kann die XPU eine CPU in einem Gehäuse, einen DSP in einem anderen Gehäuse, eine GPU in noch einem anderen Gehäuse und ein FPGA in noch einem anderen Gehäuse beinhalten.
  • Ein Blockdiagramm, das eine beispielhafte Softwareverteilungsplattform 1205 zum Verteilen von Software wie etwa den beispielhaften maschinenlesbaren Anweisungen 932 von 9 an Hardwarevorrichtungen veranschaulicht, die Drittparteien gehören und/oder von diesen betrieben werden, ist in 12 veranschaulicht. Die beispielhafte Softwareverteilungsplattform 1205 kann durch einen beliebigen Computerserver, eine beliebige Dateneinrichtung, einen beliebigen Cloud-Dienst usw. implementiert werden, der in der Lage ist, Software zu speichern und zu anderen Rechenvorrichtungen zu übertragen. Die Drittparteien können Kunden der Entität sein, die die Softwareverteilungsplattform 1205 besitzt und/oder betreibt. Zum Beispiel kann die Entität, die die Softwareverteilungsplattform 1205 besitzt und/oder betreibt, ein Entwickler, ein Verkäufer und/oder ein Lizenzgeber von Software wie etwa der beispielhaften maschinenlesbaren Anweisungen 932 von 9 sein. Die Drittparteien können Verbraucher, Benutzer, Einzelhändler, OEMs usw. sein, die die Software zur Verwendung erwerben und/oder lizenzieren und/oder wiederverkaufen und/oder sublizenzieren. Im veranschaulichten Beispiel beinhaltet der Softwareverteilungsplattform 1205 einen oder mehrere Server und eine oder mehrere Speichervorrichtungen. Die Speichervorrichtungen speichern die maschinenlesbaren Anweisungen 932, die den beispielhaften maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 entsprechen können, wie oben beschrieben. Der eine oder die mehreren Server der beispielhaften Softwareverteilungsplattform 1205 stehen in Kommunikation mit einem Netzwerk 1210, das einem beliebigen oder mehreren beliebigen des Internets und/oder eines beliebigen der oben beschriebenen beispielhaften Edge-Cloud 110 entsprechen kann. In manchen Beispielen reagieren der eine oder die mehreren Server auf Anforderungen, die Software als Teil einer kommerziellen Transaktion an eine anfordernde Partei zu übertragen. Die Zahlung für die Lieferung, den Verkauf und/oder die Lizenz der Software kann durch den einen oder die mehreren Server des Softwareverteilungsplattform und/oder durch eine Drittpartei-Zahlungsentität gehandhabt werden. Die Server ermöglichen Käufern und/oder Lizenzgebern, die maschinenlesbaren Anweisungen 932 von der Softwareverteilungsplattform 1205 herunterzuladen. Zum Beispiel kann die Software, die den beispielhaften maschinenlesbaren Anweisungen und/oder Operationen 800 von 8 entsprechen kann, auf die beispielhafte Prozessorplattform 900 heruntergeladen werden, die die maschinenlesbaren Anweisungen 932 ausführen soll, um die Cache-Steuerschaltungsanordnung 514 zu implementieren. In manchen Beispielen bieten ein oder mehrere Server der Softwareverteilungsplattform 1205 periodisch Aktualisierungen an, übertragen und/oder erzwingen diese an die Software (z. B. die beispielhaften maschinenlesbaren Anweisungen 932 von 9), um sicherzustellen, dass Verbesserungen, Patches, Aktualisierungen usw. verteilt und auf die Software an den Endbenutzervorrichtungen angewandt werden.
  • Aus dem Vorstehenden versteht es sich, dass beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel offenbart wurden, die verfügbaren Cache effizienter nutzen, indem die Cache-Regionen jeder Warteschlange basierend auf der Verkehrsklasse der zu jeweiligen Warteschlangen zugeordneten Datenströme dynamisch bemessen werden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung durch Eliminieren von Cache-Redundanz, wodurch die gesamte Cache-Größe reduziert wird und Fläche, Leistung und Die-Kosten (z. B. Investitionsaufwand) für Hersteller und Kunden eingespart werden. Offenbarte Systeme, Verfahren, Einrichtungen und Herstellungsartikel betreffen dementsprechend eine oder mehrere Verbesserungen des Betriebs einer Maschine, wie etwa eines Computers oder einer anderen elektronischen und/oder mechanischen Vorrichtung.
  • Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel zum dynamischen Zuweisen von Cache sind hierin offenbart. Als weitere Beispiele und Kombinationen davon seien genannt:
  • Beispiel 1 beinhaltet eine Einrichtung, die Folgendes umfasst: einen Cache mit einer Warteschlange, eine Datenstromklassifizierungsschaltungsanordnung zum Decodieren eines Datenstroms, der Warteschlange des Caches zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen, und eine Cache-Verwaltungsschaltungsanordnung, um basierend auf der Verkehrsklasse, die der Warteschlange zugewiesen ist, einen Teil des Caches der Warteschlange zuzuweisen und ein Signal an eine Speichersteuerung zu senden, um die Zuweisung des Caches anzupassen.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 optional beinhalten, dass die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist, die Datenstromklassifizierungsschaltungsanordnung den Datenstrom decodieren soll, der der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist, und die Cache-Verwaltungsschaltungsanordnung ausgelegt ist zum Zuweisen eines zweiten Teils des zweiten Caches zu der zweiten Warteschlange und Senden eines zweiten Signals an die Speichersteuerung zum Anpassen der Zuweisung des zweiten Caches basierend auf der Verkehrsklasse, die der zweiten Warteschlange zugeordnet ist.
  • In Beispiel 3 kann der Gegenstand der Beispiele 1-2 optional beinhalten, dass der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  • In Beispiel 4 kann der Gegenstand der Beispiele 1-3 optional beinhalten, dass die Cache-Verwaltungsschaltungsanordnung den Teil des Caches der Warteschlange basierend auf einer Größe eines Pakets der Verkehrsklasse, die der Warteschlange zugeordnet ist, zuweisen soll.
  • In Beispiel 5 kann der Gegenstand der Beispiele 1-4 optional beinhalten, dass die Cache-Verwaltungsschaltungsanordnung den Teil des Caches der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuweisen soll.
  • In Beispiel 6 kann der Gegenstand der Beispiele 1-5 optional beinhalten, dass die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  • In Beispiel 7 kann der Gegenstand der Beispiele 1-6 optional beinhalten, dass die Anwendung, die die Übertragung des Datenstroms anfordert, in einer Informationstechnologie-Betriebstechnologieumgebung implementiert ist.
  • Beispiel 8 beinhaltet eine Einrichtung, die Folgendes umfasst: einen Cache einschließlich einer Warteschlange, eine Prozessorschaltungsanordnung einschließlich einer Zentralprozessoreinheit (CPU), einer Grafikverarbeitungseinheit (GPU) und/oder eines Digitalsignalprozessors (DSP), wobei die CPU, die GPU und/oder der DSP beinhaltet: eine Steuerschaltungsanordnung zum Steuern einer Datenbewegung innerhalb der Prozessorschaltungsanordnung, eine Arithmetik-und-Logik-Schaltungsanordnung zum Durchführen einer oder mehrerer erster Operationen, die Anweisungen entsprechen, und eines oder mehrere Register zum Speichern eines ersten Ergebnisses der einen oder der mehreren ersten Operationen, die Anweisungen in der Einrichtung, ein feldprogrammierbares Gate-Array (FPGA), wobei das FPGA eine erste Logikgatterschaltungsanordnung, mehrere konfigurierbare Zwischenverbindungen und eine Speicherschaltungsanordnung beinhaltet, wobei die erste Logikgatterschaltungsanordnung und die mehreren konfigurierbaren Zwischenverbindungen eine oder mehrere zweite Operationen durchführen sollen, wobei die Speicherschaltungsanordnung ein zweites Ergebnis der einen oder der mehreren zweiten Operationen speichern soll, oder eine anwendungsspezifische integrierte Schaltung (ASIC: Application Specific Integrated Circuitry), die eine zweite Logikgatterschaltungsanordnung zum Durchführen einer oder mehrerer dritter Operationen beinhaltet, wobei die Prozessorschaltungsanordnung dient zum Durchführen der ersten Operationen, der zweiten Operationen oder der dritten Operationen zum Instanziieren einer Datenstromklassifizierungsschaltung zum Decodieren eines Datenstroms, der der Warteschlange des Caches zugewiesen ist, um eine Verkehrsklasse zu bestimmen, die der Warteschlange zugeordnet ist, und eine Cache-Verwaltungsschaltungsanordnung, um basierend auf der Verkehrsklasse, die der Warteschlange zugeordnet ist, einen Teil des Caches der Warteschlange zuzuweisen und ein Signal an eine Speichersteuerung zu senden, um die Zuweisung des Caches anzupassen.
  • In Beispiel 9 kann der Gegenstand von Beispiel 8 optional beinhalten, dass die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist und die Prozessorschaltungsanordnung dazu dient, die mindestens eine der ersten Operationen, der zweiten Operationen oder der dritten Operationen zum Instanziieren der Datenstromklassifizierungsschaltung zum Decodieren des Datenstroms durchzuführen, der der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugewiesen ist, und die Cache-Verwaltungsschaltungsanordnung dazu ausgelegt ist, basierend auf der Verkehrsklasse, die der zweiten Warteschlange zugewiesen ist, einen zweiten Teil des zweiten Caches der zweiten Warteschlange zuzuweisen und ein zweites Signal an den Speichersteuerung zu übertragen, um die Zuweisung des zweiten Caches anzupassen.
  • In Beispiel 10 kann der Gegenstand der Beispiele 8-9 optional beinhalten, dass der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  • In Beispiel 11 kann der Gegenstand der Beispiele 8-10 optional beinhalten, dass die Prozessorschaltungsanordnung dazu dient, die ersten, die zweiten und/oder die dritten Operationen durchzuführen, um die Cache-Verwaltungsschaltungsanordnung zu instanziieren, um den Teil des Caches der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugewiesenen Verkehrsklasse zuzuweisen.
  • In Beispiel 12 kann der Gegenstand der Beispiele 8-11 optional beinhalten, dass die Prozessorschaltungsanordnung dazu dient, die ersten, die zweiten und/oder die dritten Operationen durchzuführen, um die Cache-Verwaltungsschaltungsanordnung zu instanziieren, um den Teil des Caches der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  • In Beispiel 13 kann der Gegenstand der Beispiele 8-12 optional beinhalten, dass die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  • In Beispiel 14 kann der Gegenstand der Beispiele 8-13 optional beinhalten, dass die Anwendung, die die Übertragung des Datenstroms anfordert, in einer Informationstechnologie-Betriebstechnologieumgebung implementiert ist.
  • Beispiel 15 beinhaltet ein nichtflüchtiges computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass eine Prozessorschaltungsanordnung zumindest einen Datenstrom decodiert, der einer Warteschlange eines Caches zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen, einen Teil des Caches basierend auf der Verkehrsklasse, die der Warteschlange zugeordnet ist, der Warteschlange zuweist und ein Signal zum Anpassen der Zuweisung des Caches an eine Speichersteuerung sendet.
  • In Beispiel 16 kann der Gegenstand des Beispiels 15 optional beinhalten, dass die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist und die Anweisungen bei Ausführung bewirken, dass die Prozessorschaltungsanordnung den Datenstrom decodiert, der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, um die Verkehrsklasse, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist, basierend auf der Verkehrsklasse, die der zweiten Warteschlange zugeordnet ist, zu bestimmen, der zweiten Warteschlange eines zweiten Teils des zweiten Caches zuweist und ein zweites Signal an die Speichersteuerung sendet, um die Zuweisung des zweiten Caches anzupassen.
  • In Beispiel 17 kann der Gegenstand der Beispiele 15-16 optional beinhalten, dass der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  • In Beispiel 18 kann der Gegenstand der Beispiele 15-17 optional beinhalten, dass die Anweisungen, wenn sie ausgeführt werden, die Prozessorschaltungsanordnung veranlassen, den Teil des Caches der Warteschlange basierend auf einer Größe eines Pakets der Verkehrsklasse, das der Warteschlange zugeordnet ist, zuzuweisen.
  • In Beispiel 19 kann der Gegenstand der Beispiele 15-18 optional beinhalten, dass die Anweisungen bei Ausführung die Prozessorschaltungsanordnung veranlassen, den Teil des Caches der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  • In Beispiel 20 kann der Gegenstand der Beispiele 15-19 optional beinhalten, dass die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  • In Beispiel 21 kann der Gegenstand der Beispiele 15-20 optional beinhalten, dass die Anwendung, die die Übertragung des Datenstroms anfordert, in einer Informationstechnologie-Betriebstechnologieumgebung implementiert ist.
  • Beispiel 22 beinhaltet eine Vorrichtung, die Folgendes umfasst: Mittel zum Speichern mit einer Warteschlange, Mittel zum Klassifizieren eines oder mehrerer Datenströme zum Decodieren eines Datenstroms, der der Warteschlange des Mittels zum Speichern zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen, und Mittel zum Verwalten eines oder mehrerer Mittel zum Speichern, um basierend auf der Verkehrsklasse, die der Warteschlange zugewiesen ist, einen Teil des Mittels zum Speichern der Warteschlange zuzuweisen und ein Signal an eine Speichersteuerung zu senden, um die Zuweisung des Mittels zum Speichern anzupassen.
  • Bei Beispiel 23 kann der Gegenstand des Beispiels 22 optional beinhalten, dass die Warteschlange eine erste Warteschlange ist, die Mittel zum Speichern erste Mittel zum Speichern sind, der Teil ein erster Teil ist, das Signal ein erstes Signal ist, das Mittel zum Klassifizieren des einen oder der mehreren Datenströme dazu dient, den Datenstrom zu decodieren, der der ersten Warteschlange des ersten Mittels zum Speichern und einer zweite Warteschlange des zweiten Mittels zum Speichern zu zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist, und das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern dazu dient, basierend auf der Verkehrsklasse, die der zweiten Warteschlange zugeordnet ist, einen zweiten Teil des zweiten Mittels zum Speichern der zweiten Warteschlange zuzuweisen und ein zweites Signal an die Speichersteuerung zu senden, um die Zuweisung des zweiten Mittels zum Speichern anzupassen.
  • In Beispiel 24 kann der Gegenstand der Beispiele 22-23 optional beinhalten, dass das erste Mittel zum Speichern Mittel zum Speichern eines oder mehrerer Deskriptoren beinhaltet und das zweite Mittel zum Speichern Mittel zum Speichern von Daten beinhaltet.
  • In Beispiel 25 kann der Gegenstand der Beispiele 22-24 optional beinhalten, dass das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern dazu dient, den Teil des Mittels zum Speichern der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  • Bei Beispiel 26 kann der Gegenstand der Beispiele 22-25 optional beinhalten, dass das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern dazu dient, den Teil des Mittels zum Speichern der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuweisen soll.
  • In Beispiel 27 kann der Gegenstand der Beispiele 22-26 optional beinhalten, dass die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  • In Beispiel 28 kann der Gegenstand der Beispiele 22-27 optional beinhalten, dass die Anwendung, die die Übertragung des Datenstroms anfordert, in einer Informationstechnologie-Betriebstechnologieumgebung implementiert ist.
  • Beispiel 29 beinhaltet ein Verfahren, das Decodieren eines Datenstroms, der einer Warteschlange eines Caches zugewiesen ist, zur Bestimmung einer der Warteschlange zugeordneten Verkehrsklasse basierend auf der Warteschlange zugeordneten Verkehrsklasse, Zuweisen eines Teils des Caches zu der Warteschlange und Senden eines Signals an eine Speichersteuerung zum Anpassen der Zuweisung des Caches umfasst.
  • In Beispiel 30 kann der Gegenstand des Beispiels 29 optional beinhalten, dass die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist, und das Verfahren ferner Decodieren des Datenstroms, der der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, zur Bestimmung der Verkehrsklasse, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist, basierend auf der Verkehrsklasse, die der zweiten Warteschlange zugewiesen ist, Zuweisen eines zweiten Teils des zweiten Caches zu der zweiten Warteschlange und Senden eines zweiten Signals an die Speichersteuerung zum Anpassen der Zuweisung des zweiten Caches umfasst.
  • In Beispiel 31 kann der Gegenstand der Beispiele 29-30 optional beinhalten, dass der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  • In Beispiel 32 kann der Gegenstand der Beispiele 29-32 optional Zuweisen des Teils des Caches zu der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugeordneten Verkehrsklasse beinhalten.
  • In Beispiel 33 kann der Gegenstand der Beispiele 29-32 optional Zuweisen des Teils des Caches zu der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse beinhalten.
  • In Beispiel 34 kann der Gegenstand der Beispiele 29-33 optional beinhalten, dass die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  • In Beispiel 35 kann der Gegenstand der Beispiele 29-34 optional beinhalten, dass die Anwendung, die die Übertragung des Datenstroms anfordert, in einer Informationstechnologie-Betriebstechnologieumgebung implementiert ist.
  • Beispiel 36 ist mindestens ein computerlesbares Medium, das Anweisungen zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 37 ist eine Einrichtung, die eine Prozessorschaltungsanordnung zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 38 ist eine Einrichtung, die eine Beschleunigerschaltungsanordnung zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 39 ist eine Einrichtung, die eine oder mehrere Grafikprozessor-Einheiten zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 40 ist eine Einrichtung, die eine oder mehrere Vision-Prozessoreinheiten zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 41 ist eine Einrichtung, die einen oder mehrere Neuronalnetzprozessoren zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 42 ist eine Einrichtung, die einen oder mehrere Maschinenlernprozessoren zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 43 ist eine Einrichtung, die einen oder mehrere Universalprozessoren zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 44 ist eine Einrichtung, die einen oder mehrere Digitalsignalprozessoren zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 45 ist ein Edge-Server, der eine Prozessorschaltungsanordnung und/oder eine Beschleunigerschaltungsanordnung zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 46 ist eine Edge-Cloud, der eine Prozessorschaltungsanordnung und/oder eine Beschleunigerschaltungsanordnung zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 47 ist ein Edge-Knoten, der eine Prozessorschaltungsanordnung und/oder eine Beschleunigerschaltungsanordnung zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 48 ist eine Einrichtung, die ein oder mehrere Edge-Gateways zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 49 ist eine Einrichtung, die einen oder mehrere Edge-Schalter zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Beispiel 50 ist eine Einrichtung, die mindestens eines von einem oder mehreren Edge-Gateways oder einem oder mehreren Edge-Switches zum Durchführen des Verfahrens nach einem der Beispiele 29-35 umfasst.
  • Obwohl gewisse beispielhafte Systeme, Verfahren, Einrichtungen und Herstellungsartikel hierin offenbart wurden, ist der Schutzumfang dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle Systeme, Verfahren, Einrichtungen und Herstellungsartikel ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.
  • Die folgenden Ansprüche werden hiermit durch diese Bezugnahme in diese ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als eine separate Ausführungsform der vorliegenden Offenbarung steht.

Claims (25)

  1. Einrichtung, umfassend: einen Cache, der eine Warteschlange beinhaltet; eine Prozessorschaltungsanordnung, die eines oder mehrere von Folgendem beinhaltet: eine Zentralprozessoreinheit (CPU), eine Grafikverarbeitungseinheit (GPU) und/oder einen Digitalsignalprozessor (DSP), wobei die CPU, die GPU und/oder der DSP eine Steuerschaltungsanordnung zum Steuern einer Datenbewegung innerhalb der Prozessorschaltungsanordnung, eine Arithmetik- und Logik-Schaltungsanordnung zum Durchführen einer oder mehrerer erster Operationen, die Anweisungen entsprechen, und ein oder mehrere Register zum Speichern eines ersten Ergebnisses der einen oder der mehreren ersten Operationen, die Anweisungen in der Einrichtung beinhaltet; ein feldprogrammierbares Gate-Array (FPGA), wobei das FPGA eine erste Logikgatterschaltungsanordnung, mehrere konfigurierbare Zwischenverbindungen und eine Speicherschaltungsanordnung beinhaltet, wobei die erste Logikgatterschaltungsanordnung und die mehreren konfigurierbaren Zwischenverbindungen dazu dienen, eine oder mehrere zweite Operationen durchzuführen, wobei die Speicherschaltungsanordnung dazu dient, ein zweites Ergebnis der einen oder der mehreren zweiten Operationen zu speichern; oder eine anwendungsspezifische integrierte Schaltungsanordnung (ASIC: Application Specific Integrated Circuitry) einschließlich einer zweiten Logikgatterschaltungsanordnung zum Durchführen einer oder mehrerer dritter Operationen; wobei die Prozessorschaltungsanordnung zum Durchführen der ersten Operationen, der zweiten Operationen und/oder der Operationen dient, um Folgendes zu instanziieren: eine Datenstromklassifizierungsschaltungsanordnung zum Decodieren eines Datenstroms, der der Warteschlange des Caches zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen; und eine Cache-Verwaltungsschaltungsanordnung zum: basierend auf der der Warteschlange zugeordneten Verkehrsklasse Zuweisen eines Teils des Caches zu der Warteschlange; und Senden eines Signals an eine Speichersteuerung, um die Zuweisung des Caches anzupassen.
  2. Vorrichtung nach Anspruch 1, wobei die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist und die Prozessorschaltungsanordnung dazu dient, die ersten Operationen, die zweiten und/oder die dritten Operationen durchzuführen, um Folgendes zu instanziieren: die Datenstromklassifizierungsschaltungsanordnung zum Decodieren des Datenstroms, der der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist; und die Cache-Verwaltungsschaltungsanordnung zum: basierend auf der der zweiten Warteschlange zugeordneten Verkehrsklasse Zuweisen eines zweiten Teils des zweiten Caches zu der zweiten Warteschlange; und Senden eines zweiten Signals an die Speichersteuerung, um die Zuweisung des zweiten Caches anzupassen.
  3. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  4. Einrichtung nach einem der Ansprüche 1, 2 oder 3, wobei die Prozessorschaltungsanordnung dazu dient, die ersten Operationen, die zweiten Operationen und/oder die dritten Operationen durchzuführen, um die Cache-Verwaltungsschaltungsanordnung zu instanziieren, um den Teil des Caches der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  5. Einrichtung nach einem der Ansprüche 1, 2, 3 oder 4, wobei die Prozessorschaltungsanordnung dazu dient, die ersten Operationen, die zweiten und/oder die dritten Operationen durchzuführen, um die Cache-Verwaltungsschaltungsanordnung zu instanziieren, um den Teil des Caches der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  6. Vorrichtung nach einem der Ansprüche 1, 2, 3, 4 oder 5, wobei die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  7. Einrichtung nach einem der Ansprüche 1, 2, 3, 4, 5 oder 6, wobei die Anwendung, die eine Übertragung des Datenstroms anfordert, in einer Informationstechnologie-/Betriebstechnologieumgebung implementiert ist.
  8. Computerlesbares Medium, das Anweisungen umfasst, die bei Ausführung bewirken, dass eine Prozessorschaltungsanordnung mindestens Folgendes ausführt: Decodieren eines Datenstroms, der einer Warteschlange eines Caches zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen; basierend auf der der Warteschlange zugeordneten Verkehrsklasse Zuweisen eines Teils des Caches zu der Warteschlange; und Senden eines Signals an eine Speichersteuerung, um die Zuweisung des Caches anzupassen.
  9. Computerlesbares Medium nach Anspruch 8, wobei die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist und die Anweisungen bei Ausführung die Prozessorschaltungsanordnung zu Folgendem veranlassen: Decodieren des Datenstroms, der der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist; basierend auf der der zweiten Warteschlange zugeordneten Verkehrsklasse Zuweisen eines zweiten Teils des zweiten Caches zu der zweiten Warteschlange; und Senden eines zweiten Signals an die Speichersteuerung, um die Zuweisung des zweiten Caches anzupassen.
  10. Computerlesbares Medium nach einem der Ansprüche 8 oder 9, wobei der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  11. Computerlesbares Medium nach einem der Ansprüche 8, 9 oder 10, wobei die Anweisungen bei Ausführung die Prozessorschaltungsanordnung veranlassen, den Teil des Caches der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  12. Computerlesbares Medium nach einem der Ansprüche 8, 9, 10 oder 11, wobei die Anweisungen bei Ausführung die Prozessorschaltungsanordnung veranlassen, den Teil des Caches der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  13. Computerlesbares Medium nach einem der Ansprüche 8, 9, 10, 11 oder 12, wobei die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  14. Computerlesbares Medium nach einem der Ansprüche 8, 9, 10, 11, 12 oder 13, wobei die Anwendung, die eine Übertragung des Datenstroms anfordert, in einer Informationstechnologie-/Betriebstechnologieumgebung implementiert ist.
  15. Einrichtung, umfassend: Mittel zum Speichern mit einer Warteschlange; Mittel zum Klassifizieren eines oder mehrerer Datenströme, um einen Datenstrom zu decodieren, der der Warteschlange des Mittels zum Speichern zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen; und Mittel zum Verwalten eines oder mehrerer Mittel zum Speichern zum: basierend auf der der Warteschlange zugeordneten Verkehrsklasse Zuweisen eines Teils des Mittels zum Speichern zu der Warteschlange; und Senden eines Signals an eine Speichersteuerung, um die Zuweisung des Mittels zum Speichern anzupassen.
  16. Vorrichtung nach Anspruch 15, wobei die Warteschlange eine erste Warteschlange ist, das Mittel zum Speichern ein erstes Mittel zum Speichern ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist, das Mittel zum Klassifizieren des einen oder der mehreren Datenströme dazu dient, den Datenstrom zu decodieren, der der ersten Warteschlange des ersten Mittels zum Speichern und einer zweiten Warteschlange des zweiten Mittels zum Speichern zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist, und das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern dient zum: basierend auf der der zweiten Warteschlange zugeordneten Verkehrsklasse Zuweisen eines zweiten Teils des zweiten Mittels zum Speichern zu der zweiten Warteschlange; und Senden eines zweiten Signals an die Speichersteuerung, um die Zuweisung des zweiten Mittels zum Speichern anzupassen.
  17. Vorrichtung nach einem der Ansprüche 15 oder 16, wobei das erste Mittel zum Speichern ein Mittel zum Speichern eines oder mehrerer Deskriptoren beinhaltet und das zweite Mittel zum Speichern ein Mittel zum Speichern von Daten beinhaltet.
  18. Vorrichtung nach einem der Ansprüche 15, 16 oder 17, wobei das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern dazu dient, den Teil des Mittels zum Speichern der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  19. Vorrichtung nach einem der Ansprüche 15, 16, 17 oder 18, wobei das Mittel zum Verwalten des einen oder der mehreren Mittel zum Speichern dazu dient, den Teil des Mittels zum Speichern der Warteschlange basierend auf einer Priorität der der Warteschlange zugeordneten Verkehrsklasse zuzuweisen.
  20. Vorrichtung nach einem der Ansprüche 15, 16, 17, 18 oder 19, wobei die Verkehrsklasse der Warteschlange durch eine Anwendung zugeordnet wurde, die eine Übertragung des Datenstroms anfordert.
  21. Einrichtung nach einem der Ansprüche 15, 16, 17, 18, 19 oder 20, wobei die Anwendung, die eine Übertragung des Datenstroms anfordert, in einer Informationstechnologie-Betriebstechnologieumgebung implementiert ist.
  22. Verfahren, umfassend: Decodieren eines Datenstroms, der einer Warteschlange eines Caches zugewiesen ist, um eine der Warteschlange zugeordnete Verkehrsklasse zu bestimmen; basierend auf der der Warteschlange zugeordneten Verkehrsklasse Zuweisen eines Teils des Caches zu der Warteschlange; und Senden eines Signals an eine Speichersteuerung, um die Zuweisung des Caches anzupassen.
  23. Verfahren nach Anspruch 22, wobei die Warteschlange eine erste Warteschlange ist, der Cache ein erster Cache ist, der Teil ein erster Teil ist, das Signal ein erstes Signal ist und das Verfahren ferner Folgendes beinhaltet: Decodieren des Datenstroms, der der ersten Warteschlange des ersten Caches und einer zweiten Warteschlange eines zweiten Caches zugewiesen ist, um die Verkehrsklasse zu bestimmen, die der ersten Warteschlange und der zweiten Warteschlange zugeordnet ist; basierend auf der Verkehrsklasse, die der zweiten Warteschlange zugeordnet ist, Zuweisen eines zweiten Teils des zweiten Caches zu der zweiten Warteschlange; und Senden eines zweiten Signals an die Speichersteuerung, um die Zuweisung des zweiten Caches anzupassen.
  24. Verfahren nach einem der Ansprüche 22 oder 23, wobei der erste Cache einen Deskriptor-Cache beinhaltet und der zweite Cache einen Daten-Cache beinhaltet.
  25. Verfahren nach einem der Ansprüche 22, 23 oder 24, das ferner Zuweisen des Teils des Caches zu der Warteschlange basierend auf einer Größe eines Pakets der der Warteschlange zugeordneten Verkehrsklasse beinhaltet.
DE102022202554.7A 2021-06-25 2022-03-15 Verfahren, einrichtungen und herstellungsartikel zum dynamischen zuweisen von cache Pending DE102022202554A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/359,139 US20210328944A1 (en) 2021-06-25 2021-06-25 Methods, apparatus, and articles of manufacture to dynamically allocate cache
US17/359,139 2021-06-25

Publications (1)

Publication Number Publication Date
DE102022202554A1 true DE102022202554A1 (de) 2022-12-29

Family

ID=78082318

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022202554.7A Pending DE102022202554A1 (de) 2021-06-25 2022-03-15 Verfahren, einrichtungen und herstellungsartikel zum dynamischen zuweisen von cache

Country Status (3)

Country Link
US (1) US20210328944A1 (de)
DE (1) DE102022202554A1 (de)
TW (1) TW202301843A (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021130836A1 (de) 2020-11-24 2022-05-25 Ifm Electronic Gmbh Computersystem für die Automatisierungstechnik
US11374872B1 (en) * 2020-12-08 2022-06-28 Pensando Systems, Inc. Methods and systems for adaptive network quality of service for latency critical applications
JP7467325B2 (ja) * 2020-12-17 2024-04-15 株式会社東芝 通信制御装置、通信制御方法、情報処理装置、情報処理方法、および、プログラム
CN114116556A (zh) * 2021-10-29 2022-03-01 山东云海国创云计算装备产业创新中心有限公司 一种动态分配队列缓存的方法、系统、存储介质及设备
CN115884114A (zh) * 2022-11-29 2023-03-31 四川启睿克科技有限公司 一种基于边缘计算的蓝牙mesh控制优化方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146873B2 (en) * 2012-03-30 2015-09-29 Intel Corporation Adaptive queuing of a cache for a processing element
US8949222B2 (en) * 2012-05-11 2015-02-03 International Business Machines Corporation Changing the compression level of query plans
US9501420B2 (en) * 2014-10-22 2016-11-22 Netapp, Inc. Cache optimization technique for large working data sets
US9954792B2 (en) * 2014-12-20 2018-04-24 Intel Corporation Shared flow control credits
US11178023B2 (en) * 2017-06-30 2021-11-16 Intel Corporation Data plane interface network quality of service in multi-tenant data centers
CN110086865B (zh) * 2019-04-23 2021-01-29 成都光航信科技有限公司 一种支持多个fc-ae-1553节点并行工作的节点卡及其实现方法
US20190280991A1 (en) * 2019-05-16 2019-09-12 Intel Corporation Quality of service traffic management in high-speed packet processing systems

Also Published As

Publication number Publication date
TW202301843A (zh) 2023-01-01
US20210328944A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
US20220116455A1 (en) Computational storage in a function-as-a-service architecture
US20210014114A1 (en) Methods, apparatus, and articles of manufacture for workload placement in an edge environment
DE102021209145A1 (de) Verfahren und vorrichtung zum koordinieren von edge-plattformen
EP3985511A1 (de) Orchestrierung von netzen
DE102022202554A1 (de) Verfahren, einrichtungen und herstellungsartikel zum dynamischen zuweisen von cache
DE102020203877A1 (de) Verfahren und einrichtungen zum steuern einer verarbeitung von telemetriedaten auf einer edge-plattform
US20210119962A1 (en) Neutral host edge services
DE102022203247A1 (de) Disintermedierte Attestierung in einem MEC-Service-MESH-Framework
DE112020003742T5 (de) Verfahren, systeme, erzeugnisse und vorrichtungen zur verbesserung von jobplanungseffizienz
US20210014303A1 (en) Methods and apparatus to manage quality of service with respect to service level agreements in a computing device
US20210328886A1 (en) Methods and apparatus to facilitate service proxying
US20230376344A1 (en) An edge-to-datacenter approach to workload migration
DE102021117809A1 (de) Einrichtungen, Systeme, Fabrikate und Verfahren zur Datenlebenszyklusverwaltung in einer Edge-Umgebung
DE102021209043A1 (de) Methods and apparatus to select a location of execution of a computation
US20220116478A1 (en) Microservice latency reduction
DE102022203111A1 (de) Auf netzwerkfluss basierende hardwarezuweisung
DE102021211772A1 (de) Verfahren und einrichtung zur ermöglichung von sicherem multikohärentem poolspeicher in einem edge-netzwerk
DE102021210882A1 (de) Erweitertes peer-to-peer (p2p) mit edge-vernetzung
EP4203564A1 (de) Adaptive automatische cloud-skalierung
DE102022208684A1 (de) Verfahren und einrichtung für resilienz mithilfe digitaler zwillinge
US20220114032A1 (en) Infrastructure managed workload distribution
DE112020007229T5 (de) Föderiertes mec-framework für kraftfahrzeugdienste
US20220121566A1 (en) Methods, systems, articles of manufacture and apparatus for network service management
DE102022202682A1 (de) Systeme, einrichtungen und verfahren zur edge-daten-priorisierung
DE102021121267A1 (de) Verfahren, Systeme, Vorrichtungen und Erzeugnisse zur Verwaltung des Zugriffs auf dezentrale Data Lakes