DE102021122231A1 - Dynamische netzwerksteuerungs-leistungsverwaltung - Google Patents

Dynamische netzwerksteuerungs-leistungsverwaltung Download PDF

Info

Publication number
DE102021122231A1
DE102021122231A1 DE102021122231.1A DE102021122231A DE102021122231A1 DE 102021122231 A1 DE102021122231 A1 DE 102021122231A1 DE 102021122231 A DE102021122231 A DE 102021122231A DE 102021122231 A1 DE102021122231 A1 DE 102021122231A1
Authority
DE
Germany
Prior art keywords
link
power management
network
threshold
width
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
DE102021122231.1A
Other languages
English (en)
Inventor
Patrick Connor
James Hearn
Kevin LIEDTKE
Scott Dubal
Benjamin CHEONG
Rafael Guerra
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 DE102021122231A1 publication Critical patent/DE102021122231A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3209Monitoring remote activity, e.g. over telephone lines or network connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/10Current supply arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Eine I/O-Steuerung umfasst einen Port zum Koppeln mit einem Netzwerk, einen Puffer zum Puffern von Netzwerkdaten und eine Schnittstelle zur Unterstützung eines Links, um die I/O-Steuerung mit einer anderen Vorrichtung zu koppeln. Die I/O-Steuerung überwacht einen Puffer, um eine Menge an Verkehr auf dem Port zu bestimmen, initiiert, an der Schnittstelle, einen Leistungsverwaltungsübergang auf dem Link basierend auf der Menge an Verkehr und mindert eine Latenz, die dem Leistungsverwaltungsübergang an dem Port zugeordnet ist.

Description

  • GEBIET
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Gebiet der Computerentwicklung und genauer gesagt auf die Leistungsverwaltung von Peripherievorrichtungen.
  • HINTERGRUND
  • Ein Rechenzentrum kann eine oder mehrere Plattformen umfassen, die jeweils zumindest einen Prozessor und zugeordnete Speicher- (memory) Module umfassen. Jede Plattform des Rechenzentrums kann die Performance irgendeiner geeigneten Anzahl von Prozessen ermöglichen, die verschiedenen Anwendungen zugeordnet sind, die auf der Plattform laufen. Diese Prozesse können durch die Prozessoren und andere zugeordnete Logik der Plattformen ausgeführt werden. Jede Plattform kann zusätzlich I/O-Steuerungen, wie z. B. Netzwerkadaptervorrichtungen, umfassen, die zum Senden und Empfangen von Daten auf einem Netzwerk zur Verwendung durch die verschiedenen Anwendungen verwendet werden können.
  • Figurenliste
    • 1 stellt ein Blockdiagramm von Komponenten eines Rechenzentrums gemäß bestimmten Ausführungsbeispielen dar.
    • 2 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Prozessorarchitektur zeigt.
    • 3 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte I/O-Steuerungsvorrichtung zeigt.
    • 4A-4B sind vereinfachte Blockdiagramme, die Übergänge zwischen verschiedenen Linkbreiten eines Links zeigen.
    • 5 ist ein Diagramm, das eine beispielhafte Zustandsmaschine für einen Link zeigt.
    • 6 ist ein Diagramm, das eine beispielhafte Konfigurations-Teilzustand-Maschine zeigt.
    • 7 ist ein Ablaufdiagramm, das beispielhafte Techniken für die Verwaltung des Leistungsverbrauchs an einer I/O-Steuerung zeigt.
    • 8 stellt ein Blockdiagramm einer beispielhaften Prozessorvorrichtung gemäß bestimmten Ausführungsbeispielen dar.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen zeigen gleiche Elemente an.
  • DETAILLIERTE BESCHREIBUNG
  • 1 stellt ein Blockdiagramm von Komponenten eines Rechenzentrums 100 gemäß bestimmten Ausführungsbeispielen dar. Bei dem dargestellten Ausführungsbeispiel umfasst das Rechenzentrum 100 eine Mehrzahl von Plattformen 102, eine Datenanalysemaschine 104 und eine Rechenzentrum-Verwaltungsplattform 106, die durch ein Netzwerk 108 zusammengekoppelt sind. Eine Plattform 102 kann eine Plattformlogik 110 mit einer oder mehreren zentralen Verarbeitungseinheiten (CPUs; central processing units) 112, Speichern 114 (die irgendeine Anzahl unterschiedlicher Module umfassen können), Chipsätzen 116, Kommunikationsschnittstellen 118 und irgendeiner anderen geeigneten Hardware und/oder Software zum Ausführen eines Hypervisors 120 oder eines anderen Betriebssystems, das in der Lage ist, Prozesse auszuführen, die den Anwendungen zugeordnet sind, die auf Plattform 102 ausgeführt werden, aufweisen. Bei einigen Ausführungsbeispielen kann eine Plattform 102 als eine Host-Plattform für ein oder mehrere Gastsysteme 122 fungieren, die diese Anwendungen in Anspruch nehmen.
  • Jede Plattform 102 kann die Plattformlogik 110 umfassen. Die Plattformlogik 110 umfasst neben anderer Logik, die die Funktionalität der Plattform 102 ermöglicht, eine oder mehrere CPUs 112, Speicher 114, einen oder mehrere Chipsätze 116 und eine Kommunikationsschnittstelle 118. Obwohl drei Plattformen dargestellt sind, kann das Rechenzentrum 100 irgendeine geeignete Anzahl von Plattformen umfassen. Bei verschiedenen Ausführungsbeispielen kann sich eine Plattform 102 auf einer Schaltungsplatine befinden, die in einem Gehäuse, einem Rack, kompossiblen Servern, disaggregierten Servern oder anderen geeigneten Strukturen installiert ist, die mehrere Plattformen umfassen, die durch das Netzwerk 108 (das z. B. ein Rack oder einen Backplane-Schalter umfassen kann) zusammengekoppelt sind.
  • Die CPUs 112 können jeweils irgendeine geeignete Anzahl von Prozessorkernen umfassen. Die Kerne können miteinander, mit dem Speicher 114, mit zumindest einem Chipsatz 116 und/oder mit der Kommunikationsschnittstelle 118 durch eine oder mehrere Steuerungen, die sich auf der CPU 112 und/oder dem Chipsatz 116 befinden, gekoppelt sein. Bei bestimmten Ausführungsbeispielen ist eine CPU 112 innerhalb eines Sockets ausgebildet, der permanent oder entfernbar mit der Plattform 102 gekoppelt ist. Die CPU 112 wird nachfolgend in Verbindung mit 4 detaillierter beschrieben. Obwohl vier CPUs gezeigt sind, kann eine Plattform 102 irgendeine geeignete Anzahl von CPUs umfassen.
  • Der Speicher 114 kann irgendeine Form von flüchtigem oder nichtflüchtigem 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. Der Speicher (memory) 114 kann von der Plattform 102 für kurz-, mittel- und/oder langfristige Speicherung (storage) verwendet werden. Der Speicher 114 kann irgendwelche geeigneten Daten oder Informationen speichern, die von der Plattformlogik 110 verwendet werden, umfassend Software, die in einem computerlesbaren Medium eingebettet ist, und/oder kodierte Logik, die in Hardware eingebracht oder anderweitig gespeichert ist (z. B. Firmware). Der Speicher 114 kann Daten speichern, die von Kernen von CPUs 112 verwendet werden. Bei einigen Ausführungsbeispielen kann der Speicher 114 auch Speicherung für Anweisungen aufweisen, die durch die Kerne der CPUs 112 oder andere Verarbeitungselemente (z. B. Logik, die sich auf den Chipsätzen 116 befindet) ausgeführt werden können, um eine Funktionalität bereitzustellen, die Komponenten der Plattformlogik 110 zugeordnet ist. Zusätzlich oder alternativ können die Chipsätze 116 jeweils einen Speicher umfassen, der irgendwelche der hierin im Hinblick auf den Speicher 114 beschriebenen Charakteristika aufweisen kann. Der Speicher 114 kann auch die Ergebnisse und/oder Zwischenergebnisse der verschiedenen Berechnungen und Bestimmungen speichern, die von den CPUs 112 oder den Verarbeitungselementen auf den Chipsätzen 116 ausgeführt werden. Bei verschiedenen Ausführungsbeispielen kann der Speicher 114 ein oder mehrere Module des Systemspeichers umfassen, die mit den CPUs über Speichersteuerungen gekoppelt sind (die extern zu den CPUs 112 oder mit denselben integriert sein können). Bei verschiedenen Ausführungsbeispielen können ein oder mehrere bestimmte Module des Speichers 114 für eine bestimmte CPU 112 oder andere Verarbeitungsvorrichtung dediziert sein oder können über mehrere CPUs 112 oder andere Verarbeitungsvorrichtungen gemeinschaftlich verwendet werden.
  • Eine Plattform 102 kann auch einen oder mehrere Chipsätze 116 umfassen, die irgendeine geeignete Logik aufweisen, um den Betrieb der CPUs 112 zu unterstützen. Bei verschiedenen Ausführungsbeispielen kann der Chipsatz 116 sich auf dem gleichen Package wie eine CPU 112 oder auf einem oder mehreren unterschiedlichen Packages befinden. Jeder Chipsatz kann irgendeine geeignete Anzahl von CPUs 112 unterstützen. Ein Chipsatz 116 kann auch eine oder mehrere Steuerungen umfassen, um andere Komponenten der Plattformlogik 110 (z. B. Kommunikationsschnittstelle 118 oder Speicher 114) mit einer oder mehreren CPUs zu koppeln. Zusätzlich oder alternativ können die CPUs 112 integrierte Steuerungen umfassen. Beispielsweise könnte die Kommunikationsschnittstelle 118 über integrierte I/O-Steuerungen, die sich auf jeder CPU befinden, direkt mit den CPUs 112 gekoppelt sein.
  • Die Chipsätze 116 können jeweils eine oder mehrere Kommunikationsschnittstellen 128 umfassen. Die Kommunikationsschnittstelle 128 kann für die Kommunikation von Signalisierung und/oder Daten zwischen dem Chipsatz 116 und einer oder mehreren I/O-Vorrichtungen, einem oder mehreren Netzwerken 108 und/oder einer oder mehreren mit dem Netzwerk 108 gekoppelten Vorrichtungen (z. B. Rechenzentrum-Verwaltungsplattform 106 oder Datenanalysemaschine 104) verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 128 verwendet werden, um Netzwerkverkehr, wie beispielsweise Datenpakete, zu senden und zu empfangen. Bei einem bestimmten Ausführungsbeispiel kann die Kommunikationsschnittstelle 128 durch eine oder mehrere I/O-Steuerungen, wie beispielsweise eine oder mehrere physische Netzwerkschnittstellensteuerungen (NICs; network interface controllers), auch bekannt als Netzwerkschnittstellenkarten oder Netzwerkadapter, implementiert sein. Eine I/O-Steuerung kann 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 I/O-Steuerung kann einen oder mehrere physische Ports aufweisen, die mit einem Kabel (z. B. einem Ethernet-Kabel) koppeln können. Eine I/O-Steuerung kann eine Kommunikation zwischen irgendeinem geeigneten Element des Chipsatzes 116 (z. B. Schalter 130) und einer anderen mit dem Netzwerk 108 gekoppelten Vorrichtung ermöglichen. Bei einigen Ausführungsbeispielen kann das Netzwerk 108 einen Schalter mit Überbrückungs- und/oder Routing-Funktionen umfassen, der extern zu der Plattform 102 und wirksam ist, verschiedene I/O-Steuerungen (z. B. NICs), die über das gesamte Rechenzentrum 100 (z. B. auf verschiedenen Plattformen) verteilt sind, miteinander zu koppeln. Bei verschiedenen Ausführungsbeispielen kann eine I/O-Steuerung mit dem Chipsatz integriert sein (d. h. kann auf der gleichen integrierten Schaltung oder Schaltungsplatine sein wie der Rest der Chipsatzlogik), oder kann auf einer unterschiedlichen integrierten Schaltung oder Schaltungsplatine sein, die elektromechanisch mit dem Chipsatz gekoppelt ist. Bei einigen Ausführungsbeispielen kann die Kommunikationsschnittstelle 128 auch erlauben, dass I/O-Vorrichtungen, die mit der Plattform integriert oder extern zu derselben sind (z. B. Laufwerke, andere NICs usw.) mit den CPU-Kernen kommunizieren.
  • Der Schalter 130 kann mit verschiedenen Ports (z. B. bereitgestellt durch NICs) der Kommunikationsschnittstelle 128 koppeln und kann Daten zwischen diesen Ports und verschiedenen Komponenten des Chipsatzes 116 gemäß einem oder mehreren Link- oder Verbindungsprotokollen, wie beispielsweise Peripheral Component Interconnect Express (PCIe), Compute Express Link (CXL), HyperTransport, GenZ, OpenCAPI und anderen, die jeweils alternativ oder gemeinsam die hierin erörterten allgemeinen Prinzipien und/oder spezifischen Merkmale anwenden können, schalten. Der Schalter 130 kann ein physischer oder virtueller (d. h. Software-) Schalter sein.
  • Die Plattformlogik 110 kann eine zusätzliche Kommunikationsschnittstelle 118 aufweisen. Ähnlich wie die Kommunikationsschnittstelle 128 kann die Kommunikationsschnittstelle 118 für die Kommunikation von Signalisierung und/oder Daten zwischen der Plattformlogik 110 und einem oder mehreren Netzwerken 108 und einer oder mehreren Vorrichtungen, die mit dem Netzwerk 108 gekoppelt sind, verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 118 verwendet werden, um Netzwerkverkehr, wie beispielsweise Datenpakete, zu senden und zu empfangen. Bei einem bestimmten Ausführungsbeispiel weist die Kommunikationsschnittstelle 118 eine oder mehrere physische I/O-Steuerungen (z. B. NICs) auf. Diese NICs können eine Kommunikation zwischen irgendeinem geeigneten Element der Plattformlogik 110 (z. B. CPUs 112) und einer anderen Vorrichtung, die mit dem Netzwerk 108 gekoppelt ist (z. B. Elemente anderer Plattformen oder entfernte Knoten, die mit dem Netzwerk 108 durch ein oder mehrere Netzwerke gekoppelt sind), ermöglichen. Bei bestimmten Ausführungsbeispielen kann die Kommunikationsschnittstelle 118 auch erlauben, dass Vorrichtungen, die extern zu der Plattform sind (z. B. Laufwerke, andere NICs usw.) mit den CPU-Kernen kommunizieren. Bei verschiedenen Ausführungsbeispielen können NICs der Kommunikationsschnittstelle 118 mit den CPUs über I/O-Steuerungen gekoppelt sein (die extern zu den CPUs 112 oder mit denselben integriert sein können). Ferner können, wie hierin erörtert, I/O-Steuerungen einen Leistungsverwalter 125 umfassen, um Leistungsverbrauchsverwaltungsfunktionalität an der I/O-Steuerung zu implementieren (z. B. durch automatische Implementierung von Leistungseinsparungen an einer oder mehreren Schnittstellen der Kommunikationsschnittstelle 118 (z. B. einer PCIe-Schnittstelle, die eine NIC mit einem anderen Element des Systems koppelt), neben anderen Beispielfunktionen.
  • Die Plattformlogik 110 kann irgendwelche geeigneten Arten von Verarbeitungsanforderungen empfangen und ausführen. Eine Verarbeitungsanforderung kann irgendeine Anforderung umfassen, eine oder mehrere Ressourcen der Plattformlogik 110 zu nutzen, wie beispielsweise einen oder mehrere Kerne oder zugeordnete Logik. Zum Beispiel kann eine Verarbeitungsanforderung umfassen einen Prozessorkern-Interrupt; eine Anforderung, eine Softwarekomponente zu instantiieren, wie beispielsweise einen I/O-Vorrichtungstreiber 124 oder eine virtuelle Maschine 132; eine Anforderung, ein Netzwerkpaket zu verarbeiten, das von einer virtuellen Maschine 132 oder einer Vorrichtung, die extern zu der Plattform 102 ist (wie beispielsweise ein Netzwerkknoten, der mit dem Netzwerk 108 gekoppelt ist) empfangen wurde; eine Anforderung, eine Arbeitslast (z. B. Prozess oder Thread) auszuführen, die einer virtuellen Maschine 132, einer Anwendung, die auf der Plattform 102 ausgeführt wird, einem Hypervisor 120 oder einem anderen Betriebssystem, das auf der Plattform 102 ausgeführt wird, zugeordnet ist; oder eine andere geeignete Anforderung.
  • Bei verschiedenen Ausführungsbeispielen können Verarbeitungsanforderungen Gastsystemen 122 zugeordnet sein. Ein Gastsystem kann eine einzelne virtuelle Maschine (z. B. die virtuelle Maschine 132a oder 132b) oder mehrere virtuelle Maschinen umfassen, die zusammen arbeiten (z. B. eine virtuelle Netzwerkfunktion (VNF; virtual network function) 134 oder eine Dienstfunktionskette (SFC; service function chain) 136). Wie dargestellt, können verschiedene Ausführungsbeispiele eine Vielzahl von Arten von Gastsystemen 122 umfassen, die auf derselben Plattform 102 vorhanden sind.
  • Eine virtuelle Maschine 132 kann ein Computersystem mit eigener zweckgebundener Hardware emulieren. Eine virtuelle Maschine 132 kann ein Gastbetriebssystem oben auf dem Hypervisor 120 ausführen. Die Komponenten der Plattformlogik 110 (z. B. CPUs 112, Speicher 114, Chipsatz 116 und Kommunikationsschnittstelle 118) können so virtualisiert sein, dass es für das Gastbetriebssystem so aussieht, als hätte die virtuelle Maschine 132 ihre eigenen zweckgebundenen Komponenten.
  • Eine virtuelle Maschine 132 kann eine virtualisierte NIC (vNIC) aufweisen, die von der virtuellen Maschine als ihre Netzwerkschnittstelle verwendet wird. Einer vNIC kann eine Media Acces Control (MAC) -Adresse zugewiesen sein, was es erlaubt, dass mehrere virtuelle Maschinen 132 in einem Netzwerk individuell adressierbar sind.
  • Bei einigen Ausführungsbeispielen kann eine virtuelle Maschine 132b paravirtualisiert sein. Die virtuelle Maschine 132b kann beispielsweise erweiterte Treiber umfassen (z. B. Treiber, die eine höhere Performance bereitstellen oder Höhere-Bandbreite-Schnittstellen zu den vom Hypervisor 120 bereitgestellten zugrunde liegenden Ressourcen oder Fähigkeiten aufweisen). So kann ein erweiterter Treiber beispielsweise eine schnellere Schnittstelle zum zugrunde liegenden virtuellen Schalter 138 aufweisen, für eine höhere Netzwerk-Performance im Vergleich zu Standardtreibern.
  • Die VNF 134 kann eine Software-Implementierung eines funktionalen Baublocks mit definierten Schnittstellen und Verhalten umfassen, die in einer virtualisierten Infrastruktur angewendet werden kann. Bei bestimmten Ausführungsbeispielen kann eine VNF 134 eine oder mehrere virtuelle Maschinen 132 umfassen, die gemeinsam spezifische Funktionalitäten bereitstellen (z. B. Weitbereichsnetzwerk (WAN; wide area network) -Optimierung, Terminierung von virtuellen privaten Netzwerken (VPN, virtual private network), Firewall-Operationen, Lastausgleichsoperationen, Sicherheitsfunktionen etc.). Eine VNF 134, die auf der Plattformlogik 110 ausgeführt wird, stellt möglicherweise die gleiche Funktionalität bereit, wie herkömmliche Netzwerkkomponenten, die durch dedizierte Hardware implementiert sind. Zum Beispiel kann eine VNF 134 Komponenten umfassen, um irgendwelche geeigneten NFV-Arbeitslasten durchzuführen, wie beispielsweise virtualisierte entwickelte Paketkern (vEPC; virtualized evolved packet core) - Komponenten, Mobilitätsmanagement-Entitäten, Steuer- und Datenebenenkomponenten des 3rd Generation Partnership Project (3GPP), etc.
  • Die SFC 136 ist eine Gruppe von VNFs 134, die als eine Kette organisiert sind, um eine Reihe von Operationen durchzuführen, wie beispielsweise Netzwerk-Paketverarbeitungsoperationen. Ein Verketten von Dienstfunktionen kann die Fähigkeit bereitstellen, eine geordnete Liste von Netzwerkdiensten (z. B. Firewalls, Lastausgleicher) zu definieren, die in dem Netzwerk zusammengefügt sind, um eine Dienstkette zu erzeugen.
  • Ein Hypervisor 120 (auch als eine Überwachungseinrichtung einer virtuellen Maschine bekannt) kann Logik zum Erzeugen und Ausführen von Gastsystemen 122 umfassen. Der Hypervisor 120 kann Gastbetriebssysteme anbieten, die durch virtuelle Maschinen mit einer virtuellen Betriebsplattform (d. h. es erscheint den virtuellen Maschinen so, als ob sie auf separaten physischen Knoten ausgeführt werden, wenn sie tatsächlich auf eine einzelne Hardwareplattform konsolidiert sind) ausgeführt werden, und die Ausführung der Gastbetriebssysteme durch die Plattformlogik 110 verwalten. Die Dienste des Hypervisors 120 können durch Virtualisieren in Software oder durch hardwaregestützte Ressourcen, die minimalen Software-Eingriff erfordern, oder beides, bereitgestellt werden. Mehrere Instanzen einer Vielzahl von Gastbetriebssystemen können durch den Hypervisor 120 verwaltet werden. Jede Plattform 102 kann eine separate Instantiierung eines Hypervisors 120 aufweisen.
  • Der Hypervisor 120 kann ein nativer oder Bare-Metal-Hypervisor sein, der direkt auf der Plattformlogik 110 ausgeführt wird, um die Plattformlogik zu steuern und die Gastbetriebssysteme zu verwalten. Alternativ kann der Hypervisor 120 ein gehosteter Hypervisor sein, der auf einem Host-Betriebssystem ausgeführt wird und die Gastbetriebssysteme von dem Host-Betriebssystem abstrahiert. Verschiedene Ausführungsformen können eine oder mehrere nicht-virtualisierte Plattformen 102 umfassen, in welchen Fall irgendwelche geeigneten Charakteristika oder Funktionen des hierin beschriebenen Hypervisors 120 auf ein Betriebssystem der nicht-virtualisierten Plattform anwendbar sein können.
  • Der Hypervisor 120 kann einen virtuellen Schalter 138 umfassen, der virtuelle Schalt- und/oder Routing-Funktionen für virtuelle Maschinen der Gastsysteme 122 bereitstellen kann. Der virtuelle Schalter 138 kann eine logische Schaltstruktur umfassen, die die vNICs der virtuellen Maschinen 132 miteinander koppelt und somit ein virtuelles Netzwerk erzeugt, durch das virtuelle Maschinen miteinander kommunizieren können. Der virtuelle Schalter 138 kann auch über physische NICs der Kommunikationsschnittstelle 118 mit einem oder mehreren Netzwerken (z.B. Netzwerk 108) gekoppelt sein, um eine Kommunikation zwischen virtuellen Maschinen 132 und einem oder mehreren Netzwerkknoten, die extern zu der Plattform 102 sind (z. B. einer virtuellen Maschine, die auf einer anderen Plattform 102 ausgeführt wird, oder einem Knoten, der über das Internet oder ein anderes Netzwerk mit der Plattform 102 gekoppelt ist), zu erlauben. Der virtuelle Schalter 138 kann ein Softwareelement umfassen, das unter Verwendung von Komponenten der Plattformlogik 110 ausgeführt wird. Bei verschiedenen Ausführungsbeispielen kann der Hypervisor 120 in Kommunikation mit irgendeiner geeigneten Entität (z. B. einer SDN-Steuerung) sein, was den Hypervisor 120 dazu veranlassen kann, die Parameter des virtuellen Schalters 138 ansprechend auf ein Verändern der Bedingungen in Plattform 102 (z. B. das Hinzufügen oder Löschen von virtuellen Maschinen 132 oder die Identifikation von Optimierungen, die ausgeführt werden können, um die Performance der Plattform zu verbessern) neu zu konfigurieren.
  • Der Hypervisor 120 kann irgendeine geeignete Anzahl von I/O-Vorrichtungstreibern 124 umfassen. Der I/O-Vorrichtungstreiber 124 stellt eine oder mehrere Softwarekomponenten dar, die es dem Hypervisor 120 erlauben, mit einer physischen I/O-Vorrichtung zu kommunizieren. Bei verschiedenen Ausführungsbeispielen kann die zugrundeliegende physische I/O-Vorrichtung mit irgendeiner der CPUs 112 gekoppelt sein und kann Daten an die CPUs 112 senden und Daten von den CPUs 112 empfangen. Die zugrundeliegende I/O-Vorrichtung kann irgendein geeignetes Kommunikationsprotokoll verwenden, wie z. B. PCI, PCIe, Universal Serial Bus (USB), Serial Attached SCSI (SAS), Serial ATA (SATA), InfiniBand, Fibre Channel, ein IEEE 802.3-Protokoll, ein IEEE 802.11-Protokoll oder ein anderes aktuelles oder zukünftiges Signalisierungsprotokoll.
  • Die zugrundeliegende I/O-Vorrichtung kann einen oder mehrere Ports umfassen, die wirksam sind, um mit Kernen der CPUs 112 zu kommunizieren. Bei einem Beispiel ist die zugrundeliegende I/O-Vorrichtung eine physische NIC oder ein physischer Schalter. Bei einem Ausführungsbeispiel ist beispielsweise die zugrundeliegende I/O-Vorrichtung des I/O-Vorrichtungstreibers 124 eine NIC der Kommunikationsschnittstelle 118, die mehrere Ports (z. B. Ethernet-Ports) aufweist.
  • Bei anderen Ausführungsbeispielen können die zugrundeliegenden I/O-Vorrichtungen irgendeine geeignete Vorrichtung umfassen, die in der Lage ist, Daten an die CPUs 112 zu übertragen und von denselben zu empfangen, wie z. B. eine Audio-/Videovorrichtungssteuerung (z. B. ein Grafikbeschleuniger oder eine Audiosteuerung); eine Datenspeicherungsvorrichtungssteuerung, wie z. B. eine Flash-Speicher-Vorrichtung, eine magnetische Speicherungsplatte oder eine optische Speicherungsplattensteuerung, ein drahtloser Transceiver, ein Netzwerkprozessor oder eine Steuerung für eine andere Eingabevorrichtung, wie z. B. einen Monitor, einen Drucker, eine Maus, eine Tastatur oder einen Scanner, oder irgendeine andere geeignete Vorrichtung.
  • Bei verschiedenen Ausführungsbeispielen kann der I/O-Vorrichtungstreiber 124 oder die zugrundeliegende I/O-Vorrichtung beim Empfang einer Verarbeitungsanforderung einen Interrupt (z. B. einen message signaled interrupt) an irgendeinen der Kerne der Plattformlogik 110 senden. Beispielsweise kann der I/O-Vorrichtungstreiber 124 einen Interrupt an einen Kern senden, der ausgewählt wurde, um eine Operation durchzuführen (z. B. im Namen einer virtuellen Maschine 132 oder eines Prozesses einer Anwendung). Bevor der Interrupt an den Kern weitergeleitet wird, können eingehende Daten (z. B. Netzwerkpakete), die für den Kern bestimmt sind, in der zugrundeliegenden I/O-Vorrichtung und/oder einem der CPU 112 des Kerns zugeordneten I/O-Block zwischengespeichert werden. Bei einigen Ausführungsbeispielen kann der I/O-Vorrichtungstreiber 124 die zugrundeliegende I/O-Vorrichtung mit Anweisungen darüber konfigurieren, wohin Interrupts zu senden sind.
  • Bei einigen Ausführungsbeispielen kann der Hypervisor 120 bei der Verteilung von Arbeitslasten auf die Kerne eine größere Anzahl von Arbeitslasten zu den Kernen mit höherer Performance lenken als zu den Kernen mit niedrigerer Performance. In bestimmten Fällen können Kernen, die Probleme wie Überhitzung oder schwere Lasten aufweisen, weniger Aufgaben gegeben werden als anderen Kernen oder sie können ganz vermieden werden (zumindest vorübergehend). Arbeitslasten, die Anwendungen, Diensten, Containern und/oder virtuellen Maschinen 132 zugeordnet sind, können unter Verwendung von Netzwerklast und Verkehrsmustern anstatt nur CPU- und Speichernutzungsmetriken über Kerne ausgeglichen werden.
  • Die Elemente der Plattformlogik 110 können auf irgendeine geeignete Art und Weise zusammengekoppelt sein. Beispielsweise kann ein Bus irgendwelche der Komponenten zusammenkoppeln. Ein Bus kann irgendeine bekannte Verbindung umfassen, wie beispielsweise einen Multi-Drop-Bus, eine Mesh-Verbindung, eine Ringverbindung, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z. B. zwischenspeicherkohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus oder einen Gunning-Transceiver-Logik (GTL)-Bus.
  • Elemente des Datensystems 100 können auf irgendeine geeignete Weise zusammengekoppelt sein, wie beispielsweise durch ein oder mehrere Netzwerke 108. Ein Netzwerk 108 kann irgendein geeignetes Netzwerk oder irgendeine Kombination aus einem oder mehreren Netzwerken sein, die unter Verwendung von einem oder mehreren geeigneten Netzwerkprotokollen arbeiten. Ein Netzwerk kann eine Reihe von Knoten, Punkten und verbundenen Kommunikationspfaden zum Empfangen und Senden von Paketen von Informationen darstellen, die sich durch ein Kommunikationssystem ausbreiten. Zum Beispiel kann ein Netzwerk eine oder mehrere Firewalls, Router, Schalter, Sicherheitsanwendungen, Anti-Virus-Server oder andere nützliche Netzwerkvorrichtungen umfassen. Ein Netzwerk bietet Kommunikationsschnittstellen zwischen Quellen und/oder Hosts und kann irgendein lokales Netzwerk (LAN; local area network), ein drahtloses lokales Netzwerk (WLAN; wireless local area network), ein Großstadtnetz (MAN; metropolitan area network), ein Intranet, ein Extranet, das Internet, ein Weitbereichs-Netzwerk (WAN; wide area network), ein virtuelles privates Netzwerk (VPN; virtual private network), ein zelluläres Netzwerk oder irgendeine andere geeignete Architektur oder ein System umfassen, das die Kommunikation in einer Netzwerkumgebung erleichtert. Ein Netzwerk kann irgendeine Anzahl von Hardware- oder Softwareelementen umfassen, die über ein Kommunikationsmedium miteinander gekoppelt (und in Kommunikation miteinander) sind. Bei verschiedenen Ausführungsbeispielen können Gastsysteme 122 über das Netzwerk 108 mit Knoten kommunizieren, die extern zu dem Rechenzentrum 100 sind.
  • 2 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Non-Uniform Memory Access (NUMA) -Multiprozessor-Plattformarchitektur 200 darstellt, die zwei NUMA-Knoten 202a und 202b (Knoten „A“ und „B“) verwendet. Jeder Knoten 202a,b kann einen jeweiligen Prozessor umfassen (z. B. die Prozessoren 204a und 204). Jeder Knoten kann zusätzlich einen jeweiligen Speicher (z. B. 206a,b), der Abschnitte des Systemspeichers implementieren kann, eine jeweilige Netzwerkschnittstellenkarte (z. B. 208a,b) und eine Anzahl von PCIe-Slots umfassen, in denen jeweilige PCIe-Karten (nicht dargestellt) installiert werden können. Bei einigen Implementierungen umfasst jeder Prozessor 204a,b einen Kernabschnitt, umfassend eine Mehrzahl von Prozessorkernen 210a,b, die jeweils einen lokalen Level 1 - (L1) und Level 2- (L2) Cache umfassen. Der verbleibende Abschnitt des Prozessors kann als der Uncore bezeichnet werden und umfasst verschiedene Verbindungsschaltungsanordnungen und Schnittstellen zur kommunikativen Kopplung verschiedener Funktionsblöcke auf dem Prozessor. Eine solche Verbindungsschaltungsanordnung kann Schichten eines geschichteten Protokolls implementieren und eine entsprechende Verbindung (z. B. 212a,b), wie beispielsweise einen Bus, eine Ein- oder Mehr-Laneserielle-Punkt-zu-Punkt-Verbindung, eine Mesh-Verbindung implementieren, neben anderen beispielhaften Implementierungen.
  • Ein Abschnitt der Uncore-Schaltungsanordnung kann ausgebildet sein, die Speichersteuerung und PCIe-Schnittstellen für Vorrichtungen wie beispielsweise NICs zu verwalten. Entsprechende beispielhafte Logikblöcke, die in den Prozessor-Uncores in 2 abgebildet sind, umfassen eine PCIe-Schnittstelle (I/F; interface) 214a,b, einen PCIe Root Complex (RC) 215a,b, einen Last-Level-Cache (LL Cache; Letzte-Ebene-Cache) 216a,b, eine Speichersteuerung (MC; memory controller) 217a,b, und eine Socket-zu-Socket-Link-Schnittstelle (S-to-S I/F; socket-to-socket link interface) 218a,b. Zusätzlich zu diesen dargestellten Blöcken kann jeder Prozessor 204a,b viele andere Funktionsblöcke umfassen (z. B. nicht explizit dargestellt).
  • Jeder der Prozessoren 204a,b kann über einen Socket operativ mit einer gedruckten Schaltungsplatine (z. B. 220) gekoppelt sein oder anderweitig über eine direkte Kopplungstechnik, wie Flip-Chip-Bonding, mit der Hauptplatine gekoppelt sein (hier gemeinsam als „Sockets“ bezeichnet). Dementsprechend kann die Platine 220 elektrische Leiter (z. B. Leiterbahnen und Vias) umfassen, um elektrische Verbindungen zu erleichtern, die der physikalischen Struktur verschiedener in 2 dargestellter Verbindungen entsprechen. Diese Verbindungen umfassen PCIe-Verbindungen 222a,b zwischen PCIe-Schnittstellen 214a,b und NICs 205a,b, Verbindungen 224a,b und 225a,b zwischen PCIe-Schnittstellen 214a,b und PCI-Slots 1-N und einen Socket-zu-Socket-Link 226, der zwischen die Socket-zu-Socket-Schnittstellen 218a und 218b gekoppelt ist. Bei einem Ausführungsbeispiel können die Socket-zu-Socket-Schnittstellen 218a und 218b ein Intraprozessor-Verbindungsprotokoll und eine Wring-Struktur verwenden, z. B. basierend auf UltraPath Interconnection (UPI), Quickpath Interconnect (QPI), Infinity Fabric, neben anderen Beispielen.
  • NICs (z. B. 205a,b) sind ausgebildet, um eine Schnittstelle mit einem Computernetzwerk (z. B. 232) bereitzustellen, das ein entsprechendes Netzwerkprotokoll, wie z. B. das Ethernet-Protokoll, verwendet. Eine NIC kann einem Betriebssystem- (OS; operating system) NIC- (Vorrichtungs-) Treiber zugeordnet sein, der logisch in einem OS-Kernel positioniert ist. Der NIC-Treiber wird als abstrahierte Schnittstelle zwischen der Betriebssystemsoftware und der NIC, die eine Hardwarevorrichtung ist, verwendet. Ein NIC-Treiber kann zum Beispiel den Zugriff auf Register auf einer NIC bereitstellen, eine Programmschnittstelle zur NIC bereitstellen usw. Ein NIC-Treiber kann auch die Handhabung und Weiterleitung von Daten, die über Pakete aus dem Netzwerk empfangen werden, an Verbraucher dieser Daten, z. B. eine Softwareanwendung, erleichtern. So können beispielsweise Pakete an einem NIC-Eingangs-Port empfangen und in einem Eingangspuffer gepuffert und dann in einen Speicherpuffer im Systemspeicher kopiert werden, der dem NIC-Treiber vom Betriebssystem zugewiesen wird.
  • Unter einer NUMA-Architektur wird es Prozessoren (und Prozessorkernen) ermöglicht, auf verschiedene, über die Plattform verteilte Speicherressourcen zuzugreifen. Die Speicherressourcen können als lokale Speicherressourcen (z. B. Speicherressourcen auf demselben Knoten wie ein Prozessor oder Kern) oder als nicht-lokale Speicherressourcen (z. B. Speicherressourcen auf anderen Knoten) betrachtet werden. Aus Sicht des Knotens 202a umfasst der Systemspeicher 206a beispielsweise eine lokale Speicherressource, während der Systemspeicher 206b eine nicht-lokale Speicherressource umfasst. Unter einer anderen Art von NUMA-Architektur (hierin nicht dargestellt) können nicht-lokale Speicherressourcen auch zwischen Prozessoren gemeinschaftlich verwendet werden, während sie keinem bestimmten Prozessor oder Knoten zugeordnet sind, neben anderen beispielhaften Merkmalen.
  • Netzwerkschnittstellenkarten (NICs; network interface cards), Netzwerkadapter oder andere Netzwerksteuerungen werden nicht immer bei 100 % Kapazität verwendet und es gibt Möglichkeiten, ihren Betrieb zu optimieren. So gibt es beispielsweise Zeiten, in denen der Sende- und Empfangsverkehr relativ spärlich ist und nicht die volle PCIe-Bandbreite der Vorrichtung benötigt oder nutzt, um das Netzwerk zu bedienen. Für eine Netzwerk-Steuerung (oder eine andere Eingabe-/Ausgabe- (I/O) Vorrichtung) kann die PCIe-Schnittstelle mit der Bandbreitenkapazität bereitgestellt werden, die dem Worst-Case-Netzwerk-I/O entspricht, auch wenn dies bedeutet, dass die PCIe-Bandbreite die meiste Zeit nicht voll genutzt wird.
  • Während einige Netzwerksteuerungen Leistungsverbrauchsverwaltungstechniken implementieren, sind solche herkömmlichen Ansätze sowohl aus der Perspektive des Leistungsverbrauchs als auch des Datendurchsatzes suboptimal. Beispiele für solche herkömmlichen Leistungsverbrauchsverwaltungstechniken können Active State Power Management (ASPM; Aktivzustandsleistungsverwaltung) und Direktspeicherzugriff- (DMA; Direct Memory Access) Zusammenführung (coalescing) umfassen. Bei solchen herkömmlichen Implementierungen führt die durch diese Techniken erzielte Leistungsreduzierung dazu, dass im Leistungsverbrauchsverwaltungs-, oder Niedrigleistungs-, Zustand kein Verkehr gehandhabt wird. Im Falle von APSM basiert die Leistungsverwaltung ferner auf der Überwachung der Aktivität auf dem PCIe-Bus, was zu reaktiven Leistungszustandsübergängen führt (z. B. anstelle von prädiktiven oder präemptiven Übergängen). Zusätzlich ist die DMA-Zusammenführung (coalescing) ferner insofern unzulänglich, als sie nicht von allen Rechenvorrichtungen unterstützt wird und die Paketverarbeitungslatenz erhöhen kann, während sie relativ kleine Gesamt-Leistungseinsparungen bereitstellt, neben anderen beispielhaften Unzulänglichkeiten.
  • In einigen verbesserten Systemen können Leistungsverbrauchsverwaltungsmerkmale in I/O-Steuerungsvorrichtungen integriert oder anderweitig implementiert sein, um die Breite eines entsprechenden PCIe-Links basierend auf der Menge des an der Vorrichtung detektierten Netzwerkverkehrs intelligent und dynamisch anzupassen. Solche I/O-Steuerungen können beispielsweise Verkehrspegel auf dem Netzwerk (z. B. durch die NIC laufend) überwachen und die Anzahl der PCIe-Lanes (und/oder deren Datenrate) intelligent anpassen, um die Leistung zu senken, wenn dies ohne Einbußen bei der Netzwerk-Performance möglich ist. Im Gegensatz zu herkömmlichen Ansätzen können solche verbesserten Implementierungen die PCIe-Linkbreite basierend auf dem bordeigenen FIFO-Zustand der Steuerungen anpassen, wodurch präemptive (statt reaktive) Übergänge erlaubt werden. Darüber hinaus können solche Implementierungen Pufferung auf dem Netzwerkschalter nutzen, um den Paketverlust (oder die Ausgangslatenz (exit latency)) während der Übergänge zu mindern. Tatsächlich können bei einigen Implementierungen Ausgangslatenzen entweder durch Multi-PCIe-referenzierte (multi-PCIe-homed) Steuerungen oder durch Pausen-Frames gemindert werden, neben anderen beispielhaften Lösungen. Wenn Pausen-Frames verwendet werden, können die Übergangstypen so konfiguriert werden, dass PCIe-Übergänge hauptsächlich innerhalb der maximalen Pausenzeit eines Pausen-Frames auftreten können, um den Paketverlust während des Übergangs zu mäßigen, neben anderen Beispielimplementierungen. Eine solche verbesserte Leistungsverbrauchsverwaltungsfunktionalität kann erhebliche Leistungseinsparungen realisieren und sowohl die Gesamtleistung als auch die thermische Belastung auf dem System (sowie die Batterielebensdauer in mobilen Rechensystemen) verringern. Ferner erfordern solche verbesserten Implementierungen keine besondere Unterstützung durch das Netzwerk wie Energy Efficient Ethernet und können sogar zusätzlich zu oder in Kombination mit anderen Leistungsverwaltungsmerkmalen wie beispielsweise Advanced Power Management (APM) oder ASPM verwendet werden, neben anderen beispielhaften Verwendungen und Vorteilen.
  • 3 ist ein vereinfachtes Blockdiagramm 300, das eine Beispielimplementierung einer verbesserten I/O-Steuerung 205, wie beispielsweise einer NIC oder eines Netzwerkadapters, darstellt. Die I/O-Steuerung 205 kann mit einer anderen Vorrichtung 310 (z. B. einem Host-Prozessor, einer Platine, einer Speichervorrichtung, einem Beschleuniger usw.) über einen Link (z. B. einen PCIe-basierten Link) koppeln, der von einer Schnittstelle, wie beispielsweise einer PCIe-basierten Schnittstelle 305, unterstützt wird. Die I/O-Steuerung 205 kann unter Verwendung eines oder mehrerer Ports (z. B. 320a-c) mit einem oder mehreren Netzwerken 232 koppeln. Die Ports 230a-c können für den Aufbau und die Kommunikation über entsprechende Links (z. B. 325a-c) gemäß einem oder mehreren Protokollen (z. B. Ethernet-basierten Protokollen) verwendet werden. Bei einigen Implementierungen kann ein Leistungsverwalter 125 (z. B. in Hardware oder Firmware der I/O-Steuerung 205 implementiert) bereitgestellt werden, um proaktiv und vorhersehbar eine Leistungsverbrauchsverwaltung an der Schnittstelle 305 der I/O-Steuerung zu implementieren, wie beispielsweise vorangehend eingeführt. Der (gesendete und empfangene) Netzwerkverkehr an den Ports 320a-c kann durch Überwachungspuffer (z. B. FIFOs) 330 der 1/-O-Steuerung 205 detektiert und überwacht werden (z. B. unter Verwendung des Leistungsverwalters 125). Bei einigen Implementierungen können Leistungsverwaltungsaufgaben (wie beispielsweise hierin erörtert) basierend auf der Realisierung definierter Schwellen (z. B. wie in Schwellendaten 335 definiert, die in Konfigurationsregistern (z. B. 340) gespeichert sind, die in der I/O-Steuerung gehostet oder derselben zugeordnet sind) ausgelöst werden, neben anderen beispielhaften Merkmalen.
  • Wie hierin erörtert, können verbesserte Systeme, wie beispielsweise im Beispiel von 3 gezeigt, mit einer Leistungsverwalter-Logik 125 ausgestattet sein, um es einer I/O-Steuerung zu erlauben, den Eintritts- und Austritts-Verkehr (und den Zustand seiner FIFO-Puffer (z. B. 330) im lokalen Speicher) zu überwachen und die PCIe-Lanes automatisch zu aktivieren oder zu deaktivieren und/oder die Datenrate der PCIe-Lanes (von Link 315) adaptiv (unter Verwendung der Schnittstellenlogik 305) anzupassen, um dem identifizierten I/O-Verkehr oder Änderungen im I/O-Verkehr (z. B. vom oder zum Netzwerk) Rechnung zu tragen. Eine solche verbesserte Funktionalität hilft dabei, den Leistungsverbrauch zu reduzieren und die Wärmeemissionen der PCIe-Steuerungen und der I/O-Peripherievorrichtungen, zu reduzieren, neben anderen beispielhaften Vorteilen. Während einige der hierin erörterten Beispiele solche Merkmale auf eine Ethernet-basierte I/O-Steuerung anwenden können, wird darauf hingewiesen, dass die hierin offenbarten allgemeineren Prinzipien auch auf andere, nicht Ethernet-basierte I/O-Steuerungen angewendet werden können (z. B. Steuerungen, die andere Netzwerk-I/O-Protokolle verwenden). In einigen Fällen können diese verbesserten Merkmale zusätzlich zu anderen konventionelleren Leistungsverbrauchsverwaltungsmerkmalen, wie beispielsweise ASPM, Energy Efficient Ethernet (EEE), Green Ethernet usw., bereitgestellt werden. So können beispielsweise dynamische Änderungen der PCIe-Linkbreiten und Datenraten in Verbindung mit anderen, zusätzlichen Leistungsverwaltungstechniken implementiert werden, um Leistung zu sparen, während sich die Vorrichtung in einem „eingeschalteten“ oder aktiven Sendezustand (z. B. D0) befindet, wenn die Verarbeitung von Paketen erforderlich ist, aber nicht der volle Durchsatz benötigt wird. Bei einigen Implementierungen kann die I/O-Steuerung, wenn die I/O-Steuerung keinen Verkehr oder einen anderen Ruhezustand detektiert, herkömmliche Leistungsverwaltungstechniken wie beispielsweise ASPM/EEE verwenden, um die Vorrichtung zum Schlafen/Aufwachen zu bringen, neben anderen beispielhaften Implementierungen.
  • Bei einigen Implementierungen können die Empfindlichkeiten und Bedingungen für die Anpassung der PCIe-Lane und Geschwindigkeiten basierend auf der Netzwerkaktivität konfigurierbar sein (z. B. durch einen Benutzer, wie beispielsweise einen Serveradministrator, Anbieter, Endbenutzer usw.). So können z. B. Schwellenwerte (z. B. in den Schwellendaten 335) für Kombinationen von PCIe-Linkbreite und Geschwindigkeitseinstellungen festgelegt werden, sodass eine entsprechende dynamische Änderung der Linkbreite und/oder der Datenrate automatisch initiiert werden kann, wenn der Verkehr eine Schwelle erreicht oder unter diese fällt. So können beispielsweise benutzerkonfigurierbare Dynamisch-Anpassbare-PCIe-Lane-und-Geschwindigkeit-(DAPLS; Dynamically Adjustable PCIe Lane and Speed) Schwelle und Zeitwerte in der I/O-Steuerung (z. B. in einem Register) eingestellt werden (z. B. zu der Treiberinitialisierungszeit). DAPLS-Schwellen, die auf der an der Steuerung detektierten Menge an Verkehr basieren, können zusätzlich Zeitwerten zugeordnet werden, die eine Zeitspanne vorgeben, in der die Verkehrsmenge beibehalten wird, bevor eine entsprechende Aktion (z. B. Änderung der Linkbreite oder Änderung der Datenrate) ausgelöst wird. Die I/O-Steuerung 205 kann diese Schwellen nutzen, um zu bestimmen, wann die PCIe-Lane-Breite/Geschwindigkeits-Konfiguration angepasst werden muss. Abhängig von dem Anwendungsfall kann eine Vielzahl von unterschiedlichen DAPLS-Schwellenwerten ausgebildet sein, um z. B. um Leistungseinsparungen zu begünstigen, um den Durchsatz zu begünstigen oder um zu versuchen, ein Gleichgewicht zwischen Leistungseinsparungen und Durchsatz zu optimieren, neben anderen Beispielen.
  • Bei einigen Implementierungen können verbesserte Leistungsverbrauchsverwaltungsmerkmale während des Betriebs (oder beim Booten) selektiv aktiviert werden. So können z. B. ein oder mehrere Leistungssparmodi definiert werden, in denen ein verbesserter Leistungsverbrauchsverwaltungsmodus oder andere Leistungsverwaltungsmerkmale aktiviert sind. Bei einigen Implementierungen kann ein Leistungssparmodus aktiviert werden, wenn der Benutzer dieses Merkmal aktiviert hat und sowohl der Eintritts- als auch der Austritts-Netzwerkverkehr für eine konfigurierbare Zeitspanne (z. B. 30 Sekunden) unter einer DAPLS-Niedrig/Aktivierungs-Schwelle lag. Es wird darauf hingewiesen, dass zusätzlich zur Verzögerung die Aktiviere-Leistungseinsparungen-Schwellen niedriger sein können als die Erhöhe-Bandbreite-Schwellen, um ein schnelles Umschalten zwischen diesen beiden Zuständen zu verhindern, neben anderen beispielhaften Implementierungen.
  • Im Fall von Eintritts-Verkehr (mit aktiviertem Leistungssparmodus) kann der Netzwerkadapter oder eine andere I/O-Steuerung seinen/ihren Empfangs-FIFO-Puffer überwachen. Pakete, die über einen Netzwerkverbindungs-Link empfangen werden, können zunächst im Empfangs-FIFO der I/O-Steuerung platziert werden, bis sie über einen PCIe-Bus, der die I/O-Steuerung mit der anderen Vorrichtung koppelt, an eine andere Vorrichtung oder ein Systemelement, das mit der I/O-Steuerung gekoppelt ist (z. B. Host-Speicher), übertragen werden. Wenn der PCIe-Bus nicht mit der eingehenden Netzwerkverkehrsrate mithält, füllt sich der FIFO. Wenn sich der Empfangs-FIFO über eine der DAPLS-Schwellen hinaus füllt, kann davon ausgegangen werden, dass der PCIe-Bus nicht ausreichend mit der Rate des Netzwerkverkehrs mithält. Dementsprechend kann die I/O-Steuerung basierend auf der Detektion des Erreichens einer DAPLS-Schwelle eine automatische Anpassung der Datenrate des PCIe-Busses und/oder eine Erhöhung der Linkbreite des PCIe-Busses initiieren. Bei einigen Implementierungen kann die I/O-Steuerung, um Zeit für den Übergang der Datenrate oder der Linkbreite zu gewinnen, zusätzlich handeln, um den eingehenden Netzwerkverkehr stillzulegen (quiesce), z. B. durch Senden eines Pausen-Frames an den Linkpartner, um den eingehenden Verkehr vorübergehend anzuhalten, neben anderen beispielhaften Implementierungen.
  • Im Fall von Austritts-Verkehr, wenn sich die I/O-Steuerung im Leistungssparmodus befindet, überwacht sie die Tiefe eines Puffers oder einer Warteschlange, der/die verwendet wird, um Pakete zu speichern, die ausgebildet sind, um auf das Netzwerk ausgesendet zu werden (z. B. an einen über einen Ethernet-Link verbundenen Link-Partner). Die I/O-Steuerung kann beispielsweise eine Sende-Deskriptor-Warteschlange überwachen. Bei solchen Implementierungen werden Sendepakete im Sende-Deskriptor-Ring in eine Warteschlange gestellt, bevor sie über den PCIe-Bus übertragen und auf das Netzwerk gesendet werden. Wenn die Anzahl der Pakete (oder die Anzahl der Deskriptoren) im Deskriptorring eine bestimmte DAPLS-Sendeschwelle erreicht, passt die I/O-Steuerung (ähnlich wie beim Überschreiten einer Empfangsschwelle) automatisch die Anzahl der aktivierten Lanes und/oder die Datenrate der Lanes an (z. B., und sendet einen Pausen-Frame), neben anderen Beispielen.
  • Bei einem Beispiel kann ein Laufzeitablauf eine Initialisierung der I/O-Steuerung, umfassend die Aktivierung einer verbesserten Leistungsverwaltungslogik (z. B. DAPLS-Logik) umfassen. Sobald sie aktiviert ist, beginnt die verbesserte Leistungsverwaltungslogik mit der Überwachung des Eintritts- und Austritts-Netzwerkverkehrs (z. B. durch Überwachen der entsprechenden Puffernutzung, neben anderen Beispieltechniken). In Fällen von hohem Verkehr können Verkehrsschwellen identifiziert werden, um die I/O-Steuerungsvorrichtung zu veranlassen, aktive Lanes und/oder die Datenrate (z. B. schrittweise oder allmählich) zu erhöhen, bis ihr PCIe-Link die volle Geschwindigkeit/Linkbreite und den maximalen Leistungsverbrauch erreicht hat. Im Falle von geringem Verkehr können Verkehrsschwellen identifiziert werden, um die I/O-Steuerungsvorrichtung zu veranlassen, die Lane-Geschwindigkeit und/oder Linkbreite allmählich zu verringern. Wird kein Verkehr detektiert, kann ein herkömmlicher Leistungsverwaltungsmodus aktiviert werden oder in einen solchen eingetreten werden, z. B. durch Übergehen zu D3 Hot unter Verwendung von Standard-ASPM. Diese Techniken können fortgesetzt werden (z. B. Ausführen von Schleifen zwischen Standard-Leistungsverwaltungsmodi, wenn kein Verkehr detektiert wird, und einem DAPLS-Modus, wenn Verkehr auf dem Netzwerk-Link aktiv ist), neben anderen Beispielimplementierungen.
  • Bei einigen Implementierungen können für eine I/O-Steuerung mehrere Netzwerkverkehr- (oder Repräsentativer-Puffer-) Schwellen definiert werden, auf denen die Initiierung verschiedener Leistungsverwaltungsaktionen (oder Übergänge (z. B. in der Datenrate oder Linkbreite)) basieren kann. Tatsächlich können jeder der mehreren Schwellen mehrere verschiedene Leistungsverwaltungsaktionen (z. B. Übergänge zwischen verschiedenen Linkbreiten und/oder Datengeschwindigkeiten) zugeordnet werden. Bei einigen Implementierungen können die Schwellenwerte sowie ihre zugeordneten Leistungsverwaltungsübergänge von einem Benutzer definiert oder konfiguriert werden. Wie nachfolgend genauer ausgeführt ist, können unterschiedliche Leistungsverwaltungs-Übergänge unterschiedliche entsprechende Latenzen für die Ausführung des Übergangs einführen. Bei einigen Implementierungen kann ein Leistungsverwalter (z. B. 125) mit einer Latenzverwalterlogik (z. B. 350) ausgestattet sein, um Latenzminderungen zu initiieren, um der Auslösung entsprechender Leistungsverwaltungsübergänge zu entsprechen. So kann z. B. ein Pausen-Frame oder ein anderes Signal an einen Netzwerk-Port gesendet werden, um den Netzwerkverkehr vorübergehend für eine Zeitspanne stillzulegen, die einer bestimmten Leistungsverwaltungsübergangs-Latenz entspricht. Bei anderen Beispielen können Daten, die auf einem Port (z. B. 320a) der I/O-Steuerung empfangen oder gesendet werden sollen, auf einem anderen Port (z. B. 320b) oder sogar einer anderen NIC des Systems gesendet werden, während ein Leistungsverwaltungsübergang stattfindet, neben anderen Beispielimplementierungen.
  • Bezug nehmend nun auf 4A-4B sind vereinfachte Blockdiagramme 400a-b gezeigt, die die beispielhafte Anpassung der Linkbreite eines beispielhaften PCIe-Links 405 (z. B. ein PCIe-Link, der eine I/O-Steuerung 205 über die Schnittstellen 305, 410 mit einer anderen Vorrichtung 310 koppelt) veranschaulichen. Im Allgemeinen kann eine Verbindung zwischen zwei Vorrichtungen (z. B. 205, 310) als Link bezeichnet werden, wie z. B. ein PCIe-konformer Link. Ein Link kann eine oder mehrere Lanes unterstützen - wobei jede Lane einen Satz von differenziellen Signalpaaren darstellt (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann ein Link mehrere Lanes aggregieren, die mit xN bezeichnet werden, wobei N irgendeine unterstützte Linkbreite ist, z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter. Bei einigen Implementierungen umfasst jede symmetrische Lane ein Sende-Differenzielles-Paar und ein Empfangs-Differenzielles-Paar. Asymmetrische Lanes können ungleiche Verhältnisse von Sende- und Empfangspaaren umfassen, neben anderen beispielhaften Implementierungen.
  • Während des Trainings eines Links kann eine Anzahl von physischen Lanes ausgewählt und konfiguriert werden, um in dem Link 405 umfasst (und verwendet) zu werden. Diese Lanes können in einen aktiven Zustand gebracht werden, während eine oder mehrere andere Lanes in einem Ruhe- oder reservierten Zustand gehalten werden können. 4A zeigt ein Beispiel für einen Link 405, der bei voller Linkbreite arbeitet (z. B. wobei alle oder eine höchste unterstützte Anzahl verfügbarer Lanes aktiv sind und zum Senden und Empfangen von Daten auf dem Link verwendet werden). Bei voller Linkbreite ist der Link in der Lage, bei höchster Bandbreite zu arbeiten. Wie in 4B gezeigt, kann eine Teilmenge von Lanes (z. B. Lanes 4-7) des Links 405 deaktiviert oder in einen Niedrigleistungs- oder Ruhe-Linkzustand versetzt werden, um Leistung zu sparen und folglich die Bandbreite des Links zu reduzieren. Wie hierin erörtert, kann ein Leistungsverwalter einer I/O-Steuerung den automatischen Übergang eines Links von einer Linkbreite (z. B. einer vollen Linkbreite) zu einer anderen Linkbreite (z. B. partielle Linkbreite) auslösen, um die Leistung basierend auf dem an der I/O-Steuerung detektierten Verkehr dynamisch zu verwalten. Mehrere unterschiedliche Linkbreiten (z. B. Anzahlen von aktiven Lanes (z. B. x1, x2, x4, x8, x16 können von der I/O-Steuerung unterstützt und genutzt werden (z. B. der Erreichung verschiedener definierter Verkehrsschwellen zugeordnet), um den Leistungsverbrauch zusammen mit dynamischen Geschwindigkeitsänderungen, wie beispielsweise hierin beschrieben, zu verwalten.
  • 5 zeigt ein beispielhaftes Zustandsmaschinen-Diagramm 500 für ein PCIe-basiertes Protokoll, wie beispielsweise PCIe 6.0. Es können Link-Zustände in einer Link-Trainings- und Statuszustandsmaschine bereitgestellt werden, die zur Änderung der Linkbreite und/oder der von einem Link verwendeten Datenrate verwendet werden können. Trainingssequenzen (z. B. PCIe-TS1- und TS2-Trainingssequenzen) können definiert werden mit Formaten (z. B. definierten Informationsfeldern), die in bestimmten Zuständen kommuniziert werden können, um es Link-Partner-Vorrichtungen (z. B. einer I/O-Steuerung und einer verbundenen Vorrichtung) zu erlauben, einen Übergang von einer Datenrate zu einer anderen zu koordinieren (z. B. und die entsprechende Konfiguration, die Entzerrung usw. auszuführen) und/oder Übergängen zwischen Linkbreiten. Bei einem Beispiel kann in einem PCIe-basierten Protokoll ein Partielle-Breite-Linkzustand (z. B. L0p) definiert werden. Zum Beispiel kann PCIe 6.0 einen Flit-Modus unterstützen, in dem Flit-Codierung verwendet wird (z. B. als Alternative zur Non-Return-to-Zero (NRZ) -Codierung). Im Flit-Modus ist ein L0p-Zustand 505 mit Flit-Codierung definiert (z. B. bei Datenraten von 8,0 GT/s und mehr). In einem L0p-Zustand befinden sich einige Lanes im Ruhezustand (ausgeschaltet), wobei sich zumindest eine Lane in einem aktiven Sendezustand befindet und normale Datenblöcke/Flits überträgt. In L0p kann ein x16-Link beispielsweise nur 8 Lanes aktiv haben (z. B. Lanes 0-7), während die anderen 8 Lanes (z. B. Lanes 8-15) ausgeschaltet sind. Von diesem Zustand kann der Link weiter auf 1 aktive Lane (z. B. Lane 0) reduziert werden, während die anderen 15 Lanes (z. B. Lanes 1-15) ausgeschaltet sind. Alle diese Übergänge können ohne Beeinträchtigung des normalen Verkehrs erfolgen (z. B. tritt der Link nicht in die Wiederherstellung 510 oder Konfiguration 515 ein). Wenn alle konfigurierten Lanes aktiviert sind, tritt die LTSSM in den L0-Zustand 520 ein.
  • Bei einigen Implementierungen (z. B. Pre-6.0-PCIe oder Nicht-Flit-Modus-PCIe 6.0) kann in andere Zustände (z. B. Wiederherstellung und Konfiguration 515) eingetreten werden (z. B. von L0 520), um einen Übergang von einer ersten Linkbreite oder Datenrate zu einer anderen Linkbreite oder Datenrate zu ermöglichen, neben anderen Beispiel-Implementierungen. 6 stellt eine beispielhafte Konfigurations-Teilzustand-Maschine 600 dar. Beispielsweise können die Konfigurations-Teilzustände einen Konfiguration.Linkbreite. Start- 605 und Konfiguration.Linkbreite.Akzeptieren- 610 Teilzustand umfassen, in denen Trainingssequenzen ausgetauscht werden können, um die Linkbreite auszuhandeln, die ausgebildet ist, in dem Link angewendet zu werden. Bei einigen Implementierungen kann ein Link zunächst in einen Wiederherstellungszustand eintreten (z. B. von L0), bevor er zur Konfiguration übergeht, um einen Wechsel von einer Linkbreite zu einer anderen zu erlauben (z. B. eine Aufwärtskonfiguration). Bei einem Beispiel kann die Änderung der Linkbreite (z. B. ansprechend auf die Detektion einer Verkehrsschwelle) ein Initiieren einer Aufwärtskonfiguration oder Abwärtskonfiguration der Linkbreite (z. B. wie von der I/O-Steuerung 205 oder der Vorrichtung 310 implementiert) umfassen, neben anderen Beispielimplementierungen.
  • Bei Implementierungen eines Links, der mehrere definierte Datenraten unterstützt (z. B. 2,5 GT/s, 5,0 GT/s, 8,0 GT/s, 16,0 GT/s, 32,0 GT/s, 64,0 GT/s usw.), kann Link-Training und Konfiguration ein Konfigurieren und Entzerren bei jeder der von den Linkpartnern gegenseitig unterstützten Datenraten bis zur höchsten gegenseitig unterstützten Datenrate umfassen. Die Entzerrungsparameter oder -ergebnisse aus den progressiven Entzerrungen bei jeder der unterstützten Datenraten können zur Verwendung bei einem späteren Übergehen von einer höheren Datenrate zu einer niedrigeren Datenrate (und der anschließenden Rückkehr zur höheren Datenrate von der niedrigeren Datenrate) gesichert (saved) oder gespeichert (stored) werden, neben anderen Beispielen. Bei einigen Beispielen kann eine höchste gegenseitig unterstützte Datenrate zwischen den Linkpartnern ausgehandelt werden (z. B. während des Trainings), und die Entzerrungsprozedur kann zu dieser höchsten gegenseitig unterstützten Geschwindigkeit springen oder eine oder mehrere niedrigere oder mittlere Geschwindigkeiten umgehen. Bei einigen Implementierungen können die Datenraten, die einem oder mehreren potenziellen Leistungssparmodi entsprechen, vom System voridentifiziert werden, und die anfängliche Entzerrung kann die Entzerrung (und die Speicherung entsprechender Entzerrungsparameter für eine potenzielle zukünftige Verwendung bei der Minimierung von Datenratenänderungs-Latenzen) für diese Teilmenge von Datenraten umfassen, während die Entzerrung bei anderen unterstützten Geschwindigkeiten umgangen wird (z. B. andere Geschwindigkeiten als die höchste gegenseitig unterstützte Geschwindigkeit und Geschwindigkeiten, die als potenzielle leistungssparende Datenraten bezeichnet werden), neben anderen Beispielen. Bei einigen Implementierungen kann ein Wiederherstellungszustand (z. B. 510) erreicht und Trainingssequenzen ausgetauscht werden, um einen Übergang von einer der definierten Datenraten zu einer anderen auszuhandeln und zu implementieren (z. B. in Zuordnung zu einem Leistungsverwaltungsschwellenwert, der von einem I/O-Steuerung erkannt wird, wie hier beschrieben), neben anderen Beispielimplementierungen.
  • Die Tabellen 1 und 2 unten zeigen ein Beispiel für die inkrementellen Leistungseinsparungen, die in einer beispielhaften NIC durch Übergehen zwischen verschiedenen unterstützten Linkbreiten und verschiedenen unterstützten Datenraten (z. B. definiert in einer PCIe-Spezifikation) realisiert werden können. Bei diesem bestimmten Beispiel können ungefähr 4 Watt eingespart werden, wenn von 16 Lanes zu 1 Lane eines 16 GT/s-Links übergegangen wird. Ungefähr 2 Watt können durch den Wechsel von einer x16-Linkbreite zu einer x8-Linkbreite eingespart werden, wobei dennoch eine erhebliche Bus-Bandbreite beibehalten wird. Multipliziert man dies über alle Vorrichtungen in einem Rechenzentrum, die nicht bei voller Kapazität laufen, würde sich eine erhebliche Leistungseinsparung ergeben. Ferner können die Leistungseinsparungen, die an einer Komponente (z. B. einer NIC) eines Systems realisiert werden, multipliziert werden. Wenn eine Vorrichtung beispielsweise weniger Leistung verbraucht, erzeugt sie weniger Wärme, was bedeutet, dass auch die Lüfter und Kühlsysteme weniger laufen, was den Leistungsverbrauch weiter reduziert. Als ein weiteres Beispiel kann die Leistung an eine NIC oder eine andere I/O-Steuerung über eine Host-System-Leistungsversorgung bereitgestellt werden, die möglicherweise bereits mit einem gewissen Effizienzverlust arbeitet. In solchen Fällen kann ein von einer NIC-Karte eingespartes Watt (wie beispielsweise unter Verwendung der in dieser Offenbarung erörterten Merkmale und Funktionalität) zu einer gesamten Host-System-Leistungseinsparung von mehr als einem Watt führen, neben anderen Beispielen. Tatsächlich ist jedes eingesparte System-Watt ein Watt, das potenziell an anderer Stelle im System verwendet werden kann, um Engpässe zu beseitigen (z. B. über Frequency Class of Service (CLOS; Frequenz-Serviceklasse)), während die Systemleistung und die thermische Einhüllende beibehalten werden. Zusätzlich zu diesen Effekten erster Ordnung gibt es Kühlungs- (und Leistungseinsparungs-) Auswirkungen zweiter und dritter Ordnung, die auch in Systemen (z. B. Rechenzentren) realisiert werden können, neben anderen Beispielen. TABELLE 1: Leistungsverbrauch einer beispielhaften Vorrichtung bei jeder Linkbreite und Lane-Geschwindigkeit
    Link-Geschwindigkeit Linkbreite NIC-Leistungsverbrauch
    Gen 4 16 GT/s x16 11,58 W
    x8 9,51 W
    x4 8,42 W
    x1 7,49 W
    Gen 3 8 GT/s x16 10,06 W
    x8 8,65 W
    x4 7,88 W
    x1 7,22 W
    Gen 2 5 GT/s x16 9,58 W
    x8 8,38 W
    x4 7,76 W
    x1 7,18 W
    Gen 1 2,5 GT/s x16 9,03 W
    x8 8,08 W
    x4 7,62 W
    x1 7,12 W
    TABELLE 2: Leistungsverbrauch des Beispiels aus Tabelle 1 sortiert nach Linkbreite
    Linkbreite Link-Geschwindigkeit NIC-Leistungsverbrauch % Leistungseinsparung vs. Maximum
    x16 16 GT/s 11,58 W 0%
    8 GT/s 10,06 W 13%
    5 GT/s 9,58 W 17%
    2,5 GT/s 9,03 W 22%
    x8 16 GT/s 9,51 W 18%
    8 GT/s 8,65 W 25%
    5 GT/s 8,38 W 28%
    2,5 GT/s 8,08 W 30%
    x4 16 GT/s 8,42 W 27%
    8 GT/s 7,88 W 32%
    5 GT/s 7,76 W 33%
    2,5 GT/s 7,62 W 34%
    x1 16 GT/s 7,49 W 35%
    8 GT/s 7,22 W 38%
    5 GT/s 7,18 W 38%
    2,5 GT/s 7,12 W 39%
  • Bei einigen Implementierungen können die Geschwindigkeits- und/oder Linkbreitenänderungen durch Verwendung der Konfigurationsraumregister des nachgeschalteten Ports erreicht werden. Alternativ können Geschwindigkeits- und/oder Linkbreitenänderungen autonom vom Endpunkt aus ausgeführt werden (z. B. durch die I/O-Steuerung), neben anderen Beispielimplementierungen.
  • Während Linkbreiten- und/oder -Geschwindigkeitsänderungen genutzt und ausgelöst werden können, um Leistungseinsparungen zu realisieren, während der PCIe-Link aktiv ist, sind solche Änderungen nicht kostenlos. Beispielsweise wird Latenz eingeführt, um solche Übergänge auszuführen und abzuschließen (z. B. Übergang zwischen unterstützten PCIe-Datenraten, Aktivieren/Deaktivieren von Lanes usw.). Zur Veranschaulichung zeigen die Tabellen 3 und 4 beispielhafte Ausgangslatenzen für solche Übergänge in einem Beispielsystem (z. B. einer PCIe-4.0-Vorrichtung). Beispielsweise zeigt Tabelle 3 beispielhafte Latenzen für die Änderung der PCIe-Bus-Bandbreite (Linkbreite). In einigen Fällen kann die Reduzierung der Lanes relativ schnell abgeschlossen werden (z. B. etwa 8 Mikrosekunden), während die Erhöhung der Anzahl der Lanes (z. B. Aufwärtskonfigurieren) vergleichsweise aufwändiger sein (z. B. -180 Mikrosekunden dauern) kann. Tabelle 4 zeigt beispielhafte Latenzen für den Übergang zwischen Lane-Geschwindigkeiten (z. B. wobei der Übergang mit der schlechtesten Performance die Erhöhung der Datenrate auf eine maximale Rate (z. B. bis zu -650 Mikrosekunden dauernd) ist, neben anderen Beispielsystemen und entsprechenden Latenzcharakteristika). TABELLE 3: Übergangszeiten bei Änderung der Lane-Breite (unter Verwendung einer Lane-Geschwindigkeit 16 GT/s)
    Lane-Breite x1 x4 x8 x16
    x1 0 178,02 µs 181,1 µs 179,43 µs
    x4 -8,35 µs 0 178,04 µs 176,36 µs
    x8 8,35 µs -8,35 µs 0 174,89 µs
    x16 8,36 µs 8,36 µs 8,38 µs 0
    TABELLE 4: Übergangszeiten bei Änderung der Lane-Geschwindigkeit (unter Verwendung von x16 Lane-Breite)
    (GT/s) 16 8 5 2,5
    16 0 242,58 µs -231 µs 297,35 µs
    8 -657 µs 0 223,78 µs 285,94 µs
    5 -648 µs 227,07 µs 0 229,86 µs
    2,5 -645 µs 223,814 µs 284,12 µs 0
  • Mit zunehmender Netzwerkgeschwindigkeit stellt eine bestimmte Latenz mehr „Paketzeiten“ dar. Dementsprechend kann eine I/O-Steuerung in solchen Fällen zusätzlich die aktuelle Link-Geschwindigkeit berücksichtigen (z. B. zusätzlich zu Schwellen oder basierend auf dem Satz von Schwellen auf der aktuell detektierten Link-Geschwindigkeit), sodass eine Leistungseinsparungstechnik ausgewählt wird, die der aktuellen Link-Geschwindigkeit entspricht oder für dieselbe am besten geeignet ist. Bei Hochgeschwindigkeits-Links (z. B. 100 Gb+) kann es beispielsweise zu kostspielig sein, Lane-Geschwindigkeitsübergänge zu erlauben, und es werden nur Linkbreitenänderungen genutzt, um die Leistung bei solchen Geschwindigkeiten zu reduzieren.
  • Bei einigen Implementierungen kann sich die Latenz, die durch Leistungseinsparungsübergänge eingeführt wird, auch negativ auf die Handhabung des Netzwerkverkehrs an der I/O-Steuerung auswirken (z. B. haben Puffer Schwierigkeiten, den gesendeten/empfangenen und gehaltenen Netzwerkverkehr bei einem Übergehen der Linkbreite und/oder -geschwindigkeit durch die I/O-Steuerung auf einem entsprechenden PCIe-Bus zu handhaben). Dementsprechend kann die I/O-Steuerung zusätzlich eine Logik umfassen, um den Verkehr auf dem Netzwerk-Link stillzulegen, während die Übergänge ausgeführt werden (und entsprechend einer vorhergesagten oder tatsächlichen Latenz, die durch den einen oder die mehreren Übergänge eingeführt wird). Als ein Beispiel können Ausgangslatenz-Minderungstechniken ein Implementieren einer Prioritätsflusssteuerung oder ein Verwenden von Pausen-Frames, neben anderen beispielhaften Techniken, umfassen, um das Netzwerk vorübergehend stillzulegen, was den PCIe-Übergang erlaubt.
  • Als ein darstellendes Beispiel kann eine 100Gb-Ethernet-Steuerung (z. B. eine NIC) detektieren, dass eine bestimmte Netzwerkverkehr-Schwelle erreicht wurde, und einen entsprechenden Leistungsverwaltungsübergang ihres PCIe-Ports auslösen, indem sie die Linkbreite und/oder die Datenrate des Ports ändert. Ferner kann die Ethernet-Steuerung eine entsprechende Latenzminderung initiieren, um die durch den Leistungsverwaltungsübergang eingeführte Latenz zu berücksichtigen. So kann beispielsweise ein (vorrangiger oder herkömmlicher) Pausen-Frame erzeugt werden, der einen Pausenwert umfasst, der in Pausen-Quanten gemessen wird. So entspricht beispielsweise jedes Pausen-Quant bei der aktuellen Link-Geschwindigkeit 512 Bit-Zeiten. Für 100Gbit sind 512 Bit-Zeiten 5,12 ns. Der Pausenwert ist eine vorzeichenlose Zwei-Byte-Ganzzahl und kann von 0 bis 65535 Pausen-Quanten reichen. Bei 100-Gbit-Ethernet beträgt die maximale Pausenzeit-Anforderung 335,5 µs, was die erforderliche Zeit bereitstellt, um zumindest einige der der Steuerung zur Verfügung stehenden Leistungsverwaltungsübergänge auszuführen (z. B. mehr als genug Zeit, um die Anzahl der Lanes zu erhöhen (-180 µs)). In einigen Fällen können die der Steuerung zur Verfügung stehenden Latenzminderungs-Operationen begrenzt sein (z. B. durch Pausen-Quanten-Grenzen), was die Nutzung einiger potenzieller Leistungsverwaltungsübergänge (z. B. Übergang zu einer 16-GT/s-Lane-Geschwindigkeit (~650 µs)) aufgrund des Fehlens ausreichender, entsprechender Latenzminderungsmerkmale untragbar macht. Bei einem solchen Beispiel kann die I/O-Steuerung ausgebildet sein, solche Leistungsverwaltungstechniken nicht zu erlauben (oder Schwellen festzulegen). Für 100-GBit-Ethernet kann eine beispielhafte Steuerung beispielsweise ausgebildet sein, nur Änderungen der Linkbreite zu nutzen (obwohl andere Verbindungen und Standards (z. B. zukünftige PCIe-Physical-Layer oder -Standards) schnellere Taktsynchronisationen nutzen können, die es 100Gbit erlauben würden, Taktgebungs-Änderungen zu nutzen, neben anderen Beispielszenarien).
  • Bei einem anderen darstellenden Beispiel betragen beispielsweise 512 Bit-Zeiten (Pausen-Quanten) für eine 40-Gbit-Ethernet-Steuerung bei 40 Gbit 12,8 ns, was eine maximale Pausenzeit von 838,8 µs realisiert. Bei diesem Beispiel kann die maximale Pausenzeit für die Steuerung die Nutzung von sowohl Lane-Hinzufügungen (z. B. ~ 180 µs) als auch Lane-Geschwindigkeits-(oder „Datenraten“-) Änderungen (z. B. -650 µs) erlauben. In manchen Fällen kann die Steuerung, selbst wenn Lane-Geschwindigkeits-Änderungen genutzt werden können, ausgebildet sein, dennoch die Ausgangslatenz zu minimieren und nur Lane-Hinzufügungen zu nutzen. Tatsächlich können die DAPLS-Schwellen und die den Schwellen entsprechenden spezifischen Leistungsverwaltungsübergänge vollständig konfigurierbar sein (z. B. durch Einträge in einem Konfigurationsregister) und auf die Ziele für das System abgestimmt sein (z. B. Maximierung der Performance oder Maximierung der Leistungseinsparung), neben anderen Beispielen.
  • Während einige der Beispiele hierin die Verwendung von Pausen-Frames zur Verwendung bei der Minderung der Ausgangslatenz spezifizieren, können auch andere Techniken verwendet werden. Als ein Beispiel können einige I/O-Steuerungen (z. B. Serverklasse-NICs) mit mehreren PCIe-Port-Verbindungen zum Server bereitgestellt werden, um eine Multi-Host- oder PCIemulti-referenzierte Vorrichtung zu implementieren. Multi-Host erlaubt Redundanz und/oder ein Routen von Paketen zu bestimmten NUMA-Knoten. In solchen Systemen können die mehreren PCIe-Ports genutzt werden, um bei der Latenzminderung zu helfen. Während beispielsweise PCIe-Lane- und/oder Datenraten-Änderungen an einem der mehreren PCIe-Ports ausgelöst werden, kann der Steuerung veranlassen, dass gleichzeitiger PCIe-Verkehr, der für diesen Port vorgesehen ist, vorübergehend zu dem/den anderen PCIe-Port(s) umgeleitet (rerouted) wird, bis der Übergang abgeschlossen ist (was es z. B. erlaubt, Pausen-Frames oder ähnliche Minderungstechniken auszulassen). Zur Veranschaulichung kann eine beispielhafte Multi-Host-NIC ausgebildet sein, bis zu vier x4-PCIe-Links aufzuweisen, die jeweils mit ihrer eigenen Frequenz laufen. Die auf der NIC bereitgestellte DAPLS-Funktionalität könnte Leistungsverwaltungsübergänge (z. B. unabhängig) an jedem der verfügbaren PCIe-Link-Ports in Abhängigkeit von der Anzahl der Pakete anwenden, die an den NUMA-Knoten gehen, an dem er angebracht ist. Wenn ein bestimmter der mehreren PCIe-Links basierend auf einer detektierten Menge an Verkehr übergeht, können seine Pakete vorübergehend an einen anderen NUMA-Knoten gesendet werden und dann eine Prozessorverbindung (z. B. UPI) basierend auf der Speicheradresse durchlaufen, während der bestimmte PCIe übergeht. Bei einigen Implementierungen kann eine Steuerung zur Vereinfachung eines solchen temporären „gemeinschaftlichen Verwendens eines Links“ zum Zwecke der Latenzminderung eine Richtlinie durchsetzen, um die Anzahl der PCIe-Links zu begrenzen, die zu irgendeiner Zeit einen DAPLS-Übergang implementieren können (z. B. sicherstellen, dass nicht mehr als einer der PCIe-Links gleichzeitig übergehen), neben anderen beispielhaften Richtlinien, Merkmalen und Implementierungen.
  • Bezug nehmend nun auf 7 ist ein Ablaufdiagramm 700 gezeigt, das eine Beispieltechnik für das Verwalten von Leistung an einer beispielhaften I/O-Steuerung veranschaulicht. Ein Link (z. B. ein PCIe-Link), der die I/O-Steuerung mit einer anderen Vorrichtung (z. B. einer Host-Vorrichtung) koppelt, kann mit maximaler Lane-Breite und Geschwindigkeit initialisiert werden 705, um zu versuchen, den Durchsatz über den Link zu maximieren. Der (auf einem Port (z. B. einem Ethernet-Port) empfangene oder gesendete Netzwerkverkehr der I/O-Steuerung kann überwacht werden 710. Der Datenverkehr kann direkt am Port überwacht werden (z. B. Paketzählung) oder durch die Überwachung der Kapazität von Puffern, die für die Pufferung von Daten verwendet werden, die ausgebildet sind, auf dem Netzwerk unter Verwendung der I/O-Steuerung empfangen oder gesendet zu werden, neben anderen Beispielen. Die mit der I/O-Steuerung gekoppelte Vorrichtung kann auf dem Netzwerk empfangene oder zu sendende Pakete 715 verarbeiten. Bei der Überwachung des Verkehrs (z. B. 710) kann die I/O-Steuerung bestimmen, ob der Verkehr unter (bei 725) eine Schwelle gefallen ist, für die eine Reduzierung der Datenrate (Geschwindigkeit) und/oder der Linkbreite zugeordnet ist, um Leistung zu sparen. In ähnlicher Weise kann die I/O-Steuerung bestimmen, ob der Verkehr eine Schwelle überschritten (bei 735) hat, für die eine Erhöhung der Geschwindigkeit und/oder der Linkbreite auszulösen ist (z. B. zur Unterbringung des zunehmenden Netzverkehrs). Wenn eine der Schwellen erreicht wird (z. B. bei 725 oder 735), kann die I/O-Steuerung zusätzlich bestimmen (bei 730), ob diese Schwelle für eine definierte Schwellen-Zeitspanne erreicht wird (z. B. bei, unter oder über der Schwelle, abhängig von der definierten Schwelle). Wenn die Schwelle für die definierte Zeitperiode erreicht wird, kann ein Leistungsverwaltungsübergang initiiert werden, indem der Link (z. B. unter Verwendung der Zustandsmaschine oder Protokolllogik der I/O-Steuerungs-Schnittstelle, die den Link implementiert (z. B. eine PCIe-Schnittstelle oder ein Port)) veranlasst wird, die Linkbreite (oder Lane-Breite) des Links und/oder die auf dem Link verwendete Datenrate anzupassen (bei 740). Der Betrieb der I/O-Steuerung kann mit den angepassten Link-Charakteristika fortgesetzt werden, wobei der Netzwerkverkehr weiterhin überwacht wird (bei 710), um zu bestimmen, ob andere Schwellen erreicht werden, um einen zusätzlichen Leistungsverwaltungsübergang an dem Link zu verursachen. Dieser Prozess kann fortgesetzt werden, bis die Vorrichtung (oder die I/O-Steuerung) deaktiviert wird und keine Pakete mehr verarbeitet werden, neben anderen beispielhaften Merkmalen und Ausführungsbeispielen. Zum Beispiel kann die Latenzminderung (z. B. bei 738) auch in Zuordnung zu Leistungsverwaltungsübergängen eingesetzt werden, um den Aufbau von zu sendenden oder zu empfangenden Netzwerkdaten (z. B. und einen entsprechenden Pufferüberlauf) zu vermeiden, während der Link von einer Linkbreite und/oder Datenrate zu einer anderen übergeht.
  • 8 stellt ein Blockdiagramm einer beispielhaften Datenprozessorvorrichtung (z. B. einer zentralen Verarbeitungseinheit (CPU; central processing unit)) 812, die mit verschiedenen anderen Komponenten einer Plattform gekoppelt ist, gemäß bestimmten Ausführungsbeispielen dar. Obwohl die CPU 812 eine bestimmte Konfiguration abbildet, können die Kerne und andere Komponenten der CPU 812 in irgendeiner geeigneten Weise angeordnet sein. Die CPU 812 kann irgendeinen Prozessor oder eine Verarbeitungsvorrichtung umfassen, wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP; digital signal processor), einen Netzwerkprozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein System-auf-einem-Chip (SoC; system-on-a-chip) oder eine andere Vorrichtung zum Ausführen von Code. Die CPU 812 umfasst bei dem abgebildeten Ausführungsbeispiel vier Verarbeitungselemente (Kerne 802 in dem abgebildeten Ausführungsbeispiel), die asymmetrische Verarbeitungselemente oder symmetrische Verarbeitungselemente umfassen können. Die CPU 812 kann jedoch irgendeine Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • Bei einem Ausführungsbeispiel bezieht sich ein Verarbeitungselement auf Hardware oder Logik zur Unterstützung eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen Logik-Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie beispielsweise einen Ausführungszustand oder einen Architekturzustand. Anders ausgedrückt bezieht sich ein Verarbeitungselement bei einem Ausführungsbeispiel auf irgendeine Hardware, die in der Lage ist, unabhängig Code zugeordnet zu werden, wie beispielsweise einen Software-Thread, ein Betriebssystem, eine Anwendung, oder einen anderen Code. Ein physischer Prozessor (oder Prozessor-Socket) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell irgendeine Anzahl anderer Verarbeitungselemente umfasst, wie beispielsweise Kerne oder Hardware-Threads.
  • Ein Kern kann sich auf Logik beziehen, die auf einer integrierten Schaltung positioniert ist, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand zumindest einigen dedizierten Ausführungsressourcen zugeordnet ist. Ein Hardware-Thread kann sich auf irgendeine Logik beziehen, die auf einer integrierten Schaltung positioniert ist, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände Zugriff auf Ausführungsressourcen gemeinschaftlich verwenden. Wie ersichtlich ist, überlappt die Linie zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen gemeinschaftlich verwendet werden und andere für einen Architekturzustand zweckgebunden sind. Häufig werden jedoch ein Kern und ein Hardware-Thread von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor einzeln zu planen.
  • Die physische CPU 812, wie in 8 dargestellt, umfasst vier Kerne - die Kerne 802A, 802B, 802C und 802D, obwohl eine CPU irgendeine geeignete Anzahl von Kernen umfassen kann. Hier können die Kerne 802 als symmetrische Kerne betrachtet werden. Bei einem anderen Ausführungsbeispiel können Kerne einen oder mehrere Out-of-Order (Außerhalb-der-Reihenfolge) - Prozessorkerne oder einen oder mehrere In-Order (In-Reihenfolge) -Prozessorkerne umfassen.
  • Kerne 802 können jedoch individuell aus irgendeiner Art von Kern ausgewählt werden, wie beispielsweise einem nativen Kern, einem software-verwalteten Kern, einem Kern, der angepasst ist, um eine native Anweisungssatz-Architektur (ISA; instruction set architecture) auszuführen, einen Kern, der angepasst ist, um eine übersetzte ISA auszuführen, einen mitentworfenen Kern, oder einen anderen bekannten Kern. In einer heterogenen Kernumgebung (z. B. asymmetrische Kerne) kann eine Form der Übersetzung, wie beispielsweise binäre Übersetzung, verwendet werden, um Code auf einem oder beiden Kernen einzuplanen oder auszuführen.
  • Ein Kern 802 kann ein Dekodiermodul umfassen, das mit einer Abruf-Einheit gekoppelt ist, um abgerufene Elemente zu dekodieren. Abruflogik umfasst bei einem Ausführungsbeispiel individuelle Sequenzer, die Thread-Slots von Kernen 802 zugeordnet sind. Gewöhnlich ist ein Kern 802 einer ersten ISA zugeordnet, die Anweisungen definiert/spezifiziert, die auf dem Kern 802 ausführbar sind. Oft umfassen Maschinen-Code-Anweisungen, die Teil der ersten ISA sind, einen Abschnitt der Anweisung (bezeichnet als ein Opcode), der sich auf eine auszuführende Anweisung oder Operation bezieht/diese spezifiziert. Die Dekodierlogik kann eine Schaltungsanordnung umfassen, die diese Anweisungen von ihren Opcodes erkennt und die dekodierten Anweisungen in der Pipeline für eine Verarbeitung weitergibt, wie durch die erste ISA definiert. Beispielsweise können Dekodierer bei einem Ausführungsbeispiel eine Logik umfassen, die entworfen oder angepasst ist, um spezifische Anweisungen, wie z. B. Transaktionsanweisungen, zu erkennen. Infolge der Erkennung durch die Dekodierer führt die Architektur des Kerns 802 spezifische, vordefinierte Aktionen durch, um der entsprechenden Anweisung zugeordnete Aufgaben auszuführen. Es ist wichtig zu beachten, dass irgendwelche der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren ansprechend auf eine einzelne oder mehrere Anweisungen ausgeführt werden können, von denen einige neue oder alte Anweisungen sein können. Dekodierer von Kernen 802 erkennen bei einem Ausführungsbeispiel die gleiche ISA (oder eine Teilmenge davon). Alternativ kann in einer heterogenen Kernumgebung ein Dekodierer von einem oder mehreren Kernen (z. B. Kern 802B) eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine individuelle ISA) erkennen.
  • Bei verschiedenen Ausführungsbeispielen können die Kerne 802 auch eine oder mehrere arithmetische Logikeinheiten (ALUs; arithmetic logic units), Gleitkommaeinheiten (FPUs; floating point units), Caches, Anweisungspipelines, Interrupt-Handhabungs-Hardware, Register oder andere geeignete Hardware umfassen, um den Betrieb der Kerne 802 zu erleichtern.
  • Der Bus 808 kann irgendeine geeignete, mit der CPU 812 gekoppelte Verbindung darstellen. Bei einem Beispiel kann der Bus 808 die CPU 812 mit einer anderen CPU der Plattformlogik koppeln (z. B. über UPI). I/O-Blöcke 804 stellen Schnittstellenlogik dar, um I/O-Vorrichtungen 810 und 815 mit Kernen der CPU 812 zu koppeln. Bei verschiedenen Ausführungsbeispielen kann ein I/O-Block 804 eine I/O-Steuerung umfassen, die auf dasselbe Package wie die Kerne 802 integriert ist, oder er kann einfach eine Schnittstellenlogik zur Kopplung mit einer I/O-Steuerung umfassen, die Chip-extern (off-chip) positioniert ist. Als ein Beispiel können die I/O-Blöcke 804 PCIe-Schnittstellenlogik umfassen. In ähnlicher Weise stellt die Speichersteuerung 806 eine Schnittstellenlogik dar, um den Speicher 814 mit den Kernen der CPU 812 zu koppeln. Bei verschiedenen Ausführungsbeispielen ist die Speichersteuerung 806 auf demselben Package wie die Kerne 802 integriert. Bei alternativen Ausführungsbeispielen könnte eine Speichersteuerung Chip-extern positioniert sein.
  • Als verschiedene Beispiele kann bei dem dargestellten Ausführungsbeispiel der Kern 802A eine relativ hohe Bandbreite und eine geringere Latenz zu mit dem Bus 808 gekoppelten Vorrichtungen (z. B. anderen CPUs 812) und zu NICs 810 aufweisen, aber eine relativ geringe Bandbreite und eine höhere Latenz zu dem Speicher 814 oder dem Kern 802D. Der Kern 802B kann relativ hohe Bandbreiten und eine niedrige Latenz zu sowohl NICs 810 als auch PCIe-Solid-State-Laufwerk (SSD; solid state drive) 815 und moderate Bandbreiten und Latenzen zu mit dem Bus 808 und dem Kern 802D gekoppelten Vorrichtungen aufweisen. Der Kern 802C hätte relativ hohe Bandbreiten und niedrige Latenzen zu dem Speicher 814 und dem Kern 802D. Schließlich hätte der Kern 802D eine relativ hohe Bandbreite und niedrige Latenz zu Kern 802C, aber relativ niedrige Bandbreiten und hohe Latenzen zu NICs 810, Kern 802A und mit dem Bus 808 gekoppelten Vorrichtungen.
  • „Logik“ (z. B. wie in I/O-Steuerungen, Leistungsverwaltern, Latenzverwaltern usw. und anderen Referenzen auf Logik in dieser Anmeldung zu finden) kann sich auf Hardware, Firmware, Software und/oder Kombinationen von jeder zur Ausführung einer oder mehrerer Funktionen beziehen. Bei verschiedenen Ausführungsbeispielen kann eine Logik einen Mikroprozessor oder ein anderes Verarbeitungselement, das zur Ausführung von Softwareanweisungen betrieben werden kann, diskrete Logik, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC; application specific integrated circuit), eine programmierte Logikvorrichtung, wie beispielsweise ein feld-programmierbares Gate-Array (FPGA; field programmable gate array), ein Speicherbauelement, das Anweisungen umfasst, Kombinationen von Logikvorrichtungen (z. B. wie sie auf einer gedruckten Schaltungsplatine zu finden wären) oder andere geeignete Hardware und/oder Software umfassen. Eine Logik kann ein oder mehrere Gates oder andere Schaltungskomponenten umfassen. Bei einigen Ausführungsbeispielen kann eine Logik auch vollständig als Software verkörpert sein.
  • 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 Registerübertragungssprache- (RTL; register transfer language) Dateien umfassen, neben anderen Beispielen. 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 gesendet werden, die moduliert oder anderweitig erzeugt werden, um solche Informationen zu senden. Wenn eine elektrische Trägerwelle gesendet wird, die den Code oder den Entwurf anzeigt oder trägt, wird, insoweit ein Kopieren, Puffern oder erneutes Senden 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.
  • Ein Modul nach hiesigem Gebrauch bezieht sich auf irgendeine Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel umfasst ein Modul eine Hardware, wie beispielsweise einen Mikrocontroller, der einem nichtflüchtigen Medium zugeordnet ist, um einen Code zu speichern, der angepasst ist, um durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich der Bezug auf ein Modul, bei einem Ausführungsbeispiel, auf die Hardware, 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 eine Verwendung eines Moduls auf das nichtflüchtige Medium, umfassend den Code, der spezifisch angepasst ist, um durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Wie abgeleitet werden kann, kann sich bei einem wiederum anderen Ausführungsbeispiel der Ausdruck Modul (bei diesem Beispiel) auf die Kombination von Mikrocontroller und dem nichtflüchtigen Medium beziehen. Modulgrenzen, die als separat dargestellt werden, variieren oft gewöhnlich und überlappen potenziell. Zum Beispiel können eine erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinschaftlich verwenden, während potenziell irgendeine unabhängige Hardware, Software oder Firmware beibehalten wird. Bei einem Ausführungsbeispiel umfasst die Verwendung des Begriffs Logik Hardware, wie beispielsweise Transistoren, Register oder andere Hardware, wie beispielsweise programmierbare Logik-Bauelemente.
  • Eine Verwendung der Phrase ,zum' oder ausgebildet zum' bei einem Ausführungsbeispiel 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 benannten 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, um' ein FreigabeSignal an einen Taktgeber (clock) bereitzustellen, umfasst nicht jedes potenzielle Logik-Gate, das möglicherweise eine 1 oder 0 bereitstellt. Stattdessen ist das Logik-Gate ein solches, das in einer Weise gekoppelt ist, dass während des Betriebs die Ausgabe der 1 oder 0 ausgebildet ist, den Taktgeber 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 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 1en und 0en 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, die durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugreifbares/lesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder sendet), die von einer Maschine, wie beispielsweise einem Computer oder elektronischen System, lesbar ist. Ein nichtflüchtiges 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, Infrarotsignalen, digitalen Signalen) 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 Informationen in einer Form, die von einer Maschine (z. B. einem Computer) lesbar ist, umfassen, ist aber nicht beschränkt auf Disketten, optische Platten, Compact Disk, Nur-Lese-Speicher (CD-ROMs), und magnetooptische Platten, Nur-Lese-Speicher (ROMs; Read-Only Memory), Direktzugriffsspeicher (RAM; Random Access Memory), 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 beim Senden von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen, etc.) verwendet werden. Dementsprechend umfasst das computerlesbare Medium irgendeine Art von greifbarem maschinenlesbarem 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 Vorrichtung, umfassend: eine I/O-Steuerung, umfassend: einen Port zum Koppeln mit einem Netzwerk; einen Puffer zum Puffern von Netzwerkdaten; eine Schnittstelle zur Unterstützung eines Links, um die I/O-Steuerung mit einer anderen Vorrichtung zu koppeln; und einen Leistungsverwalter. Der Leistungsverwalter ist ausgebildet zum: Überwachen des Puffers, um eine Menge an Verkehr auf dem Port zu bestimmen; Bestimmen, dass die Menge an Verkehr eine Schwelle erreicht; und Initiieren, an der Schnittstelle, eines Leistungsverwaltungsübergangs auf dem Link basierend auf der Bestimmung, dass die Menge an Verkehr die Schwelle erreicht.
  • Beispiel 2 umfasst den Gegenstand von Beispiel 1, wobei der Leistungsverwaltungsübergang ein Ändern einer Linkbreite des Links durch Aktivieren oder Deaktivieren einer Teilmenge von dem Link zugeordneten Lanes basierend auf der Schwelle umfasst.
  • Beispiel 3 umfasst den Gegenstand von Beispiel 2, wobei der Leistungsverwaltungsübergang ferner ein Ändern einer Datenrate des Links umfasst.
  • Beispiel 4 umfasst den Gegenstand eines der Beispiele 2-3, das Ändern einer Linkbreite des Links umfassend einen Übergang des Links von einem aktiven Linkzustand zu einem Konfigurationszustand, eine Kommunikation von Trainingssequenzen im Konfigurationszustand, um den Übergang des Links von einer ersten Linkbreite zu einer anderen, zweiten Linkbreite auszuhandeln.
  • Beispiel 5 umfasst den Gegenstand eines der Beispiele 2-3, wobei das Ändern einer Linkbreite des Links einen Übergang des Links von einem aktiven Linkzustand zu einem Teilweise-Breite-Linkzustand umfasst, und wobei der Teilweise-Breite-Linkzustand in einer Peripheral Component Interconnect Express- (PCIe) basierten Zustandsmaschine definiert ist.
  • Beispiel 6 umfasst den Gegenstand eines der Beispiele 1-5, wobei der Leistungsverwaltungsübergang ein Ändern einer Datenrate des Links von einer ersten Geschwindigkeit zu einer zweiten Geschwindigkeit basierend auf der Schwelle umfasst.
  • Beispiel 7 umfasst den Gegenstand eines der Beispiele 1-6, wobei die Schwelle eine bestimmte aus einer Mehrzahl von Schwellen umfasst und ein entsprechender aus einer Mehrzahl von unterschiedlichen Leistungsverwaltungsübergängen ausgebildet ist, um in Zuordnung zu jeder aus der Mehrzahl von Schwellen ausgeführt zu werden.
  • Beispiel 8 umfasst den Gegenstand eines der Beispiele 1-7, wobei der Leistungsverwalter ferner ausgebildet ist zum: Bestimmen einer dem Leistungsverwaltungsübergang zugeordneten Latenz; und Initiieren einer Minderung der Latenz am Port.
  • Beispiel 9 umfasst den Gegenstand von Beispiel 8, wobei die Minderung ein Senden von Pausen-Frames auf dem Port umfasst, um den Verkehr auf dem Port stillzulegen.
  • Beispiel 10 umfasst den Gegenstand von Beispiel 8, wobei der Port einen ersten aus einer Mehrzahl von Ports der I/O-Steuerung umfasst, um mit dem Netzwerk zu koppeln, wobei die Minderung ein Umleiten des Verkehrs über einen zweiten aus der Mehrzahl von Ports umfasst, während der Leistungsverwaltungsübergang ausgeführt wird.
  • Beispiel 11 umfasst den Gegenstand eines der Beispiele 8-10, wobei der Leistungsverwaltungsübergang ein bestimmter aus einer Mehrzahl von Leistungsverwaltungsübergängen ist, die einer Mehrzahl von Schwellen zugeordnet sind, wobei jedem der Mehrzahl von Leistungsverwaltungsübergängen eine jeweilige Latenz zugeordnet ist, und wobei die Minderung aus einer Mehrzahl von verfügbaren Minderungen basierend auf der jeweiligen Latenz, die dem bestimmten Leistungsverwaltungsübergang zugeordnet ist, ausgewählt wird.
  • Beispiel 12 umfasst den Gegenstand eines der Beispiele 1-11, wobei der Link auf einem PCIe-Protokoll basiert und der Leistungsverwaltungsübergang ausgebildet ist, um basierend auf dem PCIe-Protokoll ausgeführt zu werden.
  • Beispiel 13 umfasst den Gegenstand von Beispiel 12, wobei der Port einen Ethernet-Port umfasst.
  • Beispiel 14 umfasst den Gegenstand eines der Beispiele 1-13, wobei die I/O-Steuerung eine Netzwerkschnittstellensteuerung (NIC) umfasst.
  • Beispiel 15 umfasst den Gegenstand eines der Beispiele 1-14, wobei basierend darauf, dass die Menge an Verkehr für eine Schwellen-Zeitspanne über oder unter der Schwelle liegt, bestimmt wird, dass die Menge an Verkehr die Schwelle erreicht.
  • Beispiel 16 umfasst den Gegenstand eines der Beispiele 1-15, wobei die Schwelle einen konfigurierbaren Wert umfasst, der ausgebildet ist, um von einem Benutzer festgelegt zu werden.
  • Beispiel 17 umfasst den Gegenstand von Beispiel 16, wobei der Leistungsverwaltungsübergang eine benutzerdefinierte Aktion ist, die der Schwelle zugeordnet ist.
  • Beispiel 18 ist ein Verfahren, umfassend: Überwachen von Puffern einer Netzwerkadaptervorrichtung, um eine Menge an Netzwerkverkehr am Netzwerkadapter zu bestimmen; Bestimmen, dass die Menge an Netzwerkverkehr eine Schwelle erreicht; und Initiieren, an einer Peripheral Component Interconnect Express (PCIe)-Schnittstelle des Netzwerkadapters, einer Änderung eines Links, der den Netzwerkadapter mit einer anderen Vorrichtung in einem Rechensystem koppelt, wobei die Änderung ausgebildet ist, um den Leistungsverbrauch an dem Link basierend auf der Schwelle anzupassen, und wobei die Änderung zumindest eine von einer Änderung einer Datenrate des Links oder einer Änderung einer Linkbreite des Links umfasst.
  • Beispiel 19 umfasst den Gegenstand von Beispiel 18, wobei das Bestimmen, dass die Menge an Netzwerkverkehr die Schwelle erreicht, ein Bestimmen umfasst, dass die Menge an Netzwerkverkehr eine durch die Schwelle definierte Schwelle-Menge für eine Zeitperiode über- oder unterschreitet.
  • Beispiel 20 umfasst den Gegenstand eines der Beispiele 18-19, wobei der Leistungsverwaltungsübergang ein Ändern einer Linkbreite des Links durch Aktivieren oder Deaktivieren einer Teilmenge von dem Link zugeordneten Lanes basierend auf der Schwelle umfasst.
  • Beispiel 21 umfasst den Gegenstand von Beispiel 20, das Ändern einer Linkbreite des Links umfassend einen Übergang des Links von einem aktiven Linkzustand zu einem Konfigurationszustand, eine Kommunikation von Trainingssequenzen im Konfigurationszustand, um den Übergang des Links von einer ersten Linkbreite zu einer anderen, zweiten Linkbreite auszuhandeln.
  • Beispiel 22 umfasst den Gegenstand von Beispiel 20, wobei das Ändern einer Linkbreite des Links einen Übergang des Links von einem aktiven Linkzustand zu einem Teilweise-Breite-Linkzustand umfasst, und wobei der Teilweise-Breite-Linkzustand in einer Peripheral Component Interconnect Express- (PCIe) basierten Zustandsmaschine definiert ist.
  • Beispiel 23 umfasst den Gegenstand eines der Beispiele 18-22, wobei der Leistungsverwaltungsübergang ein Ändern sowohl der Datenrate des Links oder der Linkbreite des Links basierend auf der Schwelle umfasst.
  • Beispiel 24 umfasst den Gegenstand eines der Beispiele 18-23, wobei die Schwelle eine bestimmte aus einer Mehrzahl von Schwellen umfasst und ein entsprechender aus einer Mehrzahl von unterschiedlichen Leistungsverwaltungsübergängen ausgebildet ist, um in Zuordnung zu jeder aus der Mehrzahl von Schwellen ausgeführt zu werden.
  • Beispiel 25 umfasst den Gegenstand eines der Beispiele 18-24, ferner umfassend: Bestimmen einer dem Leistungsverwaltungsübergang zugeordneten Latenz; und Initiieren einer Minderung der Latenz am Port.
  • Beispiel 26 umfasst den Gegenstand von Beispiel 25, wobei die Minderung ein Senden von Pausen-Frames auf dem Port umfasst, um den Verkehr auf dem Port stillzulegen.
  • Beispiel 27 umfasst den Gegenstand von Beispiel 25, wobei der Port einen ersten aus einer Mehrzahl von Ports der I/O-Steuerung umfasst, um mit dem Netzwerk zu koppeln, wobei die Minderung ein Umleiten des Verkehrs über einen zweiten aus der Mehrzahl von Ports umfasst, während der Leistungsverwaltungsübergang ausgeführt wird.
  • Beispiel 28 umfasst den Gegenstand eines der Beispiele 25-27, wobei der Leistungsverwaltungsübergang ein bestimmter aus einer Mehrzahl von Leistungsverwaltungsübergängen ist, die einer Mehrzahl von Schwellen zugeordnet sind, wobei jedem der Mehrzahl von Leistungsverwaltungsübergängen eine jeweilige Latenz zugeordnet ist, und wobei die Minderung aus einer Mehrzahl von verfügbaren Minderungen basierend auf der jeweiligen Latenz, die dem bestimmten Leistungsverwaltungsübergang zugeordnet ist, ausgewählt wird.
  • Beispiel 29 umfasst den Gegenstand eines der Beispiele 18-28, wobei der Leistungsverwaltungsübergang ausgebildet ist, um basierend auf dem PCIe-Protokoll ausgeführt zu werden.
  • Beispiel 30 umfasst den Gegenstand von Beispiel 29, wobei der Netzwerkverkehr über einen Ethernet-Port gesendet und empfangen wird.
  • Beispiel 31 umfasst den Gegenstand eines der Beispiele 18-30, wobei der Netzwerkadapter eine Netzwerkschnittstellensteuerung (NIC) umfasst.
  • Beispiel 32 umfasst den Gegenstand eines der Beispiele 18-31, wobei die Schwelle einen konfigurierbaren Wert umfasst, der ausgebildet ist, um von einem Benutzer festgelegt zu werden.
  • Beispiel 33 umfasst den Gegenstand von Beispiel 32, wobei der Leistungsverwaltungsübergang eine benutzerdefinierte Aktion ist, die der Schwelle zugeordnet ist.
  • Beispiel 34 ist ein System, umfassend Mittel zum Ausführen des Verfahrens gemäß einem der Beispiele 18-33.
  • Beispiel 35 umfasst den Gegenstand von Beispiel 34, wobei das Mittel ein nichtflüchtiges computerlesbares Speicherungsmedium mit darauf gespeicherten Anweisungen umfasst, wobei die Anweisung, die von einer Maschine ausführbar ist, ausgebildet ist, um die Maschine zu veranlassen, zumindest einen Abschnitt des Verfahrens gemäß einem der Beispiele 18-33 auszuführen.
  • Beispiel 36 ist ein System, umfassend: eine erste Vorrichtung; und eine I/O-Steuerungsvorrichtung, die mit der ersten Vorrichtung durch einen Link gekoppelt ist, der mit einem PCIe-basierten Verbindungsprotokoll konform ist, die I/O-Steuerungsvorrichtung umfassend: einen Port zum Koppeln mit einem Netzwerk; einen Puffer zum Puffern von Netzwerkdaten; eine Schnittstelle zur Unterstützung des Links, wobei der Link ausgebildet ist, zum Senden von Daten von dem Netzwerk an die erste Vorrichtung und zum Empfangen von Daten von der ersten, die auf dem Netzwerk sendet, verwendet zu werden; und einen Leistungsverwalter. Der Leistungsverwalter ist ausgebildet zum: Überwachen des Puffers, um eine Menge an Verkehr auf dem Port zu bestimmen; Bestimmen, dass die Menge an Verkehr eine Schwelle erreicht; und Initiieren, an der Schnittstelle, eines Leistungsverwaltungsübergangs auf dem Link basierend auf der Bestimmung, dass die Menge an Verkehr die Schwelle erreicht.
  • Beispiel 37 umfasst den Gegenstand von Beispiel 36, wobei die I/O-Vorrichtung eine Netzwerkschnittstellensteuerung (NIC) umfasst.
  • Beispiel 38 umfasst den Gegenstand eines der Beispiele 36-37, wobei die erste Vorrichtung einen Host-Prozessor umfasst.
  • Beispiel 39 umfasst den Gegenstand eines der Beispiele 36-38, wobei der Leistungsverwaltungsübergang ein Ändern einer Linkbreite des Links durch Aktivieren oder Deaktivieren einer Teilmenge von dem Link zugeordneten Lanes basierend auf der Schwelle umfasst.
  • Beispiel 40 umfasst den Gegenstand von Beispiel 39, wobei der Leistungsverwaltungsübergang ferner ein Ändern einer Datenrate des Links umfasst.
  • Beispiel 41 umfasst den Gegenstand eines der Beispiele 39-40, das Ändern einer Linkbreite des Links umfassend einen Übergang des Links von einem aktiven Linkzustand zu einem Konfigurationszustand, eine Kommunikation von Trainingssequenzen im Konfigurationszustand, um den Übergang des Links von einer ersten Linkbreite zu einer anderen, zweiten Linkbreite auszuhandeln.
  • Beispiel 42 umfasst den Gegenstand von Beispiel 39, wobei das Ändern einer Linkbreite des Links einen Übergang des Links von einem aktiven Linkzustand zu einem Teilweise-Breite-Linkzustand umfasst, und wobei der Teilweise-Breite-Linkzustand in einer Peripheral Component Interconnect Express- (PCIe) basierten Zustandsmaschine definiert ist.
  • Beispiel 43 umfasst den Gegenstand eines der Beispiele 36-42, wobei der Leistungsverwaltungsübergang ein Ändern einer Datenrate des Links von einer ersten Geschwindigkeit zu einer zweiten Geschwindigkeit basierend auf der Schwelle umfasst.
  • Beispiel 44 umfasst den Gegenstand eines der Beispiele 36-43, wobei die Schwelle eine bestimmte aus einer Mehrzahl von Schwellen umfasst und ein entsprechender aus einer Mehrzahl von unterschiedlichen Leistungsverwaltungsübergängen ausgebildet ist, um in Zuordnung zu jeder aus der Mehrzahl von Schwellen ausgeführt zu werden.
  • Beispiel 45 umfasst den Gegenstand eines der Beispiele 36-44, wobei der Leistungsverwalter ferner ausgebildet ist zum: Bestimmen einer dem Leistungsverwaltungsübergang zugeordneten Latenz; und Initiieren einer Minderung der Latenz am Port.
  • Beispiel 46 umfasst den Gegenstand von Beispiel 45, wobei die Minderung ein Senden von Pausen-Frames auf dem Port umfasst, um den Verkehr auf dem Port stillzulegen.
  • Beispiel 47 umfasst den Gegenstand von Beispiel 45, wobei der Port einen ersten aus einer Mehrzahl von Ports der I/O-Steuerung umfasst, um mit dem Netzwerk zu koppeln, wobei die Minderung ein Umleiten des Verkehrs über einen zweiten aus der Mehrzahl von Ports umfasst, während der Leistungsverwaltungsübergang ausgeführt wird.
  • Beispiel 48 umfasst den Gegenstand eines der Beispiele 45-47, wobei der Leistungsverwaltungsübergang ein bestimmter aus einer Mehrzahl von Leistungsverwaltungsübergängen ist, die einer Mehrzahl von Schwellen zugeordnet sind, wobei jedem der Mehrzahl von Leistungsverwaltungsübergängen eine jeweilige Latenz zugeordnet ist, und wobei die Minderung aus einer Mehrzahl von verfügbaren Minderungen basierend auf der jeweiligen Latenz, die dem bestimmten Leistungsverwaltungsübergang zugeordnet ist, ausgewählt wird.
  • Beispiel 49 umfasst den Gegenstand eines der Beispiele 36-48, wobei der Leistungsverwaltungsübergang ausgebildet ist, um basierend auf dem PCIe-Protokoll ausgeführt zu werden.
  • Beispiel 50 umfasst den Gegenstand von Beispiel 49, wobei der Port einen Ethernet-Port umfasst.
  • Beispiel 51 umfasst den Gegenstand eines der Beispiele 36-50, wobei basierend darauf, dass die Menge an Verkehr für eine Schwellen-Zeitspanne über oder unter der Schwelle liegt, bestimmt wird, dass die Menge an Verkehr die Schwelle erreicht.
  • Beispiel 52 umfasst den Gegenstand eines der Beispiele 36-51, wobei die Schwelle einen konfigurierbaren Wert umfasst, der ausgebildet ist, um von einem Benutzer festgelegt zu werden.
  • Beispiel 53 umfasst den Gegenstand von Beispiel 52, wobei der Leistungsverwaltungsübergang eine benutzerdefinierte Aktion ist, die der Schwelle zugeordnet ist.
  • 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 bei allen notwendigerweise 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 (34)

  1. Eine Vorrichtung, umfassend: eine I/O-Steuerung, umfassend: einen Port zum Koppeln mit einem Netzwerk; einen Puffer zum Puffern von Netzwerkdaten; eine Schnittstelle zur Unterstützung eines Links, um die I/O-Steuerung mit einer anderen Vorrichtung zu koppeln; einen Leistungsverwalter zum: Überwachen des Puffers, um eine Menge an Verkehr auf dem Port zu bestimmen; Bestimmen, dass die Menge an Verkehr eine Schwelle erreicht; Initiieren, an der Schnittstelle, eines Leistungsverwaltungsübergangs auf dem Link basierend auf der Bestimmung, dass die Menge an Verkehr die Schwelle erreicht.
  2. Die Vorrichtung gemäß Anspruch 1, wobei der Leistungsverwaltungsübergang ein Ändern einer Linkbreite des Links durch Aktivieren oder Deaktivieren einer Teilmenge von dem Link zugeordneten Lanes basierend auf der Schwelle umfasst.
  3. Die Vorrichtung gemäß Anspruch 2, wobei der Leistungsverwaltungsübergang ferner ein Ändern einer Datenrate des Links umfasst.
  4. Die Vorrichtung gemäß einem der Ansprüche 2-3, das Ändern einer Linkbreite des Links umfassend einen Übergang des Links von einem aktiven Linkzustand zu einem Konfigurationszustand, eine Kommunikation von Trainingssequenzen im Konfigurationszustand, um den Übergang des Links von einer ersten Linkbreite zu einer anderen, zweiten Linkbreite auszuhandeln.
  5. Die Vorrichtung gemäß einem der Ansprüche 2-3, wobei das Ändern einer Linkbreite des Links einen Übergang des Links von einem aktiven Linkzustand zu einem Teilweise-Breite-Linkzustand umfasst, und wobei der Teilweise-Breite-Linkzustand in einer Peripheral Component Interconnect Express- (PCIe) basierten Zustandsmaschine definiert ist.
  6. Die Vorrichtung gemäß einem der Ansprüche 1-5, wobei der Leistungsverwaltungsübergang ein Ändern einer Datenrate des Links von einer ersten Geschwindigkeit zu einer zweiten Geschwindigkeit basierend auf der Schwelle umfasst.
  7. Die Vorrichtung gemäß einem der Ansprüche 1-6, wobei die Schwelle eine bestimmte aus einer Mehrzahl von Schwellen umfasst und ein entsprechender aus einer Mehrzahl von unterschiedlichen Leistungsverwaltungsübergängen ausgebildet ist, um in Zuordnung zu jeder aus der Mehrzahl von Schwellen ausgeführt zu werden.
  8. Die Vorrichtung gemäß einem der Ansprüche 1-7, wobei der Leistungsverwalter ferner ausgebildet ist zum: Bestimmen einer dem Leistungsverwaltungsübergang zugeordneten Latenz; und Initiieren einer Minderung der Latenz am Port.
  9. Die Vorrichtung gemäß Anspruch 8, wobei die Minderung ein Senden von Pausen-Frames auf dem Port umfasst, um den Verkehr auf dem Port stillzulegen.
  10. Die Vorrichtung gemäß Anspruch 8, wobei der Port einen ersten aus einer Mehrzahl von Ports der I/O-Steuerung umfasst, um mit dem Netzwerk zu koppeln, wobei die Minderung ein Umleiten des Verkehrs über einen zweiten aus der Mehrzahl von Ports umfasst, während der Leistungsverwaltungsübergang ausgeführt wird.
  11. Die Vorrichtung gemäß einem der Ansprüche 8-10, wobei der Leistungsverwaltungsübergang ein bestimmter aus einer Mehrzahl von Leistungsverwaltungsübergängen ist, die einer Mehrzahl von Schwellen zugeordnet sind, wobei jedem der Mehrzahl von Leistungsverwaltungsübergängen eine jeweilige Latenz zugeordnet ist, und wobei die Minderung aus einer Mehrzahl von verfügbaren Minderungen basierend auf der jeweiligen Latenz, die dem bestimmten Leistungsverwaltungsübergang zugeordnet ist, ausgewählt wird.
  12. Die Vorrichtung gemäß einem der Ansprüche 1-11, wobei der Link auf einem PCIe-Protokoll basiert und der Leistungsverwaltungsübergang ausgebildet ist, um basierend auf dem PCIe-Protokoll ausgeführt zu werden.
  13. Die Vorrichtung gemäß Anspruch 12, wobei der Port einen Ethernet-Port umfasst.
  14. Die Vorrichtung gemäß einem der Ansprüche 1-13, wobei die I/O-Steuerung eine Netzwerkschnittstellensteuerung (NIC) umfasst.
  15. Die Vorrichtung gemäß einem der Ansprüche 1-14, wobei basierend darauf, dass die Menge an Verkehr für eine Schwellen-Zeitspanne über oder unter der Schwelle liegt, bestimmt wird, dass die Menge an Verkehr die Schwelle erreicht.
  16. Die Vorrichtung gemäß einem der Ansprüche 1-15, wobei zumindest eines von der Schwelle oder dem Leistungsverwaltungsübergang benutzerdefiniert ist.
  17. Ein Verfahren, umfassend: Überwachen von Puffern einer Netzwerkadaptervorrichtung, um eine Menge an Netzwerkverkehr am Netzwerkadapter zu bestimmen; Bestimmen, dass die Menge an Netzwerkverkehr eine Schwelle erreicht; und Initiieren, an einer Peripheral Component Interconnect Express (PCIe)-Schnittstelle des Netzwerkadapters, einer Änderung eines Links, der den Netzwerkadapter mit einer anderen Vorrichtung in einem Rechensystem koppelt, wobei die Änderung ausgebildet ist, um den Leistungsverbrauch an dem Link basierend auf der Schwelle anzupassen, und wobei die Änderung zumindest eine von einer Änderung einer Datenrate des Links oder einer Änderung einer Linkbreite des Links umfasst.
  18. Das Verfahren gemäß Anspruch 17, wobei das Bestimmen, dass die Menge an Netzwerkverkehr die Schwelle erreicht, ein Bestimmen umfasst, dass die Menge an Netzwerkverkehr eine durch die Schwelle definierte Schwelle-Menge für eine Zeitperiode über- oder unterschreitet.
  19. Das Verfahren gemäß einem der Ansprüche 17-18, wobei der Leistungsverwaltungsübergang ein Ändern einer Linkbreite des Links durch Aktivieren oder Deaktivieren einer Teilmenge von dem Link zugeordneten Lanes basierend auf der Schwelle umfasst.
  20. Das Verfahren gemäß Anspruch 19, das Ändern einer Linkbreite des Links umfassend einen Übergang des Links von einem aktiven Linkzustand zu einem Konfigurationszustand, eine Kommunikation von Trainingssequenzen im Konfigurationszustand, um den Übergang des Links von einer ersten Linkbreite zu einer anderen, zweiten Linkbreite auszuhandeln.
  21. Das Verfahren gemäß Anspruch 19, wobei das Ändern einer Linkbreite des Links einen Übergang des Links von einem aktiven Linkzustand zu einem Teilweise-Breite-Linkzustand umfasst, und wobei der Teilweise-Breite-Linkzustand in einer Peripheral Component Interconnect Express- (PCIe) basierten Zustandsmaschine definiert ist.
  22. Das Verfahren gemäß einem der Ansprüche 17-21, wobei der Leistungsverwaltungsübergang ein Ändern sowohl der Datenrate des Links oder der Linkbreite des Links basierend auf der Schwelle umfasst.
  23. Das Verfahren gemäß einem der Ansprüche 17-22, wobei die Schwelle eine bestimmte aus einer Mehrzahl von Schwellen umfasst und ein entsprechender aus einer Mehrzahl von unterschiedlichen Leistungsverwaltungsübergängen ausgebildet ist, um in Zuordnung zu jeder aus der Mehrzahl von Schwellen ausgeführt zu werden.
  24. Das Verfahren gemäß einem der Ansprüche 17-23, ferner umfassend: Bestimmen einer dem Leistungsverwaltungsübergang zugeordneten Latenz; und Initiieren einer Minderung der Latenz am Port.
  25. Das Verfahren gemäß Anspruch 24, wobei die Minderung ein Senden von Pausen-Frames auf dem Port umfasst, um den Verkehr auf dem Port stillzulegen.
  26. Das Verfahren gemäß Anspruch 24, wobei der Port einen ersten aus einer Mehrzahl von Ports der I/O-Steuerung umfasst, um mit dem Netzwerk zu koppeln, wobei die Minderung ein Umleiten des Verkehrs über einen zweiten aus der Mehrzahl von Ports umfasst, während der Leistungsverwaltungsübergang ausgeführt wird.
  27. Ein System, umfassend Mittel zum Ausführen des Verfahrens gemäß einem der Ansprüche 17-26.
  28. Ein System, umfassend: eine erste Vorrichtung; und eine I/O-Steuerungsvorrichtung, die mit der ersten Vorrichtung durch einen Link gekoppelt ist, der mit einem PCIe-basierten Verbindungsprotokoll konform ist, die I/O-Steuerungsvorrichtung umfassend: einen Port zum Koppeln mit einem Netzwerk; einen Puffer zum Puffern von Netzwerkdaten; eine Schnittstelle zur Unterstützung des Links, wobei der Link ausgebildet ist, zum Senden von Daten von dem Netzwerk an die erste Vorrichtung und zum Empfangen von Daten von der ersten, die auf dem Netzwerk sendet, verwendet zu werden; und einen Leistungsverwalter zum: Überwachen des Puffers, um eine Menge an Verkehr auf dem Port zu bestimmen; Bestimmen, dass die Menge an Verkehr eine Schwelle erreicht; Initiieren, an der Schnittstelle, eines Leistungsverwaltungsübergangs auf dem Link basierend auf der Bestimmung, dass die Menge an Verkehr die Schwelle erreicht.
  29. Das System gemäß Anspruch 28, wobei die I/O-Vorrichtung eine Netzwerkschnittstellensteuerung (NIC) umfasst.
  30. Das System gemäß einem der Ansprüche 28-29, wobei die erste Vorrichtung einen Host-Prozessor umfasst.
  31. Das System gemäß einem der Ansprüche 28-30, wobei der Leistungsverwaltungsübergang ein Ändern einer Linkbreite des Links durch Aktivieren oder Deaktivieren einer Teilmenge von dem Link zugeordneten Lanes basierend auf der Schwelle umfasst.
  32. Das System gemäß Anspruch 31, wobei der Leistungsverwaltungsübergang ferner ein Ändern einer Datenrate des Links umfasst.
  33. Das System gemäß einem der Ansprüche 31-32, das Ändern einer Linkbreite des Links umfassend einen Übergang des Links von einem aktiven Linkzustand zu einem Konfigurationszustand, eine Kommunikation von Trainingssequenzen im Konfigurationszustand, um den Übergang des Links von einer ersten Linkbreite zu einer anderen, zweiten Linkbreite auszuhandeln.
  34. Das System gemäß Anspruch 31, wobei das Ändern einer Linkbreite des Links einen Übergang des Links von einem aktiven Linkzustand zu einem Teilweise-Breite-Linkzustand umfasst, und wobei der Teilweise-Breite-Linkzustand in einer Peripheral Component Interconnect Express- (PCIe) basierten Zustandsmaschine definiert ist.
DE102021122231.1A 2020-10-21 2021-08-27 Dynamische netzwerksteuerungs-leistungsverwaltung Pending DE102021122231A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/076,776 US20210041929A1 (en) 2020-10-21 2020-10-21 Dynamic network controller power management
US17/076,776 2020-10-21

Publications (1)

Publication Number Publication Date
DE102021122231A1 true DE102021122231A1 (de) 2022-04-21

Family

ID=74498543

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021122231.1A Pending DE102021122231A1 (de) 2020-10-21 2021-08-27 Dynamische netzwerksteuerungs-leistungsverwaltung

Country Status (3)

Country Link
US (1) US20210041929A1 (de)
CN (1) CN114461049A (de)
DE (1) DE102021122231A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836060A (zh) * 2021-09-24 2021-12-24 北京机电工程研究所 一种适用于仿真模型及流程模型的分布式实时仿真平台
US11756606B2 (en) * 2021-12-13 2023-09-12 Advanced Micro Devices, Inc. Method and apparatus for recovering regular access performance in fine-grained DRAM
US20230244621A1 (en) * 2022-01-16 2023-08-03 Microsoft Technology Licensing, Llc Reducing interrupts using buffering for data processing
US11934335B2 (en) * 2022-04-07 2024-03-19 Qualcomm Incorporated Power management for peripheral component interconnect
JP2024014337A (ja) * 2022-07-22 2024-02-01 キオクシア株式会社 メモリシステム
US20240111354A1 (en) * 2022-10-04 2024-04-04 Qualcomm Incorporated Power management for peripheral component interconnect
US20240111700A1 (en) * 2022-10-04 2024-04-04 Qualcomm Incorporated Latency reduction for link speed switching in multiple lane data links
US11921558B1 (en) * 2022-11-30 2024-03-05 Intel Corporation Using network traffic metadata to control a processor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140281639A1 (en) * 2013-03-15 2014-09-18 Mahesh Wagh Device power management state transition latency advertisement for faster boot time
US20160187958A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Techniques for managing power and performance for a networking device
US10430351B2 (en) * 2016-03-17 2019-10-01 Dell Products L.P. Systems and methods for virtual service processor data bridging
US11157068B2 (en) * 2019-01-25 2021-10-26 Intel Corporation Power state management for lanes of a communication port

Also Published As

Publication number Publication date
CN114461049A (zh) 2022-05-10
US20210041929A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
DE102021122231A1 (de) Dynamische netzwerksteuerungs-leistungsverwaltung
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE112013007743B4 (de) Steuern einer physischen Verbindung von einem ersten Protokoll unter Verwendung einer erweiterten Funktionsstruktur eines zweiten Protokolls
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE112017003301T5 (de) Interprozessor-Energiezustandswechsel
DE102014003704B4 (de) Plattform-agnostisches Powermanagement
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112013003733B4 (de) Adaptive Paketumleitung, um angemessene, kostengünstige und/oder Energie-effiziente Dienstgüte im Netzwerk auf Chipvorrichtungen zu erreichen
DE112016004347T5 (de) Lokale und globale Datenzentrumsnetzoptimierungen in Echtzeit basierend auf Plattformtelemetriedaten
DE112011103193B4 (de) Bereitstellung einer Pro-Kern-Spannungs-und Frequenzsteuerung
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE102021124514A1 (de) Vorrichtung und verfahren für hierarchische leistungsverwaltung
US20130097351A1 (en) System and Method for High-Performance, Low-Power Data Center Interconnect Fabric
DE102015118705A1 (de) Technologien für leistungsbasierte Außer-der-Reihe-Task-Planung für Datenzentren
DE102022104207A1 (de) Pooling von Netzwerkverarbeitungsressourcen
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE102021118048A1 (de) Systemleistungsverwaltung in e/a-hybridsystemen mit mehreren ports
DE112020005872T5 (de) Erweiterte linktrainingszeit, verhandelt beim linkstart
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE102020130536A1 (de) Adaptiver Eintritt in und adaptives Verlassen von Niedrigenergiezuständen