DE102020130555A1 - Adaptiver datenversand basierend auf lastfunktionen - Google Patents

Adaptiver datenversand basierend auf lastfunktionen Download PDF

Info

Publication number
DE102020130555A1
DE102020130555A1 DE102020130555.9A DE102020130555A DE102020130555A1 DE 102020130555 A1 DE102020130555 A1 DE 102020130555A1 DE 102020130555 A DE102020130555 A DE 102020130555A DE 102020130555 A1 DE102020130555 A1 DE 102020130555A1
Authority
DE
Germany
Prior art keywords
function
computing element
candidate computing
load
estimated
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
DE102020130555.9A
Other languages
English (en)
Inventor
Francesc Guim Bernat
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 DE102020130555A1 publication Critical patent/DE102020130555A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

Eine Vorrichtung, umfassend eine Schnittstelle zum Empfangen einer Identifikation einer auszuführenden Funktion; und eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, wobei die Scheduling-Maschine ausgebildet ist, ein Kandidaten-Rechenelement aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last auszuwählen, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.

Description

  • HINTERGRUND
  • Eine Recheninfrastruktur kann eine oder mehrere Plattformen umfassen, die jeweils zumindest einen Prozessor und zugeordnete Speicher- (memory) Module umfassen. Jede Plattform der Recheninfrastruktur kann die Performance irgendeiner geeigneten Anzahl von Funktionen ermöglichen, die verschiedenen Anwendungen zugeordnet sind, die auf der Plattform laufen oder mit der Plattform gekoppelt sind. Diese Funktionen können durch die Prozessoren und andere zugeordnete Logik der Plattformen ausgeführt werden.
  • Figurenliste
    • 1 stellt ein Rechensystem gemäß bestimmten Ausführungsbeispielen dar.
    • 2 stellt einen lastadaptiven Scheduler gemäß bestimmten Ausführungsbeispielen dar.
    • 3 stellt beispielhafte Datenversand-Optionen gemäß bestimmten Ausführungsbeispielen dar.
    • 4 stellt einen Ablauf für adaptiven Datenversand gemäß bestimmten Ausführungsbeispielen dar.
    • 5 zeigt ein System gemäß bestimmten Ausführungsbeispielen.
    • 6 zeigt ein System gemäß bestimmten Ausführungsbeispielen.
    • 7 zeigt ein System gemäß bestimmten Ausführungsbeispielen.
    • 8 zeigt eine beispielhafte Umgebung gemäß bestimmten Ausführungsbeispielen.
    • 9 zeigt eine Netzwerkschnittstelle, die Ausführungsbeispiele verwenden oder durch Ausführungsbeispiele verwendet werden kann.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • DETAILLIERTE BESCHREIBUNG
  • 1 stellt ein Blockdiagramm von Komponenten einer Recheninfrastruktur 100 gemäß bestimmten Ausführungsbeispielen dar. Bei dem gezeigten Ausführungsbeispiel umfasst die Recheninfrastruktur 100 eine Plattform 102 und einen Funktionsanforderer 104, der mit der Plattform 102 interagiert. Die Plattform 102 umfasst einen lastadaptiven Scheduler 106, der Anforderungen von dem Funktionsanforderer 104 empfängt und Rechen- und Datenübertragungsressourcen für die Anforderungen basierend auf einer oder mehreren Lastfunktionen zuweist. Der Scheduler 106 kann Ressourcen aus den Rechenelementen 108 und den Verbindungen 112 auswählen. Die Plattform 102 umfasst auch Speicherelemente 110 zum Speichern von Daten, die z. B. Eingaben oder Ausgaben der Anforderungen sein können. Bei verschiedenen Ausführungsbeispielen kann die Plattform 102 Anforderungen von vielen unterschiedlichen Funktionsanforderern 104 bedienen.
  • Bei verschiedenen Ausführungsbeispielen kann die Recheninfrastruktur 100 irgendeine geeignete Kombination von Rechenhosts (z. B. Plattformen 102) darstellen, umfassend verschiedene physische Elemente. Die Recheninfrastruktur 100 kann beispielsweise ein Datenzentrum, eine Kommunikationsdienstanbieter-Infrastruktur (z. B. ein oder mehrere Abschnitte eines Evolved Packet Core- oder 5G-Kernnetzwerks (5G Core Network)), eine Infrastruktur eines Cloud-Dienstanbieters, ein Unternehmensnetzwerk oder eine andere geeignete Recheninfrastruktur, umfassend eine Gruppe von Rechenhosts, umfassen.
  • Eine Rechenplattform kann viele unterschiedliche Arten von Plattformrechenelementen und Transporttechnologien umfassen. Bei dem gezeigten Ausführungsbeispiel umfasst die Plattform 102 beispielsweise Rechenelemente 108, umfassend Prozessoren 110A und 110B, Beschleuniger 112A und 112B, feldprogrammierbare Gate-Arrays (FPGAs; field programmable gate arrays) 114A und 114B, beschleunigte Speicher 116A und 116B und Smart-Netzwerkschnittstellensteuerungen (NICs; network interface controllers) 118A und 118B; sowie Verbindungen 112, umfassend Intra-Element-Verbindungen 124, Inter-Element-Verbindungen 126 und Speicher-Element-Verbindungen 128. Die Fähigkeit einer Plattform, diverse Hardware zu unterstützen, kann flexible und leistungsfähige Architekturen zur Ausführung einer Vielzahl von Arbeitslasten und Funktionen ermöglichen.
  • Einige Rechenumgebungen können ein „Function as a Service“ -Modell unterstützen, wobei anstatt einem Aufweisen einer einzelnen großen Anwendung, die eine Arbeitslast verarbeitet, die Arbeitslast in kleinere Segmente geteilt wird und jedes Segment eine Funktion ausführt. In solchen Umgebungen können die Daten von Funktion zu Funktion durchlaufen und die Funktionen können in unterschiedlichen Komponenten der Plattform ausgeführt werden. Zum Beispiel kann eine erste Funktion durch einen Kern eines Prozessors ausgeführt werden, eine zweite Funktion kann das Ergebnis der ersten Funktion verwenden und durch eine unterschiedliche Komponente der Plattform, wie beispielsweise ein FPGA, ausgeführt werden, und so weiter.
  • In manchen Situationen kann eine bestimmte Funktion durch mehrere unterschiedliche Arten von Rechenelementen der Plattform ausführbar sein, wie z. B. Kerne, FPGAs oder Beschleuniger oder mehrere Instanzen einer bestimmten Art von Rechenelement. Bei bestimmten Ausführungsbeispielen kann das Rechenelement, das eine bestimmte Funktion ausführt (wenn mehrere Rechenelemente die Fähigkeit aufweisen, diese Funktion auszuführen), basierend auf verschiedenen Kriterien wie beispielsweise Performance, Leistungsnutzung oder anderen Kriterien ausgewählt werden. Beispielsweise kann ein Funktionsanforderer, wie beispielsweise ein Dienst, es bevorzugen, eine Kryptofunktion in weniger als 4 ms auszuführen, während ein anderer Dienst es bevorzugen kann, dass die Kryptofunktion in weniger als 15 ms ausgeführt wird, aber eine Ausführung bei einer geringeren Last wünschen kann. Im Allgemeinen gibt es zwei kritische Aspekte, die zu berücksichtigen sind, um zu entscheiden, wo eine Funktion ausgeführt werden soll: die Auslastung des Rechenelements (z. B. kann ein Kern in der Lage sein, ein Ausführungsanforderung von 4 ms zu erfüllen, wenn der Kern bei einer mittleren Auslastung ist, aber nur eine Ausführungszeit von 6 ms erfüllen, wenn der Kern bei einer hohen Auslastung ist) und die Last des Bewegens von zu verarbeitenden Daten von einem Speicherelement zu einem bestimmten Rechenelement, um die Funktionsausführung auszuführen. Die Last zum Bewegen von Daten kann von der Menge der zu bewegenden Daten (z. B. ist die Last zum Bewegen von 1 KB Daten und 10 MB Daten nicht die gleiche) und von dem Zustand der verschiedenen Verbindungen abhängen, die die Daten von dem Speicherungs- (storage) Medium zu dem Rechenelement durchlaufen müssen. Die Last des Bewegens von Daten wird sogar noch relevanter, da Speicherungsmedien-Technologien jetzt Beschleunigungsfähigkeiten umfassen können (wodurch die Last des Bewegens von Daten reduziert wird).
  • Bei einigen Systemen kann die Auswahl von Rechenelementen durch eine softwarebasierte Lösung implementiert werden. Zum Beispiel können unterschiedliche Funktionsanbieter ein Kafka-Framework verwenden, um Funktionen und zu verarbeitende Datennutzlasten auszuwählen, die in einer Datenbank, einem Dateisystem oder einem Objekt-Repository gespeichert sein können. Andere Systeme können Hardware-Elemente verwenden, die die Funktionszuweisung basierend auf der Ressourcenauslastung berücksichtigen. In solchen Fällen können die Ressourcenauslastung und andere Metriken (z. B. Leistung) verwendet werden, um die Funktionszuweisung auszuführen. Metriken und Ressourcenauswahl-Aktionen können jedoch auf die Ressourcenauslastung und darauf, wo Funktionen ausgeführt werden sollen, fokussiert sein, sind aber nicht in der Lage, die Auswirkungen des Bewegens der zu verarbeitenden Daten zu berücksichtigen, die in einigen Fällen die Rechenzeit übersteigen können, abhängig von den zu querenden Verbindungen, der zu übertragenden Datenmenge und der Auslastung der Verbindungen. Ferner reagiert in granularen Ausführungsdomänen (in denen die auszuführenden Funktionen relativ klein sind) ein softwarebasierter Ansatz möglicherweise nicht mit der angesichts des Software-Overheads erforderlichen Zeit.
  • Verschiedene Ausführungsbeispiele der vorliegenden Offenlegung verwenden einen lastadaptiven Scheduler 106, umfassend Hardware-Logik, um dynamisch die optimalen Rechenelemente 108 zur Ausführung von Funktionen basierend auf einer oder mehreren Lastfunktionen zu bestimmen, die sowohl die Datenbewegung als auch Rechenlasten berücksichtigen. Bei einigen Ausführungsbeispielen kann der lastadaptive Scheduler 106, anstatt eine aktuelle Instanz einer Funktion eines Rechenelements auszuwählen, um eine Anforderung auszuführen, bestimmen, eine neue Instanz der Funktion auf einem Rechenelement zu instanziieren, das keine Instanz der Funktion aufweist, und dieses Rechenelement zur Ausführung der Anforderung auswählen. Bei verschiedenen Ausführungsbeispielen kann die Lastfunktion als Dienstdaten plus Ausführung- (SPDE; Service Data Plus Execution) Lastfunktion bezeichnet werden und kann auf den Fähigkeiten und dem Zustand einer oder mehrerer verfügbarer Instanzen der Funktionen in der Plattform sowie auf der dynamischen Last des Bewegens der Eingabedaten von dort, wo sie gespeichert sind, zu den verfügbaren Funktionen und des Bewegens der Ausgabedaten von den Funktionen zu dem Ziel basieren. Bei verschiedenen Ausführungsbeispielen basiert die SPDE-Lastfunktion auf der aktuellen Auslastung und Kapazität jeder der Verbindungen, die die Daten durchlaufen würden. Bei einigen Ausführungsbeispielen basiert die SPDE-Lastfunktion auf einem Service Level Agreement (z. B. einer maximalen Ausführungslatenz), das durch den Funktionsanforderer (z. B. Dienst oder Arbeitslast) benötigt wird.
  • Als ein Beispiel kann eine Plattform Zugriff auf eine Kryptofunktion A in einem Beschleuniger, einem FPGA und einem beschleunigten Speicher (in dem sich die Daten befinden) freigeben. Wenn ein Funktionsanforderer Zugriff auf die Funktion für eine Nutzlast N anfordert, kann der lastadaptive Scheduler 106 basierend auf einer Lastfunktion bestimmen, ob die Funktion A ausgeführt werden soll: (1) durch den Beschleuniger bei Performance X mit Datenbewegungslast Z, (2) durch das FPGA bei Performance 2X bei 2Z Datenbewegungslast oder (3) durch den beschleunigten Speicher bei Performance 4X ohne Datenbewegungslast.
  • Verschiedene Ausführungsbeispiele der vorliegenden Offenbarung können einen oder mehrere technische Vorteile bereitstellen, wie z. B. die Fähigkeit, Ressourcen einer Plattform zu verbrauchen, zu verbessern; die Plattform adaptiver an dynamische Szenarien mit granularen Ausführungsanforderungen zu machen; oder eine erhöhte Skalierbarkeit und verbesserte Gesamtbetriebskosten bereitzustellen aufgrund der Fähigkeit, die Bewegung von Datenressourcen und die Nutzung von Rechenelementen dynamisch zu optimieren.
  • Die Plattform 102 kann irgendwelche geeigneten Rechenelemente umfassen, wie beispielsweise Prozessoren 110, Beschleuniger 112, FPGAs 114, beschleunigte Speicher 116 und Smart-NICs 118. Obwohl bestimmte Rechenelemente gezeigt sind, kann eine Plattform 102 irgendeine geeignete Anzahl von Rechenelementen oder irgendwelche Arten von Rechenelement umfassen, die eine Schaltungsanordnung zur Ausführung von Funktionen umfassen, die durch einen Funktionsanforderer (z. B. 104) angefordert werden.
  • Die Prozessoren 110 können jeweils einen oder mehrere Prozessorkerne oder andere Verarbeitungseinheiten umfassen. Prozessorkerne können auf unterschiedliche Weise, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren implementiert werden. Implementierungen solcher Kerne können zum Beispiel umfassen: 1) einen Allzweck-In-Order-Kern, der zur Allzweck-Berechnung (General-Purpose Computing) vorgesehen ist; 2) einen Hochperformance-Allzweck-Out-Of-Order-Kern, der zur Allzweck-Berechnung vorgesehen ist; und 3) einen Spezialzweck-Kern, der primär für Grafik und/oder wissenschaftliche (Durchsatz) Berechnung vorgesehen ist. Als Beispiele können Implementierungen unterschiedlicher Prozessoren beispielsweise umfassen: 1) eine zentrale Verarbeitungseinheit (CPU; central processing unit), umfassend einen oder mehrere Allzweck-In-Order-Kerne, die zur Allzweckberechnung vorgesehen sind, und/oder einen oder mehrere Allzweck-Out-Of-Order-Kerne, die zur Allzweckberechnung vorgesehen sind; und 2) einen Koprozessor, umfassend einen oder mehrere Spezialzweck-Kerne, die primär für bestimmte Arten von Funktionen wie beispielsweise Grafik und/oder wissenschaftlich (Durchsatz) vorgesehen sind (z. B. eine Grafikverarbeitungseinheit (GPU; graphics processing unit)).
  • Bei einigen Ausführungsbeispielen können die Kerne selbst durch den lastadaptiven Scheduler 106 als Rechenelemente betrachtet werden (somit kann der Scheduler 106 einen bestimmten Kern zur Ausführung einer Funktion auswählen, im Gegensatz zu einem bestimmten Prozessor (z. B. CPU)). Bei anderen Ausführungsbeispielen kann ein Prozessor mit mehreren Kernen zusammen als ein einzelnes Rechenelement betrachtet werden.
  • Ein Beschleuniger 112 kann irgendeinen geeigneten Beschleuniger umfassen, wie z. B. einen digitalen Signalprozessor, einen Grafikbeschleuniger, einen Netzwerkprozessor, einen kryptographischen Beschleuniger, einen Künstliche-Intelligenz-Beschleuniger (z. B. eine Bildverarbeitungseinheit, einen neuromorphen Prozessor usw.), eine Tensor-Verarbeitungseinheit, einen Web-Beschleuniger, einen Maschinelles-Lernen-Beschleuniger oder eine andere geeignete Sammlung von Schaltungsanordnungen zur Ausführung spezialisierter Funktionen.
  • Ein FPGA 114 kann ein Halbleiterbauelement umfassen, das konfigurierbare Logik umfasst. Ein FPGA 114 kann über eine Datenstruktur (z. B. einen Bitstrom) programmiert werden, die irgendein geeignetes Format aufweist, das definiert, wie die Logik des FPGA zu konfigurieren ist. Ein FPGA 114 kann irgendeine Anzahl von Malen umprogrammiert werden, nachdem das FPGA hergestellt wird. Die konfigurierbare Logik eines FPGA kann irgendeine geeignete Logik umfassen, wie z. B. irgendeine geeignete Art von Logik-Gates (z. B. UND-Gates, XOR-Gates) oder Kombinationen von Logik-Gates (z. B. Flip-Flops, Nachschlagtabellen, Addierer, Multiplizierer, Multiplexer, Demultiplexer). Bei einigen Ausführungsbeispielen wird die Logik (zumindest teilweise) durch programmierbare Verbindungen zwischen Logikkomponenten des FPGA konfiguriert.
  • Ein beschleunigter Speicher 116 kann eine Speichervorrichtung umfassen, die Verarbeitungsfähigkeiten umfasst, die es der Speichervorrichtung ermöglichen, Funktionen an durch die Speichervorrichtung gespeicherten Daten auszuführen und die Ausgaben der Funktionen auf der Speichervorrichtung zu speichern. Somit können Daten auf der Speicherungsvorrichtungs-Ebene verarbeitet werden und die Daten bewegen sich während der Ausführung der Funktion nicht zwischen der Speicherungsebene und der Rechenebene. Einige beschleunigte Speicher 116 können einen oder mehrere Prozessoren umfassen, die jeweils einen oder mehrere Kerne oder eine andere Schaltungsanordnung zur Ausführung von Funktionen aufweisen, die durch einen Funktionsanforderer (z. B. 104) angefordert werden. Ein beschleunigter Speicher 116 kann sowohl als ein Speicherelement 110 als auch als ein Rechenelement 108 betrachtet werden.
  • Eine Smart-NIC 118 kann eine NIC umfassen, die Verarbeitungsfähigkeiten umfasst, die es der Smart-NIC ermöglichen, Funktionen auf Daten auszuführen, die durch die NIC laufen. Einige Smart-NICs 118 können einen oder mehrere Prozessoren umfassen, die jeweils einen oder mehrere Kerne oder eine andere Schaltungsanordnung zur Ausführung von Funktionen aufweisen, die durch einen Funktionsanforderer (z. B. 104) angefordert werden. Beispielfunktionen, die im Allgemeinen durch eine Smart-NIC ausgeführt werden, können Netzwerkdatenebenen-Funktionen wie beispielsweise Abgleichaktions-Verarbeitung, Tunnelabschluss und -entstehung oder Statistiken pro Datenfluss (per-flow) umfassen, obwohl eine Smart-NIC konfiguriert sein kann, um irgendwelche geeigneten Funktionen auszuführen. Eine Smart-NIC 118 kann auch irgendwelche geeigneten herkömmlichen NIC-Funktionen ausführen. Zum Beispiel kann eine Smart-NIC 118 eine elektronische Schaltungsanordnung umfassen, um unter Verwendung irgendeines geeigneten Physical-Layer- und Data-Link-Layer-Standards, wie beispielsweise Ethernet (z. B. wie durch einen IEEE 802.3-Standard definiert), Fibre Channel, InfiniBand, Wi-Fi oder eines anderen geeigneten Standards zu kommunizieren. Eine Smart-NIC kann einen oder mehrere physische Ports aufweisen, die mit einem Kabel (z. B. einem Ethernet-Kabel) koppeln können.
  • Die Rechenelemente können in irgendeiner geeigneten Weise auf der Plattform 102 angeordnet sein. Zum Beispiel können sich zwei unterschiedliche Rechenelemente auf separaten Chips oder Vorrichtungen, auf separaten Dies in demselben Package oder in einigen Fällen auf demselben Die befinden. Bei verschiedenen Ausführungsbeispielen können sich Komponenten einer Plattform 102 auf einer Schaltungsplatine (oder mehreren Schaltungsplatinen) oder einer anderen Vorrichtung befinden, die in einem Gehäuse, Rack oder einer anderen geeigneten Struktur installiert ist, die bei einigen Ausführungsbeispielen mehrere Plattformen umfassen kann, die durch ein Netzwerk (das z. B. ein Rack oder einen Backplane-Schalter umfassen kann) zusammengekoppelt sind.
  • Bei dem gezeigten Ausführungsbeispiel umfassen die Verbindungen 112 Intra-Element-Verbindungen 124, Inter-Element-Verbindungen 126 und Speicher-Element-Verbindungen 128.
  • Eine Intra-Element-Verbindung 124 kann eine Verbindung innerhalb eines bestimmten Rechenelements umfassen. Eine Intra-Element-Verbindung 124 kann beispielsweise eine Auf-Die-Verbindung umfassen (die z. B. einen Speicheragenten eines Rechenelements mit einem oder mehreren Kernen des Rechenelements verbindet).
  • Eine Inter-Element-Verbindung 126 kann eine Verbindung umfassen, die ein Rechenelement 108 mit einem anderen Rechenelement 108 koppelt (oder eine Verbindung, die einen Abschnitt eines Pfades zwischen Rechenelementen bildet). Solche Verbindungen können z. B. unter anderem Intel® Ultra Path Interconnect (UPI), Intel® Accelerator Link (IAL), Compute Express Link (CXL), Peripheral Component Interconnect Express (PCIe), Ethernet, OpenCAPI™, Gen-Z™, Universal Serial Bus (USB), Cache Coherent Interconnect for Accelerators (CCIX™), Advanced Micro Device™'s (AMD™) Infinity™, Common Communication Interface (CCI), oder Qualcomm™'s Centriq™-Verbindungumfassen.
  • Eine Speicher-Element-Verbindung 128 kann eine Verbindung umfassen, die ein Rechenelement 108 mit einem Speicherelement 110 koppelt (oder eine Verbindung, die eine Schnittstelle mit einem Speicherelement 110 bildet und einen ersten Abschnitt eines Pfades zwischen einem Speicherelement 110 und einem Rechenelement 108 bildet). Solche Verbindungen können z. B. irgendeine der vorangehend beschriebenen Arten von Inter-Element-Verbindung umfassen, die auch zum Koppeln mit einem Speicher 110 angepasst sind. Als anderes Beispiel umfassen Speicher-Element-Verbindungen u. a. Intel® Scalable Memory Interface 2 (SMI2) oder einen SATAbasierten Link.
  • Speicherelemente 110 können irgendeine Form von flüchtigen oder nichtflüchtigen Speichern umfassen, umfassend, aber nicht beschränkt auf magnetische Medien (z. B. ein oder mehrere Bandlaufwerke), optische Medien, Direktzugriffsspeicher (RAM; random access memory), Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, entfernbare Medien oder irgendeine oder irgendwelche anderen geeigneten lokalen oder entfernten Speicherkomponenten. Bei dem dargestellten Ausführungsbeispiel umfassen Speicherelemente 110 ein Speicherelement 120, das mit einer Double Data Rate- (DDR) Schnittstelle kompatibel ist, und ein Speicherelement 122, das mit einer Non-Volatile Memory Express- (NVMe) Schnittstelle kompatibel ist, obwohl andere Ausführungsbeispiele irgendeine Anzahl von Speicherelementen, Speicherelementen, die mit irgendeiner geeigneten Art von Speicherschnittstellen kompatibel sind, und Speicherelementen, die irgendeine geeignete Speicherungsmedienart (z. B. dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory), statischer Direktzugriffsspeicher (SRAM; static random access memory), NAND-Flash-Speicher, 3D-Crosspoint-Speicher usw.) aufweisen, umfassen können.
  • Speicherelemente 110 können durch die Plattform 102 für kurz-, mittel- und/oder langfristige Speicherung verwendet werden. Speicherelemente 110 können Daten speichern, auf denen durch Rechenelemente 108 gearbeitet wird (z. B. Eingaben und Ausgaben von Funktionen, die durch Rechenelemente 108 ausgeführt werden). Bei einigen Ausführungsbeispielen können Speicherelemente 110 auch Speicherung für Anweisungen, die durch die Rechenelemente 108 oder andere Logik der Plattform 102 ausgeführt werden können, oder Konfigurationsinformationen, die verwendet werden können, um ein Rechenelement 108 zu konfigurieren, um eine bestimmte Funktion auszuführen, um die Funktion einem Funktionsanforderer 104 freizugeben, umfassen.
  • Der Funktionsanforderer 104 kann irgendeine geeignete Einheit sein, die fähig ist, die Ausführung einer Funktion durch die Plattform 102 anzufordern. Bei verschiedenen Ausführungsbeispielen kann der Funktionsanforderer 104 auf der Plattform 102 oder auf einer unterschiedlichen Recheneinheit (z. B. einem über ein oder mehrere Netzwerke mit der Plattform 102 gekoppelten Rechensystem) laufen. Als verschiedene Beispiele kann der Funktionsanforderer 104 ein Betriebssystem, eine auf einem Betriebssystem laufende Anwendung, ein Dienst, eine Arbeitslast, ein Gastsystem (wie beispielsweise eine virtuelle Maschine oder mehrere virtuelle Maschinen wie beispielsweise eine virtuelle Netzwerkfunktion oder eine Dienstfunktionskette) oder eine andere geeignete Recheneinheit sein oder umfassen.
  • Bei verschiedenen Ausführungsbeispielen kann ein Funktionsanforderer 104 oder eine andere Einheit, die einem Funktionsanforderer zugeordnet ist, in der Lage sein, auf eine Liste von Funktionen zuzugreifen, die durch die Plattform ausführbar sind. Bei einem Beispiel kann die Plattform 102 eine Mehrzahl von modellspezifischen Registern (MSRs; model specific registers) umfassen, die Informationen umfassen, die anzeigen, welche Funktionen durch zumindest ein Rechenelement der Plattform 102 ausgeführt werden können.
  • 2 stellt einen lastadaptiven Scheduler 106 gemäß bestimmten Ausführungsbeispielen dar. Bei dem gezeigten Ausführungsbeispiel umfasst der Scheduler 106 Schnittstellen, umfassend eine Ausführbare-Funktion-Registrierungsschnittstelle 202, eine Funktionsausführungsschnittstelle 204 und eine Lastfunktions-Registrierungsschnittstelle 206. Der Scheduler 106 umfasst auch eine Telemetriemaschine 208, eine Scheduling-Maschine 210, eine Datenmanagementmaschine 212, eine Ausführungsmaschine 214, eine Funktionstabelle 216 und eine Lastfunktionstabelle 216. Bei einem bestimmten Ausführungsbeispiel kann die Logik des lastadaptiven Schedulers 106 zusammen auf einem Chip, wie z. B. einer anwendungsspezifischen integrierten Schaltung (ASIC; application specific integrated circuit), einem Mikrocontroller, einem Mikroprozessor oder einem anderen geeignetes Hardwareelement oder Modul, integriert sein. Bei verschiedenen Ausführungsbeispielen kann sich der lastadaptive Scheduler 106 auf einem von den Rechenelementen 108 und Speicherelementen 110 der Plattform separaten Chip befinden oder kann anderweitig von diesen Elementen getrennt sein.
  • Die Ausführbare-Funktion-Registrierungsschnittstelle 202 umfasst Logik, die geeignet ist, Funktionsregistrierungsanforderungen zu empfangen und den Anforderungen zugeordnete Informationen in der Funktionstabelle 216 zu speichern. Die Schnittstelle 202 kann es einer Einheit ermöglichen, die Funktionen zu registrieren, die durch ein oder mehrere Rechenelemente 108 der Plattform 102 ausgeführt werden können. Bei verschiedenen Ausführungsbeispielen kann irgendeine geeignete Recheneinheit eine Funktionsregistrierungsanforderung senden. Zum Beispiel kann ein Funktionsanforderer 104 oder eine zugeordnete Einheit (z. B. ein Rechenhost, der den Funktionsanforderer 104 unterstützt) oder eine der Plattform 102 zugeordnete Managementeinheit die Funktionsregistrierungsanforderung senden.
  • Eine Funktionsregistrierungsanforderung kann irgendeine geeignete Information umfassen, z. B. eine oder mehrere von einer Funktions-ID, die die Funktion eindeutig identifiziert, einer Kategorie der Funktion und einer oder mehreren Performance-Eigenschaften der Funktion. Eine Kategorie der Funktion kann eine bestimmte Art der Funktion spezifizieren. Während irgendwelche geeigneten Kategorien spezifiziert werden können, können Beispielkategorien kryptographische (diese Kategorie könnte z. B. eine Funktion zum Verschlüsseln oder Entschlüsseln von Daten umfassen), Netzwerkverarbeitung, einen Algebra-Vektor (diese Kategorie könnte z. B. eine Funktion zum Berechnen einer Fast-Fourier-Transformation umfassen), ein neuronales Netz (diese Kategorie könnte z. B. eine Funktion zum Detektieren einer Person in einem Bild umfassen) umfassen, unter vielen anderen. Bei einigen Ausführungsbeispielen kann der Kategoriewert eine Anzeige der relativen Eignung unterschiedlicher Arten von Rechenelementen für die Ausführung von Funktionen dieser Kategorie bereitstellen. Ein Kategoriewert eines neuronalen Netzes kann z. B. anzeigen, dass ein Neuronales-Netz-Prozessor die Funktion schneller ausführen kann als eine Allzweck-CPU. Als ein anderes Beispiel kann ein Kategoriewert der Netzwerkverarbeitung anzeigen, dass bestimmte Rechenelemente (z. B. CPUs, Netzwerkprozessoren, Smart-NICs) fähig sein können, Funktionen dieser Kategorie auszuführen, andere Rechenelemente (z. B. beschleunigte Speicher) jedoch nicht fähig, Funktionen dieser Kategorie auszuführen.
  • Eine Performance-Eigenschaft kann die Ressourcen anzeigen, von denen erwartet wird, dass sie für eine Ausführung der Funktion erforderlich sind. Eine Performance-Eigenschaft kann beispielsweise eine Ausführungszeit pro Einheit der Nutzlastdateneingabe, eine Anzahl von erwarteten Ausführungszyklen pro Einheit der Nutzlastdateneingabe, eine Anzahl von auszuführenden Operationen (z. B. Fließkommaoperationen) pro Einheit der Nutzlastdateneingabe oder eine andere geeignete Performance-Metrik spezifizieren, die einen Durchsatz der Funktion spezifiziert.
  • Bei bestimmten Ausführungsbeispielen kann eine Performance-Eigenschaft eine Basislinien-Performance-Eigenschaft spezifizieren (z. B. eine Eigenschaft, die einer Ausführung der Funktion durch ein theoretisches oder tatsächliches Basislinien-Rechenelement zugeordnet ist, das eine bestimmte Architektur aufweist). Bei verschiedenen Ausführungsbeispielen können für eine bestimmte Funktion Performance-Eigenschaften für spezifische Rechenelemente der Plattform 102 basierend zumindest teilweise auf einer Basislinien-Performance-Eigenschaft berechnet werden, z. B. basierend auf den Spezifikationen (z. B. Geschwindigkeit, Kapazität usw.) der Rechenelemente 108 relativ zu Spezifikationen, die dem Basislinien-Rechenelement zugeordnet sind. Wenn z. B. ein bestimmtes Rechenelement 110 die vierfache Bandbreite des Rechenelements aufweist, das den Basislinien-Performance-Eigenschaften zugeordnet ist, kann erwartet werden, dass das bestimmte Rechenelement die Funktion in einem Viertel der Basislinien-Ausführungszeit abschließt. Bei anderen Ausführungsbeispielen können die Funktionsregistrierungsanforderungen alternativ oder zusätzlich zu den Basislinien-Performance-Eigenschaften Performance-Eigenschaften für spezifische Rechenelemente (z. B. ein bestimmtes Modell eines Prozessors oder Beschleunigers) oder spezifische Arten von Rechenelementen (z. B. Performance-Eigenschaften für Allzweck-CPUs, aufweisend Spezifikationen innerhalb eines bestimmten Bereichs, Performance-Eigenschaften für beschleunigte Speicher, aufweisend Spezifikationen innerhalb eines bestimmten Bereichs usw.) spezifizieren.
  • Bei verschiedenen Ausführungsbeispielen kann die Ausführbare-Funktion-Registrierungsschnittstelle 202 empfangene oder von Funktionsregistrierungsanforderungen abgeleitete Daten in der Funktionstabelle 216 speichern. Zum Beispiel kann die Schnittstelle 202 Funktions-IDs, Funktionskategorien und Performance-Eigenschaften der Funktion in der Funktionstabelle 216 speichern.
  • Die Funktionsausführungsschnittstelle 204 ist eine Schnittstelle, die durch den Funktionsanforderer 104 verwendet wird, um die Ausführung einer bestimmten Funktion anzufordern. Eine Anforderung zur Ausführung einer Funktion kann irgendeine geeignete Information umfassen, die der Anforderung zugeordnet ist, wie beispielsweise eine oder mehrere von einer Funktions-ID (die einer in der Funktionstabelle 216 registrierten Funktions-ID entsprechen kann), einer Ausführungsanforderung (z. B. einem SLA, das eine Ausführungslatenzzeit spezifiziert), Eingabedateninformationen wie beispielsweise einer Größe der Eingabedaten und einer Speicheradresse, die den Ort der Eingabedaten spezifiziert, Ausgabedateninformationen wie beispielsweise einer erwarteten Größe der Ausgabedaten und einer Speicheradresse, an der die Ausgabedaten zu speichern sind, und einem Identifizierer einer Lastfunktion, der durch den lastadaptiven Scheduler 106 während der Auswahl des Rechenelements 108, das die Funktion ausführen wird, zu verwenden ist (in zumindest einigen Fällen kann die Plattform 102 die zu verwendende Lastfunktion bestimmen und somit kann die Anforderung den Identifizierer der Lastfunktion weglassen). Die Speicheradressen können auf Orte innerhalb eines oder mehrerer Speicherelemente 110 hindeuten. Bei einigen Ausführungsbeispielen wird dieselbe Lastfunktion für alle Funktionen oder alle Ausführungen einer bestimmten Funktion verwendet und somit wird die Lastfunktion nicht in einer Ausführbare-Funktion-Anforderung für diese Funktion spezifiziert. Bei anderen Ausführungsbeispielen können unterschiedliche Lastfunktionen während unterschiedlicher Ausführungen einer bestimmten Funktion verwendet werden, und daher kann die Ausführbare-Funktion-Anforderung einen Identifizierer der bestimmten zu verwendenden Lastfunktion umfassen.
  • Die Lastfunktions-Registrierungsschnittstelle 206 umfasst eine Logik, die geeignet ist, Lastfunktionsregistrierungsanforderungen zu empfangen und den Anforderungen zugeordnete Informationen in der Lastfunktionstabelle 218 zu speichern. Die Schnittstelle 206 kann es einer Einheit erlauben, eine oder mehrere Lastfunktionen zu registrieren, die durch den lastadaptiven Scheduler 106 verwendet werden können, um zu bestimmen, welches Rechenelement 108 eine ausführbare Funktion verarbeiten soll. Bei verschiedenen Ausführungsbeispielen kann irgendeine geeignete Recheneinheit eine Lastfunktionsregistrierungsanforderung senden. Zum Beispiel kann ein Funktionsanforderer 104 oder eine zugeordnete Einheit (z. B. ein Rechenhost, der den Funktionsanforderer 104 unterstützt) oder eine der Plattform 102 zugeordnete Managementeinheit die Lastfunktionsregistrierungsanforderung senden.
  • Eine Lastfunktionsregistrierungsanforderung kann irgendeine geeignete Information umfassen, z. B. eines oder mehrere von einer Lastfunktions-ID, die die Lastfunktion eindeutig identifiziert, und einer Spezifikation der Lastfunktion. Die Lastfunktions-ID kann der Lastfunktions-ID entsprechen, die in einer Anforderung zur Ausführung einer Funktion spezifiziert sein kann, die durch die Funktionsausführungsschnittstelle 204 empfangen wird. Eine Spezifikation einer Lastfunktion kann irgendeine geeignete Information umfassen, die es dem lastadaptiven Scheduler 106 erlaubt, die Lastfunktion auf Kandidaten-Rechenelemente (z. B. Rechenelemente, die Kandidaten für die Verarbeitung einer ausführbaren Funktion sind) anzuwenden, um eine Rechenressource für die Ausführung einer Funktion auszuwählen. Die Spezifikation kann beispielsweise einen binäre, Bitstrom oder irgendeine Form von Beschreibung umfassen, die durch die Scheduling-Maschine 210 ausgeführt oder anderweitig verwendet werden kann, um ein bestimmtes Rechenelement 108 zur Ausführung einer Funktion auszuwählen. Irgendein geeignetes Ausführungsattribut kann in der Lastfunktion verwendet werden, z. B. eine Ausführungslatenz, eine aktuelle oder erwartete Auslastung eines Kandidaten-Rechenelements 108 und/oder zugeordneter Verbindungen 112, eine Leistungsnutzung eines Kandidaten-Rechenelements 108 und/oder zugeordneter Verbindungen oder ein Abnutzungsbetrag für ein Kandidaten-Rechenelement 108 (z. B. können einige Rechenelemente eine begrenzte Lebensdauer aufweisen oder ihre Performance kann sich über die Zeit verschlechtern, während andere Rechenelemente immun gegenüber einer erhöhten Nutzung sind, somit kann ein Abnutzungsbetrag einen Abnutzungsbetrag anzeigen, den die Ausführung einer Funktion bestimmten Rechenelementen zufügen kann).
  • Eine Lastfunktion kann die Ausführungsattribute in irgendeiner geeigneten Weise verwenden. Zum Beispiel kann eine Lastfunktion spezifizieren, dass das Rechenelement 108 ausgewählt werden soll, das ein bestimmtes Ausführungsattribut maximiert oder minimiert. Als ein anderes Beispiel kann eine Spezifikation Faktorgewichtungen für ein oder mehrere Ausführungsattribute umfassen, und die Lastfunktion kann durch Verschmelzen dieser Faktorgewichtungen zusammen mit Metriken für die zugeordneten Ausführungsattribute realisiert werden, um einen Ausgabewert für jedes betrachtete Rechenelement 108 zu bestimmen (und die Ausgabewerte können dann während der Auswahl des Rechenelements für eine bestimmte Funktion in eine Rangfolge gebracht werden). Als ein anderes Beispiel kann eine Spezifikation Schwellen für ein oder mehrere Ausführungsattribute spezifizieren, die eine Auswahl (oder Nicht-Auswahl) eines bestimmten Rechenelements 108 vorgeben. Wenn z. B. die Nutzung eines Rechenelements zu einer Ausführungslatenz führen würde, die über einer durch eine Lastfunktion spezifizierten maximalen Ausführungszeit liegt, kann das Rechenelement zugunsten eines unterschiedlichen Rechenelements übergangen werden). Die Schwellen können statisch (z. B. eine spezifische Leistungsnutzung pro Einheit von Nutzlastdaten) oder dynamisch (z. B. in dem Funktionsaufruf selbst spezifiziert, wie beispielsweise im Fall einer maximalen Ausführungszeit, die durch eine Lastfunktion spezifiziert wird) sein. Bei noch einem anderen Beispiel können Kombinationen des Vorangehenden durch eine Lastfunktion spezifiziert werden. Zum Beispiel kann eine Lastfunktion spezifizieren, dass, sobald eine bestimmte Schwelle für ein Ausführungsattribut erreicht ist (z. B. Ausführungszeit), ein anderes Ausführungsattribut (z. B. Leistungsnutzung) optimiert werden sollte. Andere Beispiele für Lastfunktionen werden nachfolgend in Verbindung mit der Scheduling-Maschine 210 beschrieben.
  • Die Telemetriemaschine 208 ist wirksam, um Telemetriedaten von den Rechenelementen 108 und den Verbindungen 112 zu verarbeiten und Telemetrieindikatoren basierend auf den Telemetriedaten an die Scheduling-Maschine 210 zur Verwendung bei der Auswahl von Ressourcen bereitzustellen, die zur Ausführung von angeforderten Funktionen verwendet werden sollen.
  • Irgendwelche geeigneten Telemetriedaten und Telemetrieindikatoren werden durch die vorliegende Offenlegung betrachtet. Die Telemetriedaten oder -indikatoren können beispielsweise eine aktuelle Auslastung irgendeines Aspekts eines Rechenelements 108 oder einer Verbindung 112 umfassen, z. B. eine Nutzung oder verfügbare Menge an internem Speicher (z. B. Cache-Speicher oder Puffer), Verarbeitungsressourcen oder I/O-Bandbreite des Rechenelements oder der Verbindung 112. Als ein anderes Beispiel können die Telemetriedaten oder -indikatoren eine erwartete Auslastung irgendeines Aspekts eines Rechenelements 108 oder einer Verbindung 112 umfassen (z. B. eine erwartete Bandbreite des Rechenelements oder der Verbindung zu der Zeit, zu der die Daten der Funktion das Rechenelement zur Ausführung erreichen oder die Verbindung durchlaufen sollen - bei einigen Ausführungsbeispielen kann die erwartete Auslastung z. B. in der Warteschlangen befindliche und laufende Funktionen berücksichtigen, um die Auslastung zu einer bestimmten Zeit in der Zukunft vorherzusagen). Bei anderen Beispielen können die Telemetriedaten oder -indikatoren aktuelle oder erwartete Gesundheitsinformationen eines Rechenelements 108 oder einer Verbindung 112 umfassen, wie z. B. eine Anzeige, ob die Ressource verfügbar ist, ob die Ressource überlastet ist, oder eine oder mehrere Temperaturen, Ströme, Spannungen oder andere Gesundheitsindikatoren, die der Ressource zugeordnet sind.
  • Die Scheduling-Maschine 210 ist wirksam, um ein Rechenelement 108 auszuwählen, um eine ausführbare Funktion zu verarbeiten, wenn die Funktionsausführungsschnittstelle 204 durch den Funktionsanforderer 104 aufgerufen wird. Beim Bestimmen des Rechenelements 108 kann die Scheduling-Maschine 210 eine oder mehrere von den in der Funktionsanforderung umfassten Informationen, durch die Telemetrieverarbeitungsmaschine 210 bereitgestellten Telemetrieindikatoren, Informationen in der Funktionstabelle 216 oder Informationen in der Lastfunktionstabelle 216 verwenden.
  • Wenn eine Funktion angefordert wird, kann die Scheduling-Maschine 210 bestimmen, welche Rechenelemente 108 Zugriff auf die angeforderte Funktion freigeben (z. B. welche Rechenelemente 108 aktuell zur Ausführung der Funktion konfiguriert und zur Ausführung der Funktion verfügbar sind). Bei einigen Ausführungsbeispielen kann die Scheduling-Maschine 210 auch bestimmen, welche Rechenelemente 108 fähig sind, die Funktion auszuführen, aber aktuell nicht zur Ausführung der Funktion konfiguriert sind (z. B. wurde eine Instanz der Funktion nicht auf dem Rechenelement instanziiert). Bei einigen Ausführungsbeispielen kann die Scheduling-Maschine 210 eine solche Bestimmung nach einer Bestimmung vornehmen, dass keines der Rechenelemente, die aktuell zur Ausführung der Funktion konfiguriert sind, in der Lage ist, eine oder mehrere Performance-Anforderungen für die Funktion zu erfüllen (die nachfolgend detaillierter beschrieben werden).
  • Die Scheduling-Maschine 210 kann auch eine Lastfunktion bestimmen, die ausgebildet ist, die Auswahl des Rechenelements 108 zu regeln. Bei einigen Ausführungsbeispielen kann dieselbe Lastfunktion für alle Funktionen verwendet werden (z. B. kann die Lastfunktion einfach spezifizieren, dass das Rechenelement 108, das zu der niedrigsten Ausführungslatenz oder Leistung führt, ausgewählt werden sollte). Bei anderen Ausführungsbeispielen können unterschiedliche Lastfunktionen für unterschiedliche ausführbare Funktionen oder für unterschiedliche Instanzen derselben ausführbaren Funktion verwendet werden. Bei einigen Szenarien kann die Scheduling-Maschine 210 auf mit der angeforderten Funktion gesendete Informationen zugreifen, um die zu verwendende Lastfunktion zu bestimmen. Beispielsweise kann in einigen Fällen der Funktionsaufruf selbst die zu verwendende Lastfunktion oder einen Identifizierer der zu verwendenden Lastfunktion spezifizieren (sodass die Scheduling-Maschine 210 dann auf die Lastfunktionstabelle 216 zugreifen kann, um die Lastfunktion zu bestimmen). Bei einigen Ausführungsbeispielen kann die Lastfunktion auf irgendeine andere geeignete Weise der Funktion zugeordnet sein (z. B. kann die Zuordnung unabhängig von dem Funktionsaufruf gemacht werden). Bei einigen Ausführungsbeispielen kann der Funktionsaufruf die ID der auszuführenden Funktion spezifizieren und die Scheduling-Maschine 210 kann basierend auf dieser Funktions-ID auf die Funktionstabelle 216 zugreifen, um zu bestimmen, welche Lastfunktion verwendet werden soll.
  • Nach der Bestimmung der zu verwendenden Lastfunktion kann die Scheduling-Maschine 210 ein Ergebnis der Lastfunktion für jedes Rechenelement berechnen, das Zugriff auf die angeforderte Funktion freigibt, und ein Rechenelement 108 basierend auf den Ergebnissen auswählen.
  • Bei verschiedenen Ausführungsbeispielen basiert die Lastfunktion zumindest teilweise auf einer erwarteten Ausführungszeit der Funktion. Diese Ausführungszeit umfasst die Zeitspanne, die das Rechenelement 108 voraussichtlich für die Ausführung der Funktion benötigt, sowie die Zeitspanne zum Bewegen der Eingabedaten der Funktion von ihrem Ort auf der Plattform 102 (z. B. in einem der Speicherelemente 110) zu dem Rechenelement 108 und die Zeitspanne zum Bewegen der Ausgabedaten der Funktion zu ihrem Ziel (z. B. in einem der Speicherelemente 110).
  • Bei der Berechnung der erwarteten Ausführungszeit einer Funktion für ein bestimmtes Rechenelement 108 werden die Verbindungen 112 identifiziert, durch die die Eingabedaten laufen werden, während die Daten von ihrem aktuellen Ort zu dem bestimmten Rechenelement 108 durchlaufen werden. Dies kann ein oder mehrere Speicher-Element-Verbindungen 128, Inter-Element-Verbindungen 126 und/oder Intra-Element-Verbindungen 124 umfassen.
  • 3 stellt Beispieloptionen für Datenversand gemäß bestimmten Ausführungsbeispielen dar. Bei diesen Optionen ist der Ort der Eingabedaten und das Ziel der Ausgabedaten ein beschleunigter Speicher 116. Bei einer ersten Option 302 ist das Kandidaten-Rechenelement ein Prozessor 110 (z. B. eine CPU). Bei diesem Szenario können die Verbindungen z. B. eine Speicher-Element-Verbindung 182A (z. B. eine CXL-Verbindung), eine Inter-Element-Verbindung 126 (z. B. eine UPI-Verbindung) und eine Intra-Element-Verbindung 124 (z. B. eine Auf-Die-Verbindung) des Prozessors 110 umfassen, um einen Pfad für die Eingabedaten bereitzustellen, um sich von dem beschleunigten Speicher 116 zu einem Kern des Prozessors 110 und zurück zu dem beschleunigten Speicher zu bewegen. Bei einer zweiten Option 304 ist das Kandidaten-Rechenelement ein Beschleuniger 112. Bei diesem Szenario können die Verbindungen z. B. eine Speicher-Element-Verbindung 128 (wie beispielsweise einen ersten PCIe-Link) und eine Inter-Element-Verbindung 126 (z. B. einen zweiten PCIe-Link) umfassen. Bei einem dritten Kandidaten-Szenario 306 ist das Kandidaten-Rechenelement der beschleunigte Speicher 116. Somit werden keine Verbindungen gezeigt, da die Funktion direkt durch den beschleunigten Speicher 116 berechnet werden kann.
  • Als ein anderes Beispiel (obwohl nicht gezeigt) können die Verbindungen, wenn das Rechenelement ein FPGA 114 ist und der Ort der Eingabedaten und das Ziel der Ausgabedaten ein Speicherelement 110 ist, z. B. eine oder mehrere PCIe-Verbindungen umfassen.
  • Wenn das Speicherelement 110, das die Ausgabedaten der Funktion speichern wird, sich von einem Speicherelement 110 unterscheidet, das die Eingabedaten speichert, dann können zwei Sätze von Verbindungen bestimmt werden (ein erster Satz, um die Eingabedaten zu dem Rechenelement 108 zu transportieren, und ein zweiter Satz, um die Ausgabedaten von dem Rechenelement 108 zum Ziel zu transportieren).
  • Für jede für ein bestimmtes Kandidaten-Rechenelement 108 identifizierte Verbindung 112 kann die Zeit zum Transportieren der Daten durch die Verbindung basierend auf der Menge der zu transportierenden Daten (die durch den Aufruf der ausführbaren Funktion spezifiziert oder auf irgendeine andere geeignete Weise ermittelt werden kann) und der verfügbaren Bandbreite (z. B. aktuell oder voraussichtlich) der Verbindung (die durch Telemetrieindikatoren ermittelt werden kann) berechnet werden. In einigen Fällen (z. B. bei denen das Speicherelement, das die Eingabedaten hält, auch zum Halten der Ausgabedaten verwendet wird, die Ausgabedaten voraussichtlich eine Größe aufweisen, die gleich oder im Wesentlichen ähnlich zu der Größe der Eingabedaten ist, und sich die Bandbreite der Verbindungen zwischen dem Transport zu dem Rechenelement und dem Transport von dem Rechenelement voraussichtlich nicht ändert) wird die erwartete Transportzeit durch die eine oder die mehreren Verbindungen zu dem Rechenelement einfach verdoppelt, um eine gesamte erwartete Datenbewegungszeit zu bestimmen, und es werden keine zusätzlichen Berechnungen für die Transportzeit für die Ausgabedaten durchgeführt. Wenn jedoch nicht erwartet wird, dass die Transportzeit für die Eingabedaten und die Transportzeit für die Ausgabedaten gleich sind (z. B. wenn irgendwelche der vorangehend erwähnten Annahmen nicht wahr sind), wird eine zusätzliche Transportzeit für die Ausgabedaten berechnet und zu der für die Eingabedaten berechneten Transportzeit addiert, um eine gesamte erwartete Datenbewegungszeit zu bestimmen.
  • Die erwartete Ausführungszeit für das Kandidaten-Rechenelement 108 wird auch bestimmt, basierend z. B. auf der aktuellen oder erwarteten Auslastung des Rechenelements (z. B. verfügbare Bandbreite) und einer oder mehreren Performance-Eigenschaften der Funktion (z. B. für die Funktion erforderlicher Durchsatz). Die erwartete Ausführungszeit kann auch auf der Größe der Eingabedaten basieren. Wenn die Größe der Eingabedaten für eine bestimmte Funktion variabel ist (z. B. kann sich die Größe von einem Funktionsaufruf zum nächsten ändern), können somit die Ausführungszeiten von einem Funktionsaufruf zum nächsten angepasst werden, wenn erwartet wird, dass die Ausführungszeit unterschiedlich ist (z. B. länger für eine größere Eingabedatengröße).
  • Bei einigen Ausführungsbeispielen kann bei der Bestimmung einer erwarteten Ausführungszeit für ein Kandidaten-Rechenelement 108 eine Basislinien-Performance-Eigenschaft (z. B. Ausführungszeit) basierend auf den Eigenschaften des bestimmten Kandidaten-Rechenelements angepasst werden. Wenn z. B. erwartet wird, dass das Kandidaten-Rechenelement die Funktion schneller ausführt (z. B. weil das Kandidaten-Rechenelement schnellere Verarbeitungsfähigkeiten aufweist) als eine Basislinien-Architektur, dann kann die erwartete Ausführungszeit dementsprechend verkürzt werden. Bei einigen Ausführungsbeispielen kann die Anpassung der Basislinien-Performance-Eigenschaft auf einer Kategorie der Funktion basieren. Wenn zum Beispiel ein bestimmtes Kandidaten-Rechenelement für eine bestimmte Kategorie von Funktionen nicht besonders geeignet ist und die Basislinien-Performance-Eigenschaft die Ausführungszeit ist, kann die Ausführungszeit dementsprechend erhöht werden. Bei einigen Ausführungsbeispielen kann die Anpassung auf einem Anpassungsfaktor basieren, der vor dem Empfang der Anforderung spezifiziert und gespeichert werden kann (z. B. in der Funktionstabelle 216) oder ansprechend auf den Empfang der Anforderung dynamisch berechnet werden kann.
  • Die gesamte erwartete Ausführungszeit für ein Kandidaten-Rechenelement 108 wird durch Addieren der Zeitspanne berechnet, die für das Durchqueren der Verbindungen 112 zu dem und von dem Kandidaten-Rechenelement 108 durch die Eingabe- und Ausgabedaten und zur Ausführung der angeforderten Funktion durch das Kandidaten-Rechenelement 108 erwartet wird. Diese Berechnung kann für jedes Kandidaten-Rechenelement ausgeführt werden.
  • Bei einem bestimmten Ausführungsbeispiel, wenn eine Funktionsanforderung einer maximalen Ausführungszeit (z. B. wie durch ein SLA spezifiziert) zugeordnet ist, können die gesamten erwarteten Ausführungszeiten für die verschiedenen Rechenelemente mit der maximalen Ausführungszeit verglichen werden, und irgendwelche Kandidaten-Rechenelemente 108, die gesamte erwartete Ausführungszeiten aufweisen, die größer als die maximale Ausführungszeit sind, können aus dem Auswahlprozess herausgefiltert werden.
  • Bei verschiedenen Ausführungsbeispielen kann die durch die Scheduling-Maschine 210 ausgewertete Lastfunktion irgendwelche anderen Anforderungen spezifizieren, die zum Herausfiltern von einem oder mehreren Kandidaten-Rechenelementen 108 führen können. Beispielsweise kann die Lastfunktion eine maximale Leistungsnutzung spezifizieren (z. B. für die Verbindungen 112, das Rechenelement 108 oder die Kombination davon), und wenn die Auswahl eines bestimmten Rechenelements zu einer Leistungsnutzung führen würde, die das Maximum überschreitet, dann kann dieses Rechenelement aus dem Auswahlprozess herausgefiltert werden. Als ein anderes Beispiel kann eine Lastfunktion spezifizieren, dass ein Kandidaten-Rechenelement, das eine Auslastung über einer Schwelle aufweist, herausgefiltert werden sollte, oder dass ein Kandidaten-Rechenelement, das zu einer Nutzung einer Verbindung mit einer Auslastung über einer Schwelle führen würde, herausgefiltert werden sollte.
  • Bei einigen Ausführungsbeispielen kann die Scheduling-Maschine 210, wenn alle der ausgewerteten Kandidaten-Rechenelemente herausgefiltert sind, ein oder mehrere zusätzliche Kandidaten-Rechenelemente 108 bestimmen, die fähig sind, die angeforderte Funktion auszuführen, aber aktuell nicht zur Ausführung der angeforderten Funktion konfiguriert sind. Die Scheduling-Maschine 210 kann dann die Lastfunktion für jedes dieser zusätzlichen Kandidaten-Rechenelemente 108 ausführen, um zu bestimmen, ob irgendeines der zusätzlichen Kandidaten-Rechenelemente 108 die Bedingungen erfüllen kann (und wenn ja, wird eines der zusätzlichen Kandidaten-Rechenelemente 108 für die Ausführung der Funktion ausgewählt). Wenn keine Rechenelemente in der Lage sind, die Bedingungen der Funktion zu erfüllen, kann ein Fehler zurückgegeben werden oder das Rechenelement 108, das ein Ergebnis bereitstellt, das einem Erfüllen der Bedingungen am nächsten kommt, kann für die Ausführung der Funktion ausgewählt werden.
  • Bei einigen Ausführungsbeispielen kann eine erwartete Zeit zum Konfigurieren des Kandidaten-Rechenelements 108 zur Ausführung der Funktion zu der gesamten erwarteten Ausführungszeit addiert werden, wenn ein zusätzliches Kandidaten-Rechenelement 108 ausgewertet wird. Die Konfiguration kann beispielsweise ein Umprogrammieren von Gate-Arrays eines Rechenelements (z. B. FPGA 114), ein Schreiben von Anweisungslogik in Speicherregister eines Prozessors 110 oder andere geeignete Konfigurationsoperationen umfassen. Diese aggregierte erwartete Ausführungszeit kann mit der Zeitbedingung verglichen werden, um zu bestimmen, ob das zusätzliche Kandidaten-Rechenelement 108 die SLA-Anforderung erfüllen kann, bevor das Rechenelement tatsächlich zur Ausführung der Funktion konfiguriert wird.
  • Bei verschiedenen Ausführungsbeispielen kann eine Lastfunktion versuchen, die Systemauslastung zu optimieren. Die Lastfunktion kann beispielsweise die Leistungsnutzung, die Abnutzung, die Auslastung der Systemressourcen oder andere geeignete Charakteristika der Plattform 102 optimieren. Bei verschiedenen Ausführungsbeispielen kann eine Lastfunktion Optimierungen in Verbindung mit der erwarteten Ausführungszeit berücksichtigen. Beispielsweise können in einigen Fällen Optimierungen nur im Hinblick auf Rechenelemente ausgeführt werden, die z. B. eine erwartete Ausführungszeit erreichen, die geringer ist als eine spezifizierte Ausführungszeit für die Funktion, und/oder die eine erwartete Leistungsnutzung erreichen, die geringer ist als eine spezifizierte Leistungsnutzung, die der Funktion zugeordnet ist. Zum Beispiel kann eine Lastfunktion spezifizieren, dass für jedes Kandidaten-Rechenelement, das die spezifizierte Ausführungszeit erfüllt, das Kandidaten-Rechenelement, das die niedrigste Auslastung aufweist, ausgewählt werden soll, um die Funktion auszuführen (oder es kann ein Lastausgleichsalgorithmus verwendet werden, um die Funktionsausführungen auf die Kandidaten-Rechenelemente über mehrere Iterationen der Funktion zu verteilen). Als ein anderes Beispiel kann eine Lastfunktion spezifizieren, dass für jedes Kandidaten-Rechenelement, das die spezifizierte Ausführungszeit erfüllt, das Kandidaten-Rechenelement, das zu der niedrigsten Leistungsnutzung führt, zur Ausführung der Funktion ausgewählt werden soll.
  • Bei einigen Ausführungsbeispielen kann sich eine Lastfunktion auf eine oder mehrere bestimmte Arten von Rechenelementen beziehen. Beispielsweise kann eine Lastfunktion spezifizieren, dass, wenn sich Daten in einem beschleunigten Speicher (z. B. 116A) befinden, eine Bestimmung der Leistung zum Bewegen der Daten zu einem Kandidaten-Rechenelement und zum Ausführen der Funktion an diesem Rechenelement vorgenommen werden soll, und dass, wenn die Leistung über einem Schwellenbetrag liegt (oder wenn die Differenz in der Leistung zwischen der Ausführung durch das Kandidaten-Rechenelement und der Ausführung durch den beschleunigten Speicher (z. B. 116A) größer ist als eine spezifizierte Schwelle), die Funktion durch den beschleunigten Speicher anstelle des Kandidaten-Rechenelements ausgeführt werden sollte.
  • Nach Auswahl eines Rechenelements 108 zur Ausführung der Funktion kann sich die Scheduling-Maschine 210 mit der Datenmanagementmaschine 212 und der Ausführungsmaschine 214 koordinieren, um die Bewegung der Eingabedaten von dem Speicherelement zu dem ausgewählten Rechenelement, die Ausführung der Funktion und die Bewegung der Ausgabedaten zu dem Ziel zu managen.
  • Die Funktionstabelle 216 und die Lastfunktionstabelle 218 können irgendwelche geeigneten Datenstrukturen umfassen, die in irgendeiner geeigneten Art von Speicher gespeichert sind, umfassend irgendwelche der hierin beschriebenen.
  • 4 stellt einen Ablauf für adaptiven Datenversand gemäß bestimmten Ausführungsbeispielen dar. Der Ablauf kann durch den lastadaptiven Scheduler 106 oder eine anderen geeignete Rechenlogik ausgeführt werden.
  • 402 umfasst ein Empfangen einer Identifikation einer auszuführenden Funktion. 404 umfasst ein Auswählen eines Kandidaten-Rechenelements aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch ein Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.
  • Einige der in 4 dargestellten Operationen können gegebenenfalls wiederholt, kombiniert, modifiziert oder gelöscht werden und zusätzliche Schritte können auch zu dem Flussdiagramm hinzugefügt werden. Zusätzlich können Schritte in irgendeiner geeigneten Reihenfolge ausgeführt werden, ohne vom Schutzbereich bestimmter Ausführungsbeispiele abzuweichen.
  • Die folgenden FIGs. zeigen Systeme und Komponenten, die in Verbindung mit den vorangehend beschriebenen Ausführungsbeispielen verwendet werden können. Zum Beispiel können die in den folgenden FIGs. gezeigten Systeme oder Abschnitte davon innerhalb der Plattform 102 umfasst sein. Als ein anderes Beispiel können die darin gezeigten Komponenten (z. B. Prozessor 510, Grafik 540, Beschleuniger 542, Netzwerkschnittstelle 550, I/O-Schnittstelle 560, Speicher-Teilsystem 520, Peripherie-Schnittstelle 570, Speicherungs-Teilsystem 580, Racks 602, Schlitten 604 oder irgendwelche der anderen in 5-9 gezeigten Komponenten) Rechenelemente 108 sein oder irgendwelche der Verbindungen zwischen solchen Komponenten können Verbindungen 112 sein.
  • 5 zeigt ein beispielhaftes System. Ein System 500 umfasst einen Prozessor 510, der eine Verarbeitung, ein Betriebsmanagement und eine Ausführung von Anweisungen für das System 500 bereitstellt. Der Prozessor 510 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware, um Verarbeitung für das System 500 bereitzustellen, oder eine Kombination von Prozessoren umfassen. Der Prozessor 510 steuert den Gesamtbetrieb des Systems 500 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs; application specific integrated circuits), programmierbare Logikbauelemente (PLDs; programmable logic devices) oder Ähnliches oder eine Kombination solcher Bauelemente sein oder umfassen.
  • Bei einem Beispiel umfasst das System 500 eine Schnittstelle 512, die mit dem Prozessor 510 gekoppelt ist, was eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite benötigt, wie beispielsweise ein Speicherteilsystem 520 oder Grafikschnittstellen-Komponenten 540 oder Beschleuniger 542. Die Schnittstelle 512 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet die Grafikschnittstelle 540 eine Schnittstelle mit Grafikkomponenten, um einem Benutzer des Systems 500 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 540 eine hochauflösende (HD; high definition) Anzeige treiben, die einem Nutzer eine Ausgabe bereitstellt. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixel dichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays, 4K (ultrahochauflösend oder UHD (ultra-high definition)) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 540 eine Anzeige basierend auf Daten, die in dem Speicher 530 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 510 ausgeführt werden, oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 540 eine Anzeige basierend auf Daten, die in dem Speicher 530 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 510 ausgeführt werden, oder beidem.
  • Die Beschleuniger 542 können eine Feste-Funktion-Offload-Engine sein, auf die ein Prozessor 510 zugreifen kann oder die von diesem verwendet werden kann. Beispielsweise kann ein Beschleuniger unter den Beschleunigern 542 Kompressions (DC) -Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierungs-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 542 zusätzlich oder alternativ Feldauswahlsteuerungsfähigkeiten bereit, wie hierin beschrieben. In einigen Fällen können die Beschleuniger 542 in eine CPU-Buchse (z. B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 542 einen Einzel- oder Multi-Kern-Prozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Einzel- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronales-Netz-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie beispielsweise feldprogrammierbare Gate-Arrays (FPGAs) umfassen. Die Beschleuniger 542 können mehrere neuronale Netze, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können für eine Verwendung durch Künstliche-Intelligenz- (KI-) oder Maschinelles-Lernen- (ML-) Modelle zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell irgendeines oder eine Kombination verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netz, einem rekurrenten kombinatorischen neuronalen Netz oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch KI- oder ML-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 520 stellt den Hauptspeicher des Systems 500 dar und stellt Speicherung für einen Code, der durch den Prozessor 510 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 520 kann eine oder mehrere Speichervorrichtungen 530 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 530 speichert und hostet unter anderem ein Betriebssystem (OS; operating system) 532, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 500 bereitzustellen. Zusätzlich können Anwendungen 534 auf der Software-Plattform des OS 532 von dem Speicher 530 ausgeführt werden. Die Anwendungen 534 stellen Programme dar, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 536 stellen Mittel oder Routinen dar, die dem OS 532 oder einer oder mehreren Anwendungen 534 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 532, die Anwendungen 534 und die Prozesse 536 stellen Software-Logik bereit, um Funktionen für das System 500 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 520 eine Speichersteuerung 522, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 530 ist. Es versteht sich, dass die Speichersteuerung 522 ein physischer Teil des Prozessors 510 oder ein physischer Teil der Schnittstelle 512 sein könnte. Zum Beispiel kann die Speichersteuerung 522 eine integrierte Speichersteuerung sein, die auf eine Schaltung mit dem Prozessor 510 integriert ist.
  • Auch wenn nicht eigens dargestellt, versteht es sich, dass das System 500 einen oder mehrere Busse oder Bus-Systeme zwischen Vorrichtungen umfassen kann, wie beispielsweise einen Speicher-Bus, einen Grafik-Bus, Schnittstellen-Busse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch zusammenkoppeln oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect (PCI) -Bus, einem Hyper Transport- oder Industry Standard Architecture (ISA) -Bus, einem Small Computer System Interface (SCSI) -Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers (IEEE) -Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 500 eine Schnittstelle 514, die mit der Schnittstelle 512 gekoppelt sein kann. Bei einem Beispiel stellt die Schnittstelle 514 eine Schnittstellenschaltung dar, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Nutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 514. Eine Netzwerkschnittstelle 550 stellt dem System 500 die Fähigkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 550 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlos-standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 550 kann Daten an eine Vorrichtung übertragen, die in dem gleichen Datenzentrum oder Rack ist, oder an eine entfernte Vorrichtung, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann. Die Netzwerkschnittstelle 550 kann Daten von einer entfernten Vorrichtung empfangen, was eine Speicherung von empfangenen Daten in Speicher umfassen kann. Verschiedene Ausführungsbeispiele können in Verbindung mit der Netzwerkschnittstelle 550, dem Prozessor 510 und dem Speicherteilsystem 520 verwendet werden.
  • Bei einem Beispiel umfasst das System 500 eine oder mehrere Eingangs-/Ausgangs- (I/O; Input/Output) Schnittstelle(n) 560. Eine I/O-Schnittstelle 560 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch die ein Nutzer mit dem System 500 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellenbildung). Eine Peripherieschnittstelle 570 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig mit dem System 500 verbinden. Eine abhängige Verbindung ist eine, bei der das System 500 die Software-Plattform oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Nutzer interagiert.
  • Bei einem Beispiel umfasst das System 500 ein Speicherungsteilsystem 580, um Daten in einer nichtflüchtigen Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 580 mit Komponenten des Speicherteilsystems 520 überlappen. Das Speicherungsteilsystem 580 umfasst eine oder mehrere Speicherungsvorrichtungen 584, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- (solid state) oder optisch-basierte Platten oder eine Kombination. Die Speicherung 584 umfasst Code oder Anweisungen und Daten 586 in einem dauerhaften Zustand (d. h. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 500 erhalten). Die Speicherung 584 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 530 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 510 Anweisungen bereitzustellen. Obwohl die Speicherung 584 nichtflüchtig ist, kann der Speicher 530 flüchtigen Speicher umfassen (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Leistung zu dem System 500 unterbrochen wird). Bei einem Beispiel umfasst das Speicherungsteilsystem 580 eine Steuerung 582, um eine Schnittstelle mit der Speicherung 584 zu bilden. Bei einem Beispiel ist die Steuerung 582 ein physischer Teil der Schnittstelle 514 oder des Prozessors 510 oder kann Schaltungen oder Logik sowohl in dem Prozessor 510 als auch in der Schnittstelle 514 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, wenn die Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischer Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Reihe von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren. Die JEDEC-Standards sind verfügbar unter www.jedec.org.
  • Eine nichtflüchtige Speicher- (NVM; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt ist, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (zum Beispiel Single-Level Cell („SLC“), Multi-Level Cell („MLC“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder eine andere NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS; phase change memory with a switch), NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (zum Beispiel Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM; ferroelectric random access memory), magnetoresistiven Direktzugriffsspeicher (MRAM; magneto resistive random access memory) mit Memristor-Technologie, Spin Transfer Torque (STT)-MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierte Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus irgendeinem der obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt den Komponenten des Systems 500 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 500, um den Komponenten des Systems 500 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC- (Wechselstrom-zu-Gleichstrom; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom-Leistung kann eine Erneuerbare-Energien- (z. B. Sonnenenergie) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 500 unter Verwendung von miteinander verbundenen Rechenschlitten von Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwendet werden, wie beispielsweise: Ethernet (IEEE 802.3), entfernter Direktspeicherzugriff (RDMA; remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omnipath, Compute Express Link (CXL), Hyper-Transport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) - Verbindung, OpenCAPI, Gen-Z, Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen- und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie beispielsweise diejenigen, die in einem Datenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Datenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzzugänge miteinander verbunden, wie z. B. ein Partitionieren von Serversätzen in lokale Netze (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Datenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst jedes Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs; integrated circuits) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • 6 stellt ein Beispiel eines Datenzentrums dar. Wie in 6 gezeigt ist, kann das Datenzentrum 600 eine optische Struktur 612 umfassen. Die optische Struktur 612 kann im Allgemeinen eine Kombination aus optischen Signalisierungsmedien (wie beispielsweise optisches Verkabeln) und optischer Schaltinfrastruktur umfassen, über welche irgendein bestimmter Schlitten in dem Datenzentrum 600 Signale an jeden der anderen Schlitten in dem Datenzentrum 600 senden (und Signale von denselben empfangen) kann. Die Signalisierungs-Konnektivität, die die optische Struktur 612 an irgendeinen gegebenen Schlitten bereitstellt, kann Konnektivität sowohl zu anderen Schlitten in einem gleichen Rack als auch zu Schlitten in anderen Racks umfassen. Das Datenzentrum 600 umfasst vier Racks 602A bis 602D und die Racks 602A bis 602D häusen jeweilige Paare von Schlitten 604A-1 und 604A-2, 604B-1 und 604B-2, 604C-1 und 604C-2 und 604D-1 und 604D-2. Somit umfasst bei diesem Beispiel das Datenzentrum 600 insgesamt acht Schlitten. Die optische Struktur 612 kann Schlitten-Signalisierungs-Konnektivität mit einem oder mehreren der sieben anderen Schlitten bereitstellen. Zum Beispiel kann über die optische Struktur 612 der Schlitten 604A-1 in Rack 602A eine Signalisierungs-Konnektivität mit dem Schlitten 604A-2 in Rack 602A besitzen, ebenso wie die anderen sechs Schlitten 604B-1, 604B-2, 604C-1, 604C-2, 604D-1 und 604D-2, die unter den anderen Racks 602B, 602C und 602D des Datenzentrums 600 verteilt sind. Die Ausführungsbeispiele sind nicht auf dieses Beispiel beschränkt.
  • 7 zeigt eine Rack-Architektur derart, dass eine Mehrzahl von Schlittenräumen eingefügte Schlitten aufweisen kann. Schlittenräume können über eine Rack-Zugriffsregion 701 robotisch zugreifbar sein. In dem bestimmten, nicht einschränkenden Beispiel weist die Rack-Architektur 700 fünf Schlittenräume 703-1 bis 703-5 auf. Die Schlittenräume 703-1 bis 703-5 weisen jeweilige Mehrzweck-Verbindermodule (MPCMs; multi-purpose connector modules) 716-1 bis 716-5 auf.
  • 8 zeigt eine Umgebung 800, umfassend mehrere Rechen-Racks 802, von denen jedes einen Top of Rack- (ToR) Schalter 804, einen Pod-Manager 806 und eine Mehrzahl von gepoolten Systemschubladen umfasst. In einem Schalter können verschiedene Ausführungsbeispiele verwendet werden. Im Allgemeinen können die gepoolten Systemschubladen gepoolte Rechenschubladen und gepoolte Speicherungsschubladen umfassen. Optional können die gepoolten Systemschubladen auch gepoolte Speicherschubladen und gepoolte Eingangs-/Ausgangs- (I/O) Schubladen umfassen. Bei dem dargestellten Ausführungsbeispiel umfassen die gepoolten Systemschubladen eine Intel® XEON® gepoolte Computerschublade 808 und eine Intel® ATOM™ gepoolte Rechenschublade 810, eine gepoolte Speicherungsschublade 812, eine gepoolte Speicherschublade 814 und eine gepoolte I/O-Schublade 816. Jede der gepoolten Systemschubladen ist über einen Hochgeschwindigkeits-Link 818 mit dem ToR-Schalter 804 verbunden, wie beispielsweise einen 40-Gigabit/Sekunde (Gb/s)- oder 100Gb/s-Ethernet-Link oder einen 100+ Gb/s Silizium-Photonik-(SiPh-) optischen Link. Bei einem Ausführungsbeispiel umfasst ein Hochgeschwindigkeits-Link 818 einen 800 Gb/s SiPh optischen Link.
  • Mehrere der Rechen-Racks 802 können über ihre ToR-Schalter 804 miteinander verbunden sein (z. B. mit einem Pod-Ebene-Schalter oder einem Datenzentrum-Schalter), wie durch die Verbindungen zu einem Netzwerk 820 dargestellt. Bei einigen Ausführungsbeispielen werden Gruppen von Rechen-Racks 802 als separate Pods über einen oder mehrere Pod-Manager 806 gemanagt. Bei einem Ausführungsbeispiel wird ein einzelner Pod-Manager verwendet, um alle der Racks in dem Pod zu managen. Alternativ können verteilte Pod-Manager für Pod-Management-Operationen verwendet werden.
  • Eine Umgebung 800 umfasst ferner eine Managementschnittstelle 822, die zum Managen verschiedener Aspekte der Umgebung verwendet wird. Dies umfasst ein Managen einer Rack-Konfiguration, mit entsprechenden Parametern, die als Rack-Konfigurationsdaten 824 gespeichert sind.
  • 9 zeigt eine Netzwerkschnittstelle, die Ausführungsbeispiele verwenden oder durch Ausführungsbeispiele verwendet werden kann. Verschiedene Prozessoren der Netzwerkschnittstelle 900 können hierin beschriebene Techniken verwenden, um Betriebsparameter eines Kerns von Prozessoren 904 bereitzustellen. Wenn beispielsweise ein erster Kern von Prozessoren 904 eine Paketverarbeitung ausführt und ein zweiter Kern des Prozessors 904 einen Leistungsmanagementprozess ausführt, kann der zweite Kern Betriebsparameter des ersten Kerns gemäß hierin beschriebenen Ausführungsbeispielen modifizieren.
  • Eine Netzwerkschnittstelle 900 kann einen Sendeempfänger 902, Prozessoren 904, eine SendeWarteschlange 906, eine Empfangs-Warteschlange 908, einen Speicher 910 und eine Busschnittstelle 912 und eine DMA-Maschine 926 umfassen. Der Sendeempfänger 902 kann fähig sein, Pakete in Übereinstimmung mit den anwendbaren Protokollen wie beispielsweise Ethernet, wie in IEEE 802.3 beschrieben, zu empfangen und zu senden, obwohl andere Protokolle verwendet werden können. Der Sendeempfänger 902 kann Pakete von und zu einem Netzwerk über ein Netzwerkmedium (nicht abgebildet) empfangen und senden. Der Sendeempfänger 902 kann eine Physical Layer (PHY) -Schaltungsanordnung 914 und eine Media Access Control (MAC) -Schaltungsanordnung 916 umfassen. Eine PHY-Schaltungsanordnung 914 kann Codier- und Decodier-Schaltungsanordnungen (nicht gezeigt) zum Codieren und Decodieren von Datenpaketen gemäß anwendbaren Physical-Layer-Spezifikationen oder -Standards umfassen. Die MAC-Schaltungsanordnung 916 kann konfiguriert sein, um die zu übertragenden Daten zu Paketen anzuordnen, die Ziel- und Quelladressen zusammen mit Netzwerksteuerungsinformationen und Fehlerdetektions-Hash-Werten umfassen. Die MAC-Schaltungsanordnung 916 kann konfiguriert sein, um MAC-Header von empfangenen Paketen durch Verifizierung der Datenintegrität, Entfernen von Präambeln und Auffüllungen und Bereitstellen von Paketinhalten zur Verarbeitung durch höhere Schichten zu verarbeiten.
  • Prozessoren 904 können irgendeine Kombination sein aus: Prozessor, Kern, Grafikverarbeitungseinheit (GPU; graphics processing unit), feld-programmierbarem Gate-Array (FPGA; field programmable gate array), anwendungsspezifischer integrierter Schaltung (ASIC; application specific integrated circuit) oder einer anderen programmierbaren Hardware-Vorrichtung, die ein Programmieren der Netzwerkschnittstelle 900 erlauben. Prozessoren 904 können zum Beispiel eine Zuweisung oder ein Aufheben der Zuweisung von Zwischenwarteschlangen bereitstellen. Beispielsweise kann eine „Smarte Netzwerkschnittstelle“ unter Verwendung von Prozessoren 904 Paketverarbeitungsfähigkeiten in der Netzwerkschnittstelle bereitstellen.
  • Ein Paketzuweiser 924 kann eine Verteilung empfangener Pakete für eine Verarbeitung durch mehrere CPUs oder Kerne unter Verwendung einer hierin beschriebenen Zeitschlitz-Zuweisung oder RSS bereitstellen. Wenn der Paketzuweiser 924 RSS verwendet, kann der Paketzuweiser 924 basierend auf den Inhalten eines empfangenen Pakets einen Hash berechnen oder eine andere Bestimmung vornehmen, um zu bestimmen, welche CPU oder welcher Kern ein Paket verarbeiten soll.
  • Eine Interrupt-Zusammenführung 922 kann eine Interrupt-Moderation ausführen, wobei eine Netzwerkschnittstellen-Interrupt-Zusammenführung 922 auf das Eintreffen mehrerer Pakete oder den Ablauf eines Time-Outs wartet, bevor sie einen Interrupt an das Host-System zur Verarbeitung (eines) empfangener(n) Pakete(s) erzeugt. Empfangssegment-Zusammenführung (RSC; Receive Segment Coalescing) kann durch eine Netzwerkschnittstelle 900 ausgeführt werden, wobei Abschnitte eingehender Pakete zu Segmenten eines Pakets kombiniert werden. Die Netzwerkschnittstelle 900 stellt dieses zusammengeführte Paket an eine Anwendung bereit.
  • Die Direktspeicherzugriffs- (DMA) Maschine 926 kann einen Paketanfangsblock, eine Paketnutzlast und/oder einen Deskriptor direkt vom Host-Speicher an die Netzwerkschnittstelle oder umgekehrt kopieren, anstatt das Paket an einen Zwischenpuffer bei dem Host zu kopieren und dann eine weitere Kopieroperation von dem Zwischenpuffer an den Zielpuffer zu verwenden.
  • Der Speicher 910 kann irgendeine Art von flüchtiger oder nichtflüchtiger Speichervorrichtung sein und kann irgendeine Warteschlange oder Anweisungen speichern, die zum Programmieren der Netzwerkschnittstelle 900 verwendet werden. Die Sendewarteschlange 906 kann Daten oder Referenzen auf Daten zur Übertragung durch die Netzwerkschnittstelle umfassen. Die Empfangs-Warteschlange 908 kann Daten oder Referenzen auf Daten umfassen, die durch eine Netzwerkschnittstelle von einem Netzwerk empfangen wurden. Deskriptor-Warteschlangen 920 können Deskriptoren umfassen, die auf Daten oder Pakete in der Sendewarteschlange 906 oder Empfangs-warteschlange 908 Bezug nehmen. Die Busschnittstelle 912 kann eine Schnittstelle mit der Host-Vorrichtung (nicht dargestellt) bereitstellen. Zum Beispiel kann die Busschnittstelle 912 mit einer peripheral connect Peripheral Component Interconnect- (PCI-), PCI-Express-, PCI-x-, Serial ATA- (SATA) und/oder Universal Serial Bus- (USB; universeller serieller Bus) kompatiblen Schnittstelle kompatibel sein (obwohl andere Verbindungsstandards verwendet werden können).
  • Bei einigen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Ausführungsbeispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G und so weiter), Makro-Basisstation (z. B. 5G-Netzwerke), Picostation (z. B. einem IEEE 802.11-kompatiblen Zugriffspunkt), Nanostation (z. B. für Punkt-zu-Multipunkt (PtMP; Point-to-MultiPoint) -Anwendungen) verwendet werden.
  • Irgendwelche von den Abläufen, Verfahren, Prozessen (oder Abschnitten davon) oder Funktionalität von irgendwelchen der verschiedenen Komponenten, die hierin beschrieben oder in den FIGs. dargestellt sind, können durch irgendeine geeignete Rechenlogik, wie beispielsweise ein oder mehrere Module, Maschinen, Blöcke, Einheiten, Modelle, Systeme, Schnittstellen oder andere geeignete Rechenlogik, ausgeführt werden. Der Verweis hierin auf ein „Modul“, eine „Maschine“, einen „Block“, eine „Einheit“, ein „Modell“, ein „System“, eine „Logik“ oder eine „Schnittstelle“ kann sich auf Hardware, Firmware, Software und/oder Kombinationen von jedem beziehen, um eine oder mehrere Funktionen auszuführen. Als ein Beispiel kann ein Modul, eine Maschine, ein Block, eine Einheit, ein Modell, ein System, eine Logik oder eine Schnittstelle eine oder mehrere Hardwarekomponenten umfassen, wie beispielsweise einen Mikrocontroller oder Prozessor, zugeordnet zu einem nichtflüchtigen Medium, um Code zu speichern, der angepasst ist, um durch den Mikrocontroller oder Prozessor ausgeführt zu werden. Daher kann sich der Bezug auf ein Modul, eine Maschine, einen Block, eine Einheit, ein Modell, ein System, eine Logik oder eine Schnittstelle bei einem Ausführungsbeispiel auf Hardware beziehen, die spezifisch ausgebildet ist, um den Code, der auf einem nichtflüchtigen Medium zu halten ist, zu erkennen und/oder auszuführen. Ferner bezieht sich bei einem anderen Ausführungsbeispiel die Verwendung von Modul, Maschine, Block, Einheit, Modell, System, Logik oder Schnittstelle auf das nichtflüchtige Medium, umfassend den Code, der spezifisch angepasst ist, um durch den Mikrocontroller oder Prozessor ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie abgeleitet werden kann, kann sich bei einem wiederum anderen Ausführungsbeispiel ein Modul, eine Maschine, ein Block, eine Einheit, ein Modell, ein System, eine Logik oder eine Schnittstelle auf die Kombination der Hardware und des nichtflüchtigen Mediums beziehen. Bei verschiedenen Ausführungsbeispielen kann ein Modul, eine Maschine, ein Block, eine Einheit, ein Modell, ein System, eine Logik oder eine Schnittstelle einen Mikroprozessor oder ein anderes Verarbeitungselement, das zur Ausführung von Softwareanweisungen wirksam ist, diskrete Logik, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierte Logikvorrichtung, wie beispielsweise ein feld-programmierbares Gate-Array (FPGA), eine Speichervorrichtung, die Anweisungen enthält, Kombinationen von Logikvorrichtungen (z. B. wie sie auf einer gedruckten Schaltungsplatine zu finden wären) oder andere geeignete Hardware und/oder Software umfassen. Ein Modul, eine Maschine, ein Block, eine Einheit, ein Modell, ein System, eine Logik oder eine Schnittstelle kann ein oder mehrere Gates oder andere Schaltungskomponenten umfassen, die z. B. durch Transistoren implementiert sein können. Bei einigen Ausführungsbeispielen kann ein Modul, eine Maschine, ein Block, eine Einheit, ein Modell, ein System, eine Logik oder eine Schnittstelle vollständig als Software verkörpert sein. Software kann als ein Software-Package, Code, Anweisungen, Anweisungssätze und/oder Daten, aufgezeichnet auf einem nichtflüchtigen computerlesbaren Speicherungsmedium, verkörpert sein. Firmware kann als Code, Anweisungen oder Anweisungssätze und/oder Daten, die in Speichervorrichtungen hartcodiert (z. B. nichtflüchtig) sind, verkörpert sein. Ferner variieren Logikgrenzen, die als getrennt dargestellt sind, gewöhnlich und überlappen potenziell. Zum Beispiel können ein erstes und ein zweites Modul (oder mehrere Maschinen, Blöcke, Einheiten, Modelle, Systeme, Logiken oder Schnittstellen) Hardware, Software, Firmware oder eine Kombination davon gemeinschaftlich verwenden, während potenziell irgendeine unabhängige Hardware, Software oder Firmware beibehalten wird.
  • Ein Entwurf kann verschiedene Stufen durchlaufen, von der Erzeugung über die Simulation bis hin zur Fertigung. Daten, die einen Entwurf darstellen, können den Entwurf auf eine Reihe von Weisen darstellen. Zuerst kann die Hardware, wie es bei Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache (HDL; hardware description language) oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann bei einigen Stufen des Entwurfsprozesses ein Schaltungsebenen-Modell mit Logik- und/oder Transistor-Gates erzeugt werden. Ferner erreichen die meisten Entwürfe bei irgendeiner Stufe eine Ebene von Daten, die die physische Platzierung verschiedener Vorrichtungen in dem Hardwaremodell darstellen. In dem Fall, dass herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken spezifizieren, die zur Erzeugung der integrierten Schaltung verwendet werden. Bei einigen Implementierungen können solche Daten in einem Datenbankdateiformat wie beispielsweise Graphic Data System II (GDS II), Open Artwork System Interchange Standard (OASIS) oder einem ähnlichen Format gespeichert werden.
  • Bei einigen Implementierungen können softwarebasierte Hardwaremodelle und HDL und andere Funktionale-Beschreibungssprache-Objekte unter anderem Registerübertragungssprache- (RTL; register transfer language) Dateien umfassen. Solche Objekte können maschinenparsbar sein, sodass ein Entwurfswerkzeug das HDL-Objekt (oder Modell) akzeptieren, das HDL-Objekt für Attribute der beschriebenen Hardware parsen und eine physische Schaltung und/oder ein On-Chip-Layout aus dem Objekt bestimmen kann. Die Ausgabe des Entwurfswerkzeugs kann zur Herstellung der physischen Vorrichtung verwendet werden. Zum Beispiel kann ein Entwurfswerkzeug Konfigurationen verschiedener Hardware- und/oder Firmware-Elemente aus dem HDL-Objekt bestimmen, wie z. B. Busbreiten, Register (umfassend Größen und Arten), Speicherblöcke, Physischer-Link-Pfade, Struktur-Topologien, neben anderen Attributen, die implementiert würden, um das in dem HDL-Objekt modellierte System zu realisieren. Entwurfswerkzeuge können Werkzeuge zum Bestimmen der Topologie und Struktur-Konfigurationen von System-auf-Chip- (SoC; system on chip) und anderen Hardware-Vorrichtungen umfassen. In einigen Fällen kann das HDL-Objekt als die Basis für die Entwicklung von Modellen und Entwurfsdateien verwendet werden, die durch Herstellungsausrüstung zur Herstellung der beschriebenen Hardware verwendet werden können. Tatsächlich kann ein HDL-Objekt selbst als eine Eingabe in die Herstellungssystem-Software bereitgestellt werden, um die beschriebene Hardware zu verursachen.
  • In irgendeiner Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung, wie z. B. eine Platte, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderweitig erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle übertragen wird, die den Code oder den Entwurf anzeigt oder trägt, wird, insoweit ein Kopieren, Puffern oder erneutes Übertragen des elektrischen Signals ausgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem greifbaren, maschinenlesbaren Medium zumindest zeitweise einen Artikel speichern, wie beispielsweise in eine Trägerwelle codierte Informationen, die Techniken von Ausführungsbeispielen der vorliegenden Offenbarung verkörpern.
  • Eine Verwendung der Phrase zum' oder ausgebildet zum' bei einer Implementierung bezieht sich auf ein Anordnen, Zusammensetzen, Herstellen, zum Verkauf anbieten, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements, um eine benannte oder bestimmte Aufgabe auszuführen. Bei diesem Beispiel ist eine Vorrichtung oder ein Element derselben, das gerade nicht arbeitet, immer noch ausgebildet zum' Ausführen einer vorgesehenen Aufgabe, wenn sie/es entworfen, gekoppelt und/oder verbunden ist, um die besagte benannte Aufgabe auszuführen. Als rein darstellendes Beispiel kann ein Logik-Gate eine 0 oder eine 1 während des Betriebs bereitstellen. Aber ein Logik-Gate, das ausgebildet ist zum' Bereitstellen ein Freigabesignals an einen Takt (clock), umfasst nicht jedes potenzielle Logik-Gate, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logik-Gate ein solches, das in einer Weise gekoppelt ist, dass während des Betriebs die 1 - oder 0-Ausgabe ausgebildet ist, den Takt zu aktivieren. Es wird erneut darauf hingewiesen, dass eine Verwendung des Begriffs ausgebildet zum' keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, Hardware, und/oder eines Elements konzentriert, wobei die Vorrichtung, Hardware und/oder das Element in dem latenten Zustand entworfen ist, um eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, Hardware und/oder das Element arbeitet.
  • Ferner bezieht sich eine Verwendung der Phrasen fähig zum' und/oder ,wirksam zum' bei einem Ausführungsbeispiel auf eine Vorrichtung, Logik, Hardware und/oder Element, die/das auf solche Weise entworfen ist, um eine Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements auf eine spezifizierte Weise zu ermöglichen. Wie oben wird darauf hingewiesen, dass sich eine Verwendung von zum, fähig zum oder wirksam zum bei einem Ausführungsbeispiel auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, sondern auf solche Weise entworfen ist, um eine Verwendung einer Vorrichtung auf eine spezifizierte Weise zu ermöglichen.
  • Ein Wert, wie hierin verwendet, umfasst irgendeine bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Oft wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 en und 0 en bezeichnet, was einfach binäre logische Zustände darstellt. Zum Beispiel bezieht sich eine 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen niedrigen Logikpegel. Bei einem Ausführungsbeispiel kann eine Speicherungszelle, wie z. B. ein Transistor oder eine Flash-Zelle, fähig sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl zehn auch als ein binärer Wert von 418A0 und als Hexadezimalbuchstabe A dargestellt werden. Ein Wert umfasst daher irgendeine Darstellung von Informationen, die fähig sind, in einem Computersystem gehalten zu werden.
  • Ferner können Zustände durch Werte oder Abschnitte von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie beispielsweise eine logische Eins, einen Standard- oder anfänglichen Zustand darstellen, während ein zweiter Wert, wie beispielsweise eine logische Null, einen Nicht-Standard-Zustand darstellen kann. Zusätzlich beziehen sich die Begriffe zurücksetzen und setzen bei einem Ausführungsbeispiel jeweils auf einen Standard und einen aktualisierten Wert oder Zustand. Zum Beispiel umfasst ein Standardwert potenziell einen hohen logischen Wert, d. h. zurücksetzen, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert, d. h. setzen, umfasst. Es wird darauf hingewiesen, dass irgendeine Kombination von Werten verwendet werden kann, um irgendeine Anzahl von Zuständen darzustellen.
  • Die oben dargelegten Ausführungsbeispiele von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code implementiert werden, der auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium gespeichert ist, das durch ein Verarbeitungselement ausführbar ist. Ein maschinenzugreifbares/lesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder sendet), die durch eine Maschine, wie beispielsweise einen Computer oder elektronisches System, lesbar ist. Ein maschinenzugreifbares Medium umfasst zum Beispiel einen Direktzugriffsspeicher (RAM - Random Access Memory), wie beispielsweise einen statischen RAM (SRAM - Static Random Access Memory) oder dynamischen RAM (DRAM - Dynamic Random Access Memory), ROM (Read-only Memory; Nurlesespeicher); ein magnetisches oder optisches Speicherungsmedium; Flash-Speichervorrichtungen; elektrische Speicherungsvorrichtungen; optische Speicherungsvorrichtungen; akustische Speicherungsvorrichtungen; andere Formen von Speicherungsvorrichtungen zum Halten von Informationen, die von flüchtigen (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale) empfangen werden; etc., die von den nichtflüchtigen Medien zu unterscheiden sind, die Informationen von ihnen empfangen können.
  • Anweisungen, die zum Programmieren von Logik verwendet werden, um Ausführungsbeispiele der Offenbarung auszuführen, können innerhalb eines Speichers in dem System gespeichert werden, wie beispielsweise einem DRAM, einem Cache, einem Flash-Speicher oder einer anderen Speicherung. Ferner können die Anweisungen über ein Netzwerk oder mithilfe anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Senden von Information in einer durch eine Maschine (z. B. einen Computer) lesbaren Form umfassen, ist aber nicht beschränkt auf, Disketten, optische Platten, Kompaktplatte (Compact Disc, CD), Nurlesespeicher (CD-ROMs), und magneto-optische Platten, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren, programmierbaren Nur-Lese-Speicher (EPROM; Erasable Programmable Read-Only Memory), elektrisch löschbaren, programmierbaren Nur-Lese-Speicher (EEPROM; Electrically Erasable Programmable Read-Only Memory), magnetische oder optische Karten, Flash-Speicher oder eine greifbare maschinenlesbare Speicherung, die bei der Übertragung von Information über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale etc.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium irgendeine Art von greifbarem maschinenlesbaren Medium, das zum Speichern oder Senden von elektronischen Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Die folgenden Beispiele beziehen sich auf Ausführungsbeispiele gemäß dieser Beschreibung. Beispiel 1 ist eine Schnittstelle zum Empfangen einer Identifikation einer auszuführenden Funktion; und eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, wobei die Scheduling-Maschine ausgebildet ist, ein Kandidaten-Rechenelement aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last auszuwählen, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  • Beispiel 3 kann den Gegenstand von Beispiel 2 umfassen, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  • Beispiel 4 kann den Gegenstand von Beispiel 3 umfassen, wobei die Größe der Eingabedaten sich von der Größe der Ausgabedaten unterscheidet.
  • Beispiel 5 kann den Gegenstand von einem der Beispiele 2-4 umfassen, wobei die erste geschätzte Zeit und die zweite geschätzte Zeit auf Telemetriedaten basieren, die eine Auslastung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung anzeigen.
  • Beispiel 6 kann den Gegenstand von einem der Beispiele 1-5 umfassen, wobei die Scheduling-Maschine ausgebildet ist zum Schätzen einer Datenbewegungs- plus Ausführungszeit für jedes einer Mehrzahl von Kandidaten-Rechenelementen, und Herausfiltern von einem oder mehreren der Mehrzahl von Kandidaten-Rechenelementen, die eine geschätzte Datenbewegungs- plus Ausführungszeit aufweisen, die größer ist als eine für die Funktion spezifizierte maximale Latenz.
  • Beispiel 7 kann den Gegenstand von Beispiel 6 umfassen, wobei die Scheduling-Maschine ausgebildet ist, um, ansprechend auf eine Bestimmung, dass jedes von einem ersten Satz von Kandidaten-Rechenelementen eine geschätzte Datenbewegungs- plus Ausführungszeit aufweist, die die für die Funktion spezifizierte maximale Latenz überschreitet, ein zusätzliches Kandidaten-Rechenelement zu identifizieren, das fähig ist, die Funktion auszuführen, aber nicht konfiguriert ist, um die Funktion auszuführen; und, ansprechend auf eine Bestimmung, dass die maximale Latenz größer ist als eine geschätzte Datenbewegungs- plus Ausführungszeit für das zusätzliche Kandidaten-Rechenelement plus eine geschätzte Zeit zum Konfigurieren des zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion, das zusätzliche Kandidaten-Rechenelement zur Ausführung der Funktion auszuwählen; und das zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion zu konfigurieren.
  • Beispiel 8 kann den Gegenstand von einem der Beispiele 1-7 umfassen, wobei die geschätzte Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement auf einem geschätzten Leistungsverbrauch für das Kandidaten-Rechenelement zur Ausführung der Funktion basiert; und wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einem geschätzten Leistungsverbrauch zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einem geschätzten Leistungsverbrauch zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  • Beispiel 9 kann den Gegenstand von einem der Beispiele 1-8 umfassen, wobei die Scheduling-Maschine ausgebildet ist zum Verwenden einer ersten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung der kombinierten Last spezifiziert; zum Verwenden einer zweiten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung einer kombinierten Last der Ausführung einer zweiten angeforderten Funktion spezifiziert, wobei das eine oder die mehreren Kriterien der zweiten Lastfunktion sich von dem einen oder den mehreren Kriterien der ersten Lastfunktion unterscheiden; und zum Auswählen eines zweiten Kandidaten-Rechenelements zur Ausführung der zweiten angeforderten Funktion basierend auf Auswertungsergebnissen der zweiten Lastfunktion.
  • Beispiel 10 kann den Gegenstand von einem der Beispiele 1-9 umfassen, wobei eine erste Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die zwischen das Kandidaten-Rechenelement und ein Speicherelement, das Eingabedaten für die Funktion speichert, gekoppelt ist, und wobei eine zweite Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die innerhalb des Kandidaten-Rechenelements positioniert ist.
  • Beispiel 11 ist ein Verfahren, umfassend ein Empfangen einer Identifikation einer auszuführenden Funktion; und ein Auswählen, durch eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, eines Kandidaten-Rechenelements aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch ein Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.
  • Beispiel 12 kann den Gegenstand von Beispiel 11 umfassen, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  • Beispiel 13 kann den Gegenstand von Beispiel 12 umfassen, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  • Beispiel 14 kann den Gegenstand von Beispiel 13 umfassen, wobei die Größe der Eingabedaten sich von der Größe der Ausgabedaten unterscheidet.
  • Beispiel 15 kann den Gegenstand von einem der Beispiele 12-14 umfassen, wobei die erste geschätzte Zeit und die zweite geschätzte Zeit auf Telemetriedaten basieren, die eine Auslastung der zumindest einen Verbindung anzeigen.
  • Beispiel 16 kann den Gegenstand von einem der Beispiele 11-16 umfassen, ferner umfassend ein Schätzen einer Datenbewegungs- plus Ausführungszeit für jedes einer Mehrzahl von Kandidaten-Rechenelementen; und ein Herausfiltern von einem oder mehreren der Mehrzahl von Kandidaten-Rechenelementen, die eine geschätzte Datenbewegungs- plus Ausführungszeit aufweisen, die größer ist als eine für die Funktion spezifizierte maximale Latenz.
  • Beispiel 17 kann den Gegenstand von Beispiel 16 umfassen, ferner umfassend, ansprechend auf eine Bestimmung, dass jedes von einem ersten Satz von Kandidaten-Rechenelementen eine geschätzte Datenbewegungs- plus Ausführungszeit aufweist, die die für die Funktion spezifizierte maximale Latenz überschreitet, Identifizieren eines zusätzlichen Kandidaten-Rechenelements, das fähig ist, die Funktion auszuführen, aber nicht konfiguriert ist, um die Funktion auszuführen; und, ansprechend auf eine Bestimmung, dass die maximale Latenz größer ist als eine geschätzte Datenbewegungs- plus Ausführungszeit für das zusätzliche Kandidaten-Rechenelement plus eine geschätzte Zeit zum Konfigurieren des zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion, Auswählen des zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion; und Konfigurieren des zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion.
  • Beispiel 18 kann den Gegenstand von einem der Beispiele 11-17 umfassen, wobei die geschätzte Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement auf einem geschätzten Leistungsverbrauch für das Kandidaten-Rechenelement zur Ausführung der Funktion basiert; und wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einem geschätzten Leistungsverbrauch zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einem geschätzten Leistungsverbrauch zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  • Beispiel 19 kann den Gegenstand von einem der Beispiele 11-18 umfassen, ferner umfassend ein Verwenden einer ersten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung der kombinierten Last spezifiziert; ein Verwenden einer zweiten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung einer kombinierten Last der Ausführung einer zweiten angeforderten Funktion spezifiziert, wobei das eine oder die mehreren Kriterien der zweiten Lastfunktion sich von dem einen oder den mehreren Kriterien der ersten Lastfunktion unterscheiden; und ein Auswählen eines zweiten Kandidaten-Rechenelements zur Ausführung der zweiten angeforderten Funktion basierend auf Auswertungsergebnissen der zweiten Lastfunktion.
  • Beispiel 20 kann den Gegenstand von einem der Beispiele 11-19 umfassen, wobei eine erste Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die zwischen das Kandidaten-Rechenelement und ein Speicherelement, das Eingabedaten für die Funktion speichert, gekoppelt ist, und wobei eine zweite Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die innerhalb des Kandidaten-Rechenelements positioniert ist.
  • Beispiel 21 ist ein System, umfassend eine Mehrzahl von Speicherelementen, umfassend ein erstes Speicherelement zum Speichern von Eingabedaten einer angeforderten Funktion und Ausgabedaten der angeforderten Funktion; eine Mehrzahl von Kandidaten-Rechenelementen, die wirksam sind, die angeforderte Funktion auszuführen; und eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, wobei die Scheduling-Maschine ausgebildet ist, ein Kandidaten-Rechenelement aus der Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last auszuwählen, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement, einer geschätzten Last der Datenbewegung der Eingabedaten von dem ersten Speicherelement über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung und einer geschätzten Last der Datenbewegung der Ausgabedaten über die zumindest eine Verbindung zu dem ersten Speicher basiert.
  • Beispiel 22 kann den Gegenstand von Beispiel 21 umfassen, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  • Beispiel 23 kann den Gegenstand von Beispiel 22 umfassen, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  • Beispiel 24 kann den Gegenstand von Beispiel 23 umfassen, wobei die Größe der Eingabedaten sich von der Größe der Ausgabedaten unterscheidet.
  • Beispiel 25 kann den Gegenstand von einem der Beispiele 22-24 umfassen, wobei die erste geschätzte Zeit und die zweite geschätzte Zeit auf Telemetriedaten basieren, die eine Auslastung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung anzeigen.
  • Beispiel 26 kann den Gegenstand von Beispiel 22 umfassen, wobei die Scheduling-Maschine ausgebildet ist zum Schätzen einer Datenbewegungs- plus Ausführungszeit für jedes einer Mehrzahl von Kandidaten-Rechenelementen; und zum Herausfiltern von einem oder mehreren der Mehrzahl von Kandidaten-Rechenelementen, die eine geschätzte Datenbewegungs- plus Ausführungszeit aufweisen, die größer ist als eine für die Funktion spezifizierte maximale Latenz.
  • Beispiel 27 kann den Gegenstand von Beispiel 26 umfassen, wobei die Scheduling-Maschine ausgebildet ist, um, ansprechend auf eine Bestimmung, dass jedes von einem ersten Satz von Kandidaten-Rechenelementen eine geschätzte Datenbewegungs- plus Ausführungszeit aufweist, die die für die Funktion spezifizierte maximale Latenz überschreitet, ein zusätzliches Kandidaten -Rechenelement zu identifizieren, das fähig ist, die Funktion auszuführen, aber nicht konfiguriert ist, um die Funktion auszuführen; und, ansprechend auf eine Bestimmung, dass die maximale Latenz größer ist als eine geschätzte Datenbewegungs- plus Ausführungszeit für das zusätzliche Kandidaten-Rechenelement plus eine geschätzte Zeit zum Konfigurieren des zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion, das zusätzliche Kandidaten-Rechenelement zur Ausführung der Funktion auszuwählen; und das zusätzliche Kandidaten-Rechenelement zur Ausführung der Funktion zu konfigurieren.
  • Beispiel 28 kann den Gegenstand von einem der Beispiele 21-27 umfassen, wobei die geschätzte Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement auf einem geschätzten Leistungsverbrauch für das Kandidaten-Rechenelement zur Ausführung der Funktion basiert; und wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einem geschätzten Leistungsverbrauch zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einem geschätzten Leistungsverbrauch zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  • Beispiel 29 kann den Gegenstand von einem der Beispiele 21-28 umfassen, wobei die Scheduling-Maschine ausgebildet ist zum Verwenden einer ersten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung der kombinierten Last spezifiziert; zum Verwenden einer zweiten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung einer kombinierten Last der Ausführung einer zweiten angeforderten Funktion spezifiziert, wobei das eine oder die mehreren Kriterien der zweiten Lastfunktion sich von dem einen oder den mehreren Kriterien der ersten Lastfunktion unterscheiden; und zum Auswählen eines zweiten Kandidaten-Rechenelements zur Ausführung der zweiten angeforderten Funktion basierend auf Auswertungsergebnissen der zweiten Lastfunktion.
  • Beispiel 30 kann den Gegenstand von einem der Beispiele 21-29 umfassen, wobei eine erste Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die zwischen das Kandidaten-Rechenelement und ein Speicherelement, das Eingabedaten für die Funktion speichert, gekoppelt ist, und wobei eine zweite Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die innerhalb des Kandidaten-Rechenelements positioniert ist.
  • Beispiel 31 kann den Gegenstand von einem der Beispiele 21-30 umfassen, wobei das erste Speicherelement eine Schaltungsanordnung zur Ausführung der angeforderten Funktion umfasst und wobei die Auswahl des Kandidaten-Rechenelements ferner ein Auswerten der kombinierten Last für das erste Speicherelement umfasst, um zu bestimmen, ob das erste Speicherelement zur Ausführung der angeforderten Funktion ausgewählt werden sollte.
  • Beispiel 32 kann den Gegenstand von einem der Beispiele 21-31 umfassen, wobei die Mehrzahl von Kandidaten-Rechenelementen einen Prozessor und zumindest eines von einem Beschleuniger, einem feldprogrammierbaren Gate-Array oder einem Beschleunigter-Speicher-Element umfasst.
  • In dieser gesamten Beschreibung bedeutet ein Bezug auf „das eine Ausführungsbeispiel“ oder „ein Ausführungsbeispiel“, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, das/die in Verbindung mit dem Ausführungsbeispiel beschrieben wird, bei zumindest einem Ausführungsbeispiel der vorliegenden Offenbarung umfasst ist. Somit bezieht sich das Auftreten der Phrasen „bei einem einzelnen Ausführungsbeispiel“ oder „bei einem Ausführungsbeispiel“ an verschiedenen Stellen durchgehend in dieser Beschreibung nicht zwingend überall auf das gleiche Ausführungsbeispiel. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristika in irgendeiner geeigneten Weise bei einem oder mehreren Ausführungsbeispielen kombiniert werden.
  • Bei der vorangehenden Beschreibung wird eine detaillierte Beschreibung Bezug nehmend auf spezifische beispielhafte Ausführungsbeispiele gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Wesen und Umfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Beschreibung und Zeichnungen sind dementsprechend eher in einem darstellenden als einem einschränkenden Sinn zu betrachten. Ferner bezieht sich die vorangehende Verwendung von Ausführungsbeispiel und anderer beispielhafter Sprache nicht notwendigerweise auf das gleiche Ausführungsbeispiel oder das gleiche Beispiel, sondern kann sich auf unterschiedliche und eindeutige Ausführungsbeispiele sowie potenziell auf das gleiche Ausführungsbeispiel beziehen.

Claims (25)

  1. Eine Vorrichtung, umfassend: eine Schnittstelle zum Empfangen einer Identifikation einer auszuführenden Funktion; und eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, wobei die Scheduling-Maschine ausgebildet ist, ein Kandidaten-Rechenelement aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last auszuwählen, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.
  2. Die Vorrichtung gemäß Anspruch 1, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  3. Die Vorrichtung gemäß Anspruch 2, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  4. Die Vorrichtung gemäß Anspruch 3, wobei die Größe der Eingabedaten sich von der Größe der Ausgabedaten unterscheidet.
  5. Die Vorrichtung gemäß einem der Ansprüche 2-4, wobei die erste geschätzte Zeit und die zweite geschätzte Zeit auf Telemetriedaten basieren, die eine Auslastung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung anzeigen.
  6. Die Vorrichtung gemäß einem der Ansprüche 1-5, wobei die Scheduling-Maschine ausgebildet ist zum: Schätzen einer Datenbewegungs- plus Ausführungszeit für jedes einer Mehrzahl von Kandidaten-Rechenelementen; und Herausfiltern von einem oder mehreren der Mehrzahl von Kandidaten-Rechenelementen, die eine geschätzte Datenbewegungs- plus Ausführungszeit aufweisen, die größer ist als eine für die Funktion spezifizierte maximale Latenz.
  7. Die Vorrichtung gemäß Anspruch 6, wobei die Scheduling-Maschine ausgebildet ist, um: ansprechend auf eine Bestimmung, dass jedes von einem ersten Satz von Kandidaten-Rechenelementen eine geschätzte Datenbewegungs- plus Ausführungszeit aufweist, die die für die Funktion spezifizierte maximale Latenz überschreitet, ein zusätzliches Kandidaten-Rechenelement zu identifizieren, das fähig ist, die Funktion auszuführen, aber nicht konfiguriert ist, um die Funktion auszuführen; und ansprechend auf eine Bestimmung, dass die maximale Latenz größer ist als eine geschätzte Datenbewegungs- plus Ausführungszeit für das zusätzliche Kandidaten-Rechenelement plus eine geschätzte Zeit zum Konfigurieren des zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion: das zusätzliche Kandidaten-Rechenelement zur Ausführung der Funktion auszuwählen; und das zusätzlichen Kandidaten-Rechenelements zur Ausführung der Funktion zu konfigurieren.
  8. Die Vorrichtung gemäß einem der Ansprüche 1-7, wobei: die geschätzte Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement auf einem geschätzten Leistungsverbrauch für das Kandidaten-Rechenelement zur Ausführung der Funktion basiert; und die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einem geschätzten Leistungsverbrauch zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einem geschätzten Leistungsverbrauch zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  9. Die Vorrichtung gemäß einem der Ansprüche 1-8, wobei die Scheduling-Maschine ausgebildet ist zum: Verwenden einer ersten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung der kombinierten Last spezifiziert; Verwenden einer zweiten Lastfunktion, die ein oder mehrere Kriterien zur Schätzung einer kombinierten Last der Ausführung einer zweiten angeforderten Funktion spezifiziert, wobei das eine oder die mehreren Kriterien der zweiten Lastfunktion sich von dem einen oder den mehreren Kriterien der ersten Lastfunktion unterscheiden; und Auswählen eines zweiten Kandidaten-Rechenelements zur Ausführung der zweiten angeforderten Funktion basierend auf Auswertungsergebnissen der zweiten Lastfunktion.
  10. Die Vorrichtung gemäß einem der Ansprüche 1-9, wobei eine erste Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die zwischen das Kandidaten-Rechenelement und ein Speicherelement, das Eingabedaten für die Funktion speichert, gekoppelt ist, und wobei eine zweite Verbindung der zumindest einen für das Kandidaten-Rechenelement identifizierten Verbindung eine Verbindung umfasst, die innerhalb des Kandidaten-Rechenelements positioniert ist.
  11. Ein Verfahren, umfassend: Empfangen einer Identifikation einer auszuführenden Funktion; und Auswählen, durch eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, eines Kandidaten-Rechenelements aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch ein Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.
  12. Das Verfahren gemäß Anspruch 11, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  13. Das Verfahren gemäß Anspruch 12, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  14. Das Verfahren gemäß Anspruch 12, wobei die erste geschätzte Zeit und die zweite geschätzte Zeit auf Telemetriedaten basieren, die eine Auslastung der zumindest einen Verbindung anzeigen.
  15. Das Verfahren gemäß einem der Ansprüche 12-14, ferner umfassend: Schätzen einer Datenbewegungs- plus Ausführungszeit für jedes einer Mehrzahl von Kandidaten-Rechenelementen; und Herausfiltern von einem oder mehreren der Mehrzahl von Kandidaten-Rechenelementen, die eine geschätzte Datenbewegungs- plus Ausführungszeit aufweisen, die größer ist als eine für die Funktion spezifizierte maximale Latenz.
  16. Ein System, umfassend: eine Mehrzahl von Speicherelementen, umfassend ein erstes Speicherelement zum Speichern von Eingabedaten einer angeforderten Funktion und Ausgabedaten der angeforderten Funktion; eine Mehrzahl von Kandidaten-Rechenelementen, die betreibbar sind, die angeforderte Funktion auszuführen; und eine Scheduling-Maschine, umfassend eine Schaltungsanordnung, wobei die Scheduling-Maschine ausgebildet ist, ein Kandidaten-Rechenelement aus der Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last auszuwählen, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch das Kandidaten-Rechenelement, einer geschätzten Last der Datenbewegung der Eingabedaten von dem ersten Speicherelement über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung und einer geschätzten Last der Datenbewegung der Ausgabedaten über die zumindest eine Verbindung zu dem ersten Speicher basiert.
  17. Das System gemäß Anspruch 16, wobei das erste Speicherelement eine Schaltungsanordnung zur Ausführung der angeforderten Funktion umfasst und wobei die Auswahl des Kandidaten-Rechenelements ferner ein Auswerten der kombinierten Last für das erste Speicherelement umfasst, um zu bestimmen, ob das erste Speicherelement zur Ausführung der angeforderten Funktion ausgewählt werden sollte.
  18. Das System gemäß einem der Ansprüche 16-17, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  19. Das System gemäß Anspruch 18, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  20. Das System gemäß einem der Ansprüche 16-19, wobei die Mehrzahl von Kandidaten-Rechenelementen einen Prozessor und zumindest eines von einem Beschleuniger, einem feldprogrammierbaren Gate-Array oder einem Beschleunigter-Speicher-Element umfasst.
  21. Ein System, umfassend: Mittel zum Empfangen einer Identifikation einer auszuführenden Funktion; und Mittel zum Auswählen eines Kandidaten-Rechenelements aus einer Mehrzahl von Kandidaten-Rechenelementen basierend auf einer kombinierten Last, wobei die kombinierte Last auf einer geschätzten Last zur Ausführung der Funktion durch ein Kandidaten-Rechenelement und einer geschätzten Last der Datenbewegung über zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung basiert.
  22. Das System gemäß Anspruch 21, wobei die geschätzte Last der Datenbewegung über die zumindest eine für das Kandidaten-Rechenelement identifizierte Verbindung auf einer ersten geschätzten Zeit zum Senden von Eingabedaten über die zumindest eine Verbindung an das Kandidaten-Rechenelement und einer zweiten geschätzten Zeit zum Senden von Ausgabedaten von dem Kandidaten-Rechenelement über die zumindest eine Verbindung basiert.
  23. Das System gemäß Anspruch 22, wobei die erste geschätzte Zeit auf einer Größe der Eingabedaten basiert und die zweite geschätzte Zeit auf einer Größe der Ausgabedaten basiert.
  24. Das System gemäß Anspruch 22, wobei die erste geschätzte Zeit und die zweite geschätzte Zeit auf Telemetriedaten basieren, die eine Auslastung der zumindest einen Verbindung anzeigen.
  25. Das System gemäß einem der Ansprüche 22-24, ferner umfassend: Mittel zum Schätzen einer Datenbewegungs- plus Ausführungszeit für jedes einer Mehrzahl von Kandidaten-Rechenelementen; und Mittel zum Herausfiltern von einem oder mehreren der Mehrzahl von Kandidaten-Rechenelementen, die eine geschätzte Datenbewegungs- plus Ausführungszeit aufweisen, die größer ist als eine für die Funktion spezifizierte maximale Latenz.
DE102020130555.9A 2020-01-29 2020-11-19 Adaptiver datenversand basierend auf lastfunktionen Pending DE102020130555A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/776,212 US11880710B2 (en) 2020-01-29 2020-01-29 Adaptive data shipment based on burden functions
US16/776,212 2020-01-29

Publications (1)

Publication Number Publication Date
DE102020130555A1 true DE102020130555A1 (de) 2021-08-05

Family

ID=70771690

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020130555.9A Pending DE102020130555A1 (de) 2020-01-29 2020-11-19 Adaptiver datenversand basierend auf lastfunktionen

Country Status (2)

Country Link
US (1) US11880710B2 (de)
DE (1) DE102020130555A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11368550B2 (en) 2019-06-03 2022-06-21 Raytheon Company Systems and methods for entity aware allocation of electronic resources
US11139991B2 (en) * 2019-09-28 2021-10-05 Intel Corporation Decentralized edge computing transactions with fine-grained time coordination
US20220012094A1 (en) * 2021-09-22 2022-01-13 Intel Corporation Resource management controller

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8447851B1 (en) * 2011-11-10 2013-05-21 CopperEgg Corporation System for monitoring elastic cloud-based computing systems as a service
US9769084B2 (en) * 2013-11-02 2017-09-19 Cisco Technology Optimizing placement of virtual machines

Also Published As

Publication number Publication date
US20200167190A1 (en) 2020-05-28
US11880710B2 (en) 2024-01-23

Similar Documents

Publication Publication Date Title
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
US20200322287A1 (en) Switch-managed resource allocation and software execution
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
EP3706394B1 (de) Schreiben auf mehrere speicherziele
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
CN117795495A (zh) 通过图形处理单元的网络接口的直接存储器写入
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102020122301A1 (de) Konfigurationsschema für link-herstellung
US11681625B2 (en) Receive buffer management
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
CN117157963A (zh) 卸载到网络设备的可靠传输
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
US20210326221A1 (en) Network interface device management of service execution failover
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102022124530A1 (de) Speicherpoolmanagement
US20220086226A1 (en) Virtual device portability
DE102020133272A1 (de) Pufferzuweisung für Parallelverarbeitung von Daten