DE112018007268T5 - Verbesserter speicher-abgebildeter eingabe/ausgabe (mmio) -regionszugriff - Google Patents

Verbesserter speicher-abgebildeter eingabe/ausgabe (mmio) -regionszugriff Download PDF

Info

Publication number
DE112018007268T5
DE112018007268T5 DE112018007268.1T DE112018007268T DE112018007268T5 DE 112018007268 T5 DE112018007268 T5 DE 112018007268T5 DE 112018007268 T DE112018007268 T DE 112018007268T DE 112018007268 T5 DE112018007268 T5 DE 112018007268T5
Authority
DE
Germany
Prior art keywords
region
vmcs
logic
tlb
transit
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
DE112018007268.1T
Other languages
English (en)
Inventor
Yu Zhou
Bing Niu
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 DE112018007268T5 publication Critical patent/DE112018007268T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

Bei einem Beispiel ist eine Rechenvorrichtung offenbart, umfassend: eine Hardware-Plattform; einen Virtuelle-Maschine-Manager (VMM), der eine Virtuelle-Maschine-Steuerstruktur (VMCS) umfasst, wobei der VMM ausgebildet ist, um eine virtuelle Maschine (VM) gemäß der VMCS bereitzustellen; eine Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die eine direkte virtuelle Gastadresse (GVA) zu der physischen Host-Adresse (HPA) -Übersetzungen umfasst; und Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.

Description

  • GEBIET DER BESCHREIBUNG
  • Diese Offenbarung bezieht sich im Allgemeinen auf das Gebiet des Netzwerk-Rechenwesens und genauer, aber nicht ausschließlich, auf ein System und Verfahren für verbesserten Speicher-abgebildeten Eingabe/Ausgabe (MMIO; memory-mapped input/output) -Regionszugriff.
  • HINTERGRUND
  • Bei einigen modernen Rechenzentren ist die Funktion einer Vorrichtung oder Anwendung möglicherweise nicht an eine spezifische, feste Hardware-Konfiguration gebunden. Stattdessen können Verarbeitungs-, Speicher- (Memory), Speicherungs-(storage) und Beschleunigerfunktionen in einigen Fällen von verschiedenen Orten aggregiert werden, um einen virtuellen „zusammengesetzten Knoten (composite node)“ zu bilden. Ein aktuelles Netzwerk kann ein Rechenzentrum umfassen, das eine große Anzahl von generischen Hardware-Server-Vorrichtungen hostet, die in einem Server-Rack umfasst sind, zum Beispiel, und durch einen Hypervisor gesteuert werden. Jede Hardwarevorrichtung kann eine oder mehrere Instanzen einer virtuellen Vorrichtung ausführen, wie beispielsweise einen Arbeitslast-Server oder einen virtuellen Desktop.
  • In einer virtualisierten Umgebung, wie beispielsweise einem Rechenzentrum, ermöglicht Single-Root-Eingabe/Ausgabe-Virtualisierung (SR-IOV; single root input/output virtualization), dass ein einzelner physischer Peripheral Component Interconnect Express (PCIe) -Bus durch mehrere Gastsysteme in der virtuellen Umgebung gemeinsam verwendet wird. SR-IOV ist eine Spezifikation, die eine Isolation von PCIe-Ressourcen erlaubt, was Managebarkeit und Performance verbessern kann. Alle der Gastsysteme in der virtualisierten Umgebung können diese einzelne PCIe-Hardwareschnittstelle gemeinsam verwenden. SR-IOV ermöglicht es jedem der Gasthosts in einer virtualisierten Umgebung, wie beispielsweise VMs, die einzelne PCIe-Hardware-Schnittstelle über mehrere virtuelle Funktionsinstanzen gemeinsam zu verwenden. SR-IOV hat weitverbreitete Annahme in Virtualisierungsumgebungen gefunden, wie beispielsweise Netzwerkfunktionsvirtualisierung (NFV; network function virtualization).
  • Speicher-abgebildete Eingabe/Ausgabe (MMIO; memory-mapped input/output) ist ein Eingabe/Ausgabe (I/O; input/output) -Verfahren zum Bereitstellen von Kohärenz zwischen der zentralen Verarbeitungseinheit (CPU; central processing unit) und Peripherievorrichtungen in einem Computer. Bei MMIO werden der Speicher und Register von I/O-Vorrichtungen auf den gleichen Adressraum abgebildet wie der Hauptspeicher des Host-Vorrichtung. Wenn die CPU also auf eine Speicheradresse zugreift, kann sie sich entweder auf einen Abschnitt des Hauptspeichers oder auf eine der abgebildeten Speicherregionen beziehen.
  • Figurenliste
  • Die vorliegende Offenbarung wird durch die folgende detaillierte Beschreibung am besten verstanden, wenn sie mit den dazugehörigen Figuren gelesen wird. Es wird betont, dass, gemäß üblicher Branchenpraktiken, verschiedene Merkmale nicht notwendigerweise maßstabsgetreu gezeichnet sind und nur zu Darstellungszwecken verwendet werden. Wo eine Skala gezeigt ist, explizit oder implizit, stellt sie nur ein darstellendes Beispiel bereit. Bei anderen Ausführungsbeispielen können die Abmessungen der verschiedenen Merkmale zu Zwecken der Klarheit der Erörterung beliebig vergrößert oder verkleinert sein.
    • 1 ist ein Blockdiagramm ausgewählter Elemente eines Rechenzentrums, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 2 ist ein Blockdiagramm, das ausgewählte Elemente einer erweiterten Virtuelle-Maschine-Steuerstruktur (VMCS; Virtual Machine Control Structure) gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung darstellt.
    • 3 stellt ein Beispiel eines sperrenden Übersetzungs-Lookaside-Puffers (TLB; translation lookaside buffer) gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung dar.
    • 4 ist ein Blockdiagramm, das gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung Durchgangs (passthrough) -Zugriff darstellt.
    • 5 ist ein Flussdiagramm eines Verfahrens, das gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung ausgeführt werden kann.
    • 6 ist ein Blockdiagramm ausgewählter Komponenten eines Rechenzentrums mit einer Netzwerkkonnektivität gemäß einem oder mehreren Beispielen der vorliegenden Anmeldung.
    • 7 ist ein Blockdiagramm ausgewählter Komponenten einer Endnutzer-Rechenvorrichtung gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 8 ist ein Blockdiagramm einer Netzwerkfunktionsvirtualisierungs (NFV; network function virtualization) -Infrastruktur gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
    • 9 ist ein Blockdiagramm von Komponenten einer Rechenplattform gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • AUSFÜHRUNGSBEISPIELE DER OFFENBARUNG
  • Die folgende Offenbarung stellt viele unterschiedliche Ausführungsbeispiele oder Beispiele für ein Implementieren unterschiedlicher Merkmale der vorliegenden Offenbarung dar. Spezifische Beispiele für Komponenten und Anordnungen sind nachfolgend beschrieben, um die vorliegende Offenlegung zu vereinfachen. Diese sind natürlich nur Beispiele und sollen nicht einschränkend sein. Ferner kann die vorliegende Offenbarung in den verschiedenen Beispielen Bezugszeichen und/oder Buchstaben wiederholen. Diese Wiederholung dient dem Zweck von Einfachheit und Klarheit und schreibt an sich nicht eine Beziehung zwischen den verschiedenen erörterten Ausführungsbeispielen und/oder Konfigurationen vor. Unterschiedliche Ausführungsbeispiele können unterschiedliche Vorteile aufweisen, und kein bestimmter Vorteil ist notwendigerweise von irgendeinem Ausführungsbeispiel erforderlich.
  • Eine zeitgemäße Rechenplattform, wie beispielsweise eine von Intel® oder Ähnlichem bereitgestellte Hardwareplattform, kann eine Fähigkeit zum Überwachen der Vorrichtungsperformance und zum Treffen von Entscheidungen über Ressourcenbereitstellung aufweisen. Zum Beispiel kann in einem großen Rechenzentrum, wie es beispielsweise durch einen Cloud-Dienstanbieter (CSP; cloud service provider) bereitgestellt sein kann, die Hardware-Plattform Rack-befestigte Server mit Rechenressourcen wie Prozessoren, Speicher, Speicherungspools, Beschleunigern und anderen ähnlichen Ressourcen aufweisen. Nach hiesigem Gebrauch umfasst „Cloud-Rechenwesen (cloud computing)“ Netzwerk-verbundene Rechenressourcen und Technologie, die allgegenwärtigen (oft weltweiten) Zugriff auf Daten, Ressourcen und/oder Technologie ermöglichen. Cloud-Ressourcen zeichnen sich im Allgemeinen durch große Flexibilität bei einem dynamischen Zuweisen von Ressourcen gemäß aktueller Arbeitslasten und Bedürfnisse aus. Dies kann, zum Beispiel, durch Virtualisierung erreicht werden, wobei Ressourcen wie beispielsweise Hardware, Speicherung und Netzwerke via eine Software-Abstraktionsschicht einer virtuellen Maschine (VM; virtual machine) bereitgestellt werden, und/oder durch Containerisierung, wobei Instanzen von Netzwerkfunktionen in „Containern“ bereitgestellt sind, die voneinander getrennt sind, die aber zugrunde liegende Betriebssystem-, Speicher- und Treiberressourcen gemeinsam verwenden.
  • In großen Rechenzentren und HPC-Clustern kann die Netzwerklatenz ein Premium-Entwurfsgesichtspunkt sein. In einigen Fällen können die virtuelle Netzwerkschnittstellenkarte (vNIC; virtual network interface card) und/oder der virtuelle Schalter (vSwitch) zu einem Engpass werden.
  • Zum Beispiel können viele Telekommunikationsindustrieanwendung einen hohen Durchsatz und niedrige Latenzzeit in dem Netzwerk erfordern. Bei diesen Implementierungen kann I/O-Performance als ein Premium-Faktor behandelt werden. Viele dieser Telekommunikations- und anderen Rechenzentrumsanwendungen haben sich von zweckgebundenen, nur einmal verwendbaren Netzwerkanwendungen abgewendet und stellen stattdessen Netzwerkdienste via Netzwerkfunktionsvirtualisierung (NFV; network function virtualization) bereit, oder ein Dienst kann in einem bestimmten Netzwerk durch eine Virtuelles-Netzwerk-Funktion (VNF; virtual network function) bereitgestellt sein. Bei einer solchen starken Abhängigkeit von VNFs kann die Performance des vSwitch ein begrenzender Faktor für die gesamte Latenzzeit des Netzwerks werden.
  • Ein Problem, dass die Performance der vNIC in einer virtualisierten Umgebung stark beeinträchtigt ist der Overhead der Speicheradressenübersetzung. Anwendungen, die auf einer VM oder VNF ausgeführt werden, tätigen Rufe zu einer virtuelle Gastadresse (GVA; guest virtual address). Das virtualisierte System, auf dem die VNF ausgeführt wird, weist eine virtualisierte Speicherbank auf, die eine adressierbare physische Gastadresse (GPA; guest physical address) bereitstellt. Die GPA wird auf eine bestimmte Region der physischen Host-Adresse (HPA; host physical address) abgebildet, oder anders ausgedrückt, der virtualisierte Host weist eine zweckgebundene Region von HPA auf, auf die seine Speicheradressen abgebildet werden. Somit kann eine Speicheroperation auf der VNF erstens eine GVA-zu-GPA-Übersetzung und zweitens eine GPA-zu-HPA-Übersetzung erfordern.
  • In einem existierenden System umfasst eine Seitentabelle (PT; page table) die GVA-zu-GPA-Abbildung (mapping). Die PT kann zu der virtuellen Maschine gehören. Eine erweiterte Seitentabelle (EPT; extended page table) weist die GPA-zu-HPA-Abbildung auf und gehört zu dem physischen Host. Sowohl die PT als auch die EPT können den Übersetzungs-Lookaside-Puffer (TLB) als inhaltsadressierbaren Speicher (CAM; content-addressable memory) verwenden, der aktuelle Speicherübersetzungen (umfassend GVA-zu-HPA-Abbildung) zwischenspeichert. Wenn eine angeforderte physische Adresse in dem TLB vorliegt, wird dies als ein TLB-Treffer (TLB hit) bezeichnet, der es ermöglicht, dass die GVA-zu-HPA-Übersetzung sehr schnell durchgeführt werden kann. Wenn eine angeforderte Adresse jedoch nicht in dem TLB vorliegt, wird dies als ein TLB-Verfehlen (TLB miss) definiert. Falls es ein Verfehlen auf dem TLB gibt, dann kann ein zweistufiges Seitentabelle-Nachschlagen oder ein „Durchlauf‟ (walk) verwendet werden, um die TLB neu zu füllen und die korrekte Adressenübersetzung bereitzustellen. Es wird darauf hingewiesen, dass in verschiedener Literatur dieser Tabellendurchlauf als ein „zweiphasiger“, „zweistufiger“ oder „zweiteiliger“ Tabellendurchlauf oder ähnlich bezeichnet werden kann. Durch diese Beschreibung hindurch können diese Begriffe als synonym betrachtet werden.
  • Obwohl die EPT optimiert ist, um den hohen Overhead eines herkömmlichen Mechanismus, wie beispielsweise einer Schatten-Seitentabelle (shadow page table), zu vermeiden, tut sie dies auf Kosten eines zusätzlichen zweistufigen Tabellendurchlaufs, wenn ein TLB-Verfehlen auftritt. Somit kann ein TLB-Verfehlen eine wesentliche Performance-Einbuße (zum Beispiel eine 4x Verschlechterung der Performance für nicht virtualisierte Fälle und eine 24x für virtualisierte Fälle) verursachen.
  • TLB-Verfehlungen können zu wichtigen Engpässen in der virtualisierten Umgebung werden, insbesondere in I/O-empfindlichen Szenarien wie NFV auf Betreiberniveau (carrier-grade NFV). Mit der erhöhten Durchsatzfähigkeit moderner NICs, die 10, 25, 50 oder 100 Gigabit Ethernet (GbE) -Kapazitäten aufweisen können, kann Speicher-abgebildete-Eingabe/Ausgabe (MMIO) -Regionszugriff für eine Durchgangsvorrichtung, wie beispielsweise eine SR-IOV VF, hochintensiv für ein Erhalten oder Festlegen von Datendeskriptoren von oder zu Sende (Tx; transmit) oder Empfangs (Rx; receive) -Hinweisen sein.
  • Gemäß Ausführungsbeispielen der vorliegenden Beschreibung kann dieser Overhead jedoch für MMIO-Zugriff auf einer Durchgangsvorrichtung gemindert werden.
  • Insbesondere kann in dem Falle eines TLB-Verfehlens die Übersetzung von GVA zu HPA einer MMIO-Region für die Durchgangsvorrichtung in einen TLB gesperrt werden, während das Gastbetriebssystem (OS; operating system) ausgeführt wird, um die schwere I/O-Performance-Einbuße bei MMIO abzuschwächen. Die Übersetzungsinformationen können dann in einer Virtuelle-Maschine-Steuerstruktur (VMCS; virtual machine control structure) hinzugefügt und durch diese einer TLB bereitgestellt werden, um die kritische Speicherregion zu sperren.
  • Diese Architektur reduziert eine Latenzzeit in dem virtualisierten Netzwerk und erhöht somit die Performance für Durchgangsnetzwerkvorrichtungen. Dies kann zu erheblichen Verbesserungen bei NFV und Cloud-artigen Anwendungen führen. Diese Lösung verbessert die Zugriffseffizienz einer MMIO-Region für eine Durchgangsvorrichtung, ohne irgendeine Abhängigkeit von modifizierten CPU-Anweisungen zu erfordern. Es wird jedoch darauf hingewiesen, dass Ausführungsbeispiele der vorliegenden Beschreibung durch neuartige CPU- oder Mikrocode-Anweisungen bereitgestellt werden könnten. Dies kann dazu beitragen, die Kosten der Lösung zu senken und gleichzeitig eine verbesserte NFV-Performance in Rechenzentren bereitzustellen.
  • Ein System und Verfahren für verbesserten Speicher-abgebildete-Eingabe/Ausgabe-(MMIO) -Regionszugriff wird nun unter genauerer Bezugnahme auf die beigefügten FIGUREN beschrieben. Es wird darauf hingewiesen, dass durch die FIGUREN hindurch bestimmte Bezugszeichen wiederholt werden können, um anzuzeigen, dass eine bestimmte Vorrichtung oder ein Block vollständig oder im Wesentlichen durch die FIGUREN hindurch konsistent ist. Dies soll jedoch nicht irgendeine bestimmte Beziehung zwischen den verschiedenen offenbarten Ausführungsbeispielen andeuten. Bei bestimmten Beispielen kann eine Gattung von Elementen durch ein bestimmtes Bezugszeichen („Widget 10“) bezeichnet werden, während auf individuelle Arten oder Beispiele der Gattung durch eine mit Bindestrich geschriebene Ziffer („erstes spezifisches Widget 10-1“ und „zweites spezifisches Widget 10-2“) Bezug genommen werden kann.
  • 1 ist ein Blockdiagramm ausgewählter Elemente eines Rechenzentrums, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • Bei dem Beispiel von 1 umfasst eine Hardware-Plattform 102 einen Virtuelle-Maschine-Manager (VMM; virtual machine manager) 104. Bei diesem Beispiel sind zwei Gäste auf der Hardware-Plattform 102 bereitgestellt, nämlich Gast A 108-1 und Gast B 108-2. Die Peripherievorrichtungen A 112-1 und B 112-2 sind in einer Durchgangskonfiguration bereitgestellt, zum Beispiel via SR-IOV, sodass Gast A 108-1 Zugriff auf Vorrichtung A 112-1 hat und GastB 108-2 direkten Zugriff auf Vorrichtung B 112-2 hat. Es wird darauf hingewiesen, dass die Vorrichtungen 112 Peripherievorrichtungen, Beschleuniger, Koprozessoren oder andere Vorrichtungen sein können, die verwendet werden können, um Gäste 108 bei dem Durchführen ihrer Funktion zu unterstützen.
  • Wie auf der rechten Seite der FIGUR dargestellt, umfasst der Host-Adressraum 130 möglicherweise nicht nur den Hauptspeicher der Hardware-Plattform 102, sondern kann auch MMIO-Regionen für Vorrichtung A und Vorrichtung B umfassen, nämlich Region 132 für Vorrichtung A und Region 136 für Vorrichtung B.
  • Wenn Gast A 108-1 bereitgestellt wird, wird ihm Gast-A-Adressraum 116 zugeordnet. Gast A-Adressraum 116 repräsentiert eine Region eines Adressraums, die einen virtuellen Hauptspeicher für Gast A umfasst, der aus dem Hauptspeicher der Hardware-Plattform 102 zugeordnet werden kann. Innerhalb des Gast-A-Adressraums 116 findet eine Vorrichtung-A-MMIO-Abbildung (mapping) aus der Perspektive von Gast A 108-1 statt. Diese entspricht der MMIO-Region 132 für Vorrichtung A. Ähnlich wird, wenn Gast B 108-2 bereitgestellt wird, ein Gast-B-Adressraum 140 zugeordnet, umfassend eine Vorrichtung-B-MMIO 142 aus der Perspektive von Gast B 108-2. Diese bildet auf der MMIO-Region 136 für Vorrichtung B ab.
  • Sobald Abbildungen zwischen jeweils den MMIO-Regionen 120 und 132 und den MMIO-Regionen 142 und 136 etabliert sind, können diese Abbildungen konstant bleiben, während die Gäste 108 aktiv bleiben.
  • In bestimmten existierenden Systemen kann dem Gast A 108-1 eine Seitentabelle 118 zugeordnet sein und sie kann zu diesem gehören. Die Seitentabelle 118 umfasst GVA-zu-GP A - Abbildung.
  • Ähnlich kann die Hardware-Plattform 102 eine EPT 134 umfassen, die GPA-zu-HPA-Abbildung aufweist. Ein TLB kann auch für sowohl PT als auch EPT 134 bereitgestellt sein, dann wird die kombinierte Abbildung (map) von GVA zu HPA, auf die kürzlich zugegriffen wurde, zwischengespeichert. Wie bei einem Speicher-Zwischenspeicher (memory cache) können jedoch Einträge aus dem TLB ausgeschlossen werden, und ein TLB-Verfehlen kann zu einem Seitendurchlauf für die GVA-zu-GPA-Abbildung führen.
  • In dieser Konfiguration kann in dem Fall eines TLB-Verfehlens für einen Zugriff auf eine Durchgangsvorrichtung 112 ein zweiphasiger Seitendurchlauf verwendet werden, nämlich ein Seitendurchlauf von PT 118 für GVA-zu-GPA-Abbildung, sowie ein Seitendurchlauf von EPT 134 für die GPA-zu-HPA-Abbildung. Ein solches TLB-Verfehlen kann ein sehr teurer Nachteil für einen Zugriff auf eine Durchgangsvorrichtung 112 sein. In einer VM kann der Nachteil für einen zweiphasigen Seitendurchlauf exponentiell erhöht sein.
  • Um den Aufwand eines solchen TLB-Verfehlens zu mindern, führt die vorliegende Beschreibung einen TLB-Sperrungs- und -Entsperrungsmechanismus ein, wobei bestimmte MMIO-Abbildungen bei Eintritt in eine VM gesperrt werden, und erst bei Austritt nach Plan aus der VM entsperrt werden. Insbesondere können Übersetzungen von GVA zu HPA in einem TLB für die MMIO-Region gesperrt werden, um TLB-Verfehlungen zu verhindern, sobald der Gast 108 für die Ausführung eingeplant wurde. Diese Einträge werden freigeschaltet, wenn der Gast nach Plan die belegten Einträge in dem TLB freigeben soll.
  • Um diese neue Architektur zu realisieren, werden zwei Elemente eingeführt. Zunächst wird ein modifizierter TLB eingeführt, der eine direkte GVA-zu-HPA-Abbildung sperren kann, die zu einem Gast 108 gehört. Diese gesperrten Abbildungen können spezifisch für eine MMIO-Region für eine Vorrichtung 112 sein, und bei einigen Beispielen kann eine heterogene Struktur bereitgestellt sein, wobei ein TLB speziell für die MMIO-Region für die Durchgangsvorrichtung gesperrten Einträgen zugeordnet ist. Andere Speicherabbildungen bleiben möglicherweise nicht gesperrt. Es wird darauf hingewiesen, dass die GPA bestimmt wird, wenn der Gast sein BAR einrichtet, aber die GVA wird nur bestimmt, wenn der Gast versucht, mit dieser GVA auf eine Region (wie beispielsweise eine MMIO) -Region zuzugreifen. Wenn ein Gastzugriff auf die MMIO-Region erfolgt, kann ein Seitenfehler (page fault) resultieren, und der Host kann dann die GVA-zu-GPA-Abbildung aus der PT des Gastes finden. Somit kann an diesem Punkt GVA-zu-HPA-Abbildung bestimmt werden.
  • Das zweite Element eines Bereitstellens des verbesserten TLB ist ein Verfahren zum Manipulieren eines TLB, während der Gast mit seiner Durchgangsvorrichtung ausgeführt wird, kombiniert mit Erweiterungen der Virtuelle-Maschine-Steuerstruktur (VMCS).
  • Bei einem Ausführungsbeispiel können Informationen zu direkter GVA-zu-HPA-Übersetzung gesammelt werden, wenn die Durchgangsvorrichtung 112 durch den Gast 108 für Basisadressregister (BAR; base address register) -Konfiguration und erstmaligen MMIO-Region-Zugriff gezählt wird. Somit wird die Abbildung von GVA zu HPA einer MMIO-Region für eine Durchgangsvorrichtung 112 aus einer Vorrichtungszählung bestimmt und ist konstant. Es muss keine andere VM oder kein VMM beteiligt sein, da die Durchgangsvorrichtung 112 dem Gast 108 zugeordnet und für diesen zweckgebunden wurde.
  • 2 ist ein Blockdiagramm, das ausgewählte Elemente einer erweiterten VMCS 204 darstellt, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung.
  • Die modifizierte VMCS 204 kann die Fähigkeit bereitstellen, TLB-Einträge während VM-Zeitplanung zu sperren. Das bereitgestellte Verfahren kann eine hardwaregestützte Technik, kombiniert mit der VMCS sein.
  • Die VMCS 204 weist als darstellendes und nicht einschränkendes Beispiel existierende VMCS-Felder auf, wie beispielsweise VIRTUAL _PROCESSOR_ID, POSTED INTR NV und HOST_RIP.
  • Die VMCS 204 weist auch erweiterte VMCS-Felder auf, umfassend, zum Beispiel VM_LOCK_TLB_NR, VM LOCK TLB ARRAY ADDR und VM LOCK _TLB ARRAY ADDR HIGH.
  • Das Feld VM_LOCK_TLB_NR repräsentiert die Anzahl von TLB-Sperreinträgen, die in der vorliegenden Instanz bereitgestellt sind. VM_LOCK _TLB _ARRAY _ADDR ist ein Zeiger auf eine Position in dem Speicher, wo das TLB-Sperr-Array 208 beginnt. Somit folgen, ausgehend von VM_LOCKTLB _ARRAY_ ADDR, VM_LOCK TLB _NR Einträge, wobei jeder Eintrag eine gesperrte direkte GVA-zu-HPA-Übersetzung bereitstellt. Da diese Einträge gesperrt sind, werden sie niemals ausgeschlossen, solange die Sperre besteht. Bei einigen Ausführungsbeispielen wird die Sperre eingerichtet, wenn der Gast bereitgestellt wird und die Durchgangsvorrichtung gezählt wird, und die Sperre wird nicht aufgehoben, bis die VM aufgrund des Endes des Lebenszyklus beendet wird oder austritt, um den logischen Kern an andere VMs abzugeben.
  • Das neue Feld VM_LOCK­_TLB_ARRAY_ADDR_HIGH kann ein Flag oder eine andere Datenstruktur sein, die anzeigt, dass für ein 64-Bit-System die oberen 32 Bit der VM-TLB-Sperradresse verwendet werden sollten.
  • Jedes Element in dem TLB-Sperr-Array 208 weist eine direkte GVA-zu-HPA-Übersetzung auf, die gesperrt wird, wenn der VMCS des Gastes in einen bestimmten Logikkern geladen wird.
  • 3 stellt ein Beispiel eines sperrenden TLB gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung dar. Wenn ein Gast, wie beispielsweise eine virtuelle Maschine oder VNF, zugeordnet wird, kann die Gast-VMCS 304, umfassend geeignete Erweiterungen, wie diese, die in 2 dargestellt sind, verwendet werden, um den TLB 308 zuzuordnen. Wie in 2 dargestellt, umfasst der TLB 308 eine Mehrzahl von direkten GVA-zu-HPA-Abbildungen, die insbesondere auf eine MMIO-Region für eine Durchgangsvorrichtung ausgerichtet sein können. Bei der Einrichtung von GVA zu HPA werden die Einträge in dem TLB 308 als Teil einer Einplanung für den Logikkern 312 gesperrt.
  • Der Logikkern 312 führt dann einige Zeit lang seine virtualisierte Funktion oder Gastfunktion aus. Während der Logikkern 312 seine Funktion bereitstellt, werden die MMIO-Einträge nie aus dem TLB 308 ausgeschlossen, da sie in dem TLB 308 gesperrt sind, weswegen es niemals eine Instanz eines TLB-Verfehlens für diese MMIO-Einträge gibt, und somit gibt es keine Notwendigkeit für einen teuren zweiphasigen Seitendurchlauf für Speicherzugriffe auf die Durchgangsvorrichtung.
  • Schließlich kann der Logikkern 312 ein Austrittsereignis empfangen, was zum Beispiel bedeutet, dass der Gast zumindest zeitweise die Durchgangsvorrichtung nicht verwenden wird oder darauf zugreifen wird.
  • Nach dem Austritt entsperrt der Logikkern 312 die MMIO-Region des TLB 308 und die Steuerung geht zurück an den VMM.
  • Falls anders angegeben, tritt TLB-Sperren automatisch auf, von der VMCS, nach Abfertigen. Ein Entsperren erfolgt automatisch von der VMCS, sobald ein Austausch erfolgt.
  • Mit der TLB-Sperr- und VMCS-Fähigkeit der vorliegenden Beschreibung werden Übersetzungen der MMIO-Region einer Durchgangsvorrichtung geladen und automatisch in den TLB gesperrt, wenn der Gast nach Plan ausgeführt werden soll und seine VMCS an einen Logikkern angewendet wird.
  • Die Abbildung zwischen GVA und HPA der MMIO-Region für eine Durchgangsvorrichtung kann direkt von dem TLB erhalten werden, wobei keine Notwendigkeit besteht, auf PT und EPT von einem DRAM mit dem hohen Overhead eines zweiphasigen Seitendurchlaufs in der Virtualisierungsumgebung zuzugreifen.
  • Die TLB MMIO-Region ist gesperrt während der Gast ausgeführt wird, so dass dieser Abschnitt des TLB nicht aus dem TLB heraus ausgetauscht wird, bis der Gast austritt. Es wird darauf hingewiesen, dass dieses Ausführungsbeispiel begrenzte TLB-Einträge verwendet, da jede GVA abgebildet wird, zum Beispiel standardmäßig auf eine 4 kB physische Speicherseite. Dieser begrenzte Verbrauch von TLB-Einträgen stellt jedoch eine deutliche Verbesserung für MMIO-Regionszugriff einer Durchgangsvorrichtung bereit.
  • 4 ist ein Blockdiagramm, das gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung Durchgangszugriff darstellt. Das Verfahren von 4 stellt speziell ein Verfahren zum Vermeiden des zweistufigen Seitendurchlaufs-Nachteils für TLB-Übersetzungen dar, um direkt von der VM auf eine MMIO-Region einer VF zuzugreifen.
  • Wie in 4 dargestellt, kann eine Verwendung der offenbarten Architektur, um auf virtuelle I/O-Vorrichtungen (z.B. via SR-IOV VF) zuzugreifen, manchmal sogar bessere Performance bereitstellen als in einer direkten Hardware-Umgebung. Dies stellt intensiven MMIO-Zugriff mit niedriger Latenzzeit und Paketweiterleitung mit hohem Durchsatz bereit, was für Telekommunikations-NFVs wertvoll sein kann, wie beispielsweise eine virtuelle Firewall, die auf einer VM mit einer SR-IOV vNIC basiert.
  • Zum Beispiel umfasst in 4 eine VMCS 404 VMCS-Erweiterungen 408. Unter Verwendung der VMCS-Erweiterungen 408 ordnet der logische Kern 416 einen TLB 412 zu, der eine MMIO-Regionsabbildung aufweist. Die MMIO-Regionsabbildung weist eine direkte GVA-zu-HPA-Abbildung für die MMIO-Regionen auf. Abbildungsinformationen aus der VMCS werden in den TLB 412 gesperrt, um direkt auf die MMIO-Region zuzugreifen.
  • Intensiver MMIO-Zugriff in der Datenebene-VNF kann durch eine vNIC 424 bereitgestellt werden, die Funktionen wie beispielsweise virtuelle Firewall (vFW; virtual firewall), virtueller Router (vRouter; virtual router), virtueller entwickelter Paketkern (vEPC; virtual evolved packet core) oder ähnliches aufweisen kann.
  • Die vNIC 424 stellt einen Durchgangszugriff bereit, umgeht einen Hypervisor 430 und greift auf die MMIO-Regionsabbildung zu. Die MMIO-Regionsabbildung kann Sende-Hinweise (TXQs; transmit cues) und Empfangs-Hinweise (RXQs; receive cues) mit Sendezielen und Empfangszielen aufweisen. Innerhalb der MMIO-Region 440 weist die MMIO-Regionsabbildung des TLB 412 eine direkte GVA-zu-HPA-Abbildung auf. Somit kann der logische Kern 416 direkt auf die MMIO-Region 440 zugreifen, ohne Speicher 450 für die Übersetzung von PT und EPT abzurufen.
  • Dies vermeidet einen zweiphasigen Seitendurchlauf in dem Speicher 450 in dem Falle eines TLB-Verfehlens. Ein solcher zweiphasiger Seitendurchlauf kann im Gegensatz zu einem nativen TLB-Verfehlen einen bis zu 5-maligen Nachteil verursachen, oder einen 24-maligen bei einem direkten TLB-Treffer unter einer Virtualisierungsumgebung. Ein Seitendurchlauf kann es erfordern, die HPA aus einer Seitentabelle in dem Speicher 450 holen, und dann die GVA-zu-GPA- und GPA-zu-HPA-Abbildung neu zu bauen.
  • 5 ist ein Flussdiagramm eines Verfahrens 500, das gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung ausgeführt werden kann.
  • Bei Block 504 startet ein Gast oder er ist zur Ausführung vorgesehen.
  • Bei Block 508 wurde dem Gast eine Durchgangsvorrichtung zugeordnet, und der Gast zählt die Durchgangsvorrichtung. Nach der Zählung wird die GPA-zu-HPA-Abbildung etabliert. GVA-zu-GPA-Abbildung wird nach dem ersten MMIO-Regionszugriff etabliert.
  • Bei Block 512 kann der Gast-Host eine erweiterte VMCS verwenden, um einen TLB mit einer MMIO-Region zu bauen, wobei die MMIO-Region eine direkte GVA-zu-HPA-Abbildung für die Durchgangsvorrichtung umfasst. Es wird darauf hingewiesen, dass der TLB auch andere Einträge aufweisen kann, die traditionellere GVA-zu-nur-HPA-Abbildungen aufweisen können, und die gemäß üblichen Ausschlussregeln einem Ausschluss unterliegen können.
  • Bei Block 516 sperrt der Gast die MMIO-Region-Einträge.
  • Bei Block 520 führt der Gast-Host seine Arbeit aus, die Zugriff mit hohem Durchsatz und niedriger Latenzzeit auf die Durchgangsvorrichtung umfassen kann, was so lange andauern kann wie der Gast-Host seine Funktion ausführt. Da die MMIO-Regionseinträge in dem TLB gesperrt sind, werden diese nicht aus dem TLB ausgeschlossen.
  • In Block 524 tritt der Gast aus, was umfassen kann, dass der Gast zur Beendigung eingeplant oder ausgetauscht wird, sodass ein anderer Gast den Logikkern nutzen kann. Folglich wird der Gast die Durchgangsvorrichtung vorübergehend oder permanent nicht manipulieren.
  • Nachdem der Gast ausgetreten ist, schaltet der Gast bei Block 518 die MMIO-Region-Einträge in dem TLB frei. Diese Einträge unterliegen nun einem Ausschluss gemäß üblichen Regeln, und entweder gibt der Gast den Logikkern an benachbarte VMs ab, oder der Gast selbst wird beendet.
  • 6 ist ein Blockdiagramm ausgewählter Komponenten eines Rechenzentrums mit Konnektivität zu einem Netzwerk 600 eines Cloud-Dienstanbieters (CSP; cloud service provider) 602, gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Der CSP 602 kann, als nicht einschränkendes Beispiel, ein traditionelles Unternehmensrechenzentrum, eine „private Cloud“ (private cloud) eines Unternehmens oder eine „öffentliche Cloud“ (public cloud) sein, das/die Dienste wie beispielsweise Infrastruktur als Dienst (IaaS; infrastructure as a service), Plattform als Dienst (PaaS; platform as a service) oder Software als Dienst (SaaS; software as a service) bereitstellt. In einigen Fällen kann CSP 602 anstelle von oder zusätzlich zu Cloud-Diensten Hoch-Performance-Rechen (HPC; high performance computing) -Plattformen oder -Dienste bereitstellen. Tatsächlich können HPC-Cluster („Supercomputer“), obgleich nicht ausdrücklich identisch, strukturell ähnlich zu Cloud-Rechenzentren sein, und außer und abgesehen davon, wo dies ausdrücklich angegeben ist, können die Lehren dieser Beschreibung auf beide angewandt werden.
  • Der CSP 602 kann eine Anzahl von Arbeitslast-Clustern 618 bereitstellen, die Cluster aus individuellen Servern, Blade-Servern, Rack-befestigten Servern (rackmount servers) oder irgendeiner anderen geeigneten Server-Topologie sein können. Bei diesem darstellenden Beispiel sind zwei Arbeitslast-Cluster 618-1 und 618-2 gezeigt, wobei jedes Rack-befestigte Server 646 in einem Gehäuse 648 bereitstellt.
  • In dieser Darstellung sind die Arbeitslast-Cluster 618 als modulare Arbeitslast-Cluster gezeigt, die dem Rack-Einheit („U“) -Standard entsprechen, in dem ein Standard-Rack mit einer Breite von 19 Zoll so gebaut werden kann, dass es jeweils 42 Einheiten (42U) aufnimmt, wobei jede 1.75 Zoll hoch und ungefähr 36 Zoll tief ist. In diesem Fall können Rechenressourcen wie beispielsweise Prozessoren, Speicher, Speicherung, Beschleuniger und Schalter in einige mehrere Rack-Einheiten von eins bis 42 passen.
  • Jeder Server 646 kann ein eigenständiges Betriebssystem hosten und eine Serverfunktion bereitstellen, oder Server können virtualisiert sein, in welchem Fall sie unter der Kontrolle eines Virtuelle-Maschine-Managers (VMM), Hypervisors und/oder Orchestrators sein können, und eine oder mehrere virtuelle Maschinen, virtuelle Server oder virtuelle Anwendungen hosten können. Diese Server-Racks können in einem einzigen Rechenzentrum zusammen positioniert sein oder sie können in unterschiedlichen geografischen Rechenzentren untergebracht sein. Je nach den vertraglichen Vereinbarungen können einige Server 646 speziell für bestimmte Unternehmenskunden oder -Mandanten zweckgebunden sein, während andere gemeinschaftlich verwendet werden können.
  • Die verschiedenen Vorrichtungen in einem Rechenzentrum können über eine Schaltstruktur (switching fabric) 670 miteinander verbunden sein, die eine oder mehrere Hochgeschwindigkeits-Routing- und/oder Schaltvorrichtungen umfassen kann. Die Schaltstruktur 670 kann sowohl „Nord-Süd“-Verkehr (z.B. Verkehr zu und von dem Weitbereichsnetzwerk (WAN; wide area network), wie beispielsweise dem Internet) als auch „Ost-West“-Verkehr (z.B. Verkehr durch das Rechenzentrum) bereitstellen. Historisch gesehen machte Nord-Süd-Verkehr den Bulk des Netzwerkverkehrs aus, aber da Webdienste zunehmend komplizierter und verteilter werden, ist das Volumen von Ost-West-Verkehr gestiegen. In vielen Rechenzentren macht Ost-West-Verkehr gegenwärtig den Großteil des Verkehrs aus.
  • Ferner kann mit dem Ansteigen der Fähigkeit jedes Servers 646 das Verkehrsvolumen ferner ansteigen. Beispielsweise kann jeder Server 646 mehrere Prozessor-Slots bereitstellen, wobei jeder Slot einen Prozessor mit vier bis acht Kernen sowie ausreichend Speicher für die Kerne aufnimmt. Somit kann jeder Server eine Anzahl von VMs hosten, von denen jede ihren eigenen Verkehr erzeugt.
  • Um das große Verkehrsvolumen in einem Rechenzentrum zu bewältigen, kann eine sehr fähige Schaltstruktur 670 bereitgestellt werden. Die Schaltstruktur 670 ist in diesem Beispiel als ein „flaches“ Netzwerk dargestellt, wobei jeder Server 646 eine direkte Verbindung zu einem Oben-auf-dem-Rack (ToR; top-of-rack) -Schalter 620 (z.B. eine „Stern“-Konfiguration) aufweisen kann und jeder ToR-Schalter 620 mit einem Kern-Schalter 630 koppeln kann. Diese zweistufige flache Netzwerkarchitektur ist nur als ein darstellendes Beispiel gezeigt. Bei anderen Beispielen können andere Architekturen verwendet werden, wie beispielsweise dreistufige Stern- oder Leaf-Spine- (auch „fat tree“-Topologien genannt), die auf der „Clos“-Architektur basieren, Hub-and-Spoke-Topologien, Mesh-Topologien, Ring-Topologien, oder 3D-Mesh-Topologien, als nicht einschränkendes Beispiel.
  • Die Struktur selbst kann durch irgendeine geeignete Verbindung bereitgestellt werden. Zum Beispiel kann jeder Server 646 eine Intel® Host Fabric Interface (HFI), eine Netzwerkschnittstellenkarte (NIC), einen Host-Kanaladapter (HCA; host channel adapter) oder eine andere Host-Schnittstelle aufweisen. Der Einfachheit und Einheitlichkeit halber können diese in dieser Beschreibung durchgängig als eine „Host-Struktur-Schnittstelle“ (HFI; host fabric interface) bezeichnet werden, die breit als eine Schnittstelle zum kommunikativen Koppeln des Hosts mit der Rechenzentrumsstruktur ausgelegt werden sollte. Die HFI kann mit einem oder mehreren Host-Prozessoren über eine Verbindung oder einen Bus, wie beispielsweise PCI, PCIe oder ähnlich, koppeln. In einigen Fällen kann dieser Verbindungs-Bus zusammen mit anderen „lokalen“ Verbindungen (z.B. Kern-zu-Kern (core-to-core) Ultra Path Interconnect) als Teil der Struktur 670 betrachtet werden. Bei anderen Ausführungsbeispielen kann die UPI (oder andere lokale kohärente Verbindung) als Teil der sicheren Domäne des Prozessorkomplexes und somit nicht als Teil der Struktur behandelt werden.
  • Die Verbindungstechnologie kann durch eine einzelne Verbindung oder eine Hybridverbindung bereitgestellt werden, wie beispielsweise wo PCIe Auf-Chip-Kommunikation bereitstellt, 1Gb- oder lOGb-Kupfer-Ethernet relativ kurze Verbindungen zu einem ToR-Schalter 629 bereitstellt, und optische Verkabelung relativ längere Verbindungen zu dem Kern-Schalter 630 bereitstellt. Verbindungstechnologien, die in dem Rechenzentrum zu finden sind, umfassen als nicht einschränkendes Beispiel Intel® Omni-Path™ Architecture (OPA), TrueScale™, Ultra Path Interconnect (UPI) (früher bezeichnet als QPI oder KTI), FibreChannel, Ethernet, FibreChannel over Ethernet (FCoE), InfiniBand, PCI, PCIe, oder Glasfaser, um nur einige zu nennen. Die Struktur kann zwischenspeicher- oder speicherkohärent, zwischenspeicher- und speicher-nicht-kohärent oder ein Hybrid aus kohärenten und nicht-kohärenten Verbindungen sein. Einige Verbindungen sind für bestimmte Zwecke oder Funktionen beliebter als andere, und ein Auswählen einer geeigneten Struktur für die sofortige Anwendung ist eine Übung gewöhnlichen Geschicks. Beispielsweise werden OPA und Infiniband gewöhnlich in Hoch-Performance-Rechen (HPC; high-performance computing) -Anwendungen verwendet, während Ethernet und FibreChannel in Cloud-Rechenzentren beliebter sind. Aber diese Beispiele sind ausdrücklich nicht einschränkend, und mit der Weiterentwicklung von Rechenzentren entwickeln sich auch die Strukturtechnologien auf ähnliche Weise weiter.
  • Es wird darauf hingewiesen, dass, obwohl hierin hochwertige Strukturen wie beispielsweise OPA darstellend bereitgestellt sind, die Struktur 670 allgemeiner irgendeine geeignete Verbindung oder ein Bus für die bestimmte Anwendung sein kann. Dies könnte in einigen Fällen Legacy-Verbindungen wie lokale Netzwerke (LANs, local area networks), Token-Ring-Netzwerke, synchrone optische Netzwerke (SONET; synchronous optical networks), Asynchroner-Übertragungsmodus (ATM; asynchronous transfer mode) -Netzwerke, drahtlose Netzwerke wie beispielsweise WiFi und Bluetooth, „Plain Old Telephone System (einfacher alter Telefondienst)“ (POTS)-Verbindungen oder Ähnliches umfassen. Es wird auch ausdrücklich davon ausgegangen, dass in der Zukunft neue Netzwerktechnologien entstehen werden, die einige der hier aufgeführten ergänzen oder ersetzen, und dass irgendwelche solcher zukünftigen Netzwerktopologien und -technologien ein Teil der Struktur 670 sein oder einen solchen bilden können.
  • Bei bestimmten Ausführungsbeispielen kann die Struktur 670 Kommunikationsdienste auf verschiedenen „Schichten (Layers)“ bereitstellen, wie ursprünglich in dem siebenschichtigen Open Systems Interconnection (OSI) -Netzwerkmodell beschrieben wurde. In der heutigen Praxis wird das OSI-Modell nicht strikt befolgt. Im Allgemeinen werden die Schichten 1 und 2 oft als die „Ethernet“-Schicht bezeichnet (obwohl in einigen Rechenzentren oder Supercomputern Ethernet durch neuere Technologien ersetzt oder ergänzt sein kann). Die Schichten 3 und 4 werden oft als die Transmission Control Protocol/Internet Protocol (TCP/IP) -Layer bezeichnet (die weiter in TCP- und IP-Layers unterteilt sein kann). Die Schichten 5-7 können als die „Application Layer“ bezeichnet werden. Diese Schichtdefinitionen werden als ein nützliches Rahmenwerk offenbart, sollen aber nicht einschränkend sein.
  • 7 ist ein Blockdiagramm einer Endnutzer-Rechenvorrichtung 700 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Wie oben kann die Rechenvorrichtung 700 je nach Eignung, Cloud-Dienste, Hoch-Performance-Rechnen, Telekommunikationsdienste, Unternehmensrechenzentrumsdienste oder andere Rechendienste bereitstellen, die von einer Rechenvorrichtung 700 profitieren.
  • Bei diesem Beispiel ist eine Struktur 770 bereitgestellt, um verschiedene Aspekte der Rechenvorrichtung 700 zu verbinden. Die Struktur 770 kann die gleiche sein wie die Struktur 670 aus 6 oder sie kann eine unterschiedliche Struktur sein. Wie oben kann die Struktur 770 durch irgendeine geeignete Verbindungstechnologie bereitgestellt werden. Bei diesem Beispiel wird Intel® Omni-Path™ als darstellendes und nicht einschränkendes Beispiel verwendet.
  • Wie dargestellt ist, umfasst die Rechenvorrichtung 700 eine Anzahl von Logikelementen, die eine Mehrzahl von Knoten bilden. Es versteht sich, dass jeder Knoten durch einen physischen Server, eine Gruppe von Servern oder andere Hardware bereitgestellt sein kann. Jeder Server kann je nachdem, wie es für seine Anwendung geeignet ist, eine oder mehrere virtuelle Maschinen ausführen.
  • Der Knoten 0 708 ist ein Verarbeitungsknoten, der einen Prozessorsockel 0 und einem Prozessorsockel 1 umfasst. Die Prozessoren können zum Beispiel Intel® Xeon™ Prozessoren mit einer Mehrzahl von Kernen sein, wie beispielsweise 4 oder 8 Kerne. Der Knoten 0 708 kann ausgebildet sein, um Netzwerk- oder Arbeitslastfunktionen bereitzustellen, wie beispielsweise durch Hosten einer Mehrzahl von virtuellen Maschinen oder virtuellen Anwendungen.
  • Onboard-Kommunikation zwischen dem Prozessorsockel 0 und dem Prozessorsockel 1 kann durch einen Onboard-Uplink 778 bereitgestellt sein. Dies kann eine sehr schnelle Verbindung von kurzer Länge zwischen den zwei Prozessorsockeln bereitstellen, sodass virtuelle Maschinen, die auf dem Knoten 0 708 ausgeführt werden miteinander mit sehr hohen Geschwindigkeiten kommunizieren können. Um diese Kommunikation zu ermöglichen, kann ein virtueller Schalter (vSwitch) auf Knoten 0 708 bereitgestellt sein, der als Teil der Struktur 770 betrachtet werden kann.
  • Der Knoten 0 708 ist über eine HFI 772 mit der Struktur 770 verbunden. Die HFI 772 kann sich mit einer Intel® Omni-Path™-Struktur verbinden. Bei einigen Beispielen kann eine Kommunikation mit der Struktur 770 getunnelt sein, wie beispielsweise durch Bereitstellen von UPI-Tunnelung über Omni-Path™.
  • Da die Rechenvorrichtung 700 viele Funktionen, die in früheren Generationen onboard bereitgestellt wurden, auf eine verteilte Weise bereitstellen kann, kann eine hochfähige HFI 772 bereitgestellt sein. Die HFI 772 kann mit Geschwindigkeiten von mehreren Gigabit pro Sekunde arbeiten und kann in einigen Fällen eng mit Knoten 0 708 gekoppelt sein. Zum Beispiel ist die Logik für die HFI 772 bei einigen Ausführungsbeispielen direkt mit den Prozessoren auf einem System-auf-einem-Chip integriert. Dies stellt Kommunikation mit sehr hoher Geschwindigkeit zwischen der HFI 772 und den Prozessorsockeln bereit, ohne dass intermediäre Bus-Bauelemente benötigt werden, die zusätzliche Latenzzeit in die Struktur einbringen können. Dies soll jedoch nicht andeuten, dass Ausführungsbeispiele, bei denen HFI 772 über einen traditionellen Bus bereitgestellt wird, ausgeschlossen werden sollen. Vielmehr wird ausdrücklich erwartet, dass bei einigen Beispielen HFI 772 auf einem Bus bereitgestellt sein kann, wie beispielsweise einem PCIe-Bus, der eine serialisierte Version von PCI ist, was höhere Geschwindigkeiten als herkömmliche PCI bereitstellt. Durch die Rechenvorrichtung 700 hindurch können verschiedene Knoten unterschiedliche Arten von HFIs 772 bereitstellen, wie beispielsweise Onboard-HFIs und Plug-in-HFIs. Es wird auch darauf hingewiesen, dass bestimmte Blöcke in einem System auf einem Chip als Geistige-Eigentums (IP; intellectual property) -Blöcke bereitgestellt sein können, die als eine modulare Einheit in eine integrierte Schaltung „fallengelassen“ werden können. Somit kann die HFI 772 in einigen Fällen aus einem solchen IP-Block hergeleitet werden.
  • Es wird darauf hingewiesen, dass gemäß der „Das-Netzwerk-ist-die-Vorrichtung“-Art, der Knoten 0 708 möglicherweise begrenzten oder keinen Onboard-Speicher oder - Speicherung bereitstellt. Vielmehr kann sich der Knoten 0 708 primär auf verteilte Dienste stützen, wie beispielsweise einen Speicherserver und einen vernetzten Speicherungsserver. Onboard stellt der Knoten 0 708 möglicherweise nur ausreichend Speicher und Speicherung zur Verfügung, um die Vorrichtung zu bootstrappen und sie dazu zu bringen, mit der Struktur 770 zu kommunizieren. Diese Art von verteilter Architektur ist aufgrund der sehr hohen Geschwindigkeiten von heutigen Rechenzentren möglich und kann vorteilhaft sein, weil keine Notwendigkeit besteht, jedem Knoten übermäßig viele Ressourcen bereitzustellen. Vielmehr kann ein großer Pool von Hochgeschwindigkeits- oder spezialisiertem Speicher dynamisch zwischen einer Anzahl von Knoten bereitgestellt sein, sodass jeder Knoten Zugriff auf einen großen Pool von Ressourcen hat, aber diese Ressourcen bleiben nicht ungenutzt, wenn dieser bestimmte Knoten sie nicht benötigt.
  • Bei diesem Beispiel stellen ein Knoten-1-Speicherserver 704 und ein Knoten-2-Speicherungsserver 710 den Betriebsspeicher und die Speicherungsfähigkeiten von Knoten 0 708 bereit. Zum Beispiel kann ein Speicherserverknoten 1 704 entfernten Direktspeicherzugriff (RDMA; remote direct memory access) bereitstellen, wobei der Knoten 0 708 via die Struktur 770 auf Speicherressourcen auf Knoten 1 704 auf eine Direkt-Speicher-Zugriffs-Weise zugreifen kann, ähnlich dazu, wie er auf seinen eigenen Onboard-Speicher zugreifen würde. Der durch den Speicherserver 704 bereitgestellte Speicher kann traditioneller Speicher sein, wie beispielsweise Double Data Rate Type 3 (DDR3), dynamischer Direktzugriffsspeicher (DRAM; dynamic random access memory), der flüchtig ist, oder kann ein exotischerer Speichertyp sein, wie beispielsweise ein dauerhafter schneller Speicher (PFM; persistent fast memory), wie beispielsweise Intel® 3D Crosspoint™ (3DXP), der mit DRAM-ähnlichen Geschwindigkeiten arbeitet, aber nicht flüchtig ist.
  • Ähnlich kann, anstatt dass für Knoten 0 708 eine Onboard-Festplatte bereitgestellt wird, ein Speicherungsserver-Knoten 2 710 bereitgestellt werden. Der Speicherungsserver 710 kann ein vernetztes Plattenbündel (NBOD; networked bunch of disks), PFM, ein redundantes Array aus unabhängigen Platten (RAID; redundant array of independent disks), ein redundantes Array aus unabhängigen Knoten (RAIN; redundant array of independent nodes), Network Attached Storage (NAS), optische Speicherung, Bandlaufwerke oder andere nichtflüchtige Speicherlösungen bereitstellen.
  • Somit kann Knoten 0 708 bei dem Ausführen seiner zweckgebundenen Funktion von dem Speicherserver 704 auf einen Speicher zugreifen und Ergebnisse auf der Speicherung speichern, die durch den Speicherungsserver 710 bereitgestellt wurde. Jede dieser Vorrichtungen koppelt mit der Struktur 770 über eine HFI 772, was schnelle Kommunikation bereitstellt, die diese Technologien ermöglicht.
  • Zur weiteren Veranschaulichung ist auch der Knoten 3 706 abgebildet. Knoten 3 706 umfasst auch eine HFI 772, zusammen mit zwei Prozessorsockeln, die intern durch einen Uplink verbunden sind. Im Gegensatz zu Knoten 0 708 umfasst Knoten 3 706 jedoch seinen eigenen Onboard-Speicher 722 und -Speicherung 750. Somit kann der Knoten 3 706 ausgebildet sein, um seine Funktionen primär onboard auszuführen, und es ist möglicherweise nicht notwendig, dass er sich auf den Speicherserver 704 und den Speicherungsserver 710 verlässt. Unter geeigneten Umständen kann der Knoten 3 706 jedoch seinen eigenen Onboard-Speicher 722 und -Speicherung 750 mit verteilten Ressourcen ergänzen, ähnlich wie Knoten 0 708.
  • Die Rechenvorrichtung 700 kann auch die Beschleuniger 730 umfassen. Diese können verschiedene beschleunigte Funktionen bereitstellen, umfassend Hardware- oder Koprozessorbeschleunigung für Funktionen wie beispielsweise Paketverarbeitung, Verschlüsselung, Entschlüsselung, Komprimierung, Dekomprimierung, Netzwerksicherheit oder andere beschleunigte Funktionen in dem Rechenzentrum. Bei einigen Beispielen können die Beschleuniger 730 Deep-Learning-Beschleuniger umfassen, die direkt an einen oder mehrere Kerne in Knoten wie beispielsweise Knoten 0 708 oder Knoten 3 706 angebracht werden können. Beispiele für solche Beschleuniger können, als nicht einschränkendes Beispiel, Intel® QuickData Technology (QDT), Intel® QuickAssist Technology (QAT), Intel® Direct Cache Access (DCA), Intel® Extended Message Signaled Interrupt (MSI-X), Intel® Receive Side Coalescing (RSC) und andere Beschleunigungstechnologien umfassen.
  • Bei anderen Ausführungsbeispielen könnte ein Beschleuniger auch als anwendungsspezifische integrierte Schaltung (ASIC; Application Specific Integrated Circuit), feld-programmierbares Gate-Array (FPGA; Field-Programmable Gate Array), Koprozessor, Graphikverarbeitungseinheit (GPU; graphics processing unit), Digitalsignalprozessor (DSP; digital signal processor) oder andere Verarbeitungseinheit bereitgestellt sein, die optional abgestimmt oder ausgebildet zum Bereitstellen der Beschleunigerfunktion sein kann.
  • Der Grundbaustein der verschiedenen hierin offenbarten Komponenten kann als „Logikelemente“ bezeichnet werden. Logikelemente können Hardware (umfassend, zum Beispiel, einen softwareprogrammierbaren Prozessor, eine ASIC oder ein FPGA), externe Hardware (digital, analog oder gemischtes Signal), Software, reziprokierende Software, Dienste, Treiber, Schnittstellen, Komponenten, Module, Algorithmen, Sensoren, Komponenten, Firmware, Mikrocode, programmierbare Logik oder Objekte, die koordinieren können, um eine logische Operation zu erreichen, umfassen. Ferner sind einige Logikelemente durch ein greifbares, nichtflüchtiges computerlesbares Medium bereitgestellt, das darauf gespeichert ausführbare Anweisungen für ein Anweisen eines Prozessors, eine bestimmte Aufgabe auszuführen, aufweist. Ein solches nichtflüchtiges Medium könnte zum Beispiel eine Festplatte, einen Festkörper (solid state) -Speicher oder -Platte, Nur-Lese-Speicher (ROM; read-only memory), dauerhaften schnellen Speicher (PFM) (z.B. Intel® 3D Crosspoint™), externen Speicher, ein redundantes Array aus unabhängigen Platten (RAID), ein redundantes Array aus unabhängigen Knoten (RAIN), Network-Attached Storage (NAS), optischen Speicher, ein Bandlaufwerk, ein Backup-System, Cloud-Speicher oder irgendeinen Kombination der vorstehenden als nicht einschränkendes Beispiel umfassen. Ein solches Medium könnte auch Anweisungen aufweisen, die in ein FPGA programmiert sind oder in Hardware auf einer ASIC oder einem Prozessor kodiert sind.
  • 8 ist ein Blockdiagramm einer Netzwerkfunktionsvirtualisierungs (NFV; network function virtualization) -Infrastruktur 800 gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. NFV ist ein Aspekt der Netzwerkvirtualisierung, der im Allgemeinen als unterschiedlich von einem softwaredefinierten Netzwerk (SDN; software-defined network) betrachtet wird, der aber dennoch mit diesem interagieren kann. Zum Beispiel können Virtuelles-Netzwerk-Funktionen (VNFs) innerhalb der Datenebene einer SDN-Anwendung arbeiten. NFV war ursprünglich als ein Verfahren zum Bereitstellen reduzierter Kapitalausgaben (capex; capital expenditure) und Betriebsausgaben (Opex; operating expenses) für Telekommunikationsdienste vorgesehen. Ein Merkmal von NFV ist das Ersetzen von proprietären, Spezialzweck-Hardware-Anwendungen mit virtuellen Anwendungen, die auf gewöhnlicher, kommerzieller Standard (COTS; commercial off-the-shelf) - Hardware (COTS) innerhalb einer virtualisierten Umgebung ausgeführt werden. Zusätzlich zu den Einsparungen bei Capex und Opex stellt NFV ein agileres und anpassungsfähigeres Netzwerk bereit. Wenn sich Netzwerklasten ändern, können Virtuelles-Netzwerk-Funktionen (VNFs) bereitgestellt („aufgesponnen (spun up)“) oder entfernt („abgesponnen (spun down)“) werden, um die Netzwerkanforderungen zu erfüllen. Zum Beispiel können in Zeiten hoher Last mehr Lastausgleichs-VNFs aufgesponnen werden, um Verkehr zu mehr Arbeitslast-Servern (die selbst virtuelle Maschinen sein können) zu verteilen. In Zeiten, in denen mehr verdächtiger Verkehr erfahren wird, können zusätzliche Firewalls oder Deep Packet Inspection (DPI)-Anwendungen erforderlich sein.
  • Da NFV als ein Telekommunikationsmerkmal begann, konzentrieren sich viele NFV-Instanzen auf die Telekommunikation. NFV ist jedoch nicht auf Telekommunikationsdienste beschränkt. In einem weiteren Sinne umfasst NFV eine oder mehrere VNFs, die innerhalb einer Netzwerkfunktionsvirtualisierungsinfrastruktur (NFVI; network function virtualization infrastructure) wie beispielsweise NFVI 400 ausgeführt werden. Oft sind die VNFs Inline-Dienstfunktionen, die von Arbeitslast-Servern oder anderen Knoten getrennt sind. Diese VNFs können zusammen in eine Dienstkette verkettet werden, die durch ein virtuelles Teilnetzwerk definiert sein kann, und die eine serielle Reihe von Netzwerkdiensten umfassen kann, die Hinter-den-Kulissen-Arbeit, wie beispielsweise Sicherheit, Logging, Abrechnung und Ähnliches bereitstellen.
  • Wie das SDN ist die NFV eine Teilmenge der Netzwerkvirtualisierung. Anders ausgedrückt können sich bestimmte Abschnitte des Netzwerks auf das SDN verlassen, während andere Abschnitte (oder die gleichen Abschnitte) sich möglicherweise auf die NFV verlassen.
  • Bei dem Beispiel von 8 managet ein NFV-Orchestrator 801 eine Anzahl der VNFs 812, die auf einer NFVI 800 ausgeführt werden. NFV umfasst nicht-triviales Ressourcenmanagement, wie beispielsweise Zuteilen eines sehr großen Pools von Rechenressourcen unter einer geeigneten Anzahl von Instanzen jeder VNF, ein Managen von Verbindungen zwischen VNFs, ein Bestimmen von wie viele Instanzen jeder VNF zuzuweisen sind, und ein Managen von Speicher, Speicherung und Netzwerkverbindungen. Dies kann ein komplexes Software-Management erfordern, was den NFV-Orchestrator 801 zu einer wertvollen Systemressource macht. Es wird darauf hingewiesen, dass der NFV-Orchestrator 801 eine browserbasierte oder grafische Konfigurationsschnittstelle bereitstellen kann, und bei einigen Ausführungsbeispielen mit SDN-Orchestrationsfunktionen integriert sein kann.
  • Es wird darauf hingewiesen, dass der NFV-Orchestrator 801 selbst virtualisiert (anstatt eine Spezialzweck-Hardware-Anwendung) sein kann. Der NFV-Orchestrator 801 kann innerhalb eines existierenden SDN-Systems integriert sein, wobei ein Operationsunterstützungssystem (OSS; operations support system) das SDN managet. Dieses kann mit Cloud-Ressourcen-Management-Systemen (z.B. OpenStack) interagieren, um NFV-Orchestrierung bereitzustellen. Eine NFVI 800 kann die Hardware, Software und andere Infrastruktur umfassen, die es ermöglicht, das VNFs ausgeführt werden können. Dies kann eine Hardware-Plattform 802 umfassen, auf der eine oder mehrere VMs 804 ausgeführt werden können. Zum Beispiel führt die Hardware-Plattform 802-1 in diesem Beispiel die VMs 804-1 und 804-2 aus. Die Hardware-Plattform 802-2 führt die VMs 804-3 und 804-4 aus. Jede Hardware-Plattform kann einen Hypervisor 820, einen Virtuelle-Maschine-Manager (VMM) oder eine ähnliche Funktion aufweisen, die ein natives (Bare-Metal-) Betriebssystem umfassen kann und darauf ausgeführt werden kann, was minimal sein kann, sodass es sehr wenige Ressourcen verbraucht.
  • Hardware-Plattformen 802 können ein Rack oder mehrere Racks von Blade- oder Slot-Servern (umfassend z.B. Prozessoren, Speicher und Speicherung), ein oder mehrere Rechenzentren, andere, über einen oder mehrere geografische Standorte verteilte Hardware-Ressourcen, Hardware-Schalter oder Netzwerkschnittstellen sein oder aus diesen bestehen. Eine NFVI 800 kann auch die Software-Architektur aufweisen, die es ermöglicht, dass Hypervisor durch den NFV-Orchestrator 801 ausgeführt und gemanaget werden können.
  • Auf der NFVI 800 werden eine Anzahl von VMs 804 ausgeführt, von denen jede bei diesem Beispiel eine VNF ist, die eine virtuelle Dienstanwendung bereitstellt. Jede VM 804 bei diesem Beispiel weist eine Instanz des Datenebenenentwicklungskits (DVDK; Data Plane Development Kit) auf, ein virtuelles Betriebssystem 808 und eine Anwendung, die die VNF 812 bereitstellt.
  • Virtualisierte Netzwerkfunktionen könnten als nicht einschränkende und darstellende Beispiele Firewalls, Angriffserkennungssysteme (intrusion detection systems), Lastausgleicher, Router, Session Border Controller, Deep-Packet-Inspection (DPI)-Dienste, Netzwerkadressenübersetzungs (NAT; network address translation) -Module oder Call Security Association umfassen.
  • Die Darstellung von 8 zeigt, dass eine Anzahl von VNFs 804 bereitgestellt wurde und innerhalb der NFVI 800 existiert. Diese Figur stellt nicht notwendigerweise irgendeine Beziehung zwischen den VNFs und dem größeren Netzwerk dar, oder den Paketflüssen, die die NFVI 800 einsetzen kann.
  • Die dargestellten DPDK-Instanzen 816 stellen einen Satz hochoptimierter Bibliotheken für ein Kommunizieren über einen virtuellen Schalter (vSwitch) 822 bereit. Wie die VMs 804 wird auch der vSwitch 822 durch einen Hypervisor 820 bereitgestellt und zugeordnet. Der Hypervisor nutzt eine Netzwerkschnittstelle, um die Hardware-Plattform mit der Rechenzentrumsstruktur (z. B. einer HFI) zu verbinden. Diese HFI kann von allen VMs 804, die auf der Hardware-Plattform 802 ausgeführt werden, gemeinschaftlich verwendet werden. Somit kann ein vSwitch zugeordnet sein, um Verkehr zwischen VMs 804 zu schalten. Der vSwitch kann ein reiner Software-vSwitch sein (z.B. ein vSwitch mit gemeinschaftlich verwendetem Speicher), der so optimiert werden kann, dass Daten nicht zwischen Speicherorten verschoben werden, sondern die Daten stattdessen an einem Ort verbleiben und Zeiger zwischen VMs 804 übergeben werden können, um Daten, die sich zwischen Eintritts- und Austrittsports des vSwitch bewegen, zu simulieren. Der vSwitch kann auch einen Hardware-Treiber aufweisen (z.B. einen Hardware-Netzwerkschnittstellen-IP-Block, der Verkehr schaltet, aber der sich mit virtuellen Ports anstelle von physischen Ports verbindet). In dieser Darstellung ist ein verteilter vSwitch 822 dargestellt, wobei der vSwitch 822 von zwei oder mehr physischen Hardware-Plattformen 802 gemeinschaftlich verwendet wird.
  • 9 ist ein Blockdiagramm von Komponenten einer Rechenplattform 902A gemäß einem oder mehreren Beispielen der vorliegenden Beschreibung. Bei dem abgebildeten Ausführungsbeispiel sind die Plattformen 902A, 902B und 902C, zusammen mit der Rechenzentrumsmanagementplattform 906 und einer Datenanalysemaschine 904 über ein Netzwerk 908 verbunden. Bei anderen Ausführungsbeispielen kann ein Computersystem irgendeine geeignete Anzahl von (d.h. eine oder mehrere) Plattformen aufweisen. Bei einigen Ausführungsbeispielen (z.B. wenn ein Computer-System nur eine einzige Plattform aufweist) kann alles oder ein Abschnitt der Systemmanagementplattform 906 auf einer Plattform 902 umfasst sein. Eine Plattform 902 kann eine Plattformlogik 910 mit einer oder mehreren zentralen Verarbeitungseinheiten (CPUs; central processing units) 912, Speichern 914 (die irgendeine Anzahl unterschiedlicher Module umfassen können), Chipsätzen 916, Kommunikationsschnittstellen 918 und irgendeiner anderen geeigneten Hardware und/oder Software zum Ausführen eines Hypervisors 920 oder eines anderen Betriebssystems, das in der Lage ist, Arbeitslasten auszuführen, die den Anwendungen zugeordnet sind, die auf Plattform 902 ausgeführt werden, aufweisen. Bei einigen Ausführungsbeispielen kann eine Plattform 902 als eine Host-Plattform für ein oder mehrere Gastsysteme 922 fungieren, die diese Anwendungen in Anspruch nehmen. Die Plattform 902A kann irgendeine geeignete Rechenumgebung repräsentieren, wie beispielsweise eine Hoch-Performance-Rechenumgebung, ein Rechenzentrum, eine Kommunikationsdienstanbieterinfrastruktur (z.B. ein oder mehrere Abschnitte eines Evolved Packet Core), eine In-Speicher-Rechenumgebung, ein Rechensystem eines Fahrzeugs (z.B. eines Kraftfahrzeugs oder eines Flugzeugs) eine Internet-of-Things (Internet-der-Dinge) -Umgebung, ein industrielles Steuersystem, eine andere Rechenumgebung oder eine Kombination davon.
  • Bei verschiedenen Ausführungsbeispielen der vorliegenden Offenbarung werden akkumulierte Belastung und/oder Raten von Belastung, die von einer Mehrzahl von Hardwareressourcen (z.B. Kerne und Uncores) akkumuliert werden, überwacht und Entitäten (z.B. Systemmanagementplattform 906, Hypervisor 920 oder ein anderes Betriebssystem) der Computerplattform 902A können Hardwareressourcen der Plattformlogik 910 zuordnen, um Arbeitslasten gemäß der Belastungsinformationen durchzuführen. Bei einigen Ausführungsbeispielen können Selbstdiagnosefähigkeiten mit der Belastungsüberwachung kombiniert werden, um den Zustand der Hardwareressourcen genauer zu bestimmen. Jede Plattform 902 kann die Plattformlogik 910 umfassen. Die Plattformlogik 910 umfasst neben anderer Logik, die die Funktionalität der Plattform 902 ermöglicht, eine oder mehrere CPUs 912, Speicher 914, einen oder mehrere Chipsätze 916 und Kommunikationsschnittstellen 928. Obwohl drei Plattformen dargestellt sind, kann die Computerplattform 902A mit irgendeiner geeigneten Anzahl von Plattformen verbunden sein. Bei verschiedenen Ausführungsbeispielen kann sich eine Plattform 902 auf einer Schaltungsplatine befinden, die in einem Gehäuse, Rack oder einer anderen geeigneten Struktur installiert ist, die mehrere Plattformen umfasst, die durch das Netzwerk 908 (das z.B. ein Rack oder einen Backplane-Schalter umfassen kann) zusammengekoppelt sind.
  • Die CPUs 912 können jeweils irgendeine geeignete Anzahl von Prozessorkernen und unterstützender Logik (z.B. Uncores) umfassen. Die Kerne können miteinander, mit dem Speicher 914, mit zumindest einem Chipsatz 916 und/oder mit einer Kommunikationsschnittstelle 918 durch eine oder mehrere Steuerungen gekoppelt sein, die sich auf der CPU 912 und/oder dem Chipsatz 916 befinden. Bei bestimmten Ausführungsbeispielen ist eine CPU 912 innerhalb einer Buchse ausgebildet, die permanent oder entfernbar mit der Plattform 902A gekoppelt ist. Obwohl vier CPUs gezeigt sind, kann eine Plattform 902 irgendeine geeignete Anzahl von CPUs umfassen.
  • Der Speicher 914 kann irgendeine Form von flüchtigem oder nichtflüchtigem Speicher umfassen, umfassend, aber nicht beschränkt auf magnetische Medien (z.B. ein oder mehrere Bandlaufwerke), optische Medien, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, entfernbare Medien oder irgendeine oder irgendwelche anderen geeigneten lokalen oder entfernten Speicherkomponenten. Der Speicher 914 kann von der Plattform 902A für kurz-, mittel- und/oder langfristige Speicherung verwendet werden. Der Speicher 914 kann irgendwelche geeigneten Daten oder Informationen speichern, die von der Plattformlogik 910 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 914 kann Daten speichern, die von Kernen von CPUs 912 verwendet werden. Bei einigen Ausführungsbeispielen kann der Speicher 914 auch Speicherung für Anweisungen aufweisen, die durch die Kerne der CPUs 912 oder andere Verarbeitungselemente (z.B. Logik, die sich auf den Chipsätzen 916 befindet) ausgeführt werden, um eine Funktionalität bereitzustellen, die der Managebarkeitsmaschine (manageability engine) 926 oder anderen Komponenten der Plattformlogik 910 zugeordnet ist. Eine Plattform 902 kann auch einen oder mehrere Chipsätze 916 umfassen, die irgendeine geeignete Logik aufweisen, um den Betrieb der CPUs 912 zu unterstützen. Bei verschiedenen Ausführungsbeispielen kann der Chipsatz 916 sich auf dem gleichen Die oder Package wie eine CPU 912 oder auf einem oder mehreren unterschiedlichen Dies oder Packages befinden. Jeder Chipsatz kann irgendeine geeignete Anzahl von CPUs 912 unterstützen. Ein Chipsatz 916 kann auch eine oder mehrere Steuerungen umfassen, um andere Komponenten der Plattformlogik 910 (z.B. Kommunikationsschnittstelle 918 oder Speicher 914) mit einer oder mehreren CPUs zu koppeln. Bei dem abgebildeten Ausführungsbeispiel umfasst jeder Chipsatz 916 auch eine Managebarkeitsmaschine 926. Die Managebarkeitsmaschine 926 kann irgendeine geeignete Logik umfassen, um den Betrieb des Chipsatzes 916 zu unterstützen. Bei einem bestimmten Ausführungsbeispiel ist eine Managebarkeitsmaschine 926 (die auch als eine Innovationsmaschine bezeichnet werden kann) in der Lage, Echtzeit-Telemetriedaten von dem Chipsatz 916, der einen oder der mehreren CPUs 912 und/oder dem Speicher 914, der durch den Chipsatz 916 gemanaget wird, anderen Komponenten der Plattformlogik 910 und/oder verschiedenen Verbindungen zwischen Komponenten der Plattformlogik 910 zu sammeln. Bei verschiedenen Ausführungsbeispielen umfassen die gesammelten Telemetriedaten die hierin beschriebenen Belastungsinformationen.
  • Bei verschiedenen Ausführungsbeispielen arbeitet eine Managebarkeitsmaschine 926 als ein bandexternes, asynchrones Rechenmittel, das in der Lage ist, mit den verschiedenen Elementen der Plattformlogik 910 eine Schnittstelle zu bilden, um Telemetriedaten ohne oder mit minimaler Unterbrechung der laufenden Prozesse auf den CPUs 912 zu sammeln. Zum Beispiel kann die Managebarkeitsmaschine 926 ein zweckgebundenes Verarbeitungselement (z.B. einen Prozessor, eine Steuerung oder andere Logik) auf dem Chipsatz 916 umfassen, der die Funktionalität der Managebarkeitsmaschine 926 (z.B. durch Ausführen von Software-Anweisungen) bereitstellt, wodurch Verarbeitungszyklen der CPUs 912 für Operationen, die den Arbeitslasten zugeordnet sind, die durch die Plattformlogik 910 ausgeführt wurden, erhalten werden. Darüber hinaus kann die zweckgebundene Logik für die Managebarkeitsmaschine 926 asynchron im Hinblick auf die CPUs 912 arbeiten und kann zumindest einen Teil der Telemetriedaten erfassen, ohne die Belastung der CPUs zu erhöhen.
  • Eine Managebarkeitsmaschine 926 kann die Telemetriedaten verarbeiten, die sie sammelt (spezifische Beispiele des Verarbeitens von Belastungsinformationen werden hierin bereitgestellt). Bei verschiedenen Ausführungsbeispielen berichtet die Managebarkeitsmaschine 926 die Daten, die sie sammelt und/oder die Ergebnisse ihrer Verarbeitung an andere Elemente in dem Computer-System, wie beispielsweise einen oder mehrere Hypervisor 920 oder andere Betriebssysteme und/oder Systemmanagementsoftware (die auf irgendeiner geeigneten Logik wie beispielsweise der Systemmanagementplattform 906 ausgeführt werden kann). Bei bestimmten Ausführungsbeispielen kann ein kritisches Ereignis, wie beispielsweise ein Kern, der einen übermäßigen Betrag an Belastung akkumuliert hat, vor dem normalen Intervall für ein Melden von Telemetriedaten gemeldet werden (z.B. eine Benachrichtigung kann sofort nach der Entdeckung gesendet werden).
  • Zusätzlich kann die Managebarkeitsmaschine 926 einen programmierbaren Code umfassen, der konfigurierbar ist, um einzustellen, welche eine oder mehreren CPUs 912 eines bestimmten Chipsatzes 916 managen und/oder welche Telemetriedaten gesammelt werden.
  • Die Chipsätze 916 weisen auch jeweils eine Kommunikationsschnittstelle 928 auf. Die Kommunikationsschnittstelle 928 kann für die Kommunikation von Signalisierung und/oder Daten zwischen dem Chipsatz 916 und einer oder mehreren I/O-Vorrichtungen, einem oder mehreren Netzwerken 908 und/oder einer oder mehreren mit dem Netzwerk 908 gekoppelten Vorrichtungen (z.B. Systemmanagementplattform 906) verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 928 verwendet werden, um Netzwerkverkehr, wie beispielsweise Datenpakete, zu versenden und zu empfangen. Bei einem bestimmten Ausführungsbeispiel umfasst eine Kommunikationsschnittstelle 928 eine oder mehrere physische Netzwerkschnittstellensteuerungen (NICs; network interface controllers), auch bekannt als Netzwerkschnittstellenkarten oder Netzwerkadapter. Eine NIC 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 NIC kann einen oder mehrere physische Ports aufweisen, die mit einem Kabel (z.B. einem Ethernet-Kabel) gekoppelt sein können. Eine NIC kann eine Kommunikation zwischen irgendeinem geeigneten Element des Chipsatzes 916 (z.B. Managebarkeitsmaschine 926 oder Schalter 930) und einer anderen mit dem Netzwerk 908 gekoppelten Vorrichtung ermöglichen. Bei verschiedenen Ausführungsbeispielen kann eine NIC 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 bestimmten Ausführungsbeispielen können die Kommunikationsschnittstellen 928 eine Kommunikation von Daten (z.B. zwischen der Managebarkeitsmaschine 926 und der Rechenzentrumsmanagementplattform 906) erlauben, die Management- und Überwachungsfunktionen zugeordnet sind, die durch die Managebarkeitsmaschine 926 durchgeführt werden. Bei verschiedenen Ausführungsbeispielen kann die Managebarkeitsmaschine 926 Elemente (z.B. eine oder mehrere NICs) der Kommunikationsschnittstellen 928 verwenden, um die Telemetriedaten (z.B. der Systemmanagementplattform 906) zu berichten, um die Verwendung von NICs der Kommunikationsschnittstelle 918 für Operationen zu reservieren, die Arbeitslasten zugeordnet sind, die durch die Plattformlogik 910 durchgeführt werden.
  • Die Schalter 930 können mit verschiedenen Ports (z.B. bereitgestellt durch NICs) der Kommunikationsschnittstelle 928 koppeln und können Daten zwischen diesen Ports und verschiedenen Komponenten des Chipsatzes 916 (z.B. eine oder mehrere Peripheral-Component-Interconnect-Express (PCIe) -Spuren, die mit den CPUs 912 gekoppelt sind) schalten. Die Schalter 930 können ein physischer oder virtueller (d.h. Software-) Schalter sein.
  • Die Plattformlogik 910 kann eine zusätzliche Kommunikationsschnittstelle 918 aufweisen. Ähnlich wie die Kommunikationsschnittstellen 928 können die Kommunikationsschnittstellen 918 für die Kommunikation von Signalisierung und/oder Daten zwischen der Plattformlogik 910 und einem oder mehreren Netzwerken 908 und einer oder mehreren Vorrichtungen, die mit dem Netzwerk 908 gekoppelt sind, verwendet werden. Zum Beispiel kann die Kommunikationsschnittstelle 918 verwendet werden, um Netzwerkverkehr, wie beispielsweise Datenpakete, zu versenden und zu empfangen. Bei einem bestimmten Ausführungsbeispiel weisen die Kommunikationsschnittstellen 918 eine oder mehrere physische NICs auf. Diese NICs können eine Kommunikation zwischen irgendeinem geeigneten Element der Plattformlogik 910 (z.B. CPUs 912 oder Speicher 914) und einer anderen Vorrichtung, die mit dem Netzwerk 908 (z.B. Elemente anderer Plattformen oder entfernte Rechenvorrichtungen, die mit dem Netzwerk 908 durch ein oder mehrere Netzwerke gekoppelt sind) gekoppelt ist, ermöglichen.
  • Die Plattformlogik 910 kann irgendwelche geeigneten Arten von Arbeitslasten empfangen und ausführen. Eine Arbeitslast kann irgendeine Anfrage umfassen, eine oder mehrere Ressourcen der Plattformlogik 910 zu nutzen, wie beispielsweise einen oder mehrere Kerne oder zugeordnete Logik. Zum Beispiel kann eine Arbeitslast eine Anfrage umfassen, eine Softwarekomponente zu instanziieren, wie beispielsweise einen I/O-Vorrichtungstreiber 924 oder ein Gastsystem 922; eine Anfrage ein Netzwerkpaket zu verarbeiten, das von einer virtuellen Maschine 932 oder einer Vorrichtung, die extern zu der Plattform 902A ist (wie beispielsweise ein Netzwerkknoten, der mit dem Netzwerk 908 gekoppelt ist) empfangen wurde; eine Anfrage einen Prozess oder einen Thread auszuführen, der einem Gastsystem 922 zugeordnet ist, eine Anwendung, die auf der Plattform 902A ausgeführt wird, einen Hypervisor 920 oder ein anderes Betriebssystem, das auf der Plattform 902A ausgeführt wird; oder eine andere geeignete Verarbeitungsanforderung.
  • Eine virtuelle Maschine 932 kann ein Computersystem mit eigener zweckgebundener Hardware emulieren. Eine virtuelle Maschine 932 kann ein Gastbetriebssystem oben auf dem Hypervisor 920 ausführen. Die Komponenten der Plattformlogik 910 (z.B. CPUs 912, Speicher 914, Chipsatz 916 und Kommunikationsschnittstelle 918) können so virtualisiert sein, dass es für das Gastbetriebssystem so aussieht, als hätte die virtuelle Maschine 932 ihre eigenen zweckgebundenen Komponenten.
  • Eine virtuelle Maschine 932 kann eine virtualisierte NIC (vNIC) aufweisen, die von der virtuellen Maschine als ihre Netzwerkschnittstelle verwendet wird. Einer vNIC kann eine Media Access Control (MAC) -Adresse oder ein anderer Identifizierer zugewiesen sein, was es erlaubt, dass mehrere virtuelle Maschinen 932 in einem Netzwerk individuell adressierbar sind.
  • Die VNF 934 kann eine Software-Implementierung eines funktionalen Baublocks mit definierten Schnittstellen und Verhalten umfassen, die in einer virtualisierten Infrastruktur eingesetzt werden kann. Bei bestimmten Ausführungsbeispielen kann eine VNF 934 eine oder mehrere virtuelle Maschinen 932 umfassen, die gemeinsam spezifische Funktionalitäten bereitstellen (z.B. Weitbereichsnetzwerk (WAN) - Optimierung, Terminierung von virtuellen privaten Netzwerken (VPN, virtual private network), Firewall-Operationen, Lastausgleichsoperationen, Sicherheitsfunktionen etc.). Eine VNF 934, die auf der Plattformlogik 910 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 934 Komponenten umfassen, um irgendwelche geeigneten NFV-Arbeitslasten durchzuführen, wie beispielsweise virtualisierte entwickelte Paketkern (vEPC) - Komponenten, Mobilitätsmanagement-Entitäten, Steuer- und Datenebenenkomponenten des 3rd Generation Partnership Project (3GPP) etc.
  • Die Dienstfunktionskette (SFC; service function chain) 936 ist eine Gruppe von VNFs 934, 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 920 (auch als eine Überwachungseinrichtung einer virtuellen Maschine bekannt) kann Logik zum Erzeugen und Ausführen von Gastsystemen 922 umfassen. Der Hypervisor 920 kann Gast-Betriebssysteme 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 910 managen. Die Dienste des Hypervisor 920 können durch Virtualisieren in Software oder durch Hardware unterstützte Ressourcen mit minimalem Software-Eingriff oder beides bereitgestellt werden. Mehrere Instanzen einer Vielzahl von Gastbetriebssystemen können durch den Hypervisor 920 verwaltet werden. Jede Plattform 902 kann eine separate Instanziierung eines Hypervisor 920 aufweisen.
  • Der Hypervisor 920 kann ein nativer oder Bare-Metal-Hypervisor sein, der direkt auf der Plattformlogik 910 ausgeführt wird, um die Plattformlogik zu steuern und die Gastbetriebssysteme zu managen. Alternativ kann der Hypervisor 920 ein gehosteter Hypervisor sein, der auf einem Host-Betriebssystem ausgeführt wird und die Gastbetriebssysteme von dem Host-Betriebssystem abstrahiert. Der Hypervisor 920 kann einen virtuellen Schalter 938 umfassen, der virtuelle Schalt- und/oder Routing-Funktionen für virtuelle Maschinen der Gastsysteme 922 bereitstellen kann. Der virtuelle Schalter 938 kann eine logische Schaltstruktur umfassen, die die vNICs der virtuellen Maschinen 932 miteinander koppelt und somit ein virtuelles Netzwerk erzeugt, durch das virtuelle Maschinen miteinander kommunizieren können.
  • Der virtuelle Schalter 938 kann ein Softwareelement umfassen, das unter Verwendung von Komponenten der Plattformlogik 910 ausgeführt wird. Bei verschiedenen Ausführungsbeispielen kann der Hypervisor 920 in Kommunikation mit irgendeiner geeigneten Entität (z.B. einer SDN-Steuerung) sein, was den Hypervisor 920 dazu veranlassen kann, die Parameter des virtuellen Schalters 938 ansprechend auf ein Verändern der Bedingungen in Plattform 902 (z.B. das Hinzufügen oder Löschen von virtuellen Maschinen 932 oder die Identifizierung von Optimierungen die ausgeführt werden können, um die Performance der Plattform zu verbessern) neu zu konfigurieren.
  • Der Hypervisor 920 kann auch eine Ressourcenzuordnungslogik 944 umfassen, die eine Logik zum Bestimmen einer Zuordnung von Plattformressourcen basierend auf den Telemetriedaten (die Belastungsinformationen umfassen können) umfassen kann. Die Ressourcenzuweisungslogik 944 kann auch Logik für ein Kommunizieren mit verschiedenen Komponenten der Plattformlogik 910 -Entitäten der Plattform 902A umfassen, um eine solche Optimierung zu implementieren, wie beispielsweise Komponenten der Plattformlogik 910.
  • Irgendeine geeignete Logik kann eine oder mehrere dieser Optimierungsentscheidungen treffen. Zum Beispiel kann die Systemmanagementplattform 906; die Ressourcenzuordnungslogik 944 des Hypervisors 920 oder eines anderen Betriebssystems; oder eine andere Logik der Computerplattform 902A in der Lage sein, solche Entscheidungen zu treffen. Bei verschiedenen Ausführungsbeispielen kann die Systemmanagementplattform 906 Telemetriedaten von mehreren Plattformen 902 empfangen und die Platzierung der Arbeitslast auf diese managen. Die Systemmanagementplattform 906 kann mit den Hypervisoren 920 (z.B. auf eine bandexterne Art) oder anderen Betriebssystemen der verschiedenen Plattformen 902 kommunizieren, um von der Systemmanagementplattform gesteuerte Arbeitslastplatzierungen zu implementieren.
  • Die Elemente der Plattformlogik 910 können auf irgendeine geeignete Art und Weise miteinander gekoppelt sein. Beispielsweise kann ein Bus irgendwelche der Komponenten miteinander koppeln. 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 differentiellen Bus oder einen Gunning-Transceiver-Logic (GTL)-Bus.
  • Elemente der Computerplattform 902A können auf irgendeine geeignete Weise miteinander gekoppelt sein, wie beispielsweise durch ein oder mehrere Netzwerke 908. Ein Netzwerk 908 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.
  • Die vorstehenden Darstellungsmerkmale von einem oder mehreren Ausführungsbeispielen des Gegenstands sind hierin offenbart. Diese Ausführungsbeispiele sind bereitgestellt, um es einem Durchschnittsfachmann (PHOSITA; person having ordinary skill in the art) zu ermöglichen, verschiedene Aspekte der vorliegenden Offenbarung besser zu verstehen. Auf bestimmte gut verständliche Begriffe, sowie zugrunde liegende Technologien und/oder Standards kann Bezug genommen werden, ohne dass sie detailliert beschrieben werden. Es wird davon ausgegangen, dass der PHOSITA über ausreichend Hintergrundwissen oder Informationen zu diesen Technologien und Standards verfügt oder darauf zugreifen kann, um die Lehren der vorliegenden Offenbarung auszuführen.
  • Der PHOSITA wird erkennen, dass er ohne weiteres die vorliegende Offenbarung als eine Basis zum Entwerfen oder Modifizieren anderer Prozesse, Strukturen oder Variationen zum Ausführen derselben Zwecke und/oder zum Erreichen derselben Vorteile der hierin eingeführten Ausführungsbeispiele verwenden kann. Der PHOSITA wird auch erkennen, dass solche äquivalenten Konstruktionen nicht von dem Wesen und Schutzbereich der vorliegenden Offenbarung abweichen und dass er verschiedene Änderungen, Ersetzungen und Abänderungen hierin ausführen kann, ohne von dem Wesen und Schutzbereich der vorliegenden Offenbarung abzuweichen.
  • In der vorangehenden Beschreibung sind bestimmte Aspekte einiger oder aller Ausführungsbeispiele detaillierter beschrieben als es für das Ausführen der beigefügten Ansprüche strengerweise notwendig ist. Diese Details sind nur als nicht einschränkendes Beispiel bereitgestellt, zum Zweck des Bereitstellens von Kontext und der Darstellung der offenbarten Ausführungsbeispiele. Solche Details sollten nicht als erforderlich verstanden werden und sollten nicht als Einschränkungen in die Ansprüche „hineingelesen“ werden. Der Ausdruck kann sich auf „ein Ausführungsbeispiel“ oder „Ausführungsbeispiele“ beziehen. Diese Ausdrücke und irgendwelche anderen Bezüge auf Ausführungsbeispiele sollten weit ausgelegt werden und sich auf irgendeine Kombination von einem oder mehreren Ausführungsbeispielen beziehen. Ferner können die mehreren Merkmale, die in einem bestimmten „Ausführungsbeispiel“ offenbart sind, ebenso über mehrere Ausführungsbeispiele verteilt sein. Falls zum Beispiel Merkmale 1 und 2 in „einem Ausführungsbeispiel“ offenbart sind, weist Ausführungsbeispiel A möglicherweise Merkmal 1 auf, aber nicht Merkmal 2, während Ausführungsbeispiel B möglicherweise Merkmal 2 aufweist, aber nicht Merkmal 1.
  • Diese Beschreibung kann Darstellungen in einem Blockdiagrammformat bereitstellen, wobei bestimmte Merkmale in separaten Blöcken offenbart sind. Diese sollten weit ausgelegt werden, um zu offenbaren, wie verschiedene Merkmale zusammenwirken, aber sie sollen nicht implizieren, dass diese Merkmale notwendigerweise in separater Hardware oder Software ausgeführt sein müssen. Ferner, wenn ein einzelner Block mehr als ein Merkmal in demselben Block offenbart, müssen diese Merkmale nicht notwendigerweise in der gleichen Hardware und/oder Software ausgeführt sein. Zum Beispiel könne ein Computer „speicher‟ unter einigen Umständen zwischen mehreren Ebenen von Zwischenspeicher oder lokalem Speicher, Hauptspeicher, batteriegestütztem flüchtigem Speicher und verschiedenen Formen von dauerhaftem Speicher, wie beispielsweise Festplatte, Speicherserver, optische Platte, Bandlaufwerk oder Ähnlichem verteilt oder abgebildet werden. Bei bestimmten Ausführungsbeispielen können einige der Komponenten weggelassen oder konsolidiert sein. In einem allgemeinen Sinne können die in den Figuren abgebildeten Anordnungen in ihren Darstellungen logischer sein, wohingegen eine physische Architektur verschiedenen Permutationen, Kombinationen und/oder Hybride dieser Elemente umfassen kann. Unzählige mögliche Entwurfskonfigurationen können verwendet werden, um die hierin ausgeführten operativen Ziele zu erreichen. Dementsprechend weist die zugeordnete Infrastruktur eine Unmenge von Ersatzanordnungen, Entwurfsentscheidungen, Vorrichtungsmöglichkeiten, Hardwarekonfigurationen, Softwareimplementierungen und Equipmentoptionen auf.
  • Hierin kann auf ein computerlesbares Medium Bezug genommen werden, das ein greifbares und nicht-flüchtiges computerlesbares Medium sein kann. Nach Gebrauch in dieser Beschreibung und in den gesamten Ansprüchen sollte ein „computerlesbares Medium“ so verstanden werden, dass es ein oder mehrere computerlesbare Medien desselben oder unterschiedlicher Typen umfasst. Ein computerlesbares Medium kann als nicht einschränkendes Beispiel ein optisches Laufwerk (z.B. CD/DVD/Blu-Ray), eine Festplatte, ein Festkörper (solid-state) -Laufwerk, einen Flash-Speicher oder ein anderes nichtflüchtiges Medium umfassen. Ein computerlesbares Medium könnte auch ein Medium umfassen, wie beispielsweise einen Nur-Lese-Speicher (ROM), ein FPGA oder eine ASIC, ausgebildet zum Ausführen der gewünschten Anweisungen, gespeicherte Anweisungen zum Programmieren eines FPGA oder einer ASIC zum Ausführen der gewünschten Anweisungen, einen Geistiges-Eigentum (IP) -Block, der in Hardware in andere Schaltungen integriert werden kann, oder Anweisungen, die direkt in Hardware oder Mikrocode auf einem Prozessor kodiert sind, wie beispielsweise einem Mikroprozessor, einem Digitalsignalprozessor (DSP), einem Mikrocontroller, oder in irgendeine andere geeignete Komponente, Vorrichtung, Element oder Objekt, wo dies angemessen ist und auf besonderen Bedürfnissen basiert. Ein nichtflüchtiges Speicherungsmedium hierin soll ausdrücklich irgendwelche nichtflüchtige Spezialzweck- oder programmierbare Hardware umfassen, die ausgebildet ist, um die offenbarten Operationen bereitzustellen, oder um zu verursachen, dass ein Prozessor die offenbarten Operationen durchführt.
  • In dieser gesamten Beschreibung und in den Ansprüchen können verschiedene Elemente „kommunikativ“, „elektrisch“, „mechanisch“ oder anderweitig miteinander „gekoppelt“ sein. Eine solche Kopplung kann eine direkte Punkt-zu-Punkt-Kopplung sein oder kann Zwischenvorrichtungen umfassen. Zum Beispiel können zwei Vorrichtungen über eine Steuerung, die die Kommunikation ermöglicht, kommunikativ miteinander gekoppelt sein. Vorrichtungen können über Zwischenvorrichtungen wie beispielsweise Signalverstärker, Spannungsteiler oder Puffer elektrisch miteinander gekoppelt sein. Mechanisch gekoppelte Vorrichtungen können indirekt mechanisch gekoppelt sein.
  • Irgendein hierin offenbartes „Modul“ oder eine „Maschine“ kann sich auf eine Software, einen Softwarestapel, eine Kombination aus Hardware, Firmware und/oder Software, eine Schaltung, die ausgebildet ist, um die Funktion der Maschine oder des Moduls auszuführen, oder irgendein computerlesbares Medium, wie vorangehend offenbart wurde, beziehen, oder kann diese umfassen. Solche Module oder Maschinen können unter geeigneten Umständen auf oder in Verbindung mit einer Hardware-Plattform bereitgestellt werden, was Hardware-Rechenressourcen, wie beispielsweise einen Prozessor, Speicher, Speicherung, Verbindungen, Netzwerke und Netzwerkschnittstellen, Beschleuniger oder andere geeignete Hardware umfassen kann. Eine solche Hardware-Plattform kann als eine einzelne monolithische Vorrichtung (z.B. In einem PC-Formfaktor) oder mit einigen oder einem Teil der Funktion verteilt (z.B. ein „zusammengesetzter Knoten“ in einem High-End-Rechenzentrum, wo Rechen-, Speicher-, Speicherungs- und andere Ressourcen dynamisch zugeordnet werden können und nicht lokal zueinander sein müssen) bereitgestellt sein.
  • Hierin können Flussdiagramme, Signalflussdiagramme oder andere Darstellungen offenbart sein, die zeigen, wie Operationen in einer bestimmten Reihenfolge ausgeführt werden. Sofern nicht ausdrücklich anders angegeben, soll die Reihenfolge nur als ein nicht einschränkendes Beispiel verstanden werden. Ferner, in Fällen wo gezeigt ist, dass eine Operation einer anderen folgt, können auch andere dazwischenliegende Operationen auftreten, die verwandt oder nicht verwandt sein können. Einige Operationen können auch gleichzeitig oder parallel durchgeführt werden. In Fällen, in denen eine Operation als „basierend auf“ oder „gemäß“ einem anderen Gegenstand oder einer Operation bezeichnet ist, sollte dies so verstanden werden, dass es impliziert, dass die Operation zumindest teilweise auf dem anderen Gegenstand oder der Operation basiert oder zumindest teilweise gemäß diesem/dieser ist. Dies sollte nicht so ausgelegt werden, dass es impliziert, dass die Operation nur oder ausschließlich auf dem Gegenstand oder der Operation basiert oder nur oder ausschließlich gemäß diesem/dieser ist.
  • Alles oder ein Teil irgendeines hierin offenbarten Hardware-Elements kann ohne weiteres in einem System-auf-einem-Chip (SoC; system-on-a-chip) bereitgestellt sein, umfassend ein Zentrale-Verarbeitungseinheit (CPU) -Package. Ein SoC stellt eine integrierte Schaltung (IC) dar, die Komponenten eines Computers oder eines anderen elektronischen Systems in einen einzelnen Chip integriert. Somit können zum Beispiel Klienten-Vorrichtungen oder Server-Vorrichtungen bereitgestellt werden, vollständig oder teilweise in einem SoC. Das SoC kann digitale, analoge, gemischtes-Signal- und Radiofrequenzfunktionen umfassen, die alle auf einem einzigen Chipsubstrat bereitgestellt sein können. Andere Ausführungsbeispiele können ein Multi-Chip-Modul (MCM; multichip module) umfassen, wobei eine Mehrzahl von Chips innerhalb eines einzelnen elektronischen Packages positioniert ist, und ausgebildet ist, um eng miteinander durch das elektronische Package zu interagieren.
  • Allgemein kann irgendeine passend ausgebildete Schaltung oder ein Prozessor irgendeine Art von Anweisungen ausführen, die den Daten zugeordnet sind, um die hierin detaillierten Operationen zu erreichen. Irgendein hierin offenbarter Prozessor könnte ein Element oder einen Artikel (zum Beispiel Daten) von einem Zustand oder Ding in einen anderen Zustand oder Ding transformieren. Ferner könnten die Informationen, die verfolgt, gesendet, empfangen oder in einem Prozessor gespeichert werden, in irgendeiner Datenbank, einem Register, einer Tabelle, einem Zwischenspeicher, einer Warteschlange, einer Steuerliste oder einer Speicherungsstruktur bereitgestellt sein, basierend auf den bestimmten Anforderungen und Implementierungen, von denen auf alle in irgendeinem geeigneten Zeitrahmen Bezug genommen werden kann. Jedes der hierin offenbarten Speicher- oder Speicherungselemente sollte je nach Eignung als innerhalb der breit gefächerten Begriffe „Speicher“ und „Speicherung“ eingeschlossen betrachtet werden.
  • Computerprogrammlogik, die alles oder einen Teil der hierin beschriebenen Funktionalität implementiert, ist in verschiedenen Formen ausgeführt, umfassend aber in keiner Weise beschränkt auf eine Quellcode-Form, eine computerausführbare Form, Maschinenanweisungen oder Mikrocode, programmierbare Hardware und verschiedene Zwischenformen (zum Beispiel Formen, die durch einen Assembler, Kompilierer, Verbinder oder Lokator erzeugt werden). Bei einem Beispiel umfasst der Quellcode eine Reihe von Computerprogrammanweisungen, die in verschiedenen Programmiersprachen implementiert sind, wie beispielsweise einem Objektcode, einer Assemblersprache oder einer höheren Sprache wie beispielsweise OpenCL, FORTRAN, C, C++, Java oder HTML, zur Verwendung mit verschiedenen Betriebssystemen oder Betriebsumgebungen, oder in Hardware-Beschreibungssprachen, wie beispielsweise Spice, Verilog und VHDL. Der Quellcode kann verschiedene Datenstrukturen und Kommunikationsnachrichten definieren und verwenden. Der Quellcode kann in einer computerausführbaren Form vorliegen (z.B. über einen Interpreter), oder der Quellcode kann in eine computerausführbare Form umgewandelt werden (z.B. über einen Übersetzer, Assembler oder Kompilierer), oder in eine Zwischenform umgewandelt werden, wie beispielsweise einen Byte-Code. Gegebenenfalls können irgendwelche der Vorstehenden verwendet werden, um geeignete diskrete oder integrierte Schaltungen zu bauen oder zu beschreiben, ob sequentiell, kombinatorisch, Zustandsmaschinen oder anderweitig.
  • Bei einem beispielhaften Ausführungsbeispiel kann irgendeine Anzahl von elektrischen Schaltungen der FIGUREN auf einer Platine einer zugeordneten elektronischen Vorrichtung implementiert sein. Die Platine kann eine allgemeine Schaltungsplatine sein, die verschiedene Komponenten des internen elektronischen Systems der elektronischen Vorrichtung umfassen kann und ferner Verbinder für andere Peripherievorrichtungen bereitstellen kann. Irgendein geeigneter Prozessor und Speicher kann passend mit der Platine gekoppelt sein, basierend auf bestimmten Konfigurationsanforderungen, Verarbeitungsanforderungen und Rechenentwürfen. Es wird darauf hingewiesen, dass bei den zahlreichen hierin bereitgestellten Beispielen eine Interaktion in der Form von zwei, drei, vier oder mehreren elektrischen Komponenten beschrieben werden kann. Dies wurde jedoch nur der Klarheit und Beispielhaftigkeit halber getan. Es wird darauf hingewiesen, dass das System auf irgendeine geeignete Weise konsolidiert oder neu konfiguriert werden kann. Zusammen mit ähnlichen Entwurfsalternativen können irgendwelche der dargestellten Komponenten, Module und Elemente der FIGUREN in verschiedenen möglichen Konfigurationen kombiniert werden, von denen alle innerhalb des breiten Schutzbereichs dieser Beschreibung sind.
  • Zahlreiche andere Änderungen, Substitutionen, Variationen, Veränderungen und Modifikationen können von einen Fachmann verstanden werden, und es ist beabsichtigt, dass die vorliegende Offenbarung alle solchen Änderungen, Substitutionen, Variationen, Veränderungen und Modifikationen als in den Schutzbereich der beigefügten Ansprüche fallend umfasst. Um das Patent- und Markenamt der Vereinigten Staaten (USPTO; United States Patent and Trademark Office) und zusätzlich alle Leser irgendeines Patents, das zu dieser Anmeldung erteilt wird, bei dem Auslegen der hieran angefügten Ansprüche zu unterstützten, möchte die Anmelderin darauf hinweisen, dass die Anmelderin: (a) nicht beabsichtigt, dass irgendwelche der beigefügten Ansprüche sich auf Paragraph sechs (6) von 35 U.S.C., Abschnitt 112 (vor AIA) oder Paragraph (f) des gleichen Abschnitts (nach AIA), wie an dem Datum der Einreichung hiervon bestehend, berufen, es sei denn, die Worte „Mittel für“ oder „Schritte für“ werden in den jeweiligen Ansprüchen ausdrücklich verwendet; und (b) nicht beabsichtigt, durch irgendeine Aussage in der Beschreibung diese Offenbarung in irgendeiner Weise einzuschränken, die nicht explizit in den beigefügten Ansprüchen reflektiert ist.
  • BEISPIELHAFTE IMPLEMENTIERUNGEN
  • Die folgenden Beispiele sind der Darstellung halber bereitgestellt.
  • Beispiel 1 umfasst eine Rechenvorrichtung, umfassend: eine Hardware-Plattform; einen Virtuelle-Maschine-Manager (VMM), der eine Virtuelle-Maschine-Steuerstruktur (VMCS) umfasst, wobei der VMM ausgebildet ist, um eine virtuelle Maschine (VM) gemäß der VMCS bereitzustellen; eine Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die eine direkte virtuelle Gastadresse (GVA) zu der physischen Host-Adresse (HPA) - Übersetzungen umfasst; und Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.
  • Beispiel 2 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Durchgangsregion Adressenübersetzungen für eine Speicher-abgebildete Eingabe/Ausgabe (MMIO) -Vorrichtung umfasst.
  • Beispiel 3 umfasst die Rechenvorrichtung gemäß Beispiel 2, wobei die MMIO-Vorrichtung gemäß einem Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) - Protokoll abgebildet ist.
  • Beispiel 4 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Logik ferner ausgebildet ist, um die Durchgangsregion ansprechend auf ein Bereitstellen der VM zu sperren.
  • Beispiel 5 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Logik ausgebildet ist, um die Durchgangsregion nach Zählung einer Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Vorrichtung durch die VM zu sperren.
  • Beispiel 6 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung erhält, eine Vorrichtung freizugeben, die auf die Durchgangsregion abgebildet ist.
  • Beispiel 7 umfasst die Rechenvorrichtung gemäß Beispiel 1, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung empfängt, die VM zu beenden oder freizugeben.
  • Beispiel 8 umfasst die Rechenvorrichtung gemäß einem der Beispiele 1 - 7, wobei die VMCS VMCS-Erweiterungen umfasst, um die Durchgangsregion zu definieren.
  • Beispiel 9 umfasst die Rechenvorrichtung gemäß Beispiel 8, wobei die VMCS-Erweiterungen eine Anzahl gesperrter Einträge in der Durchgangsregion umfassen.
  • Beispiel 10 umfasst die Rechenvorrichtung gemäß Beispiel 8, wobei die VMCS-Erweiterungen eine Startadresse für ein Array gesperrter Einträge in der Durchgangsregion umfassen.
  • Beispiel 11 umfasst die Rechenvorrichtung gemäß Beispiel 8, wobei die VMCS-Erweiterungen ein Feld umfassen, das anzeigt, dass die oberen 32 Bits eines 64-Bit-Adressraums verwendet werden sollen, um die Durchgangsregion zu definieren.
  • Beispiel 12 umfasst ein oder mehrere greifbare, nichtflüchtige computerlesbare Speicherungsmedien, die darauf gespeichert Anweisungen umfassen zum Ausführen auf einer Hardware-Plattform und zum: Bereitstellen einer Virtuelle-Maschine-Steuerstruktur (VMCS); Bereitstellen einer virtuellen Maschine (VM) gemäß der VMCS; Bereitstellen einer Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die direkte virtuelle Gastadresse (GVA) zu der physischen Host-Adresse (HPA) -Übersetzungen umfasst; und Bereitstellen von Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.
  • Beispiel 13 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 12, wobei die Durchgangsregion Adressenübersetzungen für eine Speicher-abgebildete Eingabe/Ausgabe (MMIO) -Vorrichtung umfasst.
  • Beispiel 14 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 13, wobei die MMIO-Vorrichtung gemäß einem Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) - Protokoll abgebildet ist.
  • Beispiel 15 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 14, wobei die Logik ferner ausgebildet ist, um die Durchgangsregion ansprechend auf ein Bereitstellen der VM zu sperren.
  • Beispiel 16 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 14, wobei die Logik ausgebildet ist, um die Durchgangsregion nach Zählung einer Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Vorrichtung durch die VM zu sperren.
  • Beispiel 17 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 14, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung erhält, eine Vorrichtung freizugeben, die auf die Durchgangsregion abgebildet ist.
  • Beispiel 18 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 14, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion nach einem Empfangen einer Anweisung, die VM zu beenden oder freizugeben, aufzuheben.
  • Beispiel 19 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß einem der Beispiele 12 - 18, wobei die VMCS VMCS-Erweiterungen umfasst, um die Durchgangsregion zu definieren.
  • Beispiel 20 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 19, wobei die VMCS-Erweiterungen eine Anzahl gesperrter Einträge in der Durchgangsregion umfassen.
  • Beispiel 21 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 19, wobei die VMCS-Erweiterungen eine Startadresse für ein Array gesperrter Einträge in der Durchgangsregion umfassen.
  • Beispiel 22 umfasst das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Beispiel 19, wobei die VMCS-Erweiterungen ein Feld umfassen, das anzeigt, dass die oberen 32 Bits eines 64-Bit-Adressraums verwendet werden sollen, um die Durchgangsregion zu definieren.
  • Beispiel 23 umfasst ein computerimplementiertes Verfahren zum Bereitstellen von Durchgangs-Speicherabbildung, umfassend ein Bereitstellen einer Virtuelle-Maschine-Steuerstruktur (VMCS); ein Bereitstellen einer virtuellen Maschine (VM) gemäß der VMCS; ein Bereitstellen einer Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die direkte virtuelle Gastadresse (GVA) zu der physischen Host-Adresse (HPA) -Übersetzungen umfasst; und ein Bereitstellen von Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.
  • Beispiel 24 umfasst das computerimplementierte Verfahren gemäß Beispiel 23, wobei die Durchgangsregion Adressenübersetzungen für eine Speicher-abgebildete Eingabe/Ausgabe (MMIO) -Vorrichtung umfasst.
  • Beispiel 25 umfasst das computerimplementierte Verfahren gemäß Beispiel 24, wobei die MMIO-Vorrichtung gemäß einem Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Protokoll abgebildet ist.
  • Beispiel 26 umfasst das computerimplementierte Verfahren gemäß Beispiel 25, wobei die Logik ferner ausgebildet ist, um die Durchgangsregion ansprechend auf ein Bereitstellen der VM zu sperren.
  • Beispiel 27 umfasst das computerimplementierte Verfahren gemäß Beispiel 25, wobei die Logik ausgebildet ist, um die Durchgangsregion nach Zählung einer Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Vorrichtung durch die VM zu sperren.
  • Beispiel 28 umfasst das computerimplementierte Verfahren gemäß Beispiel 25, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung erhält, eine Vorrichtung freizugeben, die auf die Durchgangsregion abgebildet ist.
  • Beispiel 29 umfasst das computerimplementierte Verfahren gemäß Beispiel 25, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung empfängt, die VM zu beenden oder freizugeben.
  • Beispiel 30 umfasst das computerimplementierte Verfahren gemäß einem der Beispiele 23 - 29, wobei die VMCS VMCS-Erweiterungen umfasst, um die Durchgangsregion zu definieren.
  • Beispiel 31 umfasst das computerimplementierte Verfahren gemäß Beispiel 30, wobei die VMCS-Erweiterungen eine Anzahl gesperrter Einträge in der Durchgangsregion umfassen.
  • Beispiel 32 umfasst das computerimplementierte Verfahren gemäß Beispiel 30, wobei die VMCS-Erweiterungen eine Startadresse für ein Array gesperrter Einträge in der Durchgangsregion umfassen.
  • Beispiel 33 umfasst das computerimplementierte Verfahren gemäß Beispiel 30, wobei die VMCS-Erweiterungen ein Feld umfassen, das anzeigt, dass die oberen 32 Bits eines 64-Bit-Adressraums verwendet werden sollen, um die Durchgangsregion zu definieren.
  • Beispiel 34 umfasst eine Vorrichtung, umfassend Mittel zum Durchführen des Verfahrens gemäß einem der Beispiele 23 - 33.
  • Beispiel 35 umfasst die Vorrichtung gemäß Beispiel 34, wobei die Mittel zur Durchführung des Verfahrens einen Prozessor und einen Speicher umfassen.
  • Beispiel 36 umfasst die Vorrichtung gemäß Beispiel 35, wobei der Speicher maschinenlesbare Anweisungen umfasst, die, wenn sie ausgeführt werden, verursachen, dass die Vorrichtung das Verfahren gemäß einem der Beispiele 23 - 33 ausführt.
  • Beispiel 37 umfasst die Vorrichtung gemäß einem der Beispiele 34- 36, wobei das Vorrichtung ein Rechensystem ist.
  • Beispiel 38 umfasst zumindest ein computerlesbares Medium, das Anweisungen aufweist, die, wenn sie ausgeführt werden, ein Verfahren implementieren oder eine Vorrichtung realisieren, wie in einem der Beispiele 23 - 37 dargestellt.

Claims (25)

  1. Eine Rechenvorrichtung, umfassend: eine Hardware-Plattform; einen Virtuelle-Maschine-Manager (VMM), der eine Virtuelle-Maschine-Steuerstruktur (VMCS) umfasst, wobei der VMM ausgebildet ist, um eine virtuelle Maschine (VM) gemäß der VMCS bereitzustellen; eine Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die eine direkte virtuelle Gastadresse (GVA) zu physischen Host-Adresse (HPA) -Übersetzungen umfasst; und Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.
  2. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Durchgangsregion Adressenübersetzungen für eine Speicher-abgebildete Eingabe/Ausgabe (MMIO) -Vorrichtung umfasst.
  3. Die Rechenvorrichtung gemäß Anspruch 2, wobei die MMIO-Vorrichtung gemäß einem Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) - Protokoll abgebildet ist.
  4. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Logik ferner ausgebildet ist, um die Durchgangsregion ansprechend auf ein Bereitstellen der VM zu sperren.
  5. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Logik ausgebildet ist, um die Durchgangsregion nach Zählung einer Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Vorrichtung durch die VM zu sperren.
  6. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung erhält, eine Vorrichtung freizugeben, die auf die Durchgangsregion abgebildet ist.
  7. Die Rechenvorrichtung gemäß Anspruch 1, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung empfängt, die VM zu beenden oder freizugeben.
  8. Die Rechenvorrichtung gemäß einem der Ansprüche 1-7, wobei die VMCS VMCS-Erweiterungen umfasst, um die Durchgangsregion zu definieren.
  9. Die Rechenvorrichtung gemäß Anspruch 8, wobei die VMCS-Erweiterungen eine Anzahl gesperrter Einträge in der Durchgangsregion umfassen.
  10. Die Rechenvorrichtung gemäß Anspruch 8, wobei die VMCS-Erweiterungen eine Startadresse für ein Array gesperrter Einträge in der Durchgangsregion umfassen.
  11. Die Rechenvorrichtung gemäß Anspruch 8, wobei die VMCS-Erweiterungen ein Feld umfassen, das anzeigt, dass die oberen 32 Bits eines 64-Bit-Adressraums verwendet werden sollen, um die Durchgangsregion zu definieren.
  12. Ein oder mehrere greifbare, nichtflüchtige computerlesbare Speicherungsmedien, die darauf gespeichert Anweisungen umfassen zum Ausführen auf einer Hardware-Plattform und zum: Bereitstellen einer Virtuelle-Maschine-Steuerstruktur (VMCS); Bereitstellen einer virtuellen Maschine (VM) gemäß der VMCS; Bereitstellen einer Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die direkte virtuelle Gastadresse (GVA) zu physischen Host-Adresse (HPA) - Übersetzungen umfasst; und Bereitstellen von Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.
  13. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 12, wobei die Durchgangsregion Adressenübersetzungen für eine Speicher-abgebildete Eingabe/Ausgabe (MMIO) -Vorrichtung umfasst.
  14. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 13, wobei die MMIO-Vorrichtung gemäß einem Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Protokoll abgebildet ist.
  15. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 14, wobei die Logik ferner ausgebildet ist, um die Durchgangsregion ansprechend auf ein Bereitstellen der VM zu sperren.
  16. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 14, wobei die Logik ausgebildet ist, um die Durchgangsregion nach Zählung einer Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Vorrichtung durch die VM zu sperren.
  17. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 14, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion aufzuheben, nachdem sie eine Anweisung erhält, eine Vorrichtung freizugeben, die auf die Durchgangsregion abgebildet ist.
  18. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 14, wobei die Logik ferner ausgebildet ist, um die Sperre auf der Durchgangsregion nach einem Empfangen einer Anweisung, die VM zu beenden oder freizugeben, aufzuheben.
  19. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß einem der Ansprüche 12-18, wobei die VMCS VMCS-Erweiterungen umfasst, um die Durchgangsregion zu definieren.
  20. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 19, wobei die VMCS-Erweiterungen eine Anzahl gesperrter Einträge in der Durchgangsregion umfassen.
  21. Das eine oder die mehreren greifbaren, nichtflüchtigen computerlesbaren Speicherungsmedien gemäß Anspruch 19, wobei die VMCS-Erweiterungen eine Startadresse für ein Array gesperrter Einträge in der Durchgangsregion umfassen.
  22. Ein computerimplementiertes Verfahren zum Bereitstellen von Durchgangs-Speicherabbildung, umfassend: Bereitstellen einer Virtuelle-Maschine-Steuerstruktur (VMCS); Bereitstellen einer virtuellen Maschine (VM) gemäß der VMCS; Bereitstellen einer Datenstruktur, die eine erweiterte Seitentabelle (EPT) für die VM, die einen Übersetzungs-Lookaside-Puffer (TLB) aufweist, umfasst, wobei der TLB eine Region umfasst, die eine Durchgangsregion aufweist, die direkte virtuelle Gastadresse (GVA) zu physischen Host-Adresse (HPA) - Übersetzungen umfasst; und Bereitstellen von Logik, um die Durchgangsregion zu sperren, um zu verhindern, dass die Durchgangsregion aus dem TLB ausgeschlossen wird.
  23. Das computerimplementierte Verfahren gemäß Anspruch 22, wobei die Durchgangsregion Adressenübersetzungen für eine Speicher-abgebildete-Eingabe/Ausgabe (MMIO) -Vorrichtung umfasst.
  24. Das computerimplementierte Verfahren gemäß Anspruch 23, wobei die MMIO-Vorrichtung gemäß einem Single-Root-Eingabe/Ausgabe-Virtualisierungs (SR-IOV) -Protokoll abgebildet wird.
  25. Das computerimplementierte Verfahren gemäß Anspruch 24, wobei die Logik ferner ausgebildet ist, um die Durchgangsregion ansprechend auf ein Bereitstellen der VM zu sperren.
DE112018007268.1T 2018-03-12 2018-03-12 Verbesserter speicher-abgebildeter eingabe/ausgabe (mmio) -regionszugriff Pending DE112018007268T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/078684 WO2019173937A1 (en) 2018-03-12 2018-03-12 Improved memory-mapped input/output (mmio) region access

Publications (1)

Publication Number Publication Date
DE112018007268T5 true DE112018007268T5 (de) 2020-11-26

Family

ID=67908619

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018007268.1T Pending DE112018007268T5 (de) 2018-03-12 2018-03-12 Verbesserter speicher-abgebildeter eingabe/ausgabe (mmio) -regionszugriff

Country Status (2)

Country Link
DE (1) DE112018007268T5 (de)
WO (1) WO2019173937A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113055277B (zh) * 2021-03-10 2023-04-25 维沃移动通信有限公司 消息通知方法、装置及存储介质
CN114816666B (zh) * 2022-04-25 2023-03-31 科东(广州)软件科技有限公司 虚拟机管理器的配置方法、tlb管理方法及嵌入式实时操作系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
CN102567217B (zh) * 2012-01-04 2014-12-24 北京航空航天大学 一种面向mips平台的内存虚拟化方法
US9710393B2 (en) * 2015-06-25 2017-07-18 Intel Corporation Dynamic page table edit control

Also Published As

Publication number Publication date
WO2019173937A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
DE102015108145B4 (de) Lokale Dienstverkettung mit virtuellen Maschinen und virtualisierten Behältern in software-definierter Vernetzung
DE102018210537A1 (de) Mikrodienste-Architektur
US11296956B2 (en) Oversubscribable resource allocation
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
US20180357086A1 (en) Container virtual switching
Egi et al. Towards high performance virtual routers on commodity hardware
DE102022102788A1 (de) Konfigurierbare vorrichtungsschnittstelle
DE112017001762T5 (de) Technologien für den einsatz dynamischer underlay-netzwerke in cloud-computing-infrastrukturen
DE112018007780T5 (de) Transparente verschlüsselung
DE112016004347T5 (de) Lokale und globale Datenzentrumsnetzoptimierungen in Echtzeit basierend auf Plattformtelemetriedaten
US11366588B2 (en) Tier-aware read and write
DE102018129112A1 (de) Systemdecoder für Trainingsbeschleuniger
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE102018127751A1 (de) Einheitlicher Adressraum für mehrere Verbindungen
DE102018004111A1 (de) Datencenter-Leistungsmanagement
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
DE112019000965T5 (de) Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung
DE112016005933T5 (de) Technologien zum Durchsetzen einer Netzwerkzugriffssteuerung fiir virtuelle Maschinen
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE102018214007A1 (de) Zusammenwirken von Altvorrichtungen in virtualisierten Netzwerken
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE102020129690A1 (de) Semiflexibler paketzusammenführungs-steuerweg
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE102019127285A1 (de) Verfahren und Vorrichtung zur sicheren Datenzentrumsüberbrückung in einem Multi-Tenant-System
DE112021004377T5 (de) Systeme zum aufbau von datenstrukturen mit hoch skalierbaren algorithmen für eine verteiltelpm-implementierung